/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8 -*-â
âvi: set net ft=c ts=4 sts=4 sw=4 fenc=utf-8                                :viâ
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¡
â Python 3                                                                     â
â https://docs.python.org/3/license.html                                       â
ââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ*/
#include "third_party/python/Include/abstract.h"
#include "third_party/python/Include/bytesobject.h"
#include "third_party/python/Include/descrobject.h"
#include "third_party/python/Include/import.h"
#include "third_party/python/Include/longobject.h"
#include "third_party/python/Include/modsupport.h"
#include "third_party/python/Include/object.h"
#include "third_party/python/Include/objimpl.h"
#include "third_party/python/Include/pyerrors.h"
#include "third_party/python/Include/pystrhex.h"
#include "third_party/python/Include/yoink.h"

PYTHON_PROVIDE("_sha3");
PYTHON_PROVIDE("_sha3.__doc__");
PYTHON_PROVIDE("_sha3.__loader__");
PYTHON_PROVIDE("_sha3.__name__");
PYTHON_PROVIDE("_sha3.__package__");
PYTHON_PROVIDE("_sha3.__spec__");
PYTHON_PROVIDE("_sha3.implementation");
PYTHON_PROVIDE("_sha3.keccakopt");
PYTHON_PROVIDE("_sha3.sha3_224");
PYTHON_PROVIDE("_sha3.sha3_256");
PYTHON_PROVIDE("_sha3.sha3_384");
PYTHON_PROVIDE("_sha3.sha3_512");
PYTHON_PROVIDE("_sha3.shake_128");
PYTHON_PROVIDE("_sha3.shake_256");

typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn;

typedef struct KeccakWidth1600_SpongeInstanceStruct {
  unsigned char state[200] forcealign(8);
  unsigned int rate;
  unsigned int byteIOIndex;
  int squeezing;
} KeccakWidth1600_SpongeInstance;

typedef struct {
  KeccakWidth1600_SpongeInstance sponge;
  unsigned int fixedOutputLength;
  unsigned char delimitedSuffix;
} Keccak_HashInstance;

static const uint64_t kKeccakf[24] = {
    0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
    0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
    0x8000000080008081, 0x8000000000008009, 0x000000000000008a,
    0x0000000000000088, 0x0000000080008009, 0x000000008000000a,
    0x000000008000808b, 0x800000000000008b, 0x8000000000008089,
    0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
    0x000000000000800a, 0x800000008000000a, 0x8000000080008081,
    0x8000000000008080, 0x0000000080000001, 0x8000000080008008,
};

static void _PySHA3_KeccakP1600_Initialize(void *state) {
  bzero(state, 200);
  ((uint64_t *)state)[1] = ~(uint64_t)0;
  ((uint64_t *)state)[2] = ~(uint64_t)0;
  ((uint64_t *)state)[8] = ~(uint64_t)0;
  ((uint64_t *)state)[12] = ~(uint64_t)0;
  ((uint64_t *)state)[17] = ~(uint64_t)0;
  ((uint64_t *)state)[20] = ~(uint64_t)0;
}

static void _PySHA3_KeccakP1600_AddBytesInLane(void *state,
                                               unsigned int lanePosition,
                                               const unsigned char *data,
                                               unsigned int offset,
                                               unsigned int length) {
  uint64_t lane;
  if (length == 0) return;
  if (length == 1)
    lane = data[0];
  else {
    lane = 0;
    memcpy(&lane, data, length);
  }
  lane <<= offset * 8;
  ((uint64_t *)state)[lanePosition] ^= lane;
}

static void _PySHA3_KeccakP1600_AddLanes(void *state, const unsigned char *data,
                                         unsigned int laneCount) {
  unsigned int i = 0;
  for (; (i + 8) <= laneCount; i += 8) {
    ((uint64_t *)state)[i + 0] ^= ((uint64_t *)data)[i + 0];
    ((uint64_t *)state)[i + 1] ^= ((uint64_t *)data)[i + 1];
    ((uint64_t *)state)[i + 2] ^= ((uint64_t *)data)[i + 2];
    ((uint64_t *)state)[i + 3] ^= ((uint64_t *)data)[i + 3];
    ((uint64_t *)state)[i + 4] ^= ((uint64_t *)data)[i + 4];
    ((uint64_t *)state)[i + 5] ^= ((uint64_t *)data)[i + 5];
    ((uint64_t *)state)[i + 6] ^= ((uint64_t *)data)[i + 6];
    ((uint64_t *)state)[i + 7] ^= ((uint64_t *)data)[i + 7];
  }
  for (; (i + 4) <= laneCount; i += 4) {
    ((uint64_t *)state)[i + 0] ^= ((uint64_t *)data)[i + 0];
    ((uint64_t *)state)[i + 1] ^= ((uint64_t *)data)[i + 1];
    ((uint64_t *)state)[i + 2] ^= ((uint64_t *)data)[i + 2];
    ((uint64_t *)state)[i + 3] ^= ((uint64_t *)data)[i + 3];
  }
  for (; (i + 2) <= laneCount; i += 2) {
    ((uint64_t *)state)[i + 0] ^= ((uint64_t *)data)[i + 0];
    ((uint64_t *)state)[i + 1] ^= ((uint64_t *)data)[i + 1];
  }
  if (i < laneCount) {
    ((uint64_t *)state)[i + 0] ^= ((uint64_t *)data)[i + 0];
  }
}

static void _PySHA3_KeccakP1600_AddBytes(void *state, const unsigned char *data,
                                         unsigned int offset,
                                         unsigned int length) {
  if ((offset) == 0) {
    _PySHA3_KeccakP1600_AddLanes(state, data, (length) / 8);
    _PySHA3_KeccakP1600_AddBytesInLane(
        state, (length) / 8, (data) + ((length) / 8) * 8, 0, (length) % 8);
  } else {
    unsigned int _sizeLeft = (length);
    unsigned int _lanePosition = (offset) / 8;
    unsigned int _offsetInLane = (offset) % 8;
    const unsigned char *_curData = (data);
    while (_sizeLeft > 0) {
      unsigned int _bytesInLane = 8 - _offsetInLane;
      if (_bytesInLane > _sizeLeft) _bytesInLane = _sizeLeft;
      _PySHA3_KeccakP1600_AddBytesInLane(state, _lanePosition, _curData,
                                         _offsetInLane, _bytesInLane);
      _sizeLeft -= _bytesInLane;
      _lanePosition++;
      _offsetInLane = 0;
      _curData += _bytesInLane;
    }
  }
}

static void _PySHA3_KeccakP1600_OverwriteBytesInLane(void *state,
                                                     unsigned int lanePosition,
                                                     const unsigned char *data,
                                                     unsigned int offset,
                                                     unsigned int length) {
  if ((lanePosition == 1) || (lanePosition == 2) || (lanePosition == 8) ||
      (lanePosition == 12) || (lanePosition == 17) || (lanePosition == 20)) {
    unsigned int i;
    for (i = 0; i < length; i++)
      ((unsigned char *)state)[lanePosition * 8 + offset + i] = ~data[i];
  } else {
    memcpy((unsigned char *)state + lanePosition * 8 + offset, data, length);
  }
}

static void _PySHA3_KeccakP1600_OverwriteLanes(void *state,
                                               const unsigned char *data,
                                               unsigned int laneCount) {
  unsigned int lanePosition;
  for (lanePosition = 0; lanePosition < laneCount; lanePosition++)
    if ((lanePosition == 1) || (lanePosition == 2) || (lanePosition == 8) ||
        (lanePosition == 12) || (lanePosition == 17) || (lanePosition == 20))
      ((uint64_t *)state)[lanePosition] =
          ~((const uint64_t *)data)[lanePosition];
    else
      ((uint64_t *)state)[lanePosition] =
          ((const uint64_t *)data)[lanePosition];
}

static void _PySHA3_KeccakP1600_OverwriteBytes(void *state,
                                               const unsigned char *data,
                                               unsigned int offset,
                                               unsigned int length) {
  {
    if ((offset) == 0) {
      _PySHA3_KeccakP1600_OverwriteLanes(state, data, (length) / 8);
      _PySHA3_KeccakP1600_OverwriteBytesInLane(
          state, (length) / 8, (data) + ((length) / 8) * 8, 0, (length) % 8);
    } else {
      unsigned int _sizeLeft = (length);
      unsigned int _lanePosition = (offset) / 8;
      unsigned int _offsetInLane = (offset) % 8;
      const unsigned char *_curData = (data);
      while (_sizeLeft > 0) {
        unsigned int _bytesInLane = 8 - _offsetInLane;
        if (_bytesInLane > _sizeLeft) _bytesInLane = _sizeLeft;
        _PySHA3_KeccakP1600_OverwriteBytesInLane(state, _lanePosition, _curData,
                                                 _offsetInLane, _bytesInLane);
        _sizeLeft -= _bytesInLane;
        _lanePosition++;
        _offsetInLane = 0;
        _curData += _bytesInLane;
      }
    }
  };
}

static void _PySHA3_KeccakP1600_OverwriteWithZeroes(void *state,
                                                    unsigned int byteCount) {
  unsigned int lanePosition;
  for (lanePosition = 0; lanePosition < byteCount / 8; lanePosition++)
    if ((lanePosition == 1) || (lanePosition == 2) || (lanePosition == 8) ||
        (lanePosition == 12) || (lanePosition == 17) || (lanePosition == 20))
      ((uint64_t *)state)[lanePosition] = ~0;
    else
      ((uint64_t *)state)[lanePosition] = 0;
  if (byteCount % 8 != 0) {
    lanePosition = byteCount / 8;
    if ((lanePosition == 1) || (lanePosition == 2) || (lanePosition == 8) ||
        (lanePosition == 12) || (lanePosition == 17) || (lanePosition == 20))
      memset((unsigned char *)state + lanePosition * 8, 0xFF, byteCount % 8);
    else
      bzero((unsigned char *)state + lanePosition * 8, byteCount % 8);
  }
}

static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
  uint64_t Ca, Ce, Ci, Co, Cu;
  uint64_t Da, De, Di, Do, Du;
  uint64_t Aba, Abe, Abi, Abo, Abu;
  uint64_t Aga, Age, Agi, Ago, Agu;
  uint64_t Aka, Ake, Aki, Ako, Aku;
  uint64_t Ama, Ame, Ami, Amo, Amu;
  uint64_t Asa, Ase, Asi, Aso, Asu;
  uint64_t Bba, Bbe, Bbi, Bbo, Bbu;
  uint64_t Bga, Bge, Bgi, Bgo, Bgu;
  uint64_t Bka, Bke, Bki, Bko, Bku;
  uint64_t Bma, Bme, Bmi, Bmo, Bmu;
  uint64_t Bsa, Bse, Bsi, Bso, Bsu;
  uint64_t Eba, Ebe, Ebi, Ebo, Ebu;
  uint64_t Ega, Ege, Egi, Ego, Egu;
  uint64_t Eka, Eke, Eki, Eko, Eku;
  uint64_t Ema, Eme, Emi, Emo, Emu;
  uint64_t Esa, Ese, Esi, Eso, Esu;
  uint64_t *stateAsLanes = (uint64_t *)state;
  Aba = stateAsLanes[0];
  Abe = stateAsLanes[1];
  Abi = stateAsLanes[2];
  Abo = stateAsLanes[3];
  Abu = stateAsLanes[4];
  Aga = stateAsLanes[5];
  Age = stateAsLanes[6];
  Agi = stateAsLanes[7];
  Ago = stateAsLanes[8];
  Agu = stateAsLanes[9];
  Aka = stateAsLanes[10];
  Ake = stateAsLanes[11];
  Aki = stateAsLanes[12];
  Ako = stateAsLanes[13];
  Aku = stateAsLanes[14];
  Ama = stateAsLanes[15];
  Ame = stateAsLanes[16];
  Ami = stateAsLanes[17];
  Amo = stateAsLanes[18];
  Amu = stateAsLanes[19];
  Asa = stateAsLanes[20];
  Ase = stateAsLanes[21];
  Asi = stateAsLanes[22];
  Aso = stateAsLanes[23];
  Asu = stateAsLanes[24];
  Ca = Aba ^ Aga ^ Aka ^ Ama ^ Asa;
  Ce = Abe ^ Age ^ Ake ^ Ame ^ Ase;
  Ci = Abi ^ Agi ^ Aki ^ Ami ^ Asi;
  Co = Abo ^ Ago ^ Ako ^ Amo ^ Aso;
  Cu = Abu ^ Agu ^ Aku ^ Amu ^ Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[0];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[1];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[2];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[3];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[4];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[5];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[6];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[7];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[8];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[9];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[10];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[11];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[12];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[13];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[14];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[15];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[16];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[17];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[18];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[19];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[20];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[21];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[22];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[23];
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Abi = Bbi ^ (Bbo & Bbu);
  Abo = Bbo ^ (Bbu | Bba);
  Abu = Bbu ^ (Bba & Bbe);
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Age = Bge ^ (Bgi & Bgo);
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ago = Bgo ^ (Bgu | Bga);
  Agu = Bgu ^ (Bga & Bge);
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ake = Bke ^ (Bki & Bko);
  Aki = Bki ^ ((~Bko) & Bku);
  Ako = (~Bko) ^ (Bku | Bka);
  Aku = Bku ^ (Bka & Bke);
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ame = Bme ^ (Bmi | Bmo);
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Amo = (~Bmo) ^ (Bmu & Bma);
  Amu = Bmu ^ (Bma | Bme);
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ase = (~Bse) ^ (Bsi | Bso);
  Asi = Bsi ^ (Bso & Bsu);
  Aso = Bso ^ (Bsu | Bsa);
  Asu = Bsu ^ (Bsa & Bse);
  stateAsLanes[0] = Aba;
  stateAsLanes[1] = Abe;
  stateAsLanes[2] = Abi;
  stateAsLanes[3] = Abo;
  stateAsLanes[4] = Abu;
  stateAsLanes[5] = Aga;
  stateAsLanes[6] = Age;
  stateAsLanes[7] = Agi;
  stateAsLanes[8] = Ago;
  stateAsLanes[9] = Agu;
  stateAsLanes[10] = Aka;
  stateAsLanes[11] = Ake;
  stateAsLanes[12] = Aki;
  stateAsLanes[13] = Ako;
  stateAsLanes[14] = Aku;
  stateAsLanes[15] = Ama;
  stateAsLanes[16] = Ame;
  stateAsLanes[17] = Ami;
  stateAsLanes[18] = Amo;
  stateAsLanes[19] = Amu;
  stateAsLanes[20] = Asa;
  stateAsLanes[21] = Ase;
  stateAsLanes[22] = Asi;
  stateAsLanes[23] = Aso;
  stateAsLanes[24] = Asu;
}

static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
  uint64_t Aba, Abe, Abi, Abo, Abu;
  uint64_t Aga, Age, Agi, Ago, Agu;
  uint64_t Aka, Ake, Aki, Ako, Aku;
  uint64_t Ama, Ame, Ami, Amo, Amu;
  uint64_t Asa, Ase, Asi, Aso, Asu;
  uint64_t Bba, Bbe, Bbi, Bbo, Bbu;
  uint64_t Bga, Bge, Bgi, Bgo, Bgu;
  uint64_t Bka, Bke, Bki, Bko, Bku;
  uint64_t Bma, Bme, Bmi, Bmo, Bmu;
  uint64_t Bsa, Bse, Bsi, Bso, Bsu;
  uint64_t Ca, Ce, Ci, Co, Cu;
  uint64_t Da, De, Di, Do, Du;
  uint64_t Eba, Ebe, Ebi, Ebo, Ebu;
  uint64_t Ega, Ege, Egi, Ego, Egu;
  uint64_t Eka, Eke, Eki, Eko, Eku;
  uint64_t Ema, Eme, Emi, Emo, Emu;
  uint64_t Esa, Ese, Esi, Eso, Esu;
  uint64_t *stateAsLanes = (uint64_t *)state;
  Aba = stateAsLanes[0];
  Abe = stateAsLanes[1];
  Abi = stateAsLanes[2];
  Abo = stateAsLanes[3];
  Abu = stateAsLanes[4];
  Aga = stateAsLanes[5];
  Age = stateAsLanes[6];
  Agi = stateAsLanes[7];
  Ago = stateAsLanes[8];
  Agu = stateAsLanes[9];
  Aka = stateAsLanes[10];
  Ake = stateAsLanes[11];
  Aki = stateAsLanes[12];
  Ako = stateAsLanes[13];
  Aku = stateAsLanes[14];
  Ama = stateAsLanes[15];
  Ame = stateAsLanes[16];
  Ami = stateAsLanes[17];
  Amo = stateAsLanes[18];
  Amu = stateAsLanes[19];
  Asa = stateAsLanes[20];
  Ase = stateAsLanes[21];
  Asi = stateAsLanes[22];
  Aso = stateAsLanes[23];
  Asu = stateAsLanes[24];
  Ca = Aba ^ Aga ^ Aka ^ Ama ^ Asa;
  Ce = Abe ^ Age ^ Ake ^ Ame ^ Ase;
  Ci = Abi ^ Agi ^ Aki ^ Ami ^ Asi;
  Co = Abo ^ Ago ^ Ako ^ Amo ^ Aso;
  Cu = Abu ^ Agu ^ Aku ^ Amu ^ Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[12];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[13];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[14];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[15];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[16];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[17];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[18];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[19];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[20];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[21];
  Ca = Aba;
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Abe;
  Abi = Bbi ^ (Bbo & Bbu);
  Ci = Abi;
  Abo = Bbo ^ (Bbu | Bba);
  Co = Abo;
  Abu = Bbu ^ (Bba & Bbe);
  Cu = Abu;
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Ca ^= Aga;
  Age = Bge ^ (Bgi & Bgo);
  Ce ^= Age;
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Agi;
  Ago = Bgo ^ (Bgu | Bga);
  Co ^= Ago;
  Agu = Bgu ^ (Bga & Bge);
  Cu ^= Agu;
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ca ^= Aka;
  Ake = Bke ^ (Bki & Bko);
  Ce ^= Ake;
  Aki = Bki ^ ((~Bko) & Bku);
  Ci ^= Aki;
  Ako = (~Bko) ^ (Bku | Bka);
  Co ^= Ako;
  Aku = Bku ^ (Bka & Bke);
  Cu ^= Aku;
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ca ^= Ama;
  Ame = Bme ^ (Bmi | Bmo);
  Ce ^= Ame;
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Ami;
  Amo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Amo;
  Amu = Bmu ^ (Bma | Bme);
  Cu ^= Amu;
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Asa;
  Ase = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ase;
  Asi = Bsi ^ (Bso & Bsu);
  Ci ^= Asi;
  Aso = Bso ^ (Bsu | Bsa);
  Co ^= Aso;
  Asu = Bsu ^ (Bsa & Bse);
  Cu ^= Asu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Aba ^= Da;
  Bba = Aba;
  Age ^= De;
  Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
  Aki ^= Di;
  Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
  Amo ^= Do;
  Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
  Asu ^= Du;
  Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
  Eba = Bba ^ (Bbe | Bbi);
  Eba ^= kKeccakf[22];
  Ca = Eba;
  Ebe = Bbe ^ ((~Bbi) | Bbo);
  Ce = Ebe;
  Ebi = Bbi ^ (Bbo & Bbu);
  Ci = Ebi;
  Ebo = Bbo ^ (Bbu | Bba);
  Co = Ebo;
  Ebu = Bbu ^ (Bba & Bbe);
  Cu = Ebu;
  Abo ^= Do;
  Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
  Agu ^= Du;
  Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
  Aka ^= Da;
  Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
  Ame ^= De;
  Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
  Asi ^= Di;
  Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
  Ega = Bga ^ (Bge | Bgi);
  Ca ^= Ega;
  Ege = Bge ^ (Bgi & Bgo);
  Ce ^= Ege;
  Egi = Bgi ^ (Bgo | (~Bgu));
  Ci ^= Egi;
  Ego = Bgo ^ (Bgu | Bga);
  Co ^= Ego;
  Egu = Bgu ^ (Bga & Bge);
  Cu ^= Egu;
  Abe ^= De;
  Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
  Agi ^= Di;
  Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
  Ako ^= Do;
  Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
  Amu ^= Du;
  Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
  Asa ^= Da;
  Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
  Eka = Bka ^ (Bke | Bki);
  Ca ^= Eka;
  Eke = Bke ^ (Bki & Bko);
  Ce ^= Eke;
  Eki = Bki ^ ((~Bko) & Bku);
  Ci ^= Eki;
  Eko = (~Bko) ^ (Bku | Bka);
  Co ^= Eko;
  Eku = Bku ^ (Bka & Bke);
  Cu ^= Eku;
  Abu ^= Du;
  Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
  Aga ^= Da;
  Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
  Ake ^= De;
  Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
  Ami ^= Di;
  Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
  Aso ^= Do;
  Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
  Ema = Bma ^ (Bme & Bmi);
  Ca ^= Ema;
  Eme = Bme ^ (Bmi | Bmo);
  Ce ^= Eme;
  Emi = Bmi ^ ((~Bmo) | Bmu);
  Ci ^= Emi;
  Emo = (~Bmo) ^ (Bmu & Bma);
  Co ^= Emo;
  Emu = Bmu ^ (Bma | Bme);
  Cu ^= Emu;
  Abi ^= Di;
  Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
  Ago ^= Do;
  Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
  Aku ^= Du;
  Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
  Ama ^= Da;
  Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
  Ase ^= De;
  Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
  Esa = Bsa ^ ((~Bse) & Bsi);
  Ca ^= Esa;
  Ese = (~Bse) ^ (Bsi | Bso);
  Ce ^= Ese;
  Esi = Bsi ^ (Bso & Bsu);
  Ci ^= Esi;
  Eso = Bso ^ (Bsu | Bsa);
  Co ^= Eso;
  Esu = Bsu ^ (Bsa & Bse);
  Cu ^= Esu;
  Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
  De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
  Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
  Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
  Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
  Eba ^= Da;
  Bba = Eba;
  Ege ^= De;
  Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
  Eki ^= Di;
  Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
  Emo ^= Do;
  Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
  Esu ^= Du;
  Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
  Aba = Bba ^ (Bbe | Bbi);
  Aba ^= kKeccakf[23];
  Abe = Bbe ^ ((~Bbi) | Bbo);
  Abi = Bbi ^ (Bbo & Bbu);
  Abo = Bbo ^ (Bbu | Bba);
  Abu = Bbu ^ (Bba & Bbe);
  Ebo ^= Do;
  Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
  Egu ^= Du;
  Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
  Eka ^= Da;
  Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
  Eme ^= De;
  Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
  Esi ^= Di;
  Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
  Aga = Bga ^ (Bge | Bgi);
  Age = Bge ^ (Bgi & Bgo);
  Agi = Bgi ^ (Bgo | (~Bgu));
  Ago = Bgo ^ (Bgu | Bga);
  Agu = Bgu ^ (Bga & Bge);
  Ebe ^= De;
  Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
  Egi ^= Di;
  Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
  Eko ^= Do;
  Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
  Emu ^= Du;
  Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
  Esa ^= Da;
  Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
  Aka = Bka ^ (Bke | Bki);
  Ake = Bke ^ (Bki & Bko);
  Aki = Bki ^ ((~Bko) & Bku);
  Ako = (~Bko) ^ (Bku | Bka);
  Aku = Bku ^ (Bka & Bke);
  Ebu ^= Du;
  Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
  Ega ^= Da;
  Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
  Eke ^= De;
  Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
  Emi ^= Di;
  Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
  Eso ^= Do;
  Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
  Ama = Bma ^ (Bme & Bmi);
  Ame = Bme ^ (Bmi | Bmo);
  Ami = Bmi ^ ((~Bmo) | Bmu);
  Amo = (~Bmo) ^ (Bmu & Bma);
  Amu = Bmu ^ (Bma | Bme);
  Ebi ^= Di;
  Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
  Ego ^= Do;
  Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
  Eku ^= Du;
  Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
  Ema ^= Da;
  Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
  Ese ^= De;
  Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
  Asa = Bsa ^ ((~Bse) & Bsi);
  Ase = (~Bse) ^ (Bsi | Bso);
  Asi = Bsi ^ (Bso & Bsu);
  Aso = Bso ^ (Bsu | Bsa);
  Asu = Bsu ^ (Bsa & Bse);
  stateAsLanes[0] = Aba;
  stateAsLanes[1] = Abe;
  stateAsLanes[2] = Abi;
  stateAsLanes[3] = Abo;
  stateAsLanes[4] = Abu;
  stateAsLanes[5] = Aga;
  stateAsLanes[6] = Age;
  stateAsLanes[7] = Agi;
  stateAsLanes[8] = Ago;
  stateAsLanes[9] = Agu;
  stateAsLanes[10] = Aka;
  stateAsLanes[11] = Ake;
  stateAsLanes[12] = Aki;
  stateAsLanes[13] = Ako;
  stateAsLanes[14] = Aku;
  stateAsLanes[15] = Ama;
  stateAsLanes[16] = Ame;
  stateAsLanes[17] = Ami;
  stateAsLanes[18] = Amo;
  stateAsLanes[19] = Amu;
  stateAsLanes[20] = Asa;
  stateAsLanes[21] = Ase;
  stateAsLanes[22] = Asi;
  stateAsLanes[23] = Aso;
  stateAsLanes[24] = Asu;
}

static void _PySHA3_KeccakP1600_ExtractBytesInLane(const void *state,
                                                   unsigned int lanePosition,
                                                   unsigned char *data,
                                                   unsigned int offset,
                                                   unsigned int length) {
  uint64_t lane = ((uint64_t *)state)[lanePosition];
  if ((lanePosition == 1) || (lanePosition == 2) || (lanePosition == 8) ||
      (lanePosition == 12) || (lanePosition == 17) || (lanePosition == 20))
    lane = ~lane;
  {
    uint64_t lane1[1];
    lane1[0] = lane;
    memcpy(data, (uint8_t *)lane1 + offset, length);
  }
}

static void _PySHA3_KeccakP1600_ExtractLanes(const void *state,
                                             unsigned char *data,
                                             unsigned int laneCount) {
  memcpy(data, state, laneCount * 8);
  if (laneCount > 1) {
    ((uint64_t *)data)[1] = ~((uint64_t *)data)[1];
    if (laneCount > 2) {
      ((uint64_t *)data)[2] = ~((uint64_t *)data)[2];
      if (laneCount > 8) {
        ((uint64_t *)data)[8] = ~((uint64_t *)data)[8];
        if (laneCount > 12) {
          ((uint64_t *)data)[12] = ~((uint64_t *)data)[12];
          if (laneCount > 17) {
            ((uint64_t *)data)[17] = ~((uint64_t *)data)[17];
            if (laneCount > 20) {
              ((uint64_t *)data)[20] = ~((uint64_t *)data)[20];
            }
          }
        }
      }
    }
  }
}

static void _PySHA3_KeccakP1600_ExtractBytes(const void *state,
                                             unsigned char *data,
                                             unsigned int offset,
                                             unsigned int length) {
  if ((offset) == 0) {
    _PySHA3_KeccakP1600_ExtractLanes(state, data, (length) / 8);
    _PySHA3_KeccakP1600_ExtractBytesInLane(
        state, (length) / 8, (data) + ((length) / 8) * 8, 0, (length) % 8);
  } else {
    unsigned int _sizeLeft = (length);
    unsigned int _lanePosition = (offset) / 8;
    unsigned int _offsetInLane = (offset) % 8;
    unsigned char *_curData = (data);
    while (_sizeLeft > 0) {
      unsigned int _bytesInLane = 8 - _offsetInLane;
      if (_bytesInLane > _sizeLeft) _bytesInLane = _sizeLeft;
      _PySHA3_KeccakP1600_ExtractBytesInLane(state, _lanePosition, _curData,
                                             _offsetInLane, _bytesInLane);
      _sizeLeft -= _bytesInLane;
      _lanePosition++;
      _offsetInLane = 0;
      _curData += _bytesInLane;
    }
  }
}

static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
                                                  unsigned int laneCount,
                                                  const unsigned char *data,
                                                  size_t dataByteLen) {
  size_t originalDataByteLen = dataByteLen;
  uint64_t Aba, Abe, Abi, Abo, Abu;
  uint64_t Aga, Age, Agi, Ago, Agu;
  uint64_t Aka, Ake, Aki, Ako, Aku;
  uint64_t Ama, Ame, Ami, Amo, Amu;
  uint64_t Asa, Ase, Asi, Aso, Asu;
  uint64_t Bba, Bbe, Bbi, Bbo, Bbu;
  uint64_t Bga, Bge, Bgi, Bgo, Bgu;
  uint64_t Bka, Bke, Bki, Bko, Bku;
  uint64_t Bma, Bme, Bmi, Bmo, Bmu;
  uint64_t Bsa, Bse, Bsi, Bso, Bsu;
  uint64_t Ca, Ce, Ci, Co, Cu;
  uint64_t Da, De, Di, Do, Du;
  uint64_t Eba, Ebe, Ebi, Ebo, Ebu;
  uint64_t Ega, Ege, Egi, Ego, Egu;
  uint64_t Eka, Eke, Eki, Eko, Eku;
  uint64_t Ema, Eme, Emi, Emo, Emu;
  uint64_t Esa, Ese, Esi, Eso, Esu;
  uint64_t *stateAsLanes = (uint64_t *)state;
  uint64_t *inDataAsLanes = (uint64_t *)data;
  Aba = stateAsLanes[0];
  Abe = stateAsLanes[1];
  Abi = stateAsLanes[2];
  Abo = stateAsLanes[3];
  Abu = stateAsLanes[4];
  Aga = stateAsLanes[5];
  Age = stateAsLanes[6];
  Agi = stateAsLanes[7];
  Ago = stateAsLanes[8];
  Agu = stateAsLanes[9];
  Aka = stateAsLanes[10];
  Ake = stateAsLanes[11];
  Aki = stateAsLanes[12];
  Ako = stateAsLanes[13];
  Aku = stateAsLanes[14];
  Ama = stateAsLanes[15];
  Ame = stateAsLanes[16];
  Ami = stateAsLanes[17];
  Amo = stateAsLanes[18];
  Amu = stateAsLanes[19];
  Asa = stateAsLanes[20];
  Ase = stateAsLanes[21];
  Asi = stateAsLanes[22];
  Aso = stateAsLanes[23];
  Asu = stateAsLanes[24];
  while (dataByteLen >= laneCount * 8) {
    if (laneCount == 21) {
      Aba ^= inDataAsLanes[0];
      Abe ^= inDataAsLanes[1];
      Abi ^= inDataAsLanes[2];
      Abo ^= inDataAsLanes[3];
      Abu ^= inDataAsLanes[4];
      Aga ^= inDataAsLanes[5];
      Age ^= inDataAsLanes[6];
      Agi ^= inDataAsLanes[7];
      Ago ^= inDataAsLanes[8];
      Agu ^= inDataAsLanes[9];
      Aka ^= inDataAsLanes[10];
      Ake ^= inDataAsLanes[11];
      Aki ^= inDataAsLanes[12];
      Ako ^= inDataAsLanes[13];
      Aku ^= inDataAsLanes[14];
      Ama ^= inDataAsLanes[15];
      Ame ^= inDataAsLanes[16];
      Ami ^= inDataAsLanes[17];
      Amo ^= inDataAsLanes[18];
      Amu ^= inDataAsLanes[19];
      Asa ^= inDataAsLanes[20];
    } else if (laneCount < 16) {
      if (laneCount < 8) {
        if (laneCount < 4) {
          if (laneCount < 2) {
            if (laneCount < 1) {
            } else {
              Aba ^= inDataAsLanes[0];
            }
          } else {
            Aba ^= inDataAsLanes[0];
            Abe ^= inDataAsLanes[1];
            if (laneCount < 3) {
            } else {
              Abi ^= inDataAsLanes[2];
            }
          }
        } else {
          Aba ^= inDataAsLanes[0];
          Abe ^= inDataAsLanes[1];
          Abi ^= inDataAsLanes[2];
          Abo ^= inDataAsLanes[3];
          if (laneCount < 6) {
            if (laneCount < 5) {
            } else {
              Abu ^= inDataAsLanes[4];
            }
          } else {
            Abu ^= inDataAsLanes[4];
            Aga ^= inDataAsLanes[5];
            if (laneCount < 7) {
            } else {
              Age ^= inDataAsLanes[6];
            }
          }
        }
      } else {
        Aba ^= inDataAsLanes[0];
        Abe ^= inDataAsLanes[1];
        Abi ^= inDataAsLanes[2];
        Abo ^= inDataAsLanes[3];
        Abu ^= inDataAsLanes[4];
        Aga ^= inDataAsLanes[5];
        Age ^= inDataAsLanes[6];
        Agi ^= inDataAsLanes[7];
        if (laneCount < 12) {
          if (laneCount < 10) {
            if (laneCount < 9) {
            } else {
              Ago ^= inDataAsLanes[8];
            }
          } else {
            Ago ^= inDataAsLanes[8];
            Agu ^= inDataAsLanes[9];
            if (laneCount < 11) {
            } else {
              Aka ^= inDataAsLanes[10];
            }
          }
        } else {
          Ago ^= inDataAsLanes[8];
          Agu ^= inDataAsLanes[9];
          Aka ^= inDataAsLanes[10];
          Ake ^= inDataAsLanes[11];
          if (laneCount < 14) {
            if (laneCount < 13) {
            } else {
              Aki ^= inDataAsLanes[12];
            }
          } else {
            Aki ^= inDataAsLanes[12];
            Ako ^= inDataAsLanes[13];
            if (laneCount < 15) {
            } else {
              Aku ^= inDataAsLanes[14];
            }
          }
        }
      }
    } else {
      Aba ^= inDataAsLanes[0];
      Abe ^= inDataAsLanes[1];
      Abi ^= inDataAsLanes[2];
      Abo ^= inDataAsLanes[3];
      Abu ^= inDataAsLanes[4];
      Aga ^= inDataAsLanes[5];
      Age ^= inDataAsLanes[6];
      Agi ^= inDataAsLanes[7];
      Ago ^= inDataAsLanes[8];
      Agu ^= inDataAsLanes[9];
      Aka ^= inDataAsLanes[10];
      Ake ^= inDataAsLanes[11];
      Aki ^= inDataAsLanes[12];
      Ako ^= inDataAsLanes[13];
      Aku ^= inDataAsLanes[14];
      Ama ^= inDataAsLanes[15];
      if (laneCount < 24) {
        if (laneCount < 20) {
          if (laneCount < 18) {
            if (laneCount < 17) {
            } else {
              Ame ^= inDataAsLanes[16];
            }
          } else {
            Ame ^= inDataAsLanes[16];
            Ami ^= inDataAsLanes[17];
            if (laneCount < 19) {
            } else {
              Amo ^= inDataAsLanes[18];
            }
          }
        } else {
          Ame ^= inDataAsLanes[16];
          Ami ^= inDataAsLanes[17];
          Amo ^= inDataAsLanes[18];
          Amu ^= inDataAsLanes[19];
          if (laneCount < 22) {
            if (laneCount < 21) {
            } else {
              Asa ^= inDataAsLanes[20];
            }
          } else {
            Asa ^= inDataAsLanes[20];
            Ase ^= inDataAsLanes[21];
            if (laneCount < 23) {
            } else {
              Asi ^= inDataAsLanes[22];
            }
          }
        }
      } else {
        Ame ^= inDataAsLanes[16];
        Ami ^= inDataAsLanes[17];
        Amo ^= inDataAsLanes[18];
        Amu ^= inDataAsLanes[19];
        Asa ^= inDataAsLanes[20];
        Ase ^= inDataAsLanes[21];
        Asi ^= inDataAsLanes[22];
        Aso ^= inDataAsLanes[23];
        if (laneCount < 25) {
        } else {
          Asu ^= inDataAsLanes[24];
        }
      }
    }
    Ca = Aba ^ Aga ^ Aka ^ Ama ^ Asa;
    Ce = Abe ^ Age ^ Ake ^ Ame ^ Ase;
    Ci = Abi ^ Agi ^ Aki ^ Ami ^ Asi;
    Co = Abo ^ Ago ^ Ako ^ Amo ^ Aso;
    Cu = Abu ^ Agu ^ Aku ^ Amu ^ Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[0];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[1];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[2];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[3];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[4];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[5];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[6];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[7];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[8];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[9];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[10];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[11];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[12];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[13];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[14];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[15];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[16];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[17];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[18];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[19];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[20];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[21];
    Ca = Aba;
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Abe;
    Abi = Bbi ^ (Bbo & Bbu);
    Ci = Abi;
    Abo = Bbo ^ (Bbu | Bba);
    Co = Abo;
    Abu = Bbu ^ (Bba & Bbe);
    Cu = Abu;
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Ca ^= Aga;
    Age = Bge ^ (Bgi & Bgo);
    Ce ^= Age;
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Agi;
    Ago = Bgo ^ (Bgu | Bga);
    Co ^= Ago;
    Agu = Bgu ^ (Bga & Bge);
    Cu ^= Agu;
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ca ^= Aka;
    Ake = Bke ^ (Bki & Bko);
    Ce ^= Ake;
    Aki = Bki ^ ((~Bko) & Bku);
    Ci ^= Aki;
    Ako = (~Bko) ^ (Bku | Bka);
    Co ^= Ako;
    Aku = Bku ^ (Bka & Bke);
    Cu ^= Aku;
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ca ^= Ama;
    Ame = Bme ^ (Bmi | Bmo);
    Ce ^= Ame;
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Ami;
    Amo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Amo;
    Amu = Bmu ^ (Bma | Bme);
    Cu ^= Amu;
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Asa;
    Ase = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ase;
    Asi = Bsi ^ (Bso & Bsu);
    Ci ^= Asi;
    Aso = Bso ^ (Bsu | Bsa);
    Co ^= Aso;
    Asu = Bsu ^ (Bsa & Bse);
    Cu ^= Asu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Aba ^= Da;
    Bba = Aba;
    Age ^= De;
    Bbe = ((((uint64_t)Age) << 44) ^ (((uint64_t)Age) >> (64 - 44)));
    Aki ^= Di;
    Bbi = ((((uint64_t)Aki) << 43) ^ (((uint64_t)Aki) >> (64 - 43)));
    Amo ^= Do;
    Bbo = ((((uint64_t)Amo) << 21) ^ (((uint64_t)Amo) >> (64 - 21)));
    Asu ^= Du;
    Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
    Eba = Bba ^ (Bbe | Bbi);
    Eba ^= kKeccakf[22];
    Ca = Eba;
    Ebe = Bbe ^ ((~Bbi) | Bbo);
    Ce = Ebe;
    Ebi = Bbi ^ (Bbo & Bbu);
    Ci = Ebi;
    Ebo = Bbo ^ (Bbu | Bba);
    Co = Ebo;
    Ebu = Bbu ^ (Bba & Bbe);
    Cu = Ebu;
    Abo ^= Do;
    Bga = ((((uint64_t)Abo) << 28) ^ (((uint64_t)Abo) >> (64 - 28)));
    Agu ^= Du;
    Bge = ((((uint64_t)Agu) << 20) ^ (((uint64_t)Agu) >> (64 - 20)));
    Aka ^= Da;
    Bgi = ((((uint64_t)Aka) << 3) ^ (((uint64_t)Aka) >> (64 - 3)));
    Ame ^= De;
    Bgo = ((((uint64_t)Ame) << 45) ^ (((uint64_t)Ame) >> (64 - 45)));
    Asi ^= Di;
    Bgu = ((((uint64_t)Asi) << 61) ^ (((uint64_t)Asi) >> (64 - 61)));
    Ega = Bga ^ (Bge | Bgi);
    Ca ^= Ega;
    Ege = Bge ^ (Bgi & Bgo);
    Ce ^= Ege;
    Egi = Bgi ^ (Bgo | (~Bgu));
    Ci ^= Egi;
    Ego = Bgo ^ (Bgu | Bga);
    Co ^= Ego;
    Egu = Bgu ^ (Bga & Bge);
    Cu ^= Egu;
    Abe ^= De;
    Bka = ((((uint64_t)Abe) << 1) ^ (((uint64_t)Abe) >> (64 - 1)));
    Agi ^= Di;
    Bke = ((((uint64_t)Agi) << 6) ^ (((uint64_t)Agi) >> (64 - 6)));
    Ako ^= Do;
    Bki = ((((uint64_t)Ako) << 25) ^ (((uint64_t)Ako) >> (64 - 25)));
    Amu ^= Du;
    Bko = ((((uint64_t)Amu) << 8) ^ (((uint64_t)Amu) >> (64 - 8)));
    Asa ^= Da;
    Bku = ((((uint64_t)Asa) << 18) ^ (((uint64_t)Asa) >> (64 - 18)));
    Eka = Bka ^ (Bke | Bki);
    Ca ^= Eka;
    Eke = Bke ^ (Bki & Bko);
    Ce ^= Eke;
    Eki = Bki ^ ((~Bko) & Bku);
    Ci ^= Eki;
    Eko = (~Bko) ^ (Bku | Bka);
    Co ^= Eko;
    Eku = Bku ^ (Bka & Bke);
    Cu ^= Eku;
    Abu ^= Du;
    Bma = ((((uint64_t)Abu) << 27) ^ (((uint64_t)Abu) >> (64 - 27)));
    Aga ^= Da;
    Bme = ((((uint64_t)Aga) << 36) ^ (((uint64_t)Aga) >> (64 - 36)));
    Ake ^= De;
    Bmi = ((((uint64_t)Ake) << 10) ^ (((uint64_t)Ake) >> (64 - 10)));
    Ami ^= Di;
    Bmo = ((((uint64_t)Ami) << 15) ^ (((uint64_t)Ami) >> (64 - 15)));
    Aso ^= Do;
    Bmu = ((((uint64_t)Aso) << 56) ^ (((uint64_t)Aso) >> (64 - 56)));
    Ema = Bma ^ (Bme & Bmi);
    Ca ^= Ema;
    Eme = Bme ^ (Bmi | Bmo);
    Ce ^= Eme;
    Emi = Bmi ^ ((~Bmo) | Bmu);
    Ci ^= Emi;
    Emo = (~Bmo) ^ (Bmu & Bma);
    Co ^= Emo;
    Emu = Bmu ^ (Bma | Bme);
    Cu ^= Emu;
    Abi ^= Di;
    Bsa = ((((uint64_t)Abi) << 62) ^ (((uint64_t)Abi) >> (64 - 62)));
    Ago ^= Do;
    Bse = ((((uint64_t)Ago) << 55) ^ (((uint64_t)Ago) >> (64 - 55)));
    Aku ^= Du;
    Bsi = ((((uint64_t)Aku) << 39) ^ (((uint64_t)Aku) >> (64 - 39)));
    Ama ^= Da;
    Bso = ((((uint64_t)Ama) << 41) ^ (((uint64_t)Ama) >> (64 - 41)));
    Ase ^= De;
    Bsu = ((((uint64_t)Ase) << 2) ^ (((uint64_t)Ase) >> (64 - 2)));
    Esa = Bsa ^ ((~Bse) & Bsi);
    Ca ^= Esa;
    Ese = (~Bse) ^ (Bsi | Bso);
    Ce ^= Ese;
    Esi = Bsi ^ (Bso & Bsu);
    Ci ^= Esi;
    Eso = Bso ^ (Bsu | Bsa);
    Co ^= Eso;
    Esu = Bsu ^ (Bsa & Bse);
    Cu ^= Esu;
    Da = Cu ^ ((((uint64_t)Ce) << 1) ^ (((uint64_t)Ce) >> (64 - 1)));
    De = Ca ^ ((((uint64_t)Ci) << 1) ^ (((uint64_t)Ci) >> (64 - 1)));
    Di = Ce ^ ((((uint64_t)Co) << 1) ^ (((uint64_t)Co) >> (64 - 1)));
    Do = Ci ^ ((((uint64_t)Cu) << 1) ^ (((uint64_t)Cu) >> (64 - 1)));
    Du = Co ^ ((((uint64_t)Ca) << 1) ^ (((uint64_t)Ca) >> (64 - 1)));
    Eba ^= Da;
    Bba = Eba;
    Ege ^= De;
    Bbe = ((((uint64_t)Ege) << 44) ^ (((uint64_t)Ege) >> (64 - 44)));
    Eki ^= Di;
    Bbi = ((((uint64_t)Eki) << 43) ^ (((uint64_t)Eki) >> (64 - 43)));
    Emo ^= Do;
    Bbo = ((((uint64_t)Emo) << 21) ^ (((uint64_t)Emo) >> (64 - 21)));
    Esu ^= Du;
    Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
    Aba = Bba ^ (Bbe | Bbi);
    Aba ^= kKeccakf[23];
    Abe = Bbe ^ ((~Bbi) | Bbo);
    Abi = Bbi ^ (Bbo & Bbu);
    Abo = Bbo ^ (Bbu | Bba);
    Abu = Bbu ^ (Bba & Bbe);
    Ebo ^= Do;
    Bga = ((((uint64_t)Ebo) << 28) ^ (((uint64_t)Ebo) >> (64 - 28)));
    Egu ^= Du;
    Bge = ((((uint64_t)Egu) << 20) ^ (((uint64_t)Egu) >> (64 - 20)));
    Eka ^= Da;
    Bgi = ((((uint64_t)Eka) << 3) ^ (((uint64_t)Eka) >> (64 - 3)));
    Eme ^= De;
    Bgo = ((((uint64_t)Eme) << 45) ^ (((uint64_t)Eme) >> (64 - 45)));
    Esi ^= Di;
    Bgu = ((((uint64_t)Esi) << 61) ^ (((uint64_t)Esi) >> (64 - 61)));
    Aga = Bga ^ (Bge | Bgi);
    Age = Bge ^ (Bgi & Bgo);
    Agi = Bgi ^ (Bgo | (~Bgu));
    Ago = Bgo ^ (Bgu | Bga);
    Agu = Bgu ^ (Bga & Bge);
    Ebe ^= De;
    Bka = ((((uint64_t)Ebe) << 1) ^ (((uint64_t)Ebe) >> (64 - 1)));
    Egi ^= Di;
    Bke = ((((uint64_t)Egi) << 6) ^ (((uint64_t)Egi) >> (64 - 6)));
    Eko ^= Do;
    Bki = ((((uint64_t)Eko) << 25) ^ (((uint64_t)Eko) >> (64 - 25)));
    Emu ^= Du;
    Bko = ((((uint64_t)Emu) << 8) ^ (((uint64_t)Emu) >> (64 - 8)));
    Esa ^= Da;
    Bku = ((((uint64_t)Esa) << 18) ^ (((uint64_t)Esa) >> (64 - 18)));
    Aka = Bka ^ (Bke | Bki);
    Ake = Bke ^ (Bki & Bko);
    Aki = Bki ^ ((~Bko) & Bku);
    Ako = (~Bko) ^ (Bku | Bka);
    Aku = Bku ^ (Bka & Bke);
    Ebu ^= Du;
    Bma = ((((uint64_t)Ebu) << 27) ^ (((uint64_t)Ebu) >> (64 - 27)));
    Ega ^= Da;
    Bme = ((((uint64_t)Ega) << 36) ^ (((uint64_t)Ega) >> (64 - 36)));
    Eke ^= De;
    Bmi = ((((uint64_t)Eke) << 10) ^ (((uint64_t)Eke) >> (64 - 10)));
    Emi ^= Di;
    Bmo = ((((uint64_t)Emi) << 15) ^ (((uint64_t)Emi) >> (64 - 15)));
    Eso ^= Do;
    Bmu = ((((uint64_t)Eso) << 56) ^ (((uint64_t)Eso) >> (64 - 56)));
    Ama = Bma ^ (Bme & Bmi);
    Ame = Bme ^ (Bmi | Bmo);
    Ami = Bmi ^ ((~Bmo) | Bmu);
    Amo = (~Bmo) ^ (Bmu & Bma);
    Amu = Bmu ^ (Bma | Bme);
    Ebi ^= Di;
    Bsa = ((((uint64_t)Ebi) << 62) ^ (((uint64_t)Ebi) >> (64 - 62)));
    Ego ^= Do;
    Bse = ((((uint64_t)Ego) << 55) ^ (((uint64_t)Ego) >> (64 - 55)));
    Eku ^= Du;
    Bsi = ((((uint64_t)Eku) << 39) ^ (((uint64_t)Eku) >> (64 - 39)));
    Ema ^= Da;
    Bso = ((((uint64_t)Ema) << 41) ^ (((uint64_t)Ema) >> (64 - 41)));
    Ese ^= De;
    Bsu = ((((uint64_t)Ese) << 2) ^ (((uint64_t)Ese) >> (64 - 2)));
    Asa = Bsa ^ ((~Bse) & Bsi);
    Ase = (~Bse) ^ (Bsi | Bso);
    Asi = Bsi ^ (Bso & Bsu);
    Aso = Bso ^ (Bsu | Bsa);
    Asu = Bsu ^ (Bsa & Bse);
    inDataAsLanes += laneCount;
    dataByteLen -= laneCount * 8;
  }
  stateAsLanes[0] = Aba;
  stateAsLanes[1] = Abe;
  stateAsLanes[2] = Abi;
  stateAsLanes[3] = Abo;
  stateAsLanes[4] = Abu;
  stateAsLanes[5] = Aga;
  stateAsLanes[6] = Age;
  stateAsLanes[7] = Agi;
  stateAsLanes[8] = Ago;
  stateAsLanes[9] = Agu;
  stateAsLanes[10] = Aka;
  stateAsLanes[11] = Ake;
  stateAsLanes[12] = Aki;
  stateAsLanes[13] = Ako;
  stateAsLanes[14] = Aku;
  stateAsLanes[15] = Ama;
  stateAsLanes[16] = Ame;
  stateAsLanes[17] = Ami;
  stateAsLanes[18] = Amo;
  stateAsLanes[19] = Amu;
  stateAsLanes[20] = Asa;
  stateAsLanes[21] = Ase;
  stateAsLanes[22] = Asi;
  stateAsLanes[23] = Aso;
  stateAsLanes[24] = Asu;
  return originalDataByteLen - dataByteLen;
}

static int _PySHA3_KeccakWidth1600_Sponge(
    unsigned int rate, unsigned int capacity, const unsigned char *input,
    size_t inputByteLen, unsigned char suffix, unsigned char *output,
    size_t outputByteLen) {
  forcealign(8) unsigned char state[200];
  unsigned int partialBlock;
  const unsigned char *curInput = input;
  unsigned char *curOutput = output;
  unsigned int rateInBytes = rate / 8;
  if (rate + capacity != 1600) return 1;
  if ((rate <= 0) || (rate > 1600) || ((rate % 8) != 0)) return 1;
  if (suffix == 0) return 1;
  _PySHA3_KeccakP1600_Initialize(state);
  if (((rateInBytes % (1600 / 200)) == 0) && (inputByteLen >= rateInBytes)) {
    size_t j;
    j = _PySHA3_KeccakF1600_FastLoop_Absorb(state, rateInBytes / (1600 / 200),
                                            curInput, inputByteLen);
    curInput += j;
    inputByteLen -= j;
  }
  while (inputByteLen >= (size_t)rateInBytes) {
    _PySHA3_KeccakP1600_AddBytes(state, curInput, 0, rateInBytes);
    _PySHA3_KeccakP1600_Permute_24rounds(state);
    curInput += rateInBytes;
    inputByteLen -= rateInBytes;
  }
  partialBlock = (unsigned int)inputByteLen;
  _PySHA3_KeccakP1600_AddBytes(state, curInput, 0, partialBlock);
  ((unsigned char *)(state))[(partialBlock)] ^= (suffix);
  if ((suffix >= 0x80) && (partialBlock == (rateInBytes - 1)))
    _PySHA3_KeccakP1600_Permute_24rounds(state);
  ((unsigned char *)(state))[(rateInBytes - 1)] ^= (0x80);
  _PySHA3_KeccakP1600_Permute_24rounds(state);
  while (outputByteLen > (size_t)rateInBytes) {
    _PySHA3_KeccakP1600_ExtractBytes(state, curOutput, 0, rateInBytes);
    _PySHA3_KeccakP1600_Permute_24rounds(state);
    curOutput += rateInBytes;
    outputByteLen -= rateInBytes;
  }
  partialBlock = (unsigned int)outputByteLen;
  _PySHA3_KeccakP1600_ExtractBytes(state, curOutput, 0, partialBlock);
  return 0;
}

static int _PySHA3_KeccakWidth1600_SpongeAbsorb(
    KeccakWidth1600_SpongeInstance *instance, const unsigned char *data,
    size_t dataByteLen) {
  size_t i, j;
  unsigned int partialBlock;
  const unsigned char *curData;
  unsigned int rateInBytes = instance->rate / 8;
  if (instance->squeezing) return 1;
  i = 0;
  curData = data;
  while (i < dataByteLen) {
    if ((instance->byteIOIndex == 0) && (dataByteLen >= (i + rateInBytes))) {
      if ((rateInBytes % (1600 / 200)) == 0) {
        j = _PySHA3_KeccakF1600_FastLoop_Absorb(instance->state,
                                                rateInBytes / (1600 / 200),
                                                curData, dataByteLen - i);
        i += j;
        curData += j;
      } else {
        for (j = dataByteLen - i; j >= rateInBytes; j -= rateInBytes) {
          _PySHA3_KeccakP1600_AddBytes(instance->state, curData, 0,
                                       rateInBytes);
          _PySHA3_KeccakP1600_Permute_24rounds(instance->state);
          curData += rateInBytes;
        }
        i = dataByteLen - j;
      }
    } else {
      partialBlock = (unsigned int)(dataByteLen - i);
      if (partialBlock + instance->byteIOIndex > rateInBytes)
        partialBlock = rateInBytes - instance->byteIOIndex;
      i += partialBlock;
      _PySHA3_KeccakP1600_AddBytes(instance->state, curData,
                                   instance->byteIOIndex, partialBlock);
      curData += partialBlock;
      instance->byteIOIndex += partialBlock;
      if (instance->byteIOIndex == rateInBytes) {
        _PySHA3_KeccakP1600_Permute_24rounds(instance->state);
        instance->byteIOIndex = 0;
      }
    }
  }
  return 0;
}

static int _PySHA3_KeccakWidth1600_SpongeAbsorbLastFewBits(
    KeccakWidth1600_SpongeInstance *instance, unsigned char delimitedData) {
  unsigned int rateInBytes = instance->rate / 8;
  if (delimitedData == 0) return 1;
  if (instance->squeezing) return 1;
  ((unsigned char *)(instance->state))[(instance->byteIOIndex)] ^=
      (delimitedData);
  if ((delimitedData >= 0x80) && (instance->byteIOIndex == (rateInBytes - 1)))
    _PySHA3_KeccakP1600_Permute_24rounds(instance->state);
  ((unsigned char *)(instance->state))[(rateInBytes - 1)] ^= (0x80);
  _PySHA3_KeccakP1600_Permute_24rounds(instance->state);
  instance->byteIOIndex = 0;
  instance->squeezing = 1;
  return 0;
}

static int _PySHA3_KeccakWidth1600_SpongeSqueeze(
    KeccakWidth1600_SpongeInstance *instance, unsigned char *data,
    size_t dataByteLen) {
  size_t i, j;
  unsigned int partialBlock;
  unsigned int rateInBytes = instance->rate / 8;
  unsigned char *curData;
  if (!instance->squeezing)
    _PySHA3_KeccakWidth1600_SpongeAbsorbLastFewBits(instance, 0x01);
  i = 0;
  curData = data;
  while (i < dataByteLen) {
    if ((instance->byteIOIndex == rateInBytes) &&
        (dataByteLen >= (i + rateInBytes))) {
      for (j = dataByteLen - i; j >= rateInBytes; j -= rateInBytes) {
        _PySHA3_KeccakP1600_Permute_24rounds(instance->state);
        _PySHA3_KeccakP1600_ExtractBytes(instance->state, curData, 0,
                                         rateInBytes);
        curData += rateInBytes;
      }
      i = dataByteLen - j;
    } else {
      if (instance->byteIOIndex == rateInBytes) {
        _PySHA3_KeccakP1600_Permute_24rounds(instance->state);
        instance->byteIOIndex = 0;
      }
      partialBlock = (unsigned int)(dataByteLen - i);
      if (partialBlock + instance->byteIOIndex > rateInBytes)
        partialBlock = rateInBytes - instance->byteIOIndex;
      i += partialBlock;
      _PySHA3_KeccakP1600_ExtractBytes(instance->state, curData,
                                       instance->byteIOIndex, partialBlock);
      curData += partialBlock;
      instance->byteIOIndex += partialBlock;
    }
  }
  return 0;
}

static int _PySHA3_KeccakWidth1600_SpongeInitialize(
    KeccakWidth1600_SpongeInstance *instance, unsigned int rate,
    unsigned int capacity) {
  if (rate + capacity != 1600) return 1;
  if ((rate <= 0) || (rate > 1600) || ((rate % 8) != 0)) return 1;
  _PySHA3_KeccakP1600_Initialize(instance->state);
  instance->rate = rate;
  instance->byteIOIndex = 0;
  instance->squeezing = 0;
  return 0;
}

static HashReturn _PySHA3_Keccak_HashInitialize(Keccak_HashInstance *instance,
                                                unsigned int rate,
                                                unsigned int capacity,
                                                unsigned int hashbitlen,
                                                unsigned char delimitedSuffix) {
  HashReturn result;
  if (delimitedSuffix == 0) return FAIL;
  result = (HashReturn)_PySHA3_KeccakWidth1600_SpongeInitialize(
      &instance->sponge, rate, capacity);
  if (result != SUCCESS) return result;
  instance->fixedOutputLength = hashbitlen;
  instance->delimitedSuffix = delimitedSuffix;
  return SUCCESS;
}

static HashReturn _PySHA3_Keccak_HashUpdate(Keccak_HashInstance *instance,
                                            const unsigned char *data,
                                            size_t databitlen) {
  if ((databitlen % 8) == 0)
    return (HashReturn)_PySHA3_KeccakWidth1600_SpongeAbsorb(
        &instance->sponge, data, databitlen / 8);
  else {
    HashReturn ret = (HashReturn)_PySHA3_KeccakWidth1600_SpongeAbsorb(
        &instance->sponge, data, databitlen / 8);
    if (ret == SUCCESS) {
      unsigned char lastByte = data[databitlen / 8];
      unsigned short delimitedLastBytes =
          (unsigned short)((unsigned short)lastByte |
                           ((unsigned short)instance->delimitedSuffix
                            << (databitlen % 8)));
      if ((delimitedLastBytes & 0xFF00) == 0x0000) {
        instance->delimitedSuffix = delimitedLastBytes & 0xFF;
      } else {
        unsigned char oneByte[1];
        oneByte[0] = delimitedLastBytes & 0xFF;
        ret = (HashReturn)_PySHA3_KeccakWidth1600_SpongeAbsorb(
            &instance->sponge, oneByte, 1);
        instance->delimitedSuffix = (delimitedLastBytes >> 8) & 0xFF;
      }
    }
    return ret;
  }
}

static HashReturn _PySHA3_Keccak_HashFinal(Keccak_HashInstance *instance,
                                           unsigned char *hashval) {
  HashReturn ret = (HashReturn)_PySHA3_KeccakWidth1600_SpongeAbsorbLastFewBits(
      &instance->sponge, instance->delimitedSuffix);
  if (ret == SUCCESS)
    return (HashReturn)_PySHA3_KeccakWidth1600_SpongeSqueeze(
        &instance->sponge, hashval, instance->fixedOutputLength / 8);
  else
    return ret;
}

static HashReturn _PySHA3_Keccak_HashSqueeze(Keccak_HashInstance *instance,
                                             unsigned char *data,
                                             size_t databitlen) {
  if ((databitlen % 8) != 0) return FAIL;
  return (HashReturn)_PySHA3_KeccakWidth1600_SpongeSqueeze(
      &instance->sponge, data, databitlen / 8);
}

static void _PySHA3_KeccakP1600_ExtractAndAddBytesInLane(
    const void *state, unsigned int lanePosition, const unsigned char *input,
    unsigned char *output, unsigned int offset, unsigned int length) {
  uint64_t lane = ((uint64_t *)state)[lanePosition];
  if ((lanePosition == 1) || (lanePosition == 2) || (lanePosition == 8) ||
      (lanePosition == 12) || (lanePosition == 17) || (lanePosition == 20))
    lane = ~lane;
  {
    unsigned int i;
    uint64_t lane1[1];
    lane1[0] = lane;
    for (i = 0; i < length; i++)
      output[i] = input[i] ^ ((uint8_t *)lane1)[offset + i];
  }
}

static void _PySHA3_KeccakP1600_ExtractAndAddLanes(const void *state,
                                                   const unsigned char *input,
                                                   unsigned char *output,
                                                   unsigned int laneCount) {
  unsigned int i;
  for (i = 0; i < laneCount; i++) {
    ((uint64_t *)output)[i] =
        ((uint64_t *)input)[i] ^ ((const uint64_t *)state)[i];
  }
  if (laneCount > 1) {
    ((uint64_t *)output)[1] = ~((uint64_t *)output)[1];
    if (laneCount > 2) {
      ((uint64_t *)output)[2] = ~((uint64_t *)output)[2];
      if (laneCount > 8) {
        ((uint64_t *)output)[8] = ~((uint64_t *)output)[8];
        if (laneCount > 12) {
          ((uint64_t *)output)[12] = ~((uint64_t *)output)[12];
          if (laneCount > 17) {
            ((uint64_t *)output)[17] = ~((uint64_t *)output)[17];
            if (laneCount > 20) {
              ((uint64_t *)output)[20] = ~((uint64_t *)output)[20];
            }
          }
        }
      }
    }
  }
}

static void _PySHA3_KeccakP1600_ExtractAndAddBytes(const void *state,
                                                   const unsigned char *input,
                                                   unsigned char *output,
                                                   unsigned int offset,
                                                   unsigned int length) {
  if ((offset) == 0) {
    _PySHA3_KeccakP1600_ExtractAndAddLanes(state, input, output, (length) / 8);
    _PySHA3_KeccakP1600_ExtractAndAddBytesInLane(
        state, (length) / 8, (input) + ((length) / 8) * 8,
        (output) + ((length) / 8) * 8, 0, (length) % 8);
  } else {
    unsigned int _sizeLeft = (length);
    unsigned int _lanePosition = (offset) / 8;
    unsigned int _offsetInLane = (offset) % 8;
    const unsigned char *_curInput = (input);
    unsigned char *_curOutput = (output);
    while (_sizeLeft > 0) {
      unsigned int _bytesInLane = 8 - _offsetInLane;
      if (_bytesInLane > _sizeLeft) _bytesInLane = _sizeLeft;
      _PySHA3_KeccakP1600_ExtractAndAddBytesInLane(state, _lanePosition,
                                                   _curInput, _curOutput,
                                                   _offsetInLane, _bytesInLane);
      _sizeLeft -= _bytesInLane;
      _lanePosition++;
      _offsetInLane = 0;
      _curInput += _bytesInLane;
      _curOutput += _bytesInLane;
    }
  }
}

typedef struct {
  PyObject ob_base;
  Keccak_HashInstance hash_state;
} SHA3object;

static PyTypeObject SHA3_224type;
static PyTypeObject SHA3_256type;
static PyTypeObject SHA3_384type;
static PyTypeObject SHA3_512type;
static PyTypeObject SHAKE128type;
static PyTypeObject SHAKE256type;

static char _sha3_sha3_224_copy__doc__[] = "copy($self, /)\n"
                                           "--\n"
                                           "\n"
                                           "Return a copy of the hash object.";

static PyObject *_sha3_sha3_224_copy_impl(SHA3object *);

static PyObject *_sha3_sha3_224_copy(SHA3object *self, PyObject *_unused_ignored
                                     __attribute__((unused))) {
  return _sha3_sha3_224_copy_impl(self);
}

static char _sha3_sha3_224_digest__doc__[] =
    "digest($self, /)\n"
    "--\n"
    "\n"
    "Return the digest value as a bytes object.";

static PyObject *_sha3_sha3_224_digest_impl(SHA3object *);

static PyObject *_sha3_sha3_224_digest(SHA3object *self,
                                       PyObject *_unused_ignored
                                       __attribute__((unused))) {
  return _sha3_sha3_224_digest_impl(self);
}

static char _sha3_sha3_224_hexdigest__doc__[] =
    "hexdigest($self, /)\n"
    "--\n"
    "\n"
    "Return the digest value as a string of hexadecimal digits.";

static PyObject *_sha3_sha3_224_hexdigest_impl(SHA3object *);

static PyObject *_sha3_sha3_224_hexdigest(SHA3object *self,
                                          PyObject *_unused_ignored
                                          __attribute__((unused))) {
  return _sha3_sha3_224_hexdigest_impl(self);
}

static char _sha3_sha3_224_update__doc__[] =
    "update($self, data, /)\n"
    "--\n"
    "\n"
    "Update this hash object\'s state with the provided bytes-like object.";

static char _sha3_shake_128_digest__doc__[] =
    "digest($self, length, /)\n"
    "--\n"
    "\n"
    "Return the digest value as a bytes object.";

static char _sha3_shake_128_hexdigest__doc__[] =
    "hexdigest($self, length, /)\n"
    "--\n"
    "\n"
    "Return the digest value as a string of hexadecimal digits.";

static SHA3object *newSHA3object(PyTypeObject *type) {
  SHA3object *newobj;
  newobj = PyObject_New(SHA3object, type);
  if (!newobj) return 0;
  return newobj;
}

static PyObject *py_sha3_new(PyTypeObject *type, PyObject *args,
                             PyObject *kwargs) {
  SHA3object *self = 0;
  Py_buffer buf = {0, 0};
  HashReturn res;
  PyObject *data = 0;
  if (!_PyArg_NoKeywords(type->tp_name, kwargs)) {
    return 0;
  }
  if (!PyArg_UnpackTuple(args, type->tp_name, 0, 1, &data)) {
    return 0;
  }
  self = newSHA3object(type);
  if (self == 0) {
    goto error;
  }
  if (type == &SHA3_224type) {
    res =
        _PySHA3_Keccak_HashInitialize(&self->hash_state, 1152, 448, 224, 0x06);
  } else if (type == &SHA3_256type) {
    res =
        _PySHA3_Keccak_HashInitialize(&self->hash_state, 1088, 512, 256, 0x06);
  } else if (type == &SHA3_384type) {
    res = _PySHA3_Keccak_HashInitialize(&self->hash_state, 832, 768, 384, 0x06);
  } else if (type == &SHA3_512type) {
    res =
        _PySHA3_Keccak_HashInitialize(&self->hash_state, 576, 1024, 512, 0x06);
  } else if (type == &SHAKE128type) {
    res = _PySHA3_Keccak_HashInitialize(&self->hash_state, 1344, 256, 0, 0x1F);
  } else if (type == &SHAKE256type) {
    res = _PySHA3_Keccak_HashInitialize(&self->hash_state, 1088, 512, 0, 0x1F);
  } else {
    PyErr_BadInternalCall();
    goto error;
  }
  if (data) {
    do {
      if (((((((PyObject *)((data)))->ob_type))->tp_flags & ((1UL << 28))) !=
           0)) {
        PyErr_SetString(PyExc_TypeError,
                        "Unicode-objects must be encoded before hashing");
        goto error;
      }
      if (!((((data))->ob_type->tp_as_buffer != 0) &&
            (((data))->ob_type->tp_as_buffer->bf_getbuffer != 0))) {
        PyErr_SetString(PyExc_TypeError,
                        "object supporting the buffer API required");
        goto error;
      }
      if (PyObject_GetBuffer((data), (&buf), 0) == -1) {
        goto error;
      }
      if ((&buf)->ndim > 1) {
        PyErr_SetString(PyExc_BufferError, "Buffer must be single dimension");
        PyBuffer_Release((&buf));
        goto error;
      }
    } while (0);
    res = _PySHA3_Keccak_HashUpdate(&self->hash_state, buf.buf, buf.len * 8);
    if (res != SUCCESS) {
      PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Update()");
      goto error;
    }
    PyBuffer_Release(&buf);
  }
  return (PyObject *)self;
error:
  if (self) {
    do {
      PyObject *_py_decref_tmp = (PyObject *)(self);
      if (--(_py_decref_tmp)->ob_refcnt != 0)
        ;
      else
        ((*(((PyObject *)(_py_decref_tmp))->ob_type)->tp_dealloc)(
            (PyObject *)(_py_decref_tmp)));
    } while (0);
  }
  if (data && buf.obj) {
    PyBuffer_Release(&buf);
  }
  return 0;
}

static void SHA3_dealloc(SHA3object *self) {
  PyObject_Free(self);
}

static PyObject *_sha3_sha3_224_copy_impl(SHA3object *self) {
  SHA3object *newobj;
  if ((newobj = newSHA3object((((PyObject *)(self))->ob_type))) == 0) {
    return 0;
  }
  memcpy(&(newobj->hash_state), &(self->hash_state),
         sizeof(Keccak_HashInstance));
  return (PyObject *)newobj;
}

static PyObject *_sha3_sha3_224_digest_impl(SHA3object *self) {
  unsigned char digest[64 + (20 * 8)];
  Keccak_HashInstance temp;
  HashReturn res;
  memcpy(&(temp), &(self->hash_state), sizeof(Keccak_HashInstance));
  res = _PySHA3_Keccak_HashFinal(&temp, digest);
  if (res != SUCCESS) {
    PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Final()");
    return 0;
  }
  return PyBytes_FromStringAndSize((const char *)digest,
                                   self->hash_state.fixedOutputLength / 8);
}

static PyObject *_sha3_sha3_224_hexdigest_impl(SHA3object *self) {
  unsigned char digest[64 + (20 * 8)];
  Keccak_HashInstance temp;
  HashReturn res;
  memcpy(&(temp), &(self->hash_state), sizeof(Keccak_HashInstance));
  res = _PySHA3_Keccak_HashFinal(&temp, digest);
  if (res != SUCCESS) {
    PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Final()");
    return 0;
  }
  return _Py_strhex((const char *)digest,
                    self->hash_state.fixedOutputLength / 8);
}

static PyObject *_sha3_sha3_224_update(SHA3object *self, PyObject *data) {
  Py_buffer buf;
  HashReturn res;
  do {
    if (((((((PyObject *)((data)))->ob_type))->tp_flags & ((1UL << 28))) !=
         0)) {
      PyErr_SetString(PyExc_TypeError,
                      "Unicode-objects must be encoded before hashing");
      return 0;
    }
    if (!((((data))->ob_type->tp_as_buffer != 0) &&
          (((data))->ob_type->tp_as_buffer->bf_getbuffer != 0))) {
      PyErr_SetString(PyExc_TypeError,
                      "object supporting the buffer API required");
      return 0;
    }
    if (PyObject_GetBuffer((data), (&buf), 0) == -1) {
      return 0;
    }
    if ((&buf)->ndim > 1) {
      PyErr_SetString(PyExc_BufferError, "Buffer must be single dimension");
      PyBuffer_Release((&buf));
      return 0;
    }
  } while (0);
  res = _PySHA3_Keccak_HashUpdate(&self->hash_state, buf.buf, buf.len * 8);
  if (res != SUCCESS) {
    PyBuffer_Release(&buf);
    PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Update()");
    return 0;
  }
  PyBuffer_Release(&buf);
  (((PyObject *)((&_Py_NoneStruct)))->ob_refcnt++);
  return (&_Py_NoneStruct);
}

static PyMethodDef SHA3_methods[] = {
    {"copy", (PyCFunction)_sha3_sha3_224_copy, 0x0004,
     _sha3_sha3_224_copy__doc__},
    {"digest", (PyCFunction)_sha3_sha3_224_digest, 0x0004,
     _sha3_sha3_224_digest__doc__},
    {"hexdigest", (PyCFunction)_sha3_sha3_224_hexdigest, 0x0004,
     _sha3_sha3_224_hexdigest__doc__},
    {"update", (PyCFunction)_sha3_sha3_224_update, 0x0008,
     _sha3_sha3_224_update__doc__},
    {0},
};

static PyObject *SHA3_get_block_size(SHA3object *self, void *closure) {
  int rate = self->hash_state.sponge.rate;
  return PyLong_FromLong(rate / 8);
}

static PyObject *SHA3_get_name(SHA3object *self, void *closure) {
  PyTypeObject *type = (((PyObject *)(self))->ob_type);
  if (type == &SHA3_224type) {
    return PyUnicode_FromString("sha3_224");
  } else if (type == &SHA3_256type) {
    return PyUnicode_FromString("sha3_256");
  } else if (type == &SHA3_384type) {
    return PyUnicode_FromString("sha3_384");
  } else if (type == &SHA3_512type) {
    return PyUnicode_FromString("sha3_512");
  } else if (type == &SHAKE128type) {
    return PyUnicode_FromString("shake_128");
  } else if (type == &SHAKE256type) {
    return PyUnicode_FromString("shake_256");
  } else {
    PyErr_BadInternalCall();
    return 0;
  }
}

static PyObject *SHA3_get_digest_size(SHA3object *self, void *closure) {
  return PyLong_FromLong(self->hash_state.fixedOutputLength / 8);
}

static PyObject *SHA3_get_capacity_bits(SHA3object *self, void *closure) {
  int capacity = 1600 - self->hash_state.sponge.rate;
  return PyLong_FromLong(capacity);
}

static PyObject *SHA3_get_rate_bits(SHA3object *self, void *closure) {
  unsigned int rate = self->hash_state.sponge.rate;
  return PyLong_FromLong(rate);
}

static PyObject *SHA3_get_suffix(SHA3object *self, void *closure) {
  unsigned char suffix[2];
  suffix[0] = self->hash_state.delimitedSuffix;
  suffix[1] = 0;
  return PyBytes_FromStringAndSize((const char *)suffix, 1);
}

static PyGetSetDef SHA3_getseters[] = {
    {"block_size", (getter)SHA3_get_block_size},
    {"name", (getter)SHA3_get_name},
    {"digest_size", (getter)SHA3_get_digest_size},
    {"_capacity_bits", (getter)SHA3_get_capacity_bits},
    {"_rate_bits", (getter)SHA3_get_rate_bits},
    {"_suffix", (getter)SHA3_get_suffix},
    {0},
};

static char sha3_224__doc__[] =
    "sha3_224([data]) -> SHA3 object\n\nReturn a new SHA3 hash object with a "
    "hashbit length of 28 bytes.";

static char sha3_256__doc__[] =
    "sha3_256([data]) -> SHA3 object\n\nReturn a new SHA3 hash object with a "
    "hashbit length of 32 bytes.";

static char sha3_384__doc__[] =
    "sha3_384([data]) -> SHA3 object\n\nReturn a new SHA3 hash object with a "
    "hashbit length of 48 bytes.";

static char sha3_512__doc__[] =
    "sha3_512([data]) -> SHA3 object\n\nReturn a new SHA3 hash object with a "
    "hashbit length of 64 bytes.";

static PyTypeObject SHA3_224type = {
    PyVarObject_HEAD_INIT(NULL, 0) "_sha3.sha3_224",
    sizeof(SHA3object),
    0,
    (destructor)SHA3_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    (0 | (1UL << 18) | 0),
    sha3_224__doc__,
    0,
    0,
    0,
    0,
    0,
    0,
    SHA3_methods,
    0,
    SHA3_getseters,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    py_sha3_new,
};

static PyTypeObject SHA3_256type = {
    PyVarObject_HEAD_INIT(NULL, 0) "_sha3.sha3_256",
    sizeof(SHA3object),
    0,
    (destructor)SHA3_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    (0 | (1UL << 18) | 0),
    sha3_256__doc__,
    0,
    0,
    0,
    0,
    0,
    0,
    SHA3_methods,
    0,
    SHA3_getseters,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    py_sha3_new,
};

static PyTypeObject SHA3_384type = {
    PyVarObject_HEAD_INIT(NULL, 0) "_sha3.sha3_384",
    sizeof(SHA3object),
    0,
    (destructor)SHA3_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    (0 | (1UL << 18) | 0),
    sha3_384__doc__,
    0,
    0,
    0,
    0,
    0,
    0,
    SHA3_methods,
    0,
    SHA3_getseters,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    py_sha3_new,
};

static PyTypeObject SHA3_512type = {
    PyVarObject_HEAD_INIT(NULL, 0) "_sha3.sha3_512",
    sizeof(SHA3object),
    0,
    (destructor)SHA3_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    (0 | (1UL << 18) | 0),
    sha3_512__doc__,
    0,
    0,
    0,
    0,
    0,
    0,
    SHA3_methods,
    0,
    SHA3_getseters,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    py_sha3_new,
};

static PyObject *_SHAKE_digest(SHA3object *self, PyObject *digestlen_obj,
                               int hex) {
  unsigned long digestlen;
  unsigned char *digest = 0;
  Keccak_HashInstance temp;
  int res;
  PyObject *result = 0;
  digestlen = PyLong_AsUnsignedLong(digestlen_obj);
  if (digestlen == (unsigned long)-1 && PyErr_Occurred()) {
    return 0;
  }
  if (digestlen >= (1 << 29)) {
    PyErr_SetString(PyExc_ValueError, "length is too large");
    return 0;
  }
  digest = (unsigned char *)PyMem_Malloc(digestlen + (20 * 8));
  if (digest == 0) {
    return PyErr_NoMemory();
  }
  memcpy(&(temp), &(self->hash_state), sizeof(Keccak_HashInstance));
  res = _PySHA3_Keccak_HashFinal(&temp, 0);
  if (res != SUCCESS) {
    PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 done()");
    goto error;
  }
  res = _PySHA3_Keccak_HashSqueeze(&temp, digest, digestlen * 8);
  if (res != SUCCESS) {
    PyErr_SetString(PyExc_RuntimeError, "internal error in SHA3 Squeeze()");
    return 0;
  }
  if (hex) {
    result = _Py_strhex((const char *)digest, digestlen);
  } else {
    result = PyBytes_FromStringAndSize((const char *)digest, digestlen);
  }
error:
  if (digest != 0) {
    PyMem_Free(digest);
  }
  return result;
}

static PyObject *_sha3_shake_128_digest(SHA3object *self, PyObject *length) {
  return _SHAKE_digest(self, length, 0);
}

static PyObject *_sha3_shake_128_hexdigest(SHA3object *self, PyObject *length) {
  return _SHAKE_digest(self, length, 1);
}

static PyMethodDef SHAKE_methods[] = {
    {"copy", (PyCFunction)_sha3_sha3_224_copy, 0x0004,
     _sha3_sha3_224_copy__doc__},
    {"digest", (PyCFunction)_sha3_shake_128_digest, 0x0008,
     _sha3_shake_128_digest__doc__},
    {"hexdigest", (PyCFunction)_sha3_shake_128_hexdigest, 0x0008,
     _sha3_shake_128_hexdigest__doc__},
    {"update", (PyCFunction)_sha3_sha3_224_update, 0x0008,
     _sha3_sha3_224_update__doc__},
    {0, 0}};

static char shake_128__doc__[] =
    "shake_128([data]) -> SHAKE object\n\nReturn a new SHAKE hash object.";

static char shake_256__doc__[] =
    "shake_256([data]) -> SHAKE object\n\nReturn a new SHAKE hash object.";

static PyTypeObject SHAKE128type = {
    PyVarObject_HEAD_INIT(NULL, 0) "_sha3.shake_128",
    sizeof(SHA3object),
    0,
    (destructor)SHA3_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    (0 | (1UL << 18) | 0),
    shake_128__doc__,
    0,
    0,
    0,
    0,
    0,
    0,
    SHAKE_methods,
    0,
    SHA3_getseters,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    py_sha3_new,
};
static PyTypeObject SHAKE256type = {
    PyVarObject_HEAD_INIT(NULL, 0) "_sha3.shake_256",
    sizeof(SHA3object),
    0,
    (destructor)SHA3_dealloc,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    (0 | (1UL << 18) | 0),
    shake_256__doc__,
    0,
    0,
    0,
    0,
    0,
    0,
    SHAKE_methods,
    0,
    SHA3_getseters,
    0,
    0,
    0,
    0,
    0,
    0,
    0,
    py_sha3_new,
};

static struct PyModuleDef _SHA3module = {PyModuleDef_HEAD_INIT, "_sha3", 0, -1};

PyObject *PyInit__sha3(void) {
  PyObject *m = 0;
  if ((m = PyModule_Create2(&_SHA3module, 1013)) == 0) {
    return 0;
  }
  do {
    (((PyObject *)(&SHA3_224type))->ob_type) = &PyType_Type;
    if (PyType_Ready(&SHA3_224type) < 0) {
      goto error;
    }
    (((PyObject *)((PyObject *)&SHA3_224type))->ob_refcnt++);
    if (PyModule_AddObject(m, "sha3_224", (PyObject *)&SHA3_224type) < 0) {
      goto error;
    }
  } while (0);
  do {
    (((PyObject *)(&SHA3_256type))->ob_type) = &PyType_Type;
    if (PyType_Ready(&SHA3_256type) < 0) {
      goto error;
    }
    (((PyObject *)((PyObject *)&SHA3_256type))->ob_refcnt++);
    if (PyModule_AddObject(m, "sha3_256", (PyObject *)&SHA3_256type) < 0) {
      goto error;
    }
  } while (0);
  do {
    (((PyObject *)(&SHA3_384type))->ob_type) = &PyType_Type;
    if (PyType_Ready(&SHA3_384type) < 0) {
      goto error;
    }
    (((PyObject *)((PyObject *)&SHA3_384type))->ob_refcnt++);
    if (PyModule_AddObject(m, "sha3_384", (PyObject *)&SHA3_384type) < 0) {
      goto error;
    }
  } while (0);
  do {
    (((PyObject *)(&SHA3_512type))->ob_type) = &PyType_Type;
    if (PyType_Ready(&SHA3_512type) < 0) {
      goto error;
    }
    (((PyObject *)((PyObject *)&SHA3_512type))->ob_refcnt++);
    if (PyModule_AddObject(m, "sha3_512", (PyObject *)&SHA3_512type) < 0) {
      goto error;
    }
  } while (0);
  do {
    (((PyObject *)(&SHAKE128type))->ob_type) = &PyType_Type;
    if (PyType_Ready(&SHAKE128type) < 0) {
      goto error;
    }
    (((PyObject *)((PyObject *)&SHAKE128type))->ob_refcnt++);
    if (PyModule_AddObject(m, "shake_128", (PyObject *)&SHAKE128type) < 0) {
      goto error;
    }
  } while (0);
  do {
    (((PyObject *)(&SHAKE256type))->ob_type) = &PyType_Type;
    if (PyType_Ready(&SHAKE256type) < 0) {
      goto error;
    }
    (((PyObject *)((PyObject *)&SHAKE256type))->ob_refcnt++);
    if (PyModule_AddObject(m, "shake_256", (PyObject *)&SHAKE256type) < 0) {
      goto error;
    }
  } while (0);
  if (PyModule_AddIntConstant(m, "keccakopt", 64) < 0) {
    goto error;
  }
  if (PyModule_AddStringConstant(m, "implementation",
                                 "generic 64-bit optimized implementation ("
                                 "lane complementing, all rounds unrolled"
                                 ")") < 0) {
    goto error;
  }
  return m;
error:
  do {
    PyObject *_py_decref_tmp = (PyObject *)(m);
    if (--(_py_decref_tmp)->ob_refcnt != 0)
      ;
    else
      ((*(((PyObject *)(_py_decref_tmp))->ob_type)->tp_dealloc)(
          (PyObject *)(_py_decref_tmp)));
  } while (0);
  return 0;
}

_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__sha3 = {
    "_sha3",
    PyInit__sha3,
};
