-#include "bitcount.h"
-#include "rkiss.h"
-
-CACHE_LINE_ALIGNMENT
-
-Bitboard RMasks[64];
-Bitboard RMagics[64];
-Bitboard* RAttacks[64];
-unsigned RShifts[64];
-
-Bitboard BMasks[64];
-Bitboard BMagics[64];
-Bitboard* BAttacks[64];
-unsigned BShifts[64];
-
-Bitboard SquareBB[64];
-Bitboard FileBB[8];
-Bitboard RankBB[8];
-Bitboard AdjacentFilesBB[8];
-Bitboard ThisAndAdjacentFilesBB[8];
-Bitboard InFrontBB[2][8];
-Bitboard StepAttacksBB[16][64];
-Bitboard BetweenBB[64][64];
-Bitboard SquaresInFrontMask[2][64];
-Bitboard PassedPawnMask[2][64];
-Bitboard AttackSpanMask[2][64];
-Bitboard PseudoAttacks[6][64];
-
-uint8_t BitCount8Bit[256];
-int SquareDistance[64][64];
-
-namespace {
-
- CACHE_LINE_ALIGNMENT
-
- int BSFTable[64];
- int MS1BTable[256];
- Bitboard RTable[0x19000]; // Storage space for rook attacks
- Bitboard BTable[0x1480]; // Storage space for bishop attacks
-
- typedef unsigned (Fn)(Square, Bitboard);
-
- void init_magics(Bitboard table[], Bitboard* attacks[], Bitboard magics[],
- Bitboard masks[], unsigned shifts[], Square deltas[], Fn index);
-}
-
-
-/// print_bitboard() prints a bitboard in an easily readable format to the
-/// standard output. This is sometimes useful for debugging.
-
-void print_bitboard(Bitboard b) {
-
- for (Rank r = RANK_8; r >= RANK_1; r--)
- {
- std::cout << "+---+---+---+---+---+---+---+---+" << '\n';
- for (File f = FILE_A; f <= FILE_H; f++)
- std::cout << "| " << ((b & make_square(f, r)) ? "X " : " ");
-
- std::cout << "|\n";
- }
- std::cout << "+---+---+---+---+---+---+---+---+" << std::endl;
-}
-
-
-/// first_1() finds the least significant nonzero bit in a nonzero bitboard.
-/// pop_1st_bit() finds and clears the least significant nonzero bit in a
-/// nonzero bitboard.
-
-#if defined(IS_64BIT) && !defined(USE_BSFQ)
-
-Square first_1(Bitboard b) {
- return Square(BSFTable[((b & -b) * 0x218A392CD3D5DBFULL) >> 58]);
-}
-
-Square pop_1st_bit(Bitboard* b) {
- Bitboard bb = *b;
- *b &= (*b - 1);
- return Square(BSFTable[((bb & -bb) * 0x218A392CD3D5DBFULL) >> 58]);
-}
-
-#elif !defined(USE_BSFQ)
-
-Square first_1(Bitboard b) {
- b ^= (b - 1);
- uint32_t fold = unsigned(b) ^ unsigned(b >> 32);
- return Square(BSFTable[(fold * 0x783A9B23) >> 26]);
-}
-
-// Use type-punning
-union b_union {
-
- Bitboard dummy;
- struct {
-#if defined (BIGENDIAN)
- uint32_t h;
- uint32_t l;
-#else
- uint32_t l;
- uint32_t h;
-#endif
- } b;
+#include "misc.h"
+
+uint8_t PopCnt16[1 << 16];
+uint8_t SquareDistance[SQUARE_NB][SQUARE_NB];
+
+Bitboard SquareBB[SQUARE_NB];
+Bitboard ForwardRanksBB[COLOR_NB][RANK_NB];
+Bitboard BetweenBB[SQUARE_NB][SQUARE_NB];
+Bitboard LineBB[SQUARE_NB][SQUARE_NB];
+Bitboard DistanceRingBB[SQUARE_NB][8];
+Bitboard PseudoAttacks[PIECE_TYPE_NB][SQUARE_NB];
+Bitboard PawnAttacks[COLOR_NB][SQUARE_NB];
+
+Bitboard KingFlank[FILE_NB] = {
+ QueenSide ^ FileDBB, QueenSide, QueenSide,
+ CenterFiles, CenterFiles,
+ KingSide, KingSide, KingSide ^ FileEBB