stego.git
table.c

/* stego - chess engine
* Copyright (C) 2025 ArcNyxx <me@arcnyxx.net>
* see LICENCE file for licensing information */
#include "stego.h"
const u64 kitab[64] = {
0x302,
0x705,
0xe0a,
0x1c14,
0x3828,
0x7050,
0xe0a0,
0xc040,
0x30203,
0x70507,
0xe0a0e,
0x1c141c,
0x382838,
0x705070,
0xe0a0e0,
0xc040c0,
0x3020300,
0x7050700,
0xe0a0e00,
0x1c141c00,
0x38283800,
0x70507000,
0xe0a0e000,
0xc040c000,
0x302030000,
0x705070000,
0xe0a0e0000,
0x1c141c0000,
0x3828380000,
0x7050700000,
0xe0a0e00000,
0xc040c00000,
0x30203000000,
0x70507000000,
0xe0a0e000000,
0x1c141c000000,
0x382838000000,
0x705070000000,
0xe0a0e0000000,
0xc040c0000000,
0x3020300000000,
0x7050700000000,
0xe0a0e00000000,
0x1c141c00000000,
0x38283800000000,
0x70507000000000,
0xe0a0e000000000,
0xc040c000000000,
0x302030000000000,
0x705070000000000,
0xe0a0e0000000000,
0x1c141c0000000000,
0x3828380000000000,
0x7050700000000000,
0xe0a0e00000000000,
0xc040c00000000000,
0x203000000000000,
0x507000000000000,
0xa0e000000000000,
0x141c000000000000,
0x2838000000000000,
0x5070000000000000,
0xa0e0000000000000,
0x40c0000000000000,
};
const u64 notab[64] = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x1,
0x2,
0x4,
0x8,
0x10,
0x20,
0x40,
0x80,
0x101,
0x202,
0x404,
0x808,
0x1010,
0x2020,
0x4040,
0x8080,
0x10101,
0x20202,
0x40404,
0x80808,
0x101010,
0x202020,
0x404040,
0x808080,
0x1010101,
0x2020202,
0x4040404,
0x8080808,
0x10101010,
0x20202020,
0x40404040,
0x80808080,
0x101010101,
0x202020202,
0x404040404,
0x808080808,
0x1010101010,
0x2020202020,
0x4040404040,
0x8080808080,
0x10101010101,
0x20202020202,
0x40404040404,
0x80808080808,
0x101010101010,
0x202020202020,
0x404040404040,
0x808080808080,
0x1010101010101,
0x2020202020202,
0x4040404040404,
0x8080808080808,
0x10101010101010,
0x20202020202020,
0x40404040404040,
0x80808080808080,
};
const u64 nobtab[64] = {
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x3,
0x5,
0x9,
0x11,
0x21,
0x41,
0x81,
0x101,
0x203,
0x405,
0x809,
0x1011,
0x2021,
0x4041,
0x8081,
0x10101,
0x20203,
0x40405,
0x80809,
0x101011,
0x202021,
0x404041,
0x808081,
0x1010101,
0x2020203,
0x4040405,
0x8080809,
0x10101011,
0x20202021,
0x40404041,
0x80808081,
0x101010101,
0x202020203,
0x404040405,
0x808080809,
0x1010101011,
0x2020202021,
0x4040404041,
0x8080808081,
0x10101010101,
0x20202020203,
0x40404040405,
0x80808080809,
0x101010101011,
0x202020202021,
0x404040404041,
0x808080808081,
0x1010101010101,
0x2020202020203,
0x4040404040405,
0x8080808080809,
0x10101010101011,
0x20202020202021,
0x40404040404041,
0x80808080808081,
};
const u64 netab[64] = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x2,
0x4,
0x8,
0x10,
0x20,
0x40,
0x80,
0x0,
0x204,
0x408,
0x810,
0x1020,
0x2040,
0x4080,
0x8000,
0x0,
0x20408,
0x40810,
0x81020,
0x102040,
0x204080,
0x408000,
0x800000,
0x0,
0x2040810,
0x4081020,
0x8102040,
0x10204080,
0x20408000,
0x40800000,
0x80000000,
0x0,
0x204081020,
0x408102040,
0x810204080,
0x1020408000,
0x2040800000,
0x4080000000,
0x8000000000,
0x0,
0x20408102040,
0x40810204080,
0x81020408000,
0x102040800000,
0x204080000000,
0x408000000000,
0x800000000000,
0x0,
0x2040810204080,
0x4081020408000,
0x8102040800000,
0x10204080000000,
0x20408000000000,
0x40800000000000,
0x80000000000000,
0x0,
};
const u64 nebtab[64] = {
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x3,
0x5,
0x9,
0x11,
0x21,
0x41,
0x81,
0x1,
0x205,
0x409,
0x811,
0x1021,
0x2041,
0x4081,
0x8001,
0x1,
0x20409,
0x40811,
0x81021,
0x102041,
0x204081,
0x408001,
0x800001,
0x1,
0x2040811,
0x4081021,
0x8102041,
0x10204081,
0x20408001,
0x40800001,
0x80000001,
0x1,
0x204081021,
0x408102041,
0x810204081,
0x1020408001,
0x2040800001,
0x4080000001,
0x8000000001,
0x1,
0x20408102041,
0x40810204081,
0x81020408001,
0x102040800001,
0x204080000001,
0x408000000001,
0x800000000001,
0x1,
0x2040810204081,
0x4081020408001,
0x8102040800001,
0x10204080000001,
0x20408000000001,
0x40800000000001,
0x80000000000001,
0x1,
};
const u64 eatab[64] = {
0xfe,
0xfc,
0xf8,
0xf0,
0xe0,
0xc0,
0x80,
0x0,
0xfe00,
0xfc00,
0xf800,
0xf000,
0xe000,
0xc000,
0x8000,
0x0,
0xfe0000,
0xfc0000,
0xf80000,
0xf00000,
0xe00000,
0xc00000,
0x800000,
0x0,
0xfe000000,
0xfc000000,
0xf8000000,
0xf0000000,
0xe0000000,
0xc0000000,
0x80000000,
0x0,
0xfe00000000,
0xfc00000000,
0xf800000000,
0xf000000000,
0xe000000000,
0xc000000000,
0x8000000000,
0x0,
0xfe0000000000,
0xfc0000000000,
0xf80000000000,
0xf00000000000,
0xe00000000000,
0xc00000000000,
0x800000000000,
0x0,
0xfe000000000000,
0xfc000000000000,
0xf8000000000000,
0xf0000000000000,
0xe0000000000000,
0xc0000000000000,
0x80000000000000,
0x0,
0xfe00000000000000,
0xfc00000000000000,
0xf800000000000000,
0xf000000000000000,
0xe000000000000000,
0xc000000000000000,
0x8000000000000000,
0x0,
};
const u64 eabtab[64] = {
0x80000000000000fe,
0x80000000000000fc,
0x80000000000000f8,
0x80000000000000f0,
0x80000000000000e0,
0x80000000000000c0,
0x8000000000000080,
0x8000000000000000,
0x800000000000fe00,
0x800000000000fc00,
0x800000000000f800,
0x800000000000f000,
0x800000000000e000,
0x800000000000c000,
0x8000000000008000,
0x8000000000000000,
0x8000000000fe0000,
0x8000000000fc0000,
0x8000000000f80000,
0x8000000000f00000,
0x8000000000e00000,
0x8000000000c00000,
0x8000000000800000,
0x8000000000000000,
0x80000000fe000000,
0x80000000fc000000,
0x80000000f8000000,
0x80000000f0000000,
0x80000000e0000000,
0x80000000c0000000,
0x8000000080000000,
0x8000000000000000,
0x800000fe00000000,
0x800000fc00000000,
0x800000f800000000,
0x800000f000000000,
0x800000e000000000,
0x800000c000000000,
0x8000008000000000,
0x8000000000000000,
0x8000fe0000000000,
0x8000fc0000000000,
0x8000f80000000000,
0x8000f00000000000,
0x8000e00000000000,
0x8000c00000000000,
0x8000800000000000,
0x8000000000000000,
0x80fe000000000000,
0x80fc000000000000,
0x80f8000000000000,
0x80f0000000000000,
0x80e0000000000000,
0x80c0000000000000,
0x8080000000000000,
0x8000000000000000,
0xfe00000000000000,
0xfc00000000000000,
0xf800000000000000,
0xf000000000000000,
0xe000000000000000,
0xc000000000000000,
0x8000000000000000,
0x8000000000000000,
};
const u64 setab[64] = {
0x8040201008040200,
0x80402010080400,
0x804020100800,
0x8040201000,
0x80402000,
0x804000,
0x8000,
0x0,
0x4020100804020000,
0x8040201008040000,
0x80402010080000,
0x804020100000,
0x8040200000,
0x80400000,
0x800000,
0x0,
0x2010080402000000,
0x4020100804000000,
0x8040201008000000,
0x80402010000000,
0x804020000000,
0x8040000000,
0x80000000,
0x0,
0x1008040200000000,
0x2010080400000000,
0x4020100800000000,
0x8040201000000000,
0x80402000000000,
0x804000000000,
0x8000000000,
0x0,
0x804020000000000,
0x1008040000000000,
0x2010080000000000,
0x4020100000000000,
0x8040200000000000,
0x80400000000000,
0x800000000000,
0x0,
0x402000000000000,
0x804000000000000,
0x1008000000000000,
0x2010000000000000,
0x4020000000000000,
0x8040000000000000,
0x80000000000000,
0x0,
0x200000000000000,
0x400000000000000,
0x800000000000000,
0x1000000000000000,
0x2000000000000000,
0x4000000000000000,
0x8000000000000000,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
};
const u64 sebtab[64] = {
0x8040201008040200,
0x8080402010080400,
0x8000804020100800,
0x8000008040201000,
0x8000000080402000,
0x8000000000804000,
0x8000000000008000,
0x8000000000000000,
0xc020100804020000,
0x8040201008040000,
0x8080402010080000,
0x8000804020100000,
0x8000008040200000,
0x8000000080400000,
0x8000000000800000,
0x8000000000000000,
0xa010080402000000,
0xc020100804000000,
0x8040201008000000,
0x8080402010000000,
0x8000804020000000,
0x8000008040000000,
0x8000000080000000,
0x8000000000000000,
0x9008040200000000,
0xa010080400000000,
0xc020100800000000,
0x8040201000000000,
0x8080402000000000,
0x8000804000000000,
0x8000008000000000,
0x8000000000000000,
0x8804020000000000,
0x9008040000000000,
0xa010080000000000,
0xc020100000000000,
0x8040200000000000,
0x8080400000000000,
0x8000800000000000,
0x8000000000000000,
0x8402000000000000,
0x8804000000000000,
0x9008000000000000,
0xa010000000000000,
0xc020000000000000,
0x8040000000000000,
0x8080000000000000,
0x8000000000000000,
0x8200000000000000,
0x8400000000000000,
0x8800000000000000,
0x9000000000000000,
0xa000000000000000,
0xc000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
};
const u64 sotab[64] = {
0x101010101010100,
0x202020202020200,
0x404040404040400,
0x808080808080800,
0x1010101010101000,
0x2020202020202000,
0x4040404040404000,
0x8080808080808000,
0x101010101010000,
0x202020202020000,
0x404040404040000,
0x808080808080000,
0x1010101010100000,
0x2020202020200000,
0x4040404040400000,
0x8080808080800000,
0x101010101000000,
0x202020202000000,
0x404040404000000,
0x808080808000000,
0x1010101010000000,
0x2020202020000000,
0x4040404040000000,
0x8080808080000000,
0x101010100000000,
0x202020200000000,
0x404040400000000,
0x808080800000000,
0x1010101000000000,
0x2020202000000000,
0x4040404000000000,
0x8080808000000000,
0x101010000000000,
0x202020000000000,
0x404040000000000,
0x808080000000000,
0x1010100000000000,
0x2020200000000000,
0x4040400000000000,
0x8080800000000000,
0x101000000000000,
0x202000000000000,
0x404000000000000,
0x808000000000000,
0x1010000000000000,
0x2020000000000000,
0x4040000000000000,
0x8080000000000000,
0x100000000000000,
0x200000000000000,
0x400000000000000,
0x800000000000000,
0x1000000000000000,
0x2000000000000000,
0x4000000000000000,
0x8000000000000000,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
};
const u64 sobtab[64] = {
0x8101010101010100,
0x8202020202020200,
0x8404040404040400,
0x8808080808080800,
0x9010101010101000,
0xa020202020202000,
0xc040404040404000,
0x8080808080808000,
0x8101010101010000,
0x8202020202020000,
0x8404040404040000,
0x8808080808080000,
0x9010101010100000,
0xa020202020200000,
0xc040404040400000,
0x8080808080800000,
0x8101010101000000,
0x8202020202000000,
0x8404040404000000,
0x8808080808000000,
0x9010101010000000,
0xa020202020000000,
0xc040404040000000,
0x8080808080000000,
0x8101010100000000,
0x8202020200000000,
0x8404040400000000,
0x8808080800000000,
0x9010101000000000,
0xa020202000000000,
0xc040404000000000,
0x8080808000000000,
0x8101010000000000,
0x8202020000000000,
0x8404040000000000,
0x8808080000000000,
0x9010100000000000,
0xa020200000000000,
0xc040400000000000,
0x8080800000000000,
0x8101000000000000,
0x8202000000000000,
0x8404000000000000,
0x8808000000000000,
0x9010000000000000,
0xa020000000000000,
0xc040000000000000,
0x8080000000000000,
0x8100000000000000,
0x8200000000000000,
0x8400000000000000,
0x8800000000000000,
0x9000000000000000,
0xa000000000000000,
0xc000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
};
const u64 swtab[64] = {
0x0,
0x100,
0x10200,
0x1020400,
0x102040800,
0x10204081000,
0x1020408102000,
0x102040810204000,
0x0,
0x10000,
0x1020000,
0x102040000,
0x10204080000,
0x1020408100000,
0x102040810200000,
0x204081020400000,
0x0,
0x1000000,
0x102000000,
0x10204000000,
0x1020408000000,
0x102040810000000,
0x204081020000000,
0x408102040000000,
0x0,
0x100000000,
0x10200000000,
0x1020400000000,
0x102040800000000,
0x204081000000000,
0x408102000000000,
0x810204000000000,
0x0,
0x10000000000,
0x1020000000000,
0x102040000000000,
0x204080000000000,
0x408100000000000,
0x810200000000000,
0x1020400000000000,
0x0,
0x1000000000000,
0x102000000000000,
0x204000000000000,
0x408000000000000,
0x810000000000000,
0x1020000000000000,
0x2040000000000000,
0x0,
0x100000000000000,
0x200000000000000,
0x400000000000000,
0x800000000000000,
0x1000000000000000,
0x2000000000000000,
0x4000000000000000,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
};
const u64 swbtab[64] = {
0x8000000000000000,
0x8000000000000100,
0x8000000000010200,
0x8000000001020400,
0x8000000102040800,
0x8000010204081000,
0x8001020408102000,
0x8102040810204000,
0x8000000000000000,
0x8000000000010000,
0x8000000001020000,
0x8000000102040000,
0x8000010204080000,
0x8001020408100000,
0x8102040810200000,
0x8204081020400000,
0x8000000000000000,
0x8000000001000000,
0x8000000102000000,
0x8000010204000000,
0x8001020408000000,
0x8102040810000000,
0x8204081020000000,
0x8408102040000000,
0x8000000000000000,
0x8000000100000000,
0x8000010200000000,
0x8001020400000000,
0x8102040800000000,
0x8204081000000000,
0x8408102000000000,
0x8810204000000000,
0x8000000000000000,
0x8000010000000000,
0x8001020000000000,
0x8102040000000000,
0x8204080000000000,
0x8408100000000000,
0x8810200000000000,
0x9020400000000000,
0x8000000000000000,
0x8001000000000000,
0x8102000000000000,
0x8204000000000000,
0x8408000000000000,
0x8810000000000000,
0x9020000000000000,
0xa040000000000000,
0x8000000000000000,
0x8100000000000000,
0x8200000000000000,
0x8400000000000000,
0x8800000000000000,
0x9000000000000000,
0xa000000000000000,
0xc000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
0x8000000000000000,
};
const u64 wetab[64] = {
0x0,
0x1,
0x3,
0x7,
0xf,
0x1f,
0x3f,
0x7f,
0x0,
0x100,
0x300,
0x700,
0xf00,
0x1f00,
0x3f00,
0x7f00,
0x0,
0x10000,
0x30000,
0x70000,
0xf0000,
0x1f0000,
0x3f0000,
0x7f0000,
0x0,
0x1000000,
0x3000000,
0x7000000,
0xf000000,
0x1f000000,
0x3f000000,
0x7f000000,
0x0,
0x100000000,
0x300000000,
0x700000000,
0xf00000000,
0x1f00000000,
0x3f00000000,
0x7f00000000,
0x0,
0x10000000000,
0x30000000000,
0x70000000000,
0xf0000000000,
0x1f0000000000,
0x3f0000000000,
0x7f0000000000,
0x0,
0x1000000000000,
0x3000000000000,
0x7000000000000,
0xf000000000000,
0x1f000000000000,
0x3f000000000000,
0x7f000000000000,
0x0,
0x100000000000000,
0x300000000000000,
0x700000000000000,
0xf00000000000000,
0x1f00000000000000,
0x3f00000000000000,
0x7f00000000000000,
};
const u64 webtab[64] = {
0x1,
0x1,
0x3,
0x7,
0xf,
0x1f,
0x3f,
0x7f,
0x1,
0x101,
0x301,
0x701,
0xf01,
0x1f01,
0x3f01,
0x7f01,
0x1,
0x10001,
0x30001,
0x70001,
0xf0001,
0x1f0001,
0x3f0001,
0x7f0001,
0x1,
0x1000001,
0x3000001,
0x7000001,
0xf000001,
0x1f000001,
0x3f000001,
0x7f000001,
0x1,
0x100000001,
0x300000001,
0x700000001,
0xf00000001,
0x1f00000001,
0x3f00000001,
0x7f00000001,
0x1,
0x10000000001,
0x30000000001,
0x70000000001,
0xf0000000001,
0x1f0000000001,
0x3f0000000001,
0x7f0000000001,
0x1,
0x1000000000001,
0x3000000000001,
0x7000000000001,
0xf000000000001,
0x1f000000000001,
0x3f000000000001,
0x7f000000000001,
0x1,
0x100000000000001,
0x300000000000001,
0x700000000000001,
0xf00000000000001,
0x1f00000000000001,
0x3f00000000000001,
0x7f00000000000001,
};
const u64 nwtab[64] = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x1,
0x2,
0x4,
0x8,
0x10,
0x20,
0x40,
0x0,
0x100,
0x201,
0x402,
0x804,
0x1008,
0x2010,
0x4020,
0x0,
0x10000,
0x20100,
0x40201,
0x80402,
0x100804,
0x201008,
0x402010,
0x0,
0x1000000,
0x2010000,
0x4020100,
0x8040201,
0x10080402,
0x20100804,
0x40201008,
0x0,
0x100000000,
0x201000000,
0x402010000,
0x804020100,
0x1008040201,
0x2010080402,
0x4020100804,
0x0,
0x10000000000,
0x20100000000,
0x40201000000,
0x80402010000,
0x100804020100,
0x201008040201,
0x402010080402,
0x0,
0x1000000000000,
0x2010000000000,
0x4020100000000,
0x8040201000000,
0x10080402010000,
0x20100804020100,
0x40201008040201,
};
const u64 nwbtab[64] = {
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x1,
0x3,
0x5,
0x9,
0x11,
0x21,
0x41,
0x1,
0x101,
0x201,
0x403,
0x805,
0x1009,
0x2011,
0x4021,
0x1,
0x10001,
0x20101,
0x40201,
0x80403,
0x100805,
0x201009,
0x402011,
0x1,
0x1000001,
0x2010001,
0x4020101,
0x8040201,
0x10080403,
0x20100805,
0x40201009,
0x1,
0x100000001,
0x201000001,
0x402010001,
0x804020101,
0x1008040201,
0x2010080403,
0x4020100805,
0x1,
0x10000000001,
0x20100000001,
0x40201000001,
0x80402010001,
0x100804020101,
0x201008040201,
0x402010080403,
0x1,
0x1000000000001,
0x2010000000001,
0x4020100000001,
0x8040201000001,
0x10080402010001,
0x20100804020101,
0x40201008040201,
};
const u64 rotab[64] = {
0x1010101010101fe,
0x2020202020202fd,
0x4040404040404fb,
0x8080808080808f7,
0x10101010101010ef,
0x20202020202020df,
0x40404040404040bf,
0x808080808080807f,
0x10101010101fe01,
0x20202020202fd02,
0x40404040404fb04,
0x80808080808f708,
0x101010101010ef10,
0x202020202020df20,
0x404040404040bf40,
0x8080808080807f80,
0x101010101fe0101,
0x202020202fd0202,
0x404040404fb0404,
0x808080808f70808,
0x1010101010ef1010,
0x2020202020df2020,
0x4040404040bf4040,
0x80808080807f8080,
0x1010101fe010101,
0x2020202fd020202,
0x4040404fb040404,
0x8080808f7080808,
0x10101010ef101010,
0x20202020df202020,
0x40404040bf404040,
0x808080807f808080,
0x10101fe01010101,
0x20202fd02020202,
0x40404fb04040404,
0x80808f708080808,
0x101010ef10101010,
0x202020df20202020,
0x404040bf40404040,
0x8080807f80808080,
0x101fe0101010101,
0x202fd0202020202,
0x404fb0404040404,
0x808f70808080808,
0x1010ef1010101010,
0x2020df2020202020,
0x4040bf4040404040,
0x80807f8080808080,
0x1fe010101010101,
0x2fd020202020202,
0x4fb040404040404,
0x8f7080808080808,
0x10ef101010101010,
0x20df202020202020,
0x40bf404040404040,
0x807f808080808080,
0xfe01010101010101,
0xfd02020202020202,
0xfb04040404040404,
0xf708080808080808,
0xef10101010101010,
0xdf20202020202020,
0xbf40404040404040,
0x7f80808080808080,
};
const u64 bitab[64] = {
0x8040201008040200,
0x80402010080500,
0x804020110a00,
0x8041221400,
0x182442800,
0x10204885000,
0x102040810a000,
0x102040810204000,
0x4020100804020002,
0x8040201008050005,
0x804020110a000a,
0x804122140014,
0x18244280028,
0x1020488500050,
0x102040810a000a0,
0x204081020400040,
0x2010080402000204,
0x4020100805000508,
0x804020110a000a11,
0x80412214001422,
0x1824428002844,
0x102048850005088,
0x2040810a000a010,
0x408102040004020,
0x1008040200020408,
0x2010080500050810,
0x4020110a000a1120,
0x8041221400142241,
0x182442800284482,
0x204885000508804,
0x40810a000a01008,
0x810204000402010,
0x804020002040810,
0x1008050005081020,
0x20110a000a112040,
0x4122140014224180,
0x8244280028448201,
0x488500050880402,
0x810a000a0100804,
0x1020400040201008,
0x402000204081020,
0x805000508102040,
0x110a000a11204080,
0x2214001422418000,
0x4428002844820100,
0x8850005088040201,
0x10a000a010080402,
0x2040004020100804,
0x200020408102040,
0x500050810204080,
0xa000a1120408000,
0x1400142241800000,
0x2800284482010000,
0x5000508804020100,
0xa000a01008040201,
0x4000402010080402,
0x2040810204080,
0x5081020408000,
0xa112040800000,
0x14224180000000,
0x28448201000000,
0x50880402010000,
0xa0100804020100,
0x40201008040201,
};
const u64 kntab[64] = {
0x20400,
0x50800,
0xa1100,
0x142200,
0x284400,
0x508800,
0xa01000,
0x402000,
0x2040004,
0x5080008,
0xa110011,
0x14220022,
0x28440044,
0x50880088,
0xa0100010,
0x40200020,
0x204000402,
0x508000805,
0xa1100110a,
0x1422002214,
0x2844004428,
0x5088008850,
0xa0100010a0,
0x4020002040,
0x20400040200,
0x50800080500,
0xa1100110a00,
0x142200221400,
0x284400442800,
0x508800885000,
0xa0100010a000,
0x402000204000,
0x2040004020000,
0x5080008050000,
0xa1100110a0000,
0x14220022140000,
0x28440044280000,
0x50880088500000,
0xa0100010a00000,
0x40200020400000,
0x204000402000000,
0x508000805000000,
0xa1100110a000000,
0x1422002214000000,
0x2844004428000000,
0x5088008850000000,
0xa0100010a0000000,
0x4020002040000000,
0x400040200000000,
0x800080500000000,
0x1100110a00000000,
0x2200221400000000,
0x4400442800000000,
0x8800885000000000,
0x100010a000000000,
0x2000204000000000,
0x4020000000000,
0x8050000000000,
0x110a0000000000,
0x22140000000000,
0x44280000000000,
0x88500000000000,
0x10a00000000000,
0x20400000000000,
};
const u64 wctab[64] = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x2,
0x5,
0xa,
0x14,
0x28,
0x50,
0xa0,
0x40,
0x200,
0x500,
0xa00,
0x1400,
0x2800,
0x5000,
0xa000,
0x4000,
0x20000,
0x50000,
0xa0000,
0x140000,
0x280000,
0x500000,
0xa00000,
0x400000,
0x2000000,
0x5000000,
0xa000000,
0x14000000,
0x28000000,
0x50000000,
0xa0000000,
0x40000000,
0x200000000,
0x500000000,
0xa00000000,
0x1400000000,
0x2800000000,
0x5000000000,
0xa000000000,
0x4000000000,
0x20000000000,
0x50000000000,
0xa0000000000,
0x140000000000,
0x280000000000,
0x500000000000,
0xa00000000000,
0x400000000000,
0x2000000000000,
0x5000000000000,
0xa000000000000,
0x14000000000000,
0x28000000000000,
0x50000000000000,
0xa0000000000000,
0x40000000000000,
};
const u64 bctab[64] = {
0x200,
0x500,
0xa00,
0x1400,
0x2800,
0x5000,
0xa000,
0x4000,
0x20000,
0x50000,
0xa0000,
0x140000,
0x280000,
0x500000,
0xa00000,
0x400000,
0x2000000,
0x5000000,
0xa000000,
0x14000000,
0x28000000,
0x50000000,
0xa0000000,
0x40000000,
0x200000000,
0x500000000,
0xa00000000,
0x1400000000,
0x2800000000,
0x5000000000,
0xa000000000,
0x4000000000,
0x20000000000,
0x50000000000,
0xa0000000000,
0x140000000000,
0x280000000000,
0x500000000000,
0xa00000000000,
0x400000000000,
0x2000000000000,
0x5000000000000,
0xa000000000000,
0x14000000000000,
0x28000000000000,
0x50000000000000,
0xa0000000000000,
0x40000000000000,
0x200000000000000,
0x500000000000000,
0xa00000000000000,
0x1400000000000000,
0x2800000000000000,
0x5000000000000000,
0xa000000000000000,
0x4000000000000000,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
};
const u64 wptab[64] = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x1,
0x2,
0x4,
0x8,
0x10,
0x20,
0x40,
0x80,
0x100,
0x200,
0x400,
0x800,
0x1000,
0x2000,
0x4000,
0x8000,
0x10000,
0x20000,
0x40000,
0x80000,
0x100000,
0x200000,
0x400000,
0x800000,
0x1000000,
0x2000000,
0x4000000,
0x8000000,
0x10000000,
0x20000000,
0x40000000,
0x80000000,
0x100000000,
0x200000000,
0x400000000,
0x800000000,
0x1000000000,
0x2000000000,
0x4000000000,
0x8000000000,
0x10000000000,
0x20000000000,
0x40000000000,
0x80000000000,
0x100000000000,
0x200000000000,
0x400000000000,
0x800000000000,
0x1000000000000,
0x2000000000000,
0x4000000000000,
0x8000000000000,
0x10000000000000,
0x20000000000000,
0x40000000000000,
0x80000000000000,
};
const u64 bptab[64] = {
0x100,
0x200,
0x400,
0x800,
0x1000,
0x2000,
0x4000,
0x8000,
0x10000,
0x20000,
0x40000,
0x80000,
0x100000,
0x200000,
0x400000,
0x800000,
0x1000000,
0x2000000,
0x4000000,
0x8000000,
0x10000000,
0x20000000,
0x40000000,
0x80000000,
0x100000000,
0x200000000,
0x400000000,
0x800000000,
0x1000000000,
0x2000000000,
0x4000000000,
0x8000000000,
0x10000000000,
0x20000000000,
0x40000000000,
0x80000000000,
0x100000000000,
0x200000000000,
0x400000000000,
0x800000000000,
0x1000000000000,
0x2000000000000,
0x4000000000000,
0x8000000000000,
0x10000000000000,
0x20000000000000,
0x40000000000000,
0x80000000000000,
0x100000000000000,
0x200000000000000,
0x400000000000000,
0x800000000000000,
0x1000000000000000,
0x2000000000000000,
0x4000000000000000,
0x8000000000000000,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
};
const u64 wltab[64] = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x100000000,
0x200000000,
0x400000000,
0x800000000,
0x1000000000,
0x2000000000,
0x4000000000,
0x8000000000,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
};
const u64 bltab[64] = {
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x1000000,
0x2000000,
0x4000000,
0x8000000,
0x10000000,
0x20000000,
0x40000000,
0x80000000,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
0x0,
};