ruby/missing/des_tables.c
nobu 1258bc559b des_tables.c
* missing/crypt_r.c: initialize DES tables statically.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55244 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-01 06:05:21 +00:00

1612 lines
59 KiB
C

/* Initial key schedule permutation */
static const C_block PC1ROT[64/CHUNKBITS][1<<CHUNKBITS] = {
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 1, 0, 0, 0, 0, 0,}},
{{ 0, 0, 1, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 1, 1, 0, 0, 0, 0,}},
{{ 0, 0, 1, 1, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 1, 0, 0, 16, 0, 0,}},
{{ 0, 0, 1, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 1, 0, 16, 0, 0,}},
{{ 0, 0, 0, 1, 0, 16, 0, 0,}},
{{ 0, 0, 1, 1, 0, 16, 0, 0,}},
{{ 0, 0, 1, 1, 0, 16, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0,128, 0, 0, 0,}},
{{ 0, 0, 4, 0, 0, 0, 0, 0,}},
{{ 0, 0, 4, 0,128, 0, 0, 0,}},
{{ 0, 16, 0, 0, 0, 0, 0, 0,}},
{{ 0, 16, 0, 0,128, 0, 0, 0,}},
{{ 0, 16, 4, 0, 0, 0, 0, 0,}},
{{ 0, 16, 4, 0,128, 0, 0, 0,}},
{{ 0, 0, 0, 8, 0, 0, 0, 0,}},
{{ 0, 0, 0, 8,128, 0, 0, 0,}},
{{ 0, 0, 4, 8, 0, 0, 0, 0,}},
{{ 0, 0, 4, 8,128, 0, 0, 0,}},
{{ 0, 16, 0, 8, 0, 0, 0, 0,}},
{{ 0, 16, 0, 8,128, 0, 0, 0,}},
{{ 0, 16, 4, 8, 0, 0, 0, 0,}},
{{ 0, 16, 4, 8,128, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 64, 0,}},
{{ 0, 0, 0, 0, 0, 0, 64, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 0, 0, 64, 8,}},
{{ 0, 0, 0, 0, 0, 0, 64, 8,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 64, 16,}},
{{ 0, 0, 0, 0, 0, 0, 64, 16,}},
{{ 0, 0, 0, 0, 0, 0, 0, 24,}},
{{ 0, 0, 0, 0, 0, 0, 0, 24,}},
{{ 0, 0, 0, 0, 0, 0, 64, 24,}},
{{ 0, 0, 0, 0, 0, 0, 64, 24,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 2, 0, 0, 0, 0,}},
{{ 0, 1, 0, 0, 0, 0, 0, 0,}},
{{ 0, 1, 0, 2, 0, 0, 0, 0,}},
{{ 4, 0, 0, 0, 0, 0, 0, 0,}},
{{ 4, 0, 0, 2, 0, 0, 0, 0,}},
{{ 4, 1, 0, 0, 0, 0, 0, 0,}},
{{ 4, 1, 0, 2, 0, 0, 0, 0,}},
{{ 0, 32, 0, 0, 0, 0, 0, 0,}},
{{ 0, 32, 0, 2, 0, 0, 0, 0,}},
{{ 0, 33, 0, 0, 0, 0, 0, 0,}},
{{ 0, 33, 0, 2, 0, 0, 0, 0,}},
{{ 4, 32, 0, 0, 0, 0, 0, 0,}},
{{ 4, 32, 0, 2, 0, 0, 0, 0,}},
{{ 4, 33, 0, 0, 0, 0, 0, 0,}},
{{ 4, 33, 0, 2, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 64, 0, 0,}},
{{ 0, 0, 0, 0, 0, 64, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 64, 0, 0,}},
{{ 0, 0, 0, 0, 4, 64, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 8, 0,}},
{{ 0, 0, 0, 0, 0, 0, 8, 0,}},
{{ 0, 0, 0, 0, 0, 64, 8, 0,}},
{{ 0, 0, 0, 0, 0, 64, 8, 0,}},
{{ 0, 0, 0, 0, 4, 0, 8, 0,}},
{{ 0, 0, 0, 0, 4, 0, 8, 0,}},
{{ 0, 0, 0, 0, 4, 64, 8, 0,}},
{{ 0, 0, 0, 0, 4, 64, 8, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0,128, 0,}},
{{ 0, 64, 0, 0, 0, 0, 0, 0,}},
{{ 0, 64, 0, 0, 0, 0,128, 0,}},
{{ 0, 0, 0, 64, 0, 0, 0, 0,}},
{{ 0, 0, 0, 64, 0, 0,128, 0,}},
{{ 0, 64, 0, 64, 0, 0, 0, 0,}},
{{ 0, 64, 0, 64, 0, 0,128, 0,}},
{{128, 0, 0, 0, 0, 0, 0, 0,}},
{{128, 0, 0, 0, 0, 0,128, 0,}},
{{128, 64, 0, 0, 0, 0, 0, 0,}},
{{128, 64, 0, 0, 0, 0,128, 0,}},
{{128, 0, 0, 64, 0, 0, 0, 0,}},
{{128, 0, 0, 64, 0, 0,128, 0,}},
{{128, 64, 0, 64, 0, 0, 0, 0,}},
{{128, 64, 0, 64, 0, 0,128, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0,128,}},
{{ 0, 0, 0, 0, 0, 0, 0,128,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0,128,}},
{{ 0, 0, 0, 0, 0, 8, 0,128,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0,128,}},
{{ 0, 0, 0, 0, 0,128, 0,128,}},
{{ 0, 0, 0, 0, 0,136, 0, 0,}},
{{ 0, 0, 0, 0, 0,136, 0, 0,}},
{{ 0, 0, 0, 0, 0,136, 0,128,}},
{{ 0, 0, 0, 0, 0,136, 0,128,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 8, 0, 0, 0,}},
{{ 0, 0, 0, 32, 0, 0, 0, 0,}},
{{ 0, 0, 0, 32, 8, 0, 0, 0,}},
{{ 0, 0, 16, 0, 0, 0, 0, 0,}},
{{ 0, 0, 16, 0, 8, 0, 0, 0,}},
{{ 0, 0, 16, 32, 0, 0, 0, 0,}},
{{ 0, 0, 16, 32, 8, 0, 0, 0,}},
{{ 0, 0, 32, 0, 0, 0, 0, 0,}},
{{ 0, 0, 32, 0, 8, 0, 0, 0,}},
{{ 0, 0, 32, 32, 0, 0, 0, 0,}},
{{ 0, 0, 32, 32, 8, 0, 0, 0,}},
{{ 0, 0, 48, 0, 0, 0, 0, 0,}},
{{ 0, 0, 48, 0, 8, 0, 0, 0,}},
{{ 0, 0, 48, 32, 0, 0, 0, 0,}},
{{ 0, 0, 48, 32, 8, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 16, 0, 0, 0,}},
{{ 0, 0, 0, 0, 16, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 16, 0, 16, 0,}},
{{ 0, 0, 0, 0, 16, 0, 16, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 80, 0, 0, 0,}},
{{ 0, 0, 0, 0, 80, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 16, 0,}},
{{ 0, 0, 0, 0, 64, 0, 16, 0,}},
{{ 0, 0, 0, 0, 80, 0, 16, 0,}},
{{ 0, 0, 0, 0, 80, 0, 16, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 16, 0, 0, 0, 0,}},
{{ 0, 0, 8, 0, 0, 0, 0, 0,}},
{{ 0, 0, 8, 16, 0, 0, 0, 0,}},
{{ 16, 0, 0, 0, 0, 0, 0, 0,}},
{{ 16, 0, 0, 16, 0, 0, 0, 0,}},
{{ 16, 0, 8, 0, 0, 0, 0, 0,}},
{{ 16, 0, 8, 16, 0, 0, 0, 0,}},
{{ 0, 4, 0, 0, 0, 0, 0, 0,}},
{{ 0, 4, 0, 16, 0, 0, 0, 0,}},
{{ 0, 4, 8, 0, 0, 0, 0, 0,}},
{{ 0, 4, 8, 16, 0, 0, 0, 0,}},
{{ 16, 4, 0, 0, 0, 0, 0, 0,}},
{{ 16, 4, 0, 16, 0, 0, 0, 0,}},
{{ 16, 4, 8, 0, 0, 0, 0, 0,}},
{{ 16, 4, 8, 16, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 4, 0, 0,}},
{{ 0, 0, 0, 0, 0, 4, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 4, 0, 0,}},
{{ 0, 0, 2, 0, 0, 4, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 4,}},
{{ 0, 0, 0, 0, 0, 0, 0, 4,}},
{{ 0, 0, 0, 0, 0, 4, 0, 4,}},
{{ 0, 0, 0, 0, 0, 4, 0, 4,}},
{{ 0, 0, 2, 0, 0, 0, 0, 4,}},
{{ 0, 0, 2, 0, 0, 0, 0, 4,}},
{{ 0, 0, 2, 0, 0, 4, 0, 4,}},
{{ 0, 0, 2, 0, 0, 4, 0, 4,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 64, 0, 0, 0, 0, 0,}},
{{ 2, 0, 0, 0, 0, 0, 0, 0,}},
{{ 2, 0, 64, 0, 0, 0, 0, 0,}},
{{ 0,128, 0, 0, 0, 0, 0, 0,}},
{{ 0,128, 64, 0, 0, 0, 0, 0,}},
{{ 2,128, 0, 0, 0, 0, 0, 0,}},
{{ 2,128, 64, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0,128, 0, 0, 0, 0,}},
{{ 0, 0, 64,128, 0, 0, 0, 0,}},
{{ 2, 0, 0,128, 0, 0, 0, 0,}},
{{ 2, 0, 64,128, 0, 0, 0, 0,}},
{{ 0,128, 0,128, 0, 0, 0, 0,}},
{{ 0,128, 64,128, 0, 0, 0, 0,}},
{{ 2,128, 0,128, 0, 0, 0, 0,}},
{{ 2,128, 64,128, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 32, 0, 0, 0,}},
{{ 0, 0, 0, 0, 32, 0, 0, 0,}},
{{ 0, 0, 0, 0, 32, 0, 0, 64,}},
{{ 0, 0, 0, 0, 32, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 64,}},
{{ 0, 0, 0, 0, 0, 32, 0, 64,}},
{{ 0, 0, 0, 0, 32, 32, 0, 0,}},
{{ 0, 0, 0, 0, 32, 32, 0, 0,}},
{{ 0, 0, 0, 0, 32, 32, 0, 64,}},
{{ 0, 0, 0, 0, 32, 32, 0, 64,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 2, 0, 0, 0, 0, 0, 0,}},
{{ 8, 0, 0, 0, 0, 0, 0, 0,}},
{{ 8, 2, 0, 0, 0, 0, 0, 0,}},
{{ 1, 0, 0, 0, 0, 0, 0, 0,}},
{{ 1, 2, 0, 0, 0, 0, 0, 0,}},
{{ 9, 0, 0, 0, 0, 0, 0, 0,}},
{{ 9, 2, 0, 0, 0, 0, 0, 0,}},
{{ 64, 0, 0, 0, 0, 0, 0, 0,}},
{{ 64, 2, 0, 0, 0, 0, 0, 0,}},
{{ 72, 0, 0, 0, 0, 0, 0, 0,}},
{{ 72, 2, 0, 0, 0, 0, 0, 0,}},
{{ 65, 0, 0, 0, 0, 0, 0, 0,}},
{{ 65, 2, 0, 0, 0, 0, 0, 0,}},
{{ 73, 0, 0, 0, 0, 0, 0, 0,}},
{{ 73, 2, 0, 0, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 32,}},
{{ 0, 0, 0, 0, 0, 0, 0, 32,}},
{{ 0, 0, 0, 0, 0, 0, 32, 32,}},
{{ 0, 0, 0, 0, 0, 0, 32, 32,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 0, 36, 0,}},
{{ 0, 0, 0, 0, 0, 0, 36, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 32,}},
{{ 0, 0, 0, 0, 0, 0, 4, 32,}},
{{ 0, 0, 0, 0, 0, 0, 36, 32,}},
{{ 0, 0, 0, 0, 0, 0, 36, 32,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 32, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 4, 0, 0, 0, 0,}},
{{ 32, 0, 0, 4, 0, 0, 0, 0,}},
{{ 0, 0,128, 0, 0, 0, 0, 0,}},
{{ 32, 0,128, 0, 0, 0, 0, 0,}},
{{ 0, 0,128, 4, 0, 0, 0, 0,}},
{{ 32, 0,128, 4, 0, 0, 0, 0,}},
{{ 0, 8, 0, 0, 0, 0, 0, 0,}},
{{ 32, 8, 0, 0, 0, 0, 0, 0,}},
{{ 0, 8, 0, 4, 0, 0, 0, 0,}},
{{ 32, 8, 0, 4, 0, 0, 0, 0,}},
{{ 0, 8,128, 0, 0, 0, 0, 0,}},
{{ 32, 8,128, 0, 0, 0, 0, 0,}},
{{ 0, 8,128, 4, 0, 0, 0, 0,}},
{{ 32, 8,128, 4, 0, 0, 0, 0,}},
},
};
/* Subsequent key schedule rotation permutations */
static const C_block PC2ROT[2][64/CHUNKBITS][1<<CHUNKBITS] = {
{
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0,128, 0, 0, 0, 0, 0,}},
{{ 8, 0, 0, 0, 0, 0, 0, 0,}},
{{ 8, 0,128, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 64, 0, 0, 0, 0,}},
{{ 0, 0,128, 64, 0, 0, 0, 0,}},
{{ 8, 0, 0, 64, 0, 0, 0, 0,}},
{{ 8, 0,128, 64, 0, 0, 0, 0,}},
{{ 0, 0, 0, 4, 0, 0, 0, 0,}},
{{ 0, 0,128, 4, 0, 0, 0, 0,}},
{{ 8, 0, 0, 4, 0, 0, 0, 0,}},
{{ 8, 0,128, 4, 0, 0, 0, 0,}},
{{ 0, 0, 0, 68, 0, 0, 0, 0,}},
{{ 0, 0,128, 68, 0, 0, 0, 0,}},
{{ 8, 0, 0, 68, 0, 0, 0, 0,}},
{{ 8, 0,128, 68, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0,128, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 4, 0, 0, 0, 0, 0,}},
{{ 0,128, 4, 0, 0, 0, 0, 0,}},
{{ 0, 8, 0, 0, 0, 0, 0, 0,}},
{{ 0,136, 0, 0, 0, 0, 0, 0,}},
{{ 0, 8, 4, 0, 0, 0, 0, 0,}},
{{ 0,136, 4, 0, 0, 0, 0, 0,}},
{{ 0, 0, 32, 0, 0, 0, 0, 0,}},
{{ 0,128, 32, 0, 0, 0, 0, 0,}},
{{ 0, 0, 36, 0, 0, 0, 0, 0,}},
{{ 0,128, 36, 0, 0, 0, 0, 0,}},
{{ 0, 8, 32, 0, 0, 0, 0, 0,}},
{{ 0,136, 32, 0, 0, 0, 0, 0,}},
{{ 0, 8, 36, 0, 0, 0, 0, 0,}},
{{ 0,136, 36, 0, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 64, 0, 0, 0, 0, 0, 0,}},
{{ 32, 0, 0, 0, 0, 0, 0, 0,}},
{{ 32, 64, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0,128, 0, 0, 0, 0,}},
{{ 0, 64, 0,128, 0, 0, 0, 0,}},
{{ 32, 0, 0,128, 0, 0, 0, 0,}},
{{ 32, 64, 0,128, 0, 0, 0, 0,}},
{{ 0, 0, 0, 16, 0, 0, 0, 0,}},
{{ 0, 64, 0, 16, 0, 0, 0, 0,}},
{{ 32, 0, 0, 16, 0, 0, 0, 0,}},
{{ 32, 64, 0, 16, 0, 0, 0, 0,}},
{{ 0, 0, 0,144, 0, 0, 0, 0,}},
{{ 0, 64, 0,144, 0, 0, 0, 0,}},
{{ 32, 0, 0,144, 0, 0, 0, 0,}},
{{ 32, 64, 0,144, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 4, 0, 0, 0, 0, 0, 0, 0,}},
{{128, 0, 0, 0, 0, 0, 0, 0,}},
{{132, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 32, 0, 0, 0, 0,}},
{{ 4, 0, 0, 32, 0, 0, 0, 0,}},
{{128, 0, 0, 32, 0, 0, 0, 0,}},
{{132, 0, 0, 32, 0, 0, 0, 0,}},
{{ 1, 0, 0, 0, 0, 0, 0, 0,}},
{{ 5, 0, 0, 0, 0, 0, 0, 0,}},
{{129, 0, 0, 0, 0, 0, 0, 0,}},
{{133, 0, 0, 0, 0, 0, 0, 0,}},
{{ 1, 0, 0, 32, 0, 0, 0, 0,}},
{{ 5, 0, 0, 32, 0, 0, 0, 0,}},
{{129, 0, 0, 32, 0, 0, 0, 0,}},
{{133, 0, 0, 32, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 64, 0,}},
{{ 0, 0, 0, 0, 32, 0, 0, 0,}},
{{ 0, 0, 0, 0, 32, 0, 64, 0,}},
{{ 0, 1, 0, 0, 0, 0, 0, 0,}},
{{ 0, 1, 0, 0, 0, 0, 64, 0,}},
{{ 0, 1, 0, 0, 32, 0, 0, 0,}},
{{ 0, 1, 0, 0, 32, 0, 64, 0,}},
{{ 2, 0, 0, 0, 0, 0, 0, 0,}},
{{ 2, 0, 0, 0, 0, 0, 64, 0,}},
{{ 2, 0, 0, 0, 32, 0, 0, 0,}},
{{ 2, 0, 0, 0, 32, 0, 64, 0,}},
{{ 2, 1, 0, 0, 0, 0, 0, 0,}},
{{ 2, 1, 0, 0, 0, 0, 64, 0,}},
{{ 2, 1, 0, 0, 32, 0, 0, 0,}},
{{ 2, 1, 0, 0, 32, 0, 64, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 16, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 4, 0, 0, 0, 0, 0, 0,}},
{{ 16, 4, 0, 0, 0, 0, 0, 0,}},
{{ 0, 2, 0, 0, 0, 0, 0, 0,}},
{{ 16, 2, 0, 0, 0, 0, 0, 0,}},
{{ 0, 6, 0, 0, 0, 0, 0, 0,}},
{{ 16, 6, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 8, 0, 0, 0, 0,}},
{{ 16, 0, 0, 8, 0, 0, 0, 0,}},
{{ 0, 4, 0, 8, 0, 0, 0, 0,}},
{{ 16, 4, 0, 8, 0, 0, 0, 0,}},
{{ 0, 2, 0, 8, 0, 0, 0, 0,}},
{{ 16, 2, 0, 8, 0, 0, 0, 0,}},
{{ 0, 6, 0, 8, 0, 0, 0, 0,}},
{{ 16, 6, 0, 8, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 0, 0,128, 0,}},
{{ 0, 0, 0, 0, 0, 0,128, 8,}},
{{ 0, 16, 0, 0, 0, 0, 0, 0,}},
{{ 0, 16, 0, 0, 0, 0, 0, 8,}},
{{ 0, 16, 0, 0, 0, 0,128, 0,}},
{{ 0, 16, 0, 0, 0, 0,128, 8,}},
{{ 0, 32, 0, 0, 0, 0, 0, 0,}},
{{ 0, 32, 0, 0, 0, 0, 0, 8,}},
{{ 0, 32, 0, 0, 0, 0,128, 0,}},
{{ 0, 32, 0, 0, 0, 0,128, 8,}},
{{ 0, 48, 0, 0, 0, 0, 0, 0,}},
{{ 0, 48, 0, 0, 0, 0, 0, 8,}},
{{ 0, 48, 0, 0, 0, 0,128, 0,}},
{{ 0, 48, 0, 0, 0, 0,128, 8,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 64, 0, 0, 0, 0, 0,}},
{{ 0, 0, 8, 0, 0, 0, 0, 0,}},
{{ 0, 0, 72, 0, 0, 0, 0, 0,}},
{{ 0, 0, 16, 0, 0, 0, 0, 0,}},
{{ 0, 0, 80, 0, 0, 0, 0, 0,}},
{{ 0, 0, 24, 0, 0, 0, 0, 0,}},
{{ 0, 0, 88, 0, 0, 0, 0, 0,}},
{{ 64, 0, 0, 0, 0, 0, 0, 0,}},
{{ 64, 0, 64, 0, 0, 0, 0, 0,}},
{{ 64, 0, 8, 0, 0, 0, 0, 0,}},
{{ 64, 0, 72, 0, 0, 0, 0, 0,}},
{{ 64, 0, 16, 0, 0, 0, 0, 0,}},
{{ 64, 0, 80, 0, 0, 0, 0, 0,}},
{{ 64, 0, 24, 0, 0, 0, 0, 0,}},
{{ 64, 0, 88, 0, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 24, 0, 0,}},
{{ 0, 0, 0, 0, 0, 24, 0, 0,}},
{{ 0, 0, 0, 0, 0, 24, 0, 0,}},
{{ 0, 0, 0, 0, 0, 24, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 4, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 32,}},
{{ 0, 0, 0, 0, 0, 4, 0, 32,}},
{{ 0, 0, 0, 0, 0, 0, 0, 4,}},
{{ 0, 0, 0, 0, 0, 4, 0, 4,}},
{{ 0, 0, 0, 0, 0, 0, 0, 36,}},
{{ 0, 0, 0, 0, 0, 4, 0, 36,}},
{{ 0, 0, 0, 2, 0, 0, 0, 0,}},
{{ 0, 0, 0, 2, 0, 4, 0, 0,}},
{{ 0, 0, 0, 2, 0, 0, 0, 32,}},
{{ 0, 0, 0, 2, 0, 4, 0, 32,}},
{{ 0, 0, 0, 2, 0, 0, 0, 4,}},
{{ 0, 0, 0, 2, 0, 4, 0, 4,}},
{{ 0, 0, 0, 2, 0, 0, 0, 36,}},
{{ 0, 0, 0, 2, 0, 4, 0, 36,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 64,}},
{{ 0, 0, 0, 0, 0, 0, 16, 64,}},
{{ 0, 0, 0, 0, 0, 0, 16, 64,}},
{{ 0, 0, 0, 0, 0, 0, 16, 64,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 16,}},
{{ 0, 0, 0, 0, 0, 0, 0,128,}},
{{ 0, 0, 0, 0, 0, 0, 0,144,}},
{{ 0, 0, 0, 0, 0, 0, 4,128,}},
{{ 0, 0, 0, 0, 0, 0, 4,144,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 16,}},
{{ 0, 0, 0, 0, 64, 0, 4, 0,}},
{{ 0, 0, 0, 0, 64, 0, 4, 16,}},
{{ 0, 0, 0, 0, 64, 0, 0,128,}},
{{ 0, 0, 0, 0, 64, 0, 0,144,}},
{{ 0, 0, 0, 0, 64, 0, 4,128,}},
{{ 0, 0, 0, 0, 64, 0, 4,144,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 1, 0,128, 0, 0,}},
{{ 0, 0, 0, 1, 0,128, 0, 0,}},
{{ 0, 0, 0, 1, 0,128, 0, 0,}},
{{ 0, 0, 0, 1, 0,128, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0,128, 0, 0, 0,}},
{{ 0, 0, 2, 0,128, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 64, 0, 0,}},
{{ 0, 0, 2, 0, 0, 64, 0, 0,}},
{{ 0, 0, 0, 0,128, 64, 0, 0,}},
{{ 0, 0, 2, 0,128, 64, 0, 0,}},
{{ 0, 0, 0, 0, 8, 0, 0, 0,}},
{{ 0, 0, 2, 0, 8, 0, 0, 0,}},
{{ 0, 0, 0, 0,136, 0, 0, 0,}},
{{ 0, 0, 2, 0,136, 0, 0, 0,}},
{{ 0, 0, 0, 0, 8, 64, 0, 0,}},
{{ 0, 0, 2, 0, 8, 64, 0, 0,}},
{{ 0, 0, 0, 0,136, 64, 0, 0,}},
{{ 0, 0, 2, 0,136, 64, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 32, 0, 0,}},
{{ 0, 0, 0, 0, 4, 32, 0, 0,}},
{{ 0, 0, 0, 0, 4, 32, 0, 0,}},
{{ 0, 0, 0, 0, 4, 32, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 8, 0,}},
{{ 0, 0, 1, 0, 0, 0, 0, 0,}},
{{ 0, 0, 1, 0, 0, 0, 8, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 40, 0,}},
{{ 0, 0, 1, 0, 0, 0, 32, 0,}},
{{ 0, 0, 1, 0, 0, 0, 40, 0,}},
{{ 0, 0, 0, 0, 16, 0, 0, 0,}},
{{ 0, 0, 0, 0, 16, 0, 8, 0,}},
{{ 0, 0, 1, 0, 16, 0, 0, 0,}},
{{ 0, 0, 1, 0, 16, 0, 8, 0,}},
{{ 0, 0, 0, 0, 16, 0, 32, 0,}},
{{ 0, 0, 0, 0, 16, 0, 40, 0,}},
{{ 0, 0, 1, 0, 16, 0, 32, 0,}},
{{ 0, 0, 1, 0, 16, 0, 40, 0,}},
},
},
{
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 8, 0, 0, 0, 0,}},
{{ 0, 0, 0, 4, 0, 0, 0, 0,}},
{{ 0, 0, 0, 12, 0, 0, 0, 0,}},
{{ 0, 0, 16, 0, 0, 0, 0, 0,}},
{{ 0, 0, 16, 8, 0, 0, 0, 0,}},
{{ 0, 0, 16, 4, 0, 0, 0, 0,}},
{{ 0, 0, 16, 12, 0, 0, 0, 0,}},
{{ 0, 16, 0, 0, 0, 0, 0, 0,}},
{{ 0, 16, 0, 8, 0, 0, 0, 0,}},
{{ 0, 16, 0, 4, 0, 0, 0, 0,}},
{{ 0, 16, 0, 12, 0, 0, 0, 0,}},
{{ 0, 16, 16, 0, 0, 0, 0, 0,}},
{{ 0, 16, 16, 8, 0, 0, 0, 0,}},
{{ 0, 16, 16, 4, 0, 0, 0, 0,}},
{{ 0, 16, 16, 12, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 1, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 1, 0, 0, 0, 0, 0, 0,}},
{{ 1, 1, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 16, 0, 0, 0, 0,}},
{{ 1, 0, 0, 16, 0, 0, 0, 0,}},
{{ 0, 1, 0, 16, 0, 0, 0, 0,}},
{{ 1, 1, 0, 16, 0, 0, 0, 0,}},
{{ 0, 4, 0, 0, 0, 0, 0, 0,}},
{{ 1, 4, 0, 0, 0, 0, 0, 0,}},
{{ 0, 5, 0, 0, 0, 0, 0, 0,}},
{{ 1, 5, 0, 0, 0, 0, 0, 0,}},
{{ 0, 4, 0, 16, 0, 0, 0, 0,}},
{{ 1, 4, 0, 16, 0, 0, 0, 0,}},
{{ 0, 5, 0, 16, 0, 0, 0, 0,}},
{{ 1, 5, 0, 16, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 32, 0, 0, 0, 0,}},
{{ 0, 0, 4, 0, 0, 0, 0, 0,}},
{{ 0, 0, 4, 32, 0, 0, 0, 0,}},
{{ 64, 0, 0, 0, 0, 0, 0, 0,}},
{{ 64, 0, 0, 32, 0, 0, 0, 0,}},
{{ 64, 0, 4, 0, 0, 0, 0, 0,}},
{{ 64, 0, 4, 32, 0, 0, 0, 0,}},
{{ 0, 0, 64, 0, 0, 0, 0, 0,}},
{{ 0, 0, 64, 32, 0, 0, 0, 0,}},
{{ 0, 0, 68, 0, 0, 0, 0, 0,}},
{{ 0, 0, 68, 32, 0, 0, 0, 0,}},
{{ 64, 0, 64, 0, 0, 0, 0, 0,}},
{{ 64, 0, 64, 32, 0, 0, 0, 0,}},
{{ 64, 0, 68, 0, 0, 0, 0, 0,}},
{{ 64, 0, 68, 32, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 64, 0, 0, 0, 0,}},
{{ 0, 0, 32, 0, 0, 0, 0, 0,}},
{{ 0, 0, 32, 64, 0, 0, 0, 0,}},
{{ 0, 0, 8, 0, 0, 0, 0, 0,}},
{{ 0, 0, 8, 64, 0, 0, 0, 0,}},
{{ 0, 0, 40, 0, 0, 0, 0, 0,}},
{{ 0, 0, 40, 64, 0, 0, 0, 0,}},
{{ 0, 0,128, 0, 0, 0, 0, 0,}},
{{ 0, 0,128, 64, 0, 0, 0, 0,}},
{{ 0, 0,160, 0, 0, 0, 0, 0,}},
{{ 0, 0,160, 64, 0, 0, 0, 0,}},
{{ 0, 0,136, 0, 0, 0, 0, 0,}},
{{ 0, 0,136, 64, 0, 0, 0, 0,}},
{{ 0, 0,168, 0, 0, 0, 0, 0,}},
{{ 0, 0,168, 64, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 64, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 32,}},
{{ 0, 0, 0, 0, 0, 64, 0, 32,}},
{{ 0, 64, 0, 0, 0, 0, 0, 0,}},
{{ 0, 64, 0, 0, 0, 64, 0, 0,}},
{{ 0, 64, 0, 0, 0, 0, 0, 32,}},
{{ 0, 64, 0, 0, 0, 64, 0, 32,}},
{{ 8, 0, 0, 0, 0, 0, 0, 0,}},
{{ 8, 0, 0, 0, 0, 64, 0, 0,}},
{{ 8, 0, 0, 0, 0, 0, 0, 32,}},
{{ 8, 0, 0, 0, 0, 64, 0, 32,}},
{{ 8, 64, 0, 0, 0, 0, 0, 0,}},
{{ 8, 64, 0, 0, 0, 64, 0, 0,}},
{{ 8, 64, 0, 0, 0, 0, 0, 32,}},
{{ 8, 64, 0, 0, 0, 64, 0, 32,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0,128, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0,128, 0, 0, 0, 0,}},
{{ 0,128, 0,128, 0, 0, 0, 0,}},
{{ 32, 0, 0, 0, 0, 0, 0, 0,}},
{{ 32,128, 0, 0, 0, 0, 0, 0,}},
{{ 32, 0, 0,128, 0, 0, 0, 0,}},
{{ 32,128, 0,128, 0, 0, 0, 0,}},
{{ 0, 32, 0, 0, 0, 0, 0, 0,}},
{{ 0,160, 0, 0, 0, 0, 0, 0,}},
{{ 0, 32, 0,128, 0, 0, 0, 0,}},
{{ 0,160, 0,128, 0, 0, 0, 0,}},
{{ 32, 32, 0, 0, 0, 0, 0, 0,}},
{{ 32,160, 0, 0, 0, 0, 0, 0,}},
{{ 32, 32, 0,128, 0, 0, 0, 0,}},
{{ 32,160, 0,128, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 8, 0, 0, 0,}},
{{ 0, 0, 0, 0, 12, 0, 0, 0,}},
{{ 4, 0, 0, 0, 0, 0, 0, 0,}},
{{ 4, 0, 0, 0, 4, 0, 0, 0,}},
{{ 4, 0, 0, 0, 8, 0, 0, 0,}},
{{ 4, 0, 0, 0, 12, 0, 0, 0,}},
{{128, 0, 0, 0, 0, 0, 0, 0,}},
{{128, 0, 0, 0, 4, 0, 0, 0,}},
{{128, 0, 0, 0, 8, 0, 0, 0,}},
{{128, 0, 0, 0, 12, 0, 0, 0,}},
{{132, 0, 0, 0, 0, 0, 0, 0,}},
{{132, 0, 0, 0, 4, 0, 0, 0,}},
{{132, 0, 0, 0, 8, 0, 0, 0,}},
{{132, 0, 0, 0, 12, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 2, 0, 0, 0, 0, 0, 0,}},
{{ 2, 0, 0, 0, 0, 0, 0, 0,}},
{{ 2, 2, 0, 0, 0, 0, 0, 0,}},
{{ 16, 0, 0, 0, 0, 0, 0, 0,}},
{{ 16, 2, 0, 0, 0, 0, 0, 0,}},
{{ 18, 0, 0, 0, 0, 0, 0, 0,}},
{{ 18, 2, 0, 0, 0, 0, 0, 0,}},
{{ 0, 8, 0, 0, 0, 0, 0, 0,}},
{{ 0, 10, 0, 0, 0, 0, 0, 0,}},
{{ 2, 8, 0, 0, 0, 0, 0, 0,}},
{{ 2, 10, 0, 0, 0, 0, 0, 0,}},
{{ 16, 8, 0, 0, 0, 0, 0, 0,}},
{{ 16, 10, 0, 0, 0, 0, 0, 0,}},
{{ 18, 8, 0, 0, 0, 0, 0, 0,}},
{{ 18, 10, 0, 0, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 16, 16,}},
{{ 0, 0, 0, 0, 0, 0, 16, 16,}},
{{ 0, 0, 0, 0, 0, 0, 16, 16,}},
{{ 0, 0, 0, 0, 0, 0, 16, 16,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 1, 0, 0, 0, 0, 0,}},
{{ 0, 0, 1, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 64,}},
{{ 0, 0, 1, 0, 0, 32, 0, 0,}},
{{ 0, 0, 1, 0, 0, 32, 0, 64,}},
{{ 0, 0, 0, 0, 0, 0,128, 0,}},
{{ 0, 0, 0, 0, 0, 0,128, 64,}},
{{ 0, 0, 1, 0, 0, 0,128, 0,}},
{{ 0, 0, 1, 0, 0, 0,128, 64,}},
{{ 0, 0, 0, 0, 0, 32,128, 0,}},
{{ 0, 0, 0, 0, 0, 32,128, 64,}},
{{ 0, 0, 1, 0, 0, 32,128, 0,}},
{{ 0, 0, 1, 0, 0, 32,128, 64,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 32, 0,}},
{{ 0, 0, 2, 0, 0, 0, 32, 0,}},
{{ 0, 0, 2, 0, 0, 0, 32, 0,}},
{{ 0, 0, 2, 0, 0, 0, 32, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 8, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 8, 0,}},
{{ 0, 0, 0, 0, 16, 0, 0, 0,}},
{{ 0, 0, 0, 0, 16, 0, 8, 0,}},
{{ 0, 0, 0, 1, 16, 0, 0, 0,}},
{{ 0, 0, 0, 1, 16, 0, 8, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 4,}},
{{ 0, 0, 0, 0, 0, 0, 8, 4,}},
{{ 0, 0, 0, 1, 0, 0, 0, 4,}},
{{ 0, 0, 0, 1, 0, 0, 8, 4,}},
{{ 0, 0, 0, 0, 16, 0, 0, 4,}},
{{ 0, 0, 0, 0, 16, 0, 8, 4,}},
{{ 0, 0, 0, 1, 16, 0, 0, 4,}},
{{ 0, 0, 0, 1, 16, 0, 8, 4,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 8,}},
{{ 0, 0, 0, 0, 64, 0, 0, 8,}},
{{ 0, 0, 0, 0, 64, 0, 0, 8,}},
{{ 0, 0, 0, 0, 64, 0, 0, 8,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 32, 0, 0, 0,}},
{{ 0, 0, 0, 2, 0, 0, 0, 0,}},
{{ 0, 0, 0, 2, 32, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0,128,}},
{{ 0, 0, 0, 0, 32, 0, 0,128,}},
{{ 0, 0, 0, 2, 0, 0, 0,128,}},
{{ 0, 0, 0, 2, 32, 0, 0,128,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 32, 16, 0, 0,}},
{{ 0, 0, 0, 2, 0, 16, 0, 0,}},
{{ 0, 0, 0, 2, 32, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0,128,}},
{{ 0, 0, 0, 0, 32, 16, 0,128,}},
{{ 0, 0, 0, 2, 0, 16, 0,128,}},
{{ 0, 0, 0, 2, 32, 16, 0,128,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 4, 0,}},
{{ 0, 0, 0, 0, 0, 8, 4, 0,}},
{{ 0, 0, 0, 0, 0, 8, 4, 0,}},
{{ 0, 0, 0, 0, 0, 8, 4, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 64, 0,}},
{{ 0, 0, 0, 0, 0,128, 64, 0,}},
{{ 0, 0, 0, 0,128, 0, 0, 0,}},
{{ 0, 0, 0, 0,128,128, 0, 0,}},
{{ 0, 0, 0, 0,128, 0, 64, 0,}},
{{ 0, 0, 0, 0,128,128, 64, 0,}},
{{ 0, 0, 0, 0, 0, 4, 0, 0,}},
{{ 0, 0, 0, 0, 0,132, 0, 0,}},
{{ 0, 0, 0, 0, 0, 4, 64, 0,}},
{{ 0, 0, 0, 0, 0,132, 64, 0,}},
{{ 0, 0, 0, 0,128, 4, 0, 0,}},
{{ 0, 0, 0, 0,128,132, 0, 0,}},
{{ 0, 0, 0, 0,128, 4, 64, 0,}},
{{ 0, 0, 0, 0,128,132, 64, 0,}},
},
},
};
/* Initial permutation/expansion table */
static const C_block IE3264[32/CHUNKBITS][1<<CHUNKBITS] = {
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 64, 4,}},
{{ 4, 0, 0, 0, 0, 0, 0, 64,}},
{{ 4, 0, 0, 0, 0, 0, 64, 68,}},
{{ 0, 0, 0, 0, 64, 4, 0, 0,}},
{{ 0, 0, 0, 0, 64, 4, 64, 4,}},
{{ 4, 0, 0, 0, 64, 4, 0, 64,}},
{{ 4, 0, 0, 0, 64, 4, 64, 68,}},
{{ 0, 0, 0, 0, 0, 64, 4, 0,}},
{{ 0, 0, 0, 0, 0, 64, 68, 4,}},
{{ 4, 0, 0, 0, 0, 64, 4, 64,}},
{{ 4, 0, 0, 0, 0, 64, 68, 68,}},
{{ 0, 0, 0, 0, 64, 68, 4, 0,}},
{{ 0, 0, 0, 0, 64, 68, 68, 4,}},
{{ 4, 0, 0, 0, 64, 68, 4, 64,}},
{{ 4, 0, 0, 0, 64, 68, 68, 68,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 64, 4, 0, 0, 0, 0,}},
{{ 0, 0, 0, 64, 4, 0, 0, 0,}},
{{ 0, 0, 64, 68, 4, 0, 0, 0,}},
{{ 64, 4, 0, 0, 0, 0, 0, 0,}},
{{ 64, 4, 64, 4, 0, 0, 0, 0,}},
{{ 64, 4, 0, 64, 4, 0, 0, 0,}},
{{ 64, 4, 64, 68, 4, 0, 0, 0,}},
{{ 0, 64, 4, 0, 0, 0, 0, 0,}},
{{ 0, 64, 68, 4, 0, 0, 0, 0,}},
{{ 0, 64, 4, 64, 4, 0, 0, 0,}},
{{ 0, 64, 68, 68, 4, 0, 0, 0,}},
{{ 64, 68, 4, 0, 0, 0, 0, 0,}},
{{ 64, 68, 68, 4, 0, 0, 0, 0,}},
{{ 64, 68, 4, 64, 4, 0, 0, 0,}},
{{ 64, 68, 68, 68, 4, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 32,}},
{{ 0, 0, 0, 0, 0, 0, 32, 32,}},
{{ 0, 0, 0, 0, 32, 0, 0, 0,}},
{{ 0, 0, 0, 0, 32, 0, 32, 0,}},
{{ 0, 0, 0, 0, 32, 0, 0, 32,}},
{{ 0, 0, 0, 0, 32, 0, 32, 32,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 32, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 32,}},
{{ 0, 0, 0, 0, 0, 32, 32, 32,}},
{{ 0, 0, 0, 0, 32, 32, 0, 0,}},
{{ 0, 0, 0, 0, 32, 32, 32, 0,}},
{{ 0, 0, 0, 0, 32, 32, 0, 32,}},
{{ 0, 0, 0, 0, 32, 32, 32, 32,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 32, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 32, 0, 0, 0, 0,}},
{{ 0, 0, 32, 32, 0, 0, 0, 0,}},
{{ 32, 0, 0, 0, 0, 0, 0, 0,}},
{{ 32, 0, 32, 0, 0, 0, 0, 0,}},
{{ 32, 0, 0, 32, 0, 0, 0, 0,}},
{{ 32, 0, 32, 32, 0, 0, 0, 0,}},
{{ 0, 32, 0, 0, 0, 0, 0, 0,}},
{{ 0, 32, 32, 0, 0, 0, 0, 0,}},
{{ 0, 32, 0, 32, 0, 0, 0, 0,}},
{{ 0, 32, 32, 32, 0, 0, 0, 0,}},
{{ 32, 32, 0, 0, 0, 0, 0, 0,}},
{{ 32, 32, 32, 0, 0, 0, 0, 0,}},
{{ 32, 32, 0, 32, 0, 0, 0, 0,}},
{{ 32, 32, 32, 32, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 16, 16,}},
{{ 0, 0, 0, 0, 16, 0, 0, 0,}},
{{ 0, 0, 0, 0, 16, 0, 16, 0,}},
{{ 0, 0, 0, 0, 16, 0, 0, 16,}},
{{ 0, 0, 0, 0, 16, 0, 16, 16,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 16, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 16,}},
{{ 0, 0, 0, 0, 0, 16, 16, 16,}},
{{ 0, 0, 0, 0, 16, 16, 0, 0,}},
{{ 0, 0, 0, 0, 16, 16, 16, 0,}},
{{ 0, 0, 0, 0, 16, 16, 0, 16,}},
{{ 0, 0, 0, 0, 16, 16, 16, 16,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 16, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 16, 0, 0, 0, 0,}},
{{ 0, 0, 16, 16, 0, 0, 0, 0,}},
{{ 16, 0, 0, 0, 0, 0, 0, 0,}},
{{ 16, 0, 16, 0, 0, 0, 0, 0,}},
{{ 16, 0, 0, 16, 0, 0, 0, 0,}},
{{ 16, 0, 16, 16, 0, 0, 0, 0,}},
{{ 0, 16, 0, 0, 0, 0, 0, 0,}},
{{ 0, 16, 16, 0, 0, 0, 0, 0,}},
{{ 0, 16, 0, 16, 0, 0, 0, 0,}},
{{ 0, 16, 16, 16, 0, 0, 0, 0,}},
{{ 16, 16, 0, 0, 0, 0, 0, 0,}},
{{ 16, 16, 16, 0, 0, 0, 0, 0,}},
{{ 16, 16, 0, 16, 0, 0, 0, 0,}},
{{ 16, 16, 16, 16, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 8, 0,}},
{{ 0, 0, 0, 0, 0, 0,128, 8,}},
{{ 0, 0, 0, 0, 0,128,136, 8,}},
{{ 0, 0, 0,128, 8, 0, 0, 0,}},
{{ 0, 0, 0,128, 8,128, 8, 0,}},
{{ 0, 0, 0,128, 8, 0,128, 8,}},
{{ 0, 0, 0,128, 8,128,136, 8,}},
{{ 0, 0, 0, 0,128, 8, 0, 0,}},
{{ 0, 0, 0, 0,128,136, 8, 0,}},
{{ 0, 0, 0, 0,128, 8,128, 8,}},
{{ 0, 0, 0, 0,128,136,136, 8,}},
{{ 0, 0, 0,128,136, 8, 0, 0,}},
{{ 0, 0, 0,128,136,136, 8, 0,}},
{{ 0, 0, 0,128,136, 8,128, 8,}},
{{ 0, 0, 0,128,136,136,136, 8,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0,128, 8, 0, 0, 0, 0, 0,}},
{{ 0, 0,128, 8, 0, 0, 0, 0,}},
{{ 0,128,136, 8, 0, 0, 0, 0,}},
{{ 8, 0, 0, 0, 0, 0, 0,128,}},
{{ 8,128, 8, 0, 0, 0, 0,128,}},
{{ 8, 0,128, 8, 0, 0, 0,128,}},
{{ 8,128,136, 8, 0, 0, 0,128,}},
{{128, 8, 0, 0, 0, 0, 0, 0,}},
{{128,136, 8, 0, 0, 0, 0, 0,}},
{{128, 8,128, 8, 0, 0, 0, 0,}},
{{128,136,136, 8, 0, 0, 0, 0,}},
{{136, 8, 0, 0, 0, 0, 0,128,}},
{{136,136, 8, 0, 0, 0, 0,128,}},
{{136, 8,128, 8, 0, 0, 0,128,}},
{{136,136,136, 8, 0, 0, 0,128,}},
},
};
/* Table that combines the S, P, and E operations. */
static const long SPE[2][8][64] = {
{
{
2148040704,2147483648, 0,2148040704,
0,2148040704,2147483648, 0,
2148040704,2148040704,2147483648, 557056,
557056, 0, 0,2147483648,
2147483648, 0, 557056,2148040704,
2148040704,2147483648, 557056, 557056,
0, 557056,2148040704,2147483648,
557056, 557056,2147483648, 0,
0,2148040704, 557056,2147483648,
2148040704,2147483648, 557056, 557056,
2147483648, 557056,2148040704, 0,
2148040704, 0, 0,2147483648,
2148040704,2148040704,2147483648, 557056,
0, 557056,2147483648, 0,
2147483648, 0, 557056,2148040704,
0,2147483648, 557056,2148040704,
},
{
142606352, 0, 142606336, 0,
16, 142606352, 142606336, 142606336,
142606336, 16, 16, 142606336,
16, 142606336, 0, 16,
0, 142606352, 16, 142606336,
142606352, 0, 0, 16,
142606352, 142606352, 142606336, 16,
0, 0, 142606352, 142606352,
16, 142606336, 142606336, 142606352,
142606352, 16, 16, 0,
0, 142606352, 0, 16,
142606336, 0, 142606352, 142606352,
142606336, 142606336, 0, 16,
16, 142606352, 142606336, 0,
16, 0, 142606352, 142606336,
142606352, 16, 0, 142606336,
},
{
0,1073745920, 4096, 4096,
1073741824, 0, 4096,1073745920,
4096,1073741824,1073741824, 0,
1073745920, 4096, 0,1073741824,
0,1073741824,1073745920, 4096,
4096,1073745920,1073741824, 0,
1073741824, 4096,1073745920,1073741824,
1073745920, 0, 0,1073745920,
1073745920, 4096, 0,1073741824,
4096,1073741824,1073741824, 4096,
0,1073745920,1073745920,1073741824,
1073741824, 0,1073745920, 0,
1073745920, 0, 0,1073745920,
1073741824, 4096, 4096,1073745920,
4096, 0,1073741824, 4096,
0,1073745920, 4096,1073741824,
},
{
1048584, 1048576, 8, 1048584,
0, 0, 1048584, 8,
1048576, 8, 0, 1048584,
8, 1048584, 0, 0,
8, 1048576, 1048576, 8,
1048576, 1048584, 0, 1048576,
1048584, 0, 8, 1048576,
1048576, 8, 1048584, 0,
8, 1048584, 0, 8,
1048576, 1048576, 8, 0,
1048584, 0, 1048576, 8,
0, 8, 1048576, 1048576,
0, 1048584, 1048584, 0,
1048584, 8, 1048576, 1048584,
8, 1048576, 0, 1048584,
1048584, 0, 8, 1048576,
},
{
0, 268435456, 278528, 268714016,
268435488, 278528, 268714016, 268435456,
268435456, 32, 32, 268713984,
278560, 268435488, 268713984, 0,
268713984, 0, 268435488, 278560,
278528, 268714016, 0, 32,
32, 278560, 268714016, 268435488,
268435456, 278528, 278560, 268713984,
268713984, 278560, 268435488, 268435456,
268435456, 32, 32, 278528,
0, 268713984, 268714016, 0,
268714016, 0, 278528, 268435488,
278560, 278528, 0, 268714016,
268435488, 268713984, 278560, 268435456,
268713984, 268435488, 278528, 278560,
32, 268714016, 268435456, 32,
},
{
1088, 1088, 0, 2097152,
1088, 2097152, 2098240, 0,
2098240, 2098240, 2097152, 0,
2097152, 1088, 0, 2098240,
0, 2098240, 1088, 0,
2097152, 1088, 2097152, 1088,
2098240, 0, 0, 2098240,
1088, 2097152, 2098240, 2097152,
2098240, 0, 2097152, 2098240,
2097152, 1088, 0, 2097152,
0, 2097152, 1088, 0,
1088, 2098240, 2097152, 1088,
2098240, 2097152, 0, 2098240,
1088, 0, 2098240, 0,
2097152, 1088, 2098240, 2097152,
0, 2098240, 1088, 1088,
},
{
71303168, 8192, 8192, 4,
71311364, 71303172, 71311360, 0,
0, 8196, 8196, 71303168,
4, 71311360, 71303168, 8196,
8196, 71303168, 71303172, 71311364,
0, 8192, 4, 71311360,
71303172, 71311364, 71311360, 4,
71311364, 71303172, 8192, 0,
71311364, 71303168, 71303172, 8196,
71303168, 8192, 0, 71303172,
8196, 71311364, 71311360, 0,
8192, 4, 4, 8192,
0, 8196, 8192, 71311360,
8196, 71303168, 71311364, 0,
71311360, 4, 71303172, 71311364,
4, 71311360, 71303168, 71303172,
},
{
2176, 536870912, 536873088, 0,
536870912, 2176, 0, 536873088,
2176, 0, 536870912, 536873088,
536873088, 536873088, 2176, 0,
536870912, 536873088, 2176, 536870912,
536873088, 2176, 0, 536870912,
0, 0, 536873088, 2176,
0, 536870912, 536870912, 2176,
0, 536870912, 2176, 536873088,
536873088, 0, 0, 536870912,
2176, 536873088, 536870912, 2176,
536870912, 2176, 2176, 536870912,
536873088, 0, 0, 2176,
536870912, 536873088, 536873088, 0,
2176, 536870912, 536873088, 0,
0, 2176, 536870912, 536873088,
},
},
{
{
8200, 8, 536879104, 536879112,
8192, 536870920, 536870920, 536879104,
536870920, 8200, 8200, 536870912,
536879104, 8192, 0, 536870920,
8, 536870912, 8192, 8,
536879112, 8200, 536870912, 8192,
536870912, 0, 8, 536879112,
0, 536879104, 536879112, 0,
0, 536879112, 8192, 536870920,
8200, 8, 536870912, 8192,
536879112, 0, 8, 536879104,
536870920, 536870912, 536879104, 8200,
536879112, 8, 8200, 536879104,
8192, 536870912, 536870920, 0,
8, 8192, 536879104, 8200,
536870912, 536879112, 0, 536870920,
},
{
71303184, 0, 16, 71303184,
71303168, 0, 71303168, 16,
0, 71303184, 0, 71303168,
16, 71303184, 71303184, 0,
16, 71303168, 71303184, 0,
16, 71303168, 0, 16,
71303168, 16, 71303184, 71303168,
71303168, 16, 0, 71303184,
16, 71303184, 71303168, 16,
71303184, 16, 71303168, 0,
71303168, 0, 16, 71303184,
0, 71303168, 16, 71303168,
71303184, 0, 0, 71303168,
0, 71303184, 16, 71303184,
71303184, 16, 0, 71303168,
71303168, 0, 71303184, 16,
},
{
268713984, 278532, 0, 268713984,
268435460, 278528, 268713984, 4,
278528, 4, 278532, 268435456,
268713988, 268435456, 268435456, 268713988,
0, 268435460, 278532, 0,
268435456, 268713988, 4, 268713984,
268713988, 278528, 268435460, 278532,
4, 0, 278528, 268435460,
278532, 0, 268435456, 4,
268435456, 268435460, 278532, 268713984,
0, 278532, 4, 268713988,
268435460, 278528, 268713988, 268435456,
268435460, 268713984, 278528, 268713988,
4, 278528, 268713984, 4,
278528, 0, 268713988, 268435456,
268713984, 268435460, 0, 278532,
},
{
2147484736, 1048576,2147483648,2148533312,
0, 1049664,2148532224,2147484736,
1049664,2148532224, 1048576,2147483648,
2148532224,2147484736, 1088, 1048576,
2148533312, 1088, 0,2147483648,
1088,2148532224, 1049664, 0,
2147483648, 0,2147484736, 1049664,
1048576,2148533312,2148533312, 1088,
2148533312,2147483648, 1088,2148532224,
1088, 1048576,2147483648, 1049664,
2148532224, 0, 0,2147484736,
0,2148533312, 1049664, 0,
1048576,2148533312,2147484736, 1088,
2148533312,2147483648, 1048576,2147484736,
2147484736, 1088, 1049664,2148532224,
2147483648, 1048576,2148532224, 1049664,
},
{
557056, 0, 0, 557056,
557056, 557056, 0, 557056,
0, 0, 557056, 0,
557056, 557056, 557056, 0,
0, 557056, 0, 0,
557056, 0, 0, 557056,
0, 557056, 557056, 0,
557056, 0, 0, 557056,
557056, 557056, 0, 557056,
0, 0, 557056, 557056,
557056, 0, 557056, 0,
0, 557056, 0, 0,
557056, 0, 0, 557056,
557056, 557056, 0, 0,
0, 557056, 557056, 0,
0, 0, 557056, 557056,
},
{
142606336, 32, 0, 142606368,
32, 0, 142606336, 32,
0, 142606368, 32, 142606336,
142606336, 142606336, 142606368, 32,
32, 142606336, 142606368, 0,
0, 0, 142606368, 142606368,
142606368, 142606368, 142606336, 0,
0, 32, 32, 142606336,
0, 142606336, 142606336, 32,
142606368, 32, 0, 142606336,
142606336, 0, 142606368, 32,
32, 142606368, 32, 0,
142606368, 32, 32, 142606336,
142606336, 142606368, 32, 0,
0, 142606336, 142606336, 142606368,
142606368, 0, 0, 142606368,
},
{
0, 0, 4096,1073745920,
1073745920,1073741824, 0, 0,
4096,1073745920,1073741824, 4096,
1073741824, 4096, 4096,1073741824,
1073745920, 0,1073741824,1073745920,
0, 4096,1073745920, 0,
1073745920,1073741824, 4096,1073741824,
1073741824,1073745920, 0, 4096,
1073741824, 4096,1073745920,1073741824,
0, 0, 4096,1073745920,
1073745920,1073741824, 0, 0,
0,1073745920,1073741824, 4096,
0,1073745920, 4096, 0,
1073741824, 0,1073745920, 4096,
4096,1073741824,1073741824,1073745920,
1073745920, 4096, 4096,1073741824,
},
{
2099328, 2099328, 0, 0,
2097152, 2176, 2099328, 2099328,
0, 2097152, 2176, 0,
2176, 2097152, 2097152, 2099328,
0, 2176, 2176, 2097152,
2099328, 2097152, 0, 2176,
2097152, 2176, 2097152, 2099328,
2176, 0, 2099328, 0,
2176, 0, 2097152, 2099328,
0, 2097152, 0, 2176,
2099328, 2097152, 2097152, 2176,
2099328, 0, 2176, 2097152,
2099328, 2176, 2099328, 2097152,
2176, 0, 2097152, 2099328,
0, 2099328, 2176, 0,
2097152, 2099328, 0, 2176,
},
},
};
/* compressed/interleaved => final permutation table */
static const C_block CF6464[64/CHUNKBITS][1<<CHUNKBITS] = {
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 64,}},
{{ 0, 0, 0, 0, 0, 0, 64, 0,}},
{{ 0, 0, 0, 0, 0, 0, 64, 64,}},
{{ 0, 0, 0, 0, 0, 64, 0, 0,}},
{{ 0, 0, 0, 0, 0, 64, 0, 64,}},
{{ 0, 0, 0, 0, 0, 64, 64, 0,}},
{{ 0, 0, 0, 0, 0, 64, 64, 64,}},
{{ 0, 0, 0, 0, 64, 0, 0, 0,}},
{{ 0, 0, 0, 0, 64, 0, 0, 64,}},
{{ 0, 0, 0, 0, 64, 0, 64, 0,}},
{{ 0, 0, 0, 0, 64, 0, 64, 64,}},
{{ 0, 0, 0, 0, 64, 64, 0, 0,}},
{{ 0, 0, 0, 0, 64, 64, 0, 64,}},
{{ 0, 0, 0, 0, 64, 64, 64, 0,}},
{{ 0, 0, 0, 0, 64, 64, 64, 64,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 4,}},
{{ 0, 0, 0, 0, 0, 0, 4, 0,}},
{{ 0, 0, 0, 0, 0, 0, 4, 4,}},
{{ 0, 0, 0, 0, 0, 4, 0, 0,}},
{{ 0, 0, 0, 0, 0, 4, 0, 4,}},
{{ 0, 0, 0, 0, 0, 4, 4, 0,}},
{{ 0, 0, 0, 0, 0, 4, 4, 4,}},
{{ 0, 0, 0, 0, 4, 0, 0, 0,}},
{{ 0, 0, 0, 0, 4, 0, 0, 4,}},
{{ 0, 0, 0, 0, 4, 0, 4, 0,}},
{{ 0, 0, 0, 0, 4, 0, 4, 4,}},
{{ 0, 0, 0, 0, 4, 4, 0, 0,}},
{{ 0, 0, 0, 0, 4, 4, 0, 4,}},
{{ 0, 0, 0, 0, 4, 4, 4, 0,}},
{{ 0, 0, 0, 0, 4, 4, 4, 4,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 64, 0, 0, 0, 0,}},
{{ 0, 0, 64, 0, 0, 0, 0, 0,}},
{{ 0, 0, 64, 64, 0, 0, 0, 0,}},
{{ 0, 64, 0, 0, 0, 0, 0, 0,}},
{{ 0, 64, 0, 64, 0, 0, 0, 0,}},
{{ 0, 64, 64, 0, 0, 0, 0, 0,}},
{{ 0, 64, 64, 64, 0, 0, 0, 0,}},
{{ 64, 0, 0, 0, 0, 0, 0, 0,}},
{{ 64, 0, 0, 64, 0, 0, 0, 0,}},
{{ 64, 0, 64, 0, 0, 0, 0, 0,}},
{{ 64, 0, 64, 64, 0, 0, 0, 0,}},
{{ 64, 64, 0, 0, 0, 0, 0, 0,}},
{{ 64, 64, 0, 64, 0, 0, 0, 0,}},
{{ 64, 64, 64, 0, 0, 0, 0, 0,}},
{{ 64, 64, 64, 64, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 4, 0, 0, 0, 0,}},
{{ 0, 0, 4, 0, 0, 0, 0, 0,}},
{{ 0, 0, 4, 4, 0, 0, 0, 0,}},
{{ 0, 4, 0, 0, 0, 0, 0, 0,}},
{{ 0, 4, 0, 4, 0, 0, 0, 0,}},
{{ 0, 4, 4, 0, 0, 0, 0, 0,}},
{{ 0, 4, 4, 4, 0, 0, 0, 0,}},
{{ 4, 0, 0, 0, 0, 0, 0, 0,}},
{{ 4, 0, 0, 4, 0, 0, 0, 0,}},
{{ 4, 0, 4, 0, 0, 0, 0, 0,}},
{{ 4, 0, 4, 4, 0, 0, 0, 0,}},
{{ 4, 4, 0, 0, 0, 0, 0, 0,}},
{{ 4, 4, 0, 4, 0, 0, 0, 0,}},
{{ 4, 4, 4, 0, 0, 0, 0, 0,}},
{{ 4, 4, 4, 4, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 16,}},
{{ 0, 0, 0, 0, 0, 0, 16, 0,}},
{{ 0, 0, 0, 0, 0, 0, 16, 16,}},
{{ 0, 0, 0, 0, 0, 16, 0, 0,}},
{{ 0, 0, 0, 0, 0, 16, 0, 16,}},
{{ 0, 0, 0, 0, 0, 16, 16, 0,}},
{{ 0, 0, 0, 0, 0, 16, 16, 16,}},
{{ 0, 0, 0, 0, 16, 0, 0, 0,}},
{{ 0, 0, 0, 0, 16, 0, 0, 16,}},
{{ 0, 0, 0, 0, 16, 0, 16, 0,}},
{{ 0, 0, 0, 0, 16, 0, 16, 16,}},
{{ 0, 0, 0, 0, 16, 16, 0, 0,}},
{{ 0, 0, 0, 0, 16, 16, 0, 16,}},
{{ 0, 0, 0, 0, 16, 16, 16, 0,}},
{{ 0, 0, 0, 0, 16, 16, 16, 16,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 1,}},
{{ 0, 0, 0, 0, 0, 0, 1, 0,}},
{{ 0, 0, 0, 0, 0, 0, 1, 1,}},
{{ 0, 0, 0, 0, 0, 1, 0, 0,}},
{{ 0, 0, 0, 0, 0, 1, 0, 1,}},
{{ 0, 0, 0, 0, 0, 1, 1, 0,}},
{{ 0, 0, 0, 0, 0, 1, 1, 1,}},
{{ 0, 0, 0, 0, 1, 0, 0, 0,}},
{{ 0, 0, 0, 0, 1, 0, 0, 1,}},
{{ 0, 0, 0, 0, 1, 0, 1, 0,}},
{{ 0, 0, 0, 0, 1, 0, 1, 1,}},
{{ 0, 0, 0, 0, 1, 1, 0, 0,}},
{{ 0, 0, 0, 0, 1, 1, 0, 1,}},
{{ 0, 0, 0, 0, 1, 1, 1, 0,}},
{{ 0, 0, 0, 0, 1, 1, 1, 1,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 16, 0, 0, 0, 0,}},
{{ 0, 0, 16, 0, 0, 0, 0, 0,}},
{{ 0, 0, 16, 16, 0, 0, 0, 0,}},
{{ 0, 16, 0, 0, 0, 0, 0, 0,}},
{{ 0, 16, 0, 16, 0, 0, 0, 0,}},
{{ 0, 16, 16, 0, 0, 0, 0, 0,}},
{{ 0, 16, 16, 16, 0, 0, 0, 0,}},
{{ 16, 0, 0, 0, 0, 0, 0, 0,}},
{{ 16, 0, 0, 16, 0, 0, 0, 0,}},
{{ 16, 0, 16, 0, 0, 0, 0, 0,}},
{{ 16, 0, 16, 16, 0, 0, 0, 0,}},
{{ 16, 16, 0, 0, 0, 0, 0, 0,}},
{{ 16, 16, 0, 16, 0, 0, 0, 0,}},
{{ 16, 16, 16, 0, 0, 0, 0, 0,}},
{{ 16, 16, 16, 16, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 1, 0, 0, 0, 0,}},
{{ 0, 0, 1, 0, 0, 0, 0, 0,}},
{{ 0, 0, 1, 1, 0, 0, 0, 0,}},
{{ 0, 1, 0, 0, 0, 0, 0, 0,}},
{{ 0, 1, 0, 1, 0, 0, 0, 0,}},
{{ 0, 1, 1, 0, 0, 0, 0, 0,}},
{{ 0, 1, 1, 1, 0, 0, 0, 0,}},
{{ 1, 0, 0, 0, 0, 0, 0, 0,}},
{{ 1, 0, 0, 1, 0, 0, 0, 0,}},
{{ 1, 0, 1, 0, 0, 0, 0, 0,}},
{{ 1, 0, 1, 1, 0, 0, 0, 0,}},
{{ 1, 1, 0, 0, 0, 0, 0, 0,}},
{{ 1, 1, 0, 1, 0, 0, 0, 0,}},
{{ 1, 1, 1, 0, 0, 0, 0, 0,}},
{{ 1, 1, 1, 1, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0,128,}},
{{ 0, 0, 0, 0, 0, 0,128, 0,}},
{{ 0, 0, 0, 0, 0, 0,128,128,}},
{{ 0, 0, 0, 0, 0,128, 0, 0,}},
{{ 0, 0, 0, 0, 0,128, 0,128,}},
{{ 0, 0, 0, 0, 0,128,128, 0,}},
{{ 0, 0, 0, 0, 0,128,128,128,}},
{{ 0, 0, 0, 0,128, 0, 0, 0,}},
{{ 0, 0, 0, 0,128, 0, 0,128,}},
{{ 0, 0, 0, 0,128, 0,128, 0,}},
{{ 0, 0, 0, 0,128, 0,128,128,}},
{{ 0, 0, 0, 0,128,128, 0, 0,}},
{{ 0, 0, 0, 0,128,128, 0,128,}},
{{ 0, 0, 0, 0,128,128,128, 0,}},
{{ 0, 0, 0, 0,128,128,128,128,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 8,}},
{{ 0, 0, 0, 0, 0, 0, 8, 0,}},
{{ 0, 0, 0, 0, 0, 0, 8, 8,}},
{{ 0, 0, 0, 0, 0, 8, 0, 0,}},
{{ 0, 0, 0, 0, 0, 8, 0, 8,}},
{{ 0, 0, 0, 0, 0, 8, 8, 0,}},
{{ 0, 0, 0, 0, 0, 8, 8, 8,}},
{{ 0, 0, 0, 0, 8, 0, 0, 0,}},
{{ 0, 0, 0, 0, 8, 0, 0, 8,}},
{{ 0, 0, 0, 0, 8, 0, 8, 0,}},
{{ 0, 0, 0, 0, 8, 0, 8, 8,}},
{{ 0, 0, 0, 0, 8, 8, 0, 0,}},
{{ 0, 0, 0, 0, 8, 8, 0, 8,}},
{{ 0, 0, 0, 0, 8, 8, 8, 0,}},
{{ 0, 0, 0, 0, 8, 8, 8, 8,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0,128, 0, 0, 0, 0,}},
{{ 0, 0,128, 0, 0, 0, 0, 0,}},
{{ 0, 0,128,128, 0, 0, 0, 0,}},
{{ 0,128, 0, 0, 0, 0, 0, 0,}},
{{ 0,128, 0,128, 0, 0, 0, 0,}},
{{ 0,128,128, 0, 0, 0, 0, 0,}},
{{ 0,128,128,128, 0, 0, 0, 0,}},
{{128, 0, 0, 0, 0, 0, 0, 0,}},
{{128, 0, 0,128, 0, 0, 0, 0,}},
{{128, 0,128, 0, 0, 0, 0, 0,}},
{{128, 0,128,128, 0, 0, 0, 0,}},
{{128,128, 0, 0, 0, 0, 0, 0,}},
{{128,128, 0,128, 0, 0, 0, 0,}},
{{128,128,128, 0, 0, 0, 0, 0,}},
{{128,128,128,128, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 8, 0, 0, 0, 0,}},
{{ 0, 0, 8, 0, 0, 0, 0, 0,}},
{{ 0, 0, 8, 8, 0, 0, 0, 0,}},
{{ 0, 8, 0, 0, 0, 0, 0, 0,}},
{{ 0, 8, 0, 8, 0, 0, 0, 0,}},
{{ 0, 8, 8, 0, 0, 0, 0, 0,}},
{{ 0, 8, 8, 8, 0, 0, 0, 0,}},
{{ 8, 0, 0, 0, 0, 0, 0, 0,}},
{{ 8, 0, 0, 8, 0, 0, 0, 0,}},
{{ 8, 0, 8, 0, 0, 0, 0, 0,}},
{{ 8, 0, 8, 8, 0, 0, 0, 0,}},
{{ 8, 8, 0, 0, 0, 0, 0, 0,}},
{{ 8, 8, 0, 8, 0, 0, 0, 0,}},
{{ 8, 8, 8, 0, 0, 0, 0, 0,}},
{{ 8, 8, 8, 8, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 32,}},
{{ 0, 0, 0, 0, 0, 0, 32, 0,}},
{{ 0, 0, 0, 0, 0, 0, 32, 32,}},
{{ 0, 0, 0, 0, 0, 32, 0, 0,}},
{{ 0, 0, 0, 0, 0, 32, 0, 32,}},
{{ 0, 0, 0, 0, 0, 32, 32, 0,}},
{{ 0, 0, 0, 0, 0, 32, 32, 32,}},
{{ 0, 0, 0, 0, 32, 0, 0, 0,}},
{{ 0, 0, 0, 0, 32, 0, 0, 32,}},
{{ 0, 0, 0, 0, 32, 0, 32, 0,}},
{{ 0, 0, 0, 0, 32, 0, 32, 32,}},
{{ 0, 0, 0, 0, 32, 32, 0, 0,}},
{{ 0, 0, 0, 0, 32, 32, 0, 32,}},
{{ 0, 0, 0, 0, 32, 32, 32, 0,}},
{{ 0, 0, 0, 0, 32, 32, 32, 32,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 0, 0, 0, 0, 2,}},
{{ 0, 0, 0, 0, 0, 0, 2, 0,}},
{{ 0, 0, 0, 0, 0, 0, 2, 2,}},
{{ 0, 0, 0, 0, 0, 2, 0, 0,}},
{{ 0, 0, 0, 0, 0, 2, 0, 2,}},
{{ 0, 0, 0, 0, 0, 2, 2, 0,}},
{{ 0, 0, 0, 0, 0, 2, 2, 2,}},
{{ 0, 0, 0, 0, 2, 0, 0, 0,}},
{{ 0, 0, 0, 0, 2, 0, 0, 2,}},
{{ 0, 0, 0, 0, 2, 0, 2, 0,}},
{{ 0, 0, 0, 0, 2, 0, 2, 2,}},
{{ 0, 0, 0, 0, 2, 2, 0, 0,}},
{{ 0, 0, 0, 0, 2, 2, 0, 2,}},
{{ 0, 0, 0, 0, 2, 2, 2, 0,}},
{{ 0, 0, 0, 0, 2, 2, 2, 2,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 32, 0, 0, 0, 0,}},
{{ 0, 0, 32, 0, 0, 0, 0, 0,}},
{{ 0, 0, 32, 32, 0, 0, 0, 0,}},
{{ 0, 32, 0, 0, 0, 0, 0, 0,}},
{{ 0, 32, 0, 32, 0, 0, 0, 0,}},
{{ 0, 32, 32, 0, 0, 0, 0, 0,}},
{{ 0, 32, 32, 32, 0, 0, 0, 0,}},
{{ 32, 0, 0, 0, 0, 0, 0, 0,}},
{{ 32, 0, 0, 32, 0, 0, 0, 0,}},
{{ 32, 0, 32, 0, 0, 0, 0, 0,}},
{{ 32, 0, 32, 32, 0, 0, 0, 0,}},
{{ 32, 32, 0, 0, 0, 0, 0, 0,}},
{{ 32, 32, 0, 32, 0, 0, 0, 0,}},
{{ 32, 32, 32, 0, 0, 0, 0, 0,}},
{{ 32, 32, 32, 32, 0, 0, 0, 0,}},
},
{
{{ 0, 0, 0, 0, 0, 0, 0, 0,}},
{{ 0, 0, 0, 2, 0, 0, 0, 0,}},
{{ 0, 0, 2, 0, 0, 0, 0, 0,}},
{{ 0, 0, 2, 2, 0, 0, 0, 0,}},
{{ 0, 2, 0, 0, 0, 0, 0, 0,}},
{{ 0, 2, 0, 2, 0, 0, 0, 0,}},
{{ 0, 2, 2, 0, 0, 0, 0, 0,}},
{{ 0, 2, 2, 2, 0, 0, 0, 0,}},
{{ 2, 0, 0, 0, 0, 0, 0, 0,}},
{{ 2, 0, 0, 2, 0, 0, 0, 0,}},
{{ 2, 0, 2, 0, 0, 0, 0, 0,}},
{{ 2, 0, 2, 2, 0, 0, 0, 0,}},
{{ 2, 2, 0, 0, 0, 0, 0, 0,}},
{{ 2, 2, 0, 2, 0, 0, 0, 0,}},
{{ 2, 2, 2, 0, 0, 0, 0, 0,}},
{{ 2, 2, 2, 2, 0, 0, 0, 0,}},
},
};