text: /* This code was generated by Usuba.
     See https://github.com/DadaIsCrazy/usuba.
     From the file "nist/photon/usuba/ua/photon_bitslice.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__B1 (/*inputs*/ DATATYPE X3,DATATYPE X2,DATATYPE X1,DATATYPE X0, /*outputs*/ DATATYPE* Y3,DATATYPE* Y2,DATATYPE* Y1,DATATYPE* Y0) {
  
    // Variables declaration
    DATATYPE T1;
    DATATYPE T2;
    DATATYPE T3;
    DATATYPE T4;
    DATATYPE T5;
    DATATYPE T6;
    DATATYPE T7;
    DATATYPE T8;
    DATATYPE T9;
    DATATYPE _tmp1_;
  
    // Instructions (body)
    T1 = XOR(X1,X2);
    T2 = AND(X2,T1);
    T3 = XOR(X3,T2);
    *Y0 = XOR(X0,T3);
    T4 = AND(T1,T3);
    T5 = XOR(T1,*Y0);
    T6 = XOR(T4,X2);
    T7 = OR(X0,T6);
    *Y1 = XOR(T5,T7);
    _tmp1_ = NOT(X0);
    T8 = XOR(T6,_tmp1_);
    *Y3 = XOR(*Y1,T8);
    T9 = OR(T8,T5);
    *Y2 = XOR(T3,T9);
  
  }
  
  void SubCells__B1 (/*inputs*/ DATATYPE x__[8][8][4], /*outputs*/ DATATYPE y__[8][8][4]) {
  
    // Variables declaration
    ;
  
    // Instructions (body)
    for (int i__ = 0; i__ <= 7; i__++) {
      for (int j__ = 0; j__ <= 7; j__++) {
        Sbox__B1(x__[i__][j__][0],x__[i__][j__][1],x__[i__][j__][2],x__[i__][j__][3],&y__[i__][j__][0],&y__[i__][j__][1],&y__[i__][j__][2],&y__[i__][j__][3]);
      }
    }
  
  }
  
  void ShiftRows__B1 (/*inputs*/ DATATYPE x__[8][8][4], /*outputs*/ DATATYPE y__[8][8][4]) {
  
    // Variables declaration
    ;
  
    // Instructions (body)
    for (int i__ = 0; i__ <= 7; i__++) {
      for (int j__ = 0; j__ <= 7; j__++) {
        y__[i__][j__][0] = x__[i__][((j__ + i__) % 8)][0];
        y__[i__][j__][1] = x__[i__][((j__ + i__) % 8)][1];
        y__[i__][j__][2] = x__[i__][((j__ + i__) % 8)][2];
        y__[i__][j__][3] = x__[i__][((j__ + i__) % 8)][3];
      }
    }
  
  }
  
  void AddConstant__B1 (/*inputs*/ DATATYPE x__[8][8][4],DATATYPE rc__[4], /*outputs*/ DATATYPE y__[8][8][4]) {
  
    // Variables declaration
    DATATYPE IC__[8][4];
    DATATYPE _tmp10_[8][4];
  
    // Instructions (body)
    IC__[0][0] = SET_ALL_ZERO();
    IC__[0][1] = SET_ALL_ZERO();
    IC__[0][2] = SET_ALL_ZERO();
    IC__[0][3] = SET_ALL_ZERO();
    IC__[1][0] = SET_ALL_ZERO();
    IC__[1][1] = SET_ALL_ZERO();
    IC__[1][2] = SET_ALL_ZERO();
    IC__[1][3] = SET_ALL_ONE();
    IC__[2][0] = SET_ALL_ZERO();
    IC__[2][1] = SET_ALL_ZERO();
    IC__[2][2] = SET_ALL_ONE();
    IC__[2][3] = SET_ALL_ONE();
    IC__[3][0] = SET_ALL_ZERO();
    IC__[3][1] = SET_ALL_ONE();
    IC__[3][2] = SET_ALL_ONE();
    IC__[3][3] = SET_ALL_ONE();
    IC__[4][0] = SET_ALL_ONE();
    IC__[4][1] = SET_ALL_ONE();
    IC__[4][2] = SET_ALL_ONE();
    IC__[4][3] = SET_ALL_ONE();
    IC__[5][0] = SET_ALL_ONE();
    IC__[5][1] = SET_ALL_ONE();
    IC__[5][2] = SET_ALL_ONE();
    IC__[5][3] = SET_ALL_ZERO();
    IC__[6][0] = SET_ALL_ONE();
    IC__[6][1] = SET_ALL_ONE();
    IC__[6][2] = SET_ALL_ZERO();
    IC__[6][3] = SET_ALL_ZERO();
    IC__[7][0] = SET_ALL_ONE();
    IC__[7][1] = SET_ALL_ZERO();
    IC__[7][2] = SET_ALL_ZERO();
    IC__[7][3] = SET_ALL_ZERO();
    for (int i__ = 0; i__ <= 7; i__++) {
      _tmp10_[i__][0] = XOR(x__[i__][0][0],rc__[0]);
      _tmp10_[i__][1] = XOR(x__[i__][0][1],rc__[1]);
      _tmp10_[i__][2] = XOR(x__[i__][0][2],rc__[2]);
      _tmp10_[i__][3] = XOR(x__[i__][0][3],rc__[3]);
      y__[i__][0][0] = XOR(_tmp10_[i__][0],IC__[i__][0]);
      y__[i__][0][1] = XOR(_tmp10_[i__][1],IC__[i__][1]);
      y__[i__][0][2] = XOR(_tmp10_[i__][2],IC__[i__][2]);
      y__[i__][0][3] = XOR(_tmp10_[i__][3],IC__[i__][3]);
      y__[i__][1][0] = x__[i__][1][0];
      y__[i__][1][1] = x__[i__][1][1];
      y__[i__][1][2] = x__[i__][1][2];
      y__[i__][1][3] = x__[i__][1][3];
      y__[i__][2][0] = x__[i__][2][0];
      y__[i__][2][1] = x__[i__][2][1];
      y__[i__][2][2] = x__[i__][2][2];
      y__[i__][2][3] = x__[i__][2][3];
      y__[i__][3][0] = x__[i__][3][0];
      y__[i__][3][1] = x__[i__][3][1];
      y__[i__][3][2] = x__[i__][3][2];
      y__[i__][3][3] = x__[i__][3][3];
      y__[i__][4][0] = x__[i__][4][0];
      y__[i__][4][1] = x__[i__][4][1];
      y__[i__][4][2] = x__[i__][4][2];
      y__[i__][4][3] = x__[i__][4][3];
      y__[i__][5][0] = x__[i__][5][0];
      y__[i__][5][1] = x__[i__][5][1];
      y__[i__][5][2] = x__[i__][5][2];
      y__[i__][5][3] = x__[i__][5][3];
      y__[i__][6][0] = x__[i__][6][0];
      y__[i__][6][1] = x__[i__][6][1];
      y__[i__][6][2] = x__[i__][6][2];
      y__[i__][6][3] = x__[i__][6][3];
      y__[i__][7][0] = x__[i__][7][0];
      y__[i__][7][1] = x__[i__][7][1];
      y__[i__][7][2] = x__[i__][7][2];
      y__[i__][7][3] = x__[i__][7][3];
    }
  
  }
  
  void xtimes__B1 (/*inputs*/ DATATYPE e__[4], /*outputs*/ DATATYPE e____[4]) {
  
    // Variables declaration
    ;
  
    // Instructions (body)
    e____[0] = e__[1];
    e____[1] = e__[2];
    e____[2] = XOR(e__[3],e__[0]);
    e____[3] = e__[0];
  
  }
  
  void step__B1 (/*inputs*/ DATATYPE x__[8][4], /*outputs*/ DATATYPE x____[8][4]) {
  
    // Variables declaration
    DATATYPE _shadow_acc__1_[4];
    DATATYPE _shadow_acc__2_[4];
    DATATYPE _shadow_acc__3_[4];
    DATATYPE _shadow_acc__4_[4];
    DATATYPE _shadow_acc__5_[4];
    DATATYPE _shadow_acc__6_[4];
    DATATYPE _shadow_acc__7_[4];
    DATATYPE _tmp16_[4];
    DATATYPE _tmp17_[4];
    DATATYPE _tmp18_[4];
    DATATYPE _tmp19_[4];
    DATATYPE _tmp20_[4];
    DATATYPE _tmp21_[4];
    DATATYPE _tmp22_[4];
  
    // Instructions (body)
    _shadow_acc__1_[0] = XOR(x__[3][0],x__[5][0]);
    _shadow_acc__1_[1] = XOR(x__[3][1],x__[5][1]);
    _shadow_acc__1_[2] = XOR(x__[3][2],x__[5][2]);
    _shadow_acc__1_[3] = XOR(x__[3][3],x__[5][3]);
    xtimes__B1(_shadow_acc__1_,_shadow_acc__2_);
    _tmp16_[0] = XOR(_shadow_acc__2_[0],x__[1][0]);
    _tmp16_[1] = XOR(_shadow_acc__2_[1],x__[1][1]);
    _tmp16_[2] = XOR(_shadow_acc__2_[2],x__[1][2]);
    _tmp16_[3] = XOR(_shadow_acc__2_[3],x__[1][3]);
    _tmp17_[0] = XOR(_tmp16_[0],x__[6][0]);
    _tmp17_[1] = XOR(_tmp16_[1],x__[6][1]);
    _tmp17_[2] = XOR(_tmp16_[2],x__[6][2]);
    _tmp17_[3] = XOR(_tmp16_[3],x__[6][3]);
    _shadow_acc__3_[0] = XOR(_tmp17_[0],x__[7][0]);
    _shadow_acc__3_[1] = XOR(_tmp17_[1],x__[7][1]);
    _shadow_acc__3_[2] = XOR(_tmp17_[2],x__[7][2]);
    _shadow_acc__3_[3] = XOR(_tmp17_[3],x__[7][3]);
    xtimes__B1(_shadow_acc__3_,_shadow_acc__4_);
    _tmp18_[0] = XOR(_shadow_acc__4_[0],x__[0][0]);
    _tmp18_[1] = XOR(_shadow_acc__4_[1],x__[0][1]);
    _tmp18_[2] = XOR(_shadow_acc__4_[2],x__[0][2]);
    _tmp18_[3] = XOR(_shadow_acc__4_[3],x__[0][3]);
    _tmp19_[0] = XOR(_tmp18_[0],x__[2][0]);
    _tmp19_[1] = XOR(_tmp18_[1],x__[2][1]);
    _tmp19_[2] = XOR(_tmp18_[2],x__[2][2]);
    _tmp19_[3] = XOR(_tmp18_[3],x__[2][3]);
    _tmp20_[0] = XOR(_tmp19_[0],x__[3][0]);
    _tmp20_[1] = XOR(_tmp19_[1],x__[3][1]);
    _tmp20_[2] = XOR(_tmp19_[2],x__[3][2]);
    _tmp20_[3] = XOR(_tmp19_[3],x__[3][3]);
    _tmp21_[0] = XOR(_tmp20_[0],x__[4][0]);
    _tmp21_[1] = XOR(_tmp20_[1],x__[4][1]);
    _tmp21_[2] = XOR(_tmp20_[2],x__[4][2]);
    _tmp21_[3] = XOR(_tmp20_[3],x__[4][3]);
    _shadow_acc__5_[0] = XOR(_tmp21_[0],x__[7][0]);
    _shadow_acc__5_[1] = XOR(_tmp21_[1],x__[7][1]);
    _shadow_acc__5_[2] = XOR(_tmp21_[2],x__[7][2]);
    _shadow_acc__5_[3] = XOR(_tmp21_[3],x__[7][3]);
    xtimes__B1(_shadow_acc__5_,_shadow_acc__6_);
    _tmp22_[0] = XOR(_shadow_acc__6_[0],x__[3][0]);
    _tmp22_[1] = XOR(_shadow_acc__6_[1],x__[3][1]);
    _tmp22_[2] = XOR(_shadow_acc__6_[2],x__[3][2]);
    _tmp22_[3] = XOR(_shadow_acc__6_[3],x__[3][3]);
    _shadow_acc__7_[0] = XOR(_tmp22_[0],x__[6][0]);
    _shadow_acc__7_[1] = XOR(_tmp22_[1],x__[6][1]);
    _shadow_acc__7_[2] = XOR(_tmp22_[2],x__[6][2]);
    _shadow_acc__7_[3] = XOR(_tmp22_[3],x__[6][3]);
    x____[0][0] = x__[1][0];
    x____[0][1] = x__[1][1];
    x____[0][2] = x__[1][2];
    x____[0][3] = x__[1][3];
    x____[1][0] = x__[2][0];
    x____[1][1] = x__[2][1];
    x____[1][2] = x__[2][2];
    x____[1][3] = x__[2][3];
    x____[2][0] = x__[3][0];
    x____[2][1] = x__[3][1];
    x____[2][2] = x__[3][2];
    x____[2][3] = x__[3][3];
    x____[3][0] = x__[4][0];
    x____[3][1] = x__[4][1];
    x____[3][2] = x__[4][2];
    x____[3][3] = x__[4][3];
    x____[4][0] = x__[5][0];
    x____[4][1] = x__[5][1];
    x____[4][2] = x__[5][2];
    x____[4][3] = x__[5][3];
    x____[5][0] = x__[6][0];
    x____[5][1] = x__[6][1];
    x____[5][2] = x__[6][2];
    x____[5][3] = x__[6][3];
    x____[6][0] = x__[7][0];
    x____[6][1] = x__[7][1];
    x____[6][2] = x__[7][2];
    x____[6][3] = x__[7][3];
    x____[7][0] = _shadow_acc__7_[0];
    x____[7][1] = _shadow_acc__7_[1];
    x____[7][2] = _shadow_acc__7_[2];
    x____[7][3] = _shadow_acc__7_[3];
  
  }
  
  void MixColumnRow__B1 (/*inputs*/ DATATYPE X__0__[4],DATATYPE X__1__[4],DATATYPE X__2__[4],DATATYPE X__3__[4],DATATYPE X__4__[4],DATATYPE X__5__[4],DATATYPE X__6__[4],DATATYPE X__7__[4], /*outputs*/ DATATYPE Y__0__[4],DATATYPE Y__1__[4],DATATYPE Y__2__[4],DATATYPE Y__3__[4],DATATYPE Y__4__[4],DATATYPE Y__5__[4],DATATYPE Y__6__[4],DATATYPE Y__7__[4]) {
  
    // Variables declaration
    DATATYPE x__[9][8][4];
  
    // Instructions (body)
    x__[0][0][0] = X__0__[0];
    x__[0][0][1] = X__0__[1];
    x__[0][0][2] = X__0__[2];
    x__[0][0][3] = X__0__[3];
    x__[0][1][0] = X__1__[0];
    x__[0][1][1] = X__1__[1];
    x__[0][1][2] = X__1__[2];
    x__[0][1][3] = X__1__[3];
    x__[0][2][0] = X__2__[0];
    x__[0][2][1] = X__2__[1];
    x__[0][2][2] = X__2__[2];
    x__[0][2][3] = X__2__[3];
    x__[0][3][0] = X__3__[0];
    x__[0][3][1] = X__3__[1];
    x__[0][3][2] = X__3__[2];
    x__[0][3][3] = X__3__[3];
    x__[0][4][0] = X__4__[0];
    x__[0][4][1] = X__4__[1];
    x__[0][4][2] = X__4__[2];
    x__[0][4][3] = X__4__[3];
    x__[0][5][0] = X__5__[0];
    x__[0][5][1] = X__5__[1];
    x__[0][5][2] = X__5__[2];
    x__[0][5][3] = X__5__[3];
    x__[0][6][0] = X__6__[0];
    x__[0][6][1] = X__6__[1];
    x__[0][6][2] = X__6__[2];
    x__[0][6][3] = X__6__[3];
    x__[0][7][0] = X__7__[0];
    x__[0][7][1] = X__7__[1];
    x__[0][7][2] = X__7__[2];
    x__[0][7][3] = X__7__[3];
    for (int i__ = 0; i__ <= 7; i__++) {
      step__B1(x__[i__],x__[(i__ + 1)]);
    }
    Y__0__[0] = x__[8][0][0];
    Y__0__[1] = x__[8][0][1];
    Y__0__[2] = x__[8][0][2];
    Y__0__[3] = x__[8][0][3];
    Y__1__[0] = x__[8][1][0];
    Y__1__[1] = x__[8][1][1];
    Y__1__[2] = x__[8][1][2];
    Y__1__[3] = x__[8][1][3];
    Y__2__[0] = x__[8][2][0];
    Y__2__[1] = x__[8][2][1];
    Y__2__[2] = x__[8][2][2];
    Y__2__[3] = x__[8][2][3];
    Y__3__[0] = x__[8][3][0];
    Y__3__[1] = x__[8][3][1];
    Y__3__[2] = x__[8][3][2];
    Y__3__[3] = x__[8][3][3];
    Y__4__[0] = x__[8][4][0];
    Y__4__[1] = x__[8][4][1];
    Y__4__[2] = x__[8][4][2];
    Y__4__[3] = x__[8][4][3];
    Y__5__[0] = x__[8][5][0];
    Y__5__[1] = x__[8][5][1];
    Y__5__[2] = x__[8][5][2];
    Y__5__[3] = x__[8][5][3];
    Y__6__[0] = x__[8][6][0];
    Y__6__[1] = x__[8][6][1];
    Y__6__[2] = x__[8][6][2];
    Y__6__[3] = x__[8][6][3];
    Y__7__[0] = x__[8][7][0];
    Y__7__[1] = x__[8][7][1];
    Y__7__[2] = x__[8][7][2];
    Y__7__[3] = x__[8][7][3];
  
  }
  
  void MixColumnSerial__B1 (/*inputs*/ DATATYPE X__[8][8][4], /*outputs*/ DATATYPE Y__[8][8][4]) {
  
    // Variables declaration
    ;
  
    // Instructions (body)
    for (int i__ = 0; i__ <= 7; i__++) {
      MixColumnRow__B1(X__[0][i__],X__[1][i__],X__[2][i__],X__[3][i__],X__[4][i__],X__[5][i__],X__[6][i__],X__[7][i__],Y__[0][i__],Y__[1][i__],Y__[2][i__],Y__[3][i__],Y__[4][i__],Y__[5][i__],Y__[6][i__],Y__[7][i__]);
    }
  
  }
  
  /* main function */
  void Photon__ (/*inputs*/ DATATYPE plain__[8][8][4], /*outputs*/ DATATYPE cipher__[8][8][4]) {
  
    // Variables declaration
    DATATYPE RC__[12][4];
    DATATYPE _tmp36_[12][8][8][4];
    DATATYPE _tmp37_[12][8][8][4];
    DATATYPE _tmp38_[12][8][8][4];
    DATATYPE state__[13][8][8][4];
  
    // Instructions (body)
    RC__[0][0] = SET_ALL_ZERO();
    RC__[0][1] = SET_ALL_ZERO();
    RC__[0][2] = SET_ALL_ZERO();
    RC__[0][3] = SET_ALL_ONE();
    RC__[1][0] = SET_ALL_ZERO();
    RC__[1][1] = SET_ALL_ZERO();
    RC__[1][2] = SET_ALL_ONE();
    RC__[1][3] = SET_ALL_ONE();
    RC__[2][0] = SET_ALL_ZERO();
    RC__[2][1] = SET_ALL_ONE();
    RC__[2][2] = SET_ALL_ONE();
    RC__[2][3] = SET_ALL_ONE();
    RC__[3][0] = SET_ALL_ONE();
    RC__[3][1] = SET_ALL_ONE();
    RC__[3][2] = SET_ALL_ONE();
    RC__[3][3] = SET_ALL_ZERO();
    RC__[4][0] = SET_ALL_ONE();
    RC__[4][1] = SET_ALL_ONE();
    RC__[4][2] = SET_ALL_ZERO();
    RC__[4][3] = SET_ALL_ONE();
    RC__[5][0] = SET_ALL_ONE();
    RC__[5][1] = SET_ALL_ZERO();
    RC__[5][2] = SET_ALL_ONE();
    RC__[5][3] = SET_ALL_ONE();
    RC__[6][0] = SET_ALL_ZERO();
    RC__[6][1] = SET_ALL_ONE();
    RC__[6][2] = SET_ALL_ONE();
    RC__[6][3] = SET_ALL_ZERO();
    RC__[7][0] = SET_ALL_ONE();
    RC__[7][1] = SET_ALL_ONE();
    RC__[7][2] = SET_ALL_ZERO();
    RC__[7][3] = SET_ALL_ZERO();
    RC__[8][0] = SET_ALL_ONE();
    RC__[8][1] = SET_ALL_ZERO();
    RC__[8][2] = SET_ALL_ZERO();
    RC__[8][3] = SET_ALL_ONE();
    RC__[9][0] = SET_ALL_ZERO();
    RC__[9][1] = SET_ALL_ZERO();
    RC__[9][2] = SET_ALL_ONE();
    RC__[9][3] = SET_ALL_ZERO();
    RC__[10][0] = SET_ALL_ZERO();
    RC__[10][1] = SET_ALL_ONE();
    RC__[10][2] = SET_ALL_ZERO();
    RC__[10][3] = SET_ALL_ONE();
    RC__[11][0] = SET_ALL_ONE();
    RC__[11][1] = SET_ALL_ZERO();
    RC__[11][2] = SET_ALL_ONE();
    RC__[11][3] = SET_ALL_ZERO();
    state__[0][0][0][0] = plain__[0][0][0];
    state__[0][0][0][1] = plain__[0][0][1];
    state__[0][0][0][2] = plain__[0][0][2];
    state__[0][0][0][3] = plain__[0][0][3];
    state__[0][0][1][0] = plain__[0][1][0];
    state__[0][0][1][1] = plain__[0][1][1];
    state__[0][0][1][2] = plain__[0][1][2];
    state__[0][0][1][3] = plain__[0][1][3];
    state__[0][0][2][0] = plain__[0][2][0];
    state__[0][0][2][1] = plain__[0][2][1];
    state__[0][0][2][2] = plain__[0][2][2];
    state__[0][0][2][3] = plain__[0][2][3];
    state__[0][0][3][0] = plain__[0][3][0];
    state__[0][0][3][1] = plain__[0][3][1];
    state__[0][0][3][2] = plain__[0][3][2];
    state__[0][0][3][3] = plain__[0][3][3];
    state__[0][0][4][0] = plain__[0][4][0];
    state__[0][0][4][1] = plain__[0][4][1];
    state__[0][0][4][2] = plain__[0][4][2];
    state__[0][0][4][3] = plain__[0][4][3];
    state__[0][0][5][0] = plain__[0][5][0];
    state__[0][0][5][1] = plain__[0][5][1];
    state__[0][0][5][2] = plain__[0][5][2];
    state__[0][0][5][3] = plain__[0][5][3];
    state__[0][0][6][0] = plain__[0][6][0];
    state__[0][0][6][1] = plain__[0][6][1];
    state__[0][0][6][2] = plain__[0][6][2];
    state__[0][0][6][3] = plain__[0][6][3];
    state__[0][0][7][0] = plain__[0][7][0];
    state__[0][0][7][1] = plain__[0][7][1];
    state__[0][0][7][2] = plain__[0][7][2];
    state__[0][0][7][3] = plain__[0][7][3];
    state__[0][1][0][0] = plain__[1][0][0];
    state__[0][1][0][1] = plain__[1][0][1];
    state__[0][1][0][2] = plain__[1][0][2];
    state__[0][1][0][3] = plain__[1][0][3];
    state__[0][1][1][0] = plain__[1][1][0];
    state__[0][1][1][1] = plain__[1][1][1];
    state__[0][1][1][2] = plain__[1][1][2];
    state__[0][1][1][3] = plain__[1][1][3];
    state__[0][1][2][0] = plain__[1][2][0];
    state__[0][1][2][1] = plain__[1][2][1];
    state__[0][1][2][2] = plain__[1][2][2];
    state__[0][1][2][3] = plain__[1][2][3];
    state__[0][1][3][0] = plain__[1][3][0];
    state__[0][1][3][1] = plain__[1][3][1];
    state__[0][1][3][2] = plain__[1][3][2];
    state__[0][1][3][3] = plain__[1][3][3];
    state__[0][1][4][0] = plain__[1][4][0];
    state__[0][1][4][1] = plain__[1][4][1];
    state__[0][1][4][2] = plain__[1][4][2];
    state__[0][1][4][3] = plain__[1][4][3];
    state__[0][1][5][0] = plain__[1][5][0];
    state__[0][1][5][1] = plain__[1][5][1];
    state__[0][1][5][2] = plain__[1][5][2];
    state__[0][1][5][3] = plain__[1][5][3];
    state__[0][1][6][0] = plain__[1][6][0];
    state__[0][1][6][1] = plain__[1][6][1];
    state__[0][1][6][2] = plain__[1][6][2];
    state__[0][1][6][3] = plain__[1][6][3];
    state__[0][1][7][0] = plain__[1][7][0];
    state__[0][1][7][1] = plain__[1][7][1];
    state__[0][1][7][2] = plain__[1][7][2];
    state__[0][1][7][3] = plain__[1][7][3];
    state__[0][2][0][0] = plain__[2][0][0];
    state__[0][2][0][1] = plain__[2][0][1];
    state__[0][2][0][2] = plain__[2][0][2];
    state__[0][2][0][3] = plain__[2][0][3];
    state__[0][2][1][0] = plain__[2][1][0];
    state__[0][2][1][1] = plain__[2][1][1];
    state__[0][2][1][2] = plain__[2][1][2];
    state__[0][2][1][3] = plain__[2][1][3];
    state__[0][2][2][0] = plain__[2][2][0];
    state__[0][2][2][1] = plain__[2][2][1];
    state__[0][2][2][2] = plain__[2][2][2];
    state__[0][2][2][3] = plain__[2][2][3];
    state__[0][2][3][0] = plain__[2][3][0];
    state__[0][2][3][1] = plain__[2][3][1];
    state__[0][2][3][2] = plain__[2][3][2];
    state__[0][2][3][3] = plain__[2][3][3];
    state__[0][2][4][0] = plain__[2][4][0];
    state__[0][2][4][1] = plain__[2][4][1];
    state__[0][2][4][2] = plain__[2][4][2];
    state__[0][2][4][3] = plain__[2][4][3];
    state__[0][2][5][0] = plain__[2][5][0];
    state__[0][2][5][1] = plain__[2][5][1];
    state__[0][2][5][2] = plain__[2][5][2];
    state__[0][2][5][3] = plain__[2][5][3];
    state__[0][2][6][0] = plain__[2][6][0];
    state__[0][2][6][1] = plain__[2][6][1];
    state__[0][2][6][2] = plain__[2][6][2];
    state__[0][2][6][3] = plain__[2][6][3];
    state__[0][2][7][0] = plain__[2][7][0];
    state__[0][2][7][1] = plain__[2][7][1];
    state__[0][2][7][2] = plain__[2][7][2];
    state__[0][2][7][3] = plain__[2][7][3];
    state__[0][3][0][0] = plain__[3][0][0];
    state__[0][3][0][1] = plain__[3][0][1];
    state__[0][3][0][2] = plain__[3][0][2];
    state__[0][3][0][3] = plain__[3][0][3];
    state__[0][3][1][0] = plain__[3][1][0];
    state__[0][3][1][1] = plain__[3][1][1];
    state__[0][3][1][2] = plain__[3][1][2];
    state__[0][3][1][3] = plain__[3][1][3];
    state__[0][3][2][0] = plain__[3][2][0];
    state__[0][3][2][1] = plain__[3][2][1];
    state__[0][3][2][2] = plain__[3][2][2];
    state__[0][3][2][3] = plain__[3][2][3];
    state__[0][3][3][0] = plain__[3][3][0];
    state__[0][3][3][1] = plain__[3][3][1];
    state__[0][3][3][2] = plain__[3][3][2];
    state__[0][3][3][3] = plain__[3][3][3];
    state__[0][3][4][0] = plain__[3][4][0];
    state__[0][3][4][1] = plain__[3][4][1];
    state__[0][3][4][2] = plain__[3][4][2];
    state__[0][3][4][3] = plain__[3][4][3];
    state__[0][3][5][0] = plain__[3][5][0];
    state__[0][3][5][1] = plain__[3][5][1];
    state__[0][3][5][2] = plain__[3][5][2];
    state__[0][3][5][3] = plain__[3][5][3];
    state__[0][3][6][0] = plain__[3][6][0];
    state__[0][3][6][1] = plain__[3][6][1];
    state__[0][3][6][2] = plain__[3][6][2];
    state__[0][3][6][3] = plain__[3][6][3];
    state__[0][3][7][0] = plain__[3][7][0];
    state__[0][3][7][1] = plain__[3][7][1];
    state__[0][3][7][2] = plain__[3][7][2];
    state__[0][3][7][3] = plain__[3][7][3];
    state__[0][4][0][0] = plain__[4][0][0];
    state__[0][4][0][1] = plain__[4][0][1];
    state__[0][4][0][2] = plain__[4][0][2];
    state__[0][4][0][3] = plain__[4][0][3];
    state__[0][4][1][0] = plain__[4][1][0];
    state__[0][4][1][1] = plain__[4][1][1];
    state__[0][4][1][2] = plain__[4][1][2];
    state__[0][4][1][3] = plain__[4][1][3];
    state__[0][4][2][0] = plain__[4][2][0];
    state__[0][4][2][1] = plain__[4][2][1];
    state__[0][4][2][2] = plain__[4][2][2];
    state__[0][4][2][3] = plain__[4][2][3];
    state__[0][4][3][0] = plain__[4][3][0];
    state__[0][4][3][1] = plain__[4][3][1];
    state__[0][4][3][2] = plain__[4][3][2];
    state__[0][4][3][3] = plain__[4][3][3];
    state__[0][4][4][0] = plain__[4][4][0];
    state__[0][4][4][1] = plain__[4][4][1];
    state__[0][4][4][2] = plain__[4][4][2];
    state__[0][4][4][3] = plain__[4][4][3];
    state__[0][4][5][0] = plain__[4][5][0];
    state__[0][4][5][1] = plain__[4][5][1];
    state__[0][4][5][2] = plain__[4][5][2];
    state__[0][4][5][3] = plain__[4][5][3];
    state__[0][4][6][0] = plain__[4][6][0];
    state__[0][4][6][1] = plain__[4][6][1];
    state__[0][4][6][2] = plain__[4][6][2];
    state__[0][4][6][3] = plain__[4][6][3];
    state__[0][4][7][0] = plain__[4][7][0];
    state__[0][4][7][1] = plain__[4][7][1];
    state__[0][4][7][2] = plain__[4][7][2];
    state__[0][4][7][3] = plain__[4][7][3];
    state__[0][5][0][0] = plain__[5][0][0];
    state__[0][5][0][1] = plain__[5][0][1];
    state__[0][5][0][2] = plain__[5][0][2];
    state__[0][5][0][3] = plain__[5][0][3];
    state__[0][5][1][0] = plain__[5][1][0];
    state__[0][5][1][1] = plain__[5][1][1];
    state__[0][5][1][2] = plain__[5][1][2];
    state__[0][5][1][3] = plain__[5][1][3];
    state__[0][5][2][0] = plain__[5][2][0];
    state__[0][5][2][1] = plain__[5][2][1];
    state__[0][5][2][2] = plain__[5][2][2];
    state__[0][5][2][3] = plain__[5][2][3];
    state__[0][5][3][0] = plain__[5][3][0];
    state__[0][5][3][1] = plain__[5][3][1];
    state__[0][5][3][2] = plain__[5][3][2];
    state__[0][5][3][3] = plain__[5][3][3];
    state__[0][5][4][0] = plain__[5][4][0];
    state__[0][5][4][1] = plain__[5][4][1];
    state__[0][5][4][2] = plain__[5][4][2];
    state__[0][5][4][3] = plain__[5][4][3];
    state__[0][5][5][0] = plain__[5][5][0];
    state__[0][5][5][1] = plain__[5][5][1];
    state__[0][5][5][2] = plain__[5][5][2];
    state__[0][5][5][3] = plain__[5][5][3];
    state__[0][5][6][0] = plain__[5][6][0];
    state__[0][5][6][1] = plain__[5][6][1];
    state__[0][5][6][2] = plain__[5][6][2];
    state__[0][5][6][3] = plain__[5][6][3];
    state__[0][5][7][0] = plain__[5][7][0];
    state__[0][5][7][1] = plain__[5][7][1];
    state__[0][5][7][2] = plain__[5][7][2];
    state__[0][5][7][3] = plain__[5][7][3];
    state__[0][6][0][0] = plain__[6][0][0];
    state__[0][6][0][1] = plain__[6][0][1];
    state__[0][6][0][2] = plain__[6][0][2];
    state__[0][6][0][3] = plain__[6][0][3];
    state__[0][6][1][0] = plain__[6][1][0];
    state__[0][6][1][1] = plain__[6][1][1];
    state__[0][6][1][2] = plain__[6][1][2];
    state__[0][6][1][3] = plain__[6][1][3];
    state__[0][6][2][0] = plain__[6][2][0];
    state__[0][6][2][1] = plain__[6][2][1];
    state__[0][6][2][2] = plain__[6][2][2];
    state__[0][6][2][3] = plain__[6][2][3];
    state__[0][6][3][0] = plain__[6][3][0];
    state__[0][6][3][1] = plain__[6][3][1];
    state__[0][6][3][2] = plain__[6][3][2];
    state__[0][6][3][3] = plain__[6][3][3];
    state__[0][6][4][0] = plain__[6][4][0];
    state__[0][6][4][1] = plain__[6][4][1];
    state__[0][6][4][2] = plain__[6][4][2];
    state__[0][6][4][3] = plain__[6][4][3];
    state__[0][6][5][0] = plain__[6][5][0];
    state__[0][6][5][1] = plain__[6][5][1];
    state__[0][6][5][2] = plain__[6][5][2];
    state__[0][6][5][3] = plain__[6][5][3];
    state__[0][6][6][0] = plain__[6][6][0];
    state__[0][6][6][1] = plain__[6][6][1];
    state__[0][6][6][2] = plain__[6][6][2];
    state__[0][6][6][3] = plain__[6][6][3];
    state__[0][6][7][0] = plain__[6][7][0];
    state__[0][6][7][1] = plain__[6][7][1];
    state__[0][6][7][2] = plain__[6][7][2];
    state__[0][6][7][3] = plain__[6][7][3];
    state__[0][7][0][0] = plain__[7][0][0];
    state__[0][7][0][1] = plain__[7][0][1];
    state__[0][7][0][2] = plain__[7][0][2];
    state__[0][7][0][3] = plain__[7][0][3];
    state__[0][7][1][0] = plain__[7][1][0];
    state__[0][7][1][1] = plain__[7][1][1];
    state__[0][7][1][2] = plain__[7][1][2];
    state__[0][7][1][3] = plain__[7][1][3];
    state__[0][7][2][0] = plain__[7][2][0];
    state__[0][7][2][1] = plain__[7][2][1];
    state__[0][7][2][2] = plain__[7][2][2];
    state__[0][7][2][3] = plain__[7][2][3];
    state__[0][7][3][0] = plain__[7][3][0];
    state__[0][7][3][1] = plain__[7][3][1];
    state__[0][7][3][2] = plain__[7][3][2];
    state__[0][7][3][3] = plain__[7][3][3];
    state__[0][7][4][0] = plain__[7][4][0];
    state__[0][7][4][1] = plain__[7][4][1];
    state__[0][7][4][2] = plain__[7][4][2];
    state__[0][7][4][3] = plain__[7][4][3];
    state__[0][7][5][0] = plain__[7][5][0];
    state__[0][7][5][1] = plain__[7][5][1];
    state__[0][7][5][2] = plain__[7][5][2];
    state__[0][7][5][3] = plain__[7][5][3];
    state__[0][7][6][0] = plain__[7][6][0];
    state__[0][7][6][1] = plain__[7][6][1];
    state__[0][7][6][2] = plain__[7][6][2];
    state__[0][7][6][3] = plain__[7][6][3];
    state__[0][7][7][0] = plain__[7][7][0];
    state__[0][7][7][1] = plain__[7][7][1];
    state__[0][7][7][2] = plain__[7][7][2];
    state__[0][7][7][3] = plain__[7][7][3];
    for (int i__ = 0; i__ <= 11; i__++) {
      AddConstant__B1(state__[i__],RC__[i__],_tmp36_[i__]);
      SubCells__B1(_tmp36_[i__],_tmp37_[i__]);
      ShiftRows__B1(_tmp37_[i__],_tmp38_[i__]);
      MixColumnSerial__B1(_tmp38_[i__],state__[(i__ + 1)]);
    }
    cipher__[0][0][0] = state__[12][0][0][0];
    cipher__[0][0][1] = state__[12][0][0][1];
    cipher__[0][0][2] = state__[12][0][0][2];
    cipher__[0][0][3] = state__[12][0][0][3];
    cipher__[0][1][0] = state__[12][0][1][0];
    cipher__[0][1][1] = state__[12][0][1][1];
    cipher__[0][1][2] = state__[12][0][1][2];
    cipher__[0][1][3] = state__[12][0][1][3];
    cipher__[0][2][0] = state__[12][0][2][0];
    cipher__[0][2][1] = state__[12][0][2][1];
    cipher__[0][2][2] = state__[12][0][2][2];
    cipher__[0][2][3] = state__[12][0][2][3];
    cipher__[0][3][0] = state__[12][0][3][0];
    cipher__[0][3][1] = state__[12][0][3][1];
    cipher__[0][3][2] = state__[12][0][3][2];
    cipher__[0][3][3] = state__[12][0][3][3];
    cipher__[0][4][0] = state__[12][0][4][0];
    cipher__[0][4][1] = state__[12][0][4][1];
    cipher__[0][4][2] = state__[12][0][4][2];
    cipher__[0][4][3] = state__[12][0][4][3];
    cipher__[0][5][0] = state__[12][0][5][0];
    cipher__[0][5][1] = state__[12][0][5][1];
    cipher__[0][5][2] = state__[12][0][5][2];
    cipher__[0][5][3] = state__[12][0][5][3];
    cipher__[0][6][0] = state__[12][0][6][0];
    cipher__[0][6][1] = state__[12][0][6][1];
    cipher__[0][6][2] = state__[12][0][6][2];
    cipher__[0][6][3] = state__[12][0][6][3];
    cipher__[0][7][0] = state__[12][0][7][0];
    cipher__[0][7][1] = state__[12][0][7][1];
    cipher__[0][7][2] = state__[12][0][7][2];
    cipher__[0][7][3] = state__[12][0][7][3];
    cipher__[1][0][0] = state__[12][1][0][0];
    cipher__[1][0][1] = state__[12][1][0][1];
    cipher__[1][0][2] = state__[12][1][0][2];
    cipher__[1][0][3] = state__[12][1][0][3];
    cipher__[1][1][0] = state__[12][1][1][0];
    cipher__[1][1][1] = state__[12][1][1][1];
    cipher__[1][1][2] = state__[12][1][1][2];
    cipher__[1][1][3] = state__[12][1][1][3];
    cipher__[1][2][0] = state__[12][1][2][0];
    cipher__[1][2][1] = state__[12][1][2][1];
    cipher__[1][2][2] = state__[12][1][2][2];
    cipher__[1][2][3] = state__[12][1][2][3];
    cipher__[1][3][0] = state__[12][1][3][0];
    cipher__[1][3][1] = state__[12][1][3][1];
    cipher__[1][3][2] = state__[12][1][3][2];
    cipher__[1][3][3] = state__[12][1][3][3];
    cipher__[1][4][0] = state__[12][1][4][0];
    cipher__[1][4][1] = state__[12][1][4][1];
    cipher__[1][4][2] = state__[12][1][4][2];
    cipher__[1][4][3] = state__[12][1][4][3];
    cipher__[1][5][0] = state__[12][1][5][0];
    cipher__[1][5][1] = state__[12][1][5][1];
    cipher__[1][5][2] = state__[12][1][5][2];
    cipher__[1][5][3] = state__[12][1][5][3];
    cipher__[1][6][0] = state__[12][1][6][0];
    cipher__[1][6][1] = state__[12][1][6][1];
    cipher__[1][6][2] = state__[12][1][6][2];
    cipher__[1][6][3] = state__[12][1][6][3];
    cipher__[1][7][0] = state__[12][1][7][0];
    cipher__[1][7][1] = state__[12][1][7][1];
    cipher__[1][7][2] = state__[12][1][7][2];
    cipher__[1][7][3] = state__[12][1][7][3];
    cipher__[2][0][0] = state__[12][2][0][0];
    cipher__[2][0][1] = state__[12][2][0][1];
    cipher__[2][0][2] = state__[12][2][0][2];
    cipher__[2][0][3] = state__[12][2][0][3];
    cipher__[2][1][0] = state__[12][2][1][0];
    cipher__[2][1][1] = state__[12][2][1][1];
    cipher__[2][1][2] = state__[12][2][1][2];
    cipher__[2][1][3] = state__[12][2][1][3];
    cipher__[2][2][0] = state__[12][2][2][0];
    cipher__[2][2][1] = state__[12][2][2][1];
    cipher__[2][2][2] = state__[12][2][2][2];
    cipher__[2][2][3] = state__[12][2][2][3];
    cipher__[2][3][0] = state__[12][2][3][0];
    cipher__[2][3][1] = state__[12][2][3][1];
    cipher__[2][3][2] = state__[12][2][3][2];
    cipher__[2][3][3] = state__[12][2][3][3];
    cipher__[2][4][0] = state__[12][2][4][0];
    cipher__[2][4][1] = state__[12][2][4][1];
    cipher__[2][4][2] = state__[12][2][4][2];
    cipher__[2][4][3] = state__[12][2][4][3];
    cipher__[2][5][0] = state__[12][2][5][0];
    cipher__[2][5][1] = state__[12][2][5][1];
    cipher__[2][5][2] = state__[12][2][5][2];
    cipher__[2][5][3] = state__[12][2][5][3];
    cipher__[2][6][0] = state__[12][2][6][0];
    cipher__[2][6][1] = state__[12][2][6][1];
    cipher__[2][6][2] = state__[12][2][6][2];
    cipher__[2][6][3] = state__[12][2][6][3];
    cipher__[2][7][0] = state__[12][2][7][0];
    cipher__[2][7][1] = state__[12][2][7][1];
    cipher__[2][7][2] = state__[12][2][7][2];
    cipher__[2][7][3] = state__[12][2][7][3];
    cipher__[3][0][0] = state__[12][3][0][0];
    cipher__[3][0][1] = state__[12][3][0][1];
    cipher__[3][0][2] = state__[12][3][0][2];
    cipher__[3][0][3] = state__[12][3][0][3];
    cipher__[3][1][0] = state__[12][3][1][0];
    cipher__[3][1][1] = state__[12][3][1][1];
    cipher__[3][1][2] = state__[12][3][1][2];
    cipher__[3][1][3] = state__[12][3][1][3];
    cipher__[3][2][0] = state__[12][3][2][0];
    cipher__[3][2][1] = state__[12][3][2][1];
    cipher__[3][2][2] = state__[12][3][2][2];
    cipher__[3][2][3] = state__[12][3][2][3];
    cipher__[3][3][0] = state__[12][3][3][0];
    cipher__[3][3][1] = state__[12][3][3][1];
    cipher__[3][3][2] = state__[12][3][3][2];
    cipher__[3][3][3] = state__[12][3][3][3];
    cipher__[3][4][0] = state__[12][3][4][0];
    cipher__[3][4][1] = state__[12][3][4][1];
    cipher__[3][4][2] = state__[12][3][4][2];
    cipher__[3][4][3] = state__[12][3][4][3];
    cipher__[3][5][0] = state__[12][3][5][0];
    cipher__[3][5][1] = state__[12][3][5][1];
    cipher__[3][5][2] = state__[12][3][5][2];
    cipher__[3][5][3] = state__[12][3][5][3];
    cipher__[3][6][0] = state__[12][3][6][0];
    cipher__[3][6][1] = state__[12][3][6][1];
    cipher__[3][6][2] = state__[12][3][6][2];
    cipher__[3][6][3] = state__[12][3][6][3];
    cipher__[3][7][0] = state__[12][3][7][0];
    cipher__[3][7][1] = state__[12][3][7][1];
    cipher__[3][7][2] = state__[12][3][7][2];
    cipher__[3][7][3] = state__[12][3][7][3];
    cipher__[4][0][0] = state__[12][4][0][0];
    cipher__[4][0][1] = state__[12][4][0][1];
    cipher__[4][0][2] = state__[12][4][0][2];
    cipher__[4][0][3] = state__[12][4][0][3];
    cipher__[4][1][0] = state__[12][4][1][0];
    cipher__[4][1][1] = state__[12][4][1][1];
    cipher__[4][1][2] = state__[12][4][1][2];
    cipher__[4][1][3] = state__[12][4][1][3];
    cipher__[4][2][0] = state__[12][4][2][0];
    cipher__[4][2][1] = state__[12][4][2][1];
    cipher__[4][2][2] = state__[12][4][2][2];
    cipher__[4][2][3] = state__[12][4][2][3];
    cipher__[4][3][0] = state__[12][4][3][0];
    cipher__[4][3][1] = state__[12][4][3][1];
    cipher__[4][3][2] = state__[12][4][3][2];
    cipher__[4][3][3] = state__[12][4][3][3];
    cipher__[4][4][0] = state__[12][4][4][0];
    cipher__[4][4][1] = state__[12][4][4][1];
    cipher__[4][4][2] = state__[12][4][4][2];
    cipher__[4][4][3] = state__[12][4][4][3];
    cipher__[4][5][0] = state__[12][4][5][0];
    cipher__[4][5][1] = state__[12][4][5][1];
    cipher__[4][5][2] = state__[12][4][5][2];
    cipher__[4][5][3] = state__[12][4][5][3];
    cipher__[4][6][0] = state__[12][4][6][0];
    cipher__[4][6][1] = state__[12][4][6][1];
    cipher__[4][6][2] = state__[12][4][6][2];
    cipher__[4][6][3] = state__[12][4][6][3];
    cipher__[4][7][0] = state__[12][4][7][0];
    cipher__[4][7][1] = state__[12][4][7][1];
    cipher__[4][7][2] = state__[12][4][7][2];
    cipher__[4][7][3] = state__[12][4][7][3];
    cipher__[5][0][0] = state__[12][5][0][0];
    cipher__[5][0][1] = state__[12][5][0][1];
    cipher__[5][0][2] = state__[12][5][0][2];
    cipher__[5][0][3] = state__[12][5][0][3];
    cipher__[5][1][0] = state__[12][5][1][0];
    cipher__[5][1][1] = state__[12][5][1][1];
    cipher__[5][1][2] = state__[12][5][1][2];
    cipher__[5][1][3] = state__[12][5][1][3];
    cipher__[5][2][0] = state__[12][5][2][0];
    cipher__[5][2][1] = state__[12][5][2][1];
    cipher__[5][2][2] = state__[12][5][2][2];
    cipher__[5][2][3] = state__[12][5][2][3];
    cipher__[5][3][0] = state__[12][5][3][0];
    cipher__[5][3][1] = state__[12][5][3][1];
    cipher__[5][3][2] = state__[12][5][3][2];
    cipher__[5][3][3] = state__[12][5][3][3];
    cipher__[5][4][0] = state__[12][5][4][0];
    cipher__[5][4][1] = state__[12][5][4][1];
    cipher__[5][4][2] = state__[12][5][4][2];
    cipher__[5][4][3] = state__[12][5][4][3];
    cipher__[5][5][0] = state__[12][5][5][0];
    cipher__[5][5][1] = state__[12][5][5][1];
    cipher__[5][5][2] = state__[12][5][5][2];
    cipher__[5][5][3] = state__[12][5][5][3];
    cipher__[5][6][0] = state__[12][5][6][0];
    cipher__[5][6][1] = state__[12][5][6][1];
    cipher__[5][6][2] = state__[12][5][6][2];
    cipher__[5][6][3] = state__[12][5][6][3];
    cipher__[5][7][0] = state__[12][5][7][0];
    cipher__[5][7][1] = state__[12][5][7][1];
    cipher__[5][7][2] = state__[12][5][7][2];
    cipher__[5][7][3] = state__[12][5][7][3];
    cipher__[6][0][0] = state__[12][6][0][0];
    cipher__[6][0][1] = state__[12][6][0][1];
    cipher__[6][0][2] = state__[12][6][0][2];
    cipher__[6][0][3] = state__[12][6][0][3];
    cipher__[6][1][0] = state__[12][6][1][0];
    cipher__[6][1][1] = state__[12][6][1][1];
    cipher__[6][1][2] = state__[12][6][1][2];
    cipher__[6][1][3] = state__[12][6][1][3];
    cipher__[6][2][0] = state__[12][6][2][0];
    cipher__[6][2][1] = state__[12][6][2][1];
    cipher__[6][2][2] = state__[12][6][2][2];
    cipher__[6][2][3] = state__[12][6][2][3];
    cipher__[6][3][0] = state__[12][6][3][0];
    cipher__[6][3][1] = state__[12][6][3][1];
    cipher__[6][3][2] = state__[12][6][3][2];
    cipher__[6][3][3] = state__[12][6][3][3];
    cipher__[6][4][0] = state__[12][6][4][0];
    cipher__[6][4][1] = state__[12][6][4][1];
    cipher__[6][4][2] = state__[12][6][4][2];
    cipher__[6][4][3] = state__[12][6][4][3];
    cipher__[6][5][0] = state__[12][6][5][0];
    cipher__[6][5][1] = state__[12][6][5][1];
    cipher__[6][5][2] = state__[12][6][5][2];
    cipher__[6][5][3] = state__[12][6][5][3];
    cipher__[6][6][0] = state__[12][6][6][0];
    cipher__[6][6][1] = state__[12][6][6][1];
    cipher__[6][6][2] = state__[12][6][6][2];
    cipher__[6][6][3] = state__[12][6][6][3];
    cipher__[6][7][0] = state__[12][6][7][0];
    cipher__[6][7][1] = state__[12][6][7][1];
    cipher__[6][7][2] = state__[12][6][7][2];
    cipher__[6][7][3] = state__[12][6][7][3];
    cipher__[7][0][0] = state__[12][7][0][0];
    cipher__[7][0][1] = state__[12][7][0][1];
    cipher__[7][0][2] = state__[12][7][0][2];
    cipher__[7][0][3] = state__[12][7][0][3];
    cipher__[7][1][0] = state__[12][7][1][0];
    cipher__[7][1][1] = state__[12][7][1][1];
    cipher__[7][1][2] = state__[12][7][1][2];
    cipher__[7][1][3] = state__[12][7][1][3];
    cipher__[7][2][0] = state__[12][7][2][0];
    cipher__[7][2][1] = state__[12][7][2][1];
    cipher__[7][2][2] = state__[12][7][2][2];
    cipher__[7][2][3] = state__[12][7][2][3];
    cipher__[7][3][0] = state__[12][7][3][0];
    cipher__[7][3][1] = state__[12][7][3][1];
    cipher__[7][3][2] = state__[12][7][3][2];
    cipher__[7][3][3] = state__[12][7][3][3];
    cipher__[7][4][0] = state__[12][7][4][0];
    cipher__[7][4][1] = state__[12][7][4][1];
    cipher__[7][4][2] = state__[12][7][4][2];
    cipher__[7][4][3] = state__[12][7][4][3];
    cipher__[7][5][0] = state__[12][7][5][0];
    cipher__[7][5][1] = state__[12][7][5][1];
    cipher__[7][5][2] = state__[12][7][5][2];
    cipher__[7][5][3] = state__[12][7][5][3];
    cipher__[7][6][0] = state__[12][7][6][0];
    cipher__[7][6][1] = state__[12][7][6][1];
    cipher__[7][6][2] = state__[12][7][6][2];
    cipher__[7][6][3] = state__[12][7][6][3];
    cipher__[7][7][0] = state__[12][7][7][0];
    cipher__[7][7][1] = state__[12][7][7][1];
    cipher__[7][7][2] = state__[12][7][7][2];
    cipher__[7][7][3] = state__[12][7][7][3];
  
  }
  
  /* Additional functions */
  uint32_t bench_speed() {
    /* inputs */
    DATATYPE plain__[8][8][4] = { 0 };
    /* outputs */
    DATATYPE cipher__[8][8][4] = { 0 };
    /* fun call */
    Photon__(plain__,cipher__);
  
    /* Returning the number of encrypted bytes */
    return 1024;
  }
  
  /* **************************************************************** */
  /*                            Usuba source                          */
  /*                                                                  */
  /*
  
   _no_inline table Sbox(x :  b4 :: base)
    returns y :  b4 :: base
  {
    12, 5, 6, 11, 9, 0, 10, 13, 3, 14, 15, 8, 4, 7, 1, 2
  }
  
  
   node SubCells(x :  b4[8][8] :: base)
    returns y :  b4[8][8] :: base
  vars
  
  let
    forall i in [0,7] {
      forall j in [0,7] {
        (y[i][j]) = Sbox(x[i][j])
      }
    }
  tel
  
   node ShiftRows(x :  b4[8][8] :: base)
    returns y :  b4[8][8] :: base
  vars
  
  let
    forall i in [0,7] {
      forall j in [0,7] {
        (y[i][j]) = x[i][((j + i) % 8)]
      }
    }
  tel
  
   node AddConstant(x :  b4[8][8] :: base,rc :  b4 :: base)
    returns y :  b4[8][8] :: base
  vars
    IC :  b4[8] :: base
  let
    (IC) = (0,1,3,7,15,14,12,8);
    forall i in [0,7] {
      (y[i][0]) = ((x[i][0] ^ rc) ^ IC[i]);
      (y[i][1 .. 7]) = x[i][1 .. 7]
    }
  tel
  
   node xtimes(e :  b4 :: base)
    returns e' :  b4 :: base
  vars
    t :  b4 :: base,
    c :  b4 :: base
  let
    (t) = (e << 1);
    (c) = (e >> 3);
    (e') = (((t & 15) ^ c) ^ (c << 1))
  tel
  
   node step(x :  b4[8] :: base)
    returns x' :  b4[8] :: base
  vars
    acc :  b4 :: base
  let
    (acc) = 0;
    (acc) := ((acc ^ x[3]) ^ x[5]);
    (acc) := xtimes(acc);
    (acc) := (((acc ^ x[1]) ^ x[6]) ^ x[7]);
    (acc) := xtimes(acc);
    (acc) := (((((acc ^ x[0]) ^ x[2]) ^ x[3]) ^ x[4]) ^ x[7]);
    (acc) := xtimes(acc);
    (acc) := ((acc ^ x[3]) ^ x[6]);
    (x') = (x[1 .. 7],acc)
  tel
  
   node MixColumnRow(X :  b4[8] :: base)
    returns Y :  b4[8] :: base
  vars
    x :  b4[9][8] :: base,
    y :  b4[9] :: base
  let
    forall i in [0,7] {
      (x[0][i]) = (X[i] & 15)
    };
    forall i in [0,7] {
      (x[(i + 1)]) = step(x[i])
    };
    (Y) = x[8]
  tel
  
   node MixColumnSerial(X :  b4[8][8] :: base)
    returns Y :  b4[8][8] :: base
  vars
  
  let
    forall i in [0,7] {
      (Y[0 .. 7][i]) = MixColumnRow(X[0 .. 7][i])
    }
  tel
  
   node Photon(plain :  b4[8][8] :: base)
    returns cipher :  b4[8][8] :: base
  vars
    RC :  b4[12] :: base,
    state :  b4[13][8][8] :: base
  let
    (RC) = (1,3,7,14,13,11,6,12,9,2,5,10);
    (state[0]) = plain;
    forall i in [0,11] {
      (state[(i + 1)]) = MixColumnSerial(ShiftRows(SubCells(AddConstant(state[i],RC[i]))))
    };
    (cipher) = state[12]
  tel
  
  */
   