-rw-r--r-- 65159 libmceliece-20240812/command/mceliece-speed.c raw
/* WARNING: auto-generated (by autogen/speed); do not edit */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/resource.h>
#include <cpucycles.h> /* -lcpucycles */
#include <mceliece.h> /* -lmceliece */
#include <randombytes.h> /* -lrandombytes */
static const char *targeto = 0;
static const char *targetp = 0;
static const char *targeti = 0;
#include "limits.inc"
static void *callocplus(long long len)
{
  void *x = calloc(1,len + 128);
  if (!x) abort();
  return x;
}
static void *aligned(void *x)
{
  unsigned char *y = x;
  y += 63 & (-(unsigned long) x);
  return y;
}
static void longlong_sort(long long *x,long long n)
{
  long long top,p,q,r,i;
  if (n < 2) return;
  top = 1;
  while (top < n - top) top += top;
  for (p = top;p > 0;p >>= 1) {
    for (i = 0;i < n - p;++i)
      if (!(i & p))
        if (x[i] > x[i+p]) {
          long long t = x[i];
          x[i] = x[i+p];
          x[i+p] = t;
        }
    i = 0;
    for (q = top;q > p;q >>= 1) {
      for (;i < n - q;++i) {
        if (!(i & p)) {
          long long a = x[i + p];
          for (r = q;r > p;r >>= 1)
            if (a > x[i+r]) {
              long long t = a;
              a = x[i+r];
              x[i+r] = t;
            }
          x[i + p] = a;
        }
      }
    }
  }
}
#define TIMINGS 32 // must be multiple of 4
static long long t[TIMINGS+1];
static void t_print(const char *op,long long impl,long long len)
{
  long long tsort[TIMINGS];
  long long iqm = 0;
  printf("%s",op);
  if (impl >= 0)
    printf(" %lld",impl);
  else
    printf(" selected");
  printf(" %lld",len);
  for (long long i = 0;i < TIMINGS;++i)
    tsort[i] = t[i] = t[i+1]-t[i];
  longlong_sort(tsort,TIMINGS);
  for (long long j = TIMINGS/4;j < 3*TIMINGS/4;++j)
    iqm += tsort[j];
  iqm *= 2;
  iqm += TIMINGS/2;
  iqm /= TIMINGS;
  printf(" %lld ",iqm);
  for (long long i = 0;i < TIMINGS;++i)
    printf("%+lld",t[i]-iqm);
  printf("\n");
  fflush(stdout);
}
#define MAXTEST_BYTES 65536
static void measure_cpucycles(void)
{
  printf("cpucycles selected persecond %lld\n",cpucycles_persecond());
  printf("cpucycles selected implementation %s\n",cpucycles_implementation());
  for (long long i = 0;i <= TIMINGS;++i)
    t[i] = cpucycles();
  t_print("cpucycles",-1,0);
}
static void measure_randombytes(void)
{
  void *mstorage = callocplus(MAXTEST_BYTES);
  unsigned char *m = aligned(mstorage);
  long long mlen = 0;
  while (mlen < MAXTEST_BYTES) {
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      randombytes(m,mlen);
    }
    t_print("randombytes",-1,mlen);
    mlen += 1+mlen/2;
  }
  free(mstorage);
}
static void measure_sort_int16(void)
{
  if (targeto && strcmp(targeto,"sort")) return;
  if (targetp && strcmp(targetp,"int16")) return;
  void *mstorage = callocplus(MAXTEST_BYTES);
  unsigned char *m = aligned(mstorage);
  long long mlen;
  for (long long impl = -1;impl < mceliece_numimpl_sort_int16();++impl) {
    void (*crypto_sort)(void *,long long);
    if (targeti && strcmp(targeti,mceliece_dispatch_sort_int16_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_sort = mceliece_dispatch_sort_int16(impl);
      printf("sort_int16 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_sort_int16_implementation(impl),mceliece_dispatch_sort_int16_compiler(impl));
    } else {
      crypto_sort = mceliece_sort_int16;
      printf("sort_int16 selected implementation %s compiler %s\n",mceliece_sort_int16_implementation(),mceliece_sort_int16_compiler());
    }
    randombytes(m,MAXTEST_BYTES);
    mlen = 0;
    while (mceliece_sort_int16_BYTES*mlen <= MAXTEST_BYTES) {
      randombytes(m,mceliece_sort_int16_BYTES*mlen);
      for (long long i = 0;i <= TIMINGS;++i) {
        t[i] = cpucycles();
        crypto_sort(m,mlen);
      }
      t_print("sort_int16",impl,mlen);
      mlen += 1+mlen/2;
    }
  }
  free(mstorage);
}
static void measure_sort_int32(void)
{
  if (targeto && strcmp(targeto,"sort")) return;
  if (targetp && strcmp(targetp,"int32")) return;
  void *mstorage = callocplus(MAXTEST_BYTES);
  unsigned char *m = aligned(mstorage);
  long long mlen;
  for (long long impl = -1;impl < mceliece_numimpl_sort_int32();++impl) {
    void (*crypto_sort)(void *,long long);
    if (targeti && strcmp(targeti,mceliece_dispatch_sort_int32_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_sort = mceliece_dispatch_sort_int32(impl);
      printf("sort_int32 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_sort_int32_implementation(impl),mceliece_dispatch_sort_int32_compiler(impl));
    } else {
      crypto_sort = mceliece_sort_int32;
      printf("sort_int32 selected implementation %s compiler %s\n",mceliece_sort_int32_implementation(),mceliece_sort_int32_compiler());
    }
    randombytes(m,MAXTEST_BYTES);
    mlen = 0;
    while (mceliece_sort_int32_BYTES*mlen <= MAXTEST_BYTES) {
      randombytes(m,mceliece_sort_int32_BYTES*mlen);
      for (long long i = 0;i <= TIMINGS;++i) {
        t[i] = cpucycles();
        crypto_sort(m,mlen);
      }
      t_print("sort_int32",impl,mlen);
      mlen += 1+mlen/2;
    }
  }
  free(mstorage);
}
static void measure_sort_int64(void)
{
  if (targeto && strcmp(targeto,"sort")) return;
  if (targetp && strcmp(targetp,"int64")) return;
  void *mstorage = callocplus(MAXTEST_BYTES);
  unsigned char *m = aligned(mstorage);
  long long mlen;
  for (long long impl = -1;impl < mceliece_numimpl_sort_int64();++impl) {
    void (*crypto_sort)(void *,long long);
    if (targeti && strcmp(targeti,mceliece_dispatch_sort_int64_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_sort = mceliece_dispatch_sort_int64(impl);
      printf("sort_int64 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_sort_int64_implementation(impl),mceliece_dispatch_sort_int64_compiler(impl));
    } else {
      crypto_sort = mceliece_sort_int64;
      printf("sort_int64 selected implementation %s compiler %s\n",mceliece_sort_int64_implementation(),mceliece_sort_int64_compiler());
    }
    randombytes(m,MAXTEST_BYTES);
    mlen = 0;
    while (mceliece_sort_int64_BYTES*mlen <= MAXTEST_BYTES) {
      randombytes(m,mceliece_sort_int64_BYTES*mlen);
      for (long long i = 0;i <= TIMINGS;++i) {
        t[i] = cpucycles();
        crypto_sort(m,mlen);
      }
      t_print("sort_int64",impl,mlen);
      mlen += 1+mlen/2;
    }
  }
  free(mstorage);
}
static void measure_xof_shake256(void)
{
  if (targeto && strcmp(targeto,"xof")) return;
  if (targetp && strcmp(targetp,"shake256")) return;
  void *hstorage = callocplus(MAXTEST_BYTES);
  unsigned char *h = aligned(hstorage);
  long long hlen;
  void *mstorage = callocplus(MAXTEST_BYTES);
  unsigned char *m = aligned(mstorage);
  long long mlen;
  for (long long impl = -1;impl < mceliece_numimpl_xof_shake256();++impl) {
    void (*crypto_xof)(unsigned char *,long long,const unsigned char *,long long);
    if (targeti && strcmp(targeti,mceliece_dispatch_xof_shake256_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_xof = mceliece_dispatch_xof_shake256(impl);
      printf("xof_shake256 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_xof_shake256_implementation(impl),mceliece_dispatch_xof_shake256_compiler(impl));
    } else {
      crypto_xof = mceliece_xof_shake256;
      printf("xof_shake256 selected implementation %s compiler %s\n",mceliece_xof_shake256_implementation(),mceliece_xof_shake256_compiler());
    }
    randombytes(h,MAXTEST_BYTES);
    randombytes(m,MAXTEST_BYTES);
    hlen = 32;
    mlen = 0;
    while (mlen <= MAXTEST_BYTES) {
      randombytes(m,mlen);
      for (long long i = 0;i <= TIMINGS;++i) {
        t[i] = cpucycles();
        crypto_xof(h,hlen,m,mlen);
      }
      t_print("xof_shake256",impl,mlen);
      mlen += 1+mlen/2;
    }
    mlen = 32;
    hlen = 1;
    while (hlen <= MAXTEST_BYTES) {
      randombytes(h,hlen);
      for (long long i = 0;i <= TIMINGS;++i) {
        t[i] = cpucycles();
        crypto_xof(h,hlen,m,mlen);
      }
      t_print("xof_shake256",impl,-hlen);
      hlen += 1+hlen/2;
    }
  }
  free(mstorage);
  free(hstorage);
}
static void measure_xof_bitwrite16(void)
{
  if (targeto && strcmp(targeto,"xof")) return;
  if (targetp && strcmp(targetp,"bitwrite16")) return;
  void *hstorage = callocplus(MAXTEST_BYTES);
  unsigned char *h = aligned(hstorage);
  long long hlen;
  void *mstorage = callocplus(MAXTEST_BYTES);
  unsigned char *m = aligned(mstorage);
  long long mlen;
  for (long long impl = -1;impl < mceliece_numimpl_xof_bitwrite16();++impl) {
    void (*crypto_xof)(unsigned char *,long long,const unsigned char *,long long);
    if (targeti && strcmp(targeti,mceliece_dispatch_xof_bitwrite16_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_xof = mceliece_dispatch_xof_bitwrite16(impl);
      printf("xof_bitwrite16 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_xof_bitwrite16_implementation(impl),mceliece_dispatch_xof_bitwrite16_compiler(impl));
    } else {
      crypto_xof = mceliece_xof_bitwrite16;
      printf("xof_bitwrite16 selected implementation %s compiler %s\n",mceliece_xof_bitwrite16_implementation(),mceliece_xof_bitwrite16_compiler());
    }
    randombytes(h,MAXTEST_BYTES);
    randombytes(m,MAXTEST_BYTES);
    hlen = 32;
    mlen = 0;
    while (mlen <= MAXTEST_BYTES) {
      randombytes(m,mlen);
      for (long long i = 0;i <= TIMINGS;++i) {
        t[i] = cpucycles();
        crypto_xof(h,hlen,m,mlen);
      }
      t_print("xof_bitwrite16",impl,mlen);
      mlen += 1+mlen/2;
    }
    mlen = 32;
    hlen = 1;
    while (hlen <= MAXTEST_BYTES) {
      randombytes(h,hlen);
      for (long long i = 0;i <= TIMINGS;++i) {
        t[i] = cpucycles();
        crypto_xof(h,hlen,m,mlen);
      }
      t_print("xof_bitwrite16",impl,-hlen);
      hlen += 1+hlen/2;
    }
  }
  free(mstorage);
  free(hstorage);
}
static void measure_kem_6960119(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6960119")) return;
  void *pstorage = callocplus(mceliece_kem_6960119_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6960119_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6960119_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6960119_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6960119_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6960119();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6960119_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6960119_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6960119_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6960119_dec(impl);
      printf("kem_6960119 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6960119_implementation(impl),mceliece_dispatch_kem_6960119_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6960119_keypair;
      crypto_kem_enc = mceliece_kem_6960119_enc;
      crypto_kem_dec = mceliece_kem_6960119_dec;
      printf("kem_6960119 selected implementation %s compiler %s\n",mceliece_kem_6960119_implementation(),mceliece_kem_6960119_compiler());
    }
    randombytes(p,mceliece_kem_6960119_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6960119_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6960119_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6960119_BYTES);
    randombytes(T,mceliece_kem_6960119_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6960119_keypair",impl,mceliece_kem_6960119_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6960119_enc",impl,mceliece_kem_6960119_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6960119_dec",impl,mceliece_kem_6960119_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_6960119f(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6960119f")) return;
  void *pstorage = callocplus(mceliece_kem_6960119f_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6960119f_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6960119f_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6960119f_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6960119f_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6960119f();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6960119f_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6960119f_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6960119f_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6960119f_dec(impl);
      printf("kem_6960119f %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6960119f_implementation(impl),mceliece_dispatch_kem_6960119f_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6960119f_keypair;
      crypto_kem_enc = mceliece_kem_6960119f_enc;
      crypto_kem_dec = mceliece_kem_6960119f_dec;
      printf("kem_6960119f selected implementation %s compiler %s\n",mceliece_kem_6960119f_implementation(),mceliece_kem_6960119f_compiler());
    }
    randombytes(p,mceliece_kem_6960119f_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6960119f_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6960119f_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6960119f_BYTES);
    randombytes(T,mceliece_kem_6960119f_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6960119f_keypair",impl,mceliece_kem_6960119f_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6960119f_enc",impl,mceliece_kem_6960119f_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6960119f_dec",impl,mceliece_kem_6960119f_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_6960119pc(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6960119pc")) return;
  void *pstorage = callocplus(mceliece_kem_6960119pc_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6960119pc_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6960119pc_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6960119pc_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6960119pc_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6960119pc();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6960119pc_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6960119pc_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6960119pc_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6960119pc_dec(impl);
      printf("kem_6960119pc %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6960119pc_implementation(impl),mceliece_dispatch_kem_6960119pc_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6960119pc_keypair;
      crypto_kem_enc = mceliece_kem_6960119pc_enc;
      crypto_kem_dec = mceliece_kem_6960119pc_dec;
      printf("kem_6960119pc selected implementation %s compiler %s\n",mceliece_kem_6960119pc_implementation(),mceliece_kem_6960119pc_compiler());
    }
    randombytes(p,mceliece_kem_6960119pc_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6960119pc_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6960119pc_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6960119pc_BYTES);
    randombytes(T,mceliece_kem_6960119pc_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6960119pc_keypair",impl,mceliece_kem_6960119pc_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6960119pc_enc",impl,mceliece_kem_6960119pc_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6960119pc_dec",impl,mceliece_kem_6960119pc_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_6960119pcf(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6960119pcf")) return;
  void *pstorage = callocplus(mceliece_kem_6960119pcf_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6960119pcf_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6960119pcf_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6960119pcf_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6960119pcf_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6960119pcf();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6960119pcf_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6960119pcf_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6960119pcf_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6960119pcf_dec(impl);
      printf("kem_6960119pcf %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6960119pcf_implementation(impl),mceliece_dispatch_kem_6960119pcf_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6960119pcf_keypair;
      crypto_kem_enc = mceliece_kem_6960119pcf_enc;
      crypto_kem_dec = mceliece_kem_6960119pcf_dec;
      printf("kem_6960119pcf selected implementation %s compiler %s\n",mceliece_kem_6960119pcf_implementation(),mceliece_kem_6960119pcf_compiler());
    }
    randombytes(p,mceliece_kem_6960119pcf_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6960119pcf_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6960119pcf_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6960119pcf_BYTES);
    randombytes(T,mceliece_kem_6960119pcf_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6960119pcf_keypair",impl,mceliece_kem_6960119pcf_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6960119pcf_enc",impl,mceliece_kem_6960119pcf_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6960119pcf_dec",impl,mceliece_kem_6960119pcf_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_6688128(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6688128")) return;
  void *pstorage = callocplus(mceliece_kem_6688128_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6688128_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6688128_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6688128_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6688128_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6688128();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6688128_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6688128_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6688128_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6688128_dec(impl);
      printf("kem_6688128 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6688128_implementation(impl),mceliece_dispatch_kem_6688128_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6688128_keypair;
      crypto_kem_enc = mceliece_kem_6688128_enc;
      crypto_kem_dec = mceliece_kem_6688128_dec;
      printf("kem_6688128 selected implementation %s compiler %s\n",mceliece_kem_6688128_implementation(),mceliece_kem_6688128_compiler());
    }
    randombytes(p,mceliece_kem_6688128_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6688128_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6688128_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6688128_BYTES);
    randombytes(T,mceliece_kem_6688128_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6688128_keypair",impl,mceliece_kem_6688128_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6688128_enc",impl,mceliece_kem_6688128_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6688128_dec",impl,mceliece_kem_6688128_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_6688128f(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6688128f")) return;
  void *pstorage = callocplus(mceliece_kem_6688128f_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6688128f_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6688128f_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6688128f_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6688128f_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6688128f();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6688128f_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6688128f_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6688128f_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6688128f_dec(impl);
      printf("kem_6688128f %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6688128f_implementation(impl),mceliece_dispatch_kem_6688128f_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6688128f_keypair;
      crypto_kem_enc = mceliece_kem_6688128f_enc;
      crypto_kem_dec = mceliece_kem_6688128f_dec;
      printf("kem_6688128f selected implementation %s compiler %s\n",mceliece_kem_6688128f_implementation(),mceliece_kem_6688128f_compiler());
    }
    randombytes(p,mceliece_kem_6688128f_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6688128f_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6688128f_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6688128f_BYTES);
    randombytes(T,mceliece_kem_6688128f_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6688128f_keypair",impl,mceliece_kem_6688128f_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6688128f_enc",impl,mceliece_kem_6688128f_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6688128f_dec",impl,mceliece_kem_6688128f_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_6688128pc(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6688128pc")) return;
  void *pstorage = callocplus(mceliece_kem_6688128pc_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6688128pc_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6688128pc_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6688128pc_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6688128pc_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6688128pc();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6688128pc_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6688128pc_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6688128pc_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6688128pc_dec(impl);
      printf("kem_6688128pc %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6688128pc_implementation(impl),mceliece_dispatch_kem_6688128pc_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6688128pc_keypair;
      crypto_kem_enc = mceliece_kem_6688128pc_enc;
      crypto_kem_dec = mceliece_kem_6688128pc_dec;
      printf("kem_6688128pc selected implementation %s compiler %s\n",mceliece_kem_6688128pc_implementation(),mceliece_kem_6688128pc_compiler());
    }
    randombytes(p,mceliece_kem_6688128pc_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6688128pc_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6688128pc_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6688128pc_BYTES);
    randombytes(T,mceliece_kem_6688128pc_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6688128pc_keypair",impl,mceliece_kem_6688128pc_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6688128pc_enc",impl,mceliece_kem_6688128pc_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6688128pc_dec",impl,mceliece_kem_6688128pc_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_6688128pcf(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"6688128pcf")) return;
  void *pstorage = callocplus(mceliece_kem_6688128pcf_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_6688128pcf_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_6688128pcf_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_6688128pcf_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_6688128pcf_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_6688128pcf();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_6688128pcf_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_6688128pcf_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_6688128pcf_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_6688128pcf_dec(impl);
      printf("kem_6688128pcf %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_6688128pcf_implementation(impl),mceliece_dispatch_kem_6688128pcf_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_6688128pcf_keypair;
      crypto_kem_enc = mceliece_kem_6688128pcf_enc;
      crypto_kem_dec = mceliece_kem_6688128pcf_dec;
      printf("kem_6688128pcf selected implementation %s compiler %s\n",mceliece_kem_6688128pcf_implementation(),mceliece_kem_6688128pcf_compiler());
    }
    randombytes(p,mceliece_kem_6688128pcf_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_6688128pcf_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_6688128pcf_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_6688128pcf_BYTES);
    randombytes(T,mceliece_kem_6688128pcf_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_6688128pcf_keypair",impl,mceliece_kem_6688128pcf_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_6688128pcf_enc",impl,mceliece_kem_6688128pcf_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_6688128pcf_dec",impl,mceliece_kem_6688128pcf_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_8192128(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"8192128")) return;
  void *pstorage = callocplus(mceliece_kem_8192128_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_8192128_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_8192128_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_8192128_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_8192128_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_8192128();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_8192128_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_8192128_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_8192128_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_8192128_dec(impl);
      printf("kem_8192128 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_8192128_implementation(impl),mceliece_dispatch_kem_8192128_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_8192128_keypair;
      crypto_kem_enc = mceliece_kem_8192128_enc;
      crypto_kem_dec = mceliece_kem_8192128_dec;
      printf("kem_8192128 selected implementation %s compiler %s\n",mceliece_kem_8192128_implementation(),mceliece_kem_8192128_compiler());
    }
    randombytes(p,mceliece_kem_8192128_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_8192128_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_8192128_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_8192128_BYTES);
    randombytes(T,mceliece_kem_8192128_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_8192128_keypair",impl,mceliece_kem_8192128_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_8192128_enc",impl,mceliece_kem_8192128_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_8192128_dec",impl,mceliece_kem_8192128_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_8192128f(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"8192128f")) return;
  void *pstorage = callocplus(mceliece_kem_8192128f_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_8192128f_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_8192128f_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_8192128f_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_8192128f_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_8192128f();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_8192128f_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_8192128f_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_8192128f_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_8192128f_dec(impl);
      printf("kem_8192128f %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_8192128f_implementation(impl),mceliece_dispatch_kem_8192128f_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_8192128f_keypair;
      crypto_kem_enc = mceliece_kem_8192128f_enc;
      crypto_kem_dec = mceliece_kem_8192128f_dec;
      printf("kem_8192128f selected implementation %s compiler %s\n",mceliece_kem_8192128f_implementation(),mceliece_kem_8192128f_compiler());
    }
    randombytes(p,mceliece_kem_8192128f_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_8192128f_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_8192128f_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_8192128f_BYTES);
    randombytes(T,mceliece_kem_8192128f_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_8192128f_keypair",impl,mceliece_kem_8192128f_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_8192128f_enc",impl,mceliece_kem_8192128f_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_8192128f_dec",impl,mceliece_kem_8192128f_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_8192128pc(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"8192128pc")) return;
  void *pstorage = callocplus(mceliece_kem_8192128pc_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_8192128pc_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_8192128pc_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_8192128pc_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_8192128pc_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_8192128pc();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_8192128pc_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_8192128pc_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_8192128pc_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_8192128pc_dec(impl);
      printf("kem_8192128pc %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_8192128pc_implementation(impl),mceliece_dispatch_kem_8192128pc_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_8192128pc_keypair;
      crypto_kem_enc = mceliece_kem_8192128pc_enc;
      crypto_kem_dec = mceliece_kem_8192128pc_dec;
      printf("kem_8192128pc selected implementation %s compiler %s\n",mceliece_kem_8192128pc_implementation(),mceliece_kem_8192128pc_compiler());
    }
    randombytes(p,mceliece_kem_8192128pc_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_8192128pc_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_8192128pc_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_8192128pc_BYTES);
    randombytes(T,mceliece_kem_8192128pc_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_8192128pc_keypair",impl,mceliece_kem_8192128pc_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_8192128pc_enc",impl,mceliece_kem_8192128pc_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_8192128pc_dec",impl,mceliece_kem_8192128pc_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_8192128pcf(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"8192128pcf")) return;
  void *pstorage = callocplus(mceliece_kem_8192128pcf_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_8192128pcf_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_8192128pcf_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_8192128pcf_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_8192128pcf_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_8192128pcf();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_8192128pcf_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_8192128pcf_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_8192128pcf_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_8192128pcf_dec(impl);
      printf("kem_8192128pcf %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_8192128pcf_implementation(impl),mceliece_dispatch_kem_8192128pcf_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_8192128pcf_keypair;
      crypto_kem_enc = mceliece_kem_8192128pcf_enc;
      crypto_kem_dec = mceliece_kem_8192128pcf_dec;
      printf("kem_8192128pcf selected implementation %s compiler %s\n",mceliece_kem_8192128pcf_implementation(),mceliece_kem_8192128pcf_compiler());
    }
    randombytes(p,mceliece_kem_8192128pcf_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_8192128pcf_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_8192128pcf_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_8192128pcf_BYTES);
    randombytes(T,mceliece_kem_8192128pcf_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_8192128pcf_keypair",impl,mceliece_kem_8192128pcf_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_8192128pcf_enc",impl,mceliece_kem_8192128pcf_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_8192128pcf_dec",impl,mceliece_kem_8192128pcf_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_460896(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"460896")) return;
  void *pstorage = callocplus(mceliece_kem_460896_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_460896_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_460896_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_460896_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_460896_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_460896();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_460896_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_460896_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_460896_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_460896_dec(impl);
      printf("kem_460896 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_460896_implementation(impl),mceliece_dispatch_kem_460896_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_460896_keypair;
      crypto_kem_enc = mceliece_kem_460896_enc;
      crypto_kem_dec = mceliece_kem_460896_dec;
      printf("kem_460896 selected implementation %s compiler %s\n",mceliece_kem_460896_implementation(),mceliece_kem_460896_compiler());
    }
    randombytes(p,mceliece_kem_460896_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_460896_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_460896_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_460896_BYTES);
    randombytes(T,mceliece_kem_460896_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_460896_keypair",impl,mceliece_kem_460896_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_460896_enc",impl,mceliece_kem_460896_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_460896_dec",impl,mceliece_kem_460896_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_460896f(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"460896f")) return;
  void *pstorage = callocplus(mceliece_kem_460896f_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_460896f_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_460896f_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_460896f_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_460896f_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_460896f();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_460896f_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_460896f_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_460896f_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_460896f_dec(impl);
      printf("kem_460896f %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_460896f_implementation(impl),mceliece_dispatch_kem_460896f_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_460896f_keypair;
      crypto_kem_enc = mceliece_kem_460896f_enc;
      crypto_kem_dec = mceliece_kem_460896f_dec;
      printf("kem_460896f selected implementation %s compiler %s\n",mceliece_kem_460896f_implementation(),mceliece_kem_460896f_compiler());
    }
    randombytes(p,mceliece_kem_460896f_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_460896f_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_460896f_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_460896f_BYTES);
    randombytes(T,mceliece_kem_460896f_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_460896f_keypair",impl,mceliece_kem_460896f_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_460896f_enc",impl,mceliece_kem_460896f_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_460896f_dec",impl,mceliece_kem_460896f_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_460896pc(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"460896pc")) return;
  void *pstorage = callocplus(mceliece_kem_460896pc_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_460896pc_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_460896pc_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_460896pc_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_460896pc_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_460896pc();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_460896pc_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_460896pc_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_460896pc_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_460896pc_dec(impl);
      printf("kem_460896pc %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_460896pc_implementation(impl),mceliece_dispatch_kem_460896pc_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_460896pc_keypair;
      crypto_kem_enc = mceliece_kem_460896pc_enc;
      crypto_kem_dec = mceliece_kem_460896pc_dec;
      printf("kem_460896pc selected implementation %s compiler %s\n",mceliece_kem_460896pc_implementation(),mceliece_kem_460896pc_compiler());
    }
    randombytes(p,mceliece_kem_460896pc_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_460896pc_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_460896pc_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_460896pc_BYTES);
    randombytes(T,mceliece_kem_460896pc_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_460896pc_keypair",impl,mceliece_kem_460896pc_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_460896pc_enc",impl,mceliece_kem_460896pc_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_460896pc_dec",impl,mceliece_kem_460896pc_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_460896pcf(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"460896pcf")) return;
  void *pstorage = callocplus(mceliece_kem_460896pcf_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_460896pcf_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_460896pcf_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_460896pcf_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_460896pcf_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_460896pcf();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_460896pcf_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_460896pcf_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_460896pcf_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_460896pcf_dec(impl);
      printf("kem_460896pcf %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_460896pcf_implementation(impl),mceliece_dispatch_kem_460896pcf_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_460896pcf_keypair;
      crypto_kem_enc = mceliece_kem_460896pcf_enc;
      crypto_kem_dec = mceliece_kem_460896pcf_dec;
      printf("kem_460896pcf selected implementation %s compiler %s\n",mceliece_kem_460896pcf_implementation(),mceliece_kem_460896pcf_compiler());
    }
    randombytes(p,mceliece_kem_460896pcf_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_460896pcf_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_460896pcf_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_460896pcf_BYTES);
    randombytes(T,mceliece_kem_460896pcf_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_460896pcf_keypair",impl,mceliece_kem_460896pcf_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_460896pcf_enc",impl,mceliece_kem_460896pcf_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_460896pcf_dec",impl,mceliece_kem_460896pcf_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_348864(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"348864")) return;
  void *pstorage = callocplus(mceliece_kem_348864_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_348864_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_348864_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_348864_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_348864_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_348864();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_348864_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_348864_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_348864_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_348864_dec(impl);
      printf("kem_348864 %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_348864_implementation(impl),mceliece_dispatch_kem_348864_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_348864_keypair;
      crypto_kem_enc = mceliece_kem_348864_enc;
      crypto_kem_dec = mceliece_kem_348864_dec;
      printf("kem_348864 selected implementation %s compiler %s\n",mceliece_kem_348864_implementation(),mceliece_kem_348864_compiler());
    }
    randombytes(p,mceliece_kem_348864_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_348864_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_348864_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_348864_BYTES);
    randombytes(T,mceliece_kem_348864_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_348864_keypair",impl,mceliece_kem_348864_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_348864_enc",impl,mceliece_kem_348864_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_348864_dec",impl,mceliece_kem_348864_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_348864f(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"348864f")) return;
  void *pstorage = callocplus(mceliece_kem_348864f_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_348864f_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_348864f_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_348864f_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_348864f_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_348864f();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_348864f_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_348864f_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_348864f_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_348864f_dec(impl);
      printf("kem_348864f %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_348864f_implementation(impl),mceliece_dispatch_kem_348864f_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_348864f_keypair;
      crypto_kem_enc = mceliece_kem_348864f_enc;
      crypto_kem_dec = mceliece_kem_348864f_dec;
      printf("kem_348864f selected implementation %s compiler %s\n",mceliece_kem_348864f_implementation(),mceliece_kem_348864f_compiler());
    }
    randombytes(p,mceliece_kem_348864f_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_348864f_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_348864f_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_348864f_BYTES);
    randombytes(T,mceliece_kem_348864f_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_348864f_keypair",impl,mceliece_kem_348864f_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_348864f_enc",impl,mceliece_kem_348864f_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_348864f_dec",impl,mceliece_kem_348864f_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_348864pc(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"348864pc")) return;
  void *pstorage = callocplus(mceliece_kem_348864pc_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_348864pc_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_348864pc_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_348864pc_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_348864pc_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_348864pc();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_348864pc_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_348864pc_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_348864pc_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_348864pc_dec(impl);
      printf("kem_348864pc %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_348864pc_implementation(impl),mceliece_dispatch_kem_348864pc_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_348864pc_keypair;
      crypto_kem_enc = mceliece_kem_348864pc_enc;
      crypto_kem_dec = mceliece_kem_348864pc_dec;
      printf("kem_348864pc selected implementation %s compiler %s\n",mceliece_kem_348864pc_implementation(),mceliece_kem_348864pc_compiler());
    }
    randombytes(p,mceliece_kem_348864pc_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_348864pc_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_348864pc_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_348864pc_BYTES);
    randombytes(T,mceliece_kem_348864pc_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_348864pc_keypair",impl,mceliece_kem_348864pc_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_348864pc_enc",impl,mceliece_kem_348864pc_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_348864pc_dec",impl,mceliece_kem_348864pc_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
static void measure_kem_348864pcf(void)
{
  if (targeto && strcmp(targeto,"kem")) return;
  if (targetp && strcmp(targetp,"348864pcf")) return;
  void *pstorage = callocplus(mceliece_kem_348864pcf_PUBLICKEYBYTES);
  unsigned char *p = aligned(pstorage);
  void *sstorage = callocplus(mceliece_kem_348864pcf_SECRETKEYBYTES);
  unsigned char *s = aligned(sstorage);
  void *cstorage = callocplus(mceliece_kem_348864pcf_CIPHERTEXTBYTES);
  unsigned char *c = aligned(cstorage);
  void *kstorage = callocplus(mceliece_kem_348864pcf_BYTES);
  unsigned char *k = aligned(kstorage);
  void *Tstorage = callocplus(mceliece_kem_348864pcf_BYTES);
  unsigned char *T = aligned(Tstorage);
  for (long long impl = -1;impl < mceliece_numimpl_kem_348864pcf();++impl) {
    void (*crypto_kem_keypair)(unsigned char *,unsigned char *);
    int (*crypto_kem_enc)(unsigned char *,unsigned char *,const unsigned char *);
    int (*crypto_kem_dec)(unsigned char *,const unsigned char *,const unsigned char *);
    if (targeti && strcmp(targeti,mceliece_dispatch_kem_348864pcf_implementation(impl))) continue;
    if (impl >= 0) {
      crypto_kem_keypair = mceliece_dispatch_kem_348864pcf_keypair(impl);
      crypto_kem_enc = mceliece_dispatch_kem_348864pcf_enc(impl);
      crypto_kem_dec = mceliece_dispatch_kem_348864pcf_dec(impl);
      printf("kem_348864pcf %lld implementation %s compiler %s\n",impl,mceliece_dispatch_kem_348864pcf_implementation(impl),mceliece_dispatch_kem_348864pcf_compiler(impl));
    } else {
      crypto_kem_keypair = mceliece_kem_348864pcf_keypair;
      crypto_kem_enc = mceliece_kem_348864pcf_enc;
      crypto_kem_dec = mceliece_kem_348864pcf_dec;
      printf("kem_348864pcf selected implementation %s compiler %s\n",mceliece_kem_348864pcf_implementation(),mceliece_kem_348864pcf_compiler());
    }
    randombytes(p,mceliece_kem_348864pcf_PUBLICKEYBYTES);
    randombytes(s,mceliece_kem_348864pcf_SECRETKEYBYTES);
    randombytes(c,mceliece_kem_348864pcf_CIPHERTEXTBYTES);
    randombytes(k,mceliece_kem_348864pcf_BYTES);
    randombytes(T,mceliece_kem_348864pcf_BYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_keypair(p,s);
    }
    t_print("kem_348864pcf_keypair",impl,mceliece_kem_348864pcf_PUBLICKEYBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_enc(c,k,p);
    }
    t_print("kem_348864pcf_enc",impl,mceliece_kem_348864pcf_CIPHERTEXTBYTES);
    for (long long i = 0;i <= TIMINGS;++i) {
      t[i] = cpucycles();
      crypto_kem_dec(T,c,s);
    }
    t_print("kem_348864pcf_dec",impl,mceliece_kem_348864pcf_BYTES);
  }
  free(Tstorage);
  free(kstorage);
  free(cstorage);
  free(sstorage);
  free(pstorage);
}
#include "print_cpuid.inc"
int main(int argc,char **argv)
{
  printf("mceliece version %s\n",mceliece_version);
  printf("mceliece arch %s\n",mceliece_arch);
  print_cpuid();
  if (*argv) ++argv;
  if (*argv) {
    targeto = *argv++;
    if (*argv) {
      targetp = *argv++;
      if (*argv) {
        targeti = *argv++;
      }
    }
  }
  measure_cpucycles();
  measure_randombytes();
  limits();
  measure_sort_int16();
  measure_sort_int32();
  measure_sort_int64();
  measure_xof_shake256();
  measure_xof_bitwrite16();
  measure_kem_6960119();
  measure_kem_6960119f();
  measure_kem_6960119pc();
  measure_kem_6960119pcf();
  measure_kem_6688128();
  measure_kem_6688128f();
  measure_kem_6688128pc();
  measure_kem_6688128pcf();
  measure_kem_8192128();
  measure_kem_8192128f();
  measure_kem_8192128pc();
  measure_kem_8192128pcf();
  measure_kem_460896();
  measure_kem_460896f();
  measure_kem_460896pc();
  measure_kem_460896pcf();
  measure_kem_348864();
  measure_kem_348864f();
  measure_kem_348864pc();
  measure_kem_348864pcf();
  return 0;
}