-rw-r--r-- 39299 libntruprime-20241008/command/ntruprime-test_core_mult3sntrup1013.c raw
/* ----- core/mult3sntrup1013, derived from supercop/crypto_core/try.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#include <ntruprime.h>
#include "ntruprime_test.h"
#define fail ((ok = 0),printf)
static const char *core_mult3sntrup1013_checksums[] = {
"7977e0e9c64b2a69ebdd8ba689cb035d0e60211d0264a1158cac4db08c19d972",
"65bbb4ce5a9530513872bb37156d0e6054c0006049f81a79d8aa4692876b5b89",
} ;
static void (*crypto_core)(unsigned char *,const unsigned char *,const unsigned char *,const unsigned char *);
#define crypto_core_OUTPUTBYTES ntruprime_core_mult3sntrup1013_OUTPUTBYTES
#define crypto_core_INPUTBYTES ntruprime_core_mult3sntrup1013_INPUTBYTES
#define crypto_core_KEYBYTES ntruprime_core_mult3sntrup1013_KEYBYTES
#define crypto_core_CONSTBYTES ntruprime_core_mult3sntrup1013_CONSTBYTES
static void *storage_core_mult3sntrup1013_h;
static unsigned char *test_core_mult3sntrup1013_h;
static void *storage_core_mult3sntrup1013_n;
static unsigned char *test_core_mult3sntrup1013_n;
static void *storage_core_mult3sntrup1013_k;
static unsigned char *test_core_mult3sntrup1013_k;
static void *storage_core_mult3sntrup1013_c;
static unsigned char *test_core_mult3sntrup1013_c;
static void *storage_core_mult3sntrup1013_h2;
static unsigned char *test_core_mult3sntrup1013_h2;
static void *storage_core_mult3sntrup1013_n2;
static unsigned char *test_core_mult3sntrup1013_n2;
static void *storage_core_mult3sntrup1013_k2;
static unsigned char *test_core_mult3sntrup1013_k2;
static void *storage_core_mult3sntrup1013_c2;
static unsigned char *test_core_mult3sntrup1013_c2;
#define precomputed_core_mult3sntrup1013_NUM 4
static const unsigned char precomputed_core_mult3sntrup1013_h[precomputed_core_mult3sntrup1013_NUM][crypto_core_OUTPUTBYTES] = {
{1,1,255,0,1,255,1,1,0,255,255,255,0,255,1,0,1,0,0,255,1,0,0,1,1,255,0,255,0,0,0,0,1,1,255,1,1,1,0,1,1,255,1,0,0,1,255,255,0,255,0,1,1,255,0,1,1,1,255,1,255,1,1,255,255,1,1,1,0,0,255,0,0,255,0,255,0,0,255,255,255,0,255,255,255,1,255,0,0,1,1,255,0,0,255,0,255,1,0,255,0,1,255,0,255,1,255,1,255,255,0,255,255,0,0,0,1,0,1,0,255,1,0,255,0,255,255,255,0,255,255,1,0,0,255,0,255,0,1,1,0,255,255,1,255,1,255,255,1,0,0,1,255,1,1,255,1,255,255,1,1,0,255,1,0,0,1,0,255,1,0,0,1,1,255,255,255,255,255,0,255,0,0,0,255,255,255,0,0,255,0,0,255,0,1,1,0,1,255,255,255,255,255,255,1,0,1,1,0,1,255,1,1,0,0,1,255,255,1,1,255,255,255,1,0,0,1,255,255,1,255,0,255,255,1,1,1,255,255,255,1,255,255,0,255,0,0,255,1,0,0,255,0,1,0,0,0,0,1,255,0,1,0,255,1,255,1,255,255,0,0,0,1,1,0,1,255,1,0,1,1,255,0,0,1,1,0,255,1,0,255,255,1,0,255,1,1,1,1,255,255,0,1,255,1,0,255,0,0,255,0,0,0,255,0,1,0,255,255,0,1,1,0,1,1,255,255,0,255,1,0,1,0,1,0,1,255,0,0,0,1,0,0,1,1,255,255,1,0,0,0,0,255,1,1,1,1,1,255,0,0,1,0,255,255,255,0,255,0,0,0,255,0,1,0,1,255,0,255,0,0,0,255,0,1,1,1,0,1,0,255,1,255,255,1,0,1,1,255,1,1,255,1,1,1,255,255,0,0,0,0,0,255,0,1,255,0,1,255,255,1,255,0,255,1,0,0,0,255,1,0,0,255,1,255,0,255,0,0,0,1,0,255,1,1,0,0,0,255,255,255,1,1,255,255,255,0,255,255,255,1,1,1,0,255,1,1,0,255,255,255,1,1,255,0,0,0,255,255,1,1,1,255,0,1,1,255,1,1,1,1,1,0,0,0,0,255,255,0,255,0,0,0,0,0,255,1,0,0,0,1,0,1,1,1,0,255,255,1,1,1,0,255,0,255,255,255,255,1,255,1,0,255,0,255,1,1,0,255,1,1,255,1,0,0,255,1,0,0,0,1,255,0,0,0,255,255,255,0,255,0,255,0,255,255,0,0,255,0,0,255,1,1,1,0,0,0,1,1,1,0,1,0,255,255,0,255,0,1,255,1,255,1,0,1,0,1,0,0,0,1,0,1,1,1,1,0,255,1,1,255,255,255,0,1,1,1,0,255,255,0,1,0,1,1,255,255,255,1,255,1,255,0,0,1,1,1,1,255,0,1,1,1,0,255,1,255,1,1,0,1,255,1,1,1,255,0,0,0,1,1,0,0,1,0,0,0,255,1,0,1,255,255,255,255,0,255,1,0,0,255,255,0,255,0,0,0,1,255,0,1,0,255,1,1,255,1,0,1,255,1,255,0,0,1,255,1,0,1,1,0,1,0,255,0,255,1,255,255,0,0,1,0,0,255,255,1,255,1,255,0,0,0,255,1,0,1,1,1,0,255,255,255,255,255,255,0,0,0,255,1,255,1,0,255,0,255,0,1,1,255,1,1,0,1,0,255,1,1,1,1,0,255,255,1,0,255,0,255,1,255,0,255,1,1,255,1,1,1,255,1,0,1,0,0,1,255,255,255,255,0,1,0,1,255,255,255,1,0,1,1,0,255,255,0,1,255,1,255,0,255,1,255,0,255,255,0,255,255,1,255,0,0,0,255,255,0,1,255,1,0,0,1,0,1,0,255,255,0,255,255,0,1,0,0,1,1,255,1,1,255,0,0,0,1,255,1,0,0,255,1,255,255,255,255,0,1,0,255,0,0,1,1,1,1,1,255,0,0,255,1,0,1,0,1,255,255,1,1,255,1,255,1,255,0,1,255,255,0,0,1,0,1,1,0,0,0,0,1,0,255,0,0,1,255,0,0,255,255,255,1,255,1,255,1,1,0,255,255,255,0,255,0,0,0,1,0,255,0,255,255,1,0,0,0,255,255,255,1,0,1,255,1,255,255,1,0,0,1,255,0,1,0,255,0,1,255,255,1,1,255,255,255,1,1,0,255,255,1,255,0,0,1,255,255,0,1,255,1,1,0,0,0,255,255,255,255,1,1,255,0,0,255},
{1,0,255,1,1,255,1,0,0,0,255,255,255,255,0,0,0,1,255,255,255,1,255,255,1,1,0,255,255,0,255,0,255,1,255,0,0,1,0,1,0,1,1,255,1,255,1,0,0,0,1,0,0,1,0,255,1,1,0,255,1,255,255,255,0,255,0,1,255,0,255,0,255,255,255,1,1,1,1,1,0,0,255,255,1,255,0,255,255,255,255,255,0,1,0,1,1,0,1,1,255,1,1,0,255,0,0,255,1,255,1,255,255,255,0,1,255,0,255,0,0,255,1,255,1,1,1,255,255,1,0,255,1,0,1,0,255,1,255,0,0,1,255,0,0,255,0,1,1,0,1,255,255,1,0,0,0,255,255,1,0,1,255,1,255,0,255,0,1,1,0,0,255,255,1,0,0,1,1,255,255,1,0,0,255,1,0,255,255,255,255,1,255,255,255,0,255,255,255,1,0,0,1,1,255,0,255,255,1,0,255,255,0,1,255,0,255,1,255,1,255,1,0,1,255,1,1,0,1,1,1,255,1,1,0,1,1,255,255,1,0,0,1,255,255,1,1,0,1,1,0,0,1,255,0,0,1,1,1,0,1,1,1,1,255,255,255,1,255,1,255,1,0,255,0,1,1,255,0,0,1,0,0,1,0,1,255,0,1,255,1,255,1,255,0,255,0,0,255,1,0,0,255,0,0,255,0,255,255,255,1,0,255,0,1,255,0,0,255,255,0,1,0,255,1,255,255,0,1,0,0,255,0,1,1,0,0,255,1,255,0,1,0,255,0,1,255,1,255,0,255,1,0,0,1,255,1,1,1,1,255,255,0,0,1,1,1,255,1,255,1,0,0,0,255,255,255,0,1,1,255,0,0,1,1,0,1,1,1,255,1,255,1,1,1,255,1,0,1,0,255,255,1,255,255,1,255,1,1,255,0,0,0,1,1,255,1,1,0,0,0,255,255,255,0,255,0,255,255,0,0,0,0,0,0,255,255,1,255,0,1,1,1,255,255,255,255,255,1,255,255,1,1,1,255,255,255,1,1,255,1,255,0,1,1,0,255,1,255,255,0,0,0,1,255,255,255,255,1,0,0,1,255,0,0,255,0,0,0,1,0,1,1,255,1,1,0,255,0,0,0,1,1,1,255,0,0,255,1,1,1,1,1,255,0,255,0,1,255,0,0,1,1,0,0,0,255,255,1,0,0,0,255,0,1,255,1,255,255,0,0,255,255,0,1,255,0,255,0,255,1,255,0,0,255,255,255,255,0,1,1,255,0,1,1,0,0,0,0,255,0,1,1,1,0,1,255,255,0,1,1,0,1,0,0,0,1,0,0,0,1,1,255,255,255,1,0,0,1,1,255,255,1,0,255,255,0,1,0,255,1,0,255,0,1,0,0,255,255,1,1,0,255,1,1,255,255,1,0,255,255,1,0,0,0,1,0,1,1,1,1,1,0,1,1,0,1,0,255,0,0,1,255,255,1,1,255,1,1,0,255,1,1,1,0,1,255,0,0,1,255,1,0,255,1,0,0,255,1,0,255,1,1,255,255,1,1,1,0,255,1,0,0,1,0,255,255,0,255,0,255,0,1,255,0,0,255,1,1,1,0,1,255,255,0,0,0,255,255,0,0,1,255,1,255,1,1,1,0,1,0,1,0,255,0,0,0,0,255,1,255,1,0,255,0,0,0,1,0,0,1,255,0,1,0,255,255,1,0,0,255,255,255,1,0,255,255,0,0,255,1,0,255,1,255,1,0,0,255,255,255,0,0,1,1,255,0,0,1,0,255,0,255,0,255,0,0,1,0,0,255,0,0,0,0,1,0,255,0,1,1,255,0,1,0,0,1,1,0,1,255,0,255,0,0,0,0,255,255,1,255,255,255,255,0,1,0,255,0,1,0,1,255,0,1,0,0,255,1,0,1,255,255,0,1,1,0,1,1,255,1,1,255,1,255,1,1,1,0,255,255,255,0,255,255,1,1,0,255,1,1,1,255,1,1,255,255,1,255,0,1,255,0,0,1,1,0,1,1,1,0,255,0,0,0,0,0,1,0,0,255,255,0,0,255,0,1,1,0,1,255,255,0,0,1,255,1,1,0,0,1,255,1,255,0,0,1,1,255,255,255,255,255,0,0,1,1,1,0,0,1,255,0,0,255,1,0,1,0,255,255,0,1,255,0,0,255,255,0,0,0,1,255,0,0,255,255,255,255,255,1,255,1,255,0,255,1,1,0,255,1,0,255,1,255,1,1,1,1,255,0,1,0,255,1,0,0,1,1,0,0,0,255},
{0,255,255,255,0,1,1,0,1,0,255,0,1,0,0,0,255,255,0,0,255,255,0,1,255,1,0,255,255,1,255,255,1,0,0,1,255,255,255,255,0,1,1,1,255,1,0,1,255,255,0,0,255,1,255,0,0,255,1,0,0,255,0,1,255,1,0,1,1,0,255,0,0,255,0,0,0,1,0,1,255,1,255,0,255,1,1,255,0,255,255,1,1,255,255,255,255,0,0,1,0,0,0,1,0,0,0,0,0,1,255,0,1,0,255,0,255,1,0,1,1,0,0,0,255,255,255,0,0,255,1,1,255,0,255,255,0,0,1,0,1,1,255,255,0,255,255,1,0,255,1,1,255,255,255,255,0,255,255,0,0,0,255,1,0,255,0,1,255,255,0,255,1,255,0,0,1,1,255,255,0,1,1,1,0,0,255,0,0,255,255,0,255,255,255,1,1,255,255,1,0,255,1,1,255,1,1,0,0,255,1,255,1,0,255,255,0,1,0,255,0,0,255,0,0,0,1,0,0,1,1,255,0,1,0,255,1,0,1,1,0,0,1,255,0,255,255,255,255,255,0,0,0,255,0,1,255,255,1,1,1,0,0,255,0,255,0,1,0,1,0,1,0,1,255,1,1,0,1,0,255,0,1,255,1,0,1,0,0,0,0,255,1,0,0,0,255,1,255,1,255,255,0,255,1,255,255,255,1,255,1,255,255,255,0,0,255,0,1,255,1,1,0,1,255,1,0,255,255,1,1,255,1,0,255,255,0,0,255,1,0,1,0,255,255,0,255,255,255,0,1,0,1,0,1,1,1,255,0,255,0,255,255,255,1,1,255,255,255,0,0,1,1,1,1,1,0,0,255,255,255,0,0,255,1,255,0,255,255,0,0,255,255,1,255,0,255,0,1,0,255,1,1,0,1,255,0,1,255,255,0,1,1,0,255,255,0,255,255,255,255,255,1,255,1,255,0,0,255,0,255,0,255,1,255,1,255,1,255,0,0,1,1,0,1,0,1,255,0,1,255,0,1,0,1,255,0,255,1,0,0,255,1,0,255,0,255,1,1,1,0,0,1,255,255,1,0,1,1,255,255,1,0,1,0,255,255,1,255,0,1,1,1,0,0,255,255,0,1,1,1,1,0,0,255,255,255,0,255,255,0,0,1,255,255,255,255,255,255,255,255,0,255,1,0,1,0,0,1,1,0,1,1,1,0,0,0,0,255,0,255,255,1,255,1,255,0,255,1,0,255,0,255,1,0,255,255,0,0,0,255,255,1,255,255,0,1,0,255,0,0,0,0,0,0,1,255,0,1,255,1,255,0,1,255,255,255,255,1,1,255,0,255,0,1,1,0,0,0,0,1,1,0,255,1,255,0,255,1,255,255,0,1,255,255,0,0,1,0,255,0,1,0,0,255,1,0,0,0,1,1,255,1,255,1,255,0,255,1,255,255,255,0,0,255,255,0,255,0,0,0,1,0,255,1,0,1,255,1,255,0,255,255,255,1,0,0,0,255,1,255,1,1,1,255,0,255,0,0,0,0,1,255,1,255,1,0,1,1,0,255,1,0,0,1,0,1,0,1,255,255,1,0,255,255,255,1,255,0,0,255,0,1,0,0,255,0,1,0,0,1,0,1,1,1,0,1,255,1,255,1,1,255,0,0,1,1,1,0,255,255,0,255,1,0,0,0,255,1,0,0,1,0,0,1,0,0,1,1,1,255,1,255,1,255,0,0,0,1,0,255,0,1,1,1,255,255,0,255,1,255,0,255,255,1,1,255,1,1,255,0,255,0,0,255,255,1,255,0,0,1,255,1,1,1,1,1,1,255,0,255,255,0,0,0,1,255,0,1,1,0,255,255,255,0,255,0,255,255,255,1,1,0,255,1,255,0,255,1,255,255,0,255,255,0,1,255,1,0,255,255,255,255,1,1,0,0,255,1,0,255,255,1,0,255,0,1,255,1,255,255,255,1,255,255,1,255,255,0,0,0,255,0,255,1,0,1,0,1,0,255,0,0,0,255,0,0,255,0,0,0,0,0,1,0,1,0,0,255,0,1,0,255,255,0,255,0,1,255,1,1,0,0,1,255,255,255,0,0,1,1,255,1,255,1,255,1,0,255,0,255,0,0,255,0,1,255,255,1,255,255,1,1,0,1,1,1,1,0,255,0,1,0,255,0,255,255,255,255,0,255,255,0,255,0,255,0,1,1,255,255,1,1,255,1,255,255,1,255,1,255,255,1,1,1,255,1,0,255,1,255,0,1,1,0,255,1,1,255,0,1,1,1},
{255,255,1,255,255,1,1,0,1,1,255,1,1,0,0,1,0,255,255,0,0,1,1,255,1,0,1,0,1,1,0,0,255,255,1,255,1,255,1,1,0,1,0,0,1,1,255,1,1,1,0,1,255,1,0,0,0,1,255,1,1,255,1,0,1,0,1,1,0,0,1,1,0,255,1,1,1,0,0,255,255,1,1,1,1,0,255,255,255,0,1,1,1,0,1,1,0,1,1,0,0,255,1,255,0,255,1,255,1,0,0,1,0,255,255,255,1,255,255,1,255,0,1,0,255,0,255,1,255,0,0,0,255,255,255,255,0,255,0,255,0,255,255,255,255,1,0,0,255,0,0,255,255,0,255,0,0,1,255,1,0,0,0,0,0,0,0,0,0,1,255,1,0,255,1,1,1,255,1,255,0,255,255,1,255,1,255,1,255,1,0,255,0,1,0,1,1,0,255,255,255,1,255,0,255,1,0,0,255,1,255,0,1,255,1,255,0,255,0,0,0,0,0,0,0,1,1,255,0,255,1,1,0,0,255,255,0,0,255,1,255,1,1,1,255,1,1,255,1,0,0,0,1,0,255,255,255,0,1,255,0,255,1,0,255,1,0,0,255,255,1,255,255,255,1,255,255,255,0,1,0,1,255,255,255,255,0,255,0,1,255,1,1,255,255,0,0,1,255,1,1,1,0,0,1,0,1,255,0,1,0,0,1,0,255,255,0,1,255,0,255,0,255,255,255,255,1,255,1,255,0,0,1,0,255,0,1,0,1,255,255,255,1,1,255,1,0,255,0,0,255,0,0,0,0,1,255,1,255,0,0,0,0,1,1,0,0,1,0,1,255,0,255,0,1,0,1,255,255,0,0,1,255,255,255,0,0,1,255,0,1,255,0,0,255,255,0,0,0,1,1,255,255,0,0,1,1,255,255,1,1,0,1,1,0,255,255,255,255,255,0,1,255,1,255,255,0,255,1,0,0,255,0,0,255,0,255,255,255,0,1,1,1,0,0,255,255,255,1,0,1,1,255,1,255,1,1,1,255,1,1,0,1,0,1,0,255,255,0,255,255,255,0,255,255,255,1,255,255,0,255,1,255,0,255,255,0,1,255,255,0,0,255,255,255,0,255,255,1,1,0,255,0,0,1,1,1,0,255,1,0,255,255,255,0,255,1,1,255,255,0,255,0,255,1,0,0,255,0,255,1,1,255,1,255,0,255,1,0,1,1,255,0,1,1,1,255,1,1,1,1,255,0,0,1,255,1,0,0,255,0,1,1,0,0,0,255,1,255,1,255,255,1,255,255,1,0,1,0,1,255,255,255,1,1,1,1,1,255,1,255,255,255,1,1,255,255,255,1,0,1,255,0,0,1,0,1,1,255,255,0,0,1,255,255,0,1,1,1,0,255,0,1,1,0,1,255,0,1,1,0,1,255,255,0,1,255,0,1,255,0,0,1,255,255,1,0,1,0,0,1,0,1,255,255,255,255,0,1,255,255,1,1,0,255,1,1,1,1,1,1,255,255,0,255,1,0,0,1,0,255,1,255,255,255,1,1,1,0,0,1,255,1,1,0,1,255,0,255,255,255,255,1,255,1,1,1,0,0,1,255,255,0,1,0,255,255,1,0,0,255,1,0,0,0,1,0,0,255,0,1,1,1,1,255,0,255,0,255,0,255,255,255,1,1,255,255,1,255,255,0,1,1,255,0,0,255,255,1,0,255,255,1,0,0,1,0,0,255,255,1,1,1,255,255,1,1,0,1,0,1,1,255,255,255,255,1,0,1,0,0,0,1,0,255,0,255,0,0,255,255,0,0,255,0,0,255,255,0,1,255,255,1,255,1,0,255,0,255,255,1,0,0,255,255,0,1,255,0,255,1,0,0,1,255,255,1,255,1,0,0,0,1,255,0,0,0,255,0,255,1,255,255,1,1,0,255,0,1,1,255,1,0,1,1,0,1,0,255,0,255,0,0,1,1,255,0,0,1,1,0,255,0,255,255,255,0,0,1,1,0,0,0,1,0,255,0,0,0,255,0,0,1,0,1,1,0,1,255,255,255,1,255,255,255,0,1,0,0,0,255,255,1,0,1,1,1,1,255,1,0,1,255,1,0,255,0,255,1,255,0,1,0,255,255,0,0,1,255,0,1,255,255,255,0,1,1,1,0,1,255,0,0,255,1,255,255,0,255,255,1,1,0,1,255,0,255,0,0,255,255,255,0,1,1,1,255,1,1,1,1,1,0,255,1,255,1,0,255,0,1,1,255,255,1,0,1,255,1,1,0,1,255},
} ;
static const unsigned char precomputed_core_mult3sntrup1013_n[precomputed_core_mult3sntrup1013_NUM][crypto_core_INPUTBYTES] = {
{0,0,1,1,1,0,1,0,0,0,1,-1,0,-1,-1,1,0,-1,0,-1,-1,1,0,0,-1,-1,-1,-1,1,0,0,1,1,0,-1,0,0,0,0,1,1,0,0,0,1,1,0,-1,0,-1,0,0,1,0,0,0,0,0,1,-1,1,0,0,0,1,0,-1,-1,0,1,1,1,0,1,0,0,-1,1,-1,-1,0,0,-1,0,1,0,0,0,0,0,-1,0,0,1,0,-1,1,0,0,1,-1,1,1,-1,0,0,1,0,1,-1,-1,0,-1,0,-1,0,0,-1,0,0,1,-1,-1,0,0,-1,1,0,-1,1,0,1,0,0,0,1,-1,1,0,0,-1,0,-1,0,-1,1,0,0,0,0,1,0,1,1,1,0,-1,-1,1,0,-1,-1,-1,0,1,-1,0,1,-1,-1,-1,0,1,1,0,-1,1,0,0,-1,1,0,1,0,0,-1,-1,1,0,-1,0,0,0,1,-1,0,0,0,-1,-1,0,0,1,0,0,1,0,1,0,0,0,-1,0,0,1,1,-1,-1,0,0,0,1,1,-1,0,1,0,0,-1,0,1,1,0,-1,-1,0,1,0,0,0,0,0,0,-1,1,1,0,1,1,0,1,1,1,-1,1,0,-1,-1,0,0,0,-1,1,0,0,1,1,-1,0,1,-1,1,0,1,0,1,0,1,-1,0,1,1,-1,-1,1,1,0,0,-1,1,0,0,1,0,1,0,0,0,0,0,0,0,-1,-1,0,0,0,-1,0,-1,0,0,0,0,0,0,1,-1,-1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,-1,0,1,0,1,-1,0,-1,0,0,0,0,0,0,0,-1,-1,0,-1,0,1,0,1,-1,0,0,1,-1,-1,-1,1,0,-1,1,-1,0,0,1,-1,0,0,1,0,0,1,-1,1,0,0,1,0,1,0,-1,-1,1,0,0,0,1,0,0,1,-1,1,0,0,1,-1,0,1,0,-1,0,0,1,1,1,1,1,0,0,0,0,0,0,1,0,-1,0,-1,-1,0,0,-1,0,0,0,-1,0,0,1,-1,-1,0,0,-1,0,1,1,-1,0,0,-1,-1,1,-1,1,0,-1,1,0,0,0,0,0,1,1,0,-1,0,1,-1,-1,-1,0,0,0,1,-1,0,-1,-1,1,0,-1,1,1,0,-1,-1,0,0,1,1,1,-1,0,0,0,0,-1,-1,1,1,1,-1,-1,-1,0,1,0,0,-1,0,0,-1,-1,0,0,0,1,0,0,0,1,1,0,0,1,-1,0,-1,-1,0,-1,-1,0,-1,-1,0,1,1,0,-1,0,1,0,0,1,0,-1,-1,1,-1,-1,0,0,0,1,0,1,1,0,-1,-1,0,0,0,1,1,0,-1,1,0,1,1,-1,1,1,1,0,0,0,1,-1,1,0,1,0,0,0,-1,0,1,0,0,1,-1,-1,0,-1,1,1,1,-1,-1,-1,-1,0,-1,-1,1,1,0,0,0,0,0,0,0,-1,-1,0,0,1,0,-1,1,0,0,0,0,0,0,0,0,1,0,-1,0,-1,-1,-1,1,-1,1,-1,1,-1,0,1,0,0,0,-1,-1,0,0,-1,0,0,1,0,0,-1,-1,0,-1,1,0,-1,0,1,0,0,0,1,0,0,1,-1,0,0,0,0,0,1,1,1,-1,0,-1,-1,-1,1,-1,0,1,0,1,1,1,1,0,0,1,0,0,-1,0,0,0,0,-1,0,-1,0,1,0,-1,0,0,-1,0,1,1,1,0,0,0,0,-1,0,-1,0,-1,0,1,0,0,0,0,1,-1,0,0,0,0,1,0,1,-1,0,0,0,0,-1,1,0,0,0,0,0,0,0,1,1,0,1,1,0,0,-1,-1,0,0,0,-1,-1,1,0,1,0,0,0,0,1,0,1,-1,0,0,0,0,0,0,0,0,1,1,0,0,1,0,1,-1,0,0,0,-1,0,0,1,0,1,0,0,1,0,1,-1,-1,-1,1,1,-1,-1,0,1,0,-1,-1,-1,0,0,0,0,1,-1,1,-1,1,-1,0,-1,-1,-1,0,1,-1,0,-1,1,1,1,1,0,1,0,1,-1,0,1,1,0,-1,0,0,0,0,0,0,0,0,1,0,0,-1,0,0,0,-1,0,1,0,0,0,0,0,0,-1,0,0,0,-1,1,0,-1,1,-1,0,0,0,1,0,0,1,0,-1,0,0,0,1,1,0,0,1,0,-1,1,1,1,0,0,1,0,1,1,0,1,0,1,0,0,-1,0,0,0,1,0,-1,-1,1,1,0,1,1,-1,0,1,0,1,0,1,0,0,1,1,0,-1,0,0,0,0,-1,0,0,-1,0,-1,1,-1,0,0,-1,1,0,0,0,1,-1,-1,0,0,-1,0,0,0,-1,-1,0,-1,0,-1,-1,0,1,0,0,1,-1,1,1,0,0,0,-1,0,-1,-1,-1,1,1,-1,-1,0,-1},
{1,1,1,0,-1,1,0,-1,0,-1,0,-1,0,0,1,-1,0,-1,0,0,-1,1,0,0,0,1,0,1,-1,0,0,1,0,0,0,0,0,0,-1,0,0,0,0,0,0,1,-1,0,0,1,0,0,1,0,-1,0,0,0,1,0,0,1,-1,1,1,0,1,0,1,0,1,-1,0,1,-1,-1,-1,0,0,-1,-1,-1,1,1,1,0,-1,0,0,0,-1,1,0,0,1,-1,-1,-1,-1,1,-1,-1,-1,0,0,0,-1,0,0,0,-1,0,-1,-1,0,0,0,-1,-1,1,0,-1,1,0,0,-1,1,0,1,1,1,0,-1,0,0,0,0,1,-1,1,1,0,0,0,-1,1,0,0,1,-1,0,-1,0,0,-1,-1,0,-1,0,1,0,0,1,0,0,0,1,1,1,0,0,0,0,-1,1,1,0,0,-1,0,1,0,0,0,0,0,-1,0,-1,-1,0,-1,-1,1,0,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,0,0,-1,1,0,1,1,-1,-1,-1,0,0,0,0,-1,0,-1,0,0,1,-1,0,-1,-1,1,-1,0,0,-1,-1,1,0,-1,1,1,1,0,1,0,1,-1,1,0,1,0,0,0,1,0,0,0,1,-1,0,0,1,-1,-1,0,-1,-1,0,0,-1,0,1,0,0,1,-1,1,0,0,0,-1,0,-1,1,0,0,-1,1,0,0,0,0,0,0,0,0,0,0,-1,0,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,0,-1,1,1,-1,1,-1,-1,0,-1,0,-1,1,1,1,0,0,-1,0,0,0,0,1,-1,1,0,0,0,-1,-1,1,0,0,0,-1,1,0,0,-1,-1,0,0,-1,0,0,0,1,0,0,1,1,-1,1,1,0,0,1,-1,0,-1,0,0,1,-1,0,0,-1,-1,0,0,1,0,0,0,0,1,-1,-1,1,-1,0,0,1,0,0,1,1,1,1,-1,0,0,-1,-1,1,1,0,0,1,1,-1,-1,0,0,-1,1,1,0,0,-1,0,1,0,0,0,-1,0,0,1,0,1,1,0,-1,0,0,-1,0,-1,1,0,-1,1,1,0,1,0,0,1,0,0,-1,0,-1,1,1,0,-1,1,0,1,0,1,0,0,0,1,-1,-1,-1,0,-1,-1,0,0,0,0,1,0,-1,0,-1,0,0,1,-1,-1,-1,-1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1,0,0,0,0,1,0,0,0,1,0,-1,1,0,0,0,-1,1,0,0,-1,-1,0,-1,1,-1,0,1,0,-1,0,0,0,1,-1,1,1,1,-1,0,0,1,1,-1,-1,0,0,-1,-1,0,0,1,0,1,-1,0,0,1,0,1,1,1,0,0,-1,-1,-1,-1,-1,1,0,-1,1,0,0,1,-1,-1,0,0,0,0,1,1,1,1,0,-1,1,1,1,1,0,0,0,1,1,1,1,0,0,1,-1,0,0,1,0,0,-1,-1,-1,0,-1,-1,-1,1,-1,0,1,-1,1,0,1,0,1,0,0,0,0,0,0,1,0,0,1,0,-1,1,1,0,1,1,-1,0,-1,1,0,-1,0,-1,1,-1,1,1,-1,-1,0,-1,1,0,0,0,0,1,0,1,1,0,0,0,0,0,1,1,1,-1,1,0,1,0,-1,-1,0,0,0,-1,-1,0,1,1,0,-1,-1,-1,0,0,1,0,1,0,0,1,0,-1,0,0,0,1,-1,1,0,-1,1,0,0,-1,-1,0,-1,-1,-1,-1,0,0,0,-1,0,1,0,0,-1,-1,0,-1,1,-1,0,1,-1,-1,-1,0,0,-1,0,0,0,1,-1,-1,0,0,0,-1,0,0,0,0,-1,1,0,-1,-1,-1,0,1,1,-1,0,-1,1,0,0,1,1,0,-1,1,0,0,1,-1,1,0,0,-1,0,0,-1,-1,1,0,1,0,0,-1,0,0,-1,0,0,0,1,0,1,0,0,0,1,0,1,0,1,0,0,-1,0,0,-1,-1,0,1,-1,0,0,0,0,0,0,0,-1,1,1,0,0,0,0,-1,-1,0,-1,1,-1,-1,1,1,-1,0,-1,-1,1,-1,-1,0,-1,1,0,0,1,0,0,1,-1,-1,0,0,1,-1,0,0,0,0,0,1,-1,-1,1,1,0,-1,0,-1,0,1,0,0,0,1,0,1,-1,1,-1,0,0,0,0,0,-1,0,0,1,1,0,1,0,0,0,-1,0,0,-1,1,1,0,0,-1,-1,1,0,0,0,0,1,0,-1,-1,0,0,1,-1,-1,0,0,0,-1,1,-1,0,0,0,-1,1,-1,0,0,0,-1,0,1,1,-1,-1,0,1,0,0,0,1,-1,0,1,0,0,-1,-1,1,0,0,0,0,1,0,-1,0,0,-1,-1,1,0,1,-1,1,0,0,-1,-1,0,0,0,0,-1,0,0,-1,0,1,0,1,1,1},
{-1,0,1,1,-1,0,-1,0,1,1,0,1,0,0,0,1,0,0,0,0,0,-1,0,0,1,1,0,1,0,0,-1,0,-1,0,0,1,1,0,1,-1,-1,0,1,0,1,1,0,0,-1,0,1,1,0,0,1,1,0,0,1,-1,1,-1,-1,0,0,-1,1,1,0,-1,0,1,0,0,-1,0,0,0,0,1,-1,0,1,0,0,-1,0,1,0,1,1,0,1,0,0,-1,-1,0,0,-1,-1,0,-1,0,0,0,1,0,0,0,1,0,-1,1,-1,0,-1,0,0,-1,-1,1,-1,0,0,-1,-1,0,0,-1,1,0,0,-1,0,-1,-1,1,0,0,0,1,-1,0,0,0,1,0,0,-1,0,0,1,1,-1,0,-1,0,1,-1,0,0,0,0,0,0,1,0,0,1,-1,-1,-1,0,1,1,1,1,-1,0,0,-1,1,-1,0,0,0,0,0,1,-1,0,0,0,1,-1,0,1,0,0,0,-1,-1,0,1,0,1,-1,0,1,-1,1,1,0,0,0,-1,0,1,0,0,-1,0,1,0,0,0,0,0,0,-1,-1,0,0,-1,0,-1,1,0,-1,0,0,-1,1,-1,0,0,1,-1,1,0,1,1,0,0,-1,1,-1,0,-1,1,0,0,-1,1,1,-1,0,1,-1,0,1,-1,0,1,-1,0,0,-1,0,1,0,1,-1,0,0,0,0,-1,1,0,-1,1,0,1,0,1,-1,0,0,1,1,-1,-1,-1,-1,1,-1,0,1,0,0,-1,1,1,0,0,0,1,1,0,1,-1,0,0,0,-1,-1,0,-1,-1,0,0,0,1,1,-1,0,0,1,0,-1,0,1,0,1,1,1,0,-1,0,1,-1,-1,0,1,0,0,-1,0,1,0,0,0,1,-1,0,0,-1,-1,0,0,-1,0,0,1,-1,0,0,0,-1,0,0,1,-1,-1,1,0,1,1,0,-1,-1,0,1,-1,-1,0,0,-1,0,0,0,-1,0,-1,1,1,1,-1,0,0,1,1,0,1,1,0,-1,1,1,0,0,0,0,0,0,-1,1,1,1,0,0,0,0,0,1,0,0,0,0,-1,0,-1,-1,-1,0,0,1,0,0,0,0,0,0,-1,1,0,0,-1,0,-1,1,0,0,1,0,1,0,0,0,-1,1,0,-1,-1,0,0,-1,0,0,1,-1,-1,0,1,0,0,0,-1,1,-1,1,-1,-1,0,0,-1,-1,0,0,0,0,0,0,0,0,0,-1,-1,1,0,1,0,0,0,0,0,1,-1,-1,1,-1,0,1,-1,0,1,1,1,-1,0,-1,1,-1,0,0,-1,-1,1,1,1,-1,0,0,0,0,-1,1,0,1,-1,0,0,0,0,0,1,0,0,0,-1,0,0,0,0,1,-1,1,0,1,0,0,-1,0,-1,-1,-1,0,-1,-1,0,-1,-1,0,-1,0,-1,0,-1,-1,0,1,0,0,-1,0,1,0,0,0,0,0,1,0,-1,0,0,1,-1,-1,1,-1,1,0,0,1,0,0,1,0,1,0,-1,1,0,0,0,0,0,-1,0,1,0,-1,0,0,-1,1,1,1,-1,0,0,1,0,-1,0,0,0,-1,1,1,0,1,0,-1,0,1,0,0,0,0,0,0,-1,1,0,0,-1,0,-1,1,0,-1,0,0,1,-1,0,0,0,0,-1,0,-1,0,0,0,-1,0,1,1,0,0,0,0,1,0,1,1,0,1,-1,0,-1,1,0,-1,0,-1,0,-1,1,1,0,1,0,1,-1,1,1,-1,-1,0,0,-1,0,0,1,1,0,0,1,1,-1,0,1,-1,0,0,0,0,0,1,-1,-1,0,0,-1,0,0,1,1,-1,1,0,1,0,-1,1,0,1,1,-1,-1,0,0,0,0,0,0,0,0,-1,-1,-1,0,1,1,0,0,0,0,1,1,0,-1,-1,0,0,-1,0,1,0,0,1,1,1,0,1,1,1,-1,-1,0,-1,-1,-1,0,1,-1,1,1,0,0,1,0,0,1,-1,1,0,-1,0,1,-1,1,0,-1,1,0,0,0,1,0,1,0,0,0,0,1,1,0,-1,0,1,0,0,-1,-1,1,0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,1,0,0,0,0,-1,0,1,0,0,0,1,0,1,0,-1,0,1,1,0,-1,0,1,0,1,0,0,0,0,1,0,-1,0,-1,1,0,0,0,1,-1,-1,0,0,1,0,0,0,0,0,0,0,0,-1,1,-1,0,0,-1,1,0,1,0,1,0,1,0,0,0,0,0,1,-1,-1,0,0,0,0,1,0,-1,1,0,1,1,-1,-1,-1,0,-1,0,0,-1,0,0,0,0,0,0,-1,0,0,-1,0,1,1,-1,0,0,0,0,0,1,0,0,0,1,-1,1,0,0,0,0,1,-1,1,1,-1,1,-1,0,-1,-1,-1,0,-1,0,-1,0,0,0,0,0,1,0,0,0},
{0,0,0,0,1,0,0,0,0,0,-1,0,-1,0,0,0,0,1,-1,0,0,0,1,-1,0,0,-1,0,0,0,-1,1,1,-1,-1,1,0,0,1,0,-1,0,1,-1,0,-1,-1,1,0,-1,1,1,-1,1,0,0,-1,1,1,-1,-1,0,1,0,0,0,1,1,0,1,0,-1,0,0,0,-1,1,1,1,0,0,0,1,0,0,1,-1,0,0,0,-1,1,0,1,-1,0,-1,0,-1,0,0,1,-1,-1,0,0,0,-1,1,0,-1,0,-1,0,0,0,-1,0,-1,-1,1,-1,1,0,1,0,-1,-1,-1,-1,-1,-1,0,0,0,0,1,-1,0,0,-1,0,0,1,1,-1,-1,1,-1,1,-1,0,-1,0,-1,0,0,1,0,0,0,1,1,-1,0,0,0,0,1,0,-1,1,1,1,-1,0,1,1,1,1,0,-1,-1,0,1,0,0,0,0,1,0,0,0,0,1,-1,1,0,0,-1,0,-1,0,1,0,0,1,0,-1,1,0,1,-1,1,-1,0,0,0,-1,0,0,1,0,0,0,0,1,1,0,0,0,0,-1,-1,0,-1,1,0,0,0,1,0,-1,0,0,0,0,0,1,1,0,0,1,-1,0,0,1,0,1,1,0,-1,0,-1,0,0,0,-1,-1,0,0,1,-1,-1,0,0,0,0,0,-1,0,-1,0,-1,0,1,0,-1,1,1,0,1,1,0,0,1,-1,1,-1,0,0,0,-1,0,1,0,-1,0,1,1,0,0,1,0,0,0,1,-1,-1,0,0,-1,0,0,0,-1,-1,1,0,1,-1,0,0,0,0,1,1,-1,0,1,-1,0,0,0,0,0,1,-1,-1,-1,0,-1,-1,0,1,1,0,1,1,0,0,1,0,-1,-1,0,0,0,1,1,1,1,-1,0,-1,0,1,1,1,-1,1,0,0,0,-1,-1,0,1,-1,1,0,0,1,1,0,0,0,0,-1,0,-1,0,1,1,0,-1,0,-1,-1,-1,-1,0,1,-1,0,0,0,-1,1,1,-1,0,0,0,0,0,-1,1,0,0,0,1,0,-1,-1,1,0,1,-1,1,-1,1,0,0,0,-1,1,0,1,0,1,-1,-1,0,1,0,-1,0,0,0,0,0,0,1,-1,1,0,0,-1,1,1,-1,0,1,0,0,0,-1,-1,-1,0,1,1,0,0,1,-1,0,0,1,1,0,0,0,0,0,-1,0,0,1,-1,-1,0,1,-1,1,1,1,0,-1,0,0,0,-1,0,1,0,-1,-1,0,0,-1,0,0,1,-1,0,1,0,1,-1,0,0,0,0,-1,0,-1,-1,0,0,-1,0,0,0,-1,-1,1,0,-1,-1,-1,0,0,0,0,0,-1,0,0,0,1,0,-1,-1,1,0,-1,0,0,1,0,-1,0,1,0,-1,1,0,0,0,1,-1,-1,0,1,0,0,1,-1,0,-1,-1,-1,0,0,0,1,0,0,-1,1,1,-1,0,0,-1,0,-1,-1,1,1,-1,0,-1,-1,0,1,0,0,-1,-1,-1,0,1,-1,0,0,0,1,0,0,-1,-1,1,1,0,0,0,-1,0,0,1,-1,0,0,-1,-1,1,1,1,1,1,0,-1,0,0,0,0,0,0,1,1,0,1,-1,-1,0,0,1,0,0,1,-1,1,1,1,0,0,-1,0,0,-1,-1,1,-1,0,0,1,1,0,0,0,0,1,0,0,-1,1,0,0,1,0,-1,-1,1,1,-1,-1,-1,-1,-1,0,-1,1,0,-1,-1,0,0,0,0,-1,1,-1,0,0,-1,0,1,1,1,0,1,-1,0,-1,1,0,0,0,0,0,0,0,1,0,0,-1,0,0,1,-1,0,1,0,1,0,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1,0,0,1,1,1,0,-1,0,-1,1,-1,-1,-1,1,0,1,0,0,1,-1,-1,1,1,-1,0,0,-1,0,-1,-1,0,0,0,-1,-1,1,-1,1,-1,-1,1,0,0,-1,0,1,0,1,-1,-1,0,1,0,1,0,1,0,1,0,0,-1,0,0,0,0,-1,1,1,-1,0,1,0,0,1,1,1,1,1,0,-1,-1,1,0,1,1,0,1,0,-1,0,0,0,0,0,0,1,0,0,1,1,-1,1,1,0,0,0,0,0,-1,1,0,0,-1,0,0,-1,0,1,0,0,-1,1,0,0,-1,0,1,-1,0,1,0,0,-1,1,-1,0,-1,0,1,0,0,0,0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,1,0,-1,0,0,1,1,0,-1,-1,0,0,-1,-1,1,1,0,-1,0,1,1,0,1,0,0,1,-1,0,0,-1,0,0,0,1,1,0,1,1,0,-1,-1,0,-1,-1,0,-1,0,0,0,1,1,0,1,-1,0,0,-1,-1,-1,-1,0,0,-1,1,0,-1,0,1,0,-1,-1,0,1,0,0,1,0,1,0,1,1,0,0,-1,-1},
} ;
static const unsigned char precomputed_core_mult3sntrup1013_k[precomputed_core_mult3sntrup1013_NUM][crypto_core_KEYBYTES] = {
{1,0,0,1,-1,-1,-1,0,0,0,0,-1,0,1,0,-1,-1,-1,1,-1,-1,-1,0,0,0,1,0,1,1,-1,-1,0,1,1,0,1,1,0,1,0,1,-1,-1,0,0,-1,1,-1,-1,-1,1,0,-1,0,0,0,0,-1,-1,1,-1,0,1,0,-1,0,1,0,1,-1,0,0,0,0,0,-1,0,0,1,1,0,0,1,0,1,-1,0,1,-1,0,-1,0,0,-1,0,-1,-1,1,1,0,1,0,0,-1,0,1,0,0,-1,1,0,-1,0,1,-1,1,-1,0,-1,-1,-1,-1,-1,0,0,0,0,-1,-1,1,0,0,1,1,0,0,0,-1,-1,0,-1,0,1,-1,0,-1,1,0,1,0,-1,-1,1,0,-1,1,0,0,1,0,-1,-1,0,-1,0,0,0,0,0,0,0,-1,-1,0,0,0,-1,0,0,0,1,0,0,-1,0,0,0,-1,0,-1,1,0,0,-1,1,1,1,-1,-1,0,1,0,-1,0,0,1,0,-1,0,-1,-1,1,1,-1,1,0,0,0,-1,0,0,0,0,-1,0,1,0,-1,1,0,0,-1,-1,0,1,0,-1,-1,-1,0,0,0,0,0,-1,0,-1,1,0,0,0,1,1,-1,1,-1,1,0,0,0,0,-1,0,0,0,-1,0,1,0,0,-1,1,-1,-1,1,0,-1,-1,1,-1,-1,0,0,1,1,0,-1,0,-1,1,1,0,1,0,0,1,0,-1,1,-1,-1,1,1,0,-1,0,1,0,0,0,0,-1,1,0,-1,0,0,0,0,0,0,1,-1,0,-1,0,0,0,-1,0,1,1,-1,-1,-1,0,0,0,0,-1,1,0,0,0,-1,-1,-1,0,0,0,1,-1,0,1,0,0,0,-1,1,1,0,-1,0,0,0,1,0,0,0,1,0,0,0,0,-1,0,-1,0,1,0,-1,0,0,-1,0,1,-1,0,0,0,0,0,0,0,0,-1,-1,-1,0,1,0,-1,-1,1,0,0,0,-1,0,0,1,1,1,0,0,0,1,1,0,-1,0,0,1,0,0,-1,-1,0,0,0,0,0,0,1,-1,0,1,0,1,1,-1,-1,0,0,0,1,1,0,0,1,-1,0,1,0,1,0,0,0,-1,1,1,1,-1,0,0,0,-1,1,1,0,-1,0,1,-1,0,1,-1,1,0,0,1,0,-1,0,-1,0,-1,0,1,0,0,0,0,1,-1,0,0,0,-1,0,1,1,-1,1,0,-1,1,0,-1,-1,0,-1,0,0,-1,1,0,0,0,1,0,0,-1,1,-1,0,-1,0,0,0,0,-1,1,0,0,0,0,0,0,0,1,0,0,-1,0,0,-1,0,1,-1,1,-1,0,0,-1,0,1,1,1,0,1,0,0,0,-1,0,-1,0,0,0,0,1,0,0,0,0,1,1,0,-1,-1,1,0,0,0,0,0,-1,0,1,0,-1,0,0,-1,1,0,-1,1,1,1,0,0,-1,1,1,1,1,-1,1,1,-1,1,1,-1,-1,1,-1,0,1,-1,-1,-1,0,1,0,0,0,-1,1,-1,0,0,0,0,0,0,0,1,-1,0,0,0,0,0,1,0,0,-1,0,0,-1,1,1,0,0,-1,0,0,1,-1,1,1,0,-1,-1,0,1,-1,0,-1,0,1,0,-1,0,0,0,1,0,0,0,1,1,-1,0,-1,0,0,0,0,-1,0,0,0,1,1,-1,-1,0,0,0,0,-1,0,0,0,-1,1,0,1,0,0,0,0,1,0,-1,1,1,1,1,1,0,0,0,1,-1,-1,-1,0,0,-1,0,1,0,1,-1,0,0,0,-1,-1,0,1,-1,1,-1,-1,1,1,0,0,0,-1,1,0,0,0,1,1,1,-1,-1,0,-1,0,0,-1,-1,1,-1,0,0,0,-1,0,1,1,1,0,-1,1,-1,0,1,-1,0,1,0,-1,1,0,1,0,-1,0,0,-1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,-1,0,-1,0,0,0,0,0,0,-1,0,0,1,-1,0,0,0,1,1,0,0,1,0,0,1,-1,1,0,0,0,-1,0,-1,0,-1,1,0,-1,-1,0,0,1,1,1,0,1,0,0,-1,-1,0,1,0,1,1,0,0,-1,-1,1,-1,0,-1,0,-1,0,1,0,-1,0,0,1,0,-1,-1,1,0,0,1,1,0,-1,0,0,0,1,0,-1,-1,0,-1,0,0,1,0,0,-1,0,1,1,0,1,1,-1,-1,0,-1,-1,0,-1,0,-1,0,0,-1,0,0,0,1,-1,-1,-1,0,-1,0,0,0,-1,1,0,0,0,0,0,0,1,-1,0,-1,1,-1,0,0,0,-1,1,0,0,-1,0,-1,0,1,0,-1,0,1,0,-1,0,0,1,0,0,0,0,1,-1,1,0,0,1,0,1,0,-1,-1,0,1,0,1,0,-1,-1,0,0,1,1,-1,0,-1,1},
{1,0,0,-1,0,0,0,-1,-1,0,0,1,1,0,1,1,0,-1,1,1,-1,1,-1,0,1,0,0,1,1,0,0,0,-1,1,1,-1,1,0,1,-1,0,-1,0,1,1,0,0,0,0,1,1,0,-1,1,-1,1,0,0,0,-1,0,1,-1,1,-1,1,0,0,1,1,0,0,0,-1,-1,0,0,0,0,1,-1,0,-1,0,-1,0,0,0,0,0,0,0,1,-1,0,0,0,-1,-1,0,0,-1,-1,1,1,0,-1,1,0,0,-1,0,1,0,1,0,-1,0,-1,-1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,-1,-1,0,0,0,1,0,0,-1,0,1,0,-1,0,-1,0,0,0,0,-1,0,-1,0,-1,0,0,-1,1,0,-1,-1,0,-1,1,0,0,0,0,1,0,0,-1,0,0,0,-1,0,0,1,1,-1,-1,1,0,0,-1,0,0,-1,1,0,0,0,-1,0,0,0,0,0,0,0,0,-1,-1,-1,-1,0,0,1,-1,1,0,1,0,1,-1,0,0,0,1,0,-1,1,-1,0,-1,-1,-1,1,0,1,1,0,0,0,-1,0,1,1,0,0,0,0,0,-1,1,0,0,-1,-1,1,0,-1,0,1,1,0,0,0,0,1,0,1,0,0,0,-1,-1,0,1,0,0,0,1,-1,0,1,1,-1,0,0,0,0,-1,1,0,0,1,1,-1,0,-1,-1,0,-1,-1,0,-1,1,0,1,1,1,-1,0,0,0,-1,-1,0,0,-1,1,0,-1,0,0,0,1,0,1,1,-1,0,0,1,-1,-1,-1,-1,0,1,-1,-1,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,-1,0,0,0,1,0,-1,1,0,0,1,0,0,-1,1,0,0,-1,0,0,-1,-1,1,-1,1,0,0,0,1,0,0,0,1,0,0,0,0,0,-1,-1,0,-1,0,-1,0,0,0,1,-1,-1,-1,-1,-1,-1,1,0,-1,0,1,-1,1,0,1,1,0,1,-1,0,-1,0,1,0,-1,0,0,0,1,0,0,-1,1,0,1,-1,1,0,0,0,1,0,-1,0,-1,1,0,-1,0,0,0,1,1,-1,-1,1,0,0,0,1,-1,1,1,0,-1,0,0,0,0,0,-1,0,0,0,0,1,0,-1,0,0,0,1,0,-1,1,-1,1,1,0,1,-1,-1,0,1,0,0,-1,-1,0,0,0,1,0,1,-1,0,1,0,1,1,0,1,-1,-1,1,-1,1,0,0,0,0,-1,-1,1,-1,1,-1,1,0,0,0,1,1,-1,-1,-1,-1,-1,1,1,-1,0,0,0,0,-1,0,1,0,0,0,1,1,1,-1,0,0,0,0,0,1,-1,1,-1,-1,-1,0,0,0,-1,0,0,0,1,1,0,-1,0,-1,0,-1,0,1,-1,1,0,0,0,1,1,-1,1,0,1,0,-1,0,1,-1,0,1,1,0,0,1,0,0,1,-1,-1,1,0,0,0,0,0,0,-1,1,-1,0,0,0,0,-1,1,0,-1,0,0,0,1,-1,0,-1,-1,0,0,-1,1,-1,0,1,-1,0,0,1,0,-1,1,1,0,0,0,0,0,-1,0,-1,0,-1,1,0,0,-1,0,-1,1,0,-1,0,0,0,0,-1,1,0,1,1,0,-1,1,0,-1,-1,0,0,0,0,0,0,-1,1,-1,1,0,0,0,1,0,-1,0,-1,1,-1,0,0,1,1,0,1,0,0,0,-1,1,0,1,0,0,-1,0,-1,0,0,0,0,-1,1,-1,0,1,0,0,1,-1,0,0,-1,0,0,1,1,0,1,0,1,0,-1,1,0,0,1,0,0,-1,0,-1,1,0,0,-1,-1,1,0,-1,0,0,1,-1,-1,0,0,-1,-1,1,1,0,-1,0,-1,0,1,-1,0,-1,0,1,1,1,1,0,0,-1,-1,0,0,0,0,0,0,-1,-1,-1,0,0,0,0,0,-1,1,1,-1,-1,0,0,1,1,-1,0,0,-1,0,1,0,0,-1,0,1,-1,1,-1,1,-1,-1,0,-1,0,-1,0,0,0,0,-1,0,1,0,0,0,0,0,-1,0,-1,0,-1,0,1,1,-1,1,1,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,-1,0,-1,1,0,1,-1,-1,0,-1,1,0,0,1,-1,0,1,1,-1,1,-1,1,1,1,1,-1,1,1,1,0,1,0,1,-1,1,1,0,0,0,1,-1,1,-1,0,0,0,0,0,1,0,0,0,0,1,1,1,0,0,0,-1,-1,-1,0,0,0,1,0,0,-1,-1,0,0,0,1,0,0,-1,-1,1,1,-1,0,1,0,-1,0,-1,-1,-1,1,1,0,0,0,0,0,1,0,0,-1,1,0,-1,-1,0,0,-1,1,-1,0,0,0,0,0,-1,-1,0,0,1,0,1,-1,0,-1,1,0,0,-1,1,0,1,1},
{0,0,-1,0,-1,-1,0,0,0,1,0,1,-1,0,-1,-1,0,0,0,0,-1,0,0,-1,0,0,-1,0,1,0,0,0,0,0,0,0,0,-1,1,0,0,0,0,0,1,-1,0,0,0,0,1,0,0,1,-1,-1,0,0,0,1,0,0,0,1,0,1,0,0,0,0,-1,0,0,1,1,0,0,-1,0,0,1,-1,-1,1,1,0,1,0,-1,-1,1,1,1,1,0,0,-1,-1,0,0,1,1,0,0,1,-1,-1,-1,-1,0,0,0,0,0,1,1,-1,1,1,-1,0,0,1,0,-1,1,0,0,1,1,0,0,-1,0,0,0,0,0,0,0,-1,-1,0,0,0,0,1,1,0,-1,-1,0,1,1,0,1,0,0,1,0,-1,0,0,-1,0,0,1,0,1,0,1,-1,1,-1,0,0,1,0,-1,1,0,1,0,0,1,0,-1,0,-1,-1,0,0,1,0,0,1,-1,1,0,0,-1,0,0,-1,-1,0,0,-1,0,1,-1,0,-1,-1,0,-1,1,0,0,1,0,0,0,1,1,0,0,0,0,-1,1,0,0,1,1,0,-1,-1,-1,-1,0,0,0,0,0,1,0,-1,-1,0,-1,1,0,0,0,0,0,0,0,1,-1,-1,1,0,0,0,0,0,-1,0,0,0,1,1,0,0,0,0,0,0,1,-1,0,-1,0,-1,0,0,0,-1,0,0,0,1,0,0,0,0,0,-1,1,1,0,-1,1,-1,1,0,1,1,0,1,1,-1,0,-1,0,0,0,0,0,1,1,-1,0,1,-1,1,0,-1,0,1,1,1,1,0,1,0,0,0,-1,-1,0,0,-1,-1,1,1,1,0,0,0,-1,0,0,1,-1,0,1,1,1,0,0,-1,0,0,0,1,0,0,0,-1,-1,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,0,-1,1,0,1,0,-1,0,0,0,0,-1,1,0,-1,1,1,-1,0,0,0,0,0,0,1,-1,1,-1,-1,0,1,0,0,-1,-1,-1,0,0,1,-1,-1,0,-1,0,0,0,1,-1,-1,1,0,-1,-1,0,1,-1,0,0,0,-1,-1,0,-1,-1,1,1,0,0,-1,-1,-1,1,0,0,-1,0,-1,0,1,0,-1,0,0,0,0,0,-1,0,0,0,0,0,1,0,0,0,0,1,-1,0,1,1,0,1,-1,-1,0,0,0,1,0,-1,-1,0,-1,0,0,-1,-1,0,-1,0,1,0,-1,1,0,1,1,-1,1,0,-1,0,0,-1,0,1,0,0,0,0,-1,0,0,0,-1,1,-1,-1,0,1,1,0,0,0,0,1,-1,0,-1,-1,1,-1,1,0,0,1,-1,0,-1,-1,1,0,-1,-1,1,0,0,1,0,0,0,-1,0,0,1,-1,-1,0,1,-1,-1,-1,1,0,0,-1,1,1,0,-1,1,1,0,0,1,0,1,0,0,-1,0,-1,0,0,0,0,0,0,0,-1,-1,0,1,1,0,-1,0,1,-1,0,1,0,-1,-1,1,1,-1,1,0,1,0,1,0,-1,1,0,0,0,-1,0,0,-1,0,1,-1,0,0,1,0,-1,-1,0,-1,0,1,0,0,0,0,0,0,0,0,-1,0,0,0,0,0,-1,0,0,1,1,-1,0,-1,1,0,0,-1,0,0,0,-1,1,-1,-1,0,1,0,0,-1,0,0,0,0,-1,-1,-1,-1,0,0,0,0,-1,0,0,0,0,0,0,0,1,0,0,-1,0,1,1,1,0,0,1,1,0,-1,0,0,-1,-1,-1,0,0,0,0,-1,0,1,0,0,0,0,-1,0,-1,-1,0,1,0,1,0,0,-1,1,1,0,0,1,1,0,-1,1,1,-1,0,1,0,1,-1,-1,1,0,-1,0,1,1,0,0,0,0,0,0,0,1,-1,1,0,0,1,0,0,1,0,0,-1,-1,-1,0,-1,0,-1,-1,-1,0,1,0,0,0,0,1,1,1,1,1,-1,1,-1,0,1,1,1,-1,0,1,0,0,0,-1,1,0,-1,1,0,0,0,0,-1,0,-1,0,-1,1,0,0,0,-1,0,-1,0,0,1,-1,0,-1,1,1,1,0,0,-1,-1,1,0,0,0,1,1,-1,-1,0,0,0,1,0,0,-1,0,-1,-1,0,1,0,0,1,-1,0,0,1,-1,0,0,1,0,0,1,0,-1,0,0,1,1,1,0,-1,0,1,0,1,1,-1,1,0,0,1,0,0,0,0,-1,0,-1,-1,0,1,0,1,1,0,-1,1,1,0,1,0,1,0,0,1,0,-1,1,0,0,0,0,0,0,1,1,-1,1,1,1,0,0,1,0,0,0,-1,-1,0,0,1,-1,1,1,-1,1,-1,0,0,1,0,0,0,1,0,1,0,-1,0,1,0,-1,0,-1,1,0,-1,0,0,0,0,0,-1,-1,1,0,1,-1,0,0,-1,0,0,1,0},
{1,-1,0,-1,0,-1,0,0,1,0,0,0,0,-1,0,0,1,0,-1,0,-1,1,-1,0,0,0,1,0,0,0,1,0,-1,0,0,0,0,0,-1,0,-1,-1,0,1,-1,-1,1,-1,0,-1,-1,0,0,0,0,0,1,0,-1,0,0,1,0,0,1,1,-1,0,0,1,-1,0,-1,0,0,1,1,1,0,1,1,-1,1,0,-1,-1,1,0,0,0,0,-1,-1,1,0,1,0,-1,1,-1,-1,0,-1,0,0,0,0,1,0,0,1,-1,0,-1,-1,-1,-1,1,0,0,1,0,0,-1,0,0,0,-1,1,0,0,0,0,1,0,1,-1,-1,1,1,1,-1,-1,0,-1,0,1,0,0,0,0,0,0,0,0,-1,0,1,0,0,0,-1,0,1,0,1,0,0,-1,0,-1,-1,-1,-1,1,1,0,0,0,0,0,0,1,1,1,-1,0,1,1,-1,0,1,0,-1,1,-1,1,0,-1,1,-1,-1,1,0,0,0,1,1,0,1,1,1,0,-1,1,-1,0,0,0,-1,0,0,0,-1,0,-1,0,0,0,0,-1,0,-1,0,1,0,1,-1,0,-1,0,0,1,0,0,1,1,-1,-1,0,1,1,1,0,1,-1,0,1,1,1,0,0,-1,0,1,0,1,0,0,0,0,0,1,0,1,1,0,0,0,0,0,0,0,0,-1,-1,0,1,1,0,-1,0,-1,-1,0,-1,-1,0,-1,0,0,0,1,0,0,0,0,-1,0,0,-1,0,1,-1,0,-1,-1,-1,-1,0,0,1,-1,0,0,0,-1,-1,-1,1,-1,0,0,1,0,1,0,0,-1,0,1,-1,0,1,1,0,0,0,-1,1,0,1,0,0,-1,0,0,0,0,1,0,0,0,-1,1,-1,0,0,1,1,0,0,-1,0,-1,0,0,0,0,0,0,1,1,-1,0,-1,1,-1,-1,-1,0,0,-1,0,0,0,0,0,1,0,-1,1,0,1,-1,0,1,0,0,1,1,0,-1,0,0,0,0,0,1,-1,-1,0,0,-1,0,1,-1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,-1,-1,1,1,0,0,0,0,0,0,1,1,-1,0,-1,-1,0,0,0,-1,-1,0,0,0,-1,1,0,-1,0,0,1,-1,0,1,0,0,-1,0,-1,0,0,0,0,-1,0,0,0,0,1,1,1,0,0,0,0,0,1,0,1,0,0,0,1,1,1,0,0,-1,1,0,-1,-1,0,0,0,-1,0,1,0,-1,-1,-1,0,-1,1,0,1,1,1,0,-1,0,1,0,0,1,0,1,0,1,0,-1,-1,0,0,0,0,0,-1,0,0,0,1,0,0,1,0,-1,-1,0,-1,1,0,-1,0,0,0,-1,0,1,0,-1,0,-1,1,0,0,-1,-1,1,0,1,-1,-1,1,1,0,0,1,1,-1,0,-1,-1,1,0,0,-1,0,1,1,-1,1,0,1,0,0,-1,0,0,-1,1,-1,-1,0,0,1,0,1,1,0,1,0,0,0,-1,-1,0,0,0,-1,-1,0,1,0,-1,-1,0,0,0,-1,0,-1,-1,0,0,1,1,-1,1,0,0,0,0,1,-1,-1,1,0,1,0,1,0,0,-1,1,0,0,-1,1,-1,-1,1,0,1,0,-1,0,0,0,0,1,0,-1,1,0,1,1,0,-1,0,0,1,0,0,0,-1,0,-1,0,-1,0,0,1,0,0,0,-1,1,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,-1,1,-1,0,0,0,1,-1,1,1,0,0,0,0,-1,0,0,-1,0,0,1,0,0,0,1,1,0,1,1,0,0,0,-1,0,0,-1,-1,-1,0,0,0,0,0,0,1,0,-1,-1,0,-1,-1,0,0,0,0,-1,-1,1,0,0,-1,-1,0,0,1,0,0,1,0,0,1,-1,-1,1,0,1,0,1,0,-1,0,-1,-1,-1,0,0,-1,-1,1,0,1,1,-1,0,0,1,0,-1,-1,1,1,1,-1,0,1,0,0,0,1,0,-1,0,0,0,0,0,0,0,-1,0,1,1,0,1,-1,1,1,-1,1,0,0,1,-1,-1,1,-1,1,-1,-1,0,-1,0,0,0,0,0,-1,0,1,-1,-1,0,1,0,0,0,1,1,-1,0,0,-1,0,0,1,0,-1,0,0,0,1,-1,1,-1,0,1,-1,0,1,0,0,0,0,0,1,-1,1,-1,1,0,0,1,1,0,0,-1,0,0,0,0,1,-1,0,1,0,-1,1,1,0,0,1,1,0,1,1,-1,0,1,-1,-1,0,0,0,-1,0,0,1,0,-1,0,0,-1,0,1,0,0,1,0,1,1,0,0,1,1,-1,0,1,-1,1,0,1,1,1,0,1,0,1,0,1,0,-1,1,0,-1,-1,0,-1,-1,1,1,0,0,0,-1,0,0,-1,1,0,1,0,1,0,-1,0,0,0},
} ;
static const unsigned char precomputed_core_mult3sntrup1013_c[precomputed_core_mult3sntrup1013_NUM][crypto_core_CONSTBYTES] = {
{},
{},
{},
{},
} ;
static void test_core_mult3sntrup1013_impl(long long impl)
{
unsigned char *h = test_core_mult3sntrup1013_h;
unsigned char *n = test_core_mult3sntrup1013_n;
unsigned char *k = test_core_mult3sntrup1013_k;
unsigned char *c = test_core_mult3sntrup1013_c;
unsigned char *h2 = test_core_mult3sntrup1013_h2;
unsigned char *n2 = test_core_mult3sntrup1013_n2;
unsigned char *k2 = test_core_mult3sntrup1013_k2;
unsigned char *c2 = test_core_mult3sntrup1013_c2;
long long hlen = crypto_core_OUTPUTBYTES;
long long nlen = crypto_core_INPUTBYTES;
long long klen = crypto_core_KEYBYTES;
long long clen = crypto_core_CONSTBYTES;
if (targeti && strcmp(targeti,".") && strcmp(targeti,ntruprime_dispatch_core_mult3sntrup1013_implementation(impl))) return;
if (targetn && atol(targetn) != impl) return;
if (impl >= 0) {
crypto_core = ntruprime_dispatch_core_mult3sntrup1013(impl);
printf("core_mult3sntrup1013 %lld implementation %s compiler %s\n",impl,ntruprime_dispatch_core_mult3sntrup1013_implementation(impl),ntruprime_dispatch_core_mult3sntrup1013_compiler(impl));
} else {
crypto_core = ntruprime_core_mult3sntrup1013;
printf("core_mult3sntrup1013 selected implementation %s compiler %s\n",ntruprime_core_mult3sntrup1013_implementation(),ntruprime_core_mult3sntrup1013_compiler());
}
for (long long checksumbig = 0;checksumbig < 2;++checksumbig) {
long long loops = checksumbig ? 4096 : 512;
checksum_clear();
for (long long loop = 0;loop < loops;++loop) {
output_prepare(h2,h,hlen);
input_prepare(n2,n,nlen);
input_prepare(k2,k,klen);
input_prepare(c2,c,clen);
secret(n,nlen);
secret(k,klen);
secret(c,clen);
crypto_core(h,n,k,c);
public(n,nlen);
public(k,klen);
public(c,clen);
public(h,hlen);
checksum(h,hlen);
output_compare(h2,h,hlen,"crypto_core");
input_compare(n2,n,nlen,"crypto_core");
input_compare(k2,k,klen,"crypto_core");
input_compare(c2,c,clen,"crypto_core");
double_canary(h2,h,hlen);
double_canary(n2,n,nlen);
double_canary(k2,k,klen);
double_canary(c2,c,clen);
secret(n2,nlen);
secret(k2,klen);
secret(c2,clen);
crypto_core(h2,n2,k2,c2);
public(n2,nlen);
public(k2,klen);
public(c2,clen);
public(h2,hlen);
if (memcmp(h2,h,hlen) != 0) fail("failure: crypto_core is nondeterministic\n");
double_canary(h2,h,hlen);
double_canary(n2,n,nlen);
double_canary(k2,k,klen);
double_canary(c2,c,clen);
secret(n2,nlen);
secret(k,klen);
secret(c,clen);
crypto_core(n2,n2,k,c);
public(n2,hlen);
public(k,klen);
public(c,clen);
if (memcmp(n2,h,hlen) != 0) fail("failure: crypto_core does not handle n=h overlap\n");
memcpy(n2,n,nlen);
secret(n,nlen);
secret(k2,klen);
secret(c,clen);
crypto_core(k2,n,k2,c);
public(k2,hlen);
public(n,nlen);
public(c,clen);
if (memcmp(k2,h,hlen) != 0) fail("failure: crypto_core does not handle k=h overlap\n");
memcpy(k2,k,klen);
secret(n,nlen);
secret(k,klen);
secret(c2,clen);
crypto_core(c2,n,k,c2);
public(c2,hlen);
public(n,nlen);
public(k,klen);
if (memcmp(c2,h,hlen) != 0) fail("failure: crypto_core does not handle c=h overlap\n");
memcpy(c2,c,clen);
}
checksum_expected(core_mult3sntrup1013_checksums[checksumbig]);
}
for (long long precomp = 0;precomp < precomputed_core_mult3sntrup1013_NUM;++precomp) {
output_prepare(h2,h,crypto_core_OUTPUTBYTES);
input_prepare(n2,n,crypto_core_INPUTBYTES);
memcpy(n,precomputed_core_mult3sntrup1013_n[precomp],crypto_core_INPUTBYTES);
memcpy(n2,precomputed_core_mult3sntrup1013_n[precomp],crypto_core_INPUTBYTES);
input_prepare(k2,k,crypto_core_KEYBYTES);
memcpy(k,precomputed_core_mult3sntrup1013_k[precomp],crypto_core_KEYBYTES);
memcpy(k2,precomputed_core_mult3sntrup1013_k[precomp],crypto_core_KEYBYTES);
input_prepare(c2,c,crypto_core_CONSTBYTES);
memcpy(c,precomputed_core_mult3sntrup1013_c[precomp],crypto_core_CONSTBYTES);
memcpy(c2,precomputed_core_mult3sntrup1013_c[precomp],crypto_core_CONSTBYTES);
crypto_core(h,n,k,c);
if (memcmp(h,precomputed_core_mult3sntrup1013_h[precomp],crypto_core_OUTPUTBYTES)) {
fail("failure: crypto_core fails precomputed test vectors\n");
printf("expected h: ");
for (long long pos = 0;pos < crypto_core_OUTPUTBYTES;++pos) printf("%02x",((unsigned char *) precomputed_core_mult3sntrup1013_h[precomp])[pos]);
printf("\n");
printf("received h: ");
for (long long pos = 0;pos < crypto_core_OUTPUTBYTES;++pos) printf("%02x",h[pos]);
printf("\n");
}
output_compare(h2,h,crypto_core_OUTPUTBYTES,"crypto_core");
input_compare(n2,n,crypto_core_INPUTBYTES,"crypto_core");
input_compare(k2,k,crypto_core_KEYBYTES,"crypto_core");
input_compare(c2,c,crypto_core_CONSTBYTES,"crypto_core");
}
}
void test_core_mult3sntrup1013(void)
{
long long maxalloc = 0;
if (targeto && strcmp(targeto,"core")) return;
if (targetp && strcmp(targetp,"mult3sntrup1013")) return;
storage_core_mult3sntrup1013_h = callocplus(crypto_core_OUTPUTBYTES);
test_core_mult3sntrup1013_h = aligned(storage_core_mult3sntrup1013_h,crypto_core_OUTPUTBYTES);
if (crypto_core_OUTPUTBYTES > maxalloc) maxalloc = crypto_core_OUTPUTBYTES;
storage_core_mult3sntrup1013_n = callocplus(crypto_core_INPUTBYTES);
test_core_mult3sntrup1013_n = aligned(storage_core_mult3sntrup1013_n,crypto_core_INPUTBYTES);
if (crypto_core_INPUTBYTES > maxalloc) maxalloc = crypto_core_INPUTBYTES;
storage_core_mult3sntrup1013_k = callocplus(crypto_core_KEYBYTES);
test_core_mult3sntrup1013_k = aligned(storage_core_mult3sntrup1013_k,crypto_core_KEYBYTES);
if (crypto_core_KEYBYTES > maxalloc) maxalloc = crypto_core_KEYBYTES;
storage_core_mult3sntrup1013_c = callocplus(crypto_core_CONSTBYTES);
test_core_mult3sntrup1013_c = aligned(storage_core_mult3sntrup1013_c,crypto_core_CONSTBYTES);
if (crypto_core_CONSTBYTES > maxalloc) maxalloc = crypto_core_CONSTBYTES;
storage_core_mult3sntrup1013_h2 = callocplus(maxalloc);
test_core_mult3sntrup1013_h2 = aligned(storage_core_mult3sntrup1013_h2,crypto_core_OUTPUTBYTES);
storage_core_mult3sntrup1013_n2 = callocplus(maxalloc);
test_core_mult3sntrup1013_n2 = aligned(storage_core_mult3sntrup1013_n2,crypto_core_INPUTBYTES);
storage_core_mult3sntrup1013_k2 = callocplus(maxalloc);
test_core_mult3sntrup1013_k2 = aligned(storage_core_mult3sntrup1013_k2,crypto_core_KEYBYTES);
storage_core_mult3sntrup1013_c2 = callocplus(maxalloc);
test_core_mult3sntrup1013_c2 = aligned(storage_core_mult3sntrup1013_c2,crypto_core_CONSTBYTES);
for (long long offset = 0;offset < 2;++offset) {
if (targetoffset && atol(targetoffset) != offset) continue;
if (offset && valgrind) break;
printf("core_mult3sntrup1013 offset %lld\n",offset);
for (long long impl = -1;impl < ntruprime_numimpl_core_mult3sntrup1013();++impl)
forked(test_core_mult3sntrup1013_impl,impl);
++test_core_mult3sntrup1013_h;
++test_core_mult3sntrup1013_n;
++test_core_mult3sntrup1013_k;
++test_core_mult3sntrup1013_c;
++test_core_mult3sntrup1013_h2;
++test_core_mult3sntrup1013_n2;
++test_core_mult3sntrup1013_k2;
++test_core_mult3sntrup1013_c2;
}
free(storage_core_mult3sntrup1013_c2);
free(storage_core_mult3sntrup1013_k2);
free(storage_core_mult3sntrup1013_n2);
free(storage_core_mult3sntrup1013_h2);
free(storage_core_mult3sntrup1013_c);
free(storage_core_mult3sntrup1013_k);
free(storage_core_mult3sntrup1013_n);
free(storage_core_mult3sntrup1013_h);
}
#undef crypto_core_OUTPUTBYTES
#undef crypto_core_INPUTBYTES
#undef crypto_core_KEYBYTES
#undef crypto_core_CONSTBYTES