use crate::engine::magics::MagicEntry;
pub const ROOK_MAGICS: &[MagicEntry; 64] = &[
MagicEntry {
mask: 0x000101010101017E,
magic: 0x1880002085400810,
shift: 52,
offset: 0,
},
MagicEntry {
mask: 0x000202020202027C,
magic: 0x00401000C0012008,
shift: 53,
offset: 4096,
},
MagicEntry {
mask: 0x000404040404047A,
magic: 0x868008A000801000,
shift: 53,
offset: 6144,
},
MagicEntry {
mask: 0x0008080808080876,
magic: 0x0080242800900080,
shift: 53,
offset: 8192,
},
MagicEntry {
mask: 0x001010101010106E,
magic: 0x3480120400800800,
shift: 53,
offset: 10240,
},
MagicEntry {
mask: 0x002020202020205E,
magic: 0x0200100200188904,
shift: 53,
offset: 12288,
},
MagicEntry {
mask: 0x004040404040403E,
magic: 0x05000410A1004A00,
shift: 53,
offset: 14336,
},
MagicEntry {
mask: 0x008080808080807E,
magic: 0x0080104021000080,
shift: 52,
offset: 16384,
},
MagicEntry {
mask: 0x0001010101017E00,
magic: 0x0C04800080400020,
shift: 53,
offset: 20480,
},
MagicEntry {
mask: 0x0002020202027C00,
magic: 0x401440022010014A,
shift: 54,
offset: 22528,
},
MagicEntry {
mask: 0x0004040404047A00,
magic: 0x2002802008100080,
shift: 54,
offset: 23552,
},
MagicEntry {
mask: 0x0008080808087600,
magic: 0x0001002009001000,
shift: 54,
offset: 24576,
},
MagicEntry {
mask: 0x0010101010106E00,
magic: 0x2028800400080081,
shift: 54,
offset: 25600,
},
MagicEntry {
mask: 0x0020202020205E00,
magic: 0x00020050C4080200,
shift: 54,
offset: 26624,
},
MagicEntry {
mask: 0x0040404040403E00,
magic: 0x8082000418420001,
shift: 54,
offset: 27648,
},
MagicEntry {
mask: 0x0080808080807E00,
magic: 0x0922000203064094,
shift: 53,
offset: 28672,
},
MagicEntry {
mask: 0x00010101017E0100,
magic: 0x1000258000804005,
shift: 53,
offset: 30720,
},
MagicEntry {
mask: 0x00020202027C0200,
magic: 0x0020008024401080,
shift: 54,
offset: 32768,
},
MagicEntry {
mask: 0x00040404047A0400,
magic: 0x0000820015402200,
shift: 54,
offset: 33792,
},
MagicEntry {
mask: 0x0008080808760800,
magic: 0x0401828008001000,
shift: 54,
offset: 34816,
},
MagicEntry {
mask: 0x00101010106E1000,
magic: 0xA003010010280014,
shift: 54,
offset: 35840,
},
MagicEntry {
mask: 0x00202020205E2000,
magic: 0x0000808004017200,
shift: 54,
offset: 36864,
},
MagicEntry {
mask: 0x00404040403E4000,
magic: 0x00002400306A1801,
shift: 54,
offset: 37888,
},
MagicEntry {
mask: 0x00808080807E8000,
magic: 0x0051020000440083,
shift: 53,
offset: 38912,
},
MagicEntry {
mask: 0x000101017E010100,
magic: 0x4000400080008720,
shift: 53,
offset: 40960,
},
MagicEntry {
mask: 0x000202027C020200,
magic: 0x6040025100210080,
shift: 54,
offset: 43008,
},
MagicEntry {
mask: 0x000404047A040400,
magic: 0x1121914100200700,
shift: 54,
offset: 44032,
},
MagicEntry {
mask: 0x0008080876080800,
magic: 0x0C02210100500088,
shift: 54,
offset: 45056,
},
MagicEntry {
mask: 0x001010106E101000,
magic: 0x0C005800800C0081,
shift: 54,
offset: 46080,
},
MagicEntry {
mask: 0x002020205E202000,
magic: 0x0001000900040016,
shift: 54,
offset: 47104,
},
MagicEntry {
mask: 0x004040403E404000,
magic: 0x2810082400011012,
shift: 54,
offset: 48128,
},
MagicEntry {
mask: 0x008080807E808000,
magic: 0x20108021800A4100,
shift: 53,
offset: 49152,
},
MagicEntry {
mask: 0x0001017E01010100,
magic: 0x204260C002801080,
shift: 53,
offset: 51200,
},
MagicEntry {
mask: 0x0002027C02020200,
magic: 0x0040004080802000,
shift: 54,
offset: 53248,
},
MagicEntry {
mask: 0x0004047A04040400,
magic: 0x0000A00880801002,
shift: 54,
offset: 54272,
},
MagicEntry {
mask: 0x0008087608080800,
magic: 0x0050861000800800,
shift: 54,
offset: 55296,
},
MagicEntry {
mask: 0x0010106E10101000,
magic: 0x010500104F000800,
shift: 54,
offset: 56320,
},
MagicEntry {
mask: 0x0020205E20202000,
magic: 0x0228441008012040,
shift: 54,
offset: 57344,
},
MagicEntry {
mask: 0x0040403E40404000,
magic: 0x0230421084000861,
shift: 54,
offset: 58368,
},
MagicEntry {
mask: 0x0080807E80808000,
magic: 0x0000004082000304,
shift: 53,
offset: 59392,
},
MagicEntry {
mask: 0x00017E0101010100,
magic: 0x0000894000208001,
shift: 53,
offset: 61440,
},
MagicEntry {
mask: 0x00027C0202020200,
magic: 0x80100A2000404002,
shift: 54,
offset: 63488,
},
MagicEntry {
mask: 0x00047A0404040400,
magic: 0x0510080401A02000,
shift: 54,
offset: 64512,
},
MagicEntry {
mask: 0x0008760808080800,
magic: 0x0110000901510020,
shift: 54,
offset: 65536,
},
MagicEntry {
mask: 0x00106E1010101000,
magic: 0x4000980005010010,
shift: 54,
offset: 66560,
},
MagicEntry {
mask: 0x00205E2020202000,
magic: 0x0020220004008080,
shift: 54,
offset: 67584,
},
MagicEntry {
mask: 0x00403E4040404000,
magic: 0x1030080A10040003,
shift: 54,
offset: 68608,
},
MagicEntry {
mask: 0x00807E8080808000,
magic: 0x000C008241020004,
shift: 53,
offset: 69632,
},
MagicEntry {
mask: 0x007E010101010100,
magic: 0x0200800040002080,
shift: 53,
offset: 71680,
},
MagicEntry {
mask: 0x007C020202020200,
magic: 0x01044001E0108480,
shift: 54,
offset: 73728,
},
MagicEntry {
mask: 0x007A040404040400,
magic: 0x0008600090018080,
shift: 54,
offset: 74752,
},
MagicEntry {
mask: 0x0076080808080800,
magic: 0x003508920042A200,
shift: 54,
offset: 75776,
},
MagicEntry {
mask: 0x006E101010101000,
magic: 0x0000110004080100,
shift: 54,
offset: 76800,
},
MagicEntry {
mask: 0x005E202020202000,
magic: 0x2860020004008080,
shift: 54,
offset: 77824,
},
MagicEntry {
mask: 0x003E404040404000,
magic: 0x0002024807104400,
shift: 54,
offset: 78848,
},
MagicEntry {
mask: 0x007E808080808000,
magic: 0x0023000052088D00,
shift: 53,
offset: 79872,
},
MagicEntry {
mask: 0x7E01010101010100,
magic: 0x0002070010804022,
shift: 52,
offset: 81920,
},
MagicEntry {
mask: 0x7C02020202020200,
magic: 0x1020204007001085,
shift: 53,
offset: 86016,
},
MagicEntry {
mask: 0x7A04040404040400,
magic: 0x0020005100084021,
shift: 53,
offset: 88064,
},
MagicEntry {
mask: 0x7608080808080800,
magic: 0x1021201001050009,
shift: 53,
offset: 90112,
},
MagicEntry {
mask: 0x6E10101010101000,
magic: 0x0102008C20100802,
shift: 53,
offset: 92160,
},
MagicEntry {
mask: 0x5E20202020202000,
magic: 0x0201000228140009,
shift: 53,
offset: 94208,
},
MagicEntry {
mask: 0x3E40404040404000,
magic: 0x04000A1040880104,
shift: 53,
offset: 96256,
},
MagicEntry {
mask: 0x7E80808080808000,
magic: 0x0024108100440022,
shift: 52,
offset: 98304,
},
];
pub const ROOK_TABLE_SIZE: usize = 102400;
pub const BISHOP_MAGICS: &[MagicEntry; 64] = &[
MagicEntry {
mask: 0x0040201008040200,
magic: 0x0028010C140C0020,
shift: 58,
offset: 0,
},
MagicEntry {
mask: 0x0000402010080400,
magic: 0x486004010E022800,
shift: 59,
offset: 64,
},
MagicEntry {
mask: 0x0000004020100A00,
magic: 0x0042061845000880,
shift: 59,
offset: 96,
},
MagicEntry {
mask: 0x0000000040221400,
magic: 0x4824150602804818,
shift: 59,
offset: 128,
},
MagicEntry {
mask: 0x0000000002442800,
magic: 0x00140420408000C0,
shift: 59,
offset: 160,
},
MagicEntry {
mask: 0x0000000204085000,
magic: 0x8801301010000001,
shift: 59,
offset: 192,
},
MagicEntry {
mask: 0x0000020408102000,
magic: 0x0102520220200100,
shift: 59,
offset: 224,
},
MagicEntry {
mask: 0x0002040810204000,
magic: 0x0000442884202011,
shift: 58,
offset: 256,
},
MagicEntry {
mask: 0x0020100804020000,
magic: 0x0000A514500C0120,
shift: 59,
offset: 320,
},
MagicEntry {
mask: 0x0040201008040000,
magic: 0x0004228401040110,
shift: 59,
offset: 352,
},
MagicEntry {
mask: 0x00004020100A0000,
magic: 0x0401108400806000,
shift: 59,
offset: 384,
},
MagicEntry {
mask: 0x0000004022140000,
magic: 0x0020980491008008,
shift: 59,
offset: 416,
},
MagicEntry {
mask: 0x0000000244280000,
magic: 0x01000A0210402008,
shift: 59,
offset: 448,
},
MagicEntry {
mask: 0x0000020408500000,
magic: 0x1001010402400814,
shift: 59,
offset: 480,
},
MagicEntry {
mask: 0x0002040810200000,
magic: 0xA828020130088462,
shift: 59,
offset: 512,
},
MagicEntry {
mask: 0x0004081020400000,
magic: 0x2101910045100838,
shift: 59,
offset: 544,
},
MagicEntry {
mask: 0x0010080402000200,
magic: 0x2004000820180200,
shift: 59,
offset: 576,
},
MagicEntry {
mask: 0x0020100804000400,
magic: 0x4010882001034900,
shift: 59,
offset: 608,
},
MagicEntry {
mask: 0x004020100A000A00,
magic: 0x0030042802424188,
shift: 57,
offset: 640,
},
MagicEntry {
mask: 0x0000402214001400,
magic: 0x012184180204C000,
shift: 57,
offset: 768,
},
MagicEntry {
mask: 0x0000024428002800,
magic: 0x4484000220A02021,
shift: 57,
offset: 896,
},
MagicEntry {
mask: 0x0002040850005000,
magic: 0x0C14100200440400,
shift: 57,
offset: 1024,
},
MagicEntry {
mask: 0x0004081020002000,
magic: 0x2012108100904C00,
shift: 59,
offset: 1152,
},
MagicEntry {
mask: 0x0008102040004000,
magic: 0x4802880500A80104,
shift: 59,
offset: 1184,
},
MagicEntry {
mask: 0x0008040200020400,
magic: 0x00CC420810020800,
shift: 59,
offset: 1216,
},
MagicEntry {
mask: 0x0010080400040800,
magic: 0x0010900014010228,
shift: 59,
offset: 1248,
},
MagicEntry {
mask: 0x0020100A000A1000,
magic: 0x4108900022040010,
shift: 57,
offset: 1280,
},
MagicEntry {
mask: 0x0040221400142200,
magic: 0x2104080000202040,
shift: 55,
offset: 1408,
},
MagicEntry {
mask: 0x0002442800284400,
magic: 0x0001010000904008,
shift: 55,
offset: 1920,
},
MagicEntry {
mask: 0x0004085000500800,
magic: 0x0840830010806008,
shift: 57,
offset: 2432,
},
MagicEntry {
mask: 0x0008102000201000,
magic: 0x0C818408190C0200,
shift: 59,
offset: 2560,
},
MagicEntry {
mask: 0x0010204000402000,
magic: 0x0103004012004400,
shift: 59,
offset: 2592,
},
MagicEntry {
mask: 0x0004020002040800,
magic: 0x0244A48408202000,
shift: 59,
offset: 2624,
},
MagicEntry {
mask: 0x0008040004081000,
magic: 0x03049010158C04AA,
shift: 59,
offset: 2656,
},
MagicEntry {
mask: 0x00100A000A102000,
magic: 0x0002005004090100,
shift: 57,
offset: 2688,
},
MagicEntry {
mask: 0x0022140014224000,
magic: 0x0090200800210052,
shift: 55,
offset: 2816,
},
MagicEntry {
mask: 0x0044280028440200,
magic: 0x20E40A4010040100,
shift: 55,
offset: 3328,
},
MagicEntry {
mask: 0x0008500050080400,
magic: 0x9008004100819000,
shift: 57,
offset: 3840,
},
MagicEntry {
mask: 0x0010200020100800,
magic: 0x09D0249220410102,
shift: 59,
offset: 3968,
},
MagicEntry {
mask: 0x0020400040201000,
magic: 0x0202484601004200,
shift: 59,
offset: 4000,
},
MagicEntry {
mask: 0x0002000204081000,
magic: 0x01044A200414510A,
shift: 59,
offset: 4032,
},
MagicEntry {
mask: 0x0004000408102000,
magic: 0x8002888420007000,
shift: 59,
offset: 4064,
},
MagicEntry {
mask: 0x000A000A10204000,
magic: 0x008A084410040600,
shift: 57,
offset: 4096,
},
MagicEntry {
mask: 0x0014001422400000,
magic: 0x0100002031000802,
shift: 57,
offset: 4224,
},
MagicEntry {
mask: 0x0028002844020000,
magic: 0x0000280704006140,
shift: 57,
offset: 4352,
},
MagicEntry {
mask: 0x0050005008040200,
magic: 0x0008021004100208,
shift: 57,
offset: 4480,
},
MagicEntry {
mask: 0x0020002010080400,
magic: 0x0020280240814440,
shift: 59,
offset: 4608,
},
MagicEntry {
mask: 0x0040004020100800,
magic: 0x008A008401088588,
shift: 59,
offset: 4640,
},
MagicEntry {
mask: 0x0000020408102000,
magic: 0x0444020E03204020,
shift: 59,
offset: 4672,
},
MagicEntry {
mask: 0x0000040810204000,
magic: 0x2281010150020080,
shift: 59,
offset: 4704,
},
MagicEntry {
mask: 0x00000A1020400000,
magic: 0x0000190401048240,
shift: 59,
offset: 4736,
},
MagicEntry {
mask: 0x0000142240000000,
magic: 0x49400C020A020492,
shift: 59,
offset: 4768,
},
MagicEntry {
mask: 0x0000284402000000,
magic: 0x000010A020444201,
shift: 59,
offset: 4800,
},
MagicEntry {
mask: 0x0000500804020000,
magic: 0x000048A004442001,
shift: 59,
offset: 4832,
},
MagicEntry {
mask: 0x0000201008040200,
magic: 0x60200610590F0000,
shift: 59,
offset: 4864,
},
MagicEntry {
mask: 0x0000402010080400,
magic: 0x062028152100A129,
shift: 59,
offset: 4896,
},
MagicEntry {
mask: 0x0002040810204000,
magic: 0x2001002901084044,
shift: 58,
offset: 4928,
},
MagicEntry {
mask: 0x0004081020400000,
magic: 0x0040006201142000,
shift: 59,
offset: 4992,
},
MagicEntry {
mask: 0x000A102040000000,
magic: 0x0000400042080480,
shift: 59,
offset: 5024,
},
MagicEntry {
mask: 0x0014224000000000,
magic: 0x00A1B05204841106,
shift: 59,
offset: 5056,
},
MagicEntry {
mask: 0x0028440200000000,
magic: 0x05801800104A0882,
shift: 59,
offset: 5088,
},
MagicEntry {
mask: 0x0050080402000000,
magic: 0x320480843002060C,
shift: 59,
offset: 5120,
},
MagicEntry {
mask: 0x0020100804020000,
magic: 0x5800104210640088,
shift: 59,
offset: 5152,
},
MagicEntry {
mask: 0x0040201008040200,
magic: 0x0032840C18064100,
shift: 58,
offset: 5184,
},
];
pub const BISHOP_TABLE_SIZE: usize = 5248;