/* This code was generated by Usuba.
   See https://github.com/DadaIsCrazy/usuba.
   From the file "nist/ascon/usuba/ua/ascon.ua" (included below). */

#include <stdint.h>

/* Do NOT change the order of those define/include */

#ifndef BITS_PER_REG
#define BITS_PER_REG 32
#endif
/* including the architecture specific .h */
#include "STD.h"

/* auxiliary functions */
void Sbox__B64 (/*inputs*/ DATATYPE x[5][64], /*outputs*/ DATATYPE xr[5][64]) {

  // Variables declaration
  DATATYPE _shadow_t04_;
  DATATYPE _shadow_t15_;
  DATATYPE _shadow_t26_;
  DATATYPE _shadow_t37_;
  DATATYPE _shadow_t48_;
  DATATYPE _shadow_x015_;
  DATATYPE _shadow_x01_;
  DATATYPE _shadow_x09_;
  DATATYPE _shadow_x110_;
  DATATYPE _shadow_x114_;
  DATATYPE _shadow_x211_;
  DATATYPE _shadow_x217_;
  DATATYPE _shadow_x23_;
  DATATYPE _shadow_x312_;
  DATATYPE _shadow_x316_;
  DATATYPE _shadow_x413_;
  DATATYPE _shadow_x42_;
  DATATYPE t0;
  DATATYPE t1;
  DATATYPE t2;
  DATATYPE t3;
  DATATYPE t4;
  DATATYPE x0;
  DATATYPE x1;
  DATATYPE x2;
  DATATYPE x3;
  DATATYPE x4;

  // Instructions (body)
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    x0 = x[0][_log_it];
    x1 = x[1][_log_it];
    x2 = x[2][_log_it];
    x3 = x[3][_log_it];
    x4 = x[4][_log_it];
    _shadow_x01_ = XOR(x0,x4);
    _shadow_x42_ = XOR(x4,x3);
    _shadow_x23_ = XOR(x2,x1);
    t0 = NOT(_shadow_x01_);
    t1 = NOT(x1);
    t2 = NOT(_shadow_x23_);
    t3 = NOT(x3);
    t4 = NOT(_shadow_x42_);
    _shadow_t04_ = AND(t0,x1);
    _shadow_t15_ = AND(t1,_shadow_x23_);
    _shadow_t26_ = AND(t2,x3);
    _shadow_t37_ = AND(t3,_shadow_x42_);
    _shadow_t48_ = AND(t4,_shadow_x01_);
    _shadow_x09_ = XOR(_shadow_x01_,_shadow_t15_);
    _shadow_x110_ = XOR(x1,_shadow_t26_);
    _shadow_x211_ = XOR(_shadow_x23_,_shadow_t37_);
    _shadow_x312_ = XOR(x3,_shadow_t48_);
    _shadow_x413_ = XOR(_shadow_x42_,_shadow_t04_);
    _shadow_x114_ = XOR(_shadow_x110_,_shadow_x09_);
    _shadow_x015_ = XOR(_shadow_x09_,_shadow_x413_);
    _shadow_x316_ = XOR(_shadow_x312_,_shadow_x211_);
    _shadow_x217_ = NOT(_shadow_x211_);
    xr[0][_log_it] = _shadow_x015_;
    xr[1][_log_it] = _shadow_x114_;
    xr[2][_log_it] = _shadow_x217_;
    xr[3][_log_it] = _shadow_x316_;
    xr[4][_log_it] = _shadow_x413_;
  }

}

void AddConstant__B64 (/*inputs*/ DATATYPE state__[5][64],DATATYPE c__[64], /*outputs*/ DATATYPE stateR__[5][64]) {

  // Variables declaration
  DATATYPE _tmp1_;

  // Instructions (body)
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    _tmp1_ = XOR(state__[2][_log_it],c__[_log_it]);
    stateR__[0][_log_it] = state__[0][_log_it];
    stateR__[1][_log_it] = state__[1][_log_it];
    stateR__[2][_log_it] = _tmp1_;
    stateR__[3][_log_it] = state__[3][_log_it];
    stateR__[4][_log_it] = state__[4][_log_it];
  }

}

void LinearLayer__B64 (/*inputs*/ DATATYPE state__[5][64], /*outputs*/ DATATYPE stateR__[5][64]) {

  // Variables declaration
  DATATYPE _tmp10_[64];
  DATATYPE _tmp11_[64];
  DATATYPE _tmp12_[64];
  DATATYPE _tmp13_[64];
  DATATYPE _tmp14_[64];
  DATATYPE _tmp15_[64];
  DATATYPE _tmp16_[64];
  DATATYPE _tmp2_[64];
  DATATYPE _tmp3_[64];
  DATATYPE _tmp4_[64];
  DATATYPE _tmp5_[64];
  DATATYPE _tmp6_[64];
  DATATYPE _tmp7_[64];
  DATATYPE _tmp8_[64];
  DATATYPE _tmp9_[64];

  // Instructions (body)
  _tmp2_[0] = state__[0][45];
  _tmp2_[1] = state__[0][46];
  _tmp2_[2] = state__[0][47];
  _tmp2_[3] = state__[0][48];
  _tmp2_[4] = state__[0][49];
  _tmp2_[5] = state__[0][50];
  _tmp2_[6] = state__[0][51];
  _tmp2_[7] = state__[0][52];
  _tmp2_[8] = state__[0][53];
  _tmp2_[9] = state__[0][54];
  _tmp2_[10] = state__[0][55];
  _tmp2_[11] = state__[0][56];
  _tmp2_[12] = state__[0][57];
  _tmp2_[13] = state__[0][58];
  _tmp2_[14] = state__[0][59];
  _tmp2_[15] = state__[0][60];
  _tmp2_[16] = state__[0][61];
  _tmp2_[17] = state__[0][62];
  _tmp2_[18] = state__[0][63];
  _tmp2_[19] = state__[0][0];
  _tmp2_[20] = state__[0][1];
  _tmp2_[21] = state__[0][2];
  _tmp2_[22] = state__[0][3];
  _tmp2_[23] = state__[0][4];
  _tmp2_[24] = state__[0][5];
  _tmp2_[25] = state__[0][6];
  _tmp2_[26] = state__[0][7];
  _tmp2_[27] = state__[0][8];
  _tmp2_[28] = state__[0][9];
  _tmp2_[29] = state__[0][10];
  _tmp2_[30] = state__[0][11];
  _tmp2_[31] = state__[0][12];
  _tmp2_[32] = state__[0][13];
  _tmp2_[33] = state__[0][14];
  _tmp2_[34] = state__[0][15];
  _tmp2_[35] = state__[0][16];
  _tmp2_[36] = state__[0][17];
  _tmp2_[37] = state__[0][18];
  _tmp2_[38] = state__[0][19];
  _tmp2_[39] = state__[0][20];
  _tmp2_[40] = state__[0][21];
  _tmp2_[41] = state__[0][22];
  _tmp2_[42] = state__[0][23];
  _tmp2_[43] = state__[0][24];
  _tmp2_[44] = state__[0][25];
  _tmp2_[45] = state__[0][26];
  _tmp2_[46] = state__[0][27];
  _tmp2_[47] = state__[0][28];
  _tmp2_[48] = state__[0][29];
  _tmp2_[49] = state__[0][30];
  _tmp2_[50] = state__[0][31];
  _tmp2_[51] = state__[0][32];
  _tmp2_[52] = state__[0][33];
  _tmp2_[53] = state__[0][34];
  _tmp2_[54] = state__[0][35];
  _tmp2_[55] = state__[0][36];
  _tmp2_[56] = state__[0][37];
  _tmp2_[57] = state__[0][38];
  _tmp2_[58] = state__[0][39];
  _tmp2_[59] = state__[0][40];
  _tmp2_[60] = state__[0][41];
  _tmp2_[61] = state__[0][42];
  _tmp2_[62] = state__[0][43];
  _tmp2_[63] = state__[0][44];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    _tmp3_[_log_it] = XOR(state__[0][_log_it],_tmp2_[_log_it]);
  }
  _tmp4_[0] = _tmp2_[55];
  _tmp4_[1] = _tmp2_[56];
  _tmp4_[2] = _tmp2_[57];
  _tmp4_[3] = _tmp2_[58];
  _tmp4_[4] = _tmp2_[59];
  _tmp4_[5] = _tmp2_[60];
  _tmp4_[6] = _tmp2_[61];
  _tmp4_[7] = _tmp2_[62];
  _tmp4_[8] = _tmp2_[63];
  _tmp4_[9] = _tmp2_[0];
  _tmp4_[10] = _tmp2_[1];
  _tmp4_[11] = _tmp2_[2];
  _tmp4_[12] = _tmp2_[3];
  _tmp4_[13] = _tmp2_[4];
  _tmp4_[14] = _tmp2_[5];
  _tmp4_[15] = _tmp2_[6];
  _tmp4_[16] = _tmp2_[7];
  _tmp4_[17] = _tmp2_[8];
  _tmp4_[18] = _tmp2_[9];
  _tmp4_[19] = _tmp2_[10];
  _tmp4_[20] = _tmp2_[11];
  _tmp4_[21] = _tmp2_[12];
  _tmp4_[22] = _tmp2_[13];
  _tmp4_[23] = _tmp2_[14];
  _tmp4_[24] = _tmp2_[15];
  _tmp4_[25] = _tmp2_[16];
  _tmp4_[26] = _tmp2_[17];
  _tmp4_[27] = _tmp2_[18];
  _tmp4_[28] = _tmp2_[19];
  _tmp4_[29] = _tmp2_[20];
  _tmp4_[30] = _tmp2_[21];
  _tmp4_[31] = _tmp2_[22];
  _tmp4_[32] = _tmp2_[23];
  _tmp4_[33] = _tmp2_[24];
  _tmp4_[34] = _tmp2_[25];
  _tmp4_[35] = _tmp2_[26];
  _tmp4_[36] = _tmp2_[27];
  _tmp4_[37] = _tmp2_[28];
  _tmp4_[38] = _tmp2_[29];
  _tmp4_[39] = _tmp2_[30];
  _tmp4_[40] = _tmp2_[31];
  _tmp4_[41] = _tmp2_[32];
  _tmp4_[42] = _tmp2_[33];
  _tmp4_[43] = _tmp2_[34];
  _tmp4_[44] = _tmp2_[35];
  _tmp4_[45] = _tmp2_[36];
  _tmp4_[46] = _tmp2_[37];
  _tmp4_[47] = _tmp2_[38];
  _tmp4_[48] = _tmp2_[39];
  _tmp4_[49] = _tmp2_[40];
  _tmp4_[50] = _tmp2_[41];
  _tmp4_[51] = _tmp2_[42];
  _tmp4_[52] = _tmp2_[43];
  _tmp4_[53] = _tmp2_[44];
  _tmp4_[54] = _tmp2_[45];
  _tmp4_[55] = _tmp2_[46];
  _tmp4_[56] = _tmp2_[47];
  _tmp4_[57] = _tmp2_[48];
  _tmp4_[58] = _tmp2_[49];
  _tmp4_[59] = _tmp2_[50];
  _tmp4_[60] = _tmp2_[51];
  _tmp4_[61] = _tmp2_[52];
  _tmp4_[62] = _tmp2_[53];
  _tmp4_[63] = _tmp2_[54];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    stateR__[0][_log_it] = XOR(_tmp3_[_log_it],_tmp4_[_log_it]);
  }
  _tmp5_[0] = state__[1][3];
  _tmp5_[1] = state__[1][4];
  _tmp5_[2] = state__[1][5];
  _tmp5_[3] = state__[1][6];
  _tmp5_[4] = state__[1][7];
  _tmp5_[5] = state__[1][8];
  _tmp5_[6] = state__[1][9];
  _tmp5_[7] = state__[1][10];
  _tmp5_[8] = state__[1][11];
  _tmp5_[9] = state__[1][12];
  _tmp5_[10] = state__[1][13];
  _tmp5_[11] = state__[1][14];
  _tmp5_[12] = state__[1][15];
  _tmp5_[13] = state__[1][16];
  _tmp5_[14] = state__[1][17];
  _tmp5_[15] = state__[1][18];
  _tmp5_[16] = state__[1][19];
  _tmp5_[17] = state__[1][20];
  _tmp5_[18] = state__[1][21];
  _tmp5_[19] = state__[1][22];
  _tmp5_[20] = state__[1][23];
  _tmp5_[21] = state__[1][24];
  _tmp5_[22] = state__[1][25];
  _tmp5_[23] = state__[1][26];
  _tmp5_[24] = state__[1][27];
  _tmp5_[25] = state__[1][28];
  _tmp5_[26] = state__[1][29];
  _tmp5_[27] = state__[1][30];
  _tmp5_[28] = state__[1][31];
  _tmp5_[29] = state__[1][32];
  _tmp5_[30] = state__[1][33];
  _tmp5_[31] = state__[1][34];
  _tmp5_[32] = state__[1][35];
  _tmp5_[33] = state__[1][36];
  _tmp5_[34] = state__[1][37];
  _tmp5_[35] = state__[1][38];
  _tmp5_[36] = state__[1][39];
  _tmp5_[37] = state__[1][40];
  _tmp5_[38] = state__[1][41];
  _tmp5_[39] = state__[1][42];
  _tmp5_[40] = state__[1][43];
  _tmp5_[41] = state__[1][44];
  _tmp5_[42] = state__[1][45];
  _tmp5_[43] = state__[1][46];
  _tmp5_[44] = state__[1][47];
  _tmp5_[45] = state__[1][48];
  _tmp5_[46] = state__[1][49];
  _tmp5_[47] = state__[1][50];
  _tmp5_[48] = state__[1][51];
  _tmp5_[49] = state__[1][52];
  _tmp5_[50] = state__[1][53];
  _tmp5_[51] = state__[1][54];
  _tmp5_[52] = state__[1][55];
  _tmp5_[53] = state__[1][56];
  _tmp5_[54] = state__[1][57];
  _tmp5_[55] = state__[1][58];
  _tmp5_[56] = state__[1][59];
  _tmp5_[57] = state__[1][60];
  _tmp5_[58] = state__[1][61];
  _tmp5_[59] = state__[1][62];
  _tmp5_[60] = state__[1][63];
  _tmp5_[61] = state__[1][0];
  _tmp5_[62] = state__[1][1];
  _tmp5_[63] = state__[1][2];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    _tmp6_[_log_it] = XOR(state__[1][_log_it],_tmp5_[_log_it]);
  }
  _tmp7_[0] = _tmp5_[22];
  _tmp7_[1] = _tmp5_[23];
  _tmp7_[2] = _tmp5_[24];
  _tmp7_[3] = _tmp5_[25];
  _tmp7_[4] = _tmp5_[26];
  _tmp7_[5] = _tmp5_[27];
  _tmp7_[6] = _tmp5_[28];
  _tmp7_[7] = _tmp5_[29];
  _tmp7_[8] = _tmp5_[30];
  _tmp7_[9] = _tmp5_[31];
  _tmp7_[10] = _tmp5_[32];
  _tmp7_[11] = _tmp5_[33];
  _tmp7_[12] = _tmp5_[34];
  _tmp7_[13] = _tmp5_[35];
  _tmp7_[14] = _tmp5_[36];
  _tmp7_[15] = _tmp5_[37];
  _tmp7_[16] = _tmp5_[38];
  _tmp7_[17] = _tmp5_[39];
  _tmp7_[18] = _tmp5_[40];
  _tmp7_[19] = _tmp5_[41];
  _tmp7_[20] = _tmp5_[42];
  _tmp7_[21] = _tmp5_[43];
  _tmp7_[22] = _tmp5_[44];
  _tmp7_[23] = _tmp5_[45];
  _tmp7_[24] = _tmp5_[46];
  _tmp7_[25] = _tmp5_[47];
  _tmp7_[26] = _tmp5_[48];
  _tmp7_[27] = _tmp5_[49];
  _tmp7_[28] = _tmp5_[50];
  _tmp7_[29] = _tmp5_[51];
  _tmp7_[30] = _tmp5_[52];
  _tmp7_[31] = _tmp5_[53];
  _tmp7_[32] = _tmp5_[54];
  _tmp7_[33] = _tmp5_[55];
  _tmp7_[34] = _tmp5_[56];
  _tmp7_[35] = _tmp5_[57];
  _tmp7_[36] = _tmp5_[58];
  _tmp7_[37] = _tmp5_[59];
  _tmp7_[38] = _tmp5_[60];
  _tmp7_[39] = _tmp5_[61];
  _tmp7_[40] = _tmp5_[62];
  _tmp7_[41] = _tmp5_[63];
  _tmp7_[42] = _tmp5_[0];
  _tmp7_[43] = _tmp5_[1];
  _tmp7_[44] = _tmp5_[2];
  _tmp7_[45] = _tmp5_[3];
  _tmp7_[46] = _tmp5_[4];
  _tmp7_[47] = _tmp5_[5];
  _tmp7_[48] = _tmp5_[6];
  _tmp7_[49] = _tmp5_[7];
  _tmp7_[50] = _tmp5_[8];
  _tmp7_[51] = _tmp5_[9];
  _tmp7_[52] = _tmp5_[10];
  _tmp7_[53] = _tmp5_[11];
  _tmp7_[54] = _tmp5_[12];
  _tmp7_[55] = _tmp5_[13];
  _tmp7_[56] = _tmp5_[14];
  _tmp7_[57] = _tmp5_[15];
  _tmp7_[58] = _tmp5_[16];
  _tmp7_[59] = _tmp5_[17];
  _tmp7_[60] = _tmp5_[18];
  _tmp7_[61] = _tmp5_[19];
  _tmp7_[62] = _tmp5_[20];
  _tmp7_[63] = _tmp5_[21];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    stateR__[1][_log_it] = XOR(_tmp6_[_log_it],_tmp7_[_log_it]);
  }
  _tmp8_[0] = state__[2][63];
  _tmp8_[1] = state__[2][0];
  _tmp8_[2] = state__[2][1];
  _tmp8_[3] = state__[2][2];
  _tmp8_[4] = state__[2][3];
  _tmp8_[5] = state__[2][4];
  _tmp8_[6] = state__[2][5];
  _tmp8_[7] = state__[2][6];
  _tmp8_[8] = state__[2][7];
  _tmp8_[9] = state__[2][8];
  _tmp8_[10] = state__[2][9];
  _tmp8_[11] = state__[2][10];
  _tmp8_[12] = state__[2][11];
  _tmp8_[13] = state__[2][12];
  _tmp8_[14] = state__[2][13];
  _tmp8_[15] = state__[2][14];
  _tmp8_[16] = state__[2][15];
  _tmp8_[17] = state__[2][16];
  _tmp8_[18] = state__[2][17];
  _tmp8_[19] = state__[2][18];
  _tmp8_[20] = state__[2][19];
  _tmp8_[21] = state__[2][20];
  _tmp8_[22] = state__[2][21];
  _tmp8_[23] = state__[2][22];
  _tmp8_[24] = state__[2][23];
  _tmp8_[25] = state__[2][24];
  _tmp8_[26] = state__[2][25];
  _tmp8_[27] = state__[2][26];
  _tmp8_[28] = state__[2][27];
  _tmp8_[29] = state__[2][28];
  _tmp8_[30] = state__[2][29];
  _tmp8_[31] = state__[2][30];
  _tmp8_[32] = state__[2][31];
  _tmp8_[33] = state__[2][32];
  _tmp8_[34] = state__[2][33];
  _tmp8_[35] = state__[2][34];
  _tmp8_[36] = state__[2][35];
  _tmp8_[37] = state__[2][36];
  _tmp8_[38] = state__[2][37];
  _tmp8_[39] = state__[2][38];
  _tmp8_[40] = state__[2][39];
  _tmp8_[41] = state__[2][40];
  _tmp8_[42] = state__[2][41];
  _tmp8_[43] = state__[2][42];
  _tmp8_[44] = state__[2][43];
  _tmp8_[45] = state__[2][44];
  _tmp8_[46] = state__[2][45];
  _tmp8_[47] = state__[2][46];
  _tmp8_[48] = state__[2][47];
  _tmp8_[49] = state__[2][48];
  _tmp8_[50] = state__[2][49];
  _tmp8_[51] = state__[2][50];
  _tmp8_[52] = state__[2][51];
  _tmp8_[53] = state__[2][52];
  _tmp8_[54] = state__[2][53];
  _tmp8_[55] = state__[2][54];
  _tmp8_[56] = state__[2][55];
  _tmp8_[57] = state__[2][56];
  _tmp8_[58] = state__[2][57];
  _tmp8_[59] = state__[2][58];
  _tmp8_[60] = state__[2][59];
  _tmp8_[61] = state__[2][60];
  _tmp8_[62] = state__[2][61];
  _tmp8_[63] = state__[2][62];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    _tmp9_[_log_it] = XOR(state__[2][_log_it],_tmp8_[_log_it]);
  }
  _tmp10_[0] = _tmp8_[59];
  _tmp10_[1] = _tmp8_[60];
  _tmp10_[2] = _tmp8_[61];
  _tmp10_[3] = _tmp8_[62];
  _tmp10_[4] = _tmp8_[63];
  _tmp10_[5] = _tmp8_[0];
  _tmp10_[6] = _tmp8_[1];
  _tmp10_[7] = _tmp8_[2];
  _tmp10_[8] = _tmp8_[3];
  _tmp10_[9] = _tmp8_[4];
  _tmp10_[10] = _tmp8_[5];
  _tmp10_[11] = _tmp8_[6];
  _tmp10_[12] = _tmp8_[7];
  _tmp10_[13] = _tmp8_[8];
  _tmp10_[14] = _tmp8_[9];
  _tmp10_[15] = _tmp8_[10];
  _tmp10_[16] = _tmp8_[11];
  _tmp10_[17] = _tmp8_[12];
  _tmp10_[18] = _tmp8_[13];
  _tmp10_[19] = _tmp8_[14];
  _tmp10_[20] = _tmp8_[15];
  _tmp10_[21] = _tmp8_[16];
  _tmp10_[22] = _tmp8_[17];
  _tmp10_[23] = _tmp8_[18];
  _tmp10_[24] = _tmp8_[19];
  _tmp10_[25] = _tmp8_[20];
  _tmp10_[26] = _tmp8_[21];
  _tmp10_[27] = _tmp8_[22];
  _tmp10_[28] = _tmp8_[23];
  _tmp10_[29] = _tmp8_[24];
  _tmp10_[30] = _tmp8_[25];
  _tmp10_[31] = _tmp8_[26];
  _tmp10_[32] = _tmp8_[27];
  _tmp10_[33] = _tmp8_[28];
  _tmp10_[34] = _tmp8_[29];
  _tmp10_[35] = _tmp8_[30];
  _tmp10_[36] = _tmp8_[31];
  _tmp10_[37] = _tmp8_[32];
  _tmp10_[38] = _tmp8_[33];
  _tmp10_[39] = _tmp8_[34];
  _tmp10_[40] = _tmp8_[35];
  _tmp10_[41] = _tmp8_[36];
  _tmp10_[42] = _tmp8_[37];
  _tmp10_[43] = _tmp8_[38];
  _tmp10_[44] = _tmp8_[39];
  _tmp10_[45] = _tmp8_[40];
  _tmp10_[46] = _tmp8_[41];
  _tmp10_[47] = _tmp8_[42];
  _tmp10_[48] = _tmp8_[43];
  _tmp10_[49] = _tmp8_[44];
  _tmp10_[50] = _tmp8_[45];
  _tmp10_[51] = _tmp8_[46];
  _tmp10_[52] = _tmp8_[47];
  _tmp10_[53] = _tmp8_[48];
  _tmp10_[54] = _tmp8_[49];
  _tmp10_[55] = _tmp8_[50];
  _tmp10_[56] = _tmp8_[51];
  _tmp10_[57] = _tmp8_[52];
  _tmp10_[58] = _tmp8_[53];
  _tmp10_[59] = _tmp8_[54];
  _tmp10_[60] = _tmp8_[55];
  _tmp10_[61] = _tmp8_[56];
  _tmp10_[62] = _tmp8_[57];
  _tmp10_[63] = _tmp8_[58];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    stateR__[2][_log_it] = XOR(_tmp9_[_log_it],_tmp10_[_log_it]);
  }
  _tmp11_[0] = state__[3][54];
  _tmp11_[1] = state__[3][55];
  _tmp11_[2] = state__[3][56];
  _tmp11_[3] = state__[3][57];
  _tmp11_[4] = state__[3][58];
  _tmp11_[5] = state__[3][59];
  _tmp11_[6] = state__[3][60];
  _tmp11_[7] = state__[3][61];
  _tmp11_[8] = state__[3][62];
  _tmp11_[9] = state__[3][63];
  _tmp11_[10] = state__[3][0];
  _tmp11_[11] = state__[3][1];
  _tmp11_[12] = state__[3][2];
  _tmp11_[13] = state__[3][3];
  _tmp11_[14] = state__[3][4];
  _tmp11_[15] = state__[3][5];
  _tmp11_[16] = state__[3][6];
  _tmp11_[17] = state__[3][7];
  _tmp11_[18] = state__[3][8];
  _tmp11_[19] = state__[3][9];
  _tmp11_[20] = state__[3][10];
  _tmp11_[21] = state__[3][11];
  _tmp11_[22] = state__[3][12];
  _tmp11_[23] = state__[3][13];
  _tmp11_[24] = state__[3][14];
  _tmp11_[25] = state__[3][15];
  _tmp11_[26] = state__[3][16];
  _tmp11_[27] = state__[3][17];
  _tmp11_[28] = state__[3][18];
  _tmp11_[29] = state__[3][19];
  _tmp11_[30] = state__[3][20];
  _tmp11_[31] = state__[3][21];
  _tmp11_[32] = state__[3][22];
  _tmp11_[33] = state__[3][23];
  _tmp11_[34] = state__[3][24];
  _tmp11_[35] = state__[3][25];
  _tmp11_[36] = state__[3][26];
  _tmp11_[37] = state__[3][27];
  _tmp11_[38] = state__[3][28];
  _tmp11_[39] = state__[3][29];
  _tmp11_[40] = state__[3][30];
  _tmp11_[41] = state__[3][31];
  _tmp11_[42] = state__[3][32];
  _tmp11_[43] = state__[3][33];
  _tmp11_[44] = state__[3][34];
  _tmp11_[45] = state__[3][35];
  _tmp11_[46] = state__[3][36];
  _tmp11_[47] = state__[3][37];
  _tmp11_[48] = state__[3][38];
  _tmp11_[49] = state__[3][39];
  _tmp11_[50] = state__[3][40];
  _tmp11_[51] = state__[3][41];
  _tmp11_[52] = state__[3][42];
  _tmp11_[53] = state__[3][43];
  _tmp11_[54] = state__[3][44];
  _tmp11_[55] = state__[3][45];
  _tmp11_[56] = state__[3][46];
  _tmp11_[57] = state__[3][47];
  _tmp11_[58] = state__[3][48];
  _tmp11_[59] = state__[3][49];
  _tmp11_[60] = state__[3][50];
  _tmp11_[61] = state__[3][51];
  _tmp11_[62] = state__[3][52];
  _tmp11_[63] = state__[3][53];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    _tmp12_[_log_it] = XOR(state__[3][_log_it],_tmp11_[_log_it]);
  }
  _tmp13_[0] = _tmp11_[57];
  _tmp13_[1] = _tmp11_[58];
  _tmp13_[2] = _tmp11_[59];
  _tmp13_[3] = _tmp11_[60];
  _tmp13_[4] = _tmp11_[61];
  _tmp13_[5] = _tmp11_[62];
  _tmp13_[6] = _tmp11_[63];
  _tmp13_[7] = _tmp11_[0];
  _tmp13_[8] = _tmp11_[1];
  _tmp13_[9] = _tmp11_[2];
  _tmp13_[10] = _tmp11_[3];
  _tmp13_[11] = _tmp11_[4];
  _tmp13_[12] = _tmp11_[5];
  _tmp13_[13] = _tmp11_[6];
  _tmp13_[14] = _tmp11_[7];
  _tmp13_[15] = _tmp11_[8];
  _tmp13_[16] = _tmp11_[9];
  _tmp13_[17] = _tmp11_[10];
  _tmp13_[18] = _tmp11_[11];
  _tmp13_[19] = _tmp11_[12];
  _tmp13_[20] = _tmp11_[13];
  _tmp13_[21] = _tmp11_[14];
  _tmp13_[22] = _tmp11_[15];
  _tmp13_[23] = _tmp11_[16];
  _tmp13_[24] = _tmp11_[17];
  _tmp13_[25] = _tmp11_[18];
  _tmp13_[26] = _tmp11_[19];
  _tmp13_[27] = _tmp11_[20];
  _tmp13_[28] = _tmp11_[21];
  _tmp13_[29] = _tmp11_[22];
  _tmp13_[30] = _tmp11_[23];
  _tmp13_[31] = _tmp11_[24];
  _tmp13_[32] = _tmp11_[25];
  _tmp13_[33] = _tmp11_[26];
  _tmp13_[34] = _tmp11_[27];
  _tmp13_[35] = _tmp11_[28];
  _tmp13_[36] = _tmp11_[29];
  _tmp13_[37] = _tmp11_[30];
  _tmp13_[38] = _tmp11_[31];
  _tmp13_[39] = _tmp11_[32];
  _tmp13_[40] = _tmp11_[33];
  _tmp13_[41] = _tmp11_[34];
  _tmp13_[42] = _tmp11_[35];
  _tmp13_[43] = _tmp11_[36];
  _tmp13_[44] = _tmp11_[37];
  _tmp13_[45] = _tmp11_[38];
  _tmp13_[46] = _tmp11_[39];
  _tmp13_[47] = _tmp11_[40];
  _tmp13_[48] = _tmp11_[41];
  _tmp13_[49] = _tmp11_[42];
  _tmp13_[50] = _tmp11_[43];
  _tmp13_[51] = _tmp11_[44];
  _tmp13_[52] = _tmp11_[45];
  _tmp13_[53] = _tmp11_[46];
  _tmp13_[54] = _tmp11_[47];
  _tmp13_[55] = _tmp11_[48];
  _tmp13_[56] = _tmp11_[49];
  _tmp13_[57] = _tmp11_[50];
  _tmp13_[58] = _tmp11_[51];
  _tmp13_[59] = _tmp11_[52];
  _tmp13_[60] = _tmp11_[53];
  _tmp13_[61] = _tmp11_[54];
  _tmp13_[62] = _tmp11_[55];
  _tmp13_[63] = _tmp11_[56];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    stateR__[3][_log_it] = XOR(_tmp12_[_log_it],_tmp13_[_log_it]);
  }
  _tmp14_[0] = state__[4][57];
  _tmp14_[1] = state__[4][58];
  _tmp14_[2] = state__[4][59];
  _tmp14_[3] = state__[4][60];
  _tmp14_[4] = state__[4][61];
  _tmp14_[5] = state__[4][62];
  _tmp14_[6] = state__[4][63];
  _tmp14_[7] = state__[4][0];
  _tmp14_[8] = state__[4][1];
  _tmp14_[9] = state__[4][2];
  _tmp14_[10] = state__[4][3];
  _tmp14_[11] = state__[4][4];
  _tmp14_[12] = state__[4][5];
  _tmp14_[13] = state__[4][6];
  _tmp14_[14] = state__[4][7];
  _tmp14_[15] = state__[4][8];
  _tmp14_[16] = state__[4][9];
  _tmp14_[17] = state__[4][10];
  _tmp14_[18] = state__[4][11];
  _tmp14_[19] = state__[4][12];
  _tmp14_[20] = state__[4][13];
  _tmp14_[21] = state__[4][14];
  _tmp14_[22] = state__[4][15];
  _tmp14_[23] = state__[4][16];
  _tmp14_[24] = state__[4][17];
  _tmp14_[25] = state__[4][18];
  _tmp14_[26] = state__[4][19];
  _tmp14_[27] = state__[4][20];
  _tmp14_[28] = state__[4][21];
  _tmp14_[29] = state__[4][22];
  _tmp14_[30] = state__[4][23];
  _tmp14_[31] = state__[4][24];
  _tmp14_[32] = state__[4][25];
  _tmp14_[33] = state__[4][26];
  _tmp14_[34] = state__[4][27];
  _tmp14_[35] = state__[4][28];
  _tmp14_[36] = state__[4][29];
  _tmp14_[37] = state__[4][30];
  _tmp14_[38] = state__[4][31];
  _tmp14_[39] = state__[4][32];
  _tmp14_[40] = state__[4][33];
  _tmp14_[41] = state__[4][34];
  _tmp14_[42] = state__[4][35];
  _tmp14_[43] = state__[4][36];
  _tmp14_[44] = state__[4][37];
  _tmp14_[45] = state__[4][38];
  _tmp14_[46] = state__[4][39];
  _tmp14_[47] = state__[4][40];
  _tmp14_[48] = state__[4][41];
  _tmp14_[49] = state__[4][42];
  _tmp14_[50] = state__[4][43];
  _tmp14_[51] = state__[4][44];
  _tmp14_[52] = state__[4][45];
  _tmp14_[53] = state__[4][46];
  _tmp14_[54] = state__[4][47];
  _tmp14_[55] = state__[4][48];
  _tmp14_[56] = state__[4][49];
  _tmp14_[57] = state__[4][50];
  _tmp14_[58] = state__[4][51];
  _tmp14_[59] = state__[4][52];
  _tmp14_[60] = state__[4][53];
  _tmp14_[61] = state__[4][54];
  _tmp14_[62] = state__[4][55];
  _tmp14_[63] = state__[4][56];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    _tmp15_[_log_it] = XOR(state__[4][_log_it],_tmp14_[_log_it]);
  }
  _tmp16_[0] = _tmp14_[30];
  _tmp16_[1] = _tmp14_[31];
  _tmp16_[2] = _tmp14_[32];
  _tmp16_[3] = _tmp14_[33];
  _tmp16_[4] = _tmp14_[34];
  _tmp16_[5] = _tmp14_[35];
  _tmp16_[6] = _tmp14_[36];
  _tmp16_[7] = _tmp14_[37];
  _tmp16_[8] = _tmp14_[38];
  _tmp16_[9] = _tmp14_[39];
  _tmp16_[10] = _tmp14_[40];
  _tmp16_[11] = _tmp14_[41];
  _tmp16_[12] = _tmp14_[42];
  _tmp16_[13] = _tmp14_[43];
  _tmp16_[14] = _tmp14_[44];
  _tmp16_[15] = _tmp14_[45];
  _tmp16_[16] = _tmp14_[46];
  _tmp16_[17] = _tmp14_[47];
  _tmp16_[18] = _tmp14_[48];
  _tmp16_[19] = _tmp14_[49];
  _tmp16_[20] = _tmp14_[50];
  _tmp16_[21] = _tmp14_[51];
  _tmp16_[22] = _tmp14_[52];
  _tmp16_[23] = _tmp14_[53];
  _tmp16_[24] = _tmp14_[54];
  _tmp16_[25] = _tmp14_[55];
  _tmp16_[26] = _tmp14_[56];
  _tmp16_[27] = _tmp14_[57];
  _tmp16_[28] = _tmp14_[58];
  _tmp16_[29] = _tmp14_[59];
  _tmp16_[30] = _tmp14_[60];
  _tmp16_[31] = _tmp14_[61];
  _tmp16_[32] = _tmp14_[62];
  _tmp16_[33] = _tmp14_[63];
  _tmp16_[34] = _tmp14_[0];
  _tmp16_[35] = _tmp14_[1];
  _tmp16_[36] = _tmp14_[2];
  _tmp16_[37] = _tmp14_[3];
  _tmp16_[38] = _tmp14_[4];
  _tmp16_[39] = _tmp14_[5];
  _tmp16_[40] = _tmp14_[6];
  _tmp16_[41] = _tmp14_[7];
  _tmp16_[42] = _tmp14_[8];
  _tmp16_[43] = _tmp14_[9];
  _tmp16_[44] = _tmp14_[10];
  _tmp16_[45] = _tmp14_[11];
  _tmp16_[46] = _tmp14_[12];
  _tmp16_[47] = _tmp14_[13];
  _tmp16_[48] = _tmp14_[14];
  _tmp16_[49] = _tmp14_[15];
  _tmp16_[50] = _tmp14_[16];
  _tmp16_[51] = _tmp14_[17];
  _tmp16_[52] = _tmp14_[18];
  _tmp16_[53] = _tmp14_[19];
  _tmp16_[54] = _tmp14_[20];
  _tmp16_[55] = _tmp14_[21];
  _tmp16_[56] = _tmp14_[22];
  _tmp16_[57] = _tmp14_[23];
  _tmp16_[58] = _tmp14_[24];
  _tmp16_[59] = _tmp14_[25];
  _tmp16_[60] = _tmp14_[26];
  _tmp16_[61] = _tmp14_[27];
  _tmp16_[62] = _tmp14_[28];
  _tmp16_[63] = _tmp14_[29];
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    stateR__[4][_log_it] = XOR(_tmp15_[_log_it],_tmp16_[_log_it]);
  }

}

/* main function */
void ascon12__ (/*inputs*/ DATATYPE input__[5][64], /*outputs*/ DATATYPE output__[5][64]) {

  // Variables declaration
  DATATYPE _tmp17_[64];
  DATATYPE _tmp18_[64];
  DATATYPE _tmp19_[64];
  DATATYPE _tmp20_[64];
  DATATYPE _tmp21_[64];
  DATATYPE _tmp22_[64];
  DATATYPE _tmp23_[64];
  DATATYPE _tmp24_[64];
  DATATYPE _tmp25_[64];
  DATATYPE _tmp26_[64];
  DATATYPE _tmp27_[64];
  DATATYPE _tmp28_[64];
  DATATYPE _tmp29_[5][64];
  DATATYPE _tmp30_[5][64];
  DATATYPE consts__[12][64];
  DATATYPE state__[5][64];

  // Instructions (body)
  _tmp17_[0] = SET_ALL_ZERO();
  _tmp17_[1] = SET_ALL_ZERO();
  _tmp17_[2] = SET_ALL_ZERO();
  _tmp17_[3] = SET_ALL_ZERO();
  _tmp17_[4] = SET_ALL_ZERO();
  _tmp17_[5] = SET_ALL_ZERO();
  _tmp17_[6] = SET_ALL_ZERO();
  _tmp17_[7] = SET_ALL_ZERO();
  _tmp17_[8] = SET_ALL_ZERO();
  _tmp17_[9] = SET_ALL_ZERO();
  _tmp17_[10] = SET_ALL_ZERO();
  _tmp17_[11] = SET_ALL_ZERO();
  _tmp17_[12] = SET_ALL_ZERO();
  _tmp17_[13] = SET_ALL_ZERO();
  _tmp17_[14] = SET_ALL_ZERO();
  _tmp17_[15] = SET_ALL_ZERO();
  _tmp17_[16] = SET_ALL_ZERO();
  _tmp17_[17] = SET_ALL_ZERO();
  _tmp17_[18] = SET_ALL_ZERO();
  _tmp17_[19] = SET_ALL_ZERO();
  _tmp17_[20] = SET_ALL_ZERO();
  _tmp17_[21] = SET_ALL_ZERO();
  _tmp17_[22] = SET_ALL_ZERO();
  _tmp17_[23] = SET_ALL_ZERO();
  _tmp17_[24] = SET_ALL_ZERO();
  _tmp17_[25] = SET_ALL_ZERO();
  _tmp17_[26] = SET_ALL_ZERO();
  _tmp17_[27] = SET_ALL_ZERO();
  _tmp17_[28] = SET_ALL_ZERO();
  _tmp17_[29] = SET_ALL_ZERO();
  _tmp17_[30] = SET_ALL_ZERO();
  _tmp17_[31] = SET_ALL_ZERO();
  _tmp17_[32] = SET_ALL_ZERO();
  _tmp17_[33] = SET_ALL_ZERO();
  _tmp17_[34] = SET_ALL_ZERO();
  _tmp17_[35] = SET_ALL_ZERO();
  _tmp17_[36] = SET_ALL_ZERO();
  _tmp17_[37] = SET_ALL_ZERO();
  _tmp17_[38] = SET_ALL_ZERO();
  _tmp17_[39] = SET_ALL_ZERO();
  _tmp17_[40] = SET_ALL_ZERO();
  _tmp17_[41] = SET_ALL_ZERO();
  _tmp17_[42] = SET_ALL_ZERO();
  _tmp17_[43] = SET_ALL_ZERO();
  _tmp17_[44] = SET_ALL_ZERO();
  _tmp17_[45] = SET_ALL_ZERO();
  _tmp17_[46] = SET_ALL_ZERO();
  _tmp17_[47] = SET_ALL_ZERO();
  _tmp17_[48] = SET_ALL_ZERO();
  _tmp17_[49] = SET_ALL_ZERO();
  _tmp17_[50] = SET_ALL_ZERO();
  _tmp17_[51] = SET_ALL_ZERO();
  _tmp17_[52] = SET_ALL_ZERO();
  _tmp17_[53] = SET_ALL_ZERO();
  _tmp17_[54] = SET_ALL_ZERO();
  _tmp17_[55] = SET_ALL_ZERO();
  _tmp17_[56] = SET_ALL_ONE();
  _tmp17_[57] = SET_ALL_ONE();
  _tmp17_[58] = SET_ALL_ONE();
  _tmp17_[59] = SET_ALL_ONE();
  _tmp17_[60] = SET_ALL_ZERO();
  _tmp17_[61] = SET_ALL_ZERO();
  _tmp17_[62] = SET_ALL_ZERO();
  _tmp17_[63] = SET_ALL_ZERO();
  _tmp18_[0] = SET_ALL_ZERO();
  _tmp18_[1] = SET_ALL_ZERO();
  _tmp18_[2] = SET_ALL_ZERO();
  _tmp18_[3] = SET_ALL_ZERO();
  _tmp18_[4] = SET_ALL_ZERO();
  _tmp18_[5] = SET_ALL_ZERO();
  _tmp18_[6] = SET_ALL_ZERO();
  _tmp18_[7] = SET_ALL_ZERO();
  _tmp18_[8] = SET_ALL_ZERO();
  _tmp18_[9] = SET_ALL_ZERO();
  _tmp18_[10] = SET_ALL_ZERO();
  _tmp18_[11] = SET_ALL_ZERO();
  _tmp18_[12] = SET_ALL_ZERO();
  _tmp18_[13] = SET_ALL_ZERO();
  _tmp18_[14] = SET_ALL_ZERO();
  _tmp18_[15] = SET_ALL_ZERO();
  _tmp18_[16] = SET_ALL_ZERO();
  _tmp18_[17] = SET_ALL_ZERO();
  _tmp18_[18] = SET_ALL_ZERO();
  _tmp18_[19] = SET_ALL_ZERO();
  _tmp18_[20] = SET_ALL_ZERO();
  _tmp18_[21] = SET_ALL_ZERO();
  _tmp18_[22] = SET_ALL_ZERO();
  _tmp18_[23] = SET_ALL_ZERO();
  _tmp18_[24] = SET_ALL_ZERO();
  _tmp18_[25] = SET_ALL_ZERO();
  _tmp18_[26] = SET_ALL_ZERO();
  _tmp18_[27] = SET_ALL_ZERO();
  _tmp18_[28] = SET_ALL_ZERO();
  _tmp18_[29] = SET_ALL_ZERO();
  _tmp18_[30] = SET_ALL_ZERO();
  _tmp18_[31] = SET_ALL_ZERO();
  _tmp18_[32] = SET_ALL_ZERO();
  _tmp18_[33] = SET_ALL_ZERO();
  _tmp18_[34] = SET_ALL_ZERO();
  _tmp18_[35] = SET_ALL_ZERO();
  _tmp18_[36] = SET_ALL_ZERO();
  _tmp18_[37] = SET_ALL_ZERO();
  _tmp18_[38] = SET_ALL_ZERO();
  _tmp18_[39] = SET_ALL_ZERO();
  _tmp18_[40] = SET_ALL_ZERO();
  _tmp18_[41] = SET_ALL_ZERO();
  _tmp18_[42] = SET_ALL_ZERO();
  _tmp18_[43] = SET_ALL_ZERO();
  _tmp18_[44] = SET_ALL_ZERO();
  _tmp18_[45] = SET_ALL_ZERO();
  _tmp18_[46] = SET_ALL_ZERO();
  _tmp18_[47] = SET_ALL_ZERO();
  _tmp18_[48] = SET_ALL_ZERO();
  _tmp18_[49] = SET_ALL_ZERO();
  _tmp18_[50] = SET_ALL_ZERO();
  _tmp18_[51] = SET_ALL_ZERO();
  _tmp18_[52] = SET_ALL_ZERO();
  _tmp18_[53] = SET_ALL_ZERO();
  _tmp18_[54] = SET_ALL_ZERO();
  _tmp18_[55] = SET_ALL_ZERO();
  _tmp18_[56] = SET_ALL_ONE();
  _tmp18_[57] = SET_ALL_ONE();
  _tmp18_[58] = SET_ALL_ONE();
  _tmp18_[59] = SET_ALL_ZERO();
  _tmp18_[60] = SET_ALL_ZERO();
  _tmp18_[61] = SET_ALL_ZERO();
  _tmp18_[62] = SET_ALL_ZERO();
  _tmp18_[63] = SET_ALL_ONE();
  _tmp19_[0] = SET_ALL_ZERO();
  _tmp19_[1] = SET_ALL_ZERO();
  _tmp19_[2] = SET_ALL_ZERO();
  _tmp19_[3] = SET_ALL_ZERO();
  _tmp19_[4] = SET_ALL_ZERO();
  _tmp19_[5] = SET_ALL_ZERO();
  _tmp19_[6] = SET_ALL_ZERO();
  _tmp19_[7] = SET_ALL_ZERO();
  _tmp19_[8] = SET_ALL_ZERO();
  _tmp19_[9] = SET_ALL_ZERO();
  _tmp19_[10] = SET_ALL_ZERO();
  _tmp19_[11] = SET_ALL_ZERO();
  _tmp19_[12] = SET_ALL_ZERO();
  _tmp19_[13] = SET_ALL_ZERO();
  _tmp19_[14] = SET_ALL_ZERO();
  _tmp19_[15] = SET_ALL_ZERO();
  _tmp19_[16] = SET_ALL_ZERO();
  _tmp19_[17] = SET_ALL_ZERO();
  _tmp19_[18] = SET_ALL_ZERO();
  _tmp19_[19] = SET_ALL_ZERO();
  _tmp19_[20] = SET_ALL_ZERO();
  _tmp19_[21] = SET_ALL_ZERO();
  _tmp19_[22] = SET_ALL_ZERO();
  _tmp19_[23] = SET_ALL_ZERO();
  _tmp19_[24] = SET_ALL_ZERO();
  _tmp19_[25] = SET_ALL_ZERO();
  _tmp19_[26] = SET_ALL_ZERO();
  _tmp19_[27] = SET_ALL_ZERO();
  _tmp19_[28] = SET_ALL_ZERO();
  _tmp19_[29] = SET_ALL_ZERO();
  _tmp19_[30] = SET_ALL_ZERO();
  _tmp19_[31] = SET_ALL_ZERO();
  _tmp19_[32] = SET_ALL_ZERO();
  _tmp19_[33] = SET_ALL_ZERO();
  _tmp19_[34] = SET_ALL_ZERO();
  _tmp19_[35] = SET_ALL_ZERO();
  _tmp19_[36] = SET_ALL_ZERO();
  _tmp19_[37] = SET_ALL_ZERO();
  _tmp19_[38] = SET_ALL_ZERO();
  _tmp19_[39] = SET_ALL_ZERO();
  _tmp19_[40] = SET_ALL_ZERO();
  _tmp19_[41] = SET_ALL_ZERO();
  _tmp19_[42] = SET_ALL_ZERO();
  _tmp19_[43] = SET_ALL_ZERO();
  _tmp19_[44] = SET_ALL_ZERO();
  _tmp19_[45] = SET_ALL_ZERO();
  _tmp19_[46] = SET_ALL_ZERO();
  _tmp19_[47] = SET_ALL_ZERO();
  _tmp19_[48] = SET_ALL_ZERO();
  _tmp19_[49] = SET_ALL_ZERO();
  _tmp19_[50] = SET_ALL_ZERO();
  _tmp19_[51] = SET_ALL_ZERO();
  _tmp19_[52] = SET_ALL_ZERO();
  _tmp19_[53] = SET_ALL_ZERO();
  _tmp19_[54] = SET_ALL_ZERO();
  _tmp19_[55] = SET_ALL_ZERO();
  _tmp19_[56] = SET_ALL_ONE();
  _tmp19_[57] = SET_ALL_ONE();
  _tmp19_[58] = SET_ALL_ZERO();
  _tmp19_[59] = SET_ALL_ONE();
  _tmp19_[60] = SET_ALL_ZERO();
  _tmp19_[61] = SET_ALL_ZERO();
  _tmp19_[62] = SET_ALL_ONE();
  _tmp19_[63] = SET_ALL_ZERO();
  _tmp20_[0] = SET_ALL_ZERO();
  _tmp20_[1] = SET_ALL_ZERO();
  _tmp20_[2] = SET_ALL_ZERO();
  _tmp20_[3] = SET_ALL_ZERO();
  _tmp20_[4] = SET_ALL_ZERO();
  _tmp20_[5] = SET_ALL_ZERO();
  _tmp20_[6] = SET_ALL_ZERO();
  _tmp20_[7] = SET_ALL_ZERO();
  _tmp20_[8] = SET_ALL_ZERO();
  _tmp20_[9] = SET_ALL_ZERO();
  _tmp20_[10] = SET_ALL_ZERO();
  _tmp20_[11] = SET_ALL_ZERO();
  _tmp20_[12] = SET_ALL_ZERO();
  _tmp20_[13] = SET_ALL_ZERO();
  _tmp20_[14] = SET_ALL_ZERO();
  _tmp20_[15] = SET_ALL_ZERO();
  _tmp20_[16] = SET_ALL_ZERO();
  _tmp20_[17] = SET_ALL_ZERO();
  _tmp20_[18] = SET_ALL_ZERO();
  _tmp20_[19] = SET_ALL_ZERO();
  _tmp20_[20] = SET_ALL_ZERO();
  _tmp20_[21] = SET_ALL_ZERO();
  _tmp20_[22] = SET_ALL_ZERO();
  _tmp20_[23] = SET_ALL_ZERO();
  _tmp20_[24] = SET_ALL_ZERO();
  _tmp20_[25] = SET_ALL_ZERO();
  _tmp20_[26] = SET_ALL_ZERO();
  _tmp20_[27] = SET_ALL_ZERO();
  _tmp20_[28] = SET_ALL_ZERO();
  _tmp20_[29] = SET_ALL_ZERO();
  _tmp20_[30] = SET_ALL_ZERO();
  _tmp20_[31] = SET_ALL_ZERO();
  _tmp20_[32] = SET_ALL_ZERO();
  _tmp20_[33] = SET_ALL_ZERO();
  _tmp20_[34] = SET_ALL_ZERO();
  _tmp20_[35] = SET_ALL_ZERO();
  _tmp20_[36] = SET_ALL_ZERO();
  _tmp20_[37] = SET_ALL_ZERO();
  _tmp20_[38] = SET_ALL_ZERO();
  _tmp20_[39] = SET_ALL_ZERO();
  _tmp20_[40] = SET_ALL_ZERO();
  _tmp20_[41] = SET_ALL_ZERO();
  _tmp20_[42] = SET_ALL_ZERO();
  _tmp20_[43] = SET_ALL_ZERO();
  _tmp20_[44] = SET_ALL_ZERO();
  _tmp20_[45] = SET_ALL_ZERO();
  _tmp20_[46] = SET_ALL_ZERO();
  _tmp20_[47] = SET_ALL_ZERO();
  _tmp20_[48] = SET_ALL_ZERO();
  _tmp20_[49] = SET_ALL_ZERO();
  _tmp20_[50] = SET_ALL_ZERO();
  _tmp20_[51] = SET_ALL_ZERO();
  _tmp20_[52] = SET_ALL_ZERO();
  _tmp20_[53] = SET_ALL_ZERO();
  _tmp20_[54] = SET_ALL_ZERO();
  _tmp20_[55] = SET_ALL_ZERO();
  _tmp20_[56] = SET_ALL_ONE();
  _tmp20_[57] = SET_ALL_ONE();
  _tmp20_[58] = SET_ALL_ZERO();
  _tmp20_[59] = SET_ALL_ZERO();
  _tmp20_[60] = SET_ALL_ZERO();
  _tmp20_[61] = SET_ALL_ZERO();
  _tmp20_[62] = SET_ALL_ONE();
  _tmp20_[63] = SET_ALL_ONE();
  _tmp21_[0] = SET_ALL_ZERO();
  _tmp21_[1] = SET_ALL_ZERO();
  _tmp21_[2] = SET_ALL_ZERO();
  _tmp21_[3] = SET_ALL_ZERO();
  _tmp21_[4] = SET_ALL_ZERO();
  _tmp21_[5] = SET_ALL_ZERO();
  _tmp21_[6] = SET_ALL_ZERO();
  _tmp21_[7] = SET_ALL_ZERO();
  _tmp21_[8] = SET_ALL_ZERO();
  _tmp21_[9] = SET_ALL_ZERO();
  _tmp21_[10] = SET_ALL_ZERO();
  _tmp21_[11] = SET_ALL_ZERO();
  _tmp21_[12] = SET_ALL_ZERO();
  _tmp21_[13] = SET_ALL_ZERO();
  _tmp21_[14] = SET_ALL_ZERO();
  _tmp21_[15] = SET_ALL_ZERO();
  _tmp21_[16] = SET_ALL_ZERO();
  _tmp21_[17] = SET_ALL_ZERO();
  _tmp21_[18] = SET_ALL_ZERO();
  _tmp21_[19] = SET_ALL_ZERO();
  _tmp21_[20] = SET_ALL_ZERO();
  _tmp21_[21] = SET_ALL_ZERO();
  _tmp21_[22] = SET_ALL_ZERO();
  _tmp21_[23] = SET_ALL_ZERO();
  _tmp21_[24] = SET_ALL_ZERO();
  _tmp21_[25] = SET_ALL_ZERO();
  _tmp21_[26] = SET_ALL_ZERO();
  _tmp21_[27] = SET_ALL_ZERO();
  _tmp21_[28] = SET_ALL_ZERO();
  _tmp21_[29] = SET_ALL_ZERO();
  _tmp21_[30] = SET_ALL_ZERO();
  _tmp21_[31] = SET_ALL_ZERO();
  _tmp21_[32] = SET_ALL_ZERO();
  _tmp21_[33] = SET_ALL_ZERO();
  _tmp21_[34] = SET_ALL_ZERO();
  _tmp21_[35] = SET_ALL_ZERO();
  _tmp21_[36] = SET_ALL_ZERO();
  _tmp21_[37] = SET_ALL_ZERO();
  _tmp21_[38] = SET_ALL_ZERO();
  _tmp21_[39] = SET_ALL_ZERO();
  _tmp21_[40] = SET_ALL_ZERO();
  _tmp21_[41] = SET_ALL_ZERO();
  _tmp21_[42] = SET_ALL_ZERO();
  _tmp21_[43] = SET_ALL_ZERO();
  _tmp21_[44] = SET_ALL_ZERO();
  _tmp21_[45] = SET_ALL_ZERO();
  _tmp21_[46] = SET_ALL_ZERO();
  _tmp21_[47] = SET_ALL_ZERO();
  _tmp21_[48] = SET_ALL_ZERO();
  _tmp21_[49] = SET_ALL_ZERO();
  _tmp21_[50] = SET_ALL_ZERO();
  _tmp21_[51] = SET_ALL_ZERO();
  _tmp21_[52] = SET_ALL_ZERO();
  _tmp21_[53] = SET_ALL_ZERO();
  _tmp21_[54] = SET_ALL_ZERO();
  _tmp21_[55] = SET_ALL_ZERO();
  _tmp21_[56] = SET_ALL_ONE();
  _tmp21_[57] = SET_ALL_ZERO();
  _tmp21_[58] = SET_ALL_ONE();
  _tmp21_[59] = SET_ALL_ONE();
  _tmp21_[60] = SET_ALL_ZERO();
  _tmp21_[61] = SET_ALL_ONE();
  _tmp21_[62] = SET_ALL_ZERO();
  _tmp21_[63] = SET_ALL_ZERO();
  _tmp22_[0] = SET_ALL_ZERO();
  _tmp22_[1] = SET_ALL_ZERO();
  _tmp22_[2] = SET_ALL_ZERO();
  _tmp22_[3] = SET_ALL_ZERO();
  _tmp22_[4] = SET_ALL_ZERO();
  _tmp22_[5] = SET_ALL_ZERO();
  _tmp22_[6] = SET_ALL_ZERO();
  _tmp22_[7] = SET_ALL_ZERO();
  _tmp22_[8] = SET_ALL_ZERO();
  _tmp22_[9] = SET_ALL_ZERO();
  _tmp22_[10] = SET_ALL_ZERO();
  _tmp22_[11] = SET_ALL_ZERO();
  _tmp22_[12] = SET_ALL_ZERO();
  _tmp22_[13] = SET_ALL_ZERO();
  _tmp22_[14] = SET_ALL_ZERO();
  _tmp22_[15] = SET_ALL_ZERO();
  _tmp22_[16] = SET_ALL_ZERO();
  _tmp22_[17] = SET_ALL_ZERO();
  _tmp22_[18] = SET_ALL_ZERO();
  _tmp22_[19] = SET_ALL_ZERO();
  _tmp22_[20] = SET_ALL_ZERO();
  _tmp22_[21] = SET_ALL_ZERO();
  _tmp22_[22] = SET_ALL_ZERO();
  _tmp22_[23] = SET_ALL_ZERO();
  _tmp22_[24] = SET_ALL_ZERO();
  _tmp22_[25] = SET_ALL_ZERO();
  _tmp22_[26] = SET_ALL_ZERO();
  _tmp22_[27] = SET_ALL_ZERO();
  _tmp22_[28] = SET_ALL_ZERO();
  _tmp22_[29] = SET_ALL_ZERO();
  _tmp22_[30] = SET_ALL_ZERO();
  _tmp22_[31] = SET_ALL_ZERO();
  _tmp22_[32] = SET_ALL_ZERO();
  _tmp22_[33] = SET_ALL_ZERO();
  _tmp22_[34] = SET_ALL_ZERO();
  _tmp22_[35] = SET_ALL_ZERO();
  _tmp22_[36] = SET_ALL_ZERO();
  _tmp22_[37] = SET_ALL_ZERO();
  _tmp22_[38] = SET_ALL_ZERO();
  _tmp22_[39] = SET_ALL_ZERO();
  _tmp22_[40] = SET_ALL_ZERO();
  _tmp22_[41] = SET_ALL_ZERO();
  _tmp22_[42] = SET_ALL_ZERO();
  _tmp22_[43] = SET_ALL_ZERO();
  _tmp22_[44] = SET_ALL_ZERO();
  _tmp22_[45] = SET_ALL_ZERO();
  _tmp22_[46] = SET_ALL_ZERO();
  _tmp22_[47] = SET_ALL_ZERO();
  _tmp22_[48] = SET_ALL_ZERO();
  _tmp22_[49] = SET_ALL_ZERO();
  _tmp22_[50] = SET_ALL_ZERO();
  _tmp22_[51] = SET_ALL_ZERO();
  _tmp22_[52] = SET_ALL_ZERO();
  _tmp22_[53] = SET_ALL_ZERO();
  _tmp22_[54] = SET_ALL_ZERO();
  _tmp22_[55] = SET_ALL_ZERO();
  _tmp22_[56] = SET_ALL_ONE();
  _tmp22_[57] = SET_ALL_ZERO();
  _tmp22_[58] = SET_ALL_ONE();
  _tmp22_[59] = SET_ALL_ZERO();
  _tmp22_[60] = SET_ALL_ZERO();
  _tmp22_[61] = SET_ALL_ONE();
  _tmp22_[62] = SET_ALL_ZERO();
  _tmp22_[63] = SET_ALL_ONE();
  _tmp23_[0] = SET_ALL_ZERO();
  _tmp23_[1] = SET_ALL_ZERO();
  _tmp23_[2] = SET_ALL_ZERO();
  _tmp23_[3] = SET_ALL_ZERO();
  _tmp23_[4] = SET_ALL_ZERO();
  _tmp23_[5] = SET_ALL_ZERO();
  _tmp23_[6] = SET_ALL_ZERO();
  _tmp23_[7] = SET_ALL_ZERO();
  _tmp23_[8] = SET_ALL_ZERO();
  _tmp23_[9] = SET_ALL_ZERO();
  _tmp23_[10] = SET_ALL_ZERO();
  _tmp23_[11] = SET_ALL_ZERO();
  _tmp23_[12] = SET_ALL_ZERO();
  _tmp23_[13] = SET_ALL_ZERO();
  _tmp23_[14] = SET_ALL_ZERO();
  _tmp23_[15] = SET_ALL_ZERO();
  _tmp23_[16] = SET_ALL_ZERO();
  _tmp23_[17] = SET_ALL_ZERO();
  _tmp23_[18] = SET_ALL_ZERO();
  _tmp23_[19] = SET_ALL_ZERO();
  _tmp23_[20] = SET_ALL_ZERO();
  _tmp23_[21] = SET_ALL_ZERO();
  _tmp23_[22] = SET_ALL_ZERO();
  _tmp23_[23] = SET_ALL_ZERO();
  _tmp23_[24] = SET_ALL_ZERO();
  _tmp23_[25] = SET_ALL_ZERO();
  _tmp23_[26] = SET_ALL_ZERO();
  _tmp23_[27] = SET_ALL_ZERO();
  _tmp23_[28] = SET_ALL_ZERO();
  _tmp23_[29] = SET_ALL_ZERO();
  _tmp23_[30] = SET_ALL_ZERO();
  _tmp23_[31] = SET_ALL_ZERO();
  _tmp23_[32] = SET_ALL_ZERO();
  _tmp23_[33] = SET_ALL_ZERO();
  _tmp23_[34] = SET_ALL_ZERO();
  _tmp23_[35] = SET_ALL_ZERO();
  _tmp23_[36] = SET_ALL_ZERO();
  _tmp23_[37] = SET_ALL_ZERO();
  _tmp23_[38] = SET_ALL_ZERO();
  _tmp23_[39] = SET_ALL_ZERO();
  _tmp23_[40] = SET_ALL_ZERO();
  _tmp23_[41] = SET_ALL_ZERO();
  _tmp23_[42] = SET_ALL_ZERO();
  _tmp23_[43] = SET_ALL_ZERO();
  _tmp23_[44] = SET_ALL_ZERO();
  _tmp23_[45] = SET_ALL_ZERO();
  _tmp23_[46] = SET_ALL_ZERO();
  _tmp23_[47] = SET_ALL_ZERO();
  _tmp23_[48] = SET_ALL_ZERO();
  _tmp23_[49] = SET_ALL_ZERO();
  _tmp23_[50] = SET_ALL_ZERO();
  _tmp23_[51] = SET_ALL_ZERO();
  _tmp23_[52] = SET_ALL_ZERO();
  _tmp23_[53] = SET_ALL_ZERO();
  _tmp23_[54] = SET_ALL_ZERO();
  _tmp23_[55] = SET_ALL_ZERO();
  _tmp23_[56] = SET_ALL_ONE();
  _tmp23_[57] = SET_ALL_ZERO();
  _tmp23_[58] = SET_ALL_ZERO();
  _tmp23_[59] = SET_ALL_ONE();
  _tmp23_[60] = SET_ALL_ZERO();
  _tmp23_[61] = SET_ALL_ONE();
  _tmp23_[62] = SET_ALL_ONE();
  _tmp23_[63] = SET_ALL_ZERO();
  _tmp24_[0] = SET_ALL_ZERO();
  _tmp24_[1] = SET_ALL_ZERO();
  _tmp24_[2] = SET_ALL_ZERO();
  _tmp24_[3] = SET_ALL_ZERO();
  _tmp24_[4] = SET_ALL_ZERO();
  _tmp24_[5] = SET_ALL_ZERO();
  _tmp24_[6] = SET_ALL_ZERO();
  _tmp24_[7] = SET_ALL_ZERO();
  _tmp24_[8] = SET_ALL_ZERO();
  _tmp24_[9] = SET_ALL_ZERO();
  _tmp24_[10] = SET_ALL_ZERO();
  _tmp24_[11] = SET_ALL_ZERO();
  _tmp24_[12] = SET_ALL_ZERO();
  _tmp24_[13] = SET_ALL_ZERO();
  _tmp24_[14] = SET_ALL_ZERO();
  _tmp24_[15] = SET_ALL_ZERO();
  _tmp24_[16] = SET_ALL_ZERO();
  _tmp24_[17] = SET_ALL_ZERO();
  _tmp24_[18] = SET_ALL_ZERO();
  _tmp24_[19] = SET_ALL_ZERO();
  _tmp24_[20] = SET_ALL_ZERO();
  _tmp24_[21] = SET_ALL_ZERO();
  _tmp24_[22] = SET_ALL_ZERO();
  _tmp24_[23] = SET_ALL_ZERO();
  _tmp24_[24] = SET_ALL_ZERO();
  _tmp24_[25] = SET_ALL_ZERO();
  _tmp24_[26] = SET_ALL_ZERO();
  _tmp24_[27] = SET_ALL_ZERO();
  _tmp24_[28] = SET_ALL_ZERO();
  _tmp24_[29] = SET_ALL_ZERO();
  _tmp24_[30] = SET_ALL_ZERO();
  _tmp24_[31] = SET_ALL_ZERO();
  _tmp24_[32] = SET_ALL_ZERO();
  _tmp24_[33] = SET_ALL_ZERO();
  _tmp24_[34] = SET_ALL_ZERO();
  _tmp24_[35] = SET_ALL_ZERO();
  _tmp24_[36] = SET_ALL_ZERO();
  _tmp24_[37] = SET_ALL_ZERO();
  _tmp24_[38] = SET_ALL_ZERO();
  _tmp24_[39] = SET_ALL_ZERO();
  _tmp24_[40] = SET_ALL_ZERO();
  _tmp24_[41] = SET_ALL_ZERO();
  _tmp24_[42] = SET_ALL_ZERO();
  _tmp24_[43] = SET_ALL_ZERO();
  _tmp24_[44] = SET_ALL_ZERO();
  _tmp24_[45] = SET_ALL_ZERO();
  _tmp24_[46] = SET_ALL_ZERO();
  _tmp24_[47] = SET_ALL_ZERO();
  _tmp24_[48] = SET_ALL_ZERO();
  _tmp24_[49] = SET_ALL_ZERO();
  _tmp24_[50] = SET_ALL_ZERO();
  _tmp24_[51] = SET_ALL_ZERO();
  _tmp24_[52] = SET_ALL_ZERO();
  _tmp24_[53] = SET_ALL_ZERO();
  _tmp24_[54] = SET_ALL_ZERO();
  _tmp24_[55] = SET_ALL_ZERO();
  _tmp24_[56] = SET_ALL_ONE();
  _tmp24_[57] = SET_ALL_ZERO();
  _tmp24_[58] = SET_ALL_ZERO();
  _tmp24_[59] = SET_ALL_ZERO();
  _tmp24_[60] = SET_ALL_ZERO();
  _tmp24_[61] = SET_ALL_ONE();
  _tmp24_[62] = SET_ALL_ONE();
  _tmp24_[63] = SET_ALL_ONE();
  _tmp25_[0] = SET_ALL_ZERO();
  _tmp25_[1] = SET_ALL_ZERO();
  _tmp25_[2] = SET_ALL_ZERO();
  _tmp25_[3] = SET_ALL_ZERO();
  _tmp25_[4] = SET_ALL_ZERO();
  _tmp25_[5] = SET_ALL_ZERO();
  _tmp25_[6] = SET_ALL_ZERO();
  _tmp25_[7] = SET_ALL_ZERO();
  _tmp25_[8] = SET_ALL_ZERO();
  _tmp25_[9] = SET_ALL_ZERO();
  _tmp25_[10] = SET_ALL_ZERO();
  _tmp25_[11] = SET_ALL_ZERO();
  _tmp25_[12] = SET_ALL_ZERO();
  _tmp25_[13] = SET_ALL_ZERO();
  _tmp25_[14] = SET_ALL_ZERO();
  _tmp25_[15] = SET_ALL_ZERO();
  _tmp25_[16] = SET_ALL_ZERO();
  _tmp25_[17] = SET_ALL_ZERO();
  _tmp25_[18] = SET_ALL_ZERO();
  _tmp25_[19] = SET_ALL_ZERO();
  _tmp25_[20] = SET_ALL_ZERO();
  _tmp25_[21] = SET_ALL_ZERO();
  _tmp25_[22] = SET_ALL_ZERO();
  _tmp25_[23] = SET_ALL_ZERO();
  _tmp25_[24] = SET_ALL_ZERO();
  _tmp25_[25] = SET_ALL_ZERO();
  _tmp25_[26] = SET_ALL_ZERO();
  _tmp25_[27] = SET_ALL_ZERO();
  _tmp25_[28] = SET_ALL_ZERO();
  _tmp25_[29] = SET_ALL_ZERO();
  _tmp25_[30] = SET_ALL_ZERO();
  _tmp25_[31] = SET_ALL_ZERO();
  _tmp25_[32] = SET_ALL_ZERO();
  _tmp25_[33] = SET_ALL_ZERO();
  _tmp25_[34] = SET_ALL_ZERO();
  _tmp25_[35] = SET_ALL_ZERO();
  _tmp25_[36] = SET_ALL_ZERO();
  _tmp25_[37] = SET_ALL_ZERO();
  _tmp25_[38] = SET_ALL_ZERO();
  _tmp25_[39] = SET_ALL_ZERO();
  _tmp25_[40] = SET_ALL_ZERO();
  _tmp25_[41] = SET_ALL_ZERO();
  _tmp25_[42] = SET_ALL_ZERO();
  _tmp25_[43] = SET_ALL_ZERO();
  _tmp25_[44] = SET_ALL_ZERO();
  _tmp25_[45] = SET_ALL_ZERO();
  _tmp25_[46] = SET_ALL_ZERO();
  _tmp25_[47] = SET_ALL_ZERO();
  _tmp25_[48] = SET_ALL_ZERO();
  _tmp25_[49] = SET_ALL_ZERO();
  _tmp25_[50] = SET_ALL_ZERO();
  _tmp25_[51] = SET_ALL_ZERO();
  _tmp25_[52] = SET_ALL_ZERO();
  _tmp25_[53] = SET_ALL_ZERO();
  _tmp25_[54] = SET_ALL_ZERO();
  _tmp25_[55] = SET_ALL_ZERO();
  _tmp25_[56] = SET_ALL_ZERO();
  _tmp25_[57] = SET_ALL_ONE();
  _tmp25_[58] = SET_ALL_ONE();
  _tmp25_[59] = SET_ALL_ONE();
  _tmp25_[60] = SET_ALL_ONE();
  _tmp25_[61] = SET_ALL_ZERO();
  _tmp25_[62] = SET_ALL_ZERO();
  _tmp25_[63] = SET_ALL_ZERO();
  _tmp26_[0] = SET_ALL_ZERO();
  _tmp26_[1] = SET_ALL_ZERO();
  _tmp26_[2] = SET_ALL_ZERO();
  _tmp26_[3] = SET_ALL_ZERO();
  _tmp26_[4] = SET_ALL_ZERO();
  _tmp26_[5] = SET_ALL_ZERO();
  _tmp26_[6] = SET_ALL_ZERO();
  _tmp26_[7] = SET_ALL_ZERO();
  _tmp26_[8] = SET_ALL_ZERO();
  _tmp26_[9] = SET_ALL_ZERO();
  _tmp26_[10] = SET_ALL_ZERO();
  _tmp26_[11] = SET_ALL_ZERO();
  _tmp26_[12] = SET_ALL_ZERO();
  _tmp26_[13] = SET_ALL_ZERO();
  _tmp26_[14] = SET_ALL_ZERO();
  _tmp26_[15] = SET_ALL_ZERO();
  _tmp26_[16] = SET_ALL_ZERO();
  _tmp26_[17] = SET_ALL_ZERO();
  _tmp26_[18] = SET_ALL_ZERO();
  _tmp26_[19] = SET_ALL_ZERO();
  _tmp26_[20] = SET_ALL_ZERO();
  _tmp26_[21] = SET_ALL_ZERO();
  _tmp26_[22] = SET_ALL_ZERO();
  _tmp26_[23] = SET_ALL_ZERO();
  _tmp26_[24] = SET_ALL_ZERO();
  _tmp26_[25] = SET_ALL_ZERO();
  _tmp26_[26] = SET_ALL_ZERO();
  _tmp26_[27] = SET_ALL_ZERO();
  _tmp26_[28] = SET_ALL_ZERO();
  _tmp26_[29] = SET_ALL_ZERO();
  _tmp26_[30] = SET_ALL_ZERO();
  _tmp26_[31] = SET_ALL_ZERO();
  _tmp26_[32] = SET_ALL_ZERO();
  _tmp26_[33] = SET_ALL_ZERO();
  _tmp26_[34] = SET_ALL_ZERO();
  _tmp26_[35] = SET_ALL_ZERO();
  _tmp26_[36] = SET_ALL_ZERO();
  _tmp26_[37] = SET_ALL_ZERO();
  _tmp26_[38] = SET_ALL_ZERO();
  _tmp26_[39] = SET_ALL_ZERO();
  _tmp26_[40] = SET_ALL_ZERO();
  _tmp26_[41] = SET_ALL_ZERO();
  _tmp26_[42] = SET_ALL_ZERO();
  _tmp26_[43] = SET_ALL_ZERO();
  _tmp26_[44] = SET_ALL_ZERO();
  _tmp26_[45] = SET_ALL_ZERO();
  _tmp26_[46] = SET_ALL_ZERO();
  _tmp26_[47] = SET_ALL_ZERO();
  _tmp26_[48] = SET_ALL_ZERO();
  _tmp26_[49] = SET_ALL_ZERO();
  _tmp26_[50] = SET_ALL_ZERO();
  _tmp26_[51] = SET_ALL_ZERO();
  _tmp26_[52] = SET_ALL_ZERO();
  _tmp26_[53] = SET_ALL_ZERO();
  _tmp26_[54] = SET_ALL_ZERO();
  _tmp26_[55] = SET_ALL_ZERO();
  _tmp26_[56] = SET_ALL_ZERO();
  _tmp26_[57] = SET_ALL_ONE();
  _tmp26_[58] = SET_ALL_ONE();
  _tmp26_[59] = SET_ALL_ZERO();
  _tmp26_[60] = SET_ALL_ONE();
  _tmp26_[61] = SET_ALL_ZERO();
  _tmp26_[62] = SET_ALL_ZERO();
  _tmp26_[63] = SET_ALL_ONE();
  _tmp27_[0] = SET_ALL_ZERO();
  _tmp27_[1] = SET_ALL_ZERO();
  _tmp27_[2] = SET_ALL_ZERO();
  _tmp27_[3] = SET_ALL_ZERO();
  _tmp27_[4] = SET_ALL_ZERO();
  _tmp27_[5] = SET_ALL_ZERO();
  _tmp27_[6] = SET_ALL_ZERO();
  _tmp27_[7] = SET_ALL_ZERO();
  _tmp27_[8] = SET_ALL_ZERO();
  _tmp27_[9] = SET_ALL_ZERO();
  _tmp27_[10] = SET_ALL_ZERO();
  _tmp27_[11] = SET_ALL_ZERO();
  _tmp27_[12] = SET_ALL_ZERO();
  _tmp27_[13] = SET_ALL_ZERO();
  _tmp27_[14] = SET_ALL_ZERO();
  _tmp27_[15] = SET_ALL_ZERO();
  _tmp27_[16] = SET_ALL_ZERO();
  _tmp27_[17] = SET_ALL_ZERO();
  _tmp27_[18] = SET_ALL_ZERO();
  _tmp27_[19] = SET_ALL_ZERO();
  _tmp27_[20] = SET_ALL_ZERO();
  _tmp27_[21] = SET_ALL_ZERO();
  _tmp27_[22] = SET_ALL_ZERO();
  _tmp27_[23] = SET_ALL_ZERO();
  _tmp27_[24] = SET_ALL_ZERO();
  _tmp27_[25] = SET_ALL_ZERO();
  _tmp27_[26] = SET_ALL_ZERO();
  _tmp27_[27] = SET_ALL_ZERO();
  _tmp27_[28] = SET_ALL_ZERO();
  _tmp27_[29] = SET_ALL_ZERO();
  _tmp27_[30] = SET_ALL_ZERO();
  _tmp27_[31] = SET_ALL_ZERO();
  _tmp27_[32] = SET_ALL_ZERO();
  _tmp27_[33] = SET_ALL_ZERO();
  _tmp27_[34] = SET_ALL_ZERO();
  _tmp27_[35] = SET_ALL_ZERO();
  _tmp27_[36] = SET_ALL_ZERO();
  _tmp27_[37] = SET_ALL_ZERO();
  _tmp27_[38] = SET_ALL_ZERO();
  _tmp27_[39] = SET_ALL_ZERO();
  _tmp27_[40] = SET_ALL_ZERO();
  _tmp27_[41] = SET_ALL_ZERO();
  _tmp27_[42] = SET_ALL_ZERO();
  _tmp27_[43] = SET_ALL_ZERO();
  _tmp27_[44] = SET_ALL_ZERO();
  _tmp27_[45] = SET_ALL_ZERO();
  _tmp27_[46] = SET_ALL_ZERO();
  _tmp27_[47] = SET_ALL_ZERO();
  _tmp27_[48] = SET_ALL_ZERO();
  _tmp27_[49] = SET_ALL_ZERO();
  _tmp27_[50] = SET_ALL_ZERO();
  _tmp27_[51] = SET_ALL_ZERO();
  _tmp27_[52] = SET_ALL_ZERO();
  _tmp27_[53] = SET_ALL_ZERO();
  _tmp27_[54] = SET_ALL_ZERO();
  _tmp27_[55] = SET_ALL_ZERO();
  _tmp27_[56] = SET_ALL_ZERO();
  _tmp27_[57] = SET_ALL_ONE();
  _tmp27_[58] = SET_ALL_ZERO();
  _tmp27_[59] = SET_ALL_ONE();
  _tmp27_[60] = SET_ALL_ONE();
  _tmp27_[61] = SET_ALL_ZERO();
  _tmp27_[62] = SET_ALL_ONE();
  _tmp27_[63] = SET_ALL_ZERO();
  _tmp28_[0] = SET_ALL_ZERO();
  _tmp28_[1] = SET_ALL_ZERO();
  _tmp28_[2] = SET_ALL_ZERO();
  _tmp28_[3] = SET_ALL_ZERO();
  _tmp28_[4] = SET_ALL_ZERO();
  _tmp28_[5] = SET_ALL_ZERO();
  _tmp28_[6] = SET_ALL_ZERO();
  _tmp28_[7] = SET_ALL_ZERO();
  _tmp28_[8] = SET_ALL_ZERO();
  _tmp28_[9] = SET_ALL_ZERO();
  _tmp28_[10] = SET_ALL_ZERO();
  _tmp28_[11] = SET_ALL_ZERO();
  _tmp28_[12] = SET_ALL_ZERO();
  _tmp28_[13] = SET_ALL_ZERO();
  _tmp28_[14] = SET_ALL_ZERO();
  _tmp28_[15] = SET_ALL_ZERO();
  _tmp28_[16] = SET_ALL_ZERO();
  _tmp28_[17] = SET_ALL_ZERO();
  _tmp28_[18] = SET_ALL_ZERO();
  _tmp28_[19] = SET_ALL_ZERO();
  _tmp28_[20] = SET_ALL_ZERO();
  _tmp28_[21] = SET_ALL_ZERO();
  _tmp28_[22] = SET_ALL_ZERO();
  _tmp28_[23] = SET_ALL_ZERO();
  _tmp28_[24] = SET_ALL_ZERO();
  _tmp28_[25] = SET_ALL_ZERO();
  _tmp28_[26] = SET_ALL_ZERO();
  _tmp28_[27] = SET_ALL_ZERO();
  _tmp28_[28] = SET_ALL_ZERO();
  _tmp28_[29] = SET_ALL_ZERO();
  _tmp28_[30] = SET_ALL_ZERO();
  _tmp28_[31] = SET_ALL_ZERO();
  _tmp28_[32] = SET_ALL_ZERO();
  _tmp28_[33] = SET_ALL_ZERO();
  _tmp28_[34] = SET_ALL_ZERO();
  _tmp28_[35] = SET_ALL_ZERO();
  _tmp28_[36] = SET_ALL_ZERO();
  _tmp28_[37] = SET_ALL_ZERO();
  _tmp28_[38] = SET_ALL_ZERO();
  _tmp28_[39] = SET_ALL_ZERO();
  _tmp28_[40] = SET_ALL_ZERO();
  _tmp28_[41] = SET_ALL_ZERO();
  _tmp28_[42] = SET_ALL_ZERO();
  _tmp28_[43] = SET_ALL_ZERO();
  _tmp28_[44] = SET_ALL_ZERO();
  _tmp28_[45] = SET_ALL_ZERO();
  _tmp28_[46] = SET_ALL_ZERO();
  _tmp28_[47] = SET_ALL_ZERO();
  _tmp28_[48] = SET_ALL_ZERO();
  _tmp28_[49] = SET_ALL_ZERO();
  _tmp28_[50] = SET_ALL_ZERO();
  _tmp28_[51] = SET_ALL_ZERO();
  _tmp28_[52] = SET_ALL_ZERO();
  _tmp28_[53] = SET_ALL_ZERO();
  _tmp28_[54] = SET_ALL_ZERO();
  _tmp28_[55] = SET_ALL_ZERO();
  _tmp28_[56] = SET_ALL_ZERO();
  _tmp28_[57] = SET_ALL_ONE();
  _tmp28_[58] = SET_ALL_ZERO();
  _tmp28_[59] = SET_ALL_ZERO();
  _tmp28_[60] = SET_ALL_ONE();
  _tmp28_[61] = SET_ALL_ZERO();
  _tmp28_[62] = SET_ALL_ONE();
  _tmp28_[63] = SET_ALL_ONE();
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    consts__[0][_log_it] = _tmp17_[_log_it];
    consts__[1][_log_it] = _tmp18_[_log_it];
    consts__[2][_log_it] = _tmp19_[_log_it];
    consts__[3][_log_it] = _tmp20_[_log_it];
    consts__[4][_log_it] = _tmp21_[_log_it];
    consts__[5][_log_it] = _tmp22_[_log_it];
    consts__[6][_log_it] = _tmp23_[_log_it];
    consts__[7][_log_it] = _tmp24_[_log_it];
    consts__[8][_log_it] = _tmp25_[_log_it];
    consts__[9][_log_it] = _tmp26_[_log_it];
    consts__[10][_log_it] = _tmp27_[_log_it];
    consts__[11][_log_it] = _tmp28_[_log_it];
    state__[0][_log_it] = input__[0][_log_it];
    state__[1][_log_it] = input__[1][_log_it];
    state__[2][_log_it] = input__[2][_log_it];
    state__[3][_log_it] = input__[3][_log_it];
    state__[4][_log_it] = input__[4][_log_it];
  }
  for (int i__ = 0; i__ <= 11; i__++) {
    AddConstant__B64(state__,consts__[i__],_tmp29_);
    Sbox__B64(_tmp29_,_tmp30_);
    LinearLayer__B64(_tmp30_,state__);
  }
  for (int _log_it = 0; _log_it <= 63; _log_it++) {
    output__[0][_log_it] = state__[0][_log_it];
    output__[1][_log_it] = state__[1][_log_it];
    output__[2][_log_it] = state__[2][_log_it];
    output__[3][_log_it] = state__[3][_log_it];
    output__[4][_log_it] = state__[4][_log_it];
  }

}

/* Additional functions */
uint32_t bench_speed() {
  /* inputs */
  DATATYPE input__[5][64] = { 0 };
  /* outputs */
  DATATYPE output__[5][64] = { 0 };
  /* fun call */
  ascon12__(input__,output__);

  /* Returning the number of encrypted bytes */
  return 1280;
}

/* **************************************************************** */
/*                            Usuba source                          */
/*                                                                  */
/*

 table Sbox(x :  v5 :: base)
  returns y :  v5 :: base
{
  4, 11, 31, 20, 26, 21, 9, 2, 27, 5, 8, 18, 29, 3, 6, 28, 30, 19, 7, 14, 0, 13, 17, 24, 16, 12, 1, 25, 22, 10, 15, 23
}


 node AddConstant(state :  u64x5 :: base,c :  u64 :: base)
  returns stateR :  u64x5 :: base
vars

let
  (stateR) = (state[0,1],(state[2] ^ c),state[3,4])
tel

 node LinearLayer(state :  u64x5 :: base)
  returns stateR :  u64x5 :: base
vars

let
  (stateR[0]) = ((state[0] ^ (state[0] >>> 19)) ^ (state[0] >>> 28));
  (stateR[1]) = ((state[1] ^ (state[1] >>> 61)) ^ (state[1] >>> 39));
  (stateR[2]) = ((state[2] ^ (state[2] >>> 1)) ^ (state[2] >>> 6));
  (stateR[3]) = ((state[3] ^ (state[3] >>> 10)) ^ (state[3] >>> 17));
  (stateR[4]) = ((state[4] ^ (state[4] >>> 7)) ^ (state[4] >>> 41))
tel

 node ascon12(input :  u64x5 :: base)
  returns output :  u64x5 :: base
vars
  consts :  u64[12] :: base,
  state :  u64x5[13] :: base
let
  (consts) = (240,225,210,195,180,165,150,135,120,105,90,75);
  (state[0]) = input;
  forall i in [0,11] {
    (state[(i + 1)]) = LinearLayer(Sbox(AddConstant(state[i],consts[i])))
  };
  (output) = state[12]
tel

*/
 