From de97c416b7f8b4085809005ea13c23324603fa9e Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 17:36:47 +0200 Subject: [PATCH 01/82] Add copy_from_libjade.yml Signed-off-by: Pravek Sharma --- .../copy_from_upstream/copy_from_libjade.yml | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 scripts/copy_from_upstream/copy_from_libjade.yml diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml new file mode 100644 index 000000000..d30cee502 --- /dev/null +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -0,0 +1,26 @@ +upstreams: + - + name: libjade + git_url: https://github.com/formosa-crypto/libjade + git_branch: main + git_commit: a6845a257a0ebbab4fd93c19423a62557c838a10 + kem_meta_path: 'src/crypto_kem/{family}/{pqclean_scheme}/META.yml' + kem_scheme_path: 'src/crypto_kem/{family}/{pqclean_scheme}' + patches: ['libjade-kyber-api.patch', 'libjade-kyber-meta.patch'] +templates: + kem_scheme.c: ['kem_scheme.c.libjade', 'kem_scheme_keypair.c.libjade', 'kem_scheme_encaps.c.libjade', 'kem_scheme_decaps.c.libjade'] +kems: + - + name: kyber + default_implementation: amd64/ref + upstream_location: libjade + schemes: + - + scheme: "512" + pqclean_scheme: kyber512 + pretty_name_full: Kyber512 + - + scheme: "768" + pqclean_scheme: kyber768 + pretty_name_full: Kyber768 +sigs: [] \ No newline at end of file From ddcfdb3d5e32a69688308f997c47adbf897da06f Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 17:45:53 +0200 Subject: [PATCH 02/82] Modify copy_from_upstream.py Signed-off-by: Pravek Sharma --- .../copy_from_upstream/copy_from_upstream.py | 91 +++++++++++++++---- 1 file changed, 74 insertions(+), 17 deletions(-) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 0db38f54b..c179411a9 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -24,7 +24,7 @@ parser = argparse.ArgumentParser() parser.add_argument("-v", "--verbosity", type=int) parser.add_argument("-k", "--keep_data", action='store_true') -parser.add_argument("operation", choices=["copy", "verify"]) +parser.add_argument("operation", choices=["copy", "verify", "libjade"]) args = parser.parse_args() if args.verbosity: @@ -65,15 +65,16 @@ def shell(command, expect=0): if ret.returncode != expect: raise Exception("'{}' failed with error {}. Expected {}.".format(" ".join(command), ret, expect)) -def generator(destination_file_path, template_filename, family, scheme_desired): +def generator(destination_file_path, template_filename, delimiter, family, scheme_desired): template = file_get_contents( os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', template_filename)) f = copy.deepcopy(family) + contents = file_get_contents(os.path.join(os.environ['LIBOQS_DIR'], destination_file_path)) if scheme_desired != None: f['schemes'] = [x for x in f['schemes'] if x == scheme_desired] - assert (len(f['schemes']) == 1) - # if scheme['implementation'] is not set, run over all implementations! - file_put_contents(destination_file_path, jinja2.Template(template).render(f)) + identifier = '{} OQS_COPY_FROM_{}_FRAGMENT_{}'.format(delimiter, 'LIBJADE', os.path.splitext(os.path.basename(template_filename))[0].upper()) + contents = jinja2.Template(template).render(f) + file_put_contents(destination_file_path, contents) def generator_all(filename, instructions): @@ -82,24 +83,38 @@ def generator_all(filename, instructions): file_put_contents(filename, contents) -def replacer(filename, instructions, delimiter): +def replacer(filename, instructions, delimiter, libjade=False): fragments = glob.glob( - os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', filename, '*.fragment')) + os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', filename, '*.{}'.format('libjade' if libjade else 'fragment'))) contents = file_get_contents(os.path.join(os.environ['LIBOQS_DIR'], filename)) for fragment in fragments: template = file_get_contents(fragment) identifier = os.path.splitext(os.path.basename(fragment))[0] - identifier_start = '{} OQS_COPY_FROM_UPSTREAM_FRAGMENT_{}_START'.format(delimiter, identifier.upper()) - identifier_end = '{} OQS_COPY_FROM_UPSTREAM_FRAGMENT_{}_END'.format(delimiter, identifier.upper()) + identifier_start = '{} OQS_COPY_FROM_{}_FRAGMENT_{}_START'.format(delimiter, 'LIBJADE' if libjade else 'UPSTREAM', identifier.upper()) + identifier_end = '{} OQS_COPY_FROM_{}_FRAGMENT_{}_END'.format(delimiter, 'LIBJADE' if libjade else 'UPSTREAM', identifier.upper()) preamble = contents[:contents.find(identifier_start)] postamble = contents[contents.find(identifier_end):] contents = preamble + identifier_start + jinja2.Template(template).render( {'instructions': instructions, 'non_upstream_kems': non_upstream_kems}) + postamble file_put_contents(os.path.join(os.environ['LIBOQS_DIR'], filename), contents) -def load_instructions(): +def replacer_contextual(destination_file_path, template_file_path, delimiter, family, scheme_desired, libjade=False): + contents = file_get_contents(destination_file_path) + template = file_get_contents(template_file_path) + identifier = os.path.basename(template_file_path).split(os.extsep)[0] + identifier_start = '{} OQS_COPY_FROM_{}_FRAGMENT_{}_START'.format(delimiter, 'LIBJADE' if libjade else 'UPSTREAM', identifier.upper()) + identifier_end = '{} OQS_COPY_FROM_{}_FRAGMENT_{}_END'.format(delimiter, 'LIBJADE' if libjade else 'UPSTREAM', identifier.upper()) + f = copy.deepcopy(family) + if scheme_desired != None: + f['schemes'] = [x for x in f['schemes'] if x == scheme_desired] + preamble = contents[:contents.find(identifier_start)] + postamble = contents[contents.find(identifier_end):] + contents = preamble + identifier_start + jinja2.Template(template).render(f) + postamble + file_put_contents(destination_file_path, contents) + +def load_instructions(file): instructions = file_get_contents( - os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', 'copy_from_upstream.yml'), + os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', file), encoding='utf-8') instructions = yaml.safe_load(instructions) upstreams = {} @@ -118,10 +133,12 @@ def load_instructions(): if not os.path.exists(work_dotgit): shell(['git', 'init', work_dir]) shell(['git', '--git-dir', work_dotgit, 'remote', 'add', 'origin', upstream_git_url]) - shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'remote', 'set-url', 'origin', upstream_git_url]) - shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'fetch', '--depth=1', 'origin', upstream_git_commit]) - shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'reset', '--hard', upstream_git_commit]) - if 'patches' in upstream: + shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'remote', 'set-url', 'origin', upstream_git_url]) + shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'fetch', '--depth=1', 'origin', upstream_git_commit]) + shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'reset', '--hard', upstream_git_commit]) + if file == 'copy_from_libjade.yml': + shell(['make', '-C', os.path.join(work_dir, 'src')]) + if 'patches' in upstream: for patch in upstream['patches']: patch_file = os.path.join('patches', patch) shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'apply', '--whitespace=fix', '--directory', work_dir, patch_file]) @@ -152,6 +169,7 @@ def load_instructions(): family['common_deps_usedby'] = {} family['all_required_flags'] = set() for scheme in family['schemes']: + scheme['family'] = family['name'] if not 'upstream_location' in scheme: scheme['upstream_location'] = family['upstream_location'] if (not 'arch_specific_upstream_locations' in scheme) and 'arch_specific_upstream_locations' in family: @@ -347,6 +365,7 @@ def load_instructions(): return instructions + # Copy over all files for a given impl in a family using scheme # Returns list of all relative source files def handle_common_deps(common_dep, family, dst_basedir): @@ -483,7 +502,7 @@ def handle_implementation(impl, family, scheme, dst_basedir): return [x[len(srcfolder) + 1:] for x in ffs] -def process_families(instructions, basedir, with_kat, with_generator): +def process_families(instructions, basedir, with_kat, with_generator, with_libjade=False): for family in instructions['kems'] + instructions['sigs']: try: os.makedirs(os.path.join(basedir, 'src', family['type'], family['name'])) @@ -574,12 +593,14 @@ def process_families(instructions, basedir, with_kat, with_generator): os.path.join(os.environ['LIBOQS_DIR'], 'src', family['type'], family['name'], family['type'] + '_{}.h'.format(family['name'])), os.path.join('src', family['type'], 'family', family['type'] + '_family.h'), + '/////', family, None, ) generator( os.path.join(os.environ['LIBOQS_DIR'], 'src', family['type'], family['name'], 'CMakeLists.txt'), os.path.join('src', family['type'], 'family', 'CMakeLists.txt'), + '#####', family, None, ) @@ -589,16 +610,40 @@ def process_families(instructions, basedir, with_kat, with_generator): os.path.join(os.environ['LIBOQS_DIR'], 'src', family['type'], family['name'], family['type'] + '_{}_{}.c'.format(family['name'], scheme['scheme_c'])), os.path.join('src', family['type'], 'family', family['type'] + '_scheme.c'), + '/////', family, scheme, ) + + if with_libjade: + replacer_contextual( + os.path.join(os.environ['LIBOQS_DIR'], 'src', family['type'], family['name'], 'CMakeLists.txt'), + os.path.join('src', family['type'], 'family', 'CMakeLists.txt.libjade'), + '#####', + family, + None, + libjade=True + ) + + for scheme in family['schemes']: + for template in instructions['templates'][family['type'] + '_scheme.c']: + replacer_contextual( + os.path.join(os.environ['LIBOQS_DIR'], 'src', family['type'], family['name'], + family['type'] + '_{}_{}.c'.format(family['name'], scheme['scheme_c'])), + os.path.join('src', family['type'], 'family', template), + '/////', + family, + scheme, + libjade=True + ) + def copy_from_upstream(): for t in ["kem", "sig"]: with open(os.path.join(os.environ['LIBOQS_DIR'], 'tests', 'KATs', t, 'kats.json'), 'r') as fp: kats[t] = json.load(fp) - instructions = load_instructions() + instructions = load_instructions('copy_from_upstream.yml') process_families(instructions, os.environ['LIBOQS_DIR'], True, True) replacer('.CMake/alg_support.cmake', instructions, '#####') replacer('CMakeLists.txt', instructions, '#####') @@ -624,6 +669,18 @@ def copy_from_upstream(): if not keepdata: shutil.rmtree('repos') + +def copy_from_libjade(): + for t in ["kem", "sig"]: + with open(os.path.join(os.environ['LIBOQS_DIR'], 'tests', 'KATs', t, 'kats.json'), 'r') as fp: + kats[t] = json.load(fp) + + instructions = load_instructions('copy_from_libjade.yml') + process_families(instructions, os.environ['LIBOQS_DIR'], True, False, True) + replacer('.CMake/alg_support.cmake', instructions, '#####', libjade=True) + replacer('src/oqsconfig.h.cmake', instructions, '/////', libjade=True) + + def verify_from_upstream(): instructions = load_instructions() basedir = "verify_from_upstream" From a18fa2aefedd6b482dd85b3309495804243eb29f Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 17:46:54 +0200 Subject: [PATCH 03/82] Add patches for libjade Kyber code Signed-off-by: Pravek Sharma --- .../patches/libjade-kyber-api.patch | 309 ++++++++++++++++++ .../patches/libjade-kyber-meta.patch | 76 +++++ 2 files changed, 385 insertions(+) create mode 100644 scripts/copy_from_upstream/patches/libjade-kyber-api.patch create mode 100644 scripts/copy_from_upstream/patches/libjade-kyber-meta.patch diff --git a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch new file mode 100644 index 000000000..5215a7bde --- /dev/null +++ b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch @@ -0,0 +1,309 @@ +diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c +new file mode 100644 +index 0000000..0a84abf +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_randombytes.h" ++#include "api.h" ++ ++int libjade_kyber512_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber512_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES); ++ return jade_kem_kyber_kyber512_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber512_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file +diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h +index 5148fd5..0914217 100644 +--- a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h ++++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h +@@ -3,16 +3,8 @@ + + #include + +-#define JADE_KEM_kyber_kyber512_amd64_avx2_SECRETKEYBYTES 1632 +-#define JADE_KEM_kyber_kyber512_amd64_avx2_PUBLICKEYBYTES 800 +-#define JADE_KEM_kyber_kyber512_amd64_avx2_CIPHERTEXTBYTES 768 + #define JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES 64 + #define JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES 32 +-#define JADE_KEM_kyber_kyber512_amd64_avx2_BYTES 32 +- +-#define JADE_KEM_kyber_kyber512_amd64_avx2_ALGNAME "Kyber512" +-#define JADE_KEM_kyber_kyber512_amd64_avx2_ARCH "amd64" +-#define JADE_KEM_kyber_kyber512_amd64_avx2_IMPL "avx2" + + int jade_kem_kyber_kyber512_amd64_avx2_keypair_derand( + uint8_t *public_key, +@@ -20,7 +12,7 @@ int jade_kem_kyber_kyber512_amd64_avx2_keypair_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber512_amd64_avx2_keypair( ++int libjade_kyber512_amd64_avx2_keypair( + uint8_t *public_key, + uint8_t *secret_key + ); +@@ -32,7 +24,7 @@ int jade_kem_kyber_kyber512_amd64_avx2_enc_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber512_amd64_avx2_enc( ++int libjade_kyber512_amd64_avx2_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +@@ -44,4 +36,10 @@ int jade_kem_kyber_kyber512_amd64_avx2_dec( + const uint8_t *secret_key + ); + ++int libjade_kyber512_amd64_avx2_dec( ++ uint8_t *shared_secret, ++ const uint8_t *ciphertext, ++ const uint8_t *secret_key ++); ++ + #endif +diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/api.c b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c +new file mode 100644 +index 0000000..12836e0 +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_randombytes.h" ++#include "api.h" ++ ++int libjade_kyber512_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber512_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber512_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES); ++ return jade_kem_kyber_kyber512_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber512_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file +diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h +index 38127cf..2332230 100644 +--- a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h ++++ b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h +@@ -3,17 +3,8 @@ + + #include + +-#define JADE_KEM_kyber_kyber512_amd64_ref_SECRETKEYBYTES 1632 +-#define JADE_KEM_kyber_kyber512_amd64_ref_PUBLICKEYBYTES 800 +-#define JADE_KEM_kyber_kyber512_amd64_ref_CIPHERTEXTBYTES 768 + #define JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES 64 + #define JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES 32 +-#define JADE_KEM_kyber_kyber512_amd64_ref_BYTES 32 +- +-#define JADE_KEM_kyber_kyber512_amd64_ref_ALGNAME "Kyber512" +-#define JADE_KEM_kyber_kyber512_amd64_ref_ARCH "amd64" +-#define JADE_KEM_kyber_kyber512_amd64_ref_IMPL "ref" +- + + int jade_kem_kyber_kyber512_amd64_ref_keypair_derand( + uint8_t *public_key, +@@ -21,7 +12,7 @@ int jade_kem_kyber_kyber512_amd64_ref_keypair_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber512_amd64_ref_keypair( ++int libjade_kyber512_amd64_ref_keypair( + uint8_t *public_key, + uint8_t *secret_key + ); +@@ -33,7 +24,7 @@ int jade_kem_kyber_kyber512_amd64_ref_enc_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber512_amd64_ref_enc( ++int libjade_kyber512_amd64_ref_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +@@ -45,4 +36,10 @@ int jade_kem_kyber_kyber512_amd64_ref_dec( + const uint8_t *secret_key + ); + ++int libjade_kyber512_amd64_ref_dec( ++ uint8_t *shared_secret, ++ const uint8_t *ciphertext, ++ const uint8_t *secret_key ++); ++ + #endif +diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c +new file mode 100644 +index 0000000..15571bf +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_randombytes.h" ++#include "api.h" ++ ++int libjade_kyber768_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber768_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES); ++ return jade_kem_kyber_kyber768_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber768_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file +diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h +index d3b3500..be5f7db 100644 +--- a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h ++++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h +@@ -3,16 +3,8 @@ + + #include + +-#define JADE_KEM_kyber_kyber768_amd64_avx2_SECRETKEYBYTES 2400 +-#define JADE_KEM_kyber_kyber768_amd64_avx2_PUBLICKEYBYTES 1184 +-#define JADE_KEM_kyber_kyber768_amd64_avx2_CIPHERTEXTBYTES 1088 + #define JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES 64 + #define JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES 32 +-#define JADE_KEM_kyber_kyber768_amd64_avx2_BYTES 32 +- +-#define JADE_KEM_kyber_kyber768_amd64_avx2_ALGNAME "Kyber768" +-#define JADE_KEM_kyber_kyber768_amd64_avx2_ARCH "amd64" +-#define JADE_KEM_kyber_kyber768_amd64_avx2_IMPL "avx2" + + int jade_kem_kyber_kyber768_amd64_avx2_keypair_derand( + uint8_t *public_key, +@@ -20,7 +12,7 @@ int jade_kem_kyber_kyber768_amd64_avx2_keypair_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber768_amd64_avx2_keypair( ++int libjade_kyber768_amd64_avx2_keypair( + uint8_t *public_key, + uint8_t *secret_key + ); +@@ -32,7 +24,7 @@ int jade_kem_kyber_kyber768_amd64_avx2_enc_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber768_amd64_avx2_enc( ++int libjade_kyber768_amd64_avx2_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +@@ -44,4 +36,10 @@ int jade_kem_kyber_kyber768_amd64_avx2_dec( + const uint8_t *secret_key + ); + ++int libjade_kyber768_amd64_avx2_dec( ++ uint8_t *shared_secret, ++ const uint8_t *ciphertext, ++ const uint8_t *secret_key ++); ++ + #endif +diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/api.c b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c +new file mode 100644 +index 0000000..6055d87 +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_randombytes.h" ++#include "api.h" ++ ++int libjade_kyber768_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber768_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber768_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES); ++ return jade_kem_kyber_kyber768_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber768_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file +diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h +index e23e1bf..b8f2fc3 100644 +--- a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h ++++ b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h +@@ -3,16 +3,8 @@ + + #include + +-#define JADE_KEM_kyber_kyber768_amd64_ref_SECRETKEYBYTES 2400 +-#define JADE_KEM_kyber_kyber768_amd64_ref_PUBLICKEYBYTES 1184 +-#define JADE_KEM_kyber_kyber768_amd64_ref_CIPHERTEXTBYTES 1088 + #define JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES 64 + #define JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES 32 +-#define JADE_KEM_kyber_kyber768_amd64_ref_BYTES 32 +- +-#define JADE_KEM_kyber_kyber768_amd64_ref_ALGNAME "Kyber768" +-#define JADE_KEM_kyber_kyber768_amd64_ref_ARCH "amd64" +-#define JADE_KEM_kyber_kyber768_amd64_ref_IMPL "ref" + + int jade_kem_kyber_kyber768_amd64_ref_keypair_derand( + uint8_t *public_key, +@@ -20,7 +12,7 @@ int jade_kem_kyber_kyber768_amd64_ref_keypair_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber768_amd64_ref_keypair( ++int libjade_kyber768_amd64_ref_keypair( + uint8_t *public_key, + uint8_t *secret_key + ); +@@ -32,7 +24,7 @@ int jade_kem_kyber_kyber768_amd64_ref_enc_derand( + const uint8_t *coins + ); + +-int jade_kem_kyber_kyber768_amd64_ref_enc( ++int libjade_kyber768_amd64_ref_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +@@ -44,4 +36,10 @@ int jade_kem_kyber_kyber768_amd64_ref_dec( + const uint8_t *secret_key + ); + ++int libjade_kyber768_amd64_ref_dec( ++ uint8_t *shared_secret, ++ const uint8_t *ciphertext, ++ const uint8_t *secret_key ++); ++ + #endif diff --git a/scripts/copy_from_upstream/patches/libjade-kyber-meta.patch b/scripts/copy_from_upstream/patches/libjade-kyber-meta.patch new file mode 100644 index 000000000..e3d110d0c --- /dev/null +++ b/scripts/copy_from_upstream/patches/libjade-kyber-meta.patch @@ -0,0 +1,76 @@ +diff --git a/src/crypto_kem/kyber/kyber512/META.yml b/src/crypto_kem/kyber/kyber512/META.yml +index 000ec75..797fca4 100644 +--- a/src/crypto_kem/kyber/kyber512/META.yml ++++ b/src/crypto_kem/kyber/kyber512/META.yml +@@ -1,7 +1,6 @@ + name: Kyber512 + type: kem +-checksumsmall: 9c1a84c0573d21b5fb50ff68f015c19206cebbda4aa3caa6f9ba4b167eea9514 +-checksumbig: 4596232083e3da10d341576afbc59b24a520073e985a9b9df2d587e67e926a7b ++nistkat-sha256: bb0481d3325d828817900b709d23917cefbc10026fc857f098979451f67bb0ca + claimed-nist-level: 1 + claimed-security: IND-CCA2 + length-public-key: 800 +@@ -15,17 +14,20 @@ auxiliary-submitters: + implementations: + - name: amd64/ref + version: TODO ++ signature_keypair: libjade_kyber512_amd64_ref_keypair ++ signature_enc: libjade_kyber512_amd64_ref_enc ++ signature_dec: libjade_kyber512_amd64_ref_dec + supported_platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin +- required_flags: # FIXME +- - avx2 +- - bmi2 +- - popcnt ++ required_flags: [] + - name: amd64/avx2 + version: TODO ++ signature_keypair: libjade_kyber512_amd64_avx2_keypair ++ signature_enc: libjade_kyber512_amd64_avx2_enc ++ signature_dec: libjade_kyber512_amd64_avx2_dec + supported_platforms: + - architecture: x86_64 + operating_systems: +diff --git a/src/crypto_kem/kyber/kyber768/META.yml b/src/crypto_kem/kyber/kyber768/META.yml +index d744938..0813fe2 100644 +--- a/src/crypto_kem/kyber/kyber768/META.yml ++++ b/src/crypto_kem/kyber/kyber768/META.yml +@@ -1,7 +1,6 @@ + name: Kyber768 + type: kem +-checksumsmall: 456bb24a767160dcca466adde267b87f359de6e827d31b5b23512d227d8bbfaa +-checksumbig: 8004a42f34a4125acb4f88628139576882cdf9502a77937003e34f52d217a730 ++nistkat-sha256: 89e82a5bf2d4ddb2c6444e10409e6d9ca65dafbca67d1a0db2c9b54920a29172 + claimed-nist-level: 3 + claimed-security: IND-CCA2 + length-public-key: 1184 +@@ -15,17 +14,20 @@ auxiliary-submitters: + implementations: + - name: amd64/ref + version: TODO ++ signature_keypair: libjade_kyber768_amd64_ref_keypair ++ signature_enc: libjade_kyber768_amd64_ref_enc ++ signature_dec: libjade_kyber768_amd64_ref_dec + supported_platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin +- required_flags: # FIXME +- - avx2 +- - bmi2 +- - popcnt ++ required_flags: [] + - name: amd64/avx2 + version: TODO ++ signature_keypair: libjade_kyber768_amd64_avx2_keypair ++ signature_enc: libjade_kyber768_amd64_avx2_enc ++ signature_dec: libjade_kyber768_amd64_avx2_dec + supported_platforms: + - architecture: x86_64 + operating_systems: From e81c66e889c8a525767df1071ad64f486c695976 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 17:56:47 +0200 Subject: [PATCH 04/82] Update alg_support.cmake templates Signed-off-by: Pravek Sharma --- .CMake/alg_support.cmake | 4 ++ .../add_enable_by_alg.libjade | 65 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index 3bdb103af..36c5027f5 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -497,6 +497,10 @@ endif() ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_END +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_START + +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_END + # Set XKCP (Keccak) required for Sphincs AVX2 code even if OpenSSL3 SHA3 is used: if (${OQS_ENABLE_SIG_SPHINCS} OR NOT ${OQS_USE_SHA3_OPENSSL}) set(OQS_ENABLE_SHA3_xkcp_low ON) diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade new file mode 100644 index 000000000..5af2995fd --- /dev/null +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade @@ -0,0 +1,65 @@ + +if(OQS_LIBJADE_BUILD) +{% for family in instructions['kems'] %} +option(OQS_ENABLE_KEM_LIBJADE_{{ family['name']|upper }} "Enable {{ family['name'] }} algorithm family" ON) + {%- for scheme in family['schemes'] %} +cmake_dependent_option(OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_KEM_LIBJADE_{{ family['name']|upper }}" OFF) + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) + cmake_dependent_option(OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'ARM64_V8' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if((OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%}))) +{% if impl['upstream']['name'] == 'pqclean' -%} +if(((CMAKE_C_COMPILER_ID STREQUAL "GNU") AND (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU")) AND (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))) +{%- endif %} + cmake_dependent_option(OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +{% if impl['upstream']['name'] == 'pqclean' -%} +else() + message(WARNING " ARM optimizations are not fully supported on this compiler version.") +endif() +{%- endif %} +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- endfor -%} + {%- endfor %} +{% endfor -%} + +{% for family in instructions['sigs'] %} + + {%- for scheme in family['schemes'] %} +cmake_dependent_option(OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_SIG_LIBJADE_{{ family['name']|upper }}" OFF) + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) + cmake_dependent_option(OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'ARM64_V8' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%})) + cmake_dependent_option(OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- endfor -%} + {%- endfor %} +{% endfor -%} +endif() + From 75b33bafea0d8102f365cdcdc75ccc0f86b6eb93 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 18:01:22 +0200 Subject: [PATCH 05/82] Update KEM famiy templates Signed-off-by: Pravek Sharma --- .../src/kem/family/CMakeLists.txt.libjade | 61 +++++++++++++++++++ .../kem/family/kem_scheme_decaps.c.libjade | 42 +++++++++++++ .../kem/family/kem_scheme_encaps.c.libjade | 42 +++++++++++++ .../kem/family/kem_scheme_keypair.c.libjade | 41 +++++++++++++ 4 files changed, 186 insertions(+) create mode 100644 scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade create mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade create mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade create mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade new file mode 100644 index 000000000..846c64a8a --- /dev/null +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -0,0 +1,61 @@ + +{%- if common_deps is defined %} + {%- for common_dep in common_deps %} + +if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_KEM_LIBJADE_{{ family }}_{{ used_by['scheme_c'] }}{%- if used_by['impl_name'] != default_implementation %}_{{ used_by['impl_name'] }}{% endif -%}{%- if not loop.last %} OR {% endif -%}{%- endfor -%}) + add_library({{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + target_include_directories({{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) + {%- if common_dep['required_flags'] %} + target_compile_options({{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endif -%}{%- endfor -%}) + {%- endif %} + {%- if common_dep['compile_opts'] %} + target_compile_options({{ family }}_{{ common_dep['name'] }} PUBLIC {{ common_dep['compile_opts'] }}) + {%- endif %} + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) +endif() + + {%- endfor %} +{%- endif %} + +{%- for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] -%} + {%- if impl['name'] == scheme['default_implementation'] %} + +if(OQS_ENABLE_KEM_LIBJADE_{{ family }}_{{ scheme['scheme_c'] }}) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + {%- if impl['compile_opts'] %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) + {%- endif -%} + + {%- else %} + +if(OQS_ENABLE_KEM_LIBJADE_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + {%- endif %} + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/include) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + {%- if impl['name'].replace('/', '_') != scheme['default_implementation'] and impl['required_flags'] -%} + {%- set opts %}{% for flag in impl['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {% elif flag == 'sse4_1' -%} sse4.1 {% elif flag == 'pclmulqdq' -%} pclmul {% else -%}{{ flag }} {% endif %}{% endif -%}{% endfor %}{% endset %} + {%- if opts|length > 0 %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE {{ opts }}) + {%- endif -%} + {%- endif %} + {%- if impl['compile_opts'] %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) + {%- endif %} + {%- if family == 'classic_mceliece' and impl['name'].replace('/', '_') == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-language-extension-token -O1) + {%- endif %} + {%- if family == 'hqc' and impl['name'].replace('/', '_') == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-missing-braces) + {%- endif %} + {%- if impl['upstream']['name'] == 'pqclean' %} + if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") + target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE old_gas_syntax) + endif() + {%- endif %} + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) +endif() + {%- endfor -%} +{%- endfor %} + diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade new file mode 100644 index 000000000..544982b41 --- /dev/null +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade @@ -0,0 +1,42 @@ +{% for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] == scheme['default_implementation'] %} + {%- if impl['signature_dec'] %} + {%- set cleandec = scheme['metadata'].update({'default_dec_signature': impl['signature_dec']}) -%} + {%- else %} + {%- set cleandec = scheme['metadata'].update({'default_dec_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_dec"}) -%} + {%- endif %} + {%- endfor %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- if loop.first %} +#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) + {%- else %} +#elif defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- if impl['signature_dec'] %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) {{ impl['signature_dec'] }}(shared_secret, ciphertext, secret_key); + {%- else %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) {{ scheme['metadata']['default_dec_signature'] }}(shared_secret, ciphertext, secret_key); + } +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- endfor %} + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#else + {%- endif %} + return (OQS_STATUS) {{ scheme['metadata']['default_dec_signature'] }}(shared_secret, ciphertext, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#endif + {%- endif %} +{% endfor -%} + + diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade new file mode 100644 index 000000000..1f193d49f --- /dev/null +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade @@ -0,0 +1,42 @@ +{% for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] == scheme['default_implementation'] %} + {%- if impl['signature_enc'] %} + {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': impl['signature_enc']}) -%} + {%- else %} + {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_enc"}) -%} + {%- endif %} + {%- endfor %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- if loop.first %} +#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) + {%- else %} +#elif defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- if impl['signature_enc'] %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) {{ impl['signature_enc'] }}(ciphertext, shared_secret, public_key); + {%- else %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) {{ scheme['metadata']['default_enc_signature'] }}(ciphertext, shared_secret, public_key); + } +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- endfor %} + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#else + {%- endif %} + return (OQS_STATUS) {{ scheme['metadata']['default_enc_signature'] }}(ciphertext, shared_secret, public_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#endif + {%- endif %} +{% endfor -%} + + diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade new file mode 100644 index 000000000..d22b5ed66 --- /dev/null +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade @@ -0,0 +1,41 @@ +{% for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] == scheme['default_implementation'] %} + + {%- if impl['signature_keypair'] %} + {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': impl['signature_keypair']}) -%} + {%- else %} + {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_keypair"}) -%} + {%- endif %} + {%- endfor %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- if loop.first %} +#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) + {%- else %} +#elif defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- if impl['signature_keypair'] %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) {{ impl['signature_keypair'] }}(public_key, secret_key); + {%- else %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_keypair(public_key, secret_key); + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) {{ scheme['metadata']['default_keypair_signature'] }}(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- endfor %} + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#else + {%- endif %} + return (OQS_STATUS) {{ scheme['metadata']['default_keypair_signature'] }}(public_key, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#endif + {%- endif %} +{% endfor -%} \ No newline at end of file From 7137e8c797aadb0e6e53839b60a61e8f771733cc Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 18:03:40 +0200 Subject: [PATCH 06/82] Fix copy_from_upstream.py Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index c179411a9..81ba7b622 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -758,5 +758,7 @@ def verify_from_upstream(): if args.operation == "copy": copy_from_upstream() +elif args.operation == "libjade": + copy_from_libjade() elif args.operation == "verify": verify_from_upstream() From 532cadf2dcb6263bee2d1cda5023464a2661453e Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 21:12:55 +0200 Subject: [PATCH 07/82] Correct copy_from_upstream.py Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 81ba7b622..3dd7650f5 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -443,11 +443,9 @@ def handle_implementation(impl, family, scheme, dst_basedir): of = impl origfolder = os.path.join(scheme['scheme_paths'][impl], of) upstream_location = i['upstream']['name'] - shutil.rmtree(os.path.join(dst_basedir, 'src', family['type'], family['name'], - '{}_{}_{}'.format(upstream_location, scheme['pqclean_scheme'], impl)), - ignore_errors=True) srcfolder = os.path.join(dst_basedir, 'src', family['type'], family['name'], - '{}_{}_{}'.format(upstream_location, scheme['pqclean_scheme'], impl)) + '{}_{}_{}'.format(upstream_location, scheme['pqclean_scheme'], impl.replace('/', '_'))) + shutil.rmtree(srcfolder, ignore_errors=True) # Don't copy from PQClean straight but check for origfile list try: os.mkdir(srcfolder) From 49128080ac49efd8d0aec7e4ce8ad3c18252852d Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 21:47:16 +0200 Subject: [PATCH 08/82] Modify copy_from_upstream.yml Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/copy_from_upstream/copy_from_upstream.yml b/scripts/copy_from_upstream/copy_from_upstream.yml index d8a9a4d12..904a40991 100644 --- a/scripts/copy_from_upstream/copy_from_upstream.yml +++ b/scripts/copy_from_upstream/copy_from_upstream.yml @@ -119,6 +119,7 @@ kems: - name: kyber default_implementation: ref + libjade_implementation: True arch_specific_implementations: aarch64: aarch64 upstream_location: pqcrystals-kyber @@ -129,14 +130,17 @@ kems: scheme: "512" pqclean_scheme: kyber512 pretty_name_full: Kyber512 + libjade_implementation: True - scheme: "768" pqclean_scheme: kyber768 pretty_name_full: Kyber768 + libjade_implementation: True - scheme: "1024" pqclean_scheme: kyber1024 pretty_name_full: Kyber1024 + libjade_implementation: False - name: ml_kem default_implementation: ref From 8b8a7ef2d7672643968b3e3878eb102d349a4cfc Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 22:31:10 +0200 Subject: [PATCH 09/82] Update KEM family templates Signed-off-by: Pravek Sharma --- .../add_enable_by_alg.libjade | 8 ++-- .../src/kem/family/CMakeLists.txt | 6 +++ .../src/kem/family/CMakeLists.txt.libjade | 36 +++++++-------- .../src/kem/family/kem_scheme.c | 25 ++++++++++ .../src/kem/family/kem_scheme.c.libjade | 46 +++++++++++++++++++ .../kem/family/kem_scheme_decaps.c.libjade | 4 +- .../kem/family/kem_scheme_encaps.c.libjade | 4 +- .../kem/family/kem_scheme_keypair.c.libjade | 4 +- 8 files changed, 105 insertions(+), 28 deletions(-) create mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade index 5af2995fd..c54dc66e2 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade @@ -1,15 +1,15 @@ if(OQS_LIBJADE_BUILD) {% for family in instructions['kems'] %} -option(OQS_ENABLE_KEM_LIBJADE_{{ family['name']|upper }} "Enable {{ family['name'] }} algorithm family" ON) +option(OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} "Enable {{ family['name'] }} algorithm family" ON) {%- for scheme in family['schemes'] %} -cmake_dependent_option(OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_KEM_LIBJADE_{{ family['name']|upper }}" OFF) +cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }}" OFF) {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} {% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") {% endif -%} if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) endif() {% if platform['operating_systems'] %}endif() {% endif -%} @@ -21,7 +21,7 @@ if((OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in plat {% if impl['upstream']['name'] == 'pqclean' -%} if(((CMAKE_C_COMPILER_ID STREQUAL "GNU") AND (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU")) AND (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))) {%- endif %} - cmake_dependent_option(OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {% if impl['upstream']['name'] == 'pqclean' -%} else() message(WARNING " ARM optimizations are not fully supported on this compiler version.") diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt index 0c6003031..cb55d35bd 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt @@ -65,5 +65,11 @@ endif() {%- endfor -%} {%- endfor %} +{%- if libjade_implementation is defined %} +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START + +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_END +{%- endif %} + set({{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} PARENT_SCOPE) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index 846c64a8a..e97653d77 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -2,7 +2,7 @@ {%- if common_deps is defined %} {%- for common_dep in common_deps %} -if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_KEM_LIBJADE_{{ family }}_{{ used_by['scheme_c'] }}{%- if used_by['impl_name'] != default_implementation %}_{{ used_by['impl_name'] }}{% endif -%}{%- if not loop.last %} OR {% endif -%}{%- endfor -%}) +if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_KEM_{{ family }}_{{ used_by['scheme_c'] }}{%- if used_by['impl_name'] != default_implementation %}_{{ used_by['impl_name'] }}{% endif -%}{%- if not loop.last %} OR {% endif -%}{%- endfor -%}) add_library({{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) target_include_directories({{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) {%- if common_dep['required_flags'] %} @@ -21,40 +21,40 @@ endif() {%- for impl in scheme['metadata']['implementations'] -%} {%- if impl['name'] == scheme['default_implementation'] %} -if(OQS_ENABLE_KEM_LIBJADE_{{ family }}_{{ scheme['scheme_c'] }}) - add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) +if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) {%- endif -%} {%- else %} -if(OQS_ENABLE_KEM_LIBJADE_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}) - add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) +if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}{%- endif %}) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- endif %} - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/include) - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - {%- if impl['name'].replace('/', '_') != scheme['default_implementation'] and impl['required_flags'] -%} + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] -%} {%- set opts %}{% for flag in impl['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {% elif flag == 'sse4_1' -%} sse4.1 {% elif flag == 'pclmulqdq' -%} pclmul {% else -%}{{ flag }} {% endif %}{% endif -%}{% endfor %}{% endset %} {%- if opts|length > 0 %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE {{ opts }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {{ opts }}) {%- endif -%} {%- endif %} {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) {%- endif %} - {%- if family == 'classic_mceliece' and impl['name'].replace('/', '_') == 'avx2' %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-language-extension-token -O1) + {%- if family == 'classic_mceliece' and impl['name'] == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-language-extension-token -O1) {%- endif %} - {%- if family == 'hqc' and impl['name'].replace('/', '_') == 'avx2' %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-missing-braces) + {%- if family == 'hqc' and impl['name'] == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-missing-braces) {%- endif %} - {%- if impl['upstream']['name'] == 'pqclean' %} + {%- if impl['upstream']['name'].endswith('pqclean') %} if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE old_gas_syntax) + target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE old_gas_syntax) endif() {%- endif %} - set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() {%- endfor -%} {%- endfor %} diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index a78b30fb5..4193bce88 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -115,7 +115,20 @@ extern int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper #endif {%- endfor %} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_END +{%- endif %} + OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_END +#else +{%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} #if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} @@ -150,6 +163,13 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_END +#else +{%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} #if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} @@ -184,6 +204,11 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_END +#else {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} #if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade new file mode 100644 index 000000000..6f9390aa3 --- /dev/null +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade @@ -0,0 +1,46 @@ + +{% for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] %} + + {%- if impl['signature_keypair'] %} + {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': impl['signature_keypair']}) -%} + {%- else %} + {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_keypair"}) -%} + {%- endif %} + + {%- if impl['signature_enc'] %} + {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': impl['signature_enc']}) -%} + {%- else %} + {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_enc"}) -%} + {%- endif %} + + {%- if impl['signature_dec'] %} + {%- set cleandec = scheme['metadata'].update({'default_dec_signature': impl['signature_dec']}) -%} + {%- else %} + {%- set cleandec = scheme['metadata'].update({'default_dec_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_dec"}) -%} + {%- endif %} + +#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} + {%- if impl['signature_keypair'] %} +extern int {{ impl['signature_keypair'] }}(uint8_t *pk, uint8_t *sk); + {%- else %} +extern int libjade_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); + {%- endif %} + + {%- if impl['signature_enc'] %} +extern int {{ impl['signature_enc'] }}(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + {%- else %} +extern int libjade_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + {%- endif %} + + {%- if impl['signature_dec'] %} +extern int {{ impl['signature_dec'] }}(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + {%- else %} +extern int libjade_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + {%- endif %} +#endif + {%- endfor %} + +{% endfor -%} + + diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade index 544982b41..8cd5b3e7f 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade @@ -8,9 +8,9 @@ {%- endfor %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) + #if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) +#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade index 1f193d49f..4b2b63e3b 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade @@ -8,9 +8,9 @@ {%- endfor %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) +#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) +#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade index d22b5ed66..6563c954b 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade @@ -9,9 +9,9 @@ {%- endfor %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) +#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) +#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) From cca5cd448eb0967ec4df9d23fe9761bf4bcd39a3 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 23:33:30 +0200 Subject: [PATCH 10/82] Fix copy_from_upstream.py Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 3dd7650f5..3f26196bb 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -73,7 +73,16 @@ def generator(destination_file_path, template_filename, delimiter, family, schem if scheme_desired != None: f['schemes'] = [x for x in f['schemes'] if x == scheme_desired] identifier = '{} OQS_COPY_FROM_{}_FRAGMENT_{}'.format(delimiter, 'LIBJADE', os.path.splitext(os.path.basename(template_filename))[0].upper()) - contents = jinja2.Template(template).render(f) + if identifier in contents: + identifier_start, identifier_end = identifier + '_START', identifier + '_END' + contents = contents.split('\n') + libjade_contents = '\n'.join(contents[contents.index(identifier_start) + 1: contents.index(identifier_end)]) + contents = jinja2.Template(template).render(f) + preamble = contents[:contents.find(identifier_start)] + postamble = contents[contents.find(identifier_end):] + contents = preamble + identifier_start + '\n' + libjade_contents + '\n' + postamble + else: + contents = jinja2.Template(template).render(f) file_put_contents(destination_file_path, contents) From 0b4af0b8c8168a8a23aed27b01f39b44a32a378b Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 2 Apr 2024 23:34:13 +0200 Subject: [PATCH 11/82] Fix KEM family templates Signed-off-by: Pravek Sharma --- .../src/kem/family/CMakeLists.txt.libjade | 32 +++++++++---------- .../src/kem/family/kem_scheme.c | 2 ++ 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index e97653d77..f73076e18 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -2,7 +2,7 @@ {%- if common_deps is defined %} {%- for common_dep in common_deps %} -if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_KEM_{{ family }}_{{ used_by['scheme_c'] }}{%- if used_by['impl_name'] != default_implementation %}_{{ used_by['impl_name'] }}{% endif -%}{%- if not loop.last %} OR {% endif -%}{%- endfor -%}) +if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ used_by['scheme_c'] }}{%- if used_by['impl_name'] != default_implementation %}_{{ used_by['impl_name'] }}{% endif -%}{%- if not loop.last %} OR {% endif -%}{%- endfor -%}) add_library({{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) target_include_directories({{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) {%- if common_dep['required_flags'] %} @@ -21,40 +21,40 @@ endif() {%- for impl in scheme['metadata']['implementations'] -%} {%- if impl['name'] == scheme['default_implementation'] %} -if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) - add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) +if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) {%- endif -%} {%- else %} -if(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}{%- endif %}) - add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) +if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}{%- endif %}) + add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- endif %} - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/pqclean_shims) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] -%} {%- set opts %}{% for flag in impl['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {% elif flag == 'sse4_1' -%} sse4.1 {% elif flag == 'pclmulqdq' -%} pclmul {% else -%}{{ flag }} {% endif %}{% endif -%}{% endfor %}{% endset %} {%- if opts|length > 0 %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {{ opts }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE {{ opts }}) {%- endif -%} {%- endif %} {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) {%- endif %} - {%- if family == 'classic_mceliece' and impl['name'] == 'avx2' %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-language-extension-token -O1) + {%- if family == 'classic_mceliece' and impl['name'].replace('/', '_') == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-language-extension-token -O1) {%- endif %} - {%- if family == 'hqc' and impl['name'] == 'avx2' %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-missing-braces) + {%- if family == 'hqc' and impl['name'].replace('/', '_') == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-missing-braces) {%- endif %} {%- if impl['upstream']['name'].endswith('pqclean') %} if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE old_gas_syntax) + target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE old_gas_syntax) endif() {%- endif %} - set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() {%- endfor -%} {%- endfor %} diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index 4193bce88..bb027ab1e 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -204,11 +204,13 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if OQS_LIBJADE_BUILD ///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_START ///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_END #else +{%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} #if defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} From e1238f9e0ab62cc5838ee0e87e14429c1c1c7dc2 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 00:11:07 +0200 Subject: [PATCH 12/82] Fix KEM family templates Signed-off-by: Pravek Sharma --- .../copy_from_upstream/src/kem/family/CMakeLists.txt.libjade | 2 +- scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index f73076e18..0afa4610a 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -21,7 +21,7 @@ endif() {%- for impl in scheme['metadata']['implementations'] -%} {%- if impl['name'] == scheme['default_implementation'] %} -if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) +if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- if impl['compile_opts'] %} target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade index 6f9390aa3..1d1c0f310 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade @@ -20,7 +20,7 @@ {%- set cleandec = scheme['metadata'].update({'default_dec_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_dec"}) -%} {%- endif %} -#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} +#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] != scheme['default_implementation'] %}_{{ impl['name'].replace('/', '_') }}{%- endif %}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} {%- if impl['signature_keypair'] %} extern int {{ impl['signature_keypair'] }}(uint8_t *pk, uint8_t *sk); {%- else %} From 4d6aa1fe0b967819da9d06150d2bcd607db3ab94 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 00:41:47 +0200 Subject: [PATCH 13/82] Update templates for build system files Signed-off-by: Pravek Sharma --- .../add_enable_by_alg.libjade | 60 +++------------ .../add_enable_by_alg_conditional.libjade | 73 +++++++++++++++++++ .../add_alg_enable_defines.libjade | 34 +++++++++ 3 files changed, 116 insertions(+), 51 deletions(-) create mode 100644 scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade create mode 100644 scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade index c54dc66e2..dafb4110c 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade @@ -1,64 +1,22 @@ if(OQS_LIBJADE_BUILD) {% for family in instructions['kems'] %} -option(OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} "Enable {{ family['name'] }} algorithm family" ON) +option(OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} "Enable libjade implementation of {{ family['name'] }} algorithm family" ON) {%- for scheme in family['schemes'] %} cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }}" OFF) - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} - {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} -{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") -{% endif -%} -if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) -endif() -{% if platform['operating_systems'] %}endif() -{% endif -%} - {%- endfor -%} - {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'ARM64_V8' %} -{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") -{% endif -%} -if((OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%}))) -{% if impl['upstream']['name'] == 'pqclean' -%} -if(((CMAKE_C_COMPILER_ID STREQUAL "GNU") AND (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU")) AND (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))) -{%- endif %} - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) -{% if impl['upstream']['name'] == 'pqclean' -%} -else() - message(WARNING " ARM optimizations are not fully supported on this compiler version.") -endif() -{%- endif %} -endif() -{% if platform['operating_systems'] %}endif() -{% endif -%} - {%- endfor -%} - {%- endfor -%} +{%- if 'alias_scheme' in scheme %} +cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }}" OFF) +{%- endif -%} {%- endfor %} {% endfor -%} {% for family in instructions['sigs'] %} - +option(OQS_ENABLE_LIBJADE_SIG_{{ family['name']|upper }} "Enable libjade implementation of {{ family['name'] }} algorithm family" ON) {%- for scheme in family['schemes'] %} -cmake_dependent_option(OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_SIG_LIBJADE_{{ family['name']|upper }}" OFF) - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} - {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} -{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") -{% endif -%} -if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) -endif() -{% if platform['operating_systems'] %}endif() -{% endif -%} - {%- endfor -%} - {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'ARM64_V8' %} -{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") -{% endif -%} -if(OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_LIBJADE_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) -endif() -{% if platform['operating_systems'] %}endif() -{% endif -%} - {%- endfor -%} - {%- endfor -%} +cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name']|upper }}" OFF) +{%- if 'alias_scheme' in scheme %} +cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name']|upper }}" OFF) +{%- endif -%} {%- endfor %} {% endfor -%} endif() diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade new file mode 100644 index 000000000..395c7cb14 --- /dev/null +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade @@ -0,0 +1,73 @@ + +if(OQS_LIBJADE_BUILD) +{% for family in instructions['kems'] %} + {%- for scheme in family['schemes'] %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) + cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +{%- if 'alias_scheme' in scheme %} + cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) +{%- endif %} +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'ARM64_V8' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if((OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%}))) +{% if impl['upstream']['name'].endswith('pqclean') -%} +if(((CMAKE_C_COMPILER_ID STREQUAL "GNU") AND (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU")) AND (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))) +{%- endif %} + cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +{%- if 'alias_scheme' in scheme %} + cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) +{%- endif %} +{% if impl['upstream']['name'].endswith('pqclean') -%} +else() + message(WARNING " ARM optimizations are not fully supported on this compiler version.") +endif() +{%- endif %} +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- endfor -%} + {%- endfor %} +{% endfor -%} + +{% for family in instructions['sigs'] %} + {%- for scheme in family['schemes'] %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'x86_64' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) + cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +{%- if 'alias_scheme' in scheme %} + cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) +{%- endif %} +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- for platform in impl['supported_platforms'] if platform['architecture'] == 'ARM64_V8' %} +{% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") +{% endif -%} +if(OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%})) + cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) +{%- if 'alias_scheme' in scheme %} + cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) +{%- endif %} +endif() +{% if platform['operating_systems'] %}endif() +{% endif -%} + {%- endfor -%} + {%- endfor -%} + {%- endfor %} +{% endfor -%} +endif() + diff --git a/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade new file mode 100644 index 000000000..0e19545a5 --- /dev/null +++ b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade @@ -0,0 +1,34 @@ +{% for family in instructions['kems'] %} + +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} @OQS_LIBJADE_BUILD_BIN@ + {%- for scheme in family['schemes'] %} +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +{%- if 'alias_scheme' in scheme %} +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +{%- endif -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +{%- if 'alias_scheme' in scheme %} +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +{%- endif -%} + {%- endfor -%} + {%- endfor -%} +{% endfor -%} + +{% for family in instructions['sigs'] %} + +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name']|upper }} @OQS_LIBJADE_BUILD_BIN@ + {%- for scheme in family['schemes'] %} +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +{%- if 'alias_scheme' in scheme %} +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +{%- endif -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +{%- if 'alias_scheme' in scheme %} +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +{%- endif -%} + {%- endfor -%} + {%- endfor -%} +{% endfor %} + From 41b4af61bf6eb236341147579cc3c6f455da2a6a Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 00:44:21 +0200 Subject: [PATCH 14/82] Update build system files Signed-off-by: Pravek Sharma --- .CMake/alg_support.cmake | 27 +++++++++++++++++++++++++-- CMakeLists.txt | 7 +++++++ src/oqsconfig.h.cmake | 9 +++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index 36c5027f5..7c6dbf2ce 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -168,6 +168,15 @@ cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake_256f_simple "" ON "OQS_ENABL cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake_256s_simple "" ON "OQS_ENABLE_SIG_SPHINCS" OFF) ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_END +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_START +if(OQS_LIBJADE_BUILD) + +option(OQS_ENABLE_LIBJADE_KEM_KYBER "Enable libjade implementation of kyber algorithm family" ON) +cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512 "" ON "OQS_ENABLE_LIBJADE_KEM_KYBER" OFF) +cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_768 "" ON "OQS_ENABLE_LIBJADE_KEM_KYBER" OFF) +endif() +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_END + if((OQS_MINIMAL_BUILD STREQUAL "ON")) message(FATAL_ERROR "OQS_MINIMAL_BUILD option ${OQS_MINIMAL_BUILD} no longer supported") endif() @@ -497,9 +506,23 @@ endif() ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_END -##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_START +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_START +if(OQS_LIBJADE_BUILD) -##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_END +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_512" OFF) +endif() +endif() + +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_768" OFF) +endif() +endif() + +endif() +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_END # Set XKCP (Keccak) required for Sphincs AVX2 code even if OpenSSL3 SHA3 is used: if (${OQS_ENABLE_SIG_SPHINCS} OR NOT ${OQS_USE_SHA3_OPENSSL}) diff --git a/CMakeLists.txt b/CMakeLists.txt index d0ca5543e..f74def257 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,12 +23,19 @@ project(liboqs C ASM) option(OQS_DIST_BUILD "Build distributable library with optimized code for several CPU microarchitectures. Enables run-time CPU feature detection." ON) option(OQS_BUILD_ONLY_LIB "Build only liboqs and do not expose build targets for tests, documentation, and pretty-printing available." OFF) set(OQS_MINIMAL_BUILD "" CACHE STRING "Only build specifically listed algorithms.") +option(OQS_LIBJADE_BUILD "Enable formally verified implementation of supported algorithms from libjade." OFF) option(OQS_PERMIT_UNSUPPORTED_ARCHITECTURE "Permit compilation on an an unsupported architecture." OFF) option(OQS_STRICT_WARNINGS "Enable all compiler warnings." OFF) option(OQS_EMBEDDED_BUILD "Compile liboqs for an Embedded environment without a full standard library." OFF) set(OQS_OPT_TARGET auto CACHE STRING "The target microarchitecture for optimization.") +if(OQS_LIBJADE_BUILD) + set(OQS_LIBJADE_BUILD_BIN 1) +else() + set(OQS_LIBJADE_BUILD_BIN 0) +endif() + set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index f3b2e7c42..02358b97f 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -190,3 +190,12 @@ #cmakedefine OQS_ENABLE_SIG_sphincs_shake_256s_simple 1 #cmakedefine OQS_ENABLE_SIG_sphincs_shake_256s_simple_avx2 1 ///// OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ALG_ENABLE_DEFINES_END + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ALG_ENABLE_DEFINES_START + +#cmakedefine OQS_ENABLE_LIBJADE_KEM_KYBER @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512 @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2 @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768 @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2 @OQS_LIBJADE_BUILD_BIN@ +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ALG_ENABLE_DEFINES_END From 0cd7af040c351875b18743e9ddc963780ab16590 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 00:47:13 +0200 Subject: [PATCH 15/82] Fix add_enable_by_alg_conditional.libjade Signed-off-by: Pravek Sharma --- .../add_enable_by_alg_conditional.libjade | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade index 395c7cb14..15da56eaf 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade @@ -7,9 +7,9 @@ if(OQS_LIBJADE_BUILD) {% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") {% endif -%} if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} endif() {% if platform['operating_systems'] %}endif() @@ -22,9 +22,9 @@ if((OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in plat {% if impl['upstream']['name'].endswith('pqclean') -%} if(((CMAKE_C_COMPILER_ID STREQUAL "GNU") AND (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU")) AND (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))) {%- endif %} - cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} {% if impl['upstream']['name'].endswith('pqclean') -%} else() @@ -46,9 +46,9 @@ endif() {% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") {% endif -%} if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} endif() {% if platform['operating_systems'] %}endif() @@ -58,9 +58,9 @@ endif() {% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") {% endif -%} if(OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} endif() {% if platform['operating_systems'] %}endif() From d62113d8315094fe8e0db71aba873ff866ad5be9 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 00:48:53 +0200 Subject: [PATCH 16/82] Run copy_from_upstream.py Signed-off-by: Pravek Sharma --- src/kem/kyber/CMakeLists.txt | 32 + src/kem/kyber/kem_kyber_512.c | 31 + src/kem/kyber/kem_kyber_768.c | 31 + .../libjade_kyber512_amd64_avx2/.deps/kem.s.d | 1 + .../libjade_kyber512_amd64_avx2/Makefile | 3 + .../kyber/libjade_kyber512_amd64_avx2/api.c | 20 + .../gen_matrix.jinc | 658 + .../libjade_kyber512_amd64_avx2/include/api.h | 45 + .../libjade_kyber512_amd64_avx2/indcpa.jinc | 217 + .../libjade_kyber512_amd64_avx2/kem.jazz | 66 + .../kyber/libjade_kyber512_amd64_avx2/kem.s | 21455 +++++++++++++ .../libjade_kyber512_amd64_ref/.deps/kem.s.d | 1 + .../kyber/libjade_kyber512_amd64_ref/Makefile | 2 + .../kyber/libjade_kyber512_amd64_ref/api.c | 20 + .../libjade_kyber512_amd64_ref/include/api.h | 45 + .../libjade_kyber512_amd64_ref/indcpa.jinc | 242 + .../kyber/libjade_kyber512_amd64_ref/kem.jazz | 66 + .../kyber/libjade_kyber512_amd64_ref/kem.s | 16332 ++++++++++ .../libjade_kyber768_amd64_avx2/.deps/kem.s.d | 1 + .../libjade_kyber768_amd64_avx2/Makefile | 3 + .../kyber/libjade_kyber768_amd64_avx2/api.c | 20 + .../gen_matrix.jinc | 790 + .../libjade_kyber768_amd64_avx2/include/api.h | 45 + .../libjade_kyber768_amd64_avx2/indcpa.jinc | 218 + .../libjade_kyber768_amd64_avx2/kem.jazz | 66 + .../kyber/libjade_kyber768_amd64_avx2/kem.s | 26077 ++++++++++++++++ .../libjade_kyber768_amd64_ref/.deps/kem.s.d | 1 + .../kyber/libjade_kyber768_amd64_ref/Makefile | 4 + .../kyber/libjade_kyber768_amd64_ref/api.c | 20 + .../libjade_kyber768_amd64_ref/include/api.h | 45 + .../libjade_kyber768_amd64_ref/indcpa.jinc | 254 + .../kyber/libjade_kyber768_amd64_ref/kem.jazz | 66 + .../kyber/libjade_kyber768_amd64_ref/kem.jinc | 150 + .../kyber/libjade_kyber768_amd64_ref/kem.s | 18927 +++++++++++ .../libjade_kyber768_amd64_ref/params.jinc | 21 + .../libjade_kyber768_amd64_ref/poly.jinc | 731 + .../libjade_kyber768_amd64_ref/polyvec.jinc | 285 + .../libjade_kyber768_amd64_ref/verify.jinc | 49 + 38 files changed, 87040 insertions(+) create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/api.c create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/include/api.h create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz create mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s create mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d create mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/Makefile create mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/api.c create mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/include/api.h create mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc create mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz create mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/kem.s create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/api.c create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/include/api.h create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz create mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/Makefile create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/api.c create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/include/api.h create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/kem.s create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc create mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 948fc0880..88fcc41ea 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -88,5 +88,37 @@ if(OQS_ENABLE_KEM_kyber_1024_aarch64) endif() set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START + +if(OQS_ENABLE_LIBJADE_KEM_kyber_512) + add_library(kyber_512_amd64_ref OBJECT kem_kyber_512.c libjade_kyber512_amd64_ref/api.c libjade_kyber512_amd64_ref/kem.s) + target_include_directories(kyber_512_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_ref) + target_include_directories(kyber_512_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + set(_KYBER_OBJS ${_KYBER_OBJS} $) +endif() + +if(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) + add_library(kyber_512_amd64_avx2 OBJECT libjade_kyber512_amd64_avx2/api.c libjade_kyber512_amd64_avx2/kem.s) + target_include_directories(kyber_512_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_avx2) + target_include_directories(kyber_512_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_compile_options(kyber_512_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) + set(_KYBER_OBJS ${_KYBER_OBJS} $) +endif() + +if(OQS_ENABLE_LIBJADE_KEM_kyber_768) + add_library(kyber_768_amd64_ref OBJECT kem_kyber_768.c libjade_kyber768_amd64_ref/api.c libjade_kyber768_amd64_ref/kem.s) + target_include_directories(kyber_768_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_ref) + target_include_directories(kyber_768_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + set(_KYBER_OBJS ${_KYBER_OBJS} $) +endif() + +if(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) + add_library(kyber_768_amd64_avx2 OBJECT libjade_kyber768_amd64_avx2/api.c libjade_kyber768_amd64_avx2/kem.s) + target_include_directories(kyber_768_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_avx2) + target_include_directories(kyber_768_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_compile_options(kyber_768_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) + set(_KYBER_OBJS ${_KYBER_OBJS} $) +endif() +##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_END set(KYBER_OBJS ${_KYBER_OBJS} PARENT_SCOPE) diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index a226787f6..a0090fb90 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -45,8 +45,29 @@ extern int PQCLEAN_KYBER512_AARCH64_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) extern int PQCLEAN_KYBER512_AARCH64_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_START + + +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512) +extern int libjade_kyber512_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber512_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber512_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#endif + +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) +extern int libjade_kyber512_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber512_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber512_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#endif + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_END OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key) { +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_END +#else #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -73,6 +94,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre } OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_END +#else #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -99,6 +125,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared } OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_END +#else #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index bc21b0038..911340b60 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -45,8 +45,29 @@ extern int PQCLEAN_KYBER768_AARCH64_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) extern int PQCLEAN_KYBER768_AARCH64_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_START + + +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768) +extern int libjade_kyber768_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber768_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber768_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#endif + +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) +extern int libjade_kyber768_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber768_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber768_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#endif + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_END OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key) { +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_END +#else #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -73,6 +94,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre } OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_END +#else #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -99,6 +125,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared } OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { +#if OQS_LIBJADE_BUILD +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_START + +///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_END +#else #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d b/src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d new file mode 100644 index 000000000..e8c06cc3b --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d @@ -0,0 +1 @@ +kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/amd64/avx2/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/common/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_4x_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake256/amd64/avx2/shake256_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/shuffle.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/consts.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/amd64/avx2/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake128/amd64/avx2/shake128_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/kem.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile b/src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile new file mode 100644 index 000000000..eec5ee0e3 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile @@ -0,0 +1,3 @@ +SRCS := kem.jazz +include ../../../../../Makefile.common + diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/api.c b/src/kem/kyber/libjade_kyber512_amd64_avx2/api.c new file mode 100644 index 000000000..e5620ccfa --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/api.c @@ -0,0 +1,20 @@ +#include +#include "libjade_randombytes.h" +#include "api.h" + +int libjade_kyber512_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber512_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES); + return jade_kem_kyber_kyber512_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber512_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc b/src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc new file mode 100644 index 000000000..98ed9b7ab --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc @@ -0,0 +1,658 @@ +from Jade require "common/keccak/common/fips202_DIRTY.jinc" +from Jade require "common/keccak/common/fips202_4x_DIRTY.jinc" +from Jade require "crypto_xof/shake128/amd64/avx2/shake128_4x.jinc" + +param int GENMATRIX_NBLOCKS = ((12*KYBER_N/8*4096/KYBER_Q + SHAKE128_RATE)/SHAKE128_RATE); +param int REJ_UNIFORM_AVX_BUFLEN = GENMATRIX_NBLOCKS * SHAKE128_RATE; + +u8[2048] ru_idx = {-1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, + 2, -1, -1, -1, -1, -1, -1, -1, + 0, 2, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, + 0, 4, -1, -1, -1, -1, -1, -1, + 2, 4, -1, -1, -1, -1, -1, -1, + 0, 2, 4, -1, -1, -1, -1, -1, + 6, -1, -1, -1, -1, -1, -1, -1, + 0, 6, -1, -1, -1, -1, -1, -1, + 2, 6, -1, -1, -1, -1, -1, -1, + 0, 2, 6, -1, -1, -1, -1, -1, + 4, 6, -1, -1, -1, -1, -1, -1, + 0, 4, 6, -1, -1, -1, -1, -1, + 2, 4, 6, -1, -1, -1, -1, -1, + 0, 2, 4, 6, -1, -1, -1, -1, + 8, -1, -1, -1, -1, -1, -1, -1, + 0, 8, -1, -1, -1, -1, -1, -1, + 2, 8, -1, -1, -1, -1, -1, -1, + 0, 2, 8, -1, -1, -1, -1, -1, + 4, 8, -1, -1, -1, -1, -1, -1, + 0, 4, 8, -1, -1, -1, -1, -1, + 2, 4, 8, -1, -1, -1, -1, -1, + 0, 2, 4, 8, -1, -1, -1, -1, + 6, 8, -1, -1, -1, -1, -1, -1, + 0, 6, 8, -1, -1, -1, -1, -1, + 2, 6, 8, -1, -1, -1, -1, -1, + 0, 2, 6, 8, -1, -1, -1, -1, + 4, 6, 8, -1, -1, -1, -1, -1, + 0, 4, 6, 8, -1, -1, -1, -1, + 2, 4, 6, 8, -1, -1, -1, -1, + 0, 2, 4, 6, 8, -1, -1, -1, + 10, -1, -1, -1, -1, -1, -1, -1, + 0, 10, -1, -1, -1, -1, -1, -1, + 2, 10, -1, -1, -1, -1, -1, -1, + 0, 2, 10, -1, -1, -1, -1, -1, + 4, 10, -1, -1, -1, -1, -1, -1, + 0, 4, 10, -1, -1, -1, -1, -1, + 2, 4, 10, -1, -1, -1, -1, -1, + 0, 2, 4, 10, -1, -1, -1, -1, + 6, 10, -1, -1, -1, -1, -1, -1, + 0, 6, 10, -1, -1, -1, -1, -1, + 2, 6, 10, -1, -1, -1, -1, -1, + 0, 2, 6, 10, -1, -1, -1, -1, + 4, 6, 10, -1, -1, -1, -1, -1, + 0, 4, 6, 10, -1, -1, -1, -1, + 2, 4, 6, 10, -1, -1, -1, -1, + 0, 2, 4, 6, 10, -1, -1, -1, + 8, 10, -1, -1, -1, -1, -1, -1, + 0, 8, 10, -1, -1, -1, -1, -1, + 2, 8, 10, -1, -1, -1, -1, -1, + 0, 2, 8, 10, -1, -1, -1, -1, + 4, 8, 10, -1, -1, -1, -1, -1, + 0, 4, 8, 10, -1, -1, -1, -1, + 2, 4, 8, 10, -1, -1, -1, -1, + 0, 2, 4, 8, 10, -1, -1, -1, + 6, 8, 10, -1, -1, -1, -1, -1, + 0, 6, 8, 10, -1, -1, -1, -1, + 2, 6, 8, 10, -1, -1, -1, -1, + 0, 2, 6, 8, 10, -1, -1, -1, + 4, 6, 8, 10, -1, -1, -1, -1, + 0, 4, 6, 8, 10, -1, -1, -1, + 2, 4, 6, 8, 10, -1, -1, -1, + 0, 2, 4, 6, 8, 10, -1, -1, + 12, -1, -1, -1, -1, -1, -1, -1, + 0, 12, -1, -1, -1, -1, -1, -1, + 2, 12, -1, -1, -1, -1, -1, -1, + 0, 2, 12, -1, -1, -1, -1, -1, + 4, 12, -1, -1, -1, -1, -1, -1, + 0, 4, 12, -1, -1, -1, -1, -1, + 2, 4, 12, -1, -1, -1, -1, -1, + 0, 2, 4, 12, -1, -1, -1, -1, + 6, 12, -1, -1, -1, -1, -1, -1, + 0, 6, 12, -1, -1, -1, -1, -1, + 2, 6, 12, -1, -1, -1, -1, -1, + 0, 2, 6, 12, -1, -1, -1, -1, + 4, 6, 12, -1, -1, -1, -1, -1, + 0, 4, 6, 12, -1, -1, -1, -1, + 2, 4, 6, 12, -1, -1, -1, -1, + 0, 2, 4, 6, 12, -1, -1, -1, + 8, 12, -1, -1, -1, -1, -1, -1, + 0, 8, 12, -1, -1, -1, -1, -1, + 2, 8, 12, -1, -1, -1, -1, -1, + 0, 2, 8, 12, -1, -1, -1, -1, + 4, 8, 12, -1, -1, -1, -1, -1, + 0, 4, 8, 12, -1, -1, -1, -1, + 2, 4, 8, 12, -1, -1, -1, -1, + 0, 2, 4, 8, 12, -1, -1, -1, + 6, 8, 12, -1, -1, -1, -1, -1, + 0, 6, 8, 12, -1, -1, -1, -1, + 2, 6, 8, 12, -1, -1, -1, -1, + 0, 2, 6, 8, 12, -1, -1, -1, + 4, 6, 8, 12, -1, -1, -1, -1, + 0, 4, 6, 8, 12, -1, -1, -1, + 2, 4, 6, 8, 12, -1, -1, -1, + 0, 2, 4, 6, 8, 12, -1, -1, + 10, 12, -1, -1, -1, -1, -1, -1, + 0, 10, 12, -1, -1, -1, -1, -1, + 2, 10, 12, -1, -1, -1, -1, -1, + 0, 2, 10, 12, -1, -1, -1, -1, + 4, 10, 12, -1, -1, -1, -1, -1, + 0, 4, 10, 12, -1, -1, -1, -1, + 2, 4, 10, 12, -1, -1, -1, -1, + 0, 2, 4, 10, 12, -1, -1, -1, + 6, 10, 12, -1, -1, -1, -1, -1, + 0, 6, 10, 12, -1, -1, -1, -1, + 2, 6, 10, 12, -1, -1, -1, -1, + 0, 2, 6, 10, 12, -1, -1, -1, + 4, 6, 10, 12, -1, -1, -1, -1, + 0, 4, 6, 10, 12, -1, -1, -1, + 2, 4, 6, 10, 12, -1, -1, -1, + 0, 2, 4, 6, 10, 12, -1, -1, + 8, 10, 12, -1, -1, -1, -1, -1, + 0, 8, 10, 12, -1, -1, -1, -1, + 2, 8, 10, 12, -1, -1, -1, -1, + 0, 2, 8, 10, 12, -1, -1, -1, + 4, 8, 10, 12, -1, -1, -1, -1, + 0, 4, 8, 10, 12, -1, -1, -1, + 2, 4, 8, 10, 12, -1, -1, -1, + 0, 2, 4, 8, 10, 12, -1, -1, + 6, 8, 10, 12, -1, -1, -1, -1, + 0, 6, 8, 10, 12, -1, -1, -1, + 2, 6, 8, 10, 12, -1, -1, -1, + 0, 2, 6, 8, 10, 12, -1, -1, + 4, 6, 8, 10, 12, -1, -1, -1, + 0, 4, 6, 8, 10, 12, -1, -1, + 2, 4, 6, 8, 10, 12, -1, -1, + 0, 2, 4, 6, 8, 10, 12, -1, + 14, -1, -1, -1, -1, -1, -1, -1, + 0, 14, -1, -1, -1, -1, -1, -1, + 2, 14, -1, -1, -1, -1, -1, -1, + 0, 2, 14, -1, -1, -1, -1, -1, + 4, 14, -1, -1, -1, -1, -1, -1, + 0, 4, 14, -1, -1, -1, -1, -1, + 2, 4, 14, -1, -1, -1, -1, -1, + 0, 2, 4, 14, -1, -1, -1, -1, + 6, 14, -1, -1, -1, -1, -1, -1, + 0, 6, 14, -1, -1, -1, -1, -1, + 2, 6, 14, -1, -1, -1, -1, -1, + 0, 2, 6, 14, -1, -1, -1, -1, + 4, 6, 14, -1, -1, -1, -1, -1, + 0, 4, 6, 14, -1, -1, -1, -1, + 2, 4, 6, 14, -1, -1, -1, -1, + 0, 2, 4, 6, 14, -1, -1, -1, + 8, 14, -1, -1, -1, -1, -1, -1, + 0, 8, 14, -1, -1, -1, -1, -1, + 2, 8, 14, -1, -1, -1, -1, -1, + 0, 2, 8, 14, -1, -1, -1, -1, + 4, 8, 14, -1, -1, -1, -1, -1, + 0, 4, 8, 14, -1, -1, -1, -1, + 2, 4, 8, 14, -1, -1, -1, -1, + 0, 2, 4, 8, 14, -1, -1, -1, + 6, 8, 14, -1, -1, -1, -1, -1, + 0, 6, 8, 14, -1, -1, -1, -1, + 2, 6, 8, 14, -1, -1, -1, -1, + 0, 2, 6, 8, 14, -1, -1, -1, + 4, 6, 8, 14, -1, -1, -1, -1, + 0, 4, 6, 8, 14, -1, -1, -1, + 2, 4, 6, 8, 14, -1, -1, -1, + 0, 2, 4, 6, 8, 14, -1, -1, + 10, 14, -1, -1, -1, -1, -1, -1, + 0, 10, 14, -1, -1, -1, -1, -1, + 2, 10, 14, -1, -1, -1, -1, -1, + 0, 2, 10, 14, -1, -1, -1, -1, + 4, 10, 14, -1, -1, -1, -1, -1, + 0, 4, 10, 14, -1, -1, -1, -1, + 2, 4, 10, 14, -1, -1, -1, -1, + 0, 2, 4, 10, 14, -1, -1, -1, + 6, 10, 14, -1, -1, -1, -1, -1, + 0, 6, 10, 14, -1, -1, -1, -1, + 2, 6, 10, 14, -1, -1, -1, -1, + 0, 2, 6, 10, 14, -1, -1, -1, + 4, 6, 10, 14, -1, -1, -1, -1, + 0, 4, 6, 10, 14, -1, -1, -1, + 2, 4, 6, 10, 14, -1, -1, -1, + 0, 2, 4, 6, 10, 14, -1, -1, + 8, 10, 14, -1, -1, -1, -1, -1, + 0, 8, 10, 14, -1, -1, -1, -1, + 2, 8, 10, 14, -1, -1, -1, -1, + 0, 2, 8, 10, 14, -1, -1, -1, + 4, 8, 10, 14, -1, -1, -1, -1, + 0, 4, 8, 10, 14, -1, -1, -1, + 2, 4, 8, 10, 14, -1, -1, -1, + 0, 2, 4, 8, 10, 14, -1, -1, + 6, 8, 10, 14, -1, -1, -1, -1, + 0, 6, 8, 10, 14, -1, -1, -1, + 2, 6, 8, 10, 14, -1, -1, -1, + 0, 2, 6, 8, 10, 14, -1, -1, + 4, 6, 8, 10, 14, -1, -1, -1, + 0, 4, 6, 8, 10, 14, -1, -1, + 2, 4, 6, 8, 10, 14, -1, -1, + 0, 2, 4, 6, 8, 10, 14, -1, + 12, 14, -1, -1, -1, -1, -1, -1, + 0, 12, 14, -1, -1, -1, -1, -1, + 2, 12, 14, -1, -1, -1, -1, -1, + 0, 2, 12, 14, -1, -1, -1, -1, + 4, 12, 14, -1, -1, -1, -1, -1, + 0, 4, 12, 14, -1, -1, -1, -1, + 2, 4, 12, 14, -1, -1, -1, -1, + 0, 2, 4, 12, 14, -1, -1, -1, + 6, 12, 14, -1, -1, -1, -1, -1, + 0, 6, 12, 14, -1, -1, -1, -1, + 2, 6, 12, 14, -1, -1, -1, -1, + 0, 2, 6, 12, 14, -1, -1, -1, + 4, 6, 12, 14, -1, -1, -1, -1, + 0, 4, 6, 12, 14, -1, -1, -1, + 2, 4, 6, 12, 14, -1, -1, -1, + 0, 2, 4, 6, 12, 14, -1, -1, + 8, 12, 14, -1, -1, -1, -1, -1, + 0, 8, 12, 14, -1, -1, -1, -1, + 2, 8, 12, 14, -1, -1, -1, -1, + 0, 2, 8, 12, 14, -1, -1, -1, + 4, 8, 12, 14, -1, -1, -1, -1, + 0, 4, 8, 12, 14, -1, -1, -1, + 2, 4, 8, 12, 14, -1, -1, -1, + 0, 2, 4, 8, 12, 14, -1, -1, + 6, 8, 12, 14, -1, -1, -1, -1, + 0, 6, 8, 12, 14, -1, -1, -1, + 2, 6, 8, 12, 14, -1, -1, -1, + 0, 2, 6, 8, 12, 14, -1, -1, + 4, 6, 8, 12, 14, -1, -1, -1, + 0, 4, 6, 8, 12, 14, -1, -1, + 2, 4, 6, 8, 12, 14, -1, -1, + 0, 2, 4, 6, 8, 12, 14, -1, + 10, 12, 14, -1, -1, -1, -1, -1, + 0, 10, 12, 14, -1, -1, -1, -1, + 2, 10, 12, 14, -1, -1, -1, -1, + 0, 2, 10, 12, 14, -1, -1, -1, + 4, 10, 12, 14, -1, -1, -1, -1, + 0, 4, 10, 12, 14, -1, -1, -1, + 2, 4, 10, 12, 14, -1, -1, -1, + 0, 2, 4, 10, 12, 14, -1, -1, + 6, 10, 12, 14, -1, -1, -1, -1, + 0, 6, 10, 12, 14, -1, -1, -1, + 2, 6, 10, 12, 14, -1, -1, -1, + 0, 2, 6, 10, 12, 14, -1, -1, + 4, 6, 10, 12, 14, -1, -1, -1, + 0, 4, 6, 10, 12, 14, -1, -1, + 2, 4, 6, 10, 12, 14, -1, -1, + 0, 2, 4, 6, 10, 12, 14, -1, + 8, 10, 12, 14, -1, -1, -1, -1, + 0, 8, 10, 12, 14, -1, -1, -1, + 2, 8, 10, 12, 14, -1, -1, -1, + 0, 2, 8, 10, 12, 14, -1, -1, + 4, 8, 10, 12, 14, -1, -1, -1, + 0, 4, 8, 10, 12, 14, -1, -1, + 2, 4, 8, 10, 12, 14, -1, -1, + 0, 2, 4, 8, 10, 12, 14, -1, + 6, 8, 10, 12, 14, -1, -1, -1, + 0, 6, 8, 10, 12, 14, -1, -1, + 2, 6, 8, 10, 12, 14, -1, -1, + 0, 2, 6, 8, 10, 12, 14, -1, + 4, 6, 8, 10, 12, 14, -1, -1, + 0, 4, 6, 8, 10, 12, 14, -1, + 2, 4, 6, 8, 10, 12, 14, -1, + 0, 2, 4, 6, 8, 10, 12, 14}; + +inline +fn __shake128_squeezenblocks4x(reg ptr u256[25] state, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] h0 h1 h2 h3) + -> reg ptr u256[25], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] +{ + inline int i; + + for i = 0 to GENMATRIX_NBLOCKS + { + state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE] = __shake128_squeezeblock4x(state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE]); + } + + return state, h0, h1, h2, h3; +} + +inline +fn __rej_uniform(reg ptr u16[KYBER_N] rp, reg u64 offset, reg ptr u8[SHAKE128_RATE] buf, inline int buflen) -> reg u64, stack u16[KYBER_N] +{ + reg u16 val0 val1; + reg u16 t; + reg u64 pos ctr; + reg u8 fl1 fl2; + reg bool cf zf b; + + ctr = offset; + pos = 0; + + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(cf || zf); //SETBE + + _, cf, _, _, zf = #CMP_64(pos, buflen - 3); + fl2 = #SETcc(cf || zf); //SETBE + + _, _, _, _, b = #TEST_8(fl1, fl2); + + while(!b) + { + val0 = (16u)buf[(int)pos]; + pos += 1; + + t = (16u)buf[(int)pos]; + val1 = t; + val1 >>= 4; + + t &= 0x0F; + t <<= 8; + val0 |= t; + pos += 1; + + t = (16u)buf[(int)pos]; + t <<= 4; + val1 |= t; + pos += 1; + + if(val0 < KYBER_Q) + { + rp[(int)ctr] = val0; + ctr += 1; + } + + if(ctr < KYBER_N) + { + if(val1 < KYBER_Q) + { + rp[(int)ctr] = val1; + ctr += 1; + } + } + + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(cf || zf); //SETBE + + _, cf, _, _, zf = #CMP_64(pos, buflen - 3); + fl2 = #SETcc(cf || zf); //SETBE + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + return ctr, rp; +} + +u8 ru_ones_s = 1; +u16 ru_mask_s = 0x0FFF; +u8[32] ru_idx8_s = {0, 1, 1, 2, 3, 4, 4, 5, + 6, 7, 7, 8, 9, 10, 10, 11, + 4, 5, 5, 6, 7, 8, 8, 9, + 10, 11, 11, 12, 13, 14, 14, 15}; + +fn _rej_uniform_avx(reg ptr u16[KYBER_N] rp, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] buf) -> reg u64, reg ptr u16[KYBER_N] +{ + reg u256 f0 f1 g0 g1 g2 g3; + reg u256 bound ones mask idx8; + reg u128 f t l h; + reg u64 pos ctr t64 t64_1 t64_2 t64_3; + reg u64 good; + reg u16 val0 val1 t16; + reg ptr u8[2048] idxp; + reg u8 fl1 fl2; + reg bool cf zf b; + + idxp = ru_idx; + + bound = jqx16[u256 0]; + ctr = 0; + pos = 0; + ones = #VPBROADCAST_32u8(ru_ones_s); + mask = #VPBROADCAST_16u16(ru_mask_s); + idx8 = ru_idx8_s[u256 0]; + + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 32); + fl1 = #SETcc(cf || zf); + + _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); + fl2 = #SETcc(cf || zf); + + _, _, _, _, b = #TEST_8(fl1, fl2); + + while(!b) + { + f0 = #VPERMQ(buf.[u256 (int)pos], 0x94); + f1 = #VPERMQ(buf.[u256 24 + (int)pos], 0x94); + f0 = #VPSHUFB_256(f0, idx8); + f1 = #VPSHUFB_256(f1, idx8); + g0 = #VPSRL_16u16(f0, 4); + g1 = #VPSRL_16u16(f1, 4); + f0 = #VPBLEND_16u16(f0, g0, 0xAA); + f1 = #VPBLEND_16u16(f1, g1, 0xAA); + f0 = #VPAND_256(f0, mask); + f1 = #VPAND_256(f1, mask); + + g0 = #VPCMPGT_16u16(bound, f0); + g1 = #VPCMPGT_16u16(bound, f1); + + g0 = #VPACKSS_16u16(g0, g1); + good = #VPMOVMSKB_u256u64(g0); + + t64 = good; + t64 &= 0xFF; + g0 = (256u) #VMOV(idxp[u64 (int)t64]); + + t64_1 = good; + t64_1 >>= 16; + t64_1 &= 0xFF; + l = #VMOV(idxp[u64 (int)t64_1]); + + t64_2 = good; + t64_2 >>= 8; + t64_2 &= 0xFF; + g1 = (256u) #VMOV(idxp[u64 (int)t64_2]); + + t64_3 = good; + t64_3 >>= 24; + t64_3 &= 0xFF; + h = #VMOV(idxp[u64 (int)t64_3]); + + g0 = #VINSERTI128(g0, l, 1); + + _, _, _, _, _, t64 = #POPCNT_64(t64); + _, _, _, _, _, t64_1 = #POPCNT_64(t64_1); + t64 += ctr; + + g1 = #VINSERTI128(g1, h, 1); + + t64_1 += t64; + _, _, _, _, _, t64_2 = #POPCNT_64(t64_2); + t64_2 += t64_1; + _, _, _, _, _, t64_3 = #POPCNT_64(t64_3); + t64_3 += t64_2; + + g2 = #VPADD_32u8(g0, ones); + g0 = #VPUNPCKL_32u8(g0, g2); + g3 = #VPADD_32u8(g1, ones); + g1 = #VPUNPCKL_32u8(g1, g3); + + f0 = #VPSHUFB_256(f0, g0); + f1 = #VPSHUFB_256(f1, g1); + + rp.[u128 2*(int)ctr] = (128u)f0; + rp.[u128 2*(int)t64] = #VEXTRACTI128(f0, 1); + rp.[u128 2*(int)t64_1] = (128u)f1; + rp.[u128 2*(int)t64_2] = #VEXTRACTI128(f1, 1); + + ctr = t64_3; + + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 32); + fl1 = #SETcc(cf || zf); + + pos += 48; + _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); + fl2 = #SETcc(cf || zf); + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 8); + fl1 = #SETcc(cf || zf); + + _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); + fl2 = #SETcc(cf || zf); + + _, _, _, _, b = #TEST_8(fl1, fl2); + + t64 = 0x5555; + while(!b) + { + f = buf.[u128 (int)pos]; + f = #VPSHUFB_128(f, idx8); + t = #VPSRL_8u16(f, 4); + f = #VPBLEND_8u16(f, t, 0xAA); + f = #VPAND_128(f, mask); + + t = #VPCMPGT_8u16(bound, f); + good = #VPMOVMSKB_u128u64(t); + + good = #PEXT_64(good, t64); + l = #VMOV(idxp[u64 (int)good]); + _, _, _, _, _, good = #POPCNT_64(good); + + h = #VPADD_16u8(l, ones); + l = #VPUNPCKL_16u8(l, h); + f = #VPSHUFB_128(f, l); + + rp.[u128 2*(int)ctr] = f; + ctr += good; + + pos += 12; + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 8); + fl1 = #SETcc(cf || zf); + + _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); + fl2 = #SETcc(cf || zf); + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(cf || zf); + + _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); + fl2 = #SETcc(cf || zf); + + _, _, _, _, b = #TEST_8(fl1, fl2); + + while(!b) + { + val0 = (16u)buf[(int)pos]; + pos += 1; + t16 = (16u)buf[(int)pos]; + pos += 1; + val1 = t16; + + t16 <<= 8; + val0 |= t16; + val0 &= 0xFFF; + + val1 >>= 4; + t16 = (16u)buf[(int)pos]; + pos += 1; + t16 <<= 4; + val1 |= t16; + + if(val0 < KYBER_Q) + { + rp[(int)ctr] = val0; + ctr += 1; + } + if(val1 < KYBER_Q) + { + if(ctr < KYBER_N) + { + rp[(int)ctr] = val1; + ctr += 1; + } + } + + _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(cf || zf); //SETBE + + _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); + fl2 = #SETcc(cf || zf); //SETBE + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + return ctr, rp; +} + +inline +fn __gen_matrix(stack u8[KYBER_SYMBYTES] seed, inline int transposed) -> stack u16[KYBER_K*KYBER_VECN] +{ + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf0; + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf1; + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf2; + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf3; + stack u256[25] state; + stack u16[KYBER_K*KYBER_VECN] rr; + reg u256 f; + reg u64 ctr0 ctr1 ctr2 ctr3 tmp; + reg u8 flg0 flg1 bflg; + reg bool cf zf; + inline int i, j; + + f = seed[u256 0]; + buf0[u256 0] = f; + buf1[u256 0] = f; + buf2[u256 0] = f; + buf3[u256 0] = f; + + if(transposed == 1) + { + buf0[KYBER_SYMBYTES] = 0; + buf0[KYBER_SYMBYTES+1] = 0; + buf1[KYBER_SYMBYTES] = 0; + buf1[KYBER_SYMBYTES+1] = 1; + buf2[KYBER_SYMBYTES] = 1; + buf2[KYBER_SYMBYTES+1] = 0; + buf3[KYBER_SYMBYTES] = 1; + buf3[KYBER_SYMBYTES+1] = 1; + } + else + { + buf0[KYBER_SYMBYTES] = 0; + buf0[KYBER_SYMBYTES+1] = 0; + buf1[KYBER_SYMBYTES] = 1; + buf1[KYBER_SYMBYTES+1] = 0; + buf2[KYBER_SYMBYTES] = 0; + buf2[KYBER_SYMBYTES+1] = 1; + buf3[KYBER_SYMBYTES] = 1; + buf3[KYBER_SYMBYTES+1] = 1; + } + + state = _shake128_absorb4x_34(state, buf0[0:34], buf1[0:34], buf2[0:34], buf3[0:34]); + state, buf0, buf1, buf2, buf3 = __shake128_squeezenblocks4x(state, buf0, buf1, buf2, buf3); + + tmp, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], buf0); + ctr0 = tmp; + tmp, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], buf1); + ctr1 = tmp; + tmp, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], buf2); + ctr2 = tmp; + ctr3, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], buf3); + + _, cf, _, _, zf = #CMP_64(ctr0, KYBER_N - 1); + flg0 = #SETcc(cf || zf); //SETBE + + _, cf, _, _, zf = #CMP_64(ctr1, KYBER_N - 1); + flg1 = #SETcc(cf || zf); + + _, _, _, _, _, bflg = #OR_8(flg0, flg1); + + _, cf, _, _, zf = #CMP_64(ctr2, KYBER_N - 1); + flg0 = #SETcc(cf || zf); + + _, cf, _, _, zf = #CMP_64(ctr3, KYBER_N - 1); + flg1 = #SETcc(cf || zf); + + _, _, _, _, _, flg0 = #OR_8(flg0, flg1); + _, _, _, _, _, bflg = #OR_8(flg0, bflg); + + while(bflg != 0) { + state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE] = __shake128_squeezeblock4x(state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE]); + + ctr0, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); + ctr1, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], ctr1, buf1[0:SHAKE128_RATE], SHAKE128_RATE); + ctr2, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], ctr2, buf2[0:SHAKE128_RATE], SHAKE128_RATE); + ctr3, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], ctr3, buf3[0:SHAKE128_RATE], SHAKE128_RATE); + + _, cf, _, _, zf = #CMP_64(ctr0, KYBER_N - 1); + flg0 = #SETcc(cf || zf); + + _, cf, _, _, zf = #CMP_64(ctr1, KYBER_N - 1); + flg1 = #SETcc(cf || zf); + + _, _, _, _, _, bflg = #OR_8(flg0, flg1); + + _, cf, _, _, zf = #CMP_64(ctr2, KYBER_N - 1); + flg0 = #SETcc(cf || zf); + + _, cf, _, _, zf = #CMP_64(ctr3, KYBER_N - 1); + flg1 = #SETcc(cf || zf); + + _, _, _, _, _, flg0 = #OR_8(flg0, flg1); + _, _, _, _, _, bflg = #OR_8(flg0, bflg); + } + for i = 0 to KYBER_K + { + for j = 0 to KYBER_K + { + rr[i*KYBER_VECN+j*KYBER_N:KYBER_N] = _nttunpack(rr[i*KYBER_VECN+j*KYBER_N:KYBER_N]); + } + } + + + return rr; +} diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/include/api.h b/src/kem/kyber/libjade_kyber512_amd64_avx2/include/api.h new file mode 100644 index 000000000..0914217f4 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/include/api.h @@ -0,0 +1,45 @@ +#ifndef JADE_KEM_kyber_kyber512_amd64_avx2_API_H +#define JADE_KEM_kyber_kyber512_amd64_avx2_API_H + +#include + +#define JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES 64 +#define JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES 32 + +int jade_kem_kyber_kyber512_amd64_avx2_keypair_derand( + uint8_t *public_key, + uint8_t *secret_key, + const uint8_t *coins +); + +int libjade_kyber512_amd64_avx2_keypair( + uint8_t *public_key, + uint8_t *secret_key +); + +int jade_kem_kyber_kyber512_amd64_avx2_enc_derand( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key, + const uint8_t *coins +); + +int libjade_kyber512_amd64_avx2_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +); + +int jade_kem_kyber_kyber512_amd64_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +int libjade_kyber512_amd64_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +#endif diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc b/src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc new file mode 100644 index 000000000..1f9e08d6e --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc @@ -0,0 +1,217 @@ +from Jade require "crypto_kem/kyber/kyber512/common/params.jinc" +from Jade require "crypto_kem/kyber/common/amd64/avx2/poly.jinc" +from Jade require "crypto_kem/kyber/common/amd64/avx2/polyvec.jinc" +require "gen_matrix.jinc" + +inline +fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] coins) +{ + stack u64 spkp sskp; + stack u16[KYBER_K*KYBER_VECN] aa; + stack u16[KYBER_VECN] e pkpv skpv; + stack u8[64] buf; + stack u8[KYBER_SYMBYTES] publicseed noiseseed; + reg u64 t64; + reg u8 nonce; + inline int i; + + spkp = pkp; + sskp = skp; + + buf = _sha3_512_32(buf, coins); + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = buf[u64 i]; + publicseed[u64 i] = t64; + t64 = buf[u64 i + KYBER_SYMBYTES/8]; + noiseseed[u64 i] = t64; + } + + aa = __gen_matrix(publicseed, 0); + + nonce = 0; + skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], e[0:KYBER_N], e[KYBER_N:KYBER_N] = _poly_getnoise_eta1_4x(skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], e[0:KYBER_N], e[KYBER_N:KYBER_N], noiseseed, nonce); + + skpv = __polyvec_ntt(skpv); + e = __polyvec_ntt(e); + + for i=0 to KYBER_K + { + pkpv[i*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(pkpv[i*KYBER_N:KYBER_N], aa[i*KYBER_VECN:KYBER_VECN], skpv); + pkpv[i*KYBER_N:KYBER_N] = _poly_frommont(pkpv[i*KYBER_N:KYBER_N]); + } + + pkpv = __polyvec_add2(pkpv, e); + pkpv = __polyvec_reduce(pkpv); + + pkp = spkp; + skp = sskp; + + __polyvec_tobytes(skp, skpv); + __polyvec_tobytes(pkp, pkpv); + + pkp += KYBER_POLYVECBYTES; + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = publicseed[u64 i]; + (u64)[pkp] = t64; + pkp += 8; + } +} + +// FIXME: E_EPTR +inline +fn __indcpa_enc_0(stack u64 sctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) +{ + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_N] k epp v; + stack u8[KYBER_SYMBYTES] publicseed; + stack ptr u8[KYBER_SYMBYTES] s_noiseseed; + reg ptr u8[KYBER_SYMBYTES] lnoiseseed; + reg u64 i ctp t64; + reg u8 nonce; + inline int w; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed[u64 (int)i] = t64; + pkp += 8; + i += 1; + } + + k = _poly_frommsg_1(k, msgp); + + s_noiseseed = noiseseed; + aat = __gen_matrix(publicseed, 1); + lnoiseseed = s_noiseseed; + + nonce = 0; + sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N] = _poly_getnoise_eta1122_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N], lnoiseseed, nonce); + + nonce = 4; + lnoiseseed = s_noiseseed; + epp = _poly_getnoise(epp, lnoiseseed, nonce); + + sp = __polyvec_ntt(sp); + + for w=0 to KYBER_K + { + bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); + } + + v = __polyvec_pointwise_acc(v, pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + __polyvec_compress(ctp, bp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_compress(ctp, v); +} + +// FIXME: E_EPTR +inline +fn __indcpa_enc_1(reg ptr u8[KYBER_INDCPA_BYTES] ctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_INDCPA_BYTES] +{ + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_N] k epp v; + stack u8[KYBER_SYMBYTES] publicseed; + stack ptr u8[KYBER_SYMBYTES] s_noiseseed; + reg ptr u8[KYBER_SYMBYTES] lnoiseseed; + stack ptr u8[KYBER_INDCPA_BYTES] sctp; + reg u64 i t64; + reg u8 nonce; + inline int w; + + sctp = ctp; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed[u64 (int)i] = t64; + pkp += 8; + i += 1; + } + + k = _poly_frommsg_1(k, msgp); + + s_noiseseed = noiseseed; + aat = __gen_matrix(publicseed, 1); + lnoiseseed = s_noiseseed; + + nonce = 0; + sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N] = _poly_getnoise_eta1122_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N], lnoiseseed, nonce); + + nonce = 4; + lnoiseseed = s_noiseseed; + epp = _poly_getnoise(epp, lnoiseseed, nonce); + + sp = __polyvec_ntt(sp); + + for w=0 to KYBER_K + { + bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); + } + + v = __polyvec_pointwise_acc(v, pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __polyvec_compress_1(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); + ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _poly_compress_1(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); + + return ctp; +} + + +inline +fn __indcpa_dec(reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_INDCPA_MSGBYTES] +{ + stack u16[KYBER_N] t v mp; + stack u16[KYBER_VECN] bp skpv; + + bp = __polyvec_decompress(ctp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_decompress(v, ctp); + + skpv = __polyvec_frombytes(skp); + + bp = __polyvec_ntt(bp); + t = __polyvec_pointwise_acc(t, skpv, bp); + t = _poly_invntt(t); + + mp = _poly_sub(mp, v, t); + mp = __poly_reduce(mp); + + msgp, mp = _poly_tomsg_1(msgp, mp); + + return msgp; +} diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz b/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz new file mode 100644 index 000000000..c4b7a7935 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz @@ -0,0 +1,66 @@ +require "indcpa.jinc" +from Jade require "common/tofromstack.jinc" +from Jade require "crypto_kem/kyber/common/amd64/avx2/verify.jinc" +from Jade require "crypto_kem/kyber/common/amd64/kem.jinc" + +export fn jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = __tostack64u8(stack_coins, coins); + __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_avx2_keypair(reg u64 public_key secret_key) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = #randombytes(stack_coins); + __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_avx2_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = __tostack32u8(stack_coins, coins); + __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_avx2_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = #randombytes(stack_coins); + __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_avx2_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 +{ + reg u64 r; + __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); + ?{}, r = #set0(); + return r; +} diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s b/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s new file mode 100644 index 000000000..028d549e6 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s @@ -0,0 +1,21455 @@ + .att_syntax + .text + .p2align 5 + .globl _jade_kem_kyber_kyber512_amd64_avx2_dec + .globl jade_kem_kyber_kyber512_amd64_avx2_dec + .globl _jade_kem_kyber_kyber512_amd64_avx2_enc + .globl jade_kem_kyber_kyber512_amd64_avx2_enc + .globl _jade_kem_kyber_kyber512_amd64_avx2_enc_derand + .globl jade_kem_kyber_kyber512_amd64_avx2_enc_derand + .globl _jade_kem_kyber_kyber512_amd64_avx2_keypair + .globl jade_kem_kyber_kyber512_amd64_avx2_keypair + .globl _jade_kem_kyber_kyber512_amd64_avx2_keypair_derand + .globl jade_kem_kyber_kyber512_amd64_avx2_keypair_derand +_jade_kem_kyber_kyber512_amd64_avx2_dec: +jade_kem_kyber_kyber512_amd64_avx2_dec: + movq %rsp, %rax + leaq -12064(%rsp), %rsp + andq $-32, %rsp + movq %rax, 12056(%rsp) + movq %r15, 12008(%rsp) + movq %r14, 12016(%rsp) + movq %r13, 12024(%rsp) + movq %r12, 12032(%rsp) + movq %rbp, 12040(%rsp) + movq %rbx, 12048(%rsp) + movq %rdi, 11968(%rsp) + movq %rsi, 11976(%rsp) + leaq 32(%rsp), %rax + vpbroadcastd glob_data + 6436(%rip), %ymm0 + vmovdqu glob_data + 64(%rip), %ymm1 + vpbroadcastq glob_data + 6224(%rip), %ymm2 + vpbroadcastd glob_data + 6432(%rip), %ymm3 + vmovdqu (%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 5824(%rsp) + vmovdqu 20(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 5856(%rsp) + vmovdqu 40(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 5888(%rsp) + vmovdqu 60(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 5920(%rsp) + vmovdqu 80(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 5952(%rsp) + vmovdqu 100(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 5984(%rsp) + vmovdqu 120(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6016(%rsp) + vmovdqu 140(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6048(%rsp) + vmovdqu 160(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6080(%rsp) + vmovdqu 180(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6112(%rsp) + vmovdqu 200(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6144(%rsp) + vmovdqu 220(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6176(%rsp) + vmovdqu 240(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6208(%rsp) + vmovdqu 260(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6240(%rsp) + vmovdqu 280(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6272(%rsp) + vmovdqu 300(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6304(%rsp) + vmovdqu 320(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6336(%rsp) + vmovdqu 340(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6368(%rsp) + vmovdqu 360(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6400(%rsp) + vmovdqu 380(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6432(%rsp) + vmovdqu 400(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6464(%rsp) + vmovdqu 420(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6496(%rsp) + vmovdqu 440(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6528(%rsp) + vmovdqu 460(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6560(%rsp) + vmovdqu 480(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6592(%rsp) + vmovdqu 500(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6624(%rsp) + vmovdqu 520(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6656(%rsp) + vmovdqu 540(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6688(%rsp) + vmovdqu 560(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6720(%rsp) + vmovdqu 580(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6752(%rsp) + vmovdqu 600(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6784(%rsp) + vmovdqu 620(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm1 + vpsllvd %ymm2, %ymm1, %ymm1 + vpsrlw $1, %ymm1, %ymm1 + vpand %ymm3, %ymm1, %ymm1 + vpmulhrsw %ymm0, %ymm1, %ymm0 + vmovdqu %ymm0, 6816(%rsp) + addq $640, %rsi + leaq 2208(%rsp), %rcx + leaq -24(%rsp), %rsp + call L_poly_decompress$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$77: + leaq 24(%rsp), %rsp + movq %rdx, %rsi + leaq 6848(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$76: + addq $384, %rsi + leaq 7360(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$75: + leaq 5824(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$74: + leaq 6336(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$73: + leaq 2720(%rsp), %rcx + leaq 6848(%rsp), %rsi + leaq 5824(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$72: + leaq 3232(%rsp), %rcx + leaq 7360(%rsp), %rsi + leaq 6336(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$71: + leaq 2720(%rsp), %rcx + leaq 3232(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$70: + leaq 2720(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$69: + leaq 3232(%rsp), %rcx + leaq 2208(%rsp), %rsi + leaq 2720(%rsp), %rdi + call L_poly_sub$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$68: + leaq 3232(%rsp), %rcx + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rcx) + vmovdqu 32(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rcx) + vmovdqu 64(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rcx) + vmovdqu 96(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rcx) + vmovdqu 128(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rcx) + vmovdqu 160(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rcx) + vmovdqu 192(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rcx) + vmovdqu 224(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rcx) + vmovdqu 256(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rcx) + vmovdqu 288(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rcx) + vmovdqu 320(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rcx) + vmovdqu 352(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rcx) + vmovdqu 384(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rcx) + vmovdqu 416(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rcx) + vmovdqu 448(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rcx) + vmovdqu 480(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rcx) + leaq 3232(%rsp), %rcx + call L_poly_tomsg_1$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$67: + leaq 32(%rdx), %rax + addq $1536, %rax + movq (%rax), %rcx + movq %rcx, 64(%rsp) + movq 8(%rax), %rcx + movq %rcx, 72(%rsp) + movq 16(%rax), %rcx + movq %rcx, 80(%rsp) + movq 24(%rax), %rax + movq %rax, 88(%rsp) + movq %rdx, 11984(%rsp) + leaq 96(%rsp), %rax + leaq 32(%rsp), %rcx + leaq -248(%rsp), %rsp + call L_sha3_512_64$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$66: + leaq 248(%rsp), %rsp + movq 11984(%rsp), %rax + addq $768, %rax + leaq 4256(%rsp), %rcx + leaq 32(%rsp), %rdi + leaq 128(%rsp), %rdx + movq %rcx, 11992(%rsp) + movq %rax, %rsi + leaq 5824(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$65: + addq $384, %rsi + leaq 6336(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$64: + movq $0, %rcx + addq $768, %rax + jmp Ljade_kem_kyber_kyber512_amd64_avx2_dec$62 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$63: + movq (%rax), %rsi + movq %rsi, (%rsp,%rcx,8) + addq $8, %rax + incq %rcx +Ljade_kem_kyber_kyber512_amd64_avx2_dec$62: + cmpq $4, %rcx + jb Ljade_kem_kyber_kyber512_amd64_avx2_dec$63 + leaq 3232(%rsp), %rax + call L_poly_frommsg_1$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$61: + movq %rdx, 12000(%rsp) + vmovdqu (%rsp), %ymm0 + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 672(%rsp) + vmovdqu %ymm0, 1184(%rsp) + vmovdqu %ymm0, 1696(%rsp) + movb $0, 192(%rsp) + movb $0, 193(%rsp) + movb $0, 704(%rsp) + movb $1, 705(%rsp) + movb $1, 1216(%rsp) + movb $0, 1217(%rsp) + movb $1, 1728(%rsp) + movb $1, 1729(%rsp) + leaq 5024(%rsp), %rax + leaq 160(%rsp), %rcx + leaq 672(%rsp), %rdx + leaq 1184(%rsp), %rsi + leaq 1696(%rsp), %rdi + call L_shake128_absorb4x_34$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$60: + leaq 5024(%rsp), %rax + leaq 160(%rsp), %rcx + leaq 672(%rsp), %r8 + leaq 1184(%rsp), %r9 + leaq 1696(%rsp), %r10 + movq %rcx, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$59: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rcx), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$58: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rcx), %rcx + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$57: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rcx) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rcx) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rcx) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rcx) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rcx) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rcx) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rcx) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rcx) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rcx) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rcx) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rcx) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rcx) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rcx) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rcx) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rcx) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rcx) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rcx) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rcx) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rcx) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rcx) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rcx) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 9920(%rsp), %rbp + leaq 160(%rsp), %r12 + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$56: + movq %rcx, %r10 + leaq 10432(%rsp), %rbp + leaq 672(%rsp), %r12 + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$55: + movq %rcx, %r11 + leaq 10944(%rsp), %rbp + leaq 1184(%rsp), %r12 + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$54: + movq %rcx, %rbx + leaq 11456(%rsp), %rbp + leaq 1696(%rsp), %r12 + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$53: + cmpq $255, %r10 + setbe %al + cmpq $255, %r11 + setbe %dl + orb %dl, %al + cmpq $255, %rbx + setbe %dl + cmpq $255, %rcx + setbe %sil + orb %sil, %dl + orb %al, %dl + jmp Ljade_kem_kyber_kyber512_amd64_avx2_dec$30 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$31: + leaq 5024(%rsp), %rax + leaq 160(%rsp), %r8 + leaq 672(%rsp), %r9 + leaq 1184(%rsp), %rbp + leaq 1696(%rsp), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$52: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r8) + vmovhpd %xmm1, (%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r8) + vmovhpd %xmm1, 8(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r8) + vmovhpd %xmm1, 16(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r8) + vmovhpd %xmm1, 24(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r8) + vmovhpd %xmm1, 32(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r8) + vmovhpd %xmm1, 40(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r8) + vmovhpd %xmm1, 48(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r8) + vmovhpd %xmm1, 56(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r8) + vmovhpd %xmm1, 64(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r8) + vmovhpd %xmm1, 72(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r8) + vmovhpd %xmm1, 80(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r8) + vmovhpd %xmm1, 88(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r8) + vmovhpd %xmm1, 96(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r8) + vmovhpd %xmm1, 104(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r8) + vmovhpd %xmm1, 112(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r8) + vmovhpd %xmm1, 120(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r8) + vmovhpd %xmm1, 128(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r8) + vmovhpd %xmm1, 136(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r8) + vmovhpd %xmm1, 144(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r8) + vmovhpd %xmm1, 152(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r8) + vmovhpd %xmm1, 160(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 9920(%rsp), %rax + leaq 160(%rsp), %rdx + movq $0, %rsi + cmpq $255, %r10 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp Ljade_kem_kyber_kyber512_amd64_avx2_dec$47 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$48: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$51 + movw %di, (%rax,%r10,2) + incq %r10 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$51: + cmpq $256, %r10 + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$49 + cmpw $3329, %r9w + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$49 + movw %r9w, (%rax,%r10,2) + incq %r10 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$50: +Ljade_kem_kyber_kyber512_amd64_avx2_dec$49: + cmpq $255, %r10 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +Ljade_kem_kyber_kyber512_amd64_avx2_dec$47: + jne Ljade_kem_kyber_kyber512_amd64_avx2_dec$48 + leaq 10432(%rsp), %rax + leaq 672(%rsp), %rdx + movq $0, %rsi + cmpq $255, %r11 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp Ljade_kem_kyber_kyber512_amd64_avx2_dec$42 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$43: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$46 + movw %di, (%rax,%r11,2) + incq %r11 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$46: + cmpq $256, %r11 + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$44 + cmpw $3329, %r9w + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$44 + movw %r9w, (%rax,%r11,2) + incq %r11 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$45: +Ljade_kem_kyber_kyber512_amd64_avx2_dec$44: + cmpq $255, %r11 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +Ljade_kem_kyber_kyber512_amd64_avx2_dec$42: + jne Ljade_kem_kyber_kyber512_amd64_avx2_dec$43 + leaq 10944(%rsp), %rax + leaq 1184(%rsp), %rdx + movq $0, %rsi + cmpq $255, %rbx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp Ljade_kem_kyber_kyber512_amd64_avx2_dec$37 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$38: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$41 + movw %di, (%rax,%rbx,2) + incq %rbx +Ljade_kem_kyber_kyber512_amd64_avx2_dec$41: + cmpq $256, %rbx + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$39 + cmpw $3329, %r9w + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$39 + movw %r9w, (%rax,%rbx,2) + incq %rbx +Ljade_kem_kyber_kyber512_amd64_avx2_dec$40: +Ljade_kem_kyber_kyber512_amd64_avx2_dec$39: + cmpq $255, %rbx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +Ljade_kem_kyber_kyber512_amd64_avx2_dec$37: + jne Ljade_kem_kyber_kyber512_amd64_avx2_dec$38 + leaq 11456(%rsp), %rax + leaq 1696(%rsp), %rdx + movq $0, %rsi + cmpq $255, %rcx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp Ljade_kem_kyber_kyber512_amd64_avx2_dec$32 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$33: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$36 + movw %di, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_avx2_dec$36: + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$34 + cmpw $3329, %r9w + jnb Ljade_kem_kyber_kyber512_amd64_avx2_dec$34 + movw %r9w, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_avx2_dec$35: +Ljade_kem_kyber_kyber512_amd64_avx2_dec$34: + cmpq $255, %rcx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +Ljade_kem_kyber_kyber512_amd64_avx2_dec$32: + jne Ljade_kem_kyber_kyber512_amd64_avx2_dec$33 + cmpq $255, %r10 + setbe %al + cmpq $255, %r11 + setbe %dl + orb %dl, %al + cmpq $255, %rbx + setbe %dl + cmpq $255, %rcx + setbe %sil + orb %sil, %dl + orb %al, %dl +Ljade_kem_kyber_kyber512_amd64_avx2_dec$30: + cmpb $0, %dl + jne Ljade_kem_kyber_kyber512_amd64_avx2_dec$31 + leaq 9920(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$29: + leaq 10432(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$28: + leaq 10944(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$27: + leaq 11456(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$26: + movq 12000(%rsp), %rax + movb $0, %sil + leaq 7872(%rsp), %rdx + leaq 8384(%rsp), %rcx + leaq 6848(%rsp), %r8 + leaq 7360(%rsp), %r9 + leaq -2008(%rsp), %rsp + call L_poly_getnoise_eta1122_4x$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$25: + leaq 2008(%rsp), %rsp + movb $4, %al + movq 12000(%rsp), %rcx + leaq 2720(%rsp), %rdx + leaq -216(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$24: + leaq 216(%rsp), %rsp + leaq 7872(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$23: + leaq 8384(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$22: + leaq 8896(%rsp), %rcx + leaq 9920(%rsp), %rsi + leaq 7872(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$21: + leaq 2208(%rsp), %rcx + leaq 10432(%rsp), %rsi + leaq 8384(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$20: + leaq 8896(%rsp), %rcx + leaq 2208(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$19: + leaq 9408(%rsp), %rcx + leaq 10944(%rsp), %rsi + leaq 7872(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$18: + leaq 2208(%rsp), %rcx + leaq 11456(%rsp), %rsi + leaq 8384(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$17: + leaq 9408(%rsp), %rcx + leaq 2208(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$16: + leaq 2208(%rsp), %rcx + leaq 5824(%rsp), %rsi + leaq 7872(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$15: + leaq 3744(%rsp), %rcx + leaq 6336(%rsp), %rsi + leaq 8384(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$14: + leaq 2208(%rsp), %rcx + leaq 3744(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$13: + leaq 8896(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$12: + leaq 9408(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$11: + leaq 2208(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$10: + leaq 8896(%rsp), %rcx + leaq 6848(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$9: + leaq 9408(%rsp), %rcx + leaq 7360(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$8: + leaq 2208(%rsp), %rcx + leaq 2720(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$7: + leaq 2208(%rsp), %rcx + leaq 3232(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$6: + leaq 8896(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 9408(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 2208(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + movq 11992(%rsp), %rax + movq %rax, %rdx + leaq 8896(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$5: + leaq 9408(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$4: + leaq glob_data + 416(%rip), %rcx + vmovdqu (%rcx), %ymm0 + vpsllw $3, %ymm0, %ymm1 + vpbroadcastw glob_data + 6454(%rip), %ymm2 + vpbroadcastw glob_data + 6452(%rip), %ymm3 + vpbroadcastw glob_data + 6450(%rip), %ymm4 + vpbroadcastq glob_data + 6216(%rip), %ymm5 + vpbroadcastq glob_data + 6208(%rip), %ymm6 + vmovdqu glob_data + 32(%rip), %ymm7 + vmovdqu 8896(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, (%rdx) + vpextrd $0, %xmm8, 16(%rdx) + vmovdqu 8928(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 20(%rdx) + vpextrd $0, %xmm8, 36(%rdx) + vmovdqu 8960(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 40(%rdx) + vpextrd $0, %xmm8, 56(%rdx) + vmovdqu 8992(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 60(%rdx) + vpextrd $0, %xmm8, 76(%rdx) + vmovdqu 9024(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 80(%rdx) + vpextrd $0, %xmm8, 96(%rdx) + vmovdqu 9056(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 100(%rdx) + vpextrd $0, %xmm8, 116(%rdx) + vmovdqu 9088(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 120(%rdx) + vpextrd $0, %xmm8, 136(%rdx) + vmovdqu 9120(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 140(%rdx) + vpextrd $0, %xmm8, 156(%rdx) + vmovdqu 9152(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 160(%rdx) + vpextrd $0, %xmm8, 176(%rdx) + vmovdqu 9184(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 180(%rdx) + vpextrd $0, %xmm8, 196(%rdx) + vmovdqu 9216(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 200(%rdx) + vpextrd $0, %xmm8, 216(%rdx) + vmovdqu 9248(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 220(%rdx) + vpextrd $0, %xmm8, 236(%rdx) + vmovdqu 9280(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 240(%rdx) + vpextrd $0, %xmm8, 256(%rdx) + vmovdqu 9312(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 260(%rdx) + vpextrd $0, %xmm8, 276(%rdx) + vmovdqu 9344(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 280(%rdx) + vpextrd $0, %xmm8, 296(%rdx) + vmovdqu 9376(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 300(%rdx) + vpextrd $0, %xmm8, 316(%rdx) + vmovdqu 9408(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 320(%rdx) + vpextrd $0, %xmm8, 336(%rdx) + vmovdqu 9440(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 340(%rdx) + vpextrd $0, %xmm8, 356(%rdx) + vmovdqu 9472(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 360(%rdx) + vpextrd $0, %xmm8, 376(%rdx) + vmovdqu 9504(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 380(%rdx) + vpextrd $0, %xmm8, 396(%rdx) + vmovdqu 9536(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 400(%rdx) + vpextrd $0, %xmm8, 416(%rdx) + vmovdqu 9568(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 420(%rdx) + vpextrd $0, %xmm8, 436(%rdx) + vmovdqu 9600(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 440(%rdx) + vpextrd $0, %xmm8, 456(%rdx) + vmovdqu 9632(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 460(%rdx) + vpextrd $0, %xmm8, 476(%rdx) + vmovdqu 9664(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 480(%rdx) + vpextrd $0, %xmm8, 496(%rdx) + vmovdqu 9696(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 500(%rdx) + vpextrd $0, %xmm8, 516(%rdx) + vmovdqu 9728(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 520(%rdx) + vpextrd $0, %xmm8, 536(%rdx) + vmovdqu 9760(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 540(%rdx) + vpextrd $0, %xmm8, 556(%rdx) + vmovdqu 9792(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 560(%rdx) + vpextrd $0, %xmm8, 576(%rdx) + vmovdqu 9824(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 580(%rdx) + vpextrd $0, %xmm8, 596(%rdx) + vmovdqu 9856(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 600(%rdx) + vpextrd $0, %xmm8, 616(%rdx) + vmovdqu 9888(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm1 + vpaddw %ymm2, %ymm8, %ymm2 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm0 + vpsubw %ymm2, %ymm1, %ymm2 + vpandn %ymm2, %ymm1, %ymm1 + vpsrlw $15, %ymm1, %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vpmulhrsw %ymm3, %ymm0, %ymm0 + vpand %ymm4, %ymm0, %ymm0 + vpmaddwd %ymm5, %ymm0, %ymm0 + vpsllvd %ymm6, %ymm0, %ymm0 + vpsrlq $12, %ymm0, %ymm0 + vpshufb %ymm7, %ymm0, %ymm0 + vmovdqu %xmm0, %xmm1 + vextracti128 $1, %ymm0, %xmm0 + vpblendw $-32, %xmm0, %xmm1, %xmm1 + vmovdqu %xmm1, 620(%rdx) + vpextrd $0, %xmm0, 636(%rdx) + leaq 640(%rax), %rax + leaq 2208(%rsp), %rcx + call L_poly_compress_1$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$3: + movq 11976(%rsp), %r8 + leaq 4256(%rsp), %rax + movq $0, %rcx + movq $1, %rdx + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu (%rax), %ymm1 + vmovdqu (%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 32(%rax), %ymm1 + vmovdqu 32(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 64(%rax), %ymm1 + vmovdqu 64(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 96(%rax), %ymm1 + vmovdqu 96(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 128(%rax), %ymm1 + vmovdqu 128(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 160(%rax), %ymm1 + vmovdqu 160(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 192(%rax), %ymm1 + vmovdqu 192(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 224(%rax), %ymm1 + vmovdqu 224(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 256(%rax), %ymm1 + vmovdqu 256(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 288(%rax), %ymm1 + vmovdqu 288(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 320(%rax), %ymm1 + vmovdqu 320(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 352(%rax), %ymm1 + vmovdqu 352(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 384(%rax), %ymm1 + vmovdqu 384(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 416(%rax), %ymm1 + vmovdqu 416(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 448(%rax), %ymm1 + vmovdqu 448(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 480(%rax), %ymm1 + vmovdqu 480(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 512(%rax), %ymm1 + vmovdqu 512(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 544(%rax), %ymm1 + vmovdqu 544(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 576(%rax), %ymm1 + vmovdqu 576(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 608(%rax), %ymm1 + vmovdqu 608(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 640(%rax), %ymm1 + vmovdqu 640(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 672(%rax), %ymm1 + vmovdqu 672(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 704(%rax), %ymm1 + vmovdqu 704(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 736(%rax), %ymm1 + vmovdqu 736(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vptest %ymm0, %ymm0 + cmovne %rdx, %rcx + negq %rcx + shrq $63, %rcx + movq 11984(%rsp), %rax + addq $64, %rax + addq $1536, %rax + leaq 96(%rsp), %rdx + negq %rcx + movq %rcx, 11984(%rsp) + vpbroadcastq 11984(%rsp), %ymm0 + vmovdqu (%rdx), %ymm1 + vmovdqu (%rax), %ymm2 + vpblendvb %ymm0, %ymm2, %ymm1, %ymm0 + vmovdqu %ymm0, (%rdx) + movq $768, %rdi + leaq 128(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$2: + leaq 248(%rsp), %rsp + movq 11968(%rsp), %rdx + movq $32, %rcx + leaq 96(%rsp), %rax + leaq -248(%rsp), %rsp + call L_shake256_64$1 +Ljade_kem_kyber_kyber512_amd64_avx2_dec$1: + leaq 248(%rsp), %rsp + xorq %rax, %rax + movq 12008(%rsp), %r15 + movq 12016(%rsp), %r14 + movq 12024(%rsp), %r13 + movq 12032(%rsp), %r12 + movq 12040(%rsp), %rbp + movq 12048(%rsp), %rbx + movq 12056(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_avx2_enc: +jade_kem_kyber_kyber512_amd64_avx2_enc: + movq %rsp, %rax + leaq -88(%rsp), %rsp + andq $-32, %rsp + movq %rax, 80(%rsp) + movq %r15, 32(%rsp) + movq %r14, 40(%rsp) + movq %r13, 48(%rsp) + movq %r12, 56(%rsp) + movq %rbp, 64(%rsp) + movq %rbx, 72(%rsp) + movq %rdi, %rbx + movq %rsi, %r12 + movq %rdx, %rbp + movq %rsp, %rdi + movq $32, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rcx + leaq -11256(%rsp), %rsp + call L__crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_avx2_enc$1: + leaq 11256(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r15 + movq 40(%rsp), %r14 + movq 48(%rsp), %r13 + movq 56(%rsp), %r12 + movq 64(%rsp), %rbp + movq 72(%rsp), %rbx + movq 80(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_avx2_enc_derand: +jade_kem_kyber_kyber512_amd64_avx2_enc_derand: + movq %rsp, %rax + leaq -88(%rsp), %rsp + andq $-32, %rsp + movq %rax, 80(%rsp) + movq %r15, 32(%rsp) + movq %r14, 40(%rsp) + movq %r13, 48(%rsp) + movq %r12, 56(%rsp) + movq %rbp, 64(%rsp) + movq %rbx, 72(%rsp) + movq %rdi, %rbx + movq %rsi, %r12 + movq %rdx, %rbp + movq %rsp, %rax + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %cl + movb %cl, 31(%rax) + movq %rsp, %rcx + leaq -11256(%rsp), %rsp + call L__crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_avx2_enc_derand$1: + leaq 11256(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r15 + movq 40(%rsp), %r14 + movq 48(%rsp), %r13 + movq 56(%rsp), %r12 + movq 64(%rsp), %rbp + movq 72(%rsp), %rbx + movq 80(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_avx2_keypair: +jade_kem_kyber_kyber512_amd64_avx2_keypair: + movq %rsp, %rax + leaq -120(%rsp), %rsp + andq $-32, %rsp + movq %rax, 112(%rsp) + movq %r15, 64(%rsp) + movq %r14, 72(%rsp) + movq %r13, 80(%rsp) + movq %r12, 88(%rsp) + movq %rbp, 96(%rsp) + movq %rbx, 104(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rdi + movq $64, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rax + leaq -8696(%rsp), %rsp + call L__crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_avx2_keypair$1: + leaq 8696(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r15 + movq 72(%rsp), %r14 + movq 80(%rsp), %r13 + movq 88(%rsp), %r12 + movq 96(%rsp), %rbp + movq 104(%rsp), %rbx + movq 112(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_avx2_keypair_derand: +jade_kem_kyber_kyber512_amd64_avx2_keypair_derand: + movq %rsp, %rax + leaq -120(%rsp), %rsp + andq $-32, %rsp + movq %rax, 112(%rsp) + movq %r15, 64(%rsp) + movq %r14, 72(%rsp) + movq %r13, 80(%rsp) + movq %r12, 88(%rsp) + movq %rbp, 96(%rsp) + movq %rbx, 104(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rax + movb (%rdx), %cl + movb %cl, (%rax) + movb 1(%rdx), %cl + movb %cl, 1(%rax) + movb 2(%rdx), %cl + movb %cl, 2(%rax) + movb 3(%rdx), %cl + movb %cl, 3(%rax) + movb 4(%rdx), %cl + movb %cl, 4(%rax) + movb 5(%rdx), %cl + movb %cl, 5(%rax) + movb 6(%rdx), %cl + movb %cl, 6(%rax) + movb 7(%rdx), %cl + movb %cl, 7(%rax) + movb 8(%rdx), %cl + movb %cl, 8(%rax) + movb 9(%rdx), %cl + movb %cl, 9(%rax) + movb 10(%rdx), %cl + movb %cl, 10(%rax) + movb 11(%rdx), %cl + movb %cl, 11(%rax) + movb 12(%rdx), %cl + movb %cl, 12(%rax) + movb 13(%rdx), %cl + movb %cl, 13(%rax) + movb 14(%rdx), %cl + movb %cl, 14(%rax) + movb 15(%rdx), %cl + movb %cl, 15(%rax) + movb 16(%rdx), %cl + movb %cl, 16(%rax) + movb 17(%rdx), %cl + movb %cl, 17(%rax) + movb 18(%rdx), %cl + movb %cl, 18(%rax) + movb 19(%rdx), %cl + movb %cl, 19(%rax) + movb 20(%rdx), %cl + movb %cl, 20(%rax) + movb 21(%rdx), %cl + movb %cl, 21(%rax) + movb 22(%rdx), %cl + movb %cl, 22(%rax) + movb 23(%rdx), %cl + movb %cl, 23(%rax) + movb 24(%rdx), %cl + movb %cl, 24(%rax) + movb 25(%rdx), %cl + movb %cl, 25(%rax) + movb 26(%rdx), %cl + movb %cl, 26(%rax) + movb 27(%rdx), %cl + movb %cl, 27(%rax) + movb 28(%rdx), %cl + movb %cl, 28(%rax) + movb 29(%rdx), %cl + movb %cl, 29(%rax) + movb 30(%rdx), %cl + movb %cl, 30(%rax) + movb 31(%rdx), %cl + movb %cl, 31(%rax) + movb 32(%rdx), %cl + movb %cl, 32(%rax) + movb 33(%rdx), %cl + movb %cl, 33(%rax) + movb 34(%rdx), %cl + movb %cl, 34(%rax) + movb 35(%rdx), %cl + movb %cl, 35(%rax) + movb 36(%rdx), %cl + movb %cl, 36(%rax) + movb 37(%rdx), %cl + movb %cl, 37(%rax) + movb 38(%rdx), %cl + movb %cl, 38(%rax) + movb 39(%rdx), %cl + movb %cl, 39(%rax) + movb 40(%rdx), %cl + movb %cl, 40(%rax) + movb 41(%rdx), %cl + movb %cl, 41(%rax) + movb 42(%rdx), %cl + movb %cl, 42(%rax) + movb 43(%rdx), %cl + movb %cl, 43(%rax) + movb 44(%rdx), %cl + movb %cl, 44(%rax) + movb 45(%rdx), %cl + movb %cl, 45(%rax) + movb 46(%rdx), %cl + movb %cl, 46(%rax) + movb 47(%rdx), %cl + movb %cl, 47(%rax) + movb 48(%rdx), %cl + movb %cl, 48(%rax) + movb 49(%rdx), %cl + movb %cl, 49(%rax) + movb 50(%rdx), %cl + movb %cl, 50(%rax) + movb 51(%rdx), %cl + movb %cl, 51(%rax) + movb 52(%rdx), %cl + movb %cl, 52(%rax) + movb 53(%rdx), %cl + movb %cl, 53(%rax) + movb 54(%rdx), %cl + movb %cl, 54(%rax) + movb 55(%rdx), %cl + movb %cl, 55(%rax) + movb 56(%rdx), %cl + movb %cl, 56(%rax) + movb 57(%rdx), %cl + movb %cl, 57(%rax) + movb 58(%rdx), %cl + movb %cl, 58(%rax) + movb 59(%rdx), %cl + movb %cl, 59(%rax) + movb 60(%rdx), %cl + movb %cl, 60(%rax) + movb 61(%rdx), %cl + movb %cl, 61(%rax) + movb 62(%rdx), %cl + movb %cl, 62(%rax) + movb 63(%rdx), %cl + movb %cl, 63(%rax) + movq %rsp, %rax + leaq -8696(%rsp), %rsp + call L__crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_avx2_keypair_derand$1: + leaq 8696(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r15 + movq 72(%rsp), %r14 + movq 80(%rsp), %r13 + movq 88(%rsp), %r12 + movq 96(%rsp), %rbp + movq 104(%rsp), %rbx + movq 112(%rsp), %rsp + ret +L__crypto_kem_enc_derand_jazz$1: + movq %rbp, 11232(%rsp) + movq %rbx, 11240(%rsp) + movq %r12, 11248(%rsp) + leaq 64(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256_32$1 +L__crypto_kem_enc_derand_jazz$69: + leaq 248(%rsp), %rsp + movq 11232(%rsp), %r8 + movq $800, %rdi + leaq 96(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_enc_derand_jazz$68: + leaq 248(%rsp), %rsp + leaq 128(%rsp), %rax + leaq 64(%rsp), %rcx + leaq -248(%rsp), %rsp + call L_sha3_512_64$1 +L__crypto_kem_enc_derand_jazz$67: + leaq 248(%rsp), %rsp + movq 11232(%rsp), %rax + leaq 64(%rsp), %rdi + leaq 160(%rsp), %rcx + movq %rax, %rsi + leaq 5088(%rsp), %r8 + call L_poly_frombytes$1 +L__crypto_kem_enc_derand_jazz$66: + addq $384, %rsi + leaq 5600(%rsp), %r8 + call L_poly_frombytes$1 +L__crypto_kem_enc_derand_jazz$65: + movq $0, %rdx + addq $768, %rax + jmp L__crypto_kem_enc_derand_jazz$63 +L__crypto_kem_enc_derand_jazz$64: + movq (%rax), %rsi + movq %rsi, 32(%rsp,%rdx,8) + addq $8, %rax + incq %rdx +L__crypto_kem_enc_derand_jazz$63: + cmpq $4, %rdx + jb L__crypto_kem_enc_derand_jazz$64 + leaq 2240(%rsp), %rax + call L_poly_frommsg_1$1 +L__crypto_kem_enc_derand_jazz$62: + movq %rcx, 11232(%rsp) + vmovdqu 32(%rsp), %ymm0 + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 704(%rsp) + vmovdqu %ymm0, 1216(%rsp) + vmovdqu %ymm0, 1728(%rsp) + movb $0, 224(%rsp) + movb $0, 225(%rsp) + movb $0, 736(%rsp) + movb $1, 737(%rsp) + movb $1, 1248(%rsp) + movb $0, 1249(%rsp) + movb $1, 1760(%rsp) + movb $1, 1761(%rsp) + leaq 4288(%rsp), %rax + leaq 192(%rsp), %rcx + leaq 704(%rsp), %rdx + leaq 1216(%rsp), %rsi + leaq 1728(%rsp), %rdi + call L_shake128_absorb4x_34$1 +L__crypto_kem_enc_derand_jazz$61: + leaq 4288(%rsp), %rax + leaq 192(%rsp), %rcx + leaq 704(%rsp), %r8 + leaq 1216(%rsp), %r9 + leaq 1728(%rsp), %r10 + movq %rcx, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$60: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rcx), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$59: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rcx), %rcx + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$58: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rcx) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rcx) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rcx) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rcx) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rcx) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rcx) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rcx) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rcx) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rcx) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rcx) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rcx) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rcx) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rcx) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rcx) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rcx) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rcx) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rcx) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rcx) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rcx) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rcx) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rcx) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 9184(%rsp), %rbp + leaq 192(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$57: + movq %rcx, %r10 + leaq 9696(%rsp), %rbp + leaq 704(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$56: + movq %rcx, %r11 + leaq 10208(%rsp), %rbp + leaq 1216(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$55: + movq %rcx, %rbx + leaq 10720(%rsp), %rbp + leaq 1728(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$54: + cmpq $255, %r10 + setbe %al + cmpq $255, %r11 + setbe %dl + orb %dl, %al + cmpq $255, %rbx + setbe %dl + cmpq $255, %rcx + setbe %sil + orb %sil, %dl + orb %al, %dl + jmp L__crypto_kem_enc_derand_jazz$31 +L__crypto_kem_enc_derand_jazz$32: + leaq 4288(%rsp), %rax + leaq 192(%rsp), %r8 + leaq 704(%rsp), %r9 + leaq 1216(%rsp), %rbp + leaq 1728(%rsp), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$53: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r8) + vmovhpd %xmm1, (%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r8) + vmovhpd %xmm1, 8(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r8) + vmovhpd %xmm1, 16(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r8) + vmovhpd %xmm1, 24(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r8) + vmovhpd %xmm1, 32(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r8) + vmovhpd %xmm1, 40(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r8) + vmovhpd %xmm1, 48(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r8) + vmovhpd %xmm1, 56(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r8) + vmovhpd %xmm1, 64(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r8) + vmovhpd %xmm1, 72(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r8) + vmovhpd %xmm1, 80(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r8) + vmovhpd %xmm1, 88(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r8) + vmovhpd %xmm1, 96(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r8) + vmovhpd %xmm1, 104(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r8) + vmovhpd %xmm1, 112(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r8) + vmovhpd %xmm1, 120(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r8) + vmovhpd %xmm1, 128(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r8) + vmovhpd %xmm1, 136(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r8) + vmovhpd %xmm1, 144(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r8) + vmovhpd %xmm1, 152(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r8) + vmovhpd %xmm1, 160(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 9184(%rsp), %rax + leaq 192(%rsp), %rdx + movq $0, %rsi + cmpq $255, %r10 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_enc_derand_jazz$48 +L__crypto_kem_enc_derand_jazz$49: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$52 + movw %di, (%rax,%r10,2) + incq %r10 +L__crypto_kem_enc_derand_jazz$52: + cmpq $256, %r10 + jnb L__crypto_kem_enc_derand_jazz$50 + cmpw $3329, %r9w + jnb L__crypto_kem_enc_derand_jazz$50 + movw %r9w, (%rax,%r10,2) + incq %r10 +L__crypto_kem_enc_derand_jazz$51: +L__crypto_kem_enc_derand_jazz$50: + cmpq $255, %r10 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_enc_derand_jazz$48: + jne L__crypto_kem_enc_derand_jazz$49 + leaq 9696(%rsp), %rax + leaq 704(%rsp), %rdx + movq $0, %rsi + cmpq $255, %r11 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_enc_derand_jazz$43 +L__crypto_kem_enc_derand_jazz$44: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$47 + movw %di, (%rax,%r11,2) + incq %r11 +L__crypto_kem_enc_derand_jazz$47: + cmpq $256, %r11 + jnb L__crypto_kem_enc_derand_jazz$45 + cmpw $3329, %r9w + jnb L__crypto_kem_enc_derand_jazz$45 + movw %r9w, (%rax,%r11,2) + incq %r11 +L__crypto_kem_enc_derand_jazz$46: +L__crypto_kem_enc_derand_jazz$45: + cmpq $255, %r11 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_enc_derand_jazz$43: + jne L__crypto_kem_enc_derand_jazz$44 + leaq 10208(%rsp), %rax + leaq 1216(%rsp), %rdx + movq $0, %rsi + cmpq $255, %rbx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_enc_derand_jazz$38 +L__crypto_kem_enc_derand_jazz$39: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$42 + movw %di, (%rax,%rbx,2) + incq %rbx +L__crypto_kem_enc_derand_jazz$42: + cmpq $256, %rbx + jnb L__crypto_kem_enc_derand_jazz$40 + cmpw $3329, %r9w + jnb L__crypto_kem_enc_derand_jazz$40 + movw %r9w, (%rax,%rbx,2) + incq %rbx +L__crypto_kem_enc_derand_jazz$41: +L__crypto_kem_enc_derand_jazz$40: + cmpq $255, %rbx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_enc_derand_jazz$38: + jne L__crypto_kem_enc_derand_jazz$39 + leaq 10720(%rsp), %rax + leaq 1728(%rsp), %rdx + movq $0, %rsi + cmpq $255, %rcx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_enc_derand_jazz$33 +L__crypto_kem_enc_derand_jazz$34: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$37 + movw %di, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$37: + cmpq $256, %rcx + jnb L__crypto_kem_enc_derand_jazz$35 + cmpw $3329, %r9w + jnb L__crypto_kem_enc_derand_jazz$35 + movw %r9w, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$36: +L__crypto_kem_enc_derand_jazz$35: + cmpq $255, %rcx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_enc_derand_jazz$33: + jne L__crypto_kem_enc_derand_jazz$34 + cmpq $255, %r10 + setbe %al + cmpq $255, %r11 + setbe %dl + orb %dl, %al + cmpq $255, %rbx + setbe %dl + cmpq $255, %rcx + setbe %sil + orb %sil, %dl + orb %al, %dl +L__crypto_kem_enc_derand_jazz$31: + cmpb $0, %dl + jne L__crypto_kem_enc_derand_jazz$32 + leaq 9184(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$30: + leaq 9696(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$29: + leaq 10208(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$28: + leaq 10720(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$27: + movq 11232(%rsp), %rax + movb $0, %sil + leaq 7136(%rsp), %rdx + leaq 7648(%rsp), %rcx + leaq 6112(%rsp), %r8 + leaq 6624(%rsp), %r9 + leaq -2008(%rsp), %rsp + call L_poly_getnoise_eta1122_4x$1 +L__crypto_kem_enc_derand_jazz$26: + leaq 2008(%rsp), %rsp + movb $4, %al + movq 11232(%rsp), %rcx + leaq 2752(%rsp), %rdx + leaq -216(%rsp), %rsp + call L_poly_getnoise$1 +L__crypto_kem_enc_derand_jazz$25: + leaq 216(%rsp), %rsp + leaq 7136(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_enc_derand_jazz$24: + leaq 7648(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_enc_derand_jazz$23: + leaq 8160(%rsp), %rcx + leaq 9184(%rsp), %rsi + leaq 7136(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$22: + leaq 3264(%rsp), %rcx + leaq 9696(%rsp), %rsi + leaq 7648(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$21: + leaq 8160(%rsp), %rcx + leaq 3264(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$20: + leaq 8672(%rsp), %rcx + leaq 10208(%rsp), %rsi + leaq 7136(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$19: + leaq 3264(%rsp), %rcx + leaq 10720(%rsp), %rsi + leaq 7648(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$18: + leaq 8672(%rsp), %rcx + leaq 3264(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$17: + leaq 3264(%rsp), %rcx + leaq 5088(%rsp), %rsi + leaq 7136(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$16: + leaq 3776(%rsp), %rcx + leaq 5600(%rsp), %rsi + leaq 7648(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$15: + leaq 3264(%rsp), %rcx + leaq 3776(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$14: + leaq 8160(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$13: + leaq 8672(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$12: + leaq 3264(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$11: + leaq 8160(%rsp), %rcx + leaq 6112(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$10: + leaq 8672(%rsp), %rcx + leaq 6624(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$9: + leaq 3264(%rsp), %rcx + leaq 2752(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$8: + leaq 3264(%rsp), %rcx + leaq 2240(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$7: + leaq 8160(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 8672(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 3264(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + movq 11240(%rsp), %rax + leaq 8160(%rsp), %rcx + call L_poly_csubq$1 +L__crypto_kem_enc_derand_jazz$6: + leaq 8672(%rsp), %rcx + call L_poly_csubq$1 +L__crypto_kem_enc_derand_jazz$5: + leaq glob_data + 416(%rip), %rcx + vmovdqu (%rcx), %ymm0 + vpsllw $3, %ymm0, %ymm1 + vpbroadcastw glob_data + 6454(%rip), %ymm2 + vpbroadcastw glob_data + 6452(%rip), %ymm3 + vpbroadcastw glob_data + 6450(%rip), %ymm4 + vpbroadcastq glob_data + 6216(%rip), %ymm5 + vpbroadcastq glob_data + 6208(%rip), %ymm6 + vmovdqu glob_data + 32(%rip), %ymm7 + vmovdqu 8160(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, (%rax) + vpextrd $0, %xmm8, 16(%rax) + vmovdqu 8192(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 20(%rax) + vpextrd $0, %xmm8, 36(%rax) + vmovdqu 8224(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 40(%rax) + vpextrd $0, %xmm8, 56(%rax) + vmovdqu 8256(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 60(%rax) + vpextrd $0, %xmm8, 76(%rax) + vmovdqu 8288(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 80(%rax) + vpextrd $0, %xmm8, 96(%rax) + vmovdqu 8320(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 100(%rax) + vpextrd $0, %xmm8, 116(%rax) + vmovdqu 8352(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 120(%rax) + vpextrd $0, %xmm8, 136(%rax) + vmovdqu 8384(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 140(%rax) + vpextrd $0, %xmm8, 156(%rax) + vmovdqu 8416(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 160(%rax) + vpextrd $0, %xmm8, 176(%rax) + vmovdqu 8448(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 180(%rax) + vpextrd $0, %xmm8, 196(%rax) + vmovdqu 8480(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 200(%rax) + vpextrd $0, %xmm8, 216(%rax) + vmovdqu 8512(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 220(%rax) + vpextrd $0, %xmm8, 236(%rax) + vmovdqu 8544(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 240(%rax) + vpextrd $0, %xmm8, 256(%rax) + vmovdqu 8576(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 260(%rax) + vpextrd $0, %xmm8, 276(%rax) + vmovdqu 8608(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 280(%rax) + vpextrd $0, %xmm8, 296(%rax) + vmovdqu 8640(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 300(%rax) + vpextrd $0, %xmm8, 316(%rax) + vmovdqu 8672(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 320(%rax) + vpextrd $0, %xmm8, 336(%rax) + vmovdqu 8704(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 340(%rax) + vpextrd $0, %xmm8, 356(%rax) + vmovdqu 8736(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 360(%rax) + vpextrd $0, %xmm8, 376(%rax) + vmovdqu 8768(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 380(%rax) + vpextrd $0, %xmm8, 396(%rax) + vmovdqu 8800(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 400(%rax) + vpextrd $0, %xmm8, 416(%rax) + vmovdqu 8832(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 420(%rax) + vpextrd $0, %xmm8, 436(%rax) + vmovdqu 8864(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 440(%rax) + vpextrd $0, %xmm8, 456(%rax) + vmovdqu 8896(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 460(%rax) + vpextrd $0, %xmm8, 476(%rax) + vmovdqu 8928(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 480(%rax) + vpextrd $0, %xmm8, 496(%rax) + vmovdqu 8960(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 500(%rax) + vpextrd $0, %xmm8, 516(%rax) + vmovdqu 8992(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 520(%rax) + vpextrd $0, %xmm8, 536(%rax) + vmovdqu 9024(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 540(%rax) + vpextrd $0, %xmm8, 556(%rax) + vmovdqu 9056(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 560(%rax) + vpextrd $0, %xmm8, 576(%rax) + vmovdqu 9088(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 580(%rax) + vpextrd $0, %xmm8, 596(%rax) + vmovdqu 9120(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 600(%rax) + vpextrd $0, %xmm8, 616(%rax) + vmovdqu 9152(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm1 + vpaddw %ymm2, %ymm8, %ymm2 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm0 + vpsubw %ymm2, %ymm1, %ymm2 + vpandn %ymm2, %ymm1, %ymm1 + vpsrlw $15, %ymm1, %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vpmulhrsw %ymm3, %ymm0, %ymm0 + vpand %ymm4, %ymm0, %ymm0 + vpmaddwd %ymm5, %ymm0, %ymm0 + vpsllvd %ymm6, %ymm0, %ymm0 + vpsrlq $12, %ymm0, %ymm0 + vpshufb %ymm7, %ymm0, %ymm0 + vmovdqu %xmm0, %xmm1 + vextracti128 $1, %ymm0, %xmm0 + vpblendw $-32, %xmm0, %xmm1, %xmm1 + vmovdqu %xmm1, 620(%rax) + vpextrd $0, %xmm0, 636(%rax) + addq $640, %rax + leaq 3264(%rsp), %rcx + call L_poly_compress$1 +L__crypto_kem_enc_derand_jazz$4: + movq 11240(%rsp), %r8 + movq $768, %rdi + leaq 160(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_enc_derand_jazz$3: + leaq 248(%rsp), %rsp + movq 11248(%rsp), %rdx + movq $32, %rcx + leaq 128(%rsp), %rax + leaq -248(%rsp), %rsp + call L_shake256_64$1 +L__crypto_kem_enc_derand_jazz$2: + leaq 248(%rsp), %rsp + ret +L__crypto_kem_keypair_derand_jazz$1: + movq %rax, 8576(%rsp) + movq %rbx, 8584(%rsp) + movq %rbp, 8592(%rsp) + movq %rax, %rcx + movq %rbx, 8600(%rsp) + movq %rbp, 8608(%rsp) + leaq 8616(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_512_32$1 +L__crypto_kem_keypair_derand_jazz$57: + leaq 248(%rsp), %rsp + movq 8616(%rsp), %rax + movq %rax, 64(%rsp) + movq 8648(%rsp), %rax + movq %rax, 32(%rsp) + movq 8624(%rsp), %rax + movq %rax, 72(%rsp) + movq 8656(%rsp), %rax + movq %rax, 40(%rsp) + movq 8632(%rsp), %rax + movq %rax, 80(%rsp) + movq 8664(%rsp), %rax + movq %rax, 48(%rsp) + movq 8640(%rsp), %rax + movq %rax, 88(%rsp) + movq 8672(%rsp), %rax + movq %rax, 56(%rsp) + vmovdqu 64(%rsp), %ymm0 + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 608(%rsp) + vmovdqu %ymm0, 1120(%rsp) + vmovdqu %ymm0, 1632(%rsp) + movb $0, 128(%rsp) + movb $0, 129(%rsp) + movb $1, 640(%rsp) + movb $0, 641(%rsp) + movb $0, 1152(%rsp) + movb $1, 1153(%rsp) + movb $1, 1664(%rsp) + movb $1, 1665(%rsp) + leaq 2656(%rsp), %rax + leaq 96(%rsp), %rcx + leaq 608(%rsp), %rdx + leaq 1120(%rsp), %rsi + leaq 1632(%rsp), %rdi + call L_shake128_absorb4x_34$1 +L__crypto_kem_keypair_derand_jazz$56: + leaq 2656(%rsp), %rax + leaq 96(%rsp), %rcx + leaq 608(%rsp), %r8 + leaq 1120(%rsp), %r9 + leaq 1632(%rsp), %r10 + movq %rcx, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$55: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rcx), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$54: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rcx), %rcx + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$53: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rcx) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rcx) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rcx) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rcx) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rcx) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rcx) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rcx) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rcx) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rcx) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rcx) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rcx) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rcx) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rcx) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rcx) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rcx) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rcx) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rcx) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rcx) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rcx) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rcx) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rcx) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 6528(%rsp), %rbp + leaq 96(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$52: + movq %rcx, %r10 + leaq 7040(%rsp), %rbp + leaq 608(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$51: + movq %rcx, %r11 + leaq 7552(%rsp), %rbp + leaq 1120(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$50: + movq %rcx, %rbx + leaq 8064(%rsp), %rbp + leaq 1632(%rsp), %r12 + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$49: + cmpq $255, %r10 + setbe %al + cmpq $255, %r11 + setbe %dl + orb %dl, %al + cmpq $255, %rbx + setbe %dl + cmpq $255, %rcx + setbe %sil + orb %sil, %dl + orb %al, %dl + jmp L__crypto_kem_keypair_derand_jazz$26 +L__crypto_kem_keypair_derand_jazz$27: + leaq 2656(%rsp), %rax + leaq 96(%rsp), %r8 + leaq 608(%rsp), %r9 + leaq 1120(%rsp), %rbp + leaq 1632(%rsp), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$48: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r8) + vmovhpd %xmm1, (%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r8) + vmovhpd %xmm1, 8(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r8) + vmovhpd %xmm1, 16(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r8) + vmovhpd %xmm1, 24(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r8) + vmovhpd %xmm1, 32(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r8) + vmovhpd %xmm1, 40(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r8) + vmovhpd %xmm1, 48(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r8) + vmovhpd %xmm1, 56(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r8) + vmovhpd %xmm1, 64(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r8) + vmovhpd %xmm1, 72(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r8) + vmovhpd %xmm1, 80(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r8) + vmovhpd %xmm1, 88(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r8) + vmovhpd %xmm1, 96(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r8) + vmovhpd %xmm1, 104(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r8) + vmovhpd %xmm1, 112(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r8) + vmovhpd %xmm1, 120(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r8) + vmovhpd %xmm1, 128(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r8) + vmovhpd %xmm1, 136(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r8) + vmovhpd %xmm1, 144(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r8) + vmovhpd %xmm1, 152(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r8) + vmovhpd %xmm1, 160(%r9) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 6528(%rsp), %rax + leaq 96(%rsp), %rdx + movq $0, %rsi + cmpq $255, %r10 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_keypair_derand_jazz$43 +L__crypto_kem_keypair_derand_jazz$44: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$47 + movw %di, (%rax,%r10,2) + incq %r10 +L__crypto_kem_keypair_derand_jazz$47: + cmpq $256, %r10 + jnb L__crypto_kem_keypair_derand_jazz$45 + cmpw $3329, %r9w + jnb L__crypto_kem_keypair_derand_jazz$45 + movw %r9w, (%rax,%r10,2) + incq %r10 +L__crypto_kem_keypair_derand_jazz$46: +L__crypto_kem_keypair_derand_jazz$45: + cmpq $255, %r10 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_keypair_derand_jazz$43: + jne L__crypto_kem_keypair_derand_jazz$44 + leaq 7040(%rsp), %rax + leaq 608(%rsp), %rdx + movq $0, %rsi + cmpq $255, %r11 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_keypair_derand_jazz$38 +L__crypto_kem_keypair_derand_jazz$39: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$42 + movw %di, (%rax,%r11,2) + incq %r11 +L__crypto_kem_keypair_derand_jazz$42: + cmpq $256, %r11 + jnb L__crypto_kem_keypair_derand_jazz$40 + cmpw $3329, %r9w + jnb L__crypto_kem_keypair_derand_jazz$40 + movw %r9w, (%rax,%r11,2) + incq %r11 +L__crypto_kem_keypair_derand_jazz$41: +L__crypto_kem_keypair_derand_jazz$40: + cmpq $255, %r11 + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_keypair_derand_jazz$38: + jne L__crypto_kem_keypair_derand_jazz$39 + leaq 7552(%rsp), %rax + leaq 1120(%rsp), %rdx + movq $0, %rsi + cmpq $255, %rbx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_keypair_derand_jazz$33 +L__crypto_kem_keypair_derand_jazz$34: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$37 + movw %di, (%rax,%rbx,2) + incq %rbx +L__crypto_kem_keypair_derand_jazz$37: + cmpq $256, %rbx + jnb L__crypto_kem_keypair_derand_jazz$35 + cmpw $3329, %r9w + jnb L__crypto_kem_keypair_derand_jazz$35 + movw %r9w, (%rax,%rbx,2) + incq %rbx +L__crypto_kem_keypair_derand_jazz$36: +L__crypto_kem_keypair_derand_jazz$35: + cmpq $255, %rbx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_keypair_derand_jazz$33: + jne L__crypto_kem_keypair_derand_jazz$34 + leaq 8064(%rsp), %rax + leaq 1632(%rsp), %rdx + movq $0, %rsi + cmpq $255, %rcx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil + jmp L__crypto_kem_keypair_derand_jazz$28 +L__crypto_kem_keypair_derand_jazz$29: + movzbw (%rdx,%rsi), %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + movw %r8w, %r9w + shrw $4, %r9w + andw $15, %r8w + shlw $8, %r8w + orw %r8w, %di + incq %rsi + movzbw (%rdx,%rsi), %r8w + shlw $4, %r8w + orw %r8w, %r9w + incq %rsi + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$32 + movw %di, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_keypair_derand_jazz$32: + cmpq $256, %rcx + jnb L__crypto_kem_keypair_derand_jazz$30 + cmpw $3329, %r9w + jnb L__crypto_kem_keypair_derand_jazz$30 + movw %r9w, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_keypair_derand_jazz$31: +L__crypto_kem_keypair_derand_jazz$30: + cmpq $255, %rcx + setbe %dil + cmpq $165, %rsi + setbe %r8b + testb %r8b, %dil +L__crypto_kem_keypair_derand_jazz$28: + jne L__crypto_kem_keypair_derand_jazz$29 + cmpq $255, %r10 + setbe %al + cmpq $255, %r11 + setbe %dl + orb %dl, %al + cmpq $255, %rbx + setbe %dl + cmpq $255, %rcx + setbe %sil + orb %sil, %dl + orb %al, %dl +L__crypto_kem_keypair_derand_jazz$26: + cmpb $0, %dl + jne L__crypto_kem_keypair_derand_jazz$27 + leaq 6528(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$25: + leaq 7040(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$24: + leaq 7552(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$23: + leaq 8064(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$22: + movb $0, %sil + leaq 4480(%rsp), %rax + leaq 4992(%rsp), %rcx + leaq 3456(%rsp), %r8 + leaq 3968(%rsp), %r9 + leaq 32(%rsp), %rdx + leaq -2008(%rsp), %rsp + call L_poly_getnoise_eta1_4x$1 +L__crypto_kem_keypair_derand_jazz$21: + leaq 2008(%rsp), %rsp + leaq 4480(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$20: + leaq 4992(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$19: + leaq 3456(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$18: + leaq 3968(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$17: + leaq 5504(%rsp), %rcx + leaq 6528(%rsp), %rsi + leaq 4480(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$16: + leaq 2144(%rsp), %rcx + leaq 7040(%rsp), %rsi + leaq 4992(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$15: + leaq 5504(%rsp), %rcx + leaq 2144(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$14: + leaq 5504(%rsp), %rax + call L_poly_frommont$1 +L__crypto_kem_keypair_derand_jazz$13: + leaq 6016(%rsp), %rcx + leaq 7552(%rsp), %rsi + leaq 4480(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$12: + leaq 2144(%rsp), %rcx + leaq 8064(%rsp), %rsi + leaq 4992(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$11: + leaq 6016(%rsp), %rcx + leaq 2144(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$10: + leaq 6016(%rsp), %rax + call L_poly_frommont$1 +L__crypto_kem_keypair_derand_jazz$9: + leaq 5504(%rsp), %rcx + leaq 3456(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$8: + leaq 6016(%rsp), %rcx + leaq 3968(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$7: + leaq 5504(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 6016(%rsp), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + movq 8600(%rsp), %rax + movq 8608(%rsp), %rcx + leaq 4480(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$6: + addq $384, %rcx + leaq 4992(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$5: + movq %rax, %rcx + leaq 5504(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$4: + addq $384, %rcx + leaq 6016(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$3: + addq $768, %rax + movq 64(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 72(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 80(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 88(%rsp), %rcx + movq %rcx, (%rax) + movq 8592(%rsp), %rax + addq $768, %rax + movq 8584(%rsp), %rcx + movq (%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 8(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 16(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 24(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 32(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 40(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 48(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 56(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 64(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 72(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 80(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 88(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 96(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 104(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 112(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 120(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 128(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 136(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 144(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 152(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 160(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 168(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 176(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 184(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 192(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 200(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 208(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 216(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 224(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 232(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 240(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 248(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 256(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 264(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 272(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 280(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 288(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 296(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 304(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 312(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 320(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 328(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 336(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 344(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 352(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 360(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 368(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 376(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 384(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 392(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 400(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 408(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 416(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 424(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 432(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 440(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 448(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 456(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 464(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 472(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 480(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 488(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 496(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 504(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 512(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 520(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 528(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 536(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 544(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 552(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 560(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 568(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 576(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 584(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 592(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 600(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 608(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 616(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 624(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 632(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 640(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 648(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 656(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 664(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 672(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 680(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 688(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 696(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 704(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 712(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 720(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 728(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 736(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 744(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 752(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 760(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 768(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 776(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 784(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 792(%rcx), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq %rax, 8592(%rsp) + movq 8584(%rsp), %r8 + movq $800, %rdi + leaq 64(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_keypair_derand_jazz$2: + leaq 248(%rsp), %rsp + movq 8592(%rsp), %rax + movq 8576(%rsp), %rcx + leaq 64(%rsp), %rdx + movb (%rdx), %sil + movb %sil, (%rax) + movb 1(%rdx), %sil + movb %sil, 1(%rax) + movb 2(%rdx), %sil + movb %sil, 2(%rax) + movb 3(%rdx), %sil + movb %sil, 3(%rax) + movb 4(%rdx), %sil + movb %sil, 4(%rax) + movb 5(%rdx), %sil + movb %sil, 5(%rax) + movb 6(%rdx), %sil + movb %sil, 6(%rax) + movb 7(%rdx), %sil + movb %sil, 7(%rax) + movb 8(%rdx), %sil + movb %sil, 8(%rax) + movb 9(%rdx), %sil + movb %sil, 9(%rax) + movb 10(%rdx), %sil + movb %sil, 10(%rax) + movb 11(%rdx), %sil + movb %sil, 11(%rax) + movb 12(%rdx), %sil + movb %sil, 12(%rax) + movb 13(%rdx), %sil + movb %sil, 13(%rax) + movb 14(%rdx), %sil + movb %sil, 14(%rax) + movb 15(%rdx), %sil + movb %sil, 15(%rax) + movb 16(%rdx), %sil + movb %sil, 16(%rax) + movb 17(%rdx), %sil + movb %sil, 17(%rax) + movb 18(%rdx), %sil + movb %sil, 18(%rax) + movb 19(%rdx), %sil + movb %sil, 19(%rax) + movb 20(%rdx), %sil + movb %sil, 20(%rax) + movb 21(%rdx), %sil + movb %sil, 21(%rax) + movb 22(%rdx), %sil + movb %sil, 22(%rax) + movb 23(%rdx), %sil + movb %sil, 23(%rax) + movb 24(%rdx), %sil + movb %sil, 24(%rax) + movb 25(%rdx), %sil + movb %sil, 25(%rax) + movb 26(%rdx), %sil + movb %sil, 26(%rax) + movb 27(%rdx), %sil + movb %sil, 27(%rax) + movb 28(%rdx), %sil + movb %sil, 28(%rax) + movb 29(%rdx), %sil + movb %sil, 29(%rax) + movb 30(%rdx), %sil + movb %sil, 30(%rax) + movb 31(%rdx), %dl + movb %dl, 31(%rax) + addq $32, %rax + leaq 32(%rcx), %rcx + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %cl + movb %cl, 31(%rax) + ret +L_rej_uniform_avx$1: + leaq glob_data + 4160(%rip), %rax + vmovdqu glob_data + 480(%rip), %ymm0 + movq $0, %rcx + movq $0, %rdx + vpbroadcastb glob_data + 6462(%rip), %ymm1 + vpbroadcastw glob_data + 6448(%rip), %ymm2 + vmovdqu glob_data + 0(%rip), %ymm3 + cmpq $224, %rcx + setbe %sil + cmpq $448, %rdx + setbe %dil + testb %dil, %sil + jmp L_rej_uniform_avx$9 +L_rej_uniform_avx$10: + vpermq $-108, (%r12,%rdx), %ymm4 + vpermq $-108, 24(%r12,%rdx), %ymm5 + vpshufb %ymm3, %ymm4, %ymm4 + vpshufb %ymm3, %ymm5, %ymm5 + vpsrlw $4, %ymm4, %ymm6 + vpsrlw $4, %ymm5, %ymm7 + vpblendw $-86, %ymm6, %ymm4, %ymm4 + vpblendw $-86, %ymm7, %ymm5, %ymm5 + vpand %ymm2, %ymm4, %ymm4 + vpand %ymm2, %ymm5, %ymm5 + vpcmpgtw %ymm4, %ymm0, %ymm6 + vpcmpgtw %ymm5, %ymm0, %ymm7 + vpacksswb %ymm7, %ymm6, %ymm6 + vpmovmskb %ymm6, %rsi + movq %rsi, %rdi + andq $255, %rdi + vmovq (%rax,%rdi,8), %xmm6 + movq %rsi, %r8 + shrq $16, %r8 + andq $255, %r8 + vmovq (%rax,%r8,8), %xmm7 + movq %rsi, %r9 + shrq $8, %r9 + andq $255, %r9 + vmovq (%rax,%r9,8), %xmm8 + shrq $24, %rsi + andq $255, %rsi + vmovq (%rax,%rsi,8), %xmm9 + vinserti128 $1, %xmm7, %ymm6, %ymm6 + popcnt %rdi, %rdi + popcnt %r8, %r8 + addq %rcx, %rdi + vinserti128 $1, %xmm9, %ymm8, %ymm7 + addq %rdi, %r8 + popcnt %r9, %r9 + addq %r8, %r9 + popcnt %rsi, %rsi + addq %r9, %rsi + vpaddb %ymm1, %ymm6, %ymm8 + vpunpcklbw %ymm8, %ymm6, %ymm6 + vpaddb %ymm1, %ymm7, %ymm8 + vpunpcklbw %ymm8, %ymm7, %ymm7 + vpshufb %ymm6, %ymm4, %ymm4 + vpshufb %ymm7, %ymm5, %ymm5 + vmovdqu %xmm4, (%rbp,%rcx,2) + vextracti128 $1, %ymm4, (%rbp,%rdi,2) + vmovdqu %xmm5, (%rbp,%r8,2) + vextracti128 $1, %ymm5, (%rbp,%r9,2) + movq %rsi, %rcx + cmpq $224, %rcx + setbe %sil + addq $48, %rdx + cmpq $448, %rdx + setbe %dil + testb %dil, %sil +L_rej_uniform_avx$9: + jne L_rej_uniform_avx$10 + cmpq $248, %rcx + setbe %sil + cmpq $488, %rdx + setbe %dil + testb %dil, %sil + movq $21845, %rsi + jmp L_rej_uniform_avx$7 +L_rej_uniform_avx$8: + vmovdqu (%r12,%rdx), %xmm4 + vpshufb %xmm3, %xmm4, %xmm4 + vpsrlw $4, %xmm4, %xmm5 + vpblendw $-86, %xmm5, %xmm4, %xmm4 + vpand %xmm2, %xmm4, %xmm4 + vpcmpgtw %xmm4, %xmm0, %xmm5 + vpmovmskb %xmm5, %rdi + pext %rsi, %rdi, %rdi + vmovq (%rax,%rdi,8), %xmm5 + popcnt %rdi, %rdi + vpaddb %xmm1, %xmm5, %xmm6 + vpunpcklbw %xmm6, %xmm5, %xmm5 + vpshufb %xmm5, %xmm4, %xmm4 + vmovdqu %xmm4, (%rbp,%rcx,2) + addq %rdi, %rcx + addq $12, %rdx + cmpq $248, %rcx + setbe %dil + cmpq $488, %rdx + setbe %r8b + testb %r8b, %dil +L_rej_uniform_avx$7: + jne L_rej_uniform_avx$8 + cmpq $255, %rcx + setbe %al + cmpq $501, %rdx + setbe %sil + testb %sil, %al + jmp L_rej_uniform_avx$2 +L_rej_uniform_avx$3: + movzbw (%r12,%rdx), %ax + incq %rdx + movzbw (%r12,%rdx), %di + incq %rdx + movw %di, %si + shlw $8, %di + orw %di, %ax + andw $4095, %ax + shrw $4, %si + movzbw (%r12,%rdx), %di + incq %rdx + shlw $4, %di + orw %di, %si + cmpw $3329, %ax + jnb L_rej_uniform_avx$6 + movw %ax, (%rbp,%rcx,2) + incq %rcx +L_rej_uniform_avx$6: + cmpw $3329, %si + jnb L_rej_uniform_avx$4 + cmpq $256, %rcx + jnb L_rej_uniform_avx$4 + movw %si, (%rbp,%rcx,2) + incq %rcx +L_rej_uniform_avx$5: +L_rej_uniform_avx$4: + cmpq $255, %rcx + setbe %al + cmpq $501, %rdx + setbe %sil + testb %sil, %al +L_rej_uniform_avx$2: + jne L_rej_uniform_avx$3 + ret +L_poly_tomsg_1$1: + call L_poly_csubq$1 +L_poly_tomsg_1$2: + leaq glob_data + 256(%rip), %rsi + vmovdqu (%rsi), %ymm0 + leaq glob_data + 224(%rip), %rsi + vmovdqu (%rsi), %ymm1 + vmovdqu (%rcx), %ymm2 + vmovdqu 32(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, (%rax) + vmovdqu 64(%rcx), %ymm2 + vmovdqu 96(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 4(%rax) + vmovdqu 128(%rcx), %ymm2 + vmovdqu 160(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 8(%rax) + vmovdqu 192(%rcx), %ymm2 + vmovdqu 224(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 12(%rax) + vmovdqu 256(%rcx), %ymm2 + vmovdqu 288(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 16(%rax) + vmovdqu 320(%rcx), %ymm2 + vmovdqu 352(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 20(%rax) + vmovdqu 384(%rcx), %ymm2 + vmovdqu 416(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 24(%rax) + vmovdqu 448(%rcx), %ymm2 + vmovdqu 480(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm0 + vpsraw $15, %ymm2, %ymm3 + vpsraw $15, %ymm0, %ymm4 + vpxor %ymm3, %ymm2, %ymm2 + vpxor %ymm4, %ymm0, %ymm0 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm0, %ymm0 + vpacksswb %ymm0, %ymm2, %ymm0 + vpermq $-40, %ymm0, %ymm0 + vpmovmskb %ymm0, %ecx + movl %ecx, 28(%rax) + ret +L_poly_tobytes$1: + leaq glob_data + 480(%rip), %rsi + vmovdqu (%rsi), %ymm0 + vmovdqu (%rdx), %ymm7 + vmovdqu 32(%rdx), %ymm8 + vmovdqu 64(%rdx), %ymm1 + vmovdqu 96(%rdx), %ymm2 + vmovdqu 128(%rdx), %ymm3 + vmovdqu 160(%rdx), %ymm4 + vmovdqu 192(%rdx), %ymm5 + vmovdqu 224(%rdx), %ymm6 + vpsubw %ymm0, %ymm7, %ymm7 + vpsraw $15, %ymm7, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm0, %ymm8, %ymm8 + vpsraw $15, %ymm8, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm1, %ymm9, %ymm1 + vpsubw %ymm0, %ymm2, %ymm2 + vpsraw $15, %ymm2, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm2, %ymm9, %ymm2 + vpsubw %ymm0, %ymm3, %ymm3 + vpsraw $15, %ymm3, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm3, %ymm9, %ymm3 + vpsubw %ymm0, %ymm4, %ymm4 + vpsraw $15, %ymm4, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm4, %ymm9, %ymm4 + vpsubw %ymm0, %ymm5, %ymm5 + vpsraw $15, %ymm5, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm5, %ymm9, %ymm5 + vpsubw %ymm0, %ymm6, %ymm6 + vpsraw $15, %ymm6, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm6, %ymm9, %ymm6 + vpsllw $12, %ymm8, %ymm9 + vpor %ymm7, %ymm9, %ymm7 + vpsrlw $4, %ymm8, %ymm8 + vpsllw $8, %ymm1, %ymm9 + vpor %ymm9, %ymm8, %ymm8 + vpsrlw $8, %ymm1, %ymm1 + vpsllw $4, %ymm2, %ymm2 + vpor %ymm2, %ymm1, %ymm1 + vpsllw $12, %ymm4, %ymm2 + vpor %ymm3, %ymm2, %ymm2 + vpsrlw $4, %ymm4, %ymm3 + vpsllw $8, %ymm5, %ymm4 + vpor %ymm4, %ymm3, %ymm3 + vpsrlw $8, %ymm5, %ymm4 + vpsllw $4, %ymm6, %ymm5 + vpor %ymm5, %ymm4, %ymm4 + vpslld $16, %ymm8, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm7, %ymm6 + vpblendw $-86, %ymm8, %ymm6, %ymm6 + vpslld $16, %ymm2, %ymm7 + vpblendw $-86, %ymm7, %ymm1, %ymm7 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm1 + vpslld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm2, %ymm3, %ymm8 + vpsrld $16, %ymm3, %ymm2 + vpblendw $-86, %ymm4, %ymm2, %ymm2 + vmovsldup %ymm7, %ymm3 + vpblendd $-86, %ymm3, %ymm5, %ymm3 + vpsrlq $32, %ymm5, %ymm4 + vpblendd $-86, %ymm7, %ymm4, %ymm4 + vmovsldup %ymm6, %ymm5 + vpblendd $-86, %ymm5, %ymm8, %ymm5 + vpsrlq $32, %ymm8, %ymm7 + vpblendd $-86, %ymm6, %ymm7, %ymm6 + vmovsldup %ymm2, %ymm7 + vpblendd $-86, %ymm7, %ymm1, %ymm7 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm2, %ymm1, %ymm1 + vpunpcklqdq %ymm5, %ymm3, %ymm2 + vpunpckhqdq %ymm5, %ymm3, %ymm3 + vpunpcklqdq %ymm4, %ymm7, %ymm5 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vpunpcklqdq %ymm1, %ymm6, %ymm7 + vpunpckhqdq %ymm1, %ymm6, %ymm1 + vperm2i128 $32, %ymm5, %ymm2, %ymm6 + vperm2i128 $49, %ymm5, %ymm2, %ymm2 + vperm2i128 $32, %ymm3, %ymm7, %ymm5 + vperm2i128 $49, %ymm3, %ymm7, %ymm3 + vperm2i128 $32, %ymm1, %ymm4, %ymm7 + vperm2i128 $49, %ymm1, %ymm4, %ymm1 + vmovdqu %ymm6, (%rcx) + vmovdqu %ymm5, 32(%rcx) + vmovdqu %ymm7, 64(%rcx) + vmovdqu %ymm2, 96(%rcx) + vmovdqu %ymm3, 128(%rcx) + vmovdqu %ymm1, 160(%rcx) + vmovdqu 256(%rdx), %ymm7 + vmovdqu 288(%rdx), %ymm8 + vmovdqu 320(%rdx), %ymm1 + vmovdqu 352(%rdx), %ymm2 + vmovdqu 384(%rdx), %ymm3 + vmovdqu 416(%rdx), %ymm4 + vmovdqu 448(%rdx), %ymm5 + vmovdqu 480(%rdx), %ymm6 + vpsubw %ymm0, %ymm7, %ymm7 + vpsraw $15, %ymm7, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm0, %ymm8, %ymm8 + vpsraw $15, %ymm8, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm1, %ymm9, %ymm1 + vpsubw %ymm0, %ymm2, %ymm2 + vpsraw $15, %ymm2, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm2, %ymm9, %ymm2 + vpsubw %ymm0, %ymm3, %ymm3 + vpsraw $15, %ymm3, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm3, %ymm9, %ymm3 + vpsubw %ymm0, %ymm4, %ymm4 + vpsraw $15, %ymm4, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm4, %ymm9, %ymm4 + vpsubw %ymm0, %ymm5, %ymm5 + vpsraw $15, %ymm5, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm5, %ymm9, %ymm5 + vpsubw %ymm0, %ymm6, %ymm6 + vpsraw $15, %ymm6, %ymm9 + vpand %ymm0, %ymm9, %ymm0 + vpaddw %ymm6, %ymm0, %ymm0 + vpsllw $12, %ymm8, %ymm6 + vpor %ymm7, %ymm6, %ymm6 + vpsrlw $4, %ymm8, %ymm7 + vpsllw $8, %ymm1, %ymm8 + vpor %ymm8, %ymm7, %ymm7 + vpsrlw $8, %ymm1, %ymm1 + vpsllw $4, %ymm2, %ymm2 + vpor %ymm2, %ymm1, %ymm1 + vpsllw $12, %ymm4, %ymm2 + vpor %ymm3, %ymm2, %ymm2 + vpsrlw $4, %ymm4, %ymm3 + vpsllw $8, %ymm5, %ymm4 + vpor %ymm4, %ymm3, %ymm3 + vpsrlw $8, %ymm5, %ymm4 + vpsllw $4, %ymm0, %ymm0 + vpor %ymm0, %ymm4, %ymm0 + vpslld $16, %ymm7, %ymm4 + vpblendw $-86, %ymm4, %ymm6, %ymm4 + vpsrld $16, %ymm6, %ymm5 + vpblendw $-86, %ymm7, %ymm5, %ymm5 + vpslld $16, %ymm2, %ymm6 + vpblendw $-86, %ymm6, %ymm1, %ymm6 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm1 + vpslld $16, %ymm0, %ymm2 + vpblendw $-86, %ymm2, %ymm3, %ymm7 + vpsrld $16, %ymm3, %ymm2 + vpblendw $-86, %ymm0, %ymm2, %ymm0 + vmovsldup %ymm6, %ymm2 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vpsrlq $32, %ymm4, %ymm3 + vpblendd $-86, %ymm6, %ymm3, %ymm3 + vmovsldup %ymm5, %ymm4 + vpblendd $-86, %ymm4, %ymm7, %ymm4 + vpsrlq $32, %ymm7, %ymm6 + vpblendd $-86, %ymm5, %ymm6, %ymm5 + vmovsldup %ymm0, %ymm6 + vpblendd $-86, %ymm6, %ymm1, %ymm6 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm0, %ymm1, %ymm0 + vpunpcklqdq %ymm4, %ymm2, %ymm1 + vpunpckhqdq %ymm4, %ymm2, %ymm2 + vpunpcklqdq %ymm3, %ymm6, %ymm4 + vpunpckhqdq %ymm3, %ymm6, %ymm3 + vpunpcklqdq %ymm0, %ymm5, %ymm6 + vpunpckhqdq %ymm0, %ymm5, %ymm0 + vperm2i128 $32, %ymm4, %ymm1, %ymm5 + vperm2i128 $49, %ymm4, %ymm1, %ymm1 + vperm2i128 $32, %ymm2, %ymm6, %ymm4 + vperm2i128 $49, %ymm2, %ymm6, %ymm2 + vperm2i128 $32, %ymm0, %ymm3, %ymm6 + vperm2i128 $49, %ymm0, %ymm3, %ymm0 + vmovdqu %ymm5, 192(%rcx) + vmovdqu %ymm4, 224(%rcx) + vmovdqu %ymm6, 256(%rcx) + vmovdqu %ymm1, 288(%rcx) + vmovdqu %ymm2, 320(%rcx) + vmovdqu %ymm0, 352(%rcx) + ret +L_poly_sub$1: + vmovdqu (%rsi), %ymm0 + vmovdqu (%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, (%rcx) + vmovdqu 32(%rsi), %ymm0 + vmovdqu 32(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rcx) + vmovdqu 64(%rsi), %ymm0 + vmovdqu 64(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 64(%rcx) + vmovdqu 96(%rsi), %ymm0 + vmovdqu 96(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 96(%rcx) + vmovdqu 128(%rsi), %ymm0 + vmovdqu 128(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 128(%rcx) + vmovdqu 160(%rsi), %ymm0 + vmovdqu 160(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 160(%rcx) + vmovdqu 192(%rsi), %ymm0 + vmovdqu 192(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 192(%rcx) + vmovdqu 224(%rsi), %ymm0 + vmovdqu 224(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 224(%rcx) + vmovdqu 256(%rsi), %ymm0 + vmovdqu 256(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 256(%rcx) + vmovdqu 288(%rsi), %ymm0 + vmovdqu 288(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 288(%rcx) + vmovdqu 320(%rsi), %ymm0 + vmovdqu 320(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 320(%rcx) + vmovdqu 352(%rsi), %ymm0 + vmovdqu 352(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 352(%rcx) + vmovdqu 384(%rsi), %ymm0 + vmovdqu 384(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 384(%rcx) + vmovdqu 416(%rsi), %ymm0 + vmovdqu 416(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 416(%rcx) + vmovdqu 448(%rsi), %ymm0 + vmovdqu 448(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 448(%rcx) + vmovdqu 480(%rsi), %ymm0 + vmovdqu 480(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_ntt$1: + leaq glob_data + 1312(%rip), %rsi + vmovdqu glob_data + 480(%rip), %ymm0 + vpbroadcastd (%rsi), %ymm1 + vpbroadcastd 4(%rsi), %ymm2 + vmovdqu (%rcx), %ymm3 + vmovdqu 32(%rcx), %ymm14 + vmovdqu 64(%rcx), %ymm4 + vmovdqu 96(%rcx), %ymm5 + vmovdqu 256(%rcx), %ymm6 + vmovdqu 288(%rcx), %ymm7 + vmovdqu 320(%rcx), %ymm12 + vmovdqu 352(%rcx), %ymm8 + vpmullw %ymm6, %ymm1, %ymm9 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmullw %ymm7, %ymm1, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm15 + vpmullw %ymm12, %ymm1, %ymm11 + vpmulhw %ymm12, %ymm2, %ymm7 + vpmullw %ymm8, %ymm1, %ymm12 + vpmulhw %ymm8, %ymm2, %ymm8 + vpmulhw %ymm0, %ymm9, %ymm9 + vpmulhw %ymm0, %ymm10, %ymm10 + vpmulhw %ymm0, %ymm11, %ymm11 + vpmulhw %ymm0, %ymm12, %ymm12 + vpsubw %ymm15, %ymm14, %ymm13 + vpaddw %ymm14, %ymm15, %ymm14 + vpsubw %ymm6, %ymm3, %ymm15 + vpaddw %ymm3, %ymm6, %ymm3 + vpsubw %ymm8, %ymm5, %ymm6 + vpaddw %ymm5, %ymm8, %ymm5 + vpsubw %ymm7, %ymm4, %ymm8 + vpaddw %ymm4, %ymm7, %ymm4 + vpaddw %ymm15, %ymm9, %ymm7 + vpsubw %ymm9, %ymm3, %ymm3 + vpaddw %ymm13, %ymm10, %ymm9 + vpsubw %ymm10, %ymm14, %ymm10 + vpaddw %ymm8, %ymm11, %ymm8 + vpsubw %ymm11, %ymm4, %ymm4 + vpaddw %ymm6, %ymm12, %ymm6 + vpsubw %ymm12, %ymm5, %ymm5 + vmovdqu %ymm3, (%rcx) + vmovdqu %ymm10, 32(%rcx) + vmovdqu %ymm4, 64(%rcx) + vmovdqu %ymm5, 96(%rcx) + vmovdqu %ymm7, 256(%rcx) + vmovdqu %ymm9, 288(%rcx) + vmovdqu %ymm8, 320(%rcx) + vmovdqu %ymm6, 352(%rcx) + vmovdqu 128(%rcx), %ymm3 + vmovdqu 160(%rcx), %ymm12 + vmovdqu 192(%rcx), %ymm4 + vmovdqu 224(%rcx), %ymm5 + vmovdqu 384(%rcx), %ymm6 + vmovdqu 416(%rcx), %ymm7 + vmovdqu 448(%rcx), %ymm10 + vmovdqu 480(%rcx), %ymm11 + vpmullw %ymm6, %ymm1, %ymm14 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmullw %ymm7, %ymm1, %ymm8 + vpmulhw %ymm7, %ymm2, %ymm13 + vpmullw %ymm10, %ymm1, %ymm9 + vpmulhw %ymm10, %ymm2, %ymm7 + vpmullw %ymm11, %ymm1, %ymm10 + vpmulhw %ymm11, %ymm2, %ymm1 + vpmulhw %ymm0, %ymm14, %ymm2 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm9, %ymm9 + vpmulhw %ymm0, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm6, %ymm3, %ymm13 + vpaddw %ymm3, %ymm6, %ymm3 + vpsubw %ymm1, %ymm5, %ymm6 + vpaddw %ymm5, %ymm1, %ymm1 + vpsubw %ymm7, %ymm4, %ymm5 + vpaddw %ymm4, %ymm7, %ymm4 + vpaddw %ymm13, %ymm2, %ymm7 + vpsubw %ymm2, %ymm3, %ymm2 + vpaddw %ymm11, %ymm8, %ymm3 + vpsubw %ymm8, %ymm12, %ymm8 + vpaddw %ymm5, %ymm9, %ymm5 + vpsubw %ymm9, %ymm4, %ymm9 + vpaddw %ymm6, %ymm10, %ymm4 + vpsubw %ymm10, %ymm1, %ymm14 + vmovdqu %ymm7, 384(%rcx) + vmovdqu %ymm3, 416(%rcx) + vmovdqu %ymm5, 448(%rcx) + vmovdqu %ymm4, 480(%rcx) + vpbroadcastd 8(%rsi), %ymm1 + vpbroadcastd 12(%rsi), %ymm4 + vmovdqu %ymm8, %ymm10 + vmovdqu %ymm9, %ymm3 + vmovdqu (%rcx), %ymm6 + vmovdqu 32(%rcx), %ymm5 + vmovdqu 64(%rcx), %ymm9 + vmovdqu 96(%rcx), %ymm7 + vpmullw %ymm2, %ymm1, %ymm11 + vpmulhw %ymm2, %ymm4, %ymm8 + vpmullw %ymm10, %ymm1, %ymm13 + vpmulhw %ymm10, %ymm4, %ymm12 + vpmullw %ymm3, %ymm1, %ymm2 + vpmulhw %ymm3, %ymm4, %ymm10 + vpmullw %ymm14, %ymm1, %ymm3 + vpmulhw %ymm14, %ymm4, %ymm14 + vpmulhw %ymm0, %ymm11, %ymm11 + vpmulhw %ymm0, %ymm13, %ymm1 + vpmulhw %ymm0, %ymm2, %ymm2 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm12, %ymm5, %ymm4 + vpaddw %ymm5, %ymm12, %ymm5 + vpsubw %ymm8, %ymm6, %ymm12 + vpaddw %ymm6, %ymm8, %ymm13 + vpsubw %ymm14, %ymm7, %ymm6 + vpaddw %ymm7, %ymm14, %ymm7 + vpsubw %ymm10, %ymm9, %ymm8 + vpaddw %ymm9, %ymm10, %ymm9 + vpaddw %ymm12, %ymm11, %ymm10 + vpsubw %ymm11, %ymm13, %ymm12 + vpaddw %ymm4, %ymm1, %ymm4 + vpsubw %ymm1, %ymm5, %ymm5 + vpaddw %ymm8, %ymm2, %ymm8 + vpsubw %ymm2, %ymm9, %ymm2 + vpaddw %ymm6, %ymm3, %ymm13 + vpsubw %ymm3, %ymm7, %ymm7 + vmovdqu 16(%rsi), %ymm3 + vmovdqu 48(%rsi), %ymm6 + vperm2i128 $32, %ymm10, %ymm12, %ymm11 + vperm2i128 $49, %ymm10, %ymm12, %ymm9 + vperm2i128 $32, %ymm4, %ymm5, %ymm1 + vperm2i128 $49, %ymm4, %ymm5, %ymm12 + vperm2i128 $32, %ymm8, %ymm2, %ymm5 + vperm2i128 $49, %ymm8, %ymm2, %ymm8 + vperm2i128 $32, %ymm13, %ymm7, %ymm2 + vperm2i128 $49, %ymm13, %ymm7, %ymm13 + vpmullw %ymm5, %ymm3, %ymm4 + vpmulhw %ymm5, %ymm6, %ymm10 + vpmullw %ymm8, %ymm3, %ymm14 + vpmulhw %ymm8, %ymm6, %ymm8 + vpmullw %ymm2, %ymm3, %ymm5 + vpmulhw %ymm2, %ymm6, %ymm2 + vpmullw %ymm13, %ymm3, %ymm7 + vpmulhw %ymm13, %ymm6, %ymm13 + vpmulhw %ymm0, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm14, %ymm4 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm7, %ymm6 + vpsubw %ymm8, %ymm9, %ymm7 + vpaddw %ymm9, %ymm8, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 80(%rsi), %ymm1 + vmovdqu 112(%rsi), %ymm10 + vpunpcklqdq %ymm2, %ymm9, %ymm5 + vpunpckhqdq %ymm2, %ymm9, %ymm12 + vpunpcklqdq %ymm3, %ymm4, %ymm8 + vpunpckhqdq %ymm3, %ymm4, %ymm6 + vpunpcklqdq %ymm7, %ymm13, %ymm2 + vpunpckhqdq %ymm7, %ymm13, %ymm4 + vpunpcklqdq %ymm11, %ymm14, %ymm3 + vpunpckhqdq %ymm11, %ymm14, %ymm7 + vpmullw %ymm2, %ymm1, %ymm11 + vpmulhw %ymm2, %ymm10, %ymm13 + vpmullw %ymm4, %ymm1, %ymm14 + vpmulhw %ymm4, %ymm10, %ymm4 + vpmullw %ymm3, %ymm1, %ymm2 + vpmulhw %ymm3, %ymm10, %ymm9 + vpmullw %ymm7, %ymm1, %ymm3 + vpmulhw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm0, %ymm11, %ymm10 + vpmulhw %ymm0, %ymm14, %ymm1 + vpmulhw %ymm0, %ymm2, %ymm2 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm4, %ymm12, %ymm11 + vpaddw %ymm12, %ymm4, %ymm4 + vpsubw %ymm13, %ymm5, %ymm12 + vpaddw %ymm5, %ymm13, %ymm13 + vpsubw %ymm7, %ymm6, %ymm5 + vpaddw %ymm6, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpaddw %ymm12, %ymm10, %ymm9 + vpsubw %ymm10, %ymm13, %ymm12 + vpaddw %ymm11, %ymm1, %ymm10 + vpsubw %ymm1, %ymm4, %ymm4 + vpaddw %ymm7, %ymm2, %ymm7 + vpsubw %ymm2, %ymm8, %ymm2 + vpaddw %ymm5, %ymm3, %ymm13 + vpsubw %ymm3, %ymm6, %ymm6 + vmovdqu 144(%rsi), %ymm3 + vmovdqu 176(%rsi), %ymm5 + vmovsldup %ymm9, %ymm1 + vpblendd $-86, %ymm1, %ymm12, %ymm11 + vpsrlq $32, %ymm12, %ymm1 + vpblendd $-86, %ymm9, %ymm1, %ymm8 + vmovsldup %ymm10, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm1 + vpsrlq $32, %ymm4, %ymm4 + vpblendd $-86, %ymm10, %ymm4, %ymm12 + vmovsldup %ymm7, %ymm4 + vpblendd $-86, %ymm4, %ymm2, %ymm9 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm7, %ymm2, %ymm7 + vmovsldup %ymm13, %ymm2 + vpblendd $-86, %ymm2, %ymm6, %ymm2 + vpsrlq $32, %ymm6, %ymm4 + vpblendd $-86, %ymm13, %ymm4, %ymm13 + vpmullw %ymm9, %ymm3, %ymm4 + vpmulhw %ymm9, %ymm5, %ymm10 + vpmullw %ymm7, %ymm3, %ymm14 + vpmulhw %ymm7, %ymm5, %ymm9 + vpmullw %ymm2, %ymm3, %ymm6 + vpmulhw %ymm2, %ymm5, %ymm2 + vpmullw %ymm13, %ymm3, %ymm7 + vpmulhw %ymm13, %ymm5, %ymm13 + vpmulhw %ymm0, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm14, %ymm4 + vpmulhw %ymm0, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 208(%rsi), %ymm5 + vmovdqu 240(%rsi), %ymm6 + vpslld $16, %ymm2, %ymm1 + vpblendw $-86, %ymm1, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm8 + vpslld $16, %ymm3, %ymm1 + vpblendw $-86, %ymm1, %ymm4, %ymm1 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm12 + vpslld $16, %ymm7, %ymm2 + vpblendw $-86, %ymm2, %ymm13, %ymm4 + vpsrld $16, %ymm13, %ymm2 + vpblendw $-86, %ymm7, %ymm2, %ymm7 + vpslld $16, %ymm11, %ymm2 + vpblendw $-86, %ymm2, %ymm14, %ymm2 + vpsrld $16, %ymm14, %ymm3 + vpblendw $-86, %ymm11, %ymm3, %ymm13 + vpmullw %ymm4, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm6, %ymm11 + vpmullw %ymm7, %ymm5, %ymm4 + vpmulhw %ymm7, %ymm6, %ymm9 + vpmullw %ymm2, %ymm5, %ymm7 + vpmulhw %ymm2, %ymm6, %ymm2 + vpmullw %ymm13, %ymm5, %ymm14 + vpmulhw %ymm13, %ymm6, %ymm13 + vpmulhw %ymm0, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm4, %ymm4 + vpmulhw %ymm0, %ymm7, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm11, %ymm10, %ymm9 + vpaddw %ymm10, %ymm11, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm3 + vpaddw %ymm7, %ymm4, %ymm7 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm8 + vpsubw %ymm5, %ymm1, %ymm1 + vpaddw %ymm11, %ymm6, %ymm5 + vpsubw %ymm6, %ymm12, %ymm10 + vmovdqu 272(%rsi), %ymm9 + vmovdqu 304(%rsi), %ymm13 + vmovdqu 336(%rsi), %ymm11 + vmovdqu 368(%rsi), %ymm6 + vpmullw %ymm1, %ymm9, %ymm14 + vpmulhw %ymm1, %ymm13, %ymm12 + vpmullw %ymm10, %ymm9, %ymm9 + vpmulhw %ymm10, %ymm13, %ymm13 + vpmullw %ymm8, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm6, %ymm1 + vpmullw %ymm5, %ymm11, %ymm11 + vpmulhw %ymm5, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpmulhw %ymm0, %ymm9, %ymm8 + vpmulhw %ymm0, %ymm10, %ymm9 + vpmulhw %ymm0, %ymm11, %ymm10 + vpsubw %ymm13, %ymm4, %ymm11 + vpaddw %ymm4, %ymm13, %ymm4 + vpsubw %ymm12, %ymm3, %ymm13 + vpaddw %ymm3, %ymm12, %ymm3 + vpsubw %ymm5, %ymm7, %ymm12 + vpaddw %ymm7, %ymm5, %ymm5 + vpsubw %ymm1, %ymm2, %ymm7 + vpaddw %ymm2, %ymm1, %ymm1 + vpaddw %ymm13, %ymm6, %ymm2 + vpsubw %ymm6, %ymm3, %ymm3 + vpaddw %ymm11, %ymm8, %ymm6 + vpsubw %ymm8, %ymm4, %ymm4 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm9, %ymm1, %ymm8 + vpaddw %ymm12, %ymm10, %ymm1 + vpsubw %ymm10, %ymm5, %ymm5 + vmovdqu glob_data + 416(%rip), %ymm9 + vpmulhw %ymm9, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm3 + vpmulhw %ymm9, %ymm4, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm9, %ymm8, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm8, %ymm8 + vpmulhw %ymm9, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm5 + vpmulhw %ymm9, %ymm2, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm2, %ymm2 + vpmulhw %ymm9, %ymm6, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm6, %ymm6 + vpmulhw %ymm9, %ymm7, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm9, %ymm1, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm9 + vpsubw %ymm9, %ymm1, %ymm1 + vmovdqu %ymm3, (%rcx) + vmovdqu %ymm4, 32(%rcx) + vmovdqu %ymm2, 64(%rcx) + vmovdqu %ymm6, 96(%rcx) + vmovdqu %ymm8, 128(%rcx) + vmovdqu %ymm5, 160(%rcx) + vmovdqu %ymm7, 192(%rcx) + vmovdqu %ymm1, 224(%rcx) + vpbroadcastd 400(%rsi), %ymm5 + vpbroadcastd 404(%rsi), %ymm8 + vmovdqu 384(%rcx), %ymm1 + vmovdqu 416(%rcx), %ymm2 + vmovdqu 448(%rcx), %ymm10 + vmovdqu 480(%rcx), %ymm9 + vmovdqu 256(%rcx), %ymm3 + vmovdqu 288(%rcx), %ymm7 + vmovdqu 320(%rcx), %ymm6 + vmovdqu 352(%rcx), %ymm4 + vpmullw %ymm1, %ymm5, %ymm14 + vpmulhw %ymm1, %ymm8, %ymm12 + vpmullw %ymm2, %ymm5, %ymm1 + vpmulhw %ymm2, %ymm8, %ymm11 + vpmullw %ymm10, %ymm5, %ymm2 + vpmulhw %ymm10, %ymm8, %ymm13 + vpmullw %ymm9, %ymm5, %ymm10 + vpmulhw %ymm9, %ymm8, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm8 + vpmulhw %ymm0, %ymm1, %ymm9 + vpmulhw %ymm0, %ymm2, %ymm1 + vpmulhw %ymm0, %ymm10, %ymm2 + vpsubw %ymm11, %ymm7, %ymm10 + vpaddw %ymm7, %ymm11, %ymm11 + vpsubw %ymm12, %ymm3, %ymm7 + vpaddw %ymm3, %ymm12, %ymm12 + vpsubw %ymm5, %ymm4, %ymm3 + vpaddw %ymm4, %ymm5, %ymm4 + vpsubw %ymm13, %ymm6, %ymm5 + vpaddw %ymm6, %ymm13, %ymm6 + vpaddw %ymm7, %ymm8, %ymm7 + vpsubw %ymm8, %ymm12, %ymm12 + vpaddw %ymm10, %ymm9, %ymm8 + vpsubw %ymm9, %ymm11, %ymm9 + vpaddw %ymm5, %ymm1, %ymm5 + vpsubw %ymm1, %ymm6, %ymm6 + vpaddw %ymm3, %ymm2, %ymm13 + vpsubw %ymm2, %ymm4, %ymm2 + vmovdqu 408(%rsi), %ymm3 + vmovdqu 440(%rsi), %ymm4 + vperm2i128 $32, %ymm7, %ymm12, %ymm10 + vperm2i128 $49, %ymm7, %ymm12, %ymm11 + vperm2i128 $32, %ymm8, %ymm9, %ymm1 + vperm2i128 $49, %ymm8, %ymm9, %ymm12 + vperm2i128 $32, %ymm5, %ymm6, %ymm8 + vperm2i128 $49, %ymm5, %ymm6, %ymm5 + vperm2i128 $32, %ymm13, %ymm2, %ymm6 + vperm2i128 $49, %ymm13, %ymm2, %ymm13 + vpmullw %ymm8, %ymm3, %ymm7 + vpmulhw %ymm8, %ymm4, %ymm14 + vpmullw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm5, %ymm4, %ymm8 + vpmullw %ymm6, %ymm3, %ymm5 + vpmulhw %ymm6, %ymm4, %ymm2 + vpmullw %ymm13, %ymm3, %ymm6 + vpmulhw %ymm13, %ymm4, %ymm13 + vpmulhw %ymm0, %ymm7, %ymm3 + vpmulhw %ymm0, %ymm9, %ymm4 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm8, %ymm11, %ymm7 + vpaddw %ymm11, %ymm8, %ymm8 + vpsubw %ymm14, %ymm10, %ymm9 + vpaddw %ymm10, %ymm14, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 472(%rsi), %ymm1 + vmovdqu 504(%rsi), %ymm10 + vpunpcklqdq %ymm2, %ymm9, %ymm5 + vpunpckhqdq %ymm2, %ymm9, %ymm12 + vpunpcklqdq %ymm3, %ymm4, %ymm8 + vpunpckhqdq %ymm3, %ymm4, %ymm6 + vpunpcklqdq %ymm7, %ymm13, %ymm2 + vpunpckhqdq %ymm7, %ymm13, %ymm4 + vpunpcklqdq %ymm11, %ymm14, %ymm3 + vpunpckhqdq %ymm11, %ymm14, %ymm7 + vpmullw %ymm2, %ymm1, %ymm11 + vpmulhw %ymm2, %ymm10, %ymm13 + vpmullw %ymm4, %ymm1, %ymm14 + vpmulhw %ymm4, %ymm10, %ymm4 + vpmullw %ymm3, %ymm1, %ymm2 + vpmulhw %ymm3, %ymm10, %ymm9 + vpmullw %ymm7, %ymm1, %ymm3 + vpmulhw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm0, %ymm11, %ymm10 + vpmulhw %ymm0, %ymm14, %ymm1 + vpmulhw %ymm0, %ymm2, %ymm2 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm4, %ymm12, %ymm11 + vpaddw %ymm12, %ymm4, %ymm4 + vpsubw %ymm13, %ymm5, %ymm12 + vpaddw %ymm5, %ymm13, %ymm13 + vpsubw %ymm7, %ymm6, %ymm5 + vpaddw %ymm6, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpaddw %ymm12, %ymm10, %ymm9 + vpsubw %ymm10, %ymm13, %ymm12 + vpaddw %ymm11, %ymm1, %ymm10 + vpsubw %ymm1, %ymm4, %ymm4 + vpaddw %ymm7, %ymm2, %ymm7 + vpsubw %ymm2, %ymm8, %ymm2 + vpaddw %ymm5, %ymm3, %ymm13 + vpsubw %ymm3, %ymm6, %ymm6 + vmovdqu 536(%rsi), %ymm3 + vmovdqu 568(%rsi), %ymm5 + vmovsldup %ymm9, %ymm1 + vpblendd $-86, %ymm1, %ymm12, %ymm11 + vpsrlq $32, %ymm12, %ymm1 + vpblendd $-86, %ymm9, %ymm1, %ymm8 + vmovsldup %ymm10, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm1 + vpsrlq $32, %ymm4, %ymm4 + vpblendd $-86, %ymm10, %ymm4, %ymm12 + vmovsldup %ymm7, %ymm4 + vpblendd $-86, %ymm4, %ymm2, %ymm9 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm7, %ymm2, %ymm7 + vmovsldup %ymm13, %ymm2 + vpblendd $-86, %ymm2, %ymm6, %ymm2 + vpsrlq $32, %ymm6, %ymm4 + vpblendd $-86, %ymm13, %ymm4, %ymm13 + vpmullw %ymm9, %ymm3, %ymm4 + vpmulhw %ymm9, %ymm5, %ymm10 + vpmullw %ymm7, %ymm3, %ymm14 + vpmulhw %ymm7, %ymm5, %ymm9 + vpmullw %ymm2, %ymm3, %ymm6 + vpmulhw %ymm2, %ymm5, %ymm2 + vpmullw %ymm13, %ymm3, %ymm7 + vpmulhw %ymm13, %ymm5, %ymm13 + vpmulhw %ymm0, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm14, %ymm4 + vpmulhw %ymm0, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 600(%rsi), %ymm5 + vmovdqu 632(%rsi), %ymm6 + vpslld $16, %ymm2, %ymm1 + vpblendw $-86, %ymm1, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm8 + vpslld $16, %ymm3, %ymm1 + vpblendw $-86, %ymm1, %ymm4, %ymm1 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm12 + vpslld $16, %ymm7, %ymm2 + vpblendw $-86, %ymm2, %ymm13, %ymm4 + vpsrld $16, %ymm13, %ymm2 + vpblendw $-86, %ymm7, %ymm2, %ymm7 + vpslld $16, %ymm11, %ymm2 + vpblendw $-86, %ymm2, %ymm14, %ymm2 + vpsrld $16, %ymm14, %ymm3 + vpblendw $-86, %ymm11, %ymm3, %ymm13 + vpmullw %ymm4, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm6, %ymm11 + vpmullw %ymm7, %ymm5, %ymm4 + vpmulhw %ymm7, %ymm6, %ymm9 + vpmullw %ymm2, %ymm5, %ymm7 + vpmulhw %ymm2, %ymm6, %ymm2 + vpmullw %ymm13, %ymm5, %ymm14 + vpmulhw %ymm13, %ymm6, %ymm13 + vpmulhw %ymm0, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm4, %ymm4 + vpmulhw %ymm0, %ymm7, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm11, %ymm10, %ymm9 + vpaddw %ymm10, %ymm11, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm3 + vpaddw %ymm7, %ymm4, %ymm7 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm8 + vpsubw %ymm5, %ymm1, %ymm1 + vpaddw %ymm11, %ymm6, %ymm5 + vpsubw %ymm6, %ymm12, %ymm10 + vmovdqu 664(%rsi), %ymm9 + vmovdqu 696(%rsi), %ymm13 + vmovdqu 728(%rsi), %ymm11 + vmovdqu 760(%rsi), %ymm6 + vpmullw %ymm1, %ymm9, %ymm14 + vpmulhw %ymm1, %ymm13, %ymm12 + vpmullw %ymm10, %ymm9, %ymm9 + vpmulhw %ymm10, %ymm13, %ymm13 + vpmullw %ymm8, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm6, %ymm1 + vpmullw %ymm5, %ymm11, %ymm11 + vpmulhw %ymm5, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpmulhw %ymm0, %ymm9, %ymm8 + vpmulhw %ymm0, %ymm10, %ymm9 + vpmulhw %ymm0, %ymm11, %ymm10 + vpsubw %ymm13, %ymm4, %ymm11 + vpaddw %ymm4, %ymm13, %ymm4 + vpsubw %ymm12, %ymm3, %ymm13 + vpaddw %ymm3, %ymm12, %ymm3 + vpsubw %ymm5, %ymm7, %ymm12 + vpaddw %ymm7, %ymm5, %ymm5 + vpsubw %ymm1, %ymm2, %ymm7 + vpaddw %ymm2, %ymm1, %ymm1 + vpaddw %ymm13, %ymm6, %ymm2 + vpsubw %ymm6, %ymm3, %ymm3 + vpaddw %ymm11, %ymm8, %ymm6 + vpsubw %ymm8, %ymm4, %ymm4 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm9, %ymm1, %ymm8 + vpaddw %ymm12, %ymm10, %ymm1 + vpsubw %ymm10, %ymm5, %ymm5 + vmovdqu glob_data + 416(%rip), %ymm9 + vpmulhw %ymm9, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm3 + vpmulhw %ymm9, %ymm4, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm9, %ymm8, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm8, %ymm8 + vpmulhw %ymm9, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm5 + vpmulhw %ymm9, %ymm2, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm2, %ymm2 + vpmulhw %ymm9, %ymm6, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm6, %ymm6 + vpmulhw %ymm9, %ymm7, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm9, %ymm1, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm0 + vpsubw %ymm0, %ymm1, %ymm0 + vmovdqu %ymm3, 256(%rcx) + vmovdqu %ymm4, 288(%rcx) + vmovdqu %ymm2, 320(%rcx) + vmovdqu %ymm6, 352(%rcx) + vmovdqu %ymm8, 384(%rcx) + vmovdqu %ymm5, 416(%rcx) + vmovdqu %ymm7, 448(%rcx) + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_invntt$1: + leaq glob_data + 512(%rip), %rsi + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu (%rsi), %ymm12 + vmovdqu 64(%rsi), %ymm1 + vmovdqu 32(%rsi), %ymm2 + vmovdqu 96(%rsi), %ymm5 + vmovdqu (%rcx), %ymm3 + vmovdqu 32(%rcx), %ymm4 + vmovdqu 64(%rcx), %ymm15 + vmovdqu 96(%rcx), %ymm11 + vmovdqu 128(%rcx), %ymm7 + vmovdqu 160(%rcx), %ymm8 + vmovdqu 192(%rcx), %ymm13 + vmovdqu 224(%rcx), %ymm14 + vpsubw %ymm15, %ymm3, %ymm6 + vpsubw %ymm11, %ymm4, %ymm9 + vpsubw %ymm13, %ymm7, %ymm10 + vpaddw %ymm3, %ymm15, %ymm3 + vpaddw %ymm4, %ymm11, %ymm4 + vpmullw %ymm6, %ymm12, %ymm11 + vpaddw %ymm7, %ymm13, %ymm7 + vpmullw %ymm9, %ymm12, %ymm12 + vpsubw %ymm14, %ymm8, %ymm13 + vpaddw %ymm8, %ymm14, %ymm8 + vpmullw %ymm10, %ymm1, %ymm14 + vpmullw %ymm13, %ymm1, %ymm1 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmulhw %ymm9, %ymm2, %ymm2 + vpmulhw %ymm10, %ymm5, %ymm9 + vpmulhw %ymm13, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm10 + vpmulhw %ymm12, %ymm0, %ymm11 + vpmulhw %ymm14, %ymm0, %ymm12 + vpmulhw %ymm1, %ymm0, %ymm1 + vpsubw %ymm10, %ymm6, %ymm6 + vpsubw %ymm11, %ymm2, %ymm11 + vpsubw %ymm12, %ymm9, %ymm9 + vpsubw %ymm1, %ymm5, %ymm13 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu 128(%rsi), %ymm2 + vmovdqu 160(%rsi), %ymm5 + vpmulhw %ymm1, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm10 + vpmulhw %ymm1, %ymm4, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm12 + vpmulhw %ymm1, %ymm7, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm7, %ymm7 + vpmulhw %ymm1, %ymm8, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm8, %ymm8 + vpsubw %ymm7, %ymm10, %ymm15 + vpsubw %ymm8, %ymm12, %ymm3 + vpsubw %ymm9, %ymm6, %ymm4 + vpaddw %ymm10, %ymm7, %ymm7 + vpaddw %ymm12, %ymm8, %ymm8 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm6, %ymm9, %ymm9 + vpmullw %ymm3, %ymm2, %ymm6 + vpsubw %ymm13, %ymm11, %ymm12 + vpaddw %ymm11, %ymm13, %ymm11 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm12, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm12, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm6, %ymm0, %ymm12 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm6 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm12, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm6, %ymm5, %ymm5 + vpslld $16, %ymm8, %ymm6 + vpblendw $-86, %ymm6, %ymm7, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpblendw $-86, %ymm8, %ymm7, %ymm7 + vpslld $16, %ymm11, %ymm8 + vpblendw $-86, %ymm8, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm11, %ymm8, %ymm11 + vpslld $16, %ymm3, %ymm8 + vpblendw $-86, %ymm8, %ymm2, %ymm8 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm9 + vpslld $16, %ymm5, %ymm2 + vpblendw $-86, %ymm2, %ymm4, %ymm12 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm5, %ymm2, %ymm13 + vmovdqu 192(%rsi), %ymm2 + vmovdqu 224(%rsi), %ymm5 + vpsubw %ymm7, %ymm6, %ymm15 + vpsubw %ymm11, %ymm10, %ymm3 + vpsubw %ymm9, %ymm8, %ymm4 + vpaddw %ymm6, %ymm7, %ymm6 + vpaddw %ymm10, %ymm11, %ymm7 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm8, %ymm9, %ymm8 + vpmullw %ymm3, %ymm2, %ymm9 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm11, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm11, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm9, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm9 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm11, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm9, %ymm5, %ymm5 + vpmulhw %ymm1, %ymm6, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm9 + vpsubw %ymm9, %ymm6, %ymm6 + vmovsldup %ymm7, %ymm9 + vpblendd $-86, %ymm9, %ymm6, %ymm9 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm7, %ymm6, %ymm10 + vmovsldup %ymm12, %ymm6 + vpblendd $-86, %ymm6, %ymm8, %ymm11 + vpsrlq $32, %ymm8, %ymm6 + vpblendd $-86, %ymm12, %ymm6, %ymm14 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm2, %ymm12 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm13 + vmovsldup %ymm5, %ymm2 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vpsrlq $32, %ymm4, %ymm3 + vpblendd $-86, %ymm5, %ymm3, %ymm3 + vmovdqu 256(%rsi), %ymm4 + vmovdqu 288(%rsi), %ymm5 + vpsubw %ymm10, %ymm9, %ymm6 + vpsubw %ymm14, %ymm11, %ymm7 + vpsubw %ymm13, %ymm12, %ymm8 + vpaddw %ymm9, %ymm10, %ymm9 + vpaddw %ymm11, %ymm14, %ymm10 + vpmullw %ymm6, %ymm4, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm7, %ymm4, %ymm13 + vpsubw %ymm3, %ymm2, %ymm14 + vpaddw %ymm2, %ymm3, %ymm2 + vpmullw %ymm8, %ymm4, %ymm3 + vpmullw %ymm14, %ymm4, %ymm4 + vpmulhw %ymm6, %ymm5, %ymm6 + vpmulhw %ymm7, %ymm5, %ymm7 + vpmulhw %ymm8, %ymm5, %ymm8 + vpmulhw %ymm14, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm3, %ymm0, %ymm3 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm11, %ymm6, %ymm6 + vpsubw %ymm13, %ymm7, %ymm7 + vpsubw %ymm3, %ymm8, %ymm3 + vpsubw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm1, %ymm9, %ymm5 + vpsraw $10, %ymm5, %ymm5 + vpmullw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm9, %ymm8 + vpunpcklqdq %ymm10, %ymm8, %ymm5 + vpunpckhqdq %ymm10, %ymm8, %ymm8 + vpunpcklqdq %ymm2, %ymm12, %ymm9 + vpunpckhqdq %ymm2, %ymm12, %ymm2 + vpunpcklqdq %ymm7, %ymm6, %ymm10 + vpunpckhqdq %ymm7, %ymm6, %ymm6 + vpunpcklqdq %ymm4, %ymm3, %ymm7 + vpunpckhqdq %ymm4, %ymm3, %ymm3 + vmovdqu 320(%rsi), %ymm4 + vmovdqu 352(%rsi), %ymm11 + vpsubw %ymm8, %ymm5, %ymm12 + vpsubw %ymm2, %ymm9, %ymm13 + vpsubw %ymm6, %ymm10, %ymm14 + vpaddw %ymm5, %ymm8, %ymm5 + vpaddw %ymm9, %ymm2, %ymm2 + vpmullw %ymm12, %ymm4, %ymm8 + vpaddw %ymm10, %ymm6, %ymm6 + vpmullw %ymm13, %ymm4, %ymm9 + vpsubw %ymm3, %ymm7, %ymm10 + vpaddw %ymm7, %ymm3, %ymm3 + vpmullw %ymm14, %ymm4, %ymm7 + vpmullw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm8, %ymm12, %ymm8 + vpsubw %ymm9, %ymm13, %ymm9 + vpsubw %ymm7, %ymm14, %ymm7 + vpsubw %ymm4, %ymm10, %ymm4 + vpmulhw %ymm1, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm10 + vperm2i128 $32, %ymm2, %ymm10, %ymm5 + vperm2i128 $49, %ymm2, %ymm10, %ymm2 + vperm2i128 $32, %ymm3, %ymm6, %ymm10 + vperm2i128 $49, %ymm3, %ymm6, %ymm3 + vperm2i128 $32, %ymm9, %ymm8, %ymm6 + vperm2i128 $49, %ymm9, %ymm8, %ymm8 + vperm2i128 $32, %ymm4, %ymm7, %ymm9 + vperm2i128 $49, %ymm4, %ymm7, %ymm4 + vpbroadcastd 384(%rsi), %ymm7 + vpbroadcastd 388(%rsi), %ymm11 + vpsubw %ymm2, %ymm5, %ymm12 + vpsubw %ymm3, %ymm10, %ymm13 + vpsubw %ymm8, %ymm6, %ymm14 + vpaddw %ymm5, %ymm2, %ymm2 + vpaddw %ymm10, %ymm3, %ymm3 + vpmullw %ymm12, %ymm7, %ymm5 + vpaddw %ymm6, %ymm8, %ymm6 + vpmullw %ymm13, %ymm7, %ymm8 + vpsubw %ymm4, %ymm9, %ymm10 + vpaddw %ymm9, %ymm4, %ymm4 + vpmullw %ymm14, %ymm7, %ymm9 + vpmullw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm5, %ymm0, %ymm5 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpsubw %ymm5, %ymm12, %ymm5 + vpsubw %ymm8, %ymm13, %ymm8 + vpsubw %ymm9, %ymm14, %ymm9 + vpsubw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm1 + vpsubw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, (%rcx) + vmovdqu %ymm3, 32(%rcx) + vmovdqu %ymm6, 64(%rcx) + vmovdqu %ymm4, 96(%rcx) + vmovdqu %ymm5, 128(%rcx) + vmovdqu %ymm8, 160(%rcx) + vmovdqu %ymm9, 192(%rcx) + vmovdqu %ymm7, 224(%rcx) + vmovdqu 392(%rsi), %ymm12 + vmovdqu 456(%rsi), %ymm1 + vmovdqu 424(%rsi), %ymm2 + vmovdqu 488(%rsi), %ymm5 + vmovdqu 256(%rcx), %ymm3 + vmovdqu 288(%rcx), %ymm4 + vmovdqu 320(%rcx), %ymm15 + vmovdqu 352(%rcx), %ymm11 + vmovdqu 384(%rcx), %ymm7 + vmovdqu 416(%rcx), %ymm8 + vmovdqu 448(%rcx), %ymm13 + vmovdqu 480(%rcx), %ymm14 + vpsubw %ymm15, %ymm3, %ymm6 + vpsubw %ymm11, %ymm4, %ymm9 + vpsubw %ymm13, %ymm7, %ymm10 + vpaddw %ymm3, %ymm15, %ymm3 + vpaddw %ymm4, %ymm11, %ymm4 + vpmullw %ymm6, %ymm12, %ymm11 + vpaddw %ymm7, %ymm13, %ymm7 + vpmullw %ymm9, %ymm12, %ymm12 + vpsubw %ymm14, %ymm8, %ymm13 + vpaddw %ymm8, %ymm14, %ymm8 + vpmullw %ymm10, %ymm1, %ymm14 + vpmullw %ymm13, %ymm1, %ymm1 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmulhw %ymm9, %ymm2, %ymm2 + vpmulhw %ymm10, %ymm5, %ymm9 + vpmulhw %ymm13, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm10 + vpmulhw %ymm12, %ymm0, %ymm11 + vpmulhw %ymm14, %ymm0, %ymm12 + vpmulhw %ymm1, %ymm0, %ymm1 + vpsubw %ymm10, %ymm6, %ymm6 + vpsubw %ymm11, %ymm2, %ymm11 + vpsubw %ymm12, %ymm9, %ymm9 + vpsubw %ymm1, %ymm5, %ymm13 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu 520(%rsi), %ymm2 + vmovdqu 552(%rsi), %ymm5 + vpmulhw %ymm1, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm10 + vpmulhw %ymm1, %ymm4, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm12 + vpmulhw %ymm1, %ymm7, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm7, %ymm7 + vpmulhw %ymm1, %ymm8, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm8, %ymm8 + vpsubw %ymm7, %ymm10, %ymm15 + vpsubw %ymm8, %ymm12, %ymm3 + vpsubw %ymm9, %ymm6, %ymm4 + vpaddw %ymm10, %ymm7, %ymm7 + vpaddw %ymm12, %ymm8, %ymm8 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm6, %ymm9, %ymm9 + vpmullw %ymm3, %ymm2, %ymm6 + vpsubw %ymm13, %ymm11, %ymm12 + vpaddw %ymm11, %ymm13, %ymm11 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm12, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm12, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm6, %ymm0, %ymm12 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm6 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm12, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm6, %ymm5, %ymm5 + vpslld $16, %ymm8, %ymm6 + vpblendw $-86, %ymm6, %ymm7, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpblendw $-86, %ymm8, %ymm7, %ymm7 + vpslld $16, %ymm11, %ymm8 + vpblendw $-86, %ymm8, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm11, %ymm8, %ymm11 + vpslld $16, %ymm3, %ymm8 + vpblendw $-86, %ymm8, %ymm2, %ymm8 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm9 + vpslld $16, %ymm5, %ymm2 + vpblendw $-86, %ymm2, %ymm4, %ymm12 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm5, %ymm2, %ymm13 + vmovdqu 584(%rsi), %ymm2 + vmovdqu 616(%rsi), %ymm5 + vpsubw %ymm7, %ymm6, %ymm15 + vpsubw %ymm11, %ymm10, %ymm3 + vpsubw %ymm9, %ymm8, %ymm4 + vpaddw %ymm6, %ymm7, %ymm6 + vpaddw %ymm10, %ymm11, %ymm7 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm8, %ymm9, %ymm8 + vpmullw %ymm3, %ymm2, %ymm9 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm11, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm11, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm9, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm9 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm11, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm9, %ymm5, %ymm5 + vpmulhw %ymm1, %ymm6, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm9 + vpsubw %ymm9, %ymm6, %ymm6 + vmovsldup %ymm7, %ymm9 + vpblendd $-86, %ymm9, %ymm6, %ymm9 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm7, %ymm6, %ymm10 + vmovsldup %ymm12, %ymm6 + vpblendd $-86, %ymm6, %ymm8, %ymm11 + vpsrlq $32, %ymm8, %ymm6 + vpblendd $-86, %ymm12, %ymm6, %ymm14 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm2, %ymm12 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm13 + vmovsldup %ymm5, %ymm2 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vpsrlq $32, %ymm4, %ymm3 + vpblendd $-86, %ymm5, %ymm3, %ymm3 + vmovdqu 648(%rsi), %ymm4 + vmovdqu 680(%rsi), %ymm5 + vpsubw %ymm10, %ymm9, %ymm6 + vpsubw %ymm14, %ymm11, %ymm7 + vpsubw %ymm13, %ymm12, %ymm8 + vpaddw %ymm9, %ymm10, %ymm9 + vpaddw %ymm11, %ymm14, %ymm10 + vpmullw %ymm6, %ymm4, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm7, %ymm4, %ymm13 + vpsubw %ymm3, %ymm2, %ymm14 + vpaddw %ymm2, %ymm3, %ymm2 + vpmullw %ymm8, %ymm4, %ymm3 + vpmullw %ymm14, %ymm4, %ymm4 + vpmulhw %ymm6, %ymm5, %ymm6 + vpmulhw %ymm7, %ymm5, %ymm7 + vpmulhw %ymm8, %ymm5, %ymm8 + vpmulhw %ymm14, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm3, %ymm0, %ymm3 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm11, %ymm6, %ymm6 + vpsubw %ymm13, %ymm7, %ymm7 + vpsubw %ymm3, %ymm8, %ymm3 + vpsubw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm1, %ymm9, %ymm5 + vpsraw $10, %ymm5, %ymm5 + vpmullw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm9, %ymm8 + vpunpcklqdq %ymm10, %ymm8, %ymm5 + vpunpckhqdq %ymm10, %ymm8, %ymm8 + vpunpcklqdq %ymm2, %ymm12, %ymm9 + vpunpckhqdq %ymm2, %ymm12, %ymm2 + vpunpcklqdq %ymm7, %ymm6, %ymm10 + vpunpckhqdq %ymm7, %ymm6, %ymm6 + vpunpcklqdq %ymm4, %ymm3, %ymm7 + vpunpckhqdq %ymm4, %ymm3, %ymm3 + vmovdqu 712(%rsi), %ymm4 + vmovdqu 744(%rsi), %ymm11 + vpsubw %ymm8, %ymm5, %ymm12 + vpsubw %ymm2, %ymm9, %ymm13 + vpsubw %ymm6, %ymm10, %ymm14 + vpaddw %ymm5, %ymm8, %ymm5 + vpaddw %ymm9, %ymm2, %ymm2 + vpmullw %ymm12, %ymm4, %ymm8 + vpaddw %ymm10, %ymm6, %ymm6 + vpmullw %ymm13, %ymm4, %ymm9 + vpsubw %ymm3, %ymm7, %ymm10 + vpaddw %ymm7, %ymm3, %ymm3 + vpmullw %ymm14, %ymm4, %ymm7 + vpmullw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm8, %ymm12, %ymm8 + vpsubw %ymm9, %ymm13, %ymm9 + vpsubw %ymm7, %ymm14, %ymm7 + vpsubw %ymm4, %ymm10, %ymm4 + vpmulhw %ymm1, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm10 + vperm2i128 $32, %ymm2, %ymm10, %ymm5 + vperm2i128 $49, %ymm2, %ymm10, %ymm2 + vperm2i128 $32, %ymm3, %ymm6, %ymm10 + vperm2i128 $49, %ymm3, %ymm6, %ymm3 + vperm2i128 $32, %ymm9, %ymm8, %ymm6 + vperm2i128 $49, %ymm9, %ymm8, %ymm8 + vperm2i128 $32, %ymm4, %ymm7, %ymm9 + vperm2i128 $49, %ymm4, %ymm7, %ymm4 + vpbroadcastd 776(%rsi), %ymm7 + vpbroadcastd 780(%rsi), %ymm11 + vpsubw %ymm2, %ymm5, %ymm12 + vpsubw %ymm3, %ymm10, %ymm13 + vpsubw %ymm8, %ymm6, %ymm14 + vpaddw %ymm5, %ymm2, %ymm2 + vpaddw %ymm10, %ymm3, %ymm3 + vpmullw %ymm12, %ymm7, %ymm5 + vpaddw %ymm6, %ymm8, %ymm6 + vpmullw %ymm13, %ymm7, %ymm8 + vpsubw %ymm4, %ymm9, %ymm10 + vpaddw %ymm9, %ymm4, %ymm4 + vpmullw %ymm14, %ymm7, %ymm9 + vpmullw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm5, %ymm0, %ymm5 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpsubw %ymm5, %ymm12, %ymm5 + vpsubw %ymm8, %ymm13, %ymm8 + vpsubw %ymm9, %ymm14, %ymm9 + vpsubw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm1 + vpsubw %ymm1, %ymm2, %ymm10 + vmovdqu %ymm5, 384(%rcx) + vmovdqu %ymm8, 416(%rcx) + vmovdqu %ymm9, 448(%rcx) + vmovdqu %ymm7, 480(%rcx) + vpbroadcastd 784(%rsi), %ymm1 + vpbroadcastd 788(%rsi), %ymm2 + vmovdqu %ymm4, %ymm7 + vmovdqu %ymm3, %ymm4 + vmovdqu %ymm10, %ymm3 + vmovdqu (%rcx), %ymm9 + vmovdqu 32(%rcx), %ymm13 + vmovdqu 64(%rcx), %ymm5 + vmovdqu 96(%rcx), %ymm8 + vpsubw %ymm3, %ymm9, %ymm10 + vpsubw %ymm4, %ymm13, %ymm11 + vpsubw %ymm6, %ymm5, %ymm12 + vpaddw %ymm9, %ymm3, %ymm3 + vpaddw %ymm13, %ymm4, %ymm4 + vpmullw %ymm10, %ymm1, %ymm13 + vpaddw %ymm5, %ymm6, %ymm5 + vpmullw %ymm11, %ymm1, %ymm6 + vpsubw %ymm7, %ymm8, %ymm14 + vpaddw %ymm8, %ymm7, %ymm7 + vpmullw %ymm12, %ymm1, %ymm8 + vpmullw %ymm14, %ymm1, %ymm9 + vpmulhw %ymm10, %ymm2, %ymm10 + vpmulhw %ymm11, %ymm2, %ymm11 + vpmulhw %ymm12, %ymm2, %ymm12 + vpmulhw %ymm14, %ymm2, %ymm14 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm6, %ymm0, %ymm6 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpsubw %ymm13, %ymm10, %ymm10 + vpsubw %ymm6, %ymm11, %ymm6 + vpsubw %ymm8, %ymm12, %ymm11 + vpsubw %ymm9, %ymm14, %ymm12 + vmovdqu glob_data + 352(%rip), %ymm8 + vmovdqu glob_data + 384(%rip), %ymm9 + vmovdqu %ymm10, 256(%rcx) + vmovdqu %ymm6, 288(%rcx) + vmovdqu %ymm11, 320(%rcx) + vmovdqu %ymm12, 352(%rcx) + vpmullw %ymm3, %ymm8, %ymm6 + vpmulhw %ymm3, %ymm9, %ymm3 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm3, %ymm3 + vpmullw %ymm4, %ymm8, %ymm6 + vpmulhw %ymm4, %ymm9, %ymm4 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vpmullw %ymm5, %ymm8, %ymm6 + vpmulhw %ymm5, %ymm9, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm5, %ymm5 + vpmullw %ymm7, %ymm8, %ymm6 + vpmulhw %ymm7, %ymm9, %ymm7 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm7, %ymm6 + vmovdqu %ymm3, (%rcx) + vmovdqu %ymm4, 32(%rcx) + vmovdqu %ymm5, 64(%rcx) + vmovdqu %ymm6, 96(%rcx) + vmovdqu 384(%rcx), %ymm4 + vmovdqu 416(%rcx), %ymm5 + vmovdqu 448(%rcx), %ymm7 + vmovdqu 480(%rcx), %ymm10 + vmovdqu 128(%rcx), %ymm6 + vmovdqu 160(%rcx), %ymm9 + vmovdqu 192(%rcx), %ymm8 + vmovdqu 224(%rcx), %ymm11 + vpsubw %ymm4, %ymm6, %ymm12 + vpsubw %ymm5, %ymm9, %ymm13 + vpsubw %ymm7, %ymm8, %ymm3 + vpaddw %ymm6, %ymm4, %ymm4 + vpaddw %ymm9, %ymm5, %ymm5 + vpmullw %ymm12, %ymm1, %ymm6 + vpaddw %ymm8, %ymm7, %ymm7 + vpmullw %ymm13, %ymm1, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpmullw %ymm3, %ymm1, %ymm11 + vpmullw %ymm9, %ymm1, %ymm1 + vpmulhw %ymm12, %ymm2, %ymm12 + vpmulhw %ymm13, %ymm2, %ymm13 + vpmulhw %ymm3, %ymm2, %ymm3 + vpmulhw %ymm9, %ymm2, %ymm2 + vpmulhw %ymm6, %ymm0, %ymm6 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm11, %ymm0, %ymm9 + vpmulhw %ymm1, %ymm0, %ymm11 + vpsubw %ymm6, %ymm12, %ymm1 + vpsubw %ymm8, %ymm13, %ymm6 + vpsubw %ymm9, %ymm3, %ymm8 + vpsubw %ymm11, %ymm2, %ymm9 + vmovdqu glob_data + 352(%rip), %ymm2 + vmovdqu glob_data + 384(%rip), %ymm3 + vmovdqu %ymm1, 384(%rcx) + vmovdqu %ymm6, 416(%rcx) + vmovdqu %ymm8, 448(%rcx) + vmovdqu %ymm9, 480(%rcx) + vpmullw %ymm4, %ymm2, %ymm1 + vpmulhw %ymm4, %ymm3, %ymm4 + vpmulhw %ymm0, %ymm1, %ymm1 + vpsubw %ymm1, %ymm4, %ymm1 + vpmullw %ymm5, %ymm2, %ymm4 + vpmulhw %ymm5, %ymm3, %ymm5 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm5, %ymm4 + vpmullw %ymm7, %ymm2, %ymm5 + vpmulhw %ymm7, %ymm3, %ymm6 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm6, %ymm5 + vpmullw %ymm10, %ymm2, %ymm2 + vpmulhw %ymm10, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm0 + vpsubw %ymm0, %ymm3, %ymm0 + vmovdqu %ymm1, 128(%rcx) + vmovdqu %ymm4, 160(%rcx) + vmovdqu %ymm5, 192(%rcx) + vmovdqu %ymm0, 224(%rcx) + ret +L_poly_getnoise_eta1122_4x$1: + movq %rdx, 1984(%rsp) + vmovdqu (%rax), %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 320(%rsp) + vmovdqu %ymm0, 608(%rsp) + vmovdqu %ymm0, 896(%rsp) + movb %sil, 64(%rsp) + incb %sil + movb %sil, 352(%rsp) + incb %sil + movb %sil, 640(%rsp) + incb %sil + movb %sil, 928(%rsp) + leaq 1184(%rsp), %rax + leaq 32(%rsp), %rdx + leaq 320(%rsp), %rsi + leaq 608(%rsp), %rdi + leaq 896(%rsp), %r10 + call L_shake256_absorb4x_33$1 +L_poly_getnoise_eta1122_4x$4: + leaq 1184(%rsp), %rax + leaq 32(%rsp), %rbp + leaq 320(%rsp), %r10 + leaq 608(%rsp), %r11 + leaq 896(%rsp), %rbx + movq %rbp, %r12 + movq %r10, %r13 + movq %r11, %r14 + movq %rbx, %r15 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L_poly_getnoise_eta1122_4x$3: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r12) + vmovhpd %xmm1, (%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r14) + vmovhpd %xmm0, (%r15) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r12) + vmovhpd %xmm1, 8(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r14) + vmovhpd %xmm0, 8(%r15) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r12) + vmovhpd %xmm1, 16(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r14) + vmovhpd %xmm0, 16(%r15) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r12) + vmovhpd %xmm1, 24(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r14) + vmovhpd %xmm0, 24(%r15) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r12) + vmovhpd %xmm1, 32(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r14) + vmovhpd %xmm0, 32(%r15) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r12) + vmovhpd %xmm1, 40(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r14) + vmovhpd %xmm0, 40(%r15) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r12) + vmovhpd %xmm1, 48(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r14) + vmovhpd %xmm0, 48(%r15) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r12) + vmovhpd %xmm1, 56(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r14) + vmovhpd %xmm0, 56(%r15) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r12) + vmovhpd %xmm1, 64(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r14) + vmovhpd %xmm0, 64(%r15) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r12) + vmovhpd %xmm1, 72(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r14) + vmovhpd %xmm0, 72(%r15) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r12) + vmovhpd %xmm1, 80(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r14) + vmovhpd %xmm0, 80(%r15) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r12) + vmovhpd %xmm1, 88(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r14) + vmovhpd %xmm0, 88(%r15) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r12) + vmovhpd %xmm1, 96(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r14) + vmovhpd %xmm0, 96(%r15) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r12) + vmovhpd %xmm1, 104(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r14) + vmovhpd %xmm0, 104(%r15) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r12) + vmovhpd %xmm1, 112(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r14) + vmovhpd %xmm0, 112(%r15) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r12) + vmovhpd %xmm1, 120(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r14) + vmovhpd %xmm0, 120(%r15) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r12) + vmovhpd %xmm1, 128(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r14) + vmovhpd %xmm0, 128(%r15) + leaq 136(%rbp), %rbp + leaq 136(%r10), %r10 + leaq 136(%r11), %r11 + leaq 136(%rbx), %rbx + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L_poly_getnoise_eta1122_4x$2: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rbp) + vmovhpd %xmm1, (%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r11) + vmovhpd %xmm0, (%rbx) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rbp) + vmovhpd %xmm1, 8(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r11) + vmovhpd %xmm0, 8(%rbx) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rbp) + vmovhpd %xmm1, 16(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r11) + vmovhpd %xmm0, 16(%rbx) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rbp) + vmovhpd %xmm1, 24(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r11) + vmovhpd %xmm0, 24(%rbx) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rbp) + vmovhpd %xmm1, 32(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r11) + vmovhpd %xmm0, 32(%rbx) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rbp) + vmovhpd %xmm1, 40(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r11) + vmovhpd %xmm0, 40(%rbx) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rbp) + vmovhpd %xmm1, 48(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r11) + vmovhpd %xmm0, 48(%rbx) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rbp) + vmovhpd %xmm1, 56(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r11) + vmovhpd %xmm0, 56(%rbx) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rbp) + vmovhpd %xmm1, 64(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r11) + vmovhpd %xmm0, 64(%rbx) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rbp) + vmovhpd %xmm1, 72(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r11) + vmovhpd %xmm0, 72(%rbx) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rbp) + vmovhpd %xmm1, 80(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r11) + vmovhpd %xmm0, 80(%rbx) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rbp) + vmovhpd %xmm1, 88(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r11) + vmovhpd %xmm0, 88(%rbx) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rbp) + vmovhpd %xmm1, 96(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r11) + vmovhpd %xmm0, 96(%rbx) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rbp) + vmovhpd %xmm1, 104(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r11) + vmovhpd %xmm0, 104(%rbx) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rbp) + vmovhpd %xmm1, 112(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r11) + vmovhpd %xmm0, 112(%rbx) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rbp) + vmovhpd %xmm1, 120(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r11) + vmovhpd %xmm0, 120(%rbx) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rbp) + vmovhpd %xmm1, 128(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r11) + vmovhpd %xmm0, 128(%rbx) + movq 1984(%rsp), %rax + leaq 32(%rsp), %rdx + movl $2396745, 1992(%rsp) + movl $7190235, 1996(%rsp) + movl $7, 2000(%rsp) + movl $458752, 2004(%rsp) + movw $3, 2008(%rsp) + vpbroadcastd 1992(%rsp), %ymm0 + vpbroadcastd 1996(%rsp), %ymm1 + vpbroadcastd 2000(%rsp), %ymm2 + vpbroadcastd 2004(%rsp), %ymm3 + vpbroadcastw 2008(%rsp), %ymm4 + vmovdqu glob_data + 96(%rip), %ymm5 + vmovdqu (%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, (%rax) + vmovdqu %ymm6, 32(%rax) + vmovdqu 24(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 64(%rax) + vmovdqu %ymm6, 96(%rax) + vmovdqu 48(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 128(%rax) + vmovdqu %ymm6, 160(%rax) + vmovdqu 72(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 192(%rax) + vmovdqu %ymm6, 224(%rax) + vmovdqu 96(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 256(%rax) + vmovdqu %ymm6, 288(%rax) + vmovdqu 120(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 320(%rax) + vmovdqu %ymm6, 352(%rax) + vmovdqu 144(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 384(%rax) + vmovdqu %ymm6, 416(%rax) + vmovdqu 168(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm5 + vpsrld $1, %ymm5, %ymm6 + vpsrld $2, %ymm5, %ymm7 + vpand %ymm5, %ymm0, %ymm5 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm0 + vpaddd %ymm6, %ymm5, %ymm5 + vpaddd %ymm0, %ymm5, %ymm0 + vpsrld $3, %ymm0, %ymm5 + vpaddd %ymm1, %ymm0, %ymm0 + vpsubd %ymm5, %ymm0, %ymm0 + vpslld $10, %ymm0, %ymm1 + vpsrld $12, %ymm0, %ymm5 + vpsrld $2, %ymm0, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpand %ymm3, %ymm1, %ymm1 + vpand %ymm2, %ymm5, %ymm2 + vpand %ymm3, %ymm6, %ymm3 + vpaddw %ymm1, %ymm0, %ymm0 + vpaddw %ymm3, %ymm2, %ymm1 + vpsubw %ymm4, %ymm0, %ymm0 + vpsubw %ymm4, %ymm1, %ymm1 + vpunpckldq %ymm1, %ymm0, %ymm2 + vpunpckhdq %ymm1, %ymm0, %ymm0 + vperm2i128 $32, %ymm0, %ymm2, %ymm1 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm1, 448(%rax) + vmovdqu %ymm0, 480(%rax) + leaq 320(%rsp), %rax + movl $2396745, 2004(%rsp) + movl $7190235, 2000(%rsp) + movl $7, 1996(%rsp) + movl $458752, 1992(%rsp) + movw $3, 2008(%rsp) + vpbroadcastd 2004(%rsp), %ymm0 + vpbroadcastd 2000(%rsp), %ymm1 + vpbroadcastd 1996(%rsp), %ymm2 + vpbroadcastd 1992(%rsp), %ymm3 + vpbroadcastw 2008(%rsp), %ymm4 + vmovdqu glob_data + 96(%rip), %ymm5 + vmovdqu (%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, (%rcx) + vmovdqu %ymm6, 32(%rcx) + vmovdqu 24(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 64(%rcx) + vmovdqu %ymm6, 96(%rcx) + vmovdqu 48(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 128(%rcx) + vmovdqu %ymm6, 160(%rcx) + vmovdqu 72(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 192(%rcx) + vmovdqu %ymm6, 224(%rcx) + vmovdqu 96(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 256(%rcx) + vmovdqu %ymm6, 288(%rcx) + vmovdqu 120(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 320(%rcx) + vmovdqu %ymm6, 352(%rcx) + vmovdqu 144(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 384(%rcx) + vmovdqu %ymm6, 416(%rcx) + vmovdqu 168(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm5 + vpsrld $1, %ymm5, %ymm6 + vpsrld $2, %ymm5, %ymm7 + vpand %ymm5, %ymm0, %ymm5 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm0 + vpaddd %ymm6, %ymm5, %ymm5 + vpaddd %ymm0, %ymm5, %ymm0 + vpsrld $3, %ymm0, %ymm5 + vpaddd %ymm1, %ymm0, %ymm0 + vpsubd %ymm5, %ymm0, %ymm0 + vpslld $10, %ymm0, %ymm1 + vpsrld $12, %ymm0, %ymm5 + vpsrld $2, %ymm0, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpand %ymm3, %ymm1, %ymm1 + vpand %ymm2, %ymm5, %ymm2 + vpand %ymm3, %ymm6, %ymm3 + vpaddw %ymm1, %ymm0, %ymm0 + vpaddw %ymm3, %ymm2, %ymm1 + vpsubw %ymm4, %ymm0, %ymm0 + vpsubw %ymm4, %ymm1, %ymm1 + vpunpckldq %ymm1, %ymm0, %ymm2 + vpunpckhdq %ymm1, %ymm0, %ymm0 + vperm2i128 $32, %ymm0, %ymm2, %ymm1 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm1, 448(%rcx) + vmovdqu %ymm0, 480(%rcx) + leaq 608(%rsp), %rax + movl $1431655765, 1992(%rsp) + movl $858993459, 1996(%rsp) + movl $50529027, 2000(%rsp) + movl $252645135, 2004(%rsp) + vpbroadcastd 1992(%rsp), %ymm0 + vpbroadcastd 1996(%rsp), %ymm1 + vpbroadcastd 2000(%rsp), %ymm2 + vpbroadcastd 2004(%rsp), %ymm3 + vmovdqu (%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, (%r8) + vmovdqu %ymm7, 32(%r8) + vmovdqu %ymm6, 64(%r8) + vmovdqu %ymm4, 96(%r8) + vmovdqu 32(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 128(%r8) + vmovdqu %ymm7, 160(%r8) + vmovdqu %ymm6, 192(%r8) + vmovdqu %ymm4, 224(%r8) + vmovdqu 64(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 256(%r8) + vmovdqu %ymm7, 288(%r8) + vmovdqu %ymm6, 320(%r8) + vmovdqu %ymm4, 352(%r8) + vmovdqu 96(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm0 + vpaddb %ymm0, %ymm4, %ymm0 + vpsrlw $2, %ymm0, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpand %ymm4, %ymm1, %ymm4 + vpaddb %ymm1, %ymm0, %ymm0 + vpsubb %ymm4, %ymm0, %ymm0 + vpsrlw $4, %ymm0, %ymm1 + vpand %ymm0, %ymm3, %ymm0 + vpand %ymm1, %ymm3, %ymm1 + vpsubb %ymm2, %ymm0, %ymm0 + vpsubb %ymm2, %ymm1, %ymm1 + vpunpcklbw %ymm1, %ymm0, %ymm2 + vpunpckhbw %ymm1, %ymm0, %ymm0 + vmovdqu %xmm2, %xmm1 + vpmovsxbw %xmm1, %ymm1 + vextracti128 $1, %ymm2, %xmm2 + vpmovsxbw %xmm2, %ymm2 + vmovdqu %xmm0, %xmm3 + vpmovsxbw %xmm3, %ymm3 + vextracti128 $1, %ymm0, %xmm0 + vpmovsxbw %xmm0, %ymm0 + vmovdqu %ymm1, 384(%r8) + vmovdqu %ymm3, 416(%r8) + vmovdqu %ymm2, 448(%r8) + vmovdqu %ymm0, 480(%r8) + leaq 896(%rsp), %rax + movl $1431655765, 2004(%rsp) + movl $858993459, 2000(%rsp) + movl $50529027, 1996(%rsp) + movl $252645135, 1992(%rsp) + vpbroadcastd 2004(%rsp), %ymm0 + vpbroadcastd 2000(%rsp), %ymm1 + vpbroadcastd 1996(%rsp), %ymm2 + vpbroadcastd 1992(%rsp), %ymm3 + vmovdqu (%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, (%r9) + vmovdqu %ymm7, 32(%r9) + vmovdqu %ymm6, 64(%r9) + vmovdqu %ymm4, 96(%r9) + vmovdqu 32(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 128(%r9) + vmovdqu %ymm7, 160(%r9) + vmovdqu %ymm6, 192(%r9) + vmovdqu %ymm4, 224(%r9) + vmovdqu 64(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 256(%r9) + vmovdqu %ymm7, 288(%r9) + vmovdqu %ymm6, 320(%r9) + vmovdqu %ymm4, 352(%r9) + vmovdqu 96(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm0 + vpaddb %ymm0, %ymm4, %ymm0 + vpsrlw $2, %ymm0, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpand %ymm4, %ymm1, %ymm4 + vpaddb %ymm1, %ymm0, %ymm0 + vpsubb %ymm4, %ymm0, %ymm0 + vpsrlw $4, %ymm0, %ymm1 + vpand %ymm0, %ymm3, %ymm0 + vpand %ymm1, %ymm3, %ymm1 + vpsubb %ymm2, %ymm0, %ymm0 + vpsubb %ymm2, %ymm1, %ymm1 + vpunpcklbw %ymm1, %ymm0, %ymm2 + vpunpckhbw %ymm1, %ymm0, %ymm0 + vmovdqu %xmm2, %xmm1 + vpmovsxbw %xmm1, %ymm1 + vextracti128 $1, %ymm2, %xmm2 + vpmovsxbw %xmm2, %ymm2 + vmovdqu %xmm0, %xmm3 + vpmovsxbw %xmm3, %ymm3 + vextracti128 $1, %ymm0, %xmm0 + vpmovsxbw %xmm0, %ymm0 + vmovdqu %ymm1, 384(%r9) + vmovdqu %ymm3, 416(%r9) + vmovdqu %ymm2, 448(%r9) + vmovdqu %ymm0, 480(%r9) + ret +L_poly_getnoise_eta1_4x$1: + movq %rax, 1984(%rsp) + vmovdqu (%rdx), %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 320(%rsp) + vmovdqu %ymm0, 608(%rsp) + vmovdqu %ymm0, 896(%rsp) + movb %sil, 64(%rsp) + incb %sil + movb %sil, 352(%rsp) + incb %sil + movb %sil, 640(%rsp) + incb %sil + movb %sil, 928(%rsp) + leaq 1184(%rsp), %rax + leaq 32(%rsp), %rdx + leaq 320(%rsp), %rsi + leaq 608(%rsp), %rdi + leaq 896(%rsp), %r10 + call L_shake256_absorb4x_33$1 +L_poly_getnoise_eta1_4x$4: + leaq 1184(%rsp), %rax + leaq 32(%rsp), %rbp + leaq 320(%rsp), %r10 + leaq 608(%rsp), %r11 + leaq 896(%rsp), %rbx + movq %rbp, %r12 + movq %r10, %r13 + movq %r11, %r14 + movq %rbx, %r15 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L_poly_getnoise_eta1_4x$3: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r12) + vmovhpd %xmm1, (%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r14) + vmovhpd %xmm0, (%r15) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r12) + vmovhpd %xmm1, 8(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r14) + vmovhpd %xmm0, 8(%r15) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r12) + vmovhpd %xmm1, 16(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r14) + vmovhpd %xmm0, 16(%r15) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r12) + vmovhpd %xmm1, 24(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r14) + vmovhpd %xmm0, 24(%r15) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r12) + vmovhpd %xmm1, 32(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r14) + vmovhpd %xmm0, 32(%r15) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r12) + vmovhpd %xmm1, 40(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r14) + vmovhpd %xmm0, 40(%r15) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r12) + vmovhpd %xmm1, 48(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r14) + vmovhpd %xmm0, 48(%r15) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r12) + vmovhpd %xmm1, 56(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r14) + vmovhpd %xmm0, 56(%r15) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r12) + vmovhpd %xmm1, 64(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r14) + vmovhpd %xmm0, 64(%r15) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r12) + vmovhpd %xmm1, 72(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r14) + vmovhpd %xmm0, 72(%r15) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r12) + vmovhpd %xmm1, 80(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r14) + vmovhpd %xmm0, 80(%r15) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r12) + vmovhpd %xmm1, 88(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r14) + vmovhpd %xmm0, 88(%r15) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r12) + vmovhpd %xmm1, 96(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r14) + vmovhpd %xmm0, 96(%r15) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r12) + vmovhpd %xmm1, 104(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r14) + vmovhpd %xmm0, 104(%r15) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r12) + vmovhpd %xmm1, 112(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r14) + vmovhpd %xmm0, 112(%r15) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r12) + vmovhpd %xmm1, 120(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r14) + vmovhpd %xmm0, 120(%r15) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r12) + vmovhpd %xmm1, 128(%r13) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r14) + vmovhpd %xmm0, 128(%r15) + leaq 136(%rbp), %rbp + leaq 136(%r10), %r10 + leaq 136(%r11), %r11 + leaq 136(%rbx), %rbx + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L_poly_getnoise_eta1_4x$2: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rbp) + vmovhpd %xmm1, (%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r11) + vmovhpd %xmm0, (%rbx) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rbp) + vmovhpd %xmm1, 8(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r11) + vmovhpd %xmm0, 8(%rbx) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rbp) + vmovhpd %xmm1, 16(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r11) + vmovhpd %xmm0, 16(%rbx) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rbp) + vmovhpd %xmm1, 24(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r11) + vmovhpd %xmm0, 24(%rbx) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rbp) + vmovhpd %xmm1, 32(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r11) + vmovhpd %xmm0, 32(%rbx) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rbp) + vmovhpd %xmm1, 40(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r11) + vmovhpd %xmm0, 40(%rbx) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rbp) + vmovhpd %xmm1, 48(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r11) + vmovhpd %xmm0, 48(%rbx) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rbp) + vmovhpd %xmm1, 56(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r11) + vmovhpd %xmm0, 56(%rbx) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rbp) + vmovhpd %xmm1, 64(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r11) + vmovhpd %xmm0, 64(%rbx) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rbp) + vmovhpd %xmm1, 72(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r11) + vmovhpd %xmm0, 72(%rbx) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rbp) + vmovhpd %xmm1, 80(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r11) + vmovhpd %xmm0, 80(%rbx) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rbp) + vmovhpd %xmm1, 88(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r11) + vmovhpd %xmm0, 88(%rbx) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rbp) + vmovhpd %xmm1, 96(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r11) + vmovhpd %xmm0, 96(%rbx) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rbp) + vmovhpd %xmm1, 104(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r11) + vmovhpd %xmm0, 104(%rbx) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rbp) + vmovhpd %xmm1, 112(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r11) + vmovhpd %xmm0, 112(%rbx) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rbp) + vmovhpd %xmm1, 120(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r11) + vmovhpd %xmm0, 120(%rbx) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rbp) + vmovhpd %xmm1, 128(%r10) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r11) + vmovhpd %xmm0, 128(%rbx) + movq 1984(%rsp), %rax + leaq 32(%rsp), %rdx + movl $2396745, 1992(%rsp) + movl $7190235, 1996(%rsp) + movl $7, 2000(%rsp) + movl $458752, 2004(%rsp) + movw $3, 2008(%rsp) + vpbroadcastd 1992(%rsp), %ymm0 + vpbroadcastd 1996(%rsp), %ymm1 + vpbroadcastd 2000(%rsp), %ymm2 + vpbroadcastd 2004(%rsp), %ymm3 + vpbroadcastw 2008(%rsp), %ymm4 + vmovdqu glob_data + 96(%rip), %ymm5 + vmovdqu (%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, (%rax) + vmovdqu %ymm6, 32(%rax) + vmovdqu 24(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 64(%rax) + vmovdqu %ymm6, 96(%rax) + vmovdqu 48(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 128(%rax) + vmovdqu %ymm6, 160(%rax) + vmovdqu 72(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 192(%rax) + vmovdqu %ymm6, 224(%rax) + vmovdqu 96(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 256(%rax) + vmovdqu %ymm6, 288(%rax) + vmovdqu 120(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 320(%rax) + vmovdqu %ymm6, 352(%rax) + vmovdqu 144(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 384(%rax) + vmovdqu %ymm6, 416(%rax) + vmovdqu 168(%rdx), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm5 + vpsrld $1, %ymm5, %ymm6 + vpsrld $2, %ymm5, %ymm7 + vpand %ymm5, %ymm0, %ymm5 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm0 + vpaddd %ymm6, %ymm5, %ymm5 + vpaddd %ymm0, %ymm5, %ymm0 + vpsrld $3, %ymm0, %ymm5 + vpaddd %ymm1, %ymm0, %ymm0 + vpsubd %ymm5, %ymm0, %ymm0 + vpslld $10, %ymm0, %ymm1 + vpsrld $12, %ymm0, %ymm5 + vpsrld $2, %ymm0, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpand %ymm3, %ymm1, %ymm1 + vpand %ymm2, %ymm5, %ymm2 + vpand %ymm3, %ymm6, %ymm3 + vpaddw %ymm1, %ymm0, %ymm0 + vpaddw %ymm3, %ymm2, %ymm1 + vpsubw %ymm4, %ymm0, %ymm0 + vpsubw %ymm4, %ymm1, %ymm1 + vpunpckldq %ymm1, %ymm0, %ymm2 + vpunpckhdq %ymm1, %ymm0, %ymm0 + vperm2i128 $32, %ymm0, %ymm2, %ymm1 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm1, 448(%rax) + vmovdqu %ymm0, 480(%rax) + leaq 320(%rsp), %rax + movl $2396745, 2004(%rsp) + movl $7190235, 2000(%rsp) + movl $7, 1996(%rsp) + movl $458752, 1992(%rsp) + movw $3, 2008(%rsp) + vpbroadcastd 2004(%rsp), %ymm0 + vpbroadcastd 2000(%rsp), %ymm1 + vpbroadcastd 1996(%rsp), %ymm2 + vpbroadcastd 1992(%rsp), %ymm3 + vpbroadcastw 2008(%rsp), %ymm4 + vmovdqu glob_data + 96(%rip), %ymm5 + vmovdqu (%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, (%rcx) + vmovdqu %ymm6, 32(%rcx) + vmovdqu 24(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 64(%rcx) + vmovdqu %ymm6, 96(%rcx) + vmovdqu 48(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 128(%rcx) + vmovdqu %ymm6, 160(%rcx) + vmovdqu 72(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 192(%rcx) + vmovdqu %ymm6, 224(%rcx) + vmovdqu 96(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 256(%rcx) + vmovdqu %ymm6, 288(%rcx) + vmovdqu 120(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 320(%rcx) + vmovdqu %ymm6, 352(%rcx) + vmovdqu 144(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 384(%rcx) + vmovdqu %ymm6, 416(%rcx) + vmovdqu 168(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm5 + vpsrld $1, %ymm5, %ymm6 + vpsrld $2, %ymm5, %ymm7 + vpand %ymm5, %ymm0, %ymm5 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm0 + vpaddd %ymm6, %ymm5, %ymm5 + vpaddd %ymm0, %ymm5, %ymm0 + vpsrld $3, %ymm0, %ymm5 + vpaddd %ymm1, %ymm0, %ymm0 + vpsubd %ymm5, %ymm0, %ymm0 + vpslld $10, %ymm0, %ymm1 + vpsrld $12, %ymm0, %ymm5 + vpsrld $2, %ymm0, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpand %ymm3, %ymm1, %ymm1 + vpand %ymm2, %ymm5, %ymm2 + vpand %ymm3, %ymm6, %ymm3 + vpaddw %ymm1, %ymm0, %ymm0 + vpaddw %ymm3, %ymm2, %ymm1 + vpsubw %ymm4, %ymm0, %ymm0 + vpsubw %ymm4, %ymm1, %ymm1 + vpunpckldq %ymm1, %ymm0, %ymm2 + vpunpckhdq %ymm1, %ymm0, %ymm0 + vperm2i128 $32, %ymm0, %ymm2, %ymm1 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm1, 448(%rcx) + vmovdqu %ymm0, 480(%rcx) + leaq 608(%rsp), %rax + movl $2396745, 1992(%rsp) + movl $7190235, 1996(%rsp) + movl $7, 2000(%rsp) + movl $458752, 2004(%rsp) + movw $3, 2008(%rsp) + vpbroadcastd 1992(%rsp), %ymm0 + vpbroadcastd 1996(%rsp), %ymm1 + vpbroadcastd 2000(%rsp), %ymm2 + vpbroadcastd 2004(%rsp), %ymm3 + vpbroadcastw 2008(%rsp), %ymm4 + vmovdqu glob_data + 96(%rip), %ymm5 + vmovdqu (%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, (%r8) + vmovdqu %ymm6, 32(%r8) + vmovdqu 24(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 64(%r8) + vmovdqu %ymm6, 96(%r8) + vmovdqu 48(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 128(%r8) + vmovdqu %ymm6, 160(%r8) + vmovdqu 72(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 192(%r8) + vmovdqu %ymm6, 224(%r8) + vmovdqu 96(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 256(%r8) + vmovdqu %ymm6, 288(%r8) + vmovdqu 120(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 320(%r8) + vmovdqu %ymm6, 352(%r8) + vmovdqu 144(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 384(%r8) + vmovdqu %ymm6, 416(%r8) + vmovdqu 168(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm5 + vpsrld $1, %ymm5, %ymm6 + vpsrld $2, %ymm5, %ymm7 + vpand %ymm5, %ymm0, %ymm5 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm0 + vpaddd %ymm6, %ymm5, %ymm5 + vpaddd %ymm0, %ymm5, %ymm0 + vpsrld $3, %ymm0, %ymm5 + vpaddd %ymm1, %ymm0, %ymm0 + vpsubd %ymm5, %ymm0, %ymm0 + vpslld $10, %ymm0, %ymm1 + vpsrld $12, %ymm0, %ymm5 + vpsrld $2, %ymm0, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpand %ymm3, %ymm1, %ymm1 + vpand %ymm2, %ymm5, %ymm2 + vpand %ymm3, %ymm6, %ymm3 + vpaddw %ymm1, %ymm0, %ymm0 + vpaddw %ymm3, %ymm2, %ymm1 + vpsubw %ymm4, %ymm0, %ymm0 + vpsubw %ymm4, %ymm1, %ymm1 + vpunpckldq %ymm1, %ymm0, %ymm2 + vpunpckhdq %ymm1, %ymm0, %ymm0 + vperm2i128 $32, %ymm0, %ymm2, %ymm1 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm1, 448(%r8) + vmovdqu %ymm0, 480(%r8) + leaq 896(%rsp), %rax + movl $2396745, 2004(%rsp) + movl $7190235, 2000(%rsp) + movl $7, 1996(%rsp) + movl $458752, 1992(%rsp) + movw $3, 2008(%rsp) + vpbroadcastd 2004(%rsp), %ymm0 + vpbroadcastd 2000(%rsp), %ymm1 + vpbroadcastd 1996(%rsp), %ymm2 + vpbroadcastd 1992(%rsp), %ymm3 + vpbroadcastw 2008(%rsp), %ymm4 + vmovdqu glob_data + 96(%rip), %ymm5 + vmovdqu (%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, (%r9) + vmovdqu %ymm6, 32(%r9) + vmovdqu 24(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 64(%r9) + vmovdqu %ymm6, 96(%r9) + vmovdqu 48(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 128(%r9) + vmovdqu %ymm6, 160(%r9) + vmovdqu 72(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 192(%r9) + vmovdqu %ymm6, 224(%r9) + vmovdqu 96(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 256(%r9) + vmovdqu %ymm6, 288(%r9) + vmovdqu 120(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 320(%r9) + vmovdqu %ymm6, 352(%r9) + vmovdqu 144(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm6 + vpsrld $1, %ymm6, %ymm7 + vpsrld $2, %ymm6, %ymm8 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm7 + vpand %ymm8, %ymm0, %ymm8 + vpaddd %ymm7, %ymm6, %ymm6 + vpaddd %ymm8, %ymm6, %ymm6 + vpsrld $3, %ymm6, %ymm7 + vpaddd %ymm1, %ymm6, %ymm6 + vpsubd %ymm7, %ymm6, %ymm6 + vpslld $10, %ymm6, %ymm7 + vpsrld $12, %ymm6, %ymm8 + vpsrld $2, %ymm6, %ymm9 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm3, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpand %ymm3, %ymm9, %ymm9 + vpaddw %ymm7, %ymm6, %ymm6 + vpaddw %ymm9, %ymm8, %ymm7 + vpsubw %ymm4, %ymm6, %ymm6 + vpsubw %ymm4, %ymm7, %ymm7 + vpunpckldq %ymm7, %ymm6, %ymm8 + vpunpckhdq %ymm7, %ymm6, %ymm6 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vmovdqu %ymm7, 384(%r9) + vmovdqu %ymm6, 416(%r9) + vmovdqu 168(%rax), %ymm6 + vpermq $-108, %ymm6, %ymm6 + vpshufb %ymm5, %ymm6, %ymm5 + vpsrld $1, %ymm5, %ymm6 + vpsrld $2, %ymm5, %ymm7 + vpand %ymm5, %ymm0, %ymm5 + vpand %ymm6, %ymm0, %ymm6 + vpand %ymm7, %ymm0, %ymm0 + vpaddd %ymm6, %ymm5, %ymm5 + vpaddd %ymm0, %ymm5, %ymm0 + vpsrld $3, %ymm0, %ymm5 + vpaddd %ymm1, %ymm0, %ymm0 + vpsubd %ymm5, %ymm0, %ymm0 + vpslld $10, %ymm0, %ymm1 + vpsrld $12, %ymm0, %ymm5 + vpsrld $2, %ymm0, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpand %ymm3, %ymm1, %ymm1 + vpand %ymm2, %ymm5, %ymm2 + vpand %ymm3, %ymm6, %ymm3 + vpaddw %ymm1, %ymm0, %ymm0 + vpaddw %ymm3, %ymm2, %ymm1 + vpsubw %ymm4, %ymm0, %ymm0 + vpsubw %ymm4, %ymm1, %ymm1 + vpunpckldq %ymm1, %ymm0, %ymm2 + vpunpckhdq %ymm1, %ymm0, %ymm0 + vperm2i128 $32, %ymm0, %ymm2, %ymm1 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm1, 448(%r9) + vmovdqu %ymm0, 480(%r9) + ret +L_poly_getnoise$1: + movl $1431655765, 204(%rsp) + movl $858993459, 208(%rsp) + movl $50529027, 212(%rsp) + movl $252645135, 216(%rsp) + movq %rdx, 160(%rsp) + movq (%rcx), %rdx + movq %rdx, 168(%rsp) + movq 8(%rcx), %rdx + movq %rdx, 176(%rsp) + movq 16(%rcx), %rdx + movq %rdx, 184(%rsp) + movq 24(%rcx), %rcx + movq %rcx, 192(%rsp) + movb %al, 200(%rsp) + leaq 32(%rsp), %rax + leaq 168(%rsp), %rcx + leaq -248(%rsp), %rsp + call L_shake256_128_33$1 +L_poly_getnoise$2: + leaq 248(%rsp), %rsp + vpbroadcastd 204(%rsp), %ymm0 + vpbroadcastd 208(%rsp), %ymm1 + vpbroadcastd 212(%rsp), %ymm2 + vpbroadcastd 216(%rsp), %ymm3 + movq 160(%rsp), %rax + vmovdqu 32(%rsp), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, (%rax) + vmovdqu %ymm7, 32(%rax) + vmovdqu %ymm6, 64(%rax) + vmovdqu %ymm4, 96(%rax) + vmovdqu 64(%rsp), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 128(%rax) + vmovdqu %ymm7, 160(%rax) + vmovdqu %ymm6, 192(%rax) + vmovdqu %ymm4, 224(%rax) + vmovdqu 96(%rsp), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 256(%rax) + vmovdqu %ymm7, 288(%rax) + vmovdqu %ymm6, 320(%rax) + vmovdqu %ymm4, 352(%rax) + vmovdqu 128(%rsp), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm0 + vpaddb %ymm0, %ymm4, %ymm0 + vpsrlw $2, %ymm0, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpand %ymm4, %ymm1, %ymm4 + vpaddb %ymm1, %ymm0, %ymm0 + vpsubb %ymm4, %ymm0, %ymm0 + vpsrlw $4, %ymm0, %ymm1 + vpand %ymm0, %ymm3, %ymm0 + vpand %ymm1, %ymm3, %ymm1 + vpsubb %ymm2, %ymm0, %ymm0 + vpsubb %ymm2, %ymm1, %ymm1 + vpunpcklbw %ymm1, %ymm0, %ymm2 + vpunpckhbw %ymm1, %ymm0, %ymm0 + vmovdqu %xmm2, %xmm1 + vpmovsxbw %xmm1, %ymm1 + vextracti128 $1, %ymm2, %xmm2 + vpmovsxbw %xmm2, %ymm2 + vmovdqu %xmm0, %xmm3 + vpmovsxbw %xmm3, %ymm3 + vextracti128 $1, %ymm0, %xmm0 + vpmovsxbw %xmm0, %ymm0 + vmovdqu %ymm1, 384(%rax) + vmovdqu %ymm3, 416(%rax) + vmovdqu %ymm2, 448(%rax) + vmovdqu %ymm0, 480(%rax) + ret +L_poly_frommsg_1$1: + leaq glob_data + 288(%rip), %rsi + vmovdqu (%rsi), %ymm0 + vbroadcasti128 glob_data + 4144(%rip), %ymm1 + vbroadcasti128 glob_data + 4128(%rip), %ymm2 + vmovdqu (%rdi), %ymm3 + vpshufd $0, %ymm3, %ymm4 + vpsllvd %ymm1, %ymm4, %ymm4 + vpshufb %ymm2, %ymm4, %ymm4 + vpsllw $12, %ymm4, %ymm5 + vpsllw $8, %ymm4, %ymm6 + vpsllw $4, %ymm4, %ymm7 + vpsraw $15, %ymm5, %ymm5 + vpsraw $15, %ymm6, %ymm6 + vpsraw $15, %ymm7, %ymm7 + vpsraw $15, %ymm4, %ymm4 + vpand %ymm0, %ymm5, %ymm5 + vpand %ymm0, %ymm6, %ymm6 + vpand %ymm0, %ymm7, %ymm7 + vpand %ymm0, %ymm4, %ymm4 + vpunpcklqdq %ymm6, %ymm5, %ymm8 + vpunpckhqdq %ymm6, %ymm5, %ymm5 + vpunpcklqdq %ymm4, %ymm7, %ymm6 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vperm2i128 $32, %ymm4, %ymm5, %ymm8 + vperm2i128 $49, %ymm4, %ymm5, %ymm4 + vmovdqu %ymm7, (%rax) + vmovdqu %ymm8, 32(%rax) + vmovdqu %ymm6, 256(%rax) + vmovdqu %ymm4, 288(%rax) + vpshufd $85, %ymm3, %ymm4 + vpsllvd %ymm1, %ymm4, %ymm4 + vpshufb %ymm2, %ymm4, %ymm4 + vpsllw $12, %ymm4, %ymm5 + vpsllw $8, %ymm4, %ymm6 + vpsllw $4, %ymm4, %ymm7 + vpsraw $15, %ymm5, %ymm5 + vpsraw $15, %ymm6, %ymm6 + vpsraw $15, %ymm7, %ymm7 + vpsraw $15, %ymm4, %ymm4 + vpand %ymm0, %ymm5, %ymm5 + vpand %ymm0, %ymm6, %ymm6 + vpand %ymm0, %ymm7, %ymm7 + vpand %ymm0, %ymm4, %ymm4 + vpunpcklqdq %ymm6, %ymm5, %ymm8 + vpunpckhqdq %ymm6, %ymm5, %ymm5 + vpunpcklqdq %ymm4, %ymm7, %ymm6 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vperm2i128 $32, %ymm4, %ymm5, %ymm8 + vperm2i128 $49, %ymm4, %ymm5, %ymm4 + vmovdqu %ymm7, 64(%rax) + vmovdqu %ymm8, 96(%rax) + vmovdqu %ymm6, 320(%rax) + vmovdqu %ymm4, 352(%rax) + vpshufd $-86, %ymm3, %ymm4 + vpsllvd %ymm1, %ymm4, %ymm4 + vpshufb %ymm2, %ymm4, %ymm4 + vpsllw $12, %ymm4, %ymm5 + vpsllw $8, %ymm4, %ymm6 + vpsllw $4, %ymm4, %ymm7 + vpsraw $15, %ymm5, %ymm5 + vpsraw $15, %ymm6, %ymm6 + vpsraw $15, %ymm7, %ymm7 + vpsraw $15, %ymm4, %ymm4 + vpand %ymm0, %ymm5, %ymm5 + vpand %ymm0, %ymm6, %ymm6 + vpand %ymm0, %ymm7, %ymm7 + vpand %ymm0, %ymm4, %ymm4 + vpunpcklqdq %ymm6, %ymm5, %ymm8 + vpunpckhqdq %ymm6, %ymm5, %ymm5 + vpunpcklqdq %ymm4, %ymm7, %ymm6 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vperm2i128 $32, %ymm4, %ymm5, %ymm8 + vperm2i128 $49, %ymm4, %ymm5, %ymm4 + vmovdqu %ymm7, 128(%rax) + vmovdqu %ymm8, 160(%rax) + vmovdqu %ymm6, 384(%rax) + vmovdqu %ymm4, 416(%rax) + vpshufd $-1, %ymm3, %ymm3 + vpsllvd %ymm1, %ymm3, %ymm1 + vpshufb %ymm2, %ymm1, %ymm1 + vpsllw $12, %ymm1, %ymm2 + vpsllw $8, %ymm1, %ymm3 + vpsllw $4, %ymm1, %ymm4 + vpsraw $15, %ymm2, %ymm2 + vpsraw $15, %ymm3, %ymm3 + vpsraw $15, %ymm4, %ymm4 + vpsraw $15, %ymm1, %ymm1 + vpand %ymm0, %ymm2, %ymm2 + vpand %ymm0, %ymm3, %ymm3 + vpand %ymm0, %ymm4, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpunpcklqdq %ymm3, %ymm2, %ymm1 + vpunpckhqdq %ymm3, %ymm2, %ymm2 + vpunpcklqdq %ymm0, %ymm4, %ymm3 + vpunpckhqdq %ymm0, %ymm4, %ymm0 + vperm2i128 $32, %ymm3, %ymm1, %ymm4 + vperm2i128 $49, %ymm3, %ymm1, %ymm1 + vperm2i128 $32, %ymm0, %ymm2, %ymm3 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm4, 192(%rax) + vmovdqu %ymm3, 224(%rax) + vmovdqu %ymm1, 448(%rax) + vmovdqu %ymm0, 480(%rax) + ret +L_poly_frommont$1: + leaq glob_data + 480(%rip), %rcx + vmovdqu (%rcx), %ymm0 + leaq glob_data + 448(%rip), %rcx + vmovdqu (%rcx), %ymm1 + leaq glob_data + 192(%rip), %rcx + vmovdqu (%rcx), %ymm2 + vmovdqu (%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, (%rax) + vmovdqu 32(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 32(%rax) + vmovdqu 64(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 64(%rax) + vmovdqu 96(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 96(%rax) + vmovdqu 128(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 128(%rax) + vmovdqu 160(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 160(%rax) + vmovdqu 192(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 192(%rax) + vmovdqu 224(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 224(%rax) + vmovdqu 256(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 256(%rax) + vmovdqu 288(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 288(%rax) + vmovdqu 320(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 320(%rax) + vmovdqu 352(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 352(%rax) + vmovdqu 384(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 384(%rax) + vmovdqu 416(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 416(%rax) + vmovdqu 448(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 448(%rax) + vmovdqu 480(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm2 + vpmullw %ymm1, %ymm2, %ymm1 + vpmulhw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm4, %ymm0 + vmovdqu %ymm0, 480(%rax) + ret +L_poly_frombytes$1: + leaq glob_data + 320(%rip), %r9 + vmovdqu (%r9), %ymm0 + vmovdqu (%rsi), %ymm1 + vmovdqu 32(%rsi), %ymm2 + vmovdqu 64(%rsi), %ymm3 + vmovdqu 96(%rsi), %ymm4 + vmovdqu 128(%rsi), %ymm5 + vmovdqu 160(%rsi), %ymm6 + vperm2i128 $32, %ymm4, %ymm1, %ymm7 + vperm2i128 $49, %ymm4, %ymm1, %ymm4 + vperm2i128 $32, %ymm5, %ymm2, %ymm8 + vperm2i128 $49, %ymm5, %ymm2, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm5 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vpunpcklqdq %ymm1, %ymm7, %ymm6 + vpunpckhqdq %ymm1, %ymm7, %ymm1 + vpunpcklqdq %ymm5, %ymm4, %ymm2 + vpunpckhqdq %ymm5, %ymm4, %ymm5 + vpunpcklqdq %ymm3, %ymm8, %ymm7 + vpunpckhqdq %ymm3, %ymm8, %ymm3 + vmovsldup %ymm5, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm5, %ymm6, %ymm5 + vmovsldup %ymm7, %ymm6 + vpblendd $-86, %ymm6, %ymm1, %ymm6 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm7, %ymm1, %ymm7 + vmovsldup %ymm3, %ymm1 + vpblendd $-86, %ymm1, %ymm2, %ymm1 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm2 + vpslld $16, %ymm7, %ymm3 + vpblendw $-86, %ymm3, %ymm4, %ymm3 + vpsrld $16, %ymm4, %ymm4 + vpblendw $-86, %ymm7, %ymm4, %ymm4 + vpslld $16, %ymm1, %ymm7 + vpblendw $-86, %ymm7, %ymm5, %ymm7 + vpsrld $16, %ymm5, %ymm5 + vpblendw $-86, %ymm1, %ymm5, %ymm1 + vpslld $16, %ymm2, %ymm5 + vpblendw $-86, %ymm5, %ymm6, %ymm5 + vpsrld $16, %ymm6, %ymm6 + vpblendw $-86, %ymm2, %ymm6, %ymm2 + vpsrlw $12, %ymm3, %ymm6 + vpsllw $4, %ymm4, %ymm8 + vpor %ymm8, %ymm6, %ymm6 + vpand %ymm3, %ymm0, %ymm3 + vpand %ymm6, %ymm0, %ymm6 + vpsrlw $8, %ymm4, %ymm4 + vpsllw $8, %ymm7, %ymm8 + vpor %ymm8, %ymm4, %ymm4 + vpand %ymm4, %ymm0, %ymm4 + vpsrlw $4, %ymm7, %ymm7 + vpand %ymm7, %ymm0, %ymm7 + vpsrlw $12, %ymm1, %ymm8 + vpsllw $4, %ymm5, %ymm9 + vpor %ymm9, %ymm8, %ymm8 + vpand %ymm1, %ymm0, %ymm1 + vpand %ymm8, %ymm0, %ymm8 + vpsrlw $8, %ymm5, %ymm5 + vpsllw $8, %ymm2, %ymm9 + vpor %ymm9, %ymm5, %ymm5 + vpand %ymm5, %ymm0, %ymm5 + vpsrlw $4, %ymm2, %ymm2 + vpand %ymm2, %ymm0, %ymm2 + vmovdqu %ymm3, (%r8) + vmovdqu %ymm6, 32(%r8) + vmovdqu %ymm4, 64(%r8) + vmovdqu %ymm7, 96(%r8) + vmovdqu %ymm1, 128(%r8) + vmovdqu %ymm8, 160(%r8) + vmovdqu %ymm5, 192(%r8) + vmovdqu %ymm2, 224(%r8) + vmovdqu 192(%rsi), %ymm1 + vmovdqu 224(%rsi), %ymm2 + vmovdqu 256(%rsi), %ymm3 + vmovdqu 288(%rsi), %ymm4 + vmovdqu 320(%rsi), %ymm5 + vmovdqu 352(%rsi), %ymm6 + vperm2i128 $32, %ymm4, %ymm1, %ymm7 + vperm2i128 $49, %ymm4, %ymm1, %ymm4 + vperm2i128 $32, %ymm5, %ymm2, %ymm8 + vperm2i128 $49, %ymm5, %ymm2, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm5 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vpunpcklqdq %ymm1, %ymm7, %ymm6 + vpunpckhqdq %ymm1, %ymm7, %ymm1 + vpunpcklqdq %ymm5, %ymm4, %ymm2 + vpunpckhqdq %ymm5, %ymm4, %ymm5 + vpunpcklqdq %ymm3, %ymm8, %ymm7 + vpunpckhqdq %ymm3, %ymm8, %ymm3 + vmovsldup %ymm5, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm5, %ymm6, %ymm5 + vmovsldup %ymm7, %ymm6 + vpblendd $-86, %ymm6, %ymm1, %ymm6 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm7, %ymm1, %ymm7 + vmovsldup %ymm3, %ymm1 + vpblendd $-86, %ymm1, %ymm2, %ymm1 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm2 + vpslld $16, %ymm7, %ymm3 + vpblendw $-86, %ymm3, %ymm4, %ymm3 + vpsrld $16, %ymm4, %ymm4 + vpblendw $-86, %ymm7, %ymm4, %ymm4 + vpslld $16, %ymm1, %ymm7 + vpblendw $-86, %ymm7, %ymm5, %ymm7 + vpsrld $16, %ymm5, %ymm5 + vpblendw $-86, %ymm1, %ymm5, %ymm1 + vpslld $16, %ymm2, %ymm5 + vpblendw $-86, %ymm5, %ymm6, %ymm5 + vpsrld $16, %ymm6, %ymm6 + vpblendw $-86, %ymm2, %ymm6, %ymm2 + vpsrlw $12, %ymm3, %ymm6 + vpsllw $4, %ymm4, %ymm8 + vpor %ymm8, %ymm6, %ymm6 + vpand %ymm3, %ymm0, %ymm3 + vpand %ymm6, %ymm0, %ymm6 + vpsrlw $8, %ymm4, %ymm4 + vpsllw $8, %ymm7, %ymm8 + vpor %ymm8, %ymm4, %ymm4 + vpand %ymm4, %ymm0, %ymm4 + vpsrlw $4, %ymm7, %ymm7 + vpand %ymm7, %ymm0, %ymm7 + vpsrlw $12, %ymm1, %ymm8 + vpsllw $4, %ymm5, %ymm9 + vpor %ymm9, %ymm8, %ymm8 + vpand %ymm1, %ymm0, %ymm1 + vpand %ymm8, %ymm0, %ymm8 + vpsrlw $8, %ymm5, %ymm5 + vpsllw $8, %ymm2, %ymm9 + vpor %ymm9, %ymm5, %ymm5 + vpand %ymm5, %ymm0, %ymm5 + vpsrlw $4, %ymm2, %ymm2 + vpand %ymm2, %ymm0, %ymm0 + vmovdqu %ymm3, 256(%r8) + vmovdqu %ymm6, 288(%r8) + vmovdqu %ymm4, 320(%r8) + vmovdqu %ymm7, 352(%r8) + vmovdqu %ymm1, 384(%r8) + vmovdqu %ymm8, 416(%r8) + vmovdqu %ymm5, 448(%r8) + vmovdqu %ymm0, 480(%r8) + ret +L_poly_decompress$1: + leaq glob_data + 480(%rip), %rdi + vmovdqu (%rdi), %ymm0 + leaq glob_data + 128(%rip), %rdi + vmovdqu (%rdi), %ymm1 + vpbroadcastd glob_data + 6444(%rip), %ymm2 + vpbroadcastd glob_data + 6440(%rip), %ymm3 + vpxor %ymm4, %ymm4, %ymm4 + movq (%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, (%rcx) + movq 8(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 32(%rcx) + movq 16(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 64(%rcx) + movq 24(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 96(%rcx) + movq 32(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 128(%rcx) + movq 40(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 160(%rcx) + movq 48(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 192(%rcx) + movq 56(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 224(%rcx) + movq 64(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 256(%rcx) + movq 72(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 288(%rcx) + movq 80(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 320(%rcx) + movq 88(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 352(%rcx) + movq 96(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 384(%rcx) + movq 104(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 416(%rcx) + movq 112(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 448(%rcx) + movq 120(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm1 + vpand %ymm2, %ymm1, %ymm1 + vpmullw %ymm3, %ymm1, %ymm1 + vpmulhrsw %ymm0, %ymm1, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_compress_1$1: + call L_poly_csubq$1 +L_poly_compress_1$2: + leaq glob_data + 416(%rip), %rdx + vmovdqu (%rdx), %ymm0 + vpbroadcastw glob_data + 6460(%rip), %ymm1 + vpbroadcastw glob_data + 6458(%rip), %ymm2 + vpbroadcastw glob_data + 6456(%rip), %ymm3 + vmovdqu glob_data + 160(%rip), %ymm4 + vmovdqu (%rcx), %ymm5 + vmovdqu 32(%rcx), %ymm6 + vmovdqu 64(%rcx), %ymm7 + vmovdqu 96(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, (%rax) + vmovdqu 128(%rcx), %ymm5 + vmovdqu 160(%rcx), %ymm6 + vmovdqu 192(%rcx), %ymm7 + vmovdqu 224(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 32(%rax) + vmovdqu 256(%rcx), %ymm5 + vmovdqu 288(%rcx), %ymm6 + vmovdqu 320(%rcx), %ymm7 + vmovdqu 352(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 64(%rax) + vmovdqu 384(%rcx), %ymm5 + vmovdqu 416(%rcx), %ymm6 + vmovdqu 448(%rcx), %ymm7 + vmovdqu 480(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm0 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm0, %ymm0 + vpand %ymm2, %ymm5, %ymm1 + vpand %ymm2, %ymm6, %ymm5 + vpand %ymm2, %ymm7, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpackuswb %ymm5, %ymm1, %ymm1 + vpackuswb %ymm0, %ymm6, %ymm0 + vpmaddubsw %ymm3, %ymm1, %ymm1 + vpmaddubsw %ymm3, %ymm0, %ymm0 + vpackuswb %ymm0, %ymm1, %ymm0 + vpermd %ymm0, %ymm4, %ymm0 + vmovdqu %ymm0, 96(%rax) + ret +L_poly_compress$1: + call L_poly_csubq$1 +L_poly_compress$2: + leaq glob_data + 416(%rip), %rdx + vmovdqu (%rdx), %ymm0 + vpbroadcastw glob_data + 6460(%rip), %ymm1 + vpbroadcastw glob_data + 6458(%rip), %ymm2 + vpbroadcastw glob_data + 6456(%rip), %ymm3 + vmovdqu glob_data + 160(%rip), %ymm4 + vmovdqu (%rcx), %ymm5 + vmovdqu 32(%rcx), %ymm6 + vmovdqu 64(%rcx), %ymm7 + vmovdqu 96(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, (%rax) + vmovdqu 128(%rcx), %ymm5 + vmovdqu 160(%rcx), %ymm6 + vmovdqu 192(%rcx), %ymm7 + vmovdqu 224(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 32(%rax) + vmovdqu 256(%rcx), %ymm5 + vmovdqu 288(%rcx), %ymm6 + vmovdqu 320(%rcx), %ymm7 + vmovdqu 352(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 64(%rax) + vmovdqu 384(%rcx), %ymm5 + vmovdqu 416(%rcx), %ymm6 + vmovdqu 448(%rcx), %ymm7 + vmovdqu 480(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm0 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm0, %ymm0 + vpand %ymm2, %ymm5, %ymm1 + vpand %ymm2, %ymm6, %ymm5 + vpand %ymm2, %ymm7, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpackuswb %ymm5, %ymm1, %ymm1 + vpackuswb %ymm0, %ymm6, %ymm0 + vpmaddubsw %ymm3, %ymm1, %ymm1 + vpmaddubsw %ymm3, %ymm0, %ymm0 + vpackuswb %ymm0, %ymm1, %ymm0 + vpermd %ymm0, %ymm4, %ymm0 + vmovdqu %ymm0, 96(%rax) + ret +L_poly_basemul$1: + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu glob_data + 448(%rip), %ymm1 + vmovdqu glob_data + 1584(%rip), %ymm2 + vmovdqu glob_data + 1616(%rip), %ymm3 + vmovdqu (%rsi), %ymm4 + vmovdqu 32(%rsi), %ymm5 + vmovdqu (%rdi), %ymm6 + vmovdqu 32(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, (%rcx) + vmovdqu %ymm4, 32(%rcx) + vmovdqu 64(%rsi), %ymm4 + vmovdqu 96(%rsi), %ymm5 + vmovdqu 64(%rdi), %ymm6 + vmovdqu 96(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm4 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm2, %ymm2 + vmovdqu %ymm3, 64(%rcx) + vmovdqu %ymm2, 96(%rcx) + vmovdqu glob_data + 1648(%rip), %ymm2 + vmovdqu glob_data + 1680(%rip), %ymm3 + vmovdqu 128(%rsi), %ymm4 + vmovdqu 160(%rsi), %ymm5 + vmovdqu 128(%rdi), %ymm6 + vmovdqu 160(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, 128(%rcx) + vmovdqu %ymm4, 160(%rcx) + vmovdqu 192(%rsi), %ymm4 + vmovdqu 224(%rsi), %ymm5 + vmovdqu 192(%rdi), %ymm6 + vmovdqu 224(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm4 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm2, %ymm2 + vmovdqu %ymm3, 192(%rcx) + vmovdqu %ymm2, 224(%rcx) + vmovdqu glob_data + 1976(%rip), %ymm2 + vmovdqu glob_data + 2008(%rip), %ymm3 + vmovdqu 256(%rsi), %ymm4 + vmovdqu 288(%rsi), %ymm5 + vmovdqu 256(%rdi), %ymm6 + vmovdqu 288(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, 256(%rcx) + vmovdqu %ymm4, 288(%rcx) + vmovdqu 320(%rsi), %ymm4 + vmovdqu 352(%rsi), %ymm5 + vmovdqu 320(%rdi), %ymm6 + vmovdqu 352(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm4 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm2, %ymm2 + vmovdqu %ymm3, 320(%rcx) + vmovdqu %ymm2, 352(%rcx) + vmovdqu glob_data + 2040(%rip), %ymm2 + vmovdqu glob_data + 2072(%rip), %ymm3 + vmovdqu 384(%rsi), %ymm4 + vmovdqu 416(%rsi), %ymm5 + vmovdqu 384(%rdi), %ymm6 + vmovdqu 416(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, 384(%rcx) + vmovdqu %ymm4, 416(%rcx) + vmovdqu 448(%rsi), %ymm4 + vmovdqu 480(%rsi), %ymm5 + vmovdqu 448(%rdi), %ymm6 + vmovdqu 480(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm1 + vpmulhw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm3, 448(%rcx) + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_csubq$1: + vmovdqu glob_data + 480(%rip), %ymm0 + vmovdqu (%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, (%rcx) + vmovdqu 32(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 32(%rcx) + vmovdqu 64(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 64(%rcx) + vmovdqu 96(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 96(%rcx) + vmovdqu 128(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 128(%rcx) + vmovdqu 160(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 160(%rcx) + vmovdqu 192(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 192(%rcx) + vmovdqu 224(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 224(%rcx) + vmovdqu 256(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 256(%rcx) + vmovdqu 288(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 288(%rcx) + vmovdqu 320(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 320(%rcx) + vmovdqu 352(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 352(%rcx) + vmovdqu 384(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 384(%rcx) + vmovdqu 416(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 416(%rcx) + vmovdqu 448(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 448(%rcx) + vmovdqu 480(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm0 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_add2$1: + vmovdqu (%rcx), %ymm0 + vmovdqu (%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, (%rcx) + vmovdqu 32(%rcx), %ymm0 + vmovdqu 32(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rcx) + vmovdqu 64(%rcx), %ymm0 + vmovdqu 64(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 64(%rcx) + vmovdqu 96(%rcx), %ymm0 + vmovdqu 96(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 96(%rcx) + vmovdqu 128(%rcx), %ymm0 + vmovdqu 128(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 128(%rcx) + vmovdqu 160(%rcx), %ymm0 + vmovdqu 160(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 160(%rcx) + vmovdqu 192(%rcx), %ymm0 + vmovdqu 192(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 192(%rcx) + vmovdqu 224(%rcx), %ymm0 + vmovdqu 224(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 224(%rcx) + vmovdqu 256(%rcx), %ymm0 + vmovdqu 256(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 256(%rcx) + vmovdqu 288(%rcx), %ymm0 + vmovdqu 288(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 288(%rcx) + vmovdqu 320(%rcx), %ymm0 + vmovdqu 320(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 320(%rcx) + vmovdqu 352(%rcx), %ymm0 + vmovdqu 352(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 352(%rcx) + vmovdqu 384(%rcx), %ymm0 + vmovdqu 384(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 384(%rcx) + vmovdqu 416(%rcx), %ymm0 + vmovdqu 416(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 416(%rcx) + vmovdqu 448(%rcx), %ymm0 + vmovdqu 448(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 448(%rcx) + vmovdqu 480(%rcx), %ymm0 + vmovdqu 480(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_nttunpack$1: + vmovdqu (%rax), %ymm1 + vmovdqu 32(%rax), %ymm3 + vmovdqu 64(%rax), %ymm4 + vmovdqu 96(%rax), %ymm5 + vmovdqu 128(%rax), %ymm2 + vmovdqu 160(%rax), %ymm6 + vmovdqu 192(%rax), %ymm7 + vmovdqu 224(%rax), %ymm8 + vperm2i128 $32, %ymm2, %ymm1, %ymm0 + vperm2i128 $49, %ymm2, %ymm1, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm2 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vperm2i128 $32, %ymm7, %ymm4, %ymm6 + vperm2i128 $49, %ymm7, %ymm4, %ymm7 + vperm2i128 $32, %ymm8, %ymm5, %ymm9 + vperm2i128 $49, %ymm8, %ymm5, %ymm10 + vpunpcklqdq %ymm6, %ymm0, %ymm4 + vpunpckhqdq %ymm6, %ymm0, %ymm5 + vpunpcklqdq %ymm7, %ymm1, %ymm6 + vpunpckhqdq %ymm7, %ymm1, %ymm7 + vpunpcklqdq %ymm9, %ymm2, %ymm0 + vpunpckhqdq %ymm9, %ymm2, %ymm2 + vpunpcklqdq %ymm10, %ymm3, %ymm8 + vpunpckhqdq %ymm10, %ymm3, %ymm3 + vmovsldup %ymm0, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm9 + vpsrlq $32, %ymm4, %ymm1 + vpblendd $-86, %ymm0, %ymm1, %ymm0 + vmovsldup %ymm2, %ymm1 + vpblendd $-86, %ymm1, %ymm5, %ymm1 + vpsrlq $32, %ymm5, %ymm4 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vmovsldup %ymm8, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm5 + vpblendd $-86, %ymm8, %ymm5, %ymm5 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm7, %ymm6 + vpsrlq $32, %ymm7, %ymm7 + vpblendd $-86, %ymm3, %ymm7, %ymm3 + vpslld $16, %ymm4, %ymm7 + vpblendw $-86, %ymm7, %ymm9, %ymm7 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm4, %ymm8, %ymm4 + vpslld $16, %ymm5, %ymm8 + vpblendw $-86, %ymm8, %ymm0, %ymm8 + vpsrld $16, %ymm0, %ymm0 + vpblendw $-86, %ymm5, %ymm0, %ymm0 + vpslld $16, %ymm6, %ymm5 + vpblendw $-86, %ymm5, %ymm1, %ymm5 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm6, %ymm1, %ymm1 + vpslld $16, %ymm3, %ymm6 + vpblendw $-86, %ymm6, %ymm2, %ymm6 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm2 + vmovdqu %ymm7, (%rax) + vmovdqu %ymm4, 32(%rax) + vmovdqu %ymm8, 64(%rax) + vmovdqu %ymm0, 96(%rax) + vmovdqu %ymm5, 128(%rax) + vmovdqu %ymm1, 160(%rax) + vmovdqu %ymm6, 192(%rax) + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm1 + vmovdqu 288(%rax), %ymm3 + vmovdqu 320(%rax), %ymm4 + vmovdqu 352(%rax), %ymm5 + vmovdqu 384(%rax), %ymm2 + vmovdqu 416(%rax), %ymm6 + vmovdqu 448(%rax), %ymm7 + vmovdqu 480(%rax), %ymm8 + vperm2i128 $32, %ymm2, %ymm1, %ymm0 + vperm2i128 $49, %ymm2, %ymm1, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm2 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vperm2i128 $32, %ymm7, %ymm4, %ymm6 + vperm2i128 $49, %ymm7, %ymm4, %ymm7 + vperm2i128 $32, %ymm8, %ymm5, %ymm9 + vperm2i128 $49, %ymm8, %ymm5, %ymm10 + vpunpcklqdq %ymm6, %ymm0, %ymm4 + vpunpckhqdq %ymm6, %ymm0, %ymm5 + vpunpcklqdq %ymm7, %ymm1, %ymm6 + vpunpckhqdq %ymm7, %ymm1, %ymm7 + vpunpcklqdq %ymm9, %ymm2, %ymm0 + vpunpckhqdq %ymm9, %ymm2, %ymm2 + vpunpcklqdq %ymm10, %ymm3, %ymm8 + vpunpckhqdq %ymm10, %ymm3, %ymm3 + vmovsldup %ymm0, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm9 + vpsrlq $32, %ymm4, %ymm1 + vpblendd $-86, %ymm0, %ymm1, %ymm0 + vmovsldup %ymm2, %ymm1 + vpblendd $-86, %ymm1, %ymm5, %ymm1 + vpsrlq $32, %ymm5, %ymm4 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vmovsldup %ymm8, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm5 + vpblendd $-86, %ymm8, %ymm5, %ymm5 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm7, %ymm6 + vpsrlq $32, %ymm7, %ymm7 + vpblendd $-86, %ymm3, %ymm7, %ymm3 + vpslld $16, %ymm4, %ymm7 + vpblendw $-86, %ymm7, %ymm9, %ymm7 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm4, %ymm8, %ymm4 + vpslld $16, %ymm5, %ymm8 + vpblendw $-86, %ymm8, %ymm0, %ymm8 + vpsrld $16, %ymm0, %ymm0 + vpblendw $-86, %ymm5, %ymm0, %ymm0 + vpslld $16, %ymm6, %ymm5 + vpblendw $-86, %ymm5, %ymm1, %ymm5 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm6, %ymm1, %ymm1 + vpslld $16, %ymm3, %ymm6 + vpblendw $-86, %ymm6, %ymm2, %ymm6 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm2 + vmovdqu %ymm7, 256(%rax) + vmovdqu %ymm4, 288(%rax) + vmovdqu %ymm8, 320(%rax) + vmovdqu %ymm0, 352(%rax) + vmovdqu %ymm5, 384(%rax) + vmovdqu %ymm1, 416(%rax) + vmovdqu %ymm6, 448(%rax) + vmovdqu %ymm2, 480(%rax) + ret +L_shake256_absorb4x_33$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, (%rax) + vmovdqu %ymm0, 32(%rax) + vmovdqu %ymm0, 64(%rax) + vmovdqu %ymm0, 96(%rax) + vmovdqu %ymm0, 128(%rax) + vmovdqu %ymm0, 160(%rax) + vmovdqu %ymm0, 192(%rax) + vmovdqu %ymm0, 224(%rax) + vmovdqu %ymm0, 256(%rax) + vmovdqu %ymm0, 288(%rax) + vmovdqu %ymm0, 320(%rax) + vmovdqu %ymm0, 352(%rax) + vmovdqu %ymm0, 384(%rax) + vmovdqu %ymm0, 416(%rax) + vmovdqu %ymm0, 448(%rax) + vmovdqu %ymm0, 480(%rax) + vmovdqu %ymm0, 512(%rax) + vmovdqu %ymm0, 544(%rax) + vmovdqu %ymm0, 576(%rax) + vmovdqu %ymm0, 608(%rax) + vmovdqu %ymm0, 640(%rax) + vmovdqu %ymm0, 672(%rax) + vmovdqu %ymm0, 704(%rax) + vmovdqu %ymm0, 736(%rax) + vmovdqu %ymm0, 768(%rax) + movq (%rdx), %r11 + xorq %r11, (%rax) + movq (%rsi), %r11 + xorq %r11, 8(%rax) + movq (%rdi), %r11 + xorq %r11, 16(%rax) + movq (%r10), %r11 + xorq %r11, 24(%rax) + movq 8(%rdx), %r11 + xorq %r11, 32(%rax) + movq 8(%rsi), %r11 + xorq %r11, 40(%rax) + movq 8(%rdi), %r11 + xorq %r11, 48(%rax) + movq 8(%r10), %r11 + xorq %r11, 56(%rax) + movq 16(%rdx), %r11 + xorq %r11, 64(%rax) + movq 16(%rsi), %r11 + xorq %r11, 72(%rax) + movq 16(%rdi), %r11 + xorq %r11, 80(%rax) + movq 16(%r10), %r11 + xorq %r11, 88(%rax) + movq 24(%rdx), %r11 + xorq %r11, 96(%rax) + movq 24(%rsi), %r11 + xorq %r11, 104(%rax) + movq 24(%rdi), %r11 + xorq %r11, 112(%rax) + movq 24(%r10), %r11 + xorq %r11, 120(%rax) + movb 32(%rdx), %dl + xorb %dl, 128(%rax) + xorb $31, 129(%rax) + movb 32(%rsi), %dl + xorb %dl, 136(%rax) + xorb $31, 137(%rax) + movb 32(%rdi), %dl + xorb %dl, 144(%rax) + xorb $31, 145(%rax) + movb 32(%r10), %dl + xorb %dl, 152(%rax) + xorb $31, 153(%rax) + vmovdqu glob_data + 2112(%rip), %ymm0 + vmovdqu 512(%rax), %ymm1 + vpxor %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 512(%rax) + ret +L_shake128_absorb4x_34$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, (%rax) + vmovdqu %ymm0, 32(%rax) + vmovdqu %ymm0, 64(%rax) + vmovdqu %ymm0, 96(%rax) + vmovdqu %ymm0, 128(%rax) + vmovdqu %ymm0, 160(%rax) + vmovdqu %ymm0, 192(%rax) + vmovdqu %ymm0, 224(%rax) + vmovdqu %ymm0, 256(%rax) + vmovdqu %ymm0, 288(%rax) + vmovdqu %ymm0, 320(%rax) + vmovdqu %ymm0, 352(%rax) + vmovdqu %ymm0, 384(%rax) + vmovdqu %ymm0, 416(%rax) + vmovdqu %ymm0, 448(%rax) + vmovdqu %ymm0, 480(%rax) + vmovdqu %ymm0, 512(%rax) + vmovdqu %ymm0, 544(%rax) + vmovdqu %ymm0, 576(%rax) + vmovdqu %ymm0, 608(%rax) + vmovdqu %ymm0, 640(%rax) + vmovdqu %ymm0, 672(%rax) + vmovdqu %ymm0, 704(%rax) + vmovdqu %ymm0, 736(%rax) + vmovdqu %ymm0, 768(%rax) + movq (%rcx), %r8 + xorq %r8, (%rax) + movq (%rdx), %r8 + xorq %r8, 8(%rax) + movq (%rsi), %r8 + xorq %r8, 16(%rax) + movq (%rdi), %r8 + xorq %r8, 24(%rax) + movq 8(%rcx), %r8 + xorq %r8, 32(%rax) + movq 8(%rdx), %r8 + xorq %r8, 40(%rax) + movq 8(%rsi), %r8 + xorq %r8, 48(%rax) + movq 8(%rdi), %r8 + xorq %r8, 56(%rax) + movq 16(%rcx), %r8 + xorq %r8, 64(%rax) + movq 16(%rdx), %r8 + xorq %r8, 72(%rax) + movq 16(%rsi), %r8 + xorq %r8, 80(%rax) + movq 16(%rdi), %r8 + xorq %r8, 88(%rax) + movq 24(%rcx), %r8 + xorq %r8, 96(%rax) + movq 24(%rdx), %r8 + xorq %r8, 104(%rax) + movq 24(%rsi), %r8 + xorq %r8, 112(%rax) + movq 24(%rdi), %r8 + xorq %r8, 120(%rax) + movw 32(%rcx), %cx + xorw %cx, 128(%rax) + xorb $31, 130(%rax) + movw 32(%rdx), %cx + xorw %cx, 136(%rax) + xorb $31, 138(%rax) + movw 32(%rsi), %cx + xorw %cx, 144(%rax) + xorb $31, 146(%rax) + movw 32(%rdi), %cx + xorw %cx, 152(%rax) + xorb $31, 154(%rax) + vmovdqu glob_data + 2112(%rip), %ymm0 + vmovdqu 640(%rax), %ymm1 + vpxor %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 640(%rax) + ret +L_keccakf1600_4x_avx2$1: + leaq 32(%rsp), %rdx + leaq glob_data + 2208(%rip), %rsi + vmovdqu glob_data + 2144(%rip), %ymm0 + vmovdqu glob_data + 2176(%rip), %ymm1 + movq $0, %rdi +L_keccakf1600_4x_avx2$2: + vmovdqu (%rsi,%rdi), %ymm2 + vmovdqu (%rax), %ymm3 + vmovdqu 32(%rax), %ymm4 + vmovdqu 64(%rax), %ymm5 + vmovdqu 96(%rax), %ymm6 + vmovdqu 128(%rax), %ymm7 + vpxor 160(%rax), %ymm3, %ymm3 + vpxor 192(%rax), %ymm4, %ymm4 + vpxor 224(%rax), %ymm5, %ymm5 + vpxor 256(%rax), %ymm6, %ymm6 + vpxor 288(%rax), %ymm7, %ymm7 + vpxor 320(%rax), %ymm3, %ymm3 + vpxor 352(%rax), %ymm4, %ymm4 + vpxor 384(%rax), %ymm5, %ymm5 + vpxor 416(%rax), %ymm6, %ymm6 + vpxor 448(%rax), %ymm7, %ymm7 + vpxor 480(%rax), %ymm3, %ymm3 + vpxor 512(%rax), %ymm4, %ymm4 + vpxor 544(%rax), %ymm5, %ymm8 + vpxor 576(%rax), %ymm6, %ymm9 + vpxor 608(%rax), %ymm7, %ymm10 + vpxor 640(%rax), %ymm3, %ymm7 + vpxor 672(%rax), %ymm4, %ymm5 + vpxor 704(%rax), %ymm8, %ymm6 + vpxor 736(%rax), %ymm9, %ymm8 + vpxor 768(%rax), %ymm10, %ymm9 + vmovdqu %ymm5, %ymm3 + vpsllq $1, %ymm3, %ymm4 + vpsrlq $63, %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm3 + vpxor %ymm9, %ymm3, %ymm3 + vmovdqu %ymm6, %ymm4 + vpsllq $1, %ymm4, %ymm10 + vpsrlq $63, %ymm4, %ymm4 + vpor %ymm10, %ymm4, %ymm4 + vpxor %ymm7, %ymm4, %ymm4 + vmovdqu %ymm8, %ymm10 + vpsllq $1, %ymm10, %ymm11 + vpsrlq $63, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vpxor %ymm5, %ymm10, %ymm5 + vpsllq $1, %ymm9, %ymm10 + vpsrlq $63, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vpxor %ymm6, %ymm9, %ymm6 + vpsllq $1, %ymm7, %ymm9 + vpsrlq $63, %ymm7, %ymm7 + vpor %ymm9, %ymm7, %ymm7 + vpxor %ymm8, %ymm7, %ymm7 + vmovdqu (%rax), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vmovdqu 192(%rax), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $44, %ymm9, %ymm10 + vpsrlq $20, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 384(%rax), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $43, %ymm10, %ymm11 + vpsrlq $21, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 576(%rax), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpsllq $21, %ymm11, %ymm12 + vpsrlq $43, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vmovdqu 768(%rax), %ymm12 + vpxor %ymm7, %ymm12, %ymm12 + vpsllq $14, %ymm12, %ymm13 + vpsrlq $50, %ymm12, %ymm12 + vpor %ymm13, %ymm12, %ymm12 + vpandn %ymm10, %ymm9, %ymm13 + vpxor %ymm8, %ymm13, %ymm13 + vpxor %ymm2, %ymm13, %ymm2 + vmovdqu %ymm2, (%rdx) + vpandn %ymm11, %ymm10, %ymm2 + vpxor %ymm9, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rdx) + vpandn %ymm12, %ymm11, %ymm2 + vpxor %ymm10, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rdx) + vpandn %ymm8, %ymm12, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rdx) + vpandn %ymm9, %ymm8, %ymm2 + vpxor %ymm12, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rdx) + vmovdqu 96(%rax), %ymm2 + vpxor %ymm6, %ymm2, %ymm2 + vpsllq $28, %ymm2, %ymm8 + vpsrlq $36, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 288(%rax), %ymm8 + vpxor %ymm7, %ymm8, %ymm8 + vpsllq $20, %ymm8, %ymm9 + vpsrlq $44, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 320(%rax), %ymm9 + vpxor %ymm3, %ymm9, %ymm9 + vpsllq $3, %ymm9, %ymm10 + vpsrlq $61, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 512(%rax), %ymm10 + vpxor %ymm4, %ymm10, %ymm10 + vpsllq $45, %ymm10, %ymm11 + vpsrlq $19, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 704(%rax), %ymm11 + vpxor %ymm5, %ymm11, %ymm11 + vpsllq $61, %ymm11, %ymm12 + vpsrlq $3, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 160(%rdx) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 192(%rdx) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 224(%rdx) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 256(%rdx) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rdx) + vmovdqu 32(%rax), %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vpsllq $1, %ymm2, %ymm8 + vpsrlq $63, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 224(%rax), %ymm8 + vpxor %ymm5, %ymm8, %ymm8 + vpsllq $6, %ymm8, %ymm9 + vpsrlq $58, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 416(%rax), %ymm9 + vpxor %ymm6, %ymm9, %ymm9 + vpsllq $25, %ymm9, %ymm10 + vpsrlq $39, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 608(%rax), %ymm10 + vpxor %ymm7, %ymm10, %ymm10 + vpshufb %ymm0, %ymm10, %ymm10 + vmovdqu 640(%rax), %ymm11 + vpxor %ymm3, %ymm11, %ymm11 + vpsllq $18, %ymm11, %ymm12 + vpsrlq $46, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 320(%rdx) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 352(%rdx) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 384(%rdx) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 416(%rdx) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rdx) + vmovdqu 128(%rax), %ymm2 + vpxor %ymm7, %ymm2, %ymm2 + vpsllq $27, %ymm2, %ymm8 + vpsrlq $37, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 160(%rax), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vpsllq $36, %ymm8, %ymm9 + vpsrlq $28, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 352(%rax), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $10, %ymm9, %ymm10 + vpsrlq $54, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 544(%rax), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $15, %ymm10, %ymm11 + vpsrlq $49, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 736(%rax), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpshufb %ymm1, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 480(%rdx) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 512(%rdx) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 544(%rdx) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 576(%rdx) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 608(%rdx) + vmovdqu 64(%rax), %ymm2 + vpxor %ymm5, %ymm2, %ymm2 + vpsllq $62, %ymm2, %ymm5 + vpsrlq $2, %ymm2, %ymm2 + vpor %ymm5, %ymm2, %ymm2 + vmovdqu 256(%rax), %ymm5 + vpxor %ymm6, %ymm5, %ymm5 + vpsllq $55, %ymm5, %ymm6 + vpsrlq $9, %ymm5, %ymm5 + vpor %ymm6, %ymm5, %ymm5 + vmovdqu 448(%rax), %ymm6 + vpxor %ymm7, %ymm6, %ymm6 + vpsllq $39, %ymm6, %ymm7 + vpsrlq $25, %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm6 + vmovdqu 480(%rax), %ymm7 + vpxor %ymm3, %ymm7, %ymm3 + vpsllq $41, %ymm3, %ymm7 + vpsrlq $23, %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm3 + vmovdqu 672(%rax), %ymm7 + vpxor %ymm4, %ymm7, %ymm4 + vpsllq $2, %ymm4, %ymm7 + vpsrlq $62, %ymm4, %ymm4 + vpor %ymm7, %ymm4, %ymm4 + vpandn %ymm6, %ymm5, %ymm7 + vpxor %ymm2, %ymm7, %ymm7 + vmovdqu %ymm7, 640(%rdx) + vpandn %ymm3, %ymm6, %ymm7 + vpxor %ymm5, %ymm7, %ymm7 + vmovdqu %ymm7, 672(%rdx) + vpandn %ymm4, %ymm3, %ymm7 + vpxor %ymm6, %ymm7, %ymm6 + vmovdqu %ymm6, 704(%rdx) + vpandn %ymm2, %ymm4, %ymm6 + vpxor %ymm3, %ymm6, %ymm3 + vmovdqu %ymm3, 736(%rdx) + vpandn %ymm5, %ymm2, %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vmovdqu %ymm2, 768(%rdx) + vmovdqu 32(%rsi,%rdi), %ymm2 + vmovdqu (%rdx), %ymm3 + vmovdqu 32(%rdx), %ymm4 + vmovdqu 64(%rdx), %ymm5 + vmovdqu 96(%rdx), %ymm6 + vmovdqu 128(%rdx), %ymm7 + vpxor 160(%rdx), %ymm3, %ymm3 + vpxor 192(%rdx), %ymm4, %ymm4 + vpxor 224(%rdx), %ymm5, %ymm5 + vpxor 256(%rdx), %ymm6, %ymm6 + vpxor 288(%rdx), %ymm7, %ymm7 + vpxor 320(%rdx), %ymm3, %ymm3 + vpxor 352(%rdx), %ymm4, %ymm4 + vpxor 384(%rdx), %ymm5, %ymm5 + vpxor 416(%rdx), %ymm6, %ymm6 + vpxor 448(%rdx), %ymm7, %ymm7 + vpxor 480(%rdx), %ymm3, %ymm3 + vpxor 512(%rdx), %ymm4, %ymm4 + vpxor 544(%rdx), %ymm5, %ymm8 + vpxor 576(%rdx), %ymm6, %ymm9 + vpxor 608(%rdx), %ymm7, %ymm10 + vpxor 640(%rdx), %ymm3, %ymm7 + vpxor 672(%rdx), %ymm4, %ymm5 + vpxor 704(%rdx), %ymm8, %ymm6 + vpxor 736(%rdx), %ymm9, %ymm8 + vpxor 768(%rdx), %ymm10, %ymm9 + vmovdqu %ymm5, %ymm3 + vpsllq $1, %ymm3, %ymm4 + vpsrlq $63, %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm3 + vpxor %ymm9, %ymm3, %ymm3 + vmovdqu %ymm6, %ymm4 + vpsllq $1, %ymm4, %ymm10 + vpsrlq $63, %ymm4, %ymm4 + vpor %ymm10, %ymm4, %ymm4 + vpxor %ymm7, %ymm4, %ymm4 + vmovdqu %ymm8, %ymm10 + vpsllq $1, %ymm10, %ymm11 + vpsrlq $63, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vpxor %ymm5, %ymm10, %ymm5 + vpsllq $1, %ymm9, %ymm10 + vpsrlq $63, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vpxor %ymm6, %ymm9, %ymm6 + vpsllq $1, %ymm7, %ymm9 + vpsrlq $63, %ymm7, %ymm7 + vpor %ymm9, %ymm7, %ymm7 + vpxor %ymm8, %ymm7, %ymm7 + vmovdqu (%rdx), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vmovdqu 192(%rdx), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $44, %ymm9, %ymm10 + vpsrlq $20, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 384(%rdx), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $43, %ymm10, %ymm11 + vpsrlq $21, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 576(%rdx), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpsllq $21, %ymm11, %ymm12 + vpsrlq $43, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vmovdqu 768(%rdx), %ymm12 + vpxor %ymm7, %ymm12, %ymm12 + vpsllq $14, %ymm12, %ymm13 + vpsrlq $50, %ymm12, %ymm12 + vpor %ymm13, %ymm12, %ymm12 + vpandn %ymm10, %ymm9, %ymm13 + vpxor %ymm8, %ymm13, %ymm13 + vpxor %ymm2, %ymm13, %ymm2 + vmovdqu %ymm2, (%rax) + vpandn %ymm11, %ymm10, %ymm2 + vpxor %ymm9, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vpandn %ymm12, %ymm11, %ymm2 + vpxor %ymm10, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vpandn %ymm8, %ymm12, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vpandn %ymm9, %ymm8, %ymm2 + vpxor %ymm12, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 96(%rdx), %ymm2 + vpxor %ymm6, %ymm2, %ymm2 + vpsllq $28, %ymm2, %ymm8 + vpsrlq $36, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 288(%rdx), %ymm8 + vpxor %ymm7, %ymm8, %ymm8 + vpsllq $20, %ymm8, %ymm9 + vpsrlq $44, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 320(%rdx), %ymm9 + vpxor %ymm3, %ymm9, %ymm9 + vpsllq $3, %ymm9, %ymm10 + vpsrlq $61, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 512(%rdx), %ymm10 + vpxor %ymm4, %ymm10, %ymm10 + vpsllq $45, %ymm10, %ymm11 + vpsrlq $19, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 704(%rdx), %ymm11 + vpxor %ymm5, %ymm11, %ymm11 + vpsllq $61, %ymm11, %ymm12 + vpsrlq $3, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 160(%rax) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 192(%rax) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 224(%rax) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 256(%rax) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 32(%rdx), %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vpsllq $1, %ymm2, %ymm8 + vpsrlq $63, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 224(%rdx), %ymm8 + vpxor %ymm5, %ymm8, %ymm8 + vpsllq $6, %ymm8, %ymm9 + vpsrlq $58, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 416(%rdx), %ymm9 + vpxor %ymm6, %ymm9, %ymm9 + vpsllq $25, %ymm9, %ymm10 + vpsrlq $39, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 608(%rdx), %ymm10 + vpxor %ymm7, %ymm10, %ymm10 + vpshufb %ymm0, %ymm10, %ymm10 + vmovdqu 640(%rdx), %ymm11 + vpxor %ymm3, %ymm11, %ymm11 + vpsllq $18, %ymm11, %ymm12 + vpsrlq $46, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 320(%rax) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 352(%rax) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 384(%rax) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 416(%rax) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 128(%rdx), %ymm2 + vpxor %ymm7, %ymm2, %ymm2 + vpsllq $27, %ymm2, %ymm8 + vpsrlq $37, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 160(%rdx), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vpsllq $36, %ymm8, %ymm9 + vpsrlq $28, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 352(%rdx), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $10, %ymm9, %ymm10 + vpsrlq $54, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 544(%rdx), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $15, %ymm10, %ymm11 + vpsrlq $49, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 736(%rdx), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpshufb %ymm1, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 480(%rax) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 512(%rax) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 544(%rax) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 576(%rax) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 608(%rax) + vmovdqu 64(%rdx), %ymm2 + vpxor %ymm5, %ymm2, %ymm2 + vpsllq $62, %ymm2, %ymm5 + vpsrlq $2, %ymm2, %ymm2 + vpor %ymm5, %ymm2, %ymm2 + vmovdqu 256(%rdx), %ymm5 + vpxor %ymm6, %ymm5, %ymm5 + vpsllq $55, %ymm5, %ymm6 + vpsrlq $9, %ymm5, %ymm5 + vpor %ymm6, %ymm5, %ymm5 + vmovdqu 448(%rdx), %ymm6 + vpxor %ymm7, %ymm6, %ymm6 + vpsllq $39, %ymm6, %ymm7 + vpsrlq $25, %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm6 + vmovdqu 480(%rdx), %ymm7 + vpxor %ymm3, %ymm7, %ymm3 + vpsllq $41, %ymm3, %ymm7 + vpsrlq $23, %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm3 + vmovdqu 672(%rdx), %ymm7 + vpxor %ymm4, %ymm7, %ymm4 + vpsllq $2, %ymm4, %ymm7 + vpsrlq $62, %ymm4, %ymm4 + vpor %ymm7, %ymm4, %ymm4 + vpandn %ymm6, %ymm5, %ymm7 + vpxor %ymm2, %ymm7, %ymm7 + vmovdqu %ymm7, 640(%rax) + vpandn %ymm3, %ymm6, %ymm7 + vpxor %ymm5, %ymm7, %ymm7 + vmovdqu %ymm7, 672(%rax) + vpandn %ymm4, %ymm3, %ymm7 + vpxor %ymm6, %ymm7, %ymm6 + vmovdqu %ymm6, 704(%rax) + vpandn %ymm2, %ymm4, %ymm6 + vpxor %ymm3, %ymm6, %ymm3 + vmovdqu %ymm3, 736(%rax) + vpandn %ymm5, %ymm2, %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vmovdqu %ymm2, 768(%rax) + addq $64, %rdi + cmpq $768, %rdi + jb L_keccakf1600_4x_avx2$2 + ret +L_sha3_512_32$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rcx), %ymm6 + movq 8(%rcx), %rdx + movq glob_data + 6240(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 16(%rcx), %rdx + movq glob_data + 6248(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 24(%rcx), %rcx + movq glob_data + 6256(%rip), %rdx + movq %rcx, 32(%rsp,%rdx,8) + movq glob_data + 6264(%rip), %rcx + shlq $3, %rcx + movb $6, 32(%rsp,%rcx) + movq glob_data + 6296(%rip), %rcx + shlq $3, %rcx + movq $71, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + vmovdqu 64(%rsp), %ymm0 + vmovdqu 96(%rsp), %ymm1 + vmovdqu 128(%rsp), %ymm2 + vmovdqu 160(%rsp), %ymm3 + vmovdqu 192(%rsp), %ymm4 + vmovdqu 224(%rsp), %ymm5 + leaq glob_data + 3360(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3168(%rip), %rsi + leaq glob_data + 2976(%rip), %rdi + movq $24, %r8 +L_sha3_512_32$2: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_512_32$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm1, 96(%rsp) + vmovdqu %ymm2, 128(%rsp) + vmovdqu %ymm3, 160(%rsp) + vmovdqu %ymm4, 192(%rsp) + vmovdqu %ymm5, 224(%rsp) + movq glob_data + 6232(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6240(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6248(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6256(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6264(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6272(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6280(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6288(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + ret +L_sha3_512_64$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rcx), %ymm6 + movq 8(%rcx), %rdx + movq glob_data + 6240(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 16(%rcx), %rdx + movq glob_data + 6248(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 24(%rcx), %rdx + movq glob_data + 6256(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 32(%rcx), %rdx + movq glob_data + 6264(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 40(%rcx), %rdx + movq glob_data + 6272(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 48(%rcx), %rdx + movq glob_data + 6280(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 56(%rcx), %rcx + movq glob_data + 6288(%rip), %rdx + movq %rcx, 32(%rsp,%rdx,8) + movq glob_data + 6296(%rip), %rcx + shlq $3, %rcx + movb $6, 32(%rsp,%rcx) + movq glob_data + 6296(%rip), %rcx + shlq $3, %rcx + movq $71, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + vmovdqu 64(%rsp), %ymm0 + vmovdqu 96(%rsp), %ymm1 + vmovdqu 128(%rsp), %ymm2 + vmovdqu 160(%rsp), %ymm3 + vmovdqu 192(%rsp), %ymm4 + vmovdqu 224(%rsp), %ymm5 + leaq glob_data + 3360(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3168(%rip), %rsi + leaq glob_data + 2976(%rip), %rdi + movq $24, %r8 +L_sha3_512_64$2: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_512_64$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm1, 96(%rsp) + vmovdqu %ymm2, 128(%rsp) + vmovdqu %ymm3, 160(%rsp) + vmovdqu %ymm4, 192(%rsp) + vmovdqu %ymm5, 224(%rsp) + movq glob_data + 6232(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6240(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6248(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6256(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6264(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6272(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6280(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6288(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + ret +L_shake256_128_33$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rcx), %ymm6 + movq 8(%rcx), %rdx + movq glob_data + 6240(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 16(%rcx), %rdx + movq glob_data + 6248(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 24(%rcx), %rdx + movq glob_data + 6256(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movb 32(%rcx), %cl + movq glob_data + 6264(%rip), %rdx + shlq $3, %rdx + movb %cl, 32(%rsp,%rdx) + incq %rdx + movb $31, 32(%rsp,%rdx) + movq glob_data + 6360(%rip), %rcx + shlq $3, %rcx + movq $135, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + vmovdqu 64(%rsp), %ymm0 + vmovdqu 96(%rsp), %ymm1 + vmovdqu 128(%rsp), %ymm2 + vmovdqu 160(%rsp), %ymm3 + vmovdqu 192(%rsp), %ymm4 + vmovdqu 224(%rsp), %ymm5 + leaq glob_data + 3360(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3168(%rip), %rsi + leaq glob_data + 2976(%rip), %rdi + movq $24, %r8 +L_shake256_128_33$2: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L_shake256_128_33$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm1, 96(%rsp) + vmovdqu %ymm2, 128(%rsp) + vmovdqu %ymm3, 160(%rsp) + vmovdqu %ymm4, 192(%rsp) + vmovdqu %ymm5, 224(%rsp) + movq glob_data + 6232(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6240(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6248(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6256(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6264(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6272(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6280(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6288(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6296(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6304(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6312(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6320(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6328(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6336(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6344(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6352(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + ret +L_shake256_64$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rax), %ymm4 + movq glob_data + 6240(%rip), %rsi + movq 8(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6248(%rip), %rsi + movq 16(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6256(%rip), %rsi + movq 24(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6264(%rip), %rsi + movq 32(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6272(%rip), %rsi + movq 40(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6280(%rip), %rsi + movq 48(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6288(%rip), %rsi + movq 56(%rax), %rax + movq %rax, 32(%rsp,%rsi,8) + movq glob_data + 6296(%rip), %rax + shlq $3, %rax + movb $31, 32(%rsp,%rax) + movq glob_data + 6360(%rip), %rax + shlq $3, %rax + movq $135, %rsi + andq $7, %rsi + addq %rsi, %rax + xorb $-128, 32(%rsp,%rax) + vmovdqu 64(%rsp), %ymm5 + vmovdqu 96(%rsp), %ymm0 + vmovdqu 128(%rsp), %ymm1 + vmovdqu 160(%rsp), %ymm6 + vmovdqu 192(%rsp), %ymm2 + vmovdqu 224(%rsp), %ymm3 + movq $136, %rsi + leaq glob_data + 6232(%rip), %rax + jmp L_shake256_64$7 +L_shake256_64$8: + leaq glob_data + 3360(%rip), %rdi + movq $0, %r8 + leaq glob_data + 3168(%rip), %r9 + leaq glob_data + 2976(%rip), %r10 + movq $24, %r11 +L_shake256_64$11: + vpshufd $78, %ymm0, %ymm8 + vpxor %ymm1, %ymm2, %ymm7 + vpxor %ymm3, %ymm6, %ymm9 + vpxor %ymm5, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm0, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm4, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm0, %ymm0 + vpxor %ymm11, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%r9), %ymm0, %ymm7 + vpsrlvq (%r10), %ymm0, %ymm0 + vpor %ymm7, %ymm0, %ymm0 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 64(%r9), %ymm1, %ymm7 + vpsrlvq 64(%r10), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%r9), %ymm6, %ymm7 + vpsrlvq 96(%r10), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 128(%r9), %ymm2, %ymm6 + vpsrlvq 128(%r10), %ymm2, %ymm2 + vpor %ymm6, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpermq $-115, %ymm0, %ymm6 + vpermq $-115, %ymm1, %ymm7 + vpsllvq 160(%r9), %ymm3, %ymm0 + vpsrlvq 160(%r10), %ymm3, %ymm1 + vpor %ymm0, %ymm1, %ymm8 + vpxor %ymm9, %ymm5, %ymm0 + vpermq $27, %ymm10, %ymm5 + vpermq $114, %ymm2, %ymm9 + vpsllvq 32(%r9), %ymm0, %ymm1 + vpsrlvq 32(%r10), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm1 + vpblendd $12, %ymm9, %ymm10, %ymm0 + vpblendd $12, %ymm10, %ymm7, %ymm2 + vpblendd $12, %ymm7, %ymm6, %ymm3 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm0, %ymm0 + vpblendd $48, %ymm5, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm3, %ymm3 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm5, %ymm0, %ymm0 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm2, %ymm0, %ymm0 + vpandn %ymm11, %ymm3, %ymm3 + vpblendd $12, %ymm10, %ymm5, %ymm11 + vpblendd $12, %ymm5, %ymm6, %ymm12 + vpxor %ymm6, %ymm0, %ymm2 + vpblendd $48, %ymm6, %ymm11, %ymm0 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm5, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm0, %ymm0 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm0, %ymm0 + vpxor %ymm9, %ymm0, %ymm12 + vpermq $30, %ymm8, %ymm0 + vpblendd $48, %ymm4, %ymm0, %ymm0 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm4, %ymm11, %ymm11 + vpandn %ymm0, %ymm11, %ymm11 + vpblendd $12, %ymm5, %ymm7, %ymm0 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm0, %ymm0 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm0, %ymm0 + vpblendd $-64, %ymm5, %ymm13, %ymm13 + vpandn %ymm13, %ymm0, %ymm0 + vpxor %ymm10, %ymm0, %ymm0 + vpermq $0, %ymm1, %ymm13 + vpermq $27, %ymm2, %ymm1 + vpermq $-115, %ymm3, %ymm2 + vpermq $114, %ymm12, %ymm3 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm5, %ymm9 + vpblendd $48, %ymm5, %ymm12, %ymm5 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm5, %ymm5 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm5, %ymm6 + vpxor %ymm13, %ymm4, %ymm4 + vpxor %ymm8, %ymm11, %ymm5 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rdi,%r8), %ymm4, %ymm4 + addq $32, %r8 + decq %r11 + jne L_shake256_64$11 + vmovdqu %ymm4, 32(%rsp) + vmovdqu %ymm5, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm1, 128(%rsp) + vmovdqu %ymm6, 160(%rsp) + vmovdqu %ymm2, 192(%rsp) + vmovdqu %ymm3, 224(%rsp) + movq %rsi, %rdi + shrq $3, %rdi + movq $0, %r8 + jmp L_shake256_64$9 +L_shake256_64$10: + movq (%rax,%r8,8), %r9 + movq 32(%rsp,%r9,8), %r9 + movq %r9, (%rdx,%r8,8) + incq %r8 +L_shake256_64$9: + cmpq %rdi, %r8 + jb L_shake256_64$10 + addq %rsi, %rdx + subq %rsi, %rcx +L_shake256_64$7: + cmpq %rsi, %rcx + jnbe L_shake256_64$8 + leaq glob_data + 3360(%rip), %rsi + movq $0, %rdi + leaq glob_data + 3168(%rip), %r8 + leaq glob_data + 2976(%rip), %r9 + movq $24, %r10 +L_shake256_64$6: + vpshufd $78, %ymm0, %ymm8 + vpxor %ymm1, %ymm2, %ymm7 + vpxor %ymm3, %ymm6, %ymm9 + vpxor %ymm5, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm0, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm4, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm0, %ymm0 + vpxor %ymm11, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%r8), %ymm0, %ymm7 + vpsrlvq (%r9), %ymm0, %ymm0 + vpor %ymm7, %ymm0, %ymm0 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 64(%r8), %ymm1, %ymm7 + vpsrlvq 64(%r9), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%r8), %ymm6, %ymm7 + vpsrlvq 96(%r9), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 128(%r8), %ymm2, %ymm6 + vpsrlvq 128(%r9), %ymm2, %ymm2 + vpor %ymm6, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpermq $-115, %ymm0, %ymm6 + vpermq $-115, %ymm1, %ymm7 + vpsllvq 160(%r8), %ymm3, %ymm0 + vpsrlvq 160(%r9), %ymm3, %ymm1 + vpor %ymm0, %ymm1, %ymm8 + vpxor %ymm9, %ymm5, %ymm0 + vpermq $27, %ymm10, %ymm5 + vpermq $114, %ymm2, %ymm9 + vpsllvq 32(%r8), %ymm0, %ymm1 + vpsrlvq 32(%r9), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm1 + vpblendd $12, %ymm9, %ymm10, %ymm0 + vpblendd $12, %ymm10, %ymm7, %ymm2 + vpblendd $12, %ymm7, %ymm6, %ymm3 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm0, %ymm0 + vpblendd $48, %ymm5, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm3, %ymm3 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm5, %ymm0, %ymm0 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm2, %ymm0, %ymm0 + vpandn %ymm11, %ymm3, %ymm3 + vpblendd $12, %ymm10, %ymm5, %ymm11 + vpblendd $12, %ymm5, %ymm6, %ymm12 + vpxor %ymm6, %ymm0, %ymm2 + vpblendd $48, %ymm6, %ymm11, %ymm0 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm5, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm0, %ymm0 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm0, %ymm0 + vpxor %ymm9, %ymm0, %ymm12 + vpermq $30, %ymm8, %ymm0 + vpblendd $48, %ymm4, %ymm0, %ymm0 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm4, %ymm11, %ymm11 + vpandn %ymm0, %ymm11, %ymm11 + vpblendd $12, %ymm5, %ymm7, %ymm0 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm0, %ymm0 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm0, %ymm0 + vpblendd $-64, %ymm5, %ymm13, %ymm13 + vpandn %ymm13, %ymm0, %ymm0 + vpxor %ymm10, %ymm0, %ymm0 + vpermq $0, %ymm1, %ymm13 + vpermq $27, %ymm2, %ymm1 + vpermq $-115, %ymm3, %ymm2 + vpermq $114, %ymm12, %ymm3 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm5, %ymm9 + vpblendd $48, %ymm5, %ymm12, %ymm5 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm5, %ymm5 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm5, %ymm6 + vpxor %ymm13, %ymm4, %ymm4 + vpxor %ymm8, %ymm11, %ymm5 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rsi,%rdi), %ymm4, %ymm4 + addq $32, %rdi + decq %r10 + jne L_shake256_64$6 + vmovdqu %ymm4, 32(%rsp) + vmovdqu %ymm5, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm1, 128(%rsp) + vmovdqu %ymm6, 160(%rsp) + vmovdqu %ymm2, 192(%rsp) + vmovdqu %ymm3, 224(%rsp) + movq %rcx, %rsi + shrq $3, %rsi + movq $0, %rdi + jmp L_shake256_64$4 +L_shake256_64$5: + movq (%rax,%rdi,8), %r8 + movq 32(%rsp,%r8,8), %r8 + movq %r8, (%rdx,%rdi,8) + incq %rdi +L_shake256_64$4: + cmpq %rsi, %rdi + jb L_shake256_64$5 + movq (%rax,%rdi,8), %rax + shlq $3, %rdi + shlq $3, %rax + jmp L_shake256_64$2 +L_shake256_64$3: + movb 32(%rsp,%rax), %sil + movb %sil, (%rdx,%rdi) + incq %rdi + incq %rax +L_shake256_64$2: + cmpq %rcx, %rdi + jb L_shake256_64$3 + ret +L_sha3_256_32$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rcx), %ymm6 + movq 8(%rcx), %rdx + movq glob_data + 6240(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 16(%rcx), %rdx + movq glob_data + 6248(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 24(%rcx), %rcx + movq glob_data + 6256(%rip), %rdx + movq %rcx, 32(%rsp,%rdx,8) + movq glob_data + 6264(%rip), %rcx + shlq $3, %rcx + movb $6, 32(%rsp,%rcx) + movq glob_data + 6360(%rip), %rcx + shlq $3, %rcx + movq $135, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + vmovdqu 64(%rsp), %ymm0 + vmovdqu 96(%rsp), %ymm1 + vmovdqu 128(%rsp), %ymm2 + vmovdqu 160(%rsp), %ymm3 + vmovdqu 192(%rsp), %ymm4 + vmovdqu 224(%rsp), %ymm5 + leaq glob_data + 3360(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3168(%rip), %rsi + leaq glob_data + 2976(%rip), %rdi + movq $24, %r8 +L_sha3_256_32$2: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_256_32$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm1, 96(%rsp) + vmovdqu %ymm2, 128(%rsp) + vmovdqu %ymm3, 160(%rsp) + vmovdqu %ymm4, 192(%rsp) + vmovdqu %ymm5, 224(%rsp) + movq glob_data + 6232(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6240(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6248(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6256(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + ret +L_sha3_256$1: + vpxor %ymm6, %ymm6, %ymm6 + vpxor %ymm3, %ymm3, %ymm3 + vpxor %ymm4, %ymm4, %ymm4 + vpxor %ymm0, %ymm0, %ymm0 + vpxor %ymm5, %ymm5, %ymm5 + vpxor %ymm1, %ymm1, %ymm1 + vpxor %ymm2, %ymm2, %ymm2 + movb $6, %cl + movq $136, %rdx + leaq glob_data + 6232(%rip), %rsi + vpxor %ymm7, %ymm7, %ymm7 + vmovdqu %ymm7, 32(%rsp) + vmovdqu %ymm7, 64(%rsp) + vmovdqu %ymm7, 96(%rsp) + vmovdqu %ymm7, 128(%rsp) + vmovdqu %ymm7, 160(%rsp) + vmovdqu %ymm7, 192(%rsp) + vmovdqu %ymm7, 224(%rsp) + jmp L_sha3_256$7 +L_sha3_256$8: + movq %rdx, %r9 + shrq $3, %r9 + movq $0, %r10 + jmp L_sha3_256$10 +L_sha3_256$11: + movq (%r8,%r10,8), %r11 + movq (%rsi,%r10,8), %rbx + movq %r11, 32(%rsp,%rbx,8) + incq %r10 +L_sha3_256$10: + cmpq %r9, %r10 + jb L_sha3_256$11 + movq 32(%rsp), %r9 + movq %r9, 40(%rsp) + movq %r9, 48(%rsp) + movq %r9, 56(%rsp) + vpxor 32(%rsp), %ymm6, %ymm6 + vpxor 64(%rsp), %ymm3, %ymm3 + vpxor 96(%rsp), %ymm4, %ymm4 + vpxor 128(%rsp), %ymm0, %ymm0 + vpxor 160(%rsp), %ymm5, %ymm5 + vpxor 192(%rsp), %ymm1, %ymm1 + vpxor 224(%rsp), %ymm2, %ymm2 + addq %rdx, %r8 + subq %rdx, %rdi + leaq glob_data + 3360(%rip), %r9 + movq $0, %r10 + leaq glob_data + 3168(%rip), %r11 + leaq glob_data + 2976(%rip), %rbx + movq $24, %rbp +L_sha3_256$9: + vpshufd $78, %ymm4, %ymm8 + vpxor %ymm0, %ymm1, %ymm7 + vpxor %ymm2, %ymm5, %ymm9 + vpxor %ymm3, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm4, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm4, %ymm4 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%r11), %ymm4, %ymm7 + vpsrlvq (%rbx), %ymm4, %ymm4 + vpor %ymm7, %ymm4, %ymm4 + vpxor %ymm9, %ymm0, %ymm0 + vpsllvq 64(%r11), %ymm0, %ymm7 + vpsrlvq 64(%rbx), %ymm0, %ymm0 + vpor %ymm7, %ymm0, %ymm0 + vpxor %ymm9, %ymm5, %ymm5 + vpsllvq 96(%r11), %ymm5, %ymm7 + vpsrlvq 96(%rbx), %ymm5, %ymm5 + vpor %ymm7, %ymm5, %ymm10 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 128(%r11), %ymm1, %ymm5 + vpsrlvq 128(%rbx), %ymm1, %ymm1 + vpor %ymm5, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpermq $-115, %ymm4, %ymm5 + vpermq $-115, %ymm0, %ymm7 + vpsllvq 160(%r11), %ymm2, %ymm0 + vpsrlvq 160(%rbx), %ymm2, %ymm2 + vpor %ymm0, %ymm2, %ymm8 + vpxor %ymm9, %ymm3, %ymm0 + vpermq $27, %ymm10, %ymm3 + vpermq $114, %ymm1, %ymm9 + vpsllvq 32(%r11), %ymm0, %ymm1 + vpsrlvq 32(%rbx), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm0 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm2 + vpblendd $12, %ymm7, %ymm5, %ymm4 + vpblendd $12, %ymm5, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm2, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm2 + vpblendd $12, %ymm10, %ymm3, %ymm4 + vpblendd $12, %ymm3, %ymm5, %ymm11 + vpxor %ymm5, %ymm1, %ymm1 + vpblendd $48, %ymm5, %ymm4, %ymm4 + vpblendd $48, %ymm7, %ymm11, %ymm11 + vpxor %ymm3, %ymm2, %ymm2 + vpblendd $-64, %ymm7, %ymm4, %ymm4 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm4, %ymm4 + vpxor %ymm9, %ymm4, %ymm12 + vpermq $30, %ymm8, %ymm4 + vpblendd $48, %ymm6, %ymm4, %ymm4 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm4, %ymm11, %ymm11 + vpblendd $12, %ymm3, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm4, %ymm4 + vpblendd $48, %ymm5, %ymm13, %ymm13 + vpblendd $-64, %ymm5, %ymm4, %ymm4 + vpblendd $-64, %ymm3, %ymm13, %ymm13 + vpandn %ymm13, %ymm4, %ymm4 + vpxor %ymm10, %ymm4, %ymm4 + vpermq $0, %ymm0, %ymm13 + vpermq $27, %ymm1, %ymm0 + vpermq $-115, %ymm2, %ymm1 + vpermq $114, %ymm12, %ymm2 + vpblendd $12, %ymm5, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm3, %ymm9 + vpblendd $48, %ymm3, %ymm12, %ymm3 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm3, %ymm3 + vpblendd $-64, %ymm5, %ymm9, %ymm5 + vpandn %ymm5, %ymm3, %ymm5 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm3 + vpxor %ymm7, %ymm5, %ymm5 + vpxor (%r9,%r10), %ymm6, %ymm6 + addq $32, %r10 + decq %rbp + jne L_sha3_256$9 +L_sha3_256$7: + cmpq %rdx, %rdi + jnb L_sha3_256$8 + vpxor %ymm7, %ymm7, %ymm7 + vmovdqu %ymm7, 32(%rsp) + vmovdqu %ymm7, 64(%rsp) + vmovdqu %ymm7, 96(%rsp) + vmovdqu %ymm7, 128(%rsp) + vmovdqu %ymm7, 160(%rsp) + vmovdqu %ymm7, 192(%rsp) + vmovdqu %ymm7, 224(%rsp) + movq %rdi, %r9 + shrq $3, %r9 + movq $0, %r10 + jmp L_sha3_256$5 +L_sha3_256$6: + movq (%r8,%r10,8), %r11 + movq (%rsi,%r10,8), %rbx + movq %r11, 32(%rsp,%rbx,8) + incq %r10 +L_sha3_256$5: + cmpq %r9, %r10 + jb L_sha3_256$6 + movq (%rsi,%r10,8), %r9 + shlq $3, %r9 + shlq $3, %r10 + jmp L_sha3_256$3 +L_sha3_256$4: + movb (%r8,%r10), %r11b + movb %r11b, 32(%rsp,%r9) + incq %r10 + incq %r9 +L_sha3_256$3: + cmpq %rdi, %r10 + jb L_sha3_256$4 + movb %cl, 32(%rsp,%r9) + movq %rdx, %rcx + addq $-1, %rcx + shrq $3, %rcx + movq (%rsi,%rcx,8), %rcx + shlq $3, %rcx + addq $-1, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + movq 32(%rsp), %rcx + movq %rcx, 40(%rsp) + movq %rcx, 48(%rsp) + movq %rcx, 56(%rsp) + vpxor 32(%rsp), %ymm6, %ymm6 + vpxor 64(%rsp), %ymm3, %ymm7 + vpxor 96(%rsp), %ymm4, %ymm3 + vpxor 128(%rsp), %ymm0, %ymm0 + vpxor 160(%rsp), %ymm5, %ymm4 + vpxor 192(%rsp), %ymm1, %ymm1 + vpxor 224(%rsp), %ymm2, %ymm2 + leaq glob_data + 3360(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3168(%rip), %rsi + leaq glob_data + 2976(%rip), %rdi + movq $24, %r8 +L_sha3_256$2: + vpshufd $78, %ymm3, %ymm5 + vpxor %ymm0, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm9 + vpxor %ymm7, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm10 + vpermq $-109, %ymm10, %ymm8 + vpxor %ymm3, %ymm5, %ymm5 + vpermq $78, %ymm5, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm8, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm5, %ymm5 + vpxor %ymm9, %ymm5, %ymm9 + vpsrlq $63, %ymm9, %ymm5 + vpaddq %ymm9, %ymm9, %ymm12 + vpor %ymm5, %ymm12, %ymm12 + vpxor %ymm11, %ymm3, %ymm3 + vpxor %ymm11, %ymm6, %ymm5 + vpblendd $-64, %ymm12, %ymm10, %ymm6 + vpblendd $3, %ymm9, %ymm8, %ymm8 + vpxor %ymm8, %ymm6, %ymm9 + vpsllvq (%rsi), %ymm3, %ymm6 + vpsrlvq (%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm0, %ymm0 + vpsllvq 64(%rsi), %ymm0, %ymm6 + vpsrlvq 64(%rdi), %ymm0, %ymm0 + vpor %ymm6, %ymm0, %ymm0 + vpxor %ymm9, %ymm4, %ymm4 + vpsllvq 96(%rsi), %ymm4, %ymm6 + vpsrlvq 96(%rdi), %ymm4, %ymm4 + vpor %ymm6, %ymm4, %ymm10 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 128(%rsi), %ymm1, %ymm4 + vpsrlvq 128(%rdi), %ymm1, %ymm1 + vpor %ymm4, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpermq $-115, %ymm3, %ymm4 + vpermq $-115, %ymm0, %ymm6 + vpsllvq 160(%rsi), %ymm2, %ymm0 + vpsrlvq 160(%rdi), %ymm2, %ymm2 + vpor %ymm0, %ymm2, %ymm8 + vpxor %ymm9, %ymm7, %ymm0 + vpermq $27, %ymm10, %ymm7 + vpermq $114, %ymm1, %ymm9 + vpsllvq 32(%rsi), %ymm0, %ymm1 + vpsrlvq 32(%rdi), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm0 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm6, %ymm2 + vpblendd $12, %ymm6, %ymm4, %ymm3 + vpblendd $12, %ymm4, %ymm10, %ymm11 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpblendd $48, %ymm7, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm3, %ymm3 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm2, %ymm1, %ymm1 + vpandn %ymm11, %ymm3, %ymm2 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm4, %ymm11 + vpxor %ymm4, %ymm1, %ymm1 + vpblendd $48, %ymm4, %ymm3, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm11 + vpxor %ymm7, %ymm2, %ymm2 + vpblendd $-64, %ymm6, %ymm3, %ymm3 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm3, %ymm3 + vpxor %ymm9, %ymm3, %ymm12 + vpermq $30, %ymm8, %ymm3 + vpblendd $48, %ymm5, %ymm3, %ymm3 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm3, %ymm11, %ymm11 + vpblendd $12, %ymm7, %ymm6, %ymm3 + vpblendd $12, %ymm6, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm3, %ymm3 + vpblendd $48, %ymm4, %ymm13, %ymm13 + vpblendd $-64, %ymm4, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm13, %ymm13 + vpandn %ymm13, %ymm3, %ymm3 + vpxor %ymm10, %ymm3, %ymm3 + vpermq $0, %ymm0, %ymm13 + vpermq $27, %ymm1, %ymm0 + vpermq $-115, %ymm2, %ymm1 + vpermq $114, %ymm12, %ymm2 + vpblendd $12, %ymm4, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm7, %ymm9 + vpblendd $48, %ymm7, %ymm12, %ymm7 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm7, %ymm7 + vpblendd $-64, %ymm4, %ymm9, %ymm4 + vpandn %ymm4, %ymm7, %ymm4 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm7 + vpxor %ymm6, %ymm4, %ymm4 + vpxor (%rcx,%rdx), %ymm5, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_256$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm7, 64(%rsp) + vmovdqu %ymm3, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm4, 160(%rsp) + vmovdqu %ymm1, 192(%rsp) + vmovdqu %ymm2, 224(%rsp) + leaq glob_data + 6232(%rip), %rcx + movq (%rcx), %rdx + movq 32(%rsp,%rdx,8), %rdx + movq %rdx, (%rax) + movq 8(%rcx), %rdx + movq 32(%rsp,%rdx,8), %rdx + movq %rdx, 8(%rax) + movq 16(%rcx), %rdx + movq 32(%rsp,%rdx,8), %rdx + movq %rdx, 16(%rax) + movq 24(%rcx), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + ret + .data + .p2align 5 +_glob_data: +glob_data: + .byte 0 + .byte 1 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 7 + .byte 8 + .byte 9 + .byte 10 + .byte 10 + .byte 11 + .byte 4 + .byte 5 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 8 + .byte 9 + .byte 10 + .byte 11 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 14 + .byte 15 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 8 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 8 + .byte 0 + .byte 1 + .byte 1 + .byte 2 + .byte 2 + .byte 3 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 6 + .byte 7 + .byte 7 + .byte 8 + .byte 8 + .byte 9 + .byte 2 + .byte 3 + .byte 3 + .byte 4 + .byte 4 + .byte 5 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 8 + .byte 9 + .byte 9 + .byte 10 + .byte 10 + .byte 11 + .byte 0 + .byte 1 + .byte 2 + .byte -1 + .byte 3 + .byte 4 + .byte 5 + .byte -1 + .byte 6 + .byte 7 + .byte 8 + .byte -1 + .byte 9 + .byte 10 + .byte 11 + .byte -1 + .byte 4 + .byte 5 + .byte 6 + .byte -1 + .byte 7 + .byte 8 + .byte 9 + .byte -1 + .byte 10 + .byte 11 + .byte 12 + .byte -1 + .byte 13 + .byte 14 + .byte 15 + .byte -1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 1 + .byte 1 + .byte 1 + .byte 2 + .byte 2 + .byte 2 + .byte 2 + .byte 3 + .byte 3 + .byte 3 + .byte 3 + .byte 4 + .byte 4 + .byte 4 + .byte 4 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 6 + .byte 6 + .byte 6 + .byte 6 + .byte 7 + .byte 7 + .byte 7 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte -91 + .byte -91 + .byte -76 + .byte -31 + .byte 34 + .byte 79 + .byte 52 + .byte 93 + .byte 35 + .byte 68 + .byte 86 + .byte -91 + .byte -25 + .byte 78 + .byte -6 + .byte 83 + .byte 123 + .byte -57 + .byte 37 + .byte 43 + .byte 55 + .byte 58 + .byte -120 + .byte 24 + .byte -127 + .byte 126 + .byte 5 + .byte -60 + .byte -97 + .byte -9 + .byte -72 + .byte -80 + .byte -91 + .byte 6 + .byte -76 + .byte 5 + .byte 34 + .byte 9 + .byte 52 + .byte 1 + .byte 35 + .byte 11 + .byte 86 + .byte 3 + .byte -25 + .byte 9 + .byte -6 + .byte 5 + .byte 123 + .byte 6 + .byte 37 + .byte 12 + .byte 55 + .byte 5 + .byte -120 + .byte 0 + .byte -127 + .byte 11 + .byte 5 + .byte 5 + .byte -97 + .byte 10 + .byte -72 + .byte 8 + .byte 15 + .byte 68 + .byte 67 + .byte -94 + .byte 29 + .byte -112 + .byte 108 + .byte -124 + .byte 102 + .byte -43 + .byte -26 + .byte 87 + .byte -2 + .byte 30 + .byte -95 + .byte -41 + .byte -93 + .byte -67 + .byte 106 + .byte -95 + .byte 63 + .byte -43 + .byte -65 + .byte 81 + .byte -71 + .byte -96 + .byte -41 + .byte 28 + .byte -90 + .byte -100 + .byte -48 + .byte 121 + .byte 15 + .byte 7 + .byte 67 + .byte 9 + .byte 29 + .byte 9 + .byte 108 + .byte 0 + .byte 102 + .byte 3 + .byte -26 + .byte 5 + .byte -2 + .byte 4 + .byte -95 + .byte 4 + .byte -93 + .byte 4 + .byte 106 + .byte 3 + .byte 63 + .byte 8 + .byte -65 + .byte 4 + .byte -71 + .byte 5 + .byte -41 + .byte 7 + .byte -90 + .byte 10 + .byte -48 + .byte 9 + .byte -5 + .byte 69 + .byte 92 + .byte 94 + .byte 41 + .byte -17 + .byte 65 + .byte -66 + .byte -43 + .byte 49 + .byte -28 + .byte 113 + .byte 64 + .byte -55 + .byte -114 + .byte -53 + .byte -73 + .byte -72 + .byte -9 + .byte 117 + .byte -115 + .byte -36 + .byte -106 + .byte 110 + .byte -61 + .byte 34 + .byte 15 + .byte 62 + .byte 90 + .byte 110 + .byte 85 + .byte -78 + .byte -5 + .byte 4 + .byte 92 + .byte 10 + .byte 41 + .byte 4 + .byte 65 + .byte 11 + .byte -43 + .byte 2 + .byte -28 + .byte 5 + .byte 64 + .byte 9 + .byte -114 + .byte 1 + .byte -73 + .byte 3 + .byte -9 + .byte 0 + .byte -115 + .byte 5 + .byte -106 + .byte 12 + .byte -61 + .byte 9 + .byte 15 + .byte 1 + .byte 90 + .byte 0 + .byte 85 + .byte 3 + .byte 35 + .byte 63 + .byte 35 + .byte 63 + .byte -51 + .byte -105 + .byte -51 + .byte -105 + .byte 102 + .byte -35 + .byte 102 + .byte -35 + .byte 6 + .byte -72 + .byte 6 + .byte -72 + .byte -95 + .byte -35 + .byte -95 + .byte -35 + .byte 37 + .byte 41 + .byte 37 + .byte 41 + .byte 8 + .byte -95 + .byte 8 + .byte -95 + .byte -87 + .byte 109 + .byte -87 + .byte 109 + .byte 35 + .byte 6 + .byte 35 + .byte 6 + .byte -51 + .byte 0 + .byte -51 + .byte 0 + .byte 102 + .byte 11 + .byte 102 + .byte 11 + .byte 6 + .byte 6 + .byte 6 + .byte 6 + .byte -95 + .byte 10 + .byte -95 + .byte 10 + .byte 37 + .byte 10 + .byte 37 + .byte 10 + .byte 8 + .byte 9 + .byte 8 + .byte 9 + .byte -87 + .byte 2 + .byte -87 + .byte 2 + .byte 69 + .byte -122 + .byte 69 + .byte -122 + .byte 69 + .byte -122 + .byte 69 + .byte -122 + .byte -62 + .byte 43 + .byte -62 + .byte 43 + .byte -62 + .byte 43 + .byte -62 + .byte 43 + .byte -78 + .byte -6 + .byte -78 + .byte -6 + .byte -78 + .byte -6 + .byte -78 + .byte -6 + .byte 63 + .byte -42 + .byte 63 + .byte -42 + .byte 63 + .byte -42 + .byte 63 + .byte -42 + .byte 69 + .byte 7 + .byte 69 + .byte 7 + .byte 69 + .byte 7 + .byte 69 + .byte 7 + .byte -62 + .byte 5 + .byte -62 + .byte 5 + .byte -62 + .byte 5 + .byte -62 + .byte 5 + .byte -78 + .byte 4 + .byte -78 + .byte 4 + .byte -78 + .byte 4 + .byte -78 + .byte 4 + .byte 63 + .byte 9 + .byte 63 + .byte 9 + .byte 63 + .byte 9 + .byte 63 + .byte 9 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -19 + .byte -4 + .byte -19 + .byte -4 + .byte -19 + .byte 5 + .byte -19 + .byte 5 + .byte 75 + .byte 49 + .byte -72 + .byte -77 + .byte -92 + .byte -73 + .byte 125 + .byte -79 + .byte -94 + .byte -50 + .byte 54 + .byte 73 + .byte -109 + .byte -119 + .byte -9 + .byte 126 + .byte -116 + .byte -22 + .byte -52 + .byte -91 + .byte -21 + .byte 17 + .byte -74 + .byte -52 + .byte -104 + .byte 84 + .byte -102 + .byte 55 + .byte -74 + .byte -53 + .byte 83 + .byte -44 + .byte 75 + .byte 0 + .byte -72 + .byte 11 + .byte -92 + .byte 11 + .byte 125 + .byte 10 + .byte -94 + .byte 8 + .byte 54 + .byte 7 + .byte -109 + .byte 0 + .byte -9 + .byte 9 + .byte -116 + .byte 6 + .byte -52 + .byte 1 + .byte -21 + .byte 0 + .byte -74 + .byte 10 + .byte -104 + .byte 12 + .byte -102 + .byte 9 + .byte -74 + .byte 9 + .byte 83 + .byte 11 + .byte -100 + .byte 20 + .byte 95 + .byte 56 + .byte 104 + .byte -69 + .byte 54 + .byte 72 + .byte 90 + .byte 112 + .byte 9 + .byte -114 + .byte 122 + .byte -42 + .byte -10 + .byte -126 + .byte -37 + .byte -25 + .byte 35 + .byte 58 + .byte 80 + .byte -4 + .byte 91 + .byte 108 + .byte -13 + .byte -81 + .byte -29 + .byte 125 + .byte -42 + .byte 44 + .byte 79 + .byte 1 + .byte -100 + .byte 0 + .byte 95 + .byte 11 + .byte 104 + .byte 3 + .byte 54 + .byte 6 + .byte 90 + .byte 2 + .byte 9 + .byte 3 + .byte 122 + .byte 8 + .byte -10 + .byte 0 + .byte -37 + .byte 6 + .byte 35 + .byte 1 + .byte 80 + .byte 12 + .byte 91 + .byte 11 + .byte -13 + .byte 6 + .byte -29 + .byte 4 + .byte -42 + .byte 10 + .byte 79 + .byte 4 + .byte 68 + .byte -109 + .byte -125 + .byte 101 + .byte -118 + .byte 2 + .byte 82 + .byte -36 + .byte -102 + .byte 48 + .byte 64 + .byte -63 + .byte 8 + .byte -104 + .byte -3 + .byte 49 + .byte 8 + .byte -98 + .byte 26 + .byte -81 + .byte 46 + .byte -79 + .byte 13 + .byte 92 + .byte 10 + .byte -121 + .byte 40 + .byte -6 + .byte 117 + .byte 25 + .byte 58 + .byte 22 + .byte 68 + .byte 7 + .byte -125 + .byte 12 + .byte -118 + .byte 4 + .byte 82 + .byte 6 + .byte -102 + .byte 2 + .byte 64 + .byte 1 + .byte 8 + .byte 0 + .byte -3 + .byte 10 + .byte 8 + .byte 6 + .byte 26 + .byte 1 + .byte 46 + .byte 7 + .byte 13 + .byte 5 + .byte 10 + .byte 9 + .byte 40 + .byte 2 + .byte 117 + .byte 10 + .byte 58 + .byte 8 + .byte -126 + .byte 102 + .byte -126 + .byte 102 + .byte 66 + .byte -84 + .byte 66 + .byte -84 + .byte 79 + .byte 4 + .byte 79 + .byte 4 + .byte 61 + .byte -22 + .byte 61 + .byte -22 + .byte -126 + .byte 113 + .byte -126 + .byte 113 + .byte -7 + .byte 102 + .byte -7 + .byte 102 + .byte 45 + .byte -68 + .byte 45 + .byte -68 + .byte -60 + .byte 22 + .byte -60 + .byte 22 + .byte -126 + .byte 0 + .byte -126 + .byte 0 + .byte 66 + .byte 6 + .byte 66 + .byte 6 + .byte 79 + .byte 7 + .byte 79 + .byte 7 + .byte 61 + .byte 3 + .byte 61 + .byte 3 + .byte -126 + .byte 11 + .byte -126 + .byte 11 + .byte -7 + .byte 11 + .byte -7 + .byte 11 + .byte 45 + .byte 5 + .byte 45 + .byte 5 + .byte -60 + .byte 10 + .byte -60 + .byte 10 + .byte 75 + .byte 61 + .byte 75 + .byte 61 + .byte 75 + .byte 61 + .byte 75 + .byte 61 + .byte -40 + .byte 14 + .byte -40 + .byte 14 + .byte -40 + .byte 14 + .byte -40 + .byte 14 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -85 + .byte 81 + .byte -85 + .byte 81 + .byte -85 + .byte 81 + .byte -85 + .byte 81 + .byte 75 + .byte 12 + .byte 75 + .byte 12 + .byte 75 + .byte 12 + .byte 75 + .byte 12 + .byte -40 + .byte 6 + .byte -40 + .byte 6 + .byte -40 + .byte 6 + .byte -40 + .byte 6 + .byte -109 + .byte 10 + .byte -109 + .byte 10 + .byte -109 + .byte 10 + .byte -109 + .byte 10 + .byte -85 + .byte 0 + .byte -85 + .byte 0 + .byte -85 + .byte 0 + .byte -85 + .byte 0 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 103 + .byte -58 + .byte 103 + .byte -58 + .byte 103 + .byte 1 + .byte 103 + .byte 1 + .byte -116 + .byte -21 + .byte -116 + .byte -21 + .byte -116 + .byte 7 + .byte -116 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 11 + .byte 123 + .byte 11 + .byte 123 + .byte 11 + .byte 10 + .byte 11 + .byte 10 + .byte -102 + .byte 57 + .byte -102 + .byte 57 + .byte -102 + .byte 11 + .byte -102 + .byte 11 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte 86 + .byte -82 + .byte 86 + .byte -82 + .byte 86 + .byte -82 + .byte 86 + .byte -82 + .byte 110 + .byte 108 + .byte 110 + .byte 108 + .byte 110 + .byte 108 + .byte 110 + .byte 108 + .byte 41 + .byte -15 + .byte 41 + .byte -15 + .byte 41 + .byte -15 + .byte 41 + .byte -15 + .byte -74 + .byte -62 + .byte -74 + .byte -62 + .byte -74 + .byte -62 + .byte -74 + .byte -62 + .byte 86 + .byte 12 + .byte 86 + .byte 12 + .byte 86 + .byte 12 + .byte 86 + .byte 12 + .byte 110 + .byte 2 + .byte 110 + .byte 2 + .byte 110 + .byte 2 + .byte 110 + .byte 2 + .byte 41 + .byte 6 + .byte 41 + .byte 6 + .byte 41 + .byte 6 + .byte 41 + .byte 6 + .byte -74 + .byte 0 + .byte -74 + .byte 0 + .byte -74 + .byte 0 + .byte -74 + .byte 0 + .byte 61 + .byte -23 + .byte 61 + .byte -23 + .byte -44 + .byte 67 + .byte -44 + .byte 67 + .byte 8 + .byte -103 + .byte 8 + .byte -103 + .byte 127 + .byte -114 + .byte 127 + .byte -114 + .byte -60 + .byte 21 + .byte -60 + .byte 21 + .byte -78 + .byte -5 + .byte -78 + .byte -5 + .byte -65 + .byte 83 + .byte -65 + .byte 83 + .byte 127 + .byte -103 + .byte 127 + .byte -103 + .byte 61 + .byte 2 + .byte 61 + .byte 2 + .byte -44 + .byte 7 + .byte -44 + .byte 7 + .byte 8 + .byte 1 + .byte 8 + .byte 1 + .byte 127 + .byte 1 + .byte 127 + .byte 1 + .byte -60 + .byte 9 + .byte -60 + .byte 9 + .byte -78 + .byte 5 + .byte -78 + .byte 5 + .byte -65 + .byte 6 + .byte -65 + .byte 6 + .byte 127 + .byte 12 + .byte 127 + .byte 12 + .byte -57 + .byte -23 + .byte -116 + .byte -26 + .byte -39 + .byte 5 + .byte -9 + .byte 120 + .byte -12 + .byte -93 + .byte -45 + .byte 78 + .byte -25 + .byte 80 + .byte -7 + .byte 97 + .byte 4 + .byte -50 + .byte -7 + .byte 103 + .byte -63 + .byte 62 + .byte 103 + .byte -49 + .byte -81 + .byte 35 + .byte 119 + .byte -3 + .byte 126 + .byte -102 + .byte -67 + .byte 108 + .byte -57 + .byte 4 + .byte -116 + .byte 2 + .byte -39 + .byte 10 + .byte -9 + .byte 3 + .byte -12 + .byte 7 + .byte -45 + .byte 5 + .byte -25 + .byte 11 + .byte -7 + .byte 6 + .byte 4 + .byte 2 + .byte -7 + .byte 12 + .byte -63 + .byte 11 + .byte 103 + .byte 10 + .byte -81 + .byte 6 + .byte 119 + .byte 8 + .byte 126 + .byte 0 + .byte -67 + .byte 5 + .byte -78 + .byte -2 + .byte 43 + .byte -45 + .byte 30 + .byte -126 + .byte 14 + .byte 80 + .byte -90 + .byte -109 + .byte -79 + .byte 3 + .byte -34 + .byte -59 + .byte 38 + .byte 24 + .byte 11 + .byte 125 + .byte -121 + .byte 41 + .byte -8 + .byte 113 + .byte -89 + .byte -113 + .byte -53 + .byte -73 + .byte -103 + .byte 68 + .byte -94 + .byte -57 + .byte 101 + .byte -21 + .byte -78 + .byte 8 + .byte 43 + .byte 2 + .byte 30 + .byte 8 + .byte 14 + .byte 6 + .byte -90 + .byte 1 + .byte -79 + .byte 0 + .byte -34 + .byte 11 + .byte 38 + .byte 6 + .byte 11 + .byte 12 + .byte -121 + .byte 4 + .byte -8 + .byte 9 + .byte -89 + .byte 10 + .byte -53 + .byte 6 + .byte -103 + .byte 9 + .byte -94 + .byte 1 + .byte 101 + .byte 12 + .byte -82 + .byte 43 + .byte 75 + .byte 52 + .byte 103 + .byte -56 + .byte 105 + .byte -85 + .byte 75 + .byte 51 + .byte 22 + .byte -18 + .byte 53 + .byte 90 + .byte 117 + .byte 21 + .byte 10 + .byte -127 + .byte 110 + .byte 118 + .byte -53 + .byte -74 + .byte 95 + .byte 49 + .byte -124 + .byte 78 + .byte 93 + .byte 72 + .byte 73 + .byte 76 + .byte -74 + .byte -50 + .byte -82 + .byte 1 + .byte 75 + .byte 3 + .byte 103 + .byte 3 + .byte 105 + .byte 0 + .byte 75 + .byte 2 + .byte 22 + .byte 12 + .byte 53 + .byte 11 + .byte 117 + .byte 6 + .byte 10 + .byte 3 + .byte 110 + .byte 12 + .byte -53 + .byte 5 + .byte 95 + .byte 4 + .byte -124 + .byte 2 + .byte 93 + .byte 1 + .byte 73 + .byte 1 + .byte -74 + .byte 12 + .byte 20 + .byte 3 + .byte 20 + .byte 3 + .byte 20 + .byte 7 + .byte 20 + .byte 7 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -62 + .byte 41 + .byte -62 + .byte 41 + .byte -62 + .byte 41 + .byte -62 + .byte 41 + .byte 79 + .byte 5 + .byte 79 + .byte 5 + .byte 79 + .byte 5 + .byte 79 + .byte 5 + .byte 63 + .byte -44 + .byte 63 + .byte -44 + .byte 63 + .byte -44 + .byte 63 + .byte -44 + .byte -68 + .byte 121 + .byte -68 + .byte 121 + .byte -68 + .byte 121 + .byte -68 + .byte 121 + .byte -62 + .byte 3 + .byte -62 + .byte 3 + .byte -62 + .byte 3 + .byte -62 + .byte 3 + .byte 79 + .byte 8 + .byte 79 + .byte 8 + .byte 79 + .byte 8 + .byte 79 + .byte 8 + .byte 63 + .byte 7 + .byte 63 + .byte 7 + .byte 63 + .byte 7 + .byte 63 + .byte 7 + .byte -68 + .byte 5 + .byte -68 + .byte 5 + .byte -68 + .byte 5 + .byte -68 + .byte 5 + .byte 88 + .byte -110 + .byte 88 + .byte -110 + .byte -7 + .byte 94 + .byte -7 + .byte 94 + .byte -36 + .byte -42 + .byte -36 + .byte -42 + .byte 96 + .byte 34 + .byte 96 + .byte 34 + .byte -5 + .byte 71 + .byte -5 + .byte 71 + .byte -101 + .byte 34 + .byte -101 + .byte 34 + .byte 52 + .byte 104 + .byte 52 + .byte 104 + .byte -34 + .byte -64 + .byte -34 + .byte -64 + .byte 88 + .byte 10 + .byte 88 + .byte 10 + .byte -7 + .byte 3 + .byte -7 + .byte 3 + .byte -36 + .byte 2 + .byte -36 + .byte 2 + .byte 96 + .byte 2 + .byte 96 + .byte 2 + .byte -5 + .byte 6 + .byte -5 + .byte 6 + .byte -101 + .byte 1 + .byte -101 + .byte 1 + .byte 52 + .byte 12 + .byte 52 + .byte 12 + .byte -34 + .byte 6 + .byte -34 + .byte 6 + .byte -84 + .byte 77 + .byte -89 + .byte -111 + .byte -14 + .byte -63 + .byte 62 + .byte -35 + .byte 107 + .byte -111 + .byte 116 + .byte 35 + .byte 10 + .byte -118 + .byte 74 + .byte 71 + .byte 115 + .byte 52 + .byte -63 + .byte 54 + .byte 29 + .byte -114 + .byte 44 + .byte -50 + .byte -64 + .byte 65 + .byte -40 + .byte 16 + .byte -91 + .byte -95 + .byte 6 + .byte -70 + .byte -84 + .byte 9 + .byte -89 + .byte 12 + .byte -14 + .byte 11 + .byte 62 + .byte 3 + .byte 107 + .byte 0 + .byte 116 + .byte 7 + .byte 10 + .byte 12 + .byte 74 + .byte 9 + .byte 115 + .byte 11 + .byte -63 + .byte 3 + .byte 29 + .byte 7 + .byte 44 + .byte 10 + .byte -64 + .byte 1 + .byte -40 + .byte 8 + .byte -91 + .byte 2 + .byte 6 + .byte 8 + .byte 49 + .byte -122 + .byte 91 + .byte 99 + .byte 42 + .byte -29 + .byte 72 + .byte 95 + .byte 66 + .byte -82 + .byte -62 + .byte 42 + .byte -105 + .byte 94 + .byte 94 + .byte 66 + .byte 96 + .byte 40 + .byte 3 + .byte -31 + .byte 27 + .byte -88 + .byte -101 + .byte 42 + .byte -107 + .byte 123 + .byte -28 + .byte 111 + .byte -66 + .byte 93 + .byte -14 + .byte -69 + .byte 49 + .byte 3 + .byte 91 + .byte 2 + .byte 42 + .byte 5 + .byte 72 + .byte 7 + .byte 66 + .byte 8 + .byte -62 + .byte 4 + .byte -105 + .byte 9 + .byte 94 + .byte 8 + .byte 96 + .byte 8 + .byte 3 + .byte 8 + .byte 27 + .byte 7 + .byte -101 + .byte 9 + .byte -107 + .byte 12 + .byte -28 + .byte 3 + .byte -66 + .byte 3 + .byte -14 + .byte 5 + .byte 73 + .byte 79 + .byte 98 + .byte 8 + .byte -4 + .byte 59 + .byte -128 + .byte -127 + .byte 121 + .byte -25 + .byte -54 + .byte -59 + .byte -36 + .byte -44 + .byte -122 + .byte 56 + .byte 7 + .byte -84 + .byte 26 + .byte -79 + .byte -85 + .byte 90 + .byte -34 + .byte -69 + .byte -51 + .byte -94 + .byte -33 + .byte -80 + .byte 77 + .byte 30 + .byte 92 + .byte 90 + .byte 73 + .byte 4 + .byte 98 + .byte 2 + .byte -4 + .byte 7 + .byte -128 + .byte 1 + .byte 121 + .byte 12 + .byte -54 + .byte 7 + .byte -36 + .byte 0 + .byte -122 + .byte 6 + .byte 7 + .byte 7 + .byte 26 + .byte 3 + .byte -85 + .byte 9 + .byte -34 + .byte 1 + .byte -51 + .byte 11 + .byte -33 + .byte 3 + .byte 77 + .byte 7 + .byte 92 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 7 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 15 + .byte 8 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 23 + .byte 16 + .byte 17 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 31 + .byte 24 + .byte 25 + .byte 26 + .byte 27 + .byte 28 + .byte 29 + .byte 30 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 0 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 8 + .byte 17 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 23 + .byte 16 + .byte 25 + .byte 26 + .byte 27 + .byte 28 + .byte 29 + .byte 30 + .byte 31 + .byte 24 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 61 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 46 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 28 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 23 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 63 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 36 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 37 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 19 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 58 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 25 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 54 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 56 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 62 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 49 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 39 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 44 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 20 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 21 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 43 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 50 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 18 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 36 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 41 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 62 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 28 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 27 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 45 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 56 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 39 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 61 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 55 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 15 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 25 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 20 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 44 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 43 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 21 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 14 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 1 + .byte 4 + .byte 5 + .byte 8 + .byte 9 + .byte 12 + .byte 13 + .byte 2 + .byte 3 + .byte 6 + .byte 7 + .byte 10 + .byte 11 + .byte 14 + .byte 15 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte 12 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 4 + .byte 1 + .byte 0 + .byte 0 + .byte 4 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 24 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 13 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 18 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 23 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 25 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 22 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 15 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 11 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 12 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 21 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 26 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 19 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 20 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 17 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 14 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 27 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -8 + .byte 31 + .byte -32 + .byte 127 + .byte 4 + .byte 52 + .byte 1 + .byte 13 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte 15 + .byte 0 + .byte -16 + .byte 0 + .byte -1 + .byte 15 + .byte -1 + .byte 3 + .byte 0 + .byte 16 + .byte 15 + .byte 0 + .byte 1 + .byte 16 + .byte 15 + .byte 0 + .byte 0 + .byte 2 + .byte 1 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -91 + .byte 6 + .byte 15 + .byte 7 + .byte -76 + .byte 5 + .byte 67 + .byte 9 + .byte 34 + .byte 9 + .byte 29 + .byte 9 + .byte 52 + .byte 1 + .byte 108 + .byte 0 + .byte 35 + .byte 11 + .byte 102 + .byte 3 + .byte 86 + .byte 3 + .byte -26 + .byte 5 + .byte -25 + .byte 9 + .byte -2 + .byte 4 + .byte -6 + .byte 5 + .byte -95 + .byte 4 + .byte 123 + .byte 6 + .byte -93 + .byte 4 + .byte 37 + .byte 12 + .byte 106 + .byte 3 + .byte 55 + .byte 5 + .byte 63 + .byte 8 + .byte -120 + .byte 0 + .byte -65 + .byte 4 + .byte -127 + .byte 11 + .byte -71 + .byte 5 + .byte 5 + .byte 5 + .byte -41 + .byte 7 + .byte -97 + .byte 10 + .byte -90 + .byte 10 + .byte -72 + .byte 8 + .byte -48 + .byte 9 + .byte 75 + .byte 0 + .byte -100 + .byte 0 + .byte -72 + .byte 11 + .byte 95 + .byte 11 + .byte -92 + .byte 11 + .byte 104 + .byte 3 + .byte 125 + .byte 10 + .byte 54 + .byte 6 + .byte -94 + .byte 8 + .byte 90 + .byte 2 + .byte 54 + .byte 7 + .byte 9 + .byte 3 + .byte -109 + .byte 0 + .byte 122 + .byte 8 + .byte -9 + .byte 9 + .byte -10 + .byte 0 + .byte -116 + .byte 6 + .byte -37 + .byte 6 + .byte -52 + .byte 1 + .byte 35 + .byte 1 + .byte -21 + .byte 0 + .byte 80 + .byte 12 + .byte -74 + .byte 10 + .byte 91 + .byte 11 + .byte -104 + .byte 12 + .byte -13 + .byte 6 + .byte -102 + .byte 9 + .byte -29 + .byte 4 + .byte -74 + .byte 9 + .byte -42 + .byte 10 + .byte 83 + .byte 11 + .byte 79 + .byte 4 + .byte -5 + .byte 4 + .byte 92 + .byte 10 + .byte 41 + .byte 4 + .byte 65 + .byte 11 + .byte -43 + .byte 2 + .byte -28 + .byte 5 + .byte 64 + .byte 9 + .byte -114 + .byte 1 + .byte -73 + .byte 3 + .byte -9 + .byte 0 + .byte -115 + .byte 5 + .byte -106 + .byte 12 + .byte -61 + .byte 9 + .byte 15 + .byte 1 + .byte 90 + .byte 0 + .byte 85 + .byte 3 + .byte 68 + .byte 7 + .byte -125 + .byte 12 + .byte -118 + .byte 4 + .byte 82 + .byte 6 + .byte -102 + .byte 2 + .byte 64 + .byte 1 + .byte 8 + .byte 0 + .byte -3 + .byte 10 + .byte 8 + .byte 6 + .byte 26 + .byte 1 + .byte 46 + .byte 7 + .byte 13 + .byte 5 + .byte 10 + .byte 9 + .byte 40 + .byte 2 + .byte 117 + .byte 10 + .byte 58 + .byte 8 + .byte 35 + .byte 6 + .byte -51 + .byte 0 + .byte 102 + .byte 11 + .byte 6 + .byte 6 + .byte -95 + .byte 10 + .byte 37 + .byte 10 + .byte 8 + .byte 9 + .byte -87 + .byte 2 + .byte -126 + .byte 0 + .byte 66 + .byte 6 + .byte 79 + .byte 7 + .byte 61 + .byte 3 + .byte -126 + .byte 11 + .byte -7 + .byte 11 + .byte 45 + .byte 5 + .byte -60 + .byte 10 + .byte 69 + .byte 7 + .byte -62 + .byte 5 + .byte -78 + .byte 4 + .byte 63 + .byte 9 + .byte 75 + .byte 12 + .byte -40 + .byte 6 + .byte -109 + .byte 10 + .byte -85 + .byte 0 + .byte 55 + .byte 12 + .byte -30 + .byte 11 + .byte 115 + .byte 7 + .byte 44 + .byte 7 + .byte -19 + .byte 5 + .byte 103 + .byte 1 + .byte -10 + .byte 2 + .byte -95 + .byte 5 + .byte -19 + .byte 8 + .byte 11 + .byte 10 + .byte -102 + .byte 11 + .byte 20 + .byte 7 + .byte -43 + .byte 5 + .byte -114 + .byte 5 + .byte 31 + .byte 1 + .byte -54 + .byte 0 + .byte 86 + .byte 12 + .byte 110 + .byte 2 + .byte 41 + .byte 6 + .byte -74 + .byte 0 + .byte -62 + .byte 3 + .byte 79 + .byte 8 + .byte 63 + .byte 7 + .byte -68 + .byte 5 + .byte 61 + .byte 2 + .byte -44 + .byte 7 + .byte 8 + .byte 1 + .byte 127 + .byte 1 + .byte -60 + .byte 9 + .byte -78 + .byte 5 + .byte -65 + .byte 6 + .byte 127 + .byte 12 + .byte 88 + .byte 10 + .byte -7 + .byte 3 + .byte -36 + .byte 2 + .byte 96 + .byte 2 + .byte -5 + .byte 6 + .byte -101 + .byte 1 + .byte 52 + .byte 12 + .byte -34 + .byte 6 + .byte -57 + .byte 4 + .byte -116 + .byte 2 + .byte -39 + .byte 10 + .byte -9 + .byte 3 + .byte -12 + .byte 7 + .byte -45 + .byte 5 + .byte -25 + .byte 11 + .byte -7 + .byte 6 + .byte 4 + .byte 2 + .byte -7 + .byte 12 + .byte -63 + .byte 11 + .byte 103 + .byte 10 + .byte -81 + .byte 6 + .byte 119 + .byte 8 + .byte 126 + .byte 0 + .byte -67 + .byte 5 + .byte -84 + .byte 9 + .byte -89 + .byte 12 + .byte -14 + .byte 11 + .byte 62 + .byte 3 + .byte 107 + .byte 0 + .byte 116 + .byte 7 + .byte 10 + .byte 12 + .byte 74 + .byte 9 + .byte 115 + .byte 11 + .byte -63 + .byte 3 + .byte 29 + .byte 7 + .byte 44 + .byte 10 + .byte -64 + .byte 1 + .byte -40 + .byte 8 + .byte -91 + .byte 2 + .byte 6 + .byte 8 + .byte -78 + .byte 8 + .byte -82 + .byte 1 + .byte 43 + .byte 2 + .byte 75 + .byte 3 + .byte 30 + .byte 8 + .byte 103 + .byte 3 + .byte 14 + .byte 6 + .byte 105 + .byte 0 + .byte -90 + .byte 1 + .byte 75 + .byte 2 + .byte -79 + .byte 0 + .byte 22 + .byte 12 + .byte -34 + .byte 11 + .byte 53 + .byte 11 + .byte 38 + .byte 6 + .byte 117 + .byte 6 + .byte 11 + .byte 12 + .byte 10 + .byte 3 + .byte -121 + .byte 4 + .byte 110 + .byte 12 + .byte -8 + .byte 9 + .byte -53 + .byte 5 + .byte -89 + .byte 10 + .byte 95 + .byte 4 + .byte -53 + .byte 6 + .byte -124 + .byte 2 + .byte -103 + .byte 9 + .byte 93 + .byte 1 + .byte -94 + .byte 1 + .byte 73 + .byte 1 + .byte 101 + .byte 12 + .byte -74 + .byte 12 + .byte 49 + .byte 3 + .byte 73 + .byte 4 + .byte 91 + .byte 2 + .byte 98 + .byte 2 + .byte 42 + .byte 5 + .byte -4 + .byte 7 + .byte 72 + .byte 7 + .byte -128 + .byte 1 + .byte 66 + .byte 8 + .byte 121 + .byte 12 + .byte -62 + .byte 4 + .byte -54 + .byte 7 + .byte -105 + .byte 9 + .byte -36 + .byte 0 + .byte 94 + .byte 8 + .byte -122 + .byte 6 + .byte 96 + .byte 8 + .byte 7 + .byte 7 + .byte 3 + .byte 8 + .byte 26 + .byte 3 + .byte 27 + .byte 7 + .byte -85 + .byte 9 + .byte -101 + .byte 9 + .byte -34 + .byte 1 + .byte -107 + .byte 12 + .byte -51 + .byte 11 + .byte -28 + .byte 3 + .byte -33 + .byte 3 + .byte -66 + .byte 3 + .byte 77 + .byte 7 + .byte -14 + .byte 5 + .byte 92 + .byte 6 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d b/src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d new file mode 100644 index 000000000..d3b866d0e --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d @@ -0,0 +1 @@ +kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/amd64/ref/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/common/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_ref_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/zetas.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/kem.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/Makefile b/src/kem/kyber/libjade_kyber512_amd64_ref/Makefile new file mode 100644 index 000000000..29a80faa8 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/Makefile @@ -0,0 +1,2 @@ +SRCS := kem.jazz +include ../../../../../Makefile.common diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/api.c b/src/kem/kyber/libjade_kyber512_amd64_ref/api.c new file mode 100644 index 000000000..2a4298f01 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/api.c @@ -0,0 +1,20 @@ +#include +#include "libjade_randombytes.h" +#include "api.h" + +int libjade_kyber512_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber512_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber512_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES); + return jade_kem_kyber_kyber512_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber512_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/include/api.h b/src/kem/kyber/libjade_kyber512_amd64_ref/include/api.h new file mode 100644 index 000000000..233223089 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/include/api.h @@ -0,0 +1,45 @@ +#ifndef JADE_KEM_kyber_kyber512_amd64_ref_API_H +#define JADE_KEM_kyber_kyber512_amd64_ref_API_H + +#include + +#define JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES 64 +#define JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES 32 + +int jade_kem_kyber_kyber512_amd64_ref_keypair_derand( + uint8_t *public_key, + uint8_t *secret_key, + const uint8_t *coins +); + +int libjade_kyber512_amd64_ref_keypair( + uint8_t *public_key, + uint8_t *secret_key +); + +int jade_kem_kyber_kyber512_amd64_ref_enc_derand( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key, + const uint8_t *coins +); + +int libjade_kyber512_amd64_ref_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +); + +int jade_kem_kyber_kyber512_amd64_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +int libjade_kyber512_amd64_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +#endif diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc b/src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc new file mode 100644 index 000000000..c1bb634bb --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc @@ -0,0 +1,242 @@ +from Jade require "crypto_kem/kyber/kyber512/common/params.jinc" +from Jade require "crypto_kem/kyber/common/amd64/ref/poly.jinc" +from Jade require "crypto_kem/kyber/common/amd64/ref/polyvec.jinc" +from Jade require "crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc" + +inline +fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] coins) +{ + stack u64 spkp sskp; + stack u16[KYBER_K * KYBER_VECN] a; + stack u16[KYBER_VECN] e pkpv skpv; + stack u8[64] buf; + stack u8[KYBER_SYMBYTES] publicseed noiseseed; + reg u64 t64; + reg u8 nonce, c; + inline int i; + + spkp = pkp; + sskp = skp; + + buf = _sha3_512_32(buf, coins); + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = buf[u64 i]; + publicseed[u64 i] = t64; + t64 = buf[u64 i + KYBER_SYMBYTES/8]; + noiseseed[u64 i] = t64; + } + + a = __gen_matrix(publicseed, 0); + + nonce = 0; + skpv[0:KYBER_N] = _poly_getnoise_eta1(skpv[0:KYBER_N], noiseseed, nonce); + nonce = 1; + skpv[KYBER_N:KYBER_N] = _poly_getnoise_eta1(skpv[KYBER_N:KYBER_N], noiseseed, nonce); + + nonce = 2; + e[0:KYBER_N] = _poly_getnoise_eta1(e[0:KYBER_N], noiseseed, nonce); + nonce = 3; + e[KYBER_N:KYBER_N] = _poly_getnoise_eta1(e[KYBER_N:KYBER_N], noiseseed, nonce); + + skpv = __polyvec_ntt(skpv); + e = __polyvec_ntt(e); + + for i=0 to KYBER_K + { + pkpv[i*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(a[i*KYBER_VECN:KYBER_VECN], skpv); + pkpv[i*KYBER_N:KYBER_N] = _poly_frommont(pkpv[i*KYBER_N:KYBER_N]); + } + + pkpv = __polyvec_add2(pkpv, e); + pkpv = __polyvec_reduce(pkpv); + + pkp = spkp; + skp = sskp; + + __polyvec_tobytes(skp, skpv); + __polyvec_tobytes(pkp, pkpv); + + pkp += KYBER_POLYVECBYTES; + for i=0 to KYBER_SYMBYTES/8 + { + t64 = publicseed[u64 i]; + (u64)[pkp] = t64; + pkp += 8; + } +} + + +inline +fn __indcpa_enc_0(stack u64 sctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) +{ + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_N] k epp v; + stack u8[KYBER_SYMBYTES] publicseed; + stack ptr u8[KYBER_SYMBYTES] s_noiseseed; + reg ptr u8[KYBER_SYMBYTES] lnoiseseed; + reg u64 i ctp t64; + reg u8 nonce; + inline int j; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed[u64 (int)i] = t64; + pkp += 8; + i += 1; + } + + k = _i_poly_frommsg(k, msgp); + + s_noiseseed = noiseseed; + aat = __gen_matrix(publicseed, 1); + + lnoiseseed = s_noiseseed; + nonce = 0; + sp[0:KYBER_N] = _poly_getnoise_eta1(sp[0:KYBER_N], lnoiseseed, nonce); + lnoiseseed = s_noiseseed; + nonce = 1; + sp[KYBER_N:KYBER_N] = _poly_getnoise_eta1(sp[KYBER_N:KYBER_N], lnoiseseed, nonce); + + lnoiseseed = s_noiseseed; + nonce = 2; + ep[0:KYBER_N] = _poly_getnoise_eta2(ep[0:KYBER_N], lnoiseseed, nonce); + lnoiseseed = s_noiseseed; + nonce = 3; + ep[KYBER_N:KYBER_N] = _poly_getnoise_eta2(ep[KYBER_N:KYBER_N], lnoiseseed, nonce); + + lnoiseseed = s_noiseseed; + nonce = 4; + epp = _poly_getnoise_eta2(epp, lnoiseseed, nonce); + + sp = __polyvec_ntt(sp); + + for j=0 to KYBER_K + { + bp[j*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[j*KYBER_VECN:KYBER_VECN], sp); + } + + v = __polyvec_pointwise_acc(pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + __polyvec_compress(ctp, bp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_compress(ctp, v); +} + +inline +fn __indcpa_enc_1(reg ptr u8[KYBER_INDCPA_BYTES] ctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_INDCPA_BYTES] +{ + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_N] k epp v; + stack u8[KYBER_SYMBYTES] publicseed; + stack ptr u8[KYBER_SYMBYTES] s_noiseseed; + reg ptr u8[KYBER_SYMBYTES] lnoiseseed; + stack ptr u8[KYBER_INDCPA_BYTES] sctp; + reg u64 i t64; + reg u8 nonce; + inline int j; + + sctp = ctp; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed[u64 (int)i] = t64; + pkp += 8; + i += 1; + } + + k = _i_poly_frommsg(k, msgp); + + s_noiseseed = noiseseed; + aat = __gen_matrix(publicseed, 1); + lnoiseseed = s_noiseseed; + + nonce = 0; + sp[0:KYBER_N] = _poly_getnoise_eta1(sp[0:KYBER_N], lnoiseseed, nonce); + lnoiseseed = s_noiseseed; + nonce = 1; + sp[KYBER_N:KYBER_N] = _poly_getnoise_eta1(sp[KYBER_N:KYBER_N], lnoiseseed, nonce); + + lnoiseseed = s_noiseseed; + nonce = 2; + ep[0:KYBER_N] = _poly_getnoise_eta2(ep[0:KYBER_N], lnoiseseed, nonce); + lnoiseseed = s_noiseseed; + nonce = 3; + ep[KYBER_N:KYBER_N] = _poly_getnoise_eta2(ep[KYBER_N:KYBER_N], lnoiseseed, nonce); + + lnoiseseed = s_noiseseed; + nonce = 4; + epp = _poly_getnoise_eta2(epp, lnoiseseed, nonce); + + sp = __polyvec_ntt(sp); + + for j=0 to KYBER_K + { + bp[j*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[j*KYBER_VECN:KYBER_VECN], sp); + } + + v = __polyvec_pointwise_acc(pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __i_polyvec_compress(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); + ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _i_poly_compress(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); + + return ctp; +} + + +inline +fn __indcpa_dec(reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_INDCPA_MSGBYTES] +{ + stack u16[KYBER_N] t v mp; + stack u16[KYBER_VECN] bp skpv; + + bp = __polyvec_decompress(ctp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_decompress(v, ctp); + + skpv = __polyvec_frombytes(skp); + + bp = __polyvec_ntt(bp); + t = __polyvec_pointwise_acc(skpv, bp); + t = _poly_invntt(t); + + mp = _poly_sub(mp, v, t); + mp = __poly_reduce(mp); + + msgp, mp = _i_poly_tomsg(msgp, mp); + + return msgp; +} diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz b/src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz new file mode 100644 index 000000000..3d43af2ae --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz @@ -0,0 +1,66 @@ +require "indcpa.jinc" +from Jade require "common/tofromstack.jinc" +from Jade require "crypto_kem/kyber/common/amd64/ref/verify.jinc" +from Jade require "crypto_kem/kyber/common/amd64/kem.jinc" + +export fn jade_kem_kyber_kyber512_amd64_ref_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = __tostack64u8(stack_coins, coins); + __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_ref_keypair(reg u64 public_key secret_key) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = #randombytes(stack_coins); + __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_ref_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = __tostack32u8(stack_coins, coins); + __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_ref_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = #randombytes(stack_coins); + __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber512_amd64_ref_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 +{ + reg u64 r; + __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); + ?{}, r = #set0(); + return r; +} diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s b/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s new file mode 100644 index 000000000..62cc5b987 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s @@ -0,0 +1,16332 @@ + .att_syntax + .text + .p2align 5 + .globl _jade_kem_kyber_kyber512_amd64_ref_dec + .globl jade_kem_kyber_kyber512_amd64_ref_dec + .globl _jade_kem_kyber_kyber512_amd64_ref_enc + .globl jade_kem_kyber_kyber512_amd64_ref_enc + .globl _jade_kem_kyber_kyber512_amd64_ref_enc_derand + .globl jade_kem_kyber_kyber512_amd64_ref_enc_derand + .globl _jade_kem_kyber_kyber512_amd64_ref_keypair + .globl jade_kem_kyber_kyber512_amd64_ref_keypair + .globl _jade_kem_kyber_kyber512_amd64_ref_keypair_derand + .globl jade_kem_kyber_kyber512_amd64_ref_keypair_derand +_jade_kem_kyber_kyber512_amd64_ref_dec: +jade_kem_kyber_kyber512_amd64_ref_dec: + movq %rsp, %rax + leaq -9632(%rsp), %rsp + andq $-8, %rsp + movq %rax, 9624(%rsp) + movq %r14, 9584(%rsp) + movq %r13, 9592(%rsp) + movq %r12, 9600(%rsp) + movq %rbp, 9608(%rsp) + movq %rbx, 9616(%rsp) + movq %rdi, (%rsp) + movq %rsi, 8(%rsp) + leaq 88(%rsp), %rax + movq $0, %rcx + movq $0, %rdi + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$124 +Ljade_kem_kyber_kyber512_amd64_ref_dec$125: + movzbl (%rsi,%rdi), %r10d + incq %rdi + movzbl (%rsi,%rdi), %r11d + incq %rdi + movzbl (%rsi,%rdi), %r8d + incq %rdi + movzbl (%rsi,%rdi), %r9d + incq %rdi + movzbl (%rsi,%rdi), %ebx + incq %rdi + movl %r11d, %ebp + shrl $2, %r11d + andl $3, %ebp + shll $8, %ebp + orl %ebp, %r10d + movl %r8d, %ebp + shrl $4, %r8d + andl $15, %ebp + shll $6, %ebp + orl %ebp, %r11d + movl %r9d, %ebp + shrl $6, %r9d + andl $63, %ebp + shll $4, %ebp + orl %ebp, %r8d + shll $2, %ebx + orl %ebx, %r9d + imull $3329, %r10d, %r10d + addl $512, %r10d + shrl $10, %r10d + movw %r10w, 2464(%rsp,%rcx,2) + incq %rcx + imull $3329, %r11d, %r10d + addl $512, %r10d + shrl $10, %r10d + movw %r10w, 2464(%rsp,%rcx,2) + incq %rcx + imull $3329, %r8d, %r8d + addl $512, %r8d + shrl $10, %r8d + movw %r8w, 2464(%rsp,%rcx,2) + incq %rcx + imull $3329, %r9d, %r8d + addl $512, %r8d + shrl $10, %r8d + movw %r8w, 2464(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$124: + cmpq $512, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$125 + addq $640, %rsi + leaq 928(%rsp), %rcx + call L_poly_decompress$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$123: + movq %rdx, %rsi + leaq 3488(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$122: + addq $384, %rsi + leaq 4000(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$121: + leaq 2464(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$120: + leaq 2976(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$119: + leaq 416(%rsp), %rdi + leaq 3488(%rsp), %rcx + leaq 2464(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$118: + leaq 16(%rsp), %rsp + leaq 1440(%rsp), %rdi + leaq 4000(%rsp), %rcx + leaq 2976(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$117: + leaq 16(%rsp), %rsp + leaq 416(%rsp), %rcx + leaq 1440(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$116: + leaq 416(%rsp), %rcx + movq $0, %rsi + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$114 +Ljade_kem_kyber_kyber512_amd64_ref_dec$115: + movw (%rcx,%rsi,2), %di + movswl %di, %r8d + imull $20159, %r8d, %r8d + sarl $26, %r8d + imull $3329, %r8d, %r8d + subw %r8w, %di + movw %di, (%rcx,%rsi,2) + incq %rsi +Ljade_kem_kyber_kyber512_amd64_ref_dec$114: + cmpq $256, %rsi + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$115 + leaq 416(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$113: + leaq 1440(%rsp), %rcx + leaq 928(%rsp), %rsi + leaq 416(%rsp), %rdi + call L_poly_sub$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$112: + leaq 1440(%rsp), %rcx + movq $0, %rsi + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$110 +Ljade_kem_kyber_kyber512_amd64_ref_dec$111: + movw (%rcx,%rsi,2), %di + movswl %di, %r8d + imull $20159, %r8d, %r8d + sarl $26, %r8d + imull $3329, %r8d, %r8d + subw %r8w, %di + movw %di, (%rcx,%rsi,2) + incq %rsi +Ljade_kem_kyber_kyber512_amd64_ref_dec$110: + cmpq $256, %rsi + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$111 + leaq 1440(%rsp), %rcx + call L_i_poly_tomsg$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$109: + leaq 32(%rdx), %rax + addq $1536, %rax + movq (%rax), %rcx + movq %rcx, 120(%rsp) + movq 8(%rax), %rcx + movq %rcx, 128(%rsp) + movq 16(%rax), %rcx + movq %rcx, 136(%rsp) + movq 24(%rax), %rax + movq %rax, 144(%rsp) + movq %rdx, 16(%rsp) + leaq 152(%rsp), %rax + leaq 88(%rsp), %rcx + leaq -208(%rsp), %rsp + call L_sha3_512_64$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$108: + leaq 208(%rsp), %rsp + movq 16(%rsp), %rdx + addq $768, %rdx + leaq 8810(%rsp), %rsi + leaq 88(%rsp), %rcx + leaq 184(%rsp), %rax + movq %rsi, 24(%rsp) + movq %rdx, %rsi + leaq 2464(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$107: + addq $384, %rsi + leaq 2976(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$106: + movq $0, %rsi + addq $768, %rdx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$104 +Ljade_kem_kyber_kyber512_amd64_ref_dec$105: + movq (%rdx), %rdi + movq %rdi, 56(%rsp,%rsi,8) + addq $8, %rdx + incq %rsi +Ljade_kem_kyber_kyber512_amd64_ref_dec$104: + cmpq $4, %rsi + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$105 + leaq 1440(%rsp), %rdx + call L_i_poly_frommsg$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$103: + movq %rax, 32(%rsp) + movq $1, %rax + movq %rax, 40(%rsp) + movb 56(%rsp), %al + movb %al, 8608(%rsp) + movb 57(%rsp), %al + movb %al, 8609(%rsp) + movb 58(%rsp), %al + movb %al, 8610(%rsp) + movb 59(%rsp), %al + movb %al, 8611(%rsp) + movb 60(%rsp), %al + movb %al, 8612(%rsp) + movb 61(%rsp), %al + movb %al, 8613(%rsp) + movb 62(%rsp), %al + movb %al, 8614(%rsp) + movb 63(%rsp), %al + movb %al, 8615(%rsp) + movb 64(%rsp), %al + movb %al, 8616(%rsp) + movb 65(%rsp), %al + movb %al, 8617(%rsp) + movb 66(%rsp), %al + movb %al, 8618(%rsp) + movb 67(%rsp), %al + movb %al, 8619(%rsp) + movb 68(%rsp), %al + movb %al, 8620(%rsp) + movb 69(%rsp), %al + movb %al, 8621(%rsp) + movb 70(%rsp), %al + movb %al, 8622(%rsp) + movb 71(%rsp), %al + movb %al, 8623(%rsp) + movb 72(%rsp), %al + movb %al, 8624(%rsp) + movb 73(%rsp), %al + movb %al, 8625(%rsp) + movb 74(%rsp), %al + movb %al, 8626(%rsp) + movb 75(%rsp), %al + movb %al, 8627(%rsp) + movb 76(%rsp), %al + movb %al, 8628(%rsp) + movb 77(%rsp), %al + movb %al, 8629(%rsp) + movb 78(%rsp), %al + movb %al, 8630(%rsp) + movb 79(%rsp), %al + movb %al, 8631(%rsp) + movb 80(%rsp), %al + movb %al, 8632(%rsp) + movb 81(%rsp), %al + movb %al, 8633(%rsp) + movb 82(%rsp), %al + movb %al, 8634(%rsp) + movb 83(%rsp), %al + movb %al, 8635(%rsp) + movb 84(%rsp), %al + movb %al, 8636(%rsp) + movb 85(%rsp), %al + movb %al, 8637(%rsp) + movb 86(%rsp), %al + movb %al, 8638(%rsp) + movb 87(%rsp), %al + movb %al, 8639(%rsp) + movq 40(%rsp), %rax + cmpq $0, %rax + je Ljade_kem_kyber_kyber512_amd64_ref_dec$101 + movb $0, 8640(%rsp) + movb $0, 8641(%rsp) + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$102 +Ljade_kem_kyber_kyber512_amd64_ref_dec$101: + movb $0, 8640(%rsp) + movb $0, 8641(%rsp) +Ljade_kem_kyber_kyber512_amd64_ref_dec$102: + leaq 216(%rsp), %rax + leaq 8608(%rsp), %rcx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$100: + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$98 +Ljade_kem_kyber_kyber512_amd64_ref_dec$99: + movq %rax, 416(%rsp,%rax,8) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$98: + cmpq $64, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$99 + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$90 +Ljade_kem_kyber_kyber512_amd64_ref_dec$91: + movq %rax, 48(%rsp) + leaq 216(%rsp), %rax + leaq 8642(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$97: + leaq 8(%rsp), %rsp + movq 48(%rsp), %rax + movq $0, %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$92: + movzbw 8642(%rsp,%rcx), %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$95 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$95 + movw %dx, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$96: +Ljade_kem_kyber_kyber512_amd64_ref_dec$95: + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$93 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$93 + movw %di, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$94: +Ljade_kem_kyber_kyber512_amd64_ref_dec$93: + cmpq $166, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$92 +Ljade_kem_kyber_kyber512_amd64_ref_dec$90: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$91 + movq $0, %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$88 +Ljade_kem_kyber_kyber512_amd64_ref_dec$89: + movw 416(%rsp,%rax,2), %dx + movw %dx, 6560(%rsp,%rcx,2) + incq %rax + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$88: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$89 + movq 40(%rsp), %rax + cmpq $0, %rax + je Ljade_kem_kyber_kyber512_amd64_ref_dec$86 + movb $0, 8640(%rsp) + movb $1, 8641(%rsp) + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$87 +Ljade_kem_kyber_kyber512_amd64_ref_dec$86: + movb $1, 8640(%rsp) + movb $0, 8641(%rsp) +Ljade_kem_kyber_kyber512_amd64_ref_dec$87: + leaq 216(%rsp), %rax + leaq 8608(%rsp), %rcx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$85: + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$83 +Ljade_kem_kyber_kyber512_amd64_ref_dec$84: + movq %rax, 416(%rsp,%rax,8) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$83: + cmpq $64, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$84 + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$75 +Ljade_kem_kyber_kyber512_amd64_ref_dec$76: + movq %rax, 48(%rsp) + leaq 216(%rsp), %rax + leaq 8642(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$82: + leaq 8(%rsp), %rsp + movq 48(%rsp), %rax + movq $0, %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$77: + movzbw 8642(%rsp,%rcx), %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$80 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$80 + movw %dx, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$81: +Ljade_kem_kyber_kyber512_amd64_ref_dec$80: + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$78 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$78 + movw %di, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$79: +Ljade_kem_kyber_kyber512_amd64_ref_dec$78: + cmpq $166, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$77 +Ljade_kem_kyber_kyber512_amd64_ref_dec$75: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$76 + movq $0, %rax + movq $256, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$73 +Ljade_kem_kyber_kyber512_amd64_ref_dec$74: + movw 416(%rsp,%rax,2), %dx + movw %dx, 6560(%rsp,%rcx,2) + incq %rax + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$73: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$74 + movq 40(%rsp), %rax + cmpq $0, %rax + je Ljade_kem_kyber_kyber512_amd64_ref_dec$71 + movb $1, 8640(%rsp) + movb $0, 8641(%rsp) + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$72 +Ljade_kem_kyber_kyber512_amd64_ref_dec$71: + movb $0, 8640(%rsp) + movb $1, 8641(%rsp) +Ljade_kem_kyber_kyber512_amd64_ref_dec$72: + leaq 216(%rsp), %rax + leaq 8608(%rsp), %rcx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$70: + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$68 +Ljade_kem_kyber_kyber512_amd64_ref_dec$69: + movq %rax, 416(%rsp,%rax,8) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$68: + cmpq $64, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$69 + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$60 +Ljade_kem_kyber_kyber512_amd64_ref_dec$61: + movq %rax, 48(%rsp) + leaq 216(%rsp), %rax + leaq 8642(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$67: + leaq 8(%rsp), %rsp + movq 48(%rsp), %rax + movq $0, %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$62: + movzbw 8642(%rsp,%rcx), %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$65 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$65 + movw %dx, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$66: +Ljade_kem_kyber_kyber512_amd64_ref_dec$65: + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$63 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$63 + movw %di, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$64: +Ljade_kem_kyber_kyber512_amd64_ref_dec$63: + cmpq $166, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$62 +Ljade_kem_kyber_kyber512_amd64_ref_dec$60: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$61 + movq $0, %rax + movq $512, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$58 +Ljade_kem_kyber_kyber512_amd64_ref_dec$59: + movw 416(%rsp,%rax,2), %dx + movw %dx, 6560(%rsp,%rcx,2) + incq %rax + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$58: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$59 + movq 40(%rsp), %rax + cmpq $0, %rax + je Ljade_kem_kyber_kyber512_amd64_ref_dec$56 + movb $1, 8640(%rsp) + movb $1, 8641(%rsp) + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$57 +Ljade_kem_kyber_kyber512_amd64_ref_dec$56: + movb $1, 8640(%rsp) + movb $1, 8641(%rsp) +Ljade_kem_kyber_kyber512_amd64_ref_dec$57: + leaq 216(%rsp), %rax + leaq 8608(%rsp), %rcx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$55: + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$53 +Ljade_kem_kyber_kyber512_amd64_ref_dec$54: + movq %rax, 416(%rsp,%rax,8) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$53: + cmpq $64, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$54 + movq $0, %rax + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$45 +Ljade_kem_kyber_kyber512_amd64_ref_dec$46: + movq %rax, 40(%rsp) + leaq 216(%rsp), %rax + leaq 8642(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$52: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rax + movq $0, %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$47: + movzbw 8642(%rsp,%rcx), %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8642(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$50 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$50 + movw %dx, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$51: +Ljade_kem_kyber_kyber512_amd64_ref_dec$50: + cmpw $3329, %di + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$48 + cmpq $256, %rax + jnb Ljade_kem_kyber_kyber512_amd64_ref_dec$48 + movw %di, 416(%rsp,%rax,2) + incq %rax +Ljade_kem_kyber_kyber512_amd64_ref_dec$49: +Ljade_kem_kyber_kyber512_amd64_ref_dec$48: + cmpq $166, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$47 +Ljade_kem_kyber_kyber512_amd64_ref_dec$45: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$46 + movq $0, %rax + movq $768, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$43 +Ljade_kem_kyber_kyber512_amd64_ref_dec$44: + movw 416(%rsp,%rax,2), %dx + movw %dx, 6560(%rsp,%rcx,2) + incq %rax + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$43: + cmpq $256, %rax + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$44 + movq 32(%rsp), %rcx + movb $0, %al + leaq 3488(%rsp), %rdx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$42: + leaq 240(%rsp), %rsp + movq 32(%rsp), %rcx + movb $1, %al + leaq 4000(%rsp), %rdx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$41: + leaq 240(%rsp), %rsp + movq 32(%rsp), %rax + movb $2, %cl + leaq 4512(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise_eta2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$40: + leaq 176(%rsp), %rsp + movq 32(%rsp), %rax + movb $3, %cl + leaq 5024(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise_eta2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$39: + leaq 176(%rsp), %rsp + movq 32(%rsp), %rax + movb $4, %cl + leaq 416(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise_eta2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$38: + leaq 176(%rsp), %rsp + leaq 3488(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$37: + leaq 4000(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$36: + leaq 5536(%rsp), %rdi + leaq 6560(%rsp), %rcx + leaq 3488(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$35: + leaq 16(%rsp), %rsp + leaq 928(%rsp), %rdi + leaq 7072(%rsp), %rcx + leaq 4000(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$34: + leaq 16(%rsp), %rsp + leaq 5536(%rsp), %rcx + leaq 928(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$33: + leaq 5536(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$31 +Ljade_kem_kyber_kyber512_amd64_ref_dec$32: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$31: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$32 + leaq 6048(%rsp), %rdi + leaq 7584(%rsp), %rcx + leaq 3488(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$30: + leaq 16(%rsp), %rsp + leaq 928(%rsp), %rdi + leaq 8096(%rsp), %rcx + leaq 4000(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$29: + leaq 16(%rsp), %rsp + leaq 6048(%rsp), %rcx + leaq 928(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$28: + leaq 6048(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$26 +Ljade_kem_kyber_kyber512_amd64_ref_dec$27: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$26: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$27 + leaq 928(%rsp), %rdi + leaq 2464(%rsp), %rcx + leaq 3488(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$25: + leaq 16(%rsp), %rsp + leaq 1952(%rsp), %rdi + leaq 2976(%rsp), %rcx + leaq 4000(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$24: + leaq 16(%rsp), %rsp + leaq 928(%rsp), %rcx + leaq 1952(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$23: + leaq 928(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$21 +Ljade_kem_kyber_kyber512_amd64_ref_dec$22: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$21: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$22 + leaq 5536(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$20: + leaq 6048(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$19: + leaq 928(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$18: + leaq 5536(%rsp), %rcx + leaq 4512(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$17: + leaq 6048(%rsp), %rcx + leaq 5024(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$16: + leaq 928(%rsp), %rcx + leaq 416(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$15: + leaq 928(%rsp), %rcx + leaq 1440(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$14: + leaq 5536(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$12 +Ljade_kem_kyber_kyber512_amd64_ref_dec$13: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$12: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$13 + leaq 6048(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$10 +Ljade_kem_kyber_kyber512_amd64_ref_dec$11: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$10: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$11 + leaq 928(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$8 +Ljade_kem_kyber_kyber512_amd64_ref_dec$9: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber512_amd64_ref_dec$8: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$9 + movq 24(%rsp), %rax + movq %rax, %rdx + movq $0, %rsi + movq $0, %rdi + leaq 5536(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$7: + leaq 6048(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$6: + jmp Ljade_kem_kyber_kyber512_amd64_ref_dec$4 +Ljade_kem_kyber_kyber512_amd64_ref_dec$5: + movzwq 5536(%rsp,%rsi,2), %rcx + incq %rsi + shlq $10, %rcx + addq $1665, %rcx + imulq $1290167, %rcx, %rcx + shrq $32, %rcx + andq $1023, %rcx + movzwq 5536(%rsp,%rsi,2), %r8 + incq %rsi + shlq $10, %r8 + addq $1665, %r8 + imulq $1290167, %r8, %r8 + shrq $32, %r8 + andq $1023, %r8 + movzwq 5536(%rsp,%rsi,2), %r9 + incq %rsi + shlq $10, %r9 + addq $1665, %r9 + imulq $1290167, %r9, %r9 + shrq $32, %r9 + andq $1023, %r9 + movzwq 5536(%rsp,%rsi,2), %r10 + incq %rsi + shlq $10, %r10 + addq $1665, %r10 + imulq $1290167, %r10, %r10 + shrq $32, %r10 + andq $1023, %r10 + movw %cx, %r11w + andw $255, %r11w + movb %r11b, (%rdx,%rdi) + incq %rdi + shrw $8, %cx + movw %r8w, %r11w + shlw $2, %r11w + orw %cx, %r11w + movb %r11b, (%rdx,%rdi) + incq %rdi + shrw $6, %r8w + movw %r9w, %cx + shlw $4, %cx + orw %r8w, %cx + movb %cl, (%rdx,%rdi) + incq %rdi + shrw $4, %r9w + movw %r10w, %cx + shlw $6, %cx + orw %r9w, %cx + movb %cl, (%rdx,%rdi) + incq %rdi + shrq $2, %r10 + movb %r10b, (%rdx,%rdi) + incq %rdi +Ljade_kem_kyber_kyber512_amd64_ref_dec$4: + cmpq $512, %rsi + jb Ljade_kem_kyber_kyber512_amd64_ref_dec$5 + leaq 640(%rax), %rax + leaq 928(%rsp), %rcx + call L_i_poly_compress$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$3: + movq 8(%rsp), %rsi + leaq 8810(%rsp), %rax + movq $0, %rcx + movb (%rax), %dl + movb (%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1(%rax), %dl + movb 1(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 2(%rax), %dl + movb 2(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 3(%rax), %dl + movb 3(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 4(%rax), %dl + movb 4(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 5(%rax), %dl + movb 5(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 6(%rax), %dl + movb 6(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 7(%rax), %dl + movb 7(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 8(%rax), %dl + movb 8(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 9(%rax), %dl + movb 9(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 10(%rax), %dl + movb 10(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 11(%rax), %dl + movb 11(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 12(%rax), %dl + movb 12(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 13(%rax), %dl + movb 13(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 14(%rax), %dl + movb 14(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 15(%rax), %dl + movb 15(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 16(%rax), %dl + movb 16(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 17(%rax), %dl + movb 17(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 18(%rax), %dl + movb 18(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 19(%rax), %dl + movb 19(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 20(%rax), %dl + movb 20(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 21(%rax), %dl + movb 21(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 22(%rax), %dl + movb 22(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 23(%rax), %dl + movb 23(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 24(%rax), %dl + movb 24(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 25(%rax), %dl + movb 25(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 26(%rax), %dl + movb 26(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 27(%rax), %dl + movb 27(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 28(%rax), %dl + movb 28(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 29(%rax), %dl + movb 29(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 30(%rax), %dl + movb 30(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 31(%rax), %dl + movb 31(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 32(%rax), %dl + movb 32(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 33(%rax), %dl + movb 33(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 34(%rax), %dl + movb 34(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 35(%rax), %dl + movb 35(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 36(%rax), %dl + movb 36(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 37(%rax), %dl + movb 37(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 38(%rax), %dl + movb 38(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 39(%rax), %dl + movb 39(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 40(%rax), %dl + movb 40(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 41(%rax), %dl + movb 41(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 42(%rax), %dl + movb 42(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 43(%rax), %dl + movb 43(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 44(%rax), %dl + movb 44(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 45(%rax), %dl + movb 45(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 46(%rax), %dl + movb 46(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 47(%rax), %dl + movb 47(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 48(%rax), %dl + movb 48(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 49(%rax), %dl + movb 49(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 50(%rax), %dl + movb 50(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 51(%rax), %dl + movb 51(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 52(%rax), %dl + movb 52(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 53(%rax), %dl + movb 53(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 54(%rax), %dl + movb 54(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 55(%rax), %dl + movb 55(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 56(%rax), %dl + movb 56(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 57(%rax), %dl + movb 57(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 58(%rax), %dl + movb 58(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 59(%rax), %dl + movb 59(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 60(%rax), %dl + movb 60(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 61(%rax), %dl + movb 61(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 62(%rax), %dl + movb 62(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 63(%rax), %dl + movb 63(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 64(%rax), %dl + movb 64(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 65(%rax), %dl + movb 65(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 66(%rax), %dl + movb 66(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 67(%rax), %dl + movb 67(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 68(%rax), %dl + movb 68(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 69(%rax), %dl + movb 69(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 70(%rax), %dl + movb 70(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 71(%rax), %dl + movb 71(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 72(%rax), %dl + movb 72(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 73(%rax), %dl + movb 73(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 74(%rax), %dl + movb 74(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 75(%rax), %dl + movb 75(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 76(%rax), %dl + movb 76(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 77(%rax), %dl + movb 77(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 78(%rax), %dl + movb 78(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 79(%rax), %dl + movb 79(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 80(%rax), %dl + movb 80(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 81(%rax), %dl + movb 81(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 82(%rax), %dl + movb 82(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 83(%rax), %dl + movb 83(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 84(%rax), %dl + movb 84(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 85(%rax), %dl + movb 85(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 86(%rax), %dl + movb 86(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 87(%rax), %dl + movb 87(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 88(%rax), %dl + movb 88(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 89(%rax), %dl + movb 89(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 90(%rax), %dl + movb 90(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 91(%rax), %dl + movb 91(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 92(%rax), %dl + movb 92(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 93(%rax), %dl + movb 93(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 94(%rax), %dl + movb 94(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 95(%rax), %dl + movb 95(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 96(%rax), %dl + movb 96(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 97(%rax), %dl + movb 97(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 98(%rax), %dl + movb 98(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 99(%rax), %dl + movb 99(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 100(%rax), %dl + movb 100(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 101(%rax), %dl + movb 101(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 102(%rax), %dl + movb 102(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 103(%rax), %dl + movb 103(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 104(%rax), %dl + movb 104(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 105(%rax), %dl + movb 105(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 106(%rax), %dl + movb 106(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 107(%rax), %dl + movb 107(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 108(%rax), %dl + movb 108(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 109(%rax), %dl + movb 109(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 110(%rax), %dl + movb 110(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 111(%rax), %dl + movb 111(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 112(%rax), %dl + movb 112(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 113(%rax), %dl + movb 113(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 114(%rax), %dl + movb 114(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 115(%rax), %dl + movb 115(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 116(%rax), %dl + movb 116(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 117(%rax), %dl + movb 117(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 118(%rax), %dl + movb 118(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 119(%rax), %dl + movb 119(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 120(%rax), %dl + movb 120(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 121(%rax), %dl + movb 121(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 122(%rax), %dl + movb 122(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 123(%rax), %dl + movb 123(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 124(%rax), %dl + movb 124(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 125(%rax), %dl + movb 125(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 126(%rax), %dl + movb 126(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 127(%rax), %dl + movb 127(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 128(%rax), %dl + movb 128(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 129(%rax), %dl + movb 129(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 130(%rax), %dl + movb 130(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 131(%rax), %dl + movb 131(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 132(%rax), %dl + movb 132(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 133(%rax), %dl + movb 133(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 134(%rax), %dl + movb 134(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 135(%rax), %dl + movb 135(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 136(%rax), %dl + movb 136(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 137(%rax), %dl + movb 137(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 138(%rax), %dl + movb 138(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 139(%rax), %dl + movb 139(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 140(%rax), %dl + movb 140(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 141(%rax), %dl + movb 141(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 142(%rax), %dl + movb 142(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 143(%rax), %dl + movb 143(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 144(%rax), %dl + movb 144(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 145(%rax), %dl + movb 145(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 146(%rax), %dl + movb 146(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 147(%rax), %dl + movb 147(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 148(%rax), %dl + movb 148(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 149(%rax), %dl + movb 149(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 150(%rax), %dl + movb 150(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 151(%rax), %dl + movb 151(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 152(%rax), %dl + movb 152(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 153(%rax), %dl + movb 153(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 154(%rax), %dl + movb 154(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 155(%rax), %dl + movb 155(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 156(%rax), %dl + movb 156(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 157(%rax), %dl + movb 157(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 158(%rax), %dl + movb 158(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 159(%rax), %dl + movb 159(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 160(%rax), %dl + movb 160(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 161(%rax), %dl + movb 161(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 162(%rax), %dl + movb 162(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 163(%rax), %dl + movb 163(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 164(%rax), %dl + movb 164(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 165(%rax), %dl + movb 165(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 166(%rax), %dl + movb 166(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 167(%rax), %dl + movb 167(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 168(%rax), %dl + movb 168(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 169(%rax), %dl + movb 169(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 170(%rax), %dl + movb 170(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 171(%rax), %dl + movb 171(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 172(%rax), %dl + movb 172(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 173(%rax), %dl + movb 173(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 174(%rax), %dl + movb 174(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 175(%rax), %dl + movb 175(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 176(%rax), %dl + movb 176(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 177(%rax), %dl + movb 177(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 178(%rax), %dl + movb 178(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 179(%rax), %dl + movb 179(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 180(%rax), %dl + movb 180(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 181(%rax), %dl + movb 181(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 182(%rax), %dl + movb 182(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 183(%rax), %dl + movb 183(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 184(%rax), %dl + movb 184(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 185(%rax), %dl + movb 185(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 186(%rax), %dl + movb 186(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 187(%rax), %dl + movb 187(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 188(%rax), %dl + movb 188(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 189(%rax), %dl + movb 189(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 190(%rax), %dl + movb 190(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 191(%rax), %dl + movb 191(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 192(%rax), %dl + movb 192(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 193(%rax), %dl + movb 193(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 194(%rax), %dl + movb 194(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 195(%rax), %dl + movb 195(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 196(%rax), %dl + movb 196(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 197(%rax), %dl + movb 197(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 198(%rax), %dl + movb 198(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 199(%rax), %dl + movb 199(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 200(%rax), %dl + movb 200(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 201(%rax), %dl + movb 201(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 202(%rax), %dl + movb 202(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 203(%rax), %dl + movb 203(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 204(%rax), %dl + movb 204(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 205(%rax), %dl + movb 205(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 206(%rax), %dl + movb 206(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 207(%rax), %dl + movb 207(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 208(%rax), %dl + movb 208(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 209(%rax), %dl + movb 209(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 210(%rax), %dl + movb 210(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 211(%rax), %dl + movb 211(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 212(%rax), %dl + movb 212(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 213(%rax), %dl + movb 213(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 214(%rax), %dl + movb 214(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 215(%rax), %dl + movb 215(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 216(%rax), %dl + movb 216(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 217(%rax), %dl + movb 217(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 218(%rax), %dl + movb 218(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 219(%rax), %dl + movb 219(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 220(%rax), %dl + movb 220(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 221(%rax), %dl + movb 221(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 222(%rax), %dl + movb 222(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 223(%rax), %dl + movb 223(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 224(%rax), %dl + movb 224(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 225(%rax), %dl + movb 225(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 226(%rax), %dl + movb 226(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 227(%rax), %dl + movb 227(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 228(%rax), %dl + movb 228(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 229(%rax), %dl + movb 229(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 230(%rax), %dl + movb 230(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 231(%rax), %dl + movb 231(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 232(%rax), %dl + movb 232(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 233(%rax), %dl + movb 233(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 234(%rax), %dl + movb 234(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 235(%rax), %dl + movb 235(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 236(%rax), %dl + movb 236(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 237(%rax), %dl + movb 237(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 238(%rax), %dl + movb 238(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 239(%rax), %dl + movb 239(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 240(%rax), %dl + movb 240(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 241(%rax), %dl + movb 241(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 242(%rax), %dl + movb 242(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 243(%rax), %dl + movb 243(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 244(%rax), %dl + movb 244(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 245(%rax), %dl + movb 245(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 246(%rax), %dl + movb 246(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 247(%rax), %dl + movb 247(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 248(%rax), %dl + movb 248(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 249(%rax), %dl + movb 249(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 250(%rax), %dl + movb 250(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 251(%rax), %dl + movb 251(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 252(%rax), %dl + movb 252(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 253(%rax), %dl + movb 253(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 254(%rax), %dl + movb 254(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 255(%rax), %dl + movb 255(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 256(%rax), %dl + movb 256(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 257(%rax), %dl + movb 257(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 258(%rax), %dl + movb 258(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 259(%rax), %dl + movb 259(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 260(%rax), %dl + movb 260(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 261(%rax), %dl + movb 261(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 262(%rax), %dl + movb 262(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 263(%rax), %dl + movb 263(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 264(%rax), %dl + movb 264(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 265(%rax), %dl + movb 265(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 266(%rax), %dl + movb 266(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 267(%rax), %dl + movb 267(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 268(%rax), %dl + movb 268(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 269(%rax), %dl + movb 269(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 270(%rax), %dl + movb 270(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 271(%rax), %dl + movb 271(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 272(%rax), %dl + movb 272(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 273(%rax), %dl + movb 273(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 274(%rax), %dl + movb 274(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 275(%rax), %dl + movb 275(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 276(%rax), %dl + movb 276(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 277(%rax), %dl + movb 277(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 278(%rax), %dl + movb 278(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 279(%rax), %dl + movb 279(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 280(%rax), %dl + movb 280(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 281(%rax), %dl + movb 281(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 282(%rax), %dl + movb 282(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 283(%rax), %dl + movb 283(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 284(%rax), %dl + movb 284(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 285(%rax), %dl + movb 285(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 286(%rax), %dl + movb 286(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 287(%rax), %dl + movb 287(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 288(%rax), %dl + movb 288(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 289(%rax), %dl + movb 289(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 290(%rax), %dl + movb 290(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 291(%rax), %dl + movb 291(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 292(%rax), %dl + movb 292(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 293(%rax), %dl + movb 293(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 294(%rax), %dl + movb 294(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 295(%rax), %dl + movb 295(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 296(%rax), %dl + movb 296(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 297(%rax), %dl + movb 297(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 298(%rax), %dl + movb 298(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 299(%rax), %dl + movb 299(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 300(%rax), %dl + movb 300(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 301(%rax), %dl + movb 301(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 302(%rax), %dl + movb 302(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 303(%rax), %dl + movb 303(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 304(%rax), %dl + movb 304(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 305(%rax), %dl + movb 305(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 306(%rax), %dl + movb 306(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 307(%rax), %dl + movb 307(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 308(%rax), %dl + movb 308(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 309(%rax), %dl + movb 309(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 310(%rax), %dl + movb 310(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 311(%rax), %dl + movb 311(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 312(%rax), %dl + movb 312(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 313(%rax), %dl + movb 313(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 314(%rax), %dl + movb 314(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 315(%rax), %dl + movb 315(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 316(%rax), %dl + movb 316(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 317(%rax), %dl + movb 317(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 318(%rax), %dl + movb 318(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 319(%rax), %dl + movb 319(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 320(%rax), %dl + movb 320(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 321(%rax), %dl + movb 321(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 322(%rax), %dl + movb 322(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 323(%rax), %dl + movb 323(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 324(%rax), %dl + movb 324(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 325(%rax), %dl + movb 325(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 326(%rax), %dl + movb 326(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 327(%rax), %dl + movb 327(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 328(%rax), %dl + movb 328(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 329(%rax), %dl + movb 329(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 330(%rax), %dl + movb 330(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 331(%rax), %dl + movb 331(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 332(%rax), %dl + movb 332(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 333(%rax), %dl + movb 333(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 334(%rax), %dl + movb 334(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 335(%rax), %dl + movb 335(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 336(%rax), %dl + movb 336(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 337(%rax), %dl + movb 337(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 338(%rax), %dl + movb 338(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 339(%rax), %dl + movb 339(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 340(%rax), %dl + movb 340(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 341(%rax), %dl + movb 341(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 342(%rax), %dl + movb 342(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 343(%rax), %dl + movb 343(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 344(%rax), %dl + movb 344(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 345(%rax), %dl + movb 345(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 346(%rax), %dl + movb 346(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 347(%rax), %dl + movb 347(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 348(%rax), %dl + movb 348(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 349(%rax), %dl + movb 349(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 350(%rax), %dl + movb 350(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 351(%rax), %dl + movb 351(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 352(%rax), %dl + movb 352(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 353(%rax), %dl + movb 353(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 354(%rax), %dl + movb 354(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 355(%rax), %dl + movb 355(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 356(%rax), %dl + movb 356(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 357(%rax), %dl + movb 357(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 358(%rax), %dl + movb 358(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 359(%rax), %dl + movb 359(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 360(%rax), %dl + movb 360(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 361(%rax), %dl + movb 361(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 362(%rax), %dl + movb 362(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 363(%rax), %dl + movb 363(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 364(%rax), %dl + movb 364(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 365(%rax), %dl + movb 365(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 366(%rax), %dl + movb 366(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 367(%rax), %dl + movb 367(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 368(%rax), %dl + movb 368(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 369(%rax), %dl + movb 369(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 370(%rax), %dl + movb 370(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 371(%rax), %dl + movb 371(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 372(%rax), %dl + movb 372(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 373(%rax), %dl + movb 373(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 374(%rax), %dl + movb 374(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 375(%rax), %dl + movb 375(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 376(%rax), %dl + movb 376(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 377(%rax), %dl + movb 377(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 378(%rax), %dl + movb 378(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 379(%rax), %dl + movb 379(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 380(%rax), %dl + movb 380(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 381(%rax), %dl + movb 381(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 382(%rax), %dl + movb 382(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 383(%rax), %dl + movb 383(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 384(%rax), %dl + movb 384(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 385(%rax), %dl + movb 385(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 386(%rax), %dl + movb 386(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 387(%rax), %dl + movb 387(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 388(%rax), %dl + movb 388(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 389(%rax), %dl + movb 389(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 390(%rax), %dl + movb 390(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 391(%rax), %dl + movb 391(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 392(%rax), %dl + movb 392(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 393(%rax), %dl + movb 393(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 394(%rax), %dl + movb 394(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 395(%rax), %dl + movb 395(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 396(%rax), %dl + movb 396(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 397(%rax), %dl + movb 397(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 398(%rax), %dl + movb 398(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 399(%rax), %dl + movb 399(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 400(%rax), %dl + movb 400(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 401(%rax), %dl + movb 401(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 402(%rax), %dl + movb 402(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 403(%rax), %dl + movb 403(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 404(%rax), %dl + movb 404(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 405(%rax), %dl + movb 405(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 406(%rax), %dl + movb 406(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 407(%rax), %dl + movb 407(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 408(%rax), %dl + movb 408(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 409(%rax), %dl + movb 409(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 410(%rax), %dl + movb 410(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 411(%rax), %dl + movb 411(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 412(%rax), %dl + movb 412(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 413(%rax), %dl + movb 413(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 414(%rax), %dl + movb 414(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 415(%rax), %dl + movb 415(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 416(%rax), %dl + movb 416(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 417(%rax), %dl + movb 417(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 418(%rax), %dl + movb 418(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 419(%rax), %dl + movb 419(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 420(%rax), %dl + movb 420(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 421(%rax), %dl + movb 421(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 422(%rax), %dl + movb 422(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 423(%rax), %dl + movb 423(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 424(%rax), %dl + movb 424(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 425(%rax), %dl + movb 425(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 426(%rax), %dl + movb 426(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 427(%rax), %dl + movb 427(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 428(%rax), %dl + movb 428(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 429(%rax), %dl + movb 429(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 430(%rax), %dl + movb 430(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 431(%rax), %dl + movb 431(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 432(%rax), %dl + movb 432(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 433(%rax), %dl + movb 433(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 434(%rax), %dl + movb 434(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 435(%rax), %dl + movb 435(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 436(%rax), %dl + movb 436(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 437(%rax), %dl + movb 437(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 438(%rax), %dl + movb 438(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 439(%rax), %dl + movb 439(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 440(%rax), %dl + movb 440(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 441(%rax), %dl + movb 441(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 442(%rax), %dl + movb 442(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 443(%rax), %dl + movb 443(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 444(%rax), %dl + movb 444(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 445(%rax), %dl + movb 445(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 446(%rax), %dl + movb 446(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 447(%rax), %dl + movb 447(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 448(%rax), %dl + movb 448(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 449(%rax), %dl + movb 449(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 450(%rax), %dl + movb 450(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 451(%rax), %dl + movb 451(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 452(%rax), %dl + movb 452(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 453(%rax), %dl + movb 453(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 454(%rax), %dl + movb 454(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 455(%rax), %dl + movb 455(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 456(%rax), %dl + movb 456(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 457(%rax), %dl + movb 457(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 458(%rax), %dl + movb 458(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 459(%rax), %dl + movb 459(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 460(%rax), %dl + movb 460(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 461(%rax), %dl + movb 461(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 462(%rax), %dl + movb 462(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 463(%rax), %dl + movb 463(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 464(%rax), %dl + movb 464(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 465(%rax), %dl + movb 465(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 466(%rax), %dl + movb 466(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 467(%rax), %dl + movb 467(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 468(%rax), %dl + movb 468(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 469(%rax), %dl + movb 469(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 470(%rax), %dl + movb 470(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 471(%rax), %dl + movb 471(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 472(%rax), %dl + movb 472(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 473(%rax), %dl + movb 473(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 474(%rax), %dl + movb 474(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 475(%rax), %dl + movb 475(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 476(%rax), %dl + movb 476(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 477(%rax), %dl + movb 477(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 478(%rax), %dl + movb 478(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 479(%rax), %dl + movb 479(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 480(%rax), %dl + movb 480(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 481(%rax), %dl + movb 481(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 482(%rax), %dl + movb 482(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 483(%rax), %dl + movb 483(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 484(%rax), %dl + movb 484(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 485(%rax), %dl + movb 485(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 486(%rax), %dl + movb 486(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 487(%rax), %dl + movb 487(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 488(%rax), %dl + movb 488(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 489(%rax), %dl + movb 489(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 490(%rax), %dl + movb 490(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 491(%rax), %dl + movb 491(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 492(%rax), %dl + movb 492(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 493(%rax), %dl + movb 493(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 494(%rax), %dl + movb 494(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 495(%rax), %dl + movb 495(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 496(%rax), %dl + movb 496(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 497(%rax), %dl + movb 497(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 498(%rax), %dl + movb 498(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 499(%rax), %dl + movb 499(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 500(%rax), %dl + movb 500(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 501(%rax), %dl + movb 501(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 502(%rax), %dl + movb 502(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 503(%rax), %dl + movb 503(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 504(%rax), %dl + movb 504(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 505(%rax), %dl + movb 505(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 506(%rax), %dl + movb 506(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 507(%rax), %dl + movb 507(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 508(%rax), %dl + movb 508(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 509(%rax), %dl + movb 509(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 510(%rax), %dl + movb 510(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 511(%rax), %dl + movb 511(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 512(%rax), %dl + movb 512(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 513(%rax), %dl + movb 513(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 514(%rax), %dl + movb 514(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 515(%rax), %dl + movb 515(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 516(%rax), %dl + movb 516(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 517(%rax), %dl + movb 517(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 518(%rax), %dl + movb 518(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 519(%rax), %dl + movb 519(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 520(%rax), %dl + movb 520(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 521(%rax), %dl + movb 521(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 522(%rax), %dl + movb 522(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 523(%rax), %dl + movb 523(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 524(%rax), %dl + movb 524(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 525(%rax), %dl + movb 525(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 526(%rax), %dl + movb 526(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 527(%rax), %dl + movb 527(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 528(%rax), %dl + movb 528(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 529(%rax), %dl + movb 529(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 530(%rax), %dl + movb 530(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 531(%rax), %dl + movb 531(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 532(%rax), %dl + movb 532(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 533(%rax), %dl + movb 533(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 534(%rax), %dl + movb 534(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 535(%rax), %dl + movb 535(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 536(%rax), %dl + movb 536(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 537(%rax), %dl + movb 537(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 538(%rax), %dl + movb 538(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 539(%rax), %dl + movb 539(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 540(%rax), %dl + movb 540(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 541(%rax), %dl + movb 541(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 542(%rax), %dl + movb 542(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 543(%rax), %dl + movb 543(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 544(%rax), %dl + movb 544(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 545(%rax), %dl + movb 545(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 546(%rax), %dl + movb 546(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 547(%rax), %dl + movb 547(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 548(%rax), %dl + movb 548(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 549(%rax), %dl + movb 549(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 550(%rax), %dl + movb 550(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 551(%rax), %dl + movb 551(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 552(%rax), %dl + movb 552(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 553(%rax), %dl + movb 553(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 554(%rax), %dl + movb 554(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 555(%rax), %dl + movb 555(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 556(%rax), %dl + movb 556(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 557(%rax), %dl + movb 557(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 558(%rax), %dl + movb 558(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 559(%rax), %dl + movb 559(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 560(%rax), %dl + movb 560(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 561(%rax), %dl + movb 561(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 562(%rax), %dl + movb 562(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 563(%rax), %dl + movb 563(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 564(%rax), %dl + movb 564(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 565(%rax), %dl + movb 565(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 566(%rax), %dl + movb 566(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 567(%rax), %dl + movb 567(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 568(%rax), %dl + movb 568(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 569(%rax), %dl + movb 569(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 570(%rax), %dl + movb 570(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 571(%rax), %dl + movb 571(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 572(%rax), %dl + movb 572(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 573(%rax), %dl + movb 573(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 574(%rax), %dl + movb 574(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 575(%rax), %dl + movb 575(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 576(%rax), %dl + movb 576(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 577(%rax), %dl + movb 577(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 578(%rax), %dl + movb 578(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 579(%rax), %dl + movb 579(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 580(%rax), %dl + movb 580(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 581(%rax), %dl + movb 581(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 582(%rax), %dl + movb 582(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 583(%rax), %dl + movb 583(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 584(%rax), %dl + movb 584(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 585(%rax), %dl + movb 585(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 586(%rax), %dl + movb 586(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 587(%rax), %dl + movb 587(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 588(%rax), %dl + movb 588(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 589(%rax), %dl + movb 589(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 590(%rax), %dl + movb 590(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 591(%rax), %dl + movb 591(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 592(%rax), %dl + movb 592(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 593(%rax), %dl + movb 593(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 594(%rax), %dl + movb 594(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 595(%rax), %dl + movb 595(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 596(%rax), %dl + movb 596(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 597(%rax), %dl + movb 597(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 598(%rax), %dl + movb 598(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 599(%rax), %dl + movb 599(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 600(%rax), %dl + movb 600(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 601(%rax), %dl + movb 601(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 602(%rax), %dl + movb 602(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 603(%rax), %dl + movb 603(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 604(%rax), %dl + movb 604(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 605(%rax), %dl + movb 605(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 606(%rax), %dl + movb 606(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 607(%rax), %dl + movb 607(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 608(%rax), %dl + movb 608(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 609(%rax), %dl + movb 609(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 610(%rax), %dl + movb 610(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 611(%rax), %dl + movb 611(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 612(%rax), %dl + movb 612(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 613(%rax), %dl + movb 613(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 614(%rax), %dl + movb 614(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 615(%rax), %dl + movb 615(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 616(%rax), %dl + movb 616(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 617(%rax), %dl + movb 617(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 618(%rax), %dl + movb 618(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 619(%rax), %dl + movb 619(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 620(%rax), %dl + movb 620(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 621(%rax), %dl + movb 621(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 622(%rax), %dl + movb 622(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 623(%rax), %dl + movb 623(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 624(%rax), %dl + movb 624(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 625(%rax), %dl + movb 625(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 626(%rax), %dl + movb 626(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 627(%rax), %dl + movb 627(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 628(%rax), %dl + movb 628(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 629(%rax), %dl + movb 629(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 630(%rax), %dl + movb 630(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 631(%rax), %dl + movb 631(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 632(%rax), %dl + movb 632(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 633(%rax), %dl + movb 633(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 634(%rax), %dl + movb 634(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 635(%rax), %dl + movb 635(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 636(%rax), %dl + movb 636(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 637(%rax), %dl + movb 637(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 638(%rax), %dl + movb 638(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 639(%rax), %dl + movb 639(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 640(%rax), %dl + movb 640(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 641(%rax), %dl + movb 641(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 642(%rax), %dl + movb 642(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 643(%rax), %dl + movb 643(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 644(%rax), %dl + movb 644(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 645(%rax), %dl + movb 645(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 646(%rax), %dl + movb 646(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 647(%rax), %dl + movb 647(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 648(%rax), %dl + movb 648(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 649(%rax), %dl + movb 649(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 650(%rax), %dl + movb 650(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 651(%rax), %dl + movb 651(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 652(%rax), %dl + movb 652(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 653(%rax), %dl + movb 653(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 654(%rax), %dl + movb 654(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 655(%rax), %dl + movb 655(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 656(%rax), %dl + movb 656(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 657(%rax), %dl + movb 657(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 658(%rax), %dl + movb 658(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 659(%rax), %dl + movb 659(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 660(%rax), %dl + movb 660(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 661(%rax), %dl + movb 661(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 662(%rax), %dl + movb 662(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 663(%rax), %dl + movb 663(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 664(%rax), %dl + movb 664(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 665(%rax), %dl + movb 665(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 666(%rax), %dl + movb 666(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 667(%rax), %dl + movb 667(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 668(%rax), %dl + movb 668(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 669(%rax), %dl + movb 669(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 670(%rax), %dl + movb 670(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 671(%rax), %dl + movb 671(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 672(%rax), %dl + movb 672(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 673(%rax), %dl + movb 673(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 674(%rax), %dl + movb 674(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 675(%rax), %dl + movb 675(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 676(%rax), %dl + movb 676(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 677(%rax), %dl + movb 677(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 678(%rax), %dl + movb 678(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 679(%rax), %dl + movb 679(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 680(%rax), %dl + movb 680(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 681(%rax), %dl + movb 681(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 682(%rax), %dl + movb 682(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 683(%rax), %dl + movb 683(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 684(%rax), %dl + movb 684(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 685(%rax), %dl + movb 685(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 686(%rax), %dl + movb 686(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 687(%rax), %dl + movb 687(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 688(%rax), %dl + movb 688(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 689(%rax), %dl + movb 689(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 690(%rax), %dl + movb 690(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 691(%rax), %dl + movb 691(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 692(%rax), %dl + movb 692(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 693(%rax), %dl + movb 693(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 694(%rax), %dl + movb 694(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 695(%rax), %dl + movb 695(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 696(%rax), %dl + movb 696(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 697(%rax), %dl + movb 697(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 698(%rax), %dl + movb 698(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 699(%rax), %dl + movb 699(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 700(%rax), %dl + movb 700(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 701(%rax), %dl + movb 701(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 702(%rax), %dl + movb 702(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 703(%rax), %dl + movb 703(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 704(%rax), %dl + movb 704(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 705(%rax), %dl + movb 705(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 706(%rax), %dl + movb 706(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 707(%rax), %dl + movb 707(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 708(%rax), %dl + movb 708(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 709(%rax), %dl + movb 709(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 710(%rax), %dl + movb 710(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 711(%rax), %dl + movb 711(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 712(%rax), %dl + movb 712(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 713(%rax), %dl + movb 713(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 714(%rax), %dl + movb 714(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 715(%rax), %dl + movb 715(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 716(%rax), %dl + movb 716(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 717(%rax), %dl + movb 717(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 718(%rax), %dl + movb 718(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 719(%rax), %dl + movb 719(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 720(%rax), %dl + movb 720(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 721(%rax), %dl + movb 721(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 722(%rax), %dl + movb 722(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 723(%rax), %dl + movb 723(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 724(%rax), %dl + movb 724(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 725(%rax), %dl + movb 725(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 726(%rax), %dl + movb 726(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 727(%rax), %dl + movb 727(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 728(%rax), %dl + movb 728(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 729(%rax), %dl + movb 729(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 730(%rax), %dl + movb 730(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 731(%rax), %dl + movb 731(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 732(%rax), %dl + movb 732(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 733(%rax), %dl + movb 733(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 734(%rax), %dl + movb 734(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 735(%rax), %dl + movb 735(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 736(%rax), %dl + movb 736(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 737(%rax), %dl + movb 737(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 738(%rax), %dl + movb 738(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 739(%rax), %dl + movb 739(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 740(%rax), %dl + movb 740(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 741(%rax), %dl + movb 741(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 742(%rax), %dl + movb 742(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 743(%rax), %dl + movb 743(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 744(%rax), %dl + movb 744(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 745(%rax), %dl + movb 745(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 746(%rax), %dl + movb 746(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 747(%rax), %dl + movb 747(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 748(%rax), %dl + movb 748(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 749(%rax), %dl + movb 749(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 750(%rax), %dl + movb 750(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 751(%rax), %dl + movb 751(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 752(%rax), %dl + movb 752(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 753(%rax), %dl + movb 753(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 754(%rax), %dl + movb 754(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 755(%rax), %dl + movb 755(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 756(%rax), %dl + movb 756(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 757(%rax), %dl + movb 757(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 758(%rax), %dl + movb 758(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 759(%rax), %dl + movb 759(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 760(%rax), %dl + movb 760(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 761(%rax), %dl + movb 761(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 762(%rax), %dl + movb 762(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 763(%rax), %dl + movb 763(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 764(%rax), %dl + movb 764(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 765(%rax), %dl + movb 765(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 766(%rax), %dl + movb 766(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 767(%rax), %al + movb 767(%rsi), %dl + xorb %dl, %al + movzbq %al, %rax + orq %rax, %rcx + negq %rcx + shrq $63, %rcx + movq 16(%rsp), %rax + addq $64, %rax + addq $1536, %rax + leaq 152(%rsp), %rdx + negq %rcx + movb (%rdx), %dil + movb (%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, (%rdx) + movb 1(%rdx), %dil + movb 1(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 1(%rdx) + movb 2(%rdx), %dil + movb 2(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 2(%rdx) + movb 3(%rdx), %dil + movb 3(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 3(%rdx) + movb 4(%rdx), %dil + movb 4(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 4(%rdx) + movb 5(%rdx), %dil + movb 5(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 5(%rdx) + movb 6(%rdx), %dil + movb 6(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 6(%rdx) + movb 7(%rdx), %dil + movb 7(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 7(%rdx) + movb 8(%rdx), %dil + movb 8(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 8(%rdx) + movb 9(%rdx), %dil + movb 9(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 9(%rdx) + movb 10(%rdx), %dil + movb 10(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 10(%rdx) + movb 11(%rdx), %dil + movb 11(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 11(%rdx) + movb 12(%rdx), %dil + movb 12(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 12(%rdx) + movb 13(%rdx), %dil + movb 13(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 13(%rdx) + movb 14(%rdx), %dil + movb 14(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 14(%rdx) + movb 15(%rdx), %dil + movb 15(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 15(%rdx) + movb 16(%rdx), %dil + movb 16(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 16(%rdx) + movb 17(%rdx), %dil + movb 17(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 17(%rdx) + movb 18(%rdx), %dil + movb 18(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 18(%rdx) + movb 19(%rdx), %dil + movb 19(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 19(%rdx) + movb 20(%rdx), %dil + movb 20(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 20(%rdx) + movb 21(%rdx), %dil + movb 21(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 21(%rdx) + movb 22(%rdx), %dil + movb 22(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 22(%rdx) + movb 23(%rdx), %dil + movb 23(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 23(%rdx) + movb 24(%rdx), %dil + movb 24(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 24(%rdx) + movb 25(%rdx), %dil + movb 25(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 25(%rdx) + movb 26(%rdx), %dil + movb 26(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 26(%rdx) + movb 27(%rdx), %dil + movb 27(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 27(%rdx) + movb 28(%rdx), %dil + movb 28(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 28(%rdx) + movb 29(%rdx), %dil + movb 29(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 29(%rdx) + movb 30(%rdx), %dil + movb 30(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 30(%rdx) + movb 31(%rdx), %dil + movb 31(%rax), %al + xorb %dil, %al + andb %cl, %al + xorb %al, %dil + movb %dil, 31(%rdx) + movq $768, %rcx + leaq 184(%rsp), %rax + leaq -232(%rsp), %rsp + call L_sha3_256$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$2: + leaq 232(%rsp), %rsp + movq (%rsp), %rax + movq $32, %rcx + leaq 152(%rsp), %rdx + leaq -216(%rsp), %rsp + call L_shake256_64$1 +Ljade_kem_kyber_kyber512_amd64_ref_dec$1: + leaq 216(%rsp), %rsp + xorq %rax, %rax + movq 9584(%rsp), %r14 + movq 9592(%rsp), %r13 + movq 9600(%rsp), %r12 + movq 9608(%rsp), %rbp + movq 9616(%rsp), %rbx + movq 9624(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_ref_enc: +jade_kem_kyber_kyber512_amd64_ref_enc: + movq %rsp, %rax + leaq -80(%rsp), %rsp + andq $-16, %rsp + movq %rax, 72(%rsp) + movq %r14, 32(%rsp) + movq %r13, 40(%rsp) + movq %r12, 48(%rsp) + movq %rbp, 56(%rsp) + movq %rbx, 64(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rdx, %r12 + movq %rsp, %rdi + movq $32, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rcx + leaq -8800(%rsp), %rsp + call L__crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_ref_enc$1: + leaq 8800(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r14 + movq 40(%rsp), %r13 + movq 48(%rsp), %r12 + movq 56(%rsp), %rbp + movq 64(%rsp), %rbx + movq 72(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_ref_enc_derand: +jade_kem_kyber_kyber512_amd64_ref_enc_derand: + movq %rsp, %rax + leaq -80(%rsp), %rsp + andq $-8, %rsp + movq %rax, 72(%rsp) + movq %r14, 32(%rsp) + movq %r13, 40(%rsp) + movq %r12, 48(%rsp) + movq %rbp, 56(%rsp) + movq %rbx, 64(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rdx, %r12 + movq %rsp, %rax + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %cl + movb %cl, 31(%rax) + movq %rsp, %rcx + leaq -8800(%rsp), %rsp + call L__crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_ref_enc_derand$1: + leaq 8800(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r14 + movq 40(%rsp), %r13 + movq 48(%rsp), %r12 + movq 56(%rsp), %rbp + movq 64(%rsp), %rbx + movq 72(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_ref_keypair: +jade_kem_kyber_kyber512_amd64_ref_keypair: + movq %rsp, %rax + leaq -112(%rsp), %rsp + andq $-16, %rsp + movq %rax, 104(%rsp) + movq %r14, 64(%rsp) + movq %r13, 72(%rsp) + movq %r12, 80(%rsp) + movq %rbp, 88(%rsp) + movq %rbx, 96(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rdi + movq $64, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rax + leaq -6224(%rsp), %rsp + call L__crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_ref_keypair$1: + leaq 6224(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r14 + movq 72(%rsp), %r13 + movq 80(%rsp), %r12 + movq 88(%rsp), %rbp + movq 96(%rsp), %rbx + movq 104(%rsp), %rsp + ret +_jade_kem_kyber_kyber512_amd64_ref_keypair_derand: +jade_kem_kyber_kyber512_amd64_ref_keypair_derand: + movq %rsp, %rax + leaq -112(%rsp), %rsp + andq $-8, %rsp + movq %rax, 104(%rsp) + movq %r14, 64(%rsp) + movq %r13, 72(%rsp) + movq %r12, 80(%rsp) + movq %rbp, 88(%rsp) + movq %rbx, 96(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rax + movb (%rdx), %cl + movb %cl, (%rax) + movb 1(%rdx), %cl + movb %cl, 1(%rax) + movb 2(%rdx), %cl + movb %cl, 2(%rax) + movb 3(%rdx), %cl + movb %cl, 3(%rax) + movb 4(%rdx), %cl + movb %cl, 4(%rax) + movb 5(%rdx), %cl + movb %cl, 5(%rax) + movb 6(%rdx), %cl + movb %cl, 6(%rax) + movb 7(%rdx), %cl + movb %cl, 7(%rax) + movb 8(%rdx), %cl + movb %cl, 8(%rax) + movb 9(%rdx), %cl + movb %cl, 9(%rax) + movb 10(%rdx), %cl + movb %cl, 10(%rax) + movb 11(%rdx), %cl + movb %cl, 11(%rax) + movb 12(%rdx), %cl + movb %cl, 12(%rax) + movb 13(%rdx), %cl + movb %cl, 13(%rax) + movb 14(%rdx), %cl + movb %cl, 14(%rax) + movb 15(%rdx), %cl + movb %cl, 15(%rax) + movb 16(%rdx), %cl + movb %cl, 16(%rax) + movb 17(%rdx), %cl + movb %cl, 17(%rax) + movb 18(%rdx), %cl + movb %cl, 18(%rax) + movb 19(%rdx), %cl + movb %cl, 19(%rax) + movb 20(%rdx), %cl + movb %cl, 20(%rax) + movb 21(%rdx), %cl + movb %cl, 21(%rax) + movb 22(%rdx), %cl + movb %cl, 22(%rax) + movb 23(%rdx), %cl + movb %cl, 23(%rax) + movb 24(%rdx), %cl + movb %cl, 24(%rax) + movb 25(%rdx), %cl + movb %cl, 25(%rax) + movb 26(%rdx), %cl + movb %cl, 26(%rax) + movb 27(%rdx), %cl + movb %cl, 27(%rax) + movb 28(%rdx), %cl + movb %cl, 28(%rax) + movb 29(%rdx), %cl + movb %cl, 29(%rax) + movb 30(%rdx), %cl + movb %cl, 30(%rax) + movb 31(%rdx), %cl + movb %cl, 31(%rax) + movb 32(%rdx), %cl + movb %cl, 32(%rax) + movb 33(%rdx), %cl + movb %cl, 33(%rax) + movb 34(%rdx), %cl + movb %cl, 34(%rax) + movb 35(%rdx), %cl + movb %cl, 35(%rax) + movb 36(%rdx), %cl + movb %cl, 36(%rax) + movb 37(%rdx), %cl + movb %cl, 37(%rax) + movb 38(%rdx), %cl + movb %cl, 38(%rax) + movb 39(%rdx), %cl + movb %cl, 39(%rax) + movb 40(%rdx), %cl + movb %cl, 40(%rax) + movb 41(%rdx), %cl + movb %cl, 41(%rax) + movb 42(%rdx), %cl + movb %cl, 42(%rax) + movb 43(%rdx), %cl + movb %cl, 43(%rax) + movb 44(%rdx), %cl + movb %cl, 44(%rax) + movb 45(%rdx), %cl + movb %cl, 45(%rax) + movb 46(%rdx), %cl + movb %cl, 46(%rax) + movb 47(%rdx), %cl + movb %cl, 47(%rax) + movb 48(%rdx), %cl + movb %cl, 48(%rax) + movb 49(%rdx), %cl + movb %cl, 49(%rax) + movb 50(%rdx), %cl + movb %cl, 50(%rax) + movb 51(%rdx), %cl + movb %cl, 51(%rax) + movb 52(%rdx), %cl + movb %cl, 52(%rax) + movb 53(%rdx), %cl + movb %cl, 53(%rax) + movb 54(%rdx), %cl + movb %cl, 54(%rax) + movb 55(%rdx), %cl + movb %cl, 55(%rax) + movb 56(%rdx), %cl + movb %cl, 56(%rax) + movb 57(%rdx), %cl + movb %cl, 57(%rax) + movb 58(%rdx), %cl + movb %cl, 58(%rax) + movb 59(%rdx), %cl + movb %cl, 59(%rax) + movb 60(%rdx), %cl + movb %cl, 60(%rax) + movb 61(%rdx), %cl + movb %cl, 61(%rax) + movb 62(%rdx), %cl + movb %cl, 62(%rax) + movb 63(%rdx), %cl + movb %cl, 63(%rax) + movq %rsp, %rax + leaq -6224(%rsp), %rsp + call L__crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber512_amd64_ref_keypair_derand$1: + leaq 6224(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r14 + movq 72(%rsp), %r13 + movq 80(%rsp), %r12 + movq 88(%rsp), %rbp + movq 96(%rsp), %rbx + movq 104(%rsp), %rsp + ret +L__crypto_kem_enc_derand_jazz$1: + movq %r12, 8(%rsp) + movq %rbx, 16(%rsp) + movq %rbp, 24(%rsp) + leaq 80(%rsp), %rax + leaq -208(%rsp), %rsp + call L_sha3_256_32$1 +L__crypto_kem_enc_derand_jazz$111: + leaq 208(%rsp), %rsp + movq 8(%rsp), %rsi + movq $800, %rcx + leaq 112(%rsp), %rax + leaq -232(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_enc_derand_jazz$110: + leaq 232(%rsp), %rsp + leaq 144(%rsp), %rax + leaq 80(%rsp), %rcx + leaq -208(%rsp), %rsp + call L_sha3_512_64$1 +L__crypto_kem_enc_derand_jazz$109: + leaq 208(%rsp), %rsp + movq 8(%rsp), %rdx + leaq 80(%rsp), %rcx + leaq 176(%rsp), %rax + movq %rdx, %rsi + leaq 2456(%rsp), %rdi + call L_poly_frombytes$1 +L__crypto_kem_enc_derand_jazz$108: + addq $384, %rsi + leaq 2968(%rsp), %rdi + call L_poly_frombytes$1 +L__crypto_kem_enc_derand_jazz$107: + movq $0, %rsi + addq $768, %rdx + jmp L__crypto_kem_enc_derand_jazz$105 +L__crypto_kem_enc_derand_jazz$106: + movq (%rdx), %rdi + movq %rdi, 48(%rsp,%rsi,8) + addq $8, %rdx + incq %rsi +L__crypto_kem_enc_derand_jazz$105: + cmpq $4, %rsi + jb L__crypto_kem_enc_derand_jazz$106 + leaq 920(%rsp), %rdx + call L_i_poly_frommsg$1 +L__crypto_kem_enc_derand_jazz$104: + movq %rax, 8(%rsp) + movq $1, %rax + movq %rax, 32(%rsp) + movb 48(%rsp), %al + movb %al, 8600(%rsp) + movb 49(%rsp), %al + movb %al, 8601(%rsp) + movb 50(%rsp), %al + movb %al, 8602(%rsp) + movb 51(%rsp), %al + movb %al, 8603(%rsp) + movb 52(%rsp), %al + movb %al, 8604(%rsp) + movb 53(%rsp), %al + movb %al, 8605(%rsp) + movb 54(%rsp), %al + movb %al, 8606(%rsp) + movb 55(%rsp), %al + movb %al, 8607(%rsp) + movb 56(%rsp), %al + movb %al, 8608(%rsp) + movb 57(%rsp), %al + movb %al, 8609(%rsp) + movb 58(%rsp), %al + movb %al, 8610(%rsp) + movb 59(%rsp), %al + movb %al, 8611(%rsp) + movb 60(%rsp), %al + movb %al, 8612(%rsp) + movb 61(%rsp), %al + movb %al, 8613(%rsp) + movb 62(%rsp), %al + movb %al, 8614(%rsp) + movb 63(%rsp), %al + movb %al, 8615(%rsp) + movb 64(%rsp), %al + movb %al, 8616(%rsp) + movb 65(%rsp), %al + movb %al, 8617(%rsp) + movb 66(%rsp), %al + movb %al, 8618(%rsp) + movb 67(%rsp), %al + movb %al, 8619(%rsp) + movb 68(%rsp), %al + movb %al, 8620(%rsp) + movb 69(%rsp), %al + movb %al, 8621(%rsp) + movb 70(%rsp), %al + movb %al, 8622(%rsp) + movb 71(%rsp), %al + movb %al, 8623(%rsp) + movb 72(%rsp), %al + movb %al, 8624(%rsp) + movb 73(%rsp), %al + movb %al, 8625(%rsp) + movb 74(%rsp), %al + movb %al, 8626(%rsp) + movb 75(%rsp), %al + movb %al, 8627(%rsp) + movb 76(%rsp), %al + movb %al, 8628(%rsp) + movb 77(%rsp), %al + movb %al, 8629(%rsp) + movb 78(%rsp), %al + movb %al, 8630(%rsp) + movb 79(%rsp), %al + movb %al, 8631(%rsp) + movq 32(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_enc_derand_jazz$102 + movb $0, 8632(%rsp) + movb $0, 8633(%rsp) + jmp L__crypto_kem_enc_derand_jazz$103 +L__crypto_kem_enc_derand_jazz$102: + movb $0, 8632(%rsp) + movb $0, 8633(%rsp) +L__crypto_kem_enc_derand_jazz$103: + leaq 208(%rsp), %rax + leaq 8600(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_enc_derand_jazz$101: + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$99 +L__crypto_kem_enc_derand_jazz$100: + movq %rax, 408(%rsp,%rax,8) + incq %rax +L__crypto_kem_enc_derand_jazz$99: + cmpq $64, %rax + jb L__crypto_kem_enc_derand_jazz$100 + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$91 +L__crypto_kem_enc_derand_jazz$92: + movq %rax, 40(%rsp) + leaq 208(%rsp), %rax + leaq 8634(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_enc_derand_jazz$98: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rax + movq $0, %rcx +L__crypto_kem_enc_derand_jazz$93: + movzbw 8634(%rsp,%rcx), %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_enc_derand_jazz$96 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$96 + movw %dx, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$97: +L__crypto_kem_enc_derand_jazz$96: + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$94 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$94 + movw %di, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$95: +L__crypto_kem_enc_derand_jazz$94: + cmpq $166, %rcx + jb L__crypto_kem_enc_derand_jazz$93 +L__crypto_kem_enc_derand_jazz$91: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$92 + movq $0, %rax + movq $0, %rcx + jmp L__crypto_kem_enc_derand_jazz$89 +L__crypto_kem_enc_derand_jazz$90: + movw 408(%rsp,%rax,2), %dx + movw %dx, 6552(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_enc_derand_jazz$89: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$90 + movq 32(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_enc_derand_jazz$87 + movb $0, 8632(%rsp) + movb $1, 8633(%rsp) + jmp L__crypto_kem_enc_derand_jazz$88 +L__crypto_kem_enc_derand_jazz$87: + movb $1, 8632(%rsp) + movb $0, 8633(%rsp) +L__crypto_kem_enc_derand_jazz$88: + leaq 208(%rsp), %rax + leaq 8600(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_enc_derand_jazz$86: + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$84 +L__crypto_kem_enc_derand_jazz$85: + movq %rax, 408(%rsp,%rax,8) + incq %rax +L__crypto_kem_enc_derand_jazz$84: + cmpq $64, %rax + jb L__crypto_kem_enc_derand_jazz$85 + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$76 +L__crypto_kem_enc_derand_jazz$77: + movq %rax, 40(%rsp) + leaq 208(%rsp), %rax + leaq 8634(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_enc_derand_jazz$83: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rax + movq $0, %rcx +L__crypto_kem_enc_derand_jazz$78: + movzbw 8634(%rsp,%rcx), %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_enc_derand_jazz$81 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$81 + movw %dx, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$82: +L__crypto_kem_enc_derand_jazz$81: + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$79 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$79 + movw %di, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$80: +L__crypto_kem_enc_derand_jazz$79: + cmpq $166, %rcx + jb L__crypto_kem_enc_derand_jazz$78 +L__crypto_kem_enc_derand_jazz$76: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$77 + movq $0, %rax + movq $256, %rcx + jmp L__crypto_kem_enc_derand_jazz$74 +L__crypto_kem_enc_derand_jazz$75: + movw 408(%rsp,%rax,2), %dx + movw %dx, 6552(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_enc_derand_jazz$74: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$75 + movq 32(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_enc_derand_jazz$72 + movb $1, 8632(%rsp) + movb $0, 8633(%rsp) + jmp L__crypto_kem_enc_derand_jazz$73 +L__crypto_kem_enc_derand_jazz$72: + movb $0, 8632(%rsp) + movb $1, 8633(%rsp) +L__crypto_kem_enc_derand_jazz$73: + leaq 208(%rsp), %rax + leaq 8600(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_enc_derand_jazz$71: + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$69 +L__crypto_kem_enc_derand_jazz$70: + movq %rax, 408(%rsp,%rax,8) + incq %rax +L__crypto_kem_enc_derand_jazz$69: + cmpq $64, %rax + jb L__crypto_kem_enc_derand_jazz$70 + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$61 +L__crypto_kem_enc_derand_jazz$62: + movq %rax, 40(%rsp) + leaq 208(%rsp), %rax + leaq 8634(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_enc_derand_jazz$68: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rax + movq $0, %rcx +L__crypto_kem_enc_derand_jazz$63: + movzbw 8634(%rsp,%rcx), %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_enc_derand_jazz$66 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$66 + movw %dx, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$67: +L__crypto_kem_enc_derand_jazz$66: + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$64 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$64 + movw %di, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$65: +L__crypto_kem_enc_derand_jazz$64: + cmpq $166, %rcx + jb L__crypto_kem_enc_derand_jazz$63 +L__crypto_kem_enc_derand_jazz$61: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$62 + movq $0, %rax + movq $512, %rcx + jmp L__crypto_kem_enc_derand_jazz$59 +L__crypto_kem_enc_derand_jazz$60: + movw 408(%rsp,%rax,2), %dx + movw %dx, 6552(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_enc_derand_jazz$59: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$60 + movq 32(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_enc_derand_jazz$57 + movb $1, 8632(%rsp) + movb $1, 8633(%rsp) + jmp L__crypto_kem_enc_derand_jazz$58 +L__crypto_kem_enc_derand_jazz$57: + movb $1, 8632(%rsp) + movb $1, 8633(%rsp) +L__crypto_kem_enc_derand_jazz$58: + leaq 208(%rsp), %rax + leaq 8600(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_enc_derand_jazz$56: + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$54 +L__crypto_kem_enc_derand_jazz$55: + movq %rax, 408(%rsp,%rax,8) + incq %rax +L__crypto_kem_enc_derand_jazz$54: + cmpq $64, %rax + jb L__crypto_kem_enc_derand_jazz$55 + movq $0, %rax + jmp L__crypto_kem_enc_derand_jazz$46 +L__crypto_kem_enc_derand_jazz$47: + movq %rax, 32(%rsp) + leaq 208(%rsp), %rax + leaq 8634(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_enc_derand_jazz$53: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rax + movq $0, %rcx +L__crypto_kem_enc_derand_jazz$48: + movzbw 8634(%rsp,%rcx), %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 8634(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_enc_derand_jazz$51 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$51 + movw %dx, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$52: +L__crypto_kem_enc_derand_jazz$51: + cmpw $3329, %di + jnb L__crypto_kem_enc_derand_jazz$49 + cmpq $256, %rax + jnb L__crypto_kem_enc_derand_jazz$49 + movw %di, 408(%rsp,%rax,2) + incq %rax +L__crypto_kem_enc_derand_jazz$50: +L__crypto_kem_enc_derand_jazz$49: + cmpq $166, %rcx + jb L__crypto_kem_enc_derand_jazz$48 +L__crypto_kem_enc_derand_jazz$46: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$47 + movq $0, %rax + movq $768, %rcx + jmp L__crypto_kem_enc_derand_jazz$44 +L__crypto_kem_enc_derand_jazz$45: + movw 408(%rsp,%rax,2), %dx + movw %dx, 6552(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_enc_derand_jazz$44: + cmpq $256, %rax + jb L__crypto_kem_enc_derand_jazz$45 + movq 8(%rsp), %rcx + movb $0, %al + leaq 3480(%rsp), %rdx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +L__crypto_kem_enc_derand_jazz$43: + leaq 240(%rsp), %rsp + movq 8(%rsp), %rcx + movb $1, %al + leaq 3992(%rsp), %rdx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +L__crypto_kem_enc_derand_jazz$42: + leaq 240(%rsp), %rsp + movq 8(%rsp), %rax + movb $2, %cl + leaq 4504(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise_eta2$1 +L__crypto_kem_enc_derand_jazz$41: + leaq 176(%rsp), %rsp + movq 8(%rsp), %rax + movb $3, %cl + leaq 5016(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise_eta2$1 +L__crypto_kem_enc_derand_jazz$40: + leaq 176(%rsp), %rsp + movq 8(%rsp), %rax + movb $4, %cl + leaq 408(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise_eta2$1 +L__crypto_kem_enc_derand_jazz$39: + leaq 176(%rsp), %rsp + leaq 3480(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_enc_derand_jazz$38: + leaq 3992(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_enc_derand_jazz$37: + leaq 5528(%rsp), %rdi + leaq 6552(%rsp), %rcx + leaq 3480(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$36: + leaq 16(%rsp), %rsp + leaq 1432(%rsp), %rdi + leaq 7064(%rsp), %rcx + leaq 3992(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$35: + leaq 16(%rsp), %rsp + leaq 5528(%rsp), %rcx + leaq 1432(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$34: + leaq 5528(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_enc_derand_jazz$32 +L__crypto_kem_enc_derand_jazz$33: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$32: + cmpq $256, %rcx + jb L__crypto_kem_enc_derand_jazz$33 + leaq 6040(%rsp), %rdi + leaq 7576(%rsp), %rcx + leaq 3480(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$31: + leaq 16(%rsp), %rsp + leaq 1432(%rsp), %rdi + leaq 8088(%rsp), %rcx + leaq 3992(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$30: + leaq 16(%rsp), %rsp + leaq 6040(%rsp), %rcx + leaq 1432(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$29: + leaq 6040(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_enc_derand_jazz$27 +L__crypto_kem_enc_derand_jazz$28: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$27: + cmpq $256, %rcx + jb L__crypto_kem_enc_derand_jazz$28 + leaq 1432(%rsp), %rdi + leaq 2456(%rsp), %rcx + leaq 3480(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$26: + leaq 16(%rsp), %rsp + leaq 1944(%rsp), %rdi + leaq 2968(%rsp), %rcx + leaq 3992(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$25: + leaq 16(%rsp), %rsp + leaq 1432(%rsp), %rcx + leaq 1944(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$24: + leaq 1432(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_enc_derand_jazz$22 +L__crypto_kem_enc_derand_jazz$23: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$22: + cmpq $256, %rcx + jb L__crypto_kem_enc_derand_jazz$23 + leaq 5528(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$21: + leaq 6040(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$20: + leaq 1432(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$19: + leaq 5528(%rsp), %rcx + leaq 4504(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$18: + leaq 6040(%rsp), %rcx + leaq 5016(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$17: + leaq 1432(%rsp), %rcx + leaq 408(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$16: + leaq 1432(%rsp), %rcx + leaq 920(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$15: + leaq 5528(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_enc_derand_jazz$13 +L__crypto_kem_enc_derand_jazz$14: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$13: + cmpq $256, %rcx + jb L__crypto_kem_enc_derand_jazz$14 + leaq 6040(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_enc_derand_jazz$11 +L__crypto_kem_enc_derand_jazz$12: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$11: + cmpq $256, %rcx + jb L__crypto_kem_enc_derand_jazz$12 + leaq 1432(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_enc_derand_jazz$9 +L__crypto_kem_enc_derand_jazz$10: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_enc_derand_jazz$9: + cmpq $256, %rcx + jb L__crypto_kem_enc_derand_jazz$10 + movq 16(%rsp), %rax + movq $0, %rdx + movq $0, %rsi + leaq 5528(%rsp), %rcx + call L_poly_csubq$1 +L__crypto_kem_enc_derand_jazz$8: + leaq 6040(%rsp), %rcx + call L_poly_csubq$1 +L__crypto_kem_enc_derand_jazz$7: + jmp L__crypto_kem_enc_derand_jazz$5 +L__crypto_kem_enc_derand_jazz$6: + movzwq 5528(%rsp,%rdx,2), %rcx + incq %rdx + shlq $10, %rcx + addq $1665, %rcx + imulq $1290167, %rcx, %rcx + shrq $32, %rcx + andq $1023, %rcx + movzwq 5528(%rsp,%rdx,2), %rdi + incq %rdx + shlq $10, %rdi + addq $1665, %rdi + imulq $1290167, %rdi, %rdi + shrq $32, %rdi + andq $1023, %rdi + movzwq 5528(%rsp,%rdx,2), %r8 + incq %rdx + shlq $10, %r8 + addq $1665, %r8 + imulq $1290167, %r8, %r8 + shrq $32, %r8 + andq $1023, %r8 + movzwq 5528(%rsp,%rdx,2), %r9 + incq %rdx + shlq $10, %r9 + addq $1665, %r9 + imulq $1290167, %r9, %r9 + shrq $32, %r9 + andq $1023, %r9 + movw %cx, %r10w + andw $255, %r10w + movb %r10b, (%rax,%rsi) + incq %rsi + shrw $8, %cx + movw %di, %r10w + shlw $2, %r10w + orw %cx, %r10w + movb %r10b, (%rax,%rsi) + incq %rsi + shrw $6, %di + movw %r8w, %cx + shlw $4, %cx + orw %di, %cx + movb %cl, (%rax,%rsi) + incq %rsi + shrw $4, %r8w + movw %r9w, %cx + shlw $6, %cx + orw %r8w, %cx + movb %cl, (%rax,%rsi) + incq %rsi + shrq $2, %r9 + movb %r9b, (%rax,%rsi) + incq %rsi +L__crypto_kem_enc_derand_jazz$5: + cmpq $512, %rdx + jb L__crypto_kem_enc_derand_jazz$6 + addq $640, %rax + leaq 1432(%rsp), %rcx + call L_poly_compress$1 +L__crypto_kem_enc_derand_jazz$4: + movq 16(%rsp), %rsi + movq $768, %rcx + leaq 176(%rsp), %rax + leaq -232(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_enc_derand_jazz$3: + leaq 232(%rsp), %rsp + movq 24(%rsp), %rax + movq $32, %rcx + leaq 144(%rsp), %rdx + leaq -216(%rsp), %rsp + call L_shake256_64$1 +L__crypto_kem_enc_derand_jazz$2: + leaq 216(%rsp), %rsp + ret +L__crypto_kem_keypair_derand_jazz$1: + movq %rax, 8(%rsp) + movq %rbx, 16(%rsp) + movq %rbp, 24(%rsp) + movq %rax, %rcx + movq %rbx, 32(%rsp) + movq %rbp, 40(%rsp) + leaq 128(%rsp), %rax + leaq -208(%rsp), %rsp + call L_sha3_512_32$1 +L__crypto_kem_keypair_derand_jazz$93: + leaq 208(%rsp), %rsp + movq 128(%rsp), %rax + movq %rax, 96(%rsp) + movq 160(%rsp), %rax + movq %rax, 64(%rsp) + movq 136(%rsp), %rax + movq %rax, 104(%rsp) + movq 168(%rsp), %rax + movq %rax, 72(%rsp) + movq 144(%rsp), %rax + movq %rax, 112(%rsp) + movq 176(%rsp), %rax + movq %rax, 80(%rsp) + movq 152(%rsp), %rax + movq %rax, 120(%rsp) + movq 184(%rsp), %rax + movq %rax, 88(%rsp) + movq $0, %rax + movq %rax, 48(%rsp) + movb 96(%rsp), %al + movb %al, 6024(%rsp) + movb 97(%rsp), %al + movb %al, 6025(%rsp) + movb 98(%rsp), %al + movb %al, 6026(%rsp) + movb 99(%rsp), %al + movb %al, 6027(%rsp) + movb 100(%rsp), %al + movb %al, 6028(%rsp) + movb 101(%rsp), %al + movb %al, 6029(%rsp) + movb 102(%rsp), %al + movb %al, 6030(%rsp) + movb 103(%rsp), %al + movb %al, 6031(%rsp) + movb 104(%rsp), %al + movb %al, 6032(%rsp) + movb 105(%rsp), %al + movb %al, 6033(%rsp) + movb 106(%rsp), %al + movb %al, 6034(%rsp) + movb 107(%rsp), %al + movb %al, 6035(%rsp) + movb 108(%rsp), %al + movb %al, 6036(%rsp) + movb 109(%rsp), %al + movb %al, 6037(%rsp) + movb 110(%rsp), %al + movb %al, 6038(%rsp) + movb 111(%rsp), %al + movb %al, 6039(%rsp) + movb 112(%rsp), %al + movb %al, 6040(%rsp) + movb 113(%rsp), %al + movb %al, 6041(%rsp) + movb 114(%rsp), %al + movb %al, 6042(%rsp) + movb 115(%rsp), %al + movb %al, 6043(%rsp) + movb 116(%rsp), %al + movb %al, 6044(%rsp) + movb 117(%rsp), %al + movb %al, 6045(%rsp) + movb 118(%rsp), %al + movb %al, 6046(%rsp) + movb 119(%rsp), %al + movb %al, 6047(%rsp) + movb 120(%rsp), %al + movb %al, 6048(%rsp) + movb 121(%rsp), %al + movb %al, 6049(%rsp) + movb 122(%rsp), %al + movb %al, 6050(%rsp) + movb 123(%rsp), %al + movb %al, 6051(%rsp) + movb 124(%rsp), %al + movb %al, 6052(%rsp) + movb 125(%rsp), %al + movb %al, 6053(%rsp) + movb 126(%rsp), %al + movb %al, 6054(%rsp) + movb 127(%rsp), %al + movb %al, 6055(%rsp) + movq 48(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_keypair_derand_jazz$91 + movb $0, 6056(%rsp) + movb $0, 6057(%rsp) + jmp L__crypto_kem_keypair_derand_jazz$92 +L__crypto_kem_keypair_derand_jazz$91: + movb $0, 6056(%rsp) + movb $0, 6057(%rsp) +L__crypto_kem_keypair_derand_jazz$92: + leaq 192(%rsp), %rax + leaq 6024(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_keypair_derand_jazz$90: + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$88 +L__crypto_kem_keypair_derand_jazz$89: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L__crypto_kem_keypair_derand_jazz$88: + cmpq $64, %rax + jb L__crypto_kem_keypair_derand_jazz$89 + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$80 +L__crypto_kem_keypair_derand_jazz$81: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rax + leaq 6058(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_keypair_derand_jazz$87: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L__crypto_kem_keypair_derand_jazz$82: + movzbw 6058(%rsp,%rcx), %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_keypair_derand_jazz$85 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$85 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$86: +L__crypto_kem_keypair_derand_jazz$85: + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$83 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$83 + movw %di, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$84: +L__crypto_kem_keypair_derand_jazz$83: + cmpq $166, %rcx + jb L__crypto_kem_keypair_derand_jazz$82 +L__crypto_kem_keypair_derand_jazz$80: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$81 + movq $0, %rax + movq $0, %rcx + jmp L__crypto_kem_keypair_derand_jazz$78 +L__crypto_kem_keypair_derand_jazz$79: + movw 392(%rsp,%rax,2), %dx + movw %dx, 3976(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_keypair_derand_jazz$78: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$79 + movq 48(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_keypair_derand_jazz$76 + movb $0, 6056(%rsp) + movb $1, 6057(%rsp) + jmp L__crypto_kem_keypair_derand_jazz$77 +L__crypto_kem_keypair_derand_jazz$76: + movb $1, 6056(%rsp) + movb $0, 6057(%rsp) +L__crypto_kem_keypair_derand_jazz$77: + leaq 192(%rsp), %rax + leaq 6024(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_keypair_derand_jazz$75: + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$73 +L__crypto_kem_keypair_derand_jazz$74: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L__crypto_kem_keypair_derand_jazz$73: + cmpq $64, %rax + jb L__crypto_kem_keypair_derand_jazz$74 + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$65 +L__crypto_kem_keypair_derand_jazz$66: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rax + leaq 6058(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_keypair_derand_jazz$72: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L__crypto_kem_keypair_derand_jazz$67: + movzbw 6058(%rsp,%rcx), %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_keypair_derand_jazz$70 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$70 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$71: +L__crypto_kem_keypair_derand_jazz$70: + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$68 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$68 + movw %di, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$69: +L__crypto_kem_keypair_derand_jazz$68: + cmpq $166, %rcx + jb L__crypto_kem_keypair_derand_jazz$67 +L__crypto_kem_keypair_derand_jazz$65: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$66 + movq $0, %rax + movq $256, %rcx + jmp L__crypto_kem_keypair_derand_jazz$63 +L__crypto_kem_keypair_derand_jazz$64: + movw 392(%rsp,%rax,2), %dx + movw %dx, 3976(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_keypair_derand_jazz$63: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$64 + movq 48(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_keypair_derand_jazz$61 + movb $1, 6056(%rsp) + movb $0, 6057(%rsp) + jmp L__crypto_kem_keypair_derand_jazz$62 +L__crypto_kem_keypair_derand_jazz$61: + movb $0, 6056(%rsp) + movb $1, 6057(%rsp) +L__crypto_kem_keypair_derand_jazz$62: + leaq 192(%rsp), %rax + leaq 6024(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_keypair_derand_jazz$60: + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$58 +L__crypto_kem_keypair_derand_jazz$59: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L__crypto_kem_keypair_derand_jazz$58: + cmpq $64, %rax + jb L__crypto_kem_keypair_derand_jazz$59 + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$50 +L__crypto_kem_keypair_derand_jazz$51: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rax + leaq 6058(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_keypair_derand_jazz$57: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L__crypto_kem_keypair_derand_jazz$52: + movzbw 6058(%rsp,%rcx), %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_keypair_derand_jazz$55 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$55 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$56: +L__crypto_kem_keypair_derand_jazz$55: + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$53 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$53 + movw %di, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$54: +L__crypto_kem_keypair_derand_jazz$53: + cmpq $166, %rcx + jb L__crypto_kem_keypair_derand_jazz$52 +L__crypto_kem_keypair_derand_jazz$50: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$51 + movq $0, %rax + movq $512, %rcx + jmp L__crypto_kem_keypair_derand_jazz$48 +L__crypto_kem_keypair_derand_jazz$49: + movw 392(%rsp,%rax,2), %dx + movw %dx, 3976(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_keypair_derand_jazz$48: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$49 + movq 48(%rsp), %rax + cmpq $0, %rax + je L__crypto_kem_keypair_derand_jazz$46 + movb $1, 6056(%rsp) + movb $1, 6057(%rsp) + jmp L__crypto_kem_keypair_derand_jazz$47 +L__crypto_kem_keypair_derand_jazz$46: + movb $1, 6056(%rsp) + movb $1, 6057(%rsp) +L__crypto_kem_keypair_derand_jazz$47: + leaq 192(%rsp), %rax + leaq 6024(%rsp), %rcx + call L_shake128_absorb34$1 +L__crypto_kem_keypair_derand_jazz$45: + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$43 +L__crypto_kem_keypair_derand_jazz$44: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L__crypto_kem_keypair_derand_jazz$43: + cmpq $64, %rax + jb L__crypto_kem_keypair_derand_jazz$44 + movq $0, %rax + jmp L__crypto_kem_keypair_derand_jazz$35 +L__crypto_kem_keypair_derand_jazz$36: + movq %rax, 48(%rsp) + leaq 192(%rsp), %rax + leaq 6058(%rsp), %rcx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L__crypto_kem_keypair_derand_jazz$42: + leaq 8(%rsp), %rsp + movq 48(%rsp), %rax + movq $0, %rcx +L__crypto_kem_keypair_derand_jazz$37: + movzbw 6058(%rsp,%rcx), %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 6058(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L__crypto_kem_keypair_derand_jazz$40 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$40 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$41: +L__crypto_kem_keypair_derand_jazz$40: + cmpw $3329, %di + jnb L__crypto_kem_keypair_derand_jazz$38 + cmpq $256, %rax + jnb L__crypto_kem_keypair_derand_jazz$38 + movw %di, 392(%rsp,%rax,2) + incq %rax +L__crypto_kem_keypair_derand_jazz$39: +L__crypto_kem_keypair_derand_jazz$38: + cmpq $166, %rcx + jb L__crypto_kem_keypair_derand_jazz$37 +L__crypto_kem_keypair_derand_jazz$35: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$36 + movq $0, %rax + movq $768, %rcx + jmp L__crypto_kem_keypair_derand_jazz$33 +L__crypto_kem_keypair_derand_jazz$34: + movw 392(%rsp,%rax,2), %dx + movw %dx, 3976(%rsp,%rcx,2) + incq %rax + incq %rcx +L__crypto_kem_keypair_derand_jazz$33: + cmpq $256, %rax + jb L__crypto_kem_keypair_derand_jazz$34 + movb $0, %al + leaq 904(%rsp), %rdx + leaq 64(%rsp), %rcx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +L__crypto_kem_keypair_derand_jazz$32: + leaq 240(%rsp), %rsp + movb $1, %al + leaq 1416(%rsp), %rdx + leaq 64(%rsp), %rcx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +L__crypto_kem_keypair_derand_jazz$31: + leaq 240(%rsp), %rsp + movb $2, %al + leaq 1928(%rsp), %rdx + leaq 64(%rsp), %rcx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +L__crypto_kem_keypair_derand_jazz$30: + leaq 240(%rsp), %rsp + movb $3, %al + leaq 2440(%rsp), %rdx + leaq 64(%rsp), %rcx + leaq -240(%rsp), %rsp + call L_poly_getnoise_eta1$1 +L__crypto_kem_keypair_derand_jazz$29: + leaq 240(%rsp), %rsp + leaq 904(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$28: + leaq 1416(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$27: + leaq 1928(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$26: + leaq 2440(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$25: + leaq 2952(%rsp), %rdi + leaq 3976(%rsp), %rcx + leaq 904(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$24: + leaq 16(%rsp), %rsp + leaq 392(%rsp), %rdi + leaq 4488(%rsp), %rcx + leaq 1416(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$23: + leaq 16(%rsp), %rsp + leaq 2952(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$22: + leaq 2952(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_keypair_derand_jazz$20 +L__crypto_kem_keypair_derand_jazz$21: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_keypair_derand_jazz$20: + cmpq $256, %rcx + jb L__crypto_kem_keypair_derand_jazz$21 + leaq 2952(%rsp), %rax + call L_poly_frommont$1 +L__crypto_kem_keypair_derand_jazz$19: + leaq 3464(%rsp), %rdi + leaq 5000(%rsp), %rcx + leaq 904(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$18: + leaq 16(%rsp), %rsp + leaq 392(%rsp), %rdi + leaq 5512(%rsp), %rcx + leaq 1416(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$17: + leaq 16(%rsp), %rsp + leaq 3464(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$16: + leaq 3464(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_keypair_derand_jazz$14 +L__crypto_kem_keypair_derand_jazz$15: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_keypair_derand_jazz$14: + cmpq $256, %rcx + jb L__crypto_kem_keypair_derand_jazz$15 + leaq 3464(%rsp), %rax + call L_poly_frommont$1 +L__crypto_kem_keypair_derand_jazz$13: + leaq 2952(%rsp), %rcx + leaq 1928(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$12: + leaq 3464(%rsp), %rcx + leaq 2440(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$11: + leaq 2952(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_keypair_derand_jazz$9 +L__crypto_kem_keypair_derand_jazz$10: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_keypair_derand_jazz$9: + cmpq $256, %rcx + jb L__crypto_kem_keypair_derand_jazz$10 + leaq 3464(%rsp), %rax + movq $0, %rcx + jmp L__crypto_kem_keypair_derand_jazz$7 +L__crypto_kem_keypair_derand_jazz$8: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L__crypto_kem_keypair_derand_jazz$7: + cmpq $256, %rcx + jb L__crypto_kem_keypair_derand_jazz$8 + movq 32(%rsp), %rax + movq 40(%rsp), %rcx + movq %rcx, %rdx + leaq 904(%rsp), %rcx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$6: + addq $384, %rdx + leaq 1416(%rsp), %rcx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$5: + movq %rax, %rdx + leaq 2952(%rsp), %rcx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$4: + addq $384, %rdx + leaq 3464(%rsp), %rcx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$3: + addq $768, %rax + movq 96(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 104(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 112(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 120(%rsp), %rcx + movq %rcx, (%rax) + movq 24(%rsp), %rax + addq $768, %rax + movq 16(%rsp), %rcx + movq (%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 8(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 16(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 24(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 32(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 40(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 48(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 56(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 64(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 72(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 80(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 88(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 96(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 104(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 112(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 120(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 128(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 136(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 144(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 152(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 160(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 168(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 176(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 184(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 192(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 200(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 208(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 216(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 224(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 232(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 240(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 248(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 256(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 264(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 272(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 280(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 288(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 296(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 304(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 312(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 320(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 328(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 336(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 344(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 352(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 360(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 368(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 376(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 384(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 392(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 400(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 408(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 416(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 424(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 432(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 440(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 448(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 456(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 464(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 472(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 480(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 488(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 496(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 504(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 512(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 520(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 528(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 536(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 544(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 552(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 560(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 568(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 576(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 584(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 592(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 600(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 608(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 616(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 624(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 632(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 640(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 648(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 656(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 664(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 672(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 680(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 688(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 696(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 704(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 712(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 720(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 728(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 736(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 744(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 752(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 760(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 768(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 776(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 784(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 792(%rcx), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq %rax, 24(%rsp) + movq 16(%rsp), %rsi + movq $800, %rcx + leaq 96(%rsp), %rax + leaq -232(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_keypair_derand_jazz$2: + leaq 232(%rsp), %rsp + movq 24(%rsp), %rax + movq 8(%rsp), %rcx + leaq 96(%rsp), %rdx + movb (%rdx), %sil + movb %sil, (%rax) + movb 1(%rdx), %sil + movb %sil, 1(%rax) + movb 2(%rdx), %sil + movb %sil, 2(%rax) + movb 3(%rdx), %sil + movb %sil, 3(%rax) + movb 4(%rdx), %sil + movb %sil, 4(%rax) + movb 5(%rdx), %sil + movb %sil, 5(%rax) + movb 6(%rdx), %sil + movb %sil, 6(%rax) + movb 7(%rdx), %sil + movb %sil, 7(%rax) + movb 8(%rdx), %sil + movb %sil, 8(%rax) + movb 9(%rdx), %sil + movb %sil, 9(%rax) + movb 10(%rdx), %sil + movb %sil, 10(%rax) + movb 11(%rdx), %sil + movb %sil, 11(%rax) + movb 12(%rdx), %sil + movb %sil, 12(%rax) + movb 13(%rdx), %sil + movb %sil, 13(%rax) + movb 14(%rdx), %sil + movb %sil, 14(%rax) + movb 15(%rdx), %sil + movb %sil, 15(%rax) + movb 16(%rdx), %sil + movb %sil, 16(%rax) + movb 17(%rdx), %sil + movb %sil, 17(%rax) + movb 18(%rdx), %sil + movb %sil, 18(%rax) + movb 19(%rdx), %sil + movb %sil, 19(%rax) + movb 20(%rdx), %sil + movb %sil, 20(%rax) + movb 21(%rdx), %sil + movb %sil, 21(%rax) + movb 22(%rdx), %sil + movb %sil, 22(%rax) + movb 23(%rdx), %sil + movb %sil, 23(%rax) + movb 24(%rdx), %sil + movb %sil, 24(%rax) + movb 25(%rdx), %sil + movb %sil, 25(%rax) + movb 26(%rdx), %sil + movb %sil, 26(%rax) + movb 27(%rdx), %sil + movb %sil, 27(%rax) + movb 28(%rdx), %sil + movb %sil, 28(%rax) + movb 29(%rdx), %sil + movb %sil, 29(%rax) + movb 30(%rdx), %sil + movb %sil, 30(%rax) + movb 31(%rdx), %dl + movb %dl, 31(%rax) + addq $32, %rax + leaq 32(%rcx), %rcx + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %cl + movb %cl, 31(%rax) + ret +L_i_poly_tomsg$1: + call L_poly_csubq$1 +L_i_poly_tomsg$2: + movb $0, %sil + movw (%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 2(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 4(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 6(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 8(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 10(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 12(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 14(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, (%rax) + movb $0, %sil + movw 16(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 18(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 20(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 22(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 24(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 26(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 28(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 30(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 1(%rax) + movb $0, %sil + movw 32(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 34(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 36(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 38(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 40(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 42(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 44(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 46(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 2(%rax) + movb $0, %sil + movw 48(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 50(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 52(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 54(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 56(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 58(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 60(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 62(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 3(%rax) + movb $0, %sil + movw 64(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 66(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 68(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 70(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 72(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 74(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 76(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 78(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 4(%rax) + movb $0, %sil + movw 80(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 82(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 84(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 86(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 88(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 90(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 92(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 94(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 5(%rax) + movb $0, %sil + movw 96(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 98(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 100(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 102(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 104(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 106(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 108(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 110(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 6(%rax) + movb $0, %sil + movw 112(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 114(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 116(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 118(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 120(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 122(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 124(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 126(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 7(%rax) + movb $0, %sil + movw 128(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 130(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 132(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 134(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 136(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 138(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 140(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 142(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 8(%rax) + movb $0, %sil + movw 144(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 146(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 148(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 150(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 152(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 154(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 156(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 158(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 9(%rax) + movb $0, %sil + movw 160(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 162(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 164(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 166(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 168(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 170(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 172(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 174(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 10(%rax) + movb $0, %sil + movw 176(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 178(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 180(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 182(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 184(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 186(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 188(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 190(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 11(%rax) + movb $0, %sil + movw 192(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 194(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 196(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 198(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 200(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 202(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 204(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 206(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 12(%rax) + movb $0, %sil + movw 208(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 210(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 212(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 214(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 216(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 218(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 220(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 222(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 13(%rax) + movb $0, %sil + movw 224(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 226(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 228(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 230(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 232(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 234(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 236(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 238(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 14(%rax) + movb $0, %sil + movw 240(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 242(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 244(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 246(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 248(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 250(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 252(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 254(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 15(%rax) + movb $0, %sil + movw 256(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 258(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 260(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 262(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 264(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 266(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 268(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 270(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 16(%rax) + movb $0, %sil + movw 272(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 274(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 276(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 278(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 280(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 282(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 284(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 286(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 17(%rax) + movb $0, %sil + movw 288(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 290(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 292(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 294(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 296(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 298(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 300(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 302(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 18(%rax) + movb $0, %sil + movw 304(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 306(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 308(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 310(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 312(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 314(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 316(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 318(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 19(%rax) + movb $0, %sil + movw 320(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 322(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 324(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 326(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 328(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 330(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 332(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 334(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 20(%rax) + movb $0, %sil + movw 336(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 338(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 340(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 342(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 344(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 346(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 348(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 350(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 21(%rax) + movb $0, %sil + movw 352(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 354(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 356(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 358(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 360(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 362(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 364(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 366(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 22(%rax) + movb $0, %sil + movw 368(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 370(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 372(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 374(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 376(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 378(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 380(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 382(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 23(%rax) + movb $0, %sil + movw 384(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 386(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 388(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 390(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 392(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 394(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 396(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 398(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 24(%rax) + movb $0, %sil + movw 400(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 402(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 404(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 406(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 408(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 410(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 412(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 414(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 25(%rax) + movb $0, %sil + movw 416(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 418(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 420(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 422(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 424(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 426(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 428(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 430(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 26(%rax) + movb $0, %sil + movw 432(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 434(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 436(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 438(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 440(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 442(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 444(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 446(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 27(%rax) + movb $0, %sil + movw 448(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 450(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 452(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 454(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 456(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 458(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 460(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 462(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 28(%rax) + movb $0, %sil + movw 464(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 466(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 468(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 470(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 472(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 474(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 476(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 478(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 29(%rax) + movb $0, %sil + movw 480(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 482(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 484(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 486(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 488(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 490(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 492(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 494(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 30(%rax) + movb $0, %sil + movw 496(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 498(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 500(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 502(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 504(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 506(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 508(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 510(%rcx), %cx + movzwl %cx, %ecx + shll $1, %ecx + addl $1665, %ecx + imull $80635, %ecx, %ecx + shrl $28, %ecx + andl $1, %ecx + shll $7, %ecx + orb %cl, %sil + movb %sil, 31(%rax) + ret +L_poly_tobytes$1: + call L_poly_csubq$1 +L_poly_tobytes$4: + movq $0, %rsi + movq $0, %rdi + jmp L_poly_tobytes$2 +L_poly_tobytes$3: + movw (%rcx,%rsi,2), %r8w + incq %rsi + movw (%rcx,%rsi,2), %r9w + incq %rsi + movw %r8w, %r10w + andw $255, %r10w + movb %r10b, (%rdx,%rdi) + incq %rdi + shrw $8, %r8w + movw %r9w, %r10w + andw $15, %r10w + shlw $4, %r10w + orw %r8w, %r10w + movb %r10b, (%rdx,%rdi) + incq %rdi + shrw $4, %r9w + movb %r9b, (%rdx,%rdi) + incq %rdi +L_poly_tobytes$2: + cmpq $256, %rsi + jb L_poly_tobytes$3 + ret +L_poly_sub$1: + movq $0, %r8 + jmp L_poly_sub$2 +L_poly_sub$3: + movw (%rsi,%r8,2), %r9w + movw (%rdi,%r8,2), %r10w + subw %r10w, %r9w + movw %r9w, (%rcx,%r8,2) + incq %r8 +L_poly_sub$2: + cmpq $256, %r8 + jb L_poly_sub$3 + ret +L_poly_ntt$1: + leaq glob_data + 448(%rip), %rsi + movq $0, %rdi + movq $128, %r8 + jmp L_poly_ntt$4 +L_poly_ntt$5: + movq $0, %r11 + jmp L_poly_ntt$6 +L_poly_ntt$7: + incq %rdi + movw (%rsi,%rdi,2), %r9w + movq %r11, %r10 + leaq (%r11,%r8), %r11 + jmp L_poly_ntt$8 +L_poly_ntt$9: + leaq (%r10,%r8), %rbx + movw (%rcx,%rbx,2), %bp + movswl %bp, %ebp + movswl %r9w, %r12d + imull %r12d, %ebp + imull $62209, %ebp, %r12d + shll $16, %r12d + sarl $16, %r12d + imull $3329, %r12d, %r12d + subl %r12d, %ebp + sarl $16, %ebp + movw (%rcx,%r10,2), %r12w + movw %r12w, %r13w + subw %bp, %r13w + movw %r13w, (%rcx,%rbx,2) + addw %r12w, %bp + movw %bp, (%rcx,%r10,2) + incq %r10 +L_poly_ntt$8: + cmpq %r11, %r10 + jb L_poly_ntt$9 + leaq (%r10,%r8), %r11 +L_poly_ntt$6: + cmpq $256, %r11 + jb L_poly_ntt$7 + shrq $1, %r8 +L_poly_ntt$4: + cmpq $2, %r8 + jnb L_poly_ntt$5 + movq $0, %rsi + jmp L_poly_ntt$2 +L_poly_ntt$3: + movw (%rcx,%rsi,2), %di + movswl %di, %r8d + imull $20159, %r8d, %r8d + sarl $26, %r8d + imull $3329, %r8d, %r8d + subw %r8w, %di + movw %di, (%rcx,%rsi,2) + incq %rsi +L_poly_ntt$2: + cmpq $256, %rsi + jb L_poly_ntt$3 + ret +L_poly_invntt$1: + leaq glob_data + 192(%rip), %rsi + movq $0, %rdi + movq $2, %r8 + jmp L_poly_invntt$4 +L_poly_invntt$5: + movq $0, %r11 + jmp L_poly_invntt$6 +L_poly_invntt$7: + movw (%rsi,%rdi,2), %r9w + incq %rdi + movq %r11, %r10 + leaq (%r11,%r8), %r11 + jmp L_poly_invntt$8 +L_poly_invntt$9: + leaq (%r10,%r8), %rbx + movw (%rcx,%rbx,2), %bp + movw (%rcx,%r10,2), %r12w + movw %bp, %r13w + addw %r12w, %r13w + movswl %r13w, %r14d + imull $20159, %r14d, %r14d + sarl $26, %r14d + imull $3329, %r14d, %r14d + subw %r14w, %r13w + movw %r13w, (%rcx,%r10,2) + subw %bp, %r12w + movswl %r12w, %ebp + movswl %r9w, %r12d + imull %r12d, %ebp + imull $62209, %ebp, %r12d + shll $16, %r12d + sarl $16, %r12d + imull $3329, %r12d, %r12d + subl %r12d, %ebp + sarl $16, %ebp + movw %bp, (%rcx,%rbx,2) + incq %r10 +L_poly_invntt$8: + cmpq %r11, %r10 + jb L_poly_invntt$9 + leaq (%r10,%r8), %r11 +L_poly_invntt$6: + cmpq $256, %r11 + jb L_poly_invntt$7 + shlq $1, %r8 +L_poly_invntt$4: + cmpq $128, %r8 + jbe L_poly_invntt$5 + movw 254(%rsi), %si + movq $0, %rdi + jmp L_poly_invntt$2 +L_poly_invntt$3: + movw (%rcx,%rdi,2), %r8w + movswl %r8w, %r8d + movswl %si, %r9d + imull %r9d, %r8d + imull $62209, %r8d, %r9d + shll $16, %r9d + sarl $16, %r9d + imull $3329, %r9d, %r9d + subl %r9d, %r8d + sarl $16, %r8d + movw %r8w, (%rcx,%rdi,2) + incq %rdi +L_poly_invntt$2: + cmpq $256, %rdi + jb L_poly_invntt$3 + ret +L_poly_getnoise_eta2$1: + movq %rdx, 8(%rsp) + movb (%rax), %dl + movb %dl, 16(%rsp) + movb 1(%rax), %dl + movb %dl, 17(%rsp) + movb 2(%rax), %dl + movb %dl, 18(%rsp) + movb 3(%rax), %dl + movb %dl, 19(%rsp) + movb 4(%rax), %dl + movb %dl, 20(%rsp) + movb 5(%rax), %dl + movb %dl, 21(%rsp) + movb 6(%rax), %dl + movb %dl, 22(%rsp) + movb 7(%rax), %dl + movb %dl, 23(%rsp) + movb 8(%rax), %dl + movb %dl, 24(%rsp) + movb 9(%rax), %dl + movb %dl, 25(%rsp) + movb 10(%rax), %dl + movb %dl, 26(%rsp) + movb 11(%rax), %dl + movb %dl, 27(%rsp) + movb 12(%rax), %dl + movb %dl, 28(%rsp) + movb 13(%rax), %dl + movb %dl, 29(%rsp) + movb 14(%rax), %dl + movb %dl, 30(%rsp) + movb 15(%rax), %dl + movb %dl, 31(%rsp) + movb 16(%rax), %dl + movb %dl, 32(%rsp) + movb 17(%rax), %dl + movb %dl, 33(%rsp) + movb 18(%rax), %dl + movb %dl, 34(%rsp) + movb 19(%rax), %dl + movb %dl, 35(%rsp) + movb 20(%rax), %dl + movb %dl, 36(%rsp) + movb 21(%rax), %dl + movb %dl, 37(%rsp) + movb 22(%rax), %dl + movb %dl, 38(%rsp) + movb 23(%rax), %dl + movb %dl, 39(%rsp) + movb 24(%rax), %dl + movb %dl, 40(%rsp) + movb 25(%rax), %dl + movb %dl, 41(%rsp) + movb 26(%rax), %dl + movb %dl, 42(%rsp) + movb 27(%rax), %dl + movb %dl, 43(%rsp) + movb 28(%rax), %dl + movb %dl, 44(%rsp) + movb 29(%rax), %dl + movb %dl, 45(%rsp) + movb 30(%rax), %dl + movb %dl, 46(%rsp) + movb 31(%rax), %al + movb %al, 47(%rsp) + movb %cl, 48(%rsp) + leaq 49(%rsp), %rax + leaq 16(%rsp), %rcx + leaq -208(%rsp), %rsp + call L_shake256_128_33$1 +L_poly_getnoise_eta2$4: + leaq 208(%rsp), %rsp + movq 8(%rsp), %rax + leaq 49(%rsp), %rcx + movq $0, %rdx + movq $0, %rsi + jmp L_poly_getnoise_eta2$2 +L_poly_getnoise_eta2$3: + movb (%rcx,%rdx), %dil + movb %dil, %r8b + andb $85, %r8b + shrb $1, %dil + andb $85, %dil + addb %r8b, %dil + movb %dil, %r8b + andb $3, %r8b + movb %dil, %r9b + shrb $2, %r9b + andb $3, %r9b + subb %r9b, %r8b + movsbw %r8b, %r8w + movw %r8w, (%rax,%rsi,2) + movb %dil, %r8b + shrb $4, %r8b + andb $3, %r8b + shrb $6, %dil + andb $3, %dil + subb %dil, %r8b + movsbw %r8b, %di + incq %rsi + movw %di, (%rax,%rsi,2) + incq %rdx + incq %rsi +L_poly_getnoise_eta2$2: + cmpq $128, %rdx + jb L_poly_getnoise_eta2$3 + ret +L_poly_getnoise_eta1$1: + movq %rdx, 8(%rsp) + movb (%rcx), %dl + movb %dl, 16(%rsp) + movb 1(%rcx), %dl + movb %dl, 17(%rsp) + movb 2(%rcx), %dl + movb %dl, 18(%rsp) + movb 3(%rcx), %dl + movb %dl, 19(%rsp) + movb 4(%rcx), %dl + movb %dl, 20(%rsp) + movb 5(%rcx), %dl + movb %dl, 21(%rsp) + movb 6(%rcx), %dl + movb %dl, 22(%rsp) + movb 7(%rcx), %dl + movb %dl, 23(%rsp) + movb 8(%rcx), %dl + movb %dl, 24(%rsp) + movb 9(%rcx), %dl + movb %dl, 25(%rsp) + movb 10(%rcx), %dl + movb %dl, 26(%rsp) + movb 11(%rcx), %dl + movb %dl, 27(%rsp) + movb 12(%rcx), %dl + movb %dl, 28(%rsp) + movb 13(%rcx), %dl + movb %dl, 29(%rsp) + movb 14(%rcx), %dl + movb %dl, 30(%rsp) + movb 15(%rcx), %dl + movb %dl, 31(%rsp) + movb 16(%rcx), %dl + movb %dl, 32(%rsp) + movb 17(%rcx), %dl + movb %dl, 33(%rsp) + movb 18(%rcx), %dl + movb %dl, 34(%rsp) + movb 19(%rcx), %dl + movb %dl, 35(%rsp) + movb 20(%rcx), %dl + movb %dl, 36(%rsp) + movb 21(%rcx), %dl + movb %dl, 37(%rsp) + movb 22(%rcx), %dl + movb %dl, 38(%rsp) + movb 23(%rcx), %dl + movb %dl, 39(%rsp) + movb 24(%rcx), %dl + movb %dl, 40(%rsp) + movb 25(%rcx), %dl + movb %dl, 41(%rsp) + movb 26(%rcx), %dl + movb %dl, 42(%rsp) + movb 27(%rcx), %dl + movb %dl, 43(%rsp) + movb 28(%rcx), %dl + movb %dl, 44(%rsp) + movb 29(%rcx), %dl + movb %dl, 45(%rsp) + movb 30(%rcx), %dl + movb %dl, 46(%rsp) + movb 31(%rcx), %cl + movb %cl, 47(%rsp) + movb %al, 48(%rsp) + leaq 49(%rsp), %rax + leaq 16(%rsp), %rcx + leaq -208(%rsp), %rsp + call L_shake256_192_33$1 +L_poly_getnoise_eta1$4: + leaq 208(%rsp), %rsp + movq 8(%rsp), %rax + leaq 49(%rsp), %rcx + movq $0, %rdx + movq $0, %rsi + jmp L_poly_getnoise_eta1$2 +L_poly_getnoise_eta1$3: + imulq $3, %rdx, %r8 + movzbl (%rcx,%r8), %edi + movzbl 1(%rcx,%r8), %r9d + shll $8, %r9d + orl %r9d, %edi + movzbl 2(%rcx,%r8), %r8d + shll $16, %r8d + orl %r8d, %edi + movl %edi, %r8d + andl $2396745, %r8d + shrl $1, %edi + movl %edi, %r9d + andl $2396745, %r9d + addl %r9d, %r8d + shrl $1, %edi + andl $2396745, %edi + addl %r8d, %edi + movb %dil, %r8b + andb $7, %r8b + movb %dil, %r9b + shrb $3, %r9b + andb $7, %r9b + subb %r9b, %r8b + movsbw %r8b, %r8w + movw %r8w, (%rax,%rsi,2) + shrl $6, %edi + incq %rsi + movb %dil, %r8b + andb $7, %r8b + movb %dil, %r9b + shrb $3, %r9b + andb $7, %r9b + subb %r9b, %r8b + movsbw %r8b, %r8w + movw %r8w, (%rax,%rsi,2) + shrl $6, %edi + incq %rsi + movb %dil, %r8b + andb $7, %r8b + movb %dil, %r9b + shrb $3, %r9b + andb $7, %r9b + subb %r9b, %r8b + movsbw %r8b, %r8w + movw %r8w, (%rax,%rsi,2) + shrl $6, %edi + incq %rsi + movb %dil, %r8b + andb $7, %r8b + shrb $3, %dil + andb $7, %dil + subb %dil, %r8b + movsbw %r8b, %di + movw %di, (%rax,%rsi,2) + incq %rsi + incq %rdx +L_poly_getnoise_eta1$2: + cmpq $64, %rdx + jb L_poly_getnoise_eta1$3 + ret +L_i_poly_frommsg$1: + movb (%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, (%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 2(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 4(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 6(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 8(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 10(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 12(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 14(%rdx) + movb 1(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 16(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 18(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 20(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 22(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 24(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 26(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 28(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 30(%rdx) + movb 2(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 32(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 34(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 36(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 38(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 40(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 42(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 44(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 46(%rdx) + movb 3(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 48(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 50(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 52(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 54(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 56(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 58(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 60(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 62(%rdx) + movb 4(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 64(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 66(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 68(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 70(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 72(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 74(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 76(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 78(%rdx) + movb 5(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 80(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 82(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 84(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 86(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 88(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 90(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 92(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 94(%rdx) + movb 6(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 96(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 98(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 100(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 102(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 104(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 106(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 108(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 110(%rdx) + movb 7(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 112(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 114(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 116(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 118(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 120(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 122(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 124(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 126(%rdx) + movb 8(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 128(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 130(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 132(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 134(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 136(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 138(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 140(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 142(%rdx) + movb 9(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 144(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 146(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 148(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 150(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 152(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 154(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 156(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 158(%rdx) + movb 10(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 160(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 162(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 164(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 166(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 168(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 170(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 172(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 174(%rdx) + movb 11(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 176(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 178(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 180(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 182(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 184(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 186(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 188(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 190(%rdx) + movb 12(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 192(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 194(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 196(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 198(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 200(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 202(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 204(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 206(%rdx) + movb 13(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 208(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 210(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 212(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 214(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 216(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 218(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 220(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 222(%rdx) + movb 14(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 224(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 226(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 228(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 230(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 232(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 234(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 236(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 238(%rdx) + movb 15(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 240(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 242(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 244(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 246(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 248(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 250(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 252(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 254(%rdx) + movb 16(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 256(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 258(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 260(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 262(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 264(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 266(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 268(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 270(%rdx) + movb 17(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 272(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 274(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 276(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 278(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 280(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 282(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 284(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 286(%rdx) + movb 18(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 288(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 290(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 292(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 294(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 296(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 298(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 300(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 302(%rdx) + movb 19(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 304(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 306(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 308(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 310(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 312(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 314(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 316(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 318(%rdx) + movb 20(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 320(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 322(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 324(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 326(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 328(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 330(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 332(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 334(%rdx) + movb 21(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 336(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 338(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 340(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 342(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 344(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 346(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 348(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 350(%rdx) + movb 22(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 352(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 354(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 356(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 358(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 360(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 362(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 364(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 366(%rdx) + movb 23(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 368(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 370(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 372(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 374(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 376(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 378(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 380(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 382(%rdx) + movb 24(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 384(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 386(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 388(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 390(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 392(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 394(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 396(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 398(%rdx) + movb 25(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 400(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 402(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 404(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 406(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 408(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 410(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 412(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 414(%rdx) + movb 26(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 416(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 418(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 420(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 422(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 424(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 426(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 428(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 430(%rdx) + movb 27(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 432(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 434(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 436(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 438(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 440(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 442(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 444(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 446(%rdx) + movb 28(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 448(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 450(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 452(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 454(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 456(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 458(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 460(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 462(%rdx) + movb 29(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 464(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 466(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 468(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 470(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 472(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 474(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 476(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 478(%rdx) + movb 30(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 480(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 482(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 484(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 486(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 488(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 490(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 492(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 494(%rdx) + movb 31(%rcx), %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 496(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 498(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 500(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 502(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 504(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 506(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 508(%rdx) + shrb $1, %cl + movzbw %cl, %cx + andw $1, %cx + imulw $1665, %cx, %cx + movw %cx, 510(%rdx) + ret +L_poly_frommont$1: + movw $1353, %cx + movq $0, %rdx + jmp L_poly_frommont$2 +L_poly_frommont$3: + movw (%rax,%rdx,2), %si + movswl %si, %esi + movswl %cx, %edi + imull %edi, %esi + imull $62209, %esi, %edi + shll $16, %edi + sarl $16, %edi + imull $3329, %edi, %edi + subl %edi, %esi + sarl $16, %esi + movw %si, (%rax,%rdx,2) + incq %rdx +L_poly_frommont$2: + cmpq $256, %rdx + jb L_poly_frommont$3 + ret +L_poly_frombytes$1: + movb (%rsi), %r8b + movb 1(%rsi), %r9b + movb 2(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, (%rdi) + movw %r10w, 2(%rdi) + movb 3(%rsi), %r8b + movb 4(%rsi), %r9b + movb 5(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 4(%rdi) + movw %r10w, 6(%rdi) + movb 6(%rsi), %r8b + movb 7(%rsi), %r9b + movb 8(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 8(%rdi) + movw %r10w, 10(%rdi) + movb 9(%rsi), %r8b + movb 10(%rsi), %r9b + movb 11(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 12(%rdi) + movw %r10w, 14(%rdi) + movb 12(%rsi), %r8b + movb 13(%rsi), %r9b + movb 14(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 16(%rdi) + movw %r10w, 18(%rdi) + movb 15(%rsi), %r8b + movb 16(%rsi), %r9b + movb 17(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 20(%rdi) + movw %r10w, 22(%rdi) + movb 18(%rsi), %r8b + movb 19(%rsi), %r9b + movb 20(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 24(%rdi) + movw %r10w, 26(%rdi) + movb 21(%rsi), %r8b + movb 22(%rsi), %r9b + movb 23(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 28(%rdi) + movw %r10w, 30(%rdi) + movb 24(%rsi), %r8b + movb 25(%rsi), %r9b + movb 26(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 32(%rdi) + movw %r10w, 34(%rdi) + movb 27(%rsi), %r8b + movb 28(%rsi), %r9b + movb 29(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 36(%rdi) + movw %r10w, 38(%rdi) + movb 30(%rsi), %r8b + movb 31(%rsi), %r9b + movb 32(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 40(%rdi) + movw %r10w, 42(%rdi) + movb 33(%rsi), %r8b + movb 34(%rsi), %r9b + movb 35(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 44(%rdi) + movw %r10w, 46(%rdi) + movb 36(%rsi), %r8b + movb 37(%rsi), %r9b + movb 38(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 48(%rdi) + movw %r10w, 50(%rdi) + movb 39(%rsi), %r8b + movb 40(%rsi), %r9b + movb 41(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 52(%rdi) + movw %r10w, 54(%rdi) + movb 42(%rsi), %r8b + movb 43(%rsi), %r9b + movb 44(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 56(%rdi) + movw %r10w, 58(%rdi) + movb 45(%rsi), %r8b + movb 46(%rsi), %r9b + movb 47(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 60(%rdi) + movw %r10w, 62(%rdi) + movb 48(%rsi), %r8b + movb 49(%rsi), %r9b + movb 50(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 64(%rdi) + movw %r10w, 66(%rdi) + movb 51(%rsi), %r8b + movb 52(%rsi), %r9b + movb 53(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 68(%rdi) + movw %r10w, 70(%rdi) + movb 54(%rsi), %r8b + movb 55(%rsi), %r9b + movb 56(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 72(%rdi) + movw %r10w, 74(%rdi) + movb 57(%rsi), %r8b + movb 58(%rsi), %r9b + movb 59(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 76(%rdi) + movw %r10w, 78(%rdi) + movb 60(%rsi), %r8b + movb 61(%rsi), %r9b + movb 62(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 80(%rdi) + movw %r10w, 82(%rdi) + movb 63(%rsi), %r8b + movb 64(%rsi), %r9b + movb 65(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 84(%rdi) + movw %r10w, 86(%rdi) + movb 66(%rsi), %r8b + movb 67(%rsi), %r9b + movb 68(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 88(%rdi) + movw %r10w, 90(%rdi) + movb 69(%rsi), %r8b + movb 70(%rsi), %r9b + movb 71(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 92(%rdi) + movw %r10w, 94(%rdi) + movb 72(%rsi), %r8b + movb 73(%rsi), %r9b + movb 74(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 96(%rdi) + movw %r10w, 98(%rdi) + movb 75(%rsi), %r8b + movb 76(%rsi), %r9b + movb 77(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 100(%rdi) + movw %r10w, 102(%rdi) + movb 78(%rsi), %r8b + movb 79(%rsi), %r9b + movb 80(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 104(%rdi) + movw %r10w, 106(%rdi) + movb 81(%rsi), %r8b + movb 82(%rsi), %r9b + movb 83(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 108(%rdi) + movw %r10w, 110(%rdi) + movb 84(%rsi), %r8b + movb 85(%rsi), %r9b + movb 86(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 112(%rdi) + movw %r10w, 114(%rdi) + movb 87(%rsi), %r8b + movb 88(%rsi), %r9b + movb 89(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 116(%rdi) + movw %r10w, 118(%rdi) + movb 90(%rsi), %r8b + movb 91(%rsi), %r9b + movb 92(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 120(%rdi) + movw %r10w, 122(%rdi) + movb 93(%rsi), %r8b + movb 94(%rsi), %r9b + movb 95(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 124(%rdi) + movw %r10w, 126(%rdi) + movb 96(%rsi), %r8b + movb 97(%rsi), %r9b + movb 98(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 128(%rdi) + movw %r10w, 130(%rdi) + movb 99(%rsi), %r8b + movb 100(%rsi), %r9b + movb 101(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 132(%rdi) + movw %r10w, 134(%rdi) + movb 102(%rsi), %r8b + movb 103(%rsi), %r9b + movb 104(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 136(%rdi) + movw %r10w, 138(%rdi) + movb 105(%rsi), %r8b + movb 106(%rsi), %r9b + movb 107(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 140(%rdi) + movw %r10w, 142(%rdi) + movb 108(%rsi), %r8b + movb 109(%rsi), %r9b + movb 110(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 144(%rdi) + movw %r10w, 146(%rdi) + movb 111(%rsi), %r8b + movb 112(%rsi), %r9b + movb 113(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 148(%rdi) + movw %r10w, 150(%rdi) + movb 114(%rsi), %r8b + movb 115(%rsi), %r9b + movb 116(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 152(%rdi) + movw %r10w, 154(%rdi) + movb 117(%rsi), %r8b + movb 118(%rsi), %r9b + movb 119(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 156(%rdi) + movw %r10w, 158(%rdi) + movb 120(%rsi), %r8b + movb 121(%rsi), %r9b + movb 122(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 160(%rdi) + movw %r10w, 162(%rdi) + movb 123(%rsi), %r8b + movb 124(%rsi), %r9b + movb 125(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 164(%rdi) + movw %r10w, 166(%rdi) + movb 126(%rsi), %r8b + movb 127(%rsi), %r9b + movb 128(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 168(%rdi) + movw %r10w, 170(%rdi) + movb 129(%rsi), %r8b + movb 130(%rsi), %r9b + movb 131(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 172(%rdi) + movw %r10w, 174(%rdi) + movb 132(%rsi), %r8b + movb 133(%rsi), %r9b + movb 134(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 176(%rdi) + movw %r10w, 178(%rdi) + movb 135(%rsi), %r8b + movb 136(%rsi), %r9b + movb 137(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 180(%rdi) + movw %r10w, 182(%rdi) + movb 138(%rsi), %r8b + movb 139(%rsi), %r9b + movb 140(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 184(%rdi) + movw %r10w, 186(%rdi) + movb 141(%rsi), %r8b + movb 142(%rsi), %r9b + movb 143(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 188(%rdi) + movw %r10w, 190(%rdi) + movb 144(%rsi), %r8b + movb 145(%rsi), %r9b + movb 146(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 192(%rdi) + movw %r10w, 194(%rdi) + movb 147(%rsi), %r8b + movb 148(%rsi), %r9b + movb 149(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 196(%rdi) + movw %r10w, 198(%rdi) + movb 150(%rsi), %r8b + movb 151(%rsi), %r9b + movb 152(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 200(%rdi) + movw %r10w, 202(%rdi) + movb 153(%rsi), %r8b + movb 154(%rsi), %r9b + movb 155(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 204(%rdi) + movw %r10w, 206(%rdi) + movb 156(%rsi), %r8b + movb 157(%rsi), %r9b + movb 158(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 208(%rdi) + movw %r10w, 210(%rdi) + movb 159(%rsi), %r8b + movb 160(%rsi), %r9b + movb 161(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 212(%rdi) + movw %r10w, 214(%rdi) + movb 162(%rsi), %r8b + movb 163(%rsi), %r9b + movb 164(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 216(%rdi) + movw %r10w, 218(%rdi) + movb 165(%rsi), %r8b + movb 166(%rsi), %r9b + movb 167(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 220(%rdi) + movw %r10w, 222(%rdi) + movb 168(%rsi), %r8b + movb 169(%rsi), %r9b + movb 170(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 224(%rdi) + movw %r10w, 226(%rdi) + movb 171(%rsi), %r8b + movb 172(%rsi), %r9b + movb 173(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 228(%rdi) + movw %r10w, 230(%rdi) + movb 174(%rsi), %r8b + movb 175(%rsi), %r9b + movb 176(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 232(%rdi) + movw %r10w, 234(%rdi) + movb 177(%rsi), %r8b + movb 178(%rsi), %r9b + movb 179(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 236(%rdi) + movw %r10w, 238(%rdi) + movb 180(%rsi), %r8b + movb 181(%rsi), %r9b + movb 182(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 240(%rdi) + movw %r10w, 242(%rdi) + movb 183(%rsi), %r8b + movb 184(%rsi), %r9b + movb 185(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 244(%rdi) + movw %r10w, 246(%rdi) + movb 186(%rsi), %r8b + movb 187(%rsi), %r9b + movb 188(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 248(%rdi) + movw %r10w, 250(%rdi) + movb 189(%rsi), %r8b + movb 190(%rsi), %r9b + movb 191(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 252(%rdi) + movw %r10w, 254(%rdi) + movb 192(%rsi), %r8b + movb 193(%rsi), %r9b + movb 194(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 256(%rdi) + movw %r10w, 258(%rdi) + movb 195(%rsi), %r8b + movb 196(%rsi), %r9b + movb 197(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 260(%rdi) + movw %r10w, 262(%rdi) + movb 198(%rsi), %r8b + movb 199(%rsi), %r9b + movb 200(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 264(%rdi) + movw %r10w, 266(%rdi) + movb 201(%rsi), %r8b + movb 202(%rsi), %r9b + movb 203(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 268(%rdi) + movw %r10w, 270(%rdi) + movb 204(%rsi), %r8b + movb 205(%rsi), %r9b + movb 206(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 272(%rdi) + movw %r10w, 274(%rdi) + movb 207(%rsi), %r8b + movb 208(%rsi), %r9b + movb 209(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 276(%rdi) + movw %r10w, 278(%rdi) + movb 210(%rsi), %r8b + movb 211(%rsi), %r9b + movb 212(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 280(%rdi) + movw %r10w, 282(%rdi) + movb 213(%rsi), %r8b + movb 214(%rsi), %r9b + movb 215(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 284(%rdi) + movw %r10w, 286(%rdi) + movb 216(%rsi), %r8b + movb 217(%rsi), %r9b + movb 218(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 288(%rdi) + movw %r10w, 290(%rdi) + movb 219(%rsi), %r8b + movb 220(%rsi), %r9b + movb 221(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 292(%rdi) + movw %r10w, 294(%rdi) + movb 222(%rsi), %r8b + movb 223(%rsi), %r9b + movb 224(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 296(%rdi) + movw %r10w, 298(%rdi) + movb 225(%rsi), %r8b + movb 226(%rsi), %r9b + movb 227(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 300(%rdi) + movw %r10w, 302(%rdi) + movb 228(%rsi), %r8b + movb 229(%rsi), %r9b + movb 230(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 304(%rdi) + movw %r10w, 306(%rdi) + movb 231(%rsi), %r8b + movb 232(%rsi), %r9b + movb 233(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 308(%rdi) + movw %r10w, 310(%rdi) + movb 234(%rsi), %r8b + movb 235(%rsi), %r9b + movb 236(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 312(%rdi) + movw %r10w, 314(%rdi) + movb 237(%rsi), %r8b + movb 238(%rsi), %r9b + movb 239(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 316(%rdi) + movw %r10w, 318(%rdi) + movb 240(%rsi), %r8b + movb 241(%rsi), %r9b + movb 242(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 320(%rdi) + movw %r10w, 322(%rdi) + movb 243(%rsi), %r8b + movb 244(%rsi), %r9b + movb 245(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 324(%rdi) + movw %r10w, 326(%rdi) + movb 246(%rsi), %r8b + movb 247(%rsi), %r9b + movb 248(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 328(%rdi) + movw %r10w, 330(%rdi) + movb 249(%rsi), %r8b + movb 250(%rsi), %r9b + movb 251(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 332(%rdi) + movw %r10w, 334(%rdi) + movb 252(%rsi), %r8b + movb 253(%rsi), %r9b + movb 254(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 336(%rdi) + movw %r10w, 338(%rdi) + movb 255(%rsi), %r8b + movb 256(%rsi), %r9b + movb 257(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 340(%rdi) + movw %r10w, 342(%rdi) + movb 258(%rsi), %r8b + movb 259(%rsi), %r9b + movb 260(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 344(%rdi) + movw %r10w, 346(%rdi) + movb 261(%rsi), %r8b + movb 262(%rsi), %r9b + movb 263(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 348(%rdi) + movw %r10w, 350(%rdi) + movb 264(%rsi), %r8b + movb 265(%rsi), %r9b + movb 266(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 352(%rdi) + movw %r10w, 354(%rdi) + movb 267(%rsi), %r8b + movb 268(%rsi), %r9b + movb 269(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 356(%rdi) + movw %r10w, 358(%rdi) + movb 270(%rsi), %r8b + movb 271(%rsi), %r9b + movb 272(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 360(%rdi) + movw %r10w, 362(%rdi) + movb 273(%rsi), %r8b + movb 274(%rsi), %r9b + movb 275(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 364(%rdi) + movw %r10w, 366(%rdi) + movb 276(%rsi), %r8b + movb 277(%rsi), %r9b + movb 278(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 368(%rdi) + movw %r10w, 370(%rdi) + movb 279(%rsi), %r8b + movb 280(%rsi), %r9b + movb 281(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 372(%rdi) + movw %r10w, 374(%rdi) + movb 282(%rsi), %r8b + movb 283(%rsi), %r9b + movb 284(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 376(%rdi) + movw %r10w, 378(%rdi) + movb 285(%rsi), %r8b + movb 286(%rsi), %r9b + movb 287(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 380(%rdi) + movw %r10w, 382(%rdi) + movb 288(%rsi), %r8b + movb 289(%rsi), %r9b + movb 290(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 384(%rdi) + movw %r10w, 386(%rdi) + movb 291(%rsi), %r8b + movb 292(%rsi), %r9b + movb 293(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 388(%rdi) + movw %r10w, 390(%rdi) + movb 294(%rsi), %r8b + movb 295(%rsi), %r9b + movb 296(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 392(%rdi) + movw %r10w, 394(%rdi) + movb 297(%rsi), %r8b + movb 298(%rsi), %r9b + movb 299(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 396(%rdi) + movw %r10w, 398(%rdi) + movb 300(%rsi), %r8b + movb 301(%rsi), %r9b + movb 302(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 400(%rdi) + movw %r10w, 402(%rdi) + movb 303(%rsi), %r8b + movb 304(%rsi), %r9b + movb 305(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 404(%rdi) + movw %r10w, 406(%rdi) + movb 306(%rsi), %r8b + movb 307(%rsi), %r9b + movb 308(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 408(%rdi) + movw %r10w, 410(%rdi) + movb 309(%rsi), %r8b + movb 310(%rsi), %r9b + movb 311(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 412(%rdi) + movw %r10w, 414(%rdi) + movb 312(%rsi), %r8b + movb 313(%rsi), %r9b + movb 314(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 416(%rdi) + movw %r10w, 418(%rdi) + movb 315(%rsi), %r8b + movb 316(%rsi), %r9b + movb 317(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 420(%rdi) + movw %r10w, 422(%rdi) + movb 318(%rsi), %r8b + movb 319(%rsi), %r9b + movb 320(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 424(%rdi) + movw %r10w, 426(%rdi) + movb 321(%rsi), %r8b + movb 322(%rsi), %r9b + movb 323(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 428(%rdi) + movw %r10w, 430(%rdi) + movb 324(%rsi), %r8b + movb 325(%rsi), %r9b + movb 326(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 432(%rdi) + movw %r10w, 434(%rdi) + movb 327(%rsi), %r8b + movb 328(%rsi), %r9b + movb 329(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 436(%rdi) + movw %r10w, 438(%rdi) + movb 330(%rsi), %r8b + movb 331(%rsi), %r9b + movb 332(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 440(%rdi) + movw %r10w, 442(%rdi) + movb 333(%rsi), %r8b + movb 334(%rsi), %r9b + movb 335(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 444(%rdi) + movw %r10w, 446(%rdi) + movb 336(%rsi), %r8b + movb 337(%rsi), %r9b + movb 338(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 448(%rdi) + movw %r10w, 450(%rdi) + movb 339(%rsi), %r8b + movb 340(%rsi), %r9b + movb 341(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 452(%rdi) + movw %r10w, 454(%rdi) + movb 342(%rsi), %r8b + movb 343(%rsi), %r9b + movb 344(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 456(%rdi) + movw %r10w, 458(%rdi) + movb 345(%rsi), %r8b + movb 346(%rsi), %r9b + movb 347(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 460(%rdi) + movw %r10w, 462(%rdi) + movb 348(%rsi), %r8b + movb 349(%rsi), %r9b + movb 350(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 464(%rdi) + movw %r10w, 466(%rdi) + movb 351(%rsi), %r8b + movb 352(%rsi), %r9b + movb 353(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 468(%rdi) + movw %r10w, 470(%rdi) + movb 354(%rsi), %r8b + movb 355(%rsi), %r9b + movb 356(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 472(%rdi) + movw %r10w, 474(%rdi) + movb 357(%rsi), %r8b + movb 358(%rsi), %r9b + movb 359(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 476(%rdi) + movw %r10w, 478(%rdi) + movb 360(%rsi), %r8b + movb 361(%rsi), %r9b + movb 362(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 480(%rdi) + movw %r10w, 482(%rdi) + movb 363(%rsi), %r8b + movb 364(%rsi), %r9b + movb 365(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 484(%rdi) + movw %r10w, 486(%rdi) + movb 366(%rsi), %r8b + movb 367(%rsi), %r9b + movb 368(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 488(%rdi) + movw %r10w, 490(%rdi) + movb 369(%rsi), %r8b + movb 370(%rsi), %r9b + movb 371(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 492(%rdi) + movw %r10w, 494(%rdi) + movb 372(%rsi), %r8b + movb 373(%rsi), %r9b + movb 374(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 496(%rdi) + movw %r10w, 498(%rdi) + movb 375(%rsi), %r8b + movb 376(%rsi), %r9b + movb 377(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 500(%rdi) + movw %r10w, 502(%rdi) + movb 378(%rsi), %r8b + movb 379(%rsi), %r9b + movb 380(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 504(%rdi) + movw %r10w, 506(%rdi) + movb 381(%rsi), %r8b + movb 382(%rsi), %r9b + movb 383(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 508(%rdi) + movw %r10w, 510(%rdi) + ret +L_poly_decompress$1: + movq $0, %rdi + movq $0, %r8 + jmp L_poly_decompress$2 +L_poly_decompress$3: + movb (%rsi,%rdi), %r9b + movzbw %r9b, %r10w + movzbw %r9b, %r9w + andw $15, %r10w + shrw $4, %r9w + imulw $3329, %r10w, %r10w + imulw $3329, %r9w, %r9w + addw $8, %r10w + addw $8, %r9w + shrw $4, %r10w + shrw $4, %r9w + movw %r10w, (%rcx,%r8,2) + incq %r8 + movw %r9w, (%rcx,%r8,2) + incq %r8 + incq %rdi +L_poly_decompress$2: + cmpq $128, %rdi + jb L_poly_decompress$3 + ret +L_i_poly_compress$1: + call L_poly_csubq$1 +L_i_poly_compress$4: + movq $0, %rdx + movq $0, %rsi + jmp L_i_poly_compress$2 +L_i_poly_compress$3: + movw (%rcx,%rsi,2), %di + movzwl %di, %edi + shll $4, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $15, %edi + incq %rsi + movw (%rcx,%rsi,2), %r8w + movzwl %r8w, %r8d + shll $4, %r8d + addl $1665, %r8d + imull $80635, %r8d, %r8d + shrl $28, %r8d + andl $15, %r8d + shll $4, %r8d + orl %r8d, %edi + movb %dil, (%rax,%rdx) + incq %rdx + incq %rsi +L_i_poly_compress$2: + cmpq $128, %rdx + jb L_i_poly_compress$3 + ret +L_poly_compress$1: + call L_poly_csubq$1 +L_poly_compress$4: + movq $0, %rdx + movq $0, %rsi + jmp L_poly_compress$2 +L_poly_compress$3: + movw (%rcx,%rsi,2), %di + movzwl %di, %edi + shll $4, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $15, %edi + incq %rsi + movw (%rcx,%rsi,2), %r8w + movzwl %r8w, %r8d + shll $4, %r8d + addl $1665, %r8d + imull $80635, %r8d, %r8d + shrl $28, %r8d + andl $15, %r8d + shll $4, %r8d + orl %r8d, %edi + movb %dil, (%rax,%rdx) + incq %rdx + incq %rsi +L_poly_compress$2: + cmpq $128, %rdx + jb L_poly_compress$3 + ret +L_poly_basemul$1: + movq %rdi, 8(%rsp) + movq $64, %rdi + movq $0, %r8 + jmp L_poly_basemul$2 +L_poly_basemul$3: + leaq glob_data + 448(%rip), %r9 + movw (%r9,%rdi,2), %r9w + incq %rdi + movw (%rcx,%r8,2), %r10w + movw (%rsi,%r8,2), %r11w + incq %r8 + movw (%rcx,%r8,2), %bx + movw (%rsi,%r8,2), %bp + addq $-1, %r8 + movswl %bx, %r12d + movswl %bp, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + movswl %r12w, %r12d + movswl %r9w, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + movswl %r10w, %r13d + movswl %r11w, %r14d + imull %r14d, %r13d + imull $62209, %r13d, %r14d + shll $16, %r14d + sarl $16, %r14d + imull $3329, %r14d, %r14d + subl %r14d, %r13d + sarl $16, %r13d + addw %r13w, %r12w + movswl %r10w, %r10d + movswl %bp, %ebp + imull %ebp, %r10d + imull $62209, %r10d, %ebp + shll $16, %ebp + sarl $16, %ebp + imull $3329, %ebp, %ebp + subl %ebp, %r10d + sarl $16, %r10d + movswl %bx, %ebx + movswl %r11w, %r11d + imull %r11d, %ebx + imull $62209, %ebx, %r11d + shll $16, %r11d + sarl $16, %r11d + imull $3329, %r11d, %r11d + subl %r11d, %ebx + sarl $16, %ebx + addw %bx, %r10w + movq 8(%rsp), %r11 + movw %r12w, (%r11,%r8,2) + incq %r8 + movw %r10w, (%r11,%r8,2) + movq %r11, 16(%rsp) + negw %r9w + incq %r8 + movw (%rcx,%r8,2), %r10w + movw (%rsi,%r8,2), %r11w + incq %r8 + movw (%rcx,%r8,2), %bx + movw (%rsi,%r8,2), %bp + addq $-1, %r8 + movswl %bx, %r12d + movswl %bp, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + movswl %r12w, %r12d + movswl %r9w, %r9d + imull %r9d, %r12d + imull $62209, %r12d, %r9d + shll $16, %r9d + sarl $16, %r9d + imull $3329, %r9d, %r9d + subl %r9d, %r12d + sarl $16, %r12d + movw %r12w, %r9w + movswl %r10w, %r12d + movswl %r11w, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + addw %r12w, %r9w + movswl %r10w, %r10d + movswl %bp, %ebp + imull %ebp, %r10d + imull $62209, %r10d, %ebp + shll $16, %ebp + sarl $16, %ebp + imull $3329, %ebp, %ebp + subl %ebp, %r10d + sarl $16, %r10d + movswl %bx, %ebx + movswl %r11w, %r11d + imull %r11d, %ebx + imull $62209, %ebx, %r11d + shll $16, %r11d + sarl $16, %r11d + imull $3329, %r11d, %r11d + subl %r11d, %ebx + sarl $16, %ebx + addw %bx, %r10w + movq 16(%rsp), %r11 + movw %r9w, (%r11,%r8,2) + incq %r8 + movw %r10w, (%r11,%r8,2) + incq %r8 +L_poly_basemul$2: + cmpq $256, %r8 + jb L_poly_basemul$3 + ret +L_poly_csubq$1: + movq $0, %r8 + jmp L_poly_csubq$2 +L_poly_csubq$3: + movw (%rcx,%r8,2), %r9w + addw $-3329, %r9w + movw %r9w, %r10w + sarw $15, %r10w + andw $3329, %r10w + addw %r10w, %r9w + movw %r9w, (%rcx,%r8,2) + incq %r8 +L_poly_csubq$2: + cmpq $256, %r8 + jb L_poly_csubq$3 + ret +L_poly_add2$1: + movq $0, %rdi + jmp L_poly_add2$2 +L_poly_add2$3: + movw (%rcx,%rdi,2), %r8w + movw (%rsi,%rdi,2), %r9w + addw %r9w, %r8w + movw %r8w, (%rcx,%rdi,2) + incq %rdi +L_poly_add2$2: + cmpq $256, %rdi + jb L_poly_add2$3 + ret +L_shake256_64$1: + movq %rax, 8(%rsp) + movq %rcx, 16(%rsp) + leaq 24(%rsp), %rax + xorq %rcx, %rcx + movq %rcx, (%rax) + movq %rcx, 8(%rax) + movq %rcx, 16(%rax) + movq %rcx, 24(%rax) + movq %rcx, 32(%rax) + movq %rcx, 40(%rax) + movq %rcx, 48(%rax) + movq %rcx, 56(%rax) + movq %rcx, 64(%rax) + movq %rcx, 72(%rax) + movq %rcx, 80(%rax) + movq %rcx, 88(%rax) + movq %rcx, 96(%rax) + movq %rcx, 104(%rax) + movq %rcx, 112(%rax) + movq %rcx, 120(%rax) + movq %rcx, 128(%rax) + movq %rcx, 136(%rax) + movq %rcx, 144(%rax) + movq %rcx, 152(%rax) + movq %rcx, 160(%rax) + movq %rcx, 168(%rax) + movq %rcx, 176(%rax) + movq %rcx, 184(%rax) + movq %rcx, 192(%rax) + movq (%rdx), %rcx + xorq %rcx, (%rax) + movq 8(%rdx), %rcx + xorq %rcx, 8(%rax) + movq 16(%rdx), %rcx + xorq %rcx, 16(%rax) + movq 24(%rdx), %rcx + xorq %rcx, 24(%rax) + movq 32(%rdx), %rcx + xorq %rcx, 32(%rax) + movq 40(%rdx), %rcx + xorq %rcx, 40(%rax) + movq 48(%rdx), %rcx + xorq %rcx, 48(%rax) + movq 56(%rdx), %rcx + xorq %rcx, 56(%rax) + xorb $31, 64(%rax) + xorb $-128, 135(%rax) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_64$9: + leaq 216(%rsp), %rsp + movq 16(%rsp), %rcx + movq 8(%rsp), %rdx + jmp L_shake256_64$6 +L_shake256_64$7: + movq (%rax), %rsi + movq %rsi, (%rdx) + movq 8(%rax), %rsi + movq %rsi, 8(%rdx) + movq 16(%rax), %rsi + movq %rsi, 16(%rdx) + movq 24(%rax), %rsi + movq %rsi, 24(%rdx) + movq 32(%rax), %rsi + movq %rsi, 32(%rdx) + movq 40(%rax), %rsi + movq %rsi, 40(%rdx) + movq 48(%rax), %rsi + movq %rsi, 48(%rdx) + movq 56(%rax), %rsi + movq %rsi, 56(%rdx) + movq 64(%rax), %rsi + movq %rsi, 64(%rdx) + movq 72(%rax), %rsi + movq %rsi, 72(%rdx) + movq 80(%rax), %rsi + movq %rsi, 80(%rdx) + movq 88(%rax), %rsi + movq %rsi, 88(%rdx) + movq 96(%rax), %rsi + movq %rsi, 96(%rdx) + movq 104(%rax), %rsi + movq %rsi, 104(%rdx) + movq 112(%rax), %rsi + movq %rsi, 112(%rdx) + movq 120(%rax), %rsi + movq %rsi, 120(%rdx) + movq 128(%rax), %rsi + movq %rsi, 128(%rdx) + addq $136, %rdx + addq $-136, %rcx + movq %rdx, 8(%rsp) + movq %rcx, 16(%rsp) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_64$8: + leaq 216(%rsp), %rsp + movq 16(%rsp), %rcx + movq 8(%rsp), %rdx +L_shake256_64$6: + cmpq $136, %rcx + jnbe L_shake256_64$7 + movq %rcx, 8(%rsp) + shrq $3, %rcx + movq $0, %rsi + jmp L_shake256_64$4 +L_shake256_64$5: + movq (%rax,%rsi,8), %rdi + movq %rdi, (%rdx,%rsi,8) + incq %rsi +L_shake256_64$4: + cmpq %rcx, %rsi + jb L_shake256_64$5 + shlq $3, %rsi + movq 8(%rsp), %rcx + jmp L_shake256_64$2 +L_shake256_64$3: + movb (%rax,%rsi), %dil + movb %dil, (%rdx,%rsi) + incq %rsi +L_shake256_64$2: + cmpq %rcx, %rsi + jb L_shake256_64$3 + ret +L_sha3_512_64$1: + movq %rax, 8(%rsp) + leaq 16(%rsp), %rax + xorq %rdx, %rdx + movq %rdx, (%rax) + movq %rdx, 8(%rax) + movq %rdx, 16(%rax) + movq %rdx, 24(%rax) + movq %rdx, 32(%rax) + movq %rdx, 40(%rax) + movq %rdx, 48(%rax) + movq %rdx, 56(%rax) + movq %rdx, 64(%rax) + movq %rdx, 72(%rax) + movq %rdx, 80(%rax) + movq %rdx, 88(%rax) + movq %rdx, 96(%rax) + movq %rdx, 104(%rax) + movq %rdx, 112(%rax) + movq %rdx, 120(%rax) + movq %rdx, 128(%rax) + movq %rdx, 136(%rax) + movq %rdx, 144(%rax) + movq %rdx, 152(%rax) + movq %rdx, 160(%rax) + movq %rdx, 168(%rax) + movq %rdx, 176(%rax) + movq %rdx, 184(%rax) + movq %rdx, 192(%rax) + movq (%rcx), %rdx + xorq %rdx, (%rax) + movq 8(%rcx), %rdx + xorq %rdx, 8(%rax) + movq 16(%rcx), %rdx + xorq %rdx, 16(%rax) + movq 24(%rcx), %rdx + xorq %rdx, 24(%rax) + movq 32(%rcx), %rdx + xorq %rdx, 32(%rax) + movq 40(%rcx), %rdx + xorq %rdx, 40(%rax) + movq 48(%rcx), %rdx + xorq %rdx, 48(%rax) + movq 56(%rcx), %rcx + xorq %rcx, 56(%rax) + xorb $6, 64(%rax) + xorb $-128, 71(%rax) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_512_64$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movq (%rax), %rdx + movq %rdx, (%rcx) + movq 8(%rax), %rdx + movq %rdx, 8(%rcx) + movq 16(%rax), %rdx + movq %rdx, 16(%rcx) + movq 24(%rax), %rdx + movq %rdx, 24(%rcx) + movq 32(%rax), %rdx + movq %rdx, 32(%rcx) + movq 40(%rax), %rdx + movq %rdx, 40(%rcx) + movq 48(%rax), %rdx + movq %rdx, 48(%rcx) + movq 56(%rax), %rax + movq %rax, 56(%rcx) + ret +L_sha3_256_32$1: + movq %rax, 8(%rsp) + leaq 16(%rsp), %rax + xorq %rdx, %rdx + movq %rdx, (%rax) + movq %rdx, 8(%rax) + movq %rdx, 16(%rax) + movq %rdx, 24(%rax) + movq %rdx, 32(%rax) + movq %rdx, 40(%rax) + movq %rdx, 48(%rax) + movq %rdx, 56(%rax) + movq %rdx, 64(%rax) + movq %rdx, 72(%rax) + movq %rdx, 80(%rax) + movq %rdx, 88(%rax) + movq %rdx, 96(%rax) + movq %rdx, 104(%rax) + movq %rdx, 112(%rax) + movq %rdx, 120(%rax) + movq %rdx, 128(%rax) + movq %rdx, 136(%rax) + movq %rdx, 144(%rax) + movq %rdx, 152(%rax) + movq %rdx, 160(%rax) + movq %rdx, 168(%rax) + movq %rdx, 176(%rax) + movq %rdx, 184(%rax) + movq %rdx, 192(%rax) + movq (%rcx), %rdx + movq %rdx, (%rax) + movq 8(%rcx), %rdx + movq %rdx, 8(%rax) + movq 16(%rcx), %rdx + movq %rdx, 16(%rax) + movq 24(%rcx), %rcx + movq %rcx, 24(%rax) + xorb $6, 32(%rax) + movb $-128, 135(%rax) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_256_32$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movq (%rax), %rdx + movq %rdx, (%rcx) + movq 8(%rax), %rdx + movq %rdx, 8(%rcx) + movq 16(%rax), %rdx + movq %rdx, 16(%rcx) + movq 24(%rax), %rax + movq %rax, 24(%rcx) + ret +L_sha3_256$1: + movq %rax, 8(%rsp) + leaq 40(%rsp), %rax + xorq %rdx, %rdx + movq %rdx, (%rax) + movq %rdx, 8(%rax) + movq %rdx, 16(%rax) + movq %rdx, 24(%rax) + movq %rdx, 32(%rax) + movq %rdx, 40(%rax) + movq %rdx, 48(%rax) + movq %rdx, 56(%rax) + movq %rdx, 64(%rax) + movq %rdx, 72(%rax) + movq %rdx, 80(%rax) + movq %rdx, 88(%rax) + movq %rdx, 96(%rax) + movq %rdx, 104(%rax) + movq %rdx, 112(%rax) + movq %rdx, 120(%rax) + movq %rdx, 128(%rax) + movq %rdx, 136(%rax) + movq %rdx, 144(%rax) + movq %rdx, 152(%rax) + movq %rdx, 160(%rax) + movq %rdx, 168(%rax) + movq %rdx, 176(%rax) + movq %rdx, 184(%rax) + movq %rdx, 192(%rax) + movq $136, %rdx + jmp L_sha3_256$7 +L_sha3_256$8: + movq %rdx, %rdi + shrq $3, %rdi + movq $0, %r8 + jmp L_sha3_256$10 +L_sha3_256$11: + movq (%rsi,%r8,8), %r9 + xorq %r9, (%rax,%r8,8) + incq %r8 +L_sha3_256$10: + cmpq %rdi, %r8 + jb L_sha3_256$11 + addq %rdx, %rsi + subq %rdx, %rcx + movq %rsi, 16(%rsp) + movq %rcx, 24(%rsp) + movq %rdx, 32(%rsp) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_256$9: + leaq 216(%rsp), %rsp + movq 16(%rsp), %rsi + movq 24(%rsp), %rcx + movq 32(%rsp), %rdx +L_sha3_256$7: + cmpq %rdx, %rcx + jnb L_sha3_256$8 + movb $6, %dil + movq %rcx, %r8 + shrq $3, %r8 + movq $0, %r9 + jmp L_sha3_256$5 +L_sha3_256$6: + movq (%rsi,%r9,8), %r10 + xorq %r10, (%rax,%r9,8) + incq %r9 +L_sha3_256$5: + cmpq %r8, %r9 + jb L_sha3_256$6 + shlq $3, %r9 + jmp L_sha3_256$3 +L_sha3_256$4: + movb (%rsi,%r9), %r8b + xorb %r8b, (%rax,%r9) + incq %r9 +L_sha3_256$3: + cmpq %rcx, %r9 + jb L_sha3_256$4 + xorb %dil, (%rax,%r9) + addq $-1, %rdx + xorb $-128, (%rax,%rdx) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_256$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movq (%rax), %rdx + movq %rdx, (%rcx) + movq 8(%rax), %rdx + movq %rdx, 8(%rcx) + movq 16(%rax), %rdx + movq %rdx, 16(%rcx) + movq 24(%rax), %rax + movq %rax, 24(%rcx) + ret +L_shake128_squeezeblock$1: + movq %rcx, 8(%rsp) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake128_squeezeblock$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movb (%rax), %dl + movb %dl, (%rcx) + movb 1(%rax), %dl + movb %dl, 1(%rcx) + movb 2(%rax), %dl + movb %dl, 2(%rcx) + movb 3(%rax), %dl + movb %dl, 3(%rcx) + movb 4(%rax), %dl + movb %dl, 4(%rcx) + movb 5(%rax), %dl + movb %dl, 5(%rcx) + movb 6(%rax), %dl + movb %dl, 6(%rcx) + movb 7(%rax), %dl + movb %dl, 7(%rcx) + movb 8(%rax), %dl + movb %dl, 8(%rcx) + movb 9(%rax), %dl + movb %dl, 9(%rcx) + movb 10(%rax), %dl + movb %dl, 10(%rcx) + movb 11(%rax), %dl + movb %dl, 11(%rcx) + movb 12(%rax), %dl + movb %dl, 12(%rcx) + movb 13(%rax), %dl + movb %dl, 13(%rcx) + movb 14(%rax), %dl + movb %dl, 14(%rcx) + movb 15(%rax), %dl + movb %dl, 15(%rcx) + movb 16(%rax), %dl + movb %dl, 16(%rcx) + movb 17(%rax), %dl + movb %dl, 17(%rcx) + movb 18(%rax), %dl + movb %dl, 18(%rcx) + movb 19(%rax), %dl + movb %dl, 19(%rcx) + movb 20(%rax), %dl + movb %dl, 20(%rcx) + movb 21(%rax), %dl + movb %dl, 21(%rcx) + movb 22(%rax), %dl + movb %dl, 22(%rcx) + movb 23(%rax), %dl + movb %dl, 23(%rcx) + movb 24(%rax), %dl + movb %dl, 24(%rcx) + movb 25(%rax), %dl + movb %dl, 25(%rcx) + movb 26(%rax), %dl + movb %dl, 26(%rcx) + movb 27(%rax), %dl + movb %dl, 27(%rcx) + movb 28(%rax), %dl + movb %dl, 28(%rcx) + movb 29(%rax), %dl + movb %dl, 29(%rcx) + movb 30(%rax), %dl + movb %dl, 30(%rcx) + movb 31(%rax), %dl + movb %dl, 31(%rcx) + movb 32(%rax), %dl + movb %dl, 32(%rcx) + movb 33(%rax), %dl + movb %dl, 33(%rcx) + movb 34(%rax), %dl + movb %dl, 34(%rcx) + movb 35(%rax), %dl + movb %dl, 35(%rcx) + movb 36(%rax), %dl + movb %dl, 36(%rcx) + movb 37(%rax), %dl + movb %dl, 37(%rcx) + movb 38(%rax), %dl + movb %dl, 38(%rcx) + movb 39(%rax), %dl + movb %dl, 39(%rcx) + movb 40(%rax), %dl + movb %dl, 40(%rcx) + movb 41(%rax), %dl + movb %dl, 41(%rcx) + movb 42(%rax), %dl + movb %dl, 42(%rcx) + movb 43(%rax), %dl + movb %dl, 43(%rcx) + movb 44(%rax), %dl + movb %dl, 44(%rcx) + movb 45(%rax), %dl + movb %dl, 45(%rcx) + movb 46(%rax), %dl + movb %dl, 46(%rcx) + movb 47(%rax), %dl + movb %dl, 47(%rcx) + movb 48(%rax), %dl + movb %dl, 48(%rcx) + movb 49(%rax), %dl + movb %dl, 49(%rcx) + movb 50(%rax), %dl + movb %dl, 50(%rcx) + movb 51(%rax), %dl + movb %dl, 51(%rcx) + movb 52(%rax), %dl + movb %dl, 52(%rcx) + movb 53(%rax), %dl + movb %dl, 53(%rcx) + movb 54(%rax), %dl + movb %dl, 54(%rcx) + movb 55(%rax), %dl + movb %dl, 55(%rcx) + movb 56(%rax), %dl + movb %dl, 56(%rcx) + movb 57(%rax), %dl + movb %dl, 57(%rcx) + movb 58(%rax), %dl + movb %dl, 58(%rcx) + movb 59(%rax), %dl + movb %dl, 59(%rcx) + movb 60(%rax), %dl + movb %dl, 60(%rcx) + movb 61(%rax), %dl + movb %dl, 61(%rcx) + movb 62(%rax), %dl + movb %dl, 62(%rcx) + movb 63(%rax), %dl + movb %dl, 63(%rcx) + movb 64(%rax), %dl + movb %dl, 64(%rcx) + movb 65(%rax), %dl + movb %dl, 65(%rcx) + movb 66(%rax), %dl + movb %dl, 66(%rcx) + movb 67(%rax), %dl + movb %dl, 67(%rcx) + movb 68(%rax), %dl + movb %dl, 68(%rcx) + movb 69(%rax), %dl + movb %dl, 69(%rcx) + movb 70(%rax), %dl + movb %dl, 70(%rcx) + movb 71(%rax), %dl + movb %dl, 71(%rcx) + movb 72(%rax), %dl + movb %dl, 72(%rcx) + movb 73(%rax), %dl + movb %dl, 73(%rcx) + movb 74(%rax), %dl + movb %dl, 74(%rcx) + movb 75(%rax), %dl + movb %dl, 75(%rcx) + movb 76(%rax), %dl + movb %dl, 76(%rcx) + movb 77(%rax), %dl + movb %dl, 77(%rcx) + movb 78(%rax), %dl + movb %dl, 78(%rcx) + movb 79(%rax), %dl + movb %dl, 79(%rcx) + movb 80(%rax), %dl + movb %dl, 80(%rcx) + movb 81(%rax), %dl + movb %dl, 81(%rcx) + movb 82(%rax), %dl + movb %dl, 82(%rcx) + movb 83(%rax), %dl + movb %dl, 83(%rcx) + movb 84(%rax), %dl + movb %dl, 84(%rcx) + movb 85(%rax), %dl + movb %dl, 85(%rcx) + movb 86(%rax), %dl + movb %dl, 86(%rcx) + movb 87(%rax), %dl + movb %dl, 87(%rcx) + movb 88(%rax), %dl + movb %dl, 88(%rcx) + movb 89(%rax), %dl + movb %dl, 89(%rcx) + movb 90(%rax), %dl + movb %dl, 90(%rcx) + movb 91(%rax), %dl + movb %dl, 91(%rcx) + movb 92(%rax), %dl + movb %dl, 92(%rcx) + movb 93(%rax), %dl + movb %dl, 93(%rcx) + movb 94(%rax), %dl + movb %dl, 94(%rcx) + movb 95(%rax), %dl + movb %dl, 95(%rcx) + movb 96(%rax), %dl + movb %dl, 96(%rcx) + movb 97(%rax), %dl + movb %dl, 97(%rcx) + movb 98(%rax), %dl + movb %dl, 98(%rcx) + movb 99(%rax), %dl + movb %dl, 99(%rcx) + movb 100(%rax), %dl + movb %dl, 100(%rcx) + movb 101(%rax), %dl + movb %dl, 101(%rcx) + movb 102(%rax), %dl + movb %dl, 102(%rcx) + movb 103(%rax), %dl + movb %dl, 103(%rcx) + movb 104(%rax), %dl + movb %dl, 104(%rcx) + movb 105(%rax), %dl + movb %dl, 105(%rcx) + movb 106(%rax), %dl + movb %dl, 106(%rcx) + movb 107(%rax), %dl + movb %dl, 107(%rcx) + movb 108(%rax), %dl + movb %dl, 108(%rcx) + movb 109(%rax), %dl + movb %dl, 109(%rcx) + movb 110(%rax), %dl + movb %dl, 110(%rcx) + movb 111(%rax), %dl + movb %dl, 111(%rcx) + movb 112(%rax), %dl + movb %dl, 112(%rcx) + movb 113(%rax), %dl + movb %dl, 113(%rcx) + movb 114(%rax), %dl + movb %dl, 114(%rcx) + movb 115(%rax), %dl + movb %dl, 115(%rcx) + movb 116(%rax), %dl + movb %dl, 116(%rcx) + movb 117(%rax), %dl + movb %dl, 117(%rcx) + movb 118(%rax), %dl + movb %dl, 118(%rcx) + movb 119(%rax), %dl + movb %dl, 119(%rcx) + movb 120(%rax), %dl + movb %dl, 120(%rcx) + movb 121(%rax), %dl + movb %dl, 121(%rcx) + movb 122(%rax), %dl + movb %dl, 122(%rcx) + movb 123(%rax), %dl + movb %dl, 123(%rcx) + movb 124(%rax), %dl + movb %dl, 124(%rcx) + movb 125(%rax), %dl + movb %dl, 125(%rcx) + movb 126(%rax), %dl + movb %dl, 126(%rcx) + movb 127(%rax), %dl + movb %dl, 127(%rcx) + movb 128(%rax), %dl + movb %dl, 128(%rcx) + movb 129(%rax), %dl + movb %dl, 129(%rcx) + movb 130(%rax), %dl + movb %dl, 130(%rcx) + movb 131(%rax), %dl + movb %dl, 131(%rcx) + movb 132(%rax), %dl + movb %dl, 132(%rcx) + movb 133(%rax), %dl + movb %dl, 133(%rcx) + movb 134(%rax), %dl + movb %dl, 134(%rcx) + movb 135(%rax), %dl + movb %dl, 135(%rcx) + movb 136(%rax), %dl + movb %dl, 136(%rcx) + movb 137(%rax), %dl + movb %dl, 137(%rcx) + movb 138(%rax), %dl + movb %dl, 138(%rcx) + movb 139(%rax), %dl + movb %dl, 139(%rcx) + movb 140(%rax), %dl + movb %dl, 140(%rcx) + movb 141(%rax), %dl + movb %dl, 141(%rcx) + movb 142(%rax), %dl + movb %dl, 142(%rcx) + movb 143(%rax), %dl + movb %dl, 143(%rcx) + movb 144(%rax), %dl + movb %dl, 144(%rcx) + movb 145(%rax), %dl + movb %dl, 145(%rcx) + movb 146(%rax), %dl + movb %dl, 146(%rcx) + movb 147(%rax), %dl + movb %dl, 147(%rcx) + movb 148(%rax), %dl + movb %dl, 148(%rcx) + movb 149(%rax), %dl + movb %dl, 149(%rcx) + movb 150(%rax), %dl + movb %dl, 150(%rcx) + movb 151(%rax), %dl + movb %dl, 151(%rcx) + movb 152(%rax), %dl + movb %dl, 152(%rcx) + movb 153(%rax), %dl + movb %dl, 153(%rcx) + movb 154(%rax), %dl + movb %dl, 154(%rcx) + movb 155(%rax), %dl + movb %dl, 155(%rcx) + movb 156(%rax), %dl + movb %dl, 156(%rcx) + movb 157(%rax), %dl + movb %dl, 157(%rcx) + movb 158(%rax), %dl + movb %dl, 158(%rcx) + movb 159(%rax), %dl + movb %dl, 159(%rcx) + movb 160(%rax), %dl + movb %dl, 160(%rcx) + movb 161(%rax), %dl + movb %dl, 161(%rcx) + movb 162(%rax), %dl + movb %dl, 162(%rcx) + movb 163(%rax), %dl + movb %dl, 163(%rcx) + movb 164(%rax), %dl + movb %dl, 164(%rcx) + movb 165(%rax), %dl + movb %dl, 165(%rcx) + movb 166(%rax), %dl + movb %dl, 166(%rcx) + movb 167(%rax), %al + movb %al, 167(%rcx) + ret +L_shake128_absorb34$1: + xorq %rdx, %rdx + movq %rdx, (%rax) + movq %rdx, 8(%rax) + movq %rdx, 16(%rax) + movq %rdx, 24(%rax) + movq %rdx, 32(%rax) + movq %rdx, 40(%rax) + movq %rdx, 48(%rax) + movq %rdx, 56(%rax) + movq %rdx, 64(%rax) + movq %rdx, 72(%rax) + movq %rdx, 80(%rax) + movq %rdx, 88(%rax) + movq %rdx, 96(%rax) + movq %rdx, 104(%rax) + movq %rdx, 112(%rax) + movq %rdx, 120(%rax) + movq %rdx, 128(%rax) + movq %rdx, 136(%rax) + movq %rdx, 144(%rax) + movq %rdx, 152(%rax) + movq %rdx, 160(%rax) + movq %rdx, 168(%rax) + movq %rdx, 176(%rax) + movq %rdx, 184(%rax) + movq %rdx, 192(%rax) + movb (%rcx), %dl + xorb %dl, (%rax) + movb 1(%rcx), %dl + xorb %dl, 1(%rax) + movb 2(%rcx), %dl + xorb %dl, 2(%rax) + movb 3(%rcx), %dl + xorb %dl, 3(%rax) + movb 4(%rcx), %dl + xorb %dl, 4(%rax) + movb 5(%rcx), %dl + xorb %dl, 5(%rax) + movb 6(%rcx), %dl + xorb %dl, 6(%rax) + movb 7(%rcx), %dl + xorb %dl, 7(%rax) + movb 8(%rcx), %dl + xorb %dl, 8(%rax) + movb 9(%rcx), %dl + xorb %dl, 9(%rax) + movb 10(%rcx), %dl + xorb %dl, 10(%rax) + movb 11(%rcx), %dl + xorb %dl, 11(%rax) + movb 12(%rcx), %dl + xorb %dl, 12(%rax) + movb 13(%rcx), %dl + xorb %dl, 13(%rax) + movb 14(%rcx), %dl + xorb %dl, 14(%rax) + movb 15(%rcx), %dl + xorb %dl, 15(%rax) + movb 16(%rcx), %dl + xorb %dl, 16(%rax) + movb 17(%rcx), %dl + xorb %dl, 17(%rax) + movb 18(%rcx), %dl + xorb %dl, 18(%rax) + movb 19(%rcx), %dl + xorb %dl, 19(%rax) + movb 20(%rcx), %dl + xorb %dl, 20(%rax) + movb 21(%rcx), %dl + xorb %dl, 21(%rax) + movb 22(%rcx), %dl + xorb %dl, 22(%rax) + movb 23(%rcx), %dl + xorb %dl, 23(%rax) + movb 24(%rcx), %dl + xorb %dl, 24(%rax) + movb 25(%rcx), %dl + xorb %dl, 25(%rax) + movb 26(%rcx), %dl + xorb %dl, 26(%rax) + movb 27(%rcx), %dl + xorb %dl, 27(%rax) + movb 28(%rcx), %dl + xorb %dl, 28(%rax) + movb 29(%rcx), %dl + xorb %dl, 29(%rax) + movb 30(%rcx), %dl + xorb %dl, 30(%rax) + movb 31(%rcx), %dl + xorb %dl, 31(%rax) + movb 32(%rcx), %dl + xorb %dl, 32(%rax) + movb 33(%rcx), %cl + xorb %cl, 33(%rax) + xorb $31, 34(%rax) + xorb $-128, 167(%rax) + ret +L_sha3_512_32$1: + movq %rax, 8(%rsp) + leaq 16(%rsp), %rax + xorq %rdx, %rdx + movq %rdx, (%rax) + movq %rdx, 8(%rax) + movq %rdx, 16(%rax) + movq %rdx, 24(%rax) + movq %rdx, 32(%rax) + movq %rdx, 40(%rax) + movq %rdx, 48(%rax) + movq %rdx, 56(%rax) + movq %rdx, 64(%rax) + movq %rdx, 72(%rax) + movq %rdx, 80(%rax) + movq %rdx, 88(%rax) + movq %rdx, 96(%rax) + movq %rdx, 104(%rax) + movq %rdx, 112(%rax) + movq %rdx, 120(%rax) + movq %rdx, 128(%rax) + movq %rdx, 136(%rax) + movq %rdx, 144(%rax) + movq %rdx, 152(%rax) + movq %rdx, 160(%rax) + movq %rdx, 168(%rax) + movq %rdx, 176(%rax) + movq %rdx, 184(%rax) + movq %rdx, 192(%rax) + movb (%rcx), %dl + xorb %dl, (%rax) + movb 1(%rcx), %dl + xorb %dl, 1(%rax) + movb 2(%rcx), %dl + xorb %dl, 2(%rax) + movb 3(%rcx), %dl + xorb %dl, 3(%rax) + movb 4(%rcx), %dl + xorb %dl, 4(%rax) + movb 5(%rcx), %dl + xorb %dl, 5(%rax) + movb 6(%rcx), %dl + xorb %dl, 6(%rax) + movb 7(%rcx), %dl + xorb %dl, 7(%rax) + movb 8(%rcx), %dl + xorb %dl, 8(%rax) + movb 9(%rcx), %dl + xorb %dl, 9(%rax) + movb 10(%rcx), %dl + xorb %dl, 10(%rax) + movb 11(%rcx), %dl + xorb %dl, 11(%rax) + movb 12(%rcx), %dl + xorb %dl, 12(%rax) + movb 13(%rcx), %dl + xorb %dl, 13(%rax) + movb 14(%rcx), %dl + xorb %dl, 14(%rax) + movb 15(%rcx), %dl + xorb %dl, 15(%rax) + movb 16(%rcx), %dl + xorb %dl, 16(%rax) + movb 17(%rcx), %dl + xorb %dl, 17(%rax) + movb 18(%rcx), %dl + xorb %dl, 18(%rax) + movb 19(%rcx), %dl + xorb %dl, 19(%rax) + movb 20(%rcx), %dl + xorb %dl, 20(%rax) + movb 21(%rcx), %dl + xorb %dl, 21(%rax) + movb 22(%rcx), %dl + xorb %dl, 22(%rax) + movb 23(%rcx), %dl + xorb %dl, 23(%rax) + movb 24(%rcx), %dl + xorb %dl, 24(%rax) + movb 25(%rcx), %dl + xorb %dl, 25(%rax) + movb 26(%rcx), %dl + xorb %dl, 26(%rax) + movb 27(%rcx), %dl + xorb %dl, 27(%rax) + movb 28(%rcx), %dl + xorb %dl, 28(%rax) + movb 29(%rcx), %dl + xorb %dl, 29(%rax) + movb 30(%rcx), %dl + xorb %dl, 30(%rax) + movb 31(%rcx), %cl + xorb %cl, 31(%rax) + xorb $6, 32(%rax) + xorb $-128, 71(%rax) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_512_32$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movb (%rax), %dl + movb %dl, (%rcx) + movb 1(%rax), %dl + movb %dl, 1(%rcx) + movb 2(%rax), %dl + movb %dl, 2(%rcx) + movb 3(%rax), %dl + movb %dl, 3(%rcx) + movb 4(%rax), %dl + movb %dl, 4(%rcx) + movb 5(%rax), %dl + movb %dl, 5(%rcx) + movb 6(%rax), %dl + movb %dl, 6(%rcx) + movb 7(%rax), %dl + movb %dl, 7(%rcx) + movb 8(%rax), %dl + movb %dl, 8(%rcx) + movb 9(%rax), %dl + movb %dl, 9(%rcx) + movb 10(%rax), %dl + movb %dl, 10(%rcx) + movb 11(%rax), %dl + movb %dl, 11(%rcx) + movb 12(%rax), %dl + movb %dl, 12(%rcx) + movb 13(%rax), %dl + movb %dl, 13(%rcx) + movb 14(%rax), %dl + movb %dl, 14(%rcx) + movb 15(%rax), %dl + movb %dl, 15(%rcx) + movb 16(%rax), %dl + movb %dl, 16(%rcx) + movb 17(%rax), %dl + movb %dl, 17(%rcx) + movb 18(%rax), %dl + movb %dl, 18(%rcx) + movb 19(%rax), %dl + movb %dl, 19(%rcx) + movb 20(%rax), %dl + movb %dl, 20(%rcx) + movb 21(%rax), %dl + movb %dl, 21(%rcx) + movb 22(%rax), %dl + movb %dl, 22(%rcx) + movb 23(%rax), %dl + movb %dl, 23(%rcx) + movb 24(%rax), %dl + movb %dl, 24(%rcx) + movb 25(%rax), %dl + movb %dl, 25(%rcx) + movb 26(%rax), %dl + movb %dl, 26(%rcx) + movb 27(%rax), %dl + movb %dl, 27(%rcx) + movb 28(%rax), %dl + movb %dl, 28(%rcx) + movb 29(%rax), %dl + movb %dl, 29(%rcx) + movb 30(%rax), %dl + movb %dl, 30(%rcx) + movb 31(%rax), %dl + movb %dl, 31(%rcx) + movb 32(%rax), %dl + movb %dl, 32(%rcx) + movb 33(%rax), %dl + movb %dl, 33(%rcx) + movb 34(%rax), %dl + movb %dl, 34(%rcx) + movb 35(%rax), %dl + movb %dl, 35(%rcx) + movb 36(%rax), %dl + movb %dl, 36(%rcx) + movb 37(%rax), %dl + movb %dl, 37(%rcx) + movb 38(%rax), %dl + movb %dl, 38(%rcx) + movb 39(%rax), %dl + movb %dl, 39(%rcx) + movb 40(%rax), %dl + movb %dl, 40(%rcx) + movb 41(%rax), %dl + movb %dl, 41(%rcx) + movb 42(%rax), %dl + movb %dl, 42(%rcx) + movb 43(%rax), %dl + movb %dl, 43(%rcx) + movb 44(%rax), %dl + movb %dl, 44(%rcx) + movb 45(%rax), %dl + movb %dl, 45(%rcx) + movb 46(%rax), %dl + movb %dl, 46(%rcx) + movb 47(%rax), %dl + movb %dl, 47(%rcx) + movb 48(%rax), %dl + movb %dl, 48(%rcx) + movb 49(%rax), %dl + movb %dl, 49(%rcx) + movb 50(%rax), %dl + movb %dl, 50(%rcx) + movb 51(%rax), %dl + movb %dl, 51(%rcx) + movb 52(%rax), %dl + movb %dl, 52(%rcx) + movb 53(%rax), %dl + movb %dl, 53(%rcx) + movb 54(%rax), %dl + movb %dl, 54(%rcx) + movb 55(%rax), %dl + movb %dl, 55(%rcx) + movb 56(%rax), %dl + movb %dl, 56(%rcx) + movb 57(%rax), %dl + movb %dl, 57(%rcx) + movb 58(%rax), %dl + movb %dl, 58(%rcx) + movb 59(%rax), %dl + movb %dl, 59(%rcx) + movb 60(%rax), %dl + movb %dl, 60(%rcx) + movb 61(%rax), %dl + movb %dl, 61(%rcx) + movb 62(%rax), %dl + movb %dl, 62(%rcx) + movb 63(%rax), %al + movb %al, 63(%rcx) + ret +L_shake256_192_33$1: + movq %rax, 8(%rsp) + leaq 16(%rsp), %rax + xorq %rdx, %rdx + movq %rdx, (%rax) + movq %rdx, 8(%rax) + movq %rdx, 16(%rax) + movq %rdx, 24(%rax) + movq %rdx, 32(%rax) + movq %rdx, 40(%rax) + movq %rdx, 48(%rax) + movq %rdx, 56(%rax) + movq %rdx, 64(%rax) + movq %rdx, 72(%rax) + movq %rdx, 80(%rax) + movq %rdx, 88(%rax) + movq %rdx, 96(%rax) + movq %rdx, 104(%rax) + movq %rdx, 112(%rax) + movq %rdx, 120(%rax) + movq %rdx, 128(%rax) + movq %rdx, 136(%rax) + movq %rdx, 144(%rax) + movq %rdx, 152(%rax) + movq %rdx, 160(%rax) + movq %rdx, 168(%rax) + movq %rdx, 176(%rax) + movq %rdx, 184(%rax) + movq %rdx, 192(%rax) + movb (%rcx), %dl + xorb %dl, (%rax) + movb 1(%rcx), %dl + xorb %dl, 1(%rax) + movb 2(%rcx), %dl + xorb %dl, 2(%rax) + movb 3(%rcx), %dl + xorb %dl, 3(%rax) + movb 4(%rcx), %dl + xorb %dl, 4(%rax) + movb 5(%rcx), %dl + xorb %dl, 5(%rax) + movb 6(%rcx), %dl + xorb %dl, 6(%rax) + movb 7(%rcx), %dl + xorb %dl, 7(%rax) + movb 8(%rcx), %dl + xorb %dl, 8(%rax) + movb 9(%rcx), %dl + xorb %dl, 9(%rax) + movb 10(%rcx), %dl + xorb %dl, 10(%rax) + movb 11(%rcx), %dl + xorb %dl, 11(%rax) + movb 12(%rcx), %dl + xorb %dl, 12(%rax) + movb 13(%rcx), %dl + xorb %dl, 13(%rax) + movb 14(%rcx), %dl + xorb %dl, 14(%rax) + movb 15(%rcx), %dl + xorb %dl, 15(%rax) + movb 16(%rcx), %dl + xorb %dl, 16(%rax) + movb 17(%rcx), %dl + xorb %dl, 17(%rax) + movb 18(%rcx), %dl + xorb %dl, 18(%rax) + movb 19(%rcx), %dl + xorb %dl, 19(%rax) + movb 20(%rcx), %dl + xorb %dl, 20(%rax) + movb 21(%rcx), %dl + xorb %dl, 21(%rax) + movb 22(%rcx), %dl + xorb %dl, 22(%rax) + movb 23(%rcx), %dl + xorb %dl, 23(%rax) + movb 24(%rcx), %dl + xorb %dl, 24(%rax) + movb 25(%rcx), %dl + xorb %dl, 25(%rax) + movb 26(%rcx), %dl + xorb %dl, 26(%rax) + movb 27(%rcx), %dl + xorb %dl, 27(%rax) + movb 28(%rcx), %dl + xorb %dl, 28(%rax) + movb 29(%rcx), %dl + xorb %dl, 29(%rax) + movb 30(%rcx), %dl + xorb %dl, 30(%rax) + movb 31(%rcx), %dl + xorb %dl, 31(%rax) + movb 32(%rcx), %cl + xorb %cl, 32(%rax) + xorb $31, 33(%rax) + xorb $-128, 135(%rax) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_192_33$3: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movb (%rax), %dl + movb %dl, (%rcx) + movb 1(%rax), %dl + movb %dl, 1(%rcx) + movb 2(%rax), %dl + movb %dl, 2(%rcx) + movb 3(%rax), %dl + movb %dl, 3(%rcx) + movb 4(%rax), %dl + movb %dl, 4(%rcx) + movb 5(%rax), %dl + movb %dl, 5(%rcx) + movb 6(%rax), %dl + movb %dl, 6(%rcx) + movb 7(%rax), %dl + movb %dl, 7(%rcx) + movb 8(%rax), %dl + movb %dl, 8(%rcx) + movb 9(%rax), %dl + movb %dl, 9(%rcx) + movb 10(%rax), %dl + movb %dl, 10(%rcx) + movb 11(%rax), %dl + movb %dl, 11(%rcx) + movb 12(%rax), %dl + movb %dl, 12(%rcx) + movb 13(%rax), %dl + movb %dl, 13(%rcx) + movb 14(%rax), %dl + movb %dl, 14(%rcx) + movb 15(%rax), %dl + movb %dl, 15(%rcx) + movb 16(%rax), %dl + movb %dl, 16(%rcx) + movb 17(%rax), %dl + movb %dl, 17(%rcx) + movb 18(%rax), %dl + movb %dl, 18(%rcx) + movb 19(%rax), %dl + movb %dl, 19(%rcx) + movb 20(%rax), %dl + movb %dl, 20(%rcx) + movb 21(%rax), %dl + movb %dl, 21(%rcx) + movb 22(%rax), %dl + movb %dl, 22(%rcx) + movb 23(%rax), %dl + movb %dl, 23(%rcx) + movb 24(%rax), %dl + movb %dl, 24(%rcx) + movb 25(%rax), %dl + movb %dl, 25(%rcx) + movb 26(%rax), %dl + movb %dl, 26(%rcx) + movb 27(%rax), %dl + movb %dl, 27(%rcx) + movb 28(%rax), %dl + movb %dl, 28(%rcx) + movb 29(%rax), %dl + movb %dl, 29(%rcx) + movb 30(%rax), %dl + movb %dl, 30(%rcx) + movb 31(%rax), %dl + movb %dl, 31(%rcx) + movb 32(%rax), %dl + movb %dl, 32(%rcx) + movb 33(%rax), %dl + movb %dl, 33(%rcx) + movb 34(%rax), %dl + movb %dl, 34(%rcx) + movb 35(%rax), %dl + movb %dl, 35(%rcx) + movb 36(%rax), %dl + movb %dl, 36(%rcx) + movb 37(%rax), %dl + movb %dl, 37(%rcx) + movb 38(%rax), %dl + movb %dl, 38(%rcx) + movb 39(%rax), %dl + movb %dl, 39(%rcx) + movb 40(%rax), %dl + movb %dl, 40(%rcx) + movb 41(%rax), %dl + movb %dl, 41(%rcx) + movb 42(%rax), %dl + movb %dl, 42(%rcx) + movb 43(%rax), %dl + movb %dl, 43(%rcx) + movb 44(%rax), %dl + movb %dl, 44(%rcx) + movb 45(%rax), %dl + movb %dl, 45(%rcx) + movb 46(%rax), %dl + movb %dl, 46(%rcx) + movb 47(%rax), %dl + movb %dl, 47(%rcx) + movb 48(%rax), %dl + movb %dl, 48(%rcx) + movb 49(%rax), %dl + movb %dl, 49(%rcx) + movb 50(%rax), %dl + movb %dl, 50(%rcx) + movb 51(%rax), %dl + movb %dl, 51(%rcx) + movb 52(%rax), %dl + movb %dl, 52(%rcx) + movb 53(%rax), %dl + movb %dl, 53(%rcx) + movb 54(%rax), %dl + movb %dl, 54(%rcx) + movb 55(%rax), %dl + movb %dl, 55(%rcx) + movb 56(%rax), %dl + movb %dl, 56(%rcx) + movb 57(%rax), %dl + movb %dl, 57(%rcx) + movb 58(%rax), %dl + movb %dl, 58(%rcx) + movb 59(%rax), %dl + movb %dl, 59(%rcx) + movb 60(%rax), %dl + movb %dl, 60(%rcx) + movb 61(%rax), %dl + movb %dl, 61(%rcx) + movb 62(%rax), %dl + movb %dl, 62(%rcx) + movb 63(%rax), %dl + movb %dl, 63(%rcx) + movb 64(%rax), %dl + movb %dl, 64(%rcx) + movb 65(%rax), %dl + movb %dl, 65(%rcx) + movb 66(%rax), %dl + movb %dl, 66(%rcx) + movb 67(%rax), %dl + movb %dl, 67(%rcx) + movb 68(%rax), %dl + movb %dl, 68(%rcx) + movb 69(%rax), %dl + movb %dl, 69(%rcx) + movb 70(%rax), %dl + movb %dl, 70(%rcx) + movb 71(%rax), %dl + movb %dl, 71(%rcx) + movb 72(%rax), %dl + movb %dl, 72(%rcx) + movb 73(%rax), %dl + movb %dl, 73(%rcx) + movb 74(%rax), %dl + movb %dl, 74(%rcx) + movb 75(%rax), %dl + movb %dl, 75(%rcx) + movb 76(%rax), %dl + movb %dl, 76(%rcx) + movb 77(%rax), %dl + movb %dl, 77(%rcx) + movb 78(%rax), %dl + movb %dl, 78(%rcx) + movb 79(%rax), %dl + movb %dl, 79(%rcx) + movb 80(%rax), %dl + movb %dl, 80(%rcx) + movb 81(%rax), %dl + movb %dl, 81(%rcx) + movb 82(%rax), %dl + movb %dl, 82(%rcx) + movb 83(%rax), %dl + movb %dl, 83(%rcx) + movb 84(%rax), %dl + movb %dl, 84(%rcx) + movb 85(%rax), %dl + movb %dl, 85(%rcx) + movb 86(%rax), %dl + movb %dl, 86(%rcx) + movb 87(%rax), %dl + movb %dl, 87(%rcx) + movb 88(%rax), %dl + movb %dl, 88(%rcx) + movb 89(%rax), %dl + movb %dl, 89(%rcx) + movb 90(%rax), %dl + movb %dl, 90(%rcx) + movb 91(%rax), %dl + movb %dl, 91(%rcx) + movb 92(%rax), %dl + movb %dl, 92(%rcx) + movb 93(%rax), %dl + movb %dl, 93(%rcx) + movb 94(%rax), %dl + movb %dl, 94(%rcx) + movb 95(%rax), %dl + movb %dl, 95(%rcx) + movb 96(%rax), %dl + movb %dl, 96(%rcx) + movb 97(%rax), %dl + movb %dl, 97(%rcx) + movb 98(%rax), %dl + movb %dl, 98(%rcx) + movb 99(%rax), %dl + movb %dl, 99(%rcx) + movb 100(%rax), %dl + movb %dl, 100(%rcx) + movb 101(%rax), %dl + movb %dl, 101(%rcx) + movb 102(%rax), %dl + movb %dl, 102(%rcx) + movb 103(%rax), %dl + movb %dl, 103(%rcx) + movb 104(%rax), %dl + movb %dl, 104(%rcx) + movb 105(%rax), %dl + movb %dl, 105(%rcx) + movb 106(%rax), %dl + movb %dl, 106(%rcx) + movb 107(%rax), %dl + movb %dl, 107(%rcx) + movb 108(%rax), %dl + movb %dl, 108(%rcx) + movb 109(%rax), %dl + movb %dl, 109(%rcx) + movb 110(%rax), %dl + movb %dl, 110(%rcx) + movb 111(%rax), %dl + movb %dl, 111(%rcx) + movb 112(%rax), %dl + movb %dl, 112(%rcx) + movb 113(%rax), %dl + movb %dl, 113(%rcx) + movb 114(%rax), %dl + movb %dl, 114(%rcx) + movb 115(%rax), %dl + movb %dl, 115(%rcx) + movb 116(%rax), %dl + movb %dl, 116(%rcx) + movb 117(%rax), %dl + movb %dl, 117(%rcx) + movb 118(%rax), %dl + movb %dl, 118(%rcx) + movb 119(%rax), %dl + movb %dl, 119(%rcx) + movb 120(%rax), %dl + movb %dl, 120(%rcx) + movb 121(%rax), %dl + movb %dl, 121(%rcx) + movb 122(%rax), %dl + movb %dl, 122(%rcx) + movb 123(%rax), %dl + movb %dl, 123(%rcx) + movb 124(%rax), %dl + movb %dl, 124(%rcx) + movb 125(%rax), %dl + movb %dl, 125(%rcx) + movb 126(%rax), %dl + movb %dl, 126(%rcx) + movb 127(%rax), %dl + movb %dl, 127(%rcx) + movb 128(%rax), %dl + movb %dl, 128(%rcx) + movb 129(%rax), %dl + movb %dl, 129(%rcx) + movb 130(%rax), %dl + movb %dl, 130(%rcx) + movb 131(%rax), %dl + movb %dl, 131(%rcx) + movb 132(%rax), %dl + movb %dl, 132(%rcx) + movb 133(%rax), %dl + movb %dl, 133(%rcx) + movb 134(%rax), %dl + movb %dl, 134(%rcx) + movb 135(%rax), %dl + movb %dl, 135(%rcx) + movq %rcx, 8(%rsp) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_192_33$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movb (%rax), %dl + movb %dl, 136(%rcx) + movb 1(%rax), %dl + movb %dl, 137(%rcx) + movb 2(%rax), %dl + movb %dl, 138(%rcx) + movb 3(%rax), %dl + movb %dl, 139(%rcx) + movb 4(%rax), %dl + movb %dl, 140(%rcx) + movb 5(%rax), %dl + movb %dl, 141(%rcx) + movb 6(%rax), %dl + movb %dl, 142(%rcx) + movb 7(%rax), %dl + movb %dl, 143(%rcx) + movb 8(%rax), %dl + movb %dl, 144(%rcx) + movb 9(%rax), %dl + movb %dl, 145(%rcx) + movb 10(%rax), %dl + movb %dl, 146(%rcx) + movb 11(%rax), %dl + movb %dl, 147(%rcx) + movb 12(%rax), %dl + movb %dl, 148(%rcx) + movb 13(%rax), %dl + movb %dl, 149(%rcx) + movb 14(%rax), %dl + movb %dl, 150(%rcx) + movb 15(%rax), %dl + movb %dl, 151(%rcx) + movb 16(%rax), %dl + movb %dl, 152(%rcx) + movb 17(%rax), %dl + movb %dl, 153(%rcx) + movb 18(%rax), %dl + movb %dl, 154(%rcx) + movb 19(%rax), %dl + movb %dl, 155(%rcx) + movb 20(%rax), %dl + movb %dl, 156(%rcx) + movb 21(%rax), %dl + movb %dl, 157(%rcx) + movb 22(%rax), %dl + movb %dl, 158(%rcx) + movb 23(%rax), %dl + movb %dl, 159(%rcx) + movb 24(%rax), %dl + movb %dl, 160(%rcx) + movb 25(%rax), %dl + movb %dl, 161(%rcx) + movb 26(%rax), %dl + movb %dl, 162(%rcx) + movb 27(%rax), %dl + movb %dl, 163(%rcx) + movb 28(%rax), %dl + movb %dl, 164(%rcx) + movb 29(%rax), %dl + movb %dl, 165(%rcx) + movb 30(%rax), %dl + movb %dl, 166(%rcx) + movb 31(%rax), %dl + movb %dl, 167(%rcx) + movb 32(%rax), %dl + movb %dl, 168(%rcx) + movb 33(%rax), %dl + movb %dl, 169(%rcx) + movb 34(%rax), %dl + movb %dl, 170(%rcx) + movb 35(%rax), %dl + movb %dl, 171(%rcx) + movb 36(%rax), %dl + movb %dl, 172(%rcx) + movb 37(%rax), %dl + movb %dl, 173(%rcx) + movb 38(%rax), %dl + movb %dl, 174(%rcx) + movb 39(%rax), %dl + movb %dl, 175(%rcx) + movb 40(%rax), %dl + movb %dl, 176(%rcx) + movb 41(%rax), %dl + movb %dl, 177(%rcx) + movb 42(%rax), %dl + movb %dl, 178(%rcx) + movb 43(%rax), %dl + movb %dl, 179(%rcx) + movb 44(%rax), %dl + movb %dl, 180(%rcx) + movb 45(%rax), %dl + movb %dl, 181(%rcx) + movb 46(%rax), %dl + movb %dl, 182(%rcx) + movb 47(%rax), %dl + movb %dl, 183(%rcx) + movb 48(%rax), %dl + movb %dl, 184(%rcx) + movb 49(%rax), %dl + movb %dl, 185(%rcx) + movb 50(%rax), %dl + movb %dl, 186(%rcx) + movb 51(%rax), %dl + movb %dl, 187(%rcx) + movb 52(%rax), %dl + movb %dl, 188(%rcx) + movb 53(%rax), %dl + movb %dl, 189(%rcx) + movb 54(%rax), %dl + movb %dl, 190(%rcx) + movb 55(%rax), %al + movb %al, 191(%rcx) + ret +L_shake256_128_33$1: + movq %rax, 8(%rsp) + leaq 16(%rsp), %rax + xorq %rdx, %rdx + movq %rdx, (%rax) + movq %rdx, 8(%rax) + movq %rdx, 16(%rax) + movq %rdx, 24(%rax) + movq %rdx, 32(%rax) + movq %rdx, 40(%rax) + movq %rdx, 48(%rax) + movq %rdx, 56(%rax) + movq %rdx, 64(%rax) + movq %rdx, 72(%rax) + movq %rdx, 80(%rax) + movq %rdx, 88(%rax) + movq %rdx, 96(%rax) + movq %rdx, 104(%rax) + movq %rdx, 112(%rax) + movq %rdx, 120(%rax) + movq %rdx, 128(%rax) + movq %rdx, 136(%rax) + movq %rdx, 144(%rax) + movq %rdx, 152(%rax) + movq %rdx, 160(%rax) + movq %rdx, 168(%rax) + movq %rdx, 176(%rax) + movq %rdx, 184(%rax) + movq %rdx, 192(%rax) + movb (%rcx), %dl + xorb %dl, (%rax) + movb 1(%rcx), %dl + xorb %dl, 1(%rax) + movb 2(%rcx), %dl + xorb %dl, 2(%rax) + movb 3(%rcx), %dl + xorb %dl, 3(%rax) + movb 4(%rcx), %dl + xorb %dl, 4(%rax) + movb 5(%rcx), %dl + xorb %dl, 5(%rax) + movb 6(%rcx), %dl + xorb %dl, 6(%rax) + movb 7(%rcx), %dl + xorb %dl, 7(%rax) + movb 8(%rcx), %dl + xorb %dl, 8(%rax) + movb 9(%rcx), %dl + xorb %dl, 9(%rax) + movb 10(%rcx), %dl + xorb %dl, 10(%rax) + movb 11(%rcx), %dl + xorb %dl, 11(%rax) + movb 12(%rcx), %dl + xorb %dl, 12(%rax) + movb 13(%rcx), %dl + xorb %dl, 13(%rax) + movb 14(%rcx), %dl + xorb %dl, 14(%rax) + movb 15(%rcx), %dl + xorb %dl, 15(%rax) + movb 16(%rcx), %dl + xorb %dl, 16(%rax) + movb 17(%rcx), %dl + xorb %dl, 17(%rax) + movb 18(%rcx), %dl + xorb %dl, 18(%rax) + movb 19(%rcx), %dl + xorb %dl, 19(%rax) + movb 20(%rcx), %dl + xorb %dl, 20(%rax) + movb 21(%rcx), %dl + xorb %dl, 21(%rax) + movb 22(%rcx), %dl + xorb %dl, 22(%rax) + movb 23(%rcx), %dl + xorb %dl, 23(%rax) + movb 24(%rcx), %dl + xorb %dl, 24(%rax) + movb 25(%rcx), %dl + xorb %dl, 25(%rax) + movb 26(%rcx), %dl + xorb %dl, 26(%rax) + movb 27(%rcx), %dl + xorb %dl, 27(%rax) + movb 28(%rcx), %dl + xorb %dl, 28(%rax) + movb 29(%rcx), %dl + xorb %dl, 29(%rax) + movb 30(%rcx), %dl + xorb %dl, 30(%rax) + movb 31(%rcx), %dl + xorb %dl, 31(%rax) + movb 32(%rcx), %cl + xorb %cl, 32(%rax) + xorb $31, 33(%rax) + xorb $-128, 135(%rax) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_128_33$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rcx + movb (%rax), %dl + movb %dl, (%rcx) + movb 1(%rax), %dl + movb %dl, 1(%rcx) + movb 2(%rax), %dl + movb %dl, 2(%rcx) + movb 3(%rax), %dl + movb %dl, 3(%rcx) + movb 4(%rax), %dl + movb %dl, 4(%rcx) + movb 5(%rax), %dl + movb %dl, 5(%rcx) + movb 6(%rax), %dl + movb %dl, 6(%rcx) + movb 7(%rax), %dl + movb %dl, 7(%rcx) + movb 8(%rax), %dl + movb %dl, 8(%rcx) + movb 9(%rax), %dl + movb %dl, 9(%rcx) + movb 10(%rax), %dl + movb %dl, 10(%rcx) + movb 11(%rax), %dl + movb %dl, 11(%rcx) + movb 12(%rax), %dl + movb %dl, 12(%rcx) + movb 13(%rax), %dl + movb %dl, 13(%rcx) + movb 14(%rax), %dl + movb %dl, 14(%rcx) + movb 15(%rax), %dl + movb %dl, 15(%rcx) + movb 16(%rax), %dl + movb %dl, 16(%rcx) + movb 17(%rax), %dl + movb %dl, 17(%rcx) + movb 18(%rax), %dl + movb %dl, 18(%rcx) + movb 19(%rax), %dl + movb %dl, 19(%rcx) + movb 20(%rax), %dl + movb %dl, 20(%rcx) + movb 21(%rax), %dl + movb %dl, 21(%rcx) + movb 22(%rax), %dl + movb %dl, 22(%rcx) + movb 23(%rax), %dl + movb %dl, 23(%rcx) + movb 24(%rax), %dl + movb %dl, 24(%rcx) + movb 25(%rax), %dl + movb %dl, 25(%rcx) + movb 26(%rax), %dl + movb %dl, 26(%rcx) + movb 27(%rax), %dl + movb %dl, 27(%rcx) + movb 28(%rax), %dl + movb %dl, 28(%rcx) + movb 29(%rax), %dl + movb %dl, 29(%rcx) + movb 30(%rax), %dl + movb %dl, 30(%rcx) + movb 31(%rax), %dl + movb %dl, 31(%rcx) + movb 32(%rax), %dl + movb %dl, 32(%rcx) + movb 33(%rax), %dl + movb %dl, 33(%rcx) + movb 34(%rax), %dl + movb %dl, 34(%rcx) + movb 35(%rax), %dl + movb %dl, 35(%rcx) + movb 36(%rax), %dl + movb %dl, 36(%rcx) + movb 37(%rax), %dl + movb %dl, 37(%rcx) + movb 38(%rax), %dl + movb %dl, 38(%rcx) + movb 39(%rax), %dl + movb %dl, 39(%rcx) + movb 40(%rax), %dl + movb %dl, 40(%rcx) + movb 41(%rax), %dl + movb %dl, 41(%rcx) + movb 42(%rax), %dl + movb %dl, 42(%rcx) + movb 43(%rax), %dl + movb %dl, 43(%rcx) + movb 44(%rax), %dl + movb %dl, 44(%rcx) + movb 45(%rax), %dl + movb %dl, 45(%rcx) + movb 46(%rax), %dl + movb %dl, 46(%rcx) + movb 47(%rax), %dl + movb %dl, 47(%rcx) + movb 48(%rax), %dl + movb %dl, 48(%rcx) + movb 49(%rax), %dl + movb %dl, 49(%rcx) + movb 50(%rax), %dl + movb %dl, 50(%rcx) + movb 51(%rax), %dl + movb %dl, 51(%rcx) + movb 52(%rax), %dl + movb %dl, 52(%rcx) + movb 53(%rax), %dl + movb %dl, 53(%rcx) + movb 54(%rax), %dl + movb %dl, 54(%rcx) + movb 55(%rax), %dl + movb %dl, 55(%rcx) + movb 56(%rax), %dl + movb %dl, 56(%rcx) + movb 57(%rax), %dl + movb %dl, 57(%rcx) + movb 58(%rax), %dl + movb %dl, 58(%rcx) + movb 59(%rax), %dl + movb %dl, 59(%rcx) + movb 60(%rax), %dl + movb %dl, 60(%rcx) + movb 61(%rax), %dl + movb %dl, 61(%rcx) + movb 62(%rax), %dl + movb %dl, 62(%rcx) + movb 63(%rax), %dl + movb %dl, 63(%rcx) + movb 64(%rax), %dl + movb %dl, 64(%rcx) + movb 65(%rax), %dl + movb %dl, 65(%rcx) + movb 66(%rax), %dl + movb %dl, 66(%rcx) + movb 67(%rax), %dl + movb %dl, 67(%rcx) + movb 68(%rax), %dl + movb %dl, 68(%rcx) + movb 69(%rax), %dl + movb %dl, 69(%rcx) + movb 70(%rax), %dl + movb %dl, 70(%rcx) + movb 71(%rax), %dl + movb %dl, 71(%rcx) + movb 72(%rax), %dl + movb %dl, 72(%rcx) + movb 73(%rax), %dl + movb %dl, 73(%rcx) + movb 74(%rax), %dl + movb %dl, 74(%rcx) + movb 75(%rax), %dl + movb %dl, 75(%rcx) + movb 76(%rax), %dl + movb %dl, 76(%rcx) + movb 77(%rax), %dl + movb %dl, 77(%rcx) + movb 78(%rax), %dl + movb %dl, 78(%rcx) + movb 79(%rax), %dl + movb %dl, 79(%rcx) + movb 80(%rax), %dl + movb %dl, 80(%rcx) + movb 81(%rax), %dl + movb %dl, 81(%rcx) + movb 82(%rax), %dl + movb %dl, 82(%rcx) + movb 83(%rax), %dl + movb %dl, 83(%rcx) + movb 84(%rax), %dl + movb %dl, 84(%rcx) + movb 85(%rax), %dl + movb %dl, 85(%rcx) + movb 86(%rax), %dl + movb %dl, 86(%rcx) + movb 87(%rax), %dl + movb %dl, 87(%rcx) + movb 88(%rax), %dl + movb %dl, 88(%rcx) + movb 89(%rax), %dl + movb %dl, 89(%rcx) + movb 90(%rax), %dl + movb %dl, 90(%rcx) + movb 91(%rax), %dl + movb %dl, 91(%rcx) + movb 92(%rax), %dl + movb %dl, 92(%rcx) + movb 93(%rax), %dl + movb %dl, 93(%rcx) + movb 94(%rax), %dl + movb %dl, 94(%rcx) + movb 95(%rax), %dl + movb %dl, 95(%rcx) + movb 96(%rax), %dl + movb %dl, 96(%rcx) + movb 97(%rax), %dl + movb %dl, 97(%rcx) + movb 98(%rax), %dl + movb %dl, 98(%rcx) + movb 99(%rax), %dl + movb %dl, 99(%rcx) + movb 100(%rax), %dl + movb %dl, 100(%rcx) + movb 101(%rax), %dl + movb %dl, 101(%rcx) + movb 102(%rax), %dl + movb %dl, 102(%rcx) + movb 103(%rax), %dl + movb %dl, 103(%rcx) + movb 104(%rax), %dl + movb %dl, 104(%rcx) + movb 105(%rax), %dl + movb %dl, 105(%rcx) + movb 106(%rax), %dl + movb %dl, 106(%rcx) + movb 107(%rax), %dl + movb %dl, 107(%rcx) + movb 108(%rax), %dl + movb %dl, 108(%rcx) + movb 109(%rax), %dl + movb %dl, 109(%rcx) + movb 110(%rax), %dl + movb %dl, 110(%rcx) + movb 111(%rax), %dl + movb %dl, 111(%rcx) + movb 112(%rax), %dl + movb %dl, 112(%rcx) + movb 113(%rax), %dl + movb %dl, 113(%rcx) + movb 114(%rax), %dl + movb %dl, 114(%rcx) + movb 115(%rax), %dl + movb %dl, 115(%rcx) + movb 116(%rax), %dl + movb %dl, 116(%rcx) + movb 117(%rax), %dl + movb %dl, 117(%rcx) + movb 118(%rax), %dl + movb %dl, 118(%rcx) + movb 119(%rax), %dl + movb %dl, 119(%rcx) + movb 120(%rax), %dl + movb %dl, 120(%rcx) + movb 121(%rax), %dl + movb %dl, 121(%rcx) + movb 122(%rax), %dl + movb %dl, 122(%rcx) + movb 123(%rax), %dl + movb %dl, 123(%rcx) + movb 124(%rax), %dl + movb %dl, 124(%rcx) + movb 125(%rax), %dl + movb %dl, 125(%rcx) + movb 126(%rax), %dl + movb %dl, 126(%rcx) + movb 127(%rax), %al + movb %al, 127(%rcx) + ret +L_keccakf1600_ref1$1: + leaq glob_data + 0(%rip), %rcx + movq %rcx, 8(%rsp) + leaq 24(%rsp), %rcx + movq $0, %rdx + jmp L_keccakf1600_ref1$2 +L_keccakf1600_ref1$3: + movq 8(%rsp), %rsi + movq (%rsi,%rdx,8), %rsi + movq %rsi, 16(%rsp) + movq (%rax), %r10 + movq 8(%rax), %r9 + movq 16(%rax), %r11 + movq 24(%rax), %rbx + movq 32(%rax), %rbp + xorq 40(%rax), %r10 + xorq 48(%rax), %r9 + xorq 56(%rax), %r11 + xorq 64(%rax), %rbx + xorq 72(%rax), %rbp + xorq 80(%rax), %r10 + xorq 88(%rax), %r9 + xorq 96(%rax), %r11 + xorq 104(%rax), %rbx + xorq 112(%rax), %rbp + xorq 120(%rax), %r10 + xorq 128(%rax), %r9 + xorq 136(%rax), %r11 + xorq 144(%rax), %rbx + xorq 152(%rax), %rbp + xorq 160(%rax), %r10 + xorq 168(%rax), %r9 + xorq 176(%rax), %r11 + xorq 184(%rax), %rbx + xorq 192(%rax), %rbp + movq %r9, %rsi + rolq $1, %rsi + xorq %rbp, %rsi + movq %r11, %rdi + rolq $1, %rdi + xorq %r10, %rdi + movq %rbx, %r8 + rolq $1, %r8 + xorq %r9, %r8 + movq %rbp, %r9 + rolq $1, %r9 + xorq %r11, %r9 + rolq $1, %r10 + xorq %rbx, %r10 + movq (%rax), %r11 + xorq %rsi, %r11 + movq 48(%rax), %rbx + xorq %rdi, %rbx + rolq $44, %rbx + movq 96(%rax), %rbp + xorq %r8, %rbp + rolq $43, %rbp + movq 144(%rax), %r12 + xorq %r9, %r12 + rolq $21, %r12 + movq 192(%rax), %r13 + xorq %r10, %r13 + rolq $14, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + xorq 16(%rsp), %r14 + movq %r14, (%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 8(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 16(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 24(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 32(%rcx) + movq 24(%rax), %r11 + xorq %r9, %r11 + rolq $28, %r11 + movq 72(%rax), %rbx + xorq %r10, %rbx + rolq $20, %rbx + movq 80(%rax), %rbp + xorq %rsi, %rbp + rolq $3, %rbp + movq 128(%rax), %r12 + xorq %rdi, %r12 + rolq $45, %r12 + movq 176(%rax), %r13 + xorq %r8, %r13 + rolq $61, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 40(%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 48(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 56(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 64(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 72(%rcx) + movq 8(%rax), %r11 + xorq %rdi, %r11 + rolq $1, %r11 + movq 56(%rax), %rbx + xorq %r8, %rbx + rolq $6, %rbx + movq 104(%rax), %rbp + xorq %r9, %rbp + rolq $25, %rbp + movq 152(%rax), %r12 + xorq %r10, %r12 + rolq $8, %r12 + movq 160(%rax), %r13 + xorq %rsi, %r13 + rolq $18, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 80(%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 88(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 96(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 104(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 112(%rcx) + movq 32(%rax), %r11 + xorq %r10, %r11 + rolq $27, %r11 + movq 40(%rax), %rbx + xorq %rsi, %rbx + rolq $36, %rbx + movq 88(%rax), %rbp + xorq %rdi, %rbp + rolq $10, %rbp + movq 136(%rax), %r12 + xorq %r8, %r12 + rolq $15, %r12 + movq 184(%rax), %r13 + xorq %r9, %r13 + rolq $56, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 120(%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 128(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 136(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 144(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 152(%rcx) + movq 16(%rax), %r11 + xorq %r8, %r11 + rolq $62, %r11 + movq 64(%rax), %r8 + xorq %r9, %r8 + rolq $55, %r8 + movq 112(%rax), %r9 + xorq %r10, %r9 + rolq $39, %r9 + movq 120(%rax), %r10 + xorq %rsi, %r10 + rolq $41, %r10 + movq 168(%rax), %rsi + xorq %rdi, %rsi + rolq $2, %rsi + movq %r8, %rdi + notq %rdi + andq %r9, %rdi + xorq %r11, %rdi + movq %rdi, 160(%rcx) + movq %r9, %rdi + notq %rdi + andq %r10, %rdi + xorq %r8, %rdi + movq %rdi, 168(%rcx) + movq %r10, %rdi + notq %rdi + andq %rsi, %rdi + xorq %r9, %rdi + movq %rdi, 176(%rcx) + movq %rsi, %rdi + notq %rdi + andq %r11, %rdi + xorq %r10, %rdi + movq %rdi, 184(%rcx) + notq %r11 + andq %r8, %r11 + xorq %rsi, %r11 + movq %r11, 192(%rcx) + movq 8(%rsp), %rsi + movq 8(%rsi,%rdx,8), %rsi + movq %rsi, 16(%rsp) + movq (%rcx), %r10 + movq 8(%rcx), %r9 + movq 16(%rcx), %r11 + movq 24(%rcx), %rbx + movq 32(%rcx), %rbp + xorq 40(%rcx), %r10 + xorq 48(%rcx), %r9 + xorq 56(%rcx), %r11 + xorq 64(%rcx), %rbx + xorq 72(%rcx), %rbp + xorq 80(%rcx), %r10 + xorq 88(%rcx), %r9 + xorq 96(%rcx), %r11 + xorq 104(%rcx), %rbx + xorq 112(%rcx), %rbp + xorq 120(%rcx), %r10 + xorq 128(%rcx), %r9 + xorq 136(%rcx), %r11 + xorq 144(%rcx), %rbx + xorq 152(%rcx), %rbp + xorq 160(%rcx), %r10 + xorq 168(%rcx), %r9 + xorq 176(%rcx), %r11 + xorq 184(%rcx), %rbx + xorq 192(%rcx), %rbp + movq %r9, %rsi + rolq $1, %rsi + xorq %rbp, %rsi + movq %r11, %rdi + rolq $1, %rdi + xorq %r10, %rdi + movq %rbx, %r8 + rolq $1, %r8 + xorq %r9, %r8 + movq %rbp, %r9 + rolq $1, %r9 + xorq %r11, %r9 + rolq $1, %r10 + xorq %rbx, %r10 + movq (%rcx), %r11 + xorq %rsi, %r11 + movq 48(%rcx), %rbx + xorq %rdi, %rbx + rolq $44, %rbx + movq 96(%rcx), %rbp + xorq %r8, %rbp + rolq $43, %rbp + movq 144(%rcx), %r12 + xorq %r9, %r12 + rolq $21, %r12 + movq 192(%rcx), %r13 + xorq %r10, %r13 + rolq $14, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + xorq 16(%rsp), %r14 + movq %r14, (%rax) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 8(%rax) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 16(%rax) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 24(%rax) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 32(%rax) + movq 24(%rcx), %r11 + xorq %r9, %r11 + rolq $28, %r11 + movq 72(%rcx), %rbx + xorq %r10, %rbx + rolq $20, %rbx + movq 80(%rcx), %rbp + xorq %rsi, %rbp + rolq $3, %rbp + movq 128(%rcx), %r12 + xorq %rdi, %r12 + rolq $45, %r12 + movq 176(%rcx), %r13 + xorq %r8, %r13 + rolq $61, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 40(%rax) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 48(%rax) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 56(%rax) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 64(%rax) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 72(%rax) + movq 8(%rcx), %r11 + xorq %rdi, %r11 + rolq $1, %r11 + movq 56(%rcx), %rbx + xorq %r8, %rbx + rolq $6, %rbx + movq 104(%rcx), %rbp + xorq %r9, %rbp + rolq $25, %rbp + movq 152(%rcx), %r12 + xorq %r10, %r12 + rolq $8, %r12 + movq 160(%rcx), %r13 + xorq %rsi, %r13 + rolq $18, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 80(%rax) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 88(%rax) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 96(%rax) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 104(%rax) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 112(%rax) + movq 32(%rcx), %r11 + xorq %r10, %r11 + rolq $27, %r11 + movq 40(%rcx), %rbx + xorq %rsi, %rbx + rolq $36, %rbx + movq 88(%rcx), %rbp + xorq %rdi, %rbp + rolq $10, %rbp + movq 136(%rcx), %r12 + xorq %r8, %r12 + rolq $15, %r12 + movq 184(%rcx), %r13 + xorq %r9, %r13 + rolq $56, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 120(%rax) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 128(%rax) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 136(%rax) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 144(%rax) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 152(%rax) + movq 16(%rcx), %r11 + xorq %r8, %r11 + rolq $62, %r11 + movq 64(%rcx), %r8 + xorq %r9, %r8 + rolq $55, %r8 + movq 112(%rcx), %r9 + xorq %r10, %r9 + rolq $39, %r9 + movq 120(%rcx), %r10 + xorq %rsi, %r10 + rolq $41, %r10 + movq 168(%rcx), %rsi + xorq %rdi, %rsi + rolq $2, %rsi + movq %r8, %rdi + notq %rdi + andq %r9, %rdi + xorq %r11, %rdi + movq %rdi, 160(%rax) + movq %r9, %rdi + notq %rdi + andq %r10, %rdi + xorq %r8, %rdi + movq %rdi, 168(%rax) + movq %r10, %rdi + notq %rdi + andq %rsi, %rdi + xorq %r9, %rdi + movq %rdi, 176(%rax) + movq %rsi, %rdi + notq %rdi + andq %r11, %rdi + xorq %r10, %rdi + movq %rdi, 184(%rax) + notq %r11 + andq %r8, %r11 + xorq %rsi, %r11 + movq %r11, 192(%rax) + addq $2, %rdx +L_keccakf1600_ref1$2: + cmpq $23, %rdx + jb L_keccakf1600_ref1$3 + ret + .data + .p2align 5 +_glob_data: +glob_data: + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -91 + .byte 6 + .byte 15 + .byte 7 + .byte -76 + .byte 5 + .byte 67 + .byte 9 + .byte 34 + .byte 9 + .byte 29 + .byte 9 + .byte 52 + .byte 1 + .byte 108 + .byte 0 + .byte 35 + .byte 11 + .byte 102 + .byte 3 + .byte 86 + .byte 3 + .byte -26 + .byte 5 + .byte -25 + .byte 9 + .byte -2 + .byte 4 + .byte -6 + .byte 5 + .byte -95 + .byte 4 + .byte 123 + .byte 6 + .byte -93 + .byte 4 + .byte 37 + .byte 12 + .byte 106 + .byte 3 + .byte 55 + .byte 5 + .byte 63 + .byte 8 + .byte -120 + .byte 0 + .byte -65 + .byte 4 + .byte -127 + .byte 11 + .byte -71 + .byte 5 + .byte 5 + .byte 5 + .byte -41 + .byte 7 + .byte -97 + .byte 10 + .byte -90 + .byte 10 + .byte -72 + .byte 8 + .byte -48 + .byte 9 + .byte 75 + .byte 0 + .byte -100 + .byte 0 + .byte -72 + .byte 11 + .byte 95 + .byte 11 + .byte -92 + .byte 11 + .byte 104 + .byte 3 + .byte 125 + .byte 10 + .byte 54 + .byte 6 + .byte -94 + .byte 8 + .byte 90 + .byte 2 + .byte 54 + .byte 7 + .byte 9 + .byte 3 + .byte -109 + .byte 0 + .byte 122 + .byte 8 + .byte -9 + .byte 9 + .byte -10 + .byte 0 + .byte -116 + .byte 6 + .byte -37 + .byte 6 + .byte -52 + .byte 1 + .byte 35 + .byte 1 + .byte -21 + .byte 0 + .byte 80 + .byte 12 + .byte -74 + .byte 10 + .byte 91 + .byte 11 + .byte -104 + .byte 12 + .byte -13 + .byte 6 + .byte -102 + .byte 9 + .byte -29 + .byte 4 + .byte -74 + .byte 9 + .byte -42 + .byte 10 + .byte 83 + .byte 11 + .byte 79 + .byte 4 + .byte -5 + .byte 4 + .byte 92 + .byte 10 + .byte 41 + .byte 4 + .byte 65 + .byte 11 + .byte -43 + .byte 2 + .byte -28 + .byte 5 + .byte 64 + .byte 9 + .byte -114 + .byte 1 + .byte -73 + .byte 3 + .byte -9 + .byte 0 + .byte -115 + .byte 5 + .byte -106 + .byte 12 + .byte -61 + .byte 9 + .byte 15 + .byte 1 + .byte 90 + .byte 0 + .byte 85 + .byte 3 + .byte 68 + .byte 7 + .byte -125 + .byte 12 + .byte -118 + .byte 4 + .byte 82 + .byte 6 + .byte -102 + .byte 2 + .byte 64 + .byte 1 + .byte 8 + .byte 0 + .byte -3 + .byte 10 + .byte 8 + .byte 6 + .byte 26 + .byte 1 + .byte 46 + .byte 7 + .byte 13 + .byte 5 + .byte 10 + .byte 9 + .byte 40 + .byte 2 + .byte 117 + .byte 10 + .byte 58 + .byte 8 + .byte 35 + .byte 6 + .byte -51 + .byte 0 + .byte 102 + .byte 11 + .byte 6 + .byte 6 + .byte -95 + .byte 10 + .byte 37 + .byte 10 + .byte 8 + .byte 9 + .byte -87 + .byte 2 + .byte -126 + .byte 0 + .byte 66 + .byte 6 + .byte 79 + .byte 7 + .byte 61 + .byte 3 + .byte -126 + .byte 11 + .byte -7 + .byte 11 + .byte 45 + .byte 5 + .byte -60 + .byte 10 + .byte 69 + .byte 7 + .byte -62 + .byte 5 + .byte -78 + .byte 4 + .byte 63 + .byte 9 + .byte 75 + .byte 12 + .byte -40 + .byte 6 + .byte -109 + .byte 10 + .byte -85 + .byte 0 + .byte 55 + .byte 12 + .byte -30 + .byte 11 + .byte 115 + .byte 7 + .byte 44 + .byte 7 + .byte -19 + .byte 5 + .byte 103 + .byte 1 + .byte -10 + .byte 2 + .byte -95 + .byte 5 + .byte -19 + .byte 8 + .byte 11 + .byte 10 + .byte -102 + .byte 11 + .byte 20 + .byte 7 + .byte -43 + .byte 5 + .byte -114 + .byte 5 + .byte 31 + .byte 1 + .byte -54 + .byte 0 + .byte 86 + .byte 12 + .byte 110 + .byte 2 + .byte 41 + .byte 6 + .byte -74 + .byte 0 + .byte -62 + .byte 3 + .byte 79 + .byte 8 + .byte 63 + .byte 7 + .byte -68 + .byte 5 + .byte 61 + .byte 2 + .byte -44 + .byte 7 + .byte 8 + .byte 1 + .byte 127 + .byte 1 + .byte -60 + .byte 9 + .byte -78 + .byte 5 + .byte -65 + .byte 6 + .byte 127 + .byte 12 + .byte 88 + .byte 10 + .byte -7 + .byte 3 + .byte -36 + .byte 2 + .byte 96 + .byte 2 + .byte -5 + .byte 6 + .byte -101 + .byte 1 + .byte 52 + .byte 12 + .byte -34 + .byte 6 + .byte -57 + .byte 4 + .byte -116 + .byte 2 + .byte -39 + .byte 10 + .byte -9 + .byte 3 + .byte -12 + .byte 7 + .byte -45 + .byte 5 + .byte -25 + .byte 11 + .byte -7 + .byte 6 + .byte 4 + .byte 2 + .byte -7 + .byte 12 + .byte -63 + .byte 11 + .byte 103 + .byte 10 + .byte -81 + .byte 6 + .byte 119 + .byte 8 + .byte 126 + .byte 0 + .byte -67 + .byte 5 + .byte -84 + .byte 9 + .byte -89 + .byte 12 + .byte -14 + .byte 11 + .byte 62 + .byte 3 + .byte 107 + .byte 0 + .byte 116 + .byte 7 + .byte 10 + .byte 12 + .byte 74 + .byte 9 + .byte 115 + .byte 11 + .byte -63 + .byte 3 + .byte 29 + .byte 7 + .byte 44 + .byte 10 + .byte -64 + .byte 1 + .byte -40 + .byte 8 + .byte -91 + .byte 2 + .byte 6 + .byte 8 + .byte -78 + .byte 8 + .byte -82 + .byte 1 + .byte 43 + .byte 2 + .byte 75 + .byte 3 + .byte 30 + .byte 8 + .byte 103 + .byte 3 + .byte 14 + .byte 6 + .byte 105 + .byte 0 + .byte -90 + .byte 1 + .byte 75 + .byte 2 + .byte -79 + .byte 0 + .byte 22 + .byte 12 + .byte -34 + .byte 11 + .byte 53 + .byte 11 + .byte 38 + .byte 6 + .byte 117 + .byte 6 + .byte 11 + .byte 12 + .byte 10 + .byte 3 + .byte -121 + .byte 4 + .byte 110 + .byte 12 + .byte -8 + .byte 9 + .byte -53 + .byte 5 + .byte -89 + .byte 10 + .byte 95 + .byte 4 + .byte -53 + .byte 6 + .byte -124 + .byte 2 + .byte -103 + .byte 9 + .byte 93 + .byte 1 + .byte -94 + .byte 1 + .byte 73 + .byte 1 + .byte 101 + .byte 12 + .byte -74 + .byte 12 + .byte 49 + .byte 3 + .byte 73 + .byte 4 + .byte 91 + .byte 2 + .byte 98 + .byte 2 + .byte 42 + .byte 5 + .byte -4 + .byte 7 + .byte 72 + .byte 7 + .byte -128 + .byte 1 + .byte 66 + .byte 8 + .byte 121 + .byte 12 + .byte -62 + .byte 4 + .byte -54 + .byte 7 + .byte -105 + .byte 9 + .byte -36 + .byte 0 + .byte 94 + .byte 8 + .byte -122 + .byte 6 + .byte 96 + .byte 8 + .byte 7 + .byte 7 + .byte 3 + .byte 8 + .byte 26 + .byte 3 + .byte 27 + .byte 7 + .byte -85 + .byte 9 + .byte -101 + .byte 9 + .byte -34 + .byte 1 + .byte -107 + .byte 12 + .byte -51 + .byte 11 + .byte -28 + .byte 3 + .byte -33 + .byte 3 + .byte -66 + .byte 3 + .byte 77 + .byte 7 + .byte -14 + .byte 5 + .byte 92 + .byte 6 diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d b/src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d new file mode 100644 index 000000000..2fb0ff7f8 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d @@ -0,0 +1 @@ +kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/avx2/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/common/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_4x_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake256/amd64/avx2/shake256_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/shuffle.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/consts.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/avx2/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake128/amd64/avx2/shake128_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/kem.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile b/src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile new file mode 100644 index 000000000..eec5ee0e3 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile @@ -0,0 +1,3 @@ +SRCS := kem.jazz +include ../../../../../Makefile.common + diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/api.c b/src/kem/kyber/libjade_kyber768_amd64_avx2/api.c new file mode 100644 index 000000000..15571bf96 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/api.c @@ -0,0 +1,20 @@ +#include +#include "libjade_randombytes.h" +#include "api.h" + +int libjade_kyber768_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber768_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES); + return jade_kem_kyber_kyber768_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber768_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc b/src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc new file mode 100644 index 000000000..9ae8a1676 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc @@ -0,0 +1,790 @@ +from Jade require "common/keccak/common/fips202_DIRTY.jinc" +from Jade require "common/keccak/common/fips202_4x_DIRTY.jinc" +from Jade require "crypto_xof/shake128/amd64/avx2/shake128_4x.jinc" + +param int GENMATRIX_NBLOCKS = ((12*KYBER_N/8*4096/KYBER_Q + SHAKE128_RATE)/SHAKE128_RATE); +param int REJ_UNIFORM_AVX_BUFLEN = GENMATRIX_NBLOCKS * SHAKE128_RATE; + +u8[2048] ru_idx = {-1, -1, -1, -1, -1, -1, -1, -1, + 0, -1, -1, -1, -1, -1, -1, -1, + 2, -1, -1, -1, -1, -1, -1, -1, + 0, 2, -1, -1, -1, -1, -1, -1, + 4, -1, -1, -1, -1, -1, -1, -1, + 0, 4, -1, -1, -1, -1, -1, -1, + 2, 4, -1, -1, -1, -1, -1, -1, + 0, 2, 4, -1, -1, -1, -1, -1, + 6, -1, -1, -1, -1, -1, -1, -1, + 0, 6, -1, -1, -1, -1, -1, -1, + 2, 6, -1, -1, -1, -1, -1, -1, + 0, 2, 6, -1, -1, -1, -1, -1, + 4, 6, -1, -1, -1, -1, -1, -1, + 0, 4, 6, -1, -1, -1, -1, -1, + 2, 4, 6, -1, -1, -1, -1, -1, + 0, 2, 4, 6, -1, -1, -1, -1, + 8, -1, -1, -1, -1, -1, -1, -1, + 0, 8, -1, -1, -1, -1, -1, -1, + 2, 8, -1, -1, -1, -1, -1, -1, + 0, 2, 8, -1, -1, -1, -1, -1, + 4, 8, -1, -1, -1, -1, -1, -1, + 0, 4, 8, -1, -1, -1, -1, -1, + 2, 4, 8, -1, -1, -1, -1, -1, + 0, 2, 4, 8, -1, -1, -1, -1, + 6, 8, -1, -1, -1, -1, -1, -1, + 0, 6, 8, -1, -1, -1, -1, -1, + 2, 6, 8, -1, -1, -1, -1, -1, + 0, 2, 6, 8, -1, -1, -1, -1, + 4, 6, 8, -1, -1, -1, -1, -1, + 0, 4, 6, 8, -1, -1, -1, -1, + 2, 4, 6, 8, -1, -1, -1, -1, + 0, 2, 4, 6, 8, -1, -1, -1, + 10, -1, -1, -1, -1, -1, -1, -1, + 0, 10, -1, -1, -1, -1, -1, -1, + 2, 10, -1, -1, -1, -1, -1, -1, + 0, 2, 10, -1, -1, -1, -1, -1, + 4, 10, -1, -1, -1, -1, -1, -1, + 0, 4, 10, -1, -1, -1, -1, -1, + 2, 4, 10, -1, -1, -1, -1, -1, + 0, 2, 4, 10, -1, -1, -1, -1, + 6, 10, -1, -1, -1, -1, -1, -1, + 0, 6, 10, -1, -1, -1, -1, -1, + 2, 6, 10, -1, -1, -1, -1, -1, + 0, 2, 6, 10, -1, -1, -1, -1, + 4, 6, 10, -1, -1, -1, -1, -1, + 0, 4, 6, 10, -1, -1, -1, -1, + 2, 4, 6, 10, -1, -1, -1, -1, + 0, 2, 4, 6, 10, -1, -1, -1, + 8, 10, -1, -1, -1, -1, -1, -1, + 0, 8, 10, -1, -1, -1, -1, -1, + 2, 8, 10, -1, -1, -1, -1, -1, + 0, 2, 8, 10, -1, -1, -1, -1, + 4, 8, 10, -1, -1, -1, -1, -1, + 0, 4, 8, 10, -1, -1, -1, -1, + 2, 4, 8, 10, -1, -1, -1, -1, + 0, 2, 4, 8, 10, -1, -1, -1, + 6, 8, 10, -1, -1, -1, -1, -1, + 0, 6, 8, 10, -1, -1, -1, -1, + 2, 6, 8, 10, -1, -1, -1, -1, + 0, 2, 6, 8, 10, -1, -1, -1, + 4, 6, 8, 10, -1, -1, -1, -1, + 0, 4, 6, 8, 10, -1, -1, -1, + 2, 4, 6, 8, 10, -1, -1, -1, + 0, 2, 4, 6, 8, 10, -1, -1, + 12, -1, -1, -1, -1, -1, -1, -1, + 0, 12, -1, -1, -1, -1, -1, -1, + 2, 12, -1, -1, -1, -1, -1, -1, + 0, 2, 12, -1, -1, -1, -1, -1, + 4, 12, -1, -1, -1, -1, -1, -1, + 0, 4, 12, -1, -1, -1, -1, -1, + 2, 4, 12, -1, -1, -1, -1, -1, + 0, 2, 4, 12, -1, -1, -1, -1, + 6, 12, -1, -1, -1, -1, -1, -1, + 0, 6, 12, -1, -1, -1, -1, -1, + 2, 6, 12, -1, -1, -1, -1, -1, + 0, 2, 6, 12, -1, -1, -1, -1, + 4, 6, 12, -1, -1, -1, -1, -1, + 0, 4, 6, 12, -1, -1, -1, -1, + 2, 4, 6, 12, -1, -1, -1, -1, + 0, 2, 4, 6, 12, -1, -1, -1, + 8, 12, -1, -1, -1, -1, -1, -1, + 0, 8, 12, -1, -1, -1, -1, -1, + 2, 8, 12, -1, -1, -1, -1, -1, + 0, 2, 8, 12, -1, -1, -1, -1, + 4, 8, 12, -1, -1, -1, -1, -1, + 0, 4, 8, 12, -1, -1, -1, -1, + 2, 4, 8, 12, -1, -1, -1, -1, + 0, 2, 4, 8, 12, -1, -1, -1, + 6, 8, 12, -1, -1, -1, -1, -1, + 0, 6, 8, 12, -1, -1, -1, -1, + 2, 6, 8, 12, -1, -1, -1, -1, + 0, 2, 6, 8, 12, -1, -1, -1, + 4, 6, 8, 12, -1, -1, -1, -1, + 0, 4, 6, 8, 12, -1, -1, -1, + 2, 4, 6, 8, 12, -1, -1, -1, + 0, 2, 4, 6, 8, 12, -1, -1, + 10, 12, -1, -1, -1, -1, -1, -1, + 0, 10, 12, -1, -1, -1, -1, -1, + 2, 10, 12, -1, -1, -1, -1, -1, + 0, 2, 10, 12, -1, -1, -1, -1, + 4, 10, 12, -1, -1, -1, -1, -1, + 0, 4, 10, 12, -1, -1, -1, -1, + 2, 4, 10, 12, -1, -1, -1, -1, + 0, 2, 4, 10, 12, -1, -1, -1, + 6, 10, 12, -1, -1, -1, -1, -1, + 0, 6, 10, 12, -1, -1, -1, -1, + 2, 6, 10, 12, -1, -1, -1, -1, + 0, 2, 6, 10, 12, -1, -1, -1, + 4, 6, 10, 12, -1, -1, -1, -1, + 0, 4, 6, 10, 12, -1, -1, -1, + 2, 4, 6, 10, 12, -1, -1, -1, + 0, 2, 4, 6, 10, 12, -1, -1, + 8, 10, 12, -1, -1, -1, -1, -1, + 0, 8, 10, 12, -1, -1, -1, -1, + 2, 8, 10, 12, -1, -1, -1, -1, + 0, 2, 8, 10, 12, -1, -1, -1, + 4, 8, 10, 12, -1, -1, -1, -1, + 0, 4, 8, 10, 12, -1, -1, -1, + 2, 4, 8, 10, 12, -1, -1, -1, + 0, 2, 4, 8, 10, 12, -1, -1, + 6, 8, 10, 12, -1, -1, -1, -1, + 0, 6, 8, 10, 12, -1, -1, -1, + 2, 6, 8, 10, 12, -1, -1, -1, + 0, 2, 6, 8, 10, 12, -1, -1, + 4, 6, 8, 10, 12, -1, -1, -1, + 0, 4, 6, 8, 10, 12, -1, -1, + 2, 4, 6, 8, 10, 12, -1, -1, + 0, 2, 4, 6, 8, 10, 12, -1, + 14, -1, -1, -1, -1, -1, -1, -1, + 0, 14, -1, -1, -1, -1, -1, -1, + 2, 14, -1, -1, -1, -1, -1, -1, + 0, 2, 14, -1, -1, -1, -1, -1, + 4, 14, -1, -1, -1, -1, -1, -1, + 0, 4, 14, -1, -1, -1, -1, -1, + 2, 4, 14, -1, -1, -1, -1, -1, + 0, 2, 4, 14, -1, -1, -1, -1, + 6, 14, -1, -1, -1, -1, -1, -1, + 0, 6, 14, -1, -1, -1, -1, -1, + 2, 6, 14, -1, -1, -1, -1, -1, + 0, 2, 6, 14, -1, -1, -1, -1, + 4, 6, 14, -1, -1, -1, -1, -1, + 0, 4, 6, 14, -1, -1, -1, -1, + 2, 4, 6, 14, -1, -1, -1, -1, + 0, 2, 4, 6, 14, -1, -1, -1, + 8, 14, -1, -1, -1, -1, -1, -1, + 0, 8, 14, -1, -1, -1, -1, -1, + 2, 8, 14, -1, -1, -1, -1, -1, + 0, 2, 8, 14, -1, -1, -1, -1, + 4, 8, 14, -1, -1, -1, -1, -1, + 0, 4, 8, 14, -1, -1, -1, -1, + 2, 4, 8, 14, -1, -1, -1, -1, + 0, 2, 4, 8, 14, -1, -1, -1, + 6, 8, 14, -1, -1, -1, -1, -1, + 0, 6, 8, 14, -1, -1, -1, -1, + 2, 6, 8, 14, -1, -1, -1, -1, + 0, 2, 6, 8, 14, -1, -1, -1, + 4, 6, 8, 14, -1, -1, -1, -1, + 0, 4, 6, 8, 14, -1, -1, -1, + 2, 4, 6, 8, 14, -1, -1, -1, + 0, 2, 4, 6, 8, 14, -1, -1, + 10, 14, -1, -1, -1, -1, -1, -1, + 0, 10, 14, -1, -1, -1, -1, -1, + 2, 10, 14, -1, -1, -1, -1, -1, + 0, 2, 10, 14, -1, -1, -1, -1, + 4, 10, 14, -1, -1, -1, -1, -1, + 0, 4, 10, 14, -1, -1, -1, -1, + 2, 4, 10, 14, -1, -1, -1, -1, + 0, 2, 4, 10, 14, -1, -1, -1, + 6, 10, 14, -1, -1, -1, -1, -1, + 0, 6, 10, 14, -1, -1, -1, -1, + 2, 6, 10, 14, -1, -1, -1, -1, + 0, 2, 6, 10, 14, -1, -1, -1, + 4, 6, 10, 14, -1, -1, -1, -1, + 0, 4, 6, 10, 14, -1, -1, -1, + 2, 4, 6, 10, 14, -1, -1, -1, + 0, 2, 4, 6, 10, 14, -1, -1, + 8, 10, 14, -1, -1, -1, -1, -1, + 0, 8, 10, 14, -1, -1, -1, -1, + 2, 8, 10, 14, -1, -1, -1, -1, + 0, 2, 8, 10, 14, -1, -1, -1, + 4, 8, 10, 14, -1, -1, -1, -1, + 0, 4, 8, 10, 14, -1, -1, -1, + 2, 4, 8, 10, 14, -1, -1, -1, + 0, 2, 4, 8, 10, 14, -1, -1, + 6, 8, 10, 14, -1, -1, -1, -1, + 0, 6, 8, 10, 14, -1, -1, -1, + 2, 6, 8, 10, 14, -1, -1, -1, + 0, 2, 6, 8, 10, 14, -1, -1, + 4, 6, 8, 10, 14, -1, -1, -1, + 0, 4, 6, 8, 10, 14, -1, -1, + 2, 4, 6, 8, 10, 14, -1, -1, + 0, 2, 4, 6, 8, 10, 14, -1, + 12, 14, -1, -1, -1, -1, -1, -1, + 0, 12, 14, -1, -1, -1, -1, -1, + 2, 12, 14, -1, -1, -1, -1, -1, + 0, 2, 12, 14, -1, -1, -1, -1, + 4, 12, 14, -1, -1, -1, -1, -1, + 0, 4, 12, 14, -1, -1, -1, -1, + 2, 4, 12, 14, -1, -1, -1, -1, + 0, 2, 4, 12, 14, -1, -1, -1, + 6, 12, 14, -1, -1, -1, -1, -1, + 0, 6, 12, 14, -1, -1, -1, -1, + 2, 6, 12, 14, -1, -1, -1, -1, + 0, 2, 6, 12, 14, -1, -1, -1, + 4, 6, 12, 14, -1, -1, -1, -1, + 0, 4, 6, 12, 14, -1, -1, -1, + 2, 4, 6, 12, 14, -1, -1, -1, + 0, 2, 4, 6, 12, 14, -1, -1, + 8, 12, 14, -1, -1, -1, -1, -1, + 0, 8, 12, 14, -1, -1, -1, -1, + 2, 8, 12, 14, -1, -1, -1, -1, + 0, 2, 8, 12, 14, -1, -1, -1, + 4, 8, 12, 14, -1, -1, -1, -1, + 0, 4, 8, 12, 14, -1, -1, -1, + 2, 4, 8, 12, 14, -1, -1, -1, + 0, 2, 4, 8, 12, 14, -1, -1, + 6, 8, 12, 14, -1, -1, -1, -1, + 0, 6, 8, 12, 14, -1, -1, -1, + 2, 6, 8, 12, 14, -1, -1, -1, + 0, 2, 6, 8, 12, 14, -1, -1, + 4, 6, 8, 12, 14, -1, -1, -1, + 0, 4, 6, 8, 12, 14, -1, -1, + 2, 4, 6, 8, 12, 14, -1, -1, + 0, 2, 4, 6, 8, 12, 14, -1, + 10, 12, 14, -1, -1, -1, -1, -1, + 0, 10, 12, 14, -1, -1, -1, -1, + 2, 10, 12, 14, -1, -1, -1, -1, + 0, 2, 10, 12, 14, -1, -1, -1, + 4, 10, 12, 14, -1, -1, -1, -1, + 0, 4, 10, 12, 14, -1, -1, -1, + 2, 4, 10, 12, 14, -1, -1, -1, + 0, 2, 4, 10, 12, 14, -1, -1, + 6, 10, 12, 14, -1, -1, -1, -1, + 0, 6, 10, 12, 14, -1, -1, -1, + 2, 6, 10, 12, 14, -1, -1, -1, + 0, 2, 6, 10, 12, 14, -1, -1, + 4, 6, 10, 12, 14, -1, -1, -1, + 0, 4, 6, 10, 12, 14, -1, -1, + 2, 4, 6, 10, 12, 14, -1, -1, + 0, 2, 4, 6, 10, 12, 14, -1, + 8, 10, 12, 14, -1, -1, -1, -1, + 0, 8, 10, 12, 14, -1, -1, -1, + 2, 8, 10, 12, 14, -1, -1, -1, + 0, 2, 8, 10, 12, 14, -1, -1, + 4, 8, 10, 12, 14, -1, -1, -1, + 0, 4, 8, 10, 12, 14, -1, -1, + 2, 4, 8, 10, 12, 14, -1, -1, + 0, 2, 4, 8, 10, 12, 14, -1, + 6, 8, 10, 12, 14, -1, -1, -1, + 0, 6, 8, 10, 12, 14, -1, -1, + 2, 6, 8, 10, 12, 14, -1, -1, + 0, 2, 6, 8, 10, 12, 14, -1, + 4, 6, 8, 10, 12, 14, -1, -1, + 0, 4, 6, 8, 10, 12, 14, -1, + 2, 4, 6, 8, 10, 12, 14, -1, + 0, 2, 4, 6, 8, 10, 12, 14}; + +inline +fn __shake128_squeezenblocks(reg u256[7] state, stack u8[REJ_UNIFORM_AVX_BUFLEN] out) + -> reg u256[7], stack u8[REJ_UNIFORM_AVX_BUFLEN] +{ + inline int i; + + for i = 0 to GENMATRIX_NBLOCKS + { + state, out[i*SHAKE128_RATE:SHAKE128_RATE] = __shake128_squeezeblock(state, out[i*SHAKE128_RATE:SHAKE128_RATE]); + } + return state, out; +} + +inline +fn __shake128_squeezenblocks4x(reg ptr u256[25] state, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] h0 h1 h2 h3) + -> reg ptr u256[25], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] +{ + inline int i; + + for i = 0 to GENMATRIX_NBLOCKS + { + state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE] = __shake128_squeezeblock4x(state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE]); + } + + return state, h0, h1, h2, h3; +} + +inline +fn __rej_uniform(reg ptr u16[KYBER_N] rp, reg u64 offset, reg ptr u8[SHAKE128_RATE] buf, inline int buflen) -> reg u64, stack u16[KYBER_N] +{ + reg u16 val0 val1; + reg u16 t; + reg u64 pos ctr; + reg u8 fl1 fl2; + reg bool b; + + ctr = offset; + pos = 0; + + ?{ "<=u" = b }= #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(pos, buflen - 3); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + + while(!b) + { + val0 = (16u)buf[(int)pos]; + pos += 1; + + t = (16u)buf[(int)pos]; + val1 = t; + val1 >>= 4; + + t &= 0x0F; + t <<= 8; + val0 |= t; + pos += 1; + + t = (16u)buf[(int)pos]; + t <<= 4; + val1 |= t; + pos += 1; + + if(val0 < KYBER_Q) + { + rp[(int)ctr] = val0; + ctr += 1; + } + + if(ctr < KYBER_N) + { + if(val1 < KYBER_Q) + { + rp[(int)ctr] = val1; + ctr += 1; + } + } + + ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(pos, buflen - 3); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + return ctr, rp; +} + +u8 ru_ones_s = 1; +u16 ru_mask_s = 0x0FFF; +u8[32] ru_idx8_s = {0, 1, 1, 2, 3, 4, 4, 5, + 6, 7, 7, 8, 9, 10, 10, 11, + 4, 5, 5, 6, 7, 8, 8, 9, + 10, 11, 11, 12, 13, 14, 14, 15}; + +fn _rej_uniform_avx(reg ptr u16[KYBER_N] rp, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] buf) -> reg u64, reg ptr u16[KYBER_N] +{ + reg u256 f0 f1 g0 g1 g2 g3; + reg u256 bound ones mask idx8; + reg u128 f t l h; + reg u64 pos ctr t64 t64_1 t64_2 t64_3; + reg u64 good; + reg u16 val0 val1 t16; + reg ptr u8[2048] idxp; + reg u8 fl1 fl2; + reg bool b; + + idxp = ru_idx; + + bound = jqx16[u256 0]; + ctr = 0; + pos = 0; + ones = #VPBROADCAST_32u8(ru_ones_s); + mask = #VPBROADCAST_16u16(ru_mask_s); + idx8 = ru_idx8_s[u256 0]; + + ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 32); + fl1 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + + while(!b) + { + f0 = #VPERMQ(buf.[u256 (int)pos], 0x94); + f1 = #VPERMQ(buf.[u256 24 + (int)pos], 0x94); + f0 = #VPSHUFB_256(f0, idx8); + f1 = #VPSHUFB_256(f1, idx8); + g0 = #VPSRL_16u16(f0, 4); + g1 = #VPSRL_16u16(f1, 4); + f0 = #VPBLEND_16u16(f0, g0, 0xAA); + f1 = #VPBLEND_16u16(f1, g1, 0xAA); + f0 = #VPAND_256(f0, mask); + f1 = #VPAND_256(f1, mask); + + g0 = #VPCMPGT_16u16(bound, f0); + g1 = #VPCMPGT_16u16(bound, f1); + + g0 = #VPACKSS_16u16(g0, g1); + good = #VPMOVMSKB_u256u64(g0); + + t64 = good; + t64 &= 0xFF; + g0 = (256u) #VMOV(idxp[u64 (int)t64]); + + t64_1 = good; + t64_1 >>= 16; + t64_1 &= 0xFF; + l = #VMOV(idxp[u64 (int)t64_1]); + + t64_2 = good; + t64_2 >>= 8; + t64_2 &= 0xFF; + g1 = (256u) #VMOV(idxp[u64 (int)t64_2]); + + t64_3 = good; + t64_3 >>= 24; + t64_3 &= 0xFF; + h = #VMOV(idxp[u64 (int)t64_3]); + + g0 = #VINSERTI128(g0, l, 1); + + _, _, _, _, _, t64 = #POPCNT_64(t64); + _, _, _, _, _, t64_1 = #POPCNT_64(t64_1); + t64 += ctr; + + g1 = #VINSERTI128(g1, h, 1); + + t64_1 += t64; + _, _, _, _, _, t64_2 = #POPCNT_64(t64_2); + t64_2 += t64_1; + _, _, _, _, _, t64_3 = #POPCNT_64(t64_3); + t64_3 += t64_2; + + g2 = #VPADD_32u8(g0, ones); + g0 = #VPUNPCKL_32u8(g0, g2); + g3 = #VPADD_32u8(g1, ones); + g1 = #VPUNPCKL_32u8(g1, g3); + + f0 = #VPSHUFB_256(f0, g0); + f1 = #VPSHUFB_256(f1, g1); + + rp.[u128 2*(int)ctr] = (128u)f0; + rp.[u128 2*(int)t64] = #VEXTRACTI128(f0, 1); + rp.[u128 2*(int)t64_1] = (128u)f1; + rp.[u128 2*(int)t64_2] = #VEXTRACTI128(f1, 1); + + ctr = t64_3; + + ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 32); + fl1 = #SETcc(b); + + pos += 48; + ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 8); + fl1 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + + t64 = 0x5555; + while(!b) + { + f = buf.[u128 (int)pos]; + f = #VPSHUFB_128(f, idx8); + t = #VPSRL_8u16(f, 4); + f = #VPBLEND_8u16(f, t, 0xAA); + f = #VPAND_128(f, mask); + + t = #VPCMPGT_8u16(bound, f); + good = #VPMOVMSKB_u128u64(t); + + good = #PEXT_64(good, t64); + l = #VMOV(idxp[u64 (int)good]); + _, _, _, _, _, good = #POPCNT_64(good); + + h = #VPADD_16u8(l, ones); + l = #VPUNPCKL_16u8(l, h); + f = #VPSHUFB_128(f, l); + + rp.[u128 2*(int)ctr] = f; + ctr += good; + + pos += 12; + ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 8); + fl1 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + + while(!b) + { + val0 = (16u)buf[(int)pos]; + pos += 1; + t16 = (16u)buf[(int)pos]; + pos += 1; + val1 = t16; + + t16 <<= 8; + val0 |= t16; + val0 &= 0xFFF; + + val1 >>= 4; + t16 = (16u)buf[(int)pos]; + pos += 1; + t16 <<= 4; + val1 |= t16; + + if(val0 < KYBER_Q) + { + rp[(int)ctr] = val0; + ctr += 1; + } + if(val1 < KYBER_Q) + { + if(ctr < KYBER_N) + { + rp[(int)ctr] = val1; + ctr += 1; + } + } + + ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 1); + fl1 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); + fl2 = #SETcc(b); + + _, _, _, _, b = #TEST_8(fl1, fl2); + } + + return ctr, rp; +} + +inline +fn __gen_matrix(stack u8[KYBER_SYMBYTES] seed, inline int transposed) -> stack u16[KYBER_K*KYBER_VECN] +{ + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf0; + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf1; + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf2; + stack u8[REJ_UNIFORM_AVX_BUFLEN] buf3; + reg u256[7] statev; + stack u64[28] s_state; + stack u256[25] state; + stack u16[KYBER_K*KYBER_VECN] rr; + stack u256 fs; + reg u256 f; + reg u64 ctr0 ctr1 ctr2 ctr3 tmp; + stack u64 ctr0_s; + reg u8 flg0 flg1 bflg; + reg bool b; + reg bool zf; + + inline int i, j; + + f = seed[u256 0]; + buf0[u256 0] = f; + buf1[u256 0] = f; + buf2[u256 0] = f; + buf3[u256 0] = f; + fs = f; + + if(transposed == 1) + { + buf0[KYBER_SYMBYTES] = 0; + buf0[KYBER_SYMBYTES+1] = 0; + buf1[KYBER_SYMBYTES] = 0; + buf1[KYBER_SYMBYTES+1] = 1; + buf2[KYBER_SYMBYTES] = 0; + buf2[KYBER_SYMBYTES+1] = 2; + buf3[KYBER_SYMBYTES] = 1; + buf3[KYBER_SYMBYTES+1] = 0; + } + else + { + buf0[KYBER_SYMBYTES] = 0; + buf0[KYBER_SYMBYTES+1] = 0; + buf1[KYBER_SYMBYTES] = 1; + buf1[KYBER_SYMBYTES+1] = 0; + buf2[KYBER_SYMBYTES] = 2; + buf2[KYBER_SYMBYTES+1] = 0; + buf3[KYBER_SYMBYTES] = 0; + buf3[KYBER_SYMBYTES+1] = 1; + } + + state = _shake128_absorb4x_34(state, buf0[0:34], buf1[0:34], buf2[0:34], buf3[0:34]); + state, buf0, buf1, buf2, buf3 = __shake128_squeezenblocks4x(state, buf0, buf1, buf2, buf3); + + tmp, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], buf0); + ctr0 = tmp; + tmp, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], buf1); + ctr1 = tmp; + tmp, rr[0*KYBER_VECN+2*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+2*KYBER_N:KYBER_N], buf2); + ctr2 = tmp; + ctr3, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], buf3); + + ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, bflg = #OR_8(flg0, flg1); + + ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, flg0 = #OR_8(flg0, flg1); + _, _, _, _, zf, _ = #OR_8(flg0, bflg); + + while (!zf) { + state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE] = __shake128_squeezeblock4x(state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE]); + + ctr0, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); + ctr1, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], ctr1, buf1[0:SHAKE128_RATE], SHAKE128_RATE); + ctr2, rr[0*KYBER_VECN+2*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+2*KYBER_N:KYBER_N], ctr2, buf2[0:SHAKE128_RATE], SHAKE128_RATE); + ctr3, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], ctr3, buf3[0:SHAKE128_RATE], SHAKE128_RATE); + + ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, bflg = #OR_8(flg0, flg1); + + ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, flg0 = #OR_8(flg0, flg1); + _, _, _, _, zf, _ = #OR_8(flg0, bflg); + } + + f = fs; + buf0[u256 0] = f; + buf1[u256 0] = f; + buf2[u256 0] = f; + buf3[u256 0] = f; + fs = f; + + if(transposed == 1) + { + buf0[KYBER_SYMBYTES] = 1; + buf0[KYBER_SYMBYTES+1] = 1; + buf1[KYBER_SYMBYTES] = 1; + buf1[KYBER_SYMBYTES+1] = 2; + buf2[KYBER_SYMBYTES] = 2; + buf2[KYBER_SYMBYTES+1] = 0; + buf3[KYBER_SYMBYTES] = 2; + buf3[KYBER_SYMBYTES+1] = 1; + } + else + { + buf0[KYBER_SYMBYTES] = 1; + buf0[KYBER_SYMBYTES+1] = 1; + buf1[KYBER_SYMBYTES] = 2; + buf1[KYBER_SYMBYTES+1] = 1; + buf2[KYBER_SYMBYTES] = 0; + buf2[KYBER_SYMBYTES+1] = 2; + buf3[KYBER_SYMBYTES] = 1; + buf3[KYBER_SYMBYTES+1] = 2; + } + + state = _shake128_absorb4x_34(state, buf0[0:34], buf1[0:34], buf2[0:34], buf3[0:34]); + state, buf0, buf1, buf2, buf3 = __shake128_squeezenblocks4x(state, buf0, buf1, buf2, buf3); + + tmp, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], buf0); + ctr0 = tmp; + tmp, rr[1*KYBER_VECN+2*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+2*KYBER_N:KYBER_N], buf1); + ctr1 = tmp; + tmp, rr[2*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[2*KYBER_VECN+0*KYBER_N:KYBER_N], buf2); + ctr2 = tmp; + ctr3, rr[2*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[2*KYBER_VECN+1*KYBER_N:KYBER_N], buf3); + + ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, bflg = #OR_8(flg0, flg1); + + ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, flg0 = #OR_8(flg0, flg1); + _, _, _, _, zf, _ = #OR_8(flg0, bflg); + + + while(!zf) { + state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE] = __shake128_squeezeblock4x(state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE]); + + ctr0, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); + ctr1, rr[1*KYBER_VECN+2*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+2*KYBER_N:KYBER_N], ctr1, buf1[0:SHAKE128_RATE], SHAKE128_RATE); + ctr2, rr[2*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[2*KYBER_VECN+0*KYBER_N:KYBER_N], ctr2, buf2[0:SHAKE128_RATE], SHAKE128_RATE); + ctr3, rr[2*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[2*KYBER_VECN+1*KYBER_N:KYBER_N], ctr3, buf3[0:SHAKE128_RATE], SHAKE128_RATE); + + ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, bflg = #OR_8(flg0, flg1); + + ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); + flg0 = #SETcc(b); + + ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); + flg1 = #SETcc(b); + + _, _, _, _, _, flg0 = #OR_8(flg0, flg1); + _, _, _, _, zf, _ = #OR_8(flg0, bflg); + } + + f = fs; + buf0[u256 0] = f; + buf0[KYBER_SYMBYTES] = 2; + buf0[KYBER_SYMBYTES+1] = 2; + + statev = __shake128_absorb34(statev, buf0[0:34]); + statev, buf0 = __shake128_squeezenblocks(statev, buf0); + + // spill state to free registers for rejection sampling + for i=0 to 7 { s_state[u256 i] = statev[i]; } + + ctr0, rr[2*KYBER_VECN+2*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[2*KYBER_VECN+2*KYBER_N:KYBER_N], buf0); + + ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); + bflg = #SETcc(b); + + for i=0 to 7 { statev[i] = s_state[u256 i]; } + + while(bflg != 0) { + statev, buf0[0:SHAKE128_RATE] = __shake128_squeezeblock(statev, buf0[0:SHAKE128_RATE]); + + ctr0, rr[2*KYBER_VECN+2*KYBER_N:KYBER_N] = __rej_uniform(rr[2*KYBER_VECN+2*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); + + ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); + bflg = #SETcc(b); + } + + for i = 0 to KYBER_K + { + for j = 0 to KYBER_K + { + rr[i*KYBER_VECN+j*KYBER_N:KYBER_N] = _nttunpack(rr[i*KYBER_VECN+j*KYBER_N:KYBER_N]); + } + } + + return rr; +} diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/include/api.h b/src/kem/kyber/libjade_kyber768_amd64_avx2/include/api.h new file mode 100644 index 000000000..be5f7dbf3 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/include/api.h @@ -0,0 +1,45 @@ +#ifndef JADE_KEM_kyber_kyber768_amd64_avx2_API_H +#define JADE_KEM_kyber_kyber768_amd64_avx2_API_H + +#include + +#define JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES 64 +#define JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES 32 + +int jade_kem_kyber_kyber768_amd64_avx2_keypair_derand( + uint8_t *public_key, + uint8_t *secret_key, + const uint8_t *coins +); + +int libjade_kyber768_amd64_avx2_keypair( + uint8_t *public_key, + uint8_t *secret_key +); + +int jade_kem_kyber_kyber768_amd64_avx2_enc_derand( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key, + const uint8_t *coins +); + +int libjade_kyber768_amd64_avx2_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +); + +int jade_kem_kyber_kyber768_amd64_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +int libjade_kyber768_amd64_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +#endif diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc b/src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc new file mode 100644 index 000000000..9852b48f1 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc @@ -0,0 +1,218 @@ +from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" +from Jade require "crypto_kem/kyber/common/amd64/avx2/poly.jinc" +from Jade require "crypto_kem/kyber/common/amd64/avx2/polyvec.jinc" +require "gen_matrix.jinc" + +inline +fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] coins) +{ + stack u64 spkp sskp; + stack u16[KYBER_K*KYBER_VECN] aa; + stack u16[KYBER_VECN] e pkpv skpv; + stack u8[64] buf; + stack u8[KYBER_SYMBYTES] publicseed noiseseed; + reg u64 t64; + reg u8 nonce; + inline int i; + + spkp = pkp; + sskp = skp; + + buf = _sha3_512_32(buf, coins); + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = buf[u64 i]; + publicseed[u64 i] = t64; + t64 = buf[u64 i + KYBER_SYMBYTES/8]; + noiseseed[u64 i] = t64; + } + + aa = __gen_matrix(publicseed, 0); + + nonce = 0; + skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], skpv[2*KYBER_N:KYBER_N], e[0:KYBER_N] = _poly_getnoise_eta1_4x(skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], skpv[2*KYBER_N:KYBER_N], e[0:KYBER_N], noiseseed, nonce); + + nonce = 4; + e[KYBER_N:KYBER_N], e[2*KYBER_N:KYBER_N], pkpv[0:KYBER_N], pkpv[KYBER_N:KYBER_N] = _poly_getnoise_eta1_4x(e[KYBER_N:KYBER_N], e[2*KYBER_N:KYBER_N], pkpv[0:KYBER_N], pkpv[KYBER_N:KYBER_N], noiseseed, nonce); + + skpv = __polyvec_ntt(skpv); + e = __polyvec_ntt(e); + + for i=0 to KYBER_K + { + pkpv[i*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(pkpv[i*KYBER_N:KYBER_N], aa[i*KYBER_VECN:KYBER_VECN], skpv); + pkpv[i*KYBER_N:KYBER_N] = _poly_frommont(pkpv[i*KYBER_N:KYBER_N]); + } + + pkpv = __polyvec_add2(pkpv, e); + pkpv = __polyvec_reduce(pkpv); + + pkp = spkp; + skp = sskp; + + __polyvec_tobytes(skp, skpv); + __polyvec_tobytes(pkp, pkpv); + + pkp += KYBER_POLYVECBYTES; + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = publicseed[u64 i]; + (u64)[pkp] = t64; + pkp += 8; + } +} + +// FIXME: E_EPTR +inline +fn __indcpa_enc_0(stack u64 sctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) +{ + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_N] k epp v; + stack u8[KYBER_SYMBYTES] publicseed; + stack ptr u8[KYBER_SYMBYTES] s_noiseseed; + reg ptr u8[KYBER_SYMBYTES] lnoiseseed; + reg u64 i ctp t64; + reg u8 nonce; + inline int w; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed[u64 (int)i] = t64; + pkp += 8; + i += 1; + } + + k = _poly_frommsg_1(k, msgp); + + s_noiseseed = noiseseed; + aat = __gen_matrix(publicseed, 1); + lnoiseseed = s_noiseseed; + + nonce = 0; + sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N] = _poly_getnoise_eta1_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N], lnoiseseed, nonce); + + nonce = 4; + ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N] = _poly_getnoise_eta1_4x(ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N], lnoiseseed, nonce); + + sp = __polyvec_ntt(sp); + + for w=0 to KYBER_K + { + bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); + } + + v = __polyvec_pointwise_acc(v, pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + __polyvec_compress(ctp, bp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_compress(ctp, v); +} + +// FIXME: E_EPTR +inline +fn __indcpa_enc_1(reg ptr u8[KYBER_INDCPA_BYTES] ctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_INDCPA_BYTES] +{ + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_N] k epp v; + stack u8[KYBER_SYMBYTES] publicseed; + stack ptr u8[KYBER_SYMBYTES] s_noiseseed; + reg ptr u8[KYBER_SYMBYTES] lnoiseseed; + stack ptr u8[KYBER_INDCPA_BYTES] sctp; + reg u64 i t64; + reg u8 nonce; + inline int w; + + sctp = ctp; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed[u64 (int)i] = t64; + pkp += 8; + i += 1; + } + + k = _poly_frommsg_1(k, msgp); + + s_noiseseed = noiseseed; + aat = __gen_matrix(publicseed, 1); + lnoiseseed = s_noiseseed; + + nonce = 0; + sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N] = _poly_getnoise_eta1_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N], lnoiseseed, nonce); + + nonce = 4; + ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N] = _poly_getnoise_eta1_4x(ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N], lnoiseseed, nonce); + + sp = __polyvec_ntt(sp); + + for w=0 to KYBER_K + { + bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); + } + + v = __polyvec_pointwise_acc(v, pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __polyvec_compress_1(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); + ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _poly_compress_1(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); + + return ctp; +} + + +inline +fn __indcpa_dec(reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_INDCPA_MSGBYTES] +{ + stack u16[KYBER_N] t v mp; + stack u16[KYBER_VECN] bp skpv; + + bp = __polyvec_decompress(ctp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_decompress(v, ctp); + + skpv = __polyvec_frombytes(skp); + + bp = __polyvec_ntt(bp); + t = __polyvec_pointwise_acc(t, skpv, bp); + t = _poly_invntt(t); + + mp = _poly_sub(mp, v, t); + mp = __poly_reduce(mp); + + msgp, mp = _poly_tomsg_1(msgp, mp); + + return msgp; +} diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz b/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz new file mode 100644 index 000000000..325177a63 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz @@ -0,0 +1,66 @@ +require "indcpa.jinc" +from Jade require "common/tofromstack.jinc" +from Jade require "crypto_kem/kyber/common/amd64/avx2/verify.jinc" +from Jade require "crypto_kem/kyber/common/amd64/kem.jinc" + +export fn jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = __tostack64u8(stack_coins, coins); + __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_avx2_keypair(reg u64 public_key secret_key) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = #randombytes(stack_coins); + __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_avx2_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = __tostack32u8(stack_coins, coins); + __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_avx2_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = #randombytes(stack_coins); + __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_avx2_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 +{ + reg u64 r; + __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); + ?{}, r = #set0(); + return r; +} diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s b/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s new file mode 100644 index 000000000..2af9c26fb --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s @@ -0,0 +1,26077 @@ + .att_syntax + .text + .p2align 5 + .globl _jade_kem_kyber_kyber768_amd64_avx2_dec + .globl jade_kem_kyber_kyber768_amd64_avx2_dec + .globl _jade_kem_kyber_kyber768_amd64_avx2_enc + .globl jade_kem_kyber_kyber768_amd64_avx2_enc + .globl _jade_kem_kyber_kyber768_amd64_avx2_enc_derand + .globl jade_kem_kyber_kyber768_amd64_avx2_enc_derand + .globl _jade_kem_kyber_kyber768_amd64_avx2_keypair + .globl jade_kem_kyber_kyber768_amd64_avx2_keypair + .globl _jade_kem_kyber_kyber768_amd64_avx2_keypair_derand + .globl jade_kem_kyber_kyber768_amd64_avx2_keypair_derand +_jade_kem_kyber_kyber768_amd64_avx2_dec: +jade_kem_kyber_kyber768_amd64_avx2_dec: + movq %rsp, %rax + leaq -17192(%rsp), %rsp + andq $-32, %rsp + movq %rax, 17184(%rsp) + movq %r12, 17160(%rsp) + movq %rbp, 17168(%rsp) + movq %rbx, 17176(%rsp) + movq %rdi, 17120(%rsp) + movq %rsi, 17128(%rsp) + leaq 32(%rsp), %rax + vpbroadcastd glob_data + 6404(%rip), %ymm0 + vmovdqu glob_data + 64(%rip), %ymm1 + vpbroadcastq glob_data + 6192(%rip), %ymm2 + vpbroadcastd glob_data + 6400(%rip), %ymm3 + vmovdqu (%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6368(%rsp) + vmovdqu 20(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6400(%rsp) + vmovdqu 40(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6432(%rsp) + vmovdqu 60(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6464(%rsp) + vmovdqu 80(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6496(%rsp) + vmovdqu 100(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6528(%rsp) + vmovdqu 120(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6560(%rsp) + vmovdqu 140(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6592(%rsp) + vmovdqu 160(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6624(%rsp) + vmovdqu 180(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6656(%rsp) + vmovdqu 200(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6688(%rsp) + vmovdqu 220(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6720(%rsp) + vmovdqu 240(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6752(%rsp) + vmovdqu 260(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6784(%rsp) + vmovdqu 280(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6816(%rsp) + vmovdqu 300(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6848(%rsp) + vmovdqu 320(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6880(%rsp) + vmovdqu 340(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6912(%rsp) + vmovdqu 360(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6944(%rsp) + vmovdqu 380(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 6976(%rsp) + vmovdqu 400(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7008(%rsp) + vmovdqu 420(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7040(%rsp) + vmovdqu 440(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7072(%rsp) + vmovdqu 460(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7104(%rsp) + vmovdqu 480(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7136(%rsp) + vmovdqu 500(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7168(%rsp) + vmovdqu 520(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7200(%rsp) + vmovdqu 540(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7232(%rsp) + vmovdqu 560(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7264(%rsp) + vmovdqu 580(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7296(%rsp) + vmovdqu 600(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7328(%rsp) + vmovdqu 620(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7360(%rsp) + vmovdqu 640(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7392(%rsp) + vmovdqu 660(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7424(%rsp) + vmovdqu 680(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7456(%rsp) + vmovdqu 700(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7488(%rsp) + vmovdqu 720(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7520(%rsp) + vmovdqu 740(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7552(%rsp) + vmovdqu 760(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7584(%rsp) + vmovdqu 780(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7616(%rsp) + vmovdqu 800(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7648(%rsp) + vmovdqu 820(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7680(%rsp) + vmovdqu 840(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7712(%rsp) + vmovdqu 860(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7744(%rsp) + vmovdqu 880(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7776(%rsp) + vmovdqu 900(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7808(%rsp) + vmovdqu 920(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpsllvd %ymm2, %ymm4, %ymm4 + vpsrlw $1, %ymm4, %ymm4 + vpand %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 7840(%rsp) + vmovdqu 940(%rsi), %ymm4 + vpermq $-108, %ymm4, %ymm4 + vpshufb %ymm1, %ymm4, %ymm1 + vpsllvd %ymm2, %ymm1, %ymm1 + vpsrlw $1, %ymm1, %ymm1 + vpand %ymm3, %ymm1, %ymm1 + vpmulhrsw %ymm0, %ymm1, %ymm0 + vmovdqu %ymm0, 7872(%rsp) + addq $960, %rsi + leaq 2432(%rsp), %rcx + leaq -24(%rsp), %rsp + call L_poly_decompress$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$145: + leaq 24(%rsp), %rsp + movq %rdx, %rsi + leaq 7904(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$144: + addq $384, %rsi + leaq 8416(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$143: + addq $384, %rsi + leaq 8928(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$142: + leaq 6368(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$141: + leaq 6880(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$140: + leaq 7392(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$139: + leaq 2944(%rsp), %rcx + leaq 7904(%rsp), %rsi + leaq 6368(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$138: + leaq 3456(%rsp), %rcx + leaq 8416(%rsp), %rsi + leaq 6880(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$137: + leaq 2944(%rsp), %rcx + leaq 3456(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$136: + leaq 3456(%rsp), %rcx + leaq 8928(%rsp), %rsi + leaq 7392(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$135: + leaq 2944(%rsp), %rcx + leaq 3456(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$134: + leaq 2944(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$133: + leaq 3456(%rsp), %rcx + leaq 2432(%rsp), %rsi + leaq 2944(%rsp), %rdi + call L_poly_sub$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$132: + leaq 3456(%rsp), %rcx + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rcx) + vmovdqu 32(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rcx) + vmovdqu 64(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rcx) + vmovdqu 96(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rcx) + vmovdqu 128(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rcx) + vmovdqu 160(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rcx) + vmovdqu 192(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rcx) + vmovdqu 224(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rcx) + vmovdqu 256(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rcx) + vmovdqu 288(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rcx) + vmovdqu 320(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rcx) + vmovdqu 352(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rcx) + vmovdqu 384(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rcx) + vmovdqu 416(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rcx) + vmovdqu 448(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rcx) + vmovdqu 480(%rcx), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rcx) + leaq 3456(%rsp), %rcx + call L_poly_tomsg_1$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$131: + leaq 32(%rdx), %rax + addq $2304, %rax + movq (%rax), %rcx + movq %rcx, 64(%rsp) + movq 8(%rax), %rcx + movq %rcx, 72(%rsp) + movq 16(%rax), %rcx + movq %rcx, 80(%rsp) + movq 24(%rax), %rax + movq %rax, 88(%rsp) + movq %rdx, 17136(%rsp) + leaq 96(%rsp), %rax + leaq 32(%rsp), %rcx + leaq -248(%rsp), %rsp + call L_sha3_512_64$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$130: + leaq 248(%rsp), %rsp + movq 17136(%rsp), %rax + addq $1152, %rax + leaq 5280(%rsp), %rcx + leaq 32(%rsp), %rdi + leaq 128(%rsp), %rdx + movq %rcx, 17144(%rsp) + movq %rax, %rsi + leaq 6368(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$129: + addq $384, %rsi + leaq 6880(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$128: + addq $384, %rsi + leaq 7392(%rsp), %r8 + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$127: + movq $0, %rcx + addq $1152, %rax + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$125 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$126: + movq (%rax), %rsi + movq %rsi, (%rsp,%rcx,8) + addq $8, %rax + incq %rcx +Ljade_kem_kyber_kyber768_amd64_avx2_dec$125: + cmpq $4, %rcx + jb Ljade_kem_kyber_kyber768_amd64_avx2_dec$126 + leaq 3456(%rsp), %rax + call L_poly_frommsg_1$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$124: + movq %rdx, 17152(%rsp) + vmovdqu (%rsp), %ymm0 + vmovdqu %ymm0, 384(%rsp) + vmovdqu %ymm0, 896(%rsp) + vmovdqu %ymm0, 1408(%rsp) + vmovdqu %ymm0, 1920(%rsp) + vmovdqu %ymm0, (%rsp) + movb $0, 416(%rsp) + movb $0, 417(%rsp) + movb $0, 928(%rsp) + movb $1, 929(%rsp) + movb $0, 1440(%rsp) + movb $2, 1441(%rsp) + movb $1, 1952(%rsp) + movb $0, 1953(%rsp) + leaq 4480(%rsp), %rax + leaq 384(%rsp), %rcx + leaq 896(%rsp), %rdx + leaq 1408(%rsp), %rsi + leaq 1920(%rsp), %rdi + call L_shake128_absorb4x_34$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$123: + leaq 4480(%rsp), %rax + leaq 384(%rsp), %rdi + leaq 896(%rsp), %r8 + leaq 1408(%rsp), %r9 + leaq 1920(%rsp), %r10 + movq %rdi, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$122: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rdi), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$121: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rdi), %rdi + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$120: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rdi) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rdi) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rdi) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rdi) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rdi) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rdi) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rdi) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rdi) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rdi) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rdi) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rdi) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rdi) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rdi) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rdi) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rdi) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rdi) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rdi) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rdi) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rdi) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rdi) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rdi) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 12512(%rsp), %r11 + leaq 384(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$119: + movq %r12, %rdi + leaq 13024(%rsp), %r11 + leaq 896(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$118: + movq %r12, %r9 + leaq 13536(%rsp), %r11 + leaq 1408(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$117: + movq %r12, %r8 + leaq 14048(%rsp), %r11 + leaq 1920(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$116: + cmpq $255, %rdi + setbe %al + cmpq $255, %r9 + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$93 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$94: + leaq 4480(%rsp), %rax + leaq 384(%rsp), %r10 + leaq 896(%rsp), %r11 + leaq 1408(%rsp), %rbx + leaq 1920(%rsp), %rbp + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$115: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r10) + vmovhpd %xmm1, (%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbx) + vmovhpd %xmm0, (%rbp) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r10) + vmovhpd %xmm1, 8(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbx) + vmovhpd %xmm0, 8(%rbp) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r10) + vmovhpd %xmm1, 16(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbx) + vmovhpd %xmm0, 16(%rbp) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r10) + vmovhpd %xmm1, 24(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbx) + vmovhpd %xmm0, 24(%rbp) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r10) + vmovhpd %xmm1, 32(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbx) + vmovhpd %xmm0, 32(%rbp) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r10) + vmovhpd %xmm1, 40(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbx) + vmovhpd %xmm0, 40(%rbp) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r10) + vmovhpd %xmm1, 48(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbx) + vmovhpd %xmm0, 48(%rbp) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r10) + vmovhpd %xmm1, 56(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbx) + vmovhpd %xmm0, 56(%rbp) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r10) + vmovhpd %xmm1, 64(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbx) + vmovhpd %xmm0, 64(%rbp) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r10) + vmovhpd %xmm1, 72(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbx) + vmovhpd %xmm0, 72(%rbp) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r10) + vmovhpd %xmm1, 80(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbx) + vmovhpd %xmm0, 80(%rbp) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r10) + vmovhpd %xmm1, 88(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbx) + vmovhpd %xmm0, 88(%rbp) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r10) + vmovhpd %xmm1, 96(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbx) + vmovhpd %xmm0, 96(%rbp) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r10) + vmovhpd %xmm1, 104(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbx) + vmovhpd %xmm0, 104(%rbp) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r10) + vmovhpd %xmm1, 112(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbx) + vmovhpd %xmm0, 112(%rbp) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r10) + vmovhpd %xmm1, 120(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbx) + vmovhpd %xmm0, 120(%rbp) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r10) + vmovhpd %xmm1, 128(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbx) + vmovhpd %xmm0, 128(%rbp) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r10) + vmovhpd %xmm1, 136(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbx) + vmovhpd %xmm0, 136(%rbp) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r10) + vmovhpd %xmm1, 144(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbx) + vmovhpd %xmm0, 144(%rbp) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r10) + vmovhpd %xmm1, 152(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbx) + vmovhpd %xmm0, 152(%rbp) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r10) + vmovhpd %xmm1, 160(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbx) + vmovhpd %xmm0, 160(%rbp) + leaq 12512(%rsp), %rax + leaq 384(%rsp), %rcx + movq $0, %rdx + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$110 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$111: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$114 + movw %si, (%rax,%rdi,2) + incq %rdi +Ljade_kem_kyber_kyber768_amd64_avx2_dec$114: + cmpq $256, %rdi + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$112 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$112 + movw %r11w, (%rax,%rdi,2) + incq %rdi +Ljade_kem_kyber_kyber768_amd64_avx2_dec$113: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$112: + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$110: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$111 + leaq 13024(%rsp), %rax + leaq 896(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$105 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$106: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$109 + movw %si, (%rax,%r9,2) + incq %r9 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$109: + cmpq $256, %r9 + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$107 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$107 + movw %r11w, (%rax,%r9,2) + incq %r9 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$108: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$107: + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$105: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$106 + leaq 13536(%rsp), %rax + leaq 1408(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$100 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$101: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$104 + movw %si, (%rax,%r8,2) + incq %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$104: + cmpq $256, %r8 + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$102 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$102 + movw %r11w, (%rax,%r8,2) + incq %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$103: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$102: + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$100: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$101 + leaq 14048(%rsp), %rax + leaq 1920(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$95 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$96: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$99 + movw %si, (%rax,%r12,2) + incq %r12 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$99: + cmpq $256, %r12 + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$97 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$97 + movw %r11w, (%rax,%r12,2) + incq %r12 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$98: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$97: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$95: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$96 + cmpq $255, %rdi + setbe %al + cmpq $255, %r9 + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl +Ljade_kem_kyber_kyber768_amd64_avx2_dec$93: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$94 + vmovdqu (%rsp), %ymm0 + vmovdqu %ymm0, 384(%rsp) + vmovdqu %ymm0, 896(%rsp) + vmovdqu %ymm0, 1408(%rsp) + vmovdqu %ymm0, 1920(%rsp) + vmovdqu %ymm0, (%rsp) + movb $1, 416(%rsp) + movb $1, 417(%rsp) + movb $1, 928(%rsp) + movb $2, 929(%rsp) + movb $2, 1440(%rsp) + movb $0, 1441(%rsp) + movb $2, 1952(%rsp) + movb $1, 1953(%rsp) + leaq 4480(%rsp), %rax + leaq 384(%rsp), %rcx + leaq 896(%rsp), %rdx + leaq 1408(%rsp), %rsi + leaq 1920(%rsp), %rdi + call L_shake128_absorb4x_34$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$92: + leaq 4480(%rsp), %rax + leaq 384(%rsp), %rdi + leaq 896(%rsp), %r8 + leaq 1408(%rsp), %r9 + leaq 1920(%rsp), %r10 + movq %rdi, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$91: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rdi), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$90: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rdi), %rdi + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$89: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rdi) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rdi) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rdi) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rdi) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rdi) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rdi) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rdi) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rdi) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rdi) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rdi) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rdi) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rdi) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rdi) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rdi) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rdi) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rdi) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rdi) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rdi) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rdi) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rdi) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rdi) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 14560(%rsp), %r11 + leaq 384(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$88: + movq %r12, %rdi + leaq 15072(%rsp), %r11 + leaq 896(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$87: + movq %r12, %r8 + leaq 15584(%rsp), %r11 + leaq 1408(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$86: + movq %r12, %r9 + leaq 16096(%rsp), %r11 + leaq 1920(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$85: + cmpq $255, %rdi + setbe %al + cmpq $255, %r8 + setbe %cl + orb %cl, %al + cmpq $255, %r9 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$62 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$63: + leaq 4480(%rsp), %rax + leaq 384(%rsp), %r10 + leaq 896(%rsp), %r11 + leaq 1408(%rsp), %rbx + leaq 1920(%rsp), %rbp + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$84: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r10) + vmovhpd %xmm1, (%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbx) + vmovhpd %xmm0, (%rbp) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r10) + vmovhpd %xmm1, 8(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbx) + vmovhpd %xmm0, 8(%rbp) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r10) + vmovhpd %xmm1, 16(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbx) + vmovhpd %xmm0, 16(%rbp) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r10) + vmovhpd %xmm1, 24(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbx) + vmovhpd %xmm0, 24(%rbp) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r10) + vmovhpd %xmm1, 32(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbx) + vmovhpd %xmm0, 32(%rbp) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r10) + vmovhpd %xmm1, 40(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbx) + vmovhpd %xmm0, 40(%rbp) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r10) + vmovhpd %xmm1, 48(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbx) + vmovhpd %xmm0, 48(%rbp) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r10) + vmovhpd %xmm1, 56(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbx) + vmovhpd %xmm0, 56(%rbp) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r10) + vmovhpd %xmm1, 64(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbx) + vmovhpd %xmm0, 64(%rbp) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r10) + vmovhpd %xmm1, 72(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbx) + vmovhpd %xmm0, 72(%rbp) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r10) + vmovhpd %xmm1, 80(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbx) + vmovhpd %xmm0, 80(%rbp) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r10) + vmovhpd %xmm1, 88(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbx) + vmovhpd %xmm0, 88(%rbp) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r10) + vmovhpd %xmm1, 96(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbx) + vmovhpd %xmm0, 96(%rbp) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r10) + vmovhpd %xmm1, 104(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbx) + vmovhpd %xmm0, 104(%rbp) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r10) + vmovhpd %xmm1, 112(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbx) + vmovhpd %xmm0, 112(%rbp) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r10) + vmovhpd %xmm1, 120(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbx) + vmovhpd %xmm0, 120(%rbp) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r10) + vmovhpd %xmm1, 128(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbx) + vmovhpd %xmm0, 128(%rbp) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r10) + vmovhpd %xmm1, 136(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbx) + vmovhpd %xmm0, 136(%rbp) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r10) + vmovhpd %xmm1, 144(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbx) + vmovhpd %xmm0, 144(%rbp) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r10) + vmovhpd %xmm1, 152(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbx) + vmovhpd %xmm0, 152(%rbp) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r10) + vmovhpd %xmm1, 160(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbx) + vmovhpd %xmm0, 160(%rbp) + leaq 14560(%rsp), %rax + leaq 384(%rsp), %rcx + movq $0, %rdx + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$79 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$80: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$83 + movw %si, (%rax,%rdi,2) + incq %rdi +Ljade_kem_kyber_kyber768_amd64_avx2_dec$83: + cmpq $256, %rdi + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$81 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$81 + movw %r11w, (%rax,%rdi,2) + incq %rdi +Ljade_kem_kyber_kyber768_amd64_avx2_dec$82: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$81: + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$79: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$80 + leaq 15072(%rsp), %rax + leaq 896(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$74 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$75: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$78 + movw %si, (%rax,%r8,2) + incq %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$78: + cmpq $256, %r8 + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$76 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$76 + movw %r11w, (%rax,%r8,2) + incq %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$77: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$76: + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$74: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$75 + leaq 15584(%rsp), %rax + leaq 1408(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$69 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$70: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$73 + movw %si, (%rax,%r9,2) + incq %r9 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$73: + cmpq $256, %r9 + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$71 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$71 + movw %r11w, (%rax,%r9,2) + incq %r9 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$72: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$71: + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$69: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$70 + leaq 16096(%rsp), %rax + leaq 1920(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$64 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$65: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$68 + movw %si, (%rax,%r12,2) + incq %r12 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$68: + cmpq $256, %r12 + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$66 + cmpw $3329, %r11w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$66 + movw %r11w, (%rax,%r12,2) + incq %r12 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$67: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$66: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$64: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$65 + cmpq $255, %rdi + setbe %al + cmpq $255, %r8 + setbe %cl + orb %cl, %al + cmpq $255, %r9 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl +Ljade_kem_kyber_kyber768_amd64_avx2_dec$62: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$63 + vmovdqu (%rsp), %ymm0 + vmovdqu %ymm0, 384(%rsp) + movb $2, 416(%rsp) + movb $2, 417(%rsp) + leaq 384(%rsp), %rax + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm0, 256(%rsp) + vmovdqu %ymm0, 288(%rsp) + vmovdqu %ymm0, 320(%rsp) + vmovdqu %ymm0, 352(%rsp) + vpbroadcastq (%rax), %ymm5 + movq 8(%rax), %rcx + movq glob_data + 6208(%rip), %rdx + movq %rcx, 160(%rsp,%rdx,8) + movq 16(%rax), %rcx + movq glob_data + 6216(%rip), %rdx + movq %rcx, 160(%rsp,%rdx,8) + movq 24(%rax), %rcx + movq glob_data + 6224(%rip), %rdx + movq %rcx, 160(%rsp,%rdx,8) + movb 32(%rax), %cl + movq glob_data + 6232(%rip), %rdx + shlq $3, %rdx + movb %cl, 160(%rsp,%rdx) + movb 33(%rax), %al + incq %rdx + movb %al, 160(%rsp,%rdx) + incq %rdx + movb $31, 160(%rsp,%rdx) + movq glob_data + 6360(%rip), %rax + shlq $3, %rax + movq $167, %rcx + andq $7, %rcx + addq %rcx, %rax + movb $-128, 160(%rsp,%rax) + vmovdqu 192(%rsp), %ymm0 + vmovdqu 224(%rsp), %ymm1 + vmovdqu 256(%rsp), %ymm2 + vmovdqu 288(%rsp), %ymm6 + vmovdqu 320(%rsp), %ymm3 + vmovdqu 352(%rsp), %ymm4 + leaq 384(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$61: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$61 + vmovdqu %ymm5, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm1, 224(%rsp) + vmovdqu %ymm2, 256(%rsp) + vmovdqu %ymm6, 288(%rsp) + vmovdqu %ymm3, 320(%rsp) + vmovdqu %ymm4, 352(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 552(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$60: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$60 + vmovdqu %ymm5, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm1, 224(%rsp) + vmovdqu %ymm2, 256(%rsp) + vmovdqu %ymm6, 288(%rsp) + vmovdqu %ymm3, 320(%rsp) + vmovdqu %ymm4, 352(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 720(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$59: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$59 + vmovdqu %ymm5, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm1, 224(%rsp) + vmovdqu %ymm2, 256(%rsp) + vmovdqu %ymm6, 288(%rsp) + vmovdqu %ymm3, 320(%rsp) + vmovdqu %ymm4, 352(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + vmovdqu %ymm5, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm1, 224(%rsp) + vmovdqu %ymm2, 256(%rsp) + vmovdqu %ymm6, 288(%rsp) + vmovdqu %ymm3, 320(%rsp) + vmovdqu %ymm4, 352(%rsp) + leaq 16608(%rsp), %r11 + leaq 384(%rsp), %rbx + call L_rej_uniform_avx$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$58: + cmpq $255, %r12 + setbe %al + vmovdqu 160(%rsp), %ymm6 + vmovdqu 192(%rsp), %ymm0 + vmovdqu 224(%rsp), %ymm1 + vmovdqu 256(%rsp), %ymm2 + vmovdqu 288(%rsp), %ymm3 + vmovdqu 320(%rsp), %ymm4 + vmovdqu 352(%rsp), %ymm5 + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$50 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$51: + leaq 384(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$57: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$57 + vmovdqu %ymm6, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm1, 224(%rsp) + vmovdqu %ymm2, 256(%rsp) + vmovdqu %ymm3, 288(%rsp) + vmovdqu %ymm4, 320(%rsp) + vmovdqu %ymm5, 352(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 160(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 16608(%rsp), %rax + leaq 384(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %dil + testb %dil, %sil + jmp Ljade_kem_kyber_kyber768_amd64_avx2_dec$52 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$53: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw (%rcx,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$56 + movw %si, (%rax,%r12,2) + incq %r12 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$56: + cmpq $256, %r12 + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$54 + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_avx2_dec$54 + movw %r8w, (%rax,%r12,2) + incq %r12 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$55: +Ljade_kem_kyber_kyber768_amd64_avx2_dec$54: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %dil + testb %dil, %sil +Ljade_kem_kyber_kyber768_amd64_avx2_dec$52: + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$53 + cmpq $255, %r12 + setbe %al +Ljade_kem_kyber_kyber768_amd64_avx2_dec$50: + cmpb $0, %al + jne Ljade_kem_kyber_kyber768_amd64_avx2_dec$51 + leaq 12512(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$49: + leaq 13024(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$48: + leaq 13536(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$47: + leaq 14048(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$46: + leaq 14560(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$45: + leaq 15072(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$44: + leaq 15584(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$43: + leaq 16096(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$42: + leaq 16608(%rsp), %rax + call L_nttunpack$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$41: + movq 17152(%rsp), %r10 + movb $0, %cl + leaq 9440(%rsp), %rax + leaq 9952(%rsp), %rdi + leaq 10464(%rsp), %r8 + leaq 7904(%rsp), %r9 + leaq -1496(%rsp), %rsp + call L_poly_getnoise_eta1_4x$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$40: + leaq 1496(%rsp), %rsp + movb $4, %cl + leaq 8416(%rsp), %rax + leaq 8928(%rsp), %rdi + leaq 2944(%rsp), %r8 + leaq 10976(%rsp), %r9 + leaq -1496(%rsp), %rsp + call L_poly_getnoise_eta1_4x$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$39: + leaq 1496(%rsp), %rsp + leaq 9440(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$38: + leaq 9952(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$37: + leaq 10464(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$36: + leaq 10976(%rsp), %rcx + leaq 12512(%rsp), %rsi + leaq 9440(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$35: + leaq 2432(%rsp), %rcx + leaq 13024(%rsp), %rsi + leaq 9952(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$34: + leaq 10976(%rsp), %rcx + leaq 2432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$33: + leaq 2432(%rsp), %rcx + leaq 13536(%rsp), %rsi + leaq 10464(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$32: + leaq 10976(%rsp), %rcx + leaq 2432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$31: + leaq 11488(%rsp), %rcx + leaq 14048(%rsp), %rsi + leaq 9440(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$30: + leaq 2432(%rsp), %rcx + leaq 14560(%rsp), %rsi + leaq 9952(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$29: + leaq 11488(%rsp), %rcx + leaq 2432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$28: + leaq 2432(%rsp), %rcx + leaq 15072(%rsp), %rsi + leaq 10464(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$27: + leaq 11488(%rsp), %rcx + leaq 2432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$26: + leaq 12000(%rsp), %rcx + leaq 15584(%rsp), %rsi + leaq 9440(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$25: + leaq 2432(%rsp), %rcx + leaq 16096(%rsp), %rsi + leaq 9952(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$24: + leaq 12000(%rsp), %rcx + leaq 2432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$23: + leaq 2432(%rsp), %rcx + leaq 16608(%rsp), %rsi + leaq 10464(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$22: + leaq 12000(%rsp), %rcx + leaq 2432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$21: + leaq 2432(%rsp), %rcx + leaq 6368(%rsp), %rsi + leaq 9440(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$20: + leaq 3968(%rsp), %rcx + leaq 6880(%rsp), %rsi + leaq 9952(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$19: + leaq 2432(%rsp), %rcx + leaq 3968(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$18: + leaq 3968(%rsp), %rcx + leaq 7392(%rsp), %rsi + leaq 10464(%rsp), %rdi + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$17: + leaq 2432(%rsp), %rcx + leaq 3968(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$16: + leaq 10976(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$15: + leaq 11488(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$14: + leaq 12000(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$13: + leaq 2432(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$12: + leaq 10976(%rsp), %rcx + leaq 7904(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$11: + leaq 11488(%rsp), %rcx + leaq 8416(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$10: + leaq 12000(%rsp), %rcx + leaq 8928(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$9: + leaq 2432(%rsp), %rcx + leaq 2944(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$8: + leaq 2432(%rsp), %rcx + leaq 3456(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$7: + leaq 10976(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 11488(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 12000(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 2432(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + movq 17144(%rsp), %rax + movq %rax, %rdx + leaq 10976(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$6: + leaq 11488(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$5: + leaq 12000(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$4: + leaq glob_data + 384(%rip), %rcx + vmovdqu (%rcx), %ymm0 + vpsllw $3, %ymm0, %ymm1 + vpbroadcastw glob_data + 6422(%rip), %ymm2 + vpbroadcastw glob_data + 6420(%rip), %ymm3 + vpbroadcastw glob_data + 6418(%rip), %ymm4 + vpbroadcastq glob_data + 6184(%rip), %ymm5 + vpbroadcastq glob_data + 6176(%rip), %ymm6 + vmovdqu glob_data + 32(%rip), %ymm7 + vmovdqu 10976(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, (%rdx) + vpextrd $0, %xmm8, 16(%rdx) + vmovdqu 11008(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 20(%rdx) + vpextrd $0, %xmm8, 36(%rdx) + vmovdqu 11040(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 40(%rdx) + vpextrd $0, %xmm8, 56(%rdx) + vmovdqu 11072(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 60(%rdx) + vpextrd $0, %xmm8, 76(%rdx) + vmovdqu 11104(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 80(%rdx) + vpextrd $0, %xmm8, 96(%rdx) + vmovdqu 11136(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 100(%rdx) + vpextrd $0, %xmm8, 116(%rdx) + vmovdqu 11168(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 120(%rdx) + vpextrd $0, %xmm8, 136(%rdx) + vmovdqu 11200(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 140(%rdx) + vpextrd $0, %xmm8, 156(%rdx) + vmovdqu 11232(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 160(%rdx) + vpextrd $0, %xmm8, 176(%rdx) + vmovdqu 11264(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 180(%rdx) + vpextrd $0, %xmm8, 196(%rdx) + vmovdqu 11296(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 200(%rdx) + vpextrd $0, %xmm8, 216(%rdx) + vmovdqu 11328(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 220(%rdx) + vpextrd $0, %xmm8, 236(%rdx) + vmovdqu 11360(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 240(%rdx) + vpextrd $0, %xmm8, 256(%rdx) + vmovdqu 11392(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 260(%rdx) + vpextrd $0, %xmm8, 276(%rdx) + vmovdqu 11424(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 280(%rdx) + vpextrd $0, %xmm8, 296(%rdx) + vmovdqu 11456(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 300(%rdx) + vpextrd $0, %xmm8, 316(%rdx) + vmovdqu 11488(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 320(%rdx) + vpextrd $0, %xmm8, 336(%rdx) + vmovdqu 11520(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 340(%rdx) + vpextrd $0, %xmm8, 356(%rdx) + vmovdqu 11552(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 360(%rdx) + vpextrd $0, %xmm8, 376(%rdx) + vmovdqu 11584(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 380(%rdx) + vpextrd $0, %xmm8, 396(%rdx) + vmovdqu 11616(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 400(%rdx) + vpextrd $0, %xmm8, 416(%rdx) + vmovdqu 11648(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 420(%rdx) + vpextrd $0, %xmm8, 436(%rdx) + vmovdqu 11680(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 440(%rdx) + vpextrd $0, %xmm8, 456(%rdx) + vmovdqu 11712(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 460(%rdx) + vpextrd $0, %xmm8, 476(%rdx) + vmovdqu 11744(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 480(%rdx) + vpextrd $0, %xmm8, 496(%rdx) + vmovdqu 11776(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 500(%rdx) + vpextrd $0, %xmm8, 516(%rdx) + vmovdqu 11808(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 520(%rdx) + vpextrd $0, %xmm8, 536(%rdx) + vmovdqu 11840(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 540(%rdx) + vpextrd $0, %xmm8, 556(%rdx) + vmovdqu 11872(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 560(%rdx) + vpextrd $0, %xmm8, 576(%rdx) + vmovdqu 11904(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 580(%rdx) + vpextrd $0, %xmm8, 596(%rdx) + vmovdqu 11936(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 600(%rdx) + vpextrd $0, %xmm8, 616(%rdx) + vmovdqu 11968(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 620(%rdx) + vpextrd $0, %xmm8, 636(%rdx) + vmovdqu 12000(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 640(%rdx) + vpextrd $0, %xmm8, 656(%rdx) + vmovdqu 12032(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 660(%rdx) + vpextrd $0, %xmm8, 676(%rdx) + vmovdqu 12064(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 680(%rdx) + vpextrd $0, %xmm8, 696(%rdx) + vmovdqu 12096(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 700(%rdx) + vpextrd $0, %xmm8, 716(%rdx) + vmovdqu 12128(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 720(%rdx) + vpextrd $0, %xmm8, 736(%rdx) + vmovdqu 12160(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 740(%rdx) + vpextrd $0, %xmm8, 756(%rdx) + vmovdqu 12192(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 760(%rdx) + vpextrd $0, %xmm8, 776(%rdx) + vmovdqu 12224(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 780(%rdx) + vpextrd $0, %xmm8, 796(%rdx) + vmovdqu 12256(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 800(%rdx) + vpextrd $0, %xmm8, 816(%rdx) + vmovdqu 12288(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 820(%rdx) + vpextrd $0, %xmm8, 836(%rdx) + vmovdqu 12320(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 840(%rdx) + vpextrd $0, %xmm8, 856(%rdx) + vmovdqu 12352(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 860(%rdx) + vpextrd $0, %xmm8, 876(%rdx) + vmovdqu 12384(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 880(%rdx) + vpextrd $0, %xmm8, 896(%rdx) + vmovdqu 12416(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 900(%rdx) + vpextrd $0, %xmm8, 916(%rdx) + vmovdqu 12448(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 920(%rdx) + vpextrd $0, %xmm8, 936(%rdx) + vmovdqu 12480(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm1 + vpaddw %ymm2, %ymm8, %ymm2 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm0 + vpsubw %ymm2, %ymm1, %ymm2 + vpandn %ymm2, %ymm1, %ymm1 + vpsrlw $15, %ymm1, %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vpmulhrsw %ymm3, %ymm0, %ymm0 + vpand %ymm4, %ymm0, %ymm0 + vpmaddwd %ymm5, %ymm0, %ymm0 + vpsllvd %ymm6, %ymm0, %ymm0 + vpsrlq $12, %ymm0, %ymm0 + vpshufb %ymm7, %ymm0, %ymm0 + vmovdqu %xmm0, %xmm1 + vextracti128 $1, %ymm0, %xmm0 + vpblendw $-32, %xmm0, %xmm1, %xmm1 + vmovdqu %xmm1, 940(%rdx) + vpextrd $0, %xmm0, 956(%rdx) + leaq 960(%rax), %rax + leaq 2432(%rsp), %rcx + call L_poly_compress_1$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$3: + movq 17128(%rsp), %r8 + leaq 5280(%rsp), %rax + movq $0, %rcx + movq $1, %rdx + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu (%rax), %ymm1 + vmovdqu (%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 32(%rax), %ymm1 + vmovdqu 32(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 64(%rax), %ymm1 + vmovdqu 64(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 96(%rax), %ymm1 + vmovdqu 96(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 128(%rax), %ymm1 + vmovdqu 128(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 160(%rax), %ymm1 + vmovdqu 160(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 192(%rax), %ymm1 + vmovdqu 192(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 224(%rax), %ymm1 + vmovdqu 224(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 256(%rax), %ymm1 + vmovdqu 256(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 288(%rax), %ymm1 + vmovdqu 288(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 320(%rax), %ymm1 + vmovdqu 320(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 352(%rax), %ymm1 + vmovdqu 352(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 384(%rax), %ymm1 + vmovdqu 384(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 416(%rax), %ymm1 + vmovdqu 416(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 448(%rax), %ymm1 + vmovdqu 448(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 480(%rax), %ymm1 + vmovdqu 480(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 512(%rax), %ymm1 + vmovdqu 512(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 544(%rax), %ymm1 + vmovdqu 544(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 576(%rax), %ymm1 + vmovdqu 576(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 608(%rax), %ymm1 + vmovdqu 608(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 640(%rax), %ymm1 + vmovdqu 640(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 672(%rax), %ymm1 + vmovdqu 672(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 704(%rax), %ymm1 + vmovdqu 704(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 736(%rax), %ymm1 + vmovdqu 736(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 768(%rax), %ymm1 + vmovdqu 768(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 800(%rax), %ymm1 + vmovdqu 800(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 832(%rax), %ymm1 + vmovdqu 832(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 864(%rax), %ymm1 + vmovdqu 864(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 896(%rax), %ymm1 + vmovdqu 896(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 928(%rax), %ymm1 + vmovdqu 928(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 960(%rax), %ymm1 + vmovdqu 960(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 992(%rax), %ymm1 + vmovdqu 992(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 1024(%rax), %ymm1 + vmovdqu 1024(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vmovdqu 1056(%rax), %ymm1 + vmovdqu 1056(%r8), %ymm2 + vpxor %ymm2, %ymm1, %ymm1 + vpor %ymm1, %ymm0, %ymm0 + vptest %ymm0, %ymm0 + cmovne %rdx, %rcx + negq %rcx + shrq $63, %rcx + movq 17136(%rsp), %rax + addq $64, %rax + addq $2304, %rax + leaq 96(%rsp), %rdx + negq %rcx + movq %rcx, 17136(%rsp) + vpbroadcastq 17136(%rsp), %ymm0 + vmovdqu (%rdx), %ymm1 + vmovdqu (%rax), %ymm2 + vpblendvb %ymm0, %ymm2, %ymm1, %ymm0 + vmovdqu %ymm0, (%rdx) + movq $1088, %rdi + leaq 128(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$2: + leaq 248(%rsp), %rsp + movq 17120(%rsp), %rdx + movq $32, %rcx + leaq 96(%rsp), %rax + leaq -248(%rsp), %rsp + call L_shake256_64$1 +Ljade_kem_kyber_kyber768_amd64_avx2_dec$1: + leaq 248(%rsp), %rsp + xorq %rax, %rax + movq 17160(%rsp), %r12 + movq 17168(%rsp), %rbp + movq 17176(%rsp), %rbx + movq 17184(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_avx2_enc: +jade_kem_kyber_kyber768_amd64_avx2_enc: + movq %rsp, %rax + leaq -64(%rsp), %rsp + andq $-32, %rsp + movq %rax, 56(%rsp) + movq %r12, 32(%rsp) + movq %rbp, 40(%rsp) + movq %rbx, 48(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rdx, %r12 + movq %rsp, %rdi + movq $32, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rcx + leaq -16088(%rsp), %rsp + call L__crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_avx2_enc$1: + leaq 16088(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r12 + movq 40(%rsp), %rbp + movq 48(%rsp), %rbx + movq 56(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_avx2_enc_derand: +jade_kem_kyber_kyber768_amd64_avx2_enc_derand: + movq %rsp, %rax + leaq -64(%rsp), %rsp + andq $-32, %rsp + movq %rax, 56(%rsp) + movq %r12, 32(%rsp) + movq %rbp, 40(%rsp) + movq %rbx, 48(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rdx, %r12 + movq %rsp, %rax + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %cl + movb %cl, 31(%rax) + movq %rsp, %rcx + leaq -16088(%rsp), %rsp + call L__crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_avx2_enc_derand$1: + leaq 16088(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r12 + movq 40(%rsp), %rbp + movq 48(%rsp), %rbx + movq 56(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_avx2_keypair: +jade_kem_kyber_kyber768_amd64_avx2_keypair: + movq %rsp, %rax + leaq -96(%rsp), %rsp + andq $-32, %rsp + movq %rax, 88(%rsp) + movq %r12, 64(%rsp) + movq %rbp, 72(%rsp) + movq %rbx, 80(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rdi + movq $64, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rax + leaq -13048(%rsp), %rsp + call L__crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_avx2_keypair$1: + leaq 13048(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r12 + movq 72(%rsp), %rbp + movq 80(%rsp), %rbx + movq 88(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_avx2_keypair_derand: +jade_kem_kyber_kyber768_amd64_avx2_keypair_derand: + movq %rsp, %rax + leaq -96(%rsp), %rsp + andq $-32, %rsp + movq %rax, 88(%rsp) + movq %r12, 64(%rsp) + movq %rbp, 72(%rsp) + movq %rbx, 80(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rax + movb (%rdx), %cl + movb %cl, (%rax) + movb 1(%rdx), %cl + movb %cl, 1(%rax) + movb 2(%rdx), %cl + movb %cl, 2(%rax) + movb 3(%rdx), %cl + movb %cl, 3(%rax) + movb 4(%rdx), %cl + movb %cl, 4(%rax) + movb 5(%rdx), %cl + movb %cl, 5(%rax) + movb 6(%rdx), %cl + movb %cl, 6(%rax) + movb 7(%rdx), %cl + movb %cl, 7(%rax) + movb 8(%rdx), %cl + movb %cl, 8(%rax) + movb 9(%rdx), %cl + movb %cl, 9(%rax) + movb 10(%rdx), %cl + movb %cl, 10(%rax) + movb 11(%rdx), %cl + movb %cl, 11(%rax) + movb 12(%rdx), %cl + movb %cl, 12(%rax) + movb 13(%rdx), %cl + movb %cl, 13(%rax) + movb 14(%rdx), %cl + movb %cl, 14(%rax) + movb 15(%rdx), %cl + movb %cl, 15(%rax) + movb 16(%rdx), %cl + movb %cl, 16(%rax) + movb 17(%rdx), %cl + movb %cl, 17(%rax) + movb 18(%rdx), %cl + movb %cl, 18(%rax) + movb 19(%rdx), %cl + movb %cl, 19(%rax) + movb 20(%rdx), %cl + movb %cl, 20(%rax) + movb 21(%rdx), %cl + movb %cl, 21(%rax) + movb 22(%rdx), %cl + movb %cl, 22(%rax) + movb 23(%rdx), %cl + movb %cl, 23(%rax) + movb 24(%rdx), %cl + movb %cl, 24(%rax) + movb 25(%rdx), %cl + movb %cl, 25(%rax) + movb 26(%rdx), %cl + movb %cl, 26(%rax) + movb 27(%rdx), %cl + movb %cl, 27(%rax) + movb 28(%rdx), %cl + movb %cl, 28(%rax) + movb 29(%rdx), %cl + movb %cl, 29(%rax) + movb 30(%rdx), %cl + movb %cl, 30(%rax) + movb 31(%rdx), %cl + movb %cl, 31(%rax) + movb 32(%rdx), %cl + movb %cl, 32(%rax) + movb 33(%rdx), %cl + movb %cl, 33(%rax) + movb 34(%rdx), %cl + movb %cl, 34(%rax) + movb 35(%rdx), %cl + movb %cl, 35(%rax) + movb 36(%rdx), %cl + movb %cl, 36(%rax) + movb 37(%rdx), %cl + movb %cl, 37(%rax) + movb 38(%rdx), %cl + movb %cl, 38(%rax) + movb 39(%rdx), %cl + movb %cl, 39(%rax) + movb 40(%rdx), %cl + movb %cl, 40(%rax) + movb 41(%rdx), %cl + movb %cl, 41(%rax) + movb 42(%rdx), %cl + movb %cl, 42(%rax) + movb 43(%rdx), %cl + movb %cl, 43(%rax) + movb 44(%rdx), %cl + movb %cl, 44(%rax) + movb 45(%rdx), %cl + movb %cl, 45(%rax) + movb 46(%rdx), %cl + movb %cl, 46(%rax) + movb 47(%rdx), %cl + movb %cl, 47(%rax) + movb 48(%rdx), %cl + movb %cl, 48(%rax) + movb 49(%rdx), %cl + movb %cl, 49(%rax) + movb 50(%rdx), %cl + movb %cl, 50(%rax) + movb 51(%rdx), %cl + movb %cl, 51(%rax) + movb 52(%rdx), %cl + movb %cl, 52(%rax) + movb 53(%rdx), %cl + movb %cl, 53(%rax) + movb 54(%rdx), %cl + movb %cl, 54(%rax) + movb 55(%rdx), %cl + movb %cl, 55(%rax) + movb 56(%rdx), %cl + movb %cl, 56(%rax) + movb 57(%rdx), %cl + movb %cl, 57(%rax) + movb 58(%rdx), %cl + movb %cl, 58(%rax) + movb 59(%rdx), %cl + movb %cl, 59(%rax) + movb 60(%rdx), %cl + movb %cl, 60(%rax) + movb 61(%rdx), %cl + movb %cl, 61(%rax) + movb 62(%rdx), %cl + movb %cl, 62(%rax) + movb 63(%rdx), %cl + movb %cl, 63(%rax) + movq %rsp, %rax + leaq -13048(%rsp), %rsp + call L__crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_avx2_keypair_derand$1: + leaq 13048(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r12 + movq 72(%rsp), %rbp + movq 80(%rsp), %rbx + movq 88(%rsp), %rsp + ret +L__crypto_kem_enc_derand_jazz$1: + movq %r12, 16064(%rsp) + movq %rbx, 16072(%rsp) + movq %rbp, 16080(%rsp) + leaq 64(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256_32$1 +L__crypto_kem_enc_derand_jazz$133: + leaq 248(%rsp), %rsp + movq 16064(%rsp), %r8 + movq $1184, %rdi + leaq 96(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_enc_derand_jazz$132: + leaq 248(%rsp), %rsp + leaq 128(%rsp), %rax + leaq 64(%rsp), %rcx + leaq -248(%rsp), %rsp + call L_sha3_512_64$1 +L__crypto_kem_enc_derand_jazz$131: + leaq 248(%rsp), %rsp + movq 16064(%rsp), %rax + leaq 64(%rsp), %rdi + leaq 160(%rsp), %rcx + movq %rax, %rsi + leaq 5312(%rsp), %r8 + call L_poly_frombytes$1 +L__crypto_kem_enc_derand_jazz$130: + addq $384, %rsi + leaq 5824(%rsp), %r8 + call L_poly_frombytes$1 +L__crypto_kem_enc_derand_jazz$129: + addq $384, %rsi + leaq 6336(%rsp), %r8 + call L_poly_frombytes$1 +L__crypto_kem_enc_derand_jazz$128: + movq $0, %rdx + addq $1152, %rax + jmp L__crypto_kem_enc_derand_jazz$126 +L__crypto_kem_enc_derand_jazz$127: + movq (%rax), %rsi + movq %rsi, 32(%rsp,%rdx,8) + addq $8, %rax + incq %rdx +L__crypto_kem_enc_derand_jazz$126: + cmpq $4, %rdx + jb L__crypto_kem_enc_derand_jazz$127 + leaq 2464(%rsp), %rax + call L_poly_frommsg_1$1 +L__crypto_kem_enc_derand_jazz$125: + movq %rcx, 16064(%rsp) + vmovdqu 32(%rsp), %ymm0 + vmovdqu %ymm0, 416(%rsp) + vmovdqu %ymm0, 928(%rsp) + vmovdqu %ymm0, 1440(%rsp) + vmovdqu %ymm0, 1952(%rsp) + vmovdqu %ymm0, 32(%rsp) + movb $0, 448(%rsp) + movb $0, 449(%rsp) + movb $0, 960(%rsp) + movb $1, 961(%rsp) + movb $0, 1472(%rsp) + movb $2, 1473(%rsp) + movb $1, 1984(%rsp) + movb $0, 1985(%rsp) + leaq 4512(%rsp), %rax + leaq 416(%rsp), %rcx + leaq 928(%rsp), %rdx + leaq 1440(%rsp), %rsi + leaq 1952(%rsp), %rdi + call L_shake128_absorb4x_34$1 +L__crypto_kem_enc_derand_jazz$124: + leaq 4512(%rsp), %rax + leaq 416(%rsp), %rdi + leaq 928(%rsp), %r8 + leaq 1440(%rsp), %r9 + leaq 1952(%rsp), %r10 + movq %rdi, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$123: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rdi), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$122: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rdi), %rdi + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$121: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rdi) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rdi) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rdi) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rdi) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rdi) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rdi) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rdi) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rdi) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rdi) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rdi) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rdi) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rdi) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rdi) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rdi) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rdi) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rdi) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rdi) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rdi) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rdi) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rdi) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rdi) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 11456(%rsp), %r11 + leaq 416(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$120: + movq %r12, %r9 + leaq 11968(%rsp), %r11 + leaq 928(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$119: + movq %r12, %rdi + leaq 12480(%rsp), %r11 + leaq 1440(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$118: + movq %r12, %r8 + leaq 12992(%rsp), %r11 + leaq 1952(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$117: + cmpq $255, %r9 + setbe %al + cmpq $255, %rdi + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl + jmp L__crypto_kem_enc_derand_jazz$94 +L__crypto_kem_enc_derand_jazz$95: + leaq 4512(%rsp), %rax + leaq 416(%rsp), %r10 + leaq 928(%rsp), %r11 + leaq 1440(%rsp), %rbx + leaq 1952(%rsp), %rbp + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$116: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r10) + vmovhpd %xmm1, (%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbx) + vmovhpd %xmm0, (%rbp) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r10) + vmovhpd %xmm1, 8(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbx) + vmovhpd %xmm0, 8(%rbp) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r10) + vmovhpd %xmm1, 16(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbx) + vmovhpd %xmm0, 16(%rbp) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r10) + vmovhpd %xmm1, 24(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbx) + vmovhpd %xmm0, 24(%rbp) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r10) + vmovhpd %xmm1, 32(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbx) + vmovhpd %xmm0, 32(%rbp) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r10) + vmovhpd %xmm1, 40(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbx) + vmovhpd %xmm0, 40(%rbp) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r10) + vmovhpd %xmm1, 48(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbx) + vmovhpd %xmm0, 48(%rbp) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r10) + vmovhpd %xmm1, 56(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbx) + vmovhpd %xmm0, 56(%rbp) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r10) + vmovhpd %xmm1, 64(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbx) + vmovhpd %xmm0, 64(%rbp) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r10) + vmovhpd %xmm1, 72(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbx) + vmovhpd %xmm0, 72(%rbp) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r10) + vmovhpd %xmm1, 80(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbx) + vmovhpd %xmm0, 80(%rbp) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r10) + vmovhpd %xmm1, 88(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbx) + vmovhpd %xmm0, 88(%rbp) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r10) + vmovhpd %xmm1, 96(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbx) + vmovhpd %xmm0, 96(%rbp) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r10) + vmovhpd %xmm1, 104(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbx) + vmovhpd %xmm0, 104(%rbp) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r10) + vmovhpd %xmm1, 112(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbx) + vmovhpd %xmm0, 112(%rbp) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r10) + vmovhpd %xmm1, 120(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbx) + vmovhpd %xmm0, 120(%rbp) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r10) + vmovhpd %xmm1, 128(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbx) + vmovhpd %xmm0, 128(%rbp) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r10) + vmovhpd %xmm1, 136(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbx) + vmovhpd %xmm0, 136(%rbp) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r10) + vmovhpd %xmm1, 144(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbx) + vmovhpd %xmm0, 144(%rbp) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r10) + vmovhpd %xmm1, 152(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbx) + vmovhpd %xmm0, 152(%rbp) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r10) + vmovhpd %xmm1, 160(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbx) + vmovhpd %xmm0, 160(%rbp) + leaq 11456(%rsp), %rax + leaq 416(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$111 +L__crypto_kem_enc_derand_jazz$112: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$115 + movw %si, (%rax,%r9,2) + incq %r9 +L__crypto_kem_enc_derand_jazz$115: + cmpq $256, %r9 + jnb L__crypto_kem_enc_derand_jazz$113 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$113 + movw %r11w, (%rax,%r9,2) + incq %r9 +L__crypto_kem_enc_derand_jazz$114: +L__crypto_kem_enc_derand_jazz$113: + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$111: + jne L__crypto_kem_enc_derand_jazz$112 + leaq 11968(%rsp), %rax + leaq 928(%rsp), %rcx + movq $0, %rdx + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$106 +L__crypto_kem_enc_derand_jazz$107: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$110 + movw %si, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_enc_derand_jazz$110: + cmpq $256, %rdi + jnb L__crypto_kem_enc_derand_jazz$108 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$108 + movw %r11w, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_enc_derand_jazz$109: +L__crypto_kem_enc_derand_jazz$108: + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$106: + jne L__crypto_kem_enc_derand_jazz$107 + leaq 12480(%rsp), %rax + leaq 1440(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$101 +L__crypto_kem_enc_derand_jazz$102: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$105 + movw %si, (%rax,%r8,2) + incq %r8 +L__crypto_kem_enc_derand_jazz$105: + cmpq $256, %r8 + jnb L__crypto_kem_enc_derand_jazz$103 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$103 + movw %r11w, (%rax,%r8,2) + incq %r8 +L__crypto_kem_enc_derand_jazz$104: +L__crypto_kem_enc_derand_jazz$103: + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$101: + jne L__crypto_kem_enc_derand_jazz$102 + leaq 12992(%rsp), %rax + leaq 1952(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$96 +L__crypto_kem_enc_derand_jazz$97: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$100 + movw %si, (%rax,%r12,2) + incq %r12 +L__crypto_kem_enc_derand_jazz$100: + cmpq $256, %r12 + jnb L__crypto_kem_enc_derand_jazz$98 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$98 + movw %r11w, (%rax,%r12,2) + incq %r12 +L__crypto_kem_enc_derand_jazz$99: +L__crypto_kem_enc_derand_jazz$98: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$96: + jne L__crypto_kem_enc_derand_jazz$97 + cmpq $255, %r9 + setbe %al + cmpq $255, %rdi + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl +L__crypto_kem_enc_derand_jazz$94: + jne L__crypto_kem_enc_derand_jazz$95 + vmovdqu 32(%rsp), %ymm0 + vmovdqu %ymm0, 416(%rsp) + vmovdqu %ymm0, 928(%rsp) + vmovdqu %ymm0, 1440(%rsp) + vmovdqu %ymm0, 1952(%rsp) + vmovdqu %ymm0, 32(%rsp) + movb $1, 448(%rsp) + movb $1, 449(%rsp) + movb $1, 960(%rsp) + movb $2, 961(%rsp) + movb $2, 1472(%rsp) + movb $0, 1473(%rsp) + movb $2, 1984(%rsp) + movb $1, 1985(%rsp) + leaq 4512(%rsp), %rax + leaq 416(%rsp), %rcx + leaq 928(%rsp), %rdx + leaq 1440(%rsp), %rsi + leaq 1952(%rsp), %rdi + call L_shake128_absorb4x_34$1 +L__crypto_kem_enc_derand_jazz$93: + leaq 4512(%rsp), %rax + leaq 416(%rsp), %rdi + leaq 928(%rsp), %r8 + leaq 1440(%rsp), %r9 + leaq 1952(%rsp), %r10 + movq %rdi, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$92: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rdi), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$91: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rdi), %rdi + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$90: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rdi) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rdi) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rdi) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rdi) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rdi) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rdi) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rdi) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rdi) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rdi) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rdi) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rdi) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rdi) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rdi) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rdi) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rdi) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rdi) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rdi) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rdi) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rdi) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rdi) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rdi) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 13504(%rsp), %r11 + leaq 416(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$89: + movq %r12, %rdi + leaq 14016(%rsp), %r11 + leaq 928(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$88: + movq %r12, %r8 + leaq 14528(%rsp), %r11 + leaq 1440(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$87: + movq %r12, %r9 + leaq 15040(%rsp), %r11 + leaq 1952(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$86: + cmpq $255, %rdi + setbe %al + cmpq $255, %r8 + setbe %cl + orb %cl, %al + cmpq $255, %r9 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl + jmp L__crypto_kem_enc_derand_jazz$63 +L__crypto_kem_enc_derand_jazz$64: + leaq 4512(%rsp), %rax + leaq 416(%rsp), %r10 + leaq 928(%rsp), %r11 + leaq 1440(%rsp), %rbx + leaq 1952(%rsp), %rbp + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_enc_derand_jazz$85: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r10) + vmovhpd %xmm1, (%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbx) + vmovhpd %xmm0, (%rbp) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r10) + vmovhpd %xmm1, 8(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbx) + vmovhpd %xmm0, 8(%rbp) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r10) + vmovhpd %xmm1, 16(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbx) + vmovhpd %xmm0, 16(%rbp) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r10) + vmovhpd %xmm1, 24(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbx) + vmovhpd %xmm0, 24(%rbp) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r10) + vmovhpd %xmm1, 32(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbx) + vmovhpd %xmm0, 32(%rbp) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r10) + vmovhpd %xmm1, 40(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbx) + vmovhpd %xmm0, 40(%rbp) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r10) + vmovhpd %xmm1, 48(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbx) + vmovhpd %xmm0, 48(%rbp) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r10) + vmovhpd %xmm1, 56(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbx) + vmovhpd %xmm0, 56(%rbp) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r10) + vmovhpd %xmm1, 64(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbx) + vmovhpd %xmm0, 64(%rbp) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r10) + vmovhpd %xmm1, 72(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbx) + vmovhpd %xmm0, 72(%rbp) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r10) + vmovhpd %xmm1, 80(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbx) + vmovhpd %xmm0, 80(%rbp) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r10) + vmovhpd %xmm1, 88(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbx) + vmovhpd %xmm0, 88(%rbp) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r10) + vmovhpd %xmm1, 96(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbx) + vmovhpd %xmm0, 96(%rbp) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r10) + vmovhpd %xmm1, 104(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbx) + vmovhpd %xmm0, 104(%rbp) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r10) + vmovhpd %xmm1, 112(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbx) + vmovhpd %xmm0, 112(%rbp) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r10) + vmovhpd %xmm1, 120(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbx) + vmovhpd %xmm0, 120(%rbp) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r10) + vmovhpd %xmm1, 128(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbx) + vmovhpd %xmm0, 128(%rbp) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r10) + vmovhpd %xmm1, 136(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbx) + vmovhpd %xmm0, 136(%rbp) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r10) + vmovhpd %xmm1, 144(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbx) + vmovhpd %xmm0, 144(%rbp) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r10) + vmovhpd %xmm1, 152(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbx) + vmovhpd %xmm0, 152(%rbp) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r10) + vmovhpd %xmm1, 160(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbx) + vmovhpd %xmm0, 160(%rbp) + leaq 13504(%rsp), %rax + leaq 416(%rsp), %rcx + movq $0, %rdx + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$80 +L__crypto_kem_enc_derand_jazz$81: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$84 + movw %si, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_enc_derand_jazz$84: + cmpq $256, %rdi + jnb L__crypto_kem_enc_derand_jazz$82 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$82 + movw %r11w, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_enc_derand_jazz$83: +L__crypto_kem_enc_derand_jazz$82: + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$80: + jne L__crypto_kem_enc_derand_jazz$81 + leaq 14016(%rsp), %rax + leaq 928(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$75 +L__crypto_kem_enc_derand_jazz$76: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$79 + movw %si, (%rax,%r8,2) + incq %r8 +L__crypto_kem_enc_derand_jazz$79: + cmpq $256, %r8 + jnb L__crypto_kem_enc_derand_jazz$77 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$77 + movw %r11w, (%rax,%r8,2) + incq %r8 +L__crypto_kem_enc_derand_jazz$78: +L__crypto_kem_enc_derand_jazz$77: + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$75: + jne L__crypto_kem_enc_derand_jazz$76 + leaq 14528(%rsp), %rax + leaq 1440(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$70 +L__crypto_kem_enc_derand_jazz$71: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$74 + movw %si, (%rax,%r9,2) + incq %r9 +L__crypto_kem_enc_derand_jazz$74: + cmpq $256, %r9 + jnb L__crypto_kem_enc_derand_jazz$72 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$72 + movw %r11w, (%rax,%r9,2) + incq %r9 +L__crypto_kem_enc_derand_jazz$73: +L__crypto_kem_enc_derand_jazz$72: + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$70: + jne L__crypto_kem_enc_derand_jazz$71 + leaq 15040(%rsp), %rax + leaq 1952(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_enc_derand_jazz$65 +L__crypto_kem_enc_derand_jazz$66: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$69 + movw %si, (%rax,%r12,2) + incq %r12 +L__crypto_kem_enc_derand_jazz$69: + cmpq $256, %r12 + jnb L__crypto_kem_enc_derand_jazz$67 + cmpw $3329, %r11w + jnb L__crypto_kem_enc_derand_jazz$67 + movw %r11w, (%rax,%r12,2) + incq %r12 +L__crypto_kem_enc_derand_jazz$68: +L__crypto_kem_enc_derand_jazz$67: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_enc_derand_jazz$65: + jne L__crypto_kem_enc_derand_jazz$66 + cmpq $255, %rdi + setbe %al + cmpq $255, %r8 + setbe %cl + orb %cl, %al + cmpq $255, %r9 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl +L__crypto_kem_enc_derand_jazz$63: + jne L__crypto_kem_enc_derand_jazz$64 + vmovdqu 32(%rsp), %ymm0 + vmovdqu %ymm0, 416(%rsp) + movb $2, 448(%rsp) + movb $2, 449(%rsp) + leaq 416(%rsp), %rax + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm0, 256(%rsp) + vmovdqu %ymm0, 288(%rsp) + vmovdqu %ymm0, 320(%rsp) + vmovdqu %ymm0, 352(%rsp) + vmovdqu %ymm0, 384(%rsp) + vpbroadcastq (%rax), %ymm5 + movq 8(%rax), %rcx + movq glob_data + 6208(%rip), %rdx + movq %rcx, 192(%rsp,%rdx,8) + movq 16(%rax), %rcx + movq glob_data + 6216(%rip), %rdx + movq %rcx, 192(%rsp,%rdx,8) + movq 24(%rax), %rcx + movq glob_data + 6224(%rip), %rdx + movq %rcx, 192(%rsp,%rdx,8) + movb 32(%rax), %cl + movq glob_data + 6232(%rip), %rdx + shlq $3, %rdx + movb %cl, 192(%rsp,%rdx) + movb 33(%rax), %al + incq %rdx + movb %al, 192(%rsp,%rdx) + incq %rdx + movb $31, 192(%rsp,%rdx) + movq glob_data + 6360(%rip), %rax + shlq $3, %rax + movq $167, %rcx + andq $7, %rcx + addq %rcx, %rax + movb $-128, 192(%rsp,%rax) + vmovdqu 224(%rsp), %ymm0 + vmovdqu 256(%rsp), %ymm1 + vmovdqu 288(%rsp), %ymm2 + vmovdqu 320(%rsp), %ymm6 + vmovdqu 352(%rsp), %ymm3 + vmovdqu 384(%rsp), %ymm4 + leaq 416(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_enc_derand_jazz$62: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_enc_derand_jazz$62 + vmovdqu %ymm5, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm1, 256(%rsp) + vmovdqu %ymm2, 288(%rsp) + vmovdqu %ymm6, 320(%rsp) + vmovdqu %ymm3, 352(%rsp) + vmovdqu %ymm4, 384(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 584(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_enc_derand_jazz$61: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_enc_derand_jazz$61 + vmovdqu %ymm5, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm1, 256(%rsp) + vmovdqu %ymm2, 288(%rsp) + vmovdqu %ymm6, 320(%rsp) + vmovdqu %ymm3, 352(%rsp) + vmovdqu %ymm4, 384(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 752(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_enc_derand_jazz$60: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_enc_derand_jazz$60 + vmovdqu %ymm5, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm1, 256(%rsp) + vmovdqu %ymm2, 288(%rsp) + vmovdqu %ymm6, 320(%rsp) + vmovdqu %ymm3, 352(%rsp) + vmovdqu %ymm4, 384(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + vmovdqu %ymm5, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm1, 256(%rsp) + vmovdqu %ymm2, 288(%rsp) + vmovdqu %ymm6, 320(%rsp) + vmovdqu %ymm3, 352(%rsp) + vmovdqu %ymm4, 384(%rsp) + leaq 15552(%rsp), %r11 + leaq 416(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_enc_derand_jazz$59: + cmpq $255, %r12 + setbe %al + vmovdqu 192(%rsp), %ymm6 + vmovdqu 224(%rsp), %ymm0 + vmovdqu 256(%rsp), %ymm1 + vmovdqu 288(%rsp), %ymm2 + vmovdqu 320(%rsp), %ymm3 + vmovdqu 352(%rsp), %ymm4 + vmovdqu 384(%rsp), %ymm5 + jmp L__crypto_kem_enc_derand_jazz$51 +L__crypto_kem_enc_derand_jazz$52: + leaq 416(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_enc_derand_jazz$58: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_enc_derand_jazz$58 + vmovdqu %ymm6, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm1, 256(%rsp) + vmovdqu %ymm2, 288(%rsp) + vmovdqu %ymm3, 320(%rsp) + vmovdqu %ymm4, 352(%rsp) + vmovdqu %ymm5, 384(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 192(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 15552(%rsp), %rax + leaq 416(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %dil + testb %dil, %sil + jmp L__crypto_kem_enc_derand_jazz$53 +L__crypto_kem_enc_derand_jazz$54: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw (%rcx,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_enc_derand_jazz$57 + movw %si, (%rax,%r12,2) + incq %r12 +L__crypto_kem_enc_derand_jazz$57: + cmpq $256, %r12 + jnb L__crypto_kem_enc_derand_jazz$55 + cmpw $3329, %r8w + jnb L__crypto_kem_enc_derand_jazz$55 + movw %r8w, (%rax,%r12,2) + incq %r12 +L__crypto_kem_enc_derand_jazz$56: +L__crypto_kem_enc_derand_jazz$55: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %dil + testb %dil, %sil +L__crypto_kem_enc_derand_jazz$53: + jne L__crypto_kem_enc_derand_jazz$54 + cmpq $255, %r12 + setbe %al +L__crypto_kem_enc_derand_jazz$51: + cmpb $0, %al + jne L__crypto_kem_enc_derand_jazz$52 + leaq 11456(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$50: + leaq 11968(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$49: + leaq 12480(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$48: + leaq 12992(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$47: + leaq 13504(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$46: + leaq 14016(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$45: + leaq 14528(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$44: + leaq 15040(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$43: + leaq 15552(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_enc_derand_jazz$42: + movq 16064(%rsp), %r10 + movb $0, %cl + leaq 8384(%rsp), %rax + leaq 8896(%rsp), %rdi + leaq 9408(%rsp), %r8 + leaq 6848(%rsp), %r9 + leaq -1496(%rsp), %rsp + call L_poly_getnoise_eta1_4x$1 +L__crypto_kem_enc_derand_jazz$41: + leaq 1496(%rsp), %rsp + movb $4, %cl + leaq 7360(%rsp), %rax + leaq 7872(%rsp), %rdi + leaq 2976(%rsp), %r8 + leaq 9920(%rsp), %r9 + leaq -1496(%rsp), %rsp + call L_poly_getnoise_eta1_4x$1 +L__crypto_kem_enc_derand_jazz$40: + leaq 1496(%rsp), %rsp + leaq 8384(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_enc_derand_jazz$39: + leaq 8896(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_enc_derand_jazz$38: + leaq 9408(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_enc_derand_jazz$37: + leaq 9920(%rsp), %rcx + leaq 11456(%rsp), %rsi + leaq 8384(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$36: + leaq 3488(%rsp), %rcx + leaq 11968(%rsp), %rsi + leaq 8896(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$35: + leaq 9920(%rsp), %rcx + leaq 3488(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$34: + leaq 3488(%rsp), %rcx + leaq 12480(%rsp), %rsi + leaq 9408(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$33: + leaq 9920(%rsp), %rcx + leaq 3488(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$32: + leaq 10432(%rsp), %rcx + leaq 12992(%rsp), %rsi + leaq 8384(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$31: + leaq 3488(%rsp), %rcx + leaq 13504(%rsp), %rsi + leaq 8896(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$30: + leaq 10432(%rsp), %rcx + leaq 3488(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$29: + leaq 3488(%rsp), %rcx + leaq 14016(%rsp), %rsi + leaq 9408(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$28: + leaq 10432(%rsp), %rcx + leaq 3488(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$27: + leaq 10944(%rsp), %rcx + leaq 14528(%rsp), %rsi + leaq 8384(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$26: + leaq 3488(%rsp), %rcx + leaq 15040(%rsp), %rsi + leaq 8896(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$25: + leaq 10944(%rsp), %rcx + leaq 3488(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$24: + leaq 3488(%rsp), %rcx + leaq 15552(%rsp), %rsi + leaq 9408(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$23: + leaq 10944(%rsp), %rcx + leaq 3488(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$22: + leaq 3488(%rsp), %rcx + leaq 5312(%rsp), %rsi + leaq 8384(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$21: + leaq 4000(%rsp), %rcx + leaq 5824(%rsp), %rsi + leaq 8896(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$20: + leaq 3488(%rsp), %rcx + leaq 4000(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$19: + leaq 4000(%rsp), %rcx + leaq 6336(%rsp), %rsi + leaq 9408(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_enc_derand_jazz$18: + leaq 3488(%rsp), %rcx + leaq 4000(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$17: + leaq 9920(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$16: + leaq 10432(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$15: + leaq 10944(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$14: + leaq 3488(%rsp), %rcx + call L_poly_invntt$1 +L__crypto_kem_enc_derand_jazz$13: + leaq 9920(%rsp), %rcx + leaq 6848(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$12: + leaq 10432(%rsp), %rcx + leaq 7360(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$11: + leaq 10944(%rsp), %rcx + leaq 7872(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$10: + leaq 3488(%rsp), %rcx + leaq 2976(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$9: + leaq 3488(%rsp), %rcx + leaq 2464(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_enc_derand_jazz$8: + leaq 9920(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 10432(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 10944(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 3488(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + movq 16072(%rsp), %rax + leaq 9920(%rsp), %rcx + call L_poly_csubq$1 +L__crypto_kem_enc_derand_jazz$7: + leaq 10432(%rsp), %rcx + call L_poly_csubq$1 +L__crypto_kem_enc_derand_jazz$6: + leaq 10944(%rsp), %rcx + call L_poly_csubq$1 +L__crypto_kem_enc_derand_jazz$5: + leaq glob_data + 384(%rip), %rcx + vmovdqu (%rcx), %ymm0 + vpsllw $3, %ymm0, %ymm1 + vpbroadcastw glob_data + 6422(%rip), %ymm2 + vpbroadcastw glob_data + 6420(%rip), %ymm3 + vpbroadcastw glob_data + 6418(%rip), %ymm4 + vpbroadcastq glob_data + 6184(%rip), %ymm5 + vpbroadcastq glob_data + 6176(%rip), %ymm6 + vmovdqu glob_data + 32(%rip), %ymm7 + vmovdqu 9920(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, (%rax) + vpextrd $0, %xmm8, 16(%rax) + vmovdqu 9952(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 20(%rax) + vpextrd $0, %xmm8, 36(%rax) + vmovdqu 9984(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 40(%rax) + vpextrd $0, %xmm8, 56(%rax) + vmovdqu 10016(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 60(%rax) + vpextrd $0, %xmm8, 76(%rax) + vmovdqu 10048(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 80(%rax) + vpextrd $0, %xmm8, 96(%rax) + vmovdqu 10080(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 100(%rax) + vpextrd $0, %xmm8, 116(%rax) + vmovdqu 10112(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 120(%rax) + vpextrd $0, %xmm8, 136(%rax) + vmovdqu 10144(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 140(%rax) + vpextrd $0, %xmm8, 156(%rax) + vmovdqu 10176(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 160(%rax) + vpextrd $0, %xmm8, 176(%rax) + vmovdqu 10208(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 180(%rax) + vpextrd $0, %xmm8, 196(%rax) + vmovdqu 10240(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 200(%rax) + vpextrd $0, %xmm8, 216(%rax) + vmovdqu 10272(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 220(%rax) + vpextrd $0, %xmm8, 236(%rax) + vmovdqu 10304(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 240(%rax) + vpextrd $0, %xmm8, 256(%rax) + vmovdqu 10336(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 260(%rax) + vpextrd $0, %xmm8, 276(%rax) + vmovdqu 10368(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 280(%rax) + vpextrd $0, %xmm8, 296(%rax) + vmovdqu 10400(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 300(%rax) + vpextrd $0, %xmm8, 316(%rax) + vmovdqu 10432(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 320(%rax) + vpextrd $0, %xmm8, 336(%rax) + vmovdqu 10464(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 340(%rax) + vpextrd $0, %xmm8, 356(%rax) + vmovdqu 10496(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 360(%rax) + vpextrd $0, %xmm8, 376(%rax) + vmovdqu 10528(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 380(%rax) + vpextrd $0, %xmm8, 396(%rax) + vmovdqu 10560(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 400(%rax) + vpextrd $0, %xmm8, 416(%rax) + vmovdqu 10592(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 420(%rax) + vpextrd $0, %xmm8, 436(%rax) + vmovdqu 10624(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 440(%rax) + vpextrd $0, %xmm8, 456(%rax) + vmovdqu 10656(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 460(%rax) + vpextrd $0, %xmm8, 476(%rax) + vmovdqu 10688(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 480(%rax) + vpextrd $0, %xmm8, 496(%rax) + vmovdqu 10720(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 500(%rax) + vpextrd $0, %xmm8, 516(%rax) + vmovdqu 10752(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 520(%rax) + vpextrd $0, %xmm8, 536(%rax) + vmovdqu 10784(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 540(%rax) + vpextrd $0, %xmm8, 556(%rax) + vmovdqu 10816(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 560(%rax) + vpextrd $0, %xmm8, 576(%rax) + vmovdqu 10848(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 580(%rax) + vpextrd $0, %xmm8, 596(%rax) + vmovdqu 10880(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 600(%rax) + vpextrd $0, %xmm8, 616(%rax) + vmovdqu 10912(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 620(%rax) + vpextrd $0, %xmm8, 636(%rax) + vmovdqu 10944(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 640(%rax) + vpextrd $0, %xmm8, 656(%rax) + vmovdqu 10976(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 660(%rax) + vpextrd $0, %xmm8, 676(%rax) + vmovdqu 11008(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 680(%rax) + vpextrd $0, %xmm8, 696(%rax) + vmovdqu 11040(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 700(%rax) + vpextrd $0, %xmm8, 716(%rax) + vmovdqu 11072(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 720(%rax) + vpextrd $0, %xmm8, 736(%rax) + vmovdqu 11104(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 740(%rax) + vpextrd $0, %xmm8, 756(%rax) + vmovdqu 11136(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 760(%rax) + vpextrd $0, %xmm8, 776(%rax) + vmovdqu 11168(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 780(%rax) + vpextrd $0, %xmm8, 796(%rax) + vmovdqu 11200(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 800(%rax) + vpextrd $0, %xmm8, 816(%rax) + vmovdqu 11232(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 820(%rax) + vpextrd $0, %xmm8, 836(%rax) + vmovdqu 11264(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 840(%rax) + vpextrd $0, %xmm8, 856(%rax) + vmovdqu 11296(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 860(%rax) + vpextrd $0, %xmm8, 876(%rax) + vmovdqu 11328(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 880(%rax) + vpextrd $0, %xmm8, 896(%rax) + vmovdqu 11360(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 900(%rax) + vpextrd $0, %xmm8, 916(%rax) + vmovdqu 11392(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm9 + vpaddw %ymm2, %ymm8, %ymm10 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm10, %ymm9, %ymm10 + vpandn %ymm10, %ymm9, %ymm9 + vpsrlw $15, %ymm9, %ymm9 + vpsubw %ymm9, %ymm8, %ymm8 + vpmulhrsw %ymm3, %ymm8, %ymm8 + vpand %ymm4, %ymm8, %ymm8 + vpmaddwd %ymm5, %ymm8, %ymm8 + vpsllvd %ymm6, %ymm8, %ymm8 + vpsrlq $12, %ymm8, %ymm8 + vpshufb %ymm7, %ymm8, %ymm8 + vmovdqu %xmm8, %xmm9 + vextracti128 $1, %ymm8, %xmm8 + vpblendw $-32, %xmm8, %xmm9, %xmm9 + vmovdqu %xmm9, 920(%rax) + vpextrd $0, %xmm8, 936(%rax) + vmovdqu 11424(%rsp), %ymm8 + vpmullw %ymm1, %ymm8, %ymm1 + vpaddw %ymm2, %ymm8, %ymm2 + vpsllw $3, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm8, %ymm0 + vpsubw %ymm2, %ymm1, %ymm2 + vpandn %ymm2, %ymm1, %ymm1 + vpsrlw $15, %ymm1, %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vpmulhrsw %ymm3, %ymm0, %ymm0 + vpand %ymm4, %ymm0, %ymm0 + vpmaddwd %ymm5, %ymm0, %ymm0 + vpsllvd %ymm6, %ymm0, %ymm0 + vpsrlq $12, %ymm0, %ymm0 + vpshufb %ymm7, %ymm0, %ymm0 + vmovdqu %xmm0, %xmm1 + vextracti128 $1, %ymm0, %xmm0 + vpblendw $-32, %xmm0, %xmm1, %xmm1 + vmovdqu %xmm1, 940(%rax) + vpextrd $0, %xmm0, 956(%rax) + addq $960, %rax + leaq 3488(%rsp), %rcx + call L_poly_compress$1 +L__crypto_kem_enc_derand_jazz$4: + movq 16072(%rsp), %r8 + movq $1088, %rdi + leaq 160(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_enc_derand_jazz$3: + leaq 248(%rsp), %rsp + movq 16080(%rsp), %rdx + movq $32, %rcx + leaq 128(%rsp), %rax + leaq -248(%rsp), %rsp + call L_shake256_64$1 +L__crypto_kem_enc_derand_jazz$2: + leaq 248(%rsp), %rsp + ret +L__crypto_kem_keypair_derand_jazz$1: + movq %rax, 12928(%rsp) + movq %rbx, 12936(%rsp) + movq %rbp, 12944(%rsp) + movq %rax, %rcx + movq %rbx, 12952(%rsp) + movq %rbp, 12960(%rsp) + leaq 12968(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_512_32$1 +L__crypto_kem_keypair_derand_jazz$121: + leaq 248(%rsp), %rsp + movq 12968(%rsp), %rax + movq %rax, 64(%rsp) + movq 13000(%rsp), %rax + movq %rax, 32(%rsp) + movq 12976(%rsp), %rax + movq %rax, 72(%rsp) + movq 13008(%rsp), %rax + movq %rax, 40(%rsp) + movq 12984(%rsp), %rax + movq %rax, 80(%rsp) + movq 13016(%rsp), %rax + movq %rax, 48(%rsp) + movq 12992(%rsp), %rax + movq %rax, 88(%rsp) + movq 13024(%rsp), %rax + movq %rax, 56(%rsp) + vmovdqu 64(%rsp), %ymm0 + vmovdqu %ymm0, 352(%rsp) + vmovdqu %ymm0, 864(%rsp) + vmovdqu %ymm0, 1376(%rsp) + vmovdqu %ymm0, 1888(%rsp) + vmovdqu %ymm0, 96(%rsp) + movb $0, 384(%rsp) + movb $0, 385(%rsp) + movb $1, 896(%rsp) + movb $0, 897(%rsp) + movb $2, 1408(%rsp) + movb $0, 1409(%rsp) + movb $0, 1920(%rsp) + movb $1, 1921(%rsp) + leaq 2912(%rsp), %rax + leaq 352(%rsp), %rcx + leaq 864(%rsp), %rdx + leaq 1376(%rsp), %rsi + leaq 1888(%rsp), %rdi + call L_shake128_absorb4x_34$1 +L__crypto_kem_keypair_derand_jazz$120: + leaq 2912(%rsp), %rax + leaq 352(%rsp), %rdi + leaq 864(%rsp), %r8 + leaq 1376(%rsp), %r9 + leaq 1888(%rsp), %r10 + movq %rdi, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$119: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rdi), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$118: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rdi), %rdi + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$117: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rdi) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rdi) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rdi) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rdi) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rdi) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rdi) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rdi) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rdi) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rdi) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rdi) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rdi) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rdi) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rdi) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rdi) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rdi) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rdi) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rdi) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rdi) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rdi) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rdi) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rdi) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 8320(%rsp), %r11 + leaq 352(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$116: + movq %r12, %r9 + leaq 8832(%rsp), %r11 + leaq 864(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$115: + movq %r12, %rdi + leaq 9344(%rsp), %r11 + leaq 1376(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$114: + movq %r12, %r8 + leaq 9856(%rsp), %r11 + leaq 1888(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$113: + cmpq $255, %r9 + setbe %al + cmpq $255, %rdi + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl + jmp L__crypto_kem_keypair_derand_jazz$90 +L__crypto_kem_keypair_derand_jazz$91: + leaq 2912(%rsp), %rax + leaq 352(%rsp), %r10 + leaq 864(%rsp), %r11 + leaq 1376(%rsp), %rbx + leaq 1888(%rsp), %rbp + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$112: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r10) + vmovhpd %xmm1, (%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbx) + vmovhpd %xmm0, (%rbp) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r10) + vmovhpd %xmm1, 8(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbx) + vmovhpd %xmm0, 8(%rbp) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r10) + vmovhpd %xmm1, 16(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbx) + vmovhpd %xmm0, 16(%rbp) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r10) + vmovhpd %xmm1, 24(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbx) + vmovhpd %xmm0, 24(%rbp) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r10) + vmovhpd %xmm1, 32(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbx) + vmovhpd %xmm0, 32(%rbp) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r10) + vmovhpd %xmm1, 40(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbx) + vmovhpd %xmm0, 40(%rbp) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r10) + vmovhpd %xmm1, 48(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbx) + vmovhpd %xmm0, 48(%rbp) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r10) + vmovhpd %xmm1, 56(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbx) + vmovhpd %xmm0, 56(%rbp) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r10) + vmovhpd %xmm1, 64(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbx) + vmovhpd %xmm0, 64(%rbp) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r10) + vmovhpd %xmm1, 72(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbx) + vmovhpd %xmm0, 72(%rbp) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r10) + vmovhpd %xmm1, 80(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbx) + vmovhpd %xmm0, 80(%rbp) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r10) + vmovhpd %xmm1, 88(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbx) + vmovhpd %xmm0, 88(%rbp) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r10) + vmovhpd %xmm1, 96(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbx) + vmovhpd %xmm0, 96(%rbp) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r10) + vmovhpd %xmm1, 104(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbx) + vmovhpd %xmm0, 104(%rbp) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r10) + vmovhpd %xmm1, 112(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbx) + vmovhpd %xmm0, 112(%rbp) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r10) + vmovhpd %xmm1, 120(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbx) + vmovhpd %xmm0, 120(%rbp) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r10) + vmovhpd %xmm1, 128(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbx) + vmovhpd %xmm0, 128(%rbp) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r10) + vmovhpd %xmm1, 136(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbx) + vmovhpd %xmm0, 136(%rbp) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r10) + vmovhpd %xmm1, 144(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbx) + vmovhpd %xmm0, 144(%rbp) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r10) + vmovhpd %xmm1, 152(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbx) + vmovhpd %xmm0, 152(%rbp) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r10) + vmovhpd %xmm1, 160(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbx) + vmovhpd %xmm0, 160(%rbp) + leaq 8320(%rsp), %rax + leaq 352(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$107 +L__crypto_kem_keypair_derand_jazz$108: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$111 + movw %si, (%rax,%r9,2) + incq %r9 +L__crypto_kem_keypair_derand_jazz$111: + cmpq $256, %r9 + jnb L__crypto_kem_keypair_derand_jazz$109 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$109 + movw %r11w, (%rax,%r9,2) + incq %r9 +L__crypto_kem_keypair_derand_jazz$110: +L__crypto_kem_keypair_derand_jazz$109: + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$107: + jne L__crypto_kem_keypair_derand_jazz$108 + leaq 8832(%rsp), %rax + leaq 864(%rsp), %rcx + movq $0, %rdx + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$102 +L__crypto_kem_keypair_derand_jazz$103: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$106 + movw %si, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_keypair_derand_jazz$106: + cmpq $256, %rdi + jnb L__crypto_kem_keypair_derand_jazz$104 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$104 + movw %r11w, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_keypair_derand_jazz$105: +L__crypto_kem_keypair_derand_jazz$104: + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$102: + jne L__crypto_kem_keypair_derand_jazz$103 + leaq 9344(%rsp), %rax + leaq 1376(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$97 +L__crypto_kem_keypair_derand_jazz$98: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$101 + movw %si, (%rax,%r8,2) + incq %r8 +L__crypto_kem_keypair_derand_jazz$101: + cmpq $256, %r8 + jnb L__crypto_kem_keypair_derand_jazz$99 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$99 + movw %r11w, (%rax,%r8,2) + incq %r8 +L__crypto_kem_keypair_derand_jazz$100: +L__crypto_kem_keypair_derand_jazz$99: + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$97: + jne L__crypto_kem_keypair_derand_jazz$98 + leaq 9856(%rsp), %rax + leaq 1888(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$92 +L__crypto_kem_keypair_derand_jazz$93: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$96 + movw %si, (%rax,%r12,2) + incq %r12 +L__crypto_kem_keypair_derand_jazz$96: + cmpq $256, %r12 + jnb L__crypto_kem_keypair_derand_jazz$94 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$94 + movw %r11w, (%rax,%r12,2) + incq %r12 +L__crypto_kem_keypair_derand_jazz$95: +L__crypto_kem_keypair_derand_jazz$94: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$92: + jne L__crypto_kem_keypair_derand_jazz$93 + cmpq $255, %r9 + setbe %al + cmpq $255, %rdi + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl +L__crypto_kem_keypair_derand_jazz$90: + jne L__crypto_kem_keypair_derand_jazz$91 + vmovdqu 96(%rsp), %ymm0 + vmovdqu %ymm0, 352(%rsp) + vmovdqu %ymm0, 864(%rsp) + vmovdqu %ymm0, 1376(%rsp) + vmovdqu %ymm0, 1888(%rsp) + vmovdqu %ymm0, 96(%rsp) + movb $1, 384(%rsp) + movb $1, 385(%rsp) + movb $2, 896(%rsp) + movb $1, 897(%rsp) + movb $0, 1408(%rsp) + movb $2, 1409(%rsp) + movb $1, 1920(%rsp) + movb $2, 1921(%rsp) + leaq 2912(%rsp), %rax + leaq 352(%rsp), %rcx + leaq 864(%rsp), %rdx + leaq 1376(%rsp), %rsi + leaq 1888(%rsp), %rdi + call L_shake128_absorb4x_34$1 +L__crypto_kem_keypair_derand_jazz$89: + leaq 2912(%rsp), %rax + leaq 352(%rsp), %rdi + leaq 864(%rsp), %r8 + leaq 1376(%rsp), %r9 + leaq 1888(%rsp), %r10 + movq %rdi, %r11 + movq %r8, %rbx + movq %r9, %rbp + movq %r10, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$88: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 168(%rdi), %r11 + leaq 168(%r8), %rbx + leaq 168(%r9), %rbp + leaq 168(%r10), %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$87: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r11) + vmovhpd %xmm1, (%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbp) + vmovhpd %xmm0, (%r12) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r11) + vmovhpd %xmm1, 8(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbp) + vmovhpd %xmm0, 8(%r12) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r11) + vmovhpd %xmm1, 16(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbp) + vmovhpd %xmm0, 16(%r12) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r11) + vmovhpd %xmm1, 24(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbp) + vmovhpd %xmm0, 24(%r12) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r11) + vmovhpd %xmm1, 32(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbp) + vmovhpd %xmm0, 32(%r12) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r11) + vmovhpd %xmm1, 40(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbp) + vmovhpd %xmm0, 40(%r12) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r11) + vmovhpd %xmm1, 48(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbp) + vmovhpd %xmm0, 48(%r12) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r11) + vmovhpd %xmm1, 56(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbp) + vmovhpd %xmm0, 56(%r12) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r11) + vmovhpd %xmm1, 64(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbp) + vmovhpd %xmm0, 64(%r12) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r11) + vmovhpd %xmm1, 72(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbp) + vmovhpd %xmm0, 72(%r12) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r11) + vmovhpd %xmm1, 80(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbp) + vmovhpd %xmm0, 80(%r12) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r11) + vmovhpd %xmm1, 88(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbp) + vmovhpd %xmm0, 88(%r12) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r11) + vmovhpd %xmm1, 96(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbp) + vmovhpd %xmm0, 96(%r12) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r11) + vmovhpd %xmm1, 104(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbp) + vmovhpd %xmm0, 104(%r12) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r11) + vmovhpd %xmm1, 112(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbp) + vmovhpd %xmm0, 112(%r12) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r11) + vmovhpd %xmm1, 120(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbp) + vmovhpd %xmm0, 120(%r12) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r11) + vmovhpd %xmm1, 128(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbp) + vmovhpd %xmm0, 128(%r12) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r11) + vmovhpd %xmm1, 136(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbp) + vmovhpd %xmm0, 136(%r12) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r11) + vmovhpd %xmm1, 144(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbp) + vmovhpd %xmm0, 144(%r12) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r11) + vmovhpd %xmm1, 152(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbp) + vmovhpd %xmm0, 152(%r12) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r11) + vmovhpd %xmm1, 160(%rbx) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbp) + vmovhpd %xmm0, 160(%r12) + leaq 336(%rdi), %rdi + leaq 336(%r8), %r8 + leaq 336(%r9), %r9 + leaq 336(%r10), %r10 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$86: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rdi) + vmovhpd %xmm1, (%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r9) + vmovhpd %xmm0, (%r10) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rdi) + vmovhpd %xmm1, 8(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r9) + vmovhpd %xmm0, 8(%r10) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rdi) + vmovhpd %xmm1, 16(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r9) + vmovhpd %xmm0, 16(%r10) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rdi) + vmovhpd %xmm1, 24(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r9) + vmovhpd %xmm0, 24(%r10) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rdi) + vmovhpd %xmm1, 32(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r9) + vmovhpd %xmm0, 32(%r10) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rdi) + vmovhpd %xmm1, 40(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r9) + vmovhpd %xmm0, 40(%r10) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rdi) + vmovhpd %xmm1, 48(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r9) + vmovhpd %xmm0, 48(%r10) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rdi) + vmovhpd %xmm1, 56(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r9) + vmovhpd %xmm0, 56(%r10) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rdi) + vmovhpd %xmm1, 64(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r9) + vmovhpd %xmm0, 64(%r10) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rdi) + vmovhpd %xmm1, 72(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r9) + vmovhpd %xmm0, 72(%r10) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rdi) + vmovhpd %xmm1, 80(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r9) + vmovhpd %xmm0, 80(%r10) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rdi) + vmovhpd %xmm1, 88(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r9) + vmovhpd %xmm0, 88(%r10) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rdi) + vmovhpd %xmm1, 96(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r9) + vmovhpd %xmm0, 96(%r10) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rdi) + vmovhpd %xmm1, 104(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r9) + vmovhpd %xmm0, 104(%r10) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rdi) + vmovhpd %xmm1, 112(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r9) + vmovhpd %xmm0, 112(%r10) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rdi) + vmovhpd %xmm1, 120(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r9) + vmovhpd %xmm0, 120(%r10) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rdi) + vmovhpd %xmm1, 128(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r9) + vmovhpd %xmm0, 128(%r10) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%rdi) + vmovhpd %xmm1, 136(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%r9) + vmovhpd %xmm0, 136(%r10) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%rdi) + vmovhpd %xmm1, 144(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%r9) + vmovhpd %xmm0, 144(%r10) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%rdi) + vmovhpd %xmm1, 152(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%r9) + vmovhpd %xmm0, 152(%r10) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%rdi) + vmovhpd %xmm1, 160(%r8) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%r9) + vmovhpd %xmm0, 160(%r10) + leaq 10368(%rsp), %r11 + leaq 352(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$85: + movq %r12, %rdi + leaq 10880(%rsp), %r11 + leaq 864(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$84: + movq %r12, %r9 + leaq 11392(%rsp), %r11 + leaq 1376(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$83: + movq %r12, %r8 + leaq 11904(%rsp), %r11 + leaq 1888(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$82: + cmpq $255, %rdi + setbe %al + cmpq $255, %r9 + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl + jmp L__crypto_kem_keypair_derand_jazz$59 +L__crypto_kem_keypair_derand_jazz$60: + leaq 2912(%rsp), %rax + leaq 352(%rsp), %r10 + leaq 864(%rsp), %r11 + leaq 1376(%rsp), %rbx + leaq 1888(%rsp), %rbp + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L__crypto_kem_keypair_derand_jazz$81: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%r10) + vmovhpd %xmm1, (%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%rbx) + vmovhpd %xmm0, (%rbp) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%r10) + vmovhpd %xmm1, 8(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%rbx) + vmovhpd %xmm0, 8(%rbp) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%r10) + vmovhpd %xmm1, 16(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%rbx) + vmovhpd %xmm0, 16(%rbp) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%r10) + vmovhpd %xmm1, 24(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%rbx) + vmovhpd %xmm0, 24(%rbp) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%r10) + vmovhpd %xmm1, 32(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%rbx) + vmovhpd %xmm0, 32(%rbp) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%r10) + vmovhpd %xmm1, 40(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%rbx) + vmovhpd %xmm0, 40(%rbp) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%r10) + vmovhpd %xmm1, 48(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%rbx) + vmovhpd %xmm0, 48(%rbp) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%r10) + vmovhpd %xmm1, 56(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%rbx) + vmovhpd %xmm0, 56(%rbp) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%r10) + vmovhpd %xmm1, 64(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%rbx) + vmovhpd %xmm0, 64(%rbp) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%r10) + vmovhpd %xmm1, 72(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%rbx) + vmovhpd %xmm0, 72(%rbp) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%r10) + vmovhpd %xmm1, 80(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%rbx) + vmovhpd %xmm0, 80(%rbp) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%r10) + vmovhpd %xmm1, 88(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%rbx) + vmovhpd %xmm0, 88(%rbp) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%r10) + vmovhpd %xmm1, 96(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%rbx) + vmovhpd %xmm0, 96(%rbp) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%r10) + vmovhpd %xmm1, 104(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%rbx) + vmovhpd %xmm0, 104(%rbp) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%r10) + vmovhpd %xmm1, 112(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%rbx) + vmovhpd %xmm0, 112(%rbp) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%r10) + vmovhpd %xmm1, 120(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%rbx) + vmovhpd %xmm0, 120(%rbp) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%r10) + vmovhpd %xmm1, 128(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%rbx) + vmovhpd %xmm0, 128(%rbp) + vmovdqu 544(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 136(%r10) + vmovhpd %xmm1, 136(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 136(%rbx) + vmovhpd %xmm0, 136(%rbp) + vmovdqu 576(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 144(%r10) + vmovhpd %xmm1, 144(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 144(%rbx) + vmovhpd %xmm0, 144(%rbp) + vmovdqu 608(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 152(%r10) + vmovhpd %xmm1, 152(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 152(%rbx) + vmovhpd %xmm0, 152(%rbp) + vmovdqu 640(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 160(%r10) + vmovhpd %xmm1, 160(%r11) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 160(%rbx) + vmovhpd %xmm0, 160(%rbp) + leaq 10368(%rsp), %rax + leaq 352(%rsp), %rcx + movq $0, %rdx + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$76 +L__crypto_kem_keypair_derand_jazz$77: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$80 + movw %si, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_keypair_derand_jazz$80: + cmpq $256, %rdi + jnb L__crypto_kem_keypair_derand_jazz$78 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$78 + movw %r11w, (%rax,%rdi,2) + incq %rdi +L__crypto_kem_keypair_derand_jazz$79: +L__crypto_kem_keypair_derand_jazz$78: + cmpq $255, %rdi + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$76: + jne L__crypto_kem_keypair_derand_jazz$77 + leaq 10880(%rsp), %rax + leaq 864(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$71 +L__crypto_kem_keypair_derand_jazz$72: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$75 + movw %si, (%rax,%r9,2) + incq %r9 +L__crypto_kem_keypair_derand_jazz$75: + cmpq $256, %r9 + jnb L__crypto_kem_keypair_derand_jazz$73 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$73 + movw %r11w, (%rax,%r9,2) + incq %r9 +L__crypto_kem_keypair_derand_jazz$74: +L__crypto_kem_keypair_derand_jazz$73: + cmpq $255, %r9 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$71: + jne L__crypto_kem_keypair_derand_jazz$72 + leaq 11392(%rsp), %rax + leaq 1376(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$66 +L__crypto_kem_keypair_derand_jazz$67: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$70 + movw %si, (%rax,%r8,2) + incq %r8 +L__crypto_kem_keypair_derand_jazz$70: + cmpq $256, %r8 + jnb L__crypto_kem_keypair_derand_jazz$68 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$68 + movw %r11w, (%rax,%r8,2) + incq %r8 +L__crypto_kem_keypair_derand_jazz$69: +L__crypto_kem_keypair_derand_jazz$68: + cmpq $255, %r8 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$66: + jne L__crypto_kem_keypair_derand_jazz$67 + leaq 11904(%rsp), %rax + leaq 1888(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil + jmp L__crypto_kem_keypair_derand_jazz$61 +L__crypto_kem_keypair_derand_jazz$62: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + movw %r10w, %r11w + shrw $4, %r11w + andw $15, %r10w + shlw $8, %r10w + orw %r10w, %si + incq %rdx + movzbw (%rcx,%rdx), %r10w + shlw $4, %r10w + orw %r10w, %r11w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$65 + movw %si, (%rax,%r12,2) + incq %r12 +L__crypto_kem_keypair_derand_jazz$65: + cmpq $256, %r12 + jnb L__crypto_kem_keypair_derand_jazz$63 + cmpw $3329, %r11w + jnb L__crypto_kem_keypair_derand_jazz$63 + movw %r11w, (%rax,%r12,2) + incq %r12 +L__crypto_kem_keypair_derand_jazz$64: +L__crypto_kem_keypair_derand_jazz$63: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %r10b + testb %r10b, %sil +L__crypto_kem_keypair_derand_jazz$61: + jne L__crypto_kem_keypair_derand_jazz$62 + cmpq $255, %rdi + setbe %al + cmpq $255, %r9 + setbe %cl + orb %cl, %al + cmpq $255, %r8 + setbe %cl + cmpq $255, %r12 + setbe %dl + orb %dl, %cl + orb %al, %cl +L__crypto_kem_keypair_derand_jazz$59: + jne L__crypto_kem_keypair_derand_jazz$60 + vmovdqu 96(%rsp), %ymm0 + vmovdqu %ymm0, 352(%rsp) + movb $2, 384(%rsp) + movb $2, 385(%rsp) + leaq 352(%rsp), %rax + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vmovdqu %ymm0, 256(%rsp) + vmovdqu %ymm0, 288(%rsp) + vmovdqu %ymm0, 320(%rsp) + vpbroadcastq (%rax), %ymm5 + movq 8(%rax), %rcx + movq glob_data + 6208(%rip), %rdx + movq %rcx, 128(%rsp,%rdx,8) + movq 16(%rax), %rcx + movq glob_data + 6216(%rip), %rdx + movq %rcx, 128(%rsp,%rdx,8) + movq 24(%rax), %rcx + movq glob_data + 6224(%rip), %rdx + movq %rcx, 128(%rsp,%rdx,8) + movb 32(%rax), %cl + movq glob_data + 6232(%rip), %rdx + shlq $3, %rdx + movb %cl, 128(%rsp,%rdx) + movb 33(%rax), %al + incq %rdx + movb %al, 128(%rsp,%rdx) + incq %rdx + movb $31, 128(%rsp,%rdx) + movq glob_data + 6360(%rip), %rax + shlq $3, %rax + movq $167, %rcx + andq $7, %rcx + addq %rcx, %rax + movb $-128, 128(%rsp,%rax) + vmovdqu 160(%rsp), %ymm0 + vmovdqu 192(%rsp), %ymm1 + vmovdqu 224(%rsp), %ymm2 + vmovdqu 256(%rsp), %ymm6 + vmovdqu 288(%rsp), %ymm3 + vmovdqu 320(%rsp), %ymm4 + leaq 352(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_keypair_derand_jazz$58: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_keypair_derand_jazz$58 + vmovdqu %ymm5, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm1, 192(%rsp) + vmovdqu %ymm2, 224(%rsp) + vmovdqu %ymm6, 256(%rsp) + vmovdqu %ymm3, 288(%rsp) + vmovdqu %ymm4, 320(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 520(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_keypair_derand_jazz$57: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_keypair_derand_jazz$57 + vmovdqu %ymm5, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm1, 192(%rsp) + vmovdqu %ymm2, 224(%rsp) + vmovdqu %ymm6, 256(%rsp) + vmovdqu %ymm3, 288(%rsp) + vmovdqu %ymm4, 320(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 688(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_keypair_derand_jazz$56: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm3, %ymm7 + vpxor %ymm4, %ymm6, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm5, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm5, %ymm5 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%rsi), %ymm6, %ymm7 + vpsrlvq 96(%rdi), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm6 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm4, %ymm4 + vpermq $-115, %ymm1, %ymm6 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm4, %ymm1 + vpsrlvq 160(%rdi), %ymm4, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm3, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm6, %ymm4 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm3, %ymm3 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm3, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm4 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm6, %ymm12 + vpxor %ymm6, %ymm1, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm5, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm3, %ymm2 + vpermq $-115, %ymm4, %ymm3 + vpermq $114, %ymm12, %ymm4 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm0, %ymm6 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rcx,%rdx), %ymm5, %ymm5 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_keypair_derand_jazz$56 + vmovdqu %ymm5, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm1, 192(%rsp) + vmovdqu %ymm2, 224(%rsp) + vmovdqu %ymm6, 256(%rsp) + vmovdqu %ymm3, 288(%rsp) + vmovdqu %ymm4, 320(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + vmovdqu %ymm5, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm1, 192(%rsp) + vmovdqu %ymm2, 224(%rsp) + vmovdqu %ymm6, 256(%rsp) + vmovdqu %ymm3, 288(%rsp) + vmovdqu %ymm4, 320(%rsp) + leaq 12416(%rsp), %r11 + leaq 352(%rsp), %rbx + call L_rej_uniform_avx$1 +L__crypto_kem_keypair_derand_jazz$55: + cmpq $255, %r12 + setbe %al + vmovdqu 128(%rsp), %ymm6 + vmovdqu 160(%rsp), %ymm0 + vmovdqu 192(%rsp), %ymm1 + vmovdqu 224(%rsp), %ymm2 + vmovdqu 256(%rsp), %ymm3 + vmovdqu 288(%rsp), %ymm4 + vmovdqu 320(%rsp), %ymm5 + jmp L__crypto_kem_keypair_derand_jazz$47 +L__crypto_kem_keypair_derand_jazz$48: + leaq 352(%rsp), %rax + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L__crypto_kem_keypair_derand_jazz$54: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L__crypto_kem_keypair_derand_jazz$54 + vmovdqu %ymm6, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm1, 192(%rsp) + vmovdqu %ymm2, 224(%rsp) + vmovdqu %ymm3, 256(%rsp) + vmovdqu %ymm4, 288(%rsp) + vmovdqu %ymm5, 320(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + movq glob_data + 6264(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 64(%rax) + movq glob_data + 6272(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 72(%rax) + movq glob_data + 6280(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 80(%rax) + movq glob_data + 6288(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 88(%rax) + movq glob_data + 6296(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 96(%rax) + movq glob_data + 6304(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 104(%rax) + movq glob_data + 6312(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 112(%rax) + movq glob_data + 6320(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 120(%rax) + movq glob_data + 6328(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 128(%rax) + movq glob_data + 6336(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 136(%rax) + movq glob_data + 6344(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 144(%rax) + movq glob_data + 6352(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 152(%rax) + movq glob_data + 6360(%rip), %rcx + movq 128(%rsp,%rcx,8), %rcx + movq %rcx, 160(%rax) + leaq 12416(%rsp), %rax + leaq 352(%rsp), %rcx + movq $0, %rdx + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %dil + testb %dil, %sil + jmp L__crypto_kem_keypair_derand_jazz$49 +L__crypto_kem_keypair_derand_jazz$50: + movzbw (%rcx,%rdx), %si + incq %rdx + movzbw (%rcx,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw (%rcx,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L__crypto_kem_keypair_derand_jazz$53 + movw %si, (%rax,%r12,2) + incq %r12 +L__crypto_kem_keypair_derand_jazz$53: + cmpq $256, %r12 + jnb L__crypto_kem_keypair_derand_jazz$51 + cmpw $3329, %r8w + jnb L__crypto_kem_keypair_derand_jazz$51 + movw %r8w, (%rax,%r12,2) + incq %r12 +L__crypto_kem_keypair_derand_jazz$52: +L__crypto_kem_keypair_derand_jazz$51: + cmpq $255, %r12 + setbe %sil + cmpq $165, %rdx + setbe %dil + testb %dil, %sil +L__crypto_kem_keypair_derand_jazz$49: + jne L__crypto_kem_keypair_derand_jazz$50 + cmpq $255, %r12 + setbe %al +L__crypto_kem_keypair_derand_jazz$47: + cmpb $0, %al + jne L__crypto_kem_keypair_derand_jazz$48 + leaq 8320(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$46: + leaq 8832(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$45: + leaq 9344(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$44: + leaq 9856(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$43: + leaq 10368(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$42: + leaq 10880(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$41: + leaq 11392(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$40: + leaq 11904(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$39: + leaq 12416(%rsp), %rax + call L_nttunpack$1 +L__crypto_kem_keypair_derand_jazz$38: + movb $0, %cl + leaq 5248(%rsp), %rax + leaq 5760(%rsp), %rdi + leaq 6272(%rsp), %r8 + leaq 3712(%rsp), %r9 + leaq 32(%rsp), %r10 + leaq -1496(%rsp), %rsp + call L_poly_getnoise_eta1_4x$1 +L__crypto_kem_keypair_derand_jazz$37: + leaq 1496(%rsp), %rsp + movb $4, %cl + leaq 4224(%rsp), %rax + leaq 4736(%rsp), %rdi + leaq 6784(%rsp), %r8 + leaq 7296(%rsp), %r9 + leaq 32(%rsp), %r10 + leaq -1496(%rsp), %rsp + call L_poly_getnoise_eta1_4x$1 +L__crypto_kem_keypair_derand_jazz$36: + leaq 1496(%rsp), %rsp + leaq 5248(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$35: + leaq 5760(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$34: + leaq 6272(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$33: + leaq 3712(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$32: + leaq 4224(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$31: + leaq 4736(%rsp), %rcx + call L_poly_ntt$1 +L__crypto_kem_keypair_derand_jazz$30: + leaq 6784(%rsp), %rcx + leaq 8320(%rsp), %rsi + leaq 5248(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$29: + leaq 2400(%rsp), %rcx + leaq 8832(%rsp), %rsi + leaq 5760(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$28: + leaq 6784(%rsp), %rcx + leaq 2400(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$27: + leaq 2400(%rsp), %rcx + leaq 9344(%rsp), %rsi + leaq 6272(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$26: + leaq 6784(%rsp), %rcx + leaq 2400(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$25: + leaq 6784(%rsp), %rax + call L_poly_frommont$1 +L__crypto_kem_keypair_derand_jazz$24: + leaq 7296(%rsp), %rcx + leaq 9856(%rsp), %rsi + leaq 5248(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$23: + leaq 2400(%rsp), %rcx + leaq 10368(%rsp), %rsi + leaq 5760(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$22: + leaq 7296(%rsp), %rcx + leaq 2400(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$21: + leaq 2400(%rsp), %rcx + leaq 10880(%rsp), %rsi + leaq 6272(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$20: + leaq 7296(%rsp), %rcx + leaq 2400(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$19: + leaq 7296(%rsp), %rax + call L_poly_frommont$1 +L__crypto_kem_keypair_derand_jazz$18: + leaq 7808(%rsp), %rcx + leaq 11392(%rsp), %rsi + leaq 5248(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$17: + leaq 2400(%rsp), %rcx + leaq 11904(%rsp), %rsi + leaq 5760(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$16: + leaq 7808(%rsp), %rcx + leaq 2400(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$15: + leaq 2400(%rsp), %rcx + leaq 12416(%rsp), %rsi + leaq 6272(%rsp), %rdi + call L_poly_basemul$1 +L__crypto_kem_keypair_derand_jazz$14: + leaq 7808(%rsp), %rcx + leaq 2400(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$13: + leaq 7808(%rsp), %rax + call L_poly_frommont$1 +L__crypto_kem_keypair_derand_jazz$12: + leaq 6784(%rsp), %rcx + leaq 3712(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$11: + leaq 7296(%rsp), %rcx + leaq 4224(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$10: + leaq 7808(%rsp), %rcx + leaq 4736(%rsp), %rsi + call L_poly_add2$1 +L__crypto_kem_keypair_derand_jazz$9: + leaq 6784(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 7296(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + leaq 7808(%rsp), %rax + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu (%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, (%rax) + vmovdqu 32(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vmovdqu 64(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vmovdqu 96(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vmovdqu 128(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 160(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 160(%rax) + vmovdqu 192(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 192(%rax) + vmovdqu 224(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 256(%rax) + vmovdqu 288(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 320(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 320(%rax) + vmovdqu 352(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 352(%rax) + vmovdqu 384(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 384(%rax) + vmovdqu 416(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 416(%rax) + vmovdqu 448(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 480(%rax), %ymm2 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm0, 480(%rax) + movq 12952(%rsp), %rax + movq 12960(%rsp), %rcx + leaq 5248(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$8: + addq $384, %rcx + leaq 5760(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$7: + addq $384, %rcx + leaq 6272(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$6: + movq %rax, %rcx + leaq 6784(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$5: + addq $384, %rcx + leaq 7296(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$4: + addq $384, %rcx + leaq 7808(%rsp), %rdx + call L_poly_tobytes$1 +L__crypto_kem_keypair_derand_jazz$3: + addq $1152, %rax + movq 64(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 72(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 80(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 88(%rsp), %rcx + movq %rcx, (%rax) + movq 12944(%rsp), %rax + addq $1152, %rax + movq 12936(%rsp), %rcx + movq (%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 8(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 16(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 24(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 32(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 40(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 48(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 56(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 64(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 72(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 80(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 88(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 96(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 104(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 112(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 120(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 128(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 136(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 144(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 152(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 160(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 168(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 176(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 184(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 192(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 200(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 208(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 216(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 224(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 232(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 240(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 248(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 256(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 264(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 272(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 280(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 288(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 296(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 304(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 312(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 320(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 328(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 336(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 344(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 352(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 360(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 368(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 376(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 384(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 392(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 400(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 408(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 416(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 424(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 432(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 440(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 448(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 456(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 464(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 472(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 480(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 488(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 496(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 504(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 512(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 520(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 528(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 536(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 544(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 552(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 560(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 568(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 576(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 584(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 592(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 600(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 608(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 616(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 624(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 632(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 640(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 648(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 656(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 664(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 672(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 680(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 688(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 696(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 704(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 712(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 720(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 728(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 736(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 744(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 752(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 760(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 768(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 776(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 784(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 792(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 800(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 808(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 816(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 824(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 832(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 840(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 848(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 856(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 864(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 872(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 880(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 888(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 896(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 904(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 912(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 920(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 928(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 936(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 944(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 952(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 960(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 968(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 976(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 984(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 992(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1000(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1008(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1016(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1024(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1032(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1040(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1048(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1056(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1064(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1072(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1080(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1088(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1096(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1104(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1112(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1120(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1128(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1136(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1144(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1152(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1160(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1168(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1176(%rcx), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq %rax, 12944(%rsp) + movq 12936(%rsp), %r8 + movq $1184, %rdi + leaq 64(%rsp), %rax + leaq -248(%rsp), %rsp + call L_sha3_256$1 +L__crypto_kem_keypair_derand_jazz$2: + leaq 248(%rsp), %rsp + movq 12944(%rsp), %rax + movq 12928(%rsp), %rcx + leaq 64(%rsp), %rdx + movb (%rdx), %sil + movb %sil, (%rax) + movb 1(%rdx), %sil + movb %sil, 1(%rax) + movb 2(%rdx), %sil + movb %sil, 2(%rax) + movb 3(%rdx), %sil + movb %sil, 3(%rax) + movb 4(%rdx), %sil + movb %sil, 4(%rax) + movb 5(%rdx), %sil + movb %sil, 5(%rax) + movb 6(%rdx), %sil + movb %sil, 6(%rax) + movb 7(%rdx), %sil + movb %sil, 7(%rax) + movb 8(%rdx), %sil + movb %sil, 8(%rax) + movb 9(%rdx), %sil + movb %sil, 9(%rax) + movb 10(%rdx), %sil + movb %sil, 10(%rax) + movb 11(%rdx), %sil + movb %sil, 11(%rax) + movb 12(%rdx), %sil + movb %sil, 12(%rax) + movb 13(%rdx), %sil + movb %sil, 13(%rax) + movb 14(%rdx), %sil + movb %sil, 14(%rax) + movb 15(%rdx), %sil + movb %sil, 15(%rax) + movb 16(%rdx), %sil + movb %sil, 16(%rax) + movb 17(%rdx), %sil + movb %sil, 17(%rax) + movb 18(%rdx), %sil + movb %sil, 18(%rax) + movb 19(%rdx), %sil + movb %sil, 19(%rax) + movb 20(%rdx), %sil + movb %sil, 20(%rax) + movb 21(%rdx), %sil + movb %sil, 21(%rax) + movb 22(%rdx), %sil + movb %sil, 22(%rax) + movb 23(%rdx), %sil + movb %sil, 23(%rax) + movb 24(%rdx), %sil + movb %sil, 24(%rax) + movb 25(%rdx), %sil + movb %sil, 25(%rax) + movb 26(%rdx), %sil + movb %sil, 26(%rax) + movb 27(%rdx), %sil + movb %sil, 27(%rax) + movb 28(%rdx), %sil + movb %sil, 28(%rax) + movb 29(%rdx), %sil + movb %sil, 29(%rax) + movb 30(%rdx), %sil + movb %sil, 30(%rax) + movb 31(%rdx), %dl + movb %dl, 31(%rax) + addq $32, %rax + leaq 32(%rcx), %rcx + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %cl + movb %cl, 31(%rax) + ret +L_rej_uniform_avx$1: + leaq glob_data + 4128(%rip), %r10 + vmovdqu glob_data + 448(%rip), %ymm0 + movq $0, %r12 + movq $0, %rbp + vpbroadcastb glob_data + 6430(%rip), %ymm1 + vpbroadcastw glob_data + 6416(%rip), %ymm2 + vmovdqu glob_data + 0(%rip), %ymm3 + cmpq $224, %r12 + setbe %al + cmpq $448, %rbp + setbe %cl + testb %cl, %al + jmp L_rej_uniform_avx$9 +L_rej_uniform_avx$10: + vpermq $-108, (%rbx,%rbp), %ymm4 + vpermq $-108, 24(%rbx,%rbp), %ymm5 + vpshufb %ymm3, %ymm4, %ymm4 + vpshufb %ymm3, %ymm5, %ymm5 + vpsrlw $4, %ymm4, %ymm6 + vpsrlw $4, %ymm5, %ymm7 + vpblendw $-86, %ymm6, %ymm4, %ymm4 + vpblendw $-86, %ymm7, %ymm5, %ymm5 + vpand %ymm2, %ymm4, %ymm4 + vpand %ymm2, %ymm5, %ymm5 + vpcmpgtw %ymm4, %ymm0, %ymm6 + vpcmpgtw %ymm5, %ymm0, %ymm7 + vpacksswb %ymm7, %ymm6, %ymm6 + vpmovmskb %ymm6, %rax + movq %rax, %rcx + andq $255, %rcx + vmovq (%r10,%rcx,8), %xmm6 + movq %rax, %rdx + shrq $16, %rdx + andq $255, %rdx + vmovq (%r10,%rdx,8), %xmm7 + movq %rax, %rsi + shrq $8, %rsi + andq $255, %rsi + vmovq (%r10,%rsi,8), %xmm8 + shrq $24, %rax + andq $255, %rax + vmovq (%r10,%rax,8), %xmm9 + vinserti128 $1, %xmm7, %ymm6, %ymm6 + popcnt %rcx, %rcx + popcnt %rdx, %rdx + addq %r12, %rcx + vinserti128 $1, %xmm9, %ymm8, %ymm7 + addq %rcx, %rdx + popcnt %rsi, %rsi + addq %rdx, %rsi + popcnt %rax, %rax + addq %rsi, %rax + vpaddb %ymm1, %ymm6, %ymm8 + vpunpcklbw %ymm8, %ymm6, %ymm6 + vpaddb %ymm1, %ymm7, %ymm8 + vpunpcklbw %ymm8, %ymm7, %ymm7 + vpshufb %ymm6, %ymm4, %ymm4 + vpshufb %ymm7, %ymm5, %ymm5 + vmovdqu %xmm4, (%r11,%r12,2) + vextracti128 $1, %ymm4, (%r11,%rcx,2) + vmovdqu %xmm5, (%r11,%rdx,2) + vextracti128 $1, %ymm5, (%r11,%rsi,2) + movq %rax, %r12 + cmpq $224, %r12 + setbe %al + addq $48, %rbp + cmpq $448, %rbp + setbe %cl + testb %cl, %al +L_rej_uniform_avx$9: + jne L_rej_uniform_avx$10 + cmpq $248, %r12 + setbe %al + cmpq $488, %rbp + setbe %cl + testb %cl, %al + movq $21845, %rax + jmp L_rej_uniform_avx$7 +L_rej_uniform_avx$8: + vmovdqu (%rbx,%rbp), %xmm4 + vpshufb %xmm3, %xmm4, %xmm4 + vpsrlw $4, %xmm4, %xmm5 + vpblendw $-86, %xmm5, %xmm4, %xmm4 + vpand %xmm2, %xmm4, %xmm4 + vpcmpgtw %xmm4, %xmm0, %xmm5 + vpmovmskb %xmm5, %rcx + pext %rax, %rcx, %rcx + vmovq (%r10,%rcx,8), %xmm5 + popcnt %rcx, %rcx + vpaddb %xmm1, %xmm5, %xmm6 + vpunpcklbw %xmm6, %xmm5, %xmm5 + vpshufb %xmm5, %xmm4, %xmm4 + vmovdqu %xmm4, (%r11,%r12,2) + addq %rcx, %r12 + addq $12, %rbp + cmpq $248, %r12 + setbe %cl + cmpq $488, %rbp + setbe %dl + testb %dl, %cl +L_rej_uniform_avx$7: + jne L_rej_uniform_avx$8 + cmpq $255, %r12 + setbe %al + cmpq $501, %rbp + setbe %cl + testb %cl, %al + jmp L_rej_uniform_avx$2 +L_rej_uniform_avx$3: + movzbw (%rbx,%rbp), %ax + incq %rbp + movzbw (%rbx,%rbp), %dx + incq %rbp + movw %dx, %cx + shlw $8, %dx + orw %dx, %ax + andw $4095, %ax + shrw $4, %cx + movzbw (%rbx,%rbp), %dx + incq %rbp + shlw $4, %dx + orw %dx, %cx + cmpw $3329, %ax + jnb L_rej_uniform_avx$6 + movw %ax, (%r11,%r12,2) + incq %r12 +L_rej_uniform_avx$6: + cmpw $3329, %cx + jnb L_rej_uniform_avx$4 + cmpq $256, %r12 + jnb L_rej_uniform_avx$4 + movw %cx, (%r11,%r12,2) + incq %r12 +L_rej_uniform_avx$5: +L_rej_uniform_avx$4: + cmpq $255, %r12 + setbe %al + cmpq $501, %rbp + setbe %cl + testb %cl, %al +L_rej_uniform_avx$2: + jne L_rej_uniform_avx$3 + ret +L_poly_tomsg_1$1: + call L_poly_csubq$1 +L_poly_tomsg_1$2: + leaq glob_data + 224(%rip), %rsi + vmovdqu (%rsi), %ymm0 + leaq glob_data + 192(%rip), %rsi + vmovdqu (%rsi), %ymm1 + vmovdqu (%rcx), %ymm2 + vmovdqu 32(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, (%rax) + vmovdqu 64(%rcx), %ymm2 + vmovdqu 96(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 4(%rax) + vmovdqu 128(%rcx), %ymm2 + vmovdqu 160(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 8(%rax) + vmovdqu 192(%rcx), %ymm2 + vmovdqu 224(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 12(%rax) + vmovdqu 256(%rcx), %ymm2 + vmovdqu 288(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 16(%rax) + vmovdqu 320(%rcx), %ymm2 + vmovdqu 352(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 20(%rax) + vmovdqu 384(%rcx), %ymm2 + vmovdqu 416(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm3 + vpsraw $15, %ymm2, %ymm4 + vpsraw $15, %ymm3, %ymm5 + vpxor %ymm4, %ymm2, %ymm2 + vpxor %ymm5, %ymm3, %ymm3 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm3, %ymm3 + vpacksswb %ymm3, %ymm2, %ymm2 + vpermq $-40, %ymm2, %ymm2 + vpmovmskb %ymm2, %esi + movl %esi, 24(%rax) + vmovdqu 448(%rcx), %ymm2 + vmovdqu 480(%rcx), %ymm3 + vpsubw %ymm2, %ymm0, %ymm2 + vpsubw %ymm3, %ymm0, %ymm0 + vpsraw $15, %ymm2, %ymm3 + vpsraw $15, %ymm0, %ymm4 + vpxor %ymm3, %ymm2, %ymm2 + vpxor %ymm4, %ymm0, %ymm0 + vpsubw %ymm1, %ymm2, %ymm2 + vpsubw %ymm1, %ymm0, %ymm0 + vpacksswb %ymm0, %ymm2, %ymm0 + vpermq $-40, %ymm0, %ymm0 + vpmovmskb %ymm0, %ecx + movl %ecx, 28(%rax) + ret +L_poly_tobytes$1: + leaq glob_data + 448(%rip), %rsi + vmovdqu (%rsi), %ymm0 + vmovdqu (%rdx), %ymm7 + vmovdqu 32(%rdx), %ymm8 + vmovdqu 64(%rdx), %ymm1 + vmovdqu 96(%rdx), %ymm2 + vmovdqu 128(%rdx), %ymm3 + vmovdqu 160(%rdx), %ymm4 + vmovdqu 192(%rdx), %ymm5 + vmovdqu 224(%rdx), %ymm6 + vpsubw %ymm0, %ymm7, %ymm7 + vpsraw $15, %ymm7, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm0, %ymm8, %ymm8 + vpsraw $15, %ymm8, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm1, %ymm9, %ymm1 + vpsubw %ymm0, %ymm2, %ymm2 + vpsraw $15, %ymm2, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm2, %ymm9, %ymm2 + vpsubw %ymm0, %ymm3, %ymm3 + vpsraw $15, %ymm3, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm3, %ymm9, %ymm3 + vpsubw %ymm0, %ymm4, %ymm4 + vpsraw $15, %ymm4, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm4, %ymm9, %ymm4 + vpsubw %ymm0, %ymm5, %ymm5 + vpsraw $15, %ymm5, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm5, %ymm9, %ymm5 + vpsubw %ymm0, %ymm6, %ymm6 + vpsraw $15, %ymm6, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm6, %ymm9, %ymm6 + vpsllw $12, %ymm8, %ymm9 + vpor %ymm7, %ymm9, %ymm7 + vpsrlw $4, %ymm8, %ymm8 + vpsllw $8, %ymm1, %ymm9 + vpor %ymm9, %ymm8, %ymm8 + vpsrlw $8, %ymm1, %ymm1 + vpsllw $4, %ymm2, %ymm2 + vpor %ymm2, %ymm1, %ymm1 + vpsllw $12, %ymm4, %ymm2 + vpor %ymm3, %ymm2, %ymm2 + vpsrlw $4, %ymm4, %ymm3 + vpsllw $8, %ymm5, %ymm4 + vpor %ymm4, %ymm3, %ymm3 + vpsrlw $8, %ymm5, %ymm4 + vpsllw $4, %ymm6, %ymm5 + vpor %ymm5, %ymm4, %ymm4 + vpslld $16, %ymm8, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm7, %ymm6 + vpblendw $-86, %ymm8, %ymm6, %ymm6 + vpslld $16, %ymm2, %ymm7 + vpblendw $-86, %ymm7, %ymm1, %ymm7 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm1 + vpslld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm2, %ymm3, %ymm8 + vpsrld $16, %ymm3, %ymm2 + vpblendw $-86, %ymm4, %ymm2, %ymm2 + vmovsldup %ymm7, %ymm3 + vpblendd $-86, %ymm3, %ymm5, %ymm3 + vpsrlq $32, %ymm5, %ymm4 + vpblendd $-86, %ymm7, %ymm4, %ymm4 + vmovsldup %ymm6, %ymm5 + vpblendd $-86, %ymm5, %ymm8, %ymm5 + vpsrlq $32, %ymm8, %ymm7 + vpblendd $-86, %ymm6, %ymm7, %ymm6 + vmovsldup %ymm2, %ymm7 + vpblendd $-86, %ymm7, %ymm1, %ymm7 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm2, %ymm1, %ymm1 + vpunpcklqdq %ymm5, %ymm3, %ymm2 + vpunpckhqdq %ymm5, %ymm3, %ymm3 + vpunpcklqdq %ymm4, %ymm7, %ymm5 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vpunpcklqdq %ymm1, %ymm6, %ymm7 + vpunpckhqdq %ymm1, %ymm6, %ymm1 + vperm2i128 $32, %ymm5, %ymm2, %ymm6 + vperm2i128 $49, %ymm5, %ymm2, %ymm2 + vperm2i128 $32, %ymm3, %ymm7, %ymm5 + vperm2i128 $49, %ymm3, %ymm7, %ymm3 + vperm2i128 $32, %ymm1, %ymm4, %ymm7 + vperm2i128 $49, %ymm1, %ymm4, %ymm1 + vmovdqu %ymm6, (%rcx) + vmovdqu %ymm5, 32(%rcx) + vmovdqu %ymm7, 64(%rcx) + vmovdqu %ymm2, 96(%rcx) + vmovdqu %ymm3, 128(%rcx) + vmovdqu %ymm1, 160(%rcx) + vmovdqu 256(%rdx), %ymm7 + vmovdqu 288(%rdx), %ymm8 + vmovdqu 320(%rdx), %ymm1 + vmovdqu 352(%rdx), %ymm2 + vmovdqu 384(%rdx), %ymm3 + vmovdqu 416(%rdx), %ymm4 + vmovdqu 448(%rdx), %ymm5 + vmovdqu 480(%rdx), %ymm6 + vpsubw %ymm0, %ymm7, %ymm7 + vpsraw $15, %ymm7, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm0, %ymm8, %ymm8 + vpsraw $15, %ymm8, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm1, %ymm9, %ymm1 + vpsubw %ymm0, %ymm2, %ymm2 + vpsraw $15, %ymm2, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm2, %ymm9, %ymm2 + vpsubw %ymm0, %ymm3, %ymm3 + vpsraw $15, %ymm3, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm3, %ymm9, %ymm3 + vpsubw %ymm0, %ymm4, %ymm4 + vpsraw $15, %ymm4, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm4, %ymm9, %ymm4 + vpsubw %ymm0, %ymm5, %ymm5 + vpsraw $15, %ymm5, %ymm9 + vpand %ymm0, %ymm9, %ymm9 + vpaddw %ymm5, %ymm9, %ymm5 + vpsubw %ymm0, %ymm6, %ymm6 + vpsraw $15, %ymm6, %ymm9 + vpand %ymm0, %ymm9, %ymm0 + vpaddw %ymm6, %ymm0, %ymm0 + vpsllw $12, %ymm8, %ymm6 + vpor %ymm7, %ymm6, %ymm6 + vpsrlw $4, %ymm8, %ymm7 + vpsllw $8, %ymm1, %ymm8 + vpor %ymm8, %ymm7, %ymm7 + vpsrlw $8, %ymm1, %ymm1 + vpsllw $4, %ymm2, %ymm2 + vpor %ymm2, %ymm1, %ymm1 + vpsllw $12, %ymm4, %ymm2 + vpor %ymm3, %ymm2, %ymm2 + vpsrlw $4, %ymm4, %ymm3 + vpsllw $8, %ymm5, %ymm4 + vpor %ymm4, %ymm3, %ymm3 + vpsrlw $8, %ymm5, %ymm4 + vpsllw $4, %ymm0, %ymm0 + vpor %ymm0, %ymm4, %ymm0 + vpslld $16, %ymm7, %ymm4 + vpblendw $-86, %ymm4, %ymm6, %ymm4 + vpsrld $16, %ymm6, %ymm5 + vpblendw $-86, %ymm7, %ymm5, %ymm5 + vpslld $16, %ymm2, %ymm6 + vpblendw $-86, %ymm6, %ymm1, %ymm6 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm1 + vpslld $16, %ymm0, %ymm2 + vpblendw $-86, %ymm2, %ymm3, %ymm7 + vpsrld $16, %ymm3, %ymm2 + vpblendw $-86, %ymm0, %ymm2, %ymm0 + vmovsldup %ymm6, %ymm2 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vpsrlq $32, %ymm4, %ymm3 + vpblendd $-86, %ymm6, %ymm3, %ymm3 + vmovsldup %ymm5, %ymm4 + vpblendd $-86, %ymm4, %ymm7, %ymm4 + vpsrlq $32, %ymm7, %ymm6 + vpblendd $-86, %ymm5, %ymm6, %ymm5 + vmovsldup %ymm0, %ymm6 + vpblendd $-86, %ymm6, %ymm1, %ymm6 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm0, %ymm1, %ymm0 + vpunpcklqdq %ymm4, %ymm2, %ymm1 + vpunpckhqdq %ymm4, %ymm2, %ymm2 + vpunpcklqdq %ymm3, %ymm6, %ymm4 + vpunpckhqdq %ymm3, %ymm6, %ymm3 + vpunpcklqdq %ymm0, %ymm5, %ymm6 + vpunpckhqdq %ymm0, %ymm5, %ymm0 + vperm2i128 $32, %ymm4, %ymm1, %ymm5 + vperm2i128 $49, %ymm4, %ymm1, %ymm1 + vperm2i128 $32, %ymm2, %ymm6, %ymm4 + vperm2i128 $49, %ymm2, %ymm6, %ymm2 + vperm2i128 $32, %ymm0, %ymm3, %ymm6 + vperm2i128 $49, %ymm0, %ymm3, %ymm0 + vmovdqu %ymm5, 192(%rcx) + vmovdqu %ymm4, 224(%rcx) + vmovdqu %ymm6, 256(%rcx) + vmovdqu %ymm1, 288(%rcx) + vmovdqu %ymm2, 320(%rcx) + vmovdqu %ymm0, 352(%rcx) + ret +L_poly_sub$1: + vmovdqu (%rsi), %ymm0 + vmovdqu (%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, (%rcx) + vmovdqu 32(%rsi), %ymm0 + vmovdqu 32(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rcx) + vmovdqu 64(%rsi), %ymm0 + vmovdqu 64(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 64(%rcx) + vmovdqu 96(%rsi), %ymm0 + vmovdqu 96(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 96(%rcx) + vmovdqu 128(%rsi), %ymm0 + vmovdqu 128(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 128(%rcx) + vmovdqu 160(%rsi), %ymm0 + vmovdqu 160(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 160(%rcx) + vmovdqu 192(%rsi), %ymm0 + vmovdqu 192(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 192(%rcx) + vmovdqu 224(%rsi), %ymm0 + vmovdqu 224(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 224(%rcx) + vmovdqu 256(%rsi), %ymm0 + vmovdqu 256(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 256(%rcx) + vmovdqu 288(%rsi), %ymm0 + vmovdqu 288(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 288(%rcx) + vmovdqu 320(%rsi), %ymm0 + vmovdqu 320(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 320(%rcx) + vmovdqu 352(%rsi), %ymm0 + vmovdqu 352(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 352(%rcx) + vmovdqu 384(%rsi), %ymm0 + vmovdqu 384(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 384(%rcx) + vmovdqu 416(%rsi), %ymm0 + vmovdqu 416(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 416(%rcx) + vmovdqu 448(%rsi), %ymm0 + vmovdqu 448(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 448(%rcx) + vmovdqu 480(%rsi), %ymm0 + vmovdqu 480(%rdi), %ymm1 + vpsubw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_ntt$1: + leaq glob_data + 1280(%rip), %rsi + vmovdqu glob_data + 448(%rip), %ymm0 + vpbroadcastd (%rsi), %ymm1 + vpbroadcastd 4(%rsi), %ymm2 + vmovdqu (%rcx), %ymm3 + vmovdqu 32(%rcx), %ymm14 + vmovdqu 64(%rcx), %ymm4 + vmovdqu 96(%rcx), %ymm5 + vmovdqu 256(%rcx), %ymm6 + vmovdqu 288(%rcx), %ymm7 + vmovdqu 320(%rcx), %ymm12 + vmovdqu 352(%rcx), %ymm8 + vpmullw %ymm6, %ymm1, %ymm9 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmullw %ymm7, %ymm1, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm15 + vpmullw %ymm12, %ymm1, %ymm11 + vpmulhw %ymm12, %ymm2, %ymm7 + vpmullw %ymm8, %ymm1, %ymm12 + vpmulhw %ymm8, %ymm2, %ymm8 + vpmulhw %ymm0, %ymm9, %ymm9 + vpmulhw %ymm0, %ymm10, %ymm10 + vpmulhw %ymm0, %ymm11, %ymm11 + vpmulhw %ymm0, %ymm12, %ymm12 + vpsubw %ymm15, %ymm14, %ymm13 + vpaddw %ymm14, %ymm15, %ymm14 + vpsubw %ymm6, %ymm3, %ymm15 + vpaddw %ymm3, %ymm6, %ymm3 + vpsubw %ymm8, %ymm5, %ymm6 + vpaddw %ymm5, %ymm8, %ymm5 + vpsubw %ymm7, %ymm4, %ymm8 + vpaddw %ymm4, %ymm7, %ymm4 + vpaddw %ymm15, %ymm9, %ymm7 + vpsubw %ymm9, %ymm3, %ymm3 + vpaddw %ymm13, %ymm10, %ymm9 + vpsubw %ymm10, %ymm14, %ymm10 + vpaddw %ymm8, %ymm11, %ymm8 + vpsubw %ymm11, %ymm4, %ymm4 + vpaddw %ymm6, %ymm12, %ymm6 + vpsubw %ymm12, %ymm5, %ymm5 + vmovdqu %ymm3, (%rcx) + vmovdqu %ymm10, 32(%rcx) + vmovdqu %ymm4, 64(%rcx) + vmovdqu %ymm5, 96(%rcx) + vmovdqu %ymm7, 256(%rcx) + vmovdqu %ymm9, 288(%rcx) + vmovdqu %ymm8, 320(%rcx) + vmovdqu %ymm6, 352(%rcx) + vmovdqu 128(%rcx), %ymm3 + vmovdqu 160(%rcx), %ymm12 + vmovdqu 192(%rcx), %ymm4 + vmovdqu 224(%rcx), %ymm5 + vmovdqu 384(%rcx), %ymm6 + vmovdqu 416(%rcx), %ymm7 + vmovdqu 448(%rcx), %ymm10 + vmovdqu 480(%rcx), %ymm11 + vpmullw %ymm6, %ymm1, %ymm14 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmullw %ymm7, %ymm1, %ymm8 + vpmulhw %ymm7, %ymm2, %ymm13 + vpmullw %ymm10, %ymm1, %ymm9 + vpmulhw %ymm10, %ymm2, %ymm7 + vpmullw %ymm11, %ymm1, %ymm10 + vpmulhw %ymm11, %ymm2, %ymm1 + vpmulhw %ymm0, %ymm14, %ymm2 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhw %ymm0, %ymm9, %ymm9 + vpmulhw %ymm0, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm6, %ymm3, %ymm13 + vpaddw %ymm3, %ymm6, %ymm3 + vpsubw %ymm1, %ymm5, %ymm6 + vpaddw %ymm5, %ymm1, %ymm1 + vpsubw %ymm7, %ymm4, %ymm5 + vpaddw %ymm4, %ymm7, %ymm4 + vpaddw %ymm13, %ymm2, %ymm7 + vpsubw %ymm2, %ymm3, %ymm2 + vpaddw %ymm11, %ymm8, %ymm3 + vpsubw %ymm8, %ymm12, %ymm8 + vpaddw %ymm5, %ymm9, %ymm5 + vpsubw %ymm9, %ymm4, %ymm9 + vpaddw %ymm6, %ymm10, %ymm4 + vpsubw %ymm10, %ymm1, %ymm14 + vmovdqu %ymm7, 384(%rcx) + vmovdqu %ymm3, 416(%rcx) + vmovdqu %ymm5, 448(%rcx) + vmovdqu %ymm4, 480(%rcx) + vpbroadcastd 8(%rsi), %ymm1 + vpbroadcastd 12(%rsi), %ymm4 + vmovdqu %ymm8, %ymm10 + vmovdqu %ymm9, %ymm3 + vmovdqu (%rcx), %ymm6 + vmovdqu 32(%rcx), %ymm5 + vmovdqu 64(%rcx), %ymm9 + vmovdqu 96(%rcx), %ymm7 + vpmullw %ymm2, %ymm1, %ymm11 + vpmulhw %ymm2, %ymm4, %ymm8 + vpmullw %ymm10, %ymm1, %ymm13 + vpmulhw %ymm10, %ymm4, %ymm12 + vpmullw %ymm3, %ymm1, %ymm2 + vpmulhw %ymm3, %ymm4, %ymm10 + vpmullw %ymm14, %ymm1, %ymm3 + vpmulhw %ymm14, %ymm4, %ymm14 + vpmulhw %ymm0, %ymm11, %ymm11 + vpmulhw %ymm0, %ymm13, %ymm1 + vpmulhw %ymm0, %ymm2, %ymm2 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm12, %ymm5, %ymm4 + vpaddw %ymm5, %ymm12, %ymm5 + vpsubw %ymm8, %ymm6, %ymm12 + vpaddw %ymm6, %ymm8, %ymm13 + vpsubw %ymm14, %ymm7, %ymm6 + vpaddw %ymm7, %ymm14, %ymm7 + vpsubw %ymm10, %ymm9, %ymm8 + vpaddw %ymm9, %ymm10, %ymm9 + vpaddw %ymm12, %ymm11, %ymm10 + vpsubw %ymm11, %ymm13, %ymm12 + vpaddw %ymm4, %ymm1, %ymm4 + vpsubw %ymm1, %ymm5, %ymm5 + vpaddw %ymm8, %ymm2, %ymm8 + vpsubw %ymm2, %ymm9, %ymm2 + vpaddw %ymm6, %ymm3, %ymm13 + vpsubw %ymm3, %ymm7, %ymm7 + vmovdqu 16(%rsi), %ymm3 + vmovdqu 48(%rsi), %ymm6 + vperm2i128 $32, %ymm10, %ymm12, %ymm11 + vperm2i128 $49, %ymm10, %ymm12, %ymm9 + vperm2i128 $32, %ymm4, %ymm5, %ymm1 + vperm2i128 $49, %ymm4, %ymm5, %ymm12 + vperm2i128 $32, %ymm8, %ymm2, %ymm5 + vperm2i128 $49, %ymm8, %ymm2, %ymm8 + vperm2i128 $32, %ymm13, %ymm7, %ymm2 + vperm2i128 $49, %ymm13, %ymm7, %ymm13 + vpmullw %ymm5, %ymm3, %ymm4 + vpmulhw %ymm5, %ymm6, %ymm10 + vpmullw %ymm8, %ymm3, %ymm14 + vpmulhw %ymm8, %ymm6, %ymm8 + vpmullw %ymm2, %ymm3, %ymm5 + vpmulhw %ymm2, %ymm6, %ymm2 + vpmullw %ymm13, %ymm3, %ymm7 + vpmulhw %ymm13, %ymm6, %ymm13 + vpmulhw %ymm0, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm14, %ymm4 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm7, %ymm6 + vpsubw %ymm8, %ymm9, %ymm7 + vpaddw %ymm9, %ymm8, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 80(%rsi), %ymm1 + vmovdqu 112(%rsi), %ymm10 + vpunpcklqdq %ymm2, %ymm9, %ymm5 + vpunpckhqdq %ymm2, %ymm9, %ymm12 + vpunpcklqdq %ymm3, %ymm4, %ymm8 + vpunpckhqdq %ymm3, %ymm4, %ymm6 + vpunpcklqdq %ymm7, %ymm13, %ymm2 + vpunpckhqdq %ymm7, %ymm13, %ymm4 + vpunpcklqdq %ymm11, %ymm14, %ymm3 + vpunpckhqdq %ymm11, %ymm14, %ymm7 + vpmullw %ymm2, %ymm1, %ymm11 + vpmulhw %ymm2, %ymm10, %ymm13 + vpmullw %ymm4, %ymm1, %ymm14 + vpmulhw %ymm4, %ymm10, %ymm4 + vpmullw %ymm3, %ymm1, %ymm2 + vpmulhw %ymm3, %ymm10, %ymm9 + vpmullw %ymm7, %ymm1, %ymm3 + vpmulhw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm0, %ymm11, %ymm10 + vpmulhw %ymm0, %ymm14, %ymm1 + vpmulhw %ymm0, %ymm2, %ymm2 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm4, %ymm12, %ymm11 + vpaddw %ymm12, %ymm4, %ymm4 + vpsubw %ymm13, %ymm5, %ymm12 + vpaddw %ymm5, %ymm13, %ymm13 + vpsubw %ymm7, %ymm6, %ymm5 + vpaddw %ymm6, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpaddw %ymm12, %ymm10, %ymm9 + vpsubw %ymm10, %ymm13, %ymm12 + vpaddw %ymm11, %ymm1, %ymm10 + vpsubw %ymm1, %ymm4, %ymm4 + vpaddw %ymm7, %ymm2, %ymm7 + vpsubw %ymm2, %ymm8, %ymm2 + vpaddw %ymm5, %ymm3, %ymm13 + vpsubw %ymm3, %ymm6, %ymm6 + vmovdqu 144(%rsi), %ymm3 + vmovdqu 176(%rsi), %ymm5 + vmovsldup %ymm9, %ymm1 + vpblendd $-86, %ymm1, %ymm12, %ymm11 + vpsrlq $32, %ymm12, %ymm1 + vpblendd $-86, %ymm9, %ymm1, %ymm8 + vmovsldup %ymm10, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm1 + vpsrlq $32, %ymm4, %ymm4 + vpblendd $-86, %ymm10, %ymm4, %ymm12 + vmovsldup %ymm7, %ymm4 + vpblendd $-86, %ymm4, %ymm2, %ymm9 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm7, %ymm2, %ymm7 + vmovsldup %ymm13, %ymm2 + vpblendd $-86, %ymm2, %ymm6, %ymm2 + vpsrlq $32, %ymm6, %ymm4 + vpblendd $-86, %ymm13, %ymm4, %ymm13 + vpmullw %ymm9, %ymm3, %ymm4 + vpmulhw %ymm9, %ymm5, %ymm10 + vpmullw %ymm7, %ymm3, %ymm14 + vpmulhw %ymm7, %ymm5, %ymm9 + vpmullw %ymm2, %ymm3, %ymm6 + vpmulhw %ymm2, %ymm5, %ymm2 + vpmullw %ymm13, %ymm3, %ymm7 + vpmulhw %ymm13, %ymm5, %ymm13 + vpmulhw %ymm0, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm14, %ymm4 + vpmulhw %ymm0, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 208(%rsi), %ymm5 + vmovdqu 240(%rsi), %ymm6 + vpslld $16, %ymm2, %ymm1 + vpblendw $-86, %ymm1, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm8 + vpslld $16, %ymm3, %ymm1 + vpblendw $-86, %ymm1, %ymm4, %ymm1 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm12 + vpslld $16, %ymm7, %ymm2 + vpblendw $-86, %ymm2, %ymm13, %ymm4 + vpsrld $16, %ymm13, %ymm2 + vpblendw $-86, %ymm7, %ymm2, %ymm7 + vpslld $16, %ymm11, %ymm2 + vpblendw $-86, %ymm2, %ymm14, %ymm2 + vpsrld $16, %ymm14, %ymm3 + vpblendw $-86, %ymm11, %ymm3, %ymm13 + vpmullw %ymm4, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm6, %ymm11 + vpmullw %ymm7, %ymm5, %ymm4 + vpmulhw %ymm7, %ymm6, %ymm9 + vpmullw %ymm2, %ymm5, %ymm7 + vpmulhw %ymm2, %ymm6, %ymm2 + vpmullw %ymm13, %ymm5, %ymm14 + vpmulhw %ymm13, %ymm6, %ymm13 + vpmulhw %ymm0, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm4, %ymm4 + vpmulhw %ymm0, %ymm7, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm11, %ymm10, %ymm9 + vpaddw %ymm10, %ymm11, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm3 + vpaddw %ymm7, %ymm4, %ymm7 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm8 + vpsubw %ymm5, %ymm1, %ymm1 + vpaddw %ymm11, %ymm6, %ymm5 + vpsubw %ymm6, %ymm12, %ymm10 + vmovdqu 272(%rsi), %ymm9 + vmovdqu 304(%rsi), %ymm13 + vmovdqu 336(%rsi), %ymm11 + vmovdqu 368(%rsi), %ymm6 + vpmullw %ymm1, %ymm9, %ymm14 + vpmulhw %ymm1, %ymm13, %ymm12 + vpmullw %ymm10, %ymm9, %ymm9 + vpmulhw %ymm10, %ymm13, %ymm13 + vpmullw %ymm8, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm6, %ymm1 + vpmullw %ymm5, %ymm11, %ymm11 + vpmulhw %ymm5, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpmulhw %ymm0, %ymm9, %ymm8 + vpmulhw %ymm0, %ymm10, %ymm9 + vpmulhw %ymm0, %ymm11, %ymm10 + vpsubw %ymm13, %ymm4, %ymm11 + vpaddw %ymm4, %ymm13, %ymm4 + vpsubw %ymm12, %ymm3, %ymm13 + vpaddw %ymm3, %ymm12, %ymm3 + vpsubw %ymm5, %ymm7, %ymm12 + vpaddw %ymm7, %ymm5, %ymm5 + vpsubw %ymm1, %ymm2, %ymm7 + vpaddw %ymm2, %ymm1, %ymm1 + vpaddw %ymm13, %ymm6, %ymm2 + vpsubw %ymm6, %ymm3, %ymm3 + vpaddw %ymm11, %ymm8, %ymm6 + vpsubw %ymm8, %ymm4, %ymm4 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm9, %ymm1, %ymm8 + vpaddw %ymm12, %ymm10, %ymm1 + vpsubw %ymm10, %ymm5, %ymm5 + vmovdqu glob_data + 384(%rip), %ymm9 + vpmulhw %ymm9, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm3 + vpmulhw %ymm9, %ymm4, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm9, %ymm8, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm8, %ymm8 + vpmulhw %ymm9, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm5 + vpmulhw %ymm9, %ymm2, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm2, %ymm2 + vpmulhw %ymm9, %ymm6, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm6, %ymm6 + vpmulhw %ymm9, %ymm7, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm9, %ymm1, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm9 + vpsubw %ymm9, %ymm1, %ymm1 + vmovdqu %ymm3, (%rcx) + vmovdqu %ymm4, 32(%rcx) + vmovdqu %ymm2, 64(%rcx) + vmovdqu %ymm6, 96(%rcx) + vmovdqu %ymm8, 128(%rcx) + vmovdqu %ymm5, 160(%rcx) + vmovdqu %ymm7, 192(%rcx) + vmovdqu %ymm1, 224(%rcx) + vpbroadcastd 400(%rsi), %ymm5 + vpbroadcastd 404(%rsi), %ymm8 + vmovdqu 384(%rcx), %ymm1 + vmovdqu 416(%rcx), %ymm2 + vmovdqu 448(%rcx), %ymm10 + vmovdqu 480(%rcx), %ymm9 + vmovdqu 256(%rcx), %ymm3 + vmovdqu 288(%rcx), %ymm7 + vmovdqu 320(%rcx), %ymm6 + vmovdqu 352(%rcx), %ymm4 + vpmullw %ymm1, %ymm5, %ymm14 + vpmulhw %ymm1, %ymm8, %ymm12 + vpmullw %ymm2, %ymm5, %ymm1 + vpmulhw %ymm2, %ymm8, %ymm11 + vpmullw %ymm10, %ymm5, %ymm2 + vpmulhw %ymm10, %ymm8, %ymm13 + vpmullw %ymm9, %ymm5, %ymm10 + vpmulhw %ymm9, %ymm8, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm8 + vpmulhw %ymm0, %ymm1, %ymm9 + vpmulhw %ymm0, %ymm2, %ymm1 + vpmulhw %ymm0, %ymm10, %ymm2 + vpsubw %ymm11, %ymm7, %ymm10 + vpaddw %ymm7, %ymm11, %ymm11 + vpsubw %ymm12, %ymm3, %ymm7 + vpaddw %ymm3, %ymm12, %ymm12 + vpsubw %ymm5, %ymm4, %ymm3 + vpaddw %ymm4, %ymm5, %ymm4 + vpsubw %ymm13, %ymm6, %ymm5 + vpaddw %ymm6, %ymm13, %ymm6 + vpaddw %ymm7, %ymm8, %ymm7 + vpsubw %ymm8, %ymm12, %ymm12 + vpaddw %ymm10, %ymm9, %ymm8 + vpsubw %ymm9, %ymm11, %ymm9 + vpaddw %ymm5, %ymm1, %ymm5 + vpsubw %ymm1, %ymm6, %ymm6 + vpaddw %ymm3, %ymm2, %ymm13 + vpsubw %ymm2, %ymm4, %ymm2 + vmovdqu 408(%rsi), %ymm3 + vmovdqu 440(%rsi), %ymm4 + vperm2i128 $32, %ymm7, %ymm12, %ymm10 + vperm2i128 $49, %ymm7, %ymm12, %ymm11 + vperm2i128 $32, %ymm8, %ymm9, %ymm1 + vperm2i128 $49, %ymm8, %ymm9, %ymm12 + vperm2i128 $32, %ymm5, %ymm6, %ymm8 + vperm2i128 $49, %ymm5, %ymm6, %ymm5 + vperm2i128 $32, %ymm13, %ymm2, %ymm6 + vperm2i128 $49, %ymm13, %ymm2, %ymm13 + vpmullw %ymm8, %ymm3, %ymm7 + vpmulhw %ymm8, %ymm4, %ymm14 + vpmullw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm5, %ymm4, %ymm8 + vpmullw %ymm6, %ymm3, %ymm5 + vpmulhw %ymm6, %ymm4, %ymm2 + vpmullw %ymm13, %ymm3, %ymm6 + vpmulhw %ymm13, %ymm4, %ymm13 + vpmulhw %ymm0, %ymm7, %ymm3 + vpmulhw %ymm0, %ymm9, %ymm4 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm8, %ymm11, %ymm7 + vpaddw %ymm11, %ymm8, %ymm8 + vpsubw %ymm14, %ymm10, %ymm9 + vpaddw %ymm10, %ymm14, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 472(%rsi), %ymm1 + vmovdqu 504(%rsi), %ymm10 + vpunpcklqdq %ymm2, %ymm9, %ymm5 + vpunpckhqdq %ymm2, %ymm9, %ymm12 + vpunpcklqdq %ymm3, %ymm4, %ymm8 + vpunpckhqdq %ymm3, %ymm4, %ymm6 + vpunpcklqdq %ymm7, %ymm13, %ymm2 + vpunpckhqdq %ymm7, %ymm13, %ymm4 + vpunpcklqdq %ymm11, %ymm14, %ymm3 + vpunpckhqdq %ymm11, %ymm14, %ymm7 + vpmullw %ymm2, %ymm1, %ymm11 + vpmulhw %ymm2, %ymm10, %ymm13 + vpmullw %ymm4, %ymm1, %ymm14 + vpmulhw %ymm4, %ymm10, %ymm4 + vpmullw %ymm3, %ymm1, %ymm2 + vpmulhw %ymm3, %ymm10, %ymm9 + vpmullw %ymm7, %ymm1, %ymm3 + vpmulhw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm0, %ymm11, %ymm10 + vpmulhw %ymm0, %ymm14, %ymm1 + vpmulhw %ymm0, %ymm2, %ymm2 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm4, %ymm12, %ymm11 + vpaddw %ymm12, %ymm4, %ymm4 + vpsubw %ymm13, %ymm5, %ymm12 + vpaddw %ymm5, %ymm13, %ymm13 + vpsubw %ymm7, %ymm6, %ymm5 + vpaddw %ymm6, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpaddw %ymm12, %ymm10, %ymm9 + vpsubw %ymm10, %ymm13, %ymm12 + vpaddw %ymm11, %ymm1, %ymm10 + vpsubw %ymm1, %ymm4, %ymm4 + vpaddw %ymm7, %ymm2, %ymm7 + vpsubw %ymm2, %ymm8, %ymm2 + vpaddw %ymm5, %ymm3, %ymm13 + vpsubw %ymm3, %ymm6, %ymm6 + vmovdqu 536(%rsi), %ymm3 + vmovdqu 568(%rsi), %ymm5 + vmovsldup %ymm9, %ymm1 + vpblendd $-86, %ymm1, %ymm12, %ymm11 + vpsrlq $32, %ymm12, %ymm1 + vpblendd $-86, %ymm9, %ymm1, %ymm8 + vmovsldup %ymm10, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm1 + vpsrlq $32, %ymm4, %ymm4 + vpblendd $-86, %ymm10, %ymm4, %ymm12 + vmovsldup %ymm7, %ymm4 + vpblendd $-86, %ymm4, %ymm2, %ymm9 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm7, %ymm2, %ymm7 + vmovsldup %ymm13, %ymm2 + vpblendd $-86, %ymm2, %ymm6, %ymm2 + vpsrlq $32, %ymm6, %ymm4 + vpblendd $-86, %ymm13, %ymm4, %ymm13 + vpmullw %ymm9, %ymm3, %ymm4 + vpmulhw %ymm9, %ymm5, %ymm10 + vpmullw %ymm7, %ymm3, %ymm14 + vpmulhw %ymm7, %ymm5, %ymm9 + vpmullw %ymm2, %ymm3, %ymm6 + vpmulhw %ymm2, %ymm5, %ymm2 + vpmullw %ymm13, %ymm3, %ymm7 + vpmulhw %ymm13, %ymm5, %ymm13 + vpmulhw %ymm0, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm14, %ymm4 + vpmulhw %ymm0, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm7, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm9 + vpaddw %ymm7, %ymm4, %ymm3 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm7 + vpsubw %ymm5, %ymm1, %ymm13 + vpaddw %ymm11, %ymm6, %ymm11 + vpsubw %ymm6, %ymm12, %ymm14 + vmovdqu 600(%rsi), %ymm5 + vmovdqu 632(%rsi), %ymm6 + vpslld $16, %ymm2, %ymm1 + vpblendw $-86, %ymm1, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm1 + vpblendw $-86, %ymm2, %ymm1, %ymm8 + vpslld $16, %ymm3, %ymm1 + vpblendw $-86, %ymm1, %ymm4, %ymm1 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm12 + vpslld $16, %ymm7, %ymm2 + vpblendw $-86, %ymm2, %ymm13, %ymm4 + vpsrld $16, %ymm13, %ymm2 + vpblendw $-86, %ymm7, %ymm2, %ymm7 + vpslld $16, %ymm11, %ymm2 + vpblendw $-86, %ymm2, %ymm14, %ymm2 + vpsrld $16, %ymm14, %ymm3 + vpblendw $-86, %ymm11, %ymm3, %ymm13 + vpmullw %ymm4, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm6, %ymm11 + vpmullw %ymm7, %ymm5, %ymm4 + vpmulhw %ymm7, %ymm6, %ymm9 + vpmullw %ymm2, %ymm5, %ymm7 + vpmulhw %ymm2, %ymm6, %ymm2 + vpmullw %ymm13, %ymm5, %ymm14 + vpmulhw %ymm13, %ymm6, %ymm13 + vpmulhw %ymm0, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm4, %ymm4 + vpmulhw %ymm0, %ymm7, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpsubw %ymm9, %ymm8, %ymm7 + vpaddw %ymm8, %ymm9, %ymm8 + vpsubw %ymm11, %ymm10, %ymm9 + vpaddw %ymm10, %ymm11, %ymm10 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpsubw %ymm2, %ymm1, %ymm13 + vpaddw %ymm1, %ymm2, %ymm1 + vpaddw %ymm9, %ymm3, %ymm2 + vpsubw %ymm3, %ymm10, %ymm3 + vpaddw %ymm7, %ymm4, %ymm7 + vpsubw %ymm4, %ymm8, %ymm4 + vpaddw %ymm13, %ymm5, %ymm8 + vpsubw %ymm5, %ymm1, %ymm1 + vpaddw %ymm11, %ymm6, %ymm5 + vpsubw %ymm6, %ymm12, %ymm10 + vmovdqu 664(%rsi), %ymm9 + vmovdqu 696(%rsi), %ymm13 + vmovdqu 728(%rsi), %ymm11 + vmovdqu 760(%rsi), %ymm6 + vpmullw %ymm1, %ymm9, %ymm14 + vpmulhw %ymm1, %ymm13, %ymm12 + vpmullw %ymm10, %ymm9, %ymm9 + vpmulhw %ymm10, %ymm13, %ymm13 + vpmullw %ymm8, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm6, %ymm1 + vpmullw %ymm5, %ymm11, %ymm11 + vpmulhw %ymm5, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm14, %ymm6 + vpmulhw %ymm0, %ymm9, %ymm8 + vpmulhw %ymm0, %ymm10, %ymm9 + vpmulhw %ymm0, %ymm11, %ymm10 + vpsubw %ymm13, %ymm4, %ymm11 + vpaddw %ymm4, %ymm13, %ymm4 + vpsubw %ymm12, %ymm3, %ymm13 + vpaddw %ymm3, %ymm12, %ymm3 + vpsubw %ymm5, %ymm7, %ymm12 + vpaddw %ymm7, %ymm5, %ymm5 + vpsubw %ymm1, %ymm2, %ymm7 + vpaddw %ymm2, %ymm1, %ymm1 + vpaddw %ymm13, %ymm6, %ymm2 + vpsubw %ymm6, %ymm3, %ymm3 + vpaddw %ymm11, %ymm8, %ymm6 + vpsubw %ymm8, %ymm4, %ymm4 + vpaddw %ymm7, %ymm9, %ymm7 + vpsubw %ymm9, %ymm1, %ymm8 + vpaddw %ymm12, %ymm10, %ymm1 + vpsubw %ymm10, %ymm5, %ymm5 + vmovdqu glob_data + 384(%rip), %ymm9 + vpmulhw %ymm9, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm3 + vpmulhw %ymm9, %ymm4, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm9, %ymm8, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm8, %ymm8 + vpmulhw %ymm9, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm5 + vpmulhw %ymm9, %ymm2, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm2, %ymm2 + vpmulhw %ymm9, %ymm6, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm6, %ymm6 + vpmulhw %ymm9, %ymm7, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm9, %ymm1, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm0 + vpsubw %ymm0, %ymm1, %ymm0 + vmovdqu %ymm3, 256(%rcx) + vmovdqu %ymm4, 288(%rcx) + vmovdqu %ymm2, 320(%rcx) + vmovdqu %ymm6, 352(%rcx) + vmovdqu %ymm8, 384(%rcx) + vmovdqu %ymm5, 416(%rcx) + vmovdqu %ymm7, 448(%rcx) + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_invntt$1: + leaq glob_data + 480(%rip), %rsi + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu (%rsi), %ymm12 + vmovdqu 64(%rsi), %ymm1 + vmovdqu 32(%rsi), %ymm2 + vmovdqu 96(%rsi), %ymm5 + vmovdqu (%rcx), %ymm3 + vmovdqu 32(%rcx), %ymm4 + vmovdqu 64(%rcx), %ymm15 + vmovdqu 96(%rcx), %ymm11 + vmovdqu 128(%rcx), %ymm7 + vmovdqu 160(%rcx), %ymm8 + vmovdqu 192(%rcx), %ymm13 + vmovdqu 224(%rcx), %ymm14 + vpsubw %ymm15, %ymm3, %ymm6 + vpsubw %ymm11, %ymm4, %ymm9 + vpsubw %ymm13, %ymm7, %ymm10 + vpaddw %ymm3, %ymm15, %ymm3 + vpaddw %ymm4, %ymm11, %ymm4 + vpmullw %ymm6, %ymm12, %ymm11 + vpaddw %ymm7, %ymm13, %ymm7 + vpmullw %ymm9, %ymm12, %ymm12 + vpsubw %ymm14, %ymm8, %ymm13 + vpaddw %ymm8, %ymm14, %ymm8 + vpmullw %ymm10, %ymm1, %ymm14 + vpmullw %ymm13, %ymm1, %ymm1 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmulhw %ymm9, %ymm2, %ymm2 + vpmulhw %ymm10, %ymm5, %ymm9 + vpmulhw %ymm13, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm10 + vpmulhw %ymm12, %ymm0, %ymm11 + vpmulhw %ymm14, %ymm0, %ymm12 + vpmulhw %ymm1, %ymm0, %ymm1 + vpsubw %ymm10, %ymm6, %ymm6 + vpsubw %ymm11, %ymm2, %ymm11 + vpsubw %ymm12, %ymm9, %ymm9 + vpsubw %ymm1, %ymm5, %ymm13 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu 128(%rsi), %ymm2 + vmovdqu 160(%rsi), %ymm5 + vpmulhw %ymm1, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm10 + vpmulhw %ymm1, %ymm4, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm12 + vpmulhw %ymm1, %ymm7, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm7, %ymm7 + vpmulhw %ymm1, %ymm8, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm8, %ymm8 + vpsubw %ymm7, %ymm10, %ymm15 + vpsubw %ymm8, %ymm12, %ymm3 + vpsubw %ymm9, %ymm6, %ymm4 + vpaddw %ymm10, %ymm7, %ymm7 + vpaddw %ymm12, %ymm8, %ymm8 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm6, %ymm9, %ymm9 + vpmullw %ymm3, %ymm2, %ymm6 + vpsubw %ymm13, %ymm11, %ymm12 + vpaddw %ymm11, %ymm13, %ymm11 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm12, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm12, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm6, %ymm0, %ymm12 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm6 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm12, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm6, %ymm5, %ymm5 + vpslld $16, %ymm8, %ymm6 + vpblendw $-86, %ymm6, %ymm7, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpblendw $-86, %ymm8, %ymm7, %ymm7 + vpslld $16, %ymm11, %ymm8 + vpblendw $-86, %ymm8, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm11, %ymm8, %ymm11 + vpslld $16, %ymm3, %ymm8 + vpblendw $-86, %ymm8, %ymm2, %ymm8 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm9 + vpslld $16, %ymm5, %ymm2 + vpblendw $-86, %ymm2, %ymm4, %ymm12 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm5, %ymm2, %ymm13 + vmovdqu 192(%rsi), %ymm2 + vmovdqu 224(%rsi), %ymm5 + vpsubw %ymm7, %ymm6, %ymm15 + vpsubw %ymm11, %ymm10, %ymm3 + vpsubw %ymm9, %ymm8, %ymm4 + vpaddw %ymm6, %ymm7, %ymm6 + vpaddw %ymm10, %ymm11, %ymm7 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm8, %ymm9, %ymm8 + vpmullw %ymm3, %ymm2, %ymm9 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm11, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm11, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm9, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm9 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm11, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm9, %ymm5, %ymm5 + vpmulhw %ymm1, %ymm6, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm9 + vpsubw %ymm9, %ymm6, %ymm6 + vmovsldup %ymm7, %ymm9 + vpblendd $-86, %ymm9, %ymm6, %ymm9 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm7, %ymm6, %ymm10 + vmovsldup %ymm12, %ymm6 + vpblendd $-86, %ymm6, %ymm8, %ymm11 + vpsrlq $32, %ymm8, %ymm6 + vpblendd $-86, %ymm12, %ymm6, %ymm14 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm2, %ymm12 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm13 + vmovsldup %ymm5, %ymm2 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vpsrlq $32, %ymm4, %ymm3 + vpblendd $-86, %ymm5, %ymm3, %ymm3 + vmovdqu 256(%rsi), %ymm4 + vmovdqu 288(%rsi), %ymm5 + vpsubw %ymm10, %ymm9, %ymm6 + vpsubw %ymm14, %ymm11, %ymm7 + vpsubw %ymm13, %ymm12, %ymm8 + vpaddw %ymm9, %ymm10, %ymm9 + vpaddw %ymm11, %ymm14, %ymm10 + vpmullw %ymm6, %ymm4, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm7, %ymm4, %ymm13 + vpsubw %ymm3, %ymm2, %ymm14 + vpaddw %ymm2, %ymm3, %ymm2 + vpmullw %ymm8, %ymm4, %ymm3 + vpmullw %ymm14, %ymm4, %ymm4 + vpmulhw %ymm6, %ymm5, %ymm6 + vpmulhw %ymm7, %ymm5, %ymm7 + vpmulhw %ymm8, %ymm5, %ymm8 + vpmulhw %ymm14, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm3, %ymm0, %ymm3 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm11, %ymm6, %ymm6 + vpsubw %ymm13, %ymm7, %ymm7 + vpsubw %ymm3, %ymm8, %ymm3 + vpsubw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm1, %ymm9, %ymm5 + vpsraw $10, %ymm5, %ymm5 + vpmullw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm9, %ymm8 + vpunpcklqdq %ymm10, %ymm8, %ymm5 + vpunpckhqdq %ymm10, %ymm8, %ymm8 + vpunpcklqdq %ymm2, %ymm12, %ymm9 + vpunpckhqdq %ymm2, %ymm12, %ymm2 + vpunpcklqdq %ymm7, %ymm6, %ymm10 + vpunpckhqdq %ymm7, %ymm6, %ymm6 + vpunpcklqdq %ymm4, %ymm3, %ymm7 + vpunpckhqdq %ymm4, %ymm3, %ymm3 + vmovdqu 320(%rsi), %ymm4 + vmovdqu 352(%rsi), %ymm11 + vpsubw %ymm8, %ymm5, %ymm12 + vpsubw %ymm2, %ymm9, %ymm13 + vpsubw %ymm6, %ymm10, %ymm14 + vpaddw %ymm5, %ymm8, %ymm5 + vpaddw %ymm9, %ymm2, %ymm2 + vpmullw %ymm12, %ymm4, %ymm8 + vpaddw %ymm10, %ymm6, %ymm6 + vpmullw %ymm13, %ymm4, %ymm9 + vpsubw %ymm3, %ymm7, %ymm10 + vpaddw %ymm7, %ymm3, %ymm3 + vpmullw %ymm14, %ymm4, %ymm7 + vpmullw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm8, %ymm12, %ymm8 + vpsubw %ymm9, %ymm13, %ymm9 + vpsubw %ymm7, %ymm14, %ymm7 + vpsubw %ymm4, %ymm10, %ymm4 + vpmulhw %ymm1, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm10 + vperm2i128 $32, %ymm2, %ymm10, %ymm5 + vperm2i128 $49, %ymm2, %ymm10, %ymm2 + vperm2i128 $32, %ymm3, %ymm6, %ymm10 + vperm2i128 $49, %ymm3, %ymm6, %ymm3 + vperm2i128 $32, %ymm9, %ymm8, %ymm6 + vperm2i128 $49, %ymm9, %ymm8, %ymm8 + vperm2i128 $32, %ymm4, %ymm7, %ymm9 + vperm2i128 $49, %ymm4, %ymm7, %ymm4 + vpbroadcastd 384(%rsi), %ymm7 + vpbroadcastd 388(%rsi), %ymm11 + vpsubw %ymm2, %ymm5, %ymm12 + vpsubw %ymm3, %ymm10, %ymm13 + vpsubw %ymm8, %ymm6, %ymm14 + vpaddw %ymm5, %ymm2, %ymm2 + vpaddw %ymm10, %ymm3, %ymm3 + vpmullw %ymm12, %ymm7, %ymm5 + vpaddw %ymm6, %ymm8, %ymm6 + vpmullw %ymm13, %ymm7, %ymm8 + vpsubw %ymm4, %ymm9, %ymm10 + vpaddw %ymm9, %ymm4, %ymm4 + vpmullw %ymm14, %ymm7, %ymm9 + vpmullw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm5, %ymm0, %ymm5 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpsubw %ymm5, %ymm12, %ymm5 + vpsubw %ymm8, %ymm13, %ymm8 + vpsubw %ymm9, %ymm14, %ymm9 + vpsubw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm1 + vpsubw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, (%rcx) + vmovdqu %ymm3, 32(%rcx) + vmovdqu %ymm6, 64(%rcx) + vmovdqu %ymm4, 96(%rcx) + vmovdqu %ymm5, 128(%rcx) + vmovdqu %ymm8, 160(%rcx) + vmovdqu %ymm9, 192(%rcx) + vmovdqu %ymm7, 224(%rcx) + vmovdqu 392(%rsi), %ymm12 + vmovdqu 456(%rsi), %ymm1 + vmovdqu 424(%rsi), %ymm2 + vmovdqu 488(%rsi), %ymm5 + vmovdqu 256(%rcx), %ymm3 + vmovdqu 288(%rcx), %ymm4 + vmovdqu 320(%rcx), %ymm15 + vmovdqu 352(%rcx), %ymm11 + vmovdqu 384(%rcx), %ymm7 + vmovdqu 416(%rcx), %ymm8 + vmovdqu 448(%rcx), %ymm13 + vmovdqu 480(%rcx), %ymm14 + vpsubw %ymm15, %ymm3, %ymm6 + vpsubw %ymm11, %ymm4, %ymm9 + vpsubw %ymm13, %ymm7, %ymm10 + vpaddw %ymm3, %ymm15, %ymm3 + vpaddw %ymm4, %ymm11, %ymm4 + vpmullw %ymm6, %ymm12, %ymm11 + vpaddw %ymm7, %ymm13, %ymm7 + vpmullw %ymm9, %ymm12, %ymm12 + vpsubw %ymm14, %ymm8, %ymm13 + vpaddw %ymm8, %ymm14, %ymm8 + vpmullw %ymm10, %ymm1, %ymm14 + vpmullw %ymm13, %ymm1, %ymm1 + vpmulhw %ymm6, %ymm2, %ymm6 + vpmulhw %ymm9, %ymm2, %ymm2 + vpmulhw %ymm10, %ymm5, %ymm9 + vpmulhw %ymm13, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm10 + vpmulhw %ymm12, %ymm0, %ymm11 + vpmulhw %ymm14, %ymm0, %ymm12 + vpmulhw %ymm1, %ymm0, %ymm1 + vpsubw %ymm10, %ymm6, %ymm6 + vpsubw %ymm11, %ymm2, %ymm11 + vpsubw %ymm12, %ymm9, %ymm9 + vpsubw %ymm1, %ymm5, %ymm13 + vmovdqu glob_data + 384(%rip), %ymm1 + vmovdqu 520(%rsi), %ymm2 + vmovdqu 552(%rsi), %ymm5 + vpmulhw %ymm1, %ymm3, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm3, %ymm10 + vpmulhw %ymm1, %ymm4, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm12 + vpmulhw %ymm1, %ymm7, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm7, %ymm7 + vpmulhw %ymm1, %ymm8, %ymm3 + vpsraw $10, %ymm3, %ymm3 + vpmullw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm8, %ymm8 + vpsubw %ymm7, %ymm10, %ymm15 + vpsubw %ymm8, %ymm12, %ymm3 + vpsubw %ymm9, %ymm6, %ymm4 + vpaddw %ymm10, %ymm7, %ymm7 + vpaddw %ymm12, %ymm8, %ymm8 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm6, %ymm9, %ymm9 + vpmullw %ymm3, %ymm2, %ymm6 + vpsubw %ymm13, %ymm11, %ymm12 + vpaddw %ymm11, %ymm13, %ymm11 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm12, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm12, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm6, %ymm0, %ymm12 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm6 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm12, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm6, %ymm5, %ymm5 + vpslld $16, %ymm8, %ymm6 + vpblendw $-86, %ymm6, %ymm7, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpblendw $-86, %ymm8, %ymm7, %ymm7 + vpslld $16, %ymm11, %ymm8 + vpblendw $-86, %ymm8, %ymm9, %ymm10 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm11, %ymm8, %ymm11 + vpslld $16, %ymm3, %ymm8 + vpblendw $-86, %ymm8, %ymm2, %ymm8 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm9 + vpslld $16, %ymm5, %ymm2 + vpblendw $-86, %ymm2, %ymm4, %ymm12 + vpsrld $16, %ymm4, %ymm2 + vpblendw $-86, %ymm5, %ymm2, %ymm13 + vmovdqu 584(%rsi), %ymm2 + vmovdqu 616(%rsi), %ymm5 + vpsubw %ymm7, %ymm6, %ymm15 + vpsubw %ymm11, %ymm10, %ymm3 + vpsubw %ymm9, %ymm8, %ymm4 + vpaddw %ymm6, %ymm7, %ymm6 + vpaddw %ymm10, %ymm11, %ymm7 + vpmullw %ymm15, %ymm2, %ymm10 + vpaddw %ymm8, %ymm9, %ymm8 + vpmullw %ymm3, %ymm2, %ymm9 + vpsubw %ymm13, %ymm12, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm4, %ymm2, %ymm13 + vpmullw %ymm11, %ymm2, %ymm14 + vpmulhw %ymm15, %ymm5, %ymm2 + vpmulhw %ymm3, %ymm5, %ymm3 + vpmulhw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm11, %ymm5, %ymm5 + vpmulhw %ymm10, %ymm0, %ymm10 + vpmulhw %ymm9, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm14, %ymm0, %ymm9 + vpsubw %ymm10, %ymm2, %ymm2 + vpsubw %ymm11, %ymm3, %ymm3 + vpsubw %ymm13, %ymm4, %ymm4 + vpsubw %ymm9, %ymm5, %ymm5 + vpmulhw %ymm1, %ymm6, %ymm9 + vpsraw $10, %ymm9, %ymm9 + vpmullw %ymm0, %ymm9, %ymm9 + vpsubw %ymm9, %ymm6, %ymm6 + vmovsldup %ymm7, %ymm9 + vpblendd $-86, %ymm9, %ymm6, %ymm9 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm7, %ymm6, %ymm10 + vmovsldup %ymm12, %ymm6 + vpblendd $-86, %ymm6, %ymm8, %ymm11 + vpsrlq $32, %ymm8, %ymm6 + vpblendd $-86, %ymm12, %ymm6, %ymm14 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm2, %ymm12 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm13 + vmovsldup %ymm5, %ymm2 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vpsrlq $32, %ymm4, %ymm3 + vpblendd $-86, %ymm5, %ymm3, %ymm3 + vmovdqu 648(%rsi), %ymm4 + vmovdqu 680(%rsi), %ymm5 + vpsubw %ymm10, %ymm9, %ymm6 + vpsubw %ymm14, %ymm11, %ymm7 + vpsubw %ymm13, %ymm12, %ymm8 + vpaddw %ymm9, %ymm10, %ymm9 + vpaddw %ymm11, %ymm14, %ymm10 + vpmullw %ymm6, %ymm4, %ymm11 + vpaddw %ymm12, %ymm13, %ymm12 + vpmullw %ymm7, %ymm4, %ymm13 + vpsubw %ymm3, %ymm2, %ymm14 + vpaddw %ymm2, %ymm3, %ymm2 + vpmullw %ymm8, %ymm4, %ymm3 + vpmullw %ymm14, %ymm4, %ymm4 + vpmulhw %ymm6, %ymm5, %ymm6 + vpmulhw %ymm7, %ymm5, %ymm7 + vpmulhw %ymm8, %ymm5, %ymm8 + vpmulhw %ymm14, %ymm5, %ymm5 + vpmulhw %ymm11, %ymm0, %ymm11 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm3, %ymm0, %ymm3 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm11, %ymm6, %ymm6 + vpsubw %ymm13, %ymm7, %ymm7 + vpsubw %ymm3, %ymm8, %ymm3 + vpsubw %ymm4, %ymm5, %ymm4 + vpmulhw %ymm1, %ymm9, %ymm5 + vpsraw $10, %ymm5, %ymm5 + vpmullw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm9, %ymm8 + vpunpcklqdq %ymm10, %ymm8, %ymm5 + vpunpckhqdq %ymm10, %ymm8, %ymm8 + vpunpcklqdq %ymm2, %ymm12, %ymm9 + vpunpckhqdq %ymm2, %ymm12, %ymm2 + vpunpcklqdq %ymm7, %ymm6, %ymm10 + vpunpckhqdq %ymm7, %ymm6, %ymm6 + vpunpcklqdq %ymm4, %ymm3, %ymm7 + vpunpckhqdq %ymm4, %ymm3, %ymm3 + vmovdqu 712(%rsi), %ymm4 + vmovdqu 744(%rsi), %ymm11 + vpsubw %ymm8, %ymm5, %ymm12 + vpsubw %ymm2, %ymm9, %ymm13 + vpsubw %ymm6, %ymm10, %ymm14 + vpaddw %ymm5, %ymm8, %ymm5 + vpaddw %ymm9, %ymm2, %ymm2 + vpmullw %ymm12, %ymm4, %ymm8 + vpaddw %ymm10, %ymm6, %ymm6 + vpmullw %ymm13, %ymm4, %ymm9 + vpsubw %ymm3, %ymm7, %ymm10 + vpaddw %ymm7, %ymm3, %ymm3 + vpmullw %ymm14, %ymm4, %ymm7 + vpmullw %ymm10, %ymm4, %ymm4 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpmulhw %ymm4, %ymm0, %ymm4 + vpsubw %ymm8, %ymm12, %ymm8 + vpsubw %ymm9, %ymm13, %ymm9 + vpsubw %ymm7, %ymm14, %ymm7 + vpsubw %ymm4, %ymm10, %ymm4 + vpmulhw %ymm1, %ymm5, %ymm10 + vpsraw $10, %ymm10, %ymm10 + vpmullw %ymm0, %ymm10, %ymm10 + vpsubw %ymm10, %ymm5, %ymm10 + vperm2i128 $32, %ymm2, %ymm10, %ymm5 + vperm2i128 $49, %ymm2, %ymm10, %ymm2 + vperm2i128 $32, %ymm3, %ymm6, %ymm10 + vperm2i128 $49, %ymm3, %ymm6, %ymm3 + vperm2i128 $32, %ymm9, %ymm8, %ymm6 + vperm2i128 $49, %ymm9, %ymm8, %ymm8 + vperm2i128 $32, %ymm4, %ymm7, %ymm9 + vperm2i128 $49, %ymm4, %ymm7, %ymm4 + vpbroadcastd 776(%rsi), %ymm7 + vpbroadcastd 780(%rsi), %ymm11 + vpsubw %ymm2, %ymm5, %ymm12 + vpsubw %ymm3, %ymm10, %ymm13 + vpsubw %ymm8, %ymm6, %ymm14 + vpaddw %ymm5, %ymm2, %ymm2 + vpaddw %ymm10, %ymm3, %ymm3 + vpmullw %ymm12, %ymm7, %ymm5 + vpaddw %ymm6, %ymm8, %ymm6 + vpmullw %ymm13, %ymm7, %ymm8 + vpsubw %ymm4, %ymm9, %ymm10 + vpaddw %ymm9, %ymm4, %ymm4 + vpmullw %ymm14, %ymm7, %ymm9 + vpmullw %ymm10, %ymm7, %ymm7 + vpmulhw %ymm12, %ymm11, %ymm12 + vpmulhw %ymm13, %ymm11, %ymm13 + vpmulhw %ymm14, %ymm11, %ymm14 + vpmulhw %ymm10, %ymm11, %ymm10 + vpmulhw %ymm5, %ymm0, %ymm5 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpmulhw %ymm7, %ymm0, %ymm7 + vpsubw %ymm5, %ymm12, %ymm5 + vpsubw %ymm8, %ymm13, %ymm8 + vpsubw %ymm9, %ymm14, %ymm9 + vpsubw %ymm7, %ymm10, %ymm7 + vpmulhw %ymm1, %ymm2, %ymm1 + vpsraw $10, %ymm1, %ymm1 + vpmullw %ymm0, %ymm1, %ymm1 + vpsubw %ymm1, %ymm2, %ymm10 + vmovdqu %ymm5, 384(%rcx) + vmovdqu %ymm8, 416(%rcx) + vmovdqu %ymm9, 448(%rcx) + vmovdqu %ymm7, 480(%rcx) + vpbroadcastd 784(%rsi), %ymm1 + vpbroadcastd 788(%rsi), %ymm2 + vmovdqu %ymm4, %ymm7 + vmovdqu %ymm3, %ymm4 + vmovdqu %ymm10, %ymm3 + vmovdqu (%rcx), %ymm9 + vmovdqu 32(%rcx), %ymm13 + vmovdqu 64(%rcx), %ymm5 + vmovdqu 96(%rcx), %ymm8 + vpsubw %ymm3, %ymm9, %ymm10 + vpsubw %ymm4, %ymm13, %ymm11 + vpsubw %ymm6, %ymm5, %ymm12 + vpaddw %ymm9, %ymm3, %ymm3 + vpaddw %ymm13, %ymm4, %ymm4 + vpmullw %ymm10, %ymm1, %ymm13 + vpaddw %ymm5, %ymm6, %ymm5 + vpmullw %ymm11, %ymm1, %ymm6 + vpsubw %ymm7, %ymm8, %ymm14 + vpaddw %ymm8, %ymm7, %ymm7 + vpmullw %ymm12, %ymm1, %ymm8 + vpmullw %ymm14, %ymm1, %ymm9 + vpmulhw %ymm10, %ymm2, %ymm10 + vpmulhw %ymm11, %ymm2, %ymm11 + vpmulhw %ymm12, %ymm2, %ymm12 + vpmulhw %ymm14, %ymm2, %ymm14 + vpmulhw %ymm13, %ymm0, %ymm13 + vpmulhw %ymm6, %ymm0, %ymm6 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm9, %ymm0, %ymm9 + vpsubw %ymm13, %ymm10, %ymm10 + vpsubw %ymm6, %ymm11, %ymm6 + vpsubw %ymm8, %ymm12, %ymm11 + vpsubw %ymm9, %ymm14, %ymm12 + vmovdqu glob_data + 320(%rip), %ymm8 + vmovdqu glob_data + 352(%rip), %ymm9 + vmovdqu %ymm10, 256(%rcx) + vmovdqu %ymm6, 288(%rcx) + vmovdqu %ymm11, 320(%rcx) + vmovdqu %ymm12, 352(%rcx) + vpmullw %ymm3, %ymm8, %ymm6 + vpmulhw %ymm3, %ymm9, %ymm3 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm3, %ymm3 + vpmullw %ymm4, %ymm8, %ymm6 + vpmulhw %ymm4, %ymm9, %ymm4 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vpmullw %ymm5, %ymm8, %ymm6 + vpmulhw %ymm5, %ymm9, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm5, %ymm5 + vpmullw %ymm7, %ymm8, %ymm6 + vpmulhw %ymm7, %ymm9, %ymm7 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm7, %ymm6 + vmovdqu %ymm3, (%rcx) + vmovdqu %ymm4, 32(%rcx) + vmovdqu %ymm5, 64(%rcx) + vmovdqu %ymm6, 96(%rcx) + vmovdqu 384(%rcx), %ymm4 + vmovdqu 416(%rcx), %ymm5 + vmovdqu 448(%rcx), %ymm7 + vmovdqu 480(%rcx), %ymm10 + vmovdqu 128(%rcx), %ymm6 + vmovdqu 160(%rcx), %ymm9 + vmovdqu 192(%rcx), %ymm8 + vmovdqu 224(%rcx), %ymm11 + vpsubw %ymm4, %ymm6, %ymm12 + vpsubw %ymm5, %ymm9, %ymm13 + vpsubw %ymm7, %ymm8, %ymm3 + vpaddw %ymm6, %ymm4, %ymm4 + vpaddw %ymm9, %ymm5, %ymm5 + vpmullw %ymm12, %ymm1, %ymm6 + vpaddw %ymm8, %ymm7, %ymm7 + vpmullw %ymm13, %ymm1, %ymm8 + vpsubw %ymm10, %ymm11, %ymm9 + vpaddw %ymm11, %ymm10, %ymm10 + vpmullw %ymm3, %ymm1, %ymm11 + vpmullw %ymm9, %ymm1, %ymm1 + vpmulhw %ymm12, %ymm2, %ymm12 + vpmulhw %ymm13, %ymm2, %ymm13 + vpmulhw %ymm3, %ymm2, %ymm3 + vpmulhw %ymm9, %ymm2, %ymm2 + vpmulhw %ymm6, %ymm0, %ymm6 + vpmulhw %ymm8, %ymm0, %ymm8 + vpmulhw %ymm11, %ymm0, %ymm9 + vpmulhw %ymm1, %ymm0, %ymm11 + vpsubw %ymm6, %ymm12, %ymm1 + vpsubw %ymm8, %ymm13, %ymm6 + vpsubw %ymm9, %ymm3, %ymm8 + vpsubw %ymm11, %ymm2, %ymm9 + vmovdqu glob_data + 320(%rip), %ymm2 + vmovdqu glob_data + 352(%rip), %ymm3 + vmovdqu %ymm1, 384(%rcx) + vmovdqu %ymm6, 416(%rcx) + vmovdqu %ymm8, 448(%rcx) + vmovdqu %ymm9, 480(%rcx) + vpmullw %ymm4, %ymm2, %ymm1 + vpmulhw %ymm4, %ymm3, %ymm4 + vpmulhw %ymm0, %ymm1, %ymm1 + vpsubw %ymm1, %ymm4, %ymm1 + vpmullw %ymm5, %ymm2, %ymm4 + vpmulhw %ymm5, %ymm3, %ymm5 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm5, %ymm4 + vpmullw %ymm7, %ymm2, %ymm5 + vpmulhw %ymm7, %ymm3, %ymm6 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm6, %ymm5 + vpmullw %ymm10, %ymm2, %ymm2 + vpmulhw %ymm10, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm0 + vpsubw %ymm0, %ymm3, %ymm0 + vmovdqu %ymm1, 128(%rcx) + vmovdqu %ymm4, 160(%rcx) + vmovdqu %ymm5, 192(%rcx) + vmovdqu %ymm0, 224(%rcx) + ret +L_poly_getnoise_eta1_4x$1: + movq %rax, 1472(%rsp) + vmovdqu (%r10), %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 352(%rsp) + vmovdqu %ymm0, 512(%rsp) + movb %cl, 64(%rsp) + incb %cl + movb %cl, 224(%rsp) + incb %cl + movb %cl, 384(%rsp) + incb %cl + movb %cl, 544(%rsp) + leaq 672(%rsp), %rax + leaq 32(%rsp), %rcx + leaq 192(%rsp), %rdx + leaq 352(%rsp), %rsi + leaq 512(%rsp), %r11 + call L_shake256_absorb4x_33$1 +L_poly_getnoise_eta1_4x$3: + leaq 672(%rsp), %rax + leaq 32(%rsp), %rcx + leaq 192(%rsp), %rdx + leaq 352(%rsp), %rsi + leaq 512(%rsp), %r11 + movq %rcx, %rbx + movq %rdx, %rbp + movq %rsi, %r12 + leaq -824(%rsp), %rsp + call L_keccakf1600_4x_avx2$1 +L_poly_getnoise_eta1_4x$2: + leaq 824(%rsp), %rsp + vmovdqu (%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, (%rbx) + vmovhpd %xmm1, (%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, (%r12) + vmovhpd %xmm0, (%r11) + vmovdqu 32(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 8(%rbx) + vmovhpd %xmm1, 8(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 8(%r12) + vmovhpd %xmm0, 8(%r11) + vmovdqu 64(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 16(%rbx) + vmovhpd %xmm1, 16(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 16(%r12) + vmovhpd %xmm0, 16(%r11) + vmovdqu 96(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 24(%rbx) + vmovhpd %xmm1, 24(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 24(%r12) + vmovhpd %xmm0, 24(%r11) + vmovdqu 128(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 32(%rbx) + vmovhpd %xmm1, 32(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 32(%r12) + vmovhpd %xmm0, 32(%r11) + vmovdqu 160(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 40(%rbx) + vmovhpd %xmm1, 40(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 40(%r12) + vmovhpd %xmm0, 40(%r11) + vmovdqu 192(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 48(%rbx) + vmovhpd %xmm1, 48(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 48(%r12) + vmovhpd %xmm0, 48(%r11) + vmovdqu 224(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 56(%rbx) + vmovhpd %xmm1, 56(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 56(%r12) + vmovhpd %xmm0, 56(%r11) + vmovdqu 256(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 64(%rbx) + vmovhpd %xmm1, 64(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 64(%r12) + vmovhpd %xmm0, 64(%r11) + vmovdqu 288(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 72(%rbx) + vmovhpd %xmm1, 72(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 72(%r12) + vmovhpd %xmm0, 72(%r11) + vmovdqu 320(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 80(%rbx) + vmovhpd %xmm1, 80(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 80(%r12) + vmovhpd %xmm0, 80(%r11) + vmovdqu 352(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 88(%rbx) + vmovhpd %xmm1, 88(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 88(%r12) + vmovhpd %xmm0, 88(%r11) + vmovdqu 384(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 96(%rbx) + vmovhpd %xmm1, 96(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 96(%r12) + vmovhpd %xmm0, 96(%r11) + vmovdqu 416(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 104(%rbx) + vmovhpd %xmm1, 104(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 104(%r12) + vmovhpd %xmm0, 104(%r11) + vmovdqu 448(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 112(%rbx) + vmovhpd %xmm1, 112(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 112(%r12) + vmovhpd %xmm0, 112(%r11) + vmovdqu 480(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 120(%rbx) + vmovhpd %xmm1, 120(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 120(%r12) + vmovhpd %xmm0, 120(%r11) + vmovdqu 512(%rax), %ymm0 + vmovdqu %xmm0, %xmm1 + vmovlpd %xmm1, 128(%rbx) + vmovhpd %xmm1, 128(%rbp) + vextracti128 $1, %ymm0, %xmm0 + vmovlpd %xmm0, 128(%r12) + vmovhpd %xmm0, 128(%r11) + movq 1472(%rsp), %rax + leaq 32(%rsp), %rcx + movl $1431655765, 1480(%rsp) + movl $858993459, 1484(%rsp) + movl $50529027, 1488(%rsp) + movl $252645135, 1492(%rsp) + vpbroadcastd 1480(%rsp), %ymm0 + vpbroadcastd 1484(%rsp), %ymm1 + vpbroadcastd 1488(%rsp), %ymm2 + vpbroadcastd 1492(%rsp), %ymm3 + vmovdqu (%rcx), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, (%rax) + vmovdqu %ymm7, 32(%rax) + vmovdqu %ymm6, 64(%rax) + vmovdqu %ymm4, 96(%rax) + vmovdqu 32(%rcx), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 128(%rax) + vmovdqu %ymm7, 160(%rax) + vmovdqu %ymm6, 192(%rax) + vmovdqu %ymm4, 224(%rax) + vmovdqu 64(%rcx), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 256(%rax) + vmovdqu %ymm7, 288(%rax) + vmovdqu %ymm6, 320(%rax) + vmovdqu %ymm4, 352(%rax) + vmovdqu 96(%rcx), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm0 + vpaddb %ymm0, %ymm4, %ymm0 + vpsrlw $2, %ymm0, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpand %ymm4, %ymm1, %ymm4 + vpaddb %ymm1, %ymm0, %ymm0 + vpsubb %ymm4, %ymm0, %ymm0 + vpsrlw $4, %ymm0, %ymm1 + vpand %ymm0, %ymm3, %ymm0 + vpand %ymm1, %ymm3, %ymm1 + vpsubb %ymm2, %ymm0, %ymm0 + vpsubb %ymm2, %ymm1, %ymm1 + vpunpcklbw %ymm1, %ymm0, %ymm2 + vpunpckhbw %ymm1, %ymm0, %ymm0 + vmovdqu %xmm2, %xmm1 + vpmovsxbw %xmm1, %ymm1 + vextracti128 $1, %ymm2, %xmm2 + vpmovsxbw %xmm2, %ymm2 + vmovdqu %xmm0, %xmm3 + vpmovsxbw %xmm3, %ymm3 + vextracti128 $1, %ymm0, %xmm0 + vpmovsxbw %xmm0, %ymm0 + vmovdqu %ymm1, 384(%rax) + vmovdqu %ymm3, 416(%rax) + vmovdqu %ymm2, 448(%rax) + vmovdqu %ymm0, 480(%rax) + leaq 192(%rsp), %rax + movl $1431655765, 1492(%rsp) + movl $858993459, 1488(%rsp) + movl $50529027, 1484(%rsp) + movl $252645135, 1480(%rsp) + vpbroadcastd 1492(%rsp), %ymm0 + vpbroadcastd 1488(%rsp), %ymm1 + vpbroadcastd 1484(%rsp), %ymm2 + vpbroadcastd 1480(%rsp), %ymm3 + vmovdqu (%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, (%rdi) + vmovdqu %ymm7, 32(%rdi) + vmovdqu %ymm6, 64(%rdi) + vmovdqu %ymm4, 96(%rdi) + vmovdqu 32(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 128(%rdi) + vmovdqu %ymm7, 160(%rdi) + vmovdqu %ymm6, 192(%rdi) + vmovdqu %ymm4, 224(%rdi) + vmovdqu 64(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 256(%rdi) + vmovdqu %ymm7, 288(%rdi) + vmovdqu %ymm6, 320(%rdi) + vmovdqu %ymm4, 352(%rdi) + vmovdqu 96(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm0 + vpaddb %ymm0, %ymm4, %ymm0 + vpsrlw $2, %ymm0, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpand %ymm4, %ymm1, %ymm4 + vpaddb %ymm1, %ymm0, %ymm0 + vpsubb %ymm4, %ymm0, %ymm0 + vpsrlw $4, %ymm0, %ymm1 + vpand %ymm0, %ymm3, %ymm0 + vpand %ymm1, %ymm3, %ymm1 + vpsubb %ymm2, %ymm0, %ymm0 + vpsubb %ymm2, %ymm1, %ymm1 + vpunpcklbw %ymm1, %ymm0, %ymm2 + vpunpckhbw %ymm1, %ymm0, %ymm0 + vmovdqu %xmm2, %xmm1 + vpmovsxbw %xmm1, %ymm1 + vextracti128 $1, %ymm2, %xmm2 + vpmovsxbw %xmm2, %ymm2 + vmovdqu %xmm0, %xmm3 + vpmovsxbw %xmm3, %ymm3 + vextracti128 $1, %ymm0, %xmm0 + vpmovsxbw %xmm0, %ymm0 + vmovdqu %ymm1, 384(%rdi) + vmovdqu %ymm3, 416(%rdi) + vmovdqu %ymm2, 448(%rdi) + vmovdqu %ymm0, 480(%rdi) + leaq 352(%rsp), %rax + movl $1431655765, 1480(%rsp) + movl $858993459, 1484(%rsp) + movl $50529027, 1488(%rsp) + movl $252645135, 1492(%rsp) + vpbroadcastd 1480(%rsp), %ymm0 + vpbroadcastd 1484(%rsp), %ymm1 + vpbroadcastd 1488(%rsp), %ymm2 + vpbroadcastd 1492(%rsp), %ymm3 + vmovdqu (%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, (%r8) + vmovdqu %ymm7, 32(%r8) + vmovdqu %ymm6, 64(%r8) + vmovdqu %ymm4, 96(%r8) + vmovdqu 32(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 128(%r8) + vmovdqu %ymm7, 160(%r8) + vmovdqu %ymm6, 192(%r8) + vmovdqu %ymm4, 224(%r8) + vmovdqu 64(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 256(%r8) + vmovdqu %ymm7, 288(%r8) + vmovdqu %ymm6, 320(%r8) + vmovdqu %ymm4, 352(%r8) + vmovdqu 96(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm0 + vpaddb %ymm0, %ymm4, %ymm0 + vpsrlw $2, %ymm0, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpand %ymm4, %ymm1, %ymm4 + vpaddb %ymm1, %ymm0, %ymm0 + vpsubb %ymm4, %ymm0, %ymm0 + vpsrlw $4, %ymm0, %ymm1 + vpand %ymm0, %ymm3, %ymm0 + vpand %ymm1, %ymm3, %ymm1 + vpsubb %ymm2, %ymm0, %ymm0 + vpsubb %ymm2, %ymm1, %ymm1 + vpunpcklbw %ymm1, %ymm0, %ymm2 + vpunpckhbw %ymm1, %ymm0, %ymm0 + vmovdqu %xmm2, %xmm1 + vpmovsxbw %xmm1, %ymm1 + vextracti128 $1, %ymm2, %xmm2 + vpmovsxbw %xmm2, %ymm2 + vmovdqu %xmm0, %xmm3 + vpmovsxbw %xmm3, %ymm3 + vextracti128 $1, %ymm0, %xmm0 + vpmovsxbw %xmm0, %ymm0 + vmovdqu %ymm1, 384(%r8) + vmovdqu %ymm3, 416(%r8) + vmovdqu %ymm2, 448(%r8) + vmovdqu %ymm0, 480(%r8) + leaq 512(%rsp), %rax + movl $1431655765, 1492(%rsp) + movl $858993459, 1488(%rsp) + movl $50529027, 1484(%rsp) + movl $252645135, 1480(%rsp) + vpbroadcastd 1492(%rsp), %ymm0 + vpbroadcastd 1488(%rsp), %ymm1 + vpbroadcastd 1484(%rsp), %ymm2 + vpbroadcastd 1480(%rsp), %ymm3 + vmovdqu (%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, (%r9) + vmovdqu %ymm7, 32(%r9) + vmovdqu %ymm6, 64(%r9) + vmovdqu %ymm4, 96(%r9) + vmovdqu 32(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 128(%r9) + vmovdqu %ymm7, 160(%r9) + vmovdqu %ymm6, 192(%r9) + vmovdqu %ymm4, 224(%r9) + vmovdqu 64(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm5 + vpaddb %ymm5, %ymm4, %ymm4 + vpsrlw $2, %ymm4, %ymm5 + vpand %ymm4, %ymm1, %ymm4 + vpand %ymm5, %ymm1, %ymm5 + vpaddb %ymm1, %ymm4, %ymm4 + vpsubb %ymm5, %ymm4, %ymm4 + vpsrlw $4, %ymm4, %ymm5 + vpand %ymm4, %ymm3, %ymm4 + vpand %ymm5, %ymm3, %ymm5 + vpsubb %ymm2, %ymm4, %ymm4 + vpsubb %ymm2, %ymm5, %ymm5 + vpunpcklbw %ymm5, %ymm4, %ymm6 + vpunpckhbw %ymm5, %ymm4, %ymm4 + vmovdqu %xmm6, %xmm5 + vpmovsxbw %xmm5, %ymm5 + vextracti128 $1, %ymm6, %xmm6 + vpmovsxbw %xmm6, %ymm6 + vmovdqu %xmm4, %xmm7 + vpmovsxbw %xmm7, %ymm7 + vextracti128 $1, %ymm4, %xmm4 + vpmovsxbw %xmm4, %ymm4 + vmovdqu %ymm5, 256(%r9) + vmovdqu %ymm7, 288(%r9) + vmovdqu %ymm6, 320(%r9) + vmovdqu %ymm4, 352(%r9) + vmovdqu 96(%rax), %ymm4 + vpsrlw $1, %ymm4, %ymm5 + vpand %ymm4, %ymm0, %ymm4 + vpand %ymm5, %ymm0, %ymm0 + vpaddb %ymm0, %ymm4, %ymm0 + vpsrlw $2, %ymm0, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpand %ymm4, %ymm1, %ymm4 + vpaddb %ymm1, %ymm0, %ymm0 + vpsubb %ymm4, %ymm0, %ymm0 + vpsrlw $4, %ymm0, %ymm1 + vpand %ymm0, %ymm3, %ymm0 + vpand %ymm1, %ymm3, %ymm1 + vpsubb %ymm2, %ymm0, %ymm0 + vpsubb %ymm2, %ymm1, %ymm1 + vpunpcklbw %ymm1, %ymm0, %ymm2 + vpunpckhbw %ymm1, %ymm0, %ymm0 + vmovdqu %xmm2, %xmm1 + vpmovsxbw %xmm1, %ymm1 + vextracti128 $1, %ymm2, %xmm2 + vpmovsxbw %xmm2, %ymm2 + vmovdqu %xmm0, %xmm3 + vpmovsxbw %xmm3, %ymm3 + vextracti128 $1, %ymm0, %xmm0 + vpmovsxbw %xmm0, %ymm0 + vmovdqu %ymm1, 384(%r9) + vmovdqu %ymm3, 416(%r9) + vmovdqu %ymm2, 448(%r9) + vmovdqu %ymm0, 480(%r9) + ret +L_poly_frommsg_1$1: + leaq glob_data + 256(%rip), %rsi + vmovdqu (%rsi), %ymm0 + vbroadcasti128 glob_data + 4112(%rip), %ymm1 + vbroadcasti128 glob_data + 4096(%rip), %ymm2 + vmovdqu (%rdi), %ymm3 + vpshufd $0, %ymm3, %ymm4 + vpsllvd %ymm1, %ymm4, %ymm4 + vpshufb %ymm2, %ymm4, %ymm4 + vpsllw $12, %ymm4, %ymm5 + vpsllw $8, %ymm4, %ymm6 + vpsllw $4, %ymm4, %ymm7 + vpsraw $15, %ymm5, %ymm5 + vpsraw $15, %ymm6, %ymm6 + vpsraw $15, %ymm7, %ymm7 + vpsraw $15, %ymm4, %ymm4 + vpand %ymm0, %ymm5, %ymm5 + vpand %ymm0, %ymm6, %ymm6 + vpand %ymm0, %ymm7, %ymm7 + vpand %ymm0, %ymm4, %ymm4 + vpunpcklqdq %ymm6, %ymm5, %ymm8 + vpunpckhqdq %ymm6, %ymm5, %ymm5 + vpunpcklqdq %ymm4, %ymm7, %ymm6 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vperm2i128 $32, %ymm4, %ymm5, %ymm8 + vperm2i128 $49, %ymm4, %ymm5, %ymm4 + vmovdqu %ymm7, (%rax) + vmovdqu %ymm8, 32(%rax) + vmovdqu %ymm6, 256(%rax) + vmovdqu %ymm4, 288(%rax) + vpshufd $85, %ymm3, %ymm4 + vpsllvd %ymm1, %ymm4, %ymm4 + vpshufb %ymm2, %ymm4, %ymm4 + vpsllw $12, %ymm4, %ymm5 + vpsllw $8, %ymm4, %ymm6 + vpsllw $4, %ymm4, %ymm7 + vpsraw $15, %ymm5, %ymm5 + vpsraw $15, %ymm6, %ymm6 + vpsraw $15, %ymm7, %ymm7 + vpsraw $15, %ymm4, %ymm4 + vpand %ymm0, %ymm5, %ymm5 + vpand %ymm0, %ymm6, %ymm6 + vpand %ymm0, %ymm7, %ymm7 + vpand %ymm0, %ymm4, %ymm4 + vpunpcklqdq %ymm6, %ymm5, %ymm8 + vpunpckhqdq %ymm6, %ymm5, %ymm5 + vpunpcklqdq %ymm4, %ymm7, %ymm6 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vperm2i128 $32, %ymm4, %ymm5, %ymm8 + vperm2i128 $49, %ymm4, %ymm5, %ymm4 + vmovdqu %ymm7, 64(%rax) + vmovdqu %ymm8, 96(%rax) + vmovdqu %ymm6, 320(%rax) + vmovdqu %ymm4, 352(%rax) + vpshufd $-86, %ymm3, %ymm4 + vpsllvd %ymm1, %ymm4, %ymm4 + vpshufb %ymm2, %ymm4, %ymm4 + vpsllw $12, %ymm4, %ymm5 + vpsllw $8, %ymm4, %ymm6 + vpsllw $4, %ymm4, %ymm7 + vpsraw $15, %ymm5, %ymm5 + vpsraw $15, %ymm6, %ymm6 + vpsraw $15, %ymm7, %ymm7 + vpsraw $15, %ymm4, %ymm4 + vpand %ymm0, %ymm5, %ymm5 + vpand %ymm0, %ymm6, %ymm6 + vpand %ymm0, %ymm7, %ymm7 + vpand %ymm0, %ymm4, %ymm4 + vpunpcklqdq %ymm6, %ymm5, %ymm8 + vpunpckhqdq %ymm6, %ymm5, %ymm5 + vpunpcklqdq %ymm4, %ymm7, %ymm6 + vpunpckhqdq %ymm4, %ymm7, %ymm4 + vperm2i128 $32, %ymm6, %ymm8, %ymm7 + vperm2i128 $49, %ymm6, %ymm8, %ymm6 + vperm2i128 $32, %ymm4, %ymm5, %ymm8 + vperm2i128 $49, %ymm4, %ymm5, %ymm4 + vmovdqu %ymm7, 128(%rax) + vmovdqu %ymm8, 160(%rax) + vmovdqu %ymm6, 384(%rax) + vmovdqu %ymm4, 416(%rax) + vpshufd $-1, %ymm3, %ymm3 + vpsllvd %ymm1, %ymm3, %ymm1 + vpshufb %ymm2, %ymm1, %ymm1 + vpsllw $12, %ymm1, %ymm2 + vpsllw $8, %ymm1, %ymm3 + vpsllw $4, %ymm1, %ymm4 + vpsraw $15, %ymm2, %ymm2 + vpsraw $15, %ymm3, %ymm3 + vpsraw $15, %ymm4, %ymm4 + vpsraw $15, %ymm1, %ymm1 + vpand %ymm0, %ymm2, %ymm2 + vpand %ymm0, %ymm3, %ymm3 + vpand %ymm0, %ymm4, %ymm4 + vpand %ymm0, %ymm1, %ymm0 + vpunpcklqdq %ymm3, %ymm2, %ymm1 + vpunpckhqdq %ymm3, %ymm2, %ymm2 + vpunpcklqdq %ymm0, %ymm4, %ymm3 + vpunpckhqdq %ymm0, %ymm4, %ymm0 + vperm2i128 $32, %ymm3, %ymm1, %ymm4 + vperm2i128 $49, %ymm3, %ymm1, %ymm1 + vperm2i128 $32, %ymm0, %ymm2, %ymm3 + vperm2i128 $49, %ymm0, %ymm2, %ymm0 + vmovdqu %ymm4, 192(%rax) + vmovdqu %ymm3, 224(%rax) + vmovdqu %ymm1, 448(%rax) + vmovdqu %ymm0, 480(%rax) + ret +L_poly_frommont$1: + leaq glob_data + 448(%rip), %rcx + vmovdqu (%rcx), %ymm0 + leaq glob_data + 416(%rip), %rcx + vmovdqu (%rcx), %ymm1 + leaq glob_data + 160(%rip), %rcx + vmovdqu (%rcx), %ymm2 + vmovdqu (%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, (%rax) + vmovdqu 32(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 32(%rax) + vmovdqu 64(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 64(%rax) + vmovdqu 96(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 96(%rax) + vmovdqu 128(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 128(%rax) + vmovdqu 160(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 160(%rax) + vmovdqu 192(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 192(%rax) + vmovdqu 224(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 224(%rax) + vmovdqu 256(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 256(%rax) + vmovdqu 288(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 288(%rax) + vmovdqu 320(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 320(%rax) + vmovdqu 352(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 352(%rax) + vmovdqu 384(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 384(%rax) + vmovdqu 416(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 416(%rax) + vmovdqu 448(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm3 + vpmullw %ymm1, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm4, %ymm3 + vmovdqu %ymm3, 448(%rax) + vmovdqu 480(%rax), %ymm3 + vpmulhw %ymm2, %ymm3, %ymm4 + vpmullw %ymm2, %ymm3, %ymm2 + vpmullw %ymm1, %ymm2, %ymm1 + vpmulhw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm4, %ymm0 + vmovdqu %ymm0, 480(%rax) + ret +L_poly_frombytes$1: + leaq glob_data + 288(%rip), %r9 + vmovdqu (%r9), %ymm0 + vmovdqu (%rsi), %ymm1 + vmovdqu 32(%rsi), %ymm2 + vmovdqu 64(%rsi), %ymm3 + vmovdqu 96(%rsi), %ymm4 + vmovdqu 128(%rsi), %ymm5 + vmovdqu 160(%rsi), %ymm6 + vperm2i128 $32, %ymm4, %ymm1, %ymm7 + vperm2i128 $49, %ymm4, %ymm1, %ymm4 + vperm2i128 $32, %ymm5, %ymm2, %ymm8 + vperm2i128 $49, %ymm5, %ymm2, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm5 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vpunpcklqdq %ymm1, %ymm7, %ymm6 + vpunpckhqdq %ymm1, %ymm7, %ymm1 + vpunpcklqdq %ymm5, %ymm4, %ymm2 + vpunpckhqdq %ymm5, %ymm4, %ymm5 + vpunpcklqdq %ymm3, %ymm8, %ymm7 + vpunpckhqdq %ymm3, %ymm8, %ymm3 + vmovsldup %ymm5, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm5, %ymm6, %ymm5 + vmovsldup %ymm7, %ymm6 + vpblendd $-86, %ymm6, %ymm1, %ymm6 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm7, %ymm1, %ymm7 + vmovsldup %ymm3, %ymm1 + vpblendd $-86, %ymm1, %ymm2, %ymm1 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm2 + vpslld $16, %ymm7, %ymm3 + vpblendw $-86, %ymm3, %ymm4, %ymm3 + vpsrld $16, %ymm4, %ymm4 + vpblendw $-86, %ymm7, %ymm4, %ymm4 + vpslld $16, %ymm1, %ymm7 + vpblendw $-86, %ymm7, %ymm5, %ymm7 + vpsrld $16, %ymm5, %ymm5 + vpblendw $-86, %ymm1, %ymm5, %ymm1 + vpslld $16, %ymm2, %ymm5 + vpblendw $-86, %ymm5, %ymm6, %ymm5 + vpsrld $16, %ymm6, %ymm6 + vpblendw $-86, %ymm2, %ymm6, %ymm2 + vpsrlw $12, %ymm3, %ymm6 + vpsllw $4, %ymm4, %ymm8 + vpor %ymm8, %ymm6, %ymm6 + vpand %ymm3, %ymm0, %ymm3 + vpand %ymm6, %ymm0, %ymm6 + vpsrlw $8, %ymm4, %ymm4 + vpsllw $8, %ymm7, %ymm8 + vpor %ymm8, %ymm4, %ymm4 + vpand %ymm4, %ymm0, %ymm4 + vpsrlw $4, %ymm7, %ymm7 + vpand %ymm7, %ymm0, %ymm7 + vpsrlw $12, %ymm1, %ymm8 + vpsllw $4, %ymm5, %ymm9 + vpor %ymm9, %ymm8, %ymm8 + vpand %ymm1, %ymm0, %ymm1 + vpand %ymm8, %ymm0, %ymm8 + vpsrlw $8, %ymm5, %ymm5 + vpsllw $8, %ymm2, %ymm9 + vpor %ymm9, %ymm5, %ymm5 + vpand %ymm5, %ymm0, %ymm5 + vpsrlw $4, %ymm2, %ymm2 + vpand %ymm2, %ymm0, %ymm2 + vmovdqu %ymm3, (%r8) + vmovdqu %ymm6, 32(%r8) + vmovdqu %ymm4, 64(%r8) + vmovdqu %ymm7, 96(%r8) + vmovdqu %ymm1, 128(%r8) + vmovdqu %ymm8, 160(%r8) + vmovdqu %ymm5, 192(%r8) + vmovdqu %ymm2, 224(%r8) + vmovdqu 192(%rsi), %ymm1 + vmovdqu 224(%rsi), %ymm2 + vmovdqu 256(%rsi), %ymm3 + vmovdqu 288(%rsi), %ymm4 + vmovdqu 320(%rsi), %ymm5 + vmovdqu 352(%rsi), %ymm6 + vperm2i128 $32, %ymm4, %ymm1, %ymm7 + vperm2i128 $49, %ymm4, %ymm1, %ymm4 + vperm2i128 $32, %ymm5, %ymm2, %ymm8 + vperm2i128 $49, %ymm5, %ymm2, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm5 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vpunpcklqdq %ymm1, %ymm7, %ymm6 + vpunpckhqdq %ymm1, %ymm7, %ymm1 + vpunpcklqdq %ymm5, %ymm4, %ymm2 + vpunpckhqdq %ymm5, %ymm4, %ymm5 + vpunpcklqdq %ymm3, %ymm8, %ymm7 + vpunpckhqdq %ymm3, %ymm8, %ymm3 + vmovsldup %ymm5, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm6 + vpblendd $-86, %ymm5, %ymm6, %ymm5 + vmovsldup %ymm7, %ymm6 + vpblendd $-86, %ymm6, %ymm1, %ymm6 + vpsrlq $32, %ymm1, %ymm1 + vpblendd $-86, %ymm7, %ymm1, %ymm7 + vmovsldup %ymm3, %ymm1 + vpblendd $-86, %ymm1, %ymm2, %ymm1 + vpsrlq $32, %ymm2, %ymm2 + vpblendd $-86, %ymm3, %ymm2, %ymm2 + vpslld $16, %ymm7, %ymm3 + vpblendw $-86, %ymm3, %ymm4, %ymm3 + vpsrld $16, %ymm4, %ymm4 + vpblendw $-86, %ymm7, %ymm4, %ymm4 + vpslld $16, %ymm1, %ymm7 + vpblendw $-86, %ymm7, %ymm5, %ymm7 + vpsrld $16, %ymm5, %ymm5 + vpblendw $-86, %ymm1, %ymm5, %ymm1 + vpslld $16, %ymm2, %ymm5 + vpblendw $-86, %ymm5, %ymm6, %ymm5 + vpsrld $16, %ymm6, %ymm6 + vpblendw $-86, %ymm2, %ymm6, %ymm2 + vpsrlw $12, %ymm3, %ymm6 + vpsllw $4, %ymm4, %ymm8 + vpor %ymm8, %ymm6, %ymm6 + vpand %ymm3, %ymm0, %ymm3 + vpand %ymm6, %ymm0, %ymm6 + vpsrlw $8, %ymm4, %ymm4 + vpsllw $8, %ymm7, %ymm8 + vpor %ymm8, %ymm4, %ymm4 + vpand %ymm4, %ymm0, %ymm4 + vpsrlw $4, %ymm7, %ymm7 + vpand %ymm7, %ymm0, %ymm7 + vpsrlw $12, %ymm1, %ymm8 + vpsllw $4, %ymm5, %ymm9 + vpor %ymm9, %ymm8, %ymm8 + vpand %ymm1, %ymm0, %ymm1 + vpand %ymm8, %ymm0, %ymm8 + vpsrlw $8, %ymm5, %ymm5 + vpsllw $8, %ymm2, %ymm9 + vpor %ymm9, %ymm5, %ymm5 + vpand %ymm5, %ymm0, %ymm5 + vpsrlw $4, %ymm2, %ymm2 + vpand %ymm2, %ymm0, %ymm0 + vmovdqu %ymm3, 256(%r8) + vmovdqu %ymm6, 288(%r8) + vmovdqu %ymm4, 320(%r8) + vmovdqu %ymm7, 352(%r8) + vmovdqu %ymm1, 384(%r8) + vmovdqu %ymm8, 416(%r8) + vmovdqu %ymm5, 448(%r8) + vmovdqu %ymm0, 480(%r8) + ret +L_poly_decompress$1: + leaq glob_data + 448(%rip), %rdi + vmovdqu (%rdi), %ymm0 + leaq glob_data + 96(%rip), %rdi + vmovdqu (%rdi), %ymm1 + vpbroadcastd glob_data + 6412(%rip), %ymm2 + vpbroadcastd glob_data + 6408(%rip), %ymm3 + vpxor %ymm4, %ymm4, %ymm4 + movq (%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, (%rcx) + movq 8(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 32(%rcx) + movq 16(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 64(%rcx) + movq 24(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 96(%rcx) + movq 32(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 128(%rcx) + movq 40(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 160(%rcx) + movq 48(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 192(%rcx) + movq 56(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 224(%rcx) + movq 64(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 256(%rcx) + movq 72(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 288(%rcx) + movq 80(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 320(%rcx) + movq 88(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 352(%rcx) + movq 96(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 384(%rcx) + movq 104(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 416(%rcx) + movq 112(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm4 + vpand %ymm2, %ymm4, %ymm4 + vpmullw %ymm3, %ymm4, %ymm4 + vpmulhrsw %ymm0, %ymm4, %ymm4 + vmovdqu %ymm4, 448(%rcx) + movq 120(%rsi), %xmm4 + vmovdqu %xmm4, 16(%rsp) + vbroadcasti128 16(%rsp), %ymm4 + vpshufb %ymm1, %ymm4, %ymm1 + vpand %ymm2, %ymm1, %ymm1 + vpmullw %ymm3, %ymm1, %ymm1 + vpmulhrsw %ymm0, %ymm1, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_compress_1$1: + call L_poly_csubq$1 +L_poly_compress_1$2: + leaq glob_data + 384(%rip), %rdx + vmovdqu (%rdx), %ymm0 + vpbroadcastw glob_data + 6428(%rip), %ymm1 + vpbroadcastw glob_data + 6426(%rip), %ymm2 + vpbroadcastw glob_data + 6424(%rip), %ymm3 + vmovdqu glob_data + 128(%rip), %ymm4 + vmovdqu (%rcx), %ymm5 + vmovdqu 32(%rcx), %ymm6 + vmovdqu 64(%rcx), %ymm7 + vmovdqu 96(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, (%rax) + vmovdqu 128(%rcx), %ymm5 + vmovdqu 160(%rcx), %ymm6 + vmovdqu 192(%rcx), %ymm7 + vmovdqu 224(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 32(%rax) + vmovdqu 256(%rcx), %ymm5 + vmovdqu 288(%rcx), %ymm6 + vmovdqu 320(%rcx), %ymm7 + vmovdqu 352(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 64(%rax) + vmovdqu 384(%rcx), %ymm5 + vmovdqu 416(%rcx), %ymm6 + vmovdqu 448(%rcx), %ymm7 + vmovdqu 480(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm0 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm0, %ymm0 + vpand %ymm2, %ymm5, %ymm1 + vpand %ymm2, %ymm6, %ymm5 + vpand %ymm2, %ymm7, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpackuswb %ymm5, %ymm1, %ymm1 + vpackuswb %ymm0, %ymm6, %ymm0 + vpmaddubsw %ymm3, %ymm1, %ymm1 + vpmaddubsw %ymm3, %ymm0, %ymm0 + vpackuswb %ymm0, %ymm1, %ymm0 + vpermd %ymm0, %ymm4, %ymm0 + vmovdqu %ymm0, 96(%rax) + ret +L_poly_compress$1: + call L_poly_csubq$1 +L_poly_compress$2: + leaq glob_data + 384(%rip), %rdx + vmovdqu (%rdx), %ymm0 + vpbroadcastw glob_data + 6428(%rip), %ymm1 + vpbroadcastw glob_data + 6426(%rip), %ymm2 + vpbroadcastw glob_data + 6424(%rip), %ymm3 + vmovdqu glob_data + 128(%rip), %ymm4 + vmovdqu (%rcx), %ymm5 + vmovdqu 32(%rcx), %ymm6 + vmovdqu 64(%rcx), %ymm7 + vmovdqu 96(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, (%rax) + vmovdqu 128(%rcx), %ymm5 + vmovdqu 160(%rcx), %ymm6 + vmovdqu 192(%rcx), %ymm7 + vmovdqu 224(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 32(%rax) + vmovdqu 256(%rcx), %ymm5 + vmovdqu 288(%rcx), %ymm6 + vmovdqu 320(%rcx), %ymm7 + vmovdqu 352(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm8 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm8, %ymm8 + vpand %ymm2, %ymm5, %ymm5 + vpand %ymm2, %ymm6, %ymm6 + vpand %ymm2, %ymm7, %ymm7 + vpand %ymm2, %ymm8, %ymm8 + vpackuswb %ymm6, %ymm5, %ymm5 + vpackuswb %ymm8, %ymm7, %ymm6 + vpmaddubsw %ymm3, %ymm5, %ymm5 + vpmaddubsw %ymm3, %ymm6, %ymm6 + vpackuswb %ymm6, %ymm5, %ymm5 + vpermd %ymm5, %ymm4, %ymm5 + vmovdqu %ymm5, 64(%rax) + vmovdqu 384(%rcx), %ymm5 + vmovdqu 416(%rcx), %ymm6 + vmovdqu 448(%rcx), %ymm7 + vmovdqu 480(%rcx), %ymm8 + vpmulhw %ymm0, %ymm5, %ymm5 + vpmulhw %ymm0, %ymm6, %ymm6 + vpmulhw %ymm0, %ymm7, %ymm7 + vpmulhw %ymm0, %ymm8, %ymm0 + vpmulhrsw %ymm1, %ymm5, %ymm5 + vpmulhrsw %ymm1, %ymm6, %ymm6 + vpmulhrsw %ymm1, %ymm7, %ymm7 + vpmulhrsw %ymm1, %ymm0, %ymm0 + vpand %ymm2, %ymm5, %ymm1 + vpand %ymm2, %ymm6, %ymm5 + vpand %ymm2, %ymm7, %ymm6 + vpand %ymm2, %ymm0, %ymm0 + vpackuswb %ymm5, %ymm1, %ymm1 + vpackuswb %ymm0, %ymm6, %ymm0 + vpmaddubsw %ymm3, %ymm1, %ymm1 + vpmaddubsw %ymm3, %ymm0, %ymm0 + vpackuswb %ymm0, %ymm1, %ymm0 + vpermd %ymm0, %ymm4, %ymm0 + vmovdqu %ymm0, 96(%rax) + ret +L_poly_basemul$1: + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu glob_data + 416(%rip), %ymm1 + vmovdqu glob_data + 1552(%rip), %ymm2 + vmovdqu glob_data + 1584(%rip), %ymm3 + vmovdqu (%rsi), %ymm4 + vmovdqu 32(%rsi), %ymm5 + vmovdqu (%rdi), %ymm6 + vmovdqu 32(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, (%rcx) + vmovdqu %ymm4, 32(%rcx) + vmovdqu 64(%rsi), %ymm4 + vmovdqu 96(%rsi), %ymm5 + vmovdqu 64(%rdi), %ymm6 + vmovdqu 96(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm4 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm2, %ymm2 + vmovdqu %ymm3, 64(%rcx) + vmovdqu %ymm2, 96(%rcx) + vmovdqu glob_data + 1616(%rip), %ymm2 + vmovdqu glob_data + 1648(%rip), %ymm3 + vmovdqu 128(%rsi), %ymm4 + vmovdqu 160(%rsi), %ymm5 + vmovdqu 128(%rdi), %ymm6 + vmovdqu 160(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, 128(%rcx) + vmovdqu %ymm4, 160(%rcx) + vmovdqu 192(%rsi), %ymm4 + vmovdqu 224(%rsi), %ymm5 + vmovdqu 192(%rdi), %ymm6 + vmovdqu 224(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm4 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm2, %ymm2 + vmovdqu %ymm3, 192(%rcx) + vmovdqu %ymm2, 224(%rcx) + vmovdqu glob_data + 1944(%rip), %ymm2 + vmovdqu glob_data + 1976(%rip), %ymm3 + vmovdqu 256(%rsi), %ymm4 + vmovdqu 288(%rsi), %ymm5 + vmovdqu 256(%rdi), %ymm6 + vmovdqu 288(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, 256(%rcx) + vmovdqu %ymm4, 288(%rcx) + vmovdqu 320(%rsi), %ymm4 + vmovdqu 352(%rsi), %ymm5 + vmovdqu 320(%rdi), %ymm6 + vmovdqu 352(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm4 + vpmulhw %ymm0, %ymm4, %ymm4 + vpsubw %ymm4, %ymm2, %ymm2 + vmovdqu %ymm3, 320(%rcx) + vmovdqu %ymm2, 352(%rcx) + vmovdqu glob_data + 2008(%rip), %ymm2 + vmovdqu glob_data + 2040(%rip), %ymm3 + vmovdqu 384(%rsi), %ymm4 + vmovdqu 416(%rsi), %ymm5 + vmovdqu 384(%rdi), %ymm6 + vmovdqu 416(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm8 + vpmulhw %ymm5, %ymm3, %ymm9 + vpmulhw %ymm0, %ymm8, %ymm8 + vpsubw %ymm8, %ymm9, %ymm8 + vpmullw %ymm6, %ymm4, %ymm10 + vpmulhw %ymm6, %ymm4, %ymm11 + vpunpcklwd %ymm11, %ymm10, %ymm9 + vpunpckhwd %ymm11, %ymm10, %ymm10 + vpmullw %ymm7, %ymm4, %ymm12 + vpmulhw %ymm7, %ymm4, %ymm4 + vpunpcklwd %ymm4, %ymm12, %ymm11 + vpunpckhwd %ymm4, %ymm12, %ymm4 + vpmullw %ymm6, %ymm5, %ymm12 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm12, %ymm5 + vpunpckhwd %ymm6, %ymm12, %ymm6 + vpmullw %ymm7, %ymm8, %ymm12 + vpmulhw %ymm7, %ymm8, %ymm7 + vpunpcklwd %ymm7, %ymm12, %ymm8 + vpunpckhwd %ymm7, %ymm12, %ymm12 + vpaddd %ymm8, %ymm9, %ymm7 + vpaddd %ymm12, %ymm10, %ymm8 + vpaddd %ymm11, %ymm5, %ymm5 + vpaddd %ymm4, %ymm6, %ymm4 + vpxor %ymm9, %ymm9, %ymm9 + vpblendw $-86, %ymm9, %ymm7, %ymm6 + vpblendw $-86, %ymm9, %ymm8, %ymm10 + vpackusdw %ymm10, %ymm6, %ymm6 + vpsrld $16, %ymm7, %ymm7 + vpsrld $16, %ymm8, %ymm8 + vpackusdw %ymm8, %ymm7, %ymm7 + vpblendw $-86, %ymm9, %ymm5, %ymm8 + vpblendw $-86, %ymm9, %ymm4, %ymm9 + vpackusdw %ymm9, %ymm8, %ymm8 + vpsrld $16, %ymm5, %ymm5 + vpsrld $16, %ymm4, %ymm4 + vpackusdw %ymm4, %ymm5, %ymm4 + vpmullw %ymm1, %ymm6, %ymm5 + vpmulhw %ymm0, %ymm5, %ymm5 + vpsubw %ymm5, %ymm7, %ymm5 + vpmullw %ymm1, %ymm8, %ymm6 + vpmulhw %ymm0, %ymm6, %ymm6 + vpsubw %ymm6, %ymm4, %ymm4 + vmovdqu %ymm5, 384(%rcx) + vmovdqu %ymm4, 416(%rcx) + vmovdqu 448(%rsi), %ymm4 + vmovdqu 480(%rsi), %ymm5 + vmovdqu 448(%rdi), %ymm6 + vmovdqu 480(%rdi), %ymm7 + vpmullw %ymm5, %ymm2, %ymm2 + vpmulhw %ymm5, %ymm3, %ymm3 + vpmulhw %ymm0, %ymm2, %ymm2 + vpsubw %ymm2, %ymm3, %ymm2 + vpmullw %ymm6, %ymm4, %ymm8 + vpmulhw %ymm6, %ymm4, %ymm9 + vpunpcklwd %ymm9, %ymm8, %ymm3 + vpunpckhwd %ymm9, %ymm8, %ymm8 + vpmullw %ymm7, %ymm4, %ymm9 + vpmulhw %ymm7, %ymm4, %ymm10 + vpunpcklwd %ymm10, %ymm9, %ymm4 + vpunpckhwd %ymm10, %ymm9, %ymm9 + vpmullw %ymm6, %ymm5, %ymm10 + vpmulhw %ymm6, %ymm5, %ymm6 + vpunpcklwd %ymm6, %ymm10, %ymm5 + vpunpckhwd %ymm6, %ymm10, %ymm6 + vpmullw %ymm7, %ymm2, %ymm10 + vpmulhw %ymm7, %ymm2, %ymm2 + vpunpcklwd %ymm2, %ymm10, %ymm7 + vpunpckhwd %ymm2, %ymm10, %ymm2 + vpsubd %ymm7, %ymm3, %ymm7 + vpsubd %ymm2, %ymm8, %ymm8 + vpaddd %ymm4, %ymm5, %ymm2 + vpaddd %ymm9, %ymm6, %ymm3 + vpxor %ymm5, %ymm5, %ymm5 + vpblendw $-86, %ymm5, %ymm7, %ymm4 + vpblendw $-86, %ymm5, %ymm8, %ymm6 + vpackusdw %ymm6, %ymm4, %ymm4 + vpsrld $16, %ymm7, %ymm6 + vpsrld $16, %ymm8, %ymm7 + vpackusdw %ymm7, %ymm6, %ymm6 + vpblendw $-86, %ymm5, %ymm2, %ymm7 + vpblendw $-86, %ymm5, %ymm3, %ymm5 + vpackusdw %ymm5, %ymm7, %ymm5 + vpsrld $16, %ymm2, %ymm2 + vpsrld $16, %ymm3, %ymm3 + vpackusdw %ymm3, %ymm2, %ymm2 + vpmullw %ymm1, %ymm4, %ymm3 + vpmulhw %ymm0, %ymm3, %ymm3 + vpsubw %ymm3, %ymm6, %ymm3 + vpmullw %ymm1, %ymm5, %ymm1 + vpmulhw %ymm0, %ymm1, %ymm0 + vpsubw %ymm0, %ymm2, %ymm0 + vmovdqu %ymm3, 448(%rcx) + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_csubq$1: + vmovdqu glob_data + 448(%rip), %ymm0 + vmovdqu (%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, (%rcx) + vmovdqu 32(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 32(%rcx) + vmovdqu 64(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 64(%rcx) + vmovdqu 96(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 96(%rcx) + vmovdqu 128(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 128(%rcx) + vmovdqu 160(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 160(%rcx) + vmovdqu 192(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 192(%rcx) + vmovdqu 224(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 224(%rcx) + vmovdqu 256(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 256(%rcx) + vmovdqu 288(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 288(%rcx) + vmovdqu 320(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 320(%rcx) + vmovdqu 352(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 352(%rcx) + vmovdqu 384(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 384(%rcx) + vmovdqu 416(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 416(%rcx) + vmovdqu 448(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm2 + vpaddw %ymm1, %ymm2, %ymm1 + vmovdqu %ymm1, 448(%rcx) + vmovdqu 480(%rcx), %ymm1 + vpsubw %ymm0, %ymm1, %ymm1 + vpsraw $15, %ymm1, %ymm2 + vpand %ymm0, %ymm2, %ymm0 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_poly_add2$1: + vmovdqu (%rcx), %ymm0 + vmovdqu (%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, (%rcx) + vmovdqu 32(%rcx), %ymm0 + vmovdqu 32(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rcx) + vmovdqu 64(%rcx), %ymm0 + vmovdqu 64(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 64(%rcx) + vmovdqu 96(%rcx), %ymm0 + vmovdqu 96(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 96(%rcx) + vmovdqu 128(%rcx), %ymm0 + vmovdqu 128(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 128(%rcx) + vmovdqu 160(%rcx), %ymm0 + vmovdqu 160(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 160(%rcx) + vmovdqu 192(%rcx), %ymm0 + vmovdqu 192(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 192(%rcx) + vmovdqu 224(%rcx), %ymm0 + vmovdqu 224(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 224(%rcx) + vmovdqu 256(%rcx), %ymm0 + vmovdqu 256(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 256(%rcx) + vmovdqu 288(%rcx), %ymm0 + vmovdqu 288(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 288(%rcx) + vmovdqu 320(%rcx), %ymm0 + vmovdqu 320(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 320(%rcx) + vmovdqu 352(%rcx), %ymm0 + vmovdqu 352(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 352(%rcx) + vmovdqu 384(%rcx), %ymm0 + vmovdqu 384(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 384(%rcx) + vmovdqu 416(%rcx), %ymm0 + vmovdqu 416(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 416(%rcx) + vmovdqu 448(%rcx), %ymm0 + vmovdqu 448(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 448(%rcx) + vmovdqu 480(%rcx), %ymm0 + vmovdqu 480(%rsi), %ymm1 + vpaddw %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 480(%rcx) + ret +L_nttunpack$1: + vmovdqu (%rax), %ymm1 + vmovdqu 32(%rax), %ymm3 + vmovdqu 64(%rax), %ymm4 + vmovdqu 96(%rax), %ymm5 + vmovdqu 128(%rax), %ymm2 + vmovdqu 160(%rax), %ymm6 + vmovdqu 192(%rax), %ymm7 + vmovdqu 224(%rax), %ymm8 + vperm2i128 $32, %ymm2, %ymm1, %ymm0 + vperm2i128 $49, %ymm2, %ymm1, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm2 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vperm2i128 $32, %ymm7, %ymm4, %ymm6 + vperm2i128 $49, %ymm7, %ymm4, %ymm7 + vperm2i128 $32, %ymm8, %ymm5, %ymm9 + vperm2i128 $49, %ymm8, %ymm5, %ymm10 + vpunpcklqdq %ymm6, %ymm0, %ymm4 + vpunpckhqdq %ymm6, %ymm0, %ymm5 + vpunpcklqdq %ymm7, %ymm1, %ymm6 + vpunpckhqdq %ymm7, %ymm1, %ymm7 + vpunpcklqdq %ymm9, %ymm2, %ymm0 + vpunpckhqdq %ymm9, %ymm2, %ymm2 + vpunpcklqdq %ymm10, %ymm3, %ymm8 + vpunpckhqdq %ymm10, %ymm3, %ymm3 + vmovsldup %ymm0, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm9 + vpsrlq $32, %ymm4, %ymm1 + vpblendd $-86, %ymm0, %ymm1, %ymm0 + vmovsldup %ymm2, %ymm1 + vpblendd $-86, %ymm1, %ymm5, %ymm1 + vpsrlq $32, %ymm5, %ymm4 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vmovsldup %ymm8, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm5 + vpblendd $-86, %ymm8, %ymm5, %ymm5 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm7, %ymm6 + vpsrlq $32, %ymm7, %ymm7 + vpblendd $-86, %ymm3, %ymm7, %ymm3 + vpslld $16, %ymm4, %ymm7 + vpblendw $-86, %ymm7, %ymm9, %ymm7 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm4, %ymm8, %ymm4 + vpslld $16, %ymm5, %ymm8 + vpblendw $-86, %ymm8, %ymm0, %ymm8 + vpsrld $16, %ymm0, %ymm0 + vpblendw $-86, %ymm5, %ymm0, %ymm0 + vpslld $16, %ymm6, %ymm5 + vpblendw $-86, %ymm5, %ymm1, %ymm5 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm6, %ymm1, %ymm1 + vpslld $16, %ymm3, %ymm6 + vpblendw $-86, %ymm6, %ymm2, %ymm6 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm2 + vmovdqu %ymm7, (%rax) + vmovdqu %ymm4, 32(%rax) + vmovdqu %ymm8, 64(%rax) + vmovdqu %ymm0, 96(%rax) + vmovdqu %ymm5, 128(%rax) + vmovdqu %ymm1, 160(%rax) + vmovdqu %ymm6, 192(%rax) + vmovdqu %ymm2, 224(%rax) + vmovdqu 256(%rax), %ymm1 + vmovdqu 288(%rax), %ymm3 + vmovdqu 320(%rax), %ymm4 + vmovdqu 352(%rax), %ymm5 + vmovdqu 384(%rax), %ymm2 + vmovdqu 416(%rax), %ymm6 + vmovdqu 448(%rax), %ymm7 + vmovdqu 480(%rax), %ymm8 + vperm2i128 $32, %ymm2, %ymm1, %ymm0 + vperm2i128 $49, %ymm2, %ymm1, %ymm1 + vperm2i128 $32, %ymm6, %ymm3, %ymm2 + vperm2i128 $49, %ymm6, %ymm3, %ymm3 + vperm2i128 $32, %ymm7, %ymm4, %ymm6 + vperm2i128 $49, %ymm7, %ymm4, %ymm7 + vperm2i128 $32, %ymm8, %ymm5, %ymm9 + vperm2i128 $49, %ymm8, %ymm5, %ymm10 + vpunpcklqdq %ymm6, %ymm0, %ymm4 + vpunpckhqdq %ymm6, %ymm0, %ymm5 + vpunpcklqdq %ymm7, %ymm1, %ymm6 + vpunpckhqdq %ymm7, %ymm1, %ymm7 + vpunpcklqdq %ymm9, %ymm2, %ymm0 + vpunpckhqdq %ymm9, %ymm2, %ymm2 + vpunpcklqdq %ymm10, %ymm3, %ymm8 + vpunpckhqdq %ymm10, %ymm3, %ymm3 + vmovsldup %ymm0, %ymm1 + vpblendd $-86, %ymm1, %ymm4, %ymm9 + vpsrlq $32, %ymm4, %ymm1 + vpblendd $-86, %ymm0, %ymm1, %ymm0 + vmovsldup %ymm2, %ymm1 + vpblendd $-86, %ymm1, %ymm5, %ymm1 + vpsrlq $32, %ymm5, %ymm4 + vpblendd $-86, %ymm2, %ymm4, %ymm2 + vmovsldup %ymm8, %ymm4 + vpblendd $-86, %ymm4, %ymm6, %ymm4 + vpsrlq $32, %ymm6, %ymm5 + vpblendd $-86, %ymm8, %ymm5, %ymm5 + vmovsldup %ymm3, %ymm6 + vpblendd $-86, %ymm6, %ymm7, %ymm6 + vpsrlq $32, %ymm7, %ymm7 + vpblendd $-86, %ymm3, %ymm7, %ymm3 + vpslld $16, %ymm4, %ymm7 + vpblendw $-86, %ymm7, %ymm9, %ymm7 + vpsrld $16, %ymm9, %ymm8 + vpblendw $-86, %ymm4, %ymm8, %ymm4 + vpslld $16, %ymm5, %ymm8 + vpblendw $-86, %ymm8, %ymm0, %ymm8 + vpsrld $16, %ymm0, %ymm0 + vpblendw $-86, %ymm5, %ymm0, %ymm0 + vpslld $16, %ymm6, %ymm5 + vpblendw $-86, %ymm5, %ymm1, %ymm5 + vpsrld $16, %ymm1, %ymm1 + vpblendw $-86, %ymm6, %ymm1, %ymm1 + vpslld $16, %ymm3, %ymm6 + vpblendw $-86, %ymm6, %ymm2, %ymm6 + vpsrld $16, %ymm2, %ymm2 + vpblendw $-86, %ymm3, %ymm2, %ymm2 + vmovdqu %ymm7, 256(%rax) + vmovdqu %ymm4, 288(%rax) + vmovdqu %ymm8, 320(%rax) + vmovdqu %ymm0, 352(%rax) + vmovdqu %ymm5, 384(%rax) + vmovdqu %ymm1, 416(%rax) + vmovdqu %ymm6, 448(%rax) + vmovdqu %ymm2, 480(%rax) + ret +L_shake256_absorb4x_33$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, (%rax) + vmovdqu %ymm0, 32(%rax) + vmovdqu %ymm0, 64(%rax) + vmovdqu %ymm0, 96(%rax) + vmovdqu %ymm0, 128(%rax) + vmovdqu %ymm0, 160(%rax) + vmovdqu %ymm0, 192(%rax) + vmovdqu %ymm0, 224(%rax) + vmovdqu %ymm0, 256(%rax) + vmovdqu %ymm0, 288(%rax) + vmovdqu %ymm0, 320(%rax) + vmovdqu %ymm0, 352(%rax) + vmovdqu %ymm0, 384(%rax) + vmovdqu %ymm0, 416(%rax) + vmovdqu %ymm0, 448(%rax) + vmovdqu %ymm0, 480(%rax) + vmovdqu %ymm0, 512(%rax) + vmovdqu %ymm0, 544(%rax) + vmovdqu %ymm0, 576(%rax) + vmovdqu %ymm0, 608(%rax) + vmovdqu %ymm0, 640(%rax) + vmovdqu %ymm0, 672(%rax) + vmovdqu %ymm0, 704(%rax) + vmovdqu %ymm0, 736(%rax) + vmovdqu %ymm0, 768(%rax) + movq (%rcx), %rbx + xorq %rbx, (%rax) + movq (%rdx), %rbx + xorq %rbx, 8(%rax) + movq (%rsi), %rbx + xorq %rbx, 16(%rax) + movq (%r11), %rbx + xorq %rbx, 24(%rax) + movq 8(%rcx), %rbx + xorq %rbx, 32(%rax) + movq 8(%rdx), %rbx + xorq %rbx, 40(%rax) + movq 8(%rsi), %rbx + xorq %rbx, 48(%rax) + movq 8(%r11), %rbx + xorq %rbx, 56(%rax) + movq 16(%rcx), %rbx + xorq %rbx, 64(%rax) + movq 16(%rdx), %rbx + xorq %rbx, 72(%rax) + movq 16(%rsi), %rbx + xorq %rbx, 80(%rax) + movq 16(%r11), %rbx + xorq %rbx, 88(%rax) + movq 24(%rcx), %rbx + xorq %rbx, 96(%rax) + movq 24(%rdx), %rbx + xorq %rbx, 104(%rax) + movq 24(%rsi), %rbx + xorq %rbx, 112(%rax) + movq 24(%r11), %rbx + xorq %rbx, 120(%rax) + movb 32(%rcx), %cl + xorb %cl, 128(%rax) + xorb $31, 129(%rax) + movb 32(%rdx), %cl + xorb %cl, 136(%rax) + xorb $31, 137(%rax) + movb 32(%rsi), %cl + xorb %cl, 144(%rax) + xorb $31, 145(%rax) + movb 32(%r11), %cl + xorb %cl, 152(%rax) + xorb $31, 153(%rax) + vmovdqu glob_data + 2080(%rip), %ymm0 + vmovdqu 512(%rax), %ymm1 + vpxor %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 512(%rax) + ret +L_shake128_absorb4x_34$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, (%rax) + vmovdqu %ymm0, 32(%rax) + vmovdqu %ymm0, 64(%rax) + vmovdqu %ymm0, 96(%rax) + vmovdqu %ymm0, 128(%rax) + vmovdqu %ymm0, 160(%rax) + vmovdqu %ymm0, 192(%rax) + vmovdqu %ymm0, 224(%rax) + vmovdqu %ymm0, 256(%rax) + vmovdqu %ymm0, 288(%rax) + vmovdqu %ymm0, 320(%rax) + vmovdqu %ymm0, 352(%rax) + vmovdqu %ymm0, 384(%rax) + vmovdqu %ymm0, 416(%rax) + vmovdqu %ymm0, 448(%rax) + vmovdqu %ymm0, 480(%rax) + vmovdqu %ymm0, 512(%rax) + vmovdqu %ymm0, 544(%rax) + vmovdqu %ymm0, 576(%rax) + vmovdqu %ymm0, 608(%rax) + vmovdqu %ymm0, 640(%rax) + vmovdqu %ymm0, 672(%rax) + vmovdqu %ymm0, 704(%rax) + vmovdqu %ymm0, 736(%rax) + vmovdqu %ymm0, 768(%rax) + movq (%rcx), %r8 + xorq %r8, (%rax) + movq (%rdx), %r8 + xorq %r8, 8(%rax) + movq (%rsi), %r8 + xorq %r8, 16(%rax) + movq (%rdi), %r8 + xorq %r8, 24(%rax) + movq 8(%rcx), %r8 + xorq %r8, 32(%rax) + movq 8(%rdx), %r8 + xorq %r8, 40(%rax) + movq 8(%rsi), %r8 + xorq %r8, 48(%rax) + movq 8(%rdi), %r8 + xorq %r8, 56(%rax) + movq 16(%rcx), %r8 + xorq %r8, 64(%rax) + movq 16(%rdx), %r8 + xorq %r8, 72(%rax) + movq 16(%rsi), %r8 + xorq %r8, 80(%rax) + movq 16(%rdi), %r8 + xorq %r8, 88(%rax) + movq 24(%rcx), %r8 + xorq %r8, 96(%rax) + movq 24(%rdx), %r8 + xorq %r8, 104(%rax) + movq 24(%rsi), %r8 + xorq %r8, 112(%rax) + movq 24(%rdi), %r8 + xorq %r8, 120(%rax) + movw 32(%rcx), %cx + xorw %cx, 128(%rax) + xorb $31, 130(%rax) + movw 32(%rdx), %cx + xorw %cx, 136(%rax) + xorb $31, 138(%rax) + movw 32(%rsi), %cx + xorw %cx, 144(%rax) + xorb $31, 146(%rax) + movw 32(%rdi), %cx + xorw %cx, 152(%rax) + xorb $31, 154(%rax) + vmovdqu glob_data + 2080(%rip), %ymm0 + vmovdqu 640(%rax), %ymm1 + vpxor %ymm1, %ymm0, %ymm0 + vmovdqu %ymm0, 640(%rax) + ret +L_keccakf1600_4x_avx2$1: + leaq 32(%rsp), %rcx + leaq glob_data + 2176(%rip), %rdx + vmovdqu glob_data + 2112(%rip), %ymm0 + vmovdqu glob_data + 2144(%rip), %ymm1 + movq $0, %rsi +L_keccakf1600_4x_avx2$2: + vmovdqu (%rdx,%rsi), %ymm2 + vmovdqu (%rax), %ymm3 + vmovdqu 32(%rax), %ymm4 + vmovdqu 64(%rax), %ymm5 + vmovdqu 96(%rax), %ymm6 + vmovdqu 128(%rax), %ymm7 + vpxor 160(%rax), %ymm3, %ymm3 + vpxor 192(%rax), %ymm4, %ymm4 + vpxor 224(%rax), %ymm5, %ymm5 + vpxor 256(%rax), %ymm6, %ymm6 + vpxor 288(%rax), %ymm7, %ymm7 + vpxor 320(%rax), %ymm3, %ymm3 + vpxor 352(%rax), %ymm4, %ymm4 + vpxor 384(%rax), %ymm5, %ymm5 + vpxor 416(%rax), %ymm6, %ymm6 + vpxor 448(%rax), %ymm7, %ymm7 + vpxor 480(%rax), %ymm3, %ymm3 + vpxor 512(%rax), %ymm4, %ymm4 + vpxor 544(%rax), %ymm5, %ymm8 + vpxor 576(%rax), %ymm6, %ymm9 + vpxor 608(%rax), %ymm7, %ymm10 + vpxor 640(%rax), %ymm3, %ymm7 + vpxor 672(%rax), %ymm4, %ymm5 + vpxor 704(%rax), %ymm8, %ymm6 + vpxor 736(%rax), %ymm9, %ymm8 + vpxor 768(%rax), %ymm10, %ymm9 + vmovdqu %ymm5, %ymm3 + vpsllq $1, %ymm3, %ymm4 + vpsrlq $63, %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm3 + vpxor %ymm9, %ymm3, %ymm3 + vmovdqu %ymm6, %ymm4 + vpsllq $1, %ymm4, %ymm10 + vpsrlq $63, %ymm4, %ymm4 + vpor %ymm10, %ymm4, %ymm4 + vpxor %ymm7, %ymm4, %ymm4 + vmovdqu %ymm8, %ymm10 + vpsllq $1, %ymm10, %ymm11 + vpsrlq $63, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vpxor %ymm5, %ymm10, %ymm5 + vpsllq $1, %ymm9, %ymm10 + vpsrlq $63, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vpxor %ymm6, %ymm9, %ymm6 + vpsllq $1, %ymm7, %ymm9 + vpsrlq $63, %ymm7, %ymm7 + vpor %ymm9, %ymm7, %ymm7 + vpxor %ymm8, %ymm7, %ymm7 + vmovdqu (%rax), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vmovdqu 192(%rax), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $44, %ymm9, %ymm10 + vpsrlq $20, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 384(%rax), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $43, %ymm10, %ymm11 + vpsrlq $21, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 576(%rax), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpsllq $21, %ymm11, %ymm12 + vpsrlq $43, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vmovdqu 768(%rax), %ymm12 + vpxor %ymm7, %ymm12, %ymm12 + vpsllq $14, %ymm12, %ymm13 + vpsrlq $50, %ymm12, %ymm12 + vpor %ymm13, %ymm12, %ymm12 + vpandn %ymm10, %ymm9, %ymm13 + vpxor %ymm8, %ymm13, %ymm13 + vpxor %ymm2, %ymm13, %ymm2 + vmovdqu %ymm2, (%rcx) + vpandn %ymm11, %ymm10, %ymm2 + vpxor %ymm9, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rcx) + vpandn %ymm12, %ymm11, %ymm2 + vpxor %ymm10, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rcx) + vpandn %ymm8, %ymm12, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rcx) + vpandn %ymm9, %ymm8, %ymm2 + vpxor %ymm12, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rcx) + vmovdqu 96(%rax), %ymm2 + vpxor %ymm6, %ymm2, %ymm2 + vpsllq $28, %ymm2, %ymm8 + vpsrlq $36, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 288(%rax), %ymm8 + vpxor %ymm7, %ymm8, %ymm8 + vpsllq $20, %ymm8, %ymm9 + vpsrlq $44, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 320(%rax), %ymm9 + vpxor %ymm3, %ymm9, %ymm9 + vpsllq $3, %ymm9, %ymm10 + vpsrlq $61, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 512(%rax), %ymm10 + vpxor %ymm4, %ymm10, %ymm10 + vpsllq $45, %ymm10, %ymm11 + vpsrlq $19, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 704(%rax), %ymm11 + vpxor %ymm5, %ymm11, %ymm11 + vpsllq $61, %ymm11, %ymm12 + vpsrlq $3, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 160(%rcx) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 192(%rcx) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 224(%rcx) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 256(%rcx) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rcx) + vmovdqu 32(%rax), %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vpsllq $1, %ymm2, %ymm8 + vpsrlq $63, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 224(%rax), %ymm8 + vpxor %ymm5, %ymm8, %ymm8 + vpsllq $6, %ymm8, %ymm9 + vpsrlq $58, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 416(%rax), %ymm9 + vpxor %ymm6, %ymm9, %ymm9 + vpsllq $25, %ymm9, %ymm10 + vpsrlq $39, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 608(%rax), %ymm10 + vpxor %ymm7, %ymm10, %ymm10 + vpshufb %ymm0, %ymm10, %ymm10 + vmovdqu 640(%rax), %ymm11 + vpxor %ymm3, %ymm11, %ymm11 + vpsllq $18, %ymm11, %ymm12 + vpsrlq $46, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 320(%rcx) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 352(%rcx) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 384(%rcx) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 416(%rcx) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rcx) + vmovdqu 128(%rax), %ymm2 + vpxor %ymm7, %ymm2, %ymm2 + vpsllq $27, %ymm2, %ymm8 + vpsrlq $37, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 160(%rax), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vpsllq $36, %ymm8, %ymm9 + vpsrlq $28, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 352(%rax), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $10, %ymm9, %ymm10 + vpsrlq $54, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 544(%rax), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $15, %ymm10, %ymm11 + vpsrlq $49, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 736(%rax), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpshufb %ymm1, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 480(%rcx) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 512(%rcx) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 544(%rcx) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 576(%rcx) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 608(%rcx) + vmovdqu 64(%rax), %ymm2 + vpxor %ymm5, %ymm2, %ymm2 + vpsllq $62, %ymm2, %ymm5 + vpsrlq $2, %ymm2, %ymm2 + vpor %ymm5, %ymm2, %ymm2 + vmovdqu 256(%rax), %ymm5 + vpxor %ymm6, %ymm5, %ymm5 + vpsllq $55, %ymm5, %ymm6 + vpsrlq $9, %ymm5, %ymm5 + vpor %ymm6, %ymm5, %ymm5 + vmovdqu 448(%rax), %ymm6 + vpxor %ymm7, %ymm6, %ymm6 + vpsllq $39, %ymm6, %ymm7 + vpsrlq $25, %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm6 + vmovdqu 480(%rax), %ymm7 + vpxor %ymm3, %ymm7, %ymm3 + vpsllq $41, %ymm3, %ymm7 + vpsrlq $23, %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm3 + vmovdqu 672(%rax), %ymm7 + vpxor %ymm4, %ymm7, %ymm4 + vpsllq $2, %ymm4, %ymm7 + vpsrlq $62, %ymm4, %ymm4 + vpor %ymm7, %ymm4, %ymm4 + vpandn %ymm6, %ymm5, %ymm7 + vpxor %ymm2, %ymm7, %ymm7 + vmovdqu %ymm7, 640(%rcx) + vpandn %ymm3, %ymm6, %ymm7 + vpxor %ymm5, %ymm7, %ymm7 + vmovdqu %ymm7, 672(%rcx) + vpandn %ymm4, %ymm3, %ymm7 + vpxor %ymm6, %ymm7, %ymm6 + vmovdqu %ymm6, 704(%rcx) + vpandn %ymm2, %ymm4, %ymm6 + vpxor %ymm3, %ymm6, %ymm3 + vmovdqu %ymm3, 736(%rcx) + vpandn %ymm5, %ymm2, %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vmovdqu %ymm2, 768(%rcx) + vmovdqu 32(%rdx,%rsi), %ymm2 + vmovdqu (%rcx), %ymm3 + vmovdqu 32(%rcx), %ymm4 + vmovdqu 64(%rcx), %ymm5 + vmovdqu 96(%rcx), %ymm6 + vmovdqu 128(%rcx), %ymm7 + vpxor 160(%rcx), %ymm3, %ymm3 + vpxor 192(%rcx), %ymm4, %ymm4 + vpxor 224(%rcx), %ymm5, %ymm5 + vpxor 256(%rcx), %ymm6, %ymm6 + vpxor 288(%rcx), %ymm7, %ymm7 + vpxor 320(%rcx), %ymm3, %ymm3 + vpxor 352(%rcx), %ymm4, %ymm4 + vpxor 384(%rcx), %ymm5, %ymm5 + vpxor 416(%rcx), %ymm6, %ymm6 + vpxor 448(%rcx), %ymm7, %ymm7 + vpxor 480(%rcx), %ymm3, %ymm3 + vpxor 512(%rcx), %ymm4, %ymm4 + vpxor 544(%rcx), %ymm5, %ymm8 + vpxor 576(%rcx), %ymm6, %ymm9 + vpxor 608(%rcx), %ymm7, %ymm10 + vpxor 640(%rcx), %ymm3, %ymm7 + vpxor 672(%rcx), %ymm4, %ymm5 + vpxor 704(%rcx), %ymm8, %ymm6 + vpxor 736(%rcx), %ymm9, %ymm8 + vpxor 768(%rcx), %ymm10, %ymm9 + vmovdqu %ymm5, %ymm3 + vpsllq $1, %ymm3, %ymm4 + vpsrlq $63, %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm3 + vpxor %ymm9, %ymm3, %ymm3 + vmovdqu %ymm6, %ymm4 + vpsllq $1, %ymm4, %ymm10 + vpsrlq $63, %ymm4, %ymm4 + vpor %ymm10, %ymm4, %ymm4 + vpxor %ymm7, %ymm4, %ymm4 + vmovdqu %ymm8, %ymm10 + vpsllq $1, %ymm10, %ymm11 + vpsrlq $63, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vpxor %ymm5, %ymm10, %ymm5 + vpsllq $1, %ymm9, %ymm10 + vpsrlq $63, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vpxor %ymm6, %ymm9, %ymm6 + vpsllq $1, %ymm7, %ymm9 + vpsrlq $63, %ymm7, %ymm7 + vpor %ymm9, %ymm7, %ymm7 + vpxor %ymm8, %ymm7, %ymm7 + vmovdqu (%rcx), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vmovdqu 192(%rcx), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $44, %ymm9, %ymm10 + vpsrlq $20, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 384(%rcx), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $43, %ymm10, %ymm11 + vpsrlq $21, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 576(%rcx), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpsllq $21, %ymm11, %ymm12 + vpsrlq $43, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vmovdqu 768(%rcx), %ymm12 + vpxor %ymm7, %ymm12, %ymm12 + vpsllq $14, %ymm12, %ymm13 + vpsrlq $50, %ymm12, %ymm12 + vpor %ymm13, %ymm12, %ymm12 + vpandn %ymm10, %ymm9, %ymm13 + vpxor %ymm8, %ymm13, %ymm13 + vpxor %ymm2, %ymm13, %ymm2 + vmovdqu %ymm2, (%rax) + vpandn %ymm11, %ymm10, %ymm2 + vpxor %ymm9, %ymm2, %ymm2 + vmovdqu %ymm2, 32(%rax) + vpandn %ymm12, %ymm11, %ymm2 + vpxor %ymm10, %ymm2, %ymm2 + vmovdqu %ymm2, 64(%rax) + vpandn %ymm8, %ymm12, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 96(%rax) + vpandn %ymm9, %ymm8, %ymm2 + vpxor %ymm12, %ymm2, %ymm2 + vmovdqu %ymm2, 128(%rax) + vmovdqu 96(%rcx), %ymm2 + vpxor %ymm6, %ymm2, %ymm2 + vpsllq $28, %ymm2, %ymm8 + vpsrlq $36, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 288(%rcx), %ymm8 + vpxor %ymm7, %ymm8, %ymm8 + vpsllq $20, %ymm8, %ymm9 + vpsrlq $44, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 320(%rcx), %ymm9 + vpxor %ymm3, %ymm9, %ymm9 + vpsllq $3, %ymm9, %ymm10 + vpsrlq $61, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 512(%rcx), %ymm10 + vpxor %ymm4, %ymm10, %ymm10 + vpsllq $45, %ymm10, %ymm11 + vpsrlq $19, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 704(%rcx), %ymm11 + vpxor %ymm5, %ymm11, %ymm11 + vpsllq $61, %ymm11, %ymm12 + vpsrlq $3, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 160(%rax) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 192(%rax) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 224(%rax) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 256(%rax) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 288(%rax) + vmovdqu 32(%rcx), %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vpsllq $1, %ymm2, %ymm8 + vpsrlq $63, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 224(%rcx), %ymm8 + vpxor %ymm5, %ymm8, %ymm8 + vpsllq $6, %ymm8, %ymm9 + vpsrlq $58, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 416(%rcx), %ymm9 + vpxor %ymm6, %ymm9, %ymm9 + vpsllq $25, %ymm9, %ymm10 + vpsrlq $39, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 608(%rcx), %ymm10 + vpxor %ymm7, %ymm10, %ymm10 + vpshufb %ymm0, %ymm10, %ymm10 + vmovdqu 640(%rcx), %ymm11 + vpxor %ymm3, %ymm11, %ymm11 + vpsllq $18, %ymm11, %ymm12 + vpsrlq $46, %ymm11, %ymm11 + vpor %ymm12, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 320(%rax) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 352(%rax) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 384(%rax) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 416(%rax) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 448(%rax) + vmovdqu 128(%rcx), %ymm2 + vpxor %ymm7, %ymm2, %ymm2 + vpsllq $27, %ymm2, %ymm8 + vpsrlq $37, %ymm2, %ymm2 + vpor %ymm8, %ymm2, %ymm2 + vmovdqu 160(%rcx), %ymm8 + vpxor %ymm3, %ymm8, %ymm8 + vpsllq $36, %ymm8, %ymm9 + vpsrlq $28, %ymm8, %ymm8 + vpor %ymm9, %ymm8, %ymm8 + vmovdqu 352(%rcx), %ymm9 + vpxor %ymm4, %ymm9, %ymm9 + vpsllq $10, %ymm9, %ymm10 + vpsrlq $54, %ymm9, %ymm9 + vpor %ymm10, %ymm9, %ymm9 + vmovdqu 544(%rcx), %ymm10 + vpxor %ymm5, %ymm10, %ymm10 + vpsllq $15, %ymm10, %ymm11 + vpsrlq $49, %ymm10, %ymm10 + vpor %ymm11, %ymm10, %ymm10 + vmovdqu 736(%rcx), %ymm11 + vpxor %ymm6, %ymm11, %ymm11 + vpshufb %ymm1, %ymm11, %ymm11 + vpandn %ymm9, %ymm8, %ymm12 + vpxor %ymm2, %ymm12, %ymm12 + vmovdqu %ymm12, 480(%rax) + vpandn %ymm10, %ymm9, %ymm12 + vpxor %ymm8, %ymm12, %ymm12 + vmovdqu %ymm12, 512(%rax) + vpandn %ymm11, %ymm10, %ymm12 + vpxor %ymm9, %ymm12, %ymm9 + vmovdqu %ymm9, 544(%rax) + vpandn %ymm2, %ymm11, %ymm9 + vpxor %ymm10, %ymm9, %ymm9 + vmovdqu %ymm9, 576(%rax) + vpandn %ymm8, %ymm2, %ymm2 + vpxor %ymm11, %ymm2, %ymm2 + vmovdqu %ymm2, 608(%rax) + vmovdqu 64(%rcx), %ymm2 + vpxor %ymm5, %ymm2, %ymm2 + vpsllq $62, %ymm2, %ymm5 + vpsrlq $2, %ymm2, %ymm2 + vpor %ymm5, %ymm2, %ymm2 + vmovdqu 256(%rcx), %ymm5 + vpxor %ymm6, %ymm5, %ymm5 + vpsllq $55, %ymm5, %ymm6 + vpsrlq $9, %ymm5, %ymm5 + vpor %ymm6, %ymm5, %ymm5 + vmovdqu 448(%rcx), %ymm6 + vpxor %ymm7, %ymm6, %ymm6 + vpsllq $39, %ymm6, %ymm7 + vpsrlq $25, %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm6 + vmovdqu 480(%rcx), %ymm7 + vpxor %ymm3, %ymm7, %ymm3 + vpsllq $41, %ymm3, %ymm7 + vpsrlq $23, %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm3 + vmovdqu 672(%rcx), %ymm7 + vpxor %ymm4, %ymm7, %ymm4 + vpsllq $2, %ymm4, %ymm7 + vpsrlq $62, %ymm4, %ymm4 + vpor %ymm7, %ymm4, %ymm4 + vpandn %ymm6, %ymm5, %ymm7 + vpxor %ymm2, %ymm7, %ymm7 + vmovdqu %ymm7, 640(%rax) + vpandn %ymm3, %ymm6, %ymm7 + vpxor %ymm5, %ymm7, %ymm7 + vmovdqu %ymm7, 672(%rax) + vpandn %ymm4, %ymm3, %ymm7 + vpxor %ymm6, %ymm7, %ymm6 + vmovdqu %ymm6, 704(%rax) + vpandn %ymm2, %ymm4, %ymm6 + vpxor %ymm3, %ymm6, %ymm3 + vmovdqu %ymm3, 736(%rax) + vpandn %ymm5, %ymm2, %ymm2 + vpxor %ymm4, %ymm2, %ymm2 + vmovdqu %ymm2, 768(%rax) + addq $64, %rsi + cmpq $768, %rsi + jb L_keccakf1600_4x_avx2$2 + ret +L_sha3_512_32$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rcx), %ymm6 + movq 8(%rcx), %rdx + movq glob_data + 6208(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 16(%rcx), %rdx + movq glob_data + 6216(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 24(%rcx), %rcx + movq glob_data + 6224(%rip), %rdx + movq %rcx, 32(%rsp,%rdx,8) + movq glob_data + 6232(%rip), %rcx + shlq $3, %rcx + movb $6, 32(%rsp,%rcx) + movq glob_data + 6264(%rip), %rcx + shlq $3, %rcx + movq $71, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + vmovdqu 64(%rsp), %ymm0 + vmovdqu 96(%rsp), %ymm1 + vmovdqu 128(%rsp), %ymm2 + vmovdqu 160(%rsp), %ymm3 + vmovdqu 192(%rsp), %ymm4 + vmovdqu 224(%rsp), %ymm5 + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L_sha3_512_32$2: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_512_32$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm1, 96(%rsp) + vmovdqu %ymm2, 128(%rsp) + vmovdqu %ymm3, 160(%rsp) + vmovdqu %ymm4, 192(%rsp) + vmovdqu %ymm5, 224(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + ret +L_sha3_512_64$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rcx), %ymm6 + movq 8(%rcx), %rdx + movq glob_data + 6208(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 16(%rcx), %rdx + movq glob_data + 6216(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 24(%rcx), %rdx + movq glob_data + 6224(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 32(%rcx), %rdx + movq glob_data + 6232(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 40(%rcx), %rdx + movq glob_data + 6240(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 48(%rcx), %rdx + movq glob_data + 6248(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 56(%rcx), %rcx + movq glob_data + 6256(%rip), %rdx + movq %rcx, 32(%rsp,%rdx,8) + movq glob_data + 6264(%rip), %rcx + shlq $3, %rcx + movb $6, 32(%rsp,%rcx) + movq glob_data + 6264(%rip), %rcx + shlq $3, %rcx + movq $71, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + vmovdqu 64(%rsp), %ymm0 + vmovdqu 96(%rsp), %ymm1 + vmovdqu 128(%rsp), %ymm2 + vmovdqu 160(%rsp), %ymm3 + vmovdqu 192(%rsp), %ymm4 + vmovdqu 224(%rsp), %ymm5 + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L_sha3_512_64$2: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_512_64$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm1, 96(%rsp) + vmovdqu %ymm2, 128(%rsp) + vmovdqu %ymm3, 160(%rsp) + vmovdqu %ymm4, 192(%rsp) + vmovdqu %ymm5, 224(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + movq glob_data + 6232(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 32(%rax) + movq glob_data + 6240(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 40(%rax) + movq glob_data + 6248(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 48(%rax) + movq glob_data + 6256(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 56(%rax) + ret +L_shake256_64$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rax), %ymm4 + movq glob_data + 6208(%rip), %rsi + movq 8(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6216(%rip), %rsi + movq 16(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6224(%rip), %rsi + movq 24(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6232(%rip), %rsi + movq 32(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6240(%rip), %rsi + movq 40(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6248(%rip), %rsi + movq 48(%rax), %rdi + movq %rdi, 32(%rsp,%rsi,8) + movq glob_data + 6256(%rip), %rsi + movq 56(%rax), %rax + movq %rax, 32(%rsp,%rsi,8) + movq glob_data + 6264(%rip), %rax + shlq $3, %rax + movb $31, 32(%rsp,%rax) + movq glob_data + 6328(%rip), %rax + shlq $3, %rax + movq $135, %rsi + andq $7, %rsi + addq %rsi, %rax + xorb $-128, 32(%rsp,%rax) + vmovdqu 64(%rsp), %ymm5 + vmovdqu 96(%rsp), %ymm0 + vmovdqu 128(%rsp), %ymm1 + vmovdqu 160(%rsp), %ymm6 + vmovdqu 192(%rsp), %ymm2 + vmovdqu 224(%rsp), %ymm3 + movq $136, %rsi + leaq glob_data + 6200(%rip), %rax + jmp L_shake256_64$7 +L_shake256_64$8: + leaq glob_data + 3328(%rip), %rdi + movq $0, %r8 + leaq glob_data + 3136(%rip), %r9 + leaq glob_data + 2944(%rip), %r10 + movq $24, %r11 +L_shake256_64$11: + vpshufd $78, %ymm0, %ymm8 + vpxor %ymm1, %ymm2, %ymm7 + vpxor %ymm3, %ymm6, %ymm9 + vpxor %ymm5, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm0, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm4, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm0, %ymm0 + vpxor %ymm11, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%r9), %ymm0, %ymm7 + vpsrlvq (%r10), %ymm0, %ymm0 + vpor %ymm7, %ymm0, %ymm0 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 64(%r9), %ymm1, %ymm7 + vpsrlvq 64(%r10), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%r9), %ymm6, %ymm7 + vpsrlvq 96(%r10), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 128(%r9), %ymm2, %ymm6 + vpsrlvq 128(%r10), %ymm2, %ymm2 + vpor %ymm6, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpermq $-115, %ymm0, %ymm6 + vpermq $-115, %ymm1, %ymm7 + vpsllvq 160(%r9), %ymm3, %ymm0 + vpsrlvq 160(%r10), %ymm3, %ymm1 + vpor %ymm0, %ymm1, %ymm8 + vpxor %ymm9, %ymm5, %ymm0 + vpermq $27, %ymm10, %ymm5 + vpermq $114, %ymm2, %ymm9 + vpsllvq 32(%r9), %ymm0, %ymm1 + vpsrlvq 32(%r10), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm1 + vpblendd $12, %ymm9, %ymm10, %ymm0 + vpblendd $12, %ymm10, %ymm7, %ymm2 + vpblendd $12, %ymm7, %ymm6, %ymm3 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm0, %ymm0 + vpblendd $48, %ymm5, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm3, %ymm3 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm5, %ymm0, %ymm0 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm2, %ymm0, %ymm0 + vpandn %ymm11, %ymm3, %ymm3 + vpblendd $12, %ymm10, %ymm5, %ymm11 + vpblendd $12, %ymm5, %ymm6, %ymm12 + vpxor %ymm6, %ymm0, %ymm2 + vpblendd $48, %ymm6, %ymm11, %ymm0 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm5, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm0, %ymm0 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm0, %ymm0 + vpxor %ymm9, %ymm0, %ymm12 + vpermq $30, %ymm8, %ymm0 + vpblendd $48, %ymm4, %ymm0, %ymm0 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm4, %ymm11, %ymm11 + vpandn %ymm0, %ymm11, %ymm11 + vpblendd $12, %ymm5, %ymm7, %ymm0 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm0, %ymm0 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm0, %ymm0 + vpblendd $-64, %ymm5, %ymm13, %ymm13 + vpandn %ymm13, %ymm0, %ymm0 + vpxor %ymm10, %ymm0, %ymm0 + vpermq $0, %ymm1, %ymm13 + vpermq $27, %ymm2, %ymm1 + vpermq $-115, %ymm3, %ymm2 + vpermq $114, %ymm12, %ymm3 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm5, %ymm9 + vpblendd $48, %ymm5, %ymm12, %ymm5 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm5, %ymm5 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm5, %ymm6 + vpxor %ymm13, %ymm4, %ymm4 + vpxor %ymm8, %ymm11, %ymm5 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rdi,%r8), %ymm4, %ymm4 + addq $32, %r8 + decq %r11 + jne L_shake256_64$11 + vmovdqu %ymm4, 32(%rsp) + vmovdqu %ymm5, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm1, 128(%rsp) + vmovdqu %ymm6, 160(%rsp) + vmovdqu %ymm2, 192(%rsp) + vmovdqu %ymm3, 224(%rsp) + movq %rsi, %rdi + shrq $3, %rdi + movq $0, %r8 + jmp L_shake256_64$9 +L_shake256_64$10: + movq (%rax,%r8,8), %r9 + movq 32(%rsp,%r9,8), %r9 + movq %r9, (%rdx,%r8,8) + incq %r8 +L_shake256_64$9: + cmpq %rdi, %r8 + jb L_shake256_64$10 + addq %rsi, %rdx + subq %rsi, %rcx +L_shake256_64$7: + cmpq %rsi, %rcx + jnbe L_shake256_64$8 + leaq glob_data + 3328(%rip), %rsi + movq $0, %rdi + leaq glob_data + 3136(%rip), %r8 + leaq glob_data + 2944(%rip), %r9 + movq $24, %r10 +L_shake256_64$6: + vpshufd $78, %ymm0, %ymm8 + vpxor %ymm1, %ymm2, %ymm7 + vpxor %ymm3, %ymm6, %ymm9 + vpxor %ymm5, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm0, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm4, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm0, %ymm0 + vpxor %ymm11, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%r8), %ymm0, %ymm7 + vpsrlvq (%r9), %ymm0, %ymm0 + vpor %ymm7, %ymm0, %ymm0 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 64(%r8), %ymm1, %ymm7 + vpsrlvq 64(%r9), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm6, %ymm6 + vpsllvq 96(%r8), %ymm6, %ymm7 + vpsrlvq 96(%r9), %ymm6, %ymm6 + vpor %ymm7, %ymm6, %ymm10 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 128(%r8), %ymm2, %ymm6 + vpsrlvq 128(%r9), %ymm2, %ymm2 + vpor %ymm6, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpermq $-115, %ymm0, %ymm6 + vpermq $-115, %ymm1, %ymm7 + vpsllvq 160(%r8), %ymm3, %ymm0 + vpsrlvq 160(%r9), %ymm3, %ymm1 + vpor %ymm0, %ymm1, %ymm8 + vpxor %ymm9, %ymm5, %ymm0 + vpermq $27, %ymm10, %ymm5 + vpermq $114, %ymm2, %ymm9 + vpsllvq 32(%r8), %ymm0, %ymm1 + vpsrlvq 32(%r9), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm1 + vpblendd $12, %ymm9, %ymm10, %ymm0 + vpblendd $12, %ymm10, %ymm7, %ymm2 + vpblendd $12, %ymm7, %ymm6, %ymm3 + vpblendd $12, %ymm6, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm0, %ymm0 + vpblendd $48, %ymm5, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm3, %ymm3 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm5, %ymm0, %ymm0 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm2, %ymm0, %ymm0 + vpandn %ymm11, %ymm3, %ymm3 + vpblendd $12, %ymm10, %ymm5, %ymm11 + vpblendd $12, %ymm5, %ymm6, %ymm12 + vpxor %ymm6, %ymm0, %ymm2 + vpblendd $48, %ymm6, %ymm11, %ymm0 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm5, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm0, %ymm0 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm0, %ymm0 + vpxor %ymm9, %ymm0, %ymm12 + vpermq $30, %ymm8, %ymm0 + vpblendd $48, %ymm4, %ymm0, %ymm0 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm4, %ymm11, %ymm11 + vpandn %ymm0, %ymm11, %ymm11 + vpblendd $12, %ymm5, %ymm7, %ymm0 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm0, %ymm0 + vpblendd $48, %ymm6, %ymm13, %ymm13 + vpblendd $-64, %ymm6, %ymm0, %ymm0 + vpblendd $-64, %ymm5, %ymm13, %ymm13 + vpandn %ymm13, %ymm0, %ymm0 + vpxor %ymm10, %ymm0, %ymm0 + vpermq $0, %ymm1, %ymm13 + vpermq $27, %ymm2, %ymm1 + vpermq $-115, %ymm3, %ymm2 + vpermq $114, %ymm12, %ymm3 + vpblendd $12, %ymm6, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm5, %ymm9 + vpblendd $48, %ymm5, %ymm12, %ymm5 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm5, %ymm5 + vpblendd $-64, %ymm6, %ymm9, %ymm6 + vpandn %ymm6, %ymm5, %ymm6 + vpxor %ymm13, %ymm4, %ymm4 + vpxor %ymm8, %ymm11, %ymm5 + vpxor %ymm7, %ymm6, %ymm6 + vpxor (%rsi,%rdi), %ymm4, %ymm4 + addq $32, %rdi + decq %r10 + jne L_shake256_64$6 + vmovdqu %ymm4, 32(%rsp) + vmovdqu %ymm5, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm1, 128(%rsp) + vmovdqu %ymm6, 160(%rsp) + vmovdqu %ymm2, 192(%rsp) + vmovdqu %ymm3, 224(%rsp) + movq %rcx, %rsi + shrq $3, %rsi + movq $0, %rdi + jmp L_shake256_64$4 +L_shake256_64$5: + movq (%rax,%rdi,8), %r8 + movq 32(%rsp,%r8,8), %r8 + movq %r8, (%rdx,%rdi,8) + incq %rdi +L_shake256_64$4: + cmpq %rsi, %rdi + jb L_shake256_64$5 + movq (%rax,%rdi,8), %rax + shlq $3, %rdi + shlq $3, %rax + jmp L_shake256_64$2 +L_shake256_64$3: + movb 32(%rsp,%rax), %sil + movb %sil, (%rdx,%rdi) + incq %rdi + incq %rax +L_shake256_64$2: + cmpq %rcx, %rdi + jb L_shake256_64$3 + ret +L_sha3_256_32$1: + vpxor %ymm0, %ymm0, %ymm0 + vmovdqu %ymm0, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm0, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm0, 160(%rsp) + vmovdqu %ymm0, 192(%rsp) + vmovdqu %ymm0, 224(%rsp) + vpbroadcastq (%rcx), %ymm6 + movq 8(%rcx), %rdx + movq glob_data + 6208(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 16(%rcx), %rdx + movq glob_data + 6216(%rip), %rsi + movq %rdx, 32(%rsp,%rsi,8) + movq 24(%rcx), %rcx + movq glob_data + 6224(%rip), %rdx + movq %rcx, 32(%rsp,%rdx,8) + movq glob_data + 6232(%rip), %rcx + shlq $3, %rcx + movb $6, 32(%rsp,%rcx) + movq glob_data + 6328(%rip), %rcx + shlq $3, %rcx + movq $135, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + vmovdqu 64(%rsp), %ymm0 + vmovdqu 96(%rsp), %ymm1 + vmovdqu 128(%rsp), %ymm2 + vmovdqu 160(%rsp), %ymm3 + vmovdqu 192(%rsp), %ymm4 + vmovdqu 224(%rsp), %ymm5 + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L_sha3_256_32$2: + vpshufd $78, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm7 + vpxor %ymm5, %ymm3, %ymm9 + vpxor %ymm0, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm1, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm1, %ymm1 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%rsi), %ymm1, %ymm7 + vpsrlvq (%rdi), %ymm1, %ymm1 + vpor %ymm7, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpsllvq 64(%rsi), %ymm2, %ymm7 + vpsrlvq 64(%rdi), %ymm2, %ymm2 + vpor %ymm7, %ymm2, %ymm2 + vpxor %ymm9, %ymm3, %ymm3 + vpsllvq 96(%rsi), %ymm3, %ymm7 + vpsrlvq 96(%rdi), %ymm3, %ymm3 + vpor %ymm7, %ymm3, %ymm10 + vpxor %ymm9, %ymm4, %ymm3 + vpsllvq 128(%rsi), %ymm3, %ymm4 + vpsrlvq 128(%rdi), %ymm3, %ymm3 + vpor %ymm4, %ymm3, %ymm4 + vpxor %ymm9, %ymm5, %ymm5 + vpermq $-115, %ymm1, %ymm3 + vpermq $-115, %ymm2, %ymm7 + vpsllvq 160(%rsi), %ymm5, %ymm1 + vpsrlvq 160(%rdi), %ymm5, %ymm2 + vpor %ymm1, %ymm2, %ymm8 + vpxor %ymm9, %ymm0, %ymm1 + vpermq $27, %ymm10, %ymm0 + vpermq $114, %ymm4, %ymm9 + vpsllvq 32(%rsi), %ymm1, %ymm2 + vpsrlvq 32(%rdi), %ymm1, %ymm1 + vpor %ymm2, %ymm1, %ymm10 + vpsrldq $8, %ymm8, %ymm1 + vpandn %ymm1, %ymm8, %ymm2 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm3, %ymm5 + vpblendd $12, %ymm3, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm0, %ymm4, %ymm4 + vpblendd $48, %ymm10, %ymm5, %ymm5 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm0, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm9, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm4, %ymm1, %ymm1 + vpandn %ymm11, %ymm5, %ymm5 + vpblendd $12, %ymm10, %ymm0, %ymm11 + vpblendd $12, %ymm0, %ymm3, %ymm12 + vpxor %ymm3, %ymm1, %ymm4 + vpblendd $48, %ymm3, %ymm11, %ymm1 + vpblendd $48, %ymm7, %ymm12, %ymm11 + vpxor %ymm0, %ymm5, %ymm5 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm1, %ymm1 + vpxor %ymm9, %ymm1, %ymm12 + vpermq $30, %ymm8, %ymm1 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm1, %ymm11, %ymm11 + vpblendd $12, %ymm0, %ymm7, %ymm1 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm13, %ymm13 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm0, %ymm13, %ymm13 + vpandn %ymm13, %ymm1, %ymm1 + vpxor %ymm10, %ymm1, %ymm1 + vpermq $0, %ymm2, %ymm13 + vpermq $27, %ymm4, %ymm2 + vpermq $-115, %ymm5, %ymm4 + vpermq $114, %ymm12, %ymm5 + vpblendd $12, %ymm3, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm0, %ymm9 + vpblendd $48, %ymm0, %ymm12, %ymm0 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm0, %ymm0 + vpblendd $-64, %ymm3, %ymm9, %ymm3 + vpandn %ymm3, %ymm0, %ymm3 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm0 + vpxor %ymm7, %ymm3, %ymm3 + vpxor (%rcx,%rdx), %ymm6, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_256_32$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm0, 64(%rsp) + vmovdqu %ymm1, 96(%rsp) + vmovdqu %ymm2, 128(%rsp) + vmovdqu %ymm3, 160(%rsp) + vmovdqu %ymm4, 192(%rsp) + vmovdqu %ymm5, 224(%rsp) + movq glob_data + 6200(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, (%rax) + movq glob_data + 6208(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 8(%rax) + movq glob_data + 6216(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 16(%rax) + movq glob_data + 6224(%rip), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + ret +L_sha3_256$1: + vpxor %ymm6, %ymm6, %ymm6 + vpxor %ymm3, %ymm3, %ymm3 + vpxor %ymm4, %ymm4, %ymm4 + vpxor %ymm0, %ymm0, %ymm0 + vpxor %ymm5, %ymm5, %ymm5 + vpxor %ymm1, %ymm1, %ymm1 + vpxor %ymm2, %ymm2, %ymm2 + movb $6, %cl + movq $136, %rdx + leaq glob_data + 6200(%rip), %rsi + vpxor %ymm7, %ymm7, %ymm7 + vmovdqu %ymm7, 32(%rsp) + vmovdqu %ymm7, 64(%rsp) + vmovdqu %ymm7, 96(%rsp) + vmovdqu %ymm7, 128(%rsp) + vmovdqu %ymm7, 160(%rsp) + vmovdqu %ymm7, 192(%rsp) + vmovdqu %ymm7, 224(%rsp) + jmp L_sha3_256$7 +L_sha3_256$8: + movq %rdx, %r9 + shrq $3, %r9 + movq $0, %r10 + jmp L_sha3_256$10 +L_sha3_256$11: + movq (%r8,%r10,8), %r11 + movq (%rsi,%r10,8), %rbx + movq %r11, 32(%rsp,%rbx,8) + incq %r10 +L_sha3_256$10: + cmpq %r9, %r10 + jb L_sha3_256$11 + movq 32(%rsp), %r9 + movq %r9, 40(%rsp) + movq %r9, 48(%rsp) + movq %r9, 56(%rsp) + vpxor 32(%rsp), %ymm6, %ymm6 + vpxor 64(%rsp), %ymm3, %ymm3 + vpxor 96(%rsp), %ymm4, %ymm4 + vpxor 128(%rsp), %ymm0, %ymm0 + vpxor 160(%rsp), %ymm5, %ymm5 + vpxor 192(%rsp), %ymm1, %ymm1 + vpxor 224(%rsp), %ymm2, %ymm2 + addq %rdx, %r8 + subq %rdx, %rdi + leaq glob_data + 3328(%rip), %r9 + movq $0, %r10 + leaq glob_data + 3136(%rip), %r11 + leaq glob_data + 2944(%rip), %rbx + movq $24, %rbp +L_sha3_256$9: + vpshufd $78, %ymm4, %ymm8 + vpxor %ymm0, %ymm1, %ymm7 + vpxor %ymm2, %ymm5, %ymm9 + vpxor %ymm3, %ymm7, %ymm7 + vpxor %ymm9, %ymm7, %ymm10 + vpermq $-109, %ymm10, %ymm7 + vpxor %ymm4, %ymm8, %ymm8 + vpermq $78, %ymm8, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm7, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm8 + vpsrlq $63, %ymm8, %ymm9 + vpaddq %ymm8, %ymm8, %ymm12 + vpor %ymm9, %ymm12, %ymm9 + vpxor %ymm11, %ymm4, %ymm4 + vpxor %ymm11, %ymm6, %ymm6 + vpblendd $-64, %ymm9, %ymm10, %ymm9 + vpblendd $3, %ymm8, %ymm7, %ymm7 + vpxor %ymm7, %ymm9, %ymm9 + vpsllvq (%r11), %ymm4, %ymm7 + vpsrlvq (%rbx), %ymm4, %ymm4 + vpor %ymm7, %ymm4, %ymm4 + vpxor %ymm9, %ymm0, %ymm0 + vpsllvq 64(%r11), %ymm0, %ymm7 + vpsrlvq 64(%rbx), %ymm0, %ymm0 + vpor %ymm7, %ymm0, %ymm0 + vpxor %ymm9, %ymm5, %ymm5 + vpsllvq 96(%r11), %ymm5, %ymm7 + vpsrlvq 96(%rbx), %ymm5, %ymm5 + vpor %ymm7, %ymm5, %ymm10 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 128(%r11), %ymm1, %ymm5 + vpsrlvq 128(%rbx), %ymm1, %ymm1 + vpor %ymm5, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpermq $-115, %ymm4, %ymm5 + vpermq $-115, %ymm0, %ymm7 + vpsllvq 160(%r11), %ymm2, %ymm0 + vpsrlvq 160(%rbx), %ymm2, %ymm2 + vpor %ymm0, %ymm2, %ymm8 + vpxor %ymm9, %ymm3, %ymm0 + vpermq $27, %ymm10, %ymm3 + vpermq $114, %ymm1, %ymm9 + vpsllvq 32(%r11), %ymm0, %ymm1 + vpsrlvq 32(%rbx), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm0 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm7, %ymm2 + vpblendd $12, %ymm7, %ymm5, %ymm4 + vpblendd $12, %ymm5, %ymm10, %ymm11 + vpblendd $48, %ymm7, %ymm1, %ymm1 + vpblendd $48, %ymm3, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm4, %ymm4 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm3, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm4, %ymm4 + vpblendd $-64, %ymm7, %ymm11, %ymm11 + vpandn %ymm2, %ymm1, %ymm1 + vpandn %ymm11, %ymm4, %ymm2 + vpblendd $12, %ymm10, %ymm3, %ymm4 + vpblendd $12, %ymm3, %ymm5, %ymm11 + vpxor %ymm5, %ymm1, %ymm1 + vpblendd $48, %ymm5, %ymm4, %ymm4 + vpblendd $48, %ymm7, %ymm11, %ymm11 + vpxor %ymm3, %ymm2, %ymm2 + vpblendd $-64, %ymm7, %ymm4, %ymm4 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm4, %ymm4 + vpxor %ymm9, %ymm4, %ymm12 + vpermq $30, %ymm8, %ymm4 + vpblendd $48, %ymm6, %ymm4, %ymm4 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm4, %ymm11, %ymm11 + vpblendd $12, %ymm3, %ymm7, %ymm4 + vpblendd $12, %ymm7, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm4, %ymm4 + vpblendd $48, %ymm5, %ymm13, %ymm13 + vpblendd $-64, %ymm5, %ymm4, %ymm4 + vpblendd $-64, %ymm3, %ymm13, %ymm13 + vpandn %ymm13, %ymm4, %ymm4 + vpxor %ymm10, %ymm4, %ymm4 + vpermq $0, %ymm0, %ymm13 + vpermq $27, %ymm1, %ymm0 + vpermq $-115, %ymm2, %ymm1 + vpermq $114, %ymm12, %ymm2 + vpblendd $12, %ymm5, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm3, %ymm9 + vpblendd $48, %ymm3, %ymm12, %ymm3 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm3, %ymm3 + vpblendd $-64, %ymm5, %ymm9, %ymm5 + vpandn %ymm5, %ymm3, %ymm5 + vpxor %ymm13, %ymm6, %ymm6 + vpxor %ymm8, %ymm11, %ymm3 + vpxor %ymm7, %ymm5, %ymm5 + vpxor (%r9,%r10), %ymm6, %ymm6 + addq $32, %r10 + decq %rbp + jne L_sha3_256$9 +L_sha3_256$7: + cmpq %rdx, %rdi + jnb L_sha3_256$8 + vpxor %ymm7, %ymm7, %ymm7 + vmovdqu %ymm7, 32(%rsp) + vmovdqu %ymm7, 64(%rsp) + vmovdqu %ymm7, 96(%rsp) + vmovdqu %ymm7, 128(%rsp) + vmovdqu %ymm7, 160(%rsp) + vmovdqu %ymm7, 192(%rsp) + vmovdqu %ymm7, 224(%rsp) + movq %rdi, %r9 + shrq $3, %r9 + movq $0, %r10 + jmp L_sha3_256$5 +L_sha3_256$6: + movq (%r8,%r10,8), %r11 + movq (%rsi,%r10,8), %rbx + movq %r11, 32(%rsp,%rbx,8) + incq %r10 +L_sha3_256$5: + cmpq %r9, %r10 + jb L_sha3_256$6 + movq (%rsi,%r10,8), %r9 + shlq $3, %r9 + shlq $3, %r10 + jmp L_sha3_256$3 +L_sha3_256$4: + movb (%r8,%r10), %r11b + movb %r11b, 32(%rsp,%r9) + incq %r10 + incq %r9 +L_sha3_256$3: + cmpq %rdi, %r10 + jb L_sha3_256$4 + movb %cl, 32(%rsp,%r9) + movq %rdx, %rcx + addq $-1, %rcx + shrq $3, %rcx + movq (%rsi,%rcx,8), %rcx + shlq $3, %rcx + addq $-1, %rdx + andq $7, %rdx + addq %rdx, %rcx + xorb $-128, 32(%rsp,%rcx) + movq 32(%rsp), %rcx + movq %rcx, 40(%rsp) + movq %rcx, 48(%rsp) + movq %rcx, 56(%rsp) + vpxor 32(%rsp), %ymm6, %ymm6 + vpxor 64(%rsp), %ymm3, %ymm7 + vpxor 96(%rsp), %ymm4, %ymm3 + vpxor 128(%rsp), %ymm0, %ymm0 + vpxor 160(%rsp), %ymm5, %ymm4 + vpxor 192(%rsp), %ymm1, %ymm1 + vpxor 224(%rsp), %ymm2, %ymm2 + leaq glob_data + 3328(%rip), %rcx + movq $0, %rdx + leaq glob_data + 3136(%rip), %rsi + leaq glob_data + 2944(%rip), %rdi + movq $24, %r8 +L_sha3_256$2: + vpshufd $78, %ymm3, %ymm5 + vpxor %ymm0, %ymm1, %ymm8 + vpxor %ymm2, %ymm4, %ymm9 + vpxor %ymm7, %ymm8, %ymm8 + vpxor %ymm9, %ymm8, %ymm10 + vpermq $-109, %ymm10, %ymm8 + vpxor %ymm3, %ymm5, %ymm5 + vpermq $78, %ymm5, %ymm9 + vpsrlq $63, %ymm10, %ymm11 + vpaddq %ymm10, %ymm10, %ymm10 + vpor %ymm10, %ymm11, %ymm11 + vpermq $57, %ymm11, %ymm10 + vpxor %ymm8, %ymm11, %ymm11 + vpermq $0, %ymm11, %ymm11 + vpxor %ymm6, %ymm5, %ymm5 + vpxor %ymm9, %ymm5, %ymm9 + vpsrlq $63, %ymm9, %ymm5 + vpaddq %ymm9, %ymm9, %ymm12 + vpor %ymm5, %ymm12, %ymm12 + vpxor %ymm11, %ymm3, %ymm3 + vpxor %ymm11, %ymm6, %ymm5 + vpblendd $-64, %ymm12, %ymm10, %ymm6 + vpblendd $3, %ymm9, %ymm8, %ymm8 + vpxor %ymm8, %ymm6, %ymm9 + vpsllvq (%rsi), %ymm3, %ymm6 + vpsrlvq (%rdi), %ymm3, %ymm3 + vpor %ymm6, %ymm3, %ymm3 + vpxor %ymm9, %ymm0, %ymm0 + vpsllvq 64(%rsi), %ymm0, %ymm6 + vpsrlvq 64(%rdi), %ymm0, %ymm0 + vpor %ymm6, %ymm0, %ymm0 + vpxor %ymm9, %ymm4, %ymm4 + vpsllvq 96(%rsi), %ymm4, %ymm6 + vpsrlvq 96(%rdi), %ymm4, %ymm4 + vpor %ymm6, %ymm4, %ymm10 + vpxor %ymm9, %ymm1, %ymm1 + vpsllvq 128(%rsi), %ymm1, %ymm4 + vpsrlvq 128(%rdi), %ymm1, %ymm1 + vpor %ymm4, %ymm1, %ymm1 + vpxor %ymm9, %ymm2, %ymm2 + vpermq $-115, %ymm3, %ymm4 + vpermq $-115, %ymm0, %ymm6 + vpsllvq 160(%rsi), %ymm2, %ymm0 + vpsrlvq 160(%rdi), %ymm2, %ymm2 + vpor %ymm0, %ymm2, %ymm8 + vpxor %ymm9, %ymm7, %ymm0 + vpermq $27, %ymm10, %ymm7 + vpermq $114, %ymm1, %ymm9 + vpsllvq 32(%rsi), %ymm0, %ymm1 + vpsrlvq 32(%rdi), %ymm0, %ymm0 + vpor %ymm1, %ymm0, %ymm10 + vpsrldq $8, %ymm8, %ymm0 + vpandn %ymm0, %ymm8, %ymm0 + vpblendd $12, %ymm9, %ymm10, %ymm1 + vpblendd $12, %ymm10, %ymm6, %ymm2 + vpblendd $12, %ymm6, %ymm4, %ymm3 + vpblendd $12, %ymm4, %ymm10, %ymm11 + vpblendd $48, %ymm6, %ymm1, %ymm1 + vpblendd $48, %ymm7, %ymm2, %ymm2 + vpblendd $48, %ymm10, %ymm3, %ymm3 + vpblendd $48, %ymm9, %ymm11, %ymm11 + vpblendd $-64, %ymm7, %ymm1, %ymm1 + vpblendd $-64, %ymm9, %ymm2, %ymm2 + vpblendd $-64, %ymm9, %ymm3, %ymm3 + vpblendd $-64, %ymm6, %ymm11, %ymm11 + vpandn %ymm2, %ymm1, %ymm1 + vpandn %ymm11, %ymm3, %ymm2 + vpblendd $12, %ymm10, %ymm7, %ymm3 + vpblendd $12, %ymm7, %ymm4, %ymm11 + vpxor %ymm4, %ymm1, %ymm1 + vpblendd $48, %ymm4, %ymm3, %ymm3 + vpblendd $48, %ymm6, %ymm11, %ymm11 + vpxor %ymm7, %ymm2, %ymm2 + vpblendd $-64, %ymm6, %ymm3, %ymm3 + vpblendd $-64, %ymm10, %ymm11, %ymm11 + vpandn %ymm11, %ymm3, %ymm3 + vpxor %ymm9, %ymm3, %ymm12 + vpermq $30, %ymm8, %ymm3 + vpblendd $48, %ymm5, %ymm3, %ymm3 + vpermq $57, %ymm8, %ymm11 + vpblendd $-64, %ymm5, %ymm11, %ymm11 + vpandn %ymm3, %ymm11, %ymm11 + vpblendd $12, %ymm7, %ymm6, %ymm3 + vpblendd $12, %ymm6, %ymm9, %ymm13 + vpblendd $48, %ymm9, %ymm3, %ymm3 + vpblendd $48, %ymm4, %ymm13, %ymm13 + vpblendd $-64, %ymm4, %ymm3, %ymm3 + vpblendd $-64, %ymm7, %ymm13, %ymm13 + vpandn %ymm13, %ymm3, %ymm3 + vpxor %ymm10, %ymm3, %ymm3 + vpermq $0, %ymm0, %ymm13 + vpermq $27, %ymm1, %ymm0 + vpermq $-115, %ymm2, %ymm1 + vpermq $114, %ymm12, %ymm2 + vpblendd $12, %ymm4, %ymm9, %ymm12 + vpblendd $12, %ymm9, %ymm7, %ymm9 + vpblendd $48, %ymm7, %ymm12, %ymm7 + vpblendd $48, %ymm10, %ymm9, %ymm9 + vpblendd $-64, %ymm10, %ymm7, %ymm7 + vpblendd $-64, %ymm4, %ymm9, %ymm4 + vpandn %ymm4, %ymm7, %ymm4 + vpxor %ymm13, %ymm5, %ymm5 + vpxor %ymm8, %ymm11, %ymm7 + vpxor %ymm6, %ymm4, %ymm4 + vpxor (%rcx,%rdx), %ymm5, %ymm6 + addq $32, %rdx + decq %r8 + jne L_sha3_256$2 + vmovdqu %ymm6, 32(%rsp) + vmovdqu %ymm7, 64(%rsp) + vmovdqu %ymm3, 96(%rsp) + vmovdqu %ymm0, 128(%rsp) + vmovdqu %ymm4, 160(%rsp) + vmovdqu %ymm1, 192(%rsp) + vmovdqu %ymm2, 224(%rsp) + leaq glob_data + 6200(%rip), %rcx + movq (%rcx), %rdx + movq 32(%rsp,%rdx,8), %rdx + movq %rdx, (%rax) + movq 8(%rcx), %rdx + movq 32(%rsp,%rdx,8), %rdx + movq %rdx, 8(%rax) + movq 16(%rcx), %rdx + movq 32(%rsp,%rdx,8), %rdx + movq %rdx, 16(%rax) + movq 24(%rcx), %rcx + movq 32(%rsp,%rcx,8), %rcx + movq %rcx, 24(%rax) + ret + .data + .p2align 5 +_glob_data: +glob_data: + .byte 0 + .byte 1 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 7 + .byte 8 + .byte 9 + .byte 10 + .byte 10 + .byte 11 + .byte 4 + .byte 5 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 8 + .byte 9 + .byte 10 + .byte 11 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 14 + .byte 15 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 8 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 8 + .byte 0 + .byte 1 + .byte 1 + .byte 2 + .byte 2 + .byte 3 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 6 + .byte 7 + .byte 7 + .byte 8 + .byte 8 + .byte 9 + .byte 2 + .byte 3 + .byte 3 + .byte 4 + .byte 4 + .byte 5 + .byte 5 + .byte 6 + .byte 7 + .byte 8 + .byte 8 + .byte 9 + .byte 9 + .byte 10 + .byte 10 + .byte 11 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 1 + .byte 1 + .byte 1 + .byte 2 + .byte 2 + .byte 2 + .byte 2 + .byte 3 + .byte 3 + .byte 3 + .byte 3 + .byte 4 + .byte 4 + .byte 4 + .byte 4 + .byte 5 + .byte 5 + .byte 5 + .byte 5 + .byte 6 + .byte 6 + .byte 6 + .byte 6 + .byte 7 + .byte 7 + .byte 7 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 73 + .byte 5 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte 64 + .byte 3 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -128 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -127 + .byte 6 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -1 + .byte 15 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte -40 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -95 + .byte 5 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte -65 + .byte 78 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte -13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte 1 + .byte 13 + .byte -91 + .byte -91 + .byte -76 + .byte -31 + .byte 34 + .byte 79 + .byte 52 + .byte 93 + .byte 35 + .byte 68 + .byte 86 + .byte -91 + .byte -25 + .byte 78 + .byte -6 + .byte 83 + .byte 123 + .byte -57 + .byte 37 + .byte 43 + .byte 55 + .byte 58 + .byte -120 + .byte 24 + .byte -127 + .byte 126 + .byte 5 + .byte -60 + .byte -97 + .byte -9 + .byte -72 + .byte -80 + .byte -91 + .byte 6 + .byte -76 + .byte 5 + .byte 34 + .byte 9 + .byte 52 + .byte 1 + .byte 35 + .byte 11 + .byte 86 + .byte 3 + .byte -25 + .byte 9 + .byte -6 + .byte 5 + .byte 123 + .byte 6 + .byte 37 + .byte 12 + .byte 55 + .byte 5 + .byte -120 + .byte 0 + .byte -127 + .byte 11 + .byte 5 + .byte 5 + .byte -97 + .byte 10 + .byte -72 + .byte 8 + .byte 15 + .byte 68 + .byte 67 + .byte -94 + .byte 29 + .byte -112 + .byte 108 + .byte -124 + .byte 102 + .byte -43 + .byte -26 + .byte 87 + .byte -2 + .byte 30 + .byte -95 + .byte -41 + .byte -93 + .byte -67 + .byte 106 + .byte -95 + .byte 63 + .byte -43 + .byte -65 + .byte 81 + .byte -71 + .byte -96 + .byte -41 + .byte 28 + .byte -90 + .byte -100 + .byte -48 + .byte 121 + .byte 15 + .byte 7 + .byte 67 + .byte 9 + .byte 29 + .byte 9 + .byte 108 + .byte 0 + .byte 102 + .byte 3 + .byte -26 + .byte 5 + .byte -2 + .byte 4 + .byte -95 + .byte 4 + .byte -93 + .byte 4 + .byte 106 + .byte 3 + .byte 63 + .byte 8 + .byte -65 + .byte 4 + .byte -71 + .byte 5 + .byte -41 + .byte 7 + .byte -90 + .byte 10 + .byte -48 + .byte 9 + .byte -5 + .byte 69 + .byte 92 + .byte 94 + .byte 41 + .byte -17 + .byte 65 + .byte -66 + .byte -43 + .byte 49 + .byte -28 + .byte 113 + .byte 64 + .byte -55 + .byte -114 + .byte -53 + .byte -73 + .byte -72 + .byte -9 + .byte 117 + .byte -115 + .byte -36 + .byte -106 + .byte 110 + .byte -61 + .byte 34 + .byte 15 + .byte 62 + .byte 90 + .byte 110 + .byte 85 + .byte -78 + .byte -5 + .byte 4 + .byte 92 + .byte 10 + .byte 41 + .byte 4 + .byte 65 + .byte 11 + .byte -43 + .byte 2 + .byte -28 + .byte 5 + .byte 64 + .byte 9 + .byte -114 + .byte 1 + .byte -73 + .byte 3 + .byte -9 + .byte 0 + .byte -115 + .byte 5 + .byte -106 + .byte 12 + .byte -61 + .byte 9 + .byte 15 + .byte 1 + .byte 90 + .byte 0 + .byte 85 + .byte 3 + .byte 35 + .byte 63 + .byte 35 + .byte 63 + .byte -51 + .byte -105 + .byte -51 + .byte -105 + .byte 102 + .byte -35 + .byte 102 + .byte -35 + .byte 6 + .byte -72 + .byte 6 + .byte -72 + .byte -95 + .byte -35 + .byte -95 + .byte -35 + .byte 37 + .byte 41 + .byte 37 + .byte 41 + .byte 8 + .byte -95 + .byte 8 + .byte -95 + .byte -87 + .byte 109 + .byte -87 + .byte 109 + .byte 35 + .byte 6 + .byte 35 + .byte 6 + .byte -51 + .byte 0 + .byte -51 + .byte 0 + .byte 102 + .byte 11 + .byte 102 + .byte 11 + .byte 6 + .byte 6 + .byte 6 + .byte 6 + .byte -95 + .byte 10 + .byte -95 + .byte 10 + .byte 37 + .byte 10 + .byte 37 + .byte 10 + .byte 8 + .byte 9 + .byte 8 + .byte 9 + .byte -87 + .byte 2 + .byte -87 + .byte 2 + .byte 69 + .byte -122 + .byte 69 + .byte -122 + .byte 69 + .byte -122 + .byte 69 + .byte -122 + .byte -62 + .byte 43 + .byte -62 + .byte 43 + .byte -62 + .byte 43 + .byte -62 + .byte 43 + .byte -78 + .byte -6 + .byte -78 + .byte -6 + .byte -78 + .byte -6 + .byte -78 + .byte -6 + .byte 63 + .byte -42 + .byte 63 + .byte -42 + .byte 63 + .byte -42 + .byte 63 + .byte -42 + .byte 69 + .byte 7 + .byte 69 + .byte 7 + .byte 69 + .byte 7 + .byte 69 + .byte 7 + .byte -62 + .byte 5 + .byte -62 + .byte 5 + .byte -62 + .byte 5 + .byte -62 + .byte 5 + .byte -78 + .byte 4 + .byte -78 + .byte 4 + .byte -78 + .byte 4 + .byte -78 + .byte 4 + .byte 63 + .byte 9 + .byte 63 + .byte 9 + .byte 63 + .byte 9 + .byte 63 + .byte 9 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte 55 + .byte 65 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte -30 + .byte -111 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte 55 + .byte 12 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -30 + .byte 11 + .byte -19 + .byte -4 + .byte -19 + .byte -4 + .byte -19 + .byte 5 + .byte -19 + .byte 5 + .byte 75 + .byte 49 + .byte -72 + .byte -77 + .byte -92 + .byte -73 + .byte 125 + .byte -79 + .byte -94 + .byte -50 + .byte 54 + .byte 73 + .byte -109 + .byte -119 + .byte -9 + .byte 126 + .byte -116 + .byte -22 + .byte -52 + .byte -91 + .byte -21 + .byte 17 + .byte -74 + .byte -52 + .byte -104 + .byte 84 + .byte -102 + .byte 55 + .byte -74 + .byte -53 + .byte 83 + .byte -44 + .byte 75 + .byte 0 + .byte -72 + .byte 11 + .byte -92 + .byte 11 + .byte 125 + .byte 10 + .byte -94 + .byte 8 + .byte 54 + .byte 7 + .byte -109 + .byte 0 + .byte -9 + .byte 9 + .byte -116 + .byte 6 + .byte -52 + .byte 1 + .byte -21 + .byte 0 + .byte -74 + .byte 10 + .byte -104 + .byte 12 + .byte -102 + .byte 9 + .byte -74 + .byte 9 + .byte 83 + .byte 11 + .byte -100 + .byte 20 + .byte 95 + .byte 56 + .byte 104 + .byte -69 + .byte 54 + .byte 72 + .byte 90 + .byte 112 + .byte 9 + .byte -114 + .byte 122 + .byte -42 + .byte -10 + .byte -126 + .byte -37 + .byte -25 + .byte 35 + .byte 58 + .byte 80 + .byte -4 + .byte 91 + .byte 108 + .byte -13 + .byte -81 + .byte -29 + .byte 125 + .byte -42 + .byte 44 + .byte 79 + .byte 1 + .byte -100 + .byte 0 + .byte 95 + .byte 11 + .byte 104 + .byte 3 + .byte 54 + .byte 6 + .byte 90 + .byte 2 + .byte 9 + .byte 3 + .byte 122 + .byte 8 + .byte -10 + .byte 0 + .byte -37 + .byte 6 + .byte 35 + .byte 1 + .byte 80 + .byte 12 + .byte 91 + .byte 11 + .byte -13 + .byte 6 + .byte -29 + .byte 4 + .byte -42 + .byte 10 + .byte 79 + .byte 4 + .byte 68 + .byte -109 + .byte -125 + .byte 101 + .byte -118 + .byte 2 + .byte 82 + .byte -36 + .byte -102 + .byte 48 + .byte 64 + .byte -63 + .byte 8 + .byte -104 + .byte -3 + .byte 49 + .byte 8 + .byte -98 + .byte 26 + .byte -81 + .byte 46 + .byte -79 + .byte 13 + .byte 92 + .byte 10 + .byte -121 + .byte 40 + .byte -6 + .byte 117 + .byte 25 + .byte 58 + .byte 22 + .byte 68 + .byte 7 + .byte -125 + .byte 12 + .byte -118 + .byte 4 + .byte 82 + .byte 6 + .byte -102 + .byte 2 + .byte 64 + .byte 1 + .byte 8 + .byte 0 + .byte -3 + .byte 10 + .byte 8 + .byte 6 + .byte 26 + .byte 1 + .byte 46 + .byte 7 + .byte 13 + .byte 5 + .byte 10 + .byte 9 + .byte 40 + .byte 2 + .byte 117 + .byte 10 + .byte 58 + .byte 8 + .byte -126 + .byte 102 + .byte -126 + .byte 102 + .byte 66 + .byte -84 + .byte 66 + .byte -84 + .byte 79 + .byte 4 + .byte 79 + .byte 4 + .byte 61 + .byte -22 + .byte 61 + .byte -22 + .byte -126 + .byte 113 + .byte -126 + .byte 113 + .byte -7 + .byte 102 + .byte -7 + .byte 102 + .byte 45 + .byte -68 + .byte 45 + .byte -68 + .byte -60 + .byte 22 + .byte -60 + .byte 22 + .byte -126 + .byte 0 + .byte -126 + .byte 0 + .byte 66 + .byte 6 + .byte 66 + .byte 6 + .byte 79 + .byte 7 + .byte 79 + .byte 7 + .byte 61 + .byte 3 + .byte 61 + .byte 3 + .byte -126 + .byte 11 + .byte -126 + .byte 11 + .byte -7 + .byte 11 + .byte -7 + .byte 11 + .byte 45 + .byte 5 + .byte 45 + .byte 5 + .byte -60 + .byte 10 + .byte -60 + .byte 10 + .byte 75 + .byte 61 + .byte 75 + .byte 61 + .byte 75 + .byte 61 + .byte 75 + .byte 61 + .byte -40 + .byte 14 + .byte -40 + .byte 14 + .byte -40 + .byte 14 + .byte -40 + .byte 14 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -109 + .byte -85 + .byte 81 + .byte -85 + .byte 81 + .byte -85 + .byte 81 + .byte -85 + .byte 81 + .byte 75 + .byte 12 + .byte 75 + .byte 12 + .byte 75 + .byte 12 + .byte 75 + .byte 12 + .byte -40 + .byte 6 + .byte -40 + .byte 6 + .byte -40 + .byte 6 + .byte -40 + .byte 6 + .byte -109 + .byte 10 + .byte -109 + .byte 10 + .byte -109 + .byte 10 + .byte -109 + .byte 10 + .byte -85 + .byte 0 + .byte -85 + .byte 0 + .byte -85 + .byte 0 + .byte -85 + .byte 0 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 115 + .byte 48 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 44 + .byte -53 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 115 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 44 + .byte 7 + .byte 103 + .byte -58 + .byte 103 + .byte -58 + .byte 103 + .byte 1 + .byte 103 + .byte 1 + .byte -116 + .byte -21 + .byte -116 + .byte -21 + .byte -116 + .byte 7 + .byte -116 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 11 + .byte 123 + .byte 11 + .byte 123 + .byte 11 + .byte 10 + .byte 11 + .byte 10 + .byte -102 + .byte 57 + .byte -102 + .byte 57 + .byte -102 + .byte 11 + .byte -102 + .byte 11 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -43 + .byte 52 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -114 + .byte -49 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -43 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte -114 + .byte 5 + .byte 86 + .byte -82 + .byte 86 + .byte -82 + .byte 86 + .byte -82 + .byte 86 + .byte -82 + .byte 110 + .byte 108 + .byte 110 + .byte 108 + .byte 110 + .byte 108 + .byte 110 + .byte 108 + .byte 41 + .byte -15 + .byte 41 + .byte -15 + .byte 41 + .byte -15 + .byte 41 + .byte -15 + .byte -74 + .byte -62 + .byte -74 + .byte -62 + .byte -74 + .byte -62 + .byte -74 + .byte -62 + .byte 86 + .byte 12 + .byte 86 + .byte 12 + .byte 86 + .byte 12 + .byte 86 + .byte 12 + .byte 110 + .byte 2 + .byte 110 + .byte 2 + .byte 110 + .byte 2 + .byte 110 + .byte 2 + .byte 41 + .byte 6 + .byte 41 + .byte 6 + .byte 41 + .byte 6 + .byte 41 + .byte 6 + .byte -74 + .byte 0 + .byte -74 + .byte 0 + .byte -74 + .byte 0 + .byte -74 + .byte 0 + .byte 61 + .byte -23 + .byte 61 + .byte -23 + .byte -44 + .byte 67 + .byte -44 + .byte 67 + .byte 8 + .byte -103 + .byte 8 + .byte -103 + .byte 127 + .byte -114 + .byte 127 + .byte -114 + .byte -60 + .byte 21 + .byte -60 + .byte 21 + .byte -78 + .byte -5 + .byte -78 + .byte -5 + .byte -65 + .byte 83 + .byte -65 + .byte 83 + .byte 127 + .byte -103 + .byte 127 + .byte -103 + .byte 61 + .byte 2 + .byte 61 + .byte 2 + .byte -44 + .byte 7 + .byte -44 + .byte 7 + .byte 8 + .byte 1 + .byte 8 + .byte 1 + .byte 127 + .byte 1 + .byte 127 + .byte 1 + .byte -60 + .byte 9 + .byte -60 + .byte 9 + .byte -78 + .byte 5 + .byte -78 + .byte 5 + .byte -65 + .byte 6 + .byte -65 + .byte 6 + .byte 127 + .byte 12 + .byte 127 + .byte 12 + .byte -57 + .byte -23 + .byte -116 + .byte -26 + .byte -39 + .byte 5 + .byte -9 + .byte 120 + .byte -12 + .byte -93 + .byte -45 + .byte 78 + .byte -25 + .byte 80 + .byte -7 + .byte 97 + .byte 4 + .byte -50 + .byte -7 + .byte 103 + .byte -63 + .byte 62 + .byte 103 + .byte -49 + .byte -81 + .byte 35 + .byte 119 + .byte -3 + .byte 126 + .byte -102 + .byte -67 + .byte 108 + .byte -57 + .byte 4 + .byte -116 + .byte 2 + .byte -39 + .byte 10 + .byte -9 + .byte 3 + .byte -12 + .byte 7 + .byte -45 + .byte 5 + .byte -25 + .byte 11 + .byte -7 + .byte 6 + .byte 4 + .byte 2 + .byte -7 + .byte 12 + .byte -63 + .byte 11 + .byte 103 + .byte 10 + .byte -81 + .byte 6 + .byte 119 + .byte 8 + .byte 126 + .byte 0 + .byte -67 + .byte 5 + .byte -78 + .byte -2 + .byte 43 + .byte -45 + .byte 30 + .byte -126 + .byte 14 + .byte 80 + .byte -90 + .byte -109 + .byte -79 + .byte 3 + .byte -34 + .byte -59 + .byte 38 + .byte 24 + .byte 11 + .byte 125 + .byte -121 + .byte 41 + .byte -8 + .byte 113 + .byte -89 + .byte -113 + .byte -53 + .byte -73 + .byte -103 + .byte 68 + .byte -94 + .byte -57 + .byte 101 + .byte -21 + .byte -78 + .byte 8 + .byte 43 + .byte 2 + .byte 30 + .byte 8 + .byte 14 + .byte 6 + .byte -90 + .byte 1 + .byte -79 + .byte 0 + .byte -34 + .byte 11 + .byte 38 + .byte 6 + .byte 11 + .byte 12 + .byte -121 + .byte 4 + .byte -8 + .byte 9 + .byte -89 + .byte 10 + .byte -53 + .byte 6 + .byte -103 + .byte 9 + .byte -94 + .byte 1 + .byte 101 + .byte 12 + .byte -82 + .byte 43 + .byte 75 + .byte 52 + .byte 103 + .byte -56 + .byte 105 + .byte -85 + .byte 75 + .byte 51 + .byte 22 + .byte -18 + .byte 53 + .byte 90 + .byte 117 + .byte 21 + .byte 10 + .byte -127 + .byte 110 + .byte 118 + .byte -53 + .byte -74 + .byte 95 + .byte 49 + .byte -124 + .byte 78 + .byte 93 + .byte 72 + .byte 73 + .byte 76 + .byte -74 + .byte -50 + .byte -82 + .byte 1 + .byte 75 + .byte 3 + .byte 103 + .byte 3 + .byte 105 + .byte 0 + .byte 75 + .byte 2 + .byte 22 + .byte 12 + .byte 53 + .byte 11 + .byte 117 + .byte 6 + .byte 10 + .byte 3 + .byte 110 + .byte 12 + .byte -53 + .byte 5 + .byte 95 + .byte 4 + .byte -124 + .byte 2 + .byte 93 + .byte 1 + .byte 73 + .byte 1 + .byte -74 + .byte 12 + .byte 20 + .byte 3 + .byte 20 + .byte 3 + .byte 20 + .byte 7 + .byte 20 + .byte 7 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte 31 + .byte 110 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte -54 + .byte -66 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte 31 + .byte 1 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -54 + .byte 0 + .byte -62 + .byte 41 + .byte -62 + .byte 41 + .byte -62 + .byte 41 + .byte -62 + .byte 41 + .byte 79 + .byte 5 + .byte 79 + .byte 5 + .byte 79 + .byte 5 + .byte 79 + .byte 5 + .byte 63 + .byte -44 + .byte 63 + .byte -44 + .byte 63 + .byte -44 + .byte 63 + .byte -44 + .byte -68 + .byte 121 + .byte -68 + .byte 121 + .byte -68 + .byte 121 + .byte -68 + .byte 121 + .byte -62 + .byte 3 + .byte -62 + .byte 3 + .byte -62 + .byte 3 + .byte -62 + .byte 3 + .byte 79 + .byte 8 + .byte 79 + .byte 8 + .byte 79 + .byte 8 + .byte 79 + .byte 8 + .byte 63 + .byte 7 + .byte 63 + .byte 7 + .byte 63 + .byte 7 + .byte 63 + .byte 7 + .byte -68 + .byte 5 + .byte -68 + .byte 5 + .byte -68 + .byte 5 + .byte -68 + .byte 5 + .byte 88 + .byte -110 + .byte 88 + .byte -110 + .byte -7 + .byte 94 + .byte -7 + .byte 94 + .byte -36 + .byte -42 + .byte -36 + .byte -42 + .byte 96 + .byte 34 + .byte 96 + .byte 34 + .byte -5 + .byte 71 + .byte -5 + .byte 71 + .byte -101 + .byte 34 + .byte -101 + .byte 34 + .byte 52 + .byte 104 + .byte 52 + .byte 104 + .byte -34 + .byte -64 + .byte -34 + .byte -64 + .byte 88 + .byte 10 + .byte 88 + .byte 10 + .byte -7 + .byte 3 + .byte -7 + .byte 3 + .byte -36 + .byte 2 + .byte -36 + .byte 2 + .byte 96 + .byte 2 + .byte 96 + .byte 2 + .byte -5 + .byte 6 + .byte -5 + .byte 6 + .byte -101 + .byte 1 + .byte -101 + .byte 1 + .byte 52 + .byte 12 + .byte 52 + .byte 12 + .byte -34 + .byte 6 + .byte -34 + .byte 6 + .byte -84 + .byte 77 + .byte -89 + .byte -111 + .byte -14 + .byte -63 + .byte 62 + .byte -35 + .byte 107 + .byte -111 + .byte 116 + .byte 35 + .byte 10 + .byte -118 + .byte 74 + .byte 71 + .byte 115 + .byte 52 + .byte -63 + .byte 54 + .byte 29 + .byte -114 + .byte 44 + .byte -50 + .byte -64 + .byte 65 + .byte -40 + .byte 16 + .byte -91 + .byte -95 + .byte 6 + .byte -70 + .byte -84 + .byte 9 + .byte -89 + .byte 12 + .byte -14 + .byte 11 + .byte 62 + .byte 3 + .byte 107 + .byte 0 + .byte 116 + .byte 7 + .byte 10 + .byte 12 + .byte 74 + .byte 9 + .byte 115 + .byte 11 + .byte -63 + .byte 3 + .byte 29 + .byte 7 + .byte 44 + .byte 10 + .byte -64 + .byte 1 + .byte -40 + .byte 8 + .byte -91 + .byte 2 + .byte 6 + .byte 8 + .byte 49 + .byte -122 + .byte 91 + .byte 99 + .byte 42 + .byte -29 + .byte 72 + .byte 95 + .byte 66 + .byte -82 + .byte -62 + .byte 42 + .byte -105 + .byte 94 + .byte 94 + .byte 66 + .byte 96 + .byte 40 + .byte 3 + .byte -31 + .byte 27 + .byte -88 + .byte -101 + .byte 42 + .byte -107 + .byte 123 + .byte -28 + .byte 111 + .byte -66 + .byte 93 + .byte -14 + .byte -69 + .byte 49 + .byte 3 + .byte 91 + .byte 2 + .byte 42 + .byte 5 + .byte 72 + .byte 7 + .byte 66 + .byte 8 + .byte -62 + .byte 4 + .byte -105 + .byte 9 + .byte 94 + .byte 8 + .byte 96 + .byte 8 + .byte 3 + .byte 8 + .byte 27 + .byte 7 + .byte -101 + .byte 9 + .byte -107 + .byte 12 + .byte -28 + .byte 3 + .byte -66 + .byte 3 + .byte -14 + .byte 5 + .byte 73 + .byte 79 + .byte 98 + .byte 8 + .byte -4 + .byte 59 + .byte -128 + .byte -127 + .byte 121 + .byte -25 + .byte -54 + .byte -59 + .byte -36 + .byte -44 + .byte -122 + .byte 56 + .byte 7 + .byte -84 + .byte 26 + .byte -79 + .byte -85 + .byte 90 + .byte -34 + .byte -69 + .byte -51 + .byte -94 + .byte -33 + .byte -80 + .byte 77 + .byte 30 + .byte 92 + .byte 90 + .byte 73 + .byte 4 + .byte 98 + .byte 2 + .byte -4 + .byte 7 + .byte -128 + .byte 1 + .byte 121 + .byte 12 + .byte -54 + .byte 7 + .byte -36 + .byte 0 + .byte -122 + .byte 6 + .byte 7 + .byte 7 + .byte 26 + .byte 3 + .byte -85 + .byte 9 + .byte -34 + .byte 1 + .byte -51 + .byte 11 + .byte -33 + .byte 3 + .byte 77 + .byte 7 + .byte 92 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 7 + .byte 0 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 15 + .byte 8 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 23 + .byte 16 + .byte 17 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 31 + .byte 24 + .byte 25 + .byte 26 + .byte 27 + .byte 28 + .byte 29 + .byte 30 + .byte 1 + .byte 2 + .byte 3 + .byte 4 + .byte 5 + .byte 6 + .byte 7 + .byte 0 + .byte 9 + .byte 10 + .byte 11 + .byte 12 + .byte 13 + .byte 14 + .byte 15 + .byte 8 + .byte 17 + .byte 18 + .byte 19 + .byte 20 + .byte 21 + .byte 22 + .byte 23 + .byte 16 + .byte 25 + .byte 26 + .byte 27 + .byte 28 + .byte 29 + .byte 30 + .byte 31 + .byte 24 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 61 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 46 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 28 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 23 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 63 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 36 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 37 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 19 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 58 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 25 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 54 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 56 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 62 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 49 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 39 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 44 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 20 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 21 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 43 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 50 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 18 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 36 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 41 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 62 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 28 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 27 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 45 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 56 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 39 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 61 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 55 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 15 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 25 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 20 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 44 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 43 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 21 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 14 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 1 + .byte 4 + .byte 5 + .byte 8 + .byte 9 + .byte 12 + .byte 13 + .byte 2 + .byte 3 + .byte 6 + .byte 7 + .byte 10 + .byte 11 + .byte 14 + .byte 15 + .byte 3 + .byte 0 + .byte 0 + .byte 0 + .byte 2 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte -1 + .byte -1 + .byte -1 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte -1 + .byte -1 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte -1 + .byte -1 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte -1 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 14 + .byte -1 + .byte -1 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 14 + .byte -1 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 12 + .byte 14 + .byte -1 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte -1 + .byte 0 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 2 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte -1 + .byte 0 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte -1 + .byte 0 + .byte 2 + .byte 4 + .byte 6 + .byte 8 + .byte 10 + .byte 12 + .byte 14 + .byte 12 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte 4 + .byte 1 + .byte 0 + .byte 0 + .byte 4 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 4 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 5 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 6 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 7 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 24 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 13 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 18 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 23 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 16 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 25 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 22 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 15 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 11 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 12 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 21 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 26 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 19 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 20 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 17 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 14 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 27 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -8 + .byte 31 + .byte -32 + .byte 127 + .byte 4 + .byte 52 + .byte 1 + .byte 13 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte 15 + .byte 0 + .byte -16 + .byte 0 + .byte -1 + .byte 15 + .byte -1 + .byte 3 + .byte 0 + .byte 16 + .byte 15 + .byte 0 + .byte 1 + .byte 16 + .byte 15 + .byte 0 + .byte 0 + .byte 2 + .byte 1 + .byte 0 + .byte 1 + .byte 2 + .byte -1 + .byte 3 + .byte 4 + .byte 5 + .byte -1 + .byte 6 + .byte 7 + .byte 8 + .byte -1 + .byte 9 + .byte 10 + .byte 11 + .byte -1 + .byte 4 + .byte 5 + .byte 6 + .byte -1 + .byte 7 + .byte 8 + .byte 9 + .byte -1 + .byte 10 + .byte 11 + .byte 12 + .byte -1 + .byte 13 + .byte 14 + .byte 15 + .byte -1 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -5 + .byte 58 + .byte -91 + .byte 6 + .byte 15 + .byte 7 + .byte -76 + .byte 5 + .byte 67 + .byte 9 + .byte 34 + .byte 9 + .byte 29 + .byte 9 + .byte 52 + .byte 1 + .byte 108 + .byte 0 + .byte 35 + .byte 11 + .byte 102 + .byte 3 + .byte 86 + .byte 3 + .byte -26 + .byte 5 + .byte -25 + .byte 9 + .byte -2 + .byte 4 + .byte -6 + .byte 5 + .byte -95 + .byte 4 + .byte 123 + .byte 6 + .byte -93 + .byte 4 + .byte 37 + .byte 12 + .byte 106 + .byte 3 + .byte 55 + .byte 5 + .byte 63 + .byte 8 + .byte -120 + .byte 0 + .byte -65 + .byte 4 + .byte -127 + .byte 11 + .byte -71 + .byte 5 + .byte 5 + .byte 5 + .byte -41 + .byte 7 + .byte -97 + .byte 10 + .byte -90 + .byte 10 + .byte -72 + .byte 8 + .byte -48 + .byte 9 + .byte 75 + .byte 0 + .byte -100 + .byte 0 + .byte -72 + .byte 11 + .byte 95 + .byte 11 + .byte -92 + .byte 11 + .byte 104 + .byte 3 + .byte 125 + .byte 10 + .byte 54 + .byte 6 + .byte -94 + .byte 8 + .byte 90 + .byte 2 + .byte 54 + .byte 7 + .byte 9 + .byte 3 + .byte -109 + .byte 0 + .byte 122 + .byte 8 + .byte -9 + .byte 9 + .byte -10 + .byte 0 + .byte -116 + .byte 6 + .byte -37 + .byte 6 + .byte -52 + .byte 1 + .byte 35 + .byte 1 + .byte -21 + .byte 0 + .byte 80 + .byte 12 + .byte -74 + .byte 10 + .byte 91 + .byte 11 + .byte -104 + .byte 12 + .byte -13 + .byte 6 + .byte -102 + .byte 9 + .byte -29 + .byte 4 + .byte -74 + .byte 9 + .byte -42 + .byte 10 + .byte 83 + .byte 11 + .byte 79 + .byte 4 + .byte -5 + .byte 4 + .byte 92 + .byte 10 + .byte 41 + .byte 4 + .byte 65 + .byte 11 + .byte -43 + .byte 2 + .byte -28 + .byte 5 + .byte 64 + .byte 9 + .byte -114 + .byte 1 + .byte -73 + .byte 3 + .byte -9 + .byte 0 + .byte -115 + .byte 5 + .byte -106 + .byte 12 + .byte -61 + .byte 9 + .byte 15 + .byte 1 + .byte 90 + .byte 0 + .byte 85 + .byte 3 + .byte 68 + .byte 7 + .byte -125 + .byte 12 + .byte -118 + .byte 4 + .byte 82 + .byte 6 + .byte -102 + .byte 2 + .byte 64 + .byte 1 + .byte 8 + .byte 0 + .byte -3 + .byte 10 + .byte 8 + .byte 6 + .byte 26 + .byte 1 + .byte 46 + .byte 7 + .byte 13 + .byte 5 + .byte 10 + .byte 9 + .byte 40 + .byte 2 + .byte 117 + .byte 10 + .byte 58 + .byte 8 + .byte 35 + .byte 6 + .byte -51 + .byte 0 + .byte 102 + .byte 11 + .byte 6 + .byte 6 + .byte -95 + .byte 10 + .byte 37 + .byte 10 + .byte 8 + .byte 9 + .byte -87 + .byte 2 + .byte -126 + .byte 0 + .byte 66 + .byte 6 + .byte 79 + .byte 7 + .byte 61 + .byte 3 + .byte -126 + .byte 11 + .byte -7 + .byte 11 + .byte 45 + .byte 5 + .byte -60 + .byte 10 + .byte 69 + .byte 7 + .byte -62 + .byte 5 + .byte -78 + .byte 4 + .byte 63 + .byte 9 + .byte 75 + .byte 12 + .byte -40 + .byte 6 + .byte -109 + .byte 10 + .byte -85 + .byte 0 + .byte 55 + .byte 12 + .byte -30 + .byte 11 + .byte 115 + .byte 7 + .byte 44 + .byte 7 + .byte -19 + .byte 5 + .byte 103 + .byte 1 + .byte -10 + .byte 2 + .byte -95 + .byte 5 + .byte -19 + .byte 8 + .byte 11 + .byte 10 + .byte -102 + .byte 11 + .byte 20 + .byte 7 + .byte -43 + .byte 5 + .byte -114 + .byte 5 + .byte 31 + .byte 1 + .byte -54 + .byte 0 + .byte 86 + .byte 12 + .byte 110 + .byte 2 + .byte 41 + .byte 6 + .byte -74 + .byte 0 + .byte -62 + .byte 3 + .byte 79 + .byte 8 + .byte 63 + .byte 7 + .byte -68 + .byte 5 + .byte 61 + .byte 2 + .byte -44 + .byte 7 + .byte 8 + .byte 1 + .byte 127 + .byte 1 + .byte -60 + .byte 9 + .byte -78 + .byte 5 + .byte -65 + .byte 6 + .byte 127 + .byte 12 + .byte 88 + .byte 10 + .byte -7 + .byte 3 + .byte -36 + .byte 2 + .byte 96 + .byte 2 + .byte -5 + .byte 6 + .byte -101 + .byte 1 + .byte 52 + .byte 12 + .byte -34 + .byte 6 + .byte -57 + .byte 4 + .byte -116 + .byte 2 + .byte -39 + .byte 10 + .byte -9 + .byte 3 + .byte -12 + .byte 7 + .byte -45 + .byte 5 + .byte -25 + .byte 11 + .byte -7 + .byte 6 + .byte 4 + .byte 2 + .byte -7 + .byte 12 + .byte -63 + .byte 11 + .byte 103 + .byte 10 + .byte -81 + .byte 6 + .byte 119 + .byte 8 + .byte 126 + .byte 0 + .byte -67 + .byte 5 + .byte -84 + .byte 9 + .byte -89 + .byte 12 + .byte -14 + .byte 11 + .byte 62 + .byte 3 + .byte 107 + .byte 0 + .byte 116 + .byte 7 + .byte 10 + .byte 12 + .byte 74 + .byte 9 + .byte 115 + .byte 11 + .byte -63 + .byte 3 + .byte 29 + .byte 7 + .byte 44 + .byte 10 + .byte -64 + .byte 1 + .byte -40 + .byte 8 + .byte -91 + .byte 2 + .byte 6 + .byte 8 + .byte -78 + .byte 8 + .byte -82 + .byte 1 + .byte 43 + .byte 2 + .byte 75 + .byte 3 + .byte 30 + .byte 8 + .byte 103 + .byte 3 + .byte 14 + .byte 6 + .byte 105 + .byte 0 + .byte -90 + .byte 1 + .byte 75 + .byte 2 + .byte -79 + .byte 0 + .byte 22 + .byte 12 + .byte -34 + .byte 11 + .byte 53 + .byte 11 + .byte 38 + .byte 6 + .byte 117 + .byte 6 + .byte 11 + .byte 12 + .byte 10 + .byte 3 + .byte -121 + .byte 4 + .byte 110 + .byte 12 + .byte -8 + .byte 9 + .byte -53 + .byte 5 + .byte -89 + .byte 10 + .byte 95 + .byte 4 + .byte -53 + .byte 6 + .byte -124 + .byte 2 + .byte -103 + .byte 9 + .byte 93 + .byte 1 + .byte -94 + .byte 1 + .byte 73 + .byte 1 + .byte 101 + .byte 12 + .byte -74 + .byte 12 + .byte 49 + .byte 3 + .byte 73 + .byte 4 + .byte 91 + .byte 2 + .byte 98 + .byte 2 + .byte 42 + .byte 5 + .byte -4 + .byte 7 + .byte 72 + .byte 7 + .byte -128 + .byte 1 + .byte 66 + .byte 8 + .byte 121 + .byte 12 + .byte -62 + .byte 4 + .byte -54 + .byte 7 + .byte -105 + .byte 9 + .byte -36 + .byte 0 + .byte 94 + .byte 8 + .byte -122 + .byte 6 + .byte 96 + .byte 8 + .byte 7 + .byte 7 + .byte 3 + .byte 8 + .byte 26 + .byte 3 + .byte 27 + .byte 7 + .byte -85 + .byte 9 + .byte -101 + .byte 9 + .byte -34 + .byte 1 + .byte -107 + .byte 12 + .byte -51 + .byte 11 + .byte -28 + .byte 3 + .byte -33 + .byte 3 + .byte -66 + .byte 3 + .byte 77 + .byte 7 + .byte -14 + .byte 5 + .byte 92 + .byte 6 + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d b/src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d new file mode 100644 index 000000000..b8388f8b2 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d @@ -0,0 +1 @@ +kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/kem.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_ref_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/zetas.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/Makefile b/src/kem/kyber/libjade_kyber768_amd64_ref/Makefile new file mode 100644 index 000000000..42a9eef0b --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/Makefile @@ -0,0 +1,4 @@ +SAFETY_FLAGS := -nocheckalignment +SRCS := kem.jazz +include ../../../../../Makefile.common + diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/api.c b/src/kem/kyber/libjade_kyber768_amd64_ref/api.c new file mode 100644 index 000000000..656ae3eff --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/api.c @@ -0,0 +1,20 @@ +#include +#include "libjade_randombytes.h" +#include "api.h" + +int libjade_kyber768_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber768_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber768_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES); + return jade_kem_kyber_kyber768_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber768_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/include/api.h b/src/kem/kyber/libjade_kyber768_amd64_ref/include/api.h new file mode 100644 index 000000000..b8f2fc303 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/include/api.h @@ -0,0 +1,45 @@ +#ifndef JADE_KEM_kyber_kyber768_amd64_ref_API_H +#define JADE_KEM_kyber_kyber768_amd64_ref_API_H + +#include + +#define JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES 64 +#define JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES 32 + +int jade_kem_kyber_kyber768_amd64_ref_keypair_derand( + uint8_t *public_key, + uint8_t *secret_key, + const uint8_t *coins +); + +int libjade_kyber768_amd64_ref_keypair( + uint8_t *public_key, + uint8_t *secret_key +); + +int jade_kem_kyber_kyber768_amd64_ref_enc_derand( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key, + const uint8_t *coins +); + +int libjade_kyber768_amd64_ref_enc( + uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key +); + +int jade_kem_kyber_kyber768_amd64_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +int libjade_kyber768_amd64_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + +#endif diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc new file mode 100644 index 000000000..5e0ac7566 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc @@ -0,0 +1,254 @@ + +// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 +from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" + +from Jade require "crypto_kem/kyber/kyber768/amd64/ref/poly.jinc" +from Jade require "crypto_kem/kyber/kyber768/amd64/ref/polyvec.jinc" +from Jade require "common/keccak/common/fips202_ref_DIRTY.jinc" +from Jade require "crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc" + +inline +fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] randomnessp) +{ + stack u16[KYBER_K * KYBER_VECN] a; + stack u16[KYBER_VECN] e pkpv skpv; + stack u8[64] buf; + stack u8[KYBER_SYMBYTES] publicseed noiseseed; + stack u8[32] inbuf; + reg u64 t64; + reg u64 zero; + reg u8 nonce; + inline int i; + + stack u64 spkp; + stack u64 sskp; + + spkp = pkp; + sskp = skp; + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = randomnessp[u64 i]; + inbuf[u64 i] = t64; + } + + buf = _sha3_512_32(buf, inbuf); + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = buf[u64 i]; + publicseed[u64 i] = t64; + t64 = buf[u64 i + KYBER_SYMBYTES/8]; + noiseseed[u64 i] = t64; + } + + zero = 0; + a = __gen_matrix(publicseed, zero); + + nonce = 0; + skpv[0:KYBER_N] = _poly_getnoise(skpv[0:KYBER_N], noiseseed, nonce); + nonce = 1; + skpv[KYBER_N:KYBER_N] = _poly_getnoise(skpv[KYBER_N:KYBER_N], noiseseed, nonce); + nonce = 2; + skpv[2*KYBER_N:KYBER_N] = _poly_getnoise(skpv[2*KYBER_N:KYBER_N], noiseseed, nonce); + + nonce = 3; + e[0:KYBER_N] = _poly_getnoise(e[0:KYBER_N], noiseseed, nonce); + nonce = 4; + e[KYBER_N:KYBER_N] = _poly_getnoise(e[KYBER_N:KYBER_N], noiseseed, nonce); + nonce = 5; + e[2*KYBER_N:KYBER_N] = _poly_getnoise(e[2*KYBER_N:KYBER_N], noiseseed, nonce); + + skpv = __polyvec_ntt(skpv); + e = __polyvec_ntt(e); + + pkpv[0:KYBER_N] = __polyvec_pointwise_acc(a[0:KYBER_VECN], skpv); + pkpv[0:KYBER_N] = _poly_frommont(pkpv[0:KYBER_N]); + pkpv[KYBER_N:KYBER_N] = __polyvec_pointwise_acc(a[KYBER_VECN:KYBER_VECN], skpv); + pkpv[KYBER_N:KYBER_N] = _poly_frommont(pkpv[KYBER_N:KYBER_N]); + pkpv[2*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(a[2*KYBER_VECN:KYBER_VECN], skpv); + pkpv[2*KYBER_N:KYBER_N] = _poly_frommont(pkpv[2*KYBER_N:KYBER_N]); + + pkpv = __polyvec_add2(pkpv, e); + pkpv = __polyvec_reduce(pkpv); + + pkp = spkp; + skp = sskp; + + __polyvec_tobytes(skp, skpv); + __polyvec_tobytes(pkp, pkpv); + + pkp += KYBER_POLYVECBYTES; + for i=0 to KYBER_SYMBYTES/8 + { + t64 = publicseed[u64 i]; + (u64)[pkp] = t64; + pkp += 8; + } +} + +inline +fn __indcpa_enc(stack u64 sctp, reg ptr u8[32] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) +{ + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_N] k poly epp v poly0 poly1 poly2; + stack u8[KYBER_SYMBYTES] publicseed; + reg u64 i j t64; + reg u64 ctp; + reg u16 t; + reg u8 nonce; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + #bounded + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed.[u64 8 * (int)i] = t64; + pkp += 8; + i += 1; + } + + k = _i_poly_frommsg(k, msgp); + + aat = __gen_matrix(publicseed, 1); + + nonce = 0; + sp[0:KYBER_N] = _poly_getnoise(sp[0:KYBER_N], noiseseed, nonce); + nonce = 1; + sp[KYBER_N:KYBER_N] = _poly_getnoise(sp[KYBER_N:KYBER_N], noiseseed, nonce); + nonce = 2; + sp[2*KYBER_N:KYBER_N] = _poly_getnoise(sp[2*KYBER_N:KYBER_N], noiseseed, nonce); + + nonce = 3; + ep[0:KYBER_N] = _poly_getnoise(ep[0:KYBER_N], noiseseed, nonce); + nonce = 4; + ep[KYBER_N:KYBER_N] = _poly_getnoise(ep[KYBER_N:KYBER_N], noiseseed, nonce); + nonce = 5; + ep[2*KYBER_N:KYBER_N] = _poly_getnoise(ep[2*KYBER_N:KYBER_N], noiseseed, nonce); + + nonce = 6; + epp = _poly_getnoise(epp, noiseseed, nonce); + + sp = __polyvec_ntt(sp); + + bp[0:KYBER_N] = __polyvec_pointwise_acc(aat[0:KYBER_VECN], sp); + bp[KYBER_N:KYBER_N]= __polyvec_pointwise_acc(aat[KYBER_VECN:KYBER_VECN], sp); + bp[2*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[2*KYBER_VECN:KYBER_VECN], sp); + + v = __polyvec_pointwise_acc(pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + __polyvec_compress(ctp, bp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_compress(ctp, v); +} + +inline +fn __iindcpa_enc(reg ptr u8[KYBER_CT_LEN] ctp, reg ptr u8[32] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_CT_LEN] +{ + stack u16[KYBER_VECN] pkpv sp ep bp; + stack u16[KYBER_K*KYBER_VECN] aat; + stack u16[KYBER_N] k poly epp v poly0 poly1 poly2; + stack u8[KYBER_SYMBYTES] publicseed; + reg u64 i j t64; + reg u16 t; + reg u8 nonce; + stack ptr u8[KYBER_CT_LEN] sctp; + + sctp = ctp; + + pkpv = __polyvec_frombytes(pkp); + + i = 0; + pkp += KYBER_POLYVECBYTES; + #bounded + while (i < KYBER_SYMBYTES/8) + { + t64 = (u64)[pkp]; + publicseed.[u64 8*(int)i] = t64; + pkp += 8; + i += 1; + } + + k = _i_poly_frommsg(k, msgp); + + aat = __gen_matrix(publicseed, 1); + + nonce = 0; + sp[0:KYBER_N] = _poly_getnoise(sp[0:KYBER_N], noiseseed, nonce); + nonce = 1; + sp[KYBER_N:KYBER_N] = _poly_getnoise(sp[KYBER_N:KYBER_N], noiseseed, nonce); + nonce = 2; + sp[2*KYBER_N:KYBER_N] = _poly_getnoise(sp[2*KYBER_N:KYBER_N], noiseseed, nonce); + + nonce = 3; + ep[0:KYBER_N] = _poly_getnoise(ep[0:KYBER_N], noiseseed, nonce); + nonce = 4; + ep[KYBER_N:KYBER_N] = _poly_getnoise(ep[KYBER_N:KYBER_N], noiseseed, nonce); + nonce = 5; + ep[2*KYBER_N:KYBER_N] = _poly_getnoise(ep[2*KYBER_N:KYBER_N], noiseseed, nonce); + + nonce = 6; + epp = _poly_getnoise(epp, noiseseed, nonce); + + sp = __polyvec_ntt(sp); + + bp[0:KYBER_N] = __polyvec_pointwise_acc(aat[0:KYBER_VECN], sp); + bp[KYBER_N:KYBER_N]= __polyvec_pointwise_acc(aat[KYBER_VECN:KYBER_VECN], sp); + bp[2*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[2*KYBER_VECN:KYBER_VECN], sp); + + v = __polyvec_pointwise_acc(pkpv, sp); + + bp = __polyvec_invntt(bp); + v = _poly_invntt(v); + + bp = __polyvec_add2(bp, ep); + v = _poly_add2(v, epp); + v = _poly_add2(v, k); + bp = __polyvec_reduce(bp); + v = __poly_reduce(v); + + ctp = sctp; + ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __i_polyvec_compress(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); + ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _i_poly_compress(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); + + return ctp; +} + + +inline +fn __indcpa_dec(reg ptr u8[KYBER_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_N/8] +{ + stack u16[KYBER_N] t v mp; + stack u16[KYBER_VECN] bp skpv; + + bp = __polyvec_decompress(ctp); + ctp += KYBER_POLYVECCOMPRESSEDBYTES; + v = _poly_decompress(v, ctp); + + skpv = __polyvec_frombytes(skp); + + bp = __polyvec_ntt(bp); + t = __polyvec_pointwise_acc(skpv, bp); + t = _poly_invntt(t ); + + mp = _poly_sub(mp, v, t); + mp = __poly_reduce(mp); + + msgp, mp = _i_poly_tomsg(msgp, mp); + + return msgp; +} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz new file mode 100644 index 000000000..0f74b7263 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz @@ -0,0 +1,66 @@ +require "params.jinc" +require "kem.jinc" +from Jade require "common/tofromstack.jinc" + +export fn jade_kem_kyber_kyber768_amd64_ref_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = __tostack64u8(stack_coins, coins); + _crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_ref_keypair(reg u64 public_key secret_key) -> reg u64 +{ + reg u64 r; + stack u8[2*KYBER_SYMBYTES] stack_coins; + + public_key = public_key; + secret_key = secret_key; + stack_coins = #randombytes(stack_coins); + _crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_ref_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = __tostack32u8(stack_coins, coins); + _crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_ref_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 +{ + reg u64 r; + stack u8[KYBER_SYMBYTES] stack_coins; + + ciphertext = ciphertext; + shared_secret = shared_secret; + public_key = public_key; + stack_coins = #randombytes(stack_coins); + _crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); + ?{}, r = #set0(); + return r; +} + +export fn jade_kem_kyber_kyber768_amd64_ref_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 +{ + reg u64 r; + __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); + ?{}, r = #set0(); + return r; +} + diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc new file mode 100644 index 000000000..12f2dbdb3 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc @@ -0,0 +1,150 @@ + +// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 +from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" + +require "indcpa.jinc" +require "verify.jinc" + +#[returnaddress="stack"] +fn _crypto_kem_keypair_derand_jazz(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES*2] randomnessp) +{ + stack ptr u8[KYBER_SYMBYTES*2] s_randomnessp; + reg ptr u8[KYBER_SYMBYTES] randomnessp1 randomnessp2; + + stack u8[32] h_pk; + stack u64 s_skp s_pkp; + reg u64 t64; + inline int i; + + s_randomnessp = randomnessp; + s_pkp = pkp; + s_skp = skp; + + randomnessp1 = randomnessp[0:KYBER_SYMBYTES]; + __indcpa_keypair_derand(pkp, skp, randomnessp1); + + skp = s_skp; + skp += KYBER_POLYVECBYTES; + pkp = s_pkp; + + for i=0 to KYBER_INDCPA_PUBLICKEYBYTES/8 + { + t64 = (u64)[pkp + 8*i]; + (u64)[skp] = t64; + skp += 8; + } + + s_skp = skp; + pkp = s_pkp; + t64 = KYBER_POLYVECBYTES + KYBER_SYMBYTES; + h_pk = _sha3_256(h_pk, pkp, t64); + skp = s_skp; + + for i=0 to 4 + { + t64 = h_pk[u64 i]; + (u64)[skp] = t64; + skp += 8; + } + + randomnessp = s_randomnessp; + randomnessp2 = randomnessp[KYBER_SYMBYTES:KYBER_SYMBYTES]; + for i=0 to KYBER_SYMBYTES/8 + { + t64 = randomnessp2[u64 i]; + (u64)[skp] = t64; + skp += 8; + } +} + +#[returnaddress="stack"] +fn _crypto_kem_enc_derand_jazz(reg u64 ctp, reg u64 shkp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] randomnessp) +{ + inline int i; + + stack u8[KYBER_SYMBYTES * 2] buf kr; + stack u64 s_pkp s_ctp s_shkp; + reg u64 t64; + + s_pkp = pkp; + s_ctp = ctp; + s_shkp = shkp; + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = randomnessp[u64 i]; + kr[u64 i] = t64; + } + + buf[0:KYBER_SYMBYTES] = _sha3_256_32(buf[0:KYBER_SYMBYTES], kr[0:KYBER_SYMBYTES]); + + pkp = s_pkp; + + t64 = KYBER_PUBLICKEYBYTES; + buf[KYBER_SYMBYTES:KYBER_SYMBYTES] = _sha3_256(buf[KYBER_SYMBYTES:KYBER_SYMBYTES], pkp, t64); + + kr = _sha3_512_64(kr, buf); + + pkp = s_pkp; + + __indcpa_enc(s_ctp, buf[0:KYBER_SYMBYTES], pkp, kr[KYBER_SYMBYTES:KYBER_SYMBYTES]); + + ctp = s_ctp; + t64 = KYBER_CT_LEN; + kr[KYBER_SYMBYTES:KYBER_SYMBYTES] = _sha3_256(kr[KYBER_SYMBYTES:KYBER_SYMBYTES], ctp, t64); + + shkp = s_shkp; + t64 = KYBER_SSBYTES; + _shake256_64(shkp, t64, kr); +} + +inline +fn __crypto_kem_dec_jazz(reg u64 shkp, reg u64 ctp, reg u64 skp) +{ + stack u8[KYBER_CT_LEN] ctpc; + stack u8[2*KYBER_SYMBYTES] kr buf; + stack u64 s_skp s_ctp s_shkp; + reg u64 pkp hp zp t64 cnd; + inline int i; + + s_shkp = shkp; + s_ctp = ctp; + + buf[0:KYBER_MSGBYTES] = __indcpa_dec(buf[0:KYBER_MSGBYTES], ctp, skp); + + hp = #LEA(skp + 32); // avoid -lea + //hp += 24 * KYBER_K * KYBER_N>>3; + hp += 3 * KYBER_K * KYBER_N; + + for i=0 to KYBER_SYMBYTES/8 + { + t64 = (u64)[hp + 8*i]; + buf.[u64 KYBER_SYMBYTES + 8*i] = t64; + } + + s_skp = skp; + + kr = _sha3_512_64(kr, buf); + + pkp = s_skp; + //pkp += 12 * KYBER_K * KYBER_N>>3; + pkp += 12 * KYBER_K * 32; + + ctpc = __iindcpa_enc(ctpc, buf[0:KYBER_SYMBYTES], pkp, kr[KYBER_SYMBYTES:KYBER_SYMBYTES]); + + ctp = s_ctp; + cnd = __verify(ctp, ctpc); + + zp = s_skp; + zp += 64; + //zp += 24 * KYBER_K * KYBER_N>>3; + zp += 3 * KYBER_K * KYBER_N; + kr[0:KYBER_SYMBYTES] = __cmov(kr[0:KYBER_SYMBYTES], zp, cnd); + + t64 = KYBER_CT_LEN; + kr[KYBER_SYMBYTES:KYBER_SYMBYTES] = _sha3_256(kr[KYBER_SYMBYTES:KYBER_SYMBYTES], ctp, t64); + + shkp = s_shkp; + t64 = KYBER_SSBYTES; + _shake256_64(shkp, t64, kr); +} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s new file mode 100644 index 000000000..101b6399d --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s @@ -0,0 +1,18927 @@ + .att_syntax + .text + .p2align 5 + .globl _jade_kem_kyber_kyber768_amd64_ref_dec + .globl jade_kem_kyber_kyber768_amd64_ref_dec + .globl _jade_kem_kyber_kyber768_amd64_ref_enc + .globl jade_kem_kyber_kyber768_amd64_ref_enc + .globl _jade_kem_kyber_kyber768_amd64_ref_enc_derand + .globl jade_kem_kyber_kyber768_amd64_ref_enc_derand + .globl _jade_kem_kyber_kyber768_amd64_ref_keypair + .globl jade_kem_kyber_kyber768_amd64_ref_keypair + .globl _jade_kem_kyber_kyber768_amd64_ref_keypair_derand + .globl jade_kem_kyber_kyber768_amd64_ref_keypair_derand +_jade_kem_kyber_kyber768_amd64_ref_dec: +jade_kem_kyber_kyber768_amd64_ref_dec: + movq %rsp, %rax + leaq -14560(%rsp), %rsp + andq $-8, %rsp + movq %rax, 14552(%rsp) + movq %r15, 14504(%rsp) + movq %r14, 14512(%rsp) + movq %r13, 14520(%rsp) + movq %r12, 14528(%rsp) + movq %rbp, 14536(%rsp) + movq %rbx, 14544(%rsp) + movq %rdi, (%rsp) + movq %rsi, 8(%rsp) + leaq 80(%rsp), %rax + movq $0, %rcx + movq $0, %rdi + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$225 +Ljade_kem_kyber_kyber768_amd64_ref_dec$226: + movzbl (%rsi,%rdi), %r10d + incq %rdi + movzbl (%rsi,%rdi), %r11d + incq %rdi + movzbl (%rsi,%rdi), %r8d + incq %rdi + movzbl (%rsi,%rdi), %r9d + incq %rdi + movzbl (%rsi,%rdi), %ebx + incq %rdi + movl %r11d, %ebp + shrl $2, %r11d + andl $3, %ebp + shll $8, %ebp + orl %ebp, %r10d + movl %r8d, %ebp + shrl $4, %r8d + andl $15, %ebp + shll $6, %ebp + orl %ebp, %r11d + movl %r9d, %ebp + shrl $6, %r9d + andl $63, %ebp + shll $4, %ebp + orl %ebp, %r8d + shll $2, %ebx + orl %ebx, %r9d + imull $3329, %r10d, %r10d + addl $512, %r10d + shrl $10, %r10d + movw %r10w, 2456(%rsp,%rcx,2) + incq %rcx + imull $3329, %r11d, %r10d + addl $512, %r10d + shrl $10, %r10d + movw %r10w, 2456(%rsp,%rcx,2) + incq %rcx + imull $3329, %r8d, %r8d + addl $512, %r8d + shrl $10, %r8d + movw %r8w, 2456(%rsp,%rcx,2) + incq %rcx + imull $3329, %r9d, %r8d + addl $512, %r8d + shrl $10, %r8d + movw %r8w, 2456(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$225: + cmpq $768, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$226 + addq $960, %rsi + leaq 920(%rsp), %rcx + call L_poly_decompress$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$224: + movq %rdx, %rsi + leaq 3992(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$223: + addq $384, %rsi + leaq 4504(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$222: + addq $384, %rsi + leaq 5016(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$221: + leaq 2456(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$220: + leaq 2968(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$219: + leaq 3480(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$218: + leaq 408(%rsp), %rdi + leaq 3992(%rsp), %rcx + leaq 2456(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$217: + leaq 16(%rsp), %rsp + leaq 1432(%rsp), %rdi + leaq 4504(%rsp), %rcx + leaq 2968(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$216: + leaq 16(%rsp), %rsp + leaq 408(%rsp), %rcx + leaq 1432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$215: + leaq 1432(%rsp), %rdi + leaq 5016(%rsp), %rcx + leaq 3480(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$214: + leaq 16(%rsp), %rsp + leaq 408(%rsp), %rcx + leaq 1432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$213: + leaq 408(%rsp), %rcx + movq $0, %rsi + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$211 +Ljade_kem_kyber_kyber768_amd64_ref_dec$212: + movw (%rcx,%rsi,2), %di + movswl %di, %r8d + imull $20159, %r8d, %r8d + sarl $26, %r8d + imull $3329, %r8d, %r8d + subw %r8w, %di + movw %di, (%rcx,%rsi,2) + incq %rsi +Ljade_kem_kyber_kyber768_amd64_ref_dec$211: + cmpq $256, %rsi + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$212 + leaq 408(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$210: + leaq 1432(%rsp), %rcx + leaq 920(%rsp), %rsi + leaq 408(%rsp), %rdi + call L_poly_sub$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$209: + leaq 1432(%rsp), %rcx + movq $0, %rsi + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$207 +Ljade_kem_kyber_kyber768_amd64_ref_dec$208: + movw (%rcx,%rsi,2), %di + movswl %di, %r8d + imull $20159, %r8d, %r8d + sarl $26, %r8d + imull $3329, %r8d, %r8d + subw %r8w, %di + movw %di, (%rcx,%rsi,2) + incq %rsi +Ljade_kem_kyber_kyber768_amd64_ref_dec$207: + cmpq $256, %rsi + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$208 + leaq 1432(%rsp), %rcx + call L_i_poly_tomsg$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$206: + leaq 32(%rdx), %rax + addq $2304, %rax + movq (%rax), %rcx + movq %rcx, 112(%rsp) + movq 8(%rax), %rcx + movq %rcx, 120(%rsp) + movq 16(%rax), %rcx + movq %rcx, 128(%rsp) + movq 24(%rax), %rax + movq %rax, 136(%rsp) + movq %rdx, 16(%rsp) + leaq 144(%rsp), %rax + leaq 80(%rsp), %rdx + leaq -208(%rsp), %rsp + call L_sha3_512_64$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$205: + leaq 208(%rsp), %rsp + movq 16(%rsp), %rdx + addq $1152, %rdx + leaq 13410(%rsp), %rsi + leaq 80(%rsp), %rcx + leaq 176(%rsp), %rax + movq %rsi, 24(%rsp) + movq %rdx, %rsi + leaq 2456(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$204: + addq $384, %rsi + leaq 2968(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$203: + addq $384, %rsi + leaq 3480(%rsp), %rdi + call L_poly_frombytes$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$202: + movq $0, %rsi + addq $1152, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$200 +Ljade_kem_kyber_kyber768_amd64_ref_dec$201: + movq (%rdx), %rdi + movq %rdi, 48(%rsp,%rsi,8) + addq $8, %rdx + incq %rsi +Ljade_kem_kyber_kyber768_amd64_ref_dec$200: + cmpq $4, %rsi + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$201 + leaq 1432(%rsp), %rdx + call L_i_poly_frommsg$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$199: + movq $1, %rcx + movq %rcx, 32(%rsp) + movb 48(%rsp), %cl + movb %cl, 13208(%rsp) + movb 49(%rsp), %cl + movb %cl, 13209(%rsp) + movb 50(%rsp), %cl + movb %cl, 13210(%rsp) + movb 51(%rsp), %cl + movb %cl, 13211(%rsp) + movb 52(%rsp), %cl + movb %cl, 13212(%rsp) + movb 53(%rsp), %cl + movb %cl, 13213(%rsp) + movb 54(%rsp), %cl + movb %cl, 13214(%rsp) + movb 55(%rsp), %cl + movb %cl, 13215(%rsp) + movb 56(%rsp), %cl + movb %cl, 13216(%rsp) + movb 57(%rsp), %cl + movb %cl, 13217(%rsp) + movb 58(%rsp), %cl + movb %cl, 13218(%rsp) + movb 59(%rsp), %cl + movb %cl, 13219(%rsp) + movb 60(%rsp), %cl + movb %cl, 13220(%rsp) + movb 61(%rsp), %cl + movb %cl, 13221(%rsp) + movb 62(%rsp), %cl + movb %cl, 13222(%rsp) + movb 63(%rsp), %cl + movb %cl, 13223(%rsp) + movb 64(%rsp), %cl + movb %cl, 13224(%rsp) + movb 65(%rsp), %cl + movb %cl, 13225(%rsp) + movb 66(%rsp), %cl + movb %cl, 13226(%rsp) + movb 67(%rsp), %cl + movb %cl, 13227(%rsp) + movb 68(%rsp), %cl + movb %cl, 13228(%rsp) + movb 69(%rsp), %cl + movb %cl, 13229(%rsp) + movb 70(%rsp), %cl + movb %cl, 13230(%rsp) + movb 71(%rsp), %cl + movb %cl, 13231(%rsp) + movb 72(%rsp), %cl + movb %cl, 13232(%rsp) + movb 73(%rsp), %cl + movb %cl, 13233(%rsp) + movb 74(%rsp), %cl + movb %cl, 13234(%rsp) + movb 75(%rsp), %cl + movb %cl, 13235(%rsp) + movb 76(%rsp), %cl + movb %cl, 13236(%rsp) + movb 77(%rsp), %cl + movb %cl, 13237(%rsp) + movb 78(%rsp), %cl + movb %cl, 13238(%rsp) + movb 79(%rsp), %cl + movb %cl, 13239(%rsp) + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$197 + movb $0, 13240(%rsp) + movb $0, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$198 +Ljade_kem_kyber_kyber768_amd64_ref_dec$197: + movb $0, 13240(%rsp) + movb $0, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$198: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$196: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$194 +Ljade_kem_kyber_kyber768_amd64_ref_dec$195: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$194: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$195 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$186 +Ljade_kem_kyber_kyber768_amd64_ref_dec$187: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$193: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$188: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$191 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$191 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$192: +Ljade_kem_kyber_kyber768_amd64_ref_dec$191: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$189 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$189 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$190: +Ljade_kem_kyber_kyber768_amd64_ref_dec$189: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$188 +Ljade_kem_kyber_kyber768_amd64_ref_dec$186: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$187 + movq $0, %rcx + movq $0, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$184 +Ljade_kem_kyber_kyber768_amd64_ref_dec$185: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$184: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$185 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$182 + movb $0, 13240(%rsp) + movb $1, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$183 +Ljade_kem_kyber_kyber768_amd64_ref_dec$182: + movb $1, 13240(%rsp) + movb $0, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$183: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$181: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$179 +Ljade_kem_kyber_kyber768_amd64_ref_dec$180: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$179: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$180 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$171 +Ljade_kem_kyber_kyber768_amd64_ref_dec$172: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$178: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$173: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$176 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$176 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$177: +Ljade_kem_kyber_kyber768_amd64_ref_dec$176: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$174 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$174 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$175: +Ljade_kem_kyber_kyber768_amd64_ref_dec$174: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$173 +Ljade_kem_kyber_kyber768_amd64_ref_dec$171: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$172 + movq $0, %rcx + movq $256, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$169 +Ljade_kem_kyber_kyber768_amd64_ref_dec$170: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$169: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$170 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$167 + movb $0, 13240(%rsp) + movb $2, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$168 +Ljade_kem_kyber_kyber768_amd64_ref_dec$167: + movb $2, 13240(%rsp) + movb $0, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$168: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$166: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$164 +Ljade_kem_kyber_kyber768_amd64_ref_dec$165: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$164: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$165 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$156 +Ljade_kem_kyber_kyber768_amd64_ref_dec$157: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$163: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$158: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$161 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$161 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$162: +Ljade_kem_kyber_kyber768_amd64_ref_dec$161: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$159 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$159 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$160: +Ljade_kem_kyber_kyber768_amd64_ref_dec$159: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$158 +Ljade_kem_kyber_kyber768_amd64_ref_dec$156: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$157 + movq $0, %rcx + movq $512, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$154 +Ljade_kem_kyber_kyber768_amd64_ref_dec$155: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$154: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$155 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$152 + movb $1, 13240(%rsp) + movb $0, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$153 +Ljade_kem_kyber_kyber768_amd64_ref_dec$152: + movb $0, 13240(%rsp) + movb $1, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$153: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$151: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$149 +Ljade_kem_kyber_kyber768_amd64_ref_dec$150: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$149: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$150 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$141 +Ljade_kem_kyber_kyber768_amd64_ref_dec$142: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$148: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$143: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$146 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$146 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$147: +Ljade_kem_kyber_kyber768_amd64_ref_dec$146: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$144 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$144 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$145: +Ljade_kem_kyber_kyber768_amd64_ref_dec$144: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$143 +Ljade_kem_kyber_kyber768_amd64_ref_dec$141: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$142 + movq $0, %rcx + movq $768, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$139 +Ljade_kem_kyber_kyber768_amd64_ref_dec$140: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$139: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$140 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$137 + movb $1, 13240(%rsp) + movb $1, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$138 +Ljade_kem_kyber_kyber768_amd64_ref_dec$137: + movb $1, 13240(%rsp) + movb $1, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$138: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$136: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$134 +Ljade_kem_kyber_kyber768_amd64_ref_dec$135: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$134: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$135 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$126 +Ljade_kem_kyber_kyber768_amd64_ref_dec$127: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$133: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$128: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$131 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$131 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$132: +Ljade_kem_kyber_kyber768_amd64_ref_dec$131: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$129 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$129 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$130: +Ljade_kem_kyber_kyber768_amd64_ref_dec$129: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$128 +Ljade_kem_kyber_kyber768_amd64_ref_dec$126: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$127 + movq $0, %rcx + movq $1024, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$124 +Ljade_kem_kyber_kyber768_amd64_ref_dec$125: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$124: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$125 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$122 + movb $1, 13240(%rsp) + movb $2, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$123 +Ljade_kem_kyber_kyber768_amd64_ref_dec$122: + movb $2, 13240(%rsp) + movb $1, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$123: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$121: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$119 +Ljade_kem_kyber_kyber768_amd64_ref_dec$120: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$119: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$120 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$111 +Ljade_kem_kyber_kyber768_amd64_ref_dec$112: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$118: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$113: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$116 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$116 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$117: +Ljade_kem_kyber_kyber768_amd64_ref_dec$116: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$114 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$114 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$115: +Ljade_kem_kyber_kyber768_amd64_ref_dec$114: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$113 +Ljade_kem_kyber_kyber768_amd64_ref_dec$111: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$112 + movq $0, %rcx + movq $1280, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$109 +Ljade_kem_kyber_kyber768_amd64_ref_dec$110: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$109: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$110 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$107 + movb $2, 13240(%rsp) + movb $0, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$108 +Ljade_kem_kyber_kyber768_amd64_ref_dec$107: + movb $0, 13240(%rsp) + movb $2, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$108: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$106: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$104 +Ljade_kem_kyber_kyber768_amd64_ref_dec$105: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$104: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$105 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$96 +Ljade_kem_kyber_kyber768_amd64_ref_dec$97: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$103: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$98: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$101 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$101 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$102: +Ljade_kem_kyber_kyber768_amd64_ref_dec$101: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$99 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$99 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$100: +Ljade_kem_kyber_kyber768_amd64_ref_dec$99: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$98 +Ljade_kem_kyber_kyber768_amd64_ref_dec$96: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$97 + movq $0, %rcx + movq $1536, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$94 +Ljade_kem_kyber_kyber768_amd64_ref_dec$95: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$94: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$95 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$92 + movb $2, 13240(%rsp) + movb $1, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$93 +Ljade_kem_kyber_kyber768_amd64_ref_dec$92: + movb $1, 13240(%rsp) + movb $2, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$93: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$91: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$89 +Ljade_kem_kyber_kyber768_amd64_ref_dec$90: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$89: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$90 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$81 +Ljade_kem_kyber_kyber768_amd64_ref_dec$82: + movq %rcx, 40(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$88: + leaq 8(%rsp), %rsp + movq 40(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$83: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$86 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$86 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$87: +Ljade_kem_kyber_kyber768_amd64_ref_dec$86: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$84 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$84 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$85: +Ljade_kem_kyber_kyber768_amd64_ref_dec$84: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$83 +Ljade_kem_kyber_kyber768_amd64_ref_dec$81: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$82 + movq $0, %rcx + movq $1792, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$79 +Ljade_kem_kyber_kyber768_amd64_ref_dec$80: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$79: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$80 + movq 32(%rsp), %rcx + cmpq $0, %rcx + je Ljade_kem_kyber_kyber768_amd64_ref_dec$77 + movb $2, 13240(%rsp) + movb $2, 13241(%rsp) + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$78 +Ljade_kem_kyber_kyber768_amd64_ref_dec$77: + movb $2, 13240(%rsp) + movb $2, 13241(%rsp) +Ljade_kem_kyber_kyber768_amd64_ref_dec$78: + leaq 208(%rsp), %rcx + leaq 13208(%rsp), %rdx + call L_shake128_absorb34$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$76: + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$74 +Ljade_kem_kyber_kyber768_amd64_ref_dec$75: + movq %rcx, 408(%rsp,%rcx,8) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$74: + cmpq $64, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$75 + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$66 +Ljade_kem_kyber_kyber768_amd64_ref_dec$67: + movq %rcx, 32(%rsp) + leaq 208(%rsp), %rcx + leaq 13242(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$73: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$68: + movzbw 13242(%rsp,%rdx), %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13242(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$71 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$71 + movw %si, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$72: +Ljade_kem_kyber_kyber768_amd64_ref_dec$71: + cmpw $3329, %r8w + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$69 + cmpq $256, %rcx + jnb Ljade_kem_kyber_kyber768_amd64_ref_dec$69 + movw %r8w, 408(%rsp,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$70: +Ljade_kem_kyber_kyber768_amd64_ref_dec$69: + cmpq $166, %rdx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$68 +Ljade_kem_kyber_kyber768_amd64_ref_dec$66: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$67 + movq $0, %rcx + movq $2048, %rdx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$64 +Ljade_kem_kyber_kyber768_amd64_ref_dec$65: + movw 408(%rsp,%rcx,2), %si + movw %si, 8600(%rsp,%rdx,2) + incq %rcx + incq %rdx +Ljade_kem_kyber_kyber768_amd64_ref_dec$64: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$65 + movb $0, %cl + leaq 3992(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$63: + leaq 176(%rsp), %rsp + movb $1, %cl + leaq 4504(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$62: + leaq 176(%rsp), %rsp + movb $2, %cl + leaq 5016(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$61: + leaq 176(%rsp), %rsp + movb $3, %cl + leaq 5528(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$60: + leaq 176(%rsp), %rsp + movb $4, %cl + leaq 6040(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$59: + leaq 176(%rsp), %rsp + movb $5, %cl + leaq 6552(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$58: + leaq 176(%rsp), %rsp + movb $6, %cl + leaq 408(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$57: + leaq 176(%rsp), %rsp + leaq 3992(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$56: + leaq 4504(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$55: + leaq 5016(%rsp), %rcx + call L_poly_ntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$54: + leaq 7064(%rsp), %rdi + leaq 8600(%rsp), %rcx + leaq 3992(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$53: + leaq 16(%rsp), %rsp + leaq 920(%rsp), %rdi + leaq 9112(%rsp), %rcx + leaq 4504(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$52: + leaq 16(%rsp), %rsp + leaq 7064(%rsp), %rcx + leaq 920(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$51: + leaq 920(%rsp), %rdi + leaq 9624(%rsp), %rcx + leaq 5016(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$50: + leaq 16(%rsp), %rsp + leaq 7064(%rsp), %rcx + leaq 920(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$49: + leaq 7064(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$47 +Ljade_kem_kyber_kyber768_amd64_ref_dec$48: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$47: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$48 + leaq 7576(%rsp), %rdi + leaq 10136(%rsp), %rcx + leaq 3992(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$46: + leaq 16(%rsp), %rsp + leaq 920(%rsp), %rdi + leaq 10648(%rsp), %rcx + leaq 4504(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$45: + leaq 16(%rsp), %rsp + leaq 7576(%rsp), %rcx + leaq 920(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$44: + leaq 920(%rsp), %rdi + leaq 11160(%rsp), %rcx + leaq 5016(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$43: + leaq 16(%rsp), %rsp + leaq 7576(%rsp), %rcx + leaq 920(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$42: + leaq 7576(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$40 +Ljade_kem_kyber_kyber768_amd64_ref_dec$41: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$40: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$41 + leaq 8088(%rsp), %rdi + leaq 11672(%rsp), %rcx + leaq 3992(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$39: + leaq 16(%rsp), %rsp + leaq 920(%rsp), %rdi + leaq 12184(%rsp), %rcx + leaq 4504(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$38: + leaq 16(%rsp), %rsp + leaq 8088(%rsp), %rcx + leaq 920(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$37: + leaq 920(%rsp), %rdi + leaq 12696(%rsp), %rcx + leaq 5016(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$36: + leaq 16(%rsp), %rsp + leaq 8088(%rsp), %rcx + leaq 920(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$35: + leaq 8088(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$33 +Ljade_kem_kyber_kyber768_amd64_ref_dec$34: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$33: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$34 + leaq 920(%rsp), %rdi + leaq 2456(%rsp), %rcx + leaq 3992(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$32: + leaq 16(%rsp), %rsp + leaq 1944(%rsp), %rdi + leaq 2968(%rsp), %rcx + leaq 4504(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$31: + leaq 16(%rsp), %rsp + leaq 920(%rsp), %rcx + leaq 1944(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$30: + leaq 1944(%rsp), %rdi + leaq 3480(%rsp), %rcx + leaq 5016(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$29: + leaq 16(%rsp), %rsp + leaq 920(%rsp), %rcx + leaq 1944(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$28: + leaq 920(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$26 +Ljade_kem_kyber_kyber768_amd64_ref_dec$27: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$26: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$27 + leaq 7064(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$25: + leaq 7576(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$24: + leaq 8088(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$23: + leaq 920(%rsp), %rcx + call L_poly_invntt$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$22: + leaq 7064(%rsp), %rcx + leaq 5528(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$21: + leaq 7576(%rsp), %rcx + leaq 6040(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$20: + leaq 8088(%rsp), %rcx + leaq 6552(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$19: + leaq 920(%rsp), %rcx + leaq 408(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$18: + leaq 920(%rsp), %rcx + leaq 1432(%rsp), %rsi + call L_poly_add2$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$17: + leaq 7064(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$15 +Ljade_kem_kyber_kyber768_amd64_ref_dec$16: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$15: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$16 + leaq 7576(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$13 +Ljade_kem_kyber_kyber768_amd64_ref_dec$14: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$13: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$14 + leaq 8088(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$11 +Ljade_kem_kyber_kyber768_amd64_ref_dec$12: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$11: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$12 + leaq 920(%rsp), %rax + movq $0, %rcx + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$9 +Ljade_kem_kyber_kyber768_amd64_ref_dec$10: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +Ljade_kem_kyber_kyber768_amd64_ref_dec$9: + cmpq $256, %rcx + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$10 + movq 24(%rsp), %rax + movq %rax, %rdx + movq $0, %rsi + movq $0, %rdi + leaq 7064(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$8: + leaq 7576(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$7: + leaq 8088(%rsp), %rcx + call L_poly_csubq$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$6: + jmp Ljade_kem_kyber_kyber768_amd64_ref_dec$4 +Ljade_kem_kyber_kyber768_amd64_ref_dec$5: + movzwq 7064(%rsp,%rsi,2), %rcx + incq %rsi + shlq $10, %rcx + addq $1665, %rcx + imulq $1290167, %rcx, %rcx + shrq $32, %rcx + andq $1023, %rcx + movzwq 7064(%rsp,%rsi,2), %r8 + incq %rsi + shlq $10, %r8 + addq $1665, %r8 + imulq $1290167, %r8, %r8 + shrq $32, %r8 + andq $1023, %r8 + movzwq 7064(%rsp,%rsi,2), %r9 + incq %rsi + shlq $10, %r9 + addq $1665, %r9 + imulq $1290167, %r9, %r9 + shrq $32, %r9 + andq $1023, %r9 + movzwq 7064(%rsp,%rsi,2), %r10 + incq %rsi + shlq $10, %r10 + addq $1665, %r10 + imulq $1290167, %r10, %r10 + shrq $32, %r10 + andq $1023, %r10 + movw %cx, %r11w + andw $255, %r11w + movb %r11b, (%rdx,%rdi) + incq %rdi + shrw $8, %cx + movw %r8w, %r11w + shlw $2, %r11w + orw %cx, %r11w + movb %r11b, (%rdx,%rdi) + incq %rdi + shrw $6, %r8w + movw %r9w, %cx + shlw $4, %cx + orw %r8w, %cx + movb %cl, (%rdx,%rdi) + incq %rdi + shrw $4, %r9w + movw %r10w, %cx + shlw $6, %cx + orw %r9w, %cx + movb %cl, (%rdx,%rdi) + incq %rdi + shrq $2, %r10 + movb %r10b, (%rdx,%rdi) + incq %rdi +Ljade_kem_kyber_kyber768_amd64_ref_dec$4: + cmpq $768, %rsi + jb Ljade_kem_kyber_kyber768_amd64_ref_dec$5 + leaq 960(%rax), %rax + leaq 920(%rsp), %rcx + call L_i_poly_compress$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$3: + movq 8(%rsp), %rsi + leaq 13410(%rsp), %rax + movq $0, %rcx + movb (%rax), %dl + movb (%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1(%rax), %dl + movb 1(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 2(%rax), %dl + movb 2(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 3(%rax), %dl + movb 3(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 4(%rax), %dl + movb 4(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 5(%rax), %dl + movb 5(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 6(%rax), %dl + movb 6(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 7(%rax), %dl + movb 7(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 8(%rax), %dl + movb 8(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 9(%rax), %dl + movb 9(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 10(%rax), %dl + movb 10(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 11(%rax), %dl + movb 11(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 12(%rax), %dl + movb 12(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 13(%rax), %dl + movb 13(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 14(%rax), %dl + movb 14(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 15(%rax), %dl + movb 15(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 16(%rax), %dl + movb 16(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 17(%rax), %dl + movb 17(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 18(%rax), %dl + movb 18(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 19(%rax), %dl + movb 19(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 20(%rax), %dl + movb 20(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 21(%rax), %dl + movb 21(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 22(%rax), %dl + movb 22(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 23(%rax), %dl + movb 23(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 24(%rax), %dl + movb 24(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 25(%rax), %dl + movb 25(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 26(%rax), %dl + movb 26(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 27(%rax), %dl + movb 27(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 28(%rax), %dl + movb 28(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 29(%rax), %dl + movb 29(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 30(%rax), %dl + movb 30(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 31(%rax), %dl + movb 31(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 32(%rax), %dl + movb 32(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 33(%rax), %dl + movb 33(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 34(%rax), %dl + movb 34(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 35(%rax), %dl + movb 35(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 36(%rax), %dl + movb 36(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 37(%rax), %dl + movb 37(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 38(%rax), %dl + movb 38(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 39(%rax), %dl + movb 39(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 40(%rax), %dl + movb 40(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 41(%rax), %dl + movb 41(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 42(%rax), %dl + movb 42(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 43(%rax), %dl + movb 43(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 44(%rax), %dl + movb 44(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 45(%rax), %dl + movb 45(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 46(%rax), %dl + movb 46(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 47(%rax), %dl + movb 47(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 48(%rax), %dl + movb 48(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 49(%rax), %dl + movb 49(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 50(%rax), %dl + movb 50(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 51(%rax), %dl + movb 51(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 52(%rax), %dl + movb 52(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 53(%rax), %dl + movb 53(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 54(%rax), %dl + movb 54(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 55(%rax), %dl + movb 55(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 56(%rax), %dl + movb 56(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 57(%rax), %dl + movb 57(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 58(%rax), %dl + movb 58(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 59(%rax), %dl + movb 59(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 60(%rax), %dl + movb 60(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 61(%rax), %dl + movb 61(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 62(%rax), %dl + movb 62(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 63(%rax), %dl + movb 63(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 64(%rax), %dl + movb 64(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 65(%rax), %dl + movb 65(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 66(%rax), %dl + movb 66(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 67(%rax), %dl + movb 67(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 68(%rax), %dl + movb 68(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 69(%rax), %dl + movb 69(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 70(%rax), %dl + movb 70(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 71(%rax), %dl + movb 71(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 72(%rax), %dl + movb 72(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 73(%rax), %dl + movb 73(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 74(%rax), %dl + movb 74(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 75(%rax), %dl + movb 75(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 76(%rax), %dl + movb 76(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 77(%rax), %dl + movb 77(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 78(%rax), %dl + movb 78(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 79(%rax), %dl + movb 79(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 80(%rax), %dl + movb 80(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 81(%rax), %dl + movb 81(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 82(%rax), %dl + movb 82(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 83(%rax), %dl + movb 83(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 84(%rax), %dl + movb 84(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 85(%rax), %dl + movb 85(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 86(%rax), %dl + movb 86(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 87(%rax), %dl + movb 87(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 88(%rax), %dl + movb 88(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 89(%rax), %dl + movb 89(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 90(%rax), %dl + movb 90(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 91(%rax), %dl + movb 91(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 92(%rax), %dl + movb 92(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 93(%rax), %dl + movb 93(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 94(%rax), %dl + movb 94(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 95(%rax), %dl + movb 95(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 96(%rax), %dl + movb 96(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 97(%rax), %dl + movb 97(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 98(%rax), %dl + movb 98(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 99(%rax), %dl + movb 99(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 100(%rax), %dl + movb 100(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 101(%rax), %dl + movb 101(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 102(%rax), %dl + movb 102(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 103(%rax), %dl + movb 103(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 104(%rax), %dl + movb 104(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 105(%rax), %dl + movb 105(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 106(%rax), %dl + movb 106(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 107(%rax), %dl + movb 107(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 108(%rax), %dl + movb 108(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 109(%rax), %dl + movb 109(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 110(%rax), %dl + movb 110(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 111(%rax), %dl + movb 111(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 112(%rax), %dl + movb 112(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 113(%rax), %dl + movb 113(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 114(%rax), %dl + movb 114(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 115(%rax), %dl + movb 115(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 116(%rax), %dl + movb 116(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 117(%rax), %dl + movb 117(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 118(%rax), %dl + movb 118(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 119(%rax), %dl + movb 119(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 120(%rax), %dl + movb 120(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 121(%rax), %dl + movb 121(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 122(%rax), %dl + movb 122(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 123(%rax), %dl + movb 123(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 124(%rax), %dl + movb 124(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 125(%rax), %dl + movb 125(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 126(%rax), %dl + movb 126(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 127(%rax), %dl + movb 127(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 128(%rax), %dl + movb 128(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 129(%rax), %dl + movb 129(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 130(%rax), %dl + movb 130(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 131(%rax), %dl + movb 131(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 132(%rax), %dl + movb 132(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 133(%rax), %dl + movb 133(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 134(%rax), %dl + movb 134(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 135(%rax), %dl + movb 135(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 136(%rax), %dl + movb 136(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 137(%rax), %dl + movb 137(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 138(%rax), %dl + movb 138(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 139(%rax), %dl + movb 139(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 140(%rax), %dl + movb 140(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 141(%rax), %dl + movb 141(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 142(%rax), %dl + movb 142(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 143(%rax), %dl + movb 143(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 144(%rax), %dl + movb 144(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 145(%rax), %dl + movb 145(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 146(%rax), %dl + movb 146(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 147(%rax), %dl + movb 147(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 148(%rax), %dl + movb 148(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 149(%rax), %dl + movb 149(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 150(%rax), %dl + movb 150(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 151(%rax), %dl + movb 151(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 152(%rax), %dl + movb 152(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 153(%rax), %dl + movb 153(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 154(%rax), %dl + movb 154(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 155(%rax), %dl + movb 155(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 156(%rax), %dl + movb 156(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 157(%rax), %dl + movb 157(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 158(%rax), %dl + movb 158(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 159(%rax), %dl + movb 159(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 160(%rax), %dl + movb 160(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 161(%rax), %dl + movb 161(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 162(%rax), %dl + movb 162(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 163(%rax), %dl + movb 163(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 164(%rax), %dl + movb 164(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 165(%rax), %dl + movb 165(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 166(%rax), %dl + movb 166(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 167(%rax), %dl + movb 167(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 168(%rax), %dl + movb 168(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 169(%rax), %dl + movb 169(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 170(%rax), %dl + movb 170(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 171(%rax), %dl + movb 171(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 172(%rax), %dl + movb 172(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 173(%rax), %dl + movb 173(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 174(%rax), %dl + movb 174(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 175(%rax), %dl + movb 175(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 176(%rax), %dl + movb 176(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 177(%rax), %dl + movb 177(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 178(%rax), %dl + movb 178(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 179(%rax), %dl + movb 179(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 180(%rax), %dl + movb 180(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 181(%rax), %dl + movb 181(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 182(%rax), %dl + movb 182(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 183(%rax), %dl + movb 183(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 184(%rax), %dl + movb 184(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 185(%rax), %dl + movb 185(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 186(%rax), %dl + movb 186(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 187(%rax), %dl + movb 187(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 188(%rax), %dl + movb 188(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 189(%rax), %dl + movb 189(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 190(%rax), %dl + movb 190(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 191(%rax), %dl + movb 191(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 192(%rax), %dl + movb 192(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 193(%rax), %dl + movb 193(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 194(%rax), %dl + movb 194(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 195(%rax), %dl + movb 195(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 196(%rax), %dl + movb 196(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 197(%rax), %dl + movb 197(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 198(%rax), %dl + movb 198(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 199(%rax), %dl + movb 199(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 200(%rax), %dl + movb 200(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 201(%rax), %dl + movb 201(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 202(%rax), %dl + movb 202(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 203(%rax), %dl + movb 203(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 204(%rax), %dl + movb 204(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 205(%rax), %dl + movb 205(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 206(%rax), %dl + movb 206(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 207(%rax), %dl + movb 207(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 208(%rax), %dl + movb 208(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 209(%rax), %dl + movb 209(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 210(%rax), %dl + movb 210(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 211(%rax), %dl + movb 211(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 212(%rax), %dl + movb 212(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 213(%rax), %dl + movb 213(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 214(%rax), %dl + movb 214(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 215(%rax), %dl + movb 215(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 216(%rax), %dl + movb 216(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 217(%rax), %dl + movb 217(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 218(%rax), %dl + movb 218(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 219(%rax), %dl + movb 219(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 220(%rax), %dl + movb 220(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 221(%rax), %dl + movb 221(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 222(%rax), %dl + movb 222(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 223(%rax), %dl + movb 223(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 224(%rax), %dl + movb 224(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 225(%rax), %dl + movb 225(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 226(%rax), %dl + movb 226(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 227(%rax), %dl + movb 227(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 228(%rax), %dl + movb 228(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 229(%rax), %dl + movb 229(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 230(%rax), %dl + movb 230(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 231(%rax), %dl + movb 231(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 232(%rax), %dl + movb 232(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 233(%rax), %dl + movb 233(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 234(%rax), %dl + movb 234(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 235(%rax), %dl + movb 235(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 236(%rax), %dl + movb 236(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 237(%rax), %dl + movb 237(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 238(%rax), %dl + movb 238(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 239(%rax), %dl + movb 239(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 240(%rax), %dl + movb 240(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 241(%rax), %dl + movb 241(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 242(%rax), %dl + movb 242(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 243(%rax), %dl + movb 243(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 244(%rax), %dl + movb 244(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 245(%rax), %dl + movb 245(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 246(%rax), %dl + movb 246(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 247(%rax), %dl + movb 247(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 248(%rax), %dl + movb 248(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 249(%rax), %dl + movb 249(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 250(%rax), %dl + movb 250(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 251(%rax), %dl + movb 251(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 252(%rax), %dl + movb 252(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 253(%rax), %dl + movb 253(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 254(%rax), %dl + movb 254(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 255(%rax), %dl + movb 255(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 256(%rax), %dl + movb 256(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 257(%rax), %dl + movb 257(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 258(%rax), %dl + movb 258(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 259(%rax), %dl + movb 259(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 260(%rax), %dl + movb 260(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 261(%rax), %dl + movb 261(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 262(%rax), %dl + movb 262(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 263(%rax), %dl + movb 263(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 264(%rax), %dl + movb 264(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 265(%rax), %dl + movb 265(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 266(%rax), %dl + movb 266(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 267(%rax), %dl + movb 267(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 268(%rax), %dl + movb 268(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 269(%rax), %dl + movb 269(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 270(%rax), %dl + movb 270(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 271(%rax), %dl + movb 271(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 272(%rax), %dl + movb 272(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 273(%rax), %dl + movb 273(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 274(%rax), %dl + movb 274(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 275(%rax), %dl + movb 275(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 276(%rax), %dl + movb 276(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 277(%rax), %dl + movb 277(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 278(%rax), %dl + movb 278(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 279(%rax), %dl + movb 279(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 280(%rax), %dl + movb 280(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 281(%rax), %dl + movb 281(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 282(%rax), %dl + movb 282(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 283(%rax), %dl + movb 283(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 284(%rax), %dl + movb 284(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 285(%rax), %dl + movb 285(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 286(%rax), %dl + movb 286(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 287(%rax), %dl + movb 287(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 288(%rax), %dl + movb 288(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 289(%rax), %dl + movb 289(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 290(%rax), %dl + movb 290(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 291(%rax), %dl + movb 291(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 292(%rax), %dl + movb 292(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 293(%rax), %dl + movb 293(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 294(%rax), %dl + movb 294(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 295(%rax), %dl + movb 295(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 296(%rax), %dl + movb 296(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 297(%rax), %dl + movb 297(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 298(%rax), %dl + movb 298(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 299(%rax), %dl + movb 299(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 300(%rax), %dl + movb 300(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 301(%rax), %dl + movb 301(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 302(%rax), %dl + movb 302(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 303(%rax), %dl + movb 303(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 304(%rax), %dl + movb 304(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 305(%rax), %dl + movb 305(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 306(%rax), %dl + movb 306(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 307(%rax), %dl + movb 307(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 308(%rax), %dl + movb 308(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 309(%rax), %dl + movb 309(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 310(%rax), %dl + movb 310(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 311(%rax), %dl + movb 311(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 312(%rax), %dl + movb 312(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 313(%rax), %dl + movb 313(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 314(%rax), %dl + movb 314(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 315(%rax), %dl + movb 315(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 316(%rax), %dl + movb 316(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 317(%rax), %dl + movb 317(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 318(%rax), %dl + movb 318(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 319(%rax), %dl + movb 319(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 320(%rax), %dl + movb 320(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 321(%rax), %dl + movb 321(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 322(%rax), %dl + movb 322(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 323(%rax), %dl + movb 323(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 324(%rax), %dl + movb 324(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 325(%rax), %dl + movb 325(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 326(%rax), %dl + movb 326(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 327(%rax), %dl + movb 327(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 328(%rax), %dl + movb 328(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 329(%rax), %dl + movb 329(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 330(%rax), %dl + movb 330(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 331(%rax), %dl + movb 331(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 332(%rax), %dl + movb 332(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 333(%rax), %dl + movb 333(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 334(%rax), %dl + movb 334(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 335(%rax), %dl + movb 335(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 336(%rax), %dl + movb 336(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 337(%rax), %dl + movb 337(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 338(%rax), %dl + movb 338(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 339(%rax), %dl + movb 339(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 340(%rax), %dl + movb 340(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 341(%rax), %dl + movb 341(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 342(%rax), %dl + movb 342(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 343(%rax), %dl + movb 343(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 344(%rax), %dl + movb 344(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 345(%rax), %dl + movb 345(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 346(%rax), %dl + movb 346(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 347(%rax), %dl + movb 347(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 348(%rax), %dl + movb 348(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 349(%rax), %dl + movb 349(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 350(%rax), %dl + movb 350(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 351(%rax), %dl + movb 351(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 352(%rax), %dl + movb 352(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 353(%rax), %dl + movb 353(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 354(%rax), %dl + movb 354(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 355(%rax), %dl + movb 355(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 356(%rax), %dl + movb 356(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 357(%rax), %dl + movb 357(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 358(%rax), %dl + movb 358(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 359(%rax), %dl + movb 359(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 360(%rax), %dl + movb 360(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 361(%rax), %dl + movb 361(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 362(%rax), %dl + movb 362(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 363(%rax), %dl + movb 363(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 364(%rax), %dl + movb 364(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 365(%rax), %dl + movb 365(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 366(%rax), %dl + movb 366(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 367(%rax), %dl + movb 367(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 368(%rax), %dl + movb 368(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 369(%rax), %dl + movb 369(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 370(%rax), %dl + movb 370(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 371(%rax), %dl + movb 371(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 372(%rax), %dl + movb 372(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 373(%rax), %dl + movb 373(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 374(%rax), %dl + movb 374(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 375(%rax), %dl + movb 375(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 376(%rax), %dl + movb 376(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 377(%rax), %dl + movb 377(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 378(%rax), %dl + movb 378(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 379(%rax), %dl + movb 379(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 380(%rax), %dl + movb 380(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 381(%rax), %dl + movb 381(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 382(%rax), %dl + movb 382(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 383(%rax), %dl + movb 383(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 384(%rax), %dl + movb 384(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 385(%rax), %dl + movb 385(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 386(%rax), %dl + movb 386(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 387(%rax), %dl + movb 387(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 388(%rax), %dl + movb 388(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 389(%rax), %dl + movb 389(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 390(%rax), %dl + movb 390(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 391(%rax), %dl + movb 391(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 392(%rax), %dl + movb 392(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 393(%rax), %dl + movb 393(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 394(%rax), %dl + movb 394(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 395(%rax), %dl + movb 395(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 396(%rax), %dl + movb 396(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 397(%rax), %dl + movb 397(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 398(%rax), %dl + movb 398(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 399(%rax), %dl + movb 399(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 400(%rax), %dl + movb 400(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 401(%rax), %dl + movb 401(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 402(%rax), %dl + movb 402(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 403(%rax), %dl + movb 403(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 404(%rax), %dl + movb 404(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 405(%rax), %dl + movb 405(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 406(%rax), %dl + movb 406(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 407(%rax), %dl + movb 407(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 408(%rax), %dl + movb 408(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 409(%rax), %dl + movb 409(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 410(%rax), %dl + movb 410(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 411(%rax), %dl + movb 411(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 412(%rax), %dl + movb 412(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 413(%rax), %dl + movb 413(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 414(%rax), %dl + movb 414(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 415(%rax), %dl + movb 415(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 416(%rax), %dl + movb 416(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 417(%rax), %dl + movb 417(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 418(%rax), %dl + movb 418(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 419(%rax), %dl + movb 419(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 420(%rax), %dl + movb 420(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 421(%rax), %dl + movb 421(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 422(%rax), %dl + movb 422(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 423(%rax), %dl + movb 423(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 424(%rax), %dl + movb 424(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 425(%rax), %dl + movb 425(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 426(%rax), %dl + movb 426(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 427(%rax), %dl + movb 427(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 428(%rax), %dl + movb 428(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 429(%rax), %dl + movb 429(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 430(%rax), %dl + movb 430(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 431(%rax), %dl + movb 431(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 432(%rax), %dl + movb 432(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 433(%rax), %dl + movb 433(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 434(%rax), %dl + movb 434(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 435(%rax), %dl + movb 435(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 436(%rax), %dl + movb 436(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 437(%rax), %dl + movb 437(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 438(%rax), %dl + movb 438(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 439(%rax), %dl + movb 439(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 440(%rax), %dl + movb 440(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 441(%rax), %dl + movb 441(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 442(%rax), %dl + movb 442(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 443(%rax), %dl + movb 443(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 444(%rax), %dl + movb 444(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 445(%rax), %dl + movb 445(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 446(%rax), %dl + movb 446(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 447(%rax), %dl + movb 447(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 448(%rax), %dl + movb 448(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 449(%rax), %dl + movb 449(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 450(%rax), %dl + movb 450(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 451(%rax), %dl + movb 451(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 452(%rax), %dl + movb 452(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 453(%rax), %dl + movb 453(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 454(%rax), %dl + movb 454(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 455(%rax), %dl + movb 455(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 456(%rax), %dl + movb 456(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 457(%rax), %dl + movb 457(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 458(%rax), %dl + movb 458(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 459(%rax), %dl + movb 459(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 460(%rax), %dl + movb 460(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 461(%rax), %dl + movb 461(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 462(%rax), %dl + movb 462(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 463(%rax), %dl + movb 463(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 464(%rax), %dl + movb 464(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 465(%rax), %dl + movb 465(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 466(%rax), %dl + movb 466(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 467(%rax), %dl + movb 467(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 468(%rax), %dl + movb 468(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 469(%rax), %dl + movb 469(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 470(%rax), %dl + movb 470(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 471(%rax), %dl + movb 471(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 472(%rax), %dl + movb 472(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 473(%rax), %dl + movb 473(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 474(%rax), %dl + movb 474(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 475(%rax), %dl + movb 475(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 476(%rax), %dl + movb 476(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 477(%rax), %dl + movb 477(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 478(%rax), %dl + movb 478(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 479(%rax), %dl + movb 479(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 480(%rax), %dl + movb 480(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 481(%rax), %dl + movb 481(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 482(%rax), %dl + movb 482(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 483(%rax), %dl + movb 483(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 484(%rax), %dl + movb 484(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 485(%rax), %dl + movb 485(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 486(%rax), %dl + movb 486(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 487(%rax), %dl + movb 487(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 488(%rax), %dl + movb 488(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 489(%rax), %dl + movb 489(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 490(%rax), %dl + movb 490(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 491(%rax), %dl + movb 491(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 492(%rax), %dl + movb 492(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 493(%rax), %dl + movb 493(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 494(%rax), %dl + movb 494(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 495(%rax), %dl + movb 495(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 496(%rax), %dl + movb 496(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 497(%rax), %dl + movb 497(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 498(%rax), %dl + movb 498(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 499(%rax), %dl + movb 499(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 500(%rax), %dl + movb 500(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 501(%rax), %dl + movb 501(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 502(%rax), %dl + movb 502(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 503(%rax), %dl + movb 503(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 504(%rax), %dl + movb 504(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 505(%rax), %dl + movb 505(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 506(%rax), %dl + movb 506(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 507(%rax), %dl + movb 507(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 508(%rax), %dl + movb 508(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 509(%rax), %dl + movb 509(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 510(%rax), %dl + movb 510(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 511(%rax), %dl + movb 511(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 512(%rax), %dl + movb 512(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 513(%rax), %dl + movb 513(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 514(%rax), %dl + movb 514(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 515(%rax), %dl + movb 515(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 516(%rax), %dl + movb 516(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 517(%rax), %dl + movb 517(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 518(%rax), %dl + movb 518(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 519(%rax), %dl + movb 519(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 520(%rax), %dl + movb 520(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 521(%rax), %dl + movb 521(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 522(%rax), %dl + movb 522(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 523(%rax), %dl + movb 523(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 524(%rax), %dl + movb 524(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 525(%rax), %dl + movb 525(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 526(%rax), %dl + movb 526(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 527(%rax), %dl + movb 527(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 528(%rax), %dl + movb 528(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 529(%rax), %dl + movb 529(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 530(%rax), %dl + movb 530(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 531(%rax), %dl + movb 531(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 532(%rax), %dl + movb 532(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 533(%rax), %dl + movb 533(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 534(%rax), %dl + movb 534(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 535(%rax), %dl + movb 535(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 536(%rax), %dl + movb 536(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 537(%rax), %dl + movb 537(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 538(%rax), %dl + movb 538(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 539(%rax), %dl + movb 539(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 540(%rax), %dl + movb 540(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 541(%rax), %dl + movb 541(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 542(%rax), %dl + movb 542(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 543(%rax), %dl + movb 543(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 544(%rax), %dl + movb 544(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 545(%rax), %dl + movb 545(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 546(%rax), %dl + movb 546(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 547(%rax), %dl + movb 547(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 548(%rax), %dl + movb 548(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 549(%rax), %dl + movb 549(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 550(%rax), %dl + movb 550(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 551(%rax), %dl + movb 551(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 552(%rax), %dl + movb 552(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 553(%rax), %dl + movb 553(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 554(%rax), %dl + movb 554(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 555(%rax), %dl + movb 555(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 556(%rax), %dl + movb 556(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 557(%rax), %dl + movb 557(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 558(%rax), %dl + movb 558(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 559(%rax), %dl + movb 559(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 560(%rax), %dl + movb 560(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 561(%rax), %dl + movb 561(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 562(%rax), %dl + movb 562(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 563(%rax), %dl + movb 563(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 564(%rax), %dl + movb 564(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 565(%rax), %dl + movb 565(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 566(%rax), %dl + movb 566(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 567(%rax), %dl + movb 567(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 568(%rax), %dl + movb 568(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 569(%rax), %dl + movb 569(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 570(%rax), %dl + movb 570(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 571(%rax), %dl + movb 571(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 572(%rax), %dl + movb 572(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 573(%rax), %dl + movb 573(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 574(%rax), %dl + movb 574(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 575(%rax), %dl + movb 575(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 576(%rax), %dl + movb 576(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 577(%rax), %dl + movb 577(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 578(%rax), %dl + movb 578(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 579(%rax), %dl + movb 579(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 580(%rax), %dl + movb 580(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 581(%rax), %dl + movb 581(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 582(%rax), %dl + movb 582(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 583(%rax), %dl + movb 583(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 584(%rax), %dl + movb 584(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 585(%rax), %dl + movb 585(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 586(%rax), %dl + movb 586(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 587(%rax), %dl + movb 587(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 588(%rax), %dl + movb 588(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 589(%rax), %dl + movb 589(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 590(%rax), %dl + movb 590(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 591(%rax), %dl + movb 591(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 592(%rax), %dl + movb 592(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 593(%rax), %dl + movb 593(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 594(%rax), %dl + movb 594(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 595(%rax), %dl + movb 595(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 596(%rax), %dl + movb 596(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 597(%rax), %dl + movb 597(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 598(%rax), %dl + movb 598(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 599(%rax), %dl + movb 599(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 600(%rax), %dl + movb 600(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 601(%rax), %dl + movb 601(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 602(%rax), %dl + movb 602(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 603(%rax), %dl + movb 603(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 604(%rax), %dl + movb 604(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 605(%rax), %dl + movb 605(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 606(%rax), %dl + movb 606(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 607(%rax), %dl + movb 607(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 608(%rax), %dl + movb 608(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 609(%rax), %dl + movb 609(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 610(%rax), %dl + movb 610(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 611(%rax), %dl + movb 611(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 612(%rax), %dl + movb 612(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 613(%rax), %dl + movb 613(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 614(%rax), %dl + movb 614(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 615(%rax), %dl + movb 615(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 616(%rax), %dl + movb 616(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 617(%rax), %dl + movb 617(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 618(%rax), %dl + movb 618(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 619(%rax), %dl + movb 619(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 620(%rax), %dl + movb 620(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 621(%rax), %dl + movb 621(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 622(%rax), %dl + movb 622(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 623(%rax), %dl + movb 623(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 624(%rax), %dl + movb 624(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 625(%rax), %dl + movb 625(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 626(%rax), %dl + movb 626(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 627(%rax), %dl + movb 627(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 628(%rax), %dl + movb 628(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 629(%rax), %dl + movb 629(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 630(%rax), %dl + movb 630(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 631(%rax), %dl + movb 631(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 632(%rax), %dl + movb 632(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 633(%rax), %dl + movb 633(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 634(%rax), %dl + movb 634(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 635(%rax), %dl + movb 635(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 636(%rax), %dl + movb 636(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 637(%rax), %dl + movb 637(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 638(%rax), %dl + movb 638(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 639(%rax), %dl + movb 639(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 640(%rax), %dl + movb 640(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 641(%rax), %dl + movb 641(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 642(%rax), %dl + movb 642(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 643(%rax), %dl + movb 643(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 644(%rax), %dl + movb 644(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 645(%rax), %dl + movb 645(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 646(%rax), %dl + movb 646(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 647(%rax), %dl + movb 647(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 648(%rax), %dl + movb 648(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 649(%rax), %dl + movb 649(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 650(%rax), %dl + movb 650(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 651(%rax), %dl + movb 651(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 652(%rax), %dl + movb 652(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 653(%rax), %dl + movb 653(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 654(%rax), %dl + movb 654(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 655(%rax), %dl + movb 655(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 656(%rax), %dl + movb 656(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 657(%rax), %dl + movb 657(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 658(%rax), %dl + movb 658(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 659(%rax), %dl + movb 659(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 660(%rax), %dl + movb 660(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 661(%rax), %dl + movb 661(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 662(%rax), %dl + movb 662(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 663(%rax), %dl + movb 663(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 664(%rax), %dl + movb 664(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 665(%rax), %dl + movb 665(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 666(%rax), %dl + movb 666(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 667(%rax), %dl + movb 667(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 668(%rax), %dl + movb 668(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 669(%rax), %dl + movb 669(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 670(%rax), %dl + movb 670(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 671(%rax), %dl + movb 671(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 672(%rax), %dl + movb 672(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 673(%rax), %dl + movb 673(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 674(%rax), %dl + movb 674(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 675(%rax), %dl + movb 675(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 676(%rax), %dl + movb 676(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 677(%rax), %dl + movb 677(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 678(%rax), %dl + movb 678(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 679(%rax), %dl + movb 679(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 680(%rax), %dl + movb 680(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 681(%rax), %dl + movb 681(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 682(%rax), %dl + movb 682(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 683(%rax), %dl + movb 683(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 684(%rax), %dl + movb 684(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 685(%rax), %dl + movb 685(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 686(%rax), %dl + movb 686(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 687(%rax), %dl + movb 687(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 688(%rax), %dl + movb 688(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 689(%rax), %dl + movb 689(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 690(%rax), %dl + movb 690(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 691(%rax), %dl + movb 691(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 692(%rax), %dl + movb 692(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 693(%rax), %dl + movb 693(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 694(%rax), %dl + movb 694(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 695(%rax), %dl + movb 695(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 696(%rax), %dl + movb 696(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 697(%rax), %dl + movb 697(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 698(%rax), %dl + movb 698(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 699(%rax), %dl + movb 699(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 700(%rax), %dl + movb 700(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 701(%rax), %dl + movb 701(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 702(%rax), %dl + movb 702(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 703(%rax), %dl + movb 703(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 704(%rax), %dl + movb 704(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 705(%rax), %dl + movb 705(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 706(%rax), %dl + movb 706(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 707(%rax), %dl + movb 707(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 708(%rax), %dl + movb 708(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 709(%rax), %dl + movb 709(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 710(%rax), %dl + movb 710(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 711(%rax), %dl + movb 711(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 712(%rax), %dl + movb 712(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 713(%rax), %dl + movb 713(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 714(%rax), %dl + movb 714(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 715(%rax), %dl + movb 715(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 716(%rax), %dl + movb 716(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 717(%rax), %dl + movb 717(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 718(%rax), %dl + movb 718(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 719(%rax), %dl + movb 719(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 720(%rax), %dl + movb 720(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 721(%rax), %dl + movb 721(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 722(%rax), %dl + movb 722(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 723(%rax), %dl + movb 723(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 724(%rax), %dl + movb 724(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 725(%rax), %dl + movb 725(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 726(%rax), %dl + movb 726(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 727(%rax), %dl + movb 727(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 728(%rax), %dl + movb 728(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 729(%rax), %dl + movb 729(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 730(%rax), %dl + movb 730(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 731(%rax), %dl + movb 731(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 732(%rax), %dl + movb 732(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 733(%rax), %dl + movb 733(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 734(%rax), %dl + movb 734(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 735(%rax), %dl + movb 735(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 736(%rax), %dl + movb 736(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 737(%rax), %dl + movb 737(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 738(%rax), %dl + movb 738(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 739(%rax), %dl + movb 739(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 740(%rax), %dl + movb 740(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 741(%rax), %dl + movb 741(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 742(%rax), %dl + movb 742(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 743(%rax), %dl + movb 743(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 744(%rax), %dl + movb 744(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 745(%rax), %dl + movb 745(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 746(%rax), %dl + movb 746(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 747(%rax), %dl + movb 747(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 748(%rax), %dl + movb 748(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 749(%rax), %dl + movb 749(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 750(%rax), %dl + movb 750(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 751(%rax), %dl + movb 751(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 752(%rax), %dl + movb 752(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 753(%rax), %dl + movb 753(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 754(%rax), %dl + movb 754(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 755(%rax), %dl + movb 755(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 756(%rax), %dl + movb 756(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 757(%rax), %dl + movb 757(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 758(%rax), %dl + movb 758(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 759(%rax), %dl + movb 759(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 760(%rax), %dl + movb 760(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 761(%rax), %dl + movb 761(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 762(%rax), %dl + movb 762(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 763(%rax), %dl + movb 763(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 764(%rax), %dl + movb 764(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 765(%rax), %dl + movb 765(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 766(%rax), %dl + movb 766(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 767(%rax), %dl + movb 767(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 768(%rax), %dl + movb 768(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 769(%rax), %dl + movb 769(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 770(%rax), %dl + movb 770(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 771(%rax), %dl + movb 771(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 772(%rax), %dl + movb 772(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 773(%rax), %dl + movb 773(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 774(%rax), %dl + movb 774(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 775(%rax), %dl + movb 775(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 776(%rax), %dl + movb 776(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 777(%rax), %dl + movb 777(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 778(%rax), %dl + movb 778(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 779(%rax), %dl + movb 779(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 780(%rax), %dl + movb 780(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 781(%rax), %dl + movb 781(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 782(%rax), %dl + movb 782(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 783(%rax), %dl + movb 783(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 784(%rax), %dl + movb 784(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 785(%rax), %dl + movb 785(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 786(%rax), %dl + movb 786(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 787(%rax), %dl + movb 787(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 788(%rax), %dl + movb 788(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 789(%rax), %dl + movb 789(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 790(%rax), %dl + movb 790(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 791(%rax), %dl + movb 791(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 792(%rax), %dl + movb 792(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 793(%rax), %dl + movb 793(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 794(%rax), %dl + movb 794(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 795(%rax), %dl + movb 795(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 796(%rax), %dl + movb 796(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 797(%rax), %dl + movb 797(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 798(%rax), %dl + movb 798(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 799(%rax), %dl + movb 799(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 800(%rax), %dl + movb 800(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 801(%rax), %dl + movb 801(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 802(%rax), %dl + movb 802(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 803(%rax), %dl + movb 803(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 804(%rax), %dl + movb 804(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 805(%rax), %dl + movb 805(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 806(%rax), %dl + movb 806(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 807(%rax), %dl + movb 807(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 808(%rax), %dl + movb 808(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 809(%rax), %dl + movb 809(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 810(%rax), %dl + movb 810(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 811(%rax), %dl + movb 811(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 812(%rax), %dl + movb 812(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 813(%rax), %dl + movb 813(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 814(%rax), %dl + movb 814(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 815(%rax), %dl + movb 815(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 816(%rax), %dl + movb 816(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 817(%rax), %dl + movb 817(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 818(%rax), %dl + movb 818(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 819(%rax), %dl + movb 819(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 820(%rax), %dl + movb 820(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 821(%rax), %dl + movb 821(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 822(%rax), %dl + movb 822(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 823(%rax), %dl + movb 823(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 824(%rax), %dl + movb 824(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 825(%rax), %dl + movb 825(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 826(%rax), %dl + movb 826(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 827(%rax), %dl + movb 827(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 828(%rax), %dl + movb 828(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 829(%rax), %dl + movb 829(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 830(%rax), %dl + movb 830(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 831(%rax), %dl + movb 831(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 832(%rax), %dl + movb 832(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 833(%rax), %dl + movb 833(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 834(%rax), %dl + movb 834(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 835(%rax), %dl + movb 835(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 836(%rax), %dl + movb 836(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 837(%rax), %dl + movb 837(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 838(%rax), %dl + movb 838(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 839(%rax), %dl + movb 839(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 840(%rax), %dl + movb 840(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 841(%rax), %dl + movb 841(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 842(%rax), %dl + movb 842(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 843(%rax), %dl + movb 843(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 844(%rax), %dl + movb 844(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 845(%rax), %dl + movb 845(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 846(%rax), %dl + movb 846(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 847(%rax), %dl + movb 847(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 848(%rax), %dl + movb 848(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 849(%rax), %dl + movb 849(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 850(%rax), %dl + movb 850(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 851(%rax), %dl + movb 851(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 852(%rax), %dl + movb 852(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 853(%rax), %dl + movb 853(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 854(%rax), %dl + movb 854(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 855(%rax), %dl + movb 855(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 856(%rax), %dl + movb 856(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 857(%rax), %dl + movb 857(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 858(%rax), %dl + movb 858(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 859(%rax), %dl + movb 859(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 860(%rax), %dl + movb 860(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 861(%rax), %dl + movb 861(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 862(%rax), %dl + movb 862(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 863(%rax), %dl + movb 863(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 864(%rax), %dl + movb 864(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 865(%rax), %dl + movb 865(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 866(%rax), %dl + movb 866(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 867(%rax), %dl + movb 867(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 868(%rax), %dl + movb 868(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 869(%rax), %dl + movb 869(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 870(%rax), %dl + movb 870(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 871(%rax), %dl + movb 871(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 872(%rax), %dl + movb 872(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 873(%rax), %dl + movb 873(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 874(%rax), %dl + movb 874(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 875(%rax), %dl + movb 875(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 876(%rax), %dl + movb 876(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 877(%rax), %dl + movb 877(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 878(%rax), %dl + movb 878(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 879(%rax), %dl + movb 879(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 880(%rax), %dl + movb 880(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 881(%rax), %dl + movb 881(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 882(%rax), %dl + movb 882(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 883(%rax), %dl + movb 883(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 884(%rax), %dl + movb 884(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 885(%rax), %dl + movb 885(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 886(%rax), %dl + movb 886(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 887(%rax), %dl + movb 887(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 888(%rax), %dl + movb 888(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 889(%rax), %dl + movb 889(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 890(%rax), %dl + movb 890(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 891(%rax), %dl + movb 891(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 892(%rax), %dl + movb 892(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 893(%rax), %dl + movb 893(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 894(%rax), %dl + movb 894(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 895(%rax), %dl + movb 895(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 896(%rax), %dl + movb 896(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 897(%rax), %dl + movb 897(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 898(%rax), %dl + movb 898(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 899(%rax), %dl + movb 899(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 900(%rax), %dl + movb 900(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 901(%rax), %dl + movb 901(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 902(%rax), %dl + movb 902(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 903(%rax), %dl + movb 903(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 904(%rax), %dl + movb 904(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 905(%rax), %dl + movb 905(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 906(%rax), %dl + movb 906(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 907(%rax), %dl + movb 907(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 908(%rax), %dl + movb 908(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 909(%rax), %dl + movb 909(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 910(%rax), %dl + movb 910(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 911(%rax), %dl + movb 911(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 912(%rax), %dl + movb 912(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 913(%rax), %dl + movb 913(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 914(%rax), %dl + movb 914(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 915(%rax), %dl + movb 915(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 916(%rax), %dl + movb 916(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 917(%rax), %dl + movb 917(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 918(%rax), %dl + movb 918(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 919(%rax), %dl + movb 919(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 920(%rax), %dl + movb 920(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 921(%rax), %dl + movb 921(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 922(%rax), %dl + movb 922(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 923(%rax), %dl + movb 923(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 924(%rax), %dl + movb 924(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 925(%rax), %dl + movb 925(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 926(%rax), %dl + movb 926(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 927(%rax), %dl + movb 927(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 928(%rax), %dl + movb 928(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 929(%rax), %dl + movb 929(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 930(%rax), %dl + movb 930(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 931(%rax), %dl + movb 931(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 932(%rax), %dl + movb 932(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 933(%rax), %dl + movb 933(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 934(%rax), %dl + movb 934(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 935(%rax), %dl + movb 935(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 936(%rax), %dl + movb 936(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 937(%rax), %dl + movb 937(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 938(%rax), %dl + movb 938(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 939(%rax), %dl + movb 939(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 940(%rax), %dl + movb 940(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 941(%rax), %dl + movb 941(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 942(%rax), %dl + movb 942(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 943(%rax), %dl + movb 943(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 944(%rax), %dl + movb 944(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 945(%rax), %dl + movb 945(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 946(%rax), %dl + movb 946(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 947(%rax), %dl + movb 947(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 948(%rax), %dl + movb 948(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 949(%rax), %dl + movb 949(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 950(%rax), %dl + movb 950(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 951(%rax), %dl + movb 951(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 952(%rax), %dl + movb 952(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 953(%rax), %dl + movb 953(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 954(%rax), %dl + movb 954(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 955(%rax), %dl + movb 955(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 956(%rax), %dl + movb 956(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 957(%rax), %dl + movb 957(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 958(%rax), %dl + movb 958(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 959(%rax), %dl + movb 959(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 960(%rax), %dl + movb 960(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 961(%rax), %dl + movb 961(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 962(%rax), %dl + movb 962(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 963(%rax), %dl + movb 963(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 964(%rax), %dl + movb 964(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 965(%rax), %dl + movb 965(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 966(%rax), %dl + movb 966(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 967(%rax), %dl + movb 967(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 968(%rax), %dl + movb 968(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 969(%rax), %dl + movb 969(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 970(%rax), %dl + movb 970(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 971(%rax), %dl + movb 971(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 972(%rax), %dl + movb 972(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 973(%rax), %dl + movb 973(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 974(%rax), %dl + movb 974(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 975(%rax), %dl + movb 975(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 976(%rax), %dl + movb 976(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 977(%rax), %dl + movb 977(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 978(%rax), %dl + movb 978(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 979(%rax), %dl + movb 979(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 980(%rax), %dl + movb 980(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 981(%rax), %dl + movb 981(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 982(%rax), %dl + movb 982(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 983(%rax), %dl + movb 983(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 984(%rax), %dl + movb 984(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 985(%rax), %dl + movb 985(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 986(%rax), %dl + movb 986(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 987(%rax), %dl + movb 987(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 988(%rax), %dl + movb 988(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 989(%rax), %dl + movb 989(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 990(%rax), %dl + movb 990(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 991(%rax), %dl + movb 991(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 992(%rax), %dl + movb 992(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 993(%rax), %dl + movb 993(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 994(%rax), %dl + movb 994(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 995(%rax), %dl + movb 995(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 996(%rax), %dl + movb 996(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 997(%rax), %dl + movb 997(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 998(%rax), %dl + movb 998(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 999(%rax), %dl + movb 999(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1000(%rax), %dl + movb 1000(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1001(%rax), %dl + movb 1001(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1002(%rax), %dl + movb 1002(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1003(%rax), %dl + movb 1003(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1004(%rax), %dl + movb 1004(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1005(%rax), %dl + movb 1005(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1006(%rax), %dl + movb 1006(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1007(%rax), %dl + movb 1007(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1008(%rax), %dl + movb 1008(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1009(%rax), %dl + movb 1009(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1010(%rax), %dl + movb 1010(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1011(%rax), %dl + movb 1011(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1012(%rax), %dl + movb 1012(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1013(%rax), %dl + movb 1013(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1014(%rax), %dl + movb 1014(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1015(%rax), %dl + movb 1015(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1016(%rax), %dl + movb 1016(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1017(%rax), %dl + movb 1017(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1018(%rax), %dl + movb 1018(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1019(%rax), %dl + movb 1019(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1020(%rax), %dl + movb 1020(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1021(%rax), %dl + movb 1021(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1022(%rax), %dl + movb 1022(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1023(%rax), %dl + movb 1023(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1024(%rax), %dl + movb 1024(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1025(%rax), %dl + movb 1025(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1026(%rax), %dl + movb 1026(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1027(%rax), %dl + movb 1027(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1028(%rax), %dl + movb 1028(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1029(%rax), %dl + movb 1029(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1030(%rax), %dl + movb 1030(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1031(%rax), %dl + movb 1031(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1032(%rax), %dl + movb 1032(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1033(%rax), %dl + movb 1033(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1034(%rax), %dl + movb 1034(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1035(%rax), %dl + movb 1035(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1036(%rax), %dl + movb 1036(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1037(%rax), %dl + movb 1037(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1038(%rax), %dl + movb 1038(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1039(%rax), %dl + movb 1039(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1040(%rax), %dl + movb 1040(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1041(%rax), %dl + movb 1041(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1042(%rax), %dl + movb 1042(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1043(%rax), %dl + movb 1043(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1044(%rax), %dl + movb 1044(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1045(%rax), %dl + movb 1045(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1046(%rax), %dl + movb 1046(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1047(%rax), %dl + movb 1047(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1048(%rax), %dl + movb 1048(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1049(%rax), %dl + movb 1049(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1050(%rax), %dl + movb 1050(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1051(%rax), %dl + movb 1051(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1052(%rax), %dl + movb 1052(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1053(%rax), %dl + movb 1053(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1054(%rax), %dl + movb 1054(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1055(%rax), %dl + movb 1055(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1056(%rax), %dl + movb 1056(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1057(%rax), %dl + movb 1057(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1058(%rax), %dl + movb 1058(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1059(%rax), %dl + movb 1059(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1060(%rax), %dl + movb 1060(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1061(%rax), %dl + movb 1061(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1062(%rax), %dl + movb 1062(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1063(%rax), %dl + movb 1063(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1064(%rax), %dl + movb 1064(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1065(%rax), %dl + movb 1065(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1066(%rax), %dl + movb 1066(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1067(%rax), %dl + movb 1067(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1068(%rax), %dl + movb 1068(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1069(%rax), %dl + movb 1069(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1070(%rax), %dl + movb 1070(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1071(%rax), %dl + movb 1071(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1072(%rax), %dl + movb 1072(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1073(%rax), %dl + movb 1073(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1074(%rax), %dl + movb 1074(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1075(%rax), %dl + movb 1075(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1076(%rax), %dl + movb 1076(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1077(%rax), %dl + movb 1077(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1078(%rax), %dl + movb 1078(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1079(%rax), %dl + movb 1079(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1080(%rax), %dl + movb 1080(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1081(%rax), %dl + movb 1081(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1082(%rax), %dl + movb 1082(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1083(%rax), %dl + movb 1083(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1084(%rax), %dl + movb 1084(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1085(%rax), %dl + movb 1085(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1086(%rax), %dl + movb 1086(%rsi), %dil + xorb %dil, %dl + movzbq %dl, %rdx + orq %rdx, %rcx + movb 1087(%rax), %al + movb 1087(%rsi), %dl + xorb %dl, %al + movzbq %al, %rax + orq %rax, %rcx + negq %rcx + shrq $63, %rcx + movq 16(%rsp), %rax + addq $64, %rax + addq $2304, %rax + leaq 144(%rsp), %rdx + negq %rcx + movb (%rdx), %dil + movb (%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, (%rdx) + movb 1(%rdx), %dil + movb 1(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 1(%rdx) + movb 2(%rdx), %dil + movb 2(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 2(%rdx) + movb 3(%rdx), %dil + movb 3(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 3(%rdx) + movb 4(%rdx), %dil + movb 4(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 4(%rdx) + movb 5(%rdx), %dil + movb 5(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 5(%rdx) + movb 6(%rdx), %dil + movb 6(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 6(%rdx) + movb 7(%rdx), %dil + movb 7(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 7(%rdx) + movb 8(%rdx), %dil + movb 8(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 8(%rdx) + movb 9(%rdx), %dil + movb 9(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 9(%rdx) + movb 10(%rdx), %dil + movb 10(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 10(%rdx) + movb 11(%rdx), %dil + movb 11(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 11(%rdx) + movb 12(%rdx), %dil + movb 12(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 12(%rdx) + movb 13(%rdx), %dil + movb 13(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 13(%rdx) + movb 14(%rdx), %dil + movb 14(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 14(%rdx) + movb 15(%rdx), %dil + movb 15(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 15(%rdx) + movb 16(%rdx), %dil + movb 16(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 16(%rdx) + movb 17(%rdx), %dil + movb 17(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 17(%rdx) + movb 18(%rdx), %dil + movb 18(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 18(%rdx) + movb 19(%rdx), %dil + movb 19(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 19(%rdx) + movb 20(%rdx), %dil + movb 20(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 20(%rdx) + movb 21(%rdx), %dil + movb 21(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 21(%rdx) + movb 22(%rdx), %dil + movb 22(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 22(%rdx) + movb 23(%rdx), %dil + movb 23(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 23(%rdx) + movb 24(%rdx), %dil + movb 24(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 24(%rdx) + movb 25(%rdx), %dil + movb 25(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 25(%rdx) + movb 26(%rdx), %dil + movb 26(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 26(%rdx) + movb 27(%rdx), %dil + movb 27(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 27(%rdx) + movb 28(%rdx), %dil + movb 28(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 28(%rdx) + movb 29(%rdx), %dil + movb 29(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 29(%rdx) + movb 30(%rdx), %dil + movb 30(%rax), %r8b + xorb %dil, %r8b + andb %cl, %r8b + xorb %r8b, %dil + movb %dil, 30(%rdx) + movb 31(%rdx), %dil + movb 31(%rax), %al + xorb %dil, %al + andb %cl, %al + xorb %al, %dil + movb %dil, 31(%rdx) + movq $1088, %rax + leaq 176(%rsp), %rcx + leaq -232(%rsp), %rsp + call L_sha3_256$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$2: + leaq 232(%rsp), %rsp + movq (%rsp), %rax + movq $32, %rcx + leaq 144(%rsp), %rdx + leaq -216(%rsp), %rsp + call L_shake256_64$1 +Ljade_kem_kyber_kyber768_amd64_ref_dec$1: + leaq 216(%rsp), %rsp + xorq %rax, %rax + movq 14504(%rsp), %r15 + movq 14512(%rsp), %r14 + movq 14520(%rsp), %r13 + movq 14528(%rsp), %r12 + movq 14536(%rsp), %rbp + movq 14544(%rsp), %rbx + movq 14552(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_ref_enc: +jade_kem_kyber_kyber768_amd64_ref_enc: + movq %rsp, %rax + leaq -88(%rsp), %rsp + andq $-16, %rsp + movq %rax, 80(%rsp) + movq %r15, 32(%rsp) + movq %r14, 40(%rsp) + movq %r13, 48(%rsp) + movq %r12, 56(%rsp) + movq %rbp, 64(%rsp) + movq %rbx, 72(%rsp) + movq %rdi, %rbp + movq %rsi, %rbx + movq %rdx, %r12 + movq %rsp, %rdi + movq $32, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rax + leaq -13400(%rsp), %rsp + call L_crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_ref_enc$1: + leaq 13400(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r15 + movq 40(%rsp), %r14 + movq 48(%rsp), %r13 + movq 56(%rsp), %r12 + movq 64(%rsp), %rbp + movq 72(%rsp), %rbx + movq 80(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_ref_enc_derand: +jade_kem_kyber_kyber768_amd64_ref_enc_derand: + movq %rsp, %rax + leaq -88(%rsp), %rsp + andq $-8, %rsp + movq %rax, 80(%rsp) + movq %r15, 32(%rsp) + movq %r14, 40(%rsp) + movq %r13, 48(%rsp) + movq %r12, 56(%rsp) + movq %rbp, 64(%rsp) + movq %rbx, 72(%rsp) + movq %rdi, %rbp + movq %rsi, %rbx + movq %rdx, %r12 + movq %rsp, %rax + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %cl + movb %cl, 31(%rax) + movq %rsp, %rax + leaq -13400(%rsp), %rsp + call L_crypto_kem_enc_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_ref_enc_derand$1: + leaq 13400(%rsp), %rsp + xorq %rax, %rax + movq 32(%rsp), %r15 + movq 40(%rsp), %r14 + movq 48(%rsp), %r13 + movq 56(%rsp), %r12 + movq 64(%rsp), %rbp + movq 72(%rsp), %rbx + movq 80(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_ref_keypair: +jade_kem_kyber_kyber768_amd64_ref_keypair: + movq %rsp, %rax + leaq -120(%rsp), %rsp + andq $-16, %rsp + movq %rax, 112(%rsp) + movq %r15, 64(%rsp) + movq %r14, 72(%rsp) + movq %r13, 80(%rsp) + movq %r12, 88(%rsp) + movq %rbp, 96(%rsp) + movq %rbx, 104(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rdi + movq $64, %rsi + call __jasmin_syscall_randombytes__ + movq %rsp, %rax + leaq -10320(%rsp), %rsp + call L_crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_ref_keypair$1: + leaq 10320(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r15 + movq 72(%rsp), %r14 + movq 80(%rsp), %r13 + movq 88(%rsp), %r12 + movq 96(%rsp), %rbp + movq 104(%rsp), %rbx + movq 112(%rsp), %rsp + ret +_jade_kem_kyber_kyber768_amd64_ref_keypair_derand: +jade_kem_kyber_kyber768_amd64_ref_keypair_derand: + movq %rsp, %rax + leaq -120(%rsp), %rsp + andq $-8, %rsp + movq %rax, 112(%rsp) + movq %r15, 64(%rsp) + movq %r14, 72(%rsp) + movq %r13, 80(%rsp) + movq %r12, 88(%rsp) + movq %rbp, 96(%rsp) + movq %rbx, 104(%rsp) + movq %rdi, %rbx + movq %rsi, %rbp + movq %rsp, %rax + movb (%rdx), %cl + movb %cl, (%rax) + movb 1(%rdx), %cl + movb %cl, 1(%rax) + movb 2(%rdx), %cl + movb %cl, 2(%rax) + movb 3(%rdx), %cl + movb %cl, 3(%rax) + movb 4(%rdx), %cl + movb %cl, 4(%rax) + movb 5(%rdx), %cl + movb %cl, 5(%rax) + movb 6(%rdx), %cl + movb %cl, 6(%rax) + movb 7(%rdx), %cl + movb %cl, 7(%rax) + movb 8(%rdx), %cl + movb %cl, 8(%rax) + movb 9(%rdx), %cl + movb %cl, 9(%rax) + movb 10(%rdx), %cl + movb %cl, 10(%rax) + movb 11(%rdx), %cl + movb %cl, 11(%rax) + movb 12(%rdx), %cl + movb %cl, 12(%rax) + movb 13(%rdx), %cl + movb %cl, 13(%rax) + movb 14(%rdx), %cl + movb %cl, 14(%rax) + movb 15(%rdx), %cl + movb %cl, 15(%rax) + movb 16(%rdx), %cl + movb %cl, 16(%rax) + movb 17(%rdx), %cl + movb %cl, 17(%rax) + movb 18(%rdx), %cl + movb %cl, 18(%rax) + movb 19(%rdx), %cl + movb %cl, 19(%rax) + movb 20(%rdx), %cl + movb %cl, 20(%rax) + movb 21(%rdx), %cl + movb %cl, 21(%rax) + movb 22(%rdx), %cl + movb %cl, 22(%rax) + movb 23(%rdx), %cl + movb %cl, 23(%rax) + movb 24(%rdx), %cl + movb %cl, 24(%rax) + movb 25(%rdx), %cl + movb %cl, 25(%rax) + movb 26(%rdx), %cl + movb %cl, 26(%rax) + movb 27(%rdx), %cl + movb %cl, 27(%rax) + movb 28(%rdx), %cl + movb %cl, 28(%rax) + movb 29(%rdx), %cl + movb %cl, 29(%rax) + movb 30(%rdx), %cl + movb %cl, 30(%rax) + movb 31(%rdx), %cl + movb %cl, 31(%rax) + movb 32(%rdx), %cl + movb %cl, 32(%rax) + movb 33(%rdx), %cl + movb %cl, 33(%rax) + movb 34(%rdx), %cl + movb %cl, 34(%rax) + movb 35(%rdx), %cl + movb %cl, 35(%rax) + movb 36(%rdx), %cl + movb %cl, 36(%rax) + movb 37(%rdx), %cl + movb %cl, 37(%rax) + movb 38(%rdx), %cl + movb %cl, 38(%rax) + movb 39(%rdx), %cl + movb %cl, 39(%rax) + movb 40(%rdx), %cl + movb %cl, 40(%rax) + movb 41(%rdx), %cl + movb %cl, 41(%rax) + movb 42(%rdx), %cl + movb %cl, 42(%rax) + movb 43(%rdx), %cl + movb %cl, 43(%rax) + movb 44(%rdx), %cl + movb %cl, 44(%rax) + movb 45(%rdx), %cl + movb %cl, 45(%rax) + movb 46(%rdx), %cl + movb %cl, 46(%rax) + movb 47(%rdx), %cl + movb %cl, 47(%rax) + movb 48(%rdx), %cl + movb %cl, 48(%rax) + movb 49(%rdx), %cl + movb %cl, 49(%rax) + movb 50(%rdx), %cl + movb %cl, 50(%rax) + movb 51(%rdx), %cl + movb %cl, 51(%rax) + movb 52(%rdx), %cl + movb %cl, 52(%rax) + movb 53(%rdx), %cl + movb %cl, 53(%rax) + movb 54(%rdx), %cl + movb %cl, 54(%rax) + movb 55(%rdx), %cl + movb %cl, 55(%rax) + movb 56(%rdx), %cl + movb %cl, 56(%rax) + movb 57(%rdx), %cl + movb %cl, 57(%rax) + movb 58(%rdx), %cl + movb %cl, 58(%rax) + movb 59(%rdx), %cl + movb %cl, 59(%rax) + movb 60(%rdx), %cl + movb %cl, 60(%rax) + movb 61(%rdx), %cl + movb %cl, 61(%rax) + movb 62(%rdx), %cl + movb %cl, 62(%rax) + movb 63(%rdx), %cl + movb %cl, 63(%rax) + movq %rsp, %rax + leaq -10320(%rsp), %rsp + call L_crypto_kem_keypair_derand_jazz$1 +Ljade_kem_kyber_kyber768_amd64_ref_keypair_derand$1: + leaq 10320(%rsp), %rsp + xorq %rax, %rax + movq 64(%rsp), %r15 + movq 72(%rsp), %r14 + movq 80(%rsp), %r13 + movq 88(%rsp), %r12 + movq 96(%rsp), %rbp + movq 104(%rsp), %rbx + movq 112(%rsp), %rsp + ret +L_crypto_kem_enc_derand_jazz$1: + movq %r12, 8(%rsp) + movq %rbp, 16(%rsp) + movq %rbx, 24(%rsp) + movq (%rax), %rcx + movq %rcx, 72(%rsp) + movq 8(%rax), %rcx + movq %rcx, 80(%rsp) + movq 16(%rax), %rcx + movq %rcx, 88(%rsp) + movq 24(%rax), %rax + movq %rax, 96(%rsp) + leaq 136(%rsp), %rax + leaq 72(%rsp), %rdx + leaq -208(%rsp), %rsp + call L_sha3_256_32$1 +L_crypto_kem_enc_derand_jazz$208: + leaq 208(%rsp), %rsp + movq 8(%rsp), %rsi + movq $1184, %rax + leaq 168(%rsp), %rcx + leaq -232(%rsp), %rsp + call L_sha3_256$1 +L_crypto_kem_enc_derand_jazz$207: + leaq 232(%rsp), %rsp + leaq 72(%rsp), %rax + leaq 136(%rsp), %rdx + leaq -208(%rsp), %rsp + call L_sha3_512_64$1 +L_crypto_kem_enc_derand_jazz$206: + leaq 208(%rsp), %rsp + movq 8(%rsp), %rdx + leaq 136(%rsp), %rcx + leaq 104(%rsp), %rax + movq %rdx, %rsi + leaq 2448(%rsp), %rdi + call L_poly_frombytes$1 +L_crypto_kem_enc_derand_jazz$205: + addq $384, %rsi + leaq 2960(%rsp), %rdi + call L_poly_frombytes$1 +L_crypto_kem_enc_derand_jazz$204: + addq $384, %rsi + leaq 3472(%rsp), %rdi + call L_poly_frombytes$1 +L_crypto_kem_enc_derand_jazz$203: + movq $0, %rsi + addq $1152, %rdx + jmp L_crypto_kem_enc_derand_jazz$201 +L_crypto_kem_enc_derand_jazz$202: + movq (%rdx), %rdi + movq %rdi, 40(%rsp,%rsi,8) + addq $8, %rdx + incq %rsi +L_crypto_kem_enc_derand_jazz$201: + cmpq $4, %rsi + jb L_crypto_kem_enc_derand_jazz$202 + leaq 912(%rsp), %rdx + call L_i_poly_frommsg$1 +L_crypto_kem_enc_derand_jazz$200: + movq $1, %rcx + movq %rcx, 8(%rsp) + movb 40(%rsp), %cl + movb %cl, 13200(%rsp) + movb 41(%rsp), %cl + movb %cl, 13201(%rsp) + movb 42(%rsp), %cl + movb %cl, 13202(%rsp) + movb 43(%rsp), %cl + movb %cl, 13203(%rsp) + movb 44(%rsp), %cl + movb %cl, 13204(%rsp) + movb 45(%rsp), %cl + movb %cl, 13205(%rsp) + movb 46(%rsp), %cl + movb %cl, 13206(%rsp) + movb 47(%rsp), %cl + movb %cl, 13207(%rsp) + movb 48(%rsp), %cl + movb %cl, 13208(%rsp) + movb 49(%rsp), %cl + movb %cl, 13209(%rsp) + movb 50(%rsp), %cl + movb %cl, 13210(%rsp) + movb 51(%rsp), %cl + movb %cl, 13211(%rsp) + movb 52(%rsp), %cl + movb %cl, 13212(%rsp) + movb 53(%rsp), %cl + movb %cl, 13213(%rsp) + movb 54(%rsp), %cl + movb %cl, 13214(%rsp) + movb 55(%rsp), %cl + movb %cl, 13215(%rsp) + movb 56(%rsp), %cl + movb %cl, 13216(%rsp) + movb 57(%rsp), %cl + movb %cl, 13217(%rsp) + movb 58(%rsp), %cl + movb %cl, 13218(%rsp) + movb 59(%rsp), %cl + movb %cl, 13219(%rsp) + movb 60(%rsp), %cl + movb %cl, 13220(%rsp) + movb 61(%rsp), %cl + movb %cl, 13221(%rsp) + movb 62(%rsp), %cl + movb %cl, 13222(%rsp) + movb 63(%rsp), %cl + movb %cl, 13223(%rsp) + movb 64(%rsp), %cl + movb %cl, 13224(%rsp) + movb 65(%rsp), %cl + movb %cl, 13225(%rsp) + movb 66(%rsp), %cl + movb %cl, 13226(%rsp) + movb 67(%rsp), %cl + movb %cl, 13227(%rsp) + movb 68(%rsp), %cl + movb %cl, 13228(%rsp) + movb 69(%rsp), %cl + movb %cl, 13229(%rsp) + movb 70(%rsp), %cl + movb %cl, 13230(%rsp) + movb 71(%rsp), %cl + movb %cl, 13231(%rsp) + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$198 + movb $0, 13232(%rsp) + movb $0, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$199 +L_crypto_kem_enc_derand_jazz$198: + movb $0, 13232(%rsp) + movb $0, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$199: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$197: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$195 +L_crypto_kem_enc_derand_jazz$196: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$195: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$196 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$187 +L_crypto_kem_enc_derand_jazz$188: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$194: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$189: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$192 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$192 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$193: +L_crypto_kem_enc_derand_jazz$192: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$190 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$190 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$191: +L_crypto_kem_enc_derand_jazz$190: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$189 +L_crypto_kem_enc_derand_jazz$187: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$188 + movq $0, %rcx + movq $0, %rdx + jmp L_crypto_kem_enc_derand_jazz$185 +L_crypto_kem_enc_derand_jazz$186: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$185: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$186 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$183 + movb $0, 13232(%rsp) + movb $1, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$184 +L_crypto_kem_enc_derand_jazz$183: + movb $1, 13232(%rsp) + movb $0, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$184: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$182: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$180 +L_crypto_kem_enc_derand_jazz$181: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$180: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$181 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$172 +L_crypto_kem_enc_derand_jazz$173: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$179: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$174: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$177 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$177 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$178: +L_crypto_kem_enc_derand_jazz$177: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$175 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$175 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$176: +L_crypto_kem_enc_derand_jazz$175: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$174 +L_crypto_kem_enc_derand_jazz$172: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$173 + movq $0, %rcx + movq $256, %rdx + jmp L_crypto_kem_enc_derand_jazz$170 +L_crypto_kem_enc_derand_jazz$171: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$170: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$171 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$168 + movb $0, 13232(%rsp) + movb $2, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$169 +L_crypto_kem_enc_derand_jazz$168: + movb $2, 13232(%rsp) + movb $0, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$169: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$167: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$165 +L_crypto_kem_enc_derand_jazz$166: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$165: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$166 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$157 +L_crypto_kem_enc_derand_jazz$158: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$164: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$159: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$162 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$162 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$163: +L_crypto_kem_enc_derand_jazz$162: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$160 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$160 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$161: +L_crypto_kem_enc_derand_jazz$160: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$159 +L_crypto_kem_enc_derand_jazz$157: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$158 + movq $0, %rcx + movq $512, %rdx + jmp L_crypto_kem_enc_derand_jazz$155 +L_crypto_kem_enc_derand_jazz$156: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$155: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$156 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$153 + movb $1, 13232(%rsp) + movb $0, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$154 +L_crypto_kem_enc_derand_jazz$153: + movb $0, 13232(%rsp) + movb $1, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$154: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$152: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$150 +L_crypto_kem_enc_derand_jazz$151: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$150: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$151 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$142 +L_crypto_kem_enc_derand_jazz$143: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$149: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$144: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$147 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$147 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$148: +L_crypto_kem_enc_derand_jazz$147: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$145 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$145 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$146: +L_crypto_kem_enc_derand_jazz$145: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$144 +L_crypto_kem_enc_derand_jazz$142: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$143 + movq $0, %rcx + movq $768, %rdx + jmp L_crypto_kem_enc_derand_jazz$140 +L_crypto_kem_enc_derand_jazz$141: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$140: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$141 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$138 + movb $1, 13232(%rsp) + movb $1, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$139 +L_crypto_kem_enc_derand_jazz$138: + movb $1, 13232(%rsp) + movb $1, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$139: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$137: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$135 +L_crypto_kem_enc_derand_jazz$136: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$135: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$136 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$127 +L_crypto_kem_enc_derand_jazz$128: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$134: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$129: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$132 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$132 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$133: +L_crypto_kem_enc_derand_jazz$132: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$130 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$130 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$131: +L_crypto_kem_enc_derand_jazz$130: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$129 +L_crypto_kem_enc_derand_jazz$127: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$128 + movq $0, %rcx + movq $1024, %rdx + jmp L_crypto_kem_enc_derand_jazz$125 +L_crypto_kem_enc_derand_jazz$126: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$125: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$126 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$123 + movb $1, 13232(%rsp) + movb $2, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$124 +L_crypto_kem_enc_derand_jazz$123: + movb $2, 13232(%rsp) + movb $1, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$124: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$122: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$120 +L_crypto_kem_enc_derand_jazz$121: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$120: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$121 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$112 +L_crypto_kem_enc_derand_jazz$113: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$119: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$114: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$117 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$117 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$118: +L_crypto_kem_enc_derand_jazz$117: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$115 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$115 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$116: +L_crypto_kem_enc_derand_jazz$115: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$114 +L_crypto_kem_enc_derand_jazz$112: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$113 + movq $0, %rcx + movq $1280, %rdx + jmp L_crypto_kem_enc_derand_jazz$110 +L_crypto_kem_enc_derand_jazz$111: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$110: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$111 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$108 + movb $2, 13232(%rsp) + movb $0, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$109 +L_crypto_kem_enc_derand_jazz$108: + movb $0, 13232(%rsp) + movb $2, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$109: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$107: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$105 +L_crypto_kem_enc_derand_jazz$106: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$105: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$106 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$97 +L_crypto_kem_enc_derand_jazz$98: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$104: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$99: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$102 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$102 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$103: +L_crypto_kem_enc_derand_jazz$102: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$100 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$100 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$101: +L_crypto_kem_enc_derand_jazz$100: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$99 +L_crypto_kem_enc_derand_jazz$97: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$98 + movq $0, %rcx + movq $1536, %rdx + jmp L_crypto_kem_enc_derand_jazz$95 +L_crypto_kem_enc_derand_jazz$96: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$95: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$96 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$93 + movb $2, 13232(%rsp) + movb $1, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$94 +L_crypto_kem_enc_derand_jazz$93: + movb $1, 13232(%rsp) + movb $2, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$94: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$92: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$90 +L_crypto_kem_enc_derand_jazz$91: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$90: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$91 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$82 +L_crypto_kem_enc_derand_jazz$83: + movq %rcx, 32(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$89: + leaq 8(%rsp), %rsp + movq 32(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$84: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$87 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$87 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$88: +L_crypto_kem_enc_derand_jazz$87: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$85 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$85 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$86: +L_crypto_kem_enc_derand_jazz$85: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$84 +L_crypto_kem_enc_derand_jazz$82: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$83 + movq $0, %rcx + movq $1792, %rdx + jmp L_crypto_kem_enc_derand_jazz$80 +L_crypto_kem_enc_derand_jazz$81: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$80: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$81 + movq 8(%rsp), %rcx + cmpq $0, %rcx + je L_crypto_kem_enc_derand_jazz$78 + movb $2, 13232(%rsp) + movb $2, 13233(%rsp) + jmp L_crypto_kem_enc_derand_jazz$79 +L_crypto_kem_enc_derand_jazz$78: + movb $2, 13232(%rsp) + movb $2, 13233(%rsp) +L_crypto_kem_enc_derand_jazz$79: + leaq 200(%rsp), %rcx + leaq 13200(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_enc_derand_jazz$77: + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$75 +L_crypto_kem_enc_derand_jazz$76: + movq %rcx, 400(%rsp,%rcx,8) + incq %rcx +L_crypto_kem_enc_derand_jazz$75: + cmpq $64, %rcx + jb L_crypto_kem_enc_derand_jazz$76 + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$67 +L_crypto_kem_enc_derand_jazz$68: + movq %rcx, 8(%rsp) + leaq 200(%rsp), %rcx + leaq 13234(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_enc_derand_jazz$74: + leaq 8(%rsp), %rsp + movq 8(%rsp), %rcx + movq $0, %rdx +L_crypto_kem_enc_derand_jazz$69: + movzbw 13234(%rsp,%rdx), %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + movw %di, %r8w + shrw $4, %r8w + andw $15, %di + shlw $8, %di + orw %di, %si + incq %rdx + movzbw 13234(%rsp,%rdx), %di + shlw $4, %di + orw %di, %r8w + incq %rdx + cmpw $3329, %si + jnb L_crypto_kem_enc_derand_jazz$72 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$72 + movw %si, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$73: +L_crypto_kem_enc_derand_jazz$72: + cmpw $3329, %r8w + jnb L_crypto_kem_enc_derand_jazz$70 + cmpq $256, %rcx + jnb L_crypto_kem_enc_derand_jazz$70 + movw %r8w, 400(%rsp,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$71: +L_crypto_kem_enc_derand_jazz$70: + cmpq $166, %rdx + jb L_crypto_kem_enc_derand_jazz$69 +L_crypto_kem_enc_derand_jazz$67: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$68 + movq $0, %rcx + movq $2048, %rdx + jmp L_crypto_kem_enc_derand_jazz$65 +L_crypto_kem_enc_derand_jazz$66: + movw 400(%rsp,%rcx,2), %si + movw %si, 8592(%rsp,%rdx,2) + incq %rcx + incq %rdx +L_crypto_kem_enc_derand_jazz$65: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$66 + movb $0, %cl + leaq 3984(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_enc_derand_jazz$64: + leaq 176(%rsp), %rsp + movb $1, %cl + leaq 4496(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_enc_derand_jazz$63: + leaq 176(%rsp), %rsp + movb $2, %cl + leaq 5008(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_enc_derand_jazz$62: + leaq 176(%rsp), %rsp + movb $3, %cl + leaq 5520(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_enc_derand_jazz$61: + leaq 176(%rsp), %rsp + movb $4, %cl + leaq 6032(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_enc_derand_jazz$60: + leaq 176(%rsp), %rsp + movb $5, %cl + leaq 6544(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_enc_derand_jazz$59: + leaq 176(%rsp), %rsp + movb $6, %cl + leaq 400(%rsp), %rdx + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_enc_derand_jazz$58: + leaq 176(%rsp), %rsp + leaq 3984(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_enc_derand_jazz$57: + leaq 4496(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_enc_derand_jazz$56: + leaq 5008(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_enc_derand_jazz$55: + leaq 7056(%rsp), %rdi + leaq 8592(%rsp), %rcx + leaq 3984(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$54: + leaq 16(%rsp), %rsp + leaq 1424(%rsp), %rdi + leaq 9104(%rsp), %rcx + leaq 4496(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$53: + leaq 16(%rsp), %rsp + leaq 7056(%rsp), %rcx + leaq 1424(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$52: + leaq 1424(%rsp), %rdi + leaq 9616(%rsp), %rcx + leaq 5008(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$51: + leaq 16(%rsp), %rsp + leaq 7056(%rsp), %rcx + leaq 1424(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$50: + leaq 7056(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$48 +L_crypto_kem_enc_derand_jazz$49: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$48: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$49 + leaq 7568(%rsp), %rdi + leaq 10128(%rsp), %rcx + leaq 3984(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$47: + leaq 16(%rsp), %rsp + leaq 1424(%rsp), %rdi + leaq 10640(%rsp), %rcx + leaq 4496(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$46: + leaq 16(%rsp), %rsp + leaq 7568(%rsp), %rcx + leaq 1424(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$45: + leaq 1424(%rsp), %rdi + leaq 11152(%rsp), %rcx + leaq 5008(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$44: + leaq 16(%rsp), %rsp + leaq 7568(%rsp), %rcx + leaq 1424(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$43: + leaq 7568(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$41 +L_crypto_kem_enc_derand_jazz$42: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$41: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$42 + leaq 8080(%rsp), %rdi + leaq 11664(%rsp), %rcx + leaq 3984(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$40: + leaq 16(%rsp), %rsp + leaq 1424(%rsp), %rdi + leaq 12176(%rsp), %rcx + leaq 4496(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$39: + leaq 16(%rsp), %rsp + leaq 8080(%rsp), %rcx + leaq 1424(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$38: + leaq 1424(%rsp), %rdi + leaq 12688(%rsp), %rcx + leaq 5008(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$37: + leaq 16(%rsp), %rsp + leaq 8080(%rsp), %rcx + leaq 1424(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$36: + leaq 8080(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$34 +L_crypto_kem_enc_derand_jazz$35: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$34: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$35 + leaq 1424(%rsp), %rdi + leaq 2448(%rsp), %rcx + leaq 3984(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$33: + leaq 16(%rsp), %rsp + leaq 1936(%rsp), %rdi + leaq 2960(%rsp), %rcx + leaq 4496(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$32: + leaq 16(%rsp), %rsp + leaq 1424(%rsp), %rcx + leaq 1936(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$31: + leaq 1936(%rsp), %rdi + leaq 3472(%rsp), %rcx + leaq 5008(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_enc_derand_jazz$30: + leaq 16(%rsp), %rsp + leaq 1424(%rsp), %rcx + leaq 1936(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$29: + leaq 1424(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$27 +L_crypto_kem_enc_derand_jazz$28: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$27: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$28 + leaq 7056(%rsp), %rcx + call L_poly_invntt$1 +L_crypto_kem_enc_derand_jazz$26: + leaq 7568(%rsp), %rcx + call L_poly_invntt$1 +L_crypto_kem_enc_derand_jazz$25: + leaq 8080(%rsp), %rcx + call L_poly_invntt$1 +L_crypto_kem_enc_derand_jazz$24: + leaq 1424(%rsp), %rcx + call L_poly_invntt$1 +L_crypto_kem_enc_derand_jazz$23: + leaq 7056(%rsp), %rcx + leaq 5520(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$22: + leaq 7568(%rsp), %rcx + leaq 6032(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$21: + leaq 8080(%rsp), %rcx + leaq 6544(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$20: + leaq 1424(%rsp), %rcx + leaq 400(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$19: + leaq 1424(%rsp), %rcx + leaq 912(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_enc_derand_jazz$18: + leaq 7056(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$16 +L_crypto_kem_enc_derand_jazz$17: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$16: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$17 + leaq 7568(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$14 +L_crypto_kem_enc_derand_jazz$15: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$14: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$15 + leaq 8080(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$12 +L_crypto_kem_enc_derand_jazz$13: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$12: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$13 + leaq 1424(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_enc_derand_jazz$10 +L_crypto_kem_enc_derand_jazz$11: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_enc_derand_jazz$10: + cmpq $256, %rcx + jb L_crypto_kem_enc_derand_jazz$11 + movq 16(%rsp), %rax + movq $0, %rdx + movq $0, %rsi + leaq 7056(%rsp), %rcx + call L_poly_csubq$1 +L_crypto_kem_enc_derand_jazz$9: + leaq 7568(%rsp), %rcx + call L_poly_csubq$1 +L_crypto_kem_enc_derand_jazz$8: + leaq 8080(%rsp), %rcx + call L_poly_csubq$1 +L_crypto_kem_enc_derand_jazz$7: + jmp L_crypto_kem_enc_derand_jazz$5 +L_crypto_kem_enc_derand_jazz$6: + movzwq 7056(%rsp,%rdx,2), %rcx + incq %rdx + shlq $10, %rcx + addq $1665, %rcx + imulq $1290167, %rcx, %rcx + shrq $32, %rcx + andq $1023, %rcx + movzwq 7056(%rsp,%rdx,2), %rdi + incq %rdx + shlq $10, %rdi + addq $1665, %rdi + imulq $1290167, %rdi, %rdi + shrq $32, %rdi + andq $1023, %rdi + movzwq 7056(%rsp,%rdx,2), %r8 + incq %rdx + shlq $10, %r8 + addq $1665, %r8 + imulq $1290167, %r8, %r8 + shrq $32, %r8 + andq $1023, %r8 + movzwq 7056(%rsp,%rdx,2), %r9 + incq %rdx + shlq $10, %r9 + addq $1665, %r9 + imulq $1290167, %r9, %r9 + shrq $32, %r9 + andq $1023, %r9 + movw %cx, %r10w + andw $255, %r10w + movb %r10b, (%rax,%rsi) + incq %rsi + shrw $8, %cx + movw %di, %r10w + shlw $2, %r10w + orw %cx, %r10w + movb %r10b, (%rax,%rsi) + incq %rsi + shrw $6, %di + movw %r8w, %cx + shlw $4, %cx + orw %di, %cx + movb %cl, (%rax,%rsi) + incq %rsi + shrw $4, %r8w + movw %r9w, %cx + shlw $6, %cx + orw %r8w, %cx + movb %cl, (%rax,%rsi) + incq %rsi + shrq $2, %r9 + movb %r9b, (%rax,%rsi) + incq %rsi +L_crypto_kem_enc_derand_jazz$5: + cmpq $768, %rdx + jb L_crypto_kem_enc_derand_jazz$6 + addq $960, %rax + leaq 1424(%rsp), %rcx + call L_poly_compress$1 +L_crypto_kem_enc_derand_jazz$4: + movq 16(%rsp), %rsi + movq $1088, %rax + leaq 104(%rsp), %rcx + leaq -232(%rsp), %rsp + call L_sha3_256$1 +L_crypto_kem_enc_derand_jazz$3: + leaq 232(%rsp), %rsp + movq 24(%rsp), %rax + movq $32, %rcx + leaq 72(%rsp), %rdx + leaq -216(%rsp), %rsp + call L_shake256_64$1 +L_crypto_kem_enc_derand_jazz$2: + leaq 216(%rsp), %rsp + ret +L_crypto_kem_keypair_derand_jazz$1: + movq %rax, 8(%rsp) + movq %rbx, 16(%rsp) + movq %rbp, 24(%rsp) + movq %rbx, 32(%rsp) + movq %rbp, 40(%rsp) + movq (%rax), %rcx + movq %rcx, 64(%rsp) + movq 8(%rax), %rcx + movq %rcx, 72(%rsp) + movq 16(%rax), %rcx + movq %rcx, 80(%rsp) + movq 24(%rax), %rax + movq %rax, 88(%rsp) + leaq 128(%rsp), %rcx + leaq 64(%rsp), %rax + leaq -208(%rsp), %rsp + call L_sha3_512_32$1 +L_crypto_kem_keypair_derand_jazz$189: + leaq 208(%rsp), %rsp + movq 128(%rsp), %rax + movq %rax, 96(%rsp) + movq 160(%rsp), %rax + movq %rax, 64(%rsp) + movq 136(%rsp), %rax + movq %rax, 104(%rsp) + movq 168(%rsp), %rax + movq %rax, 72(%rsp) + movq 144(%rsp), %rax + movq %rax, 112(%rsp) + movq 176(%rsp), %rax + movq %rax, 80(%rsp) + movq 152(%rsp), %rax + movq %rax, 120(%rsp) + movq 184(%rsp), %rax + movq %rax, 88(%rsp) + movq $0, %rax + movq %rax, 48(%rsp) + movb 96(%rsp), %al + movb %al, 10120(%rsp) + movb 97(%rsp), %al + movb %al, 10121(%rsp) + movb 98(%rsp), %al + movb %al, 10122(%rsp) + movb 99(%rsp), %al + movb %al, 10123(%rsp) + movb 100(%rsp), %al + movb %al, 10124(%rsp) + movb 101(%rsp), %al + movb %al, 10125(%rsp) + movb 102(%rsp), %al + movb %al, 10126(%rsp) + movb 103(%rsp), %al + movb %al, 10127(%rsp) + movb 104(%rsp), %al + movb %al, 10128(%rsp) + movb 105(%rsp), %al + movb %al, 10129(%rsp) + movb 106(%rsp), %al + movb %al, 10130(%rsp) + movb 107(%rsp), %al + movb %al, 10131(%rsp) + movb 108(%rsp), %al + movb %al, 10132(%rsp) + movb 109(%rsp), %al + movb %al, 10133(%rsp) + movb 110(%rsp), %al + movb %al, 10134(%rsp) + movb 111(%rsp), %al + movb %al, 10135(%rsp) + movb 112(%rsp), %al + movb %al, 10136(%rsp) + movb 113(%rsp), %al + movb %al, 10137(%rsp) + movb 114(%rsp), %al + movb %al, 10138(%rsp) + movb 115(%rsp), %al + movb %al, 10139(%rsp) + movb 116(%rsp), %al + movb %al, 10140(%rsp) + movb 117(%rsp), %al + movb %al, 10141(%rsp) + movb 118(%rsp), %al + movb %al, 10142(%rsp) + movb 119(%rsp), %al + movb %al, 10143(%rsp) + movb 120(%rsp), %al + movb %al, 10144(%rsp) + movb 121(%rsp), %al + movb %al, 10145(%rsp) + movb 122(%rsp), %al + movb %al, 10146(%rsp) + movb 123(%rsp), %al + movb %al, 10147(%rsp) + movb 124(%rsp), %al + movb %al, 10148(%rsp) + movb 125(%rsp), %al + movb %al, 10149(%rsp) + movb 126(%rsp), %al + movb %al, 10150(%rsp) + movb 127(%rsp), %al + movb %al, 10151(%rsp) + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$187 + movb $0, 10152(%rsp) + movb $0, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$188 +L_crypto_kem_keypair_derand_jazz$187: + movb $0, 10152(%rsp) + movb $0, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$188: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$186: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$184 +L_crypto_kem_keypair_derand_jazz$185: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$184: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$185 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$176 +L_crypto_kem_keypair_derand_jazz$177: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$183: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$178: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$181 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$181 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$182: +L_crypto_kem_keypair_derand_jazz$181: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$179 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$179 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$180: +L_crypto_kem_keypair_derand_jazz$179: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$178 +L_crypto_kem_keypair_derand_jazz$176: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$177 + movq $0, %rax + movq $0, %rcx + jmp L_crypto_kem_keypair_derand_jazz$174 +L_crypto_kem_keypair_derand_jazz$175: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$174: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$175 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$172 + movb $0, 10152(%rsp) + movb $1, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$173 +L_crypto_kem_keypair_derand_jazz$172: + movb $1, 10152(%rsp) + movb $0, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$173: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$171: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$169 +L_crypto_kem_keypair_derand_jazz$170: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$169: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$170 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$161 +L_crypto_kem_keypair_derand_jazz$162: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$168: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$163: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$166 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$166 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$167: +L_crypto_kem_keypair_derand_jazz$166: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$164 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$164 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$165: +L_crypto_kem_keypair_derand_jazz$164: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$163 +L_crypto_kem_keypair_derand_jazz$161: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$162 + movq $0, %rax + movq $256, %rcx + jmp L_crypto_kem_keypair_derand_jazz$159 +L_crypto_kem_keypair_derand_jazz$160: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$159: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$160 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$157 + movb $0, 10152(%rsp) + movb $2, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$158 +L_crypto_kem_keypair_derand_jazz$157: + movb $2, 10152(%rsp) + movb $0, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$158: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$156: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$154 +L_crypto_kem_keypair_derand_jazz$155: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$154: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$155 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$146 +L_crypto_kem_keypair_derand_jazz$147: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$153: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$148: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$151 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$151 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$152: +L_crypto_kem_keypair_derand_jazz$151: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$149 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$149 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$150: +L_crypto_kem_keypair_derand_jazz$149: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$148 +L_crypto_kem_keypair_derand_jazz$146: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$147 + movq $0, %rax + movq $512, %rcx + jmp L_crypto_kem_keypair_derand_jazz$144 +L_crypto_kem_keypair_derand_jazz$145: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$144: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$145 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$142 + movb $1, 10152(%rsp) + movb $0, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$143 +L_crypto_kem_keypair_derand_jazz$142: + movb $0, 10152(%rsp) + movb $1, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$143: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$141: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$139 +L_crypto_kem_keypair_derand_jazz$140: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$139: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$140 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$131 +L_crypto_kem_keypair_derand_jazz$132: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$138: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$133: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$136 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$136 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$137: +L_crypto_kem_keypair_derand_jazz$136: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$134 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$134 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$135: +L_crypto_kem_keypair_derand_jazz$134: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$133 +L_crypto_kem_keypair_derand_jazz$131: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$132 + movq $0, %rax + movq $768, %rcx + jmp L_crypto_kem_keypair_derand_jazz$129 +L_crypto_kem_keypair_derand_jazz$130: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$129: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$130 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$127 + movb $1, 10152(%rsp) + movb $1, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$128 +L_crypto_kem_keypair_derand_jazz$127: + movb $1, 10152(%rsp) + movb $1, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$128: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$126: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$124 +L_crypto_kem_keypair_derand_jazz$125: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$124: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$125 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$116 +L_crypto_kem_keypair_derand_jazz$117: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$123: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$118: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$121 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$121 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$122: +L_crypto_kem_keypair_derand_jazz$121: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$119 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$119 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$120: +L_crypto_kem_keypair_derand_jazz$119: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$118 +L_crypto_kem_keypair_derand_jazz$116: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$117 + movq $0, %rax + movq $1024, %rcx + jmp L_crypto_kem_keypair_derand_jazz$114 +L_crypto_kem_keypair_derand_jazz$115: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$114: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$115 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$112 + movb $1, 10152(%rsp) + movb $2, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$113 +L_crypto_kem_keypair_derand_jazz$112: + movb $2, 10152(%rsp) + movb $1, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$113: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$111: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$109 +L_crypto_kem_keypair_derand_jazz$110: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$109: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$110 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$101 +L_crypto_kem_keypair_derand_jazz$102: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$108: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$103: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$106 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$106 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$107: +L_crypto_kem_keypair_derand_jazz$106: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$104 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$104 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$105: +L_crypto_kem_keypair_derand_jazz$104: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$103 +L_crypto_kem_keypair_derand_jazz$101: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$102 + movq $0, %rax + movq $1280, %rcx + jmp L_crypto_kem_keypair_derand_jazz$99 +L_crypto_kem_keypair_derand_jazz$100: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$99: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$100 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$97 + movb $2, 10152(%rsp) + movb $0, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$98 +L_crypto_kem_keypair_derand_jazz$97: + movb $0, 10152(%rsp) + movb $2, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$98: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$96: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$94 +L_crypto_kem_keypair_derand_jazz$95: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$94: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$95 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$86 +L_crypto_kem_keypair_derand_jazz$87: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$93: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$88: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$91 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$91 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$92: +L_crypto_kem_keypair_derand_jazz$91: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$89 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$89 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$90: +L_crypto_kem_keypair_derand_jazz$89: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$88 +L_crypto_kem_keypair_derand_jazz$86: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$87 + movq $0, %rax + movq $1536, %rcx + jmp L_crypto_kem_keypair_derand_jazz$84 +L_crypto_kem_keypair_derand_jazz$85: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$84: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$85 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$82 + movb $2, 10152(%rsp) + movb $1, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$83 +L_crypto_kem_keypair_derand_jazz$82: + movb $1, 10152(%rsp) + movb $2, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$83: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$81: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$79 +L_crypto_kem_keypair_derand_jazz$80: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$79: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$80 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$71 +L_crypto_kem_keypair_derand_jazz$72: + movq %rax, 56(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$78: + leaq 8(%rsp), %rsp + movq 56(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$73: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$76 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$76 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$77: +L_crypto_kem_keypair_derand_jazz$76: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$74 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$74 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$75: +L_crypto_kem_keypair_derand_jazz$74: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$73 +L_crypto_kem_keypair_derand_jazz$71: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$72 + movq $0, %rax + movq $1792, %rcx + jmp L_crypto_kem_keypair_derand_jazz$69 +L_crypto_kem_keypair_derand_jazz$70: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$69: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$70 + movq 48(%rsp), %rax + cmpq $0, %rax + je L_crypto_kem_keypair_derand_jazz$67 + movb $2, 10152(%rsp) + movb $2, 10153(%rsp) + jmp L_crypto_kem_keypair_derand_jazz$68 +L_crypto_kem_keypair_derand_jazz$67: + movb $2, 10152(%rsp) + movb $2, 10153(%rsp) +L_crypto_kem_keypair_derand_jazz$68: + leaq 192(%rsp), %rcx + leaq 10120(%rsp), %rdx + call L_shake128_absorb34$1 +L_crypto_kem_keypair_derand_jazz$66: + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$64 +L_crypto_kem_keypair_derand_jazz$65: + movq %rax, 392(%rsp,%rax,8) + incq %rax +L_crypto_kem_keypair_derand_jazz$64: + cmpq $64, %rax + jb L_crypto_kem_keypair_derand_jazz$65 + movq $0, %rax + jmp L_crypto_kem_keypair_derand_jazz$56 +L_crypto_kem_keypair_derand_jazz$57: + movq %rax, 48(%rsp) + leaq 192(%rsp), %rcx + leaq 10154(%rsp), %rdx + leaq -8(%rsp), %rsp + call L_shake128_squeezeblock$1 +L_crypto_kem_keypair_derand_jazz$63: + leaq 8(%rsp), %rsp + movq 48(%rsp), %rax + movq $0, %rcx +L_crypto_kem_keypair_derand_jazz$58: + movzbw 10154(%rsp,%rcx), %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + movw %si, %di + shrw $4, %di + andw $15, %si + shlw $8, %si + orw %si, %dx + incq %rcx + movzbw 10154(%rsp,%rcx), %si + shlw $4, %si + orw %si, %di + incq %rcx + cmpw $3329, %dx + jnb L_crypto_kem_keypair_derand_jazz$61 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$61 + movw %dx, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$62: +L_crypto_kem_keypair_derand_jazz$61: + cmpw $3329, %di + jnb L_crypto_kem_keypair_derand_jazz$59 + cmpq $256, %rax + jnb L_crypto_kem_keypair_derand_jazz$59 + movw %di, 392(%rsp,%rax,2) + incq %rax +L_crypto_kem_keypair_derand_jazz$60: +L_crypto_kem_keypair_derand_jazz$59: + cmpq $166, %rcx + jb L_crypto_kem_keypair_derand_jazz$58 +L_crypto_kem_keypair_derand_jazz$56: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$57 + movq $0, %rax + movq $2048, %rcx + jmp L_crypto_kem_keypair_derand_jazz$54 +L_crypto_kem_keypair_derand_jazz$55: + movw 392(%rsp,%rax,2), %dx + movw %dx, 5512(%rsp,%rcx,2) + incq %rax + incq %rcx +L_crypto_kem_keypair_derand_jazz$54: + cmpq $256, %rax + jb L_crypto_kem_keypair_derand_jazz$55 + movb $0, %cl + leaq 904(%rsp), %rdx + leaq 64(%rsp), %rax + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_keypair_derand_jazz$53: + leaq 176(%rsp), %rsp + movb $1, %cl + leaq 1416(%rsp), %rdx + leaq 64(%rsp), %rax + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_keypair_derand_jazz$52: + leaq 176(%rsp), %rsp + movb $2, %cl + leaq 1928(%rsp), %rdx + leaq 64(%rsp), %rax + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_keypair_derand_jazz$51: + leaq 176(%rsp), %rsp + movb $3, %cl + leaq 2440(%rsp), %rdx + leaq 64(%rsp), %rax + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_keypair_derand_jazz$50: + leaq 176(%rsp), %rsp + movb $4, %cl + leaq 2952(%rsp), %rdx + leaq 64(%rsp), %rax + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_keypair_derand_jazz$49: + leaq 176(%rsp), %rsp + movb $5, %cl + leaq 3464(%rsp), %rdx + leaq 64(%rsp), %rax + leaq -176(%rsp), %rsp + call L_poly_getnoise$1 +L_crypto_kem_keypair_derand_jazz$48: + leaq 176(%rsp), %rsp + leaq 904(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_keypair_derand_jazz$47: + leaq 1416(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_keypair_derand_jazz$46: + leaq 1928(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_keypair_derand_jazz$45: + leaq 2440(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_keypair_derand_jazz$44: + leaq 2952(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_keypair_derand_jazz$43: + leaq 3464(%rsp), %rcx + call L_poly_ntt$1 +L_crypto_kem_keypair_derand_jazz$42: + leaq 3976(%rsp), %rdi + leaq 5512(%rsp), %rcx + leaq 904(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$41: + leaq 16(%rsp), %rsp + leaq 392(%rsp), %rdi + leaq 6024(%rsp), %rcx + leaq 1416(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$40: + leaq 16(%rsp), %rsp + leaq 3976(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$39: + leaq 392(%rsp), %rdi + leaq 6536(%rsp), %rcx + leaq 1928(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$38: + leaq 16(%rsp), %rsp + leaq 3976(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$37: + leaq 3976(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_keypair_derand_jazz$35 +L_crypto_kem_keypair_derand_jazz$36: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_keypair_derand_jazz$35: + cmpq $256, %rcx + jb L_crypto_kem_keypair_derand_jazz$36 + leaq 3976(%rsp), %rax + call L_poly_frommont$1 +L_crypto_kem_keypair_derand_jazz$34: + leaq 4488(%rsp), %rdi + leaq 7048(%rsp), %rcx + leaq 904(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$33: + leaq 16(%rsp), %rsp + leaq 392(%rsp), %rdi + leaq 7560(%rsp), %rcx + leaq 1416(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$32: + leaq 16(%rsp), %rsp + leaq 4488(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$31: + leaq 392(%rsp), %rdi + leaq 8072(%rsp), %rcx + leaq 1928(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$30: + leaq 16(%rsp), %rsp + leaq 4488(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$29: + leaq 4488(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_keypair_derand_jazz$27 +L_crypto_kem_keypair_derand_jazz$28: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_keypair_derand_jazz$27: + cmpq $256, %rcx + jb L_crypto_kem_keypair_derand_jazz$28 + leaq 4488(%rsp), %rax + call L_poly_frommont$1 +L_crypto_kem_keypair_derand_jazz$26: + leaq 5000(%rsp), %rdi + leaq 8584(%rsp), %rcx + leaq 904(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$25: + leaq 16(%rsp), %rsp + leaq 392(%rsp), %rdi + leaq 9096(%rsp), %rcx + leaq 1416(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$24: + leaq 16(%rsp), %rsp + leaq 5000(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$23: + leaq 392(%rsp), %rdi + leaq 9608(%rsp), %rcx + leaq 1928(%rsp), %rsi + leaq -16(%rsp), %rsp + call L_poly_basemul$1 +L_crypto_kem_keypair_derand_jazz$22: + leaq 16(%rsp), %rsp + leaq 5000(%rsp), %rcx + leaq 392(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$21: + leaq 5000(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_keypair_derand_jazz$19 +L_crypto_kem_keypair_derand_jazz$20: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_keypair_derand_jazz$19: + cmpq $256, %rcx + jb L_crypto_kem_keypair_derand_jazz$20 + leaq 5000(%rsp), %rax + call L_poly_frommont$1 +L_crypto_kem_keypair_derand_jazz$18: + leaq 3976(%rsp), %rcx + leaq 2440(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$17: + leaq 4488(%rsp), %rcx + leaq 2952(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$16: + leaq 5000(%rsp), %rcx + leaq 3464(%rsp), %rsi + call L_poly_add2$1 +L_crypto_kem_keypair_derand_jazz$15: + leaq 3976(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_keypair_derand_jazz$13 +L_crypto_kem_keypair_derand_jazz$14: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_keypair_derand_jazz$13: + cmpq $256, %rcx + jb L_crypto_kem_keypair_derand_jazz$14 + leaq 4488(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_keypair_derand_jazz$11 +L_crypto_kem_keypair_derand_jazz$12: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_keypair_derand_jazz$11: + cmpq $256, %rcx + jb L_crypto_kem_keypair_derand_jazz$12 + leaq 5000(%rsp), %rax + movq $0, %rcx + jmp L_crypto_kem_keypair_derand_jazz$9 +L_crypto_kem_keypair_derand_jazz$10: + movw (%rax,%rcx,2), %dx + movswl %dx, %esi + imull $20159, %esi, %esi + sarl $26, %esi + imull $3329, %esi, %esi + subw %si, %dx + movw %dx, (%rax,%rcx,2) + incq %rcx +L_crypto_kem_keypair_derand_jazz$9: + cmpq $256, %rcx + jb L_crypto_kem_keypair_derand_jazz$10 + movq 32(%rsp), %rax + movq 40(%rsp), %rcx + movq %rcx, %rdx + leaq 904(%rsp), %rcx + call L_poly_tobytes$1 +L_crypto_kem_keypair_derand_jazz$8: + addq $384, %rdx + leaq 1416(%rsp), %rcx + call L_poly_tobytes$1 +L_crypto_kem_keypair_derand_jazz$7: + addq $384, %rdx + leaq 1928(%rsp), %rcx + call L_poly_tobytes$1 +L_crypto_kem_keypair_derand_jazz$6: + movq %rax, %rdx + leaq 3976(%rsp), %rcx + call L_poly_tobytes$1 +L_crypto_kem_keypair_derand_jazz$5: + addq $384, %rdx + leaq 4488(%rsp), %rcx + call L_poly_tobytes$1 +L_crypto_kem_keypair_derand_jazz$4: + addq $384, %rdx + leaq 5000(%rsp), %rcx + call L_poly_tobytes$1 +L_crypto_kem_keypair_derand_jazz$3: + addq $1152, %rax + movq 96(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 104(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 112(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 120(%rsp), %rcx + movq %rcx, (%rax) + movq 24(%rsp), %rax + addq $1152, %rax + movq 16(%rsp), %rcx + movq (%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 8(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 16(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 24(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 32(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 40(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 48(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 56(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 64(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 72(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 80(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 88(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 96(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 104(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 112(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 120(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 128(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 136(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 144(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 152(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 160(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 168(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 176(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 184(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 192(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 200(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 208(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 216(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 224(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 232(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 240(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 248(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 256(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 264(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 272(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 280(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 288(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 296(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 304(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 312(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 320(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 328(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 336(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 344(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 352(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 360(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 368(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 376(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 384(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 392(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 400(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 408(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 416(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 424(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 432(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 440(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 448(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 456(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 464(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 472(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 480(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 488(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 496(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 504(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 512(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 520(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 528(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 536(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 544(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 552(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 560(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 568(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 576(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 584(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 592(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 600(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 608(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 616(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 624(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 632(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 640(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 648(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 656(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 664(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 672(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 680(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 688(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 696(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 704(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 712(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 720(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 728(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 736(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 744(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 752(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 760(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 768(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 776(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 784(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 792(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 800(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 808(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 816(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 824(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 832(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 840(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 848(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 856(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 864(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 872(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 880(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 888(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 896(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 904(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 912(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 920(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 928(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 936(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 944(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 952(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 960(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 968(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 976(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 984(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 992(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1000(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1008(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1016(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1024(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1032(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1040(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1048(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1056(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1064(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1072(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1080(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1088(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1096(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1104(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1112(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1120(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1128(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1136(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1144(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1152(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1160(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1168(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 1176(%rcx), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq %rax, 24(%rsp) + movq 16(%rsp), %rsi + movq $1184, %rax + leaq 96(%rsp), %rcx + leaq -232(%rsp), %rsp + call L_sha3_256$1 +L_crypto_kem_keypair_derand_jazz$2: + leaq 232(%rsp), %rsp + movq 24(%rsp), %rax + movq 96(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 104(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 112(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 120(%rsp), %rcx + movq %rcx, (%rax) + addq $8, %rax + movq 8(%rsp), %rcx + leaq 32(%rcx), %rcx + movq (%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 8(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 16(%rcx), %rdx + movq %rdx, (%rax) + addq $8, %rax + movq 24(%rcx), %rcx + movq %rcx, (%rax) + ret +L_i_poly_tomsg$1: + call L_poly_csubq$1 +L_i_poly_tomsg$2: + movb $0, %sil + movw (%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 2(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 4(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 6(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 8(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 10(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 12(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 14(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, (%rax) + movb $0, %sil + movw 16(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 18(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 20(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 22(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 24(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 26(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 28(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 30(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 1(%rax) + movb $0, %sil + movw 32(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 34(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 36(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 38(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 40(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 42(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 44(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 46(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 2(%rax) + movb $0, %sil + movw 48(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 50(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 52(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 54(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 56(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 58(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 60(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 62(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 3(%rax) + movb $0, %sil + movw 64(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 66(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 68(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 70(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 72(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 74(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 76(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 78(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 4(%rax) + movb $0, %sil + movw 80(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 82(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 84(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 86(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 88(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 90(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 92(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 94(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 5(%rax) + movb $0, %sil + movw 96(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 98(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 100(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 102(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 104(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 106(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 108(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 110(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 6(%rax) + movb $0, %sil + movw 112(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 114(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 116(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 118(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 120(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 122(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 124(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 126(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 7(%rax) + movb $0, %sil + movw 128(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 130(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 132(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 134(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 136(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 138(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 140(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 142(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 8(%rax) + movb $0, %sil + movw 144(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 146(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 148(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 150(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 152(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 154(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 156(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 158(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 9(%rax) + movb $0, %sil + movw 160(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 162(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 164(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 166(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 168(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 170(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 172(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 174(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 10(%rax) + movb $0, %sil + movw 176(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 178(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 180(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 182(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 184(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 186(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 188(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 190(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 11(%rax) + movb $0, %sil + movw 192(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 194(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 196(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 198(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 200(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 202(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 204(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 206(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 12(%rax) + movb $0, %sil + movw 208(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 210(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 212(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 214(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 216(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 218(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 220(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 222(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 13(%rax) + movb $0, %sil + movw 224(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 226(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 228(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 230(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 232(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 234(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 236(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 238(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 14(%rax) + movb $0, %sil + movw 240(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 242(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 244(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 246(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 248(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 250(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 252(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 254(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 15(%rax) + movb $0, %sil + movw 256(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 258(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 260(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 262(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 264(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 266(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 268(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 270(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 16(%rax) + movb $0, %sil + movw 272(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 274(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 276(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 278(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 280(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 282(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 284(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 286(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 17(%rax) + movb $0, %sil + movw 288(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 290(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 292(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 294(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 296(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 298(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 300(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 302(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 18(%rax) + movb $0, %sil + movw 304(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 306(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 308(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 310(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 312(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 314(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 316(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 318(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 19(%rax) + movb $0, %sil + movw 320(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 322(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 324(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 326(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 328(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 330(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 332(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 334(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 20(%rax) + movb $0, %sil + movw 336(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 338(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 340(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 342(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 344(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 346(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 348(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 350(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 21(%rax) + movb $0, %sil + movw 352(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 354(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 356(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 358(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 360(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 362(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 364(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 366(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 22(%rax) + movb $0, %sil + movw 368(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 370(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 372(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 374(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 376(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 378(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 380(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 382(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 23(%rax) + movb $0, %sil + movw 384(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 386(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 388(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 390(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 392(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 394(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 396(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 398(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 24(%rax) + movb $0, %sil + movw 400(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 402(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 404(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 406(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 408(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 410(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 412(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 414(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 25(%rax) + movb $0, %sil + movw 416(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 418(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 420(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 422(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 424(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 426(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 428(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 430(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 26(%rax) + movb $0, %sil + movw 432(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 434(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 436(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 438(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 440(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 442(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 444(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 446(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 27(%rax) + movb $0, %sil + movw 448(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 450(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 452(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 454(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 456(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 458(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 460(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 462(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 28(%rax) + movb $0, %sil + movw 464(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 466(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 468(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 470(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 472(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 474(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 476(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 478(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 29(%rax) + movb $0, %sil + movw 480(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 482(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 484(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 486(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 488(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 490(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 492(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 494(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $7, %edi + orb %dil, %sil + movb %sil, 30(%rax) + movb $0, %sil + movw 496(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $0, %edi + orb %dil, %sil + movw 498(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $1, %edi + orb %dil, %sil + movw 500(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $2, %edi + orb %dil, %sil + movw 502(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $3, %edi + orb %dil, %sil + movw 504(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $4, %edi + orb %dil, %sil + movw 506(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $5, %edi + orb %dil, %sil + movw 508(%rcx), %di + movzwl %di, %edi + shll $1, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $1, %edi + shll $6, %edi + orb %dil, %sil + movw 510(%rcx), %cx + movzwl %cx, %ecx + shll $1, %ecx + addl $1665, %ecx + imull $80635, %ecx, %ecx + shrl $28, %ecx + andl $1, %ecx + shll $7, %ecx + orb %cl, %sil + movb %sil, 31(%rax) + ret +L_poly_tobytes$1: + call L_poly_csubq$1 +L_poly_tobytes$4: + movq $0, %rsi + movq $0, %rdi + jmp L_poly_tobytes$2 +L_poly_tobytes$3: + movw (%rcx,%rsi,2), %r8w + incq %rsi + movw (%rcx,%rsi,2), %r9w + incq %rsi + movw %r8w, %r10w + andw $255, %r10w + movb %r10b, (%rdx,%rdi) + incq %rdi + shrw $8, %r8w + movw %r9w, %r10w + andw $15, %r10w + shlw $4, %r10w + orw %r8w, %r10w + movb %r10b, (%rdx,%rdi) + incq %rdi + shrw $4, %r9w + movb %r9b, (%rdx,%rdi) + incq %rdi +L_poly_tobytes$2: + cmpq $256, %rsi + jb L_poly_tobytes$3 + ret +L_poly_sub$1: + movq $0, %r8 + jmp L_poly_sub$2 +L_poly_sub$3: + movw (%rsi,%r8,2), %r9w + movw (%rdi,%r8,2), %r10w + subw %r10w, %r9w + movw %r9w, (%rcx,%r8,2) + incq %r8 +L_poly_sub$2: + cmpq $256, %r8 + jb L_poly_sub$3 + ret +L_poly_ntt$1: + leaq glob_data + 448(%rip), %rsi + movq $0, %rdi + movq $128, %r8 + jmp L_poly_ntt$4 +L_poly_ntt$5: + movq $0, %r11 + jmp L_poly_ntt$6 +L_poly_ntt$7: + incq %rdi + movw (%rsi,%rdi,2), %r9w + movq %r11, %r10 + leaq (%r11,%r8), %r11 + jmp L_poly_ntt$8 +L_poly_ntt$9: + leaq (%r10,%r8), %rbx + movw (%rcx,%rbx,2), %bp + movswl %bp, %ebp + movswl %r9w, %r12d + imull %r12d, %ebp + imull $62209, %ebp, %r12d + shll $16, %r12d + sarl $16, %r12d + imull $3329, %r12d, %r12d + subl %r12d, %ebp + sarl $16, %ebp + movw (%rcx,%r10,2), %r12w + movw %r12w, %r13w + subw %bp, %r13w + movw %r13w, (%rcx,%rbx,2) + addw %r12w, %bp + movw %bp, (%rcx,%r10,2) + incq %r10 +L_poly_ntt$8: + cmpq %r11, %r10 + jb L_poly_ntt$9 + leaq (%r10,%r8), %r11 +L_poly_ntt$6: + cmpq $256, %r11 + jb L_poly_ntt$7 + shrq $1, %r8 +L_poly_ntt$4: + cmpq $2, %r8 + jnb L_poly_ntt$5 + movq $0, %rsi + jmp L_poly_ntt$2 +L_poly_ntt$3: + movw (%rcx,%rsi,2), %di + movswl %di, %r8d + imull $20159, %r8d, %r8d + sarl $26, %r8d + imull $3329, %r8d, %r8d + subw %r8w, %di + movw %di, (%rcx,%rsi,2) + incq %rsi +L_poly_ntt$2: + cmpq $256, %rsi + jb L_poly_ntt$3 + ret +L_poly_invntt$1: + leaq glob_data + 192(%rip), %rsi + movq $0, %rdi + movq $2, %r8 + jmp L_poly_invntt$4 +L_poly_invntt$5: + movq $0, %r11 + jmp L_poly_invntt$6 +L_poly_invntt$7: + movw (%rsi,%rdi,2), %r9w + incq %rdi + movq %r11, %r10 + leaq (%r11,%r8), %r11 + jmp L_poly_invntt$8 +L_poly_invntt$9: + leaq (%r10,%r8), %rbx + movw (%rcx,%rbx,2), %bp + movw (%rcx,%r10,2), %r12w + movw %bp, %r13w + addw %r12w, %r13w + movswl %r13w, %r14d + imull $20159, %r14d, %r14d + sarl $26, %r14d + imull $3329, %r14d, %r14d + subw %r14w, %r13w + movw %r13w, (%rcx,%r10,2) + subw %bp, %r12w + movswl %r12w, %ebp + movswl %r9w, %r12d + imull %r12d, %ebp + imull $62209, %ebp, %r12d + shll $16, %r12d + sarl $16, %r12d + imull $3329, %r12d, %r12d + subl %r12d, %ebp + sarl $16, %ebp + movw %bp, (%rcx,%rbx,2) + incq %r10 +L_poly_invntt$8: + cmpq %r11, %r10 + jb L_poly_invntt$9 + leaq (%r10,%r8), %r11 +L_poly_invntt$6: + cmpq $256, %r11 + jb L_poly_invntt$7 + shlq $1, %r8 +L_poly_invntt$4: + cmpq $128, %r8 + jbe L_poly_invntt$5 + movw 254(%rsi), %si + movq $0, %rdi + jmp L_poly_invntt$2 +L_poly_invntt$3: + movw (%rcx,%rdi,2), %r8w + movswl %r8w, %r8d + movswl %si, %r9d + imull %r9d, %r8d + imull $62209, %r8d, %r9d + shll $16, %r9d + sarl $16, %r9d + imull $3329, %r9d, %r9d + subl %r9d, %r8d + sarl $16, %r8d + movw %r8w, (%rcx,%rdi,2) + incq %rdi +L_poly_invntt$2: + cmpq $256, %rdi + jb L_poly_invntt$3 + ret +L_poly_getnoise$1: + movq %rdx, 8(%rsp) + movb (%rax), %dl + movb %dl, 16(%rsp) + movb 1(%rax), %dl + movb %dl, 17(%rsp) + movb 2(%rax), %dl + movb %dl, 18(%rsp) + movb 3(%rax), %dl + movb %dl, 19(%rsp) + movb 4(%rax), %dl + movb %dl, 20(%rsp) + movb 5(%rax), %dl + movb %dl, 21(%rsp) + movb 6(%rax), %dl + movb %dl, 22(%rsp) + movb 7(%rax), %dl + movb %dl, 23(%rsp) + movb 8(%rax), %dl + movb %dl, 24(%rsp) + movb 9(%rax), %dl + movb %dl, 25(%rsp) + movb 10(%rax), %dl + movb %dl, 26(%rsp) + movb 11(%rax), %dl + movb %dl, 27(%rsp) + movb 12(%rax), %dl + movb %dl, 28(%rsp) + movb 13(%rax), %dl + movb %dl, 29(%rsp) + movb 14(%rax), %dl + movb %dl, 30(%rsp) + movb 15(%rax), %dl + movb %dl, 31(%rsp) + movb 16(%rax), %dl + movb %dl, 32(%rsp) + movb 17(%rax), %dl + movb %dl, 33(%rsp) + movb 18(%rax), %dl + movb %dl, 34(%rsp) + movb 19(%rax), %dl + movb %dl, 35(%rsp) + movb 20(%rax), %dl + movb %dl, 36(%rsp) + movb 21(%rax), %dl + movb %dl, 37(%rsp) + movb 22(%rax), %dl + movb %dl, 38(%rsp) + movb 23(%rax), %dl + movb %dl, 39(%rsp) + movb 24(%rax), %dl + movb %dl, 40(%rsp) + movb 25(%rax), %dl + movb %dl, 41(%rsp) + movb 26(%rax), %dl + movb %dl, 42(%rsp) + movb 27(%rax), %dl + movb %dl, 43(%rsp) + movb 28(%rax), %dl + movb %dl, 44(%rsp) + movb 29(%rax), %dl + movb %dl, 45(%rsp) + movb 30(%rax), %dl + movb %dl, 46(%rsp) + movb 31(%rax), %dl + movb %dl, 47(%rsp) + movb %cl, 48(%rsp) + leaq 49(%rsp), %rcx + leaq 16(%rsp), %rdx + leaq -208(%rsp), %rsp + call L_shake256_128_33$1 +L_poly_getnoise$4: + leaq 208(%rsp), %rsp + movq 8(%rsp), %rcx + movq $0, %rdx + movq $0, %rsi + jmp L_poly_getnoise$2 +L_poly_getnoise$3: + movb 49(%rsp,%rdx), %dil + movb %dil, %r8b + andb $85, %r8b + shrb $1, %dil + andb $85, %dil + addb %r8b, %dil + movb %dil, %r8b + andb $3, %r8b + movb %dil, %r9b + shrb $2, %r9b + andb $3, %r9b + subb %r9b, %r8b + movsbw %r8b, %r8w + movw %r8w, (%rcx,%rsi,2) + movb %dil, %r8b + shrb $4, %r8b + andb $3, %r8b + shrb $6, %dil + andb $3, %dil + subb %dil, %r8b + movsbw %r8b, %di + incq %rsi + movw %di, (%rcx,%rsi,2) + incq %rdx + incq %rsi +L_poly_getnoise$2: + cmpq $128, %rdx + jb L_poly_getnoise$3 + ret +L_i_poly_frommsg$1: + movb (%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, (%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 2(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 4(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 6(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 8(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 10(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 12(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 14(%rdx) + movb 1(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 16(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 18(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 20(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 22(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 24(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 26(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 28(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 30(%rdx) + movb 2(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 32(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 34(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 36(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 38(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 40(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 42(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 44(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 46(%rdx) + movb 3(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 48(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 50(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 52(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 54(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 56(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 58(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 60(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 62(%rdx) + movb 4(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 64(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 66(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 68(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 70(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 72(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 74(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 76(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 78(%rdx) + movb 5(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 80(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 82(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 84(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 86(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 88(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 90(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 92(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 94(%rdx) + movb 6(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 96(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 98(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 100(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 102(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 104(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 106(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 108(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 110(%rdx) + movb 7(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 112(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 114(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 116(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 118(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 120(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 122(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 124(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 126(%rdx) + movb 8(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 128(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 130(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 132(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 134(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 136(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 138(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 140(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 142(%rdx) + movb 9(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 144(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 146(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 148(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 150(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 152(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 154(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 156(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 158(%rdx) + movb 10(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 160(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 162(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 164(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 166(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 168(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 170(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 172(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 174(%rdx) + movb 11(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 176(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 178(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 180(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 182(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 184(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 186(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 188(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 190(%rdx) + movb 12(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 192(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 194(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 196(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 198(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 200(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 202(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 204(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 206(%rdx) + movb 13(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 208(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 210(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 212(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 214(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 216(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 218(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 220(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 222(%rdx) + movb 14(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 224(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 226(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 228(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 230(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 232(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 234(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 236(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 238(%rdx) + movb 15(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 240(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 242(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 244(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 246(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 248(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 250(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 252(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 254(%rdx) + movb 16(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 256(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 258(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 260(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 262(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 264(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 266(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 268(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 270(%rdx) + movb 17(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 272(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 274(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 276(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 278(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 280(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 282(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 284(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 286(%rdx) + movb 18(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 288(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 290(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 292(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 294(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 296(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 298(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 300(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 302(%rdx) + movb 19(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 304(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 306(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 308(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 310(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 312(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 314(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 316(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 318(%rdx) + movb 20(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 320(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 322(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 324(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 326(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 328(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 330(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 332(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 334(%rdx) + movb 21(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 336(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 338(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 340(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 342(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 344(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 346(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 348(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 350(%rdx) + movb 22(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 352(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 354(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 356(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 358(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 360(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 362(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 364(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 366(%rdx) + movb 23(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 368(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 370(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 372(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 374(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 376(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 378(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 380(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 382(%rdx) + movb 24(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 384(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 386(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 388(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 390(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 392(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 394(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 396(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 398(%rdx) + movb 25(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 400(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 402(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 404(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 406(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 408(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 410(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 412(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 414(%rdx) + movb 26(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 416(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 418(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 420(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 422(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 424(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 426(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 428(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 430(%rdx) + movb 27(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 432(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 434(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 436(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 438(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 440(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 442(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 444(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 446(%rdx) + movb 28(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 448(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 450(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 452(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 454(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 456(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 458(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 460(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 462(%rdx) + movb 29(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 464(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 466(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 468(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 470(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 472(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 474(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 476(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 478(%rdx) + movb 30(%rcx), %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 480(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 482(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 484(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 486(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 488(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 490(%rdx) + shrb $1, %sil + movzbw %sil, %di + andw $1, %di + imulw $1665, %di, %di + movw %di, 492(%rdx) + shrb $1, %sil + movzbw %sil, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 494(%rdx) + movb 31(%rcx), %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 496(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 498(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 500(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 502(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 504(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 506(%rdx) + shrb $1, %cl + movzbw %cl, %si + andw $1, %si + imulw $1665, %si, %si + movw %si, 508(%rdx) + shrb $1, %cl + movzbw %cl, %cx + andw $1, %cx + imulw $1665, %cx, %cx + movw %cx, 510(%rdx) + ret +L_poly_frommont$1: + movw $1353, %cx + movq $0, %rdx + jmp L_poly_frommont$2 +L_poly_frommont$3: + movw (%rax,%rdx,2), %si + movswl %si, %esi + movswl %cx, %edi + imull %edi, %esi + imull $62209, %esi, %edi + shll $16, %edi + sarl $16, %edi + imull $3329, %edi, %edi + subl %edi, %esi + sarl $16, %esi + movw %si, (%rax,%rdx,2) + incq %rdx +L_poly_frommont$2: + cmpq $256, %rdx + jb L_poly_frommont$3 + ret +L_poly_frombytes$1: + movb (%rsi), %r8b + movb 1(%rsi), %r9b + movb 2(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, (%rdi) + movw %r10w, 2(%rdi) + movb 3(%rsi), %r8b + movb 4(%rsi), %r9b + movb 5(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 4(%rdi) + movw %r10w, 6(%rdi) + movb 6(%rsi), %r8b + movb 7(%rsi), %r9b + movb 8(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 8(%rdi) + movw %r10w, 10(%rdi) + movb 9(%rsi), %r8b + movb 10(%rsi), %r9b + movb 11(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 12(%rdi) + movw %r10w, 14(%rdi) + movb 12(%rsi), %r8b + movb 13(%rsi), %r9b + movb 14(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 16(%rdi) + movw %r10w, 18(%rdi) + movb 15(%rsi), %r8b + movb 16(%rsi), %r9b + movb 17(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 20(%rdi) + movw %r10w, 22(%rdi) + movb 18(%rsi), %r8b + movb 19(%rsi), %r9b + movb 20(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 24(%rdi) + movw %r10w, 26(%rdi) + movb 21(%rsi), %r8b + movb 22(%rsi), %r9b + movb 23(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 28(%rdi) + movw %r10w, 30(%rdi) + movb 24(%rsi), %r8b + movb 25(%rsi), %r9b + movb 26(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 32(%rdi) + movw %r10w, 34(%rdi) + movb 27(%rsi), %r8b + movb 28(%rsi), %r9b + movb 29(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 36(%rdi) + movw %r10w, 38(%rdi) + movb 30(%rsi), %r8b + movb 31(%rsi), %r9b + movb 32(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 40(%rdi) + movw %r10w, 42(%rdi) + movb 33(%rsi), %r8b + movb 34(%rsi), %r9b + movb 35(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 44(%rdi) + movw %r10w, 46(%rdi) + movb 36(%rsi), %r8b + movb 37(%rsi), %r9b + movb 38(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 48(%rdi) + movw %r10w, 50(%rdi) + movb 39(%rsi), %r8b + movb 40(%rsi), %r9b + movb 41(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 52(%rdi) + movw %r10w, 54(%rdi) + movb 42(%rsi), %r8b + movb 43(%rsi), %r9b + movb 44(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 56(%rdi) + movw %r10w, 58(%rdi) + movb 45(%rsi), %r8b + movb 46(%rsi), %r9b + movb 47(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 60(%rdi) + movw %r10w, 62(%rdi) + movb 48(%rsi), %r8b + movb 49(%rsi), %r9b + movb 50(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 64(%rdi) + movw %r10w, 66(%rdi) + movb 51(%rsi), %r8b + movb 52(%rsi), %r9b + movb 53(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 68(%rdi) + movw %r10w, 70(%rdi) + movb 54(%rsi), %r8b + movb 55(%rsi), %r9b + movb 56(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 72(%rdi) + movw %r10w, 74(%rdi) + movb 57(%rsi), %r8b + movb 58(%rsi), %r9b + movb 59(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 76(%rdi) + movw %r10w, 78(%rdi) + movb 60(%rsi), %r8b + movb 61(%rsi), %r9b + movb 62(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 80(%rdi) + movw %r10w, 82(%rdi) + movb 63(%rsi), %r8b + movb 64(%rsi), %r9b + movb 65(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 84(%rdi) + movw %r10w, 86(%rdi) + movb 66(%rsi), %r8b + movb 67(%rsi), %r9b + movb 68(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 88(%rdi) + movw %r10w, 90(%rdi) + movb 69(%rsi), %r8b + movb 70(%rsi), %r9b + movb 71(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 92(%rdi) + movw %r10w, 94(%rdi) + movb 72(%rsi), %r8b + movb 73(%rsi), %r9b + movb 74(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 96(%rdi) + movw %r10w, 98(%rdi) + movb 75(%rsi), %r8b + movb 76(%rsi), %r9b + movb 77(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 100(%rdi) + movw %r10w, 102(%rdi) + movb 78(%rsi), %r8b + movb 79(%rsi), %r9b + movb 80(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 104(%rdi) + movw %r10w, 106(%rdi) + movb 81(%rsi), %r8b + movb 82(%rsi), %r9b + movb 83(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 108(%rdi) + movw %r10w, 110(%rdi) + movb 84(%rsi), %r8b + movb 85(%rsi), %r9b + movb 86(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 112(%rdi) + movw %r10w, 114(%rdi) + movb 87(%rsi), %r8b + movb 88(%rsi), %r9b + movb 89(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 116(%rdi) + movw %r10w, 118(%rdi) + movb 90(%rsi), %r8b + movb 91(%rsi), %r9b + movb 92(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 120(%rdi) + movw %r10w, 122(%rdi) + movb 93(%rsi), %r8b + movb 94(%rsi), %r9b + movb 95(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 124(%rdi) + movw %r10w, 126(%rdi) + movb 96(%rsi), %r8b + movb 97(%rsi), %r9b + movb 98(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 128(%rdi) + movw %r10w, 130(%rdi) + movb 99(%rsi), %r8b + movb 100(%rsi), %r9b + movb 101(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 132(%rdi) + movw %r10w, 134(%rdi) + movb 102(%rsi), %r8b + movb 103(%rsi), %r9b + movb 104(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 136(%rdi) + movw %r10w, 138(%rdi) + movb 105(%rsi), %r8b + movb 106(%rsi), %r9b + movb 107(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 140(%rdi) + movw %r10w, 142(%rdi) + movb 108(%rsi), %r8b + movb 109(%rsi), %r9b + movb 110(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 144(%rdi) + movw %r10w, 146(%rdi) + movb 111(%rsi), %r8b + movb 112(%rsi), %r9b + movb 113(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 148(%rdi) + movw %r10w, 150(%rdi) + movb 114(%rsi), %r8b + movb 115(%rsi), %r9b + movb 116(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 152(%rdi) + movw %r10w, 154(%rdi) + movb 117(%rsi), %r8b + movb 118(%rsi), %r9b + movb 119(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 156(%rdi) + movw %r10w, 158(%rdi) + movb 120(%rsi), %r8b + movb 121(%rsi), %r9b + movb 122(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 160(%rdi) + movw %r10w, 162(%rdi) + movb 123(%rsi), %r8b + movb 124(%rsi), %r9b + movb 125(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 164(%rdi) + movw %r10w, 166(%rdi) + movb 126(%rsi), %r8b + movb 127(%rsi), %r9b + movb 128(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 168(%rdi) + movw %r10w, 170(%rdi) + movb 129(%rsi), %r8b + movb 130(%rsi), %r9b + movb 131(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 172(%rdi) + movw %r10w, 174(%rdi) + movb 132(%rsi), %r8b + movb 133(%rsi), %r9b + movb 134(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 176(%rdi) + movw %r10w, 178(%rdi) + movb 135(%rsi), %r8b + movb 136(%rsi), %r9b + movb 137(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 180(%rdi) + movw %r10w, 182(%rdi) + movb 138(%rsi), %r8b + movb 139(%rsi), %r9b + movb 140(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 184(%rdi) + movw %r10w, 186(%rdi) + movb 141(%rsi), %r8b + movb 142(%rsi), %r9b + movb 143(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 188(%rdi) + movw %r10w, 190(%rdi) + movb 144(%rsi), %r8b + movb 145(%rsi), %r9b + movb 146(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 192(%rdi) + movw %r10w, 194(%rdi) + movb 147(%rsi), %r8b + movb 148(%rsi), %r9b + movb 149(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 196(%rdi) + movw %r10w, 198(%rdi) + movb 150(%rsi), %r8b + movb 151(%rsi), %r9b + movb 152(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 200(%rdi) + movw %r10w, 202(%rdi) + movb 153(%rsi), %r8b + movb 154(%rsi), %r9b + movb 155(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 204(%rdi) + movw %r10w, 206(%rdi) + movb 156(%rsi), %r8b + movb 157(%rsi), %r9b + movb 158(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 208(%rdi) + movw %r10w, 210(%rdi) + movb 159(%rsi), %r8b + movb 160(%rsi), %r9b + movb 161(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 212(%rdi) + movw %r10w, 214(%rdi) + movb 162(%rsi), %r8b + movb 163(%rsi), %r9b + movb 164(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 216(%rdi) + movw %r10w, 218(%rdi) + movb 165(%rsi), %r8b + movb 166(%rsi), %r9b + movb 167(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 220(%rdi) + movw %r10w, 222(%rdi) + movb 168(%rsi), %r8b + movb 169(%rsi), %r9b + movb 170(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 224(%rdi) + movw %r10w, 226(%rdi) + movb 171(%rsi), %r8b + movb 172(%rsi), %r9b + movb 173(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 228(%rdi) + movw %r10w, 230(%rdi) + movb 174(%rsi), %r8b + movb 175(%rsi), %r9b + movb 176(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 232(%rdi) + movw %r10w, 234(%rdi) + movb 177(%rsi), %r8b + movb 178(%rsi), %r9b + movb 179(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 236(%rdi) + movw %r10w, 238(%rdi) + movb 180(%rsi), %r8b + movb 181(%rsi), %r9b + movb 182(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 240(%rdi) + movw %r10w, 242(%rdi) + movb 183(%rsi), %r8b + movb 184(%rsi), %r9b + movb 185(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 244(%rdi) + movw %r10w, 246(%rdi) + movb 186(%rsi), %r8b + movb 187(%rsi), %r9b + movb 188(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 248(%rdi) + movw %r10w, 250(%rdi) + movb 189(%rsi), %r8b + movb 190(%rsi), %r9b + movb 191(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 252(%rdi) + movw %r10w, 254(%rdi) + movb 192(%rsi), %r8b + movb 193(%rsi), %r9b + movb 194(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 256(%rdi) + movw %r10w, 258(%rdi) + movb 195(%rsi), %r8b + movb 196(%rsi), %r9b + movb 197(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 260(%rdi) + movw %r10w, 262(%rdi) + movb 198(%rsi), %r8b + movb 199(%rsi), %r9b + movb 200(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 264(%rdi) + movw %r10w, 266(%rdi) + movb 201(%rsi), %r8b + movb 202(%rsi), %r9b + movb 203(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 268(%rdi) + movw %r10w, 270(%rdi) + movb 204(%rsi), %r8b + movb 205(%rsi), %r9b + movb 206(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 272(%rdi) + movw %r10w, 274(%rdi) + movb 207(%rsi), %r8b + movb 208(%rsi), %r9b + movb 209(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 276(%rdi) + movw %r10w, 278(%rdi) + movb 210(%rsi), %r8b + movb 211(%rsi), %r9b + movb 212(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 280(%rdi) + movw %r10w, 282(%rdi) + movb 213(%rsi), %r8b + movb 214(%rsi), %r9b + movb 215(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 284(%rdi) + movw %r10w, 286(%rdi) + movb 216(%rsi), %r8b + movb 217(%rsi), %r9b + movb 218(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 288(%rdi) + movw %r10w, 290(%rdi) + movb 219(%rsi), %r8b + movb 220(%rsi), %r9b + movb 221(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 292(%rdi) + movw %r10w, 294(%rdi) + movb 222(%rsi), %r8b + movb 223(%rsi), %r9b + movb 224(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 296(%rdi) + movw %r10w, 298(%rdi) + movb 225(%rsi), %r8b + movb 226(%rsi), %r9b + movb 227(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 300(%rdi) + movw %r10w, 302(%rdi) + movb 228(%rsi), %r8b + movb 229(%rsi), %r9b + movb 230(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 304(%rdi) + movw %r10w, 306(%rdi) + movb 231(%rsi), %r8b + movb 232(%rsi), %r9b + movb 233(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 308(%rdi) + movw %r10w, 310(%rdi) + movb 234(%rsi), %r8b + movb 235(%rsi), %r9b + movb 236(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 312(%rdi) + movw %r10w, 314(%rdi) + movb 237(%rsi), %r8b + movb 238(%rsi), %r9b + movb 239(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 316(%rdi) + movw %r10w, 318(%rdi) + movb 240(%rsi), %r8b + movb 241(%rsi), %r9b + movb 242(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 320(%rdi) + movw %r10w, 322(%rdi) + movb 243(%rsi), %r8b + movb 244(%rsi), %r9b + movb 245(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 324(%rdi) + movw %r10w, 326(%rdi) + movb 246(%rsi), %r8b + movb 247(%rsi), %r9b + movb 248(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 328(%rdi) + movw %r10w, 330(%rdi) + movb 249(%rsi), %r8b + movb 250(%rsi), %r9b + movb 251(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 332(%rdi) + movw %r10w, 334(%rdi) + movb 252(%rsi), %r8b + movb 253(%rsi), %r9b + movb 254(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 336(%rdi) + movw %r10w, 338(%rdi) + movb 255(%rsi), %r8b + movb 256(%rsi), %r9b + movb 257(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 340(%rdi) + movw %r10w, 342(%rdi) + movb 258(%rsi), %r8b + movb 259(%rsi), %r9b + movb 260(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 344(%rdi) + movw %r10w, 346(%rdi) + movb 261(%rsi), %r8b + movb 262(%rsi), %r9b + movb 263(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 348(%rdi) + movw %r10w, 350(%rdi) + movb 264(%rsi), %r8b + movb 265(%rsi), %r9b + movb 266(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 352(%rdi) + movw %r10w, 354(%rdi) + movb 267(%rsi), %r8b + movb 268(%rsi), %r9b + movb 269(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 356(%rdi) + movw %r10w, 358(%rdi) + movb 270(%rsi), %r8b + movb 271(%rsi), %r9b + movb 272(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 360(%rdi) + movw %r10w, 362(%rdi) + movb 273(%rsi), %r8b + movb 274(%rsi), %r9b + movb 275(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 364(%rdi) + movw %r10w, 366(%rdi) + movb 276(%rsi), %r8b + movb 277(%rsi), %r9b + movb 278(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 368(%rdi) + movw %r10w, 370(%rdi) + movb 279(%rsi), %r8b + movb 280(%rsi), %r9b + movb 281(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 372(%rdi) + movw %r10w, 374(%rdi) + movb 282(%rsi), %r8b + movb 283(%rsi), %r9b + movb 284(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 376(%rdi) + movw %r10w, 378(%rdi) + movb 285(%rsi), %r8b + movb 286(%rsi), %r9b + movb 287(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 380(%rdi) + movw %r10w, 382(%rdi) + movb 288(%rsi), %r8b + movb 289(%rsi), %r9b + movb 290(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 384(%rdi) + movw %r10w, 386(%rdi) + movb 291(%rsi), %r8b + movb 292(%rsi), %r9b + movb 293(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 388(%rdi) + movw %r10w, 390(%rdi) + movb 294(%rsi), %r8b + movb 295(%rsi), %r9b + movb 296(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 392(%rdi) + movw %r10w, 394(%rdi) + movb 297(%rsi), %r8b + movb 298(%rsi), %r9b + movb 299(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 396(%rdi) + movw %r10w, 398(%rdi) + movb 300(%rsi), %r8b + movb 301(%rsi), %r9b + movb 302(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 400(%rdi) + movw %r10w, 402(%rdi) + movb 303(%rsi), %r8b + movb 304(%rsi), %r9b + movb 305(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 404(%rdi) + movw %r10w, 406(%rdi) + movb 306(%rsi), %r8b + movb 307(%rsi), %r9b + movb 308(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 408(%rdi) + movw %r10w, 410(%rdi) + movb 309(%rsi), %r8b + movb 310(%rsi), %r9b + movb 311(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 412(%rdi) + movw %r10w, 414(%rdi) + movb 312(%rsi), %r8b + movb 313(%rsi), %r9b + movb 314(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 416(%rdi) + movw %r10w, 418(%rdi) + movb 315(%rsi), %r8b + movb 316(%rsi), %r9b + movb 317(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 420(%rdi) + movw %r10w, 422(%rdi) + movb 318(%rsi), %r8b + movb 319(%rsi), %r9b + movb 320(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 424(%rdi) + movw %r10w, 426(%rdi) + movb 321(%rsi), %r8b + movb 322(%rsi), %r9b + movb 323(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 428(%rdi) + movw %r10w, 430(%rdi) + movb 324(%rsi), %r8b + movb 325(%rsi), %r9b + movb 326(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 432(%rdi) + movw %r10w, 434(%rdi) + movb 327(%rsi), %r8b + movb 328(%rsi), %r9b + movb 329(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 436(%rdi) + movw %r10w, 438(%rdi) + movb 330(%rsi), %r8b + movb 331(%rsi), %r9b + movb 332(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 440(%rdi) + movw %r10w, 442(%rdi) + movb 333(%rsi), %r8b + movb 334(%rsi), %r9b + movb 335(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 444(%rdi) + movw %r10w, 446(%rdi) + movb 336(%rsi), %r8b + movb 337(%rsi), %r9b + movb 338(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 448(%rdi) + movw %r10w, 450(%rdi) + movb 339(%rsi), %r8b + movb 340(%rsi), %r9b + movb 341(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 452(%rdi) + movw %r10w, 454(%rdi) + movb 342(%rsi), %r8b + movb 343(%rsi), %r9b + movb 344(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 456(%rdi) + movw %r10w, 458(%rdi) + movb 345(%rsi), %r8b + movb 346(%rsi), %r9b + movb 347(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 460(%rdi) + movw %r10w, 462(%rdi) + movb 348(%rsi), %r8b + movb 349(%rsi), %r9b + movb 350(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 464(%rdi) + movw %r10w, 466(%rdi) + movb 351(%rsi), %r8b + movb 352(%rsi), %r9b + movb 353(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 468(%rdi) + movw %r10w, 470(%rdi) + movb 354(%rsi), %r8b + movb 355(%rsi), %r9b + movb 356(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 472(%rdi) + movw %r10w, 474(%rdi) + movb 357(%rsi), %r8b + movb 358(%rsi), %r9b + movb 359(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 476(%rdi) + movw %r10w, 478(%rdi) + movb 360(%rsi), %r8b + movb 361(%rsi), %r9b + movb 362(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 480(%rdi) + movw %r10w, 482(%rdi) + movb 363(%rsi), %r8b + movb 364(%rsi), %r9b + movb 365(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 484(%rdi) + movw %r10w, 486(%rdi) + movb 366(%rsi), %r8b + movb 367(%rsi), %r9b + movb 368(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 488(%rdi) + movw %r10w, 490(%rdi) + movb 369(%rsi), %r8b + movb 370(%rsi), %r9b + movb 371(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 492(%rdi) + movw %r10w, 494(%rdi) + movb 372(%rsi), %r8b + movb 373(%rsi), %r9b + movb 374(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 496(%rdi) + movw %r10w, 498(%rdi) + movb 375(%rsi), %r8b + movb 376(%rsi), %r9b + movb 377(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 500(%rdi) + movw %r10w, 502(%rdi) + movb 378(%rsi), %r8b + movb 379(%rsi), %r9b + movb 380(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 504(%rdi) + movw %r10w, 506(%rdi) + movb 381(%rsi), %r8b + movb 382(%rsi), %r9b + movb 383(%rsi), %r10b + movzbw %r8b, %r8w + movzbw %r9b, %r11w + andw $15, %r11w + shlw $8, %r11w + orw %r11w, %r8w + movzbw %r10b, %r10w + shlw $4, %r10w + movzbw %r9b, %r9w + shrw $4, %r9w + orw %r9w, %r10w + movw %r8w, 508(%rdi) + movw %r10w, 510(%rdi) + ret +L_poly_decompress$1: + movq $0, %rdi + movq $0, %r8 + jmp L_poly_decompress$2 +L_poly_decompress$3: + movb (%rsi,%rdi), %r9b + movzbw %r9b, %r10w + movzbw %r9b, %r9w + andw $15, %r10w + shrw $4, %r9w + imulw $3329, %r10w, %r10w + imulw $3329, %r9w, %r9w + addw $8, %r10w + addw $8, %r9w + shrw $4, %r10w + shrw $4, %r9w + movw %r10w, (%rcx,%r8,2) + incq %r8 + movw %r9w, (%rcx,%r8,2) + incq %r8 + incq %rdi +L_poly_decompress$2: + cmpq $128, %rdi + jb L_poly_decompress$3 + ret +L_i_poly_compress$1: + call L_poly_csubq$1 +L_i_poly_compress$4: + movq $0, %rdx + movq $0, %rsi + jmp L_i_poly_compress$2 +L_i_poly_compress$3: + movw (%rcx,%rsi,2), %di + movzwl %di, %edi + shll $4, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $15, %edi + incq %rsi + movw (%rcx,%rsi,2), %r8w + movzwl %r8w, %r8d + shll $4, %r8d + addl $1665, %r8d + imull $80635, %r8d, %r8d + shrl $28, %r8d + andl $15, %r8d + shll $4, %r8d + orl %r8d, %edi + movb %dil, (%rax,%rdx) + incq %rdx + incq %rsi +L_i_poly_compress$2: + cmpq $128, %rdx + jb L_i_poly_compress$3 + ret +L_poly_compress$1: + call L_poly_csubq$1 +L_poly_compress$4: + movq $0, %rdx + movq $0, %rsi + jmp L_poly_compress$2 +L_poly_compress$3: + movw (%rcx,%rsi,2), %di + movzwl %di, %edi + shll $4, %edi + addl $1665, %edi + imull $80635, %edi, %edi + shrl $28, %edi + andl $15, %edi + incq %rsi + movw (%rcx,%rsi,2), %r8w + movzwl %r8w, %r8d + shll $4, %r8d + addl $1665, %r8d + imull $80635, %r8d, %r8d + shrl $28, %r8d + andl $15, %r8d + shll $4, %r8d + orl %r8d, %edi + movb %dil, (%rax,%rdx) + incq %rdx + incq %rsi +L_poly_compress$2: + cmpq $128, %rdx + jb L_poly_compress$3 + ret +L_poly_basemul$1: + movq %rdi, 8(%rsp) + movq $64, %rdi + movq $0, %r8 + jmp L_poly_basemul$2 +L_poly_basemul$3: + leaq glob_data + 448(%rip), %r9 + movw (%r9,%rdi,2), %r9w + incq %rdi + movw (%rcx,%r8,2), %r10w + movw (%rsi,%r8,2), %r11w + incq %r8 + movw (%rcx,%r8,2), %bx + movw (%rsi,%r8,2), %bp + addq $-1, %r8 + movswl %bx, %r12d + movswl %bp, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + movswl %r12w, %r12d + movswl %r9w, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + movswl %r10w, %r13d + movswl %r11w, %r14d + imull %r14d, %r13d + imull $62209, %r13d, %r14d + shll $16, %r14d + sarl $16, %r14d + imull $3329, %r14d, %r14d + subl %r14d, %r13d + sarl $16, %r13d + addw %r13w, %r12w + movswl %r10w, %r10d + movswl %bp, %ebp + imull %ebp, %r10d + imull $62209, %r10d, %ebp + shll $16, %ebp + sarl $16, %ebp + imull $3329, %ebp, %ebp + subl %ebp, %r10d + sarl $16, %r10d + movswl %bx, %ebx + movswl %r11w, %r11d + imull %r11d, %ebx + imull $62209, %ebx, %r11d + shll $16, %r11d + sarl $16, %r11d + imull $3329, %r11d, %r11d + subl %r11d, %ebx + sarl $16, %ebx + addw %bx, %r10w + movq 8(%rsp), %r11 + movw %r12w, (%r11,%r8,2) + incq %r8 + movw %r10w, (%r11,%r8,2) + movq %r11, 16(%rsp) + negw %r9w + incq %r8 + movw (%rcx,%r8,2), %r10w + movw (%rsi,%r8,2), %r11w + incq %r8 + movw (%rcx,%r8,2), %bx + movw (%rsi,%r8,2), %bp + addq $-1, %r8 + movswl %bx, %r12d + movswl %bp, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + movswl %r12w, %r12d + movswl %r9w, %r9d + imull %r9d, %r12d + imull $62209, %r12d, %r9d + shll $16, %r9d + sarl $16, %r9d + imull $3329, %r9d, %r9d + subl %r9d, %r12d + sarl $16, %r12d + movw %r12w, %r9w + movswl %r10w, %r12d + movswl %r11w, %r13d + imull %r13d, %r12d + imull $62209, %r12d, %r13d + shll $16, %r13d + sarl $16, %r13d + imull $3329, %r13d, %r13d + subl %r13d, %r12d + sarl $16, %r12d + addw %r12w, %r9w + movswl %r10w, %r10d + movswl %bp, %ebp + imull %ebp, %r10d + imull $62209, %r10d, %ebp + shll $16, %ebp + sarl $16, %ebp + imull $3329, %ebp, %ebp + subl %ebp, %r10d + sarl $16, %r10d + movswl %bx, %ebx + movswl %r11w, %r11d + imull %r11d, %ebx + imull $62209, %ebx, %r11d + shll $16, %r11d + sarl $16, %r11d + imull $3329, %r11d, %r11d + subl %r11d, %ebx + sarl $16, %ebx + addw %bx, %r10w + movq 16(%rsp), %r11 + movw %r9w, (%r11,%r8,2) + incq %r8 + movw %r10w, (%r11,%r8,2) + incq %r8 +L_poly_basemul$2: + cmpq $256, %r8 + jb L_poly_basemul$3 + ret +L_poly_csubq$1: + movq $0, %r8 + jmp L_poly_csubq$2 +L_poly_csubq$3: + movw (%rcx,%r8,2), %r9w + addw $-3329, %r9w + movw %r9w, %r10w + sarw $15, %r10w + andw $3329, %r10w + addw %r10w, %r9w + movw %r9w, (%rcx,%r8,2) + incq %r8 +L_poly_csubq$2: + cmpq $256, %r8 + jb L_poly_csubq$3 + ret +L_poly_add2$1: + movq $0, %rdi + jmp L_poly_add2$2 +L_poly_add2$3: + movw (%rcx,%rdi,2), %r8w + movw (%rsi,%rdi,2), %r9w + addw %r9w, %r8w + movw %r8w, (%rcx,%rdi,2) + incq %rdi +L_poly_add2$2: + cmpq $256, %rdi + jb L_poly_add2$3 + ret +L_shake256_64$1: + movq %rax, 8(%rsp) + movq %rcx, 16(%rsp) + leaq 24(%rsp), %rcx + xorq %rax, %rax + movq %rax, (%rcx) + movq %rax, 8(%rcx) + movq %rax, 16(%rcx) + movq %rax, 24(%rcx) + movq %rax, 32(%rcx) + movq %rax, 40(%rcx) + movq %rax, 48(%rcx) + movq %rax, 56(%rcx) + movq %rax, 64(%rcx) + movq %rax, 72(%rcx) + movq %rax, 80(%rcx) + movq %rax, 88(%rcx) + movq %rax, 96(%rcx) + movq %rax, 104(%rcx) + movq %rax, 112(%rcx) + movq %rax, 120(%rcx) + movq %rax, 128(%rcx) + movq %rax, 136(%rcx) + movq %rax, 144(%rcx) + movq %rax, 152(%rcx) + movq %rax, 160(%rcx) + movq %rax, 168(%rcx) + movq %rax, 176(%rcx) + movq %rax, 184(%rcx) + movq %rax, 192(%rcx) + movq (%rdx), %rax + xorq %rax, (%rcx) + movq 8(%rdx), %rax + xorq %rax, 8(%rcx) + movq 16(%rdx), %rax + xorq %rax, 16(%rcx) + movq 24(%rdx), %rax + xorq %rax, 24(%rcx) + movq 32(%rdx), %rax + xorq %rax, 32(%rcx) + movq 40(%rdx), %rax + xorq %rax, 40(%rcx) + movq 48(%rdx), %rax + xorq %rax, 48(%rcx) + movq 56(%rdx), %rax + xorq %rax, 56(%rcx) + xorb $31, 64(%rcx) + xorb $-128, 135(%rcx) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_64$9: + leaq 216(%rsp), %rsp + movq 16(%rsp), %rax + movq 8(%rsp), %rdx + jmp L_shake256_64$6 +L_shake256_64$7: + movq (%rcx), %rsi + movq %rsi, (%rdx) + movq 8(%rcx), %rsi + movq %rsi, 8(%rdx) + movq 16(%rcx), %rsi + movq %rsi, 16(%rdx) + movq 24(%rcx), %rsi + movq %rsi, 24(%rdx) + movq 32(%rcx), %rsi + movq %rsi, 32(%rdx) + movq 40(%rcx), %rsi + movq %rsi, 40(%rdx) + movq 48(%rcx), %rsi + movq %rsi, 48(%rdx) + movq 56(%rcx), %rsi + movq %rsi, 56(%rdx) + movq 64(%rcx), %rsi + movq %rsi, 64(%rdx) + movq 72(%rcx), %rsi + movq %rsi, 72(%rdx) + movq 80(%rcx), %rsi + movq %rsi, 80(%rdx) + movq 88(%rcx), %rsi + movq %rsi, 88(%rdx) + movq 96(%rcx), %rsi + movq %rsi, 96(%rdx) + movq 104(%rcx), %rsi + movq %rsi, 104(%rdx) + movq 112(%rcx), %rsi + movq %rsi, 112(%rdx) + movq 120(%rcx), %rsi + movq %rsi, 120(%rdx) + movq 128(%rcx), %rsi + movq %rsi, 128(%rdx) + addq $136, %rdx + addq $-136, %rax + movq %rdx, 8(%rsp) + movq %rax, 16(%rsp) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_64$8: + leaq 216(%rsp), %rsp + movq 16(%rsp), %rax + movq 8(%rsp), %rdx +L_shake256_64$6: + cmpq $136, %rax + jnbe L_shake256_64$7 + movq %rax, 8(%rsp) + shrq $3, %rax + movq $0, %rsi + jmp L_shake256_64$4 +L_shake256_64$5: + movq (%rcx,%rsi,8), %rdi + movq %rdi, (%rdx,%rsi,8) + incq %rsi +L_shake256_64$4: + cmpq %rax, %rsi + jb L_shake256_64$5 + shlq $3, %rsi + movq 8(%rsp), %rax + jmp L_shake256_64$2 +L_shake256_64$3: + movb (%rcx,%rsi), %dil + movb %dil, (%rdx,%rsi) + incq %rsi +L_shake256_64$2: + cmpq %rax, %rsi + jb L_shake256_64$3 + ret +L_sha3_512_64$1: + movq %rax, 8(%rsp) + leaq 16(%rsp), %rcx + xorq %rax, %rax + movq %rax, (%rcx) + movq %rax, 8(%rcx) + movq %rax, 16(%rcx) + movq %rax, 24(%rcx) + movq %rax, 32(%rcx) + movq %rax, 40(%rcx) + movq %rax, 48(%rcx) + movq %rax, 56(%rcx) + movq %rax, 64(%rcx) + movq %rax, 72(%rcx) + movq %rax, 80(%rcx) + movq %rax, 88(%rcx) + movq %rax, 96(%rcx) + movq %rax, 104(%rcx) + movq %rax, 112(%rcx) + movq %rax, 120(%rcx) + movq %rax, 128(%rcx) + movq %rax, 136(%rcx) + movq %rax, 144(%rcx) + movq %rax, 152(%rcx) + movq %rax, 160(%rcx) + movq %rax, 168(%rcx) + movq %rax, 176(%rcx) + movq %rax, 184(%rcx) + movq %rax, 192(%rcx) + movq (%rdx), %rax + xorq %rax, (%rcx) + movq 8(%rdx), %rax + xorq %rax, 8(%rcx) + movq 16(%rdx), %rax + xorq %rax, 16(%rcx) + movq 24(%rdx), %rax + xorq %rax, 24(%rcx) + movq 32(%rdx), %rax + xorq %rax, 32(%rcx) + movq 40(%rdx), %rax + xorq %rax, 40(%rcx) + movq 48(%rdx), %rax + xorq %rax, 48(%rcx) + movq 56(%rdx), %rax + xorq %rax, 56(%rcx) + xorb $6, 64(%rcx) + xorb $-128, 71(%rcx) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_512_64$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rax + movq (%rcx), %rdx + movq %rdx, (%rax) + movq 8(%rcx), %rdx + movq %rdx, 8(%rax) + movq 16(%rcx), %rdx + movq %rdx, 16(%rax) + movq 24(%rcx), %rdx + movq %rdx, 24(%rax) + movq 32(%rcx), %rdx + movq %rdx, 32(%rax) + movq 40(%rcx), %rdx + movq %rdx, 40(%rax) + movq 48(%rcx), %rdx + movq %rdx, 48(%rax) + movq 56(%rcx), %rcx + movq %rcx, 56(%rax) + ret +L_sha3_256_32$1: + movq %rax, 8(%rsp) + leaq 16(%rsp), %rcx + xorq %rax, %rax + movq %rax, (%rcx) + movq %rax, 8(%rcx) + movq %rax, 16(%rcx) + movq %rax, 24(%rcx) + movq %rax, 32(%rcx) + movq %rax, 40(%rcx) + movq %rax, 48(%rcx) + movq %rax, 56(%rcx) + movq %rax, 64(%rcx) + movq %rax, 72(%rcx) + movq %rax, 80(%rcx) + movq %rax, 88(%rcx) + movq %rax, 96(%rcx) + movq %rax, 104(%rcx) + movq %rax, 112(%rcx) + movq %rax, 120(%rcx) + movq %rax, 128(%rcx) + movq %rax, 136(%rcx) + movq %rax, 144(%rcx) + movq %rax, 152(%rcx) + movq %rax, 160(%rcx) + movq %rax, 168(%rcx) + movq %rax, 176(%rcx) + movq %rax, 184(%rcx) + movq %rax, 192(%rcx) + movq (%rdx), %rax + movq %rax, (%rcx) + movq 8(%rdx), %rax + movq %rax, 8(%rcx) + movq 16(%rdx), %rax + movq %rax, 16(%rcx) + movq 24(%rdx), %rax + movq %rax, 24(%rcx) + xorb $6, 32(%rcx) + movb $-128, 135(%rcx) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_256_32$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rax + movq (%rcx), %rdx + movq %rdx, (%rax) + movq 8(%rcx), %rdx + movq %rdx, 8(%rax) + movq 16(%rcx), %rdx + movq %rdx, 16(%rax) + movq 24(%rcx), %rcx + movq %rcx, 24(%rax) + ret +L_sha3_256$1: + movq %rcx, 8(%rsp) + leaq 40(%rsp), %rcx + xorq %rdx, %rdx + movq %rdx, (%rcx) + movq %rdx, 8(%rcx) + movq %rdx, 16(%rcx) + movq %rdx, 24(%rcx) + movq %rdx, 32(%rcx) + movq %rdx, 40(%rcx) + movq %rdx, 48(%rcx) + movq %rdx, 56(%rcx) + movq %rdx, 64(%rcx) + movq %rdx, 72(%rcx) + movq %rdx, 80(%rcx) + movq %rdx, 88(%rcx) + movq %rdx, 96(%rcx) + movq %rdx, 104(%rcx) + movq %rdx, 112(%rcx) + movq %rdx, 120(%rcx) + movq %rdx, 128(%rcx) + movq %rdx, 136(%rcx) + movq %rdx, 144(%rcx) + movq %rdx, 152(%rcx) + movq %rdx, 160(%rcx) + movq %rdx, 168(%rcx) + movq %rdx, 176(%rcx) + movq %rdx, 184(%rcx) + movq %rdx, 192(%rcx) + movq $136, %rdx + jmp L_sha3_256$7 +L_sha3_256$8: + movq %rdx, %rdi + shrq $3, %rdi + movq $0, %r8 + jmp L_sha3_256$10 +L_sha3_256$11: + movq (%rsi,%r8,8), %r9 + xorq %r9, (%rcx,%r8,8) + incq %r8 +L_sha3_256$10: + cmpq %rdi, %r8 + jb L_sha3_256$11 + addq %rdx, %rsi + subq %rdx, %rax + movq %rsi, 16(%rsp) + movq %rax, 24(%rsp) + movq %rdx, 32(%rsp) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_256$9: + leaq 216(%rsp), %rsp + movq 16(%rsp), %rsi + movq 24(%rsp), %rax + movq 32(%rsp), %rdx +L_sha3_256$7: + cmpq %rdx, %rax + jnb L_sha3_256$8 + movb $6, %dil + movq %rax, %r8 + shrq $3, %r8 + movq $0, %r9 + jmp L_sha3_256$5 +L_sha3_256$6: + movq (%rsi,%r9,8), %r10 + xorq %r10, (%rcx,%r9,8) + incq %r9 +L_sha3_256$5: + cmpq %r8, %r9 + jb L_sha3_256$6 + shlq $3, %r9 + jmp L_sha3_256$3 +L_sha3_256$4: + movb (%rsi,%r9), %r8b + xorb %r8b, (%rcx,%r9) + incq %r9 +L_sha3_256$3: + cmpq %rax, %r9 + jb L_sha3_256$4 + xorb %dil, (%rcx,%r9) + addq $-1, %rdx + xorb $-128, (%rcx,%rdx) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_256$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rax + movq (%rcx), %rdx + movq %rdx, (%rax) + movq 8(%rcx), %rdx + movq %rdx, 8(%rax) + movq 16(%rcx), %rdx + movq %rdx, 16(%rax) + movq 24(%rcx), %rcx + movq %rcx, 24(%rax) + ret +L_shake128_squeezeblock$1: + movq %rdx, 8(%rsp) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake128_squeezeblock$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rdx + movb (%rcx), %sil + movb %sil, (%rdx) + movb 1(%rcx), %sil + movb %sil, 1(%rdx) + movb 2(%rcx), %sil + movb %sil, 2(%rdx) + movb 3(%rcx), %sil + movb %sil, 3(%rdx) + movb 4(%rcx), %sil + movb %sil, 4(%rdx) + movb 5(%rcx), %sil + movb %sil, 5(%rdx) + movb 6(%rcx), %sil + movb %sil, 6(%rdx) + movb 7(%rcx), %sil + movb %sil, 7(%rdx) + movb 8(%rcx), %sil + movb %sil, 8(%rdx) + movb 9(%rcx), %sil + movb %sil, 9(%rdx) + movb 10(%rcx), %sil + movb %sil, 10(%rdx) + movb 11(%rcx), %sil + movb %sil, 11(%rdx) + movb 12(%rcx), %sil + movb %sil, 12(%rdx) + movb 13(%rcx), %sil + movb %sil, 13(%rdx) + movb 14(%rcx), %sil + movb %sil, 14(%rdx) + movb 15(%rcx), %sil + movb %sil, 15(%rdx) + movb 16(%rcx), %sil + movb %sil, 16(%rdx) + movb 17(%rcx), %sil + movb %sil, 17(%rdx) + movb 18(%rcx), %sil + movb %sil, 18(%rdx) + movb 19(%rcx), %sil + movb %sil, 19(%rdx) + movb 20(%rcx), %sil + movb %sil, 20(%rdx) + movb 21(%rcx), %sil + movb %sil, 21(%rdx) + movb 22(%rcx), %sil + movb %sil, 22(%rdx) + movb 23(%rcx), %sil + movb %sil, 23(%rdx) + movb 24(%rcx), %sil + movb %sil, 24(%rdx) + movb 25(%rcx), %sil + movb %sil, 25(%rdx) + movb 26(%rcx), %sil + movb %sil, 26(%rdx) + movb 27(%rcx), %sil + movb %sil, 27(%rdx) + movb 28(%rcx), %sil + movb %sil, 28(%rdx) + movb 29(%rcx), %sil + movb %sil, 29(%rdx) + movb 30(%rcx), %sil + movb %sil, 30(%rdx) + movb 31(%rcx), %sil + movb %sil, 31(%rdx) + movb 32(%rcx), %sil + movb %sil, 32(%rdx) + movb 33(%rcx), %sil + movb %sil, 33(%rdx) + movb 34(%rcx), %sil + movb %sil, 34(%rdx) + movb 35(%rcx), %sil + movb %sil, 35(%rdx) + movb 36(%rcx), %sil + movb %sil, 36(%rdx) + movb 37(%rcx), %sil + movb %sil, 37(%rdx) + movb 38(%rcx), %sil + movb %sil, 38(%rdx) + movb 39(%rcx), %sil + movb %sil, 39(%rdx) + movb 40(%rcx), %sil + movb %sil, 40(%rdx) + movb 41(%rcx), %sil + movb %sil, 41(%rdx) + movb 42(%rcx), %sil + movb %sil, 42(%rdx) + movb 43(%rcx), %sil + movb %sil, 43(%rdx) + movb 44(%rcx), %sil + movb %sil, 44(%rdx) + movb 45(%rcx), %sil + movb %sil, 45(%rdx) + movb 46(%rcx), %sil + movb %sil, 46(%rdx) + movb 47(%rcx), %sil + movb %sil, 47(%rdx) + movb 48(%rcx), %sil + movb %sil, 48(%rdx) + movb 49(%rcx), %sil + movb %sil, 49(%rdx) + movb 50(%rcx), %sil + movb %sil, 50(%rdx) + movb 51(%rcx), %sil + movb %sil, 51(%rdx) + movb 52(%rcx), %sil + movb %sil, 52(%rdx) + movb 53(%rcx), %sil + movb %sil, 53(%rdx) + movb 54(%rcx), %sil + movb %sil, 54(%rdx) + movb 55(%rcx), %sil + movb %sil, 55(%rdx) + movb 56(%rcx), %sil + movb %sil, 56(%rdx) + movb 57(%rcx), %sil + movb %sil, 57(%rdx) + movb 58(%rcx), %sil + movb %sil, 58(%rdx) + movb 59(%rcx), %sil + movb %sil, 59(%rdx) + movb 60(%rcx), %sil + movb %sil, 60(%rdx) + movb 61(%rcx), %sil + movb %sil, 61(%rdx) + movb 62(%rcx), %sil + movb %sil, 62(%rdx) + movb 63(%rcx), %sil + movb %sil, 63(%rdx) + movb 64(%rcx), %sil + movb %sil, 64(%rdx) + movb 65(%rcx), %sil + movb %sil, 65(%rdx) + movb 66(%rcx), %sil + movb %sil, 66(%rdx) + movb 67(%rcx), %sil + movb %sil, 67(%rdx) + movb 68(%rcx), %sil + movb %sil, 68(%rdx) + movb 69(%rcx), %sil + movb %sil, 69(%rdx) + movb 70(%rcx), %sil + movb %sil, 70(%rdx) + movb 71(%rcx), %sil + movb %sil, 71(%rdx) + movb 72(%rcx), %sil + movb %sil, 72(%rdx) + movb 73(%rcx), %sil + movb %sil, 73(%rdx) + movb 74(%rcx), %sil + movb %sil, 74(%rdx) + movb 75(%rcx), %sil + movb %sil, 75(%rdx) + movb 76(%rcx), %sil + movb %sil, 76(%rdx) + movb 77(%rcx), %sil + movb %sil, 77(%rdx) + movb 78(%rcx), %sil + movb %sil, 78(%rdx) + movb 79(%rcx), %sil + movb %sil, 79(%rdx) + movb 80(%rcx), %sil + movb %sil, 80(%rdx) + movb 81(%rcx), %sil + movb %sil, 81(%rdx) + movb 82(%rcx), %sil + movb %sil, 82(%rdx) + movb 83(%rcx), %sil + movb %sil, 83(%rdx) + movb 84(%rcx), %sil + movb %sil, 84(%rdx) + movb 85(%rcx), %sil + movb %sil, 85(%rdx) + movb 86(%rcx), %sil + movb %sil, 86(%rdx) + movb 87(%rcx), %sil + movb %sil, 87(%rdx) + movb 88(%rcx), %sil + movb %sil, 88(%rdx) + movb 89(%rcx), %sil + movb %sil, 89(%rdx) + movb 90(%rcx), %sil + movb %sil, 90(%rdx) + movb 91(%rcx), %sil + movb %sil, 91(%rdx) + movb 92(%rcx), %sil + movb %sil, 92(%rdx) + movb 93(%rcx), %sil + movb %sil, 93(%rdx) + movb 94(%rcx), %sil + movb %sil, 94(%rdx) + movb 95(%rcx), %sil + movb %sil, 95(%rdx) + movb 96(%rcx), %sil + movb %sil, 96(%rdx) + movb 97(%rcx), %sil + movb %sil, 97(%rdx) + movb 98(%rcx), %sil + movb %sil, 98(%rdx) + movb 99(%rcx), %sil + movb %sil, 99(%rdx) + movb 100(%rcx), %sil + movb %sil, 100(%rdx) + movb 101(%rcx), %sil + movb %sil, 101(%rdx) + movb 102(%rcx), %sil + movb %sil, 102(%rdx) + movb 103(%rcx), %sil + movb %sil, 103(%rdx) + movb 104(%rcx), %sil + movb %sil, 104(%rdx) + movb 105(%rcx), %sil + movb %sil, 105(%rdx) + movb 106(%rcx), %sil + movb %sil, 106(%rdx) + movb 107(%rcx), %sil + movb %sil, 107(%rdx) + movb 108(%rcx), %sil + movb %sil, 108(%rdx) + movb 109(%rcx), %sil + movb %sil, 109(%rdx) + movb 110(%rcx), %sil + movb %sil, 110(%rdx) + movb 111(%rcx), %sil + movb %sil, 111(%rdx) + movb 112(%rcx), %sil + movb %sil, 112(%rdx) + movb 113(%rcx), %sil + movb %sil, 113(%rdx) + movb 114(%rcx), %sil + movb %sil, 114(%rdx) + movb 115(%rcx), %sil + movb %sil, 115(%rdx) + movb 116(%rcx), %sil + movb %sil, 116(%rdx) + movb 117(%rcx), %sil + movb %sil, 117(%rdx) + movb 118(%rcx), %sil + movb %sil, 118(%rdx) + movb 119(%rcx), %sil + movb %sil, 119(%rdx) + movb 120(%rcx), %sil + movb %sil, 120(%rdx) + movb 121(%rcx), %sil + movb %sil, 121(%rdx) + movb 122(%rcx), %sil + movb %sil, 122(%rdx) + movb 123(%rcx), %sil + movb %sil, 123(%rdx) + movb 124(%rcx), %sil + movb %sil, 124(%rdx) + movb 125(%rcx), %sil + movb %sil, 125(%rdx) + movb 126(%rcx), %sil + movb %sil, 126(%rdx) + movb 127(%rcx), %sil + movb %sil, 127(%rdx) + movb 128(%rcx), %sil + movb %sil, 128(%rdx) + movb 129(%rcx), %sil + movb %sil, 129(%rdx) + movb 130(%rcx), %sil + movb %sil, 130(%rdx) + movb 131(%rcx), %sil + movb %sil, 131(%rdx) + movb 132(%rcx), %sil + movb %sil, 132(%rdx) + movb 133(%rcx), %sil + movb %sil, 133(%rdx) + movb 134(%rcx), %sil + movb %sil, 134(%rdx) + movb 135(%rcx), %sil + movb %sil, 135(%rdx) + movb 136(%rcx), %sil + movb %sil, 136(%rdx) + movb 137(%rcx), %sil + movb %sil, 137(%rdx) + movb 138(%rcx), %sil + movb %sil, 138(%rdx) + movb 139(%rcx), %sil + movb %sil, 139(%rdx) + movb 140(%rcx), %sil + movb %sil, 140(%rdx) + movb 141(%rcx), %sil + movb %sil, 141(%rdx) + movb 142(%rcx), %sil + movb %sil, 142(%rdx) + movb 143(%rcx), %sil + movb %sil, 143(%rdx) + movb 144(%rcx), %sil + movb %sil, 144(%rdx) + movb 145(%rcx), %sil + movb %sil, 145(%rdx) + movb 146(%rcx), %sil + movb %sil, 146(%rdx) + movb 147(%rcx), %sil + movb %sil, 147(%rdx) + movb 148(%rcx), %sil + movb %sil, 148(%rdx) + movb 149(%rcx), %sil + movb %sil, 149(%rdx) + movb 150(%rcx), %sil + movb %sil, 150(%rdx) + movb 151(%rcx), %sil + movb %sil, 151(%rdx) + movb 152(%rcx), %sil + movb %sil, 152(%rdx) + movb 153(%rcx), %sil + movb %sil, 153(%rdx) + movb 154(%rcx), %sil + movb %sil, 154(%rdx) + movb 155(%rcx), %sil + movb %sil, 155(%rdx) + movb 156(%rcx), %sil + movb %sil, 156(%rdx) + movb 157(%rcx), %sil + movb %sil, 157(%rdx) + movb 158(%rcx), %sil + movb %sil, 158(%rdx) + movb 159(%rcx), %sil + movb %sil, 159(%rdx) + movb 160(%rcx), %sil + movb %sil, 160(%rdx) + movb 161(%rcx), %sil + movb %sil, 161(%rdx) + movb 162(%rcx), %sil + movb %sil, 162(%rdx) + movb 163(%rcx), %sil + movb %sil, 163(%rdx) + movb 164(%rcx), %sil + movb %sil, 164(%rdx) + movb 165(%rcx), %sil + movb %sil, 165(%rdx) + movb 166(%rcx), %sil + movb %sil, 166(%rdx) + movb 167(%rcx), %cl + movb %cl, 167(%rdx) + ret +L_shake128_absorb34$1: + xorq %rsi, %rsi + movq %rsi, (%rcx) + movq %rsi, 8(%rcx) + movq %rsi, 16(%rcx) + movq %rsi, 24(%rcx) + movq %rsi, 32(%rcx) + movq %rsi, 40(%rcx) + movq %rsi, 48(%rcx) + movq %rsi, 56(%rcx) + movq %rsi, 64(%rcx) + movq %rsi, 72(%rcx) + movq %rsi, 80(%rcx) + movq %rsi, 88(%rcx) + movq %rsi, 96(%rcx) + movq %rsi, 104(%rcx) + movq %rsi, 112(%rcx) + movq %rsi, 120(%rcx) + movq %rsi, 128(%rcx) + movq %rsi, 136(%rcx) + movq %rsi, 144(%rcx) + movq %rsi, 152(%rcx) + movq %rsi, 160(%rcx) + movq %rsi, 168(%rcx) + movq %rsi, 176(%rcx) + movq %rsi, 184(%rcx) + movq %rsi, 192(%rcx) + movb (%rdx), %sil + xorb %sil, (%rcx) + movb 1(%rdx), %sil + xorb %sil, 1(%rcx) + movb 2(%rdx), %sil + xorb %sil, 2(%rcx) + movb 3(%rdx), %sil + xorb %sil, 3(%rcx) + movb 4(%rdx), %sil + xorb %sil, 4(%rcx) + movb 5(%rdx), %sil + xorb %sil, 5(%rcx) + movb 6(%rdx), %sil + xorb %sil, 6(%rcx) + movb 7(%rdx), %sil + xorb %sil, 7(%rcx) + movb 8(%rdx), %sil + xorb %sil, 8(%rcx) + movb 9(%rdx), %sil + xorb %sil, 9(%rcx) + movb 10(%rdx), %sil + xorb %sil, 10(%rcx) + movb 11(%rdx), %sil + xorb %sil, 11(%rcx) + movb 12(%rdx), %sil + xorb %sil, 12(%rcx) + movb 13(%rdx), %sil + xorb %sil, 13(%rcx) + movb 14(%rdx), %sil + xorb %sil, 14(%rcx) + movb 15(%rdx), %sil + xorb %sil, 15(%rcx) + movb 16(%rdx), %sil + xorb %sil, 16(%rcx) + movb 17(%rdx), %sil + xorb %sil, 17(%rcx) + movb 18(%rdx), %sil + xorb %sil, 18(%rcx) + movb 19(%rdx), %sil + xorb %sil, 19(%rcx) + movb 20(%rdx), %sil + xorb %sil, 20(%rcx) + movb 21(%rdx), %sil + xorb %sil, 21(%rcx) + movb 22(%rdx), %sil + xorb %sil, 22(%rcx) + movb 23(%rdx), %sil + xorb %sil, 23(%rcx) + movb 24(%rdx), %sil + xorb %sil, 24(%rcx) + movb 25(%rdx), %sil + xorb %sil, 25(%rcx) + movb 26(%rdx), %sil + xorb %sil, 26(%rcx) + movb 27(%rdx), %sil + xorb %sil, 27(%rcx) + movb 28(%rdx), %sil + xorb %sil, 28(%rcx) + movb 29(%rdx), %sil + xorb %sil, 29(%rcx) + movb 30(%rdx), %sil + xorb %sil, 30(%rcx) + movb 31(%rdx), %sil + xorb %sil, 31(%rcx) + movb 32(%rdx), %sil + xorb %sil, 32(%rcx) + movb 33(%rdx), %dl + xorb %dl, 33(%rcx) + xorb $31, 34(%rcx) + xorb $-128, 167(%rcx) + ret +L_sha3_512_32$1: + movq %rcx, 8(%rsp) + leaq 16(%rsp), %rcx + xorq %rdx, %rdx + movq %rdx, (%rcx) + movq %rdx, 8(%rcx) + movq %rdx, 16(%rcx) + movq %rdx, 24(%rcx) + movq %rdx, 32(%rcx) + movq %rdx, 40(%rcx) + movq %rdx, 48(%rcx) + movq %rdx, 56(%rcx) + movq %rdx, 64(%rcx) + movq %rdx, 72(%rcx) + movq %rdx, 80(%rcx) + movq %rdx, 88(%rcx) + movq %rdx, 96(%rcx) + movq %rdx, 104(%rcx) + movq %rdx, 112(%rcx) + movq %rdx, 120(%rcx) + movq %rdx, 128(%rcx) + movq %rdx, 136(%rcx) + movq %rdx, 144(%rcx) + movq %rdx, 152(%rcx) + movq %rdx, 160(%rcx) + movq %rdx, 168(%rcx) + movq %rdx, 176(%rcx) + movq %rdx, 184(%rcx) + movq %rdx, 192(%rcx) + movb (%rax), %dl + xorb %dl, (%rcx) + movb 1(%rax), %dl + xorb %dl, 1(%rcx) + movb 2(%rax), %dl + xorb %dl, 2(%rcx) + movb 3(%rax), %dl + xorb %dl, 3(%rcx) + movb 4(%rax), %dl + xorb %dl, 4(%rcx) + movb 5(%rax), %dl + xorb %dl, 5(%rcx) + movb 6(%rax), %dl + xorb %dl, 6(%rcx) + movb 7(%rax), %dl + xorb %dl, 7(%rcx) + movb 8(%rax), %dl + xorb %dl, 8(%rcx) + movb 9(%rax), %dl + xorb %dl, 9(%rcx) + movb 10(%rax), %dl + xorb %dl, 10(%rcx) + movb 11(%rax), %dl + xorb %dl, 11(%rcx) + movb 12(%rax), %dl + xorb %dl, 12(%rcx) + movb 13(%rax), %dl + xorb %dl, 13(%rcx) + movb 14(%rax), %dl + xorb %dl, 14(%rcx) + movb 15(%rax), %dl + xorb %dl, 15(%rcx) + movb 16(%rax), %dl + xorb %dl, 16(%rcx) + movb 17(%rax), %dl + xorb %dl, 17(%rcx) + movb 18(%rax), %dl + xorb %dl, 18(%rcx) + movb 19(%rax), %dl + xorb %dl, 19(%rcx) + movb 20(%rax), %dl + xorb %dl, 20(%rcx) + movb 21(%rax), %dl + xorb %dl, 21(%rcx) + movb 22(%rax), %dl + xorb %dl, 22(%rcx) + movb 23(%rax), %dl + xorb %dl, 23(%rcx) + movb 24(%rax), %dl + xorb %dl, 24(%rcx) + movb 25(%rax), %dl + xorb %dl, 25(%rcx) + movb 26(%rax), %dl + xorb %dl, 26(%rcx) + movb 27(%rax), %dl + xorb %dl, 27(%rcx) + movb 28(%rax), %dl + xorb %dl, 28(%rcx) + movb 29(%rax), %dl + xorb %dl, 29(%rcx) + movb 30(%rax), %dl + xorb %dl, 30(%rcx) + movb 31(%rax), %al + xorb %al, 31(%rcx) + xorb $6, 32(%rcx) + xorb $-128, 71(%rcx) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_sha3_512_32$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rax + movb (%rcx), %dl + movb %dl, (%rax) + movb 1(%rcx), %dl + movb %dl, 1(%rax) + movb 2(%rcx), %dl + movb %dl, 2(%rax) + movb 3(%rcx), %dl + movb %dl, 3(%rax) + movb 4(%rcx), %dl + movb %dl, 4(%rax) + movb 5(%rcx), %dl + movb %dl, 5(%rax) + movb 6(%rcx), %dl + movb %dl, 6(%rax) + movb 7(%rcx), %dl + movb %dl, 7(%rax) + movb 8(%rcx), %dl + movb %dl, 8(%rax) + movb 9(%rcx), %dl + movb %dl, 9(%rax) + movb 10(%rcx), %dl + movb %dl, 10(%rax) + movb 11(%rcx), %dl + movb %dl, 11(%rax) + movb 12(%rcx), %dl + movb %dl, 12(%rax) + movb 13(%rcx), %dl + movb %dl, 13(%rax) + movb 14(%rcx), %dl + movb %dl, 14(%rax) + movb 15(%rcx), %dl + movb %dl, 15(%rax) + movb 16(%rcx), %dl + movb %dl, 16(%rax) + movb 17(%rcx), %dl + movb %dl, 17(%rax) + movb 18(%rcx), %dl + movb %dl, 18(%rax) + movb 19(%rcx), %dl + movb %dl, 19(%rax) + movb 20(%rcx), %dl + movb %dl, 20(%rax) + movb 21(%rcx), %dl + movb %dl, 21(%rax) + movb 22(%rcx), %dl + movb %dl, 22(%rax) + movb 23(%rcx), %dl + movb %dl, 23(%rax) + movb 24(%rcx), %dl + movb %dl, 24(%rax) + movb 25(%rcx), %dl + movb %dl, 25(%rax) + movb 26(%rcx), %dl + movb %dl, 26(%rax) + movb 27(%rcx), %dl + movb %dl, 27(%rax) + movb 28(%rcx), %dl + movb %dl, 28(%rax) + movb 29(%rcx), %dl + movb %dl, 29(%rax) + movb 30(%rcx), %dl + movb %dl, 30(%rax) + movb 31(%rcx), %dl + movb %dl, 31(%rax) + movb 32(%rcx), %dl + movb %dl, 32(%rax) + movb 33(%rcx), %dl + movb %dl, 33(%rax) + movb 34(%rcx), %dl + movb %dl, 34(%rax) + movb 35(%rcx), %dl + movb %dl, 35(%rax) + movb 36(%rcx), %dl + movb %dl, 36(%rax) + movb 37(%rcx), %dl + movb %dl, 37(%rax) + movb 38(%rcx), %dl + movb %dl, 38(%rax) + movb 39(%rcx), %dl + movb %dl, 39(%rax) + movb 40(%rcx), %dl + movb %dl, 40(%rax) + movb 41(%rcx), %dl + movb %dl, 41(%rax) + movb 42(%rcx), %dl + movb %dl, 42(%rax) + movb 43(%rcx), %dl + movb %dl, 43(%rax) + movb 44(%rcx), %dl + movb %dl, 44(%rax) + movb 45(%rcx), %dl + movb %dl, 45(%rax) + movb 46(%rcx), %dl + movb %dl, 46(%rax) + movb 47(%rcx), %dl + movb %dl, 47(%rax) + movb 48(%rcx), %dl + movb %dl, 48(%rax) + movb 49(%rcx), %dl + movb %dl, 49(%rax) + movb 50(%rcx), %dl + movb %dl, 50(%rax) + movb 51(%rcx), %dl + movb %dl, 51(%rax) + movb 52(%rcx), %dl + movb %dl, 52(%rax) + movb 53(%rcx), %dl + movb %dl, 53(%rax) + movb 54(%rcx), %dl + movb %dl, 54(%rax) + movb 55(%rcx), %dl + movb %dl, 55(%rax) + movb 56(%rcx), %dl + movb %dl, 56(%rax) + movb 57(%rcx), %dl + movb %dl, 57(%rax) + movb 58(%rcx), %dl + movb %dl, 58(%rax) + movb 59(%rcx), %dl + movb %dl, 59(%rax) + movb 60(%rcx), %dl + movb %dl, 60(%rax) + movb 61(%rcx), %dl + movb %dl, 61(%rax) + movb 62(%rcx), %dl + movb %dl, 62(%rax) + movb 63(%rcx), %cl + movb %cl, 63(%rax) + ret +L_shake256_128_33$1: + movq %rcx, 8(%rsp) + leaq 16(%rsp), %rcx + xorq %rsi, %rsi + movq %rsi, (%rcx) + movq %rsi, 8(%rcx) + movq %rsi, 16(%rcx) + movq %rsi, 24(%rcx) + movq %rsi, 32(%rcx) + movq %rsi, 40(%rcx) + movq %rsi, 48(%rcx) + movq %rsi, 56(%rcx) + movq %rsi, 64(%rcx) + movq %rsi, 72(%rcx) + movq %rsi, 80(%rcx) + movq %rsi, 88(%rcx) + movq %rsi, 96(%rcx) + movq %rsi, 104(%rcx) + movq %rsi, 112(%rcx) + movq %rsi, 120(%rcx) + movq %rsi, 128(%rcx) + movq %rsi, 136(%rcx) + movq %rsi, 144(%rcx) + movq %rsi, 152(%rcx) + movq %rsi, 160(%rcx) + movq %rsi, 168(%rcx) + movq %rsi, 176(%rcx) + movq %rsi, 184(%rcx) + movq %rsi, 192(%rcx) + movb (%rdx), %sil + xorb %sil, (%rcx) + movb 1(%rdx), %sil + xorb %sil, 1(%rcx) + movb 2(%rdx), %sil + xorb %sil, 2(%rcx) + movb 3(%rdx), %sil + xorb %sil, 3(%rcx) + movb 4(%rdx), %sil + xorb %sil, 4(%rcx) + movb 5(%rdx), %sil + xorb %sil, 5(%rcx) + movb 6(%rdx), %sil + xorb %sil, 6(%rcx) + movb 7(%rdx), %sil + xorb %sil, 7(%rcx) + movb 8(%rdx), %sil + xorb %sil, 8(%rcx) + movb 9(%rdx), %sil + xorb %sil, 9(%rcx) + movb 10(%rdx), %sil + xorb %sil, 10(%rcx) + movb 11(%rdx), %sil + xorb %sil, 11(%rcx) + movb 12(%rdx), %sil + xorb %sil, 12(%rcx) + movb 13(%rdx), %sil + xorb %sil, 13(%rcx) + movb 14(%rdx), %sil + xorb %sil, 14(%rcx) + movb 15(%rdx), %sil + xorb %sil, 15(%rcx) + movb 16(%rdx), %sil + xorb %sil, 16(%rcx) + movb 17(%rdx), %sil + xorb %sil, 17(%rcx) + movb 18(%rdx), %sil + xorb %sil, 18(%rcx) + movb 19(%rdx), %sil + xorb %sil, 19(%rcx) + movb 20(%rdx), %sil + xorb %sil, 20(%rcx) + movb 21(%rdx), %sil + xorb %sil, 21(%rcx) + movb 22(%rdx), %sil + xorb %sil, 22(%rcx) + movb 23(%rdx), %sil + xorb %sil, 23(%rcx) + movb 24(%rdx), %sil + xorb %sil, 24(%rcx) + movb 25(%rdx), %sil + xorb %sil, 25(%rcx) + movb 26(%rdx), %sil + xorb %sil, 26(%rcx) + movb 27(%rdx), %sil + xorb %sil, 27(%rcx) + movb 28(%rdx), %sil + xorb %sil, 28(%rcx) + movb 29(%rdx), %sil + xorb %sil, 29(%rcx) + movb 30(%rdx), %sil + xorb %sil, 30(%rcx) + movb 31(%rdx), %sil + xorb %sil, 31(%rcx) + movb 32(%rdx), %dl + xorb %dl, 32(%rcx) + xorb $31, 33(%rcx) + xorb $-128, 135(%rcx) + leaq -216(%rsp), %rsp + call L_keccakf1600_ref1$1 +L_shake256_128_33$2: + leaq 216(%rsp), %rsp + movq 8(%rsp), %rdx + movb (%rcx), %sil + movb %sil, (%rdx) + movb 1(%rcx), %sil + movb %sil, 1(%rdx) + movb 2(%rcx), %sil + movb %sil, 2(%rdx) + movb 3(%rcx), %sil + movb %sil, 3(%rdx) + movb 4(%rcx), %sil + movb %sil, 4(%rdx) + movb 5(%rcx), %sil + movb %sil, 5(%rdx) + movb 6(%rcx), %sil + movb %sil, 6(%rdx) + movb 7(%rcx), %sil + movb %sil, 7(%rdx) + movb 8(%rcx), %sil + movb %sil, 8(%rdx) + movb 9(%rcx), %sil + movb %sil, 9(%rdx) + movb 10(%rcx), %sil + movb %sil, 10(%rdx) + movb 11(%rcx), %sil + movb %sil, 11(%rdx) + movb 12(%rcx), %sil + movb %sil, 12(%rdx) + movb 13(%rcx), %sil + movb %sil, 13(%rdx) + movb 14(%rcx), %sil + movb %sil, 14(%rdx) + movb 15(%rcx), %sil + movb %sil, 15(%rdx) + movb 16(%rcx), %sil + movb %sil, 16(%rdx) + movb 17(%rcx), %sil + movb %sil, 17(%rdx) + movb 18(%rcx), %sil + movb %sil, 18(%rdx) + movb 19(%rcx), %sil + movb %sil, 19(%rdx) + movb 20(%rcx), %sil + movb %sil, 20(%rdx) + movb 21(%rcx), %sil + movb %sil, 21(%rdx) + movb 22(%rcx), %sil + movb %sil, 22(%rdx) + movb 23(%rcx), %sil + movb %sil, 23(%rdx) + movb 24(%rcx), %sil + movb %sil, 24(%rdx) + movb 25(%rcx), %sil + movb %sil, 25(%rdx) + movb 26(%rcx), %sil + movb %sil, 26(%rdx) + movb 27(%rcx), %sil + movb %sil, 27(%rdx) + movb 28(%rcx), %sil + movb %sil, 28(%rdx) + movb 29(%rcx), %sil + movb %sil, 29(%rdx) + movb 30(%rcx), %sil + movb %sil, 30(%rdx) + movb 31(%rcx), %sil + movb %sil, 31(%rdx) + movb 32(%rcx), %sil + movb %sil, 32(%rdx) + movb 33(%rcx), %sil + movb %sil, 33(%rdx) + movb 34(%rcx), %sil + movb %sil, 34(%rdx) + movb 35(%rcx), %sil + movb %sil, 35(%rdx) + movb 36(%rcx), %sil + movb %sil, 36(%rdx) + movb 37(%rcx), %sil + movb %sil, 37(%rdx) + movb 38(%rcx), %sil + movb %sil, 38(%rdx) + movb 39(%rcx), %sil + movb %sil, 39(%rdx) + movb 40(%rcx), %sil + movb %sil, 40(%rdx) + movb 41(%rcx), %sil + movb %sil, 41(%rdx) + movb 42(%rcx), %sil + movb %sil, 42(%rdx) + movb 43(%rcx), %sil + movb %sil, 43(%rdx) + movb 44(%rcx), %sil + movb %sil, 44(%rdx) + movb 45(%rcx), %sil + movb %sil, 45(%rdx) + movb 46(%rcx), %sil + movb %sil, 46(%rdx) + movb 47(%rcx), %sil + movb %sil, 47(%rdx) + movb 48(%rcx), %sil + movb %sil, 48(%rdx) + movb 49(%rcx), %sil + movb %sil, 49(%rdx) + movb 50(%rcx), %sil + movb %sil, 50(%rdx) + movb 51(%rcx), %sil + movb %sil, 51(%rdx) + movb 52(%rcx), %sil + movb %sil, 52(%rdx) + movb 53(%rcx), %sil + movb %sil, 53(%rdx) + movb 54(%rcx), %sil + movb %sil, 54(%rdx) + movb 55(%rcx), %sil + movb %sil, 55(%rdx) + movb 56(%rcx), %sil + movb %sil, 56(%rdx) + movb 57(%rcx), %sil + movb %sil, 57(%rdx) + movb 58(%rcx), %sil + movb %sil, 58(%rdx) + movb 59(%rcx), %sil + movb %sil, 59(%rdx) + movb 60(%rcx), %sil + movb %sil, 60(%rdx) + movb 61(%rcx), %sil + movb %sil, 61(%rdx) + movb 62(%rcx), %sil + movb %sil, 62(%rdx) + movb 63(%rcx), %sil + movb %sil, 63(%rdx) + movb 64(%rcx), %sil + movb %sil, 64(%rdx) + movb 65(%rcx), %sil + movb %sil, 65(%rdx) + movb 66(%rcx), %sil + movb %sil, 66(%rdx) + movb 67(%rcx), %sil + movb %sil, 67(%rdx) + movb 68(%rcx), %sil + movb %sil, 68(%rdx) + movb 69(%rcx), %sil + movb %sil, 69(%rdx) + movb 70(%rcx), %sil + movb %sil, 70(%rdx) + movb 71(%rcx), %sil + movb %sil, 71(%rdx) + movb 72(%rcx), %sil + movb %sil, 72(%rdx) + movb 73(%rcx), %sil + movb %sil, 73(%rdx) + movb 74(%rcx), %sil + movb %sil, 74(%rdx) + movb 75(%rcx), %sil + movb %sil, 75(%rdx) + movb 76(%rcx), %sil + movb %sil, 76(%rdx) + movb 77(%rcx), %sil + movb %sil, 77(%rdx) + movb 78(%rcx), %sil + movb %sil, 78(%rdx) + movb 79(%rcx), %sil + movb %sil, 79(%rdx) + movb 80(%rcx), %sil + movb %sil, 80(%rdx) + movb 81(%rcx), %sil + movb %sil, 81(%rdx) + movb 82(%rcx), %sil + movb %sil, 82(%rdx) + movb 83(%rcx), %sil + movb %sil, 83(%rdx) + movb 84(%rcx), %sil + movb %sil, 84(%rdx) + movb 85(%rcx), %sil + movb %sil, 85(%rdx) + movb 86(%rcx), %sil + movb %sil, 86(%rdx) + movb 87(%rcx), %sil + movb %sil, 87(%rdx) + movb 88(%rcx), %sil + movb %sil, 88(%rdx) + movb 89(%rcx), %sil + movb %sil, 89(%rdx) + movb 90(%rcx), %sil + movb %sil, 90(%rdx) + movb 91(%rcx), %sil + movb %sil, 91(%rdx) + movb 92(%rcx), %sil + movb %sil, 92(%rdx) + movb 93(%rcx), %sil + movb %sil, 93(%rdx) + movb 94(%rcx), %sil + movb %sil, 94(%rdx) + movb 95(%rcx), %sil + movb %sil, 95(%rdx) + movb 96(%rcx), %sil + movb %sil, 96(%rdx) + movb 97(%rcx), %sil + movb %sil, 97(%rdx) + movb 98(%rcx), %sil + movb %sil, 98(%rdx) + movb 99(%rcx), %sil + movb %sil, 99(%rdx) + movb 100(%rcx), %sil + movb %sil, 100(%rdx) + movb 101(%rcx), %sil + movb %sil, 101(%rdx) + movb 102(%rcx), %sil + movb %sil, 102(%rdx) + movb 103(%rcx), %sil + movb %sil, 103(%rdx) + movb 104(%rcx), %sil + movb %sil, 104(%rdx) + movb 105(%rcx), %sil + movb %sil, 105(%rdx) + movb 106(%rcx), %sil + movb %sil, 106(%rdx) + movb 107(%rcx), %sil + movb %sil, 107(%rdx) + movb 108(%rcx), %sil + movb %sil, 108(%rdx) + movb 109(%rcx), %sil + movb %sil, 109(%rdx) + movb 110(%rcx), %sil + movb %sil, 110(%rdx) + movb 111(%rcx), %sil + movb %sil, 111(%rdx) + movb 112(%rcx), %sil + movb %sil, 112(%rdx) + movb 113(%rcx), %sil + movb %sil, 113(%rdx) + movb 114(%rcx), %sil + movb %sil, 114(%rdx) + movb 115(%rcx), %sil + movb %sil, 115(%rdx) + movb 116(%rcx), %sil + movb %sil, 116(%rdx) + movb 117(%rcx), %sil + movb %sil, 117(%rdx) + movb 118(%rcx), %sil + movb %sil, 118(%rdx) + movb 119(%rcx), %sil + movb %sil, 119(%rdx) + movb 120(%rcx), %sil + movb %sil, 120(%rdx) + movb 121(%rcx), %sil + movb %sil, 121(%rdx) + movb 122(%rcx), %sil + movb %sil, 122(%rdx) + movb 123(%rcx), %sil + movb %sil, 123(%rdx) + movb 124(%rcx), %sil + movb %sil, 124(%rdx) + movb 125(%rcx), %sil + movb %sil, 125(%rdx) + movb 126(%rcx), %sil + movb %sil, 126(%rdx) + movb 127(%rcx), %cl + movb %cl, 127(%rdx) + ret +L_keccakf1600_ref1$1: + leaq glob_data + 0(%rip), %rdx + movq %rdx, 8(%rsp) + leaq 24(%rsp), %rdx + movq $0, %rsi + jmp L_keccakf1600_ref1$2 +L_keccakf1600_ref1$3: + movq 8(%rsp), %rdi + movq (%rdi,%rsi,8), %rdi + movq %rdi, 16(%rsp) + movq (%rcx), %r11 + movq 8(%rcx), %r10 + movq 16(%rcx), %rbx + movq 24(%rcx), %rbp + movq 32(%rcx), %r12 + xorq 40(%rcx), %r11 + xorq 48(%rcx), %r10 + xorq 56(%rcx), %rbx + xorq 64(%rcx), %rbp + xorq 72(%rcx), %r12 + xorq 80(%rcx), %r11 + xorq 88(%rcx), %r10 + xorq 96(%rcx), %rbx + xorq 104(%rcx), %rbp + xorq 112(%rcx), %r12 + xorq 120(%rcx), %r11 + xorq 128(%rcx), %r10 + xorq 136(%rcx), %rbx + xorq 144(%rcx), %rbp + xorq 152(%rcx), %r12 + xorq 160(%rcx), %r11 + xorq 168(%rcx), %r10 + xorq 176(%rcx), %rbx + xorq 184(%rcx), %rbp + xorq 192(%rcx), %r12 + movq %r10, %rdi + rolq $1, %rdi + xorq %r12, %rdi + movq %rbx, %r8 + rolq $1, %r8 + xorq %r11, %r8 + movq %rbp, %r9 + rolq $1, %r9 + xorq %r10, %r9 + movq %r12, %r10 + rolq $1, %r10 + xorq %rbx, %r10 + rolq $1, %r11 + xorq %rbp, %r11 + movq (%rcx), %rbx + xorq %rdi, %rbx + movq 48(%rcx), %rbp + xorq %r8, %rbp + rolq $44, %rbp + movq 96(%rcx), %r12 + xorq %r9, %r12 + rolq $43, %r12 + movq 144(%rcx), %r13 + xorq %r10, %r13 + rolq $21, %r13 + movq 192(%rcx), %r14 + xorq %r11, %r14 + rolq $14, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + xorq 16(%rsp), %r15 + movq %r15, (%rdx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 8(%rdx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 16(%rdx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 24(%rdx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 32(%rdx) + movq 24(%rcx), %rbx + xorq %r10, %rbx + rolq $28, %rbx + movq 72(%rcx), %rbp + xorq %r11, %rbp + rolq $20, %rbp + movq 80(%rcx), %r12 + xorq %rdi, %r12 + rolq $3, %r12 + movq 128(%rcx), %r13 + xorq %r8, %r13 + rolq $45, %r13 + movq 176(%rcx), %r14 + xorq %r9, %r14 + rolq $61, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + movq %r15, 40(%rdx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 48(%rdx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 56(%rdx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 64(%rdx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 72(%rdx) + movq 8(%rcx), %rbx + xorq %r8, %rbx + rolq $1, %rbx + movq 56(%rcx), %rbp + xorq %r9, %rbp + rolq $6, %rbp + movq 104(%rcx), %r12 + xorq %r10, %r12 + rolq $25, %r12 + movq 152(%rcx), %r13 + xorq %r11, %r13 + rolq $8, %r13 + movq 160(%rcx), %r14 + xorq %rdi, %r14 + rolq $18, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + movq %r15, 80(%rdx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 88(%rdx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 96(%rdx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 104(%rdx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 112(%rdx) + movq 32(%rcx), %rbx + xorq %r11, %rbx + rolq $27, %rbx + movq 40(%rcx), %rbp + xorq %rdi, %rbp + rolq $36, %rbp + movq 88(%rcx), %r12 + xorq %r8, %r12 + rolq $10, %r12 + movq 136(%rcx), %r13 + xorq %r9, %r13 + rolq $15, %r13 + movq 184(%rcx), %r14 + xorq %r10, %r14 + rolq $56, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + movq %r15, 120(%rdx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 128(%rdx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 136(%rdx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 144(%rdx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 152(%rdx) + movq 16(%rcx), %rbx + xorq %r9, %rbx + rolq $62, %rbx + movq 64(%rcx), %r9 + xorq %r10, %r9 + rolq $55, %r9 + movq 112(%rcx), %r10 + xorq %r11, %r10 + rolq $39, %r10 + movq 120(%rcx), %r11 + xorq %rdi, %r11 + rolq $41, %r11 + movq 168(%rcx), %rdi + xorq %r8, %rdi + rolq $2, %rdi + movq %r9, %r8 + notq %r8 + andq %r10, %r8 + xorq %rbx, %r8 + movq %r8, 160(%rdx) + movq %r10, %r8 + notq %r8 + andq %r11, %r8 + xorq %r9, %r8 + movq %r8, 168(%rdx) + movq %r11, %r8 + notq %r8 + andq %rdi, %r8 + xorq %r10, %r8 + movq %r8, 176(%rdx) + movq %rdi, %r8 + notq %r8 + andq %rbx, %r8 + xorq %r11, %r8 + movq %r8, 184(%rdx) + notq %rbx + andq %r9, %rbx + xorq %rdi, %rbx + movq %rbx, 192(%rdx) + movq 8(%rsp), %rdi + movq 8(%rdi,%rsi,8), %rdi + movq %rdi, 16(%rsp) + movq (%rdx), %r11 + movq 8(%rdx), %r10 + movq 16(%rdx), %rbx + movq 24(%rdx), %rbp + movq 32(%rdx), %r12 + xorq 40(%rdx), %r11 + xorq 48(%rdx), %r10 + xorq 56(%rdx), %rbx + xorq 64(%rdx), %rbp + xorq 72(%rdx), %r12 + xorq 80(%rdx), %r11 + xorq 88(%rdx), %r10 + xorq 96(%rdx), %rbx + xorq 104(%rdx), %rbp + xorq 112(%rdx), %r12 + xorq 120(%rdx), %r11 + xorq 128(%rdx), %r10 + xorq 136(%rdx), %rbx + xorq 144(%rdx), %rbp + xorq 152(%rdx), %r12 + xorq 160(%rdx), %r11 + xorq 168(%rdx), %r10 + xorq 176(%rdx), %rbx + xorq 184(%rdx), %rbp + xorq 192(%rdx), %r12 + movq %r10, %rdi + rolq $1, %rdi + xorq %r12, %rdi + movq %rbx, %r8 + rolq $1, %r8 + xorq %r11, %r8 + movq %rbp, %r9 + rolq $1, %r9 + xorq %r10, %r9 + movq %r12, %r10 + rolq $1, %r10 + xorq %rbx, %r10 + rolq $1, %r11 + xorq %rbp, %r11 + movq (%rdx), %rbx + xorq %rdi, %rbx + movq 48(%rdx), %rbp + xorq %r8, %rbp + rolq $44, %rbp + movq 96(%rdx), %r12 + xorq %r9, %r12 + rolq $43, %r12 + movq 144(%rdx), %r13 + xorq %r10, %r13 + rolq $21, %r13 + movq 192(%rdx), %r14 + xorq %r11, %r14 + rolq $14, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + xorq 16(%rsp), %r15 + movq %r15, (%rcx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 8(%rcx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 16(%rcx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 24(%rcx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 32(%rcx) + movq 24(%rdx), %rbx + xorq %r10, %rbx + rolq $28, %rbx + movq 72(%rdx), %rbp + xorq %r11, %rbp + rolq $20, %rbp + movq 80(%rdx), %r12 + xorq %rdi, %r12 + rolq $3, %r12 + movq 128(%rdx), %r13 + xorq %r8, %r13 + rolq $45, %r13 + movq 176(%rdx), %r14 + xorq %r9, %r14 + rolq $61, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + movq %r15, 40(%rcx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 48(%rcx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 56(%rcx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 64(%rcx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 72(%rcx) + movq 8(%rdx), %rbx + xorq %r8, %rbx + rolq $1, %rbx + movq 56(%rdx), %rbp + xorq %r9, %rbp + rolq $6, %rbp + movq 104(%rdx), %r12 + xorq %r10, %r12 + rolq $25, %r12 + movq 152(%rdx), %r13 + xorq %r11, %r13 + rolq $8, %r13 + movq 160(%rdx), %r14 + xorq %rdi, %r14 + rolq $18, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + movq %r15, 80(%rcx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 88(%rcx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 96(%rcx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 104(%rcx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 112(%rcx) + movq 32(%rdx), %rbx + xorq %r11, %rbx + rolq $27, %rbx + movq 40(%rdx), %rbp + xorq %rdi, %rbp + rolq $36, %rbp + movq 88(%rdx), %r12 + xorq %r8, %r12 + rolq $10, %r12 + movq 136(%rdx), %r13 + xorq %r9, %r13 + rolq $15, %r13 + movq 184(%rdx), %r14 + xorq %r10, %r14 + rolq $56, %r14 + movq %rbp, %r15 + notq %r15 + andq %r12, %r15 + xorq %rbx, %r15 + movq %r15, 120(%rcx) + movq %r12, %r15 + notq %r15 + andq %r13, %r15 + xorq %rbp, %r15 + movq %r15, 128(%rcx) + movq %r13, %r15 + notq %r15 + andq %r14, %r15 + xorq %r12, %r15 + movq %r15, 136(%rcx) + movq %r14, %r12 + notq %r12 + andq %rbx, %r12 + xorq %r13, %r12 + movq %r12, 144(%rcx) + notq %rbx + andq %rbp, %rbx + xorq %r14, %rbx + movq %rbx, 152(%rcx) + movq 16(%rdx), %rbx + xorq %r9, %rbx + rolq $62, %rbx + movq 64(%rdx), %r9 + xorq %r10, %r9 + rolq $55, %r9 + movq 112(%rdx), %r10 + xorq %r11, %r10 + rolq $39, %r10 + movq 120(%rdx), %r11 + xorq %rdi, %r11 + rolq $41, %r11 + movq 168(%rdx), %rdi + xorq %r8, %rdi + rolq $2, %rdi + movq %r9, %r8 + notq %r8 + andq %r10, %r8 + xorq %rbx, %r8 + movq %r8, 160(%rcx) + movq %r10, %r8 + notq %r8 + andq %r11, %r8 + xorq %r9, %r8 + movq %r8, 168(%rcx) + movq %r11, %r8 + notq %r8 + andq %rdi, %r8 + xorq %r10, %r8 + movq %r8, 176(%rcx) + movq %rdi, %r8 + notq %r8 + andq %rbx, %r8 + xorq %r11, %r8 + movq %r8, 184(%rcx) + notq %rbx + andq %r9, %rbx + xorq %rdi, %rbx + movq %rbx, 192(%rcx) + addq $2, %rsi +L_keccakf1600_ref1$2: + cmpq $23, %rsi + jb L_keccakf1600_ref1$3 + ret + .data + .p2align 5 +_glob_data: +glob_data: + .byte 1 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -126 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -118 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -117 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 9 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -118 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -120 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 9 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -117 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -119 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 3 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 2 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 10 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 10 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -127 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -128 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte 1 + .byte 0 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte 0 + .byte 8 + .byte -128 + .byte 0 + .byte -128 + .byte 0 + .byte 0 + .byte 0 + .byte -128 + .byte -91 + .byte 6 + .byte 15 + .byte 7 + .byte -76 + .byte 5 + .byte 67 + .byte 9 + .byte 34 + .byte 9 + .byte 29 + .byte 9 + .byte 52 + .byte 1 + .byte 108 + .byte 0 + .byte 35 + .byte 11 + .byte 102 + .byte 3 + .byte 86 + .byte 3 + .byte -26 + .byte 5 + .byte -25 + .byte 9 + .byte -2 + .byte 4 + .byte -6 + .byte 5 + .byte -95 + .byte 4 + .byte 123 + .byte 6 + .byte -93 + .byte 4 + .byte 37 + .byte 12 + .byte 106 + .byte 3 + .byte 55 + .byte 5 + .byte 63 + .byte 8 + .byte -120 + .byte 0 + .byte -65 + .byte 4 + .byte -127 + .byte 11 + .byte -71 + .byte 5 + .byte 5 + .byte 5 + .byte -41 + .byte 7 + .byte -97 + .byte 10 + .byte -90 + .byte 10 + .byte -72 + .byte 8 + .byte -48 + .byte 9 + .byte 75 + .byte 0 + .byte -100 + .byte 0 + .byte -72 + .byte 11 + .byte 95 + .byte 11 + .byte -92 + .byte 11 + .byte 104 + .byte 3 + .byte 125 + .byte 10 + .byte 54 + .byte 6 + .byte -94 + .byte 8 + .byte 90 + .byte 2 + .byte 54 + .byte 7 + .byte 9 + .byte 3 + .byte -109 + .byte 0 + .byte 122 + .byte 8 + .byte -9 + .byte 9 + .byte -10 + .byte 0 + .byte -116 + .byte 6 + .byte -37 + .byte 6 + .byte -52 + .byte 1 + .byte 35 + .byte 1 + .byte -21 + .byte 0 + .byte 80 + .byte 12 + .byte -74 + .byte 10 + .byte 91 + .byte 11 + .byte -104 + .byte 12 + .byte -13 + .byte 6 + .byte -102 + .byte 9 + .byte -29 + .byte 4 + .byte -74 + .byte 9 + .byte -42 + .byte 10 + .byte 83 + .byte 11 + .byte 79 + .byte 4 + .byte -5 + .byte 4 + .byte 92 + .byte 10 + .byte 41 + .byte 4 + .byte 65 + .byte 11 + .byte -43 + .byte 2 + .byte -28 + .byte 5 + .byte 64 + .byte 9 + .byte -114 + .byte 1 + .byte -73 + .byte 3 + .byte -9 + .byte 0 + .byte -115 + .byte 5 + .byte -106 + .byte 12 + .byte -61 + .byte 9 + .byte 15 + .byte 1 + .byte 90 + .byte 0 + .byte 85 + .byte 3 + .byte 68 + .byte 7 + .byte -125 + .byte 12 + .byte -118 + .byte 4 + .byte 82 + .byte 6 + .byte -102 + .byte 2 + .byte 64 + .byte 1 + .byte 8 + .byte 0 + .byte -3 + .byte 10 + .byte 8 + .byte 6 + .byte 26 + .byte 1 + .byte 46 + .byte 7 + .byte 13 + .byte 5 + .byte 10 + .byte 9 + .byte 40 + .byte 2 + .byte 117 + .byte 10 + .byte 58 + .byte 8 + .byte 35 + .byte 6 + .byte -51 + .byte 0 + .byte 102 + .byte 11 + .byte 6 + .byte 6 + .byte -95 + .byte 10 + .byte 37 + .byte 10 + .byte 8 + .byte 9 + .byte -87 + .byte 2 + .byte -126 + .byte 0 + .byte 66 + .byte 6 + .byte 79 + .byte 7 + .byte 61 + .byte 3 + .byte -126 + .byte 11 + .byte -7 + .byte 11 + .byte 45 + .byte 5 + .byte -60 + .byte 10 + .byte 69 + .byte 7 + .byte -62 + .byte 5 + .byte -78 + .byte 4 + .byte 63 + .byte 9 + .byte 75 + .byte 12 + .byte -40 + .byte 6 + .byte -109 + .byte 10 + .byte -85 + .byte 0 + .byte 55 + .byte 12 + .byte -30 + .byte 11 + .byte 115 + .byte 7 + .byte 44 + .byte 7 + .byte -19 + .byte 5 + .byte 103 + .byte 1 + .byte -10 + .byte 2 + .byte -95 + .byte 5 + .byte -19 + .byte 8 + .byte 11 + .byte 10 + .byte -102 + .byte 11 + .byte 20 + .byte 7 + .byte -43 + .byte 5 + .byte -114 + .byte 5 + .byte 31 + .byte 1 + .byte -54 + .byte 0 + .byte 86 + .byte 12 + .byte 110 + .byte 2 + .byte 41 + .byte 6 + .byte -74 + .byte 0 + .byte -62 + .byte 3 + .byte 79 + .byte 8 + .byte 63 + .byte 7 + .byte -68 + .byte 5 + .byte 61 + .byte 2 + .byte -44 + .byte 7 + .byte 8 + .byte 1 + .byte 127 + .byte 1 + .byte -60 + .byte 9 + .byte -78 + .byte 5 + .byte -65 + .byte 6 + .byte 127 + .byte 12 + .byte 88 + .byte 10 + .byte -7 + .byte 3 + .byte -36 + .byte 2 + .byte 96 + .byte 2 + .byte -5 + .byte 6 + .byte -101 + .byte 1 + .byte 52 + .byte 12 + .byte -34 + .byte 6 + .byte -57 + .byte 4 + .byte -116 + .byte 2 + .byte -39 + .byte 10 + .byte -9 + .byte 3 + .byte -12 + .byte 7 + .byte -45 + .byte 5 + .byte -25 + .byte 11 + .byte -7 + .byte 6 + .byte 4 + .byte 2 + .byte -7 + .byte 12 + .byte -63 + .byte 11 + .byte 103 + .byte 10 + .byte -81 + .byte 6 + .byte 119 + .byte 8 + .byte 126 + .byte 0 + .byte -67 + .byte 5 + .byte -84 + .byte 9 + .byte -89 + .byte 12 + .byte -14 + .byte 11 + .byte 62 + .byte 3 + .byte 107 + .byte 0 + .byte 116 + .byte 7 + .byte 10 + .byte 12 + .byte 74 + .byte 9 + .byte 115 + .byte 11 + .byte -63 + .byte 3 + .byte 29 + .byte 7 + .byte 44 + .byte 10 + .byte -64 + .byte 1 + .byte -40 + .byte 8 + .byte -91 + .byte 2 + .byte 6 + .byte 8 + .byte -78 + .byte 8 + .byte -82 + .byte 1 + .byte 43 + .byte 2 + .byte 75 + .byte 3 + .byte 30 + .byte 8 + .byte 103 + .byte 3 + .byte 14 + .byte 6 + .byte 105 + .byte 0 + .byte -90 + .byte 1 + .byte 75 + .byte 2 + .byte -79 + .byte 0 + .byte 22 + .byte 12 + .byte -34 + .byte 11 + .byte 53 + .byte 11 + .byte 38 + .byte 6 + .byte 117 + .byte 6 + .byte 11 + .byte 12 + .byte 10 + .byte 3 + .byte -121 + .byte 4 + .byte 110 + .byte 12 + .byte -8 + .byte 9 + .byte -53 + .byte 5 + .byte -89 + .byte 10 + .byte 95 + .byte 4 + .byte -53 + .byte 6 + .byte -124 + .byte 2 + .byte -103 + .byte 9 + .byte 93 + .byte 1 + .byte -94 + .byte 1 + .byte 73 + .byte 1 + .byte 101 + .byte 12 + .byte -74 + .byte 12 + .byte 49 + .byte 3 + .byte 73 + .byte 4 + .byte 91 + .byte 2 + .byte 98 + .byte 2 + .byte 42 + .byte 5 + .byte -4 + .byte 7 + .byte 72 + .byte 7 + .byte -128 + .byte 1 + .byte 66 + .byte 8 + .byte 121 + .byte 12 + .byte -62 + .byte 4 + .byte -54 + .byte 7 + .byte -105 + .byte 9 + .byte -36 + .byte 0 + .byte 94 + .byte 8 + .byte -122 + .byte 6 + .byte 96 + .byte 8 + .byte 7 + .byte 7 + .byte 3 + .byte 8 + .byte 26 + .byte 3 + .byte 27 + .byte 7 + .byte -85 + .byte 9 + .byte -101 + .byte 9 + .byte -34 + .byte 1 + .byte -107 + .byte 12 + .byte -51 + .byte 11 + .byte -28 + .byte 3 + .byte -33 + .byte 3 + .byte -66 + .byte 3 + .byte 77 + .byte 7 + .byte -14 + .byte 5 + .byte 92 + .byte 6 diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc new file mode 100644 index 000000000..fc02c7084 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc @@ -0,0 +1,21 @@ +// Note1: This file was imported from hakyber, to ensure that the parameters that are defined +// accordingly to their usage in the correctness proof. An alternative version of this file exists +// in crypto_kem/kyber/kyber768/common/params.jinc and these will be merged once hakyber avx2 is +// integrated into libjade. + +param int KYBER_Q = 3329; +param int KYBER_N = 256; +param int KYBER_K = 3; +param int KYBER_VECN = KYBER_K * KYBER_N; + +param int KYBER_SYMBYTES = 32; +param int KYBER_ETA = 2; +param int KYBER_POLYBYTES = 384; +param int KYBER_POLYVECBYTES = (KYBER_K * KYBER_POLYBYTES); +param int KYBER_POLYCOMPRESSEDBYTES = 128; +param int KYBER_POLYVECCOMPRESSEDBYTES = (KYBER_K * 320); +param int KYBER_MSGBYTES = KYBER_SYMBYTES; +param int KYBER_CT_LEN = KYBER_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES; +param int KYBER_INDCPA_PUBLICKEYBYTES = KYBER_POLYVECBYTES + KYBER_SYMBYTES; +param int KYBER_PUBLICKEYBYTES = KYBER_INDCPA_PUBLICKEYBYTES; +param int KYBER_SSBYTES = 32; diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc new file mode 100644 index 000000000..b36b90336 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc @@ -0,0 +1,731 @@ +// Note1: the previous kyber768/amd64/ref libjade implementation used the generic version of this +// file, defined in crypto_kem/kyber/common/amd64/ref/poly.jinc. This file was imported from +// hakyber and the main differences are: 1) the usage of KYBER_INDCPA_MSGBYTES (this file does +// not); 2) get_noise; + +// Note2: although the standard practice in libjade is to require files within the same folder as +// `require "file"`, the following `require` statement does not follow that rule to make explicit +// the fact that we are including a `params.jinc` file that is not under a `common` folder. Other +// instances of such cases exist in this folder. + +// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 +from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" + +from Jade require "crypto_kem/kyber/common/amd64/ref/reduce.jinc" +from Jade require "common/keccak/common/fips202_ref_DIRTY.jinc" +from Jade require "crypto_kem/kyber/common/amd64/ref/zetas.jinc" + +fn _poly_add2(reg ptr u16[KYBER_N] rp bp) -> stack u16[KYBER_N] +{ + reg u16 a; + reg u16 b; + reg u16 r; + reg u64 i; + + i = 0; + + #bounded + while (i < KYBER_N) { + a = rp[(int)i]; + b = bp[(int)i]; + r = a + b; + rp[(int)i] = r; + i += 1; + } + return rp; +} + +fn _poly_csubq(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] +{ + reg u64 i; + reg u16 t; + reg u16 b; + + i = 0; + #bounded + while (i < KYBER_N) + { + t = rp[(int)i]; + t -= KYBER_Q; + b = t; + b >>s= 15; + b &= KYBER_Q; + t += b; + rp[(int)i] = t; + i += 1; + } + return rp; +} + +fn _poly_basemul(reg ptr u16[KYBER_N] rp, reg const ptr u16[KYBER_N] ap bp) -> reg ptr u16[KYBER_N] +{ + reg u64 offset; + reg u16 zeta; + reg u16 r0; + reg u16 r1; + reg u16 a0; + reg u16 a1; + reg u16 b0; + reg u16 b1; + reg u16 t; + reg ptr u16[128] zetasp; + reg u64 zetasctr; + reg u64 i; + + stack ptr u16[KYBER_N] srp; + + srp = rp; + + zetasctr = 64; + i = 0; + + #bounded + while(i < KYBER_N) + { + zetasp = jzetas; + zeta = zetasp[(int)zetasctr]; + zetasctr += 1; + + a0 = ap[(int)i]; + b0 = bp[(int)i]; + i += 1; + a1 = ap[(int)i]; + b1 = bp[(int)i]; + i -= 1; + + r0 = __fqmul(a1, b1); + r0 = __fqmul(r0, zeta); + t = __fqmul(a0, b0); + r0 += t; + + r1 = __fqmul(a0, b1); + t = __fqmul(a1, b0); + r1 += t; + + rp = srp; + rp[(int)i] = r0; + i += 1; + rp[(int)i] = r1; + srp = rp; + + + zeta = -zeta; + + i += 1; + a0 = ap[(int)i]; + b0 = bp[(int)i]; + i += 1; + a1 = ap[(int)i]; + b1 = bp[(int)i]; + i -= 1; + + r0 = __fqmul(a1, b1); + r0 = __fqmul(r0, zeta); + t = __fqmul(a0, b0); + r0 += t; + + r1 = __fqmul(a0, b1); + t = __fqmul(a1, b0); + r1 += t; + + rp = srp; + rp[(int)i] = r0; + i += 1; + rp[(int)i] = r1; + srp = rp; + + i += 1; + } + return rp; +} + +inline +fn __poly_reduce(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] +{ + reg u64 j; + reg u16 t; + j = 0; + #bounded + while (j < KYBER_N) + { + t = rp[(int)j]; + t = __barrett_reduce(t); + rp[(int)j] = t; + j += 1; + } + return rp; +} + +fn _poly_compress(reg u64 rp, reg ptr u16[KYBER_N] a) -> reg ptr u16[KYBER_N] +{ + reg u16 t; + reg u32 d0, d1; + reg u64 i j; + + a = _poly_csubq(a); + + i = 0; + j = 0; + #bounded + while(i < 128) + { + t = a[(int)j]; + d0 = (32u)t; + d0 <<= 4; + d0 += 1665; + d0 *= 80635; + d0 >>= 28; + d0 &= 0xf; + j += 1; + t = a[(int)j]; + d1 = (32u)t; + d1 <<= 4; + d1 += 1665; + d1 *= 80635; + d1 >>= 28; + d1 &= 0xf; + d1 <<= 4; + d0 |= d1; + (u8)[rp+i] = d0; + i += 1; + j += 1; + } + return a; +} + +fn _i_poly_compress(reg ptr u8[KYBER_POLYCOMPRESSEDBYTES] rp, reg ptr u16[KYBER_N] a) -> reg ptr u8[KYBER_POLYCOMPRESSEDBYTES], reg ptr u16[KYBER_N] +{ + reg u16 t; + reg u32 d0, d1; + reg u64 i j; + + a = _poly_csubq(a); + + i = 0; + j = 0; + #bounded + while(i < 128) + { + t = a[(int)j]; + d0 = (32u)t; + d0 <<= 4; + d0 += 1665; + d0 *= 80635; + d0 >>= 28; + d0 &= 0xf; + j += 1; + t = a[(int)j]; + d1 = (32u)t; + d1 <<= 4; + d1 += 1665; + d1 *= 80635; + d1 >>= 28; + d1 &= 0xf; + d1 <<= 4; + d0 |= d1; + rp[(int) i] = d0; + i += 1; + j += 1; + } + return rp, a; +} + + +fn _poly_decompress(reg ptr u16[KYBER_N] rp, reg u64 ap) -> stack u16[KYBER_N] +{ + reg u8 t; + reg u16 d0, d1; + reg u64 i j; + + i = 0; + j = 0; + + #bounded + while (i < 128) { + t = (u8)[ap+i]; + d0 = (16u)t; + d1 = (16u)t; + d0 &= 0xf; + d1 >>= 4; + d0 *= KYBER_Q; + d1 *= KYBER_Q; + d0 += 8; + d1 += 8; + d0 >>= 4; + d1 >>= 4; + rp[(int)j] = d0; + j += 1; + rp[(int)j] = d1; + j += 1; + i += 1; + } + return rp; +} + +fn _poly_frombytes(reg ptr u16[KYBER_N] rp, reg u64 ap) -> reg ptr u16[KYBER_N] +{ + reg u8 c0, c1, c2; + reg u16 d0, d1, t; + inline int i; + + for i = 0 to KYBER_N/2 + { + c0 = (u8)[ap+3*i]; + c1 = (u8)[ap+3*i+1]; + c2 = (u8)[ap+3*i+2]; + d0 = (16u)c0; + t = (16u)c1; + t &= 0xf; + t <<= 8; + d0 |= t; + d1 = (16u)c2; + d1 <<= 4; + t = (16u)c1; + t >>= 4; + d1 |= t; + rp[2*i] = d0; + rp[2*i+1] = d1; + } + return rp; +} + +param int DMONT = 1353; /* (1ULL << 32) % KYBER_Q */ + +fn _poly_frommont(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] +{ + reg u64 i; + reg u16 r; + reg u16 dmont; + + dmont = DMONT; + + i = 0; + #bounded + while (i < KYBER_N) + { + r = rp[(int)i]; + r = __fqmul(r, dmont); + rp[(int)i] = r; + i += 1; + } + return rp; +} + +fn _poly_frommsg(reg ptr u16[KYBER_N] rp, reg u64 ap) -> stack u16[KYBER_N] +{ + reg u8 c; + reg u16 t; + inline int i; + inline int j; + + for i = 0 to 32 + { + c = (u8)[ap + i]; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+1] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+2] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+3] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+4] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+5] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+6] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+7] = t; + c >>= 1; + } + return rp; +} + + +fn _i_poly_frommsg(reg ptr u16[KYBER_N] rp, reg ptr u8[32] ap) -> stack u16[KYBER_N] +{ + reg u8 c; + reg u16 t; + inline int i; + inline int j; + + for i = 0 to 32 + { + c = ap[i]; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+1] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+2] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+3] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+4] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+5] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+6] = t; + c >>= 1; + + t = (16u)c; + t &= 1; + t *= (KYBER_Q+1)/2; + rp[8*i+7] = t; + c >>= 1; + } + return rp; +} + +#[returnaddress=stack] +fn _poly_getnoise(reg ptr u16[KYBER_N] rp, reg ptr u8[KYBER_SYMBYTES] seed, reg u8 nonce) -> reg ptr u16[KYBER_N] +{ + stack u8[33] extseed; /* 33 = KYBER_SYMBYTES +1 */ + stack u8[128] buf; /* 128 = KYBER_ETA*KYBER_N/4 */ + reg u64 outlen; + reg u8 c,a,b; + reg u16 t; + reg u64 i j; + inline int k; + + stack ptr u16[KYBER_N] srp; + + srp = rp; + + for k = 0 to KYBER_SYMBYTES + { + c = seed[k]; + extseed[k] = c; + } + extseed[KYBER_SYMBYTES] = nonce; + + buf = _shake256_128_33(buf, extseed); + + rp = srp; + + i = 0; + j = 0; + #bounded + while (i < 128) { + c = buf[(int)i]; + a = c; + a &= 0x55; + + c >>= 1; + c &= 0x55; + c += a; + + a = c; + a &= 0x3; + b = c; + b >>= 2; + b &= 0x3; + a -= b; + t = (16s)a; + rp[(int)j] = t; + a = c; + a >>= 4; + a &= 0x3; + b = c >> 6; + b &= 0x3; + a -= b; + t = (16s)a; + j += 1; + rp[(int)j] = t; + i += 1; + j += 1; + } + + return rp; +} + +fn _poly_invntt(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] +{ + reg u64 len; + reg u64 start; + reg u64 j; + reg u64 cmp; + reg u64 offset; + + reg u16 zeta; + reg u16 t; + reg u16 s; + reg u16 m; + + reg ptr u16[128] zetasp; + reg u64 zetasctr; + + zetasp = jzetas_inv; + zetasctr = 0; + + len = 2; + #bounded + while (len <= 128) + { + start = 0; + #bounded + while (start < 256) + { + zeta = zetasp[(int)zetasctr]; + zetasctr += 1; + + j = start; + cmp = #LEA(start + len); // avoid -lea + #bounded + while (j < cmp) + { + offset = #LEA(j + len); // avoid -lea + s = rp[(int)offset]; + t = rp[(int)j]; + m = s; m += t; // valgrind 16 bit lea not implemented + m = __barrett_reduce(m); + rp[(int)j] = m; + t -= s; + t = __fqmul(t, zeta); + rp[(int)offset] = t; + j += 1; + } + start = #LEA(j + len); // avoid -lea + } + len <<= 1; + } + + zeta = zetasp[127]; + j = 0; + #bounded + while (j < KYBER_N) + { + t = rp[(int)j]; + t = __fqmul(t, zeta); + rp[(int)j] = t; + j += 1; + } + return rp; +} + +fn _poly_ntt(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] +{ + reg u64 len; + reg u64 start; + reg u64 j; + reg u64 cmp; + reg u64 offset; + + reg u16 zeta; + reg u16 t; + reg u16 s; + reg u16 m; + + reg ptr u16[128] zetasp; + reg u64 zetasctr; + + zetasp = jzetas; + zetasctr = 0; + len = 128; + #bounded + while (len >= 2) + { + start = 0; + #bounded + while (start < 256) + { + zetasctr += 1; + zeta = zetasp[(int)zetasctr]; + j = start; + cmp = #LEA(start + len); + #bounded + while (j < cmp) + { + offset = #LEA(j + len); + t = rp[(int)offset]; + t = __fqmul(t, zeta); + s = rp[(int)j]; + m = s; + m -= t; + rp[(int)offset] = m; + t += s; + rp[(int)j] = t; + j += 1; + } + start = #LEA(j + len); + } + len >>= 1; + } + + rp = __poly_reduce(rp); + + return rp; +} + +fn _poly_sub(reg ptr u16[KYBER_N] rp ap bp) -> reg ptr u16[KYBER_N] +{ + reg u16 a; + reg u16 b; + reg u16 r; + reg u64 i; + + i = 0; + #bounded + while (i < KYBER_N) { + a = ap[(int)i]; + b = bp[(int)i]; + r = a - b; + rp[(int)i] = r; + i += 1; + } + return rp; +} + +fn _poly_tobytes(reg u64 rp, reg ptr u16[KYBER_N] a) -> reg ptr u16[KYBER_N] +{ + reg u16 t0, t1, d; + reg u64 i j; + + a = _poly_csubq(a); + + i = 0; + j = 0; + #bounded + while (i < KYBER_N) + { + t0 = a[(int)i]; + i += 1; + t1 = a[(int)i]; + i += 1; + d = t0; + d &= 0xff; + (u8)[rp+j] = d; + j += 1; + t0 >>= 8; + d = t1; + d &= 0xf; + d <<= 4; + d |= t0; + (u8)[rp+j] = d; + j += 1; + t1 >>= 4; + (u8)[rp+j] = t1; + j += 1; + } + return a; +} + +fn _poly_tomsg(reg u64 rp, reg ptr u16[KYBER_N] a) -> reg ptr u16[KYBER_N] +{ + reg u16 t; + reg u8 r; + reg u32 d; + inline int i j; + + a = _poly_csubq(a); + + for i = 0 to 32 + { + r = 0; + for j = 0 to 8 + { + t = a[8*i+j]; + d = (32u)t; + d <<= 1; + d += 1665; + d *= 80635; + d >>= 28; + d &= 1; + d <<= j; + r |= d; + } + + (u8)[rp+i] = r; + } + return a; +} + +fn _i_poly_tomsg(reg ptr u8[KYBER_N/8] rp, reg ptr u16[KYBER_N] a) -> reg ptr u8[KYBER_N/8], reg ptr u16[KYBER_N] +{ + reg u16 t; + reg u8 r; + reg u32 d; + inline int i j; + + a = _poly_csubq(a); + + for i = 0 to 32 + { + r = 0; + for j = 0 to 8 + { + t = a[8*i+j]; + d = (32u)t; + d <<= 1; + d += 1665; + d *= 80635; + d >>= 28; + d &= 1; + d <<= j; + r |= d; + } + + rp[i] = r; + } + + return rp, a; +} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc new file mode 100644 index 000000000..a9b3fec91 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc @@ -0,0 +1,285 @@ +require "poly.jinc" + +inline +fn __polyvec_add2(stack u16[KYBER_VECN] r, stack u16[KYBER_VECN] b) -> stack u16[KYBER_VECN] +{ + r[0:KYBER_N] = _poly_add2(r[0:KYBER_N], b[0:KYBER_N]); + r[KYBER_N:KYBER_N] = _poly_add2(r[KYBER_N:KYBER_N], b[KYBER_N:KYBER_N]); + r[2*KYBER_N:KYBER_N] = _poly_add2(r[2*KYBER_N:KYBER_N], b[2*KYBER_N:KYBER_N]); + + return r; +} + +inline +fn __polyvec_csubq(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] +{ + r[0:KYBER_N] = _poly_csubq(r[0:KYBER_N]); + r[KYBER_N:KYBER_N] = _poly_csubq(r[KYBER_N:KYBER_N]); + r[2*KYBER_N:KYBER_N] = _poly_csubq(r[2*KYBER_N:KYBER_N]); + + return r; +} + +inline +fn __polyvec_compress(reg u64 rp, stack u16[KYBER_VECN] a) +{ + stack u16[KYBER_VECN] aa; + reg u16 c, b; + reg u16 d; + reg u64[4] t; + reg u64 i j; + inline int k; + + i = 0; + j = 0; + + aa = __polyvec_csubq(a); + + #bounded + while (i < KYBER_VECN) + { + for k = 0 to 4 + { + t[k] = (64u)aa[(int) i]; + i += 1; + t[k] <<= 10; + t[k] += 1665; + t[k] *= 1290167; + t[k] >>= 32; + t[k] &= 0x3ff; + } + + c = t[0]; + c &= 0xff; + (u8)[rp + j] = c; + j += 1; + + b = t[0]; + b >>= 8; + c = t[1]; + c <<= 2; + c |= b; + (u8)[rp + j] = c; + j += 1; + + b = t[1]; + b >>= 6; + c = t[2]; + c <<= 4; + c |= b; + (u8)[rp + j] = c; + j += 1; + + b = t[2]; + b >>= 4; + c = t[3]; + c <<= 6; + c |= b; + (u8)[rp + j] = c; + j += 1; + + + t[3] >>= 2; + (u8)[rp + j] = t[3]; + j += 1; + } +} + +inline +fn __i_polyvec_compress(reg ptr u8[KYBER_POLYVECCOMPRESSEDBYTES] rp, stack u16[KYBER_VECN] a) -> reg ptr u8[KYBER_POLYVECCOMPRESSEDBYTES] +{ + stack u16[KYBER_VECN] aa; + reg u16 c, b; + reg u16 d; + reg u64[4] t; + reg u64 i j; + inline int k; + + i = 0; + j = 0; + + aa = __polyvec_csubq(a); + + #bounded + while (i < KYBER_VECN) + { + for k = 0 to 4 + { + t[k] = (64u)aa[(int) i]; + i += 1; + t[k] <<= 10; + t[k] += 1665; + t[k] *= 1290167; + t[k] >>= 32; + t[k] &= 0x3ff; + } + + c = t[0]; + c &= 0xff; + rp[(int) j] = c; + j += 1; + + b = t[0]; + b >>= 8; + c = t[1]; + c <<= 2; + c |= b; + rp[(int) j] = c; + j += 1; + + b = t[1]; + b >>= 6; + c = t[2]; + c <<= 4; + c |= b; + rp[(int) j] = c; + j += 1; + + b = t[2]; + b >>= 4; + c = t[3]; + c <<= 6; + c |= b; + rp[(int) j] = c; + j += 1; + + + t[3] >>= 2; + rp[(int) j] = t[3]; + j += 1; + } + + return rp; +} + +inline +fn __polyvec_decompress(reg u64 ap) -> stack u16[KYBER_VECN] +{ + stack u16[KYBER_VECN] r; + reg u32[5] t; + reg u32 d; + reg u64 i j; + inline int k; + + i = 0; + j = 0; + + #bounded + while (i < KYBER_VECN) + { + for k = 0 to 5 + { + t[k] = (32u)(u8)[ap + j]; + j += 1; + } + + d = t[1]; + t[1] >>= 2; + d &= 0x3; + d <<= 8; + t[0] |= d; + + d = t[2]; + t[2] >>= 4; + d &= 0xf; + d <<= 6; + t[1] |= d; + + d = t[3]; + t[3] >>= 6; + d &= 0x3f; + d <<= 4; + t[2] |= d; + + d = t[4]; + d <<= 2; + t[3] |= d; + + for k = 0 to 4 + { + t[k] *= KYBER_Q; + t[k] += 512; + t[k] >>= 10; + r[(int) i] = t[k]; + i += 1; + } + } + return r; +} + +inline +fn __polyvec_frombytes(reg u64 ap) -> stack u16[KYBER_VECN] +{ + stack u16[KYBER_VECN] r; + reg u64 pp; + + pp = ap; + r[0:KYBER_N] = _poly_frombytes(r[0:KYBER_N], pp); + pp += KYBER_POLYBYTES; + r[KYBER_N:KYBER_N] = _poly_frombytes(r[KYBER_N:KYBER_N], pp); + pp += KYBER_POLYBYTES; + r[2*KYBER_N:KYBER_N] = _poly_frombytes(r[2*KYBER_N:KYBER_N], pp); + + return r; +} + +inline +fn __polyvec_invntt(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] +{ + r[0:KYBER_N] = _poly_invntt(r[0:KYBER_N]); + r[KYBER_N:KYBER_N] = _poly_invntt(r[KYBER_N:KYBER_N]); + r[2*KYBER_N:KYBER_N] = _poly_invntt(r[2*KYBER_N:KYBER_N]); + + return r; +} + +inline +fn __polyvec_ntt(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] +{ + r[0:KYBER_N] = _poly_ntt(r[0:KYBER_N]); + r[KYBER_N:KYBER_N] = _poly_ntt(r[KYBER_N:KYBER_N]); + r[2*KYBER_N:KYBER_N] = _poly_ntt(r[2*KYBER_N:KYBER_N]); + + return r; +} + + +inline +fn __polyvec_pointwise_acc(stack u16[KYBER_VECN] a, stack u16[KYBER_VECN] b) -> stack u16[KYBER_N] +{ + stack u16[KYBER_N] t; + stack u16[KYBER_N] r; + + r = _poly_basemul(r, a[0:KYBER_N], b[0:KYBER_N]); + t = _poly_basemul(t, a[KYBER_N:KYBER_N], b[KYBER_N:KYBER_N]); + r = _poly_add2(r, t); + t = _poly_basemul(t, a[2*KYBER_N:KYBER_N], b[2*KYBER_N:KYBER_N]); + r = _poly_add2(r, t); + + r = __poly_reduce(r); + + return r; +} + +inline +fn __polyvec_reduce(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] +{ + r[0:KYBER_N] = __poly_reduce(r[0:KYBER_N]); + r[KYBER_N:KYBER_N] = __poly_reduce(r[KYBER_N:KYBER_N]); + r[2*KYBER_N:KYBER_N] = __poly_reduce(r[2*KYBER_N:KYBER_N]); + + return r; +} + +inline +fn __polyvec_tobytes(reg u64 rp, stack u16[KYBER_VECN] a) +{ + reg u64 pp; + + pp = rp; + a[0:KYBER_N] = _poly_tobytes(pp, a[0:KYBER_N]); + pp += KYBER_POLYBYTES; + a[KYBER_N:KYBER_N] = _poly_tobytes(pp, a[KYBER_N:KYBER_N]); + pp += KYBER_POLYBYTES; + a[2*KYBER_N:KYBER_N] = _poly_tobytes(pp, a[2*KYBER_N:KYBER_N]); +} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc new file mode 100644 index 000000000..986916c88 --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc @@ -0,0 +1,49 @@ +// Note1: KYBER_INDCPA_BYTES vs KYBER_CT_LEN + +// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 +from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" + +inline +fn __verify(reg u64 ctp, reg ptr u8[KYBER_CT_LEN] ctpc) -> reg u64 +{ + reg u64 cnd t64; + reg u8 t1 t2; + inline int i; + + cnd = 0; + + for i=0 to KYBER_CT_LEN + { + t1 = ctpc.[i]; + t2 = (u8)[ctp + i]; + t1 ^= t2; + t64 = (64u)t1; + cnd |= t64; + } + + cnd = -cnd; + cnd >>= 63; + + return cnd; +} + +inline +fn __cmov(reg ptr u8[KYBER_SYMBYTES] dst, reg u64 src cnd) -> reg ptr u8[KYBER_SYMBYTES] +{ + reg u8 t1 t2 bcond; + inline int i; + + cnd = -cnd; + + for i=0 to KYBER_SYMBYTES + { + t1 = dst.[i]; + t2 = (u8)[src + i]; + t2 = t2 ^ t1; + t2 = t2 & cnd; + t1 ^= t2; + dst.[u8 i] = t1; + } + + return dst; +} From 32b2f99281b4dd3516f2ca9e34627923c19b8a65 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 15:48:19 +0200 Subject: [PATCH 17/82] Update KEM family templates Signed-off-by: Pravek Sharma --- .../src/kem/family/kem_scheme.c | 44 ++++++++++++++++--- 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index bb027ab1e..0cfce9862 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -116,17 +116,49 @@ extern int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper {%- endfor %} {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_END +{% for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] in scheme['libjade_implementations'] %} +#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] != scheme['default_implementation'] %}_{{ 'amd64_' + impl['name'] }}{%- endif %}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ 'amd64_' + impl['name'] }}){%- endif %} +extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#endif + {%- endfor %} +{% endfor -%} {%- endif %} OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_END +{% for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] if (impl['name'] != scheme['default_implementation'] and impl['name'] in scheme['libjade_implementations']) %} + {%- if loop.first %} +#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_amd64_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_amd64_{{ impl['name'] }}){%- endif %} + {%- else %} +#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_amd64_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_amd64_{{ impl['name'] }}){%- endif %} + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(public_key, secret_key); + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- endfor %} + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#else + {%- endif %} + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#endif + {%- endif %} +{% endfor -%} #else {%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} From 71577e1f73a1033c0040b2c3fd5caede675e78a5 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 16:40:50 +0200 Subject: [PATCH 18/82] Update KEM templates Signed-off-by: Pravek Sharma --- .../src/kem/family/kem_scheme.c | 15 ++++++-- .../kem/family/kem_scheme_keypair.c.libjade | 38 ++++++++----------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index 0cfce9862..9caf6eceb 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -131,22 +131,26 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if OQS_LIBJADE_BUILD {% for scheme in schemes -%} - {%- for impl in scheme['metadata']['implementations'] if (impl['name'] != scheme['default_implementation'] and impl['name'] in scheme['libjade_implementations']) %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_amd64_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_amd64_{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_amd64_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_amd64_{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { #endif /* OQS_DIST_BUILD */ {%- endif -%} + {%- if impl['name'] in scheme['libjade_implementations'] %} {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(public_key, secret_key); + {%- else %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key); + {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ {%- endif -%} @@ -192,6 +196,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +#endif /* OQS_LIBJADE_BUILD */ +{%- endif %} } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade index 6563c954b..d7a84ccaa 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade @@ -1,40 +1,32 @@ {% for scheme in schemes -%} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] == scheme['default_implementation'] %} - - {%- if impl['signature_keypair'] %} - {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': impl['signature_keypair']}) -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- if loop.first %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} - {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_keypair"}) -%} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} - {%- endfor %} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} - {%- if loop.first %} -#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} - {%- else %} -#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} + {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { #endif /* OQS_DIST_BUILD */ - {%- endif -%} - {%- if impl['signature_keypair'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) {{ impl['signature_keypair'] }}(public_key, secret_key); - {%- else %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_keypair(public_key, secret_key); - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} + {%- endif -%} + {%- if impl['name'] in scheme['libjade_implementations'] %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(public_key, secret_key); + {%- else %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key); + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) {{ scheme['metadata']['default_keypair_signature'] }}(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ - {%- endif -%} + {%- endif -%} {%- endfor %} {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) {{ scheme['metadata']['default_keypair_signature'] }}(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} From 87d39de02e3b6e96bc99164881300988d975a431 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 17:07:22 +0200 Subject: [PATCH 19/82] Update KEM templates Signed-off-by: Pravek Sharma --- .../src/kem/family/kem_scheme.c | 93 ++++++++++++++++--- .../kem/family/kem_scheme_keypair.c.libjade | 8 +- 2 files changed, 84 insertions(+), 17 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index 9caf6eceb..e8b996081 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -117,20 +117,21 @@ extern int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} {% for scheme in schemes -%} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] in scheme['libjade_implementations'] %} #if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] != scheme['default_implementation'] %}_{{ 'amd64_' + impl['name'] }}{%- endif %}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ 'amd64_' + impl['name'] }}){%- endif %} extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - {%- endfor %} + {% endfor -%} {% endfor -%} -{%- endif %} +{% endif %} OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { -{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] -%} #if OQS_LIBJADE_BUILD -{% for scheme in schemes -%} +{%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} #if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} @@ -163,7 +164,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * #endif {%- endif %} {% endfor -%} -#else +#else /*OQS_LIBJADE_BUILD*/ {%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -202,12 +203,42 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] -%} #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_END +{%- for scheme in schemes %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- if loop.first %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} + {%- else %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- if impl['name'] in scheme['libjade_implementations'] %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(public_key, secret_key); + {%- else %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(public_key, secret_key); + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- endfor %} + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else + {%- endif %} + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#endif + {%- endif %} +{% endfor -%} +#else /*OQS_LIBJADE_BUILD*/ {%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -240,15 +271,48 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +#endif /* OQS_LIBJADE_BUILD */ +{%- endif %} } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] -%} #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_END +{%- for scheme in schemes %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- if loop.first %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} + {%- else %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- if impl['name'] in scheme['libjade_implementations'] %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_dec(public_key, secret_key); + {%- else %} + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(public_key, secret_key); + {%- endif %} + {%- if 'required_flags' in impl and impl['required_flags'] %} +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_dec(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ + {%- endif -%} + {%- endfor %} + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else + {%- endif %} + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_dec(public_key, secret_key); + {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} +#endif + {%- endif %} +{% endfor -%} +#else /*OQS_LIBJADE_BUILD*/ {%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -281,6 +345,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} +#endif /* OQS_LIBJADE_BUILD */ +{%- endif %} } #endif diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade index d7a84ccaa..f43e3897c 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade @@ -11,14 +11,14 @@ #endif /* OQS_DIST_BUILD */ {%- endif -%} {%- if impl['name'] in scheme['libjade_implementations'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(public_key, secret_key); {%- else %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(public_key, secret_key); {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ {%- endif -%} @@ -26,7 +26,7 @@ {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} From 0bd3be8a73e64abacd8bd39dd6fc5f5830245888 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 17:38:35 +0200 Subject: [PATCH 20/82] Update copy_from_upstream.yml with libjade implementation info Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/copy_from_upstream/copy_from_upstream.yml b/scripts/copy_from_upstream/copy_from_upstream.yml index 904a40991..cd6cccc85 100644 --- a/scripts/copy_from_upstream/copy_from_upstream.yml +++ b/scripts/copy_from_upstream/copy_from_upstream.yml @@ -131,11 +131,17 @@ kems: pqclean_scheme: kyber512 pretty_name_full: Kyber512 libjade_implementation: True + libjade_implementations: + - ref + - avx2 - scheme: "768" pqclean_scheme: kyber768 pretty_name_full: Kyber768 libjade_implementation: True + libjade_implementations: + - ref + - avx2 - scheme: "1024" pqclean_scheme: kyber1024 From a1450bf297204b94d394ea11ad0b1e8d2f2e19f8 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 17:39:31 +0200 Subject: [PATCH 21/82] Update KEM templates Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/src/kem/family/CMakeLists.txt | 2 +- scripts/copy_from_upstream/src/kem/family/kem_scheme.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt index cb55d35bd..13428e604 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt @@ -65,7 +65,7 @@ endif() {%- endfor -%} {%- endfor %} -{%- if libjade_implementation is defined %} +{% if libjade_implementation is defined -%} ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_END diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index e8b996081..e60772083 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -129,7 +129,7 @@ extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_dec {% endif %} OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { -{%- if libjade_implementation is defined and scheme['libjade_implementation'] -%} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if OQS_LIBJADE_BUILD {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} @@ -203,7 +203,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -{%- if libjade_implementation is defined and scheme['libjade_implementation'] -%} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if OQS_LIBJADE_BUILD {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} @@ -277,7 +277,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c } OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -{%- if libjade_implementation is defined and scheme['libjade_implementation'] -%} +{%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if OQS_LIBJADE_BUILD {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} From 1bc0ff72a382eb3441df404ee81fc92f3639f261 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 17:52:39 +0200 Subject: [PATCH 22/82] Edit KEM templates Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/src/kem/family/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt index 13428e604..ca9d41eac 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt @@ -69,7 +69,7 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_END -{%- endif %} +{% endif -%} set({{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} PARENT_SCOPE) From 06b1036be5f357bfe6f31109eae252a40c02932b Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 17:52:58 +0200 Subject: [PATCH 23/82] Run copy_from_upstream.py Signed-off-by: Pravek Sharma --- src/kem/kyber/CMakeLists.txt | 2 +- src/kem/kyber/kem_kyber_512.c | 88 +++++++++++++++++++++++++++++------ src/kem/kyber/kem_kyber_768.c | 88 +++++++++++++++++++++++++++++------ 3 files changed, 149 insertions(+), 29 deletions(-) diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 88fcc41ea..08444ec4e 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -88,6 +88,7 @@ if(OQS_ENABLE_KEM_kyber_1024_aarch64) endif() set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() + ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START if(OQS_ENABLE_LIBJADE_KEM_kyber_512) @@ -120,5 +121,4 @@ if(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_END - set(KYBER_OBJS ${_KYBER_OBJS} PARENT_SCOPE) diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index a0090fb90..210c125fd 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -45,29 +45,46 @@ extern int PQCLEAN_KYBER512_AARCH64_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) extern int PQCLEAN_KYBER512_AARCH64_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_START - #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512) extern int libjade_kyber512_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber512_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber512_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - + #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) extern int libjade_kyber512_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber512_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber512_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_END + OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_END +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) libjade_kyber512_amd64_avx2_keypair(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ +#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_keypair(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ #else + return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); +#endif +#else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -91,14 +108,35 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre #else return (OQS_STATUS) pqcrystals_kyber512_ref_keypair(public_key, secret_key); #endif +#endif /* OQS_LIBJADE_BUILD */ } OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_END +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) libjade_kyber512_amd64_avx2_enc(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ +#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_enc(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ #else + return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); +#endif +#else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -122,14 +160,35 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared #else return (OQS_STATUS) pqcrystals_kyber512_ref_enc(ciphertext, shared_secret, public_key); #endif +#endif /* OQS_LIBJADE_BUILD */ } OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_END +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) libjade_kyber512_amd64_avx2_dec(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ +#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ #else + return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); +#endif +#else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -153,6 +212,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_ #else return (OQS_STATUS) pqcrystals_kyber512_ref_dec(shared_secret, ciphertext, secret_key); #endif +#endif /* OQS_LIBJADE_BUILD */ } #endif diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index 911340b60..c7a882010 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -45,29 +45,46 @@ extern int PQCLEAN_KYBER768_AARCH64_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) extern int PQCLEAN_KYBER768_AARCH64_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_START - #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768) extern int libjade_kyber768_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber768_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber768_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - + #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) extern int libjade_kyber768_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber768_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber768_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_END + OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_KEYPAIR_END +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) libjade_kyber768_amd64_avx2_keypair(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ +#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_keypair(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ #else + return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); +#endif +#else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -91,14 +108,35 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre #else return (OQS_STATUS) pqcrystals_kyber768_ref_keypair(public_key, secret_key); #endif +#endif /* OQS_LIBJADE_BUILD */ } OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_ENCAPS_END +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) libjade_kyber768_amd64_avx2_enc(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ +#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_enc(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ #else + return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); +#endif +#else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -122,14 +160,35 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared #else return (OQS_STATUS) pqcrystals_kyber768_ref_enc(ciphertext, shared_secret, public_key); #endif +#endif /* OQS_LIBJADE_BUILD */ } OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_START - -///// OQS_COPY_FROM_LIBJADE_FRAGMENT_KEM_SCHEME_DECAPS_END +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) libjade_kyber768_amd64_avx2_dec(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ +#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) +#if defined(OQS_DIST_BUILD) + if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { +#endif /* OQS_DIST_BUILD */ + return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(public_key, secret_key); +#if defined(OQS_DIST_BUILD) + } else { + return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); + } +#endif /* OQS_DIST_BUILD */ #else + return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); +#endif +#else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -153,6 +212,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_ #else return (OQS_STATUS) pqcrystals_kyber768_ref_dec(shared_secret, ciphertext, secret_key); #endif +#endif /* OQS_LIBJADE_BUILD */ } #endif From 36a1dcf9b09b952810e677a193e6a5226a9955bb Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 17:58:10 +0200 Subject: [PATCH 24/82] Update copy_from_upstream.py Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 3f26196bb..75f1f3195 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -632,18 +632,6 @@ def process_families(instructions, basedir, with_kat, with_generator, with_libja libjade=True ) - for scheme in family['schemes']: - for template in instructions['templates'][family['type'] + '_scheme.c']: - replacer_contextual( - os.path.join(os.environ['LIBOQS_DIR'], 'src', family['type'], family['name'], - family['type'] + '_{}_{}.c'.format(family['name'], scheme['scheme_c'])), - os.path.join('src', family['type'], 'family', template), - '/////', - family, - scheme, - libjade=True - ) - def copy_from_upstream(): for t in ["kem", "sig"]: From 70fd60f760d10ae7425e06eecb01f9744b69d618 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 18:32:12 +0200 Subject: [PATCH 25/82] Fix KEM temlates Signed-off-by: Pravek Sharma --- .../src/kem/family/CMakeLists.txt.libjade | 2 +- scripts/copy_from_upstream/src/kem/family/kem_scheme.c | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index 0afa4610a..c7eebc27d 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -32,7 +32,7 @@ if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_sch if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}{%- endif %}) add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- endif %} - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/include) target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] -%} {%- set opts %}{% for flag in impl['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {% elif flag == 'sse4_1' -%} sse4.1 {% elif flag == 'pclmulqdq' -%} pclmul {% else -%}{{ flag }} {% endif %}{% endif -%}{% endfor %}{% endset %} diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index e60772083..7bf734678 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -118,13 +118,13 @@ extern int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} {% for scheme in schemes -%} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] in scheme['libjade_implementations'] %} +{%- for impl in scheme['metadata']['implementations'] if impl['name'] in scheme['libjade_implementations'] %} #if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] != scheme['default_implementation'] %}_{{ 'amd64_' + impl['name'] }}{%- endif %}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ 'amd64_' + impl['name'] }}){%- endif %} extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - {% endfor -%} +{% endfor -%} {% endfor -%} {% endif %} @@ -159,7 +159,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} @@ -233,7 +233,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} @@ -307,7 +307,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_dec(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} From 421886aea2cc92a58425b3a5699ea00568fc7d73 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 18:33:11 +0200 Subject: [PATCH 26/82] Run copy_from_upstream.py Signed-off-by: Pravek Sharma --- src/kem/kyber/CMakeLists.txt | 8 ++++---- src/kem/kyber/kem_kyber_512.c | 10 +++++----- src/kem/kyber/kem_kyber_768.c | 10 +++++----- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 08444ec4e..2c3edafa0 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -93,14 +93,14 @@ endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_512) add_library(kyber_512_amd64_ref OBJECT kem_kyber_512.c libjade_kyber512_amd64_ref/api.c libjade_kyber512_amd64_ref/kem.s) - target_include_directories(kyber_512_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_ref) + target_include_directories(kyber_512_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_ref/include) target_include_directories(kyber_512_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) add_library(kyber_512_amd64_avx2 OBJECT libjade_kyber512_amd64_avx2/api.c libjade_kyber512_amd64_avx2/kem.s) - target_include_directories(kyber_512_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_avx2) + target_include_directories(kyber_512_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_avx2/include) target_include_directories(kyber_512_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) target_compile_options(kyber_512_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) set(_KYBER_OBJS ${_KYBER_OBJS} $) @@ -108,14 +108,14 @@ endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768) add_library(kyber_768_amd64_ref OBJECT kem_kyber_768.c libjade_kyber768_amd64_ref/api.c libjade_kyber768_amd64_ref/kem.s) - target_include_directories(kyber_768_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_ref) + target_include_directories(kyber_768_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_ref/include) target_include_directories(kyber_768_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) add_library(kyber_768_amd64_avx2 OBJECT libjade_kyber768_amd64_avx2/api.c libjade_kyber768_amd64_avx2/kem.s) - target_include_directories(kyber_768_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_avx2) + target_include_directories(kyber_768_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_avx2/include) target_include_directories(kyber_768_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) target_compile_options(kyber_768_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) set(_KYBER_OBJS ${_KYBER_OBJS} $) diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index 210c125fd..26dadaac3 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -51,13 +51,13 @@ extern int libjade_kyber512_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber512_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber512_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - + #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) extern int libjade_kyber512_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber512_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber512_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - + OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD @@ -82,7 +82,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) @@ -134,7 +134,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) @@ -186,7 +186,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_ } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index c7a882010..bf69a83d3 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -51,13 +51,13 @@ extern int libjade_kyber768_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber768_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber768_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - + #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) extern int libjade_kyber768_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); extern int libjade_kyber768_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); extern int libjade_kyber768_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif - + OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD @@ -82,7 +82,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) @@ -134,7 +134,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) @@ -186,7 +186,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_ } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) From d5bc95604a3a204ba1cf18e083db18e0e09402ce Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 18:34:56 +0200 Subject: [PATCH 27/82] Add libjade_shim Signed-off-by: Pravek Sharma --- src/common/CMakeLists.txt | 1 + src/common/libjade_shims/libjade_randombytes.c | 9 +++++++++ src/common/libjade_shims/libjade_randombytes.h | 11 +++++++++++ 3 files changed, 21 insertions(+) create mode 100644 src/common/libjade_shims/libjade_randombytes.c create mode 100644 src/common/libjade_shims/libjade_randombytes.h diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index 73b917e07..f0bc12c93 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -78,6 +78,7 @@ add_library(common OBJECT ${AES_IMPL} aes/aes.c common.c pqclean_shims/fips202.c pqclean_shims/fips202x4.c + libjade_shims/libjade_randombytes.c rand/rand.c) # Implementations of the internal API to be exposed to test programs diff --git a/src/common/libjade_shims/libjade_randombytes.c b/src/common/libjade_shims/libjade_randombytes.c new file mode 100644 index 000000000..d2c9bb09b --- /dev/null +++ b/src/common/libjade_shims/libjade_randombytes.c @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: MIT + +#include +#include "libjade_randombytes.h" + +void __jasmin_syscall_randombytes__(uint8_t *_x, uint64_t xlen) { + OQS_randombytes(_x, xlen); + // return _x; +} diff --git a/src/common/libjade_shims/libjade_randombytes.h b/src/common/libjade_shims/libjade_randombytes.h new file mode 100644 index 000000000..45abb4ebf --- /dev/null +++ b/src/common/libjade_shims/libjade_randombytes.h @@ -0,0 +1,11 @@ +// SPDX-License-Identifier: MIT + +#ifndef LIBJADE_RANDOMBYTES_H +#define LIBJADE_RANDOMBYTES_H + +#include +#include + +void __jasmin_syscall_randombytes__(uint8_t *_x, uint64_t xlen) __asm__("__jasmin_syscall_randombytes__"); + +#endif // LIBJADE_RANDOMBYTES_H From 79ccabf71745ce0e6785e671a8e5c02ba99885bc Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 18:35:42 +0200 Subject: [PATCH 28/82] Add jasmin/libjade namespaces to test_binary.py Signed-off-by: Pravek Sharma --- tests/test_binary.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_binary.py b/tests/test_binary.py index d212f416d..d82ff1ee4 100644 --- a/tests/test_binary.py +++ b/tests/test_binary.py @@ -33,7 +33,7 @@ def test_namespace(): symbols.append(line) # ideally this would be just ['oqs', 'pqclean'], but contains exceptions (e.g., providing compat implementations of unavailable platform functions) - namespaces = ['oqs', 'pqclean', 'keccak', 'pqcrystals', 'init', 'fini', 'seedexpander', '__x86.get_pc_thunk'] + namespaces = ['oqs', 'pqclean', 'keccak', 'pqcrystals', 'init', 'fini', 'seedexpander', '__x86.get_pc_thunk', 'libjade', 'jade', '__jade', '__jasmin_syscall'] non_namespaced = [] for symbolstr in symbols: From 6f5a9685c95f6f9d34702841fdd3a900ec7bfaa2 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 18:47:25 +0200 Subject: [PATCH 29/82] Update testing Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 7 +++++++ .github/workflows/weekly.yml | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index ab0213ef3..b5d3977ce 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -23,6 +23,12 @@ jobs: container: openquantumsafe/ci-ubuntu-focal-x86_64:latest runs-on: ubuntu-latest steps: + - name: Setup nix + uses: cachix/install-nix-action@v26 + - run: nix-channel --add https://nixos.org/channels/nixos-23.11 nixpkgs + - run: nix-channel --update + - name: Setup jasmin-compiler + run: nix-env -iA nixpkgs.jasmin-compiler - name: Checkout code uses: actions/checkout@v4 - name: Verify copy_from_upstream state @@ -34,6 +40,7 @@ jobs: cd scripts/copy_from_upstream && \ ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ python3 copy_from_upstream.py copy && \ + python3 copy_from_upstream.py libjade && \ ! git status | grep modified buildcheck: diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index 327e04d16..d59abea37 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -22,6 +22,16 @@ jobs: CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=haswell -DCMAKE_BUILD_TYPE=Debug -DOQS_ENABLE_TEST_CONSTANT_TIME=ON PYTEST_ARGS: --numprocesses=auto -k 'test_constant_time' SKIP_ALGS: 'SPHINCS\+-SHA(.)*s-simple,SPHINCS\+-SHAKE-(.)*,Classic-McEliece-[^3](.)*' + - name: verified_generic + container: openquantumsafe/ci-ubuntu-focal-x86_64:latest + CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=generic -DCMAKE_BUILD_TYPE=Debug -DOQS_LIBJADE_BUILD=ON -DOQS_ENABLE_TEST_CONSTANT_TIME=ON + PYTEST_ARGS: --numprocesses=auto -k 'test_constant_time' + SKIP_ALGS: 'SPHINCS\+-SHA(.)*s-simple,SPHINCS\+-SHAKE-(.)*,Classic-McEliece-[^3](.)*' + - name: verified_extensions + container: openquantumsafe/ci-ubuntu-focal-x86_64:latest + CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=haswell -DCMAKE_BUILD_TYPE=Debug -DOQS_LIBJADE_BUILD=ON -DOQS_ENABLE_TEST_CONSTANT_TIME=ON + PYTEST_ARGS: --numprocesses=auto -k 'test_constant_time' + SKIP_ALGS: 'SPHINCS\+-SHA(.)*s-simple,SPHINCS\+-SHAKE-(.)*,Classic-McEliece-[^3](.)*' container: image: ${{ matrix.container }} steps: From 1b6034f6f6b02666c76afd1d5f89f6691d397cf1 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 18:48:30 +0200 Subject: [PATCH 30/82] Allow manually triggering CI tests Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 2 +- .github/workflows/weekly.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index b5d3977ce..5ebac59bf 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -1,6 +1,6 @@ name: Linux and MacOS tests -on: [push, pull_request] +on: [push, pull_request, workflow_dispatch] jobs: diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index d59abea37..917d0b3bb 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -3,6 +3,7 @@ name: Weekly extended tests on: schedule: - cron: "5 0 * * 0" + workflow_dispatch: jobs: From f418438190c2a91d00dde54cda13e020cc6f9950 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 18:55:16 +0200 Subject: [PATCH 31/82] Change container for upstreamcheck in unix.yml Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index 5ebac59bf..1553603a5 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -20,7 +20,7 @@ jobs: upstreamcheck: name: Check upstream code is properly integrated - container: openquantumsafe/ci-ubuntu-focal-x86_64:latest + container: praveksharma/ci-ubuntu-focal-x86_64:latest runs-on: ubuntu-latest steps: - name: Setup nix From 109092e523aaf3ba27639093c793b2be80ec106e Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 21:07:18 +0200 Subject: [PATCH 32/82] Update copy_from_upstream.py Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 75f1f3195..bab2993ae 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -674,6 +674,8 @@ def copy_from_libjade(): process_families(instructions, os.environ['LIBOQS_DIR'], True, False, True) replacer('.CMake/alg_support.cmake', instructions, '#####', libjade=True) replacer('src/oqsconfig.h.cmake', instructions, '/////', libjade=True) + if not keepdata: + shutil.rmtree('repos') def verify_from_upstream(): From f8ca495e0238996795e040093153a814a47e2307 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 22:11:11 +0200 Subject: [PATCH 33/82] Edit unix.yml Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index 1553603a5..99525af9c 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -31,7 +31,7 @@ jobs: run: nix-env -iA nixpkgs.jasmin-compiler - name: Checkout code uses: actions/checkout@v4 - - name: Verify copy_from_upstream state + - name: Verify copy_from_upstream state after "copy" run: | git config --global user.name "ciuser" && \ git config --global user.email "ci@openquantumsafe.org" && \ @@ -40,6 +40,10 @@ jobs: cd scripts/copy_from_upstream && \ ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ python3 copy_from_upstream.py copy && \ + ! git status | grep modified + - name: Verify copy_from_upstream state after "copy" + run: | + cd scripts/copy_from_upstream && \ python3 copy_from_upstream.py libjade && \ ! git status | grep modified From 578eab76a2fe2fcfd18527c63df4e50bb93831f3 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 3 Apr 2024 22:16:13 +0200 Subject: [PATCH 34/82] Edit unix.yml Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index 99525af9c..0f52aa3af 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -41,9 +41,14 @@ jobs: ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ python3 copy_from_upstream.py copy && \ ! git status | grep modified - - name: Verify copy_from_upstream state after "copy" + - name: Verify copy_from_upstream state after "libjade" run: | + git config --global user.name "ciuser" && \ + git config --global user.email "ci@openquantumsafe.org" && \ + export LIBOQS_DIR=`pwd` && \ + git config --global --add safe.directory $LIBOQS_DIR && \ cd scripts/copy_from_upstream && \ + ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ python3 copy_from_upstream.py libjade && \ ! git status | grep modified From 176c5cb5fba4879a60ad21c129403b5489c9285b Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 4 Apr 2024 20:11:10 +0200 Subject: [PATCH 35/82] Restrict copying of code from libjade repo to relevant files Signed-off-by: Pravek Sharma --- .../copy_from_upstream/copy_from_upstream.py | 33 ++++++++++++------- 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index bab2993ae..133185911 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -461,19 +461,28 @@ def handle_implementation(impl, family, scheme, dst_basedir): except FileExistsError as fee: print(fee) pass - # determine list of files to copy: - if 'sources' in i: - srcs = i['sources'].split(" ") - for s in srcs: - # Copy recursively only in case of directories not with plain files to avoid copying over symbolic links - if os.path.isfile(os.path.join(origfolder, s)): - subprocess.run(['cp', os.path.join(origfolder, s), os.path.join(srcfolder, os.path.basename(s))]) - else: - subprocess.run( - ['cp', '-r', os.path.join(origfolder, s), os.path.join(srcfolder, os.path.basename(s))]) + if upstream_location == 'libjade': + # Flatten directory structure while copying relevant files from libjade repo + for root, _, files in os.walk(origfolder): + for file in files: + if os.path.splitext(file)[1].lower() in ['.c', '.h', '.s']: + source_path = os.path.join(root, file) + dest_path = os.path.join(srcfolder, file) + subprocess.run(['cp', source_path, dest_path]) else: - subprocess.run(['cp', '-pr', os.path.join(origfolder, '.'), srcfolder]) - # raise Exception("Malformed YML file: No sources listed to copy. Check upstream YML file." ) + # determine list of files to copy: + if 'sources' in i: + srcs = i['sources'].split(" ") + for s in srcs: + # Copy recursively only in case of directories not with plain files to avoid copying over symbolic links + if os.path.isfile(os.path.join(origfolder, s)): + subprocess.run(['cp', os.path.join(origfolder, s), os.path.join(srcfolder, os.path.basename(s))]) + else: + subprocess.run( + ['cp', '-r', os.path.join(origfolder, s), os.path.join(srcfolder, os.path.basename(s))]) + else: + subprocess.run(['cp', '-pr', os.path.join(origfolder, '.'), srcfolder]) + # raise Exception("Malformed YML file: No sources listed to copy. Check upstream YML file." ) else: raise Exception("Mandatory argument upstream_location is missing") From f2c6c043ad742d5db12e609fe0768f2a72630b15 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 4 Apr 2024 20:13:52 +0200 Subject: [PATCH 36/82] Remove irrelevant libjade code Signed-off-by: Pravek Sharma --- .../libjade_kyber512_amd64_avx2/.deps/kem.s.d | 1 - .../libjade_kyber512_amd64_avx2/Makefile | 3 - .../{include => }/api.h | 0 .../gen_matrix.jinc | 658 --------------- .../libjade_kyber512_amd64_avx2/indcpa.jinc | 217 ----- .../libjade_kyber512_amd64_avx2/kem.jazz | 66 -- .../libjade_kyber512_amd64_ref/.deps/kem.s.d | 1 - .../kyber/libjade_kyber512_amd64_ref/Makefile | 2 - .../{include => }/api.h | 0 .../libjade_kyber512_amd64_ref/indcpa.jinc | 242 ------ .../kyber/libjade_kyber512_amd64_ref/kem.jazz | 66 -- .../libjade_kyber768_amd64_avx2/.deps/kem.s.d | 1 - .../libjade_kyber768_amd64_avx2/Makefile | 3 - .../{include => }/api.h | 0 .../gen_matrix.jinc | 790 ------------------ .../libjade_kyber768_amd64_avx2/indcpa.jinc | 218 ----- .../libjade_kyber768_amd64_avx2/kem.jazz | 66 -- .../libjade_kyber768_amd64_ref/.deps/kem.s.d | 1 - .../kyber/libjade_kyber768_amd64_ref/Makefile | 4 - .../{include => }/api.h | 0 .../libjade_kyber768_amd64_ref/indcpa.jinc | 254 ------ .../kyber/libjade_kyber768_amd64_ref/kem.jazz | 66 -- .../kyber/libjade_kyber768_amd64_ref/kem.jinc | 150 ---- .../libjade_kyber768_amd64_ref/params.jinc | 21 - .../libjade_kyber768_amd64_ref/poly.jinc | 731 ---------------- .../libjade_kyber768_amd64_ref/polyvec.jinc | 285 ------- .../libjade_kyber768_amd64_ref/verify.jinc | 49 -- 27 files changed, 3895 deletions(-) delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile rename src/kem/kyber/libjade_kyber512_amd64_avx2/{include => }/api.h (100%) delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/Makefile rename src/kem/kyber/libjade_kyber512_amd64_ref/{include => }/api.h (100%) delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile rename src/kem/kyber/libjade_kyber768_amd64_avx2/{include => }/api.h (100%) delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/Makefile rename src/kem/kyber/libjade_kyber768_amd64_ref/{include => }/api.h (100%) delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d b/src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d deleted file mode 100644 index e8c06cc3b..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/.deps/kem.s.d +++ /dev/null @@ -1 +0,0 @@ -kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/amd64/avx2/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/common/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_4x_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake256/amd64/avx2/shake256_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/shuffle.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/consts.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/amd64/avx2/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake128/amd64/avx2/shake128_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/kem.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile b/src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile deleted file mode 100644 index eec5ee0e3..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -SRCS := kem.jazz -include ../../../../../Makefile.common - diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/include/api.h b/src/kem/kyber/libjade_kyber512_amd64_avx2/api.h similarity index 100% rename from src/kem/kyber/libjade_kyber512_amd64_avx2/include/api.h rename to src/kem/kyber/libjade_kyber512_amd64_avx2/api.h diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc b/src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc deleted file mode 100644 index 98ed9b7ab..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/gen_matrix.jinc +++ /dev/null @@ -1,658 +0,0 @@ -from Jade require "common/keccak/common/fips202_DIRTY.jinc" -from Jade require "common/keccak/common/fips202_4x_DIRTY.jinc" -from Jade require "crypto_xof/shake128/amd64/avx2/shake128_4x.jinc" - -param int GENMATRIX_NBLOCKS = ((12*KYBER_N/8*4096/KYBER_Q + SHAKE128_RATE)/SHAKE128_RATE); -param int REJ_UNIFORM_AVX_BUFLEN = GENMATRIX_NBLOCKS * SHAKE128_RATE; - -u8[2048] ru_idx = {-1, -1, -1, -1, -1, -1, -1, -1, - 0, -1, -1, -1, -1, -1, -1, -1, - 2, -1, -1, -1, -1, -1, -1, -1, - 0, 2, -1, -1, -1, -1, -1, -1, - 4, -1, -1, -1, -1, -1, -1, -1, - 0, 4, -1, -1, -1, -1, -1, -1, - 2, 4, -1, -1, -1, -1, -1, -1, - 0, 2, 4, -1, -1, -1, -1, -1, - 6, -1, -1, -1, -1, -1, -1, -1, - 0, 6, -1, -1, -1, -1, -1, -1, - 2, 6, -1, -1, -1, -1, -1, -1, - 0, 2, 6, -1, -1, -1, -1, -1, - 4, 6, -1, -1, -1, -1, -1, -1, - 0, 4, 6, -1, -1, -1, -1, -1, - 2, 4, 6, -1, -1, -1, -1, -1, - 0, 2, 4, 6, -1, -1, -1, -1, - 8, -1, -1, -1, -1, -1, -1, -1, - 0, 8, -1, -1, -1, -1, -1, -1, - 2, 8, -1, -1, -1, -1, -1, -1, - 0, 2, 8, -1, -1, -1, -1, -1, - 4, 8, -1, -1, -1, -1, -1, -1, - 0, 4, 8, -1, -1, -1, -1, -1, - 2, 4, 8, -1, -1, -1, -1, -1, - 0, 2, 4, 8, -1, -1, -1, -1, - 6, 8, -1, -1, -1, -1, -1, -1, - 0, 6, 8, -1, -1, -1, -1, -1, - 2, 6, 8, -1, -1, -1, -1, -1, - 0, 2, 6, 8, -1, -1, -1, -1, - 4, 6, 8, -1, -1, -1, -1, -1, - 0, 4, 6, 8, -1, -1, -1, -1, - 2, 4, 6, 8, -1, -1, -1, -1, - 0, 2, 4, 6, 8, -1, -1, -1, - 10, -1, -1, -1, -1, -1, -1, -1, - 0, 10, -1, -1, -1, -1, -1, -1, - 2, 10, -1, -1, -1, -1, -1, -1, - 0, 2, 10, -1, -1, -1, -1, -1, - 4, 10, -1, -1, -1, -1, -1, -1, - 0, 4, 10, -1, -1, -1, -1, -1, - 2, 4, 10, -1, -1, -1, -1, -1, - 0, 2, 4, 10, -1, -1, -1, -1, - 6, 10, -1, -1, -1, -1, -1, -1, - 0, 6, 10, -1, -1, -1, -1, -1, - 2, 6, 10, -1, -1, -1, -1, -1, - 0, 2, 6, 10, -1, -1, -1, -1, - 4, 6, 10, -1, -1, -1, -1, -1, - 0, 4, 6, 10, -1, -1, -1, -1, - 2, 4, 6, 10, -1, -1, -1, -1, - 0, 2, 4, 6, 10, -1, -1, -1, - 8, 10, -1, -1, -1, -1, -1, -1, - 0, 8, 10, -1, -1, -1, -1, -1, - 2, 8, 10, -1, -1, -1, -1, -1, - 0, 2, 8, 10, -1, -1, -1, -1, - 4, 8, 10, -1, -1, -1, -1, -1, - 0, 4, 8, 10, -1, -1, -1, -1, - 2, 4, 8, 10, -1, -1, -1, -1, - 0, 2, 4, 8, 10, -1, -1, -1, - 6, 8, 10, -1, -1, -1, -1, -1, - 0, 6, 8, 10, -1, -1, -1, -1, - 2, 6, 8, 10, -1, -1, -1, -1, - 0, 2, 6, 8, 10, -1, -1, -1, - 4, 6, 8, 10, -1, -1, -1, -1, - 0, 4, 6, 8, 10, -1, -1, -1, - 2, 4, 6, 8, 10, -1, -1, -1, - 0, 2, 4, 6, 8, 10, -1, -1, - 12, -1, -1, -1, -1, -1, -1, -1, - 0, 12, -1, -1, -1, -1, -1, -1, - 2, 12, -1, -1, -1, -1, -1, -1, - 0, 2, 12, -1, -1, -1, -1, -1, - 4, 12, -1, -1, -1, -1, -1, -1, - 0, 4, 12, -1, -1, -1, -1, -1, - 2, 4, 12, -1, -1, -1, -1, -1, - 0, 2, 4, 12, -1, -1, -1, -1, - 6, 12, -1, -1, -1, -1, -1, -1, - 0, 6, 12, -1, -1, -1, -1, -1, - 2, 6, 12, -1, -1, -1, -1, -1, - 0, 2, 6, 12, -1, -1, -1, -1, - 4, 6, 12, -1, -1, -1, -1, -1, - 0, 4, 6, 12, -1, -1, -1, -1, - 2, 4, 6, 12, -1, -1, -1, -1, - 0, 2, 4, 6, 12, -1, -1, -1, - 8, 12, -1, -1, -1, -1, -1, -1, - 0, 8, 12, -1, -1, -1, -1, -1, - 2, 8, 12, -1, -1, -1, -1, -1, - 0, 2, 8, 12, -1, -1, -1, -1, - 4, 8, 12, -1, -1, -1, -1, -1, - 0, 4, 8, 12, -1, -1, -1, -1, - 2, 4, 8, 12, -1, -1, -1, -1, - 0, 2, 4, 8, 12, -1, -1, -1, - 6, 8, 12, -1, -1, -1, -1, -1, - 0, 6, 8, 12, -1, -1, -1, -1, - 2, 6, 8, 12, -1, -1, -1, -1, - 0, 2, 6, 8, 12, -1, -1, -1, - 4, 6, 8, 12, -1, -1, -1, -1, - 0, 4, 6, 8, 12, -1, -1, -1, - 2, 4, 6, 8, 12, -1, -1, -1, - 0, 2, 4, 6, 8, 12, -1, -1, - 10, 12, -1, -1, -1, -1, -1, -1, - 0, 10, 12, -1, -1, -1, -1, -1, - 2, 10, 12, -1, -1, -1, -1, -1, - 0, 2, 10, 12, -1, -1, -1, -1, - 4, 10, 12, -1, -1, -1, -1, -1, - 0, 4, 10, 12, -1, -1, -1, -1, - 2, 4, 10, 12, -1, -1, -1, -1, - 0, 2, 4, 10, 12, -1, -1, -1, - 6, 10, 12, -1, -1, -1, -1, -1, - 0, 6, 10, 12, -1, -1, -1, -1, - 2, 6, 10, 12, -1, -1, -1, -1, - 0, 2, 6, 10, 12, -1, -1, -1, - 4, 6, 10, 12, -1, -1, -1, -1, - 0, 4, 6, 10, 12, -1, -1, -1, - 2, 4, 6, 10, 12, -1, -1, -1, - 0, 2, 4, 6, 10, 12, -1, -1, - 8, 10, 12, -1, -1, -1, -1, -1, - 0, 8, 10, 12, -1, -1, -1, -1, - 2, 8, 10, 12, -1, -1, -1, -1, - 0, 2, 8, 10, 12, -1, -1, -1, - 4, 8, 10, 12, -1, -1, -1, -1, - 0, 4, 8, 10, 12, -1, -1, -1, - 2, 4, 8, 10, 12, -1, -1, -1, - 0, 2, 4, 8, 10, 12, -1, -1, - 6, 8, 10, 12, -1, -1, -1, -1, - 0, 6, 8, 10, 12, -1, -1, -1, - 2, 6, 8, 10, 12, -1, -1, -1, - 0, 2, 6, 8, 10, 12, -1, -1, - 4, 6, 8, 10, 12, -1, -1, -1, - 0, 4, 6, 8, 10, 12, -1, -1, - 2, 4, 6, 8, 10, 12, -1, -1, - 0, 2, 4, 6, 8, 10, 12, -1, - 14, -1, -1, -1, -1, -1, -1, -1, - 0, 14, -1, -1, -1, -1, -1, -1, - 2, 14, -1, -1, -1, -1, -1, -1, - 0, 2, 14, -1, -1, -1, -1, -1, - 4, 14, -1, -1, -1, -1, -1, -1, - 0, 4, 14, -1, -1, -1, -1, -1, - 2, 4, 14, -1, -1, -1, -1, -1, - 0, 2, 4, 14, -1, -1, -1, -1, - 6, 14, -1, -1, -1, -1, -1, -1, - 0, 6, 14, -1, -1, -1, -1, -1, - 2, 6, 14, -1, -1, -1, -1, -1, - 0, 2, 6, 14, -1, -1, -1, -1, - 4, 6, 14, -1, -1, -1, -1, -1, - 0, 4, 6, 14, -1, -1, -1, -1, - 2, 4, 6, 14, -1, -1, -1, -1, - 0, 2, 4, 6, 14, -1, -1, -1, - 8, 14, -1, -1, -1, -1, -1, -1, - 0, 8, 14, -1, -1, -1, -1, -1, - 2, 8, 14, -1, -1, -1, -1, -1, - 0, 2, 8, 14, -1, -1, -1, -1, - 4, 8, 14, -1, -1, -1, -1, -1, - 0, 4, 8, 14, -1, -1, -1, -1, - 2, 4, 8, 14, -1, -1, -1, -1, - 0, 2, 4, 8, 14, -1, -1, -1, - 6, 8, 14, -1, -1, -1, -1, -1, - 0, 6, 8, 14, -1, -1, -1, -1, - 2, 6, 8, 14, -1, -1, -1, -1, - 0, 2, 6, 8, 14, -1, -1, -1, - 4, 6, 8, 14, -1, -1, -1, -1, - 0, 4, 6, 8, 14, -1, -1, -1, - 2, 4, 6, 8, 14, -1, -1, -1, - 0, 2, 4, 6, 8, 14, -1, -1, - 10, 14, -1, -1, -1, -1, -1, -1, - 0, 10, 14, -1, -1, -1, -1, -1, - 2, 10, 14, -1, -1, -1, -1, -1, - 0, 2, 10, 14, -1, -1, -1, -1, - 4, 10, 14, -1, -1, -1, -1, -1, - 0, 4, 10, 14, -1, -1, -1, -1, - 2, 4, 10, 14, -1, -1, -1, -1, - 0, 2, 4, 10, 14, -1, -1, -1, - 6, 10, 14, -1, -1, -1, -1, -1, - 0, 6, 10, 14, -1, -1, -1, -1, - 2, 6, 10, 14, -1, -1, -1, -1, - 0, 2, 6, 10, 14, -1, -1, -1, - 4, 6, 10, 14, -1, -1, -1, -1, - 0, 4, 6, 10, 14, -1, -1, -1, - 2, 4, 6, 10, 14, -1, -1, -1, - 0, 2, 4, 6, 10, 14, -1, -1, - 8, 10, 14, -1, -1, -1, -1, -1, - 0, 8, 10, 14, -1, -1, -1, -1, - 2, 8, 10, 14, -1, -1, -1, -1, - 0, 2, 8, 10, 14, -1, -1, -1, - 4, 8, 10, 14, -1, -1, -1, -1, - 0, 4, 8, 10, 14, -1, -1, -1, - 2, 4, 8, 10, 14, -1, -1, -1, - 0, 2, 4, 8, 10, 14, -1, -1, - 6, 8, 10, 14, -1, -1, -1, -1, - 0, 6, 8, 10, 14, -1, -1, -1, - 2, 6, 8, 10, 14, -1, -1, -1, - 0, 2, 6, 8, 10, 14, -1, -1, - 4, 6, 8, 10, 14, -1, -1, -1, - 0, 4, 6, 8, 10, 14, -1, -1, - 2, 4, 6, 8, 10, 14, -1, -1, - 0, 2, 4, 6, 8, 10, 14, -1, - 12, 14, -1, -1, -1, -1, -1, -1, - 0, 12, 14, -1, -1, -1, -1, -1, - 2, 12, 14, -1, -1, -1, -1, -1, - 0, 2, 12, 14, -1, -1, -1, -1, - 4, 12, 14, -1, -1, -1, -1, -1, - 0, 4, 12, 14, -1, -1, -1, -1, - 2, 4, 12, 14, -1, -1, -1, -1, - 0, 2, 4, 12, 14, -1, -1, -1, - 6, 12, 14, -1, -1, -1, -1, -1, - 0, 6, 12, 14, -1, -1, -1, -1, - 2, 6, 12, 14, -1, -1, -1, -1, - 0, 2, 6, 12, 14, -1, -1, -1, - 4, 6, 12, 14, -1, -1, -1, -1, - 0, 4, 6, 12, 14, -1, -1, -1, - 2, 4, 6, 12, 14, -1, -1, -1, - 0, 2, 4, 6, 12, 14, -1, -1, - 8, 12, 14, -1, -1, -1, -1, -1, - 0, 8, 12, 14, -1, -1, -1, -1, - 2, 8, 12, 14, -1, -1, -1, -1, - 0, 2, 8, 12, 14, -1, -1, -1, - 4, 8, 12, 14, -1, -1, -1, -1, - 0, 4, 8, 12, 14, -1, -1, -1, - 2, 4, 8, 12, 14, -1, -1, -1, - 0, 2, 4, 8, 12, 14, -1, -1, - 6, 8, 12, 14, -1, -1, -1, -1, - 0, 6, 8, 12, 14, -1, -1, -1, - 2, 6, 8, 12, 14, -1, -1, -1, - 0, 2, 6, 8, 12, 14, -1, -1, - 4, 6, 8, 12, 14, -1, -1, -1, - 0, 4, 6, 8, 12, 14, -1, -1, - 2, 4, 6, 8, 12, 14, -1, -1, - 0, 2, 4, 6, 8, 12, 14, -1, - 10, 12, 14, -1, -1, -1, -1, -1, - 0, 10, 12, 14, -1, -1, -1, -1, - 2, 10, 12, 14, -1, -1, -1, -1, - 0, 2, 10, 12, 14, -1, -1, -1, - 4, 10, 12, 14, -1, -1, -1, -1, - 0, 4, 10, 12, 14, -1, -1, -1, - 2, 4, 10, 12, 14, -1, -1, -1, - 0, 2, 4, 10, 12, 14, -1, -1, - 6, 10, 12, 14, -1, -1, -1, -1, - 0, 6, 10, 12, 14, -1, -1, -1, - 2, 6, 10, 12, 14, -1, -1, -1, - 0, 2, 6, 10, 12, 14, -1, -1, - 4, 6, 10, 12, 14, -1, -1, -1, - 0, 4, 6, 10, 12, 14, -1, -1, - 2, 4, 6, 10, 12, 14, -1, -1, - 0, 2, 4, 6, 10, 12, 14, -1, - 8, 10, 12, 14, -1, -1, -1, -1, - 0, 8, 10, 12, 14, -1, -1, -1, - 2, 8, 10, 12, 14, -1, -1, -1, - 0, 2, 8, 10, 12, 14, -1, -1, - 4, 8, 10, 12, 14, -1, -1, -1, - 0, 4, 8, 10, 12, 14, -1, -1, - 2, 4, 8, 10, 12, 14, -1, -1, - 0, 2, 4, 8, 10, 12, 14, -1, - 6, 8, 10, 12, 14, -1, -1, -1, - 0, 6, 8, 10, 12, 14, -1, -1, - 2, 6, 8, 10, 12, 14, -1, -1, - 0, 2, 6, 8, 10, 12, 14, -1, - 4, 6, 8, 10, 12, 14, -1, -1, - 0, 4, 6, 8, 10, 12, 14, -1, - 2, 4, 6, 8, 10, 12, 14, -1, - 0, 2, 4, 6, 8, 10, 12, 14}; - -inline -fn __shake128_squeezenblocks4x(reg ptr u256[25] state, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] h0 h1 h2 h3) - -> reg ptr u256[25], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] -{ - inline int i; - - for i = 0 to GENMATRIX_NBLOCKS - { - state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE] = __shake128_squeezeblock4x(state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE]); - } - - return state, h0, h1, h2, h3; -} - -inline -fn __rej_uniform(reg ptr u16[KYBER_N] rp, reg u64 offset, reg ptr u8[SHAKE128_RATE] buf, inline int buflen) -> reg u64, stack u16[KYBER_N] -{ - reg u16 val0 val1; - reg u16 t; - reg u64 pos ctr; - reg u8 fl1 fl2; - reg bool cf zf b; - - ctr = offset; - pos = 0; - - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(cf || zf); //SETBE - - _, cf, _, _, zf = #CMP_64(pos, buflen - 3); - fl2 = #SETcc(cf || zf); //SETBE - - _, _, _, _, b = #TEST_8(fl1, fl2); - - while(!b) - { - val0 = (16u)buf[(int)pos]; - pos += 1; - - t = (16u)buf[(int)pos]; - val1 = t; - val1 >>= 4; - - t &= 0x0F; - t <<= 8; - val0 |= t; - pos += 1; - - t = (16u)buf[(int)pos]; - t <<= 4; - val1 |= t; - pos += 1; - - if(val0 < KYBER_Q) - { - rp[(int)ctr] = val0; - ctr += 1; - } - - if(ctr < KYBER_N) - { - if(val1 < KYBER_Q) - { - rp[(int)ctr] = val1; - ctr += 1; - } - } - - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(cf || zf); //SETBE - - _, cf, _, _, zf = #CMP_64(pos, buflen - 3); - fl2 = #SETcc(cf || zf); //SETBE - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - return ctr, rp; -} - -u8 ru_ones_s = 1; -u16 ru_mask_s = 0x0FFF; -u8[32] ru_idx8_s = {0, 1, 1, 2, 3, 4, 4, 5, - 6, 7, 7, 8, 9, 10, 10, 11, - 4, 5, 5, 6, 7, 8, 8, 9, - 10, 11, 11, 12, 13, 14, 14, 15}; - -fn _rej_uniform_avx(reg ptr u16[KYBER_N] rp, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] buf) -> reg u64, reg ptr u16[KYBER_N] -{ - reg u256 f0 f1 g0 g1 g2 g3; - reg u256 bound ones mask idx8; - reg u128 f t l h; - reg u64 pos ctr t64 t64_1 t64_2 t64_3; - reg u64 good; - reg u16 val0 val1 t16; - reg ptr u8[2048] idxp; - reg u8 fl1 fl2; - reg bool cf zf b; - - idxp = ru_idx; - - bound = jqx16[u256 0]; - ctr = 0; - pos = 0; - ones = #VPBROADCAST_32u8(ru_ones_s); - mask = #VPBROADCAST_16u16(ru_mask_s); - idx8 = ru_idx8_s[u256 0]; - - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 32); - fl1 = #SETcc(cf || zf); - - _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); - fl2 = #SETcc(cf || zf); - - _, _, _, _, b = #TEST_8(fl1, fl2); - - while(!b) - { - f0 = #VPERMQ(buf.[u256 (int)pos], 0x94); - f1 = #VPERMQ(buf.[u256 24 + (int)pos], 0x94); - f0 = #VPSHUFB_256(f0, idx8); - f1 = #VPSHUFB_256(f1, idx8); - g0 = #VPSRL_16u16(f0, 4); - g1 = #VPSRL_16u16(f1, 4); - f0 = #VPBLEND_16u16(f0, g0, 0xAA); - f1 = #VPBLEND_16u16(f1, g1, 0xAA); - f0 = #VPAND_256(f0, mask); - f1 = #VPAND_256(f1, mask); - - g0 = #VPCMPGT_16u16(bound, f0); - g1 = #VPCMPGT_16u16(bound, f1); - - g0 = #VPACKSS_16u16(g0, g1); - good = #VPMOVMSKB_u256u64(g0); - - t64 = good; - t64 &= 0xFF; - g0 = (256u) #VMOV(idxp[u64 (int)t64]); - - t64_1 = good; - t64_1 >>= 16; - t64_1 &= 0xFF; - l = #VMOV(idxp[u64 (int)t64_1]); - - t64_2 = good; - t64_2 >>= 8; - t64_2 &= 0xFF; - g1 = (256u) #VMOV(idxp[u64 (int)t64_2]); - - t64_3 = good; - t64_3 >>= 24; - t64_3 &= 0xFF; - h = #VMOV(idxp[u64 (int)t64_3]); - - g0 = #VINSERTI128(g0, l, 1); - - _, _, _, _, _, t64 = #POPCNT_64(t64); - _, _, _, _, _, t64_1 = #POPCNT_64(t64_1); - t64 += ctr; - - g1 = #VINSERTI128(g1, h, 1); - - t64_1 += t64; - _, _, _, _, _, t64_2 = #POPCNT_64(t64_2); - t64_2 += t64_1; - _, _, _, _, _, t64_3 = #POPCNT_64(t64_3); - t64_3 += t64_2; - - g2 = #VPADD_32u8(g0, ones); - g0 = #VPUNPCKL_32u8(g0, g2); - g3 = #VPADD_32u8(g1, ones); - g1 = #VPUNPCKL_32u8(g1, g3); - - f0 = #VPSHUFB_256(f0, g0); - f1 = #VPSHUFB_256(f1, g1); - - rp.[u128 2*(int)ctr] = (128u)f0; - rp.[u128 2*(int)t64] = #VEXTRACTI128(f0, 1); - rp.[u128 2*(int)t64_1] = (128u)f1; - rp.[u128 2*(int)t64_2] = #VEXTRACTI128(f1, 1); - - ctr = t64_3; - - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 32); - fl1 = #SETcc(cf || zf); - - pos += 48; - _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); - fl2 = #SETcc(cf || zf); - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 8); - fl1 = #SETcc(cf || zf); - - _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); - fl2 = #SETcc(cf || zf); - - _, _, _, _, b = #TEST_8(fl1, fl2); - - t64 = 0x5555; - while(!b) - { - f = buf.[u128 (int)pos]; - f = #VPSHUFB_128(f, idx8); - t = #VPSRL_8u16(f, 4); - f = #VPBLEND_8u16(f, t, 0xAA); - f = #VPAND_128(f, mask); - - t = #VPCMPGT_8u16(bound, f); - good = #VPMOVMSKB_u128u64(t); - - good = #PEXT_64(good, t64); - l = #VMOV(idxp[u64 (int)good]); - _, _, _, _, _, good = #POPCNT_64(good); - - h = #VPADD_16u8(l, ones); - l = #VPUNPCKL_16u8(l, h); - f = #VPSHUFB_128(f, l); - - rp.[u128 2*(int)ctr] = f; - ctr += good; - - pos += 12; - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 8); - fl1 = #SETcc(cf || zf); - - _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); - fl2 = #SETcc(cf || zf); - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(cf || zf); - - _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); - fl2 = #SETcc(cf || zf); - - _, _, _, _, b = #TEST_8(fl1, fl2); - - while(!b) - { - val0 = (16u)buf[(int)pos]; - pos += 1; - t16 = (16u)buf[(int)pos]; - pos += 1; - val1 = t16; - - t16 <<= 8; - val0 |= t16; - val0 &= 0xFFF; - - val1 >>= 4; - t16 = (16u)buf[(int)pos]; - pos += 1; - t16 <<= 4; - val1 |= t16; - - if(val0 < KYBER_Q) - { - rp[(int)ctr] = val0; - ctr += 1; - } - if(val1 < KYBER_Q) - { - if(ctr < KYBER_N) - { - rp[(int)ctr] = val1; - ctr += 1; - } - } - - _, cf, _, _, zf = #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(cf || zf); //SETBE - - _, cf, _, _, zf = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); - fl2 = #SETcc(cf || zf); //SETBE - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - return ctr, rp; -} - -inline -fn __gen_matrix(stack u8[KYBER_SYMBYTES] seed, inline int transposed) -> stack u16[KYBER_K*KYBER_VECN] -{ - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf0; - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf1; - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf2; - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf3; - stack u256[25] state; - stack u16[KYBER_K*KYBER_VECN] rr; - reg u256 f; - reg u64 ctr0 ctr1 ctr2 ctr3 tmp; - reg u8 flg0 flg1 bflg; - reg bool cf zf; - inline int i, j; - - f = seed[u256 0]; - buf0[u256 0] = f; - buf1[u256 0] = f; - buf2[u256 0] = f; - buf3[u256 0] = f; - - if(transposed == 1) - { - buf0[KYBER_SYMBYTES] = 0; - buf0[KYBER_SYMBYTES+1] = 0; - buf1[KYBER_SYMBYTES] = 0; - buf1[KYBER_SYMBYTES+1] = 1; - buf2[KYBER_SYMBYTES] = 1; - buf2[KYBER_SYMBYTES+1] = 0; - buf3[KYBER_SYMBYTES] = 1; - buf3[KYBER_SYMBYTES+1] = 1; - } - else - { - buf0[KYBER_SYMBYTES] = 0; - buf0[KYBER_SYMBYTES+1] = 0; - buf1[KYBER_SYMBYTES] = 1; - buf1[KYBER_SYMBYTES+1] = 0; - buf2[KYBER_SYMBYTES] = 0; - buf2[KYBER_SYMBYTES+1] = 1; - buf3[KYBER_SYMBYTES] = 1; - buf3[KYBER_SYMBYTES+1] = 1; - } - - state = _shake128_absorb4x_34(state, buf0[0:34], buf1[0:34], buf2[0:34], buf3[0:34]); - state, buf0, buf1, buf2, buf3 = __shake128_squeezenblocks4x(state, buf0, buf1, buf2, buf3); - - tmp, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], buf0); - ctr0 = tmp; - tmp, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], buf1); - ctr1 = tmp; - tmp, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], buf2); - ctr2 = tmp; - ctr3, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], buf3); - - _, cf, _, _, zf = #CMP_64(ctr0, KYBER_N - 1); - flg0 = #SETcc(cf || zf); //SETBE - - _, cf, _, _, zf = #CMP_64(ctr1, KYBER_N - 1); - flg1 = #SETcc(cf || zf); - - _, _, _, _, _, bflg = #OR_8(flg0, flg1); - - _, cf, _, _, zf = #CMP_64(ctr2, KYBER_N - 1); - flg0 = #SETcc(cf || zf); - - _, cf, _, _, zf = #CMP_64(ctr3, KYBER_N - 1); - flg1 = #SETcc(cf || zf); - - _, _, _, _, _, flg0 = #OR_8(flg0, flg1); - _, _, _, _, _, bflg = #OR_8(flg0, bflg); - - while(bflg != 0) { - state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE] = __shake128_squeezeblock4x(state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE]); - - ctr0, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); - ctr1, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], ctr1, buf1[0:SHAKE128_RATE], SHAKE128_RATE); - ctr2, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], ctr2, buf2[0:SHAKE128_RATE], SHAKE128_RATE); - ctr3, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], ctr3, buf3[0:SHAKE128_RATE], SHAKE128_RATE); - - _, cf, _, _, zf = #CMP_64(ctr0, KYBER_N - 1); - flg0 = #SETcc(cf || zf); - - _, cf, _, _, zf = #CMP_64(ctr1, KYBER_N - 1); - flg1 = #SETcc(cf || zf); - - _, _, _, _, _, bflg = #OR_8(flg0, flg1); - - _, cf, _, _, zf = #CMP_64(ctr2, KYBER_N - 1); - flg0 = #SETcc(cf || zf); - - _, cf, _, _, zf = #CMP_64(ctr3, KYBER_N - 1); - flg1 = #SETcc(cf || zf); - - _, _, _, _, _, flg0 = #OR_8(flg0, flg1); - _, _, _, _, _, bflg = #OR_8(flg0, bflg); - } - for i = 0 to KYBER_K - { - for j = 0 to KYBER_K - { - rr[i*KYBER_VECN+j*KYBER_N:KYBER_N] = _nttunpack(rr[i*KYBER_VECN+j*KYBER_N:KYBER_N]); - } - } - - - return rr; -} diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc b/src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc deleted file mode 100644 index 1f9e08d6e..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/indcpa.jinc +++ /dev/null @@ -1,217 +0,0 @@ -from Jade require "crypto_kem/kyber/kyber512/common/params.jinc" -from Jade require "crypto_kem/kyber/common/amd64/avx2/poly.jinc" -from Jade require "crypto_kem/kyber/common/amd64/avx2/polyvec.jinc" -require "gen_matrix.jinc" - -inline -fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] coins) -{ - stack u64 spkp sskp; - stack u16[KYBER_K*KYBER_VECN] aa; - stack u16[KYBER_VECN] e pkpv skpv; - stack u8[64] buf; - stack u8[KYBER_SYMBYTES] publicseed noiseseed; - reg u64 t64; - reg u8 nonce; - inline int i; - - spkp = pkp; - sskp = skp; - - buf = _sha3_512_32(buf, coins); - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = buf[u64 i]; - publicseed[u64 i] = t64; - t64 = buf[u64 i + KYBER_SYMBYTES/8]; - noiseseed[u64 i] = t64; - } - - aa = __gen_matrix(publicseed, 0); - - nonce = 0; - skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], e[0:KYBER_N], e[KYBER_N:KYBER_N] = _poly_getnoise_eta1_4x(skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], e[0:KYBER_N], e[KYBER_N:KYBER_N], noiseseed, nonce); - - skpv = __polyvec_ntt(skpv); - e = __polyvec_ntt(e); - - for i=0 to KYBER_K - { - pkpv[i*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(pkpv[i*KYBER_N:KYBER_N], aa[i*KYBER_VECN:KYBER_VECN], skpv); - pkpv[i*KYBER_N:KYBER_N] = _poly_frommont(pkpv[i*KYBER_N:KYBER_N]); - } - - pkpv = __polyvec_add2(pkpv, e); - pkpv = __polyvec_reduce(pkpv); - - pkp = spkp; - skp = sskp; - - __polyvec_tobytes(skp, skpv); - __polyvec_tobytes(pkp, pkpv); - - pkp += KYBER_POLYVECBYTES; - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = publicseed[u64 i]; - (u64)[pkp] = t64; - pkp += 8; - } -} - -// FIXME: E_EPTR -inline -fn __indcpa_enc_0(stack u64 sctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -{ - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_N] k epp v; - stack u8[KYBER_SYMBYTES] publicseed; - stack ptr u8[KYBER_SYMBYTES] s_noiseseed; - reg ptr u8[KYBER_SYMBYTES] lnoiseseed; - reg u64 i ctp t64; - reg u8 nonce; - inline int w; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed[u64 (int)i] = t64; - pkp += 8; - i += 1; - } - - k = _poly_frommsg_1(k, msgp); - - s_noiseseed = noiseseed; - aat = __gen_matrix(publicseed, 1); - lnoiseseed = s_noiseseed; - - nonce = 0; - sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N] = _poly_getnoise_eta1122_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N], lnoiseseed, nonce); - - nonce = 4; - lnoiseseed = s_noiseseed; - epp = _poly_getnoise(epp, lnoiseseed, nonce); - - sp = __polyvec_ntt(sp); - - for w=0 to KYBER_K - { - bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); - } - - v = __polyvec_pointwise_acc(v, pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - __polyvec_compress(ctp, bp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_compress(ctp, v); -} - -// FIXME: E_EPTR -inline -fn __indcpa_enc_1(reg ptr u8[KYBER_INDCPA_BYTES] ctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_INDCPA_BYTES] -{ - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_N] k epp v; - stack u8[KYBER_SYMBYTES] publicseed; - stack ptr u8[KYBER_SYMBYTES] s_noiseseed; - reg ptr u8[KYBER_SYMBYTES] lnoiseseed; - stack ptr u8[KYBER_INDCPA_BYTES] sctp; - reg u64 i t64; - reg u8 nonce; - inline int w; - - sctp = ctp; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed[u64 (int)i] = t64; - pkp += 8; - i += 1; - } - - k = _poly_frommsg_1(k, msgp); - - s_noiseseed = noiseseed; - aat = __gen_matrix(publicseed, 1); - lnoiseseed = s_noiseseed; - - nonce = 0; - sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N] = _poly_getnoise_eta1122_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], ep[0:KYBER_N], ep[KYBER_N:KYBER_N], lnoiseseed, nonce); - - nonce = 4; - lnoiseseed = s_noiseseed; - epp = _poly_getnoise(epp, lnoiseseed, nonce); - - sp = __polyvec_ntt(sp); - - for w=0 to KYBER_K - { - bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); - } - - v = __polyvec_pointwise_acc(v, pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __polyvec_compress_1(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); - ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _poly_compress_1(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); - - return ctp; -} - - -inline -fn __indcpa_dec(reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_INDCPA_MSGBYTES] -{ - stack u16[KYBER_N] t v mp; - stack u16[KYBER_VECN] bp skpv; - - bp = __polyvec_decompress(ctp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_decompress(v, ctp); - - skpv = __polyvec_frombytes(skp); - - bp = __polyvec_ntt(bp); - t = __polyvec_pointwise_acc(t, skpv, bp); - t = _poly_invntt(t); - - mp = _poly_sub(mp, v, t); - mp = __poly_reduce(mp); - - msgp, mp = _poly_tomsg_1(msgp, mp); - - return msgp; -} diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz b/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz deleted file mode 100644 index c4b7a7935..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.jazz +++ /dev/null @@ -1,66 +0,0 @@ -require "indcpa.jinc" -from Jade require "common/tofromstack.jinc" -from Jade require "crypto_kem/kyber/common/amd64/avx2/verify.jinc" -from Jade require "crypto_kem/kyber/common/amd64/kem.jinc" - -export fn jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = __tostack64u8(stack_coins, coins); - __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_avx2_keypair(reg u64 public_key secret_key) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = #randombytes(stack_coins); - __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_avx2_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = __tostack32u8(stack_coins, coins); - __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_avx2_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = #randombytes(stack_coins); - __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_avx2_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 -{ - reg u64 r; - __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); - ?{}, r = #set0(); - return r; -} diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d b/src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d deleted file mode 100644 index d3b866d0e..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_ref/.deps/kem.s.d +++ /dev/null @@ -1 +0,0 @@ -kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/amd64/ref/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber512/common/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_ref_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/zetas.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/kem.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/Makefile b/src/kem/kyber/libjade_kyber512_amd64_ref/Makefile deleted file mode 100644 index 29a80faa8..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_ref/Makefile +++ /dev/null @@ -1,2 +0,0 @@ -SRCS := kem.jazz -include ../../../../../Makefile.common diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/include/api.h b/src/kem/kyber/libjade_kyber512_amd64_ref/api.h similarity index 100% rename from src/kem/kyber/libjade_kyber512_amd64_ref/include/api.h rename to src/kem/kyber/libjade_kyber512_amd64_ref/api.h diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc b/src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc deleted file mode 100644 index c1bb634bb..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_ref/indcpa.jinc +++ /dev/null @@ -1,242 +0,0 @@ -from Jade require "crypto_kem/kyber/kyber512/common/params.jinc" -from Jade require "crypto_kem/kyber/common/amd64/ref/poly.jinc" -from Jade require "crypto_kem/kyber/common/amd64/ref/polyvec.jinc" -from Jade require "crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc" - -inline -fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] coins) -{ - stack u64 spkp sskp; - stack u16[KYBER_K * KYBER_VECN] a; - stack u16[KYBER_VECN] e pkpv skpv; - stack u8[64] buf; - stack u8[KYBER_SYMBYTES] publicseed noiseseed; - reg u64 t64; - reg u8 nonce, c; - inline int i; - - spkp = pkp; - sskp = skp; - - buf = _sha3_512_32(buf, coins); - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = buf[u64 i]; - publicseed[u64 i] = t64; - t64 = buf[u64 i + KYBER_SYMBYTES/8]; - noiseseed[u64 i] = t64; - } - - a = __gen_matrix(publicseed, 0); - - nonce = 0; - skpv[0:KYBER_N] = _poly_getnoise_eta1(skpv[0:KYBER_N], noiseseed, nonce); - nonce = 1; - skpv[KYBER_N:KYBER_N] = _poly_getnoise_eta1(skpv[KYBER_N:KYBER_N], noiseseed, nonce); - - nonce = 2; - e[0:KYBER_N] = _poly_getnoise_eta1(e[0:KYBER_N], noiseseed, nonce); - nonce = 3; - e[KYBER_N:KYBER_N] = _poly_getnoise_eta1(e[KYBER_N:KYBER_N], noiseseed, nonce); - - skpv = __polyvec_ntt(skpv); - e = __polyvec_ntt(e); - - for i=0 to KYBER_K - { - pkpv[i*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(a[i*KYBER_VECN:KYBER_VECN], skpv); - pkpv[i*KYBER_N:KYBER_N] = _poly_frommont(pkpv[i*KYBER_N:KYBER_N]); - } - - pkpv = __polyvec_add2(pkpv, e); - pkpv = __polyvec_reduce(pkpv); - - pkp = spkp; - skp = sskp; - - __polyvec_tobytes(skp, skpv); - __polyvec_tobytes(pkp, pkpv); - - pkp += KYBER_POLYVECBYTES; - for i=0 to KYBER_SYMBYTES/8 - { - t64 = publicseed[u64 i]; - (u64)[pkp] = t64; - pkp += 8; - } -} - - -inline -fn __indcpa_enc_0(stack u64 sctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -{ - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_N] k epp v; - stack u8[KYBER_SYMBYTES] publicseed; - stack ptr u8[KYBER_SYMBYTES] s_noiseseed; - reg ptr u8[KYBER_SYMBYTES] lnoiseseed; - reg u64 i ctp t64; - reg u8 nonce; - inline int j; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed[u64 (int)i] = t64; - pkp += 8; - i += 1; - } - - k = _i_poly_frommsg(k, msgp); - - s_noiseseed = noiseseed; - aat = __gen_matrix(publicseed, 1); - - lnoiseseed = s_noiseseed; - nonce = 0; - sp[0:KYBER_N] = _poly_getnoise_eta1(sp[0:KYBER_N], lnoiseseed, nonce); - lnoiseseed = s_noiseseed; - nonce = 1; - sp[KYBER_N:KYBER_N] = _poly_getnoise_eta1(sp[KYBER_N:KYBER_N], lnoiseseed, nonce); - - lnoiseseed = s_noiseseed; - nonce = 2; - ep[0:KYBER_N] = _poly_getnoise_eta2(ep[0:KYBER_N], lnoiseseed, nonce); - lnoiseseed = s_noiseseed; - nonce = 3; - ep[KYBER_N:KYBER_N] = _poly_getnoise_eta2(ep[KYBER_N:KYBER_N], lnoiseseed, nonce); - - lnoiseseed = s_noiseseed; - nonce = 4; - epp = _poly_getnoise_eta2(epp, lnoiseseed, nonce); - - sp = __polyvec_ntt(sp); - - for j=0 to KYBER_K - { - bp[j*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[j*KYBER_VECN:KYBER_VECN], sp); - } - - v = __polyvec_pointwise_acc(pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - __polyvec_compress(ctp, bp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_compress(ctp, v); -} - -inline -fn __indcpa_enc_1(reg ptr u8[KYBER_INDCPA_BYTES] ctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_INDCPA_BYTES] -{ - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_N] k epp v; - stack u8[KYBER_SYMBYTES] publicseed; - stack ptr u8[KYBER_SYMBYTES] s_noiseseed; - reg ptr u8[KYBER_SYMBYTES] lnoiseseed; - stack ptr u8[KYBER_INDCPA_BYTES] sctp; - reg u64 i t64; - reg u8 nonce; - inline int j; - - sctp = ctp; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed[u64 (int)i] = t64; - pkp += 8; - i += 1; - } - - k = _i_poly_frommsg(k, msgp); - - s_noiseseed = noiseseed; - aat = __gen_matrix(publicseed, 1); - lnoiseseed = s_noiseseed; - - nonce = 0; - sp[0:KYBER_N] = _poly_getnoise_eta1(sp[0:KYBER_N], lnoiseseed, nonce); - lnoiseseed = s_noiseseed; - nonce = 1; - sp[KYBER_N:KYBER_N] = _poly_getnoise_eta1(sp[KYBER_N:KYBER_N], lnoiseseed, nonce); - - lnoiseseed = s_noiseseed; - nonce = 2; - ep[0:KYBER_N] = _poly_getnoise_eta2(ep[0:KYBER_N], lnoiseseed, nonce); - lnoiseseed = s_noiseseed; - nonce = 3; - ep[KYBER_N:KYBER_N] = _poly_getnoise_eta2(ep[KYBER_N:KYBER_N], lnoiseseed, nonce); - - lnoiseseed = s_noiseseed; - nonce = 4; - epp = _poly_getnoise_eta2(epp, lnoiseseed, nonce); - - sp = __polyvec_ntt(sp); - - for j=0 to KYBER_K - { - bp[j*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[j*KYBER_VECN:KYBER_VECN], sp); - } - - v = __polyvec_pointwise_acc(pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __i_polyvec_compress(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); - ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _i_poly_compress(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); - - return ctp; -} - - -inline -fn __indcpa_dec(reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_INDCPA_MSGBYTES] -{ - stack u16[KYBER_N] t v mp; - stack u16[KYBER_VECN] bp skpv; - - bp = __polyvec_decompress(ctp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_decompress(v, ctp); - - skpv = __polyvec_frombytes(skp); - - bp = __polyvec_ntt(bp); - t = __polyvec_pointwise_acc(skpv, bp); - t = _poly_invntt(t); - - mp = _poly_sub(mp, v, t); - mp = __poly_reduce(mp); - - msgp, mp = _i_poly_tomsg(msgp, mp); - - return msgp; -} diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz b/src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz deleted file mode 100644 index 3d43af2ae..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_ref/kem.jazz +++ /dev/null @@ -1,66 +0,0 @@ -require "indcpa.jinc" -from Jade require "common/tofromstack.jinc" -from Jade require "crypto_kem/kyber/common/amd64/ref/verify.jinc" -from Jade require "crypto_kem/kyber/common/amd64/kem.jinc" - -export fn jade_kem_kyber_kyber512_amd64_ref_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = __tostack64u8(stack_coins, coins); - __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_ref_keypair(reg u64 public_key secret_key) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = #randombytes(stack_coins); - __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_ref_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = __tostack32u8(stack_coins, coins); - __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_ref_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = #randombytes(stack_coins); - __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber512_amd64_ref_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 -{ - reg u64 r; - __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); - ?{}, r = #set0(); - return r; -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d b/src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d deleted file mode 100644 index 2fb0ff7f8..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/.deps/kem.s.d +++ /dev/null @@ -1 +0,0 @@ -kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/avx2/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/common/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_4x_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/avx2/keccakf1600_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake256/amd64/avx2/shake256_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/shuffle.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/consts.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/avx2/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_xof/shake128/amd64/avx2/shake128_4x.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/avx2/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/kem.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile b/src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile deleted file mode 100644 index eec5ee0e3..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -SRCS := kem.jazz -include ../../../../../Makefile.common - diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/include/api.h b/src/kem/kyber/libjade_kyber768_amd64_avx2/api.h similarity index 100% rename from src/kem/kyber/libjade_kyber768_amd64_avx2/include/api.h rename to src/kem/kyber/libjade_kyber768_amd64_avx2/api.h diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc b/src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc deleted file mode 100644 index 9ae8a1676..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/gen_matrix.jinc +++ /dev/null @@ -1,790 +0,0 @@ -from Jade require "common/keccak/common/fips202_DIRTY.jinc" -from Jade require "common/keccak/common/fips202_4x_DIRTY.jinc" -from Jade require "crypto_xof/shake128/amd64/avx2/shake128_4x.jinc" - -param int GENMATRIX_NBLOCKS = ((12*KYBER_N/8*4096/KYBER_Q + SHAKE128_RATE)/SHAKE128_RATE); -param int REJ_UNIFORM_AVX_BUFLEN = GENMATRIX_NBLOCKS * SHAKE128_RATE; - -u8[2048] ru_idx = {-1, -1, -1, -1, -1, -1, -1, -1, - 0, -1, -1, -1, -1, -1, -1, -1, - 2, -1, -1, -1, -1, -1, -1, -1, - 0, 2, -1, -1, -1, -1, -1, -1, - 4, -1, -1, -1, -1, -1, -1, -1, - 0, 4, -1, -1, -1, -1, -1, -1, - 2, 4, -1, -1, -1, -1, -1, -1, - 0, 2, 4, -1, -1, -1, -1, -1, - 6, -1, -1, -1, -1, -1, -1, -1, - 0, 6, -1, -1, -1, -1, -1, -1, - 2, 6, -1, -1, -1, -1, -1, -1, - 0, 2, 6, -1, -1, -1, -1, -1, - 4, 6, -1, -1, -1, -1, -1, -1, - 0, 4, 6, -1, -1, -1, -1, -1, - 2, 4, 6, -1, -1, -1, -1, -1, - 0, 2, 4, 6, -1, -1, -1, -1, - 8, -1, -1, -1, -1, -1, -1, -1, - 0, 8, -1, -1, -1, -1, -1, -1, - 2, 8, -1, -1, -1, -1, -1, -1, - 0, 2, 8, -1, -1, -1, -1, -1, - 4, 8, -1, -1, -1, -1, -1, -1, - 0, 4, 8, -1, -1, -1, -1, -1, - 2, 4, 8, -1, -1, -1, -1, -1, - 0, 2, 4, 8, -1, -1, -1, -1, - 6, 8, -1, -1, -1, -1, -1, -1, - 0, 6, 8, -1, -1, -1, -1, -1, - 2, 6, 8, -1, -1, -1, -1, -1, - 0, 2, 6, 8, -1, -1, -1, -1, - 4, 6, 8, -1, -1, -1, -1, -1, - 0, 4, 6, 8, -1, -1, -1, -1, - 2, 4, 6, 8, -1, -1, -1, -1, - 0, 2, 4, 6, 8, -1, -1, -1, - 10, -1, -1, -1, -1, -1, -1, -1, - 0, 10, -1, -1, -1, -1, -1, -1, - 2, 10, -1, -1, -1, -1, -1, -1, - 0, 2, 10, -1, -1, -1, -1, -1, - 4, 10, -1, -1, -1, -1, -1, -1, - 0, 4, 10, -1, -1, -1, -1, -1, - 2, 4, 10, -1, -1, -1, -1, -1, - 0, 2, 4, 10, -1, -1, -1, -1, - 6, 10, -1, -1, -1, -1, -1, -1, - 0, 6, 10, -1, -1, -1, -1, -1, - 2, 6, 10, -1, -1, -1, -1, -1, - 0, 2, 6, 10, -1, -1, -1, -1, - 4, 6, 10, -1, -1, -1, -1, -1, - 0, 4, 6, 10, -1, -1, -1, -1, - 2, 4, 6, 10, -1, -1, -1, -1, - 0, 2, 4, 6, 10, -1, -1, -1, - 8, 10, -1, -1, -1, -1, -1, -1, - 0, 8, 10, -1, -1, -1, -1, -1, - 2, 8, 10, -1, -1, -1, -1, -1, - 0, 2, 8, 10, -1, -1, -1, -1, - 4, 8, 10, -1, -1, -1, -1, -1, - 0, 4, 8, 10, -1, -1, -1, -1, - 2, 4, 8, 10, -1, -1, -1, -1, - 0, 2, 4, 8, 10, -1, -1, -1, - 6, 8, 10, -1, -1, -1, -1, -1, - 0, 6, 8, 10, -1, -1, -1, -1, - 2, 6, 8, 10, -1, -1, -1, -1, - 0, 2, 6, 8, 10, -1, -1, -1, - 4, 6, 8, 10, -1, -1, -1, -1, - 0, 4, 6, 8, 10, -1, -1, -1, - 2, 4, 6, 8, 10, -1, -1, -1, - 0, 2, 4, 6, 8, 10, -1, -1, - 12, -1, -1, -1, -1, -1, -1, -1, - 0, 12, -1, -1, -1, -1, -1, -1, - 2, 12, -1, -1, -1, -1, -1, -1, - 0, 2, 12, -1, -1, -1, -1, -1, - 4, 12, -1, -1, -1, -1, -1, -1, - 0, 4, 12, -1, -1, -1, -1, -1, - 2, 4, 12, -1, -1, -1, -1, -1, - 0, 2, 4, 12, -1, -1, -1, -1, - 6, 12, -1, -1, -1, -1, -1, -1, - 0, 6, 12, -1, -1, -1, -1, -1, - 2, 6, 12, -1, -1, -1, -1, -1, - 0, 2, 6, 12, -1, -1, -1, -1, - 4, 6, 12, -1, -1, -1, -1, -1, - 0, 4, 6, 12, -1, -1, -1, -1, - 2, 4, 6, 12, -1, -1, -1, -1, - 0, 2, 4, 6, 12, -1, -1, -1, - 8, 12, -1, -1, -1, -1, -1, -1, - 0, 8, 12, -1, -1, -1, -1, -1, - 2, 8, 12, -1, -1, -1, -1, -1, - 0, 2, 8, 12, -1, -1, -1, -1, - 4, 8, 12, -1, -1, -1, -1, -1, - 0, 4, 8, 12, -1, -1, -1, -1, - 2, 4, 8, 12, -1, -1, -1, -1, - 0, 2, 4, 8, 12, -1, -1, -1, - 6, 8, 12, -1, -1, -1, -1, -1, - 0, 6, 8, 12, -1, -1, -1, -1, - 2, 6, 8, 12, -1, -1, -1, -1, - 0, 2, 6, 8, 12, -1, -1, -1, - 4, 6, 8, 12, -1, -1, -1, -1, - 0, 4, 6, 8, 12, -1, -1, -1, - 2, 4, 6, 8, 12, -1, -1, -1, - 0, 2, 4, 6, 8, 12, -1, -1, - 10, 12, -1, -1, -1, -1, -1, -1, - 0, 10, 12, -1, -1, -1, -1, -1, - 2, 10, 12, -1, -1, -1, -1, -1, - 0, 2, 10, 12, -1, -1, -1, -1, - 4, 10, 12, -1, -1, -1, -1, -1, - 0, 4, 10, 12, -1, -1, -1, -1, - 2, 4, 10, 12, -1, -1, -1, -1, - 0, 2, 4, 10, 12, -1, -1, -1, - 6, 10, 12, -1, -1, -1, -1, -1, - 0, 6, 10, 12, -1, -1, -1, -1, - 2, 6, 10, 12, -1, -1, -1, -1, - 0, 2, 6, 10, 12, -1, -1, -1, - 4, 6, 10, 12, -1, -1, -1, -1, - 0, 4, 6, 10, 12, -1, -1, -1, - 2, 4, 6, 10, 12, -1, -1, -1, - 0, 2, 4, 6, 10, 12, -1, -1, - 8, 10, 12, -1, -1, -1, -1, -1, - 0, 8, 10, 12, -1, -1, -1, -1, - 2, 8, 10, 12, -1, -1, -1, -1, - 0, 2, 8, 10, 12, -1, -1, -1, - 4, 8, 10, 12, -1, -1, -1, -1, - 0, 4, 8, 10, 12, -1, -1, -1, - 2, 4, 8, 10, 12, -1, -1, -1, - 0, 2, 4, 8, 10, 12, -1, -1, - 6, 8, 10, 12, -1, -1, -1, -1, - 0, 6, 8, 10, 12, -1, -1, -1, - 2, 6, 8, 10, 12, -1, -1, -1, - 0, 2, 6, 8, 10, 12, -1, -1, - 4, 6, 8, 10, 12, -1, -1, -1, - 0, 4, 6, 8, 10, 12, -1, -1, - 2, 4, 6, 8, 10, 12, -1, -1, - 0, 2, 4, 6, 8, 10, 12, -1, - 14, -1, -1, -1, -1, -1, -1, -1, - 0, 14, -1, -1, -1, -1, -1, -1, - 2, 14, -1, -1, -1, -1, -1, -1, - 0, 2, 14, -1, -1, -1, -1, -1, - 4, 14, -1, -1, -1, -1, -1, -1, - 0, 4, 14, -1, -1, -1, -1, -1, - 2, 4, 14, -1, -1, -1, -1, -1, - 0, 2, 4, 14, -1, -1, -1, -1, - 6, 14, -1, -1, -1, -1, -1, -1, - 0, 6, 14, -1, -1, -1, -1, -1, - 2, 6, 14, -1, -1, -1, -1, -1, - 0, 2, 6, 14, -1, -1, -1, -1, - 4, 6, 14, -1, -1, -1, -1, -1, - 0, 4, 6, 14, -1, -1, -1, -1, - 2, 4, 6, 14, -1, -1, -1, -1, - 0, 2, 4, 6, 14, -1, -1, -1, - 8, 14, -1, -1, -1, -1, -1, -1, - 0, 8, 14, -1, -1, -1, -1, -1, - 2, 8, 14, -1, -1, -1, -1, -1, - 0, 2, 8, 14, -1, -1, -1, -1, - 4, 8, 14, -1, -1, -1, -1, -1, - 0, 4, 8, 14, -1, -1, -1, -1, - 2, 4, 8, 14, -1, -1, -1, -1, - 0, 2, 4, 8, 14, -1, -1, -1, - 6, 8, 14, -1, -1, -1, -1, -1, - 0, 6, 8, 14, -1, -1, -1, -1, - 2, 6, 8, 14, -1, -1, -1, -1, - 0, 2, 6, 8, 14, -1, -1, -1, - 4, 6, 8, 14, -1, -1, -1, -1, - 0, 4, 6, 8, 14, -1, -1, -1, - 2, 4, 6, 8, 14, -1, -1, -1, - 0, 2, 4, 6, 8, 14, -1, -1, - 10, 14, -1, -1, -1, -1, -1, -1, - 0, 10, 14, -1, -1, -1, -1, -1, - 2, 10, 14, -1, -1, -1, -1, -1, - 0, 2, 10, 14, -1, -1, -1, -1, - 4, 10, 14, -1, -1, -1, -1, -1, - 0, 4, 10, 14, -1, -1, -1, -1, - 2, 4, 10, 14, -1, -1, -1, -1, - 0, 2, 4, 10, 14, -1, -1, -1, - 6, 10, 14, -1, -1, -1, -1, -1, - 0, 6, 10, 14, -1, -1, -1, -1, - 2, 6, 10, 14, -1, -1, -1, -1, - 0, 2, 6, 10, 14, -1, -1, -1, - 4, 6, 10, 14, -1, -1, -1, -1, - 0, 4, 6, 10, 14, -1, -1, -1, - 2, 4, 6, 10, 14, -1, -1, -1, - 0, 2, 4, 6, 10, 14, -1, -1, - 8, 10, 14, -1, -1, -1, -1, -1, - 0, 8, 10, 14, -1, -1, -1, -1, - 2, 8, 10, 14, -1, -1, -1, -1, - 0, 2, 8, 10, 14, -1, -1, -1, - 4, 8, 10, 14, -1, -1, -1, -1, - 0, 4, 8, 10, 14, -1, -1, -1, - 2, 4, 8, 10, 14, -1, -1, -1, - 0, 2, 4, 8, 10, 14, -1, -1, - 6, 8, 10, 14, -1, -1, -1, -1, - 0, 6, 8, 10, 14, -1, -1, -1, - 2, 6, 8, 10, 14, -1, -1, -1, - 0, 2, 6, 8, 10, 14, -1, -1, - 4, 6, 8, 10, 14, -1, -1, -1, - 0, 4, 6, 8, 10, 14, -1, -1, - 2, 4, 6, 8, 10, 14, -1, -1, - 0, 2, 4, 6, 8, 10, 14, -1, - 12, 14, -1, -1, -1, -1, -1, -1, - 0, 12, 14, -1, -1, -1, -1, -1, - 2, 12, 14, -1, -1, -1, -1, -1, - 0, 2, 12, 14, -1, -1, -1, -1, - 4, 12, 14, -1, -1, -1, -1, -1, - 0, 4, 12, 14, -1, -1, -1, -1, - 2, 4, 12, 14, -1, -1, -1, -1, - 0, 2, 4, 12, 14, -1, -1, -1, - 6, 12, 14, -1, -1, -1, -1, -1, - 0, 6, 12, 14, -1, -1, -1, -1, - 2, 6, 12, 14, -1, -1, -1, -1, - 0, 2, 6, 12, 14, -1, -1, -1, - 4, 6, 12, 14, -1, -1, -1, -1, - 0, 4, 6, 12, 14, -1, -1, -1, - 2, 4, 6, 12, 14, -1, -1, -1, - 0, 2, 4, 6, 12, 14, -1, -1, - 8, 12, 14, -1, -1, -1, -1, -1, - 0, 8, 12, 14, -1, -1, -1, -1, - 2, 8, 12, 14, -1, -1, -1, -1, - 0, 2, 8, 12, 14, -1, -1, -1, - 4, 8, 12, 14, -1, -1, -1, -1, - 0, 4, 8, 12, 14, -1, -1, -1, - 2, 4, 8, 12, 14, -1, -1, -1, - 0, 2, 4, 8, 12, 14, -1, -1, - 6, 8, 12, 14, -1, -1, -1, -1, - 0, 6, 8, 12, 14, -1, -1, -1, - 2, 6, 8, 12, 14, -1, -1, -1, - 0, 2, 6, 8, 12, 14, -1, -1, - 4, 6, 8, 12, 14, -1, -1, -1, - 0, 4, 6, 8, 12, 14, -1, -1, - 2, 4, 6, 8, 12, 14, -1, -1, - 0, 2, 4, 6, 8, 12, 14, -1, - 10, 12, 14, -1, -1, -1, -1, -1, - 0, 10, 12, 14, -1, -1, -1, -1, - 2, 10, 12, 14, -1, -1, -1, -1, - 0, 2, 10, 12, 14, -1, -1, -1, - 4, 10, 12, 14, -1, -1, -1, -1, - 0, 4, 10, 12, 14, -1, -1, -1, - 2, 4, 10, 12, 14, -1, -1, -1, - 0, 2, 4, 10, 12, 14, -1, -1, - 6, 10, 12, 14, -1, -1, -1, -1, - 0, 6, 10, 12, 14, -1, -1, -1, - 2, 6, 10, 12, 14, -1, -1, -1, - 0, 2, 6, 10, 12, 14, -1, -1, - 4, 6, 10, 12, 14, -1, -1, -1, - 0, 4, 6, 10, 12, 14, -1, -1, - 2, 4, 6, 10, 12, 14, -1, -1, - 0, 2, 4, 6, 10, 12, 14, -1, - 8, 10, 12, 14, -1, -1, -1, -1, - 0, 8, 10, 12, 14, -1, -1, -1, - 2, 8, 10, 12, 14, -1, -1, -1, - 0, 2, 8, 10, 12, 14, -1, -1, - 4, 8, 10, 12, 14, -1, -1, -1, - 0, 4, 8, 10, 12, 14, -1, -1, - 2, 4, 8, 10, 12, 14, -1, -1, - 0, 2, 4, 8, 10, 12, 14, -1, - 6, 8, 10, 12, 14, -1, -1, -1, - 0, 6, 8, 10, 12, 14, -1, -1, - 2, 6, 8, 10, 12, 14, -1, -1, - 0, 2, 6, 8, 10, 12, 14, -1, - 4, 6, 8, 10, 12, 14, -1, -1, - 0, 4, 6, 8, 10, 12, 14, -1, - 2, 4, 6, 8, 10, 12, 14, -1, - 0, 2, 4, 6, 8, 10, 12, 14}; - -inline -fn __shake128_squeezenblocks(reg u256[7] state, stack u8[REJ_UNIFORM_AVX_BUFLEN] out) - -> reg u256[7], stack u8[REJ_UNIFORM_AVX_BUFLEN] -{ - inline int i; - - for i = 0 to GENMATRIX_NBLOCKS - { - state, out[i*SHAKE128_RATE:SHAKE128_RATE] = __shake128_squeezeblock(state, out[i*SHAKE128_RATE:SHAKE128_RATE]); - } - return state, out; -} - -inline -fn __shake128_squeezenblocks4x(reg ptr u256[25] state, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] h0 h1 h2 h3) - -> reg ptr u256[25], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN], reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] -{ - inline int i; - - for i = 0 to GENMATRIX_NBLOCKS - { - state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE] = __shake128_squeezeblock4x(state, h0[i*SHAKE128_RATE:SHAKE128_RATE], h1[i*SHAKE128_RATE:SHAKE128_RATE], h2[i*SHAKE128_RATE:SHAKE128_RATE], h3[i*SHAKE128_RATE:SHAKE128_RATE]); - } - - return state, h0, h1, h2, h3; -} - -inline -fn __rej_uniform(reg ptr u16[KYBER_N] rp, reg u64 offset, reg ptr u8[SHAKE128_RATE] buf, inline int buflen) -> reg u64, stack u16[KYBER_N] -{ - reg u16 val0 val1; - reg u16 t; - reg u64 pos ctr; - reg u8 fl1 fl2; - reg bool b; - - ctr = offset; - pos = 0; - - ?{ "<=u" = b }= #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(pos, buflen - 3); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - - while(!b) - { - val0 = (16u)buf[(int)pos]; - pos += 1; - - t = (16u)buf[(int)pos]; - val1 = t; - val1 >>= 4; - - t &= 0x0F; - t <<= 8; - val0 |= t; - pos += 1; - - t = (16u)buf[(int)pos]; - t <<= 4; - val1 |= t; - pos += 1; - - if(val0 < KYBER_Q) - { - rp[(int)ctr] = val0; - ctr += 1; - } - - if(ctr < KYBER_N) - { - if(val1 < KYBER_Q) - { - rp[(int)ctr] = val1; - ctr += 1; - } - } - - ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(pos, buflen - 3); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - return ctr, rp; -} - -u8 ru_ones_s = 1; -u16 ru_mask_s = 0x0FFF; -u8[32] ru_idx8_s = {0, 1, 1, 2, 3, 4, 4, 5, - 6, 7, 7, 8, 9, 10, 10, 11, - 4, 5, 5, 6, 7, 8, 8, 9, - 10, 11, 11, 12, 13, 14, 14, 15}; - -fn _rej_uniform_avx(reg ptr u16[KYBER_N] rp, reg ptr u8[REJ_UNIFORM_AVX_BUFLEN] buf) -> reg u64, reg ptr u16[KYBER_N] -{ - reg u256 f0 f1 g0 g1 g2 g3; - reg u256 bound ones mask idx8; - reg u128 f t l h; - reg u64 pos ctr t64 t64_1 t64_2 t64_3; - reg u64 good; - reg u16 val0 val1 t16; - reg ptr u8[2048] idxp; - reg u8 fl1 fl2; - reg bool b; - - idxp = ru_idx; - - bound = jqx16[u256 0]; - ctr = 0; - pos = 0; - ones = #VPBROADCAST_32u8(ru_ones_s); - mask = #VPBROADCAST_16u16(ru_mask_s); - idx8 = ru_idx8_s[u256 0]; - - ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 32); - fl1 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - - while(!b) - { - f0 = #VPERMQ(buf.[u256 (int)pos], 0x94); - f1 = #VPERMQ(buf.[u256 24 + (int)pos], 0x94); - f0 = #VPSHUFB_256(f0, idx8); - f1 = #VPSHUFB_256(f1, idx8); - g0 = #VPSRL_16u16(f0, 4); - g1 = #VPSRL_16u16(f1, 4); - f0 = #VPBLEND_16u16(f0, g0, 0xAA); - f1 = #VPBLEND_16u16(f1, g1, 0xAA); - f0 = #VPAND_256(f0, mask); - f1 = #VPAND_256(f1, mask); - - g0 = #VPCMPGT_16u16(bound, f0); - g1 = #VPCMPGT_16u16(bound, f1); - - g0 = #VPACKSS_16u16(g0, g1); - good = #VPMOVMSKB_u256u64(g0); - - t64 = good; - t64 &= 0xFF; - g0 = (256u) #VMOV(idxp[u64 (int)t64]); - - t64_1 = good; - t64_1 >>= 16; - t64_1 &= 0xFF; - l = #VMOV(idxp[u64 (int)t64_1]); - - t64_2 = good; - t64_2 >>= 8; - t64_2 &= 0xFF; - g1 = (256u) #VMOV(idxp[u64 (int)t64_2]); - - t64_3 = good; - t64_3 >>= 24; - t64_3 &= 0xFF; - h = #VMOV(idxp[u64 (int)t64_3]); - - g0 = #VINSERTI128(g0, l, 1); - - _, _, _, _, _, t64 = #POPCNT_64(t64); - _, _, _, _, _, t64_1 = #POPCNT_64(t64_1); - t64 += ctr; - - g1 = #VINSERTI128(g1, h, 1); - - t64_1 += t64; - _, _, _, _, _, t64_2 = #POPCNT_64(t64_2); - t64_2 += t64_1; - _, _, _, _, _, t64_3 = #POPCNT_64(t64_3); - t64_3 += t64_2; - - g2 = #VPADD_32u8(g0, ones); - g0 = #VPUNPCKL_32u8(g0, g2); - g3 = #VPADD_32u8(g1, ones); - g1 = #VPUNPCKL_32u8(g1, g3); - - f0 = #VPSHUFB_256(f0, g0); - f1 = #VPSHUFB_256(f1, g1); - - rp.[u128 2*(int)ctr] = (128u)f0; - rp.[u128 2*(int)t64] = #VEXTRACTI128(f0, 1); - rp.[u128 2*(int)t64_1] = (128u)f1; - rp.[u128 2*(int)t64_2] = #VEXTRACTI128(f1, 1); - - ctr = t64_3; - - ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 32); - fl1 = #SETcc(b); - - pos += 48; - ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 56); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 8); - fl1 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - - t64 = 0x5555; - while(!b) - { - f = buf.[u128 (int)pos]; - f = #VPSHUFB_128(f, idx8); - t = #VPSRL_8u16(f, 4); - f = #VPBLEND_8u16(f, t, 0xAA); - f = #VPAND_128(f, mask); - - t = #VPCMPGT_8u16(bound, f); - good = #VPMOVMSKB_u128u64(t); - - good = #PEXT_64(good, t64); - l = #VMOV(idxp[u64 (int)good]); - _, _, _, _, _, good = #POPCNT_64(good); - - h = #VPADD_16u8(l, ones); - l = #VPUNPCKL_16u8(l, h); - f = #VPSHUFB_128(f, l); - - rp.[u128 2*(int)ctr] = f; - ctr += good; - - pos += 12; - ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 8); - fl1 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 16); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - - while(!b) - { - val0 = (16u)buf[(int)pos]; - pos += 1; - t16 = (16u)buf[(int)pos]; - pos += 1; - val1 = t16; - - t16 <<= 8; - val0 |= t16; - val0 &= 0xFFF; - - val1 >>= 4; - t16 = (16u)buf[(int)pos]; - pos += 1; - t16 <<= 4; - val1 |= t16; - - if(val0 < KYBER_Q) - { - rp[(int)ctr] = val0; - ctr += 1; - } - if(val1 < KYBER_Q) - { - if(ctr < KYBER_N) - { - rp[(int)ctr] = val1; - ctr += 1; - } - } - - ?{ "<=u" = b } = #CMP_64(ctr, KYBER_N - 1); - fl1 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(pos, REJ_UNIFORM_AVX_BUFLEN - 3); - fl2 = #SETcc(b); - - _, _, _, _, b = #TEST_8(fl1, fl2); - } - - return ctr, rp; -} - -inline -fn __gen_matrix(stack u8[KYBER_SYMBYTES] seed, inline int transposed) -> stack u16[KYBER_K*KYBER_VECN] -{ - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf0; - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf1; - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf2; - stack u8[REJ_UNIFORM_AVX_BUFLEN] buf3; - reg u256[7] statev; - stack u64[28] s_state; - stack u256[25] state; - stack u16[KYBER_K*KYBER_VECN] rr; - stack u256 fs; - reg u256 f; - reg u64 ctr0 ctr1 ctr2 ctr3 tmp; - stack u64 ctr0_s; - reg u8 flg0 flg1 bflg; - reg bool b; - reg bool zf; - - inline int i, j; - - f = seed[u256 0]; - buf0[u256 0] = f; - buf1[u256 0] = f; - buf2[u256 0] = f; - buf3[u256 0] = f; - fs = f; - - if(transposed == 1) - { - buf0[KYBER_SYMBYTES] = 0; - buf0[KYBER_SYMBYTES+1] = 0; - buf1[KYBER_SYMBYTES] = 0; - buf1[KYBER_SYMBYTES+1] = 1; - buf2[KYBER_SYMBYTES] = 0; - buf2[KYBER_SYMBYTES+1] = 2; - buf3[KYBER_SYMBYTES] = 1; - buf3[KYBER_SYMBYTES+1] = 0; - } - else - { - buf0[KYBER_SYMBYTES] = 0; - buf0[KYBER_SYMBYTES+1] = 0; - buf1[KYBER_SYMBYTES] = 1; - buf1[KYBER_SYMBYTES+1] = 0; - buf2[KYBER_SYMBYTES] = 2; - buf2[KYBER_SYMBYTES+1] = 0; - buf3[KYBER_SYMBYTES] = 0; - buf3[KYBER_SYMBYTES+1] = 1; - } - - state = _shake128_absorb4x_34(state, buf0[0:34], buf1[0:34], buf2[0:34], buf3[0:34]); - state, buf0, buf1, buf2, buf3 = __shake128_squeezenblocks4x(state, buf0, buf1, buf2, buf3); - - tmp, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], buf0); - ctr0 = tmp; - tmp, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], buf1); - ctr1 = tmp; - tmp, rr[0*KYBER_VECN+2*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[0*KYBER_VECN+2*KYBER_N:KYBER_N], buf2); - ctr2 = tmp; - ctr3, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], buf3); - - ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, bflg = #OR_8(flg0, flg1); - - ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, flg0 = #OR_8(flg0, flg1); - _, _, _, _, zf, _ = #OR_8(flg0, bflg); - - while (!zf) { - state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE] = __shake128_squeezeblock4x(state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE]); - - ctr0, rr[0*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+0*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); - ctr1, rr[0*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+1*KYBER_N:KYBER_N], ctr1, buf1[0:SHAKE128_RATE], SHAKE128_RATE); - ctr2, rr[0*KYBER_VECN+2*KYBER_N:KYBER_N] = __rej_uniform(rr[0*KYBER_VECN+2*KYBER_N:KYBER_N], ctr2, buf2[0:SHAKE128_RATE], SHAKE128_RATE); - ctr3, rr[1*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+0*KYBER_N:KYBER_N], ctr3, buf3[0:SHAKE128_RATE], SHAKE128_RATE); - - ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, bflg = #OR_8(flg0, flg1); - - ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, flg0 = #OR_8(flg0, flg1); - _, _, _, _, zf, _ = #OR_8(flg0, bflg); - } - - f = fs; - buf0[u256 0] = f; - buf1[u256 0] = f; - buf2[u256 0] = f; - buf3[u256 0] = f; - fs = f; - - if(transposed == 1) - { - buf0[KYBER_SYMBYTES] = 1; - buf0[KYBER_SYMBYTES+1] = 1; - buf1[KYBER_SYMBYTES] = 1; - buf1[KYBER_SYMBYTES+1] = 2; - buf2[KYBER_SYMBYTES] = 2; - buf2[KYBER_SYMBYTES+1] = 0; - buf3[KYBER_SYMBYTES] = 2; - buf3[KYBER_SYMBYTES+1] = 1; - } - else - { - buf0[KYBER_SYMBYTES] = 1; - buf0[KYBER_SYMBYTES+1] = 1; - buf1[KYBER_SYMBYTES] = 2; - buf1[KYBER_SYMBYTES+1] = 1; - buf2[KYBER_SYMBYTES] = 0; - buf2[KYBER_SYMBYTES+1] = 2; - buf3[KYBER_SYMBYTES] = 1; - buf3[KYBER_SYMBYTES+1] = 2; - } - - state = _shake128_absorb4x_34(state, buf0[0:34], buf1[0:34], buf2[0:34], buf3[0:34]); - state, buf0, buf1, buf2, buf3 = __shake128_squeezenblocks4x(state, buf0, buf1, buf2, buf3); - - tmp, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], buf0); - ctr0 = tmp; - tmp, rr[1*KYBER_VECN+2*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[1*KYBER_VECN+2*KYBER_N:KYBER_N], buf1); - ctr1 = tmp; - tmp, rr[2*KYBER_VECN+0*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[2*KYBER_VECN+0*KYBER_N:KYBER_N], buf2); - ctr2 = tmp; - ctr3, rr[2*KYBER_VECN+1*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[2*KYBER_VECN+1*KYBER_N:KYBER_N], buf3); - - ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, bflg = #OR_8(flg0, flg1); - - ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, flg0 = #OR_8(flg0, flg1); - _, _, _, _, zf, _ = #OR_8(flg0, bflg); - - - while(!zf) { - state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE] = __shake128_squeezeblock4x(state, buf0[0:SHAKE128_RATE], buf1[0:SHAKE128_RATE], buf2[0:SHAKE128_RATE], buf3[0:SHAKE128_RATE]); - - ctr0, rr[1*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+1*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); - ctr1, rr[1*KYBER_VECN+2*KYBER_N:KYBER_N] = __rej_uniform(rr[1*KYBER_VECN+2*KYBER_N:KYBER_N], ctr1, buf1[0:SHAKE128_RATE], SHAKE128_RATE); - ctr2, rr[2*KYBER_VECN+0*KYBER_N:KYBER_N] = __rej_uniform(rr[2*KYBER_VECN+0*KYBER_N:KYBER_N], ctr2, buf2[0:SHAKE128_RATE], SHAKE128_RATE); - ctr3, rr[2*KYBER_VECN+1*KYBER_N:KYBER_N] = __rej_uniform(rr[2*KYBER_VECN+1*KYBER_N:KYBER_N], ctr3, buf3[0:SHAKE128_RATE], SHAKE128_RATE); - - ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr1, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, bflg = #OR_8(flg0, flg1); - - ?{ "<=u" = b } = #CMP_64(ctr2, KYBER_N - 1); - flg0 = #SETcc(b); - - ?{ "<=u" = b } = #CMP_64(ctr3, KYBER_N - 1); - flg1 = #SETcc(b); - - _, _, _, _, _, flg0 = #OR_8(flg0, flg1); - _, _, _, _, zf, _ = #OR_8(flg0, bflg); - } - - f = fs; - buf0[u256 0] = f; - buf0[KYBER_SYMBYTES] = 2; - buf0[KYBER_SYMBYTES+1] = 2; - - statev = __shake128_absorb34(statev, buf0[0:34]); - statev, buf0 = __shake128_squeezenblocks(statev, buf0); - - // spill state to free registers for rejection sampling - for i=0 to 7 { s_state[u256 i] = statev[i]; } - - ctr0, rr[2*KYBER_VECN+2*KYBER_N:KYBER_N] = _rej_uniform_avx(rr[2*KYBER_VECN+2*KYBER_N:KYBER_N], buf0); - - ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); - bflg = #SETcc(b); - - for i=0 to 7 { statev[i] = s_state[u256 i]; } - - while(bflg != 0) { - statev, buf0[0:SHAKE128_RATE] = __shake128_squeezeblock(statev, buf0[0:SHAKE128_RATE]); - - ctr0, rr[2*KYBER_VECN+2*KYBER_N:KYBER_N] = __rej_uniform(rr[2*KYBER_VECN+2*KYBER_N:KYBER_N], ctr0, buf0[0:SHAKE128_RATE], SHAKE128_RATE); - - ?{ "<=u" = b } = #CMP_64(ctr0, KYBER_N - 1); - bflg = #SETcc(b); - } - - for i = 0 to KYBER_K - { - for j = 0 to KYBER_K - { - rr[i*KYBER_VECN+j*KYBER_N:KYBER_N] = _nttunpack(rr[i*KYBER_VECN+j*KYBER_N:KYBER_N]); - } - } - - return rr; -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc b/src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc deleted file mode 100644 index 9852b48f1..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/indcpa.jinc +++ /dev/null @@ -1,218 +0,0 @@ -from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" -from Jade require "crypto_kem/kyber/common/amd64/avx2/poly.jinc" -from Jade require "crypto_kem/kyber/common/amd64/avx2/polyvec.jinc" -require "gen_matrix.jinc" - -inline -fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] coins) -{ - stack u64 spkp sskp; - stack u16[KYBER_K*KYBER_VECN] aa; - stack u16[KYBER_VECN] e pkpv skpv; - stack u8[64] buf; - stack u8[KYBER_SYMBYTES] publicseed noiseseed; - reg u64 t64; - reg u8 nonce; - inline int i; - - spkp = pkp; - sskp = skp; - - buf = _sha3_512_32(buf, coins); - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = buf[u64 i]; - publicseed[u64 i] = t64; - t64 = buf[u64 i + KYBER_SYMBYTES/8]; - noiseseed[u64 i] = t64; - } - - aa = __gen_matrix(publicseed, 0); - - nonce = 0; - skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], skpv[2*KYBER_N:KYBER_N], e[0:KYBER_N] = _poly_getnoise_eta1_4x(skpv[0:KYBER_N], skpv[KYBER_N:KYBER_N], skpv[2*KYBER_N:KYBER_N], e[0:KYBER_N], noiseseed, nonce); - - nonce = 4; - e[KYBER_N:KYBER_N], e[2*KYBER_N:KYBER_N], pkpv[0:KYBER_N], pkpv[KYBER_N:KYBER_N] = _poly_getnoise_eta1_4x(e[KYBER_N:KYBER_N], e[2*KYBER_N:KYBER_N], pkpv[0:KYBER_N], pkpv[KYBER_N:KYBER_N], noiseseed, nonce); - - skpv = __polyvec_ntt(skpv); - e = __polyvec_ntt(e); - - for i=0 to KYBER_K - { - pkpv[i*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(pkpv[i*KYBER_N:KYBER_N], aa[i*KYBER_VECN:KYBER_VECN], skpv); - pkpv[i*KYBER_N:KYBER_N] = _poly_frommont(pkpv[i*KYBER_N:KYBER_N]); - } - - pkpv = __polyvec_add2(pkpv, e); - pkpv = __polyvec_reduce(pkpv); - - pkp = spkp; - skp = sskp; - - __polyvec_tobytes(skp, skpv); - __polyvec_tobytes(pkp, pkpv); - - pkp += KYBER_POLYVECBYTES; - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = publicseed[u64 i]; - (u64)[pkp] = t64; - pkp += 8; - } -} - -// FIXME: E_EPTR -inline -fn __indcpa_enc_0(stack u64 sctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -{ - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_N] k epp v; - stack u8[KYBER_SYMBYTES] publicseed; - stack ptr u8[KYBER_SYMBYTES] s_noiseseed; - reg ptr u8[KYBER_SYMBYTES] lnoiseseed; - reg u64 i ctp t64; - reg u8 nonce; - inline int w; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed[u64 (int)i] = t64; - pkp += 8; - i += 1; - } - - k = _poly_frommsg_1(k, msgp); - - s_noiseseed = noiseseed; - aat = __gen_matrix(publicseed, 1); - lnoiseseed = s_noiseseed; - - nonce = 0; - sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N] = _poly_getnoise_eta1_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N], lnoiseseed, nonce); - - nonce = 4; - ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N] = _poly_getnoise_eta1_4x(ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N], lnoiseseed, nonce); - - sp = __polyvec_ntt(sp); - - for w=0 to KYBER_K - { - bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); - } - - v = __polyvec_pointwise_acc(v, pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - __polyvec_compress(ctp, bp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_compress(ctp, v); -} - -// FIXME: E_EPTR -inline -fn __indcpa_enc_1(reg ptr u8[KYBER_INDCPA_BYTES] ctp, reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_INDCPA_BYTES] -{ - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_N] k epp v; - stack u8[KYBER_SYMBYTES] publicseed; - stack ptr u8[KYBER_SYMBYTES] s_noiseseed; - reg ptr u8[KYBER_SYMBYTES] lnoiseseed; - stack ptr u8[KYBER_INDCPA_BYTES] sctp; - reg u64 i t64; - reg u8 nonce; - inline int w; - - sctp = ctp; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed[u64 (int)i] = t64; - pkp += 8; - i += 1; - } - - k = _poly_frommsg_1(k, msgp); - - s_noiseseed = noiseseed; - aat = __gen_matrix(publicseed, 1); - lnoiseseed = s_noiseseed; - - nonce = 0; - sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N] = _poly_getnoise_eta1_4x(sp[0:KYBER_N], sp[KYBER_N:KYBER_N], sp[2*KYBER_N:KYBER_N], ep[0:KYBER_N], lnoiseseed, nonce); - - nonce = 4; - ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N] = _poly_getnoise_eta1_4x(ep[KYBER_N:KYBER_N], ep[2*KYBER_N:KYBER_N], epp, bp[0:KYBER_N], lnoiseseed, nonce); - - sp = __polyvec_ntt(sp); - - for w=0 to KYBER_K - { - bp[w*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(bp[w*KYBER_N:KYBER_N], aat[w*KYBER_VECN:KYBER_VECN], sp); - } - - v = __polyvec_pointwise_acc(v, pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __polyvec_compress_1(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); - ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _poly_compress_1(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); - - return ctp; -} - - -inline -fn __indcpa_dec(reg ptr u8[KYBER_INDCPA_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_INDCPA_MSGBYTES] -{ - stack u16[KYBER_N] t v mp; - stack u16[KYBER_VECN] bp skpv; - - bp = __polyvec_decompress(ctp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_decompress(v, ctp); - - skpv = __polyvec_frombytes(skp); - - bp = __polyvec_ntt(bp); - t = __polyvec_pointwise_acc(t, skpv, bp); - t = _poly_invntt(t); - - mp = _poly_sub(mp, v, t); - mp = __poly_reduce(mp); - - msgp, mp = _poly_tomsg_1(msgp, mp); - - return msgp; -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz b/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz deleted file mode 100644 index 325177a63..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.jazz +++ /dev/null @@ -1,66 +0,0 @@ -require "indcpa.jinc" -from Jade require "common/tofromstack.jinc" -from Jade require "crypto_kem/kyber/common/amd64/avx2/verify.jinc" -from Jade require "crypto_kem/kyber/common/amd64/kem.jinc" - -export fn jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = __tostack64u8(stack_coins, coins); - __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_avx2_keypair(reg u64 public_key secret_key) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = #randombytes(stack_coins); - __crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_avx2_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = __tostack32u8(stack_coins, coins); - __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_avx2_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = #randombytes(stack_coins); - __crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_avx2_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 -{ - reg u64 r; - __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); - ?{}, r = #set0(); - return r; -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d b/src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d deleted file mode 100644 index b8388f8b2..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/.deps/kem.s.d +++ /dev/null @@ -1 +0,0 @@ -kem.s: kem.jazz /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/kem.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/indcpa.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/poly.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/reduce.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_ref_DIRTY.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/common/fips202_params.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccak1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/ref1/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600_globals.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/keccak/keccak1600/amd64/spec/keccakf1600.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/zetas.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/polyvec.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/crypto_kem/kyber/kyber768/amd64/ref/verify.jinc /home/oqs/oqs/temp/liboqs/scripts/copy_from_upstream/repos/libjade/src/common/tofromstack.jinc \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/Makefile b/src/kem/kyber/libjade_kyber768_amd64_ref/Makefile deleted file mode 100644 index 42a9eef0b..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -SAFETY_FLAGS := -nocheckalignment -SRCS := kem.jazz -include ../../../../../Makefile.common - diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/include/api.h b/src/kem/kyber/libjade_kyber768_amd64_ref/api.h similarity index 100% rename from src/kem/kyber/libjade_kyber768_amd64_ref/include/api.h rename to src/kem/kyber/libjade_kyber768_amd64_ref/api.h diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc deleted file mode 100644 index 5e0ac7566..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/indcpa.jinc +++ /dev/null @@ -1,254 +0,0 @@ - -// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 -from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" - -from Jade require "crypto_kem/kyber/kyber768/amd64/ref/poly.jinc" -from Jade require "crypto_kem/kyber/kyber768/amd64/ref/polyvec.jinc" -from Jade require "common/keccak/common/fips202_ref_DIRTY.jinc" -from Jade require "crypto_kem/kyber/common/amd64/ref/gen_matrix.jinc" - -inline -fn __indcpa_keypair_derand(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES] randomnessp) -{ - stack u16[KYBER_K * KYBER_VECN] a; - stack u16[KYBER_VECN] e pkpv skpv; - stack u8[64] buf; - stack u8[KYBER_SYMBYTES] publicseed noiseseed; - stack u8[32] inbuf; - reg u64 t64; - reg u64 zero; - reg u8 nonce; - inline int i; - - stack u64 spkp; - stack u64 sskp; - - spkp = pkp; - sskp = skp; - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = randomnessp[u64 i]; - inbuf[u64 i] = t64; - } - - buf = _sha3_512_32(buf, inbuf); - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = buf[u64 i]; - publicseed[u64 i] = t64; - t64 = buf[u64 i + KYBER_SYMBYTES/8]; - noiseseed[u64 i] = t64; - } - - zero = 0; - a = __gen_matrix(publicseed, zero); - - nonce = 0; - skpv[0:KYBER_N] = _poly_getnoise(skpv[0:KYBER_N], noiseseed, nonce); - nonce = 1; - skpv[KYBER_N:KYBER_N] = _poly_getnoise(skpv[KYBER_N:KYBER_N], noiseseed, nonce); - nonce = 2; - skpv[2*KYBER_N:KYBER_N] = _poly_getnoise(skpv[2*KYBER_N:KYBER_N], noiseseed, nonce); - - nonce = 3; - e[0:KYBER_N] = _poly_getnoise(e[0:KYBER_N], noiseseed, nonce); - nonce = 4; - e[KYBER_N:KYBER_N] = _poly_getnoise(e[KYBER_N:KYBER_N], noiseseed, nonce); - nonce = 5; - e[2*KYBER_N:KYBER_N] = _poly_getnoise(e[2*KYBER_N:KYBER_N], noiseseed, nonce); - - skpv = __polyvec_ntt(skpv); - e = __polyvec_ntt(e); - - pkpv[0:KYBER_N] = __polyvec_pointwise_acc(a[0:KYBER_VECN], skpv); - pkpv[0:KYBER_N] = _poly_frommont(pkpv[0:KYBER_N]); - pkpv[KYBER_N:KYBER_N] = __polyvec_pointwise_acc(a[KYBER_VECN:KYBER_VECN], skpv); - pkpv[KYBER_N:KYBER_N] = _poly_frommont(pkpv[KYBER_N:KYBER_N]); - pkpv[2*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(a[2*KYBER_VECN:KYBER_VECN], skpv); - pkpv[2*KYBER_N:KYBER_N] = _poly_frommont(pkpv[2*KYBER_N:KYBER_N]); - - pkpv = __polyvec_add2(pkpv, e); - pkpv = __polyvec_reduce(pkpv); - - pkp = spkp; - skp = sskp; - - __polyvec_tobytes(skp, skpv); - __polyvec_tobytes(pkp, pkpv); - - pkp += KYBER_POLYVECBYTES; - for i=0 to KYBER_SYMBYTES/8 - { - t64 = publicseed[u64 i]; - (u64)[pkp] = t64; - pkp += 8; - } -} - -inline -fn __indcpa_enc(stack u64 sctp, reg ptr u8[32] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -{ - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_N] k poly epp v poly0 poly1 poly2; - stack u8[KYBER_SYMBYTES] publicseed; - reg u64 i j t64; - reg u64 ctp; - reg u16 t; - reg u8 nonce; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - #bounded - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed.[u64 8 * (int)i] = t64; - pkp += 8; - i += 1; - } - - k = _i_poly_frommsg(k, msgp); - - aat = __gen_matrix(publicseed, 1); - - nonce = 0; - sp[0:KYBER_N] = _poly_getnoise(sp[0:KYBER_N], noiseseed, nonce); - nonce = 1; - sp[KYBER_N:KYBER_N] = _poly_getnoise(sp[KYBER_N:KYBER_N], noiseseed, nonce); - nonce = 2; - sp[2*KYBER_N:KYBER_N] = _poly_getnoise(sp[2*KYBER_N:KYBER_N], noiseseed, nonce); - - nonce = 3; - ep[0:KYBER_N] = _poly_getnoise(ep[0:KYBER_N], noiseseed, nonce); - nonce = 4; - ep[KYBER_N:KYBER_N] = _poly_getnoise(ep[KYBER_N:KYBER_N], noiseseed, nonce); - nonce = 5; - ep[2*KYBER_N:KYBER_N] = _poly_getnoise(ep[2*KYBER_N:KYBER_N], noiseseed, nonce); - - nonce = 6; - epp = _poly_getnoise(epp, noiseseed, nonce); - - sp = __polyvec_ntt(sp); - - bp[0:KYBER_N] = __polyvec_pointwise_acc(aat[0:KYBER_VECN], sp); - bp[KYBER_N:KYBER_N]= __polyvec_pointwise_acc(aat[KYBER_VECN:KYBER_VECN], sp); - bp[2*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[2*KYBER_VECN:KYBER_VECN], sp); - - v = __polyvec_pointwise_acc(pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - __polyvec_compress(ctp, bp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_compress(ctp, v); -} - -inline -fn __iindcpa_enc(reg ptr u8[KYBER_CT_LEN] ctp, reg ptr u8[32] msgp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] noiseseed) -> reg ptr u8[KYBER_CT_LEN] -{ - stack u16[KYBER_VECN] pkpv sp ep bp; - stack u16[KYBER_K*KYBER_VECN] aat; - stack u16[KYBER_N] k poly epp v poly0 poly1 poly2; - stack u8[KYBER_SYMBYTES] publicseed; - reg u64 i j t64; - reg u16 t; - reg u8 nonce; - stack ptr u8[KYBER_CT_LEN] sctp; - - sctp = ctp; - - pkpv = __polyvec_frombytes(pkp); - - i = 0; - pkp += KYBER_POLYVECBYTES; - #bounded - while (i < KYBER_SYMBYTES/8) - { - t64 = (u64)[pkp]; - publicseed.[u64 8*(int)i] = t64; - pkp += 8; - i += 1; - } - - k = _i_poly_frommsg(k, msgp); - - aat = __gen_matrix(publicseed, 1); - - nonce = 0; - sp[0:KYBER_N] = _poly_getnoise(sp[0:KYBER_N], noiseseed, nonce); - nonce = 1; - sp[KYBER_N:KYBER_N] = _poly_getnoise(sp[KYBER_N:KYBER_N], noiseseed, nonce); - nonce = 2; - sp[2*KYBER_N:KYBER_N] = _poly_getnoise(sp[2*KYBER_N:KYBER_N], noiseseed, nonce); - - nonce = 3; - ep[0:KYBER_N] = _poly_getnoise(ep[0:KYBER_N], noiseseed, nonce); - nonce = 4; - ep[KYBER_N:KYBER_N] = _poly_getnoise(ep[KYBER_N:KYBER_N], noiseseed, nonce); - nonce = 5; - ep[2*KYBER_N:KYBER_N] = _poly_getnoise(ep[2*KYBER_N:KYBER_N], noiseseed, nonce); - - nonce = 6; - epp = _poly_getnoise(epp, noiseseed, nonce); - - sp = __polyvec_ntt(sp); - - bp[0:KYBER_N] = __polyvec_pointwise_acc(aat[0:KYBER_VECN], sp); - bp[KYBER_N:KYBER_N]= __polyvec_pointwise_acc(aat[KYBER_VECN:KYBER_VECN], sp); - bp[2*KYBER_N:KYBER_N] = __polyvec_pointwise_acc(aat[2*KYBER_VECN:KYBER_VECN], sp); - - v = __polyvec_pointwise_acc(pkpv, sp); - - bp = __polyvec_invntt(bp); - v = _poly_invntt(v); - - bp = __polyvec_add2(bp, ep); - v = _poly_add2(v, epp); - v = _poly_add2(v, k); - bp = __polyvec_reduce(bp); - v = __poly_reduce(v); - - ctp = sctp; - ctp[0:KYBER_POLYVECCOMPRESSEDBYTES] = __i_polyvec_compress(ctp[0:KYBER_POLYVECCOMPRESSEDBYTES], bp); - ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v = _i_poly_compress(ctp[KYBER_POLYVECCOMPRESSEDBYTES:KYBER_POLYCOMPRESSEDBYTES], v); - - return ctp; -} - - -inline -fn __indcpa_dec(reg ptr u8[KYBER_MSGBYTES] msgp, reg u64 ctp, reg u64 skp) -> reg ptr u8[KYBER_N/8] -{ - stack u16[KYBER_N] t v mp; - stack u16[KYBER_VECN] bp skpv; - - bp = __polyvec_decompress(ctp); - ctp += KYBER_POLYVECCOMPRESSEDBYTES; - v = _poly_decompress(v, ctp); - - skpv = __polyvec_frombytes(skp); - - bp = __polyvec_ntt(bp); - t = __polyvec_pointwise_acc(skpv, bp); - t = _poly_invntt(t ); - - mp = _poly_sub(mp, v, t); - mp = __poly_reduce(mp); - - msgp, mp = _i_poly_tomsg(msgp, mp); - - return msgp; -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz deleted file mode 100644 index 0f74b7263..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jazz +++ /dev/null @@ -1,66 +0,0 @@ -require "params.jinc" -require "kem.jinc" -from Jade require "common/tofromstack.jinc" - -export fn jade_kem_kyber_kyber768_amd64_ref_keypair_derand(reg u64 public_key secret_key coins) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = __tostack64u8(stack_coins, coins); - _crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_ref_keypair(reg u64 public_key secret_key) -> reg u64 -{ - reg u64 r; - stack u8[2*KYBER_SYMBYTES] stack_coins; - - public_key = public_key; - secret_key = secret_key; - stack_coins = #randombytes(stack_coins); - _crypto_kem_keypair_derand_jazz(public_key, secret_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_ref_enc_derand(reg u64 ciphertext shared_secret public_key coins) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = __tostack32u8(stack_coins, coins); - _crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_ref_enc(reg u64 ciphertext shared_secret public_key) -> reg u64 -{ - reg u64 r; - stack u8[KYBER_SYMBYTES] stack_coins; - - ciphertext = ciphertext; - shared_secret = shared_secret; - public_key = public_key; - stack_coins = #randombytes(stack_coins); - _crypto_kem_enc_derand_jazz(ciphertext, shared_secret, public_key, stack_coins); - ?{}, r = #set0(); - return r; -} - -export fn jade_kem_kyber_kyber768_amd64_ref_dec(reg u64 shared_secret ciphertext secret_key) -> reg u64 -{ - reg u64 r; - __crypto_kem_dec_jazz(shared_secret, ciphertext, secret_key); - ?{}, r = #set0(); - return r; -} - diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc deleted file mode 100644 index 12f2dbdb3..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.jinc +++ /dev/null @@ -1,150 +0,0 @@ - -// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 -from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" - -require "indcpa.jinc" -require "verify.jinc" - -#[returnaddress="stack"] -fn _crypto_kem_keypair_derand_jazz(reg u64 pkp, reg u64 skp, reg ptr u8[KYBER_SYMBYTES*2] randomnessp) -{ - stack ptr u8[KYBER_SYMBYTES*2] s_randomnessp; - reg ptr u8[KYBER_SYMBYTES] randomnessp1 randomnessp2; - - stack u8[32] h_pk; - stack u64 s_skp s_pkp; - reg u64 t64; - inline int i; - - s_randomnessp = randomnessp; - s_pkp = pkp; - s_skp = skp; - - randomnessp1 = randomnessp[0:KYBER_SYMBYTES]; - __indcpa_keypair_derand(pkp, skp, randomnessp1); - - skp = s_skp; - skp += KYBER_POLYVECBYTES; - pkp = s_pkp; - - for i=0 to KYBER_INDCPA_PUBLICKEYBYTES/8 - { - t64 = (u64)[pkp + 8*i]; - (u64)[skp] = t64; - skp += 8; - } - - s_skp = skp; - pkp = s_pkp; - t64 = KYBER_POLYVECBYTES + KYBER_SYMBYTES; - h_pk = _sha3_256(h_pk, pkp, t64); - skp = s_skp; - - for i=0 to 4 - { - t64 = h_pk[u64 i]; - (u64)[skp] = t64; - skp += 8; - } - - randomnessp = s_randomnessp; - randomnessp2 = randomnessp[KYBER_SYMBYTES:KYBER_SYMBYTES]; - for i=0 to KYBER_SYMBYTES/8 - { - t64 = randomnessp2[u64 i]; - (u64)[skp] = t64; - skp += 8; - } -} - -#[returnaddress="stack"] -fn _crypto_kem_enc_derand_jazz(reg u64 ctp, reg u64 shkp, reg u64 pkp, reg ptr u8[KYBER_SYMBYTES] randomnessp) -{ - inline int i; - - stack u8[KYBER_SYMBYTES * 2] buf kr; - stack u64 s_pkp s_ctp s_shkp; - reg u64 t64; - - s_pkp = pkp; - s_ctp = ctp; - s_shkp = shkp; - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = randomnessp[u64 i]; - kr[u64 i] = t64; - } - - buf[0:KYBER_SYMBYTES] = _sha3_256_32(buf[0:KYBER_SYMBYTES], kr[0:KYBER_SYMBYTES]); - - pkp = s_pkp; - - t64 = KYBER_PUBLICKEYBYTES; - buf[KYBER_SYMBYTES:KYBER_SYMBYTES] = _sha3_256(buf[KYBER_SYMBYTES:KYBER_SYMBYTES], pkp, t64); - - kr = _sha3_512_64(kr, buf); - - pkp = s_pkp; - - __indcpa_enc(s_ctp, buf[0:KYBER_SYMBYTES], pkp, kr[KYBER_SYMBYTES:KYBER_SYMBYTES]); - - ctp = s_ctp; - t64 = KYBER_CT_LEN; - kr[KYBER_SYMBYTES:KYBER_SYMBYTES] = _sha3_256(kr[KYBER_SYMBYTES:KYBER_SYMBYTES], ctp, t64); - - shkp = s_shkp; - t64 = KYBER_SSBYTES; - _shake256_64(shkp, t64, kr); -} - -inline -fn __crypto_kem_dec_jazz(reg u64 shkp, reg u64 ctp, reg u64 skp) -{ - stack u8[KYBER_CT_LEN] ctpc; - stack u8[2*KYBER_SYMBYTES] kr buf; - stack u64 s_skp s_ctp s_shkp; - reg u64 pkp hp zp t64 cnd; - inline int i; - - s_shkp = shkp; - s_ctp = ctp; - - buf[0:KYBER_MSGBYTES] = __indcpa_dec(buf[0:KYBER_MSGBYTES], ctp, skp); - - hp = #LEA(skp + 32); // avoid -lea - //hp += 24 * KYBER_K * KYBER_N>>3; - hp += 3 * KYBER_K * KYBER_N; - - for i=0 to KYBER_SYMBYTES/8 - { - t64 = (u64)[hp + 8*i]; - buf.[u64 KYBER_SYMBYTES + 8*i] = t64; - } - - s_skp = skp; - - kr = _sha3_512_64(kr, buf); - - pkp = s_skp; - //pkp += 12 * KYBER_K * KYBER_N>>3; - pkp += 12 * KYBER_K * 32; - - ctpc = __iindcpa_enc(ctpc, buf[0:KYBER_SYMBYTES], pkp, kr[KYBER_SYMBYTES:KYBER_SYMBYTES]); - - ctp = s_ctp; - cnd = __verify(ctp, ctpc); - - zp = s_skp; - zp += 64; - //zp += 24 * KYBER_K * KYBER_N>>3; - zp += 3 * KYBER_K * KYBER_N; - kr[0:KYBER_SYMBYTES] = __cmov(kr[0:KYBER_SYMBYTES], zp, cnd); - - t64 = KYBER_CT_LEN; - kr[KYBER_SYMBYTES:KYBER_SYMBYTES] = _sha3_256(kr[KYBER_SYMBYTES:KYBER_SYMBYTES], ctp, t64); - - shkp = s_shkp; - t64 = KYBER_SSBYTES; - _shake256_64(shkp, t64, kr); -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc deleted file mode 100644 index fc02c7084..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/params.jinc +++ /dev/null @@ -1,21 +0,0 @@ -// Note1: This file was imported from hakyber, to ensure that the parameters that are defined -// accordingly to their usage in the correctness proof. An alternative version of this file exists -// in crypto_kem/kyber/kyber768/common/params.jinc and these will be merged once hakyber avx2 is -// integrated into libjade. - -param int KYBER_Q = 3329; -param int KYBER_N = 256; -param int KYBER_K = 3; -param int KYBER_VECN = KYBER_K * KYBER_N; - -param int KYBER_SYMBYTES = 32; -param int KYBER_ETA = 2; -param int KYBER_POLYBYTES = 384; -param int KYBER_POLYVECBYTES = (KYBER_K * KYBER_POLYBYTES); -param int KYBER_POLYCOMPRESSEDBYTES = 128; -param int KYBER_POLYVECCOMPRESSEDBYTES = (KYBER_K * 320); -param int KYBER_MSGBYTES = KYBER_SYMBYTES; -param int KYBER_CT_LEN = KYBER_POLYVECCOMPRESSEDBYTES + KYBER_POLYCOMPRESSEDBYTES; -param int KYBER_INDCPA_PUBLICKEYBYTES = KYBER_POLYVECBYTES + KYBER_SYMBYTES; -param int KYBER_PUBLICKEYBYTES = KYBER_INDCPA_PUBLICKEYBYTES; -param int KYBER_SSBYTES = 32; diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc deleted file mode 100644 index b36b90336..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/poly.jinc +++ /dev/null @@ -1,731 +0,0 @@ -// Note1: the previous kyber768/amd64/ref libjade implementation used the generic version of this -// file, defined in crypto_kem/kyber/common/amd64/ref/poly.jinc. This file was imported from -// hakyber and the main differences are: 1) the usage of KYBER_INDCPA_MSGBYTES (this file does -// not); 2) get_noise; - -// Note2: although the standard practice in libjade is to require files within the same folder as -// `require "file"`, the following `require` statement does not follow that rule to make explicit -// the fact that we are including a `params.jinc` file that is not under a `common` folder. Other -// instances of such cases exist in this folder. - -// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 -from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" - -from Jade require "crypto_kem/kyber/common/amd64/ref/reduce.jinc" -from Jade require "common/keccak/common/fips202_ref_DIRTY.jinc" -from Jade require "crypto_kem/kyber/common/amd64/ref/zetas.jinc" - -fn _poly_add2(reg ptr u16[KYBER_N] rp bp) -> stack u16[KYBER_N] -{ - reg u16 a; - reg u16 b; - reg u16 r; - reg u64 i; - - i = 0; - - #bounded - while (i < KYBER_N) { - a = rp[(int)i]; - b = bp[(int)i]; - r = a + b; - rp[(int)i] = r; - i += 1; - } - return rp; -} - -fn _poly_csubq(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] -{ - reg u64 i; - reg u16 t; - reg u16 b; - - i = 0; - #bounded - while (i < KYBER_N) - { - t = rp[(int)i]; - t -= KYBER_Q; - b = t; - b >>s= 15; - b &= KYBER_Q; - t += b; - rp[(int)i] = t; - i += 1; - } - return rp; -} - -fn _poly_basemul(reg ptr u16[KYBER_N] rp, reg const ptr u16[KYBER_N] ap bp) -> reg ptr u16[KYBER_N] -{ - reg u64 offset; - reg u16 zeta; - reg u16 r0; - reg u16 r1; - reg u16 a0; - reg u16 a1; - reg u16 b0; - reg u16 b1; - reg u16 t; - reg ptr u16[128] zetasp; - reg u64 zetasctr; - reg u64 i; - - stack ptr u16[KYBER_N] srp; - - srp = rp; - - zetasctr = 64; - i = 0; - - #bounded - while(i < KYBER_N) - { - zetasp = jzetas; - zeta = zetasp[(int)zetasctr]; - zetasctr += 1; - - a0 = ap[(int)i]; - b0 = bp[(int)i]; - i += 1; - a1 = ap[(int)i]; - b1 = bp[(int)i]; - i -= 1; - - r0 = __fqmul(a1, b1); - r0 = __fqmul(r0, zeta); - t = __fqmul(a0, b0); - r0 += t; - - r1 = __fqmul(a0, b1); - t = __fqmul(a1, b0); - r1 += t; - - rp = srp; - rp[(int)i] = r0; - i += 1; - rp[(int)i] = r1; - srp = rp; - - - zeta = -zeta; - - i += 1; - a0 = ap[(int)i]; - b0 = bp[(int)i]; - i += 1; - a1 = ap[(int)i]; - b1 = bp[(int)i]; - i -= 1; - - r0 = __fqmul(a1, b1); - r0 = __fqmul(r0, zeta); - t = __fqmul(a0, b0); - r0 += t; - - r1 = __fqmul(a0, b1); - t = __fqmul(a1, b0); - r1 += t; - - rp = srp; - rp[(int)i] = r0; - i += 1; - rp[(int)i] = r1; - srp = rp; - - i += 1; - } - return rp; -} - -inline -fn __poly_reduce(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] -{ - reg u64 j; - reg u16 t; - j = 0; - #bounded - while (j < KYBER_N) - { - t = rp[(int)j]; - t = __barrett_reduce(t); - rp[(int)j] = t; - j += 1; - } - return rp; -} - -fn _poly_compress(reg u64 rp, reg ptr u16[KYBER_N] a) -> reg ptr u16[KYBER_N] -{ - reg u16 t; - reg u32 d0, d1; - reg u64 i j; - - a = _poly_csubq(a); - - i = 0; - j = 0; - #bounded - while(i < 128) - { - t = a[(int)j]; - d0 = (32u)t; - d0 <<= 4; - d0 += 1665; - d0 *= 80635; - d0 >>= 28; - d0 &= 0xf; - j += 1; - t = a[(int)j]; - d1 = (32u)t; - d1 <<= 4; - d1 += 1665; - d1 *= 80635; - d1 >>= 28; - d1 &= 0xf; - d1 <<= 4; - d0 |= d1; - (u8)[rp+i] = d0; - i += 1; - j += 1; - } - return a; -} - -fn _i_poly_compress(reg ptr u8[KYBER_POLYCOMPRESSEDBYTES] rp, reg ptr u16[KYBER_N] a) -> reg ptr u8[KYBER_POLYCOMPRESSEDBYTES], reg ptr u16[KYBER_N] -{ - reg u16 t; - reg u32 d0, d1; - reg u64 i j; - - a = _poly_csubq(a); - - i = 0; - j = 0; - #bounded - while(i < 128) - { - t = a[(int)j]; - d0 = (32u)t; - d0 <<= 4; - d0 += 1665; - d0 *= 80635; - d0 >>= 28; - d0 &= 0xf; - j += 1; - t = a[(int)j]; - d1 = (32u)t; - d1 <<= 4; - d1 += 1665; - d1 *= 80635; - d1 >>= 28; - d1 &= 0xf; - d1 <<= 4; - d0 |= d1; - rp[(int) i] = d0; - i += 1; - j += 1; - } - return rp, a; -} - - -fn _poly_decompress(reg ptr u16[KYBER_N] rp, reg u64 ap) -> stack u16[KYBER_N] -{ - reg u8 t; - reg u16 d0, d1; - reg u64 i j; - - i = 0; - j = 0; - - #bounded - while (i < 128) { - t = (u8)[ap+i]; - d0 = (16u)t; - d1 = (16u)t; - d0 &= 0xf; - d1 >>= 4; - d0 *= KYBER_Q; - d1 *= KYBER_Q; - d0 += 8; - d1 += 8; - d0 >>= 4; - d1 >>= 4; - rp[(int)j] = d0; - j += 1; - rp[(int)j] = d1; - j += 1; - i += 1; - } - return rp; -} - -fn _poly_frombytes(reg ptr u16[KYBER_N] rp, reg u64 ap) -> reg ptr u16[KYBER_N] -{ - reg u8 c0, c1, c2; - reg u16 d0, d1, t; - inline int i; - - for i = 0 to KYBER_N/2 - { - c0 = (u8)[ap+3*i]; - c1 = (u8)[ap+3*i+1]; - c2 = (u8)[ap+3*i+2]; - d0 = (16u)c0; - t = (16u)c1; - t &= 0xf; - t <<= 8; - d0 |= t; - d1 = (16u)c2; - d1 <<= 4; - t = (16u)c1; - t >>= 4; - d1 |= t; - rp[2*i] = d0; - rp[2*i+1] = d1; - } - return rp; -} - -param int DMONT = 1353; /* (1ULL << 32) % KYBER_Q */ - -fn _poly_frommont(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] -{ - reg u64 i; - reg u16 r; - reg u16 dmont; - - dmont = DMONT; - - i = 0; - #bounded - while (i < KYBER_N) - { - r = rp[(int)i]; - r = __fqmul(r, dmont); - rp[(int)i] = r; - i += 1; - } - return rp; -} - -fn _poly_frommsg(reg ptr u16[KYBER_N] rp, reg u64 ap) -> stack u16[KYBER_N] -{ - reg u8 c; - reg u16 t; - inline int i; - inline int j; - - for i = 0 to 32 - { - c = (u8)[ap + i]; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+1] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+2] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+3] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+4] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+5] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+6] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+7] = t; - c >>= 1; - } - return rp; -} - - -fn _i_poly_frommsg(reg ptr u16[KYBER_N] rp, reg ptr u8[32] ap) -> stack u16[KYBER_N] -{ - reg u8 c; - reg u16 t; - inline int i; - inline int j; - - for i = 0 to 32 - { - c = ap[i]; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+1] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+2] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+3] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+4] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+5] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+6] = t; - c >>= 1; - - t = (16u)c; - t &= 1; - t *= (KYBER_Q+1)/2; - rp[8*i+7] = t; - c >>= 1; - } - return rp; -} - -#[returnaddress=stack] -fn _poly_getnoise(reg ptr u16[KYBER_N] rp, reg ptr u8[KYBER_SYMBYTES] seed, reg u8 nonce) -> reg ptr u16[KYBER_N] -{ - stack u8[33] extseed; /* 33 = KYBER_SYMBYTES +1 */ - stack u8[128] buf; /* 128 = KYBER_ETA*KYBER_N/4 */ - reg u64 outlen; - reg u8 c,a,b; - reg u16 t; - reg u64 i j; - inline int k; - - stack ptr u16[KYBER_N] srp; - - srp = rp; - - for k = 0 to KYBER_SYMBYTES - { - c = seed[k]; - extseed[k] = c; - } - extseed[KYBER_SYMBYTES] = nonce; - - buf = _shake256_128_33(buf, extseed); - - rp = srp; - - i = 0; - j = 0; - #bounded - while (i < 128) { - c = buf[(int)i]; - a = c; - a &= 0x55; - - c >>= 1; - c &= 0x55; - c += a; - - a = c; - a &= 0x3; - b = c; - b >>= 2; - b &= 0x3; - a -= b; - t = (16s)a; - rp[(int)j] = t; - a = c; - a >>= 4; - a &= 0x3; - b = c >> 6; - b &= 0x3; - a -= b; - t = (16s)a; - j += 1; - rp[(int)j] = t; - i += 1; - j += 1; - } - - return rp; -} - -fn _poly_invntt(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] -{ - reg u64 len; - reg u64 start; - reg u64 j; - reg u64 cmp; - reg u64 offset; - - reg u16 zeta; - reg u16 t; - reg u16 s; - reg u16 m; - - reg ptr u16[128] zetasp; - reg u64 zetasctr; - - zetasp = jzetas_inv; - zetasctr = 0; - - len = 2; - #bounded - while (len <= 128) - { - start = 0; - #bounded - while (start < 256) - { - zeta = zetasp[(int)zetasctr]; - zetasctr += 1; - - j = start; - cmp = #LEA(start + len); // avoid -lea - #bounded - while (j < cmp) - { - offset = #LEA(j + len); // avoid -lea - s = rp[(int)offset]; - t = rp[(int)j]; - m = s; m += t; // valgrind 16 bit lea not implemented - m = __barrett_reduce(m); - rp[(int)j] = m; - t -= s; - t = __fqmul(t, zeta); - rp[(int)offset] = t; - j += 1; - } - start = #LEA(j + len); // avoid -lea - } - len <<= 1; - } - - zeta = zetasp[127]; - j = 0; - #bounded - while (j < KYBER_N) - { - t = rp[(int)j]; - t = __fqmul(t, zeta); - rp[(int)j] = t; - j += 1; - } - return rp; -} - -fn _poly_ntt(reg ptr u16[KYBER_N] rp) -> reg ptr u16[KYBER_N] -{ - reg u64 len; - reg u64 start; - reg u64 j; - reg u64 cmp; - reg u64 offset; - - reg u16 zeta; - reg u16 t; - reg u16 s; - reg u16 m; - - reg ptr u16[128] zetasp; - reg u64 zetasctr; - - zetasp = jzetas; - zetasctr = 0; - len = 128; - #bounded - while (len >= 2) - { - start = 0; - #bounded - while (start < 256) - { - zetasctr += 1; - zeta = zetasp[(int)zetasctr]; - j = start; - cmp = #LEA(start + len); - #bounded - while (j < cmp) - { - offset = #LEA(j + len); - t = rp[(int)offset]; - t = __fqmul(t, zeta); - s = rp[(int)j]; - m = s; - m -= t; - rp[(int)offset] = m; - t += s; - rp[(int)j] = t; - j += 1; - } - start = #LEA(j + len); - } - len >>= 1; - } - - rp = __poly_reduce(rp); - - return rp; -} - -fn _poly_sub(reg ptr u16[KYBER_N] rp ap bp) -> reg ptr u16[KYBER_N] -{ - reg u16 a; - reg u16 b; - reg u16 r; - reg u64 i; - - i = 0; - #bounded - while (i < KYBER_N) { - a = ap[(int)i]; - b = bp[(int)i]; - r = a - b; - rp[(int)i] = r; - i += 1; - } - return rp; -} - -fn _poly_tobytes(reg u64 rp, reg ptr u16[KYBER_N] a) -> reg ptr u16[KYBER_N] -{ - reg u16 t0, t1, d; - reg u64 i j; - - a = _poly_csubq(a); - - i = 0; - j = 0; - #bounded - while (i < KYBER_N) - { - t0 = a[(int)i]; - i += 1; - t1 = a[(int)i]; - i += 1; - d = t0; - d &= 0xff; - (u8)[rp+j] = d; - j += 1; - t0 >>= 8; - d = t1; - d &= 0xf; - d <<= 4; - d |= t0; - (u8)[rp+j] = d; - j += 1; - t1 >>= 4; - (u8)[rp+j] = t1; - j += 1; - } - return a; -} - -fn _poly_tomsg(reg u64 rp, reg ptr u16[KYBER_N] a) -> reg ptr u16[KYBER_N] -{ - reg u16 t; - reg u8 r; - reg u32 d; - inline int i j; - - a = _poly_csubq(a); - - for i = 0 to 32 - { - r = 0; - for j = 0 to 8 - { - t = a[8*i+j]; - d = (32u)t; - d <<= 1; - d += 1665; - d *= 80635; - d >>= 28; - d &= 1; - d <<= j; - r |= d; - } - - (u8)[rp+i] = r; - } - return a; -} - -fn _i_poly_tomsg(reg ptr u8[KYBER_N/8] rp, reg ptr u16[KYBER_N] a) -> reg ptr u8[KYBER_N/8], reg ptr u16[KYBER_N] -{ - reg u16 t; - reg u8 r; - reg u32 d; - inline int i j; - - a = _poly_csubq(a); - - for i = 0 to 32 - { - r = 0; - for j = 0 to 8 - { - t = a[8*i+j]; - d = (32u)t; - d <<= 1; - d += 1665; - d *= 80635; - d >>= 28; - d &= 1; - d <<= j; - r |= d; - } - - rp[i] = r; - } - - return rp, a; -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc deleted file mode 100644 index a9b3fec91..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/polyvec.jinc +++ /dev/null @@ -1,285 +0,0 @@ -require "poly.jinc" - -inline -fn __polyvec_add2(stack u16[KYBER_VECN] r, stack u16[KYBER_VECN] b) -> stack u16[KYBER_VECN] -{ - r[0:KYBER_N] = _poly_add2(r[0:KYBER_N], b[0:KYBER_N]); - r[KYBER_N:KYBER_N] = _poly_add2(r[KYBER_N:KYBER_N], b[KYBER_N:KYBER_N]); - r[2*KYBER_N:KYBER_N] = _poly_add2(r[2*KYBER_N:KYBER_N], b[2*KYBER_N:KYBER_N]); - - return r; -} - -inline -fn __polyvec_csubq(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] -{ - r[0:KYBER_N] = _poly_csubq(r[0:KYBER_N]); - r[KYBER_N:KYBER_N] = _poly_csubq(r[KYBER_N:KYBER_N]); - r[2*KYBER_N:KYBER_N] = _poly_csubq(r[2*KYBER_N:KYBER_N]); - - return r; -} - -inline -fn __polyvec_compress(reg u64 rp, stack u16[KYBER_VECN] a) -{ - stack u16[KYBER_VECN] aa; - reg u16 c, b; - reg u16 d; - reg u64[4] t; - reg u64 i j; - inline int k; - - i = 0; - j = 0; - - aa = __polyvec_csubq(a); - - #bounded - while (i < KYBER_VECN) - { - for k = 0 to 4 - { - t[k] = (64u)aa[(int) i]; - i += 1; - t[k] <<= 10; - t[k] += 1665; - t[k] *= 1290167; - t[k] >>= 32; - t[k] &= 0x3ff; - } - - c = t[0]; - c &= 0xff; - (u8)[rp + j] = c; - j += 1; - - b = t[0]; - b >>= 8; - c = t[1]; - c <<= 2; - c |= b; - (u8)[rp + j] = c; - j += 1; - - b = t[1]; - b >>= 6; - c = t[2]; - c <<= 4; - c |= b; - (u8)[rp + j] = c; - j += 1; - - b = t[2]; - b >>= 4; - c = t[3]; - c <<= 6; - c |= b; - (u8)[rp + j] = c; - j += 1; - - - t[3] >>= 2; - (u8)[rp + j] = t[3]; - j += 1; - } -} - -inline -fn __i_polyvec_compress(reg ptr u8[KYBER_POLYVECCOMPRESSEDBYTES] rp, stack u16[KYBER_VECN] a) -> reg ptr u8[KYBER_POLYVECCOMPRESSEDBYTES] -{ - stack u16[KYBER_VECN] aa; - reg u16 c, b; - reg u16 d; - reg u64[4] t; - reg u64 i j; - inline int k; - - i = 0; - j = 0; - - aa = __polyvec_csubq(a); - - #bounded - while (i < KYBER_VECN) - { - for k = 0 to 4 - { - t[k] = (64u)aa[(int) i]; - i += 1; - t[k] <<= 10; - t[k] += 1665; - t[k] *= 1290167; - t[k] >>= 32; - t[k] &= 0x3ff; - } - - c = t[0]; - c &= 0xff; - rp[(int) j] = c; - j += 1; - - b = t[0]; - b >>= 8; - c = t[1]; - c <<= 2; - c |= b; - rp[(int) j] = c; - j += 1; - - b = t[1]; - b >>= 6; - c = t[2]; - c <<= 4; - c |= b; - rp[(int) j] = c; - j += 1; - - b = t[2]; - b >>= 4; - c = t[3]; - c <<= 6; - c |= b; - rp[(int) j] = c; - j += 1; - - - t[3] >>= 2; - rp[(int) j] = t[3]; - j += 1; - } - - return rp; -} - -inline -fn __polyvec_decompress(reg u64 ap) -> stack u16[KYBER_VECN] -{ - stack u16[KYBER_VECN] r; - reg u32[5] t; - reg u32 d; - reg u64 i j; - inline int k; - - i = 0; - j = 0; - - #bounded - while (i < KYBER_VECN) - { - for k = 0 to 5 - { - t[k] = (32u)(u8)[ap + j]; - j += 1; - } - - d = t[1]; - t[1] >>= 2; - d &= 0x3; - d <<= 8; - t[0] |= d; - - d = t[2]; - t[2] >>= 4; - d &= 0xf; - d <<= 6; - t[1] |= d; - - d = t[3]; - t[3] >>= 6; - d &= 0x3f; - d <<= 4; - t[2] |= d; - - d = t[4]; - d <<= 2; - t[3] |= d; - - for k = 0 to 4 - { - t[k] *= KYBER_Q; - t[k] += 512; - t[k] >>= 10; - r[(int) i] = t[k]; - i += 1; - } - } - return r; -} - -inline -fn __polyvec_frombytes(reg u64 ap) -> stack u16[KYBER_VECN] -{ - stack u16[KYBER_VECN] r; - reg u64 pp; - - pp = ap; - r[0:KYBER_N] = _poly_frombytes(r[0:KYBER_N], pp); - pp += KYBER_POLYBYTES; - r[KYBER_N:KYBER_N] = _poly_frombytes(r[KYBER_N:KYBER_N], pp); - pp += KYBER_POLYBYTES; - r[2*KYBER_N:KYBER_N] = _poly_frombytes(r[2*KYBER_N:KYBER_N], pp); - - return r; -} - -inline -fn __polyvec_invntt(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] -{ - r[0:KYBER_N] = _poly_invntt(r[0:KYBER_N]); - r[KYBER_N:KYBER_N] = _poly_invntt(r[KYBER_N:KYBER_N]); - r[2*KYBER_N:KYBER_N] = _poly_invntt(r[2*KYBER_N:KYBER_N]); - - return r; -} - -inline -fn __polyvec_ntt(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] -{ - r[0:KYBER_N] = _poly_ntt(r[0:KYBER_N]); - r[KYBER_N:KYBER_N] = _poly_ntt(r[KYBER_N:KYBER_N]); - r[2*KYBER_N:KYBER_N] = _poly_ntt(r[2*KYBER_N:KYBER_N]); - - return r; -} - - -inline -fn __polyvec_pointwise_acc(stack u16[KYBER_VECN] a, stack u16[KYBER_VECN] b) -> stack u16[KYBER_N] -{ - stack u16[KYBER_N] t; - stack u16[KYBER_N] r; - - r = _poly_basemul(r, a[0:KYBER_N], b[0:KYBER_N]); - t = _poly_basemul(t, a[KYBER_N:KYBER_N], b[KYBER_N:KYBER_N]); - r = _poly_add2(r, t); - t = _poly_basemul(t, a[2*KYBER_N:KYBER_N], b[2*KYBER_N:KYBER_N]); - r = _poly_add2(r, t); - - r = __poly_reduce(r); - - return r; -} - -inline -fn __polyvec_reduce(stack u16[KYBER_VECN] r) -> stack u16[KYBER_VECN] -{ - r[0:KYBER_N] = __poly_reduce(r[0:KYBER_N]); - r[KYBER_N:KYBER_N] = __poly_reduce(r[KYBER_N:KYBER_N]); - r[2*KYBER_N:KYBER_N] = __poly_reduce(r[2*KYBER_N:KYBER_N]); - - return r; -} - -inline -fn __polyvec_tobytes(reg u64 rp, stack u16[KYBER_VECN] a) -{ - reg u64 pp; - - pp = rp; - a[0:KYBER_N] = _poly_tobytes(pp, a[0:KYBER_N]); - pp += KYBER_POLYBYTES; - a[KYBER_N:KYBER_N] = _poly_tobytes(pp, a[KYBER_N:KYBER_N]); - pp += KYBER_POLYBYTES; - a[2*KYBER_N:KYBER_N] = _poly_tobytes(pp, a[2*KYBER_N:KYBER_N]); -} diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc b/src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc deleted file mode 100644 index 986916c88..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/verify.jinc +++ /dev/null @@ -1,49 +0,0 @@ -// Note1: KYBER_INDCPA_BYTES vs KYBER_CT_LEN - -// from Jade require "crypto_kem/kyber/kyber768/common/params.jinc" // TODO: when hakyber avx2 -from Jade require "crypto_kem/kyber/kyber768/amd64/ref/params.jinc" - -inline -fn __verify(reg u64 ctp, reg ptr u8[KYBER_CT_LEN] ctpc) -> reg u64 -{ - reg u64 cnd t64; - reg u8 t1 t2; - inline int i; - - cnd = 0; - - for i=0 to KYBER_CT_LEN - { - t1 = ctpc.[i]; - t2 = (u8)[ctp + i]; - t1 ^= t2; - t64 = (64u)t1; - cnd |= t64; - } - - cnd = -cnd; - cnd >>= 63; - - return cnd; -} - -inline -fn __cmov(reg ptr u8[KYBER_SYMBYTES] dst, reg u64 src cnd) -> reg ptr u8[KYBER_SYMBYTES] -{ - reg u8 t1 t2 bcond; - inline int i; - - cnd = -cnd; - - for i=0 to KYBER_SYMBYTES - { - t1 = dst.[i]; - t2 = (u8)[src + i]; - t2 = t2 ^ t1; - t2 = t2 & cnd; - t1 ^= t2; - dst.[u8 i] = t1; - } - - return dst; -} From 123d4c8a89d5b6966bb51cdf7bd33e8b1042f66e Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 4 Apr 2024 20:20:30 +0200 Subject: [PATCH 37/82] Remove redundant KEM templates Signed-off-by: Pravek Sharma --- .../src/kem/family/kem_scheme.c.libjade | 46 ------------------- .../kem/family/kem_scheme_decaps.c.libjade | 42 ----------------- .../kem/family/kem_scheme_encaps.c.libjade | 42 ----------------- .../kem/family/kem_scheme_keypair.c.libjade | 33 ------------- 4 files changed, 163 deletions(-) delete mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade delete mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade delete mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade delete mode 100644 scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade deleted file mode 100644 index 1d1c0f310..000000000 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c.libjade +++ /dev/null @@ -1,46 +0,0 @@ - -{% for scheme in schemes -%} - {%- for impl in scheme['metadata']['implementations'] %} - - {%- if impl['signature_keypair'] %} - {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': impl['signature_keypair']}) -%} - {%- else %} - {%- set cleankeypair = scheme['metadata'].update({'default_keypair_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_keypair"}) -%} - {%- endif %} - - {%- if impl['signature_enc'] %} - {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': impl['signature_enc']}) -%} - {%- else %} - {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_enc"}) -%} - {%- endif %} - - {%- if impl['signature_dec'] %} - {%- set cleandec = scheme['metadata'].update({'default_dec_signature': impl['signature_dec']}) -%} - {%- else %} - {%- set cleandec = scheme['metadata'].update({'default_dec_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_dec"}) -%} - {%- endif %} - -#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] != scheme['default_implementation'] %}_{{ impl['name'].replace('/', '_') }}{%- endif %}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} - {%- if impl['signature_keypair'] %} -extern int {{ impl['signature_keypair'] }}(uint8_t *pk, uint8_t *sk); - {%- else %} -extern int libjade_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); - {%- endif %} - - {%- if impl['signature_enc'] %} -extern int {{ impl['signature_enc'] }}(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - {%- else %} -extern int libjade_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); - {%- endif %} - - {%- if impl['signature_dec'] %} -extern int {{ impl['signature_dec'] }}(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - {%- else %} -extern int libjade_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); - {%- endif %} -#endif - {%- endfor %} - -{% endfor -%} - - diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade deleted file mode 100644 index 8cd5b3e7f..000000000 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_decaps.c.libjade +++ /dev/null @@ -1,42 +0,0 @@ -{% for scheme in schemes -%} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] == scheme['default_implementation'] %} - {%- if impl['signature_dec'] %} - {%- set cleandec = scheme['metadata'].update({'default_dec_signature': impl['signature_dec']}) -%} - {%- else %} - {%- set cleandec = scheme['metadata'].update({'default_dec_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_dec"}) -%} - {%- endif %} - {%- endfor %} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} - {%- if loop.first %} - #if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} - {%- else %} -#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} -#if defined(OQS_DIST_BUILD) - if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { -#endif /* OQS_DIST_BUILD */ - {%- endif -%} - {%- if impl['signature_dec'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) {{ impl['signature_dec'] }}(shared_secret, ciphertext, secret_key); - {%- else %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) {{ scheme['metadata']['default_dec_signature'] }}(shared_secret, ciphertext, secret_key); - } -#endif /* OQS_DIST_BUILD */ - {%- endif -%} - {%- endfor %} - {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} -#else - {%- endif %} - return (OQS_STATUS) {{ scheme['metadata']['default_dec_signature'] }}(shared_secret, ciphertext, secret_key); - {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} -#endif - {%- endif %} -{% endfor -%} - - diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade deleted file mode 100644 index 4b2b63e3b..000000000 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_encaps.c.libjade +++ /dev/null @@ -1,42 +0,0 @@ -{% for scheme in schemes -%} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] == scheme['default_implementation'] %} - {%- if impl['signature_enc'] %} - {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': impl['signature_enc']}) -%} - {%- else %} - {%- set cleanenc = scheme['metadata'].update({'default_enc_signature': "PQCLEAN_"+scheme['pqclean_scheme_c']|upper+"_"+scheme['default_implementation']|upper+"_crypto_kem_enc"}) -%} - {%- endif %} - {%- endfor %} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} - {%- if loop.first %} -#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} - {%- else %} -#elif defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}){%- endif %} - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} -#if defined(OQS_DIST_BUILD) - if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { -#endif /* OQS_DIST_BUILD */ - {%- endif -%} - {%- if impl['signature_enc'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) {{ impl['signature_enc'] }}(ciphertext, shared_secret, public_key); - {%- else %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name'].replace('/', '_')|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) {{ scheme['metadata']['default_enc_signature'] }}(ciphertext, shared_secret, public_key); - } -#endif /* OQS_DIST_BUILD */ - {%- endif -%} - {%- endfor %} - {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} -#else - {%- endif %} - return (OQS_STATUS) {{ scheme['metadata']['default_enc_signature'] }}(ciphertext, shared_secret, public_key); - {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} -#endif - {%- endif %} -{% endfor -%} - - diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade b/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade deleted file mode 100644 index f43e3897c..000000000 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme_keypair.c.libjade +++ /dev/null @@ -1,33 +0,0 @@ -{% for scheme in schemes -%} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} - {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} - {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} -#if defined(OQS_DIST_BUILD) - if ({%- for flag in impl['required_flags'] -%}OQS_CPU_has_extension(OQS_CPU_EXT_{{ flag|upper }}){%- if not loop.last %} && {% endif -%}{%- endfor -%}) { -#endif /* OQS_DIST_BUILD */ - {%- endif -%} - {%- if impl['name'] in scheme['libjade_implementations'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(public_key, secret_key); - {%- else %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(public_key, secret_key); - {%- endif %} - {%- if 'required_flags' in impl and impl['required_flags'] %} -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); - } -#endif /* OQS_DIST_BUILD */ - {%- endif -%} - {%- endfor %} - {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} -#else - {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); - {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} -#endif - {%- endif %} -{% endfor -%} \ No newline at end of file From 4e926676a263f6c6d4b514f6a0425c77dba8cdf7 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 4 Apr 2024 20:34:51 +0200 Subject: [PATCH 38/82] Update KEM template to accomodate new dir structure Signed-off-by: Pravek Sharma --- .../src/kem/family/CMakeLists.txt.libjade | 2 +- src/kem/kyber/CMakeLists.txt | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index c7eebc27d..0afa4610a 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -32,7 +32,7 @@ if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_sch if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}{%- endif %}) add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- endif %} - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/include) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}) target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] -%} {%- set opts %}{% for flag in impl['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {% elif flag == 'sse4_1' -%} sse4.1 {% elif flag == 'pclmulqdq' -%} pclmul {% else -%}{{ flag }} {% endif %}{% endif -%}{% endfor %}{% endset %} diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 2c3edafa0..08444ec4e 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -93,14 +93,14 @@ endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_512) add_library(kyber_512_amd64_ref OBJECT kem_kyber_512.c libjade_kyber512_amd64_ref/api.c libjade_kyber512_amd64_ref/kem.s) - target_include_directories(kyber_512_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_ref/include) + target_include_directories(kyber_512_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_ref) target_include_directories(kyber_512_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) add_library(kyber_512_amd64_avx2 OBJECT libjade_kyber512_amd64_avx2/api.c libjade_kyber512_amd64_avx2/kem.s) - target_include_directories(kyber_512_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_avx2/include) + target_include_directories(kyber_512_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_avx2) target_include_directories(kyber_512_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) target_compile_options(kyber_512_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) set(_KYBER_OBJS ${_KYBER_OBJS} $) @@ -108,14 +108,14 @@ endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768) add_library(kyber_768_amd64_ref OBJECT kem_kyber_768.c libjade_kyber768_amd64_ref/api.c libjade_kyber768_amd64_ref/kem.s) - target_include_directories(kyber_768_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_ref/include) + target_include_directories(kyber_768_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_ref) target_include_directories(kyber_768_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) add_library(kyber_768_amd64_avx2 OBJECT libjade_kyber768_amd64_avx2/api.c libjade_kyber768_amd64_avx2/kem.s) - target_include_directories(kyber_768_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_avx2/include) + target_include_directories(kyber_768_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_avx2) target_include_directories(kyber_768_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) target_compile_options(kyber_768_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) set(_KYBER_OBJS ${_KYBER_OBJS} $) From d0e72a9564d2158976cc899d03b156ba6245ec2b Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 4 Apr 2024 20:47:56 +0200 Subject: [PATCH 39/82] Debug: tweak unix.yml Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index 0f52aa3af..f6613ee6f 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -50,7 +50,7 @@ jobs: cd scripts/copy_from_upstream && \ ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ python3 copy_from_upstream.py libjade && \ - ! git status | grep modified + ! git diff buildcheck: name: Check that code passes a basic build before starting heavier tests From 7f5ec38756c3938796c9c48be93cfbd4e23b6c5d Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 4 Apr 2024 22:05:11 +0200 Subject: [PATCH 40/82] Re-build libjade with jasmin version used in CI Signed-off-by: Pravek Sharma --- src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s | 16 ++++++++-------- src/kem/kyber/libjade_kyber512_amd64_ref/kem.s | 16 ++++++++-------- src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s | 16 ++++++++-------- src/kem/kyber/libjade_kyber768_amd64_ref/kem.s | 16 ++++++++-------- 4 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s b/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s index 028d549e6..33a594071 100644 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s +++ b/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s @@ -2676,8 +2676,8 @@ jade_kem_kyber_kyber512_amd64_avx2_keypair: movq %r12, 88(%rsp) movq %rbp, 96(%rsp) movq %rbx, 104(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rdi movq $64, %rsi call __jasmin_syscall_randombytes__ @@ -2707,8 +2707,8 @@ jade_kem_kyber_kyber512_amd64_avx2_keypair_derand: movq %r12, 88(%rsp) movq %rbp, 96(%rsp) movq %rbx, 104(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rax movb (%rdx), %cl movb %cl, (%rax) @@ -4840,11 +4840,11 @@ L__crypto_kem_enc_derand_jazz$2: ret L__crypto_kem_keypair_derand_jazz$1: movq %rax, 8576(%rsp) - movq %rbx, 8584(%rsp) - movq %rbp, 8592(%rsp) + movq %rbp, 8584(%rsp) + movq %rbx, 8592(%rsp) movq %rax, %rcx - movq %rbx, 8600(%rsp) - movq %rbp, 8608(%rsp) + movq %rbp, 8600(%rsp) + movq %rbx, 8608(%rsp) leaq 8616(%rsp), %rax leaq -248(%rsp), %rsp call L_sha3_512_32$1 diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s b/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s index 62cc5b987..61f6b485f 100644 --- a/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s +++ b/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s @@ -5066,8 +5066,8 @@ jade_kem_kyber_kyber512_amd64_ref_keypair: movq %r12, 80(%rsp) movq %rbp, 88(%rsp) movq %rbx, 96(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rdi movq $64, %rsi call __jasmin_syscall_randombytes__ @@ -5095,8 +5095,8 @@ jade_kem_kyber_kyber512_amd64_ref_keypair_derand: movq %r12, 80(%rsp) movq %rbp, 88(%rsp) movq %rbx, 96(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rax movb (%rdx), %cl movb %cl, (%rax) @@ -5971,11 +5971,11 @@ L__crypto_kem_enc_derand_jazz$2: ret L__crypto_kem_keypair_derand_jazz$1: movq %rax, 8(%rsp) - movq %rbx, 16(%rsp) - movq %rbp, 24(%rsp) + movq %rbp, 16(%rsp) + movq %rbx, 24(%rsp) movq %rax, %rcx - movq %rbx, 32(%rsp) - movq %rbp, 40(%rsp) + movq %rbp, 32(%rsp) + movq %rbx, 40(%rsp) leaq 128(%rsp), %rax leaq -208(%rsp), %rsp call L_sha3_512_32$1 diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s b/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s index 2af9c26fb..3eab5d324 100644 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s +++ b/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s @@ -5060,8 +5060,8 @@ jade_kem_kyber_kyber768_amd64_avx2_keypair: movq %r12, 64(%rsp) movq %rbp, 72(%rsp) movq %rbx, 80(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rdi movq $64, %rsi call __jasmin_syscall_randombytes__ @@ -5085,8 +5085,8 @@ jade_kem_kyber_kyber768_amd64_avx2_keypair_derand: movq %r12, 64(%rsp) movq %rbp, 72(%rsp) movq %rbx, 80(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rax movb (%rdx), %cl movb %cl, (%rax) @@ -9436,11 +9436,11 @@ L__crypto_kem_enc_derand_jazz$2: ret L__crypto_kem_keypair_derand_jazz$1: movq %rax, 12928(%rsp) - movq %rbx, 12936(%rsp) - movq %rbp, 12944(%rsp) + movq %rbp, 12936(%rsp) + movq %rbx, 12944(%rsp) movq %rax, %rcx - movq %rbx, 12952(%rsp) - movq %rbp, 12960(%rsp) + movq %rbp, 12952(%rsp) + movq %rbx, 12960(%rsp) leaq 12968(%rsp), %rax leaq -248(%rsp), %rsp call L_sha3_512_32$1 diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s index 101b6399d..8a646187c 100644 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s +++ b/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s @@ -7206,8 +7206,8 @@ jade_kem_kyber_kyber768_amd64_ref_keypair: movq %r12, 88(%rsp) movq %rbp, 96(%rsp) movq %rbx, 104(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rdi movq $64, %rsi call __jasmin_syscall_randombytes__ @@ -7237,8 +7237,8 @@ jade_kem_kyber_kyber768_amd64_ref_keypair_derand: movq %r12, 88(%rsp) movq %rbp, 96(%rsp) movq %rbx, 104(%rsp) - movq %rdi, %rbx - movq %rsi, %rbp + movq %rdi, %rbp + movq %rsi, %rbx movq %rsp, %rax movb (%rdx), %cl movb %cl, (%rax) @@ -8638,10 +8638,10 @@ L_crypto_kem_enc_derand_jazz$2: ret L_crypto_kem_keypair_derand_jazz$1: movq %rax, 8(%rsp) - movq %rbx, 16(%rsp) - movq %rbp, 24(%rsp) - movq %rbx, 32(%rsp) - movq %rbp, 40(%rsp) + movq %rbp, 16(%rsp) + movq %rbx, 24(%rsp) + movq %rbp, 32(%rsp) + movq %rbx, 40(%rsp) movq (%rax), %rcx movq %rcx, 64(%rsp) movq 8(%rax), %rcx From d26f552d0f8e816907fdf7358838b25d38dea0b6 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 4 Apr 2024 22:19:31 +0200 Subject: [PATCH 41/82] Debug: undo unix.yml tweak Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index f6613ee6f..0f52aa3af 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -50,7 +50,7 @@ jobs: cd scripts/copy_from_upstream && \ ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ python3 copy_from_upstream.py libjade && \ - ! git diff + ! git status | grep modified buildcheck: name: Check that code passes a basic build before starting heavier tests From 88d1997875e00baa8085832232cc0ea5f69d4f3c Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 5 Apr 2024 00:01:07 +0200 Subject: [PATCH 42/82] Allow MSVC to ignore libjade_shims Signed-off-by: Pravek Sharma --- src/common/libjade_shims/libjade_randombytes.c | 2 ++ src/common/libjade_shims/libjade_randombytes.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/common/libjade_shims/libjade_randombytes.c b/src/common/libjade_shims/libjade_randombytes.c index d2c9bb09b..40e4ce9e7 100644 --- a/src/common/libjade_shims/libjade_randombytes.c +++ b/src/common/libjade_shims/libjade_randombytes.c @@ -1,5 +1,6 @@ // SPDX-License-Identifier: MIT +#if defined(__unix__) || defined(__APPLE__) #include #include "libjade_randombytes.h" @@ -7,3 +8,4 @@ void __jasmin_syscall_randombytes__(uint8_t *_x, uint64_t xlen) { OQS_randombytes(_x, xlen); // return _x; } +#endif diff --git a/src/common/libjade_shims/libjade_randombytes.h b/src/common/libjade_shims/libjade_randombytes.h index 45abb4ebf..c177ef693 100644 --- a/src/common/libjade_shims/libjade_randombytes.h +++ b/src/common/libjade_shims/libjade_randombytes.h @@ -1,5 +1,6 @@ // SPDX-License-Identifier: MIT +#if defined(__unix__) || defined(__APPLE__) #ifndef LIBJADE_RANDOMBYTES_H #define LIBJADE_RANDOMBYTES_H @@ -9,3 +10,4 @@ void __jasmin_syscall_randombytes__(uint8_t *_x, uint64_t xlen) __asm__("__jasmin_syscall_randombytes__"); #endif // LIBJADE_RANDOMBYTES_H +#endif From c79a15aeccb965e3e13d778c318e800c2c708cce Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Mon, 8 Apr 2024 23:21:15 +0200 Subject: [PATCH 43/82] Simplify name scheme for libjade code Signed-off-by: Pravek Sharma --- .CMake/alg_support.cmake | 16 +- .../add_enable_by_alg_conditional.libjade | 16 +- .../copy_from_upstream/copy_from_upstream.py | 10 +- .../patches/libjade-kyber-api.patch | 140 ++---------------- .../patches/libjade-kyber-meta.patch | 92 +++++++++--- .../src/kem/family/CMakeLists.txt.libjade | 30 ++-- .../src/kem/family/kem_scheme.c | 38 ++--- .../add_alg_enable_defines.libjade | 8 +- src/kem/kyber/CMakeLists.txt | 44 +++--- .../kyber/libjade_kyber512_amd64_avx2/api.c | 20 --- .../kyber/libjade_kyber512_amd64_ref/api.c | 20 --- .../api.h | 6 +- .../kem.s | 0 .../api.h | 6 +- .../kem.s | 0 .../kyber/libjade_kyber768_amd64_avx2/api.c | 20 --- .../kyber/libjade_kyber768_amd64_ref/api.c | 20 --- .../api.h | 6 +- .../kem.s | 0 .../api.h | 6 +- .../kem.s | 0 src/oqsconfig.h.cmake | 6 +- 22 files changed, 187 insertions(+), 317 deletions(-) delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_avx2/api.c delete mode 100644 src/kem/kyber/libjade_kyber512_amd64_ref/api.c rename src/kem/kyber/{libjade_kyber512_amd64_avx2 => libjade_kyber512_avx2}/api.h (88%) rename src/kem/kyber/{libjade_kyber512_amd64_avx2 => libjade_kyber512_avx2}/kem.s (100%) rename src/kem/kyber/{libjade_kyber512_amd64_ref => libjade_kyber512_ref}/api.h (88%) rename src/kem/kyber/{libjade_kyber512_amd64_ref => libjade_kyber512_ref}/kem.s (100%) delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_avx2/api.c delete mode 100644 src/kem/kyber/libjade_kyber768_amd64_ref/api.c rename src/kem/kyber/{libjade_kyber768_amd64_avx2 => libjade_kyber768_avx2}/api.h (88%) rename src/kem/kyber/{libjade_kyber768_amd64_avx2 => libjade_kyber768_avx2}/kem.s (100%) rename src/kem/kyber/{libjade_kyber768_amd64_ref => libjade_kyber768_ref}/api.h (88%) rename src/kem/kyber/{libjade_kyber768_amd64_ref => libjade_kyber768_ref}/kem.s (100%) diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index 7c6dbf2ce..f09ab5a13 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -509,15 +509,27 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_START if(OQS_LIBJADE_BUILD) +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_DIST_X86_64_BUILD OR ()) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512_ref "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_512" OFF) +endif() +endif() + if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_512" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_512" OFF) +endif() +endif() + +if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") +if(OQS_DIST_X86_64_BUILD OR ()) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_768_ref "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_768" OFF) endif() endif() if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_768" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_768" OFF) endif() endif() diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade index 15da56eaf..848e0ed1e 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade @@ -7,9 +7,9 @@ if(OQS_LIBJADE_BUILD) {% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") {% endif -%} if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} endif() {% if platform['operating_systems'] %}endif() @@ -22,9 +22,9 @@ if((OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in plat {% if impl['upstream']['name'].endswith('pqclean') -%} if(((CMAKE_C_COMPILER_ID STREQUAL "GNU") AND (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "9.4.0")) OR ((NOT (CMAKE_C_COMPILER_ID STREQUAL "GNU")) AND (NOT (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")))) {%- endif %} - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} {% if impl['upstream']['name'].endswith('pqclean') -%} else() @@ -46,9 +46,9 @@ endif() {% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") {% endif -%} if(OQS_DIST_X86_64_BUILD OR ({% for flag in platform['required_flags'] -%} OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- if not loop.last %} AND {% endif -%}{%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} endif() {% if platform['operating_systems'] %}endif() @@ -58,9 +58,9 @@ endif() {% if platform['operating_systems'] %}if(CMAKE_SYSTEM_NAME MATCHES "{{ platform['operating_systems']|join('|') }}") {% endif -%} if(OQS_DIST_ARM64_V8_BUILD OR (OQS_USE_ARM_NEON_INSTRUCTIONS{% for flag in platform['required_flags'] -%} {%- if not loop.last or loop.first %} AND {% endif -%}OQS_USE_{{ flag|upper }}_INSTRUCTIONS {%- endfor -%})) - cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}" OFF) {%- if 'alias_scheme' in scheme %} - cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) + cmake_dependent_option(OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} "" ON "OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}" OFF) {%- endif %} endif() {% if platform['operating_systems'] %}endif() diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 133185911..984ce491f 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -253,8 +253,8 @@ def load_instructions(file): upstreams[location]['kem_scheme_path'].format_map(scheme))) scheme['metadata']['ind_cca'] = 'true' if ( scheme['metadata']['claimed-security'] == "IND-CCA2") else 'false' - scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'].replace('-', '') - scheme['scheme_c'] = scheme['scheme'].replace('-', '') + scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'] + scheme['scheme_c'] = scheme['scheme'] scheme['default_implementation'] = family['default_implementation'] for impl in scheme['metadata']['implementations']: if 'common_dep' in impl: @@ -352,8 +352,8 @@ def load_instructions(file): scheme['scheme_paths'][arch] = (os.path.join('repos', location, upstreams[location]['sig_scheme_path'].format_map(scheme))) scheme['metadata']['euf_cma'] = 'true' - scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'].replace('-', '') - scheme['scheme_c'] = scheme['scheme'].replace('-', '') + scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'] + scheme['scheme_c'] = scheme['scheme'] scheme['default_implementation'] = family['default_implementation'] for impl in scheme['metadata']['implementations']: if 'common_dep' in impl: @@ -453,7 +453,7 @@ def handle_implementation(impl, family, scheme, dst_basedir): origfolder = os.path.join(scheme['scheme_paths'][impl], of) upstream_location = i['upstream']['name'] srcfolder = os.path.join(dst_basedir, 'src', family['type'], family['name'], - '{}_{}_{}'.format(upstream_location, scheme['pqclean_scheme'], impl.replace('/', '_'))) + '{}_{}_{}'.format(upstream_location, scheme['pqclean_scheme'], impl)) shutil.rmtree(srcfolder, ignore_errors=True) # Don't copy from PQClean straight but check for origfile list try: diff --git a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch index 5215a7bde..f78241f28 100644 --- a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch +++ b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch @@ -1,32 +1,5 @@ -diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c -new file mode 100644 -index 0000000..0a84abf ---- /dev/null -+++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c -@@ -0,0 +1,20 @@ -+#include -+#include "libjade_randombytes.h" -+#include "api.h" -+ -+int libjade_kyber512_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { -+ uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES]; -+ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); -+ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); -+ return jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); -+} -+ -+int libjade_kyber512_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -+ uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES]; -+ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES); -+ return jade_kem_kyber_kyber512_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -+} -+ -+int libjade_kyber512_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -+ return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); -+} -\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h -index 5148fd5..0914217 100644 +index 5148fd5..419112e 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h +++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h @@ -3,16 +3,8 @@ @@ -51,7 +24,7 @@ index 5148fd5..0914217 100644 ); -int jade_kem_kyber_kyber512_amd64_avx2_keypair( -+int libjade_kyber512_amd64_avx2_keypair( ++int libjade_kyber512_avx2_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -60,7 +33,7 @@ index 5148fd5..0914217 100644 ); -int jade_kem_kyber_kyber512_amd64_avx2_enc( -+int libjade_kyber512_amd64_avx2_enc( ++int libjade_kyber512_avx2_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -68,42 +41,15 @@ index 5148fd5..0914217 100644 const uint8_t *secret_key ); -+int libjade_kyber512_amd64_avx2_dec( ++int libjade_kyber512_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + #endif -diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/api.c b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c -new file mode 100644 -index 0000000..12836e0 ---- /dev/null -+++ b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c -@@ -0,0 +1,20 @@ -+#include -+#include "libjade_randombytes.h" -+#include "api.h" -+ -+int libjade_kyber512_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { -+ uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES]; -+ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); -+ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); -+ return jade_kem_kyber_kyber512_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); -+} -+ -+int libjade_kyber512_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -+ uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES]; -+ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES); -+ return jade_kem_kyber_kyber512_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -+} -+ -+int libjade_kyber512_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -+ return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); -+} -\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h -index 38127cf..2332230 100644 +index 38127cf..fcce52b 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h +++ b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h @@ -3,17 +3,8 @@ @@ -129,7 +75,7 @@ index 38127cf..2332230 100644 ); -int jade_kem_kyber_kyber512_amd64_ref_keypair( -+int libjade_kyber512_amd64_ref_keypair( ++int libjade_kyber512_ref_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -138,7 +84,7 @@ index 38127cf..2332230 100644 ); -int jade_kem_kyber_kyber512_amd64_ref_enc( -+int libjade_kyber512_amd64_ref_enc( ++int libjade_kyber512_ref_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -146,42 +92,15 @@ index 38127cf..2332230 100644 const uint8_t *secret_key ); -+int libjade_kyber512_amd64_ref_dec( ++int libjade_kyber512_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + #endif -diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c -new file mode 100644 -index 0000000..15571bf ---- /dev/null -+++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c -@@ -0,0 +1,20 @@ -+#include -+#include "libjade_randombytes.h" -+#include "api.h" -+ -+int libjade_kyber768_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { -+ uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES]; -+ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); -+ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); -+ return jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); -+} -+ -+int libjade_kyber768_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -+ uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES]; -+ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES); -+ return jade_kem_kyber_kyber768_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -+} -+ -+int libjade_kyber768_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -+ return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); -+} -\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h -index d3b3500..be5f7db 100644 +index d3b3500..ac36577 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h +++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h @@ -3,16 +3,8 @@ @@ -206,7 +125,7 @@ index d3b3500..be5f7db 100644 ); -int jade_kem_kyber_kyber768_amd64_avx2_keypair( -+int libjade_kyber768_amd64_avx2_keypair( ++int libjade_kyber768_avx2_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -215,7 +134,7 @@ index d3b3500..be5f7db 100644 ); -int jade_kem_kyber_kyber768_amd64_avx2_enc( -+int libjade_kyber768_amd64_avx2_enc( ++int libjade_kyber768_avx2_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -223,42 +142,15 @@ index d3b3500..be5f7db 100644 const uint8_t *secret_key ); -+int libjade_kyber768_amd64_avx2_dec( ++int libjade_kyber768_avx2_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key +); + #endif -diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/api.c b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c -new file mode 100644 -index 0000000..6055d87 ---- /dev/null -+++ b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c -@@ -0,0 +1,20 @@ -+#include -+#include "libjade_randombytes.h" -+#include "api.h" -+ -+int libjade_kyber768_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { -+ uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES]; -+ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); -+ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); -+ return jade_kem_kyber_kyber768_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); -+} -+ -+int libjade_kyber768_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -+ uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES]; -+ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES); -+ return jade_kem_kyber_kyber768_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -+} -+ -+int libjade_kyber768_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -+ return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); -+} -\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h -index e23e1bf..b8f2fc3 100644 +index e23e1bf..0c453e0 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h +++ b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h @@ -3,16 +3,8 @@ @@ -283,7 +175,7 @@ index e23e1bf..b8f2fc3 100644 ); -int jade_kem_kyber_kyber768_amd64_ref_keypair( -+int libjade_kyber768_amd64_ref_keypair( ++int libjade_kyber768_ref_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -292,7 +184,7 @@ index e23e1bf..b8f2fc3 100644 ); -int jade_kem_kyber_kyber768_amd64_ref_enc( -+int libjade_kyber768_amd64_ref_enc( ++int libjade_kyber768_ref_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -300,7 +192,7 @@ index e23e1bf..b8f2fc3 100644 const uint8_t *secret_key ); -+int libjade_kyber768_amd64_ref_dec( ++int libjade_kyber768_ref_dec( + uint8_t *shared_secret, + const uint8_t *ciphertext, + const uint8_t *secret_key diff --git a/scripts/copy_from_upstream/patches/libjade-kyber-meta.patch b/scripts/copy_from_upstream/patches/libjade-kyber-meta.patch index e3d110d0c..d511c61c3 100644 --- a/scripts/copy_from_upstream/patches/libjade-kyber-meta.patch +++ b/scripts/copy_from_upstream/patches/libjade-kyber-meta.patch @@ -1,5 +1,5 @@ diff --git a/src/crypto_kem/kyber/kyber512/META.yml b/src/crypto_kem/kyber/kyber512/META.yml -index 000ec75..797fca4 100644 +index 000ec75..8282075 100644 --- a/src/crypto_kem/kyber/kyber512/META.yml +++ b/src/crypto_kem/kyber/kyber512/META.yml @@ -1,7 +1,6 @@ @@ -11,13 +11,32 @@ index 000ec75..797fca4 100644 claimed-nist-level: 1 claimed-security: IND-CCA2 length-public-key: 800 -@@ -15,17 +14,20 @@ auxiliary-submitters: +@@ -9,23 +8,36 @@ length-ciphertext: 768 + length-secret-key: 1632 + length-shared-secret: 32 + principal-submitters: +- - TODO ++ - Peter Schwabe + auxiliary-submitters: +- - TODO ++ - Roberto Avanzi ++ - Joppe Bos ++ - Léo Ducas ++ - Eike Kiltz ++ - Tancrède Lepoint ++ - Vadim Lyubashevsky ++ - John M. Schanck ++ - Gregor Seiler ++ - Damien Stehlé implementations: - - name: amd64/ref - version: TODO -+ signature_keypair: libjade_kyber512_amd64_ref_keypair -+ signature_enc: libjade_kyber512_amd64_ref_enc -+ signature_dec: libjade_kyber512_amd64_ref_dec +- - name: amd64/ref +- version: TODO ++ - name: ref ++ version: NIST Round 3 submission ++ folder_name: amd64/ref ++ signature_keypair: libjade_kyber512_ref_keypair ++ signature_enc: libjade_kyber512_ref_enc ++ signature_dec: libjade_kyber512_ref_dec supported_platforms: - architecture: x86_64 operating_systems: @@ -27,17 +46,20 @@ index 000ec75..797fca4 100644 - - avx2 - - bmi2 - - popcnt +- - name: amd64/avx2 +- version: TODO + required_flags: [] - - name: amd64/avx2 - version: TODO -+ signature_keypair: libjade_kyber512_amd64_avx2_keypair -+ signature_enc: libjade_kyber512_amd64_avx2_enc -+ signature_dec: libjade_kyber512_amd64_avx2_dec ++ - name: avx2 ++ version: NIST Round 3 submission ++ folder_name: amd64/avx2 ++ signature_keypair: libjade_kyber512_avx2_keypair ++ signature_enc: libjade_kyber512_avx2_enc ++ signature_dec: libjade_kyber512_avx2_dec supported_platforms: - architecture: x86_64 operating_systems: diff --git a/src/crypto_kem/kyber/kyber768/META.yml b/src/crypto_kem/kyber/kyber768/META.yml -index d744938..0813fe2 100644 +index d744938..57cb0c7 100644 --- a/src/crypto_kem/kyber/kyber768/META.yml +++ b/src/crypto_kem/kyber/kyber768/META.yml @@ -1,7 +1,6 @@ @@ -49,13 +71,32 @@ index d744938..0813fe2 100644 claimed-nist-level: 3 claimed-security: IND-CCA2 length-public-key: 1184 -@@ -15,17 +14,20 @@ auxiliary-submitters: +@@ -9,23 +8,36 @@ length-ciphertext: 1088 + length-secret-key: 2400 + length-shared-secret: 32 + principal-submitters: +- - TODO ++ - Peter Schwabe + auxiliary-submitters: +- - TODO ++ - Roberto Avanzi ++ - Joppe Bos ++ - Léo Ducas ++ - Eike Kiltz ++ - Tancrède Lepoint ++ - Vadim Lyubashevsky ++ - John M. Schanck ++ - Gregor Seiler ++ - Damien Stehlé implementations: - - name: amd64/ref - version: TODO -+ signature_keypair: libjade_kyber768_amd64_ref_keypair -+ signature_enc: libjade_kyber768_amd64_ref_enc -+ signature_dec: libjade_kyber768_amd64_ref_dec +- - name: amd64/ref +- version: TODO ++ - name: ref ++ version: NIST Round 3 submission ++ folder_name: amd64/ref ++ signature_keypair: libjade_kyber768_ref_keypair ++ signature_enc: libjade_kyber768_ref_enc ++ signature_dec: libjade_kyber768_ref_dec supported_platforms: - architecture: x86_64 operating_systems: @@ -65,12 +106,15 @@ index d744938..0813fe2 100644 - - avx2 - - bmi2 - - popcnt +- - name: amd64/avx2 +- version: TODO + required_flags: [] - - name: amd64/avx2 - version: TODO -+ signature_keypair: libjade_kyber768_amd64_avx2_keypair -+ signature_enc: libjade_kyber768_amd64_avx2_enc -+ signature_dec: libjade_kyber768_amd64_avx2_dec ++ - name: avx2 ++ version: NIST Round 3 submission ++ folder_name: amd64/avx2 ++ signature_keypair: libjade_kyber768_avx2_keypair ++ signature_enc: libjade_kyber768_avx2_enc ++ signature_dec: libjade_kyber768_avx2_dec supported_platforms: - architecture: x86_64 operating_systems: diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index 0afa4610a..64bb4c14a 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -3,7 +3,7 @@ {%- for common_dep in common_deps %} if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ used_by['scheme_c'] }}{%- if used_by['impl_name'] != default_implementation %}_{{ used_by['impl_name'] }}{% endif -%}{%- if not loop.last %} OR {% endif -%}{%- endfor -%}) - add_library({{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + add_library(jasmin_{{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) target_include_directories({{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) {%- if common_dep['required_flags'] %} target_compile_options({{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endif -%}{%- endfor -%}) @@ -22,39 +22,39 @@ endif() {%- if impl['name'] == scheme['default_implementation'] %} if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) - add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + add_library(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) {%- endif -%} {%- else %} -if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'].replace('/', '_') }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }}{%- endif %}) - add_library({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) +if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}{%- endif %}) + add_library(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- endif %} - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'].replace('/', '_') }}) - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) + target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] -%} {%- set opts %}{% for flag in impl['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {% elif flag == 'sse4_1' -%} sse4.1 {% elif flag == 'pclmulqdq' -%} pclmul {% else -%}{{ flag }} {% endif %}{% endif -%}{% endfor %}{% endset %} {%- if opts|length > 0 %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE {{ opts }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {{ opts }}) {%- endif -%} {%- endif %} {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) {%- endif %} - {%- if family == 'classic_mceliece' and impl['name'].replace('/', '_') == 'avx2' %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-language-extension-token -O1) + {%- if family == 'classic_mceliece' and impl['name'] == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-language-extension-token -O1) {%- endif %} - {%- if family == 'hqc' and impl['name'].replace('/', '_') == 'avx2' %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE -Wno-missing-braces) + {%- if family == 'hqc' and impl['name'] == 'avx2' %} + target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-missing-braces) {%- endif %} {%- if impl['upstream']['name'].endswith('pqclean') %} if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} PRIVATE old_gas_syntax) + target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE old_gas_syntax) endif() {%- endif %} - set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() {%- endfor -%} {%- endfor %} diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index 7bf734678..d7eba4da9 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -119,10 +119,10 @@ extern int PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper {% for scheme in schemes -%} {%- for impl in scheme['metadata']['implementations'] if impl['name'] in scheme['libjade_implementations'] %} -#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] != scheme['default_implementation'] %}_{{ 'amd64_' + impl['name'] }}{%- endif %}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ 'amd64_' + impl['name'] }}){%- endif %} -extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(uint8_t *pk, uint8_t *sk); -extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); -extern int libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#if defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] != scheme['default_implementation'] %}_{{ impl['name'] }}{%- endif %}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} +extern int libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif {% endfor -%} {% endfor -%} @@ -134,9 +134,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -144,14 +144,14 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * #endif /* OQS_DIST_BUILD */ {%- endif -%} {%- if impl['name'] in scheme['libjade_implementations'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_keypair(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_keypair(public_key, secret_key); {%- else %} {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_keypair(public_key, secret_key); {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ {%- endif -%} @@ -159,7 +159,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_keypair(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} @@ -208,9 +208,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -218,14 +218,14 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c #endif /* OQS_DIST_BUILD */ {%- endif -%} {%- if impl['name'] in scheme['libjade_implementations'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_enc(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_enc(public_key, secret_key); {%- else %} {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(public_key, secret_key); {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_enc(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ {%- endif -%} @@ -233,7 +233,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_enc(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} @@ -282,9 +282,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}amd64_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -292,14 +292,14 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s #endif /* OQS_DIST_BUILD */ {%- endif -%} {%- if impl['name'] in scheme['libjade_implementations'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_{{ impl['name'] }}_dec(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_dec(public_key, secret_key); {%- else %} {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(public_key, secret_key); {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_dec(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ {%- endif -%} @@ -307,7 +307,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_dec(public_key, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} diff --git a/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade index 0e19545a5..1cb476e31 100644 --- a/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade +++ b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade @@ -7,9 +7,9 @@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }} @OQS_LIBJADE_BUILD_BIN@ {%- endif -%} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} -#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ {%- if 'alias_scheme' in scheme %} -#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ {%- endif -%} {%- endfor -%} {%- endfor -%} @@ -24,9 +24,9 @@ #cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }} @OQS_LIBJADE_BUILD_BIN@ {%- endif -%} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} -#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ {%- if 'alias_scheme' in scheme %} -#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'].replace('/', '_') }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ {%- endif -%} {%- endfor -%} {%- endfor -%} diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 08444ec4e..90e04e0ef 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -91,34 +91,34 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START -if(OQS_ENABLE_LIBJADE_KEM_kyber_512) - add_library(kyber_512_amd64_ref OBJECT kem_kyber_512.c libjade_kyber512_amd64_ref/api.c libjade_kyber512_amd64_ref/kem.s) - target_include_directories(kyber_512_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_ref) - target_include_directories(kyber_512_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - set(_KYBER_OBJS ${_KYBER_OBJS} $) +if(OQS_ENABLE_LIBJADE_KEM_kyber_512_ref) + add_library(jasmin_kyber_512_ref OBJECT libjade_kyber512_ref/kem.s) + target_include_directories(kyber_512_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_ref) + target_include_directories(kyber_512_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() -if(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) - add_library(kyber_512_amd64_avx2 OBJECT libjade_kyber512_amd64_avx2/api.c libjade_kyber512_amd64_avx2/kem.s) - target_include_directories(kyber_512_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_amd64_avx2) - target_include_directories(kyber_512_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - target_compile_options(kyber_512_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) - set(_KYBER_OBJS ${_KYBER_OBJS} $) +if(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) + add_library(jasmin_kyber_512_avx2 OBJECT libjade_kyber512_avx2/kem.s) + target_include_directories(kyber_512_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_avx2) + target_include_directories(kyber_512_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_compile_options(kyber_512_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() -if(OQS_ENABLE_LIBJADE_KEM_kyber_768) - add_library(kyber_768_amd64_ref OBJECT kem_kyber_768.c libjade_kyber768_amd64_ref/api.c libjade_kyber768_amd64_ref/kem.s) - target_include_directories(kyber_768_amd64_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_ref) - target_include_directories(kyber_768_amd64_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - set(_KYBER_OBJS ${_KYBER_OBJS} $) +if(OQS_ENABLE_LIBJADE_KEM_kyber_768_ref) + add_library(jasmin_kyber_768_ref OBJECT libjade_kyber768_ref/kem.s) + target_include_directories(kyber_768_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_ref) + target_include_directories(kyber_768_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() -if(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) - add_library(kyber_768_amd64_avx2 OBJECT libjade_kyber768_amd64_avx2/api.c libjade_kyber768_amd64_avx2/kem.s) - target_include_directories(kyber_768_amd64_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_amd64_avx2) - target_include_directories(kyber_768_amd64_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - target_compile_options(kyber_768_amd64_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) - set(_KYBER_OBJS ${_KYBER_OBJS} $) +if(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) + add_library(jasmin_kyber_768_avx2 OBJECT libjade_kyber768_avx2/kem.s) + target_include_directories(kyber_768_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_avx2) + target_include_directories(kyber_768_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_compile_options(kyber_768_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_END set(KYBER_OBJS ${_KYBER_OBJS} PARENT_SCOPE) diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/api.c b/src/kem/kyber/libjade_kyber512_amd64_avx2/api.c deleted file mode 100644 index e5620ccfa..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/api.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include "libjade_randombytes.h" -#include "api.h" - -int libjade_kyber512_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { - uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES]; - OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); - OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); - return jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); -} - -int libjade_kyber512_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES]; - OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES); - return jade_kem_kyber_kyber512_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -} - -int libjade_kyber512_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { - return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); -} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/api.c b/src/kem/kyber/libjade_kyber512_amd64_ref/api.c deleted file mode 100644 index 2a4298f01..000000000 --- a/src/kem/kyber/libjade_kyber512_amd64_ref/api.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include "libjade_randombytes.h" -#include "api.h" - -int libjade_kyber512_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { - uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES]; - OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); - OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); - return jade_kem_kyber_kyber512_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); -} - -int libjade_kyber512_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES]; - OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES); - return jade_kem_kyber_kyber512_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -} - -int libjade_kyber512_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { - return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); -} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/api.h b/src/kem/kyber/libjade_kyber512_avx2/api.h similarity index 88% rename from src/kem/kyber/libjade_kyber512_amd64_avx2/api.h rename to src/kem/kyber/libjade_kyber512_avx2/api.h index 0914217f4..419112ece 100644 --- a/src/kem/kyber/libjade_kyber512_amd64_avx2/api.h +++ b/src/kem/kyber/libjade_kyber512_avx2/api.h @@ -12,7 +12,7 @@ int jade_kem_kyber_kyber512_amd64_avx2_keypair_derand( const uint8_t *coins ); -int libjade_kyber512_amd64_avx2_keypair( +int libjade_kyber512_avx2_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -24,7 +24,7 @@ int jade_kem_kyber_kyber512_amd64_avx2_enc_derand( const uint8_t *coins ); -int libjade_kyber512_amd64_avx2_enc( +int libjade_kyber512_avx2_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -36,7 +36,7 @@ int jade_kem_kyber_kyber512_amd64_avx2_dec( const uint8_t *secret_key ); -int libjade_kyber512_amd64_avx2_dec( +int libjade_kyber512_avx2_dec( uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key diff --git a/src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s b/src/kem/kyber/libjade_kyber512_avx2/kem.s similarity index 100% rename from src/kem/kyber/libjade_kyber512_amd64_avx2/kem.s rename to src/kem/kyber/libjade_kyber512_avx2/kem.s diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/api.h b/src/kem/kyber/libjade_kyber512_ref/api.h similarity index 88% rename from src/kem/kyber/libjade_kyber512_amd64_ref/api.h rename to src/kem/kyber/libjade_kyber512_ref/api.h index 233223089..fcce52b89 100644 --- a/src/kem/kyber/libjade_kyber512_amd64_ref/api.h +++ b/src/kem/kyber/libjade_kyber512_ref/api.h @@ -12,7 +12,7 @@ int jade_kem_kyber_kyber512_amd64_ref_keypair_derand( const uint8_t *coins ); -int libjade_kyber512_amd64_ref_keypair( +int libjade_kyber512_ref_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -24,7 +24,7 @@ int jade_kem_kyber_kyber512_amd64_ref_enc_derand( const uint8_t *coins ); -int libjade_kyber512_amd64_ref_enc( +int libjade_kyber512_ref_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -36,7 +36,7 @@ int jade_kem_kyber_kyber512_amd64_ref_dec( const uint8_t *secret_key ); -int libjade_kyber512_amd64_ref_dec( +int libjade_kyber512_ref_dec( uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key diff --git a/src/kem/kyber/libjade_kyber512_amd64_ref/kem.s b/src/kem/kyber/libjade_kyber512_ref/kem.s similarity index 100% rename from src/kem/kyber/libjade_kyber512_amd64_ref/kem.s rename to src/kem/kyber/libjade_kyber512_ref/kem.s diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/api.c b/src/kem/kyber/libjade_kyber768_amd64_avx2/api.c deleted file mode 100644 index 15571bf96..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/api.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include "libjade_randombytes.h" -#include "api.h" - -int libjade_kyber768_amd64_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { - uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES]; - OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); - OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); - return jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); -} - -int libjade_kyber768_amd64_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES]; - OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES); - return jade_kem_kyber_kyber768_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -} - -int libjade_kyber768_amd64_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { - return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); -} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/api.c b/src/kem/kyber/libjade_kyber768_amd64_ref/api.c deleted file mode 100644 index 656ae3eff..000000000 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/api.c +++ /dev/null @@ -1,20 +0,0 @@ -#include -#include "libjade_randombytes.h" -#include "api.h" - -int libjade_kyber768_amd64_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { - uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES]; - OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); - OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); - return jade_kem_kyber_kyber768_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); -} - -int libjade_kyber768_amd64_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { - uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES]; - OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES); - return jade_kem_kyber_kyber768_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); -} - -int libjade_kyber768_amd64_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { - return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); -} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/api.h b/src/kem/kyber/libjade_kyber768_avx2/api.h similarity index 88% rename from src/kem/kyber/libjade_kyber768_amd64_avx2/api.h rename to src/kem/kyber/libjade_kyber768_avx2/api.h index be5f7dbf3..ac365776f 100644 --- a/src/kem/kyber/libjade_kyber768_amd64_avx2/api.h +++ b/src/kem/kyber/libjade_kyber768_avx2/api.h @@ -12,7 +12,7 @@ int jade_kem_kyber_kyber768_amd64_avx2_keypair_derand( const uint8_t *coins ); -int libjade_kyber768_amd64_avx2_keypair( +int libjade_kyber768_avx2_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -24,7 +24,7 @@ int jade_kem_kyber_kyber768_amd64_avx2_enc_derand( const uint8_t *coins ); -int libjade_kyber768_amd64_avx2_enc( +int libjade_kyber768_avx2_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -36,7 +36,7 @@ int jade_kem_kyber_kyber768_amd64_avx2_dec( const uint8_t *secret_key ); -int libjade_kyber768_amd64_avx2_dec( +int libjade_kyber768_avx2_dec( uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key diff --git a/src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s b/src/kem/kyber/libjade_kyber768_avx2/kem.s similarity index 100% rename from src/kem/kyber/libjade_kyber768_amd64_avx2/kem.s rename to src/kem/kyber/libjade_kyber768_avx2/kem.s diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/api.h b/src/kem/kyber/libjade_kyber768_ref/api.h similarity index 88% rename from src/kem/kyber/libjade_kyber768_amd64_ref/api.h rename to src/kem/kyber/libjade_kyber768_ref/api.h index b8f2fc303..0c453e07e 100644 --- a/src/kem/kyber/libjade_kyber768_amd64_ref/api.h +++ b/src/kem/kyber/libjade_kyber768_ref/api.h @@ -12,7 +12,7 @@ int jade_kem_kyber_kyber768_amd64_ref_keypair_derand( const uint8_t *coins ); -int libjade_kyber768_amd64_ref_keypair( +int libjade_kyber768_ref_keypair( uint8_t *public_key, uint8_t *secret_key ); @@ -24,7 +24,7 @@ int jade_kem_kyber_kyber768_amd64_ref_enc_derand( const uint8_t *coins ); -int libjade_kyber768_amd64_ref_enc( +int libjade_kyber768_ref_enc( uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key @@ -36,7 +36,7 @@ int jade_kem_kyber_kyber768_amd64_ref_dec( const uint8_t *secret_key ); -int libjade_kyber768_amd64_ref_dec( +int libjade_kyber768_ref_dec( uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key diff --git a/src/kem/kyber/libjade_kyber768_amd64_ref/kem.s b/src/kem/kyber/libjade_kyber768_ref/kem.s similarity index 100% rename from src/kem/kyber/libjade_kyber768_amd64_ref/kem.s rename to src/kem/kyber/libjade_kyber768_ref/kem.s diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index 02358b97f..1343d9fa8 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -195,7 +195,9 @@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_KYBER @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512 @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2 @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_ref @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2 @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768 @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2 @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_ref @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2 @OQS_LIBJADE_BUILD_BIN@ ///// OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ALG_ENABLE_DEFINES_END From 762ba8d12a416f7454b76d9baa2ea9425de61a11 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 9 Apr 2024 14:32:18 +0200 Subject: [PATCH 44/82] Update alg docs, libjade code name scheme, and license Signed-off-by: Pravek Sharma --- .CMake/alg_support.cmake | 12 --- docs/algorithms/kem/kyber.md | 4 + docs/algorithms/kem/kyber.yml | 45 +++++++++ docs/cbom.json | 98 +++++++++++++++++-- .../copy_from_upstream/copy_from_libjade.yml | 4 +- .../copy_from_upstream/copy_from_upstream.py | 11 +++ .../update_upstream_alg_docs.py | 80 ++++++++++++++- .../libjade_shims/libjade_randombytes.c | 3 +- .../libjade_shims/libjade_randombytes.h | 2 +- src/kem/kyber/CMakeLists.txt | 8 +- src/oqsconfig.h.cmake | 2 - 11 files changed, 234 insertions(+), 35 deletions(-) diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index f09ab5a13..b5e3bf9d4 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -509,24 +509,12 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_START if(OQS_LIBJADE_BUILD) -if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") -if(OQS_DIST_X86_64_BUILD OR ()) - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512_ref "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_512" OFF) -endif() -endif() - if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_512" OFF) endif() endif() -if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") -if(OQS_DIST_X86_64_BUILD OR ()) - cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_768_ref "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_768" OFF) -endif() -endif() - if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2 "" ON "OQS_ENABLE_LIBJADE_KEM_kyber_768" OFF) diff --git a/docs/algorithms/kem/kyber.md b/docs/algorithms/kem/kyber.md index a75c144a2..d31e3bc73 100644 --- a/docs/algorithms/kem/kyber.md +++ b/docs/algorithms/kem/kyber.md @@ -30,6 +30,8 @@ | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | +| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | +| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | None | True | True | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. @@ -42,6 +44,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**. | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | +| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | +| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | None | True | True | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. diff --git a/docs/algorithms/kem/kyber.yml b/docs/algorithms/kem/kyber.yml index cde870c10..d57b254e2 100644 --- a/docs/algorithms/kem/kyber.yml +++ b/docs/algorithms/kem/kyber.yml @@ -26,6 +26,11 @@ optimized-upstreams: with copy_from_upstream patches spdx-license-identifier: CC0-1.0 and (CC0-1.0 or Apache-2.0) and (CC0-1.0 or MIT) and MIT +formally-verified-upstreams: + libjade: + source: https://github.com/formosa-crypto/lib/commit/a6845a257a0ebbab4fd93c19423a62557c838a10 + with copy_from_upstream patches + spdx-license-identifier: CC0-1.0 parameter-sets: - name: Kyber512 claimed-nist-level: 1 @@ -72,6 +77,26 @@ parameter-sets: no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: false large-stack-usage: false + - upstream: libjade + upstream-id: ref + supported-platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + no-secret-dependent-branching-claimed: true + no-secret-dependent-branching-checked-by-valgrind: true + large-stack-usage: false + - upstream: libjade + upstream-id: avx2 + supported-platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + no-secret-dependent-branching-claimed: true + no-secret-dependent-branching-checked-by-valgrind: true + large-stack-usage: false - name: Kyber768 claimed-nist-level: 3 claimed-security: IND-CCA2 @@ -117,6 +142,26 @@ parameter-sets: no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: false large-stack-usage: false + - upstream: libjade + upstream-id: ref + supported-platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + no-secret-dependent-branching-claimed: true + no-secret-dependent-branching-checked-by-valgrind: true + large-stack-usage: false + - upstream: libjade + upstream-id: avx2 + supported-platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin + no-secret-dependent-branching-claimed: true + no-secret-dependent-branching-checked-by-valgrind: true + large-stack-usage: false - name: Kyber1024 claimed-nist-level: 5 claimed-security: IND-CCA2 diff --git a/docs/cbom.json b/docs/cbom.json index 7dd47dc21..7d97543d7 100644 --- a/docs/cbom.json +++ b/docs/cbom.json @@ -1,23 +1,23 @@ { "bomFormat": "CBOM", "specVersion": "1.4-cbom-1.0", - "serialNumber": "urn:uuid:b3ac0f3d-b320-4f0f-bbef-6c535c1e9874", + "serialNumber": "urn:uuid:9f4195fb-9a9f-4cf5-b2ee-e83a2a3a78a0", "version": 1, "metadata": { - "timestamp": "2024-03-05T11:49:42.428605", + "timestamp": "2024-04-09T02:01:13.001332", "component": { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@1f393bfe3690c6ef1cac9070d166995ce4fb3e9d", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@9df2fd7c44e593bca27e5bfd6a0b4c5207f89042", "name": "liboqs", - "version": "1f393bfe3690c6ef1cac9070d166995ce4fb3e9d" + "version": "9df2fd7c44e593bca27e5bfd6a0b4c5207f89042" } }, "components": [ { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@1f393bfe3690c6ef1cac9070d166995ce4fb3e9d", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@9df2fd7c44e593bca27e5bfd6a0b4c5207f89042", "name": "liboqs", - "version": "1f393bfe3690c6ef1cac9070d166995ce4fb3e9d" + "version": "9df2fd7c44e593bca27e5bfd6a0b4c5207f89042" }, { "type": "crypto-asset", @@ -839,6 +839,46 @@ "nistQuantumSecurityLevel": 1 } }, + { + "type": "crypto-asset", + "bom-ref": "alg:Kyber512:x86_64", + "name": "Kyber", + "cryptoProperties": { + "assetType": "algorithm", + "algorithmProperties": { + "variant": "Kyber512", + "primitive": "kem", + "implementationLevel": "softwarePlainRam", + "cryptoFunctions": [ + "keygen", + "encapsulate", + "decapsulate" + ], + "implementationPlatform": "x86_64" + }, + "nistQuantumSecurityLevel": 1 + } + }, + { + "type": "crypto-asset", + "bom-ref": "alg:Kyber512:x86_64", + "name": "Kyber", + "cryptoProperties": { + "assetType": "algorithm", + "algorithmProperties": { + "variant": "Kyber512", + "primitive": "kem", + "implementationLevel": "softwarePlainRam", + "cryptoFunctions": [ + "keygen", + "encapsulate", + "decapsulate" + ], + "implementationPlatform": "x86_64" + }, + "nistQuantumSecurityLevel": 1 + } + }, { "type": "crypto-asset", "bom-ref": "alg:Kyber768:generic", @@ -899,6 +939,46 @@ "nistQuantumSecurityLevel": 3 } }, + { + "type": "crypto-asset", + "bom-ref": "alg:Kyber768:x86_64", + "name": "Kyber", + "cryptoProperties": { + "assetType": "algorithm", + "algorithmProperties": { + "variant": "Kyber768", + "primitive": "kem", + "implementationLevel": "softwarePlainRam", + "cryptoFunctions": [ + "keygen", + "encapsulate", + "decapsulate" + ], + "implementationPlatform": "x86_64" + }, + "nistQuantumSecurityLevel": 3 + } + }, + { + "type": "crypto-asset", + "bom-ref": "alg:Kyber768:x86_64", + "name": "Kyber", + "cryptoProperties": { + "assetType": "algorithm", + "algorithmProperties": { + "variant": "Kyber768", + "primitive": "kem", + "implementationLevel": "softwarePlainRam", + "cryptoFunctions": [ + "keygen", + "encapsulate", + "decapsulate" + ], + "implementationPlatform": "x86_64" + }, + "nistQuantumSecurityLevel": 3 + } + }, { "type": "crypto-asset", "bom-ref": "alg:Kyber1024:generic", @@ -2168,7 +2248,7 @@ ], "dependencies": [ { - "ref": "pkg:github/open-quantum-safe/liboqs@1f393bfe3690c6ef1cac9070d166995ce4fb3e9d", + "ref": "pkg:github/open-quantum-safe/liboqs@9df2fd7c44e593bca27e5bfd6a0b4c5207f89042", "dependsOn": [ "alg:BIKE-L1:x86_64", "alg:BIKE-L3:x86_64", @@ -2211,9 +2291,13 @@ "alg:Kyber512:generic", "alg:Kyber512:x86_64", "alg:Kyber512:armv8-a", + "alg:Kyber512:x86_64", + "alg:Kyber512:x86_64", "alg:Kyber768:generic", "alg:Kyber768:x86_64", "alg:Kyber768:armv8-a", + "alg:Kyber768:x86_64", + "alg:Kyber768:x86_64", "alg:Kyber1024:generic", "alg:Kyber1024:x86_64", "alg:Kyber1024:armv8-a", diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index d30cee502..034747fca 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -7,12 +7,10 @@ upstreams: kem_meta_path: 'src/crypto_kem/{family}/{pqclean_scheme}/META.yml' kem_scheme_path: 'src/crypto_kem/{family}/{pqclean_scheme}' patches: ['libjade-kyber-api.patch', 'libjade-kyber-meta.patch'] -templates: - kem_scheme.c: ['kem_scheme.c.libjade', 'kem_scheme_keypair.c.libjade', 'kem_scheme_encaps.c.libjade', 'kem_scheme_decaps.c.libjade'] kems: - name: kyber - default_implementation: amd64/ref + default_implementation: ref upstream_location: libjade schemes: - diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 984ce491f..7ef91e6da 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -683,6 +683,17 @@ def copy_from_libjade(): process_families(instructions, os.environ['LIBOQS_DIR'], True, False, True) replacer('.CMake/alg_support.cmake', instructions, '#####', libjade=True) replacer('src/oqsconfig.h.cmake', instructions, '/////', libjade=True) + for t in ["kem", "sig"]: + with open(os.path.join(os.environ['LIBOQS_DIR'], 'tests', 'KATs', t, 'kats.json'), "w") as f: + json.dump(kats[t], f, indent=2, sort_keys=True) + + update_upstream_alg_docs.do_it(os.environ['LIBOQS_DIR'], upstream_location='libjade') + + sys.path.insert(1, os.path.join(os.environ['LIBOQS_DIR'], 'scripts')) + import update_docs_from_yaml + import update_cbom + update_docs_from_yaml.do_it(os.environ['LIBOQS_DIR']) + update_cbom.update_cbom_if_algs_not_changed(os.environ['LIBOQS_DIR'], "git") if not keepdata: shutil.rmtree('repos') diff --git a/scripts/copy_from_upstream/update_upstream_alg_docs.py b/scripts/copy_from_upstream/update_upstream_alg_docs.py index 706c2ed7f..55163fc9e 100755 --- a/scripts/copy_from_upstream/update_upstream_alg_docs.py +++ b/scripts/copy_from_upstream/update_upstream_alg_docs.py @@ -217,6 +217,75 @@ def update_upstream_kem_alg_docs(liboqs_root, kems, upstream_info, write_changes store_yaml(oqs_yaml_path, oqs_yaml) +def update_libjade_kem_alg_docs(liboqs_root, kems, upstream_info, write_changes=False): + for kem in kems: + ui = get_upstream_info(upstream_info, kem['upstream_location']) + upstream_root = ui['upstream_root'] + meta_yaml_path_template = ui['kem_meta_path'] + + oqs_yaml_path = os.path.join(liboqs_root, 'docs', 'algorithms', 'kem', '{}.yml'.format(kem['name'])) + oqs_yaml = load_yaml(oqs_yaml_path) + # We cannot assume that the ordering of "parameter-sets" + # in the OQS YAML files matches that of copy_from_upstream.yml + # hence use helper function get_oqs_yaml(alg_name) + for scheme in kem['schemes']: + scheme['family'] = kem['name'] + upstream_meta_path = os.path.join(upstream_root, meta_yaml_path_template.format_map(scheme)) + upstream_yaml = load_yaml(upstream_meta_path) + + oqs_yaml['type'] = rhs_if_not_equal(oqs_yaml['type'], upstream_yaml['type'], "type") + + oqs_yaml['principal-submitters'] = rhs_if_not_equal(oqs_yaml['principal-submitters'], upstream_yaml['principal-submitters'], "principal-submitters") + if 'auxiliary-submitters' in upstream_yaml: + oqs_yaml['auxiliary-submitters'] = rhs_if_not_equal(oqs_yaml['auxiliary-submitters'] if 'auxiliary-submitters' in oqs_yaml else '', upstream_yaml['auxiliary-submitters'], "auxiliary-submitters") + + for upstream in upstream_info: + verified_upstream_base_url = upstream['git_url'][:-len(".git")] + for patchfilename in upstream['patches']: + if kem['name'] in patchfilename: + patches_done=" with copy_from_upstream patches" + patches_done="" + if 'patches' in upstream: + for patchfilename in upstream['patches']: + if kem['name'] in patchfilename: + patches_done=" with copy_from_upstream patches" + if 'formally-verified-upstreams' in oqs_yaml and upstream['name'] in oqs_yaml['formally-verified-upstreams']: + + lhs = oqs_yaml['formally-verified-upstreams'][upstream['name']]['source'] + else: + lhs = '' + git_commit = upstream['git_commit'] + oqs_yaml['formally-verified-upstreams'][upstream['name']]['source'] = rhs_if_not_equal(lhs, ("{}/commit/{}"+patches_done).format(verified_upstream_base_url, git_commit), "formally-verified-upstreams") + + index, oqs_scheme_yaml = get_oqs_yaml(oqs_yaml['parameter-sets'], scheme['pretty_name_full']) + + oqs_scheme_yaml['claimed-nist-level'] = rhs_if_not_equal(oqs_scheme_yaml['claimed-nist-level'], upstream_yaml['claimed-nist-level'], "claimed-nist-level") + oqs_scheme_yaml['claimed-security'] = rhs_if_not_equal(oqs_scheme_yaml['claimed-security'], upstream_yaml['claimed-security'], "claimed-security") + oqs_scheme_yaml['length-public-key'] = rhs_if_not_equal(oqs_scheme_yaml['length-public-key'], upstream_yaml['length-public-key'], "length-public-key") + oqs_scheme_yaml['length-ciphertext'] = rhs_if_not_equal(oqs_scheme_yaml['length-ciphertext'], upstream_yaml['length-ciphertext'], "length-ciphertext") + oqs_scheme_yaml['length-secret-key'] = rhs_if_not_equal(oqs_scheme_yaml['length-secret-key'], upstream_yaml['length-secret-key'], "legnth-secret-key") + oqs_scheme_yaml['length-shared-secret'] = rhs_if_not_equal(oqs_scheme_yaml['length-shared-secret'], upstream_yaml['length-shared-secret'], "length-shared-secret") + + for impl_index, impl in enumerate(oqs_scheme_yaml['implementations']): + if impl['upstream'] == kem['upstream_location']: + for upstream_impl in upstream_yaml['implementations']: + if impl['upstream-id'] == upstream_impl['name']: + break + if 'supported_platforms' in upstream_impl: + for i in range(len(upstream_impl['supported_platforms'])): + if not upstream_impl['supported_platforms'][i]['required_flags']: + del upstream_impl['supported_platforms'][i]['required_flags'] + + impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], upstream_impl['supported_platforms'], "supported-platforms") + else: + impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], "all", "supported-platforms") + oqs_scheme_yaml['implementations'][impl_index] = impl + + oqs_yaml['parameter-sets'][index] = oqs_scheme_yaml + if write_changes: + store_yaml(oqs_yaml_path, oqs_yaml) + + def update_upstream_sig_alg_docs(liboqs_root, sigs, upstream_info, write_changes=False): for sig in sigs: @@ -368,7 +437,7 @@ def update_upstream_sig_alg_docs(liboqs_root, sigs, upstream_info, write_changes store_yaml(oqs_yaml_path, oqs_yaml) -def do_it(liboqs_root): +def do_it(liboqs_root, upstream_location='upstream'): global DEBUG if liboqs_root == None: parser = argparse.ArgumentParser() @@ -388,15 +457,18 @@ def do_it(liboqs_root): if not write_changes: print("--write-changes not set; changes will not be written out.") instructions = load_yaml( - os.path.join(liboqs_root, 'scripts', 'copy_from_upstream', 'copy_from_upstream.yml'), + os.path.join(liboqs_root, 'scripts', 'copy_from_upstream', 'copy_from_{}.yml'.format(upstream_location)), encoding='utf-8') for upstream in instructions['upstreams']: if 'git_url' in upstream.keys(): upstream['upstream_root'] = fetch_upstream(liboqs_root, upstream) - update_upstream_kem_alg_docs(liboqs_root, instructions['kems'], instructions['upstreams'], write_changes) - update_upstream_sig_alg_docs(liboqs_root, instructions['sigs'], instructions['upstreams'], write_changes) + if upstream_location == 'libjade': + update_libjade_kem_alg_docs(liboqs_root, instructions['kems'], instructions['upstreams'], write_changes) + else: + update_upstream_kem_alg_docs(liboqs_root, instructions['kems'], instructions['upstreams'], write_changes) + update_upstream_sig_alg_docs(liboqs_root, instructions['sigs'], instructions['upstreams'], write_changes) if __name__ == "__main__": do_it(None) diff --git a/src/common/libjade_shims/libjade_randombytes.c b/src/common/libjade_shims/libjade_randombytes.c index 40e4ce9e7..c80e61a6b 100644 --- a/src/common/libjade_shims/libjade_randombytes.c +++ b/src/common/libjade_shims/libjade_randombytes.c @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: CC0-1.0 #if defined(__unix__) || defined(__APPLE__) #include @@ -6,6 +6,5 @@ void __jasmin_syscall_randombytes__(uint8_t *_x, uint64_t xlen) { OQS_randombytes(_x, xlen); - // return _x; } #endif diff --git a/src/common/libjade_shims/libjade_randombytes.h b/src/common/libjade_shims/libjade_randombytes.h index c177ef693..591fbd893 100644 --- a/src/common/libjade_shims/libjade_randombytes.h +++ b/src/common/libjade_shims/libjade_randombytes.h @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: MIT +// SPDX-License-Identifier: CC0-1.0 #if defined(__unix__) || defined(__APPLE__) #ifndef LIBJADE_RANDOMBYTES_H diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 90e04e0ef..77a70b995 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -91,8 +91,8 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START -if(OQS_ENABLE_LIBJADE_KEM_kyber_512_ref) - add_library(jasmin_kyber_512_ref OBJECT libjade_kyber512_ref/kem.s) +if(OQS_ENABLE_LIBJADE_KEM_kyber_512) + add_library(jasmin_kyber_512_ref OBJECT kem_kyber_512.c libjade_kyber512_ref/kem.s) target_include_directories(kyber_512_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_ref) target_include_directories(kyber_512_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) @@ -106,8 +106,8 @@ if(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() -if(OQS_ENABLE_LIBJADE_KEM_kyber_768_ref) - add_library(jasmin_kyber_768_ref OBJECT libjade_kyber768_ref/kem.s) +if(OQS_ENABLE_LIBJADE_KEM_kyber_768) + add_library(jasmin_kyber_768_ref OBJECT kem_kyber_768.c libjade_kyber768_ref/kem.s) target_include_directories(kyber_768_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_ref) target_include_directories(kyber_768_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index 1343d9fa8..141ac8f93 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -195,9 +195,7 @@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_KYBER @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512 @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_ref @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2 @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768 @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_ref @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2 @OQS_LIBJADE_BUILD_BIN@ ///// OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ALG_ENABLE_DEFINES_END From 0f1d3bd14f6cf6db32cb29b26a3063081e76f9ad Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 9 Apr 2024 14:51:13 +0200 Subject: [PATCH 45/82] Update copy_from_upstream documentation Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_libjade.yml | 3 +++ scripts/copy_from_upstream/copy_from_upstream.py | 9 ++++++++- scripts/copy_from_upstream/update_upstream_alg_docs.py | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index 034747fca..3912c6e27 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -1,3 +1,6 @@ +# When adding an algorithm to copy_from_libjade.yml, the boolean +# 'libjade_implementation' and list of implementation 'libjade_implementations' +# must updated for the relevant algorithm in copy_from_upstream.yml upstreams: - name: libjade diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 7ef91e6da..d94dcdd3d 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -65,6 +65,8 @@ def shell(command, expect=0): if ret.returncode != expect: raise Exception("'{}' failed with error {}. Expected {}.".format(" ".join(command), ret, expect)) +# Generate template from specified scheme to replace old file in 'copy' mode +# but preserves additions made to file made in priour runs of 'libjade' mode def generator(destination_file_path, template_filename, delimiter, family, scheme_desired): template = file_get_contents( os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', template_filename)) @@ -673,7 +675,12 @@ def copy_from_upstream(): if not keepdata: shutil.rmtree('repos') - +# Copy algorithms from libjade specified in copy_from_libjade.yml, apply +# patches and generate select templates +# Can be run independant of 'copy' mode. +# When adding an algorithm to copy_from_libjade.yml, the boolean +# 'libjade_implementation' and list of implementation 'libjade_implementations' +# must updated for the relevant algorithm in copy_from_upstream.yml def copy_from_libjade(): for t in ["kem", "sig"]: with open(os.path.join(os.environ['LIBOQS_DIR'], 'tests', 'KATs', t, 'kats.json'), 'r') as fp: diff --git a/scripts/copy_from_upstream/update_upstream_alg_docs.py b/scripts/copy_from_upstream/update_upstream_alg_docs.py index 55163fc9e..ce98cfe5d 100755 --- a/scripts/copy_from_upstream/update_upstream_alg_docs.py +++ b/scripts/copy_from_upstream/update_upstream_alg_docs.py @@ -217,6 +217,12 @@ def update_upstream_kem_alg_docs(liboqs_root, kems, upstream_info, write_changes store_yaml(oqs_yaml_path, oqs_yaml) +# Merge documentation in liboqs_root/docs/algorithms/kem/kem['name'].yml with +# upstream information from libjade (patched with copy_from_upstream.py): +# Args: +# kems: List of kems in copy_from_libjade.yml +# upstream_info: Hashtable of upstream information (keyed by upstream source) +# incl. entry: 'upstream_root' pointing to local folder containing source code def update_libjade_kem_alg_docs(liboqs_root, kems, upstream_info, write_changes=False): for kem in kems: ui = get_upstream_info(upstream_info, kem['upstream_location']) From 92df906447bea50a684a6c0f6adada1316a6f399 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 9 Apr 2024 17:37:50 +0200 Subject: [PATCH 46/82] Fix copy_from_upstream.py and simply libjade code name scheme Signed-off-by: Pravek Sharma --- docs/algorithms/kem/kyber.md | 8 ++-- docs/algorithms/kem/kyber.yml | 20 ++++----- docs/cbom.json | 26 +++++------ .../copy_from_upstream/copy_from_upstream.py | 8 ++-- src/kem/kyber/kem_kyber_512.c | 44 +++++++++---------- src/kem/kyber/kem_kyber_768.c | 44 +++++++++---------- 6 files changed, 75 insertions(+), 75 deletions(-) diff --git a/docs/algorithms/kem/kyber.md b/docs/algorithms/kem/kyber.md index d31e3bc73..d36e5f53b 100644 --- a/docs/algorithms/kem/kyber.md +++ b/docs/algorithms/kem/kyber.md @@ -30,8 +30,8 @@ | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | -| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | -| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | None | True | True | False | +| [Primary Source](#primary-source) | ref | All | All | None | True | True | False | +| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. @@ -44,8 +44,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**. | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | -| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | -| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | None | True | True | False | +| [Primary Source](#primary-source) | ref | All | All | None | True | True | False | +| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. diff --git a/docs/algorithms/kem/kyber.yml b/docs/algorithms/kem/kyber.yml index d57b254e2..9858055f6 100644 --- a/docs/algorithms/kem/kyber.yml +++ b/docs/algorithms/kem/kyber.yml @@ -79,11 +79,7 @@ parameter-sets: large-stack-usage: false - upstream: libjade upstream-id: ref - supported-platforms: - - architecture: x86_64 - operating_systems: - - Linux - - Darwin + supported-platforms: all no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: true large-stack-usage: false @@ -94,6 +90,10 @@ parameter-sets: operating_systems: - Linux - Darwin + required_flags: + - avx2 + - bmi2 + - popcnt no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: true large-stack-usage: false @@ -144,11 +144,7 @@ parameter-sets: large-stack-usage: false - upstream: libjade upstream-id: ref - supported-platforms: - - architecture: x86_64 - operating_systems: - - Linux - - Darwin + supported-platforms: all no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: true large-stack-usage: false @@ -159,6 +155,10 @@ parameter-sets: operating_systems: - Linux - Darwin + required_flags: + - avx2 + - bmi2 + - popcnt no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: true large-stack-usage: false diff --git a/docs/cbom.json b/docs/cbom.json index 7d97543d7..9c2bc3e9d 100644 --- a/docs/cbom.json +++ b/docs/cbom.json @@ -1,23 +1,23 @@ { "bomFormat": "CBOM", "specVersion": "1.4-cbom-1.0", - "serialNumber": "urn:uuid:9f4195fb-9a9f-4cf5-b2ee-e83a2a3a78a0", + "serialNumber": "urn:uuid:50fe9dad-cdcb-4309-8c2e-67b5953686c5", "version": 1, "metadata": { - "timestamp": "2024-04-09T02:01:13.001332", + "timestamp": "2024-04-09T17:32:27.545689", "component": { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@9df2fd7c44e593bca27e5bfd6a0b4c5207f89042", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@a4d556f71691c00d045bcdac50a2d60bbba2db19", "name": "liboqs", - "version": "9df2fd7c44e593bca27e5bfd6a0b4c5207f89042" + "version": "a4d556f71691c00d045bcdac50a2d60bbba2db19" } }, "components": [ { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@9df2fd7c44e593bca27e5bfd6a0b4c5207f89042", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@a4d556f71691c00d045bcdac50a2d60bbba2db19", "name": "liboqs", - "version": "9df2fd7c44e593bca27e5bfd6a0b4c5207f89042" + "version": "a4d556f71691c00d045bcdac50a2d60bbba2db19" }, { "type": "crypto-asset", @@ -841,7 +841,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber512:x86_64", + "bom-ref": "alg:Kyber512:generic", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -854,7 +854,7 @@ "encapsulate", "decapsulate" ], - "implementationPlatform": "x86_64" + "implementationPlatform": "generic" }, "nistQuantumSecurityLevel": 1 } @@ -941,7 +941,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber768:x86_64", + "bom-ref": "alg:Kyber768:generic", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -954,7 +954,7 @@ "encapsulate", "decapsulate" ], - "implementationPlatform": "x86_64" + "implementationPlatform": "generic" }, "nistQuantumSecurityLevel": 3 } @@ -2248,7 +2248,7 @@ ], "dependencies": [ { - "ref": "pkg:github/open-quantum-safe/liboqs@9df2fd7c44e593bca27e5bfd6a0b4c5207f89042", + "ref": "pkg:github/open-quantum-safe/liboqs@a4d556f71691c00d045bcdac50a2d60bbba2db19", "dependsOn": [ "alg:BIKE-L1:x86_64", "alg:BIKE-L3:x86_64", @@ -2291,12 +2291,12 @@ "alg:Kyber512:generic", "alg:Kyber512:x86_64", "alg:Kyber512:armv8-a", - "alg:Kyber512:x86_64", + "alg:Kyber512:generic", "alg:Kyber512:x86_64", "alg:Kyber768:generic", "alg:Kyber768:x86_64", "alg:Kyber768:armv8-a", - "alg:Kyber768:x86_64", + "alg:Kyber768:generic", "alg:Kyber768:x86_64", "alg:Kyber1024:generic", "alg:Kyber1024:x86_64", diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index d94dcdd3d..5e669a517 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -255,8 +255,8 @@ def load_instructions(file): upstreams[location]['kem_scheme_path'].format_map(scheme))) scheme['metadata']['ind_cca'] = 'true' if ( scheme['metadata']['claimed-security'] == "IND-CCA2") else 'false' - scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'] - scheme['scheme_c'] = scheme['scheme'] + scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'].replace('-', '') + scheme['scheme_c'] = scheme['scheme'].replace('-', '') scheme['default_implementation'] = family['default_implementation'] for impl in scheme['metadata']['implementations']: if 'common_dep' in impl: @@ -354,8 +354,8 @@ def load_instructions(file): scheme['scheme_paths'][arch] = (os.path.join('repos', location, upstreams[location]['sig_scheme_path'].format_map(scheme))) scheme['metadata']['euf_cma'] = 'true' - scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'] - scheme['scheme_c'] = scheme['scheme'] + scheme['pqclean_scheme_c'] = scheme['pqclean_scheme'].replace('-', '') + scheme['scheme_c'] = scheme['scheme'].replace('-', '') scheme['default_implementation'] = family['default_implementation'] for impl in scheme['metadata']['implementations']: if 'common_dep' in impl: diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index 26dadaac3..d25f3d8f7 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -47,28 +47,28 @@ extern int PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(uint8_t *ss, const uint8_t *c #endif #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512) -extern int libjade_kyber512_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); -extern int libjade_kyber512_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); -extern int libjade_kyber512_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +extern int libjade_kyber512_ref_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber512_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber512_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) -extern int libjade_kyber512_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); -extern int libjade_kyber512_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); -extern int libjade_kyber512_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) +extern int libjade_kyber512_avx2_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber512_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber512_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512__avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber512_amd64_avx2_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_avx2_keypair(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) @@ -78,11 +78,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_keypair(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) @@ -113,14 +113,14 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512__avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber512_amd64_avx2_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_avx2_enc(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_enc(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) @@ -130,11 +130,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_enc(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_enc(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_enc(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) @@ -165,14 +165,14 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_amd64_avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512__avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber512_amd64_avx2_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_avx2_dec(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_dec(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) @@ -182,11 +182,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_ return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_dec(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_dec(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index bf69a83d3..f087cce5e 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -47,28 +47,28 @@ extern int PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(uint8_t *ss, const uint8_t *c #endif #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768) -extern int libjade_kyber768_amd64_ref_keypair(uint8_t *pk, uint8_t *sk); -extern int libjade_kyber768_amd64_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); -extern int libjade_kyber768_amd64_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +extern int libjade_kyber768_ref_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber768_ref_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber768_ref_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) -extern int libjade_kyber768_amd64_avx2_keypair(uint8_t *pk, uint8_t *sk); -extern int libjade_kyber768_amd64_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); -extern int libjade_kyber768_amd64_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) +extern int libjade_kyber768_avx2_keypair(uint8_t *pk, uint8_t *sk); +extern int libjade_kyber768_avx2_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); +extern int libjade_kyber768_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); #endif OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768__avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber768_amd64_avx2_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_avx2_keypair(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) @@ -78,11 +78,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_keypair(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_amd64_ref_keypair(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) @@ -113,14 +113,14 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768__avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber768_amd64_avx2_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_avx2_enc(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_enc(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) @@ -130,11 +130,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_enc(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_enc(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_amd64_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_enc(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) @@ -165,14 +165,14 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_amd64_avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768__avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber768_amd64_avx2_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_avx2_dec(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_dec(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) @@ -182,11 +182,11 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_ return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(public_key, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_dec(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_amd64_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_dec(public_key, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) From ff7898542cb486ba41347e4a1c3c5572c2b39580 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 9 Apr 2024 19:44:33 +0200 Subject: [PATCH 47/82] Update alg docs and CBOM Signed-off-by: Pravek Sharma --- docs/algorithms/kem/kyber.md | 4 ++-- docs/algorithms/kem/kyber.yml | 12 ++++++++++-- docs/cbom.json | 26 +++++++++++++------------- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/docs/algorithms/kem/kyber.md b/docs/algorithms/kem/kyber.md index d36e5f53b..ef38e3a49 100644 --- a/docs/algorithms/kem/kyber.md +++ b/docs/algorithms/kem/kyber.md @@ -30,7 +30,7 @@ | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | -| [Primary Source](#primary-source) | ref | All | All | None | True | True | False | +| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | | [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. @@ -44,7 +44,7 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**. | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | -| [Primary Source](#primary-source) | ref | All | All | None | True | True | False | +| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | | [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. diff --git a/docs/algorithms/kem/kyber.yml b/docs/algorithms/kem/kyber.yml index 9858055f6..29a4aedd6 100644 --- a/docs/algorithms/kem/kyber.yml +++ b/docs/algorithms/kem/kyber.yml @@ -79,7 +79,11 @@ parameter-sets: large-stack-usage: false - upstream: libjade upstream-id: ref - supported-platforms: all + supported-platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: true large-stack-usage: false @@ -144,7 +148,11 @@ parameter-sets: large-stack-usage: false - upstream: libjade upstream-id: ref - supported-platforms: all + supported-platforms: + - architecture: x86_64 + operating_systems: + - Linux + - Darwin no-secret-dependent-branching-claimed: true no-secret-dependent-branching-checked-by-valgrind: true large-stack-usage: false diff --git a/docs/cbom.json b/docs/cbom.json index 9c2bc3e9d..91053f41d 100644 --- a/docs/cbom.json +++ b/docs/cbom.json @@ -1,23 +1,23 @@ { "bomFormat": "CBOM", "specVersion": "1.4-cbom-1.0", - "serialNumber": "urn:uuid:50fe9dad-cdcb-4309-8c2e-67b5953686c5", + "serialNumber": "urn:uuid:42e1aede-649a-4dec-b7d4-e78f71a822c8", "version": 1, "metadata": { - "timestamp": "2024-04-09T17:32:27.545689", + "timestamp": "2024-04-09T19:42:40.158663", "component": { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@a4d556f71691c00d045bcdac50a2d60bbba2db19", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@b7ef00469b3e7d26aafb7390fd73e3b15674ae22", "name": "liboqs", - "version": "a4d556f71691c00d045bcdac50a2d60bbba2db19" + "version": "b7ef00469b3e7d26aafb7390fd73e3b15674ae22" } }, "components": [ { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@a4d556f71691c00d045bcdac50a2d60bbba2db19", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@b7ef00469b3e7d26aafb7390fd73e3b15674ae22", "name": "liboqs", - "version": "a4d556f71691c00d045bcdac50a2d60bbba2db19" + "version": "b7ef00469b3e7d26aafb7390fd73e3b15674ae22" }, { "type": "crypto-asset", @@ -841,7 +841,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber512:generic", + "bom-ref": "alg:Kyber512:x86_64", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -854,7 +854,7 @@ "encapsulate", "decapsulate" ], - "implementationPlatform": "generic" + "implementationPlatform": "x86_64" }, "nistQuantumSecurityLevel": 1 } @@ -941,7 +941,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber768:generic", + "bom-ref": "alg:Kyber768:x86_64", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -954,7 +954,7 @@ "encapsulate", "decapsulate" ], - "implementationPlatform": "generic" + "implementationPlatform": "x86_64" }, "nistQuantumSecurityLevel": 3 } @@ -2248,7 +2248,7 @@ ], "dependencies": [ { - "ref": "pkg:github/open-quantum-safe/liboqs@a4d556f71691c00d045bcdac50a2d60bbba2db19", + "ref": "pkg:github/open-quantum-safe/liboqs@b7ef00469b3e7d26aafb7390fd73e3b15674ae22", "dependsOn": [ "alg:BIKE-L1:x86_64", "alg:BIKE-L3:x86_64", @@ -2291,12 +2291,12 @@ "alg:Kyber512:generic", "alg:Kyber512:x86_64", "alg:Kyber512:armv8-a", - "alg:Kyber512:generic", + "alg:Kyber512:x86_64", "alg:Kyber512:x86_64", "alg:Kyber768:generic", "alg:Kyber768:x86_64", "alg:Kyber768:armv8-a", - "alg:Kyber768:generic", + "alg:Kyber768:x86_64", "alg:Kyber768:x86_64", "alg:Kyber1024:generic", "alg:Kyber1024:x86_64", From e7410272f9362c85e01634f797ab1def98091152 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 9 Apr 2024 20:14:13 +0200 Subject: [PATCH 48/82] Correct alg doc generation Signed-off-by: Pravek Sharma --- .../update_upstream_alg_docs.py | 89 +++++++++---------- 1 file changed, 44 insertions(+), 45 deletions(-) diff --git a/scripts/copy_from_upstream/update_upstream_alg_docs.py b/scripts/copy_from_upstream/update_upstream_alg_docs.py index ce98cfe5d..92121fe8f 100755 --- a/scripts/copy_from_upstream/update_upstream_alg_docs.py +++ b/scripts/copy_from_upstream/update_upstream_alg_docs.py @@ -171,45 +171,46 @@ def update_upstream_kem_alg_docs(liboqs_root, kems, upstream_info, write_changes _upstream_yaml = upstream_yaml for impl_index, impl in enumerate(oqs_scheme_yaml['implementations']): - upstream_yaml = _upstream_yaml - if impl['upstream'] in ouis: - upstream_name = impl['upstream'] - meta_yaml_path_template = ouis[upstream_name]['kem_meta_path'] - opt_upstream_root = ouis[upstream_name]['upstream_root'] - upstream_meta_path = os.path.join(opt_upstream_root, meta_yaml_path_template.format_map(scheme)) - upstream_yaml = load_yaml(upstream_meta_path) - - for upstream_impl in upstream_yaml['implementations']: - if impl['upstream-id'] == upstream_impl['name']: - break - # Logic to add Common_META.yml components - - implementations = upstream_yaml['implementations'] - uir = get_upstream_info(implementations, impl['upstream-id']) - if (uir != None) and ('common_dep' in uir): - upstream_common_path = upstream_meta_path.replace(scheme['pretty_name_full'], "Common") - upstream_common_yaml = load_yaml(upstream_common_path) - for c in uir['common_dep'].split(' '): - ur = get_upstream_info(upstream_common_yaml['commons'], c) - if (ur != None) and ('supported_platforms' in ur): - if 'required_flags' in ur['supported_platforms'][0] and not ur['supported_platforms'][0]['required_flags']: - del ur['supported_platforms'][0]['required_flags'] - if 'required_flags' in ur['supported_platforms'][0].keys(): - upstream_impl['supported_platforms'][0]['required_flags']=list(set(upstream_impl['supported_platforms'][0]['required_flags']+ur['supported_platforms'][0]['required_flags'])) - upstream_impl['supported_platforms'][0]['required_flags'].sort() - if 'supported_platforms' in upstream_impl: - for i in range(len(upstream_impl['supported_platforms'])): - if upstream_impl['supported_platforms'][i]['architecture'] == 'arm_8': - upstream_impl['supported_platforms'][i]['architecture'] = 'ARM64_V8' - if 'asimd' in upstream_impl['supported_platforms'][i]['required_flags']: - upstream_impl['supported_platforms'][i]['required_flags'].remove('asimd') - if not upstream_impl['supported_platforms'][i]['required_flags']: - del upstream_impl['supported_platforms'][i]['required_flags'] + if impl['upstream'] != 'libjade': + upstream_yaml = _upstream_yaml + if impl['upstream'] in ouis: + upstream_name = impl['upstream'] + meta_yaml_path_template = ouis[upstream_name]['kem_meta_path'] + opt_upstream_root = ouis[upstream_name]['upstream_root'] + upstream_meta_path = os.path.join(opt_upstream_root, meta_yaml_path_template.format_map(scheme)) + upstream_yaml = load_yaml(upstream_meta_path) + + for upstream_impl in upstream_yaml['implementations']: + if impl['upstream-id'] == upstream_impl['name']: + break + # Logic to add Common_META.yml components + + implementations = upstream_yaml['implementations'] + uir = get_upstream_info(implementations, impl['upstream-id']) + if (uir != None) and ('common_dep' in uir): + upstream_common_path = upstream_meta_path.replace(scheme['pretty_name_full'], "Common") + upstream_common_yaml = load_yaml(upstream_common_path) + for c in uir['common_dep'].split(' '): + ur = get_upstream_info(upstream_common_yaml['commons'], c) + if (ur != None) and ('supported_platforms' in ur): + if 'required_flags' in ur['supported_platforms'][0] and not ur['supported_platforms'][0]['required_flags']: + del ur['supported_platforms'][0]['required_flags'] + if 'required_flags' in ur['supported_platforms'][0].keys(): + upstream_impl['supported_platforms'][0]['required_flags']=list(set(upstream_impl['supported_platforms'][0]['required_flags']+ur['supported_platforms'][0]['required_flags'])) + upstream_impl['supported_platforms'][0]['required_flags'].sort() + if 'supported_platforms' in upstream_impl: + for i in range(len(upstream_impl['supported_platforms'])): + if upstream_impl['supported_platforms'][i]['architecture'] == 'arm_8': + upstream_impl['supported_platforms'][i]['architecture'] = 'ARM64_V8' + if 'asimd' in upstream_impl['supported_platforms'][i]['required_flags']: + upstream_impl['supported_platforms'][i]['required_flags'].remove('asimd') + if not upstream_impl['supported_platforms'][i]['required_flags']: + del upstream_impl['supported_platforms'][i]['required_flags'] - impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], upstream_impl['supported_platforms'], "supported-platforms") - else: - impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], "all", "supported-platforms") - oqs_scheme_yaml['implementations'][impl_index] = impl + impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], upstream_impl['supported_platforms'], "supported-platforms") + else: + impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], "all", "supported-platforms") + oqs_scheme_yaml['implementations'][impl_index] = impl oqs_yaml['parameter-sets'][index] = oqs_scheme_yaml @@ -277,14 +278,12 @@ def update_libjade_kem_alg_docs(liboqs_root, kems, upstream_info, write_changes= for upstream_impl in upstream_yaml['implementations']: if impl['upstream-id'] == upstream_impl['name']: break - if 'supported_platforms' in upstream_impl: - for i in range(len(upstream_impl['supported_platforms'])): - if not upstream_impl['supported_platforms'][i]['required_flags']: - del upstream_impl['supported_platforms'][i]['required_flags'] - + if 'supported_platforms' in upstream_impl: impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], upstream_impl['supported_platforms'], "supported-platforms") - else: - impl['supported-platforms'] = rhs_if_not_equal(impl['supported-platforms'], "all", "supported-platforms") + for i in range(len(impl['supported-platforms'])): + if not impl['supported-platforms'][i]['required_flags']: + del impl['supported-platforms'][i]['required_flags'] + oqs_scheme_yaml['implementations'][impl_index] = impl oqs_yaml['parameter-sets'][index] = oqs_scheme_yaml From 32de1d2cd4d1d9386e21ddc084c7a1c238d48467 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 9 Apr 2024 21:47:52 +0200 Subject: [PATCH 49/82] Generate CBOM with unique bom-ref Signed-off-by: Pravek Sharma --- docs/cbom.json | 30 +++++++++++++++--------------- scripts/update_cbom.py | 8 +++++++- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/docs/cbom.json b/docs/cbom.json index 91053f41d..f79a80462 100644 --- a/docs/cbom.json +++ b/docs/cbom.json @@ -1,23 +1,23 @@ { "bomFormat": "CBOM", "specVersion": "1.4-cbom-1.0", - "serialNumber": "urn:uuid:42e1aede-649a-4dec-b7d4-e78f71a822c8", + "serialNumber": "urn:uuid:58a975ac-ea6b-4ce9-a5ae-80d35105db30", "version": 1, "metadata": { - "timestamp": "2024-04-09T19:42:40.158663", + "timestamp": "2024-04-09T21:46:17.101849", "component": { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@b7ef00469b3e7d26aafb7390fd73e3b15674ae22", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@2fd65d9ec99a2608149713e5fcaeb9b6402e5872", "name": "liboqs", - "version": "b7ef00469b3e7d26aafb7390fd73e3b15674ae22" + "version": "2fd65d9ec99a2608149713e5fcaeb9b6402e5872" } }, "components": [ { "type": "library", - "bom-ref": "pkg:github/open-quantum-safe/liboqs@b7ef00469b3e7d26aafb7390fd73e3b15674ae22", + "bom-ref": "pkg:github/open-quantum-safe/liboqs@2fd65d9ec99a2608149713e5fcaeb9b6402e5872", "name": "liboqs", - "version": "b7ef00469b3e7d26aafb7390fd73e3b15674ae22" + "version": "2fd65d9ec99a2608149713e5fcaeb9b6402e5872" }, { "type": "crypto-asset", @@ -841,7 +841,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber512:x86_64", + "bom-ref": "alg:Kyber512:jasmin:x86_64", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -861,7 +861,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber512:x86_64", + "bom-ref": "alg:Kyber512:jasmin:avx2:x86_64", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -941,7 +941,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber768:x86_64", + "bom-ref": "alg:Kyber768:jasmin:x86_64", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -961,7 +961,7 @@ }, { "type": "crypto-asset", - "bom-ref": "alg:Kyber768:x86_64", + "bom-ref": "alg:Kyber768:jasmin:avx2:x86_64", "name": "Kyber", "cryptoProperties": { "assetType": "algorithm", @@ -2248,7 +2248,7 @@ ], "dependencies": [ { - "ref": "pkg:github/open-quantum-safe/liboqs@b7ef00469b3e7d26aafb7390fd73e3b15674ae22", + "ref": "pkg:github/open-quantum-safe/liboqs@2fd65d9ec99a2608149713e5fcaeb9b6402e5872", "dependsOn": [ "alg:BIKE-L1:x86_64", "alg:BIKE-L3:x86_64", @@ -2291,13 +2291,13 @@ "alg:Kyber512:generic", "alg:Kyber512:x86_64", "alg:Kyber512:armv8-a", - "alg:Kyber512:x86_64", - "alg:Kyber512:x86_64", + "alg:Kyber512:jasmin:x86_64", + "alg:Kyber512:jasmin:avx2:x86_64", "alg:Kyber768:generic", "alg:Kyber768:x86_64", "alg:Kyber768:armv8-a", - "alg:Kyber768:x86_64", - "alg:Kyber768:x86_64", + "alg:Kyber768:jasmin:x86_64", + "alg:Kyber768:jasmin:avx2:x86_64", "alg:Kyber1024:generic", "alg:Kyber1024:x86_64", "alg:Kyber1024:armv8-a", diff --git a/scripts/update_cbom.py b/scripts/update_cbom.py index e3375d7f9..c4fd197ae 100644 --- a/scripts/update_cbom.py +++ b/scripts/update_cbom.py @@ -118,7 +118,13 @@ def add_cbom_component(out, kem_yaml, parameter_set): if plat['architecture'] in dic.keys(): algorithmProperties['implementationPlatform'] = dic[plat['architecture']] component_cpy = copy.deepcopy(component) - component_cpy['bom-ref'] += ":" + algorithmProperties['implementationPlatform'] + if 'upstream' in impl and impl['upstream'] == 'libjade': + tag = ":jasmin:" + if any('required_flags' in i for i in impl['supported-platforms']): + tag += impl['upstream-id'] + ':' + component_cpy['bom-ref'] += tag + algorithmProperties['implementationPlatform'] + else: + component_cpy['bom-ref'] += ":" + algorithmProperties['implementationPlatform'] cbom_components.append(component_cpy) bom_algs_bomrefs.append(component_cpy['bom-ref']) if dep: From 4213a660bf471df4187a1aa258768cf4c533c331 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 10 Apr 2024 17:58:46 +0200 Subject: [PATCH 50/82] Cleanup unix.yml Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index 0f52aa3af..3d073f99b 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -20,15 +20,15 @@ jobs: upstreamcheck: name: Check upstream code is properly integrated - container: praveksharma/ci-ubuntu-focal-x86_64:latest + container: openquantumsafe/ci-ubuntu-focal-x86_64:latest runs-on: ubuntu-latest steps: - name: Setup nix uses: cachix/install-nix-action@v26 - - run: nix-channel --add https://nixos.org/channels/nixos-23.11 nixpkgs - - run: nix-channel --update - name: Setup jasmin-compiler - run: nix-env -iA nixpkgs.jasmin-compiler + run: | + nix-channel --add https://nixos.org/channels/nixos-23.11 nixpkgs && \ + nix-channel --update && nix-env -iA nixpkgs.jasmin-compiler - name: Checkout code uses: actions/checkout@v4 - name: Verify copy_from_upstream state after "copy" From 2819622b2dea2ed9e0025d0348229b6c90730987 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 19 Apr 2024 21:18:26 +0200 Subject: [PATCH 51/82] fix patches to include api.c; fix kem templates Signed-off-by: Pravek Sharma --- .../patches/libjade-kyber-api.patch | 108 ++++++++++++++++++ .../src/kem/family/CMakeLists.txt.libjade | 24 ++-- .../src/kem/family/kem_scheme.c | 28 ++--- .../add_alg_enable_defines.libjade | 2 + src/kem/kyber/CMakeLists.txt | 36 +++--- src/kem/kyber/kem_kyber_512.c | 32 +++--- src/kem/kyber/kem_kyber_768.c | 32 +++--- src/kem/kyber/libjade_kyber512_avx2/api.c | 20 ++++ src/kem/kyber/libjade_kyber512_ref/api.c | 20 ++++ src/kem/kyber/libjade_kyber768_avx2/api.c | 20 ++++ src/kem/kyber/libjade_kyber768_ref/api.c | 20 ++++ src/oqsconfig.h.cmake | 2 + 12 files changed, 268 insertions(+), 76 deletions(-) create mode 100644 src/kem/kyber/libjade_kyber512_avx2/api.c create mode 100644 src/kem/kyber/libjade_kyber512_ref/api.c create mode 100644 src/kem/kyber/libjade_kyber768_avx2/api.c create mode 100644 src/kem/kyber/libjade_kyber768_ref/api.c diff --git a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch index f78241f28..f2303b5a4 100644 --- a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch +++ b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch @@ -1,3 +1,30 @@ +diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c +new file mode 100644 +index 0000000..d71f2df +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_shims.h" ++#include "api.h" ++ ++int libjade_kyber512_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber512_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES); ++ return jade_kem_kyber_kyber512_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber512_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h index 5148fd5..419112e 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h @@ -48,6 +75,33 @@ index 5148fd5..419112e 100644 +); + #endif +diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/api.c b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c +new file mode 100644 +index 0000000..851a282 +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_shims.h" ++#include "api.h" ++ ++int libjade_kyber512_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber512_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber512_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES); ++ return jade_kem_kyber_kyber512_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber512_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h index 38127cf..fcce52b 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h @@ -99,6 +153,33 @@ index 38127cf..fcce52b 100644 +); + #endif +diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c +new file mode 100644 +index 0000000..b90330b +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_shims.h" ++#include "api.h" ++ ++int libjade_kyber768_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber768_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES); ++ return jade_kem_kyber_kyber768_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber768_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h index d3b3500..ac36577 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h @@ -149,6 +230,33 @@ index d3b3500..ac36577 100644 +); + #endif +diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/api.c b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c +new file mode 100644 +index 0000000..5d178f5 +--- /dev/null ++++ b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c +@@ -0,0 +1,20 @@ ++#include ++#include "libjade_shims.h" ++#include "api.h" ++ ++int libjade_kyber768_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { ++ uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES]; ++ OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); ++ OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); ++ return jade_kem_kyber_kyber768_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); ++} ++ ++int libjade_kyber768_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { ++ uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES]; ++ OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES); ++ return jade_kem_kyber_kyber768_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); ++} ++ ++int libjade_kyber768_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { ++ return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); ++} +\ No newline at end of file diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h index e23e1bf..0c453e0 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index 64bb4c14a..c90b2431e 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -4,14 +4,14 @@ if({% for used_by in common_deps_usedby[common_dep['name']] -%}OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ used_by['scheme_c'] }}{%- if used_by['impl_name'] != default_implementation %}_{{ used_by['impl_name'] }}{% endif -%}{%- if not loop.last %} OR {% endif -%}{%- endfor -%}) add_library(jasmin_{{ family }}_{{ common_dep['name'] }} OBJECT {% for source_file in common_dep['sources_addl']|sort -%}{{ upstream_location }}_{{ common_dep['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) - target_include_directories({{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) + target_include_directories(jasmin_{{ family }}_{{ common_dep['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ upstream_location }}_{{ common_dep['name'] }}) {%- if common_dep['required_flags'] %} - target_compile_options({{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endif -%}{%- endfor -%}) + target_compile_options(jasmin_{{ family }}_{{ common_dep['name'] }} PRIVATE {%- for flag in common_dep['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {%- elif flag == 'sse4_1' -%} sse4.1 {%- elif flag == 'pclmulqdq' -%} pclmul {%- else -%}{{ flag }}{%- endif -%}{%- endif -%}{%- endfor -%}) {%- endif %} {%- if common_dep['compile_opts'] %} - target_compile_options({{ family }}_{{ common_dep['name'] }} PUBLIC {{ common_dep['compile_opts'] }}) + target_compile_options(jasmin_{{ family }}_{{ common_dep['name'] }} PUBLIC {{ common_dep['compile_opts'] }}) {%- endif %} - set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() {%- endfor %} @@ -24,7 +24,7 @@ endif() if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) add_library(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) {%- endif -%} {%- else %} @@ -32,29 +32,29 @@ if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_sch if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}_{{ impl['name'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}{%- endif %}) add_library(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- endif %} - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) - target_include_directories({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_include_directories(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}) + target_include_directories(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) {%- if impl['name'] != scheme['default_implementation'] and impl['required_flags'] -%} {%- set opts %}{% for flag in impl['required_flags'] %}{%- if flag != 'arm_neon' %} -m{%- if flag == 'bmi1' -%} bmi {% elif flag == 'sse4_1' -%} sse4.1 {% elif flag == 'pclmulqdq' -%} pclmul {% else -%}{{ flag }} {% endif %}{% endif -%}{% endfor %}{% endset %} {%- if opts|length > 0 %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {{ opts }}) + target_compile_options(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE {{ opts }}) {%- endif -%} {%- endif %} {%- if impl['compile_opts'] %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) + target_compile_options(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) {%- endif %} {%- if family == 'classic_mceliece' and impl['name'] == 'avx2' %} - target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-language-extension-token -O1) + target_compile_options(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-language-extension-token -O1) {%- endif %} {%- if family == 'hqc' and impl['name'] == 'avx2' %} target_compile_options({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE -Wno-missing-braces) {%- endif %} {%- if impl['upstream']['name'].endswith('pqclean') %} if (CMAKE_SYSTEM_NAME STREQUAL "Darwin") - target_compile_definitions({{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE old_gas_syntax) + target_compile_definitions(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PRIVATE old_gas_syntax) endif() {%- endif %} - set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) + set(_{{ family|upper }}_OBJS ${_{{ family|upper }}_OBJS} $) endif() {%- endfor -%} {%- endfor %} diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index d7eba4da9..e82e32890 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -134,9 +134,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -208,9 +208,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -218,14 +218,14 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c #endif /* OQS_DIST_BUILD */ {%- endif -%} {%- if impl['name'] in scheme['libjade_implementations'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_enc(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_enc(ciphertext, shared_secret, public_key); {%- else %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_enc(ciphertext, shared_secret, public_key); {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ {%- endif -%} @@ -233,7 +233,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_enc(ciphertext, shared_secret, public_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} @@ -282,9 +282,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -292,14 +292,14 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s #endif /* OQS_DIST_BUILD */ {%- endif -%} {%- if impl['name'] in scheme['libjade_implementations'] %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_dec(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_dec(shared_secret, ciphertext, secret_key); {%- else %} - {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(public_key, secret_key); + {% if 'required_flags' in impl and impl['required_flags'] %} {% endif -%}return (OQS_STATUS) PQCLEAN_{{ scheme['pqclean_scheme_c']|upper }}_{{ impl['name']|upper }}_crypto_kem_dec(shared_secret, ciphertext, secret_key); {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ {%- endif -%} @@ -307,7 +307,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #else {%- endif %} - return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_{{ scheme['pqclean_scheme_c'] }}_ref_dec(shared_secret, ciphertext, secret_key); {%- if scheme['metadata']['implementations']|rejectattr('name', 'equalto', scheme['default_implementation'])|list %} #endif {%- endif %} diff --git a/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade index 1cb476e31..cf99b16f2 100644 --- a/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade +++ b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade @@ -1,5 +1,7 @@ {% for family in instructions['kems'] %} +#cmakedefine OQS_LIBJADE_BUILD @OQS_LIBJADE_BUILD_BIN@ + #cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} @OQS_LIBJADE_BUILD_BIN@ {%- for scheme in family['schemes'] %} #cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} @OQS_LIBJADE_BUILD_BIN@ diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 77a70b995..4aabeeddb 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -92,33 +92,33 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START if(OQS_ENABLE_LIBJADE_KEM_kyber_512) - add_library(jasmin_kyber_512_ref OBJECT kem_kyber_512.c libjade_kyber512_ref/kem.s) - target_include_directories(kyber_512_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_ref) - target_include_directories(kyber_512_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - set(_KYBER_OBJS ${_KYBER_OBJS} $) + add_library(jasmin_kyber_512_ref OBJECT kem_kyber_512.c libjade_kyber512_ref/api.c libjade_kyber512_ref/kem.s) + target_include_directories(jasmin_kyber_512_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_ref) + target_include_directories(jasmin_kyber_512_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) - add_library(jasmin_kyber_512_avx2 OBJECT libjade_kyber512_avx2/kem.s) - target_include_directories(kyber_512_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_avx2) - target_include_directories(kyber_512_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - target_compile_options(kyber_512_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) - set(_KYBER_OBJS ${_KYBER_OBJS} $) + add_library(jasmin_kyber_512_avx2 OBJECT libjade_kyber512_avx2/api.c libjade_kyber512_avx2/kem.s) + target_include_directories(jasmin_kyber_512_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_avx2) + target_include_directories(jasmin_kyber_512_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_compile_options(jasmin_kyber_512_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768) - add_library(jasmin_kyber_768_ref OBJECT kem_kyber_768.c libjade_kyber768_ref/kem.s) - target_include_directories(kyber_768_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_ref) - target_include_directories(kyber_768_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - set(_KYBER_OBJS ${_KYBER_OBJS} $) + add_library(jasmin_kyber_768_ref OBJECT kem_kyber_768.c libjade_kyber768_ref/api.c libjade_kyber768_ref/kem.s) + target_include_directories(jasmin_kyber_768_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_ref) + target_include_directories(jasmin_kyber_768_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) - add_library(jasmin_kyber_768_avx2 OBJECT libjade_kyber768_avx2/kem.s) - target_include_directories(kyber_768_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_avx2) - target_include_directories(kyber_768_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) - target_compile_options(kyber_768_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) - set(_KYBER_OBJS ${_KYBER_OBJS} $) + add_library(jasmin_kyber_768_avx2 OBJECT libjade_kyber768_avx2/api.c libjade_kyber768_avx2/kem.s) + target_include_directories(jasmin_kyber_768_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_avx2) + target_include_directories(jasmin_kyber_768_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) + target_compile_options(jasmin_kyber_768_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) + set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_END set(KYBER_OBJS ${_KYBER_OBJS} PARENT_SCOPE) diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index d25f3d8f7..589e7634c 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -61,7 +61,7 @@ extern int libjade_kyber512_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8 OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512__avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ @@ -71,7 +71,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_512aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ @@ -113,28 +113,28 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512__avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber512_avx2_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_avx2_enc(ciphertext, shared_secret, public_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_512aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_enc(public_key, secret_key); + return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_enc(ciphertext, shared_secret, public_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) @@ -165,28 +165,28 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512__avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber512_avx2_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_avx2_dec(shared_secret, ciphertext, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_512aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(public_key, secret_key); + return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(shared_secret, ciphertext, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber512_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber512_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index f087cce5e..5801f34a6 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -61,7 +61,7 @@ extern int libjade_kyber768_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8 OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768__avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ @@ -71,7 +71,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_768aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ @@ -113,28 +113,28 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768__avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber768_avx2_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_avx2_enc(ciphertext, shared_secret, public_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_768aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_enc(public_key, secret_key); + return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_enc(ciphertext, shared_secret, public_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_ref_enc(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) @@ -165,28 +165,28 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { #if OQS_LIBJADE_BUILD -#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768__avx2) +#if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) libjade_kyber768_avx2_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_avx2_dec(shared_secret, ciphertext, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_768aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(public_key, secret_key); + return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(shared_secret, ciphertext, secret_key); #if defined(OQS_DIST_BUILD) } else { - return (OQS_STATUS) libjade_kyber768_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ #else - return (OQS_STATUS) libjade_kyber768_ref_dec(public_key, secret_key); + return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); #endif #else /*OQS_LIBJADE_BUILD*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) diff --git a/src/kem/kyber/libjade_kyber512_avx2/api.c b/src/kem/kyber/libjade_kyber512_avx2/api.c new file mode 100644 index 000000000..37deb5cc3 --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_avx2/api.c @@ -0,0 +1,20 @@ +#include +// #include +#include "api.h" + +int libjade_kyber512_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_avx2_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber512_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber512_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_avx2_ENCCOINBYTES); + return jade_kem_kyber_kyber512_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber512_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber512_ref/api.c b/src/kem/kyber/libjade_kyber512_ref/api.c new file mode 100644 index 000000000..1bc6bc15e --- /dev/null +++ b/src/kem/kyber/libjade_kyber512_ref/api.c @@ -0,0 +1,20 @@ +#include +// #include +#include "api.h" + +int libjade_kyber512_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber512_amd64_ref_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber512_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber512_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber512_amd64_ref_ENCCOINBYTES); + return jade_kem_kyber_kyber512_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber512_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_avx2/api.c b/src/kem/kyber/libjade_kyber768_avx2/api.c new file mode 100644 index 000000000..20506015a --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_avx2/api.c @@ -0,0 +1,20 @@ +#include +// #include +#include "api.h" + +int libjade_kyber768_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_avx2_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber768_amd64_avx2_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber768_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_avx2_ENCCOINBYTES); + return jade_kem_kyber_kyber768_amd64_avx2_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber768_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/kem/kyber/libjade_kyber768_ref/api.c b/src/kem/kyber/libjade_kyber768_ref/api.c new file mode 100644 index 000000000..4870ef89a --- /dev/null +++ b/src/kem/kyber/libjade_kyber768_ref/api.c @@ -0,0 +1,20 @@ +#include +// #include +#include "api.h" + +int libjade_kyber768_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { + uint8_t keypair_coins[JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES]; + OQS_randombytes(keypair_coins, JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); + OQS_randombytes((uint8_t *)(keypair_coins + (JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2)), JADE_KEM_kyber_kyber768_amd64_ref_KEYPAIRCOINBYTES/2); + return jade_kem_kyber_kyber768_amd64_ref_keypair_derand(public_key, secret_key, keypair_coins); +} + +int libjade_kyber768_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { + uint8_t enc_coins[JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES]; + OQS_randombytes(enc_coins, JADE_KEM_kyber_kyber768_amd64_ref_ENCCOINBYTES); + return jade_kem_kyber_kyber768_amd64_ref_enc_derand(ciphertext, shared_secret, public_key, enc_coins); +} + +int libjade_kyber768_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} \ No newline at end of file diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index 141ac8f93..0ed3a2741 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -193,6 +193,8 @@ ///// OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ALG_ENABLE_DEFINES_START +#cmakedefine OQS_LIBJADE_BUILD @OQS_LIBJADE_BUILD_BIN@ + #cmakedefine OQS_ENABLE_LIBJADE_KEM_KYBER @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512 @OQS_LIBJADE_BUILD_BIN@ #cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2 @OQS_LIBJADE_BUILD_BIN@ From 7f4604753aa097e3bc0837d7f8320fa40e6bac29 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 19 Apr 2024 22:15:50 +0200 Subject: [PATCH 52/82] fix kyber patch Signed-off-by: Pravek Sharma --- .../patches/libjade-kyber-api.patch | 20 ++++++++----------- src/kem/kyber/libjade_kyber512_avx2/api.c | 1 - src/kem/kyber/libjade_kyber512_ref/api.c | 1 - src/kem/kyber/libjade_kyber768_avx2/api.c | 1 - src/kem/kyber/libjade_kyber768_ref/api.c | 1 - 5 files changed, 8 insertions(+), 16 deletions(-) diff --git a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch index f2303b5a4..1797a08dc 100644 --- a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch +++ b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch @@ -1,11 +1,10 @@ diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c new file mode 100644 -index 0000000..d71f2df +index 0000000..028d5ef --- /dev/null +++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c -@@ -0,0 +1,20 @@ +@@ -0,0 +1,19 @@ +#include -+#include "libjade_shims.h" +#include "api.h" + +int libjade_kyber512_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { @@ -77,12 +76,11 @@ index 5148fd5..419112e 100644 #endif diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/api.c b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c new file mode 100644 -index 0000000..851a282 +index 0000000..97a698d --- /dev/null +++ b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c -@@ -0,0 +1,20 @@ +@@ -0,0 +1,19 @@ +#include -+#include "libjade_shims.h" +#include "api.h" + +int libjade_kyber512_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { @@ -155,12 +153,11 @@ index 38127cf..fcce52b 100644 #endif diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c new file mode 100644 -index 0000000..b90330b +index 0000000..130027f --- /dev/null +++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c -@@ -0,0 +1,20 @@ +@@ -0,0 +1,19 @@ +#include -+#include "libjade_shims.h" +#include "api.h" + +int libjade_kyber768_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { @@ -232,12 +229,11 @@ index d3b3500..ac36577 100644 #endif diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/api.c b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c new file mode 100644 -index 0000000..5d178f5 +index 0000000..c2473e8 --- /dev/null +++ b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c -@@ -0,0 +1,20 @@ +@@ -0,0 +1,19 @@ +#include -+#include "libjade_shims.h" +#include "api.h" + +int libjade_kyber768_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { diff --git a/src/kem/kyber/libjade_kyber512_avx2/api.c b/src/kem/kyber/libjade_kyber512_avx2/api.c index 37deb5cc3..028d5efb8 100644 --- a/src/kem/kyber/libjade_kyber512_avx2/api.c +++ b/src/kem/kyber/libjade_kyber512_avx2/api.c @@ -1,5 +1,4 @@ #include -// #include #include "api.h" int libjade_kyber512_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { diff --git a/src/kem/kyber/libjade_kyber512_ref/api.c b/src/kem/kyber/libjade_kyber512_ref/api.c index 1bc6bc15e..97a698d3e 100644 --- a/src/kem/kyber/libjade_kyber512_ref/api.c +++ b/src/kem/kyber/libjade_kyber512_ref/api.c @@ -1,5 +1,4 @@ #include -// #include #include "api.h" int libjade_kyber512_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { diff --git a/src/kem/kyber/libjade_kyber768_avx2/api.c b/src/kem/kyber/libjade_kyber768_avx2/api.c index 20506015a..130027fe0 100644 --- a/src/kem/kyber/libjade_kyber768_avx2/api.c +++ b/src/kem/kyber/libjade_kyber768_avx2/api.c @@ -1,5 +1,4 @@ #include -// #include #include "api.h" int libjade_kyber768_avx2_keypair(uint8_t *public_key, uint8_t *secret_key) { diff --git a/src/kem/kyber/libjade_kyber768_ref/api.c b/src/kem/kyber/libjade_kyber768_ref/api.c index 4870ef89a..c2473e83a 100644 --- a/src/kem/kyber/libjade_kyber768_ref/api.c +++ b/src/kem/kyber/libjade_kyber768_ref/api.c @@ -1,5 +1,4 @@ #include -// #include #include "api.h" int libjade_kyber768_ref_keypair(uint8_t *public_key, uint8_t *secret_key) { From ba7bedf32e5ac143ede733bcd71de91e3c9cef8c Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 19 Apr 2024 22:18:49 +0200 Subject: [PATCH 53/82] turn off weekly constant time tests for libjade implementations Signed-off-by: Pravek Sharma --- .github/workflows/weekly.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index 917d0b3bb..cc111878f 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -23,16 +23,6 @@ jobs: CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=haswell -DCMAKE_BUILD_TYPE=Debug -DOQS_ENABLE_TEST_CONSTANT_TIME=ON PYTEST_ARGS: --numprocesses=auto -k 'test_constant_time' SKIP_ALGS: 'SPHINCS\+-SHA(.)*s-simple,SPHINCS\+-SHAKE-(.)*,Classic-McEliece-[^3](.)*' - - name: verified_generic - container: openquantumsafe/ci-ubuntu-focal-x86_64:latest - CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=generic -DCMAKE_BUILD_TYPE=Debug -DOQS_LIBJADE_BUILD=ON -DOQS_ENABLE_TEST_CONSTANT_TIME=ON - PYTEST_ARGS: --numprocesses=auto -k 'test_constant_time' - SKIP_ALGS: 'SPHINCS\+-SHA(.)*s-simple,SPHINCS\+-SHAKE-(.)*,Classic-McEliece-[^3](.)*' - - name: verified_extensions - container: openquantumsafe/ci-ubuntu-focal-x86_64:latest - CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=haswell -DCMAKE_BUILD_TYPE=Debug -DOQS_LIBJADE_BUILD=ON -DOQS_ENABLE_TEST_CONSTANT_TIME=ON - PYTEST_ARGS: --numprocesses=auto -k 'test_constant_time' - SKIP_ALGS: 'SPHINCS\+-SHA(.)*s-simple,SPHINCS\+-SHAKE-(.)*,Classic-McEliece-[^3](.)*' container: image: ${{ matrix.container }} steps: From a53ce69532c1ba9fcc9a0f0567348890ddf2384b Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 19 Apr 2024 22:37:07 +0200 Subject: [PATCH 54/82] update documentation Signed-off-by: Pravek Sharma --- CONFIGURE.md | 8 ++++++++ scripts/copy_from_upstream/copy_from_upstream.py | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CONFIGURE.md b/CONFIGURE.md index 6605c7f3c..d3f161079 100644 --- a/CONFIGURE.md +++ b/CONFIGURE.md @@ -19,6 +19,7 @@ The following options can be passed to CMake before the build file generation pr - [OQS_ENABLE_TEST_CONSTANT_TIME](#OQS_ENABLE_TEST_CONSTANT_TIME) - [OQS_STRICT_WARNINGS](#OQS_STRICT_WARNINGS) - [OQS_EMBEDDED_BUILD](#OQS_EMBEDDED_BUILD) +- [OQS_LIBJADE_BUILD](#OQS_LIBJADE_BUILD) ## BUILD_SHARED_LIBS @@ -175,3 +176,10 @@ At the moment, this is **only** considered for random number generation, as both **Attention**: When this option is enabled, you have to supply a custom callback for obtaining random numbers using the `OQS_randombytes_custom_algorithm()` API before accessing the cryptographic API. Otherwise, all key generation and signing operations will fail. **Default**: `OFF`. + +## OQS_LIBJADE_BUILD +Can be `ON` or `OFF`. When `ON` liboqs is built to use high assurance implementations of cryptographic algorithms from [Libjade](https://github.com/formosa-crypto/libjade). The cryptographic primitives in Libjade are written using [Jasmin](https://github.com/jasmin-lang/jasmin) and built using the Jasmin compiler. The Jasmin compiler is proven (in Coq) to preserve semantic correctness of a program, maintain secret-independence of control flow, and maintain secret independence of locations of memory access through compilation. Additionaly, the Jasmin compiler guarantees thread safety because Jasmin doesn't support global variables (with the caveat that the caller respects the function's contract). + +At the moment, Libjade only provides Kyber512 and Kyber768 KEMs. + +**Default** `OFF`. \ No newline at end of file diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 5e669a517..75b89cb09 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -66,7 +66,7 @@ def shell(command, expect=0): raise Exception("'{}' failed with error {}. Expected {}.".format(" ".join(command), ret, expect)) # Generate template from specified scheme to replace old file in 'copy' mode -# but preserves additions made to file made in priour runs of 'libjade' mode +# but preserves additions made to file made in prior runs of 'libjade' mode def generator(destination_file_path, template_filename, delimiter, family, scheme_desired): template = file_get_contents( os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', template_filename)) From 35e34b0317e4d606d59954eb0d9a42a8e51fe5fc Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 19 Apr 2024 23:27:39 +0200 Subject: [PATCH 55/82] change upstream to stable libjade release Signed-off-by: Pravek Sharma --- docs/algorithms/kem/kyber.yml | 2 +- .../copy_from_upstream/copy_from_libjade.yml | 4 +- src/kem/kyber/libjade_kyber512_avx2/kem.s | 48 ++ src/kem/kyber/libjade_kyber512_ref/kem.s | 650 +++++++++--------- src/kem/kyber/libjade_kyber768_avx2/kem.s | 48 ++ src/kem/kyber/libjade_kyber768_ref/kem.s | 628 ++++++++--------- 6 files changed, 740 insertions(+), 640 deletions(-) diff --git a/docs/algorithms/kem/kyber.yml b/docs/algorithms/kem/kyber.yml index 29a4aedd6..583430cfb 100644 --- a/docs/algorithms/kem/kyber.yml +++ b/docs/algorithms/kem/kyber.yml @@ -28,7 +28,7 @@ optimized-upstreams: and MIT formally-verified-upstreams: libjade: - source: https://github.com/formosa-crypto/lib/commit/a6845a257a0ebbab4fd93c19423a62557c838a10 + source: https://github.com/formosa-crypto/lib/commit/555e23342471bea8544c356bdae230baf064ed56 with copy_from_upstream patches spdx-license-identifier: CC0-1.0 parameter-sets: diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index 3912c6e27..532bc1fee 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -5,8 +5,8 @@ upstreams: - name: libjade git_url: https://github.com/formosa-crypto/libjade - git_branch: main - git_commit: a6845a257a0ebbab4fd93c19423a62557c838a10 + git_branch: release/2023.05-1 + git_commit: 555e23342471bea8544c356bdae230baf064ed56 kem_meta_path: 'src/crypto_kem/{family}/{pqclean_scheme}/META.yml' kem_scheme_path: 'src/crypto_kem/{family}/{pqclean_scheme}' patches: ['libjade-kyber-api.patch', 'libjade-kyber-meta.patch'] diff --git a/src/kem/kyber/libjade_kyber512_avx2/kem.s b/src/kem/kyber/libjade_kyber512_avx2/kem.s index 33a594071..173086f8d 100644 --- a/src/kem/kyber/libjade_kyber512_avx2/kem.s +++ b/src/kem/kyber/libjade_kyber512_avx2/kem.s @@ -12172,29 +12172,53 @@ L_nttunpack$1: L_shake256_absorb4x_33$1: vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, (%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 32(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 64(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 96(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 128(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 160(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 192(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 224(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 256(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 288(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 320(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 352(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 384(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 416(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 448(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 480(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 512(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 544(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 576(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 608(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 640(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 672(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 704(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 736(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 768(%rax) movq (%rdx), %r11 xorq %r11, (%rax) @@ -12248,29 +12272,53 @@ L_shake256_absorb4x_33$1: L_shake128_absorb4x_34$1: vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, (%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 32(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 64(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 96(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 128(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 160(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 192(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 224(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 256(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 288(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 320(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 352(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 384(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 416(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 448(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 480(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 512(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 544(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 576(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 608(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 640(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 672(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 704(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 736(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 768(%rax) movq (%rcx), %r8 xorq %r8, (%rax) diff --git a/src/kem/kyber/libjade_kyber512_ref/kem.s b/src/kem/kyber/libjade_kyber512_ref/kem.s index 61f6b485f..ba95209c6 100644 --- a/src/kem/kyber/libjade_kyber512_ref/kem.s +++ b/src/kem/kyber/libjade_kyber512_ref/kem.s @@ -13318,10 +13318,10 @@ L_shake256_64$1: xorq %rcx, 56(%rax) xorb $31, 64(%rax) xorb $-128, 135(%rax) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_64$9: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 16(%rsp), %rcx movq 8(%rsp), %rdx jmp L_shake256_64$6 @@ -13364,10 +13364,10 @@ L_shake256_64$7: addq $-136, %rcx movq %rdx, 8(%rsp) movq %rcx, 16(%rsp) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_64$8: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 16(%rsp), %rcx movq 8(%rsp), %rdx L_shake256_64$6: @@ -13442,10 +13442,10 @@ L_sha3_512_64$1: xorq %rcx, 56(%rax) xorb $6, 64(%rax) xorb $-128, 71(%rax) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_512_64$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movq (%rax), %rdx movq %rdx, (%rcx) @@ -13503,10 +13503,10 @@ L_sha3_256_32$1: movq %rcx, 24(%rax) xorb $6, 32(%rax) movb $-128, 135(%rax) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_256_32$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movq (%rax), %rdx movq %rdx, (%rcx) @@ -13565,10 +13565,10 @@ L_sha3_256$10: movq %rsi, 16(%rsp) movq %rcx, 24(%rsp) movq %rdx, 32(%rsp) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_256$9: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 16(%rsp), %rsi movq 24(%rsp), %rcx movq 32(%rsp), %rdx @@ -13599,10 +13599,10 @@ L_sha3_256$3: xorb %dil, (%rax,%r9) addq $-1, %rdx xorb $-128, (%rax,%rdx) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_256$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movq (%rax), %rdx movq %rdx, (%rcx) @@ -13615,10 +13615,10 @@ L_sha3_256$2: ret L_shake128_squeezeblock$1: movq %rcx, 8(%rsp) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake128_squeezeblock$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movb (%rax), %dl movb %dl, (%rcx) @@ -14150,10 +14150,10 @@ L_sha3_512_32$1: xorb %cl, 31(%rax) xorb $6, 32(%rax) xorb $-128, 71(%rax) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_512_32$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movb (%rax), %dl movb %dl, (%rcx) @@ -14381,10 +14381,10 @@ L_shake256_192_33$1: xorb %cl, 32(%rax) xorb $31, 33(%rax) xorb $-128, 135(%rax) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_192_33$3: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movb (%rax), %dl movb %dl, (%rcx) @@ -14659,10 +14659,10 @@ L_shake256_192_33$3: movb 135(%rax), %dl movb %dl, 135(%rcx) movq %rcx, 8(%rsp) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_192_33$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movb (%rax), %dl movb %dl, 136(%rcx) @@ -14874,10 +14874,10 @@ L_shake256_128_33$1: xorb %cl, 32(%rax) xorb $31, 33(%rax) xorb $-128, 135(%rax) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_128_33$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rcx movb (%rax), %dl movb %dl, (%rcx) @@ -15139,71 +15139,72 @@ L_shake256_128_33$2: L_keccakf1600_ref1$1: leaq glob_data + 0(%rip), %rcx movq %rcx, 8(%rsp) - leaq 24(%rsp), %rcx - movq $0, %rdx + leaq 32(%rsp), %rcx + movq $0, %r10 jmp L_keccakf1600_ref1$2 L_keccakf1600_ref1$3: - movq 8(%rsp), %rsi - movq (%rsi,%rdx,8), %rsi - movq %rsi, 16(%rsp) - movq (%rax), %r10 - movq 8(%rax), %r9 + movq %r10, 16(%rsp) + movq 8(%rsp), %rdx + movq (%rdx,%r10,8), %rdx + movq %rdx, 24(%rsp) + movq (%rax), %r9 + movq 8(%rax), %r8 movq 16(%rax), %r11 movq 24(%rax), %rbx movq 32(%rax), %rbp - xorq 40(%rax), %r10 - xorq 48(%rax), %r9 + xorq 40(%rax), %r9 + xorq 48(%rax), %r8 xorq 56(%rax), %r11 xorq 64(%rax), %rbx xorq 72(%rax), %rbp - xorq 80(%rax), %r10 - xorq 88(%rax), %r9 + xorq 80(%rax), %r9 + xorq 88(%rax), %r8 xorq 96(%rax), %r11 xorq 104(%rax), %rbx xorq 112(%rax), %rbp - xorq 120(%rax), %r10 - xorq 128(%rax), %r9 + xorq 120(%rax), %r9 + xorq 128(%rax), %r8 xorq 136(%rax), %r11 xorq 144(%rax), %rbx xorq 152(%rax), %rbp - xorq 160(%rax), %r10 - xorq 168(%rax), %r9 + xorq 160(%rax), %r9 + xorq 168(%rax), %r8 xorq 176(%rax), %r11 xorq 184(%rax), %rbx xorq 192(%rax), %rbp - movq %r9, %rsi + movq %r8, %rdx + rolq $1, %rdx + xorq %rbp, %rdx + movq %r11, %rsi rolq $1, %rsi - xorq %rbp, %rsi - movq %r11, %rdi + xorq %r9, %rsi + movq %rbx, %rdi rolq $1, %rdi - xorq %r10, %rdi - movq %rbx, %r8 + xorq %r8, %rdi + movq %rbp, %r8 rolq $1, %r8 - xorq %r9, %r8 - movq %rbp, %r9 + xorq %r11, %r8 rolq $1, %r9 - xorq %r11, %r9 - rolq $1, %r10 - xorq %rbx, %r10 + xorq %rbx, %r9 movq (%rax), %r11 - xorq %rsi, %r11 + xorq %rdx, %r11 movq 48(%rax), %rbx - xorq %rdi, %rbx + xorq %rsi, %rbx rolq $44, %rbx movq 96(%rax), %rbp - xorq %r8, %rbp + xorq %rdi, %rbp rolq $43, %rbp movq 144(%rax), %r12 - xorq %r9, %r12 + xorq %r8, %r12 rolq $21, %r12 movq 192(%rax), %r13 - xorq %r10, %r13 + xorq %r9, %r13 rolq $14, %r13 movq %rbx, %r14 notq %r14 andq %rbp, %r14 xorq %r11, %r14 - xorq 16(%rsp), %r14 + xorq 24(%rsp), %r14 movq %r14, (%rcx) movq %rbp, %r14 notq %r14 @@ -15225,19 +15226,19 @@ L_keccakf1600_ref1$3: xorq %r13, %r11 movq %r11, 32(%rcx) movq 24(%rax), %r11 - xorq %r9, %r11 + xorq %r8, %r11 rolq $28, %r11 movq 72(%rax), %rbx - xorq %r10, %rbx + xorq %r9, %rbx rolq $20, %rbx movq 80(%rax), %rbp - xorq %rsi, %rbp + xorq %rdx, %rbp rolq $3, %rbp movq 128(%rax), %r12 - xorq %rdi, %r12 + xorq %rsi, %r12 rolq $45, %r12 movq 176(%rax), %r13 - xorq %r8, %r13 + xorq %rdi, %r13 rolq $61, %r13 movq %rbx, %r14 notq %r14 @@ -15264,19 +15265,19 @@ L_keccakf1600_ref1$3: xorq %r13, %r11 movq %r11, 72(%rcx) movq 8(%rax), %r11 - xorq %rdi, %r11 + xorq %rsi, %r11 rolq $1, %r11 movq 56(%rax), %rbx - xorq %r8, %rbx + xorq %rdi, %rbx rolq $6, %rbx movq 104(%rax), %rbp - xorq %r9, %rbp + xorq %r8, %rbp rolq $25, %rbp movq 152(%rax), %r12 - xorq %r10, %r12 + xorq %r9, %r12 rolq $8, %r12 movq 160(%rax), %r13 - xorq %rsi, %r13 + xorq %rdx, %r13 rolq $18, %r13 movq %rbx, %r14 notq %r14 @@ -15303,19 +15304,19 @@ L_keccakf1600_ref1$3: xorq %r13, %r11 movq %r11, 112(%rcx) movq 32(%rax), %r11 - xorq %r10, %r11 + xorq %r9, %r11 rolq $27, %r11 movq 40(%rax), %rbx - xorq %rsi, %rbx + xorq %rdx, %rbx rolq $36, %rbx movq 88(%rax), %rbp - xorq %rdi, %rbp + xorq %rsi, %rbp rolq $10, %rbp movq 136(%rax), %r12 - xorq %r8, %r12 + xorq %rdi, %r12 rolq $15, %r12 movq 184(%rax), %r13 - xorq %r9, %r13 + xorq %r8, %r13 rolq $56, %r13 movq %rbx, %r14 notq %r14 @@ -15342,284 +15343,285 @@ L_keccakf1600_ref1$3: xorq %r13, %r11 movq %r11, 152(%rcx) movq 16(%rax), %r11 - xorq %r8, %r11 + xorq %rdi, %r11 rolq $62, %r11 - movq 64(%rax), %r8 + movq 64(%rax), %rdi + xorq %r8, %rdi + rolq $55, %rdi + movq 112(%rax), %r8 xorq %r9, %r8 - rolq $55, %r8 - movq 112(%rax), %r9 - xorq %r10, %r9 - rolq $39, %r9 - movq 120(%rax), %r10 - xorq %rsi, %r10 - rolq $41, %r10 - movq 168(%rax), %rsi + rolq $39, %r8 + movq 120(%rax), %r9 + xorq %rdx, %r9 + rolq $41, %r9 + movq 168(%rax), %rdx + xorq %rsi, %rdx + rolq $2, %rdx + movq %rdi, %rsi + notq %rsi + andq %r8, %rsi + xorq %r11, %rsi + movq %rsi, 160(%rcx) + movq %r8, %rsi + notq %rsi + andq %r9, %rsi xorq %rdi, %rsi - rolq $2, %rsi - movq %r8, %rdi - notq %rdi - andq %r9, %rdi - xorq %r11, %rdi - movq %rdi, 160(%rcx) - movq %r9, %rdi - notq %rdi - andq %r10, %rdi - xorq %r8, %rdi - movq %rdi, 168(%rcx) - movq %r10, %rdi - notq %rdi - andq %rsi, %rdi - xorq %r9, %rdi - movq %rdi, 176(%rcx) - movq %rsi, %rdi - notq %rdi - andq %r11, %rdi - xorq %r10, %rdi - movq %rdi, 184(%rcx) + movq %rsi, 168(%rcx) + movq %r9, %rsi + notq %rsi + andq %rdx, %rsi + xorq %r8, %rsi + movq %rsi, 176(%rcx) + movq %rdx, %rsi + notq %rsi + andq %r11, %rsi + xorq %r9, %rsi + movq %rsi, 184(%rcx) notq %r11 - andq %r8, %r11 - xorq %rsi, %r11 + andq %rdi, %r11 + xorq %rdx, %r11 movq %r11, 192(%rcx) - movq 8(%rsp), %rsi - movq 8(%rsi,%rdx,8), %rsi - movq %rsi, 16(%rsp) - movq (%rcx), %r10 - movq 8(%rcx), %r9 - movq 16(%rcx), %r11 - movq 24(%rcx), %rbx - movq 32(%rcx), %rbp - xorq 40(%rcx), %r10 - xorq 48(%rcx), %r9 - xorq 56(%rcx), %r11 - xorq 64(%rcx), %rbx - xorq 72(%rcx), %rbp - xorq 80(%rcx), %r10 - xorq 88(%rcx), %r9 - xorq 96(%rcx), %r11 - xorq 104(%rcx), %rbx - xorq 112(%rcx), %rbp - xorq 120(%rcx), %r10 - xorq 128(%rcx), %r9 - xorq 136(%rcx), %r11 - xorq 144(%rcx), %rbx - xorq 152(%rcx), %rbp - xorq 160(%rcx), %r10 - xorq 168(%rcx), %r9 - xorq 176(%rcx), %r11 - xorq 184(%rcx), %rbx - xorq 192(%rcx), %rbp - movq %r9, %rsi + movq 8(%rsp), %rdx + movq 8(%rdx,%r10,8), %rdx + movq %rdx, 24(%rsp) + movq (%rcx), %r9 + movq 8(%rcx), %r8 + movq 16(%rcx), %r10 + movq 24(%rcx), %r11 + movq 32(%rcx), %rbx + xorq 40(%rcx), %r9 + xorq 48(%rcx), %r8 + xorq 56(%rcx), %r10 + xorq 64(%rcx), %r11 + xorq 72(%rcx), %rbx + xorq 80(%rcx), %r9 + xorq 88(%rcx), %r8 + xorq 96(%rcx), %r10 + xorq 104(%rcx), %r11 + xorq 112(%rcx), %rbx + xorq 120(%rcx), %r9 + xorq 128(%rcx), %r8 + xorq 136(%rcx), %r10 + xorq 144(%rcx), %r11 + xorq 152(%rcx), %rbx + xorq 160(%rcx), %r9 + xorq 168(%rcx), %r8 + xorq 176(%rcx), %r10 + xorq 184(%rcx), %r11 + xorq 192(%rcx), %rbx + movq %r8, %rdx + rolq $1, %rdx + xorq %rbx, %rdx + movq %r10, %rsi rolq $1, %rsi - xorq %rbp, %rsi + xorq %r9, %rsi movq %r11, %rdi rolq $1, %rdi - xorq %r10, %rdi + xorq %r8, %rdi movq %rbx, %r8 rolq $1, %r8 - xorq %r9, %r8 - movq %rbp, %r9 + xorq %r10, %r8 rolq $1, %r9 xorq %r11, %r9 - rolq $1, %r10 - xorq %rbx, %r10 - movq (%rcx), %r11 + movq (%rcx), %r10 + xorq %rdx, %r10 + movq 48(%rcx), %r11 xorq %rsi, %r11 - movq 48(%rcx), %rbx - xorq %rdi, %rbx - rolq $44, %rbx - movq 96(%rcx), %rbp - xorq %r8, %rbp - rolq $43, %rbp - movq 144(%rcx), %r12 - xorq %r9, %r12 - rolq $21, %r12 - movq 192(%rcx), %r13 - xorq %r10, %r13 - rolq $14, %r13 - movq %rbx, %r14 - notq %r14 - andq %rbp, %r14 - xorq %r11, %r14 - xorq 16(%rsp), %r14 - movq %r14, (%rax) - movq %rbp, %r14 - notq %r14 - andq %r12, %r14 - xorq %rbx, %r14 - movq %r14, 8(%rax) - movq %r12, %r14 - notq %r14 - andq %r13, %r14 - xorq %rbp, %r14 - movq %r14, 16(%rax) - movq %r13, %rbp - notq %rbp - andq %r11, %rbp - xorq %r12, %rbp - movq %rbp, 24(%rax) - notq %r11 - andq %rbx, %r11 - xorq %r13, %r11 - movq %r11, 32(%rax) - movq 24(%rcx), %r11 - xorq %r9, %r11 - rolq $28, %r11 - movq 72(%rcx), %rbx - xorq %r10, %rbx - rolq $20, %rbx - movq 80(%rcx), %rbp - xorq %rsi, %rbp - rolq $3, %rbp - movq 128(%rcx), %r12 + rolq $44, %r11 + movq 96(%rcx), %r12 xorq %rdi, %r12 - rolq $45, %r12 - movq 176(%rcx), %r13 - xorq %r8, %r13 - rolq $61, %r13 - movq %rbx, %r14 - notq %r14 - andq %rbp, %r14 - xorq %r11, %r14 - movq %r14, 40(%rax) - movq %rbp, %r14 - notq %r14 - andq %r12, %r14 - xorq %rbx, %r14 - movq %r14, 48(%rax) - movq %r12, %r14 - notq %r14 - andq %r13, %r14 - xorq %rbp, %r14 - movq %r14, 56(%rax) - movq %r13, %rbp - notq %rbp - andq %r11, %rbp - xorq %r12, %rbp - movq %rbp, 64(%rax) - notq %r11 - andq %rbx, %r11 - xorq %r13, %r11 - movq %r11, 72(%rax) - movq 8(%rcx), %r11 - xorq %rdi, %r11 - rolq $1, %r11 - movq 56(%rcx), %rbx + rolq $43, %r12 + movq 144(%rcx), %rbx xorq %r8, %rbx - rolq $6, %rbx - movq 104(%rcx), %rbp + rolq $21, %rbx + movq 192(%rcx), %rbp xorq %r9, %rbp - rolq $25, %rbp - movq 152(%rcx), %r12 - xorq %r10, %r12 - rolq $8, %r12 - movq 160(%rcx), %r13 - xorq %rsi, %r13 - rolq $18, %r13 - movq %rbx, %r14 - notq %r14 - andq %rbp, %r14 - xorq %r11, %r14 - movq %r14, 80(%rax) - movq %rbp, %r14 - notq %r14 - andq %r12, %r14 - xorq %rbx, %r14 - movq %r14, 88(%rax) - movq %r12, %r14 - notq %r14 - andq %r13, %r14 - xorq %rbp, %r14 - movq %r14, 96(%rax) - movq %r13, %rbp - notq %rbp - andq %r11, %rbp - xorq %r12, %rbp - movq %rbp, 104(%rax) - notq %r11 - andq %rbx, %r11 - xorq %r13, %r11 - movq %r11, 112(%rax) - movq 32(%rcx), %r11 - xorq %r10, %r11 - rolq $27, %r11 - movq 40(%rcx), %rbx + rolq $14, %rbp + movq %r11, %r13 + notq %r13 + andq %r12, %r13 + xorq %r10, %r13 + xorq 24(%rsp), %r13 + movq %r13, (%rax) + movq %r12, %r13 + notq %r13 + andq %rbx, %r13 + xorq %r11, %r13 + movq %r13, 8(%rax) + movq %rbx, %r13 + notq %r13 + andq %rbp, %r13 + xorq %r12, %r13 + movq %r13, 16(%rax) + movq %rbp, %r12 + notq %r12 + andq %r10, %r12 + xorq %rbx, %r12 + movq %r12, 24(%rax) + notq %r10 + andq %r11, %r10 + xorq %rbp, %r10 + movq %r10, 32(%rax) + movq 24(%rcx), %r10 + xorq %r8, %r10 + rolq $28, %r10 + movq 72(%rcx), %r11 + xorq %r9, %r11 + rolq $20, %r11 + movq 80(%rcx), %r12 + xorq %rdx, %r12 + rolq $3, %r12 + movq 128(%rcx), %rbx xorq %rsi, %rbx - rolq $36, %rbx - movq 88(%rcx), %rbp + rolq $45, %rbx + movq 176(%rcx), %rbp xorq %rdi, %rbp - rolq $10, %rbp - movq 136(%rcx), %r12 + rolq $61, %rbp + movq %r11, %r13 + notq %r13 + andq %r12, %r13 + xorq %r10, %r13 + movq %r13, 40(%rax) + movq %r12, %r13 + notq %r13 + andq %rbx, %r13 + xorq %r11, %r13 + movq %r13, 48(%rax) + movq %rbx, %r13 + notq %r13 + andq %rbp, %r13 + xorq %r12, %r13 + movq %r13, 56(%rax) + movq %rbp, %r12 + notq %r12 + andq %r10, %r12 + xorq %rbx, %r12 + movq %r12, 64(%rax) + notq %r10 + andq %r11, %r10 + xorq %rbp, %r10 + movq %r10, 72(%rax) + movq 8(%rcx), %r10 + xorq %rsi, %r10 + rolq $1, %r10 + movq 56(%rcx), %r11 + xorq %rdi, %r11 + rolq $6, %r11 + movq 104(%rcx), %r12 xorq %r8, %r12 - rolq $15, %r12 - movq 184(%rcx), %r13 - xorq %r9, %r13 - rolq $56, %r13 - movq %rbx, %r14 - notq %r14 - andq %rbp, %r14 - xorq %r11, %r14 - movq %r14, 120(%rax) - movq %rbp, %r14 - notq %r14 - andq %r12, %r14 - xorq %rbx, %r14 - movq %r14, 128(%rax) - movq %r12, %r14 - notq %r14 - andq %r13, %r14 - xorq %rbp, %r14 - movq %r14, 136(%rax) - movq %r13, %rbp - notq %rbp - andq %r11, %rbp - xorq %r12, %rbp - movq %rbp, 144(%rax) - notq %r11 - andq %rbx, %r11 - xorq %r13, %r11 - movq %r11, 152(%rax) - movq 16(%rcx), %r11 - xorq %r8, %r11 - rolq $62, %r11 - movq 64(%rcx), %r8 + rolq $25, %r12 + movq 152(%rcx), %rbx + xorq %r9, %rbx + rolq $8, %rbx + movq 160(%rcx), %rbp + xorq %rdx, %rbp + rolq $18, %rbp + movq %r11, %r13 + notq %r13 + andq %r12, %r13 + xorq %r10, %r13 + movq %r13, 80(%rax) + movq %r12, %r13 + notq %r13 + andq %rbx, %r13 + xorq %r11, %r13 + movq %r13, 88(%rax) + movq %rbx, %r13 + notq %r13 + andq %rbp, %r13 + xorq %r12, %r13 + movq %r13, 96(%rax) + movq %rbp, %r12 + notq %r12 + andq %r10, %r12 + xorq %rbx, %r12 + movq %r12, 104(%rax) + notq %r10 + andq %r11, %r10 + xorq %rbp, %r10 + movq %r10, 112(%rax) + movq 32(%rcx), %r10 + xorq %r9, %r10 + rolq $27, %r10 + movq 40(%rcx), %r11 + xorq %rdx, %r11 + rolq $36, %r11 + movq 88(%rcx), %r12 + xorq %rsi, %r12 + rolq $10, %r12 + movq 136(%rcx), %rbx + xorq %rdi, %rbx + rolq $15, %rbx + movq 184(%rcx), %rbp + xorq %r8, %rbp + rolq $56, %rbp + movq %r11, %r13 + notq %r13 + andq %r12, %r13 + xorq %r10, %r13 + movq %r13, 120(%rax) + movq %r12, %r13 + notq %r13 + andq %rbx, %r13 + xorq %r11, %r13 + movq %r13, 128(%rax) + movq %rbx, %r13 + notq %r13 + andq %rbp, %r13 + xorq %r12, %r13 + movq %r13, 136(%rax) + movq %rbp, %r12 + notq %r12 + andq %r10, %r12 + xorq %rbx, %r12 + movq %r12, 144(%rax) + notq %r10 + andq %r11, %r10 + xorq %rbp, %r10 + movq %r10, 152(%rax) + movq 16(%rcx), %r10 + xorq %rdi, %r10 + rolq $62, %r10 + movq 64(%rcx), %rdi + xorq %r8, %rdi + rolq $55, %rdi + movq 112(%rcx), %r8 xorq %r9, %r8 - rolq $55, %r8 - movq 112(%rcx), %r9 - xorq %r10, %r9 - rolq $39, %r9 - movq 120(%rcx), %r10 - xorq %rsi, %r10 - rolq $41, %r10 - movq 168(%rcx), %rsi + rolq $39, %r8 + movq 120(%rcx), %r9 + xorq %rdx, %r9 + rolq $41, %r9 + movq 168(%rcx), %rdx + xorq %rsi, %rdx + rolq $2, %rdx + movq %rdi, %rsi + notq %rsi + andq %r8, %rsi + xorq %r10, %rsi + movq %rsi, 160(%rax) + movq %r8, %rsi + notq %rsi + andq %r9, %rsi xorq %rdi, %rsi - rolq $2, %rsi - movq %r8, %rdi - notq %rdi - andq %r9, %rdi - xorq %r11, %rdi - movq %rdi, 160(%rax) - movq %r9, %rdi - notq %rdi - andq %r10, %rdi - xorq %r8, %rdi - movq %rdi, 168(%rax) - movq %r10, %rdi - notq %rdi - andq %rsi, %rdi - xorq %r9, %rdi - movq %rdi, 176(%rax) - movq %rsi, %rdi - notq %rdi - andq %r11, %rdi - xorq %r10, %rdi - movq %rdi, 184(%rax) - notq %r11 - andq %r8, %r11 - xorq %rsi, %r11 - movq %r11, 192(%rax) - addq $2, %rdx + movq %rsi, 168(%rax) + movq %r9, %rsi + notq %rsi + andq %rdx, %rsi + xorq %r8, %rsi + movq %rsi, 176(%rax) + movq %rdx, %rsi + notq %rsi + andq %r10, %rsi + xorq %r9, %rsi + movq %rsi, 184(%rax) + notq %r10 + andq %rdi, %r10 + xorq %rdx, %r10 + movq %r10, 192(%rax) + movq 16(%rsp), %r10 + addq $2, %r10 L_keccakf1600_ref1$2: - cmpq $23, %rdx + cmpq $23, %r10 jb L_keccakf1600_ref1$3 ret .data diff --git a/src/kem/kyber/libjade_kyber768_avx2/kem.s b/src/kem/kyber/libjade_kyber768_avx2/kem.s index 3eab5d324..29d39b042 100644 --- a/src/kem/kyber/libjade_kyber768_avx2/kem.s +++ b/src/kem/kyber/libjade_kyber768_avx2/kem.s @@ -17001,29 +17001,53 @@ L_nttunpack$1: L_shake256_absorb4x_33$1: vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, (%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 32(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 64(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 96(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 128(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 160(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 192(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 224(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 256(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 288(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 320(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 352(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 384(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 416(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 448(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 480(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 512(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 544(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 576(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 608(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 640(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 672(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 704(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 736(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 768(%rax) movq (%rcx), %rbx xorq %rbx, (%rax) @@ -17077,29 +17101,53 @@ L_shake256_absorb4x_33$1: L_shake128_absorb4x_34$1: vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, (%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 32(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 64(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 96(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 128(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 160(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 192(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 224(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 256(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 288(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 320(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 352(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 384(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 416(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 448(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 480(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 512(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 544(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 576(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 608(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 640(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 672(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 704(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 736(%rax) + vpxor %ymm0, %ymm0, %ymm0 vmovdqu %ymm0, 768(%rax) movq (%rcx), %r8 xorq %r8, (%rax) diff --git a/src/kem/kyber/libjade_kyber768_ref/kem.s b/src/kem/kyber/libjade_kyber768_ref/kem.s index 8a646187c..e898b68b8 100644 --- a/src/kem/kyber/libjade_kyber768_ref/kem.s +++ b/src/kem/kyber/libjade_kyber768_ref/kem.s @@ -16406,10 +16406,10 @@ L_shake256_64$1: xorq %rax, 56(%rcx) xorb $31, 64(%rcx) xorb $-128, 135(%rcx) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_64$9: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 16(%rsp), %rax movq 8(%rsp), %rdx jmp L_shake256_64$6 @@ -16452,10 +16452,10 @@ L_shake256_64$7: addq $-136, %rax movq %rdx, 8(%rsp) movq %rax, 16(%rsp) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_64$8: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 16(%rsp), %rax movq 8(%rsp), %rdx L_shake256_64$6: @@ -16530,10 +16530,10 @@ L_sha3_512_64$1: xorq %rax, 56(%rcx) xorb $6, 64(%rcx) xorb $-128, 71(%rcx) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_512_64$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rax movq (%rcx), %rdx movq %rdx, (%rax) @@ -16591,10 +16591,10 @@ L_sha3_256_32$1: movq %rax, 24(%rcx) xorb $6, 32(%rcx) movb $-128, 135(%rcx) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_256_32$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rax movq (%rcx), %rdx movq %rdx, (%rax) @@ -16653,10 +16653,10 @@ L_sha3_256$10: movq %rsi, 16(%rsp) movq %rax, 24(%rsp) movq %rdx, 32(%rsp) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_256$9: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 16(%rsp), %rsi movq 24(%rsp), %rax movq 32(%rsp), %rdx @@ -16687,10 +16687,10 @@ L_sha3_256$3: xorb %dil, (%rcx,%r9) addq $-1, %rdx xorb $-128, (%rcx,%rdx) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_256$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rax movq (%rcx), %rdx movq %rdx, (%rax) @@ -16703,10 +16703,10 @@ L_sha3_256$2: ret L_shake128_squeezeblock$1: movq %rdx, 8(%rsp) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake128_squeezeblock$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rdx movb (%rcx), %sil movb %sil, (%rdx) @@ -17238,10 +17238,10 @@ L_sha3_512_32$1: xorb %al, 31(%rcx) xorb $6, 32(%rcx) xorb $-128, 71(%rcx) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_sha3_512_32$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rax movb (%rcx), %dl movb %dl, (%rax) @@ -17469,10 +17469,10 @@ L_shake256_128_33$1: xorb %dl, 32(%rcx) xorb $31, 33(%rcx) xorb $-128, 135(%rcx) - leaq -216(%rsp), %rsp + leaq -224(%rsp), %rsp call L_keccakf1600_ref1$1 L_shake256_128_33$2: - leaq 216(%rsp), %rsp + leaq 224(%rsp), %rsp movq 8(%rsp), %rdx movb (%rcx), %sil movb %sil, (%rdx) @@ -17734,71 +17734,72 @@ L_shake256_128_33$2: L_keccakf1600_ref1$1: leaq glob_data + 0(%rip), %rdx movq %rdx, 8(%rsp) - leaq 24(%rsp), %rdx - movq $0, %rsi + leaq 32(%rsp), %rdx + movq $0, %r11 jmp L_keccakf1600_ref1$2 L_keccakf1600_ref1$3: - movq 8(%rsp), %rdi - movq (%rdi,%rsi,8), %rdi - movq %rdi, 16(%rsp) - movq (%rcx), %r11 - movq 8(%rcx), %r10 + movq %r11, 16(%rsp) + movq 8(%rsp), %rsi + movq (%rsi,%r11,8), %rsi + movq %rsi, 24(%rsp) + movq (%rcx), %r10 + movq 8(%rcx), %r9 movq 16(%rcx), %rbx movq 24(%rcx), %rbp movq 32(%rcx), %r12 - xorq 40(%rcx), %r11 - xorq 48(%rcx), %r10 + xorq 40(%rcx), %r10 + xorq 48(%rcx), %r9 xorq 56(%rcx), %rbx xorq 64(%rcx), %rbp xorq 72(%rcx), %r12 - xorq 80(%rcx), %r11 - xorq 88(%rcx), %r10 + xorq 80(%rcx), %r10 + xorq 88(%rcx), %r9 xorq 96(%rcx), %rbx xorq 104(%rcx), %rbp xorq 112(%rcx), %r12 - xorq 120(%rcx), %r11 - xorq 128(%rcx), %r10 + xorq 120(%rcx), %r10 + xorq 128(%rcx), %r9 xorq 136(%rcx), %rbx xorq 144(%rcx), %rbp xorq 152(%rcx), %r12 - xorq 160(%rcx), %r11 - xorq 168(%rcx), %r10 + xorq 160(%rcx), %r10 + xorq 168(%rcx), %r9 xorq 176(%rcx), %rbx xorq 184(%rcx), %rbp xorq 192(%rcx), %r12 - movq %r10, %rdi + movq %r9, %rsi + rolq $1, %rsi + xorq %r12, %rsi + movq %rbx, %rdi rolq $1, %rdi - xorq %r12, %rdi - movq %rbx, %r8 + xorq %r10, %rdi + movq %rbp, %r8 rolq $1, %r8 - xorq %r11, %r8 - movq %rbp, %r9 + xorq %r9, %r8 + movq %r12, %r9 rolq $1, %r9 - xorq %r10, %r9 - movq %r12, %r10 + xorq %rbx, %r9 rolq $1, %r10 - xorq %rbx, %r10 - rolq $1, %r11 - xorq %rbp, %r11 + xorq %rbp, %r10 movq (%rcx), %rbx - xorq %rdi, %rbx + xorq %rsi, %rbx movq 48(%rcx), %rbp - xorq %r8, %rbp + xorq %rdi, %rbp rolq $44, %rbp movq 96(%rcx), %r12 - xorq %r9, %r12 + xorq %r8, %r12 rolq $43, %r12 movq 144(%rcx), %r13 - xorq %r10, %r13 + xorq %r9, %r13 rolq $21, %r13 movq 192(%rcx), %r14 - xorq %r11, %r14 + xorq %r10, %r14 rolq $14, %r14 movq %rbp, %r15 notq %r15 andq %r12, %r15 xorq %rbx, %r15 - xorq 16(%rsp), %r15 + xorq 24(%rsp), %r15 movq %r15, (%rdx) movq %r12, %r15 notq %r15 @@ -17820,19 +17821,19 @@ L_keccakf1600_ref1$3: xorq %r14, %rbx movq %rbx, 32(%rdx) movq 24(%rcx), %rbx - xorq %r10, %rbx + xorq %r9, %rbx rolq $28, %rbx movq 72(%rcx), %rbp - xorq %r11, %rbp + xorq %r10, %rbp rolq $20, %rbp movq 80(%rcx), %r12 - xorq %rdi, %r12 + xorq %rsi, %r12 rolq $3, %r12 movq 128(%rcx), %r13 - xorq %r8, %r13 + xorq %rdi, %r13 rolq $45, %r13 movq 176(%rcx), %r14 - xorq %r9, %r14 + xorq %r8, %r14 rolq $61, %r14 movq %rbp, %r15 notq %r15 @@ -17859,19 +17860,19 @@ L_keccakf1600_ref1$3: xorq %r14, %rbx movq %rbx, 72(%rdx) movq 8(%rcx), %rbx - xorq %r8, %rbx + xorq %rdi, %rbx rolq $1, %rbx movq 56(%rcx), %rbp - xorq %r9, %rbp + xorq %r8, %rbp rolq $6, %rbp movq 104(%rcx), %r12 - xorq %r10, %r12 + xorq %r9, %r12 rolq $25, %r12 movq 152(%rcx), %r13 - xorq %r11, %r13 + xorq %r10, %r13 rolq $8, %r13 movq 160(%rcx), %r14 - xorq %rdi, %r14 + xorq %rsi, %r14 rolq $18, %r14 movq %rbp, %r15 notq %r15 @@ -17898,19 +17899,19 @@ L_keccakf1600_ref1$3: xorq %r14, %rbx movq %rbx, 112(%rdx) movq 32(%rcx), %rbx - xorq %r11, %rbx + xorq %r10, %rbx rolq $27, %rbx movq 40(%rcx), %rbp - xorq %rdi, %rbp + xorq %rsi, %rbp rolq $36, %rbp movq 88(%rcx), %r12 - xorq %r8, %r12 + xorq %rdi, %r12 rolq $10, %r12 movq 136(%rcx), %r13 - xorq %r9, %r13 + xorq %r8, %r13 rolq $15, %r13 movq 184(%rcx), %r14 - xorq %r10, %r14 + xorq %r9, %r14 rolq $56, %r14 movq %rbp, %r15 notq %r15 @@ -17937,284 +17938,285 @@ L_keccakf1600_ref1$3: xorq %r14, %rbx movq %rbx, 152(%rdx) movq 16(%rcx), %rbx - xorq %r9, %rbx + xorq %r8, %rbx rolq $62, %rbx - movq 64(%rcx), %r9 + movq 64(%rcx), %r8 + xorq %r9, %r8 + rolq $55, %r8 + movq 112(%rcx), %r9 xorq %r10, %r9 - rolq $55, %r9 - movq 112(%rcx), %r10 - xorq %r11, %r10 - rolq $39, %r10 - movq 120(%rcx), %r11 - xorq %rdi, %r11 - rolq $41, %r11 - movq 168(%rcx), %rdi + rolq $39, %r9 + movq 120(%rcx), %r10 + xorq %rsi, %r10 + rolq $41, %r10 + movq 168(%rcx), %rsi + xorq %rdi, %rsi + rolq $2, %rsi + movq %r8, %rdi + notq %rdi + andq %r9, %rdi + xorq %rbx, %rdi + movq %rdi, 160(%rdx) + movq %r9, %rdi + notq %rdi + andq %r10, %rdi xorq %r8, %rdi - rolq $2, %rdi - movq %r9, %r8 - notq %r8 - andq %r10, %r8 - xorq %rbx, %r8 - movq %r8, 160(%rdx) - movq %r10, %r8 - notq %r8 - andq %r11, %r8 - xorq %r9, %r8 - movq %r8, 168(%rdx) - movq %r11, %r8 - notq %r8 - andq %rdi, %r8 - xorq %r10, %r8 - movq %r8, 176(%rdx) - movq %rdi, %r8 - notq %r8 - andq %rbx, %r8 - xorq %r11, %r8 - movq %r8, 184(%rdx) + movq %rdi, 168(%rdx) + movq %r10, %rdi + notq %rdi + andq %rsi, %rdi + xorq %r9, %rdi + movq %rdi, 176(%rdx) + movq %rsi, %rdi + notq %rdi + andq %rbx, %rdi + xorq %r10, %rdi + movq %rdi, 184(%rdx) notq %rbx - andq %r9, %rbx - xorq %rdi, %rbx + andq %r8, %rbx + xorq %rsi, %rbx movq %rbx, 192(%rdx) - movq 8(%rsp), %rdi - movq 8(%rdi,%rsi,8), %rdi - movq %rdi, 16(%rsp) - movq (%rdx), %r11 - movq 8(%rdx), %r10 - movq 16(%rdx), %rbx - movq 24(%rdx), %rbp - movq 32(%rdx), %r12 - xorq 40(%rdx), %r11 - xorq 48(%rdx), %r10 - xorq 56(%rdx), %rbx - xorq 64(%rdx), %rbp - xorq 72(%rdx), %r12 - xorq 80(%rdx), %r11 - xorq 88(%rdx), %r10 - xorq 96(%rdx), %rbx - xorq 104(%rdx), %rbp - xorq 112(%rdx), %r12 - xorq 120(%rdx), %r11 - xorq 128(%rdx), %r10 - xorq 136(%rdx), %rbx - xorq 144(%rdx), %rbp - xorq 152(%rdx), %r12 - xorq 160(%rdx), %r11 - xorq 168(%rdx), %r10 - xorq 176(%rdx), %rbx - xorq 184(%rdx), %rbp - xorq 192(%rdx), %r12 - movq %r10, %rdi + movq 8(%rsp), %rsi + movq 8(%rsi,%r11,8), %rsi + movq %rsi, 24(%rsp) + movq (%rdx), %r10 + movq 8(%rdx), %r9 + movq 16(%rdx), %r11 + movq 24(%rdx), %rbx + movq 32(%rdx), %rbp + xorq 40(%rdx), %r10 + xorq 48(%rdx), %r9 + xorq 56(%rdx), %r11 + xorq 64(%rdx), %rbx + xorq 72(%rdx), %rbp + xorq 80(%rdx), %r10 + xorq 88(%rdx), %r9 + xorq 96(%rdx), %r11 + xorq 104(%rdx), %rbx + xorq 112(%rdx), %rbp + xorq 120(%rdx), %r10 + xorq 128(%rdx), %r9 + xorq 136(%rdx), %r11 + xorq 144(%rdx), %rbx + xorq 152(%rdx), %rbp + xorq 160(%rdx), %r10 + xorq 168(%rdx), %r9 + xorq 176(%rdx), %r11 + xorq 184(%rdx), %rbx + xorq 192(%rdx), %rbp + movq %r9, %rsi + rolq $1, %rsi + xorq %rbp, %rsi + movq %r11, %rdi rolq $1, %rdi - xorq %r12, %rdi + xorq %r10, %rdi movq %rbx, %r8 rolq $1, %r8 - xorq %r11, %r8 + xorq %r9, %r8 movq %rbp, %r9 rolq $1, %r9 - xorq %r10, %r9 - movq %r12, %r10 + xorq %r11, %r9 rolq $1, %r10 xorq %rbx, %r10 - rolq $1, %r11 - xorq %rbp, %r11 - movq (%rdx), %rbx + movq (%rdx), %r11 + xorq %rsi, %r11 + movq 48(%rdx), %rbx xorq %rdi, %rbx - movq 48(%rdx), %rbp + rolq $44, %rbx + movq 96(%rdx), %rbp xorq %r8, %rbp - rolq $44, %rbp - movq 96(%rdx), %r12 + rolq $43, %rbp + movq 144(%rdx), %r12 xorq %r9, %r12 - rolq $43, %r12 - movq 144(%rdx), %r13 + rolq $21, %r12 + movq 192(%rdx), %r13 xorq %r10, %r13 - rolq $21, %r13 - movq 192(%rdx), %r14 + rolq $14, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 xorq %r11, %r14 - rolq $14, %r14 - movq %rbp, %r15 - notq %r15 - andq %r12, %r15 - xorq %rbx, %r15 - xorq 16(%rsp), %r15 - movq %r15, (%rcx) - movq %r12, %r15 - notq %r15 - andq %r13, %r15 - xorq %rbp, %r15 - movq %r15, 8(%rcx) - movq %r13, %r15 - notq %r15 - andq %r14, %r15 - xorq %r12, %r15 - movq %r15, 16(%rcx) - movq %r14, %r12 - notq %r12 - andq %rbx, %r12 - xorq %r13, %r12 - movq %r12, 24(%rcx) - notq %rbx - andq %rbp, %rbx - xorq %r14, %rbx - movq %rbx, 32(%rcx) - movq 24(%rdx), %rbx + xorq 24(%rsp), %r14 + movq %r14, (%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 8(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 16(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 24(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 32(%rcx) + movq 24(%rdx), %r11 + xorq %r9, %r11 + rolq $28, %r11 + movq 72(%rdx), %rbx xorq %r10, %rbx - rolq $28, %rbx - movq 72(%rdx), %rbp - xorq %r11, %rbp - rolq $20, %rbp - movq 80(%rdx), %r12 + rolq $20, %rbx + movq 80(%rdx), %rbp + xorq %rsi, %rbp + rolq $3, %rbp + movq 128(%rdx), %r12 xorq %rdi, %r12 - rolq $3, %r12 - movq 128(%rdx), %r13 + rolq $45, %r12 + movq 176(%rdx), %r13 xorq %r8, %r13 - rolq $45, %r13 - movq 176(%rdx), %r14 - xorq %r9, %r14 - rolq $61, %r14 - movq %rbp, %r15 - notq %r15 - andq %r12, %r15 - xorq %rbx, %r15 - movq %r15, 40(%rcx) - movq %r12, %r15 - notq %r15 - andq %r13, %r15 - xorq %rbp, %r15 - movq %r15, 48(%rcx) - movq %r13, %r15 - notq %r15 - andq %r14, %r15 - xorq %r12, %r15 - movq %r15, 56(%rcx) - movq %r14, %r12 - notq %r12 - andq %rbx, %r12 - xorq %r13, %r12 - movq %r12, 64(%rcx) - notq %rbx - andq %rbp, %rbx - xorq %r14, %rbx - movq %rbx, 72(%rcx) - movq 8(%rdx), %rbx + rolq $61, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 40(%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 48(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 56(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 64(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 72(%rcx) + movq 8(%rdx), %r11 + xorq %rdi, %r11 + rolq $1, %r11 + movq 56(%rdx), %rbx xorq %r8, %rbx - rolq $1, %rbx - movq 56(%rdx), %rbp + rolq $6, %rbx + movq 104(%rdx), %rbp xorq %r9, %rbp - rolq $6, %rbp - movq 104(%rdx), %r12 + rolq $25, %rbp + movq 152(%rdx), %r12 xorq %r10, %r12 - rolq $25, %r12 - movq 152(%rdx), %r13 - xorq %r11, %r13 - rolq $8, %r13 - movq 160(%rdx), %r14 - xorq %rdi, %r14 - rolq $18, %r14 - movq %rbp, %r15 - notq %r15 - andq %r12, %r15 - xorq %rbx, %r15 - movq %r15, 80(%rcx) - movq %r12, %r15 - notq %r15 - andq %r13, %r15 - xorq %rbp, %r15 - movq %r15, 88(%rcx) - movq %r13, %r15 - notq %r15 - andq %r14, %r15 - xorq %r12, %r15 - movq %r15, 96(%rcx) - movq %r14, %r12 - notq %r12 - andq %rbx, %r12 - xorq %r13, %r12 - movq %r12, 104(%rcx) - notq %rbx - andq %rbp, %rbx - xorq %r14, %rbx - movq %rbx, 112(%rcx) - movq 32(%rdx), %rbx - xorq %r11, %rbx - rolq $27, %rbx - movq 40(%rdx), %rbp + rolq $8, %r12 + movq 160(%rdx), %r13 + xorq %rsi, %r13 + rolq $18, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 80(%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 88(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 96(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 104(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 112(%rcx) + movq 32(%rdx), %r11 + xorq %r10, %r11 + rolq $27, %r11 + movq 40(%rdx), %rbx + xorq %rsi, %rbx + rolq $36, %rbx + movq 88(%rdx), %rbp xorq %rdi, %rbp - rolq $36, %rbp - movq 88(%rdx), %r12 + rolq $10, %rbp + movq 136(%rdx), %r12 xorq %r8, %r12 - rolq $10, %r12 - movq 136(%rdx), %r13 + rolq $15, %r12 + movq 184(%rdx), %r13 xorq %r9, %r13 - rolq $15, %r13 - movq 184(%rdx), %r14 - xorq %r10, %r14 - rolq $56, %r14 - movq %rbp, %r15 - notq %r15 - andq %r12, %r15 - xorq %rbx, %r15 - movq %r15, 120(%rcx) - movq %r12, %r15 - notq %r15 - andq %r13, %r15 - xorq %rbp, %r15 - movq %r15, 128(%rcx) - movq %r13, %r15 - notq %r15 - andq %r14, %r15 - xorq %r12, %r15 - movq %r15, 136(%rcx) - movq %r14, %r12 - notq %r12 - andq %rbx, %r12 - xorq %r13, %r12 - movq %r12, 144(%rcx) - notq %rbx - andq %rbp, %rbx - xorq %r14, %rbx - movq %rbx, 152(%rcx) - movq 16(%rdx), %rbx - xorq %r9, %rbx - rolq $62, %rbx - movq 64(%rdx), %r9 + rolq $56, %r13 + movq %rbx, %r14 + notq %r14 + andq %rbp, %r14 + xorq %r11, %r14 + movq %r14, 120(%rcx) + movq %rbp, %r14 + notq %r14 + andq %r12, %r14 + xorq %rbx, %r14 + movq %r14, 128(%rcx) + movq %r12, %r14 + notq %r14 + andq %r13, %r14 + xorq %rbp, %r14 + movq %r14, 136(%rcx) + movq %r13, %rbp + notq %rbp + andq %r11, %rbp + xorq %r12, %rbp + movq %rbp, 144(%rcx) + notq %r11 + andq %rbx, %r11 + xorq %r13, %r11 + movq %r11, 152(%rcx) + movq 16(%rdx), %r11 + xorq %r8, %r11 + rolq $62, %r11 + movq 64(%rdx), %r8 + xorq %r9, %r8 + rolq $55, %r8 + movq 112(%rdx), %r9 xorq %r10, %r9 - rolq $55, %r9 - movq 112(%rdx), %r10 - xorq %r11, %r10 - rolq $39, %r10 - movq 120(%rdx), %r11 - xorq %rdi, %r11 - rolq $41, %r11 - movq 168(%rdx), %rdi + rolq $39, %r9 + movq 120(%rdx), %r10 + xorq %rsi, %r10 + rolq $41, %r10 + movq 168(%rdx), %rsi + xorq %rdi, %rsi + rolq $2, %rsi + movq %r8, %rdi + notq %rdi + andq %r9, %rdi + xorq %r11, %rdi + movq %rdi, 160(%rcx) + movq %r9, %rdi + notq %rdi + andq %r10, %rdi xorq %r8, %rdi - rolq $2, %rdi - movq %r9, %r8 - notq %r8 - andq %r10, %r8 - xorq %rbx, %r8 - movq %r8, 160(%rcx) - movq %r10, %r8 - notq %r8 - andq %r11, %r8 - xorq %r9, %r8 - movq %r8, 168(%rcx) - movq %r11, %r8 - notq %r8 - andq %rdi, %r8 - xorq %r10, %r8 - movq %r8, 176(%rcx) - movq %rdi, %r8 - notq %r8 - andq %rbx, %r8 - xorq %r11, %r8 - movq %r8, 184(%rcx) - notq %rbx - andq %r9, %rbx - xorq %rdi, %rbx - movq %rbx, 192(%rcx) - addq $2, %rsi + movq %rdi, 168(%rcx) + movq %r10, %rdi + notq %rdi + andq %rsi, %rdi + xorq %r9, %rdi + movq %rdi, 176(%rcx) + movq %rsi, %rdi + notq %rdi + andq %r11, %rdi + xorq %r10, %rdi + movq %rdi, 184(%rcx) + notq %r11 + andq %r8, %r11 + xorq %rsi, %r11 + movq %r11, 192(%rcx) + movq 16(%rsp), %r11 + addq $2, %r11 L_keccakf1600_ref1$2: - cmpq $23, %rsi + cmpq $23, %r11 jb L_keccakf1600_ref1$3 ret .data From 30b325924ff11b6b194779e13c93ff7cea239aff Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Mon, 22 Apr 2024 22:09:39 +0200 Subject: [PATCH 56/82] fix kyber documentation Signed-off-by: Pravek Sharma --- docs/algorithms/kem/kyber.md | 8 ++++---- docs/algorithms/kem/kyber.yml | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/algorithms/kem/kyber.md b/docs/algorithms/kem/kyber.md index ef38e3a49..6d2c44126 100644 --- a/docs/algorithms/kem/kyber.md +++ b/docs/algorithms/kem/kyber.md @@ -30,8 +30,8 @@ | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | -| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | -| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | +| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | False | False | +| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | False | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. @@ -44,8 +44,8 @@ Are implementations chosen based on runtime CPU feature detection? **Yes**. | [Primary Source](#primary-source) | ref | All | All | None | True | True | False | | [Primary Source](#primary-source) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | | [oldpqclean-aarch64](#oldpqclean-aarch64) | aarch64 | ARM64\_V8 | Linux,Darwin | None | True | False | False | -| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | True | False | -| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | True | False | +| [libjade](#libjade) | ref | x86\_64 | Linux,Darwin | None | True | False | False | +| [libjade](#libjade) | avx2 | x86\_64 | Linux,Darwin | AVX2,BMI2,POPCNT | True | False | False | Are implementations chosen based on runtime CPU feature detection? **Yes**. diff --git a/docs/algorithms/kem/kyber.yml b/docs/algorithms/kem/kyber.yml index 583430cfb..3cdce8ff1 100644 --- a/docs/algorithms/kem/kyber.yml +++ b/docs/algorithms/kem/kyber.yml @@ -85,7 +85,7 @@ parameter-sets: - Linux - Darwin no-secret-dependent-branching-claimed: true - no-secret-dependent-branching-checked-by-valgrind: true + no-secret-dependent-branching-checked-by-valgrind: false large-stack-usage: false - upstream: libjade upstream-id: avx2 @@ -99,7 +99,7 @@ parameter-sets: - bmi2 - popcnt no-secret-dependent-branching-claimed: true - no-secret-dependent-branching-checked-by-valgrind: true + no-secret-dependent-branching-checked-by-valgrind: false large-stack-usage: false - name: Kyber768 claimed-nist-level: 3 @@ -154,7 +154,7 @@ parameter-sets: - Linux - Darwin no-secret-dependent-branching-claimed: true - no-secret-dependent-branching-checked-by-valgrind: true + no-secret-dependent-branching-checked-by-valgrind: false large-stack-usage: false - upstream: libjade upstream-id: avx2 @@ -168,7 +168,7 @@ parameter-sets: - bmi2 - popcnt no-secret-dependent-branching-claimed: true - no-secret-dependent-branching-checked-by-valgrind: true + no-secret-dependent-branching-checked-by-valgrind: false large-stack-usage: false - name: Kyber1024 claimed-nist-level: 5 From e9623614963da65c8d9621969425538b7db82bf5 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Mon, 22 Apr 2024 22:40:00 +0200 Subject: [PATCH 57/82] fix kyber documentation Signed-off-by: Pravek Sharma --- docs/algorithms/kem/kyber.md | 4 ++++ scripts/update_docs_from_yaml.py | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/docs/algorithms/kem/kyber.md b/docs/algorithms/kem/kyber.md index 6d2c44126..a0fff5808 100644 --- a/docs/algorithms/kem/kyber.md +++ b/docs/algorithms/kem/kyber.md @@ -13,6 +13,10 @@ - **oldpqclean-aarch64**: - **Source**: https://github.com/PQClean/PQClean/commit/8e220a87308154d48fdfac40abbb191ac7fce06a with copy_from_upstream patches - **Implementation license (SPDX-Identifier)**: CC0-1.0 and (CC0-1.0 or Apache-2.0) and (CC0-1.0 or MIT) and MIT +- **Formally-verified Implementation sources**: + - **libjade**: + - **Source**: https://github.com/formosa-crypto/lib/commit/555e23342471bea8544c356bdae230baf064ed56 with copy_from_upstream patches + - **Implementation license (SPDX-Identifier)**: CC0-1.0 ## Parameter set summary diff --git a/scripts/update_docs_from_yaml.py b/scripts/update_docs_from_yaml.py index ef152d376..f747318a0 100644 --- a/scripts/update_docs_from_yaml.py +++ b/scripts/update_docs_from_yaml.py @@ -47,6 +47,12 @@ def do_it(liboqs_root): out_md.write(' - **{}**:\n'.format(opt_upstream, opt_upstream)) out_md.write(' - **Source**: {}\n'.format(kem_yaml['optimized-upstreams'][opt_upstream]['source'])) out_md.write(' - **Implementation license (SPDX-Identifier)**: {}\n'.format(kem_yaml['optimized-upstreams'][opt_upstream]['spdx-license-identifier'])) + if 'formally-verified-upstreams' in kem_yaml: + out_md.write('- **Formally-verified Implementation sources**: \n') + for opt_upstream in kem_yaml['formally-verified-upstreams']: + out_md.write(' - **{}**:\n'.format(opt_upstream, opt_upstream)) + out_md.write(' - **Source**: {}\n'.format(kem_yaml['formally-verified-upstreams'][opt_upstream]['source'])) + out_md.write(' - **Implementation license (SPDX-Identifier)**: {}\n'.format(kem_yaml['formally-verified-upstreams'][opt_upstream]['spdx-license-identifier'])) if 'upstream-ancestors' in kem_yaml: out_md.write('- **Ancestors of primary source**:\n') for url in kem_yaml['upstream-ancestors'][:-1]: From 6eae7d0d8a9e0624e335cb8544170407fbb5f54b Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Mon, 22 Apr 2024 22:53:39 +0200 Subject: [PATCH 58/82] fix kem template again Signed-off-by: Pravek Sharma --- .../copy_from_upstream/src/kem/family/kem_scheme.c | 12 ++++++------ src/kem/kyber/kem_kyber_512.c | 6 +++--- src/kem/kyber/kem_kyber_768.c | 6 +++--- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index e82e32890..3070c8aea 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -134,9 +134,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -208,9 +208,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) @@ -282,9 +282,9 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} -#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- else %} -#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- if impl['name'] in scheme['libjade_implementations'] %}_{%- endif %}{{ impl['name'] }}){%- endif %} +#elif defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- endif %} {%- if 'required_flags' in impl and impl['required_flags'] %} #if defined(OQS_DIST_BUILD) diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index 589e7634c..74b6e3906 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -71,7 +71,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ @@ -123,7 +123,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ @@ -175,7 +175,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_ return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index 5801f34a6..80d1d170e 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -71,7 +71,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ @@ -123,7 +123,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ @@ -175,7 +175,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_ return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768aarch64) +#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { #endif /* OQS_DIST_BUILD */ From eec545bbbc55427a34a25e52e153348d5c32639d Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 23 Apr 2024 00:27:13 +0200 Subject: [PATCH 59/82] fix weekly.yml and unix.yml to test libjade code Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 40 ++++++++++++------- .github/workflows/weekly.yml | 13 +++++- .../copy_from_upstream/copy_from_libjade.yml | 2 + 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index 3d073f99b..b512c9373 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -2,6 +2,12 @@ name: Linux and MacOS tests on: [push, pull_request, workflow_dispatch] +env: + # Semi-colon separated list of algorithims with libjade implementations to + # be passed as input to CMake option as: -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST + # See CONFIGURE.md under ## OQS_MINIMAL_BUILD + LIBJADE_ALG_LIST: "KEM_kyber_512;KEM_kyber_768" + jobs: stylecheck: @@ -20,6 +26,12 @@ jobs: upstreamcheck: name: Check upstream code is properly integrated + strategy: + fail-fast: false + matrix: + copy-mode: + - copy + - libjade container: openquantumsafe/ci-ubuntu-focal-x86_64:latest runs-on: ubuntu-latest steps: @@ -31,7 +43,7 @@ jobs: nix-channel --update && nix-env -iA nixpkgs.jasmin-compiler - name: Checkout code uses: actions/checkout@v4 - - name: Verify copy_from_upstream state after "copy" + - name: Verify copy_from_upstream state after "${{ matrix.copy-mode}}" run: | git config --global user.name "ciuser" && \ git config --global user.email "ci@openquantumsafe.org" && \ @@ -39,17 +51,7 @@ jobs: git config --global --add safe.directory $LIBOQS_DIR && \ cd scripts/copy_from_upstream && \ ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ - python3 copy_from_upstream.py copy && \ - ! git status | grep modified - - name: Verify copy_from_upstream state after "libjade" - run: | - git config --global user.name "ciuser" && \ - git config --global user.email "ci@openquantumsafe.org" && \ - export LIBOQS_DIR=`pwd` && \ - git config --global --add safe.directory $LIBOQS_DIR && \ - cd scripts/copy_from_upstream && \ - ! pip3 install -r requirements.txt 2>&1 | grep ERROR && \ - python3 copy_from_upstream.py libjade && \ + python3 copy_from_upstream.py ${{ matrix.copy-mode }} && \ ! git status | grep modified buildcheck: @@ -116,13 +118,18 @@ jobs: container: openquantumsafe/ci-ubuntu-focal-x86_64:latest CMAKE_ARGS: -DCMAKE_C_COMPILER=clang-9 -DCMAKE_BUILD_TYPE=Debug -DUSE_SANITIZER=Address PYTEST_ARGS: --ignore=tests/test_distbuild.py --ignore=tests/test_leaks.py --ignore=tests/test_kat_all.py --numprocesses=auto --maxprocesses=10 + libjade-build: + - -DOQS_LIBJADE_BUILD=OFF + # Restrict -DOQS_LIBJADE_BUILD=ON build to algs provided by + # libjade to minimise repeated tests + - -DOQS_LIBJADE_BUILD=ON -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST container: image: ${{ matrix.container }} steps: - name: Checkout code uses: actions/checkout@v4 - name: Configure - run: mkdir build && cd build && cmake -GNinja ${{ matrix.CMAKE_ARGS }} .. && cmake -LA .. + run: mkdir build && cd build && cmake -GNinja ${{ matrix.CMAKE_ARGS }} ${{ matrix.libjade-build }} .. && cmake -LA .. - name: Build run: ninja working-directory: build @@ -222,6 +229,11 @@ jobs: - -DCMAKE_C_COMPILER=gcc-13 - -DOQS_USE_OPENSSL=OFF - -DBUILD_SHARED_LIBS=ON -DOQS_DIST_BUILD=OFF + libjade-build: + - -DOQS_LIBJADE_BUILD=OFF + # Restrict -DOQS_LIBJADE_BUILD=ON build to algs provided by + # libjade to minimise repeated tests + - -DOQS_LIBJADE_BUILD=ON -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST runs-on: ${{ matrix.os }} steps: - name: Checkout code @@ -231,7 +243,7 @@ jobs: - name: Get system information run: sysctl -a | grep machdep.cpu - name: Configure - run: mkdir -p build && cd build && source ~/.bashrc && cmake -GNinja -DOQS_STRICT_WARNINGS=ON ${{ matrix.CMAKE_ARGS }} .. && cmake -LA .. + run: mkdir -p build && cd build && source ~/.bashrc && cmake -GNinja -DOQS_STRICT_WARNINGS=ON ${{ matrix.CMAKE_ARGS }} ${{ matrix.libjade-build }} .. && cmake -LA .. - name: Build run: ninja working-directory: build diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index cc111878f..e47e48a8f 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -5,6 +5,12 @@ on: - cron: "5 0 * * 0" workflow_dispatch: +env: + # Semi-colon separated list of algorithims with libjade implementations to + # be passed as input to CMake option as: -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST + # See CONFIGURE.md under ## OQS_MINIMAL_BUILD + LIBJADE_ALG_LIST: "KEM_kyber_512;KEM_kyber_768" + jobs: constant-time-x64: @@ -51,13 +57,18 @@ jobs: container: openquantumsafe/ci-ubuntu-focal-x86_64:latest CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=haswell PYTEST_ARGS: --numprocesses=auto -k 'test_kat_all' + libjade-build: + - -DOQS_LIBJADE_BUILD=OFF + # Restrict -DOQS_LIBJADE_BUILD=ON build to algs provided by + # libjade to minimise repeated tests + - -DOQS_LIBJADE_BUILD=ON -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST container: image: ${{ matrix.container }} steps: - name: Checkout code uses: actions/checkout@v2 - name: Configure - run: mkdir build && cd build && cmake -GNinja ${{ matrix.CMAKE_ARGS }} .. && cmake -LA .. + run: mkdir build && cd build && cmake -GNinja ${{ matrix.CMAKE_ARGS }} ${{ matrix.libjade-build }}.. && cmake -LA .. - name: Build run: ninja working-directory: build diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index 532bc1fee..9d0c64cae 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -1,6 +1,8 @@ # When adding an algorithm to copy_from_libjade.yml, the boolean # 'libjade_implementation' and list of implementation 'libjade_implementations' # must updated for the relevant algorithm in copy_from_upstream.yml +# Additionaly, the algorithm name must be appended to env.LIBJADE_ALG_LIST +# in the unix.yml and weekly.yml GitHub Actions workflows upstreams: - name: libjade From e1b0edf31fb302c25dbf2bb7897fc28a15454674 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 23 Apr 2024 01:46:56 +0200 Subject: [PATCH 60/82] rename libjade asm files from *.s to *.S Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.py | 8 +++++++- src/kem/kyber/CMakeLists.txt | 8 ++++---- src/kem/kyber/libjade_kyber512_avx2/{kem.s => kem.S} | 0 src/kem/kyber/libjade_kyber512_ref/{kem.s => kem.S} | 0 src/kem/kyber/libjade_kyber768_avx2/{kem.s => kem.S} | 0 src/kem/kyber/libjade_kyber768_ref/{kem.s => kem.S} | 0 6 files changed, 11 insertions(+), 5 deletions(-) rename src/kem/kyber/libjade_kyber512_avx2/{kem.s => kem.S} (100%) rename src/kem/kyber/libjade_kyber512_ref/{kem.s => kem.S} (100%) rename src/kem/kyber/libjade_kyber768_avx2/{kem.s => kem.S} (100%) rename src/kem/kyber/libjade_kyber768_ref/{kem.s => kem.S} (100%) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 75b89cb09..2a22d1268 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -467,10 +467,16 @@ def handle_implementation(impl, family, scheme, dst_basedir): # Flatten directory structure while copying relevant files from libjade repo for root, _, files in os.walk(origfolder): for file in files: - if os.path.splitext(file)[1].lower() in ['.c', '.h', '.s']: + if os.path.splitext(file)[1] in ['.c', '.h']: source_path = os.path.join(root, file) dest_path = os.path.join(srcfolder, file) subprocess.run(['cp', source_path, dest_path]) + if os.path.splitext(file)[1] in ['.s']: + file_name, file_ext = os.path.splitext(file) + new_file = ''.join([file_name, file_ext.upper()]) + source_path = os.path.join(root, file) + dest_path = os.path.join(srcfolder, new_file) + subprocess.run(['cp', source_path, dest_path]) else: # determine list of files to copy: if 'sources' in i: diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 4aabeeddb..7a9af8240 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -92,14 +92,14 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START if(OQS_ENABLE_LIBJADE_KEM_kyber_512) - add_library(jasmin_kyber_512_ref OBJECT kem_kyber_512.c libjade_kyber512_ref/api.c libjade_kyber512_ref/kem.s) + add_library(jasmin_kyber_512_ref OBJECT kem_kyber_512.c libjade_kyber512_ref/api.c libjade_kyber512_ref/kem.S) target_include_directories(jasmin_kyber_512_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_ref) target_include_directories(jasmin_kyber_512_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) - add_library(jasmin_kyber_512_avx2 OBJECT libjade_kyber512_avx2/api.c libjade_kyber512_avx2/kem.s) + add_library(jasmin_kyber_512_avx2 OBJECT libjade_kyber512_avx2/api.c libjade_kyber512_avx2/kem.S) target_include_directories(jasmin_kyber_512_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_avx2) target_include_directories(jasmin_kyber_512_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) target_compile_options(jasmin_kyber_512_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) @@ -107,14 +107,14 @@ if(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768) - add_library(jasmin_kyber_768_ref OBJECT kem_kyber_768.c libjade_kyber768_ref/api.c libjade_kyber768_ref/kem.s) + add_library(jasmin_kyber_768_ref OBJECT kem_kyber_768.c libjade_kyber768_ref/api.c libjade_kyber768_ref/kem.S) target_include_directories(jasmin_kyber_768_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_ref) target_include_directories(jasmin_kyber_768_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) - add_library(jasmin_kyber_768_avx2 OBJECT libjade_kyber768_avx2/api.c libjade_kyber768_avx2/kem.s) + add_library(jasmin_kyber_768_avx2 OBJECT libjade_kyber768_avx2/api.c libjade_kyber768_avx2/kem.S) target_include_directories(jasmin_kyber_768_avx2 PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_avx2) target_include_directories(jasmin_kyber_768_avx2 PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) target_compile_options(jasmin_kyber_768_avx2 PRIVATE -mavx2 -mbmi2 -mpopcnt ) diff --git a/src/kem/kyber/libjade_kyber512_avx2/kem.s b/src/kem/kyber/libjade_kyber512_avx2/kem.S similarity index 100% rename from src/kem/kyber/libjade_kyber512_avx2/kem.s rename to src/kem/kyber/libjade_kyber512_avx2/kem.S diff --git a/src/kem/kyber/libjade_kyber512_ref/kem.s b/src/kem/kyber/libjade_kyber512_ref/kem.S similarity index 100% rename from src/kem/kyber/libjade_kyber512_ref/kem.s rename to src/kem/kyber/libjade_kyber512_ref/kem.S diff --git a/src/kem/kyber/libjade_kyber768_avx2/kem.s b/src/kem/kyber/libjade_kyber768_avx2/kem.S similarity index 100% rename from src/kem/kyber/libjade_kyber768_avx2/kem.s rename to src/kem/kyber/libjade_kyber768_avx2/kem.S diff --git a/src/kem/kyber/libjade_kyber768_ref/kem.s b/src/kem/kyber/libjade_kyber768_ref/kem.S similarity index 100% rename from src/kem/kyber/libjade_kyber768_ref/kem.s rename to src/kem/kyber/libjade_kyber768_ref/kem.S From 17ed11ec127516724a73b8c998c73428220cc986 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 23 Apr 2024 02:01:01 +0200 Subject: [PATCH 61/82] end libjade_kyber*/api.c files with newline Signed-off-by: Pravek Sharma --- .../patches/libjade-kyber-api.patch | 24 +++++++++---------- src/kem/kyber/libjade_kyber512_avx2/api.c | 2 +- src/kem/kyber/libjade_kyber512_ref/api.c | 2 +- src/kem/kyber/libjade_kyber768_avx2/api.c | 2 +- src/kem/kyber/libjade_kyber768_ref/api.c | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch index 1797a08dc..74c331cf5 100644 --- a/scripts/copy_from_upstream/patches/libjade-kyber-api.patch +++ b/scripts/copy_from_upstream/patches/libjade-kyber-api.patch @@ -1,9 +1,9 @@ diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c new file mode 100644 -index 0000000..028d5ef +index 0000000..78436e7 --- /dev/null +++ b/src/crypto_kem/kyber/kyber512/amd64/avx2/api.c -@@ -0,0 +1,19 @@ +@@ -0,0 +1,20 @@ +#include +#include "api.h" + @@ -23,7 +23,7 @@ index 0000000..028d5ef +int libjade_kyber512_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); +} -\ No newline at end of file ++ diff --git a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h index 5148fd5..419112e 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/avx2/include/api.h @@ -76,10 +76,10 @@ index 5148fd5..419112e 100644 #endif diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/api.c b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c new file mode 100644 -index 0000000..97a698d +index 0000000..e06e406 --- /dev/null +++ b/src/crypto_kem/kyber/kyber512/amd64/ref/api.c -@@ -0,0 +1,19 @@ +@@ -0,0 +1,20 @@ +#include +#include "api.h" + @@ -99,7 +99,7 @@ index 0000000..97a698d +int libjade_kyber512_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} -\ No newline at end of file ++ diff --git a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h index 38127cf..fcce52b 100644 --- a/src/crypto_kem/kyber/kyber512/amd64/ref/include/api.h @@ -153,10 +153,10 @@ index 38127cf..fcce52b 100644 #endif diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c new file mode 100644 -index 0000000..130027f +index 0000000..9eeab1d --- /dev/null +++ b/src/crypto_kem/kyber/kyber768/amd64/avx2/api.c -@@ -0,0 +1,19 @@ +@@ -0,0 +1,20 @@ +#include +#include "api.h" + @@ -176,7 +176,7 @@ index 0000000..130027f +int libjade_kyber768_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); +} -\ No newline at end of file ++ diff --git a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h index d3b3500..ac36577 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/avx2/include/api.h @@ -229,10 +229,10 @@ index d3b3500..ac36577 100644 #endif diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/api.c b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c new file mode 100644 -index 0000000..c2473e8 +index 0000000..b9a29b6 --- /dev/null +++ b/src/crypto_kem/kyber/kyber768/amd64/ref/api.c -@@ -0,0 +1,19 @@ +@@ -0,0 +1,20 @@ +#include +#include "api.h" + @@ -252,7 +252,7 @@ index 0000000..c2473e8 +int libjade_kyber768_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { + return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); +} -\ No newline at end of file ++ diff --git a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h b/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h index e23e1bf..0c453e0 100644 --- a/src/crypto_kem/kyber/kyber768/amd64/ref/include/api.h diff --git a/src/kem/kyber/libjade_kyber512_avx2/api.c b/src/kem/kyber/libjade_kyber512_avx2/api.c index 028d5efb8..ec6ff905c 100644 --- a/src/kem/kyber/libjade_kyber512_avx2/api.c +++ b/src/kem/kyber/libjade_kyber512_avx2/api.c @@ -16,4 +16,4 @@ int libjade_kyber512_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const int libjade_kyber512_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { return jade_kem_kyber_kyber512_amd64_avx2_dec( shared_secret, ciphertext, secret_key); -} \ No newline at end of file +} diff --git a/src/kem/kyber/libjade_kyber512_ref/api.c b/src/kem/kyber/libjade_kyber512_ref/api.c index 97a698d3e..7b11f7309 100644 --- a/src/kem/kyber/libjade_kyber512_ref/api.c +++ b/src/kem/kyber/libjade_kyber512_ref/api.c @@ -16,4 +16,4 @@ int libjade_kyber512_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const int libjade_kyber512_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { return jade_kem_kyber_kyber512_amd64_ref_dec(shared_secret, ciphertext, secret_key); -} \ No newline at end of file +} diff --git a/src/kem/kyber/libjade_kyber768_avx2/api.c b/src/kem/kyber/libjade_kyber768_avx2/api.c index 130027fe0..d5046c43a 100644 --- a/src/kem/kyber/libjade_kyber768_avx2/api.c +++ b/src/kem/kyber/libjade_kyber768_avx2/api.c @@ -16,4 +16,4 @@ int libjade_kyber768_avx2_enc(uint8_t *ciphertext, uint8_t *shared_secret, const int libjade_kyber768_avx2_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { return jade_kem_kyber_kyber768_amd64_avx2_dec(shared_secret, ciphertext, secret_key); -} \ No newline at end of file +} diff --git a/src/kem/kyber/libjade_kyber768_ref/api.c b/src/kem/kyber/libjade_kyber768_ref/api.c index c2473e83a..bacb123a5 100644 --- a/src/kem/kyber/libjade_kyber768_ref/api.c +++ b/src/kem/kyber/libjade_kyber768_ref/api.c @@ -16,4 +16,4 @@ int libjade_kyber768_ref_enc(uint8_t *ciphertext, uint8_t *shared_secret, const int libjade_kyber768_ref_dec(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { return jade_kem_kyber_kyber768_amd64_ref_dec(shared_secret, ciphertext, secret_key); -} \ No newline at end of file +} From 6368bcc40b1e24685b993ec7faf1b23c7e46fa25 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 24 Apr 2024 20:38:23 +0200 Subject: [PATCH 62/82] fix kem template to prevent duplicate symbols in object files Signed-off-by: Pravek Sharma --- .../copy_from_upstream/src/kem/family/CMakeLists.txt.libjade | 2 +- src/kem/kyber/CMakeLists.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade index c90b2431e..8df1271f2 100644 --- a/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade +++ b/scripts/copy_from_upstream/src/kem/family/CMakeLists.txt.libjade @@ -22,7 +22,7 @@ endif() {%- if impl['name'] == scheme['default_implementation'] %} if(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme_c'] }}{%- if 'alias_scheme' in scheme %} OR OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %}) - add_library(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT kem_{{ family }}_{{ scheme['scheme'] }}.c {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) + add_library(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} OBJECT {% for source_file in impl['sources']|sort -%}{{ impl['upstream']['name'] }}_{{ scheme['pqclean_scheme'] }}_{{ impl['name'] }}/{{ source_file }}{%- if not loop.last %} {% endif -%}{%- endfor -%}) {%- if impl['compile_opts'] %} target_compile_options(jasmin_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }} PUBLIC {{ impl['compile_opts'] }}) {%- endif -%} diff --git a/src/kem/kyber/CMakeLists.txt b/src/kem/kyber/CMakeLists.txt index 7a9af8240..c1e3e845c 100644 --- a/src/kem/kyber/CMakeLists.txt +++ b/src/kem/kyber/CMakeLists.txt @@ -92,7 +92,7 @@ endif() ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_CMAKELISTS_START if(OQS_ENABLE_LIBJADE_KEM_kyber_512) - add_library(jasmin_kyber_512_ref OBJECT kem_kyber_512.c libjade_kyber512_ref/api.c libjade_kyber512_ref/kem.S) + add_library(jasmin_kyber_512_ref OBJECT libjade_kyber512_ref/api.c libjade_kyber512_ref/kem.S) target_include_directories(jasmin_kyber_512_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber512_ref) target_include_directories(jasmin_kyber_512_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) @@ -107,7 +107,7 @@ if(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) endif() if(OQS_ENABLE_LIBJADE_KEM_kyber_768) - add_library(jasmin_kyber_768_ref OBJECT kem_kyber_768.c libjade_kyber768_ref/api.c libjade_kyber768_ref/kem.S) + add_library(jasmin_kyber_768_ref OBJECT libjade_kyber768_ref/api.c libjade_kyber768_ref/kem.S) target_include_directories(jasmin_kyber_768_ref PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libjade_kyber768_ref) target_include_directories(jasmin_kyber_768_ref PRIVATE ${PROJECT_SOURCE_DIR}/src/common/libjade_shims) set(_KYBER_OBJS ${_KYBER_OBJS} $) From 2255ed73c9d6f330aeac4ca8dd3ba22264e34524 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 24 Apr 2024 20:49:26 +0200 Subject: [PATCH 63/82] fix indentation in weekly.yml Signed-off-by: Pravek Sharma --- .github/workflows/weekly.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index e47e48a8f..a1c03fd80 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -57,11 +57,11 @@ jobs: container: openquantumsafe/ci-ubuntu-focal-x86_64:latest CMAKE_ARGS: -DOQS_DIST_BUILD=OFF -DOQS_OPT_TARGET=haswell PYTEST_ARGS: --numprocesses=auto -k 'test_kat_all' - libjade-build: - - -DOQS_LIBJADE_BUILD=OFF - # Restrict -DOQS_LIBJADE_BUILD=ON build to algs provided by - # libjade to minimise repeated tests - - -DOQS_LIBJADE_BUILD=ON -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST + libjade-build: + - -DOQS_LIBJADE_BUILD=OFF + # Restrict -DOQS_LIBJADE_BUILD=ON build to algs provided by + # libjade to minimise repeated tests + - -DOQS_LIBJADE_BUILD=ON -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST container: image: ${{ matrix.container }} steps: From 3783c4f93e410d11fffd5c4f6e7cd8e7ed67a082 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 24 Apr 2024 21:03:54 +0200 Subject: [PATCH 64/82] skip testing libjade on macos-14 in CI Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index b512c9373..2c4b368a4 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -234,6 +234,11 @@ jobs: # Restrict -DOQS_LIBJADE_BUILD=ON build to algs provided by # libjade to minimise repeated tests - -DOQS_LIBJADE_BUILD=ON -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST + exclude: + # macos-14 runs on aarch64, libjade targets x86 + # Skip testing libjade on macos-14 + - os: macos-14 + libjade-build: -DOQS_LIBJADE_BUILD=ON -DOQS_MINIMAL_BUILD=$LIBJADE_ALG_LIST runs-on: ${{ matrix.os }} steps: - name: Checkout code From 5c406969e86253babfa478c1f9de1601d45f9f0d Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 24 Apr 2024 23:25:46 +0200 Subject: [PATCH 65/82] use release tag/branch with libjade upstream url instead of commit Signed-off-by: Pravek Sharma --- docs/algorithms/kem/kyber.md | 2 +- docs/algorithms/kem/kyber.yml | 4 ++-- scripts/copy_from_upstream/copy_from_libjade.yml | 3 ++- scripts/copy_from_upstream/copy_from_upstream.py | 5 ++++- scripts/copy_from_upstream/update_upstream_alg_docs.py | 4 ++-- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/docs/algorithms/kem/kyber.md b/docs/algorithms/kem/kyber.md index a0fff5808..d2cbbaef0 100644 --- a/docs/algorithms/kem/kyber.md +++ b/docs/algorithms/kem/kyber.md @@ -15,7 +15,7 @@ - **Implementation license (SPDX-Identifier)**: CC0-1.0 and (CC0-1.0 or Apache-2.0) and (CC0-1.0 or MIT) and MIT - **Formally-verified Implementation sources**: - **libjade**: - - **Source**: https://github.com/formosa-crypto/lib/commit/555e23342471bea8544c356bdae230baf064ed56 with copy_from_upstream patches + - **Source**: https://github.com/formosa-crypto/libjade/tree/release/2023.05-1 with copy_from_upstream patches - **Implementation license (SPDX-Identifier)**: CC0-1.0 diff --git a/docs/algorithms/kem/kyber.yml b/docs/algorithms/kem/kyber.yml index 3cdce8ff1..0da8c542d 100644 --- a/docs/algorithms/kem/kyber.yml +++ b/docs/algorithms/kem/kyber.yml @@ -28,8 +28,8 @@ optimized-upstreams: and MIT formally-verified-upstreams: libjade: - source: https://github.com/formosa-crypto/lib/commit/555e23342471bea8544c356bdae230baf064ed56 - with copy_from_upstream patches + source: https://github.com/formosa-crypto/libjade/tree/release/2023.05-1 with + copy_from_upstream patches spdx-license-identifier: CC0-1.0 parameter-sets: - name: Kyber512 diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index 9d0c64cae..30571771b 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -6,8 +6,9 @@ upstreams: - name: libjade - git_url: https://github.com/formosa-crypto/libjade + git_url: https://github.com/formosa-crypto/libjade.git git_branch: release/2023.05-1 + # git_commit: release/2023.05-1 git_commit: 555e23342471bea8544c356bdae230baf064ed56 kem_meta_path: 'src/crypto_kem/{family}/{pqclean_scheme}/META.yml' kem_scheme_path: 'src/crypto_kem/{family}/{pqclean_scheme}' diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 2a22d1268..676d228d2 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -145,7 +145,10 @@ def load_instructions(file): shell(['git', 'init', work_dir]) shell(['git', '--git-dir', work_dotgit, 'remote', 'add', 'origin', upstream_git_url]) shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'remote', 'set-url', 'origin', upstream_git_url]) - shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'fetch', '--depth=1', 'origin', upstream_git_commit]) + if file == 'copy_from_libjade.yml': + shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'fetch', '--depth=1', 'origin', upstream_git_branch]) + else: + shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'fetch', '--depth=1', 'origin', upstream_git_commit]) shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'reset', '--hard', upstream_git_commit]) if file == 'copy_from_libjade.yml': shell(['make', '-C', os.path.join(work_dir, 'src')]) diff --git a/scripts/copy_from_upstream/update_upstream_alg_docs.py b/scripts/copy_from_upstream/update_upstream_alg_docs.py index 92121fe8f..9bcc98eb1 100755 --- a/scripts/copy_from_upstream/update_upstream_alg_docs.py +++ b/scripts/copy_from_upstream/update_upstream_alg_docs.py @@ -261,8 +261,8 @@ def update_libjade_kem_alg_docs(liboqs_root, kems, upstream_info, write_changes= lhs = oqs_yaml['formally-verified-upstreams'][upstream['name']]['source'] else: lhs = '' - git_commit = upstream['git_commit'] - oqs_yaml['formally-verified-upstreams'][upstream['name']]['source'] = rhs_if_not_equal(lhs, ("{}/commit/{}"+patches_done).format(verified_upstream_base_url, git_commit), "formally-verified-upstreams") + git_branch = upstream['git_branch'] + oqs_yaml['formally-verified-upstreams'][upstream['name']]['source'] = rhs_if_not_equal(lhs, ("{}/tree/{}"+patches_done).format(verified_upstream_base_url, git_branch), "formally-verified-upstreams") index, oqs_scheme_yaml = get_oqs_yaml(oqs_yaml['parameter-sets'], scheme['pretty_name_full']) From 05b069e5ee559e9b13cc234af46b5daecb8b5722 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 04:01:18 +0200 Subject: [PATCH 66/82] fix build error when OQS_ENABLE_LIBJADE_KEM_ALG=OFF Signed-off-by: Pravek Sharma --- .CMake/alg_support.cmake | 4 ++-- CMakeLists.txt | 6 ++--- CONFIGURE.md | 9 +++++++- .../add_enable_by_alg.libjade | 2 +- .../add_enable_by_alg_conditional.libjade | 2 +- .../src/kem/family/kem_scheme.c | 12 +++++----- .../add_alg_enable_defines.libjade | 22 +++++++++---------- src/common/CMakeLists.txt | 6 ++++- src/kem/kyber/kem_kyber_512.c | 12 +++++----- src/kem/kyber/kem_kyber_768.c | 12 +++++----- src/oqsconfig.h.cmake | 12 +++++----- 11 files changed, 54 insertions(+), 45 deletions(-) diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index b5e3bf9d4..1d6e8f953 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -169,7 +169,7 @@ cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake_256s_simple "" ON "OQS_ENABL ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_END ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_START -if(OQS_LIBJADE_BUILD) +if ((OQS_LIBJADE_BUILD STREQUAL ON)) option(OQS_ENABLE_LIBJADE_KEM_KYBER "Enable libjade implementation of kyber algorithm family" ON) cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512 "" ON "OQS_ENABLE_LIBJADE_KEM_KYBER" OFF) @@ -507,7 +507,7 @@ endif() ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_END ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_START -if(OQS_LIBJADE_BUILD) +if ((OQS_LIBJADE_BUILD STREQUAL ON)) if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) diff --git a/CMakeLists.txt b/CMakeLists.txt index f74def257..be0dd1836 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,10 +30,8 @@ option(OQS_EMBEDDED_BUILD "Compile liboqs for an Embedded environment without a set(OQS_OPT_TARGET auto CACHE STRING "The target microarchitecture for optimization.") -if(OQS_LIBJADE_BUILD) - set(OQS_LIBJADE_BUILD_BIN 1) -else() - set(OQS_LIBJADE_BUILD_BIN 0) +if (NOT (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") AND (OQS_LIBJADE_BUILD STREQUAL ON)) + message(FATAL_ERROR "Building liboqs with libjade implementations from libjade is only supported on Linux and Darwin.") endif() set(CMAKE_C_STANDARD 11) diff --git a/CONFIGURE.md b/CONFIGURE.md index d3f161079..aad4887ea 100644 --- a/CONFIGURE.md +++ b/CONFIGURE.md @@ -20,6 +20,7 @@ The following options can be passed to CMake before the build file generation pr - [OQS_STRICT_WARNINGS](#OQS_STRICT_WARNINGS) - [OQS_EMBEDDED_BUILD](#OQS_EMBEDDED_BUILD) - [OQS_LIBJADE_BUILD](#OQS_LIBJADE_BUILD) +- [OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG](#OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG) ## BUILD_SHARED_LIBS @@ -182,4 +183,10 @@ Can be `ON` or `OFF`. When `ON` liboqs is built to use high assurance implementa At the moment, Libjade only provides Kyber512 and Kyber768 KEMs. -**Default** `OFF`. \ No newline at end of file +**Default** `OFF`. + +## OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG + +Note: `ALG` in `OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG` should be replaced with the specific algorithm name as demonstrated in [OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG](#OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG). + +**Default**: `OFF` if [OQS_LIBJADE_BUILD](#OQS_LIBJADE_BUILD) is `OFF` else unset. \ No newline at end of file diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade index dafb4110c..31cc171b1 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade @@ -1,5 +1,5 @@ -if(OQS_LIBJADE_BUILD) +if ((OQS_LIBJADE_BUILD STREQUAL ON)) {% for family in instructions['kems'] %} option(OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} "Enable libjade implementation of {{ family['name'] }} algorithm family" ON) {%- for scheme in family['schemes'] %} diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade index 848e0ed1e..e932276a4 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade @@ -1,5 +1,5 @@ -if(OQS_LIBJADE_BUILD) +if ((OQS_LIBJADE_BUILD STREQUAL ON)) {% for family in instructions['kems'] %} {%- for scheme in family['schemes'] %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index 3070c8aea..855f8139f 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -130,7 +130,7 @@ extern int libjade_{{ scheme['pqclean_scheme_c'] }}_{{ impl['name'] }}_dec(uint8 OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t *public_key, uint8_t *secret_key) { {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}){%- endif %}) {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -164,7 +164,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * #endif {%- endif %} {% endfor -%} -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }} {%- if 'alias_scheme' in scheme %} || OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %})*/ {%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -204,7 +204,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}){%- endif %}) {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -238,7 +238,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c #endif {%- endif %} {% endfor -%} -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }} {%- if 'alias_scheme' in scheme %} || OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %})*/ {%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -278,7 +278,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}){%- endif %}) {%- for scheme in schemes %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} @@ -312,7 +312,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s #endif {%- endif %} {% endfor -%} -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }} {%- if 'alias_scheme' in scheme %} || OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}{%- endif %})*/ {%- endif %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} {%- if loop.first %} diff --git a/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade index cf99b16f2..cb4b25c7a 100644 --- a/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade +++ b/scripts/copy_from_upstream/src/oqsconfig.h.cmake/add_alg_enable_defines.libjade @@ -1,17 +1,17 @@ {% for family in instructions['kems'] %} -#cmakedefine OQS_LIBJADE_BUILD @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine01 OQS_LIBJADE_BUILD -#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} 1 {%- for scheme in family['schemes'] %} -#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }} 1 {%- if 'alias_scheme' in scheme %} -#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }} 1 {%- endif -%} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} -#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} 1 {%- if 'alias_scheme' in scheme %} -#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} 1 {%- endif -%} {%- endfor -%} {%- endfor -%} @@ -19,16 +19,16 @@ {% for family in instructions['sigs'] %} -#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name']|upper }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name']|upper }} 1 {%- for scheme in family['schemes'] %} -#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }} 1 {%- if 'alias_scheme' in scheme %} -#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }} 1 {%- endif -%} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] %} -#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['scheme'] }}_{{ impl['name'] }} 1 {%- if 'alias_scheme' in scheme %} -#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_SIG_{{ family['name'] }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }} 1 {%- endif -%} {%- endfor -%} {%- endfor -%} diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index f0bc12c93..c59c04661 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -71,6 +71,10 @@ else() # using XKCP set(SHA3_IMPL sha3/xkcp_sha3.c sha3/xkcp_sha3x4.c) endif() +if ((OQS_LIBJADE_BUILD STREQUAL ON)) + set(LIBJADE_RANDOMBYTES libjade_shims/libjade_randombytes.c) +endif() + add_library(common OBJECT ${AES_IMPL} aes/aes.c ${SHA2_IMPL} sha2/sha2.c ${SHA3_IMPL} sha3/sha3.c sha3/sha3x4.c @@ -78,7 +82,7 @@ add_library(common OBJECT ${AES_IMPL} aes/aes.c common.c pqclean_shims/fips202.c pqclean_shims/fips202x4.c - libjade_shims/libjade_randombytes.c + ${LIBJADE_RANDOMBYTES} rand/rand.c) # Implementations of the internal API to be exposed to test programs diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index 74b6e3906..a1b52b089 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -60,7 +60,7 @@ extern int libjade_kyber512_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8 OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secret_key) { -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_kyber_512)) #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -84,7 +84,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre #else return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); #endif -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_kyber_512)*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -112,7 +112,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre } OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_kyber_512)) #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -136,7 +136,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared #else return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); #endif -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_kyber_512)*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -164,7 +164,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared } OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_kyber_512)) #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -188,7 +188,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_ #else return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); #endif -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_kyber_512)*/ #if defined(OQS_ENABLE_KEM_kyber_512_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index 80d1d170e..0b1aae689 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -60,7 +60,7 @@ extern int libjade_kyber768_avx2_dec(uint8_t *ss, const uint8_t *ct, const uint8 OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secret_key) { -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_kyber_768)) #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -84,7 +84,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre #else return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); #endif -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_kyber_768)*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -112,7 +112,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre } OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key) { -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_kyber_768)) #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -136,7 +136,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared #else return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); #endif -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_kyber_768)*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -164,7 +164,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared } OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_t *ciphertext, const uint8_t *secret_key) { -#if OQS_LIBJADE_BUILD +#if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_kyber_768)) #if defined(OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { @@ -188,7 +188,7 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_ #else return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); #endif -#else /*OQS_LIBJADE_BUILD*/ +#else /*OQS_LIBJADE_BUILD && (OQS_ENABLE_LIBJADE_KEM_kyber_768)*/ #if defined(OQS_ENABLE_KEM_kyber_768_avx2) #if defined(OQS_DIST_BUILD) if (OQS_CPU_has_extension(OQS_CPU_EXT_AVX2) && OQS_CPU_has_extension(OQS_CPU_EXT_BMI2) && OQS_CPU_has_extension(OQS_CPU_EXT_POPCNT)) { diff --git a/src/oqsconfig.h.cmake b/src/oqsconfig.h.cmake index 0ed3a2741..e506c8dc3 100644 --- a/src/oqsconfig.h.cmake +++ b/src/oqsconfig.h.cmake @@ -193,11 +193,11 @@ ///// OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ALG_ENABLE_DEFINES_START -#cmakedefine OQS_LIBJADE_BUILD @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine01 OQS_LIBJADE_BUILD -#cmakedefine OQS_ENABLE_LIBJADE_KEM_KYBER @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512 @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2 @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768 @OQS_LIBJADE_BUILD_BIN@ -#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2 @OQS_LIBJADE_BUILD_BIN@ +#cmakedefine OQS_ENABLE_LIBJADE_KEM_KYBER 1 +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512 1 +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_512_avx2 1 +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768 1 +#cmakedefine OQS_ENABLE_LIBJADE_KEM_kyber_768_avx2 1 ///// OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ALG_ENABLE_DEFINES_END From 54598adeaa17077410cce6f4972e85ccf9d2acf9 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 04:35:14 +0200 Subject: [PATCH 67/82] initialize LIBJADE_RANDOMBYTES when OQS_LIBJADE_BUILD=OFF Signed-off-by: Pravek Sharma --- src/common/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index c59c04661..c6920a824 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -73,6 +73,8 @@ endif() if ((OQS_LIBJADE_BUILD STREQUAL ON)) set(LIBJADE_RANDOMBYTES libjade_shims/libjade_randombytes.c) +else() + set(LIBJADE_RANDOMBYTES "") endif() add_library(common OBJECT ${AES_IMPL} aes/aes.c From 5b11e20e2edbe36c186b1821fbe16c99a482600d Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 04:35:54 +0200 Subject: [PATCH 68/82] remove redundant comment Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_libjade.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index 30571771b..49ad9fb68 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -8,7 +8,6 @@ upstreams: name: libjade git_url: https://github.com/formosa-crypto/libjade.git git_branch: release/2023.05-1 - # git_commit: release/2023.05-1 git_commit: 555e23342471bea8544c356bdae230baf064ed56 kem_meta_path: 'src/crypto_kem/{family}/{pqclean_scheme}/META.yml' kem_scheme_path: 'src/crypto_kem/{family}/{pqclean_scheme}' From f5f64f31c224d3a120b7c149e868106d5a2dc168 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 04:45:24 +0200 Subject: [PATCH 69/82] fix comment typo Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_upstream.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index 676d228d2..f301e3c4f 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -66,7 +66,7 @@ def shell(command, expect=0): raise Exception("'{}' failed with error {}. Expected {}.".format(" ".join(command), ret, expect)) # Generate template from specified scheme to replace old file in 'copy' mode -# but preserves additions made to file made in prior runs of 'libjade' mode +# but preserves additions made to file in prior runs of 'libjade' mode def generator(destination_file_path, template_filename, delimiter, family, scheme_desired): template = file_get_contents( os.path.join(os.environ['LIBOQS_DIR'], 'scripts', 'copy_from_upstream', template_filename)) From b8cd0be9f108cb5daf322f50e74bc6ecc835fb34 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 22:30:42 +0200 Subject: [PATCH 70/82] make string explicit when comparing with variable in cmake Signed-off-by: Pravek Sharma --- .CMake/alg_support.cmake | 4 ++-- .../.CMake/alg_support.cmake/add_enable_by_alg.libjade | 2 +- .../alg_support.cmake/add_enable_by_alg_conditional.libjade | 2 +- src/common/CMakeLists.txt | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.CMake/alg_support.cmake b/.CMake/alg_support.cmake index 1d6e8f953..d6d4dd6df 100644 --- a/.CMake/alg_support.cmake +++ b/.CMake/alg_support.cmake @@ -169,7 +169,7 @@ cmake_dependent_option(OQS_ENABLE_SIG_sphincs_shake_256s_simple "" ON "OQS_ENABL ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_END ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_START -if ((OQS_LIBJADE_BUILD STREQUAL ON)) +if ((OQS_LIBJADE_BUILD STREQUAL "ON")) option(OQS_ENABLE_LIBJADE_KEM_KYBER "Enable libjade implementation of kyber algorithm family" ON) cmake_dependent_option(OQS_ENABLE_LIBJADE_KEM_kyber_512 "" ON "OQS_ENABLE_LIBJADE_KEM_KYBER" OFF) @@ -507,7 +507,7 @@ endif() ##### OQS_COPY_FROM_UPSTREAM_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_END ##### OQS_COPY_FROM_LIBJADE_FRAGMENT_ADD_ENABLE_BY_ALG_CONDITIONAL_START -if ((OQS_LIBJADE_BUILD STREQUAL ON)) +if ((OQS_LIBJADE_BUILD STREQUAL "ON")) if(CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") if(OQS_DIST_X86_64_BUILD OR (OQS_USE_AVX2_INSTRUCTIONS AND OQS_USE_BMI2_INSTRUCTIONS AND OQS_USE_POPCNT_INSTRUCTIONS)) diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade index 31cc171b1..8d0af0aa5 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg.libjade @@ -1,5 +1,5 @@ -if ((OQS_LIBJADE_BUILD STREQUAL ON)) +if ((OQS_LIBJADE_BUILD STREQUAL "ON")) {% for family in instructions['kems'] %} option(OQS_ENABLE_LIBJADE_KEM_{{ family['name']|upper }} "Enable libjade implementation of {{ family['name'] }} algorithm family" ON) {%- for scheme in family['schemes'] %} diff --git a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade index e932276a4..82da652df 100644 --- a/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade +++ b/scripts/copy_from_upstream/.CMake/alg_support.cmake/add_enable_by_alg_conditional.libjade @@ -1,5 +1,5 @@ -if ((OQS_LIBJADE_BUILD STREQUAL ON)) +if ((OQS_LIBJADE_BUILD STREQUAL "ON")) {% for family in instructions['kems'] %} {%- for scheme in family['schemes'] %} {%- for impl in scheme['metadata']['implementations'] if impl['name'] != family['default_implementation'] and impl['supported_platforms'] -%} diff --git a/src/common/CMakeLists.txt b/src/common/CMakeLists.txt index c6920a824..601beae43 100644 --- a/src/common/CMakeLists.txt +++ b/src/common/CMakeLists.txt @@ -71,7 +71,7 @@ else() # using XKCP set(SHA3_IMPL sha3/xkcp_sha3.c sha3/xkcp_sha3x4.c) endif() -if ((OQS_LIBJADE_BUILD STREQUAL ON)) +if ((OQS_LIBJADE_BUILD STREQUAL "ON")) set(LIBJADE_RANDOMBYTES libjade_shims/libjade_randombytes.c) else() set(LIBJADE_RANDOMBYTES "") From efb20eba9398ad8320e58195ca44e1d466de77ef Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 22:33:28 +0200 Subject: [PATCH 71/82] add libjade kyber licensing to README.md Signed-off-by: Pravek Sharma --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 53ef332e2..8a1900c8a 100644 --- a/README.md +++ b/README.md @@ -188,6 +188,7 @@ liboqs includes some third party libraries or modules that are licensed differen - `src/kem/classic_mceliece/pqclean_*`: public domain - `src/kem/kyber/pqcrystals-*`: public domain (CC0) or Apache License v2.0 - `src/kem/kyber/pqclean_*`: public domain (CC0), and public domain (CC0) or Apache License v2.0, and public domain (CC0) or MIT, and MIT +- `src/kem/kyber/libjade_*` public domain (CC0) - `src/kem/ml_kem/pqcrystals-*`: public domain (CC0) or Apache License v2.0 - `src/sig/dilithium/pqcrystals-*`: public domain (CC0) or Apache License v2.0 - `src/sig/dilithium/pqclean_*`: public domain (CC0), and public domain (CC0) or Apache License v2.0, and public domain (CC0) or MIT, and MIT From 2107194e53be07030058bffc4f63f3fdfd370c0c Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 22:57:49 +0200 Subject: [PATCH 72/82] remove reference to oldpqclean_kyber* code from libjade if branchin kem_kyber_*.c Signed-off-by: Pravek Sharma --- CMakeLists.txt | 8 ++--- CONFIGURE.md | 2 ++ .../src/kem/family/kem_scheme.c | 6 ++-- src/kem/kyber/kem_kyber_512.c | 30 ------------------- src/kem/kyber/kem_kyber_768.c | 30 ------------------- 5 files changed, 9 insertions(+), 67 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index be0dd1836..07ac90bf1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,10 +30,6 @@ option(OQS_EMBEDDED_BUILD "Compile liboqs for an Embedded environment without a set(OQS_OPT_TARGET auto CACHE STRING "The target microarchitecture for optimization.") -if (NOT (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") AND (OQS_LIBJADE_BUILD STREQUAL ON)) - message(FATAL_ERROR "Building liboqs with libjade implementations from libjade is only supported on Linux and Darwin.") -endif() - set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_POSITION_INDEPENDENT_CODE ON) @@ -100,6 +96,10 @@ else() message(FATAL_ERROR "Unknown or unsupported processor: " ${CMAKE_SYSTEM_PROCESSOR} ". Override by setting OQS_PERMIT_UNSUPPORTED_ARCHITECTURE=ON") endif() +if (NOT (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") AND (OQS_LIBJADE_BUILD STREQUAL ON) AND (ARCH_X86_64 STREQUAL "ON")) + message(FATAL_ERROR "Building liboqs with libjade implementations from libjade is only supported on Linux and Darwin on x86_64.") +endif() + # intentionally don't switch to variables to avoid --warn-uninitialized report if(OQS_USE_CPU_EXTENSIONS) message(FATAL_ERROR "OQS_USE_CPU_EXTENSIONS is deprecated") diff --git a/CONFIGURE.md b/CONFIGURE.md index aad4887ea..76165eb85 100644 --- a/CONFIGURE.md +++ b/CONFIGURE.md @@ -183,6 +183,8 @@ Can be `ON` or `OFF`. When `ON` liboqs is built to use high assurance implementa At the moment, Libjade only provides Kyber512 and Kyber768 KEMs. +At the moment, libjade only supports Linux and Darwin based operating systems on x86_64 platforms. + **Default** `OFF`. ## OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG diff --git a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c index 855f8139f..2560d1794 100644 --- a/scripts/copy_from_upstream/src/kem/family/kem_scheme.c +++ b/scripts/copy_from_upstream/src/kem/family/kem_scheme.c @@ -132,7 +132,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_keypair(uint8_t * {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}){%- endif %}) {%- for scheme in schemes %} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] and impl['name'] in scheme['libjade_implementations'] %} {%- if loop.first %} #if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- else %} @@ -206,7 +206,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_encaps(uint8_t *c {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}){%- endif %}) {%- for scheme in schemes %} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] and impl['name'] in scheme['libjade_implementations'] %} {%- if loop.first %} #if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- else %} @@ -280,7 +280,7 @@ OQS_API OQS_STATUS OQS_KEM_{{ family }}_{{ scheme['scheme'] }}_decaps(uint8_t *s {%- if libjade_implementation is defined and scheme['libjade_implementation'] %} #if defined(OQS_LIBJADE_BUILD) && (defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['scheme'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_LIBJADE_KEM_{{ family }}_{{ scheme['alias_scheme'] }}){%- endif %}) {%- for scheme in schemes %} - {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] %} + {%- for impl in scheme['metadata']['implementations'] if impl['name'] != scheme['default_implementation'] and impl['name'] in scheme['libjade_implementations'] %} {%- if loop.first %} #if defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['scheme'] }}_{{ impl['name'] }}) {%- if 'alias_scheme' in scheme %} || defined(OQS_ENABLE_{%- if impl['name'] in scheme['libjade_implementations'] %}LIBJADE_{%- endif %}KEM_{{ family }}_{{ scheme['alias_scheme'] }}_{{ impl['name'] }}){%- endif %} {%- else %} diff --git a/src/kem/kyber/kem_kyber_512.c b/src/kem/kyber/kem_kyber_512.c index a1b52b089..e2b870713 100644 --- a/src/kem/kyber/kem_kyber_512.c +++ b/src/kem/kyber/kem_kyber_512.c @@ -71,16 +71,6 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) -#if defined(OQS_DIST_BUILD) - if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { -#endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_keypair(public_key, secret_key); -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); - } -#endif /* OQS_DIST_BUILD */ #else return (OQS_STATUS) libjade_kyber512_ref_keypair(public_key, secret_key); #endif @@ -123,16 +113,6 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_encaps(uint8_t *ciphertext, uint8_t *shared return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) -#if defined(OQS_DIST_BUILD) - if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { -#endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_enc(ciphertext, shared_secret, public_key); -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); - } -#endif /* OQS_DIST_BUILD */ #else return (OQS_STATUS) libjade_kyber512_ref_enc(ciphertext, shared_secret, public_key); #endif @@ -175,16 +155,6 @@ OQS_API OQS_STATUS OQS_KEM_kyber_512_decaps(uint8_t *shared_secret, const uint8_ return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_512_aarch64) -#if defined(OQS_DIST_BUILD) - if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { -#endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER512_AARCH64_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); - } -#endif /* OQS_DIST_BUILD */ #else return (OQS_STATUS) libjade_kyber512_ref_dec(shared_secret, ciphertext, secret_key); #endif diff --git a/src/kem/kyber/kem_kyber_768.c b/src/kem/kyber/kem_kyber_768.c index 0b1aae689..d1b792b5c 100644 --- a/src/kem/kyber/kem_kyber_768.c +++ b/src/kem/kyber/kem_kyber_768.c @@ -71,16 +71,6 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_keypair(uint8_t *public_key, uint8_t *secre return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) -#if defined(OQS_DIST_BUILD) - if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { -#endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_keypair(public_key, secret_key); -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); - } -#endif /* OQS_DIST_BUILD */ #else return (OQS_STATUS) libjade_kyber768_ref_keypair(public_key, secret_key); #endif @@ -123,16 +113,6 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_encaps(uint8_t *ciphertext, uint8_t *shared return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) -#if defined(OQS_DIST_BUILD) - if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { -#endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_enc(ciphertext, shared_secret, public_key); -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); - } -#endif /* OQS_DIST_BUILD */ #else return (OQS_STATUS) libjade_kyber768_ref_enc(ciphertext, shared_secret, public_key); #endif @@ -175,16 +155,6 @@ OQS_API OQS_STATUS OQS_KEM_kyber_768_decaps(uint8_t *shared_secret, const uint8_ return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); } #endif /* OQS_DIST_BUILD */ -#elif defined(OQS_ENABLE_KEM_kyber_768_aarch64) -#if defined(OQS_DIST_BUILD) - if (OQS_CPU_has_extension(OQS_CPU_EXT_ARM_NEON)) { -#endif /* OQS_DIST_BUILD */ - return (OQS_STATUS) PQCLEAN_KYBER768_AARCH64_crypto_kem_dec(shared_secret, ciphertext, secret_key); -#if defined(OQS_DIST_BUILD) - } else { - return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); - } -#endif /* OQS_DIST_BUILD */ #else return (OQS_STATUS) libjade_kyber768_ref_dec(shared_secret, ciphertext, secret_key); #endif From ad8d626d168babcb3fc3c8ab7edd49b60b24fa40 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 25 Apr 2024 22:18:07 -0400 Subject: [PATCH 73/82] Update CMakeLists.txt Co-authored-by: Spencer Wilson Signed-off-by: Pravek Sharma --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 07ac90bf1..be65d9cd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -96,7 +96,7 @@ else() message(FATAL_ERROR "Unknown or unsupported processor: " ${CMAKE_SYSTEM_PROCESSOR} ". Override by setting OQS_PERMIT_UNSUPPORTED_ARCHITECTURE=ON") endif() -if (NOT (CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") AND (OQS_LIBJADE_BUILD STREQUAL ON) AND (ARCH_X86_64 STREQUAL "ON")) +if (NOT ((CMAKE_SYSTEM_NAME MATCHES "Linux|Darwin") AND (ARCH_X86_64 STREQUAL "ON")) AND (OQS_LIBJADE_BUILD STREQUAL "ON")) message(FATAL_ERROR "Building liboqs with libjade implementations from libjade is only supported on Linux and Darwin on x86_64.") endif() From 7d92d32cdd1d3c877218d97eda74393c884b94db Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 16 May 2024 20:51:17 +0200 Subject: [PATCH 74/82] track jasminc version in copy_from_libjade.yml; check jasminc version in copy_from_upstream.py Signed-off-by: Pravek Sharma --- scripts/copy_from_upstream/copy_from_libjade.yml | 1 + scripts/copy_from_upstream/copy_from_upstream.py | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index 49ad9fb68..3d35e0c37 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -3,6 +3,7 @@ # must updated for the relevant algorithm in copy_from_upstream.yml # Additionaly, the algorithm name must be appended to env.LIBJADE_ALG_LIST # in the unix.yml and weekly.yml GitHub Actions workflows +jasmin_version: '2023.06.3' upstreams: - name: libjade diff --git a/scripts/copy_from_upstream/copy_from_upstream.py b/scripts/copy_from_upstream/copy_from_upstream.py index f301e3c4f..0339e4c1f 100755 --- a/scripts/copy_from_upstream/copy_from_upstream.py +++ b/scripts/copy_from_upstream/copy_from_upstream.py @@ -151,6 +151,15 @@ def load_instructions(file): shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'fetch', '--depth=1', 'origin', upstream_git_commit]) shell(['git', '--git-dir', work_dotgit, '--work-tree', work_dir, 'reset', '--hard', upstream_git_commit]) if file == 'copy_from_libjade.yml': + try: + version = subprocess.run(['jasminc', '-version'], capture_output=True).stdout.decode('utf-8').strip().split(' ')[-1] + if version != instructions['jasmin_version']: + print('Expected Jasmin compiler version {}; got version {}.'.format(instructions['jasmin_version'], version)) + print('Must use Jasmin complier version {} or update copy_from_libjade.yml.'.format(instructions['jasmin_version'])) + exit(1) + except FileNotFoundError: + print('Jasmin compiler not found; must add `jasminc` to PATH.') + exit(1) shell(['make', '-C', os.path.join(work_dir, 'src')]) if 'patches' in upstream: for patch in upstream['patches']: From d27901f4f701206e71612b5956ff327f2d8e1de3 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Thu, 16 May 2024 21:23:25 +0200 Subject: [PATCH 75/82] add OQS_LIBJADE_BUILD to build flags output Signed-off-by: Pravek Sharma --- tests/system_info.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/system_info.c b/tests/system_info.c index 0b217d1ee..248d377cd 100644 --- a/tests/system_info.c +++ b/tests/system_info.c @@ -263,6 +263,9 @@ static void print_oqs_configuration(void) { #ifdef OQS_DIST_BUILD printf("OQS_DIST_BUILD "); #endif +#ifdef OQS_LIBJADE_BUILD + printf("OQS_LIBJADE_BUILD "); +#endif #ifdef OQS_BUILD_ONLY_LIB printf("OQS_BUILD_ONLY_LIB "); // pretty much impossible to appear but added for completeness #endif From 37966957ca0d11deefe2ce2240d2f3eceb93630f Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 24 May 2024 23:01:03 +0200 Subject: [PATCH 76/82] remove link from CONFIGURE.md Signed-off-by: Pravek Sharma --- CONFIGURE.md | 2 +- docs/.Doxyfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CONFIGURE.md b/CONFIGURE.md index 76165eb85..c19959d32 100644 --- a/CONFIGURE.md +++ b/CONFIGURE.md @@ -191,4 +191,4 @@ At the moment, libjade only supports Linux and Darwin based operating systems on Note: `ALG` in `OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG` should be replaced with the specific algorithm name as demonstrated in [OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG](#OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG). -**Default**: `OFF` if [OQS_LIBJADE_BUILD](#OQS_LIBJADE_BUILD) is `OFF` else unset. \ No newline at end of file +**Default**: `OFF` if OQS_LIBJADE_BUILD is `OFF` else unset. \ No newline at end of file diff --git a/docs/.Doxyfile b/docs/.Doxyfile index 5401ab985..258ce14b5 100644 --- a/docs/.Doxyfile +++ b/docs/.Doxyfile @@ -378,7 +378,7 @@ TOC_INCLUDE_HEADINGS = 0 # The default value is: DOXYGEN. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. -MARKDOWN_ID_STYLE = DOXYGEN +MARKDOWN_ID_STYLE = GITHUB # When enabled doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can From 597c78a64b6d7441d047afd045d232f4d7dec535 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 16 Jul 2024 17:23:06 +0200 Subject: [PATCH 77/82] Update libjade to dual license Signed-off-by: Pravek Sharma --- docs/algorithms/kem/kyber.md | 4 ++-- docs/algorithms/kem/kyber.yml | 4 ++-- scripts/copy_from_upstream/copy_from_libjade.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/algorithms/kem/kyber.md b/docs/algorithms/kem/kyber.md index d2cbbaef0..c065a95e1 100644 --- a/docs/algorithms/kem/kyber.md +++ b/docs/algorithms/kem/kyber.md @@ -15,8 +15,8 @@ - **Implementation license (SPDX-Identifier)**: CC0-1.0 and (CC0-1.0 or Apache-2.0) and (CC0-1.0 or MIT) and MIT - **Formally-verified Implementation sources**: - **libjade**: - - **Source**: https://github.com/formosa-crypto/libjade/tree/release/2023.05-1 with copy_from_upstream patches - - **Implementation license (SPDX-Identifier)**: CC0-1.0 + - **Source**: https://github.com/formosa-crypto/libjade/tree/release/2023.05-2 with copy_from_upstream patches + - **Implementation license (SPDX-Identifier)**: CC0-1.0 OR Apache-2.0 ## Parameter set summary diff --git a/docs/algorithms/kem/kyber.yml b/docs/algorithms/kem/kyber.yml index 0da8c542d..522852643 100644 --- a/docs/algorithms/kem/kyber.yml +++ b/docs/algorithms/kem/kyber.yml @@ -28,9 +28,9 @@ optimized-upstreams: and MIT formally-verified-upstreams: libjade: - source: https://github.com/formosa-crypto/libjade/tree/release/2023.05-1 with + source: https://github.com/formosa-crypto/libjade/tree/release/2023.05-2 with copy_from_upstream patches - spdx-license-identifier: CC0-1.0 + spdx-license-identifier: CC0-1.0 OR Apache-2.0 parameter-sets: - name: Kyber512 claimed-nist-level: 1 diff --git a/scripts/copy_from_upstream/copy_from_libjade.yml b/scripts/copy_from_upstream/copy_from_libjade.yml index 3d35e0c37..620949c39 100644 --- a/scripts/copy_from_upstream/copy_from_libjade.yml +++ b/scripts/copy_from_upstream/copy_from_libjade.yml @@ -8,8 +8,8 @@ upstreams: - name: libjade git_url: https://github.com/formosa-crypto/libjade.git - git_branch: release/2023.05-1 - git_commit: 555e23342471bea8544c356bdae230baf064ed56 + git_branch: release/2023.05-2 + git_commit: 4e15c1d221d025deca40edef2c762be9e3d346b7 kem_meta_path: 'src/crypto_kem/{family}/{pqclean_scheme}/META.yml' kem_scheme_path: 'src/crypto_kem/{family}/{pqclean_scheme}' patches: ['libjade-kyber-api.patch', 'libjade-kyber-meta.patch'] From 14dcca7e71ad80ae0e15898189d64cf63a9f64c4 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 16 Jul 2024 19:13:13 +0200 Subject: [PATCH 78/82] Patch gcc version for MacOS CI runs Signed-off-by: Pravek Sharma --- .github/workflows/unix.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/unix.yml b/.github/workflows/unix.yml index 2c4b368a4..15f212f59 100644 --- a/.github/workflows/unix.yml +++ b/.github/workflows/unix.yml @@ -245,6 +245,8 @@ jobs: uses: actions/checkout@v4 - name: Install dependencies run: env HOMEBREW_NO_AUTO_UPDATE=1 brew install ninja && pip3 install --break-system-packages pytest pytest-xdist pyyaml + - name: Patch GCC + run: env HOMEBREW_NO_AUTO_UPDATE=1 brew uninstall --ignore-dependencies gcc@13 && wget https://raw.githubusercontent.com/Homebrew/homebrew-core/eb6dd225d093b66054e18e07d56509cf670793b1/Formula/g/gcc%4013.rb && env HOMEBREW_NO_AUTO_UPDATE=1 brew install --ignore-dependencies gcc@13.rb - name: Get system information run: sysctl -a | grep machdep.cpu - name: Configure From 1b17ad94a835dc85f0310c4341ca6f93f6d23457 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Tue, 16 Jul 2024 22:09:35 +0200 Subject: [PATCH 79/82] Fix doc generation Signed-off-by: Pravek Sharma --- CONFIGURE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONFIGURE.md b/CONFIGURE.md index 5363e8502..914a5c5e4 100644 --- a/CONFIGURE.md +++ b/CONFIGURE.md @@ -20,7 +20,7 @@ The following options can be passed to CMake before the build file generation pr - [OQS_STRICT_WARNINGS](#OQS_STRICT_WARNINGS) - [OQS_EMBEDDED_BUILD](#OQS_EMBEDDED_BUILD) - [OQS_LIBJADE_BUILD](#OQS_LIBJADE_BUILD) -- [OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG](#OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG) +- [OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG](#OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG) ## BUILD_SHARED_LIBS @@ -212,6 +212,6 @@ At the moment, libjade only supports Linux and Darwin based operating systems on ## OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG -Note: `ALG` in `OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG` should be replaced with the specific algorithm name as demonstrated in [OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG](#OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG). +Note: `ALG` in `OQS_ENABLE_LIBJADE_KEM_ALG/OQS_ENABLE_LIBJADE_SIG_ALG` should be replaced with the specific algorithm name as demonstrated in OQS_ENABLE_KEM_ALG/OQS_ENABLE_SIG_ALG. **Default**: `OFF` if OQS_LIBJADE_BUILD is `OFF` else unset. \ No newline at end of file From bb888d2728852ad2c841b0cd5386a37d12ecf5ce Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Wed, 17 Jul 2024 22:31:09 +0200 Subject: [PATCH 80/82] Fix libjade docs Signed-off-by: Pravek Sharma --- CONFIGURE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONFIGURE.md b/CONFIGURE.md index 914a5c5e4..becb4a883 100644 --- a/CONFIGURE.md +++ b/CONFIGURE.md @@ -202,7 +202,7 @@ At the moment, this is **only** considered for random number generation, as both **Default**: `OFF`. ## OQS_LIBJADE_BUILD -Can be `ON` or `OFF`. When `ON` liboqs is built to use high assurance implementations of cryptographic algorithms from [Libjade](https://github.com/formosa-crypto/libjade). The cryptographic primitives in Libjade are written using [Jasmin](https://github.com/jasmin-lang/jasmin) and built using the Jasmin compiler. The Jasmin compiler is proven (in Coq) to preserve semantic correctness of a program, maintain secret-independence of control flow, and maintain secret independence of locations of memory access through compilation. Additionaly, the Jasmin compiler guarantees thread safety because Jasmin doesn't support global variables (with the caveat that the caller respects the function's contract). +Can be `ON` or `OFF`. When `ON` liboqs is built to use high assurance implementations of cryptographic algorithms from [Libjade](https://github.com/formosa-crypto/libjade). The cryptographic primitives in Libjade are written using [Jasmin](https://github.com/jasmin-lang/jasmin) and built using the Jasmin compiler. The Jasmin compiler is proven (in Coq) to preserve semantic correctness of a program, maintain secret-independence of control flow, and maintain secret independence of locations of memory access through compilation. Additionally, the Jasmin compiler guarantees thread safety because Jasmin doesn't support global variables. At the moment, Libjade only provides Kyber512 and Kyber768 KEMs. From 6eeeb5375e039e965e3a88ca7ed29a410eae431b Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Sun, 11 Aug 2024 17:26:28 +0200 Subject: [PATCH 81/82] fix license info in README.md Signed-off-by: Pravek Sharma --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a25ae9378..979c0c8a0 100644 --- a/README.md +++ b/README.md @@ -194,7 +194,7 @@ liboqs includes some third party libraries or modules that are licensed differen - `src/kem/classic_mceliece/pqclean_*`: public domain - `src/kem/kyber/pqcrystals-*`: public domain (CC0) or Apache License v2.0 - `src/kem/kyber/pqclean_*`: public domain (CC0), and public domain (CC0) or Apache License v2.0, and public domain (CC0) or MIT, and MIT -- `src/kem/kyber/libjade_*` public domain (CC0) +- `src/kem/kyber/libjade_*` public domain (CC0) or Apache License v2. - `src/kem/ml_kem/pqcrystals-*`: public domain (CC0) or Apache License v2.0 - `src/sig/dilithium/pqcrystals-*`: public domain (CC0) or Apache License v2.0 - `src/sig/dilithium/pqclean_*`: public domain (CC0), and public domain (CC0) or Apache License v2.0, and public domain (CC0) or MIT, and MIT From b1c4950d572f839b6f80f20b84a9d9099a7f9f93 Mon Sep 17 00:00:00 2001 From: Pravek Sharma Date: Fri, 16 Aug 2024 19:20:47 +0200 Subject: [PATCH 82/82] update libjade_randombytes spdx-license Signed-off-by: Pravek Sharma --- src/common/libjade_shims/libjade_randombytes.c | 2 +- src/common/libjade_shims/libjade_randombytes.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/common/libjade_shims/libjade_randombytes.c b/src/common/libjade_shims/libjade_randombytes.c index c80e61a6b..84a0102d3 100644 --- a/src/common/libjade_shims/libjade_randombytes.c +++ b/src/common/libjade_shims/libjade_randombytes.c @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: CC0-1.0 +// SPDX-License-Identifier: Apache-2.0 OR CC0-1.0 #if defined(__unix__) || defined(__APPLE__) #include diff --git a/src/common/libjade_shims/libjade_randombytes.h b/src/common/libjade_shims/libjade_randombytes.h index 591fbd893..9b6dd62c6 100644 --- a/src/common/libjade_shims/libjade_randombytes.h +++ b/src/common/libjade_shims/libjade_randombytes.h @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: CC0-1.0 +// SPDX-License-Identifier: Apache-2.0 OR CC0-1.0 #if defined(__unix__) || defined(__APPLE__) #ifndef LIBJADE_RANDOMBYTES_H