#include "pch.h"
#include "diamond.h"
#ifdef DIAMOND_USE_PERMTABLE
NAMESPACE_BEGIN(CryptoPP)
#ifndef IS_LITTLE_ENDIAN
const word32 Diamond2LiteBase::permtable[8][256] =
{{0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,
0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,
0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,
0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,0x0,0x1000000,
0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,
0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,
0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,
0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,0x20,0x1000020,
0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,
0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,
0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,
0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,0x4000,0x1004000,
0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,
0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,
0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,
0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,0x4020,0x1004020,
0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,
0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,
0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,
0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,0x800000,0x1800000,
0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,
0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,
0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,
0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,0x800020,0x1800020,
0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,
0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,
0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,
0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,0x804000,0x1804000,
0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020,
0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020,
0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020,
0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020,0x804020,0x1804020},
{0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x0,0x10000,0x2000000,0x2010000,0x0,0x10000,0x2000000,0x2010000,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x40,0x10040,0x2000040,0x2010040,0x40,0x10040,0x2000040,0x2010040,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8000,0x18000,0x2008000,0x2018000,0x8000,0x18000,0x2008000,0x2018000,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040,
0x8040,0x18040,0x2008040,0x2018040,0x8040,0x18040,0x2008040,0x2018040},
{0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x0,0x100,0x20000,0x20100,0x4000000,0x4000100,0x4020000,0x4020100,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180,
0x80,0x180,0x20080,0x20180,0x4000080,0x4000180,0x4020080,0x4020180},
{0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,0x201,0x40000,0x40001,0x40200,0x40201,
0x8000000,0x8000001,0x8000200,0x8000201,0x8040000,0x8040001,0x8040200,0x8040201,
0x0,0x1,0x200,