From ad3e0b50ca468be3ecda99d2147551716e4adf5e Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Mon, 4 Nov 2024 19:36:40 -0600 Subject: [PATCH 1/9] compression in scala --- .gitignore | 3 + build.sbt | 7 +- project/build.properties | 2 +- src/main/java/BitOps.java | 11 - src/main/java/BitReader.java | 40 - src/main/java/BitWriter.java | 37 - src/main/java/IntArrayList.java | 38 - src/main/java/VarIntEncoder.java | 60 - src/main/java/clock/Encoder.java | 48 - src/main/java/clock/EndTimeEstimator.java | 19 - src/main/java/clock/LinearEstimator.java | 41 - src/main/java/clock/LowBitTruncator.java | 44 - src/main/java/game/Bitboard.java | 141 - src/main/java/game/Board.java | 494 - src/main/java/game/Encoder.java | 226 - src/main/java/game/Huffman.java | 334 - src/main/java/game/Magic.java | 155 - src/main/java/game/Move.java | 143 - src/main/java/game/MoveList.java | 93 - src/main/java/game/PerftTest.java | 20624 ------ src/main/java/game/Piece.java | 11 - src/main/java/game/Role.java | 18 - src/main/java/game/Square.java | 41 - src/main/java/game/ZobristHash.java | 177 - src/main/scala/BitOps.scala | 102 + src/main/scala/clock/Encoder.scala | 38 + src/main/scala/clock/EndTimeEstimator.scala | 11 + src/main/scala/clock/LinearEstimator.scala | 31 + src/main/scala/clock/LowBitTruncator.scala | 28 + src/main/scala/game/Bitboard.scala | 120 + src/main/scala/game/Board.scala | 334 + src/main/scala/game/Encoder.scala | 164 + src/main/scala/game/Huffman.scala | 291 + src/main/scala/game/Magic.scala | 138 + src/main/scala/game/Move.scala | 80 + src/main/scala/game/MoveList.scala | 61 + src/main/scala/game/ZobristHash.scala | 116 + src/main/scala/game/model.scala | 35 + src/test/scala/HuffmanPgnTest.scala | 73 +- src/test/scala/PerftTest.scala | 69023 ++++++++++++++++++ 40 files changed, 70624 insertions(+), 22828 deletions(-) delete mode 100644 src/main/java/BitOps.java delete mode 100644 src/main/java/BitReader.java delete mode 100644 src/main/java/BitWriter.java delete mode 100644 src/main/java/IntArrayList.java delete mode 100644 src/main/java/VarIntEncoder.java delete mode 100644 src/main/java/clock/Encoder.java delete mode 100644 src/main/java/clock/EndTimeEstimator.java delete mode 100644 src/main/java/clock/LinearEstimator.java delete mode 100644 src/main/java/clock/LowBitTruncator.java delete mode 100644 src/main/java/game/Bitboard.java delete mode 100644 src/main/java/game/Board.java delete mode 100644 src/main/java/game/Encoder.java delete mode 100644 src/main/java/game/Huffman.java delete mode 100644 src/main/java/game/Magic.java delete mode 100644 src/main/java/game/Move.java delete mode 100644 src/main/java/game/MoveList.java delete mode 100644 src/main/java/game/PerftTest.java delete mode 100644 src/main/java/game/Piece.java delete mode 100644 src/main/java/game/Role.java delete mode 100644 src/main/java/game/Square.java delete mode 100644 src/main/java/game/ZobristHash.java create mode 100644 src/main/scala/BitOps.scala create mode 100644 src/main/scala/clock/Encoder.scala create mode 100644 src/main/scala/clock/EndTimeEstimator.scala create mode 100644 src/main/scala/clock/LinearEstimator.scala create mode 100644 src/main/scala/clock/LowBitTruncator.scala create mode 100644 src/main/scala/game/Bitboard.scala create mode 100644 src/main/scala/game/Board.scala create mode 100644 src/main/scala/game/Encoder.scala create mode 100644 src/main/scala/game/Huffman.scala create mode 100644 src/main/scala/game/Magic.scala create mode 100644 src/main/scala/game/Move.scala create mode 100644 src/main/scala/game/MoveList.scala create mode 100644 src/main/scala/game/ZobristHash.scala create mode 100644 src/main/scala/game/model.scala create mode 100644 src/test/scala/PerftTest.scala diff --git a/.gitignore b/.gitignore index 2f7896d..e09a06c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,4 @@ +.bsp/ target/ +project/metals.sbt +project/project/ diff --git a/build.sbt b/build.sbt index 5cf589f..b57e5ad 100644 --- a/build.sbt +++ b/build.sbt @@ -1,8 +1,8 @@ lazy val compression = Project("compression", file(".")) -scalaVersion := "3.3.0" +scalaVersion := "3.4.2" name := "compression" organization := "org.lichess" -version := "1.10" +version := "2.0" resolvers += "lila-maven" at "https://raw.githubusercontent.com/ornicar/lila-maven/master" libraryDependencies += "org.specs2" %% "specs2-core" % "4.17.0" % Test scalacOptions := Seq( @@ -14,7 +14,6 @@ scalacOptions := Seq( "-indent", "-rewrite", "-source:future-migration", - "-release:17", + "-release:21" ) -javacOptions ++= Seq("--release", "17") publishTo := Some(Resolver.file("file", new File(sys.props.getOrElse("publishTo", "")))) diff --git a/project/build.properties b/project/build.properties index 875b706..09feeee 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.9.2 +sbt.version=1.10.4 diff --git a/src/main/java/BitOps.java b/src/main/java/BitOps.java deleted file mode 100644 index ad8b0e5..0000000 --- a/src/main/java/BitOps.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.lichess.compression; - -class BitOps { - static int[] getBitMasks() { - int[] mask = new int[32]; - for (int i = 0; i < 32; i++) { - mask[i] = (1 << i) - 1; - } - return mask; - } -} diff --git a/src/main/java/BitReader.java b/src/main/java/BitReader.java deleted file mode 100644 index 23ea291..0000000 --- a/src/main/java/BitReader.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.lichess.compression; - -import java.nio.ByteBuffer; - -public class BitReader { - private static final int[] BITMASK = BitOps.getBitMasks(); - - private final ByteBuffer bb; - private int numRemainingBits = 0; - private int pendingBits = 0; - - public BitReader(byte[] bytes) { - bb = ByteBuffer.wrap(bytes); - } - - private void readNext() { - if (bb.remaining() >= 4) { - pendingBits = bb.getInt(); - numRemainingBits = 32; - } else { - numRemainingBits = bb.remaining() * 8; - pendingBits = bb.get() << (numRemainingBits - 8); - for (int s = numRemainingBits - 16; s >= 0; s -= 8) { - pendingBits |= (bb.get() & 0xFF) << s; - } - } - } - - public int readBits(int numReqBits) { - if (numRemainingBits >= numReqBits) { - numRemainingBits -= numReqBits; - return (pendingBits >>> numRemainingBits) & BITMASK[numReqBits]; - } else { - int res = pendingBits & BITMASK[numRemainingBits]; - int neededBits = numReqBits - numRemainingBits; - readNext(); - return (res << neededBits) | readBits(neededBits); - } - } -} diff --git a/src/main/java/BitWriter.java b/src/main/java/BitWriter.java deleted file mode 100644 index 44acda9..0000000 --- a/src/main/java/BitWriter.java +++ /dev/null @@ -1,37 +0,0 @@ -package org.lichess.compression; - -import java.nio.ByteBuffer; - -public class BitWriter { - private static final int[] BITMASK = BitOps.getBitMasks(); - - private final IntArrayList buffer = new IntArrayList(); - private int numRemainingBits = 32; - private int pendingBits = 0; - - public void writeBits(int data, int numBits) { - data &= BITMASK[numBits]; - numRemainingBits -= numBits; - if (numRemainingBits >= 0) { - pendingBits |= data << numRemainingBits; - } else { - buffer.add(pendingBits | (data >>> -numRemainingBits)); - numRemainingBits += 32; - pendingBits = data << numRemainingBits; - } - } - - public byte[] toArray() { - int numPendingBytes = (39 - numRemainingBits) >> 3; - ByteBuffer bb = ByteBuffer.allocate(4 * buffer.size() + numPendingBytes); - buffer.writeTo(bb); - if (numPendingBytes == 4) { - bb.putInt(pendingBits); - } else { - for (int i = 0; i < numPendingBytes; i++) { - bb.put((byte)(pendingBits >>> (24 - i * 8))); - } - } - return bb.array(); - } -} diff --git a/src/main/java/IntArrayList.java b/src/main/java/IntArrayList.java deleted file mode 100644 index 08c52c5..0000000 --- a/src/main/java/IntArrayList.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.lichess.compression; - -import java.nio.ByteBuffer; -import java.util.Arrays; - -// Simple int array wrapper. Not threadsafe. -public final class IntArrayList { - int[] data; - int index = 0; - - public IntArrayList(int initialCapacity) { - data = new int[initialCapacity]; - } - - public IntArrayList() { - this(10); - } - - public void add(int elt) { - if (index == data.length) { - data = Arrays.copyOf(data, index + (index >> 1) + 5); - } - - data[index++] = elt; - } - - public int size() { - return index; - } - - public void writeTo(ByteBuffer bb) { - for (int i = 0; i < index; i++) bb.putInt(data[i]); - } - - public int[] toArray() { - return Arrays.copyOf(data, index); - } -} diff --git a/src/main/java/VarIntEncoder.java b/src/main/java/VarIntEncoder.java deleted file mode 100644 index d5ff6c2..0000000 --- a/src/main/java/VarIntEncoder.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.lichess.compression; - -public class VarIntEncoder { - public static void writeSigned(int[] values, BitWriter writer) { - for (int n : values) { - writeSigned(n, writer); - } - } - - public static void writeSigned(int n, BitWriter writer) { - // zigzag encode - writeUnsigned((n << 1) ^ (n >> 31), writer); - } - - public static void writeUnsigned(int n, BitWriter writer) { - if ((n & ~0x1F) == 0) { - writer.writeBits(n, 6); - } else { - writer.writeBits((n | 0x20), 6); - n >>>= 5; - while ((n & ~0x07) != 0) { - writer.writeBits((n | 0x08), 4); - n >>>= 3; - } - // While loop terminated, so 4th bit is 0. - writer.writeBits(n, 4); - } - } - - public static int readUnsigned(BitReader reader) { - int n = reader.readBits(6); - if (n > 0x1F) { - n &= 0x1F; - int curShift = 5; - int curVal; - while ((curVal = reader.readBits(4)) > 0x07) { - n |= (curVal & 0x07) << curShift; - curShift += 3; - } - n |= curVal << curShift; - } - return n; - } - - public static int readSigned(BitReader reader) { - int n = readUnsigned(reader); - return (n >>> 1) ^ -(n & 1); // zigzag decode - } - - public static int[] readSigned(BitReader reader, int numMoves) { - int[] values = new int[numMoves]; - - for (int i = 0; i < numMoves; i++) { - int n = readUnsigned(reader); - values[i] = (n >>> 1) ^ -(n & 1); // zigzag decode - } - - return values; - } -} diff --git a/src/main/java/clock/Encoder.java b/src/main/java/clock/Encoder.java deleted file mode 100644 index 0a343b0..0000000 --- a/src/main/java/clock/Encoder.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.lichess.compression.clock; - -import java.util.Arrays; - -import org.lichess.compression.BitReader; -import org.lichess.compression.BitWriter; -import org.lichess.compression.VarIntEncoder; - -/* - * startTime is the initial clock time in centiseconds - * (e.g. 6000 in a 1+0 or 1+2 game) - */ -public class Encoder { - - public static byte[] encode(int[] centis, int startTime) { - if (centis.length == 0) return new byte[0]; - - int[] encoded = Arrays.copyOf(centis, centis.length); - int truncatedStart = LowBitTruncator.truncate(startTime); - - LowBitTruncator.truncate(encoded); - LinearEstimator.encode(encoded, truncatedStart); - EndTimeEstimator.encode(encoded, truncatedStart); - - BitWriter writer = new BitWriter(); - VarIntEncoder.writeUnsigned(encoded.length - 1, writer); - VarIntEncoder.writeSigned(encoded, writer); - LowBitTruncator.writeDigits(centis, writer); - - return writer.toArray(); - } - - public static int[] decode(byte[] bytes, int startTime) { - if (bytes.length == 0) return new int[0]; - - BitReader reader = new BitReader(bytes); - int truncatedStart = LowBitTruncator.truncate(startTime); - - int numMoves = VarIntEncoder.readUnsigned(reader) + 1; - int[] decoded = VarIntEncoder.readSigned(reader, numMoves); - - EndTimeEstimator.decode(decoded, truncatedStart); - LinearEstimator.decode(decoded, truncatedStart); - LowBitTruncator.decode(decoded, reader); - - return decoded; - } -} diff --git a/src/main/java/clock/EndTimeEstimator.java b/src/main/java/clock/EndTimeEstimator.java deleted file mode 100644 index 1f42549..0000000 --- a/src/main/java/clock/EndTimeEstimator.java +++ /dev/null @@ -1,19 +0,0 @@ -package org.lichess.compression.clock; - -public class EndTimeEstimator { - public static void encode(int[] vals, int startTime) { - int maxIdx = vals.length - 1; - // Linear estimate with move 0 == startTime and move 32 == 0. - if (maxIdx < 32) { - vals[maxIdx] -= startTime - ((startTime * maxIdx) >>> 5); - } - } - - public static void decode(int[] vals, int startTime) { - int maxIdx = vals.length - 1; - // Linear estimate with move 0 == startTime and move 32 == 0. - if (maxIdx < 32) { - vals[maxIdx] += startTime - ((startTime * maxIdx) >>> 5); - } - } -} diff --git a/src/main/java/clock/LinearEstimator.java b/src/main/java/clock/LinearEstimator.java deleted file mode 100644 index ad90880..0000000 --- a/src/main/java/clock/LinearEstimator.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.lichess.compression.clock; - -public class LinearEstimator { - - public static void encode(int[] dest, int startTime) { - int maxIdx = dest.length - 1; - encode(dest, -1, startTime, maxIdx, dest[maxIdx]); - } - - public static void decode(int[] dest, int startTime) { - int maxIdx = dest.length - 1; - decode(dest, -1, startTime, maxIdx, dest[maxIdx]); - } - - private static void encode(int[] dest, int startIdx, int start, - int endIdx, int end) { - // Bitshift always rounds down, even for negative numbers. - int midIdx = (startIdx + endIdx) >> 1; - if (startIdx == midIdx) return; - - int mid = dest[midIdx]; - - dest[midIdx] = mid - ((start + end) >> 1); - - encode(dest, startIdx, start, midIdx, mid); - encode(dest, midIdx, mid, endIdx, end); - } - - private static void decode(int[] dest, int startIdx, int start, - int endIdx, int end) { - int midIdx = (startIdx + endIdx) >> 1; - if (startIdx == midIdx) return; - - dest[midIdx] += (start + end) >> 1; - - int mid = dest[midIdx]; - - decode(dest, startIdx, start, midIdx, mid); - decode(dest, midIdx, mid, endIdx, end); - } -} diff --git a/src/main/java/clock/LowBitTruncator.java b/src/main/java/clock/LowBitTruncator.java deleted file mode 100644 index 02d3ab9..0000000 --- a/src/main/java/clock/LowBitTruncator.java +++ /dev/null @@ -1,44 +0,0 @@ -package org.lichess.compression.clock; - -import org.lichess.compression.BitReader; -import org.lichess.compression.BitWriter; - -public class LowBitTruncator { - // Truncate 3 bits from centisecs, but preserve precision for low values. - // CENTI_CUTOFF must be a multiple of 8 (the truncation divisor) - private static final int CENTI_CUTOFF = 1000; - - public static void truncate(int[] centis) { - int moves = centis.length; - for (int i = 0; i < moves; i++) { - centis[i] >>= 3; - } - } - - public static int truncate(int centi) { - return centi >> 3; - } - - public static void writeDigits(int[] centis, BitWriter writer) { - int maxIdx = centis.length - 1; - for (int i = 0; i < maxIdx; i++) { - if (centis[i] < CENTI_CUTOFF) - writer.writeBits(centis[i], 3); - } - // Always store full precision end. - writer.writeBits(centis[maxIdx], 3); - } - - public static void decode(int[] trunced, BitReader reader) { - int maxIdx = trunced.length - 1; - for (int i = 0; i <= maxIdx; i++) { - int rounded = trunced[i] << 3; - if (rounded < CENTI_CUTOFF || i == maxIdx) { - trunced[i] = rounded | reader.readBits(3); - } else { - // Truncation cuts off 3.5 on average. - trunced[i] = rounded | 3; - } - } - } -} diff --git a/src/main/java/game/Bitboard.java b/src/main/java/game/Bitboard.java deleted file mode 100644 index 901cb83..0000000 --- a/src/main/java/game/Bitboard.java +++ /dev/null @@ -1,141 +0,0 @@ -package org.lichess.compression.game; - -import java.util.Set; -import java.util.HashSet; - -class Bitboard { - public static final long ALL = -1L; - - public static final long RANKS[] = new long[8]; - public static final long FILES[] = new long[8]; - - private static final int KNIGHT_DELTAS[] = { 17, 15, 10, 6, -17, -15, -10, -6 }; - private static final int BISHOP_DELTAS[] = { 7, -7, 9, -9 }; - private static final int ROOK_DELTAS[] = { 1, -1, 8, -8 }; - private static final int KING_DELTAS[] = { 1, 7, 8, 9, -1, -7, -8, -9 }; - private static final int WHITE_PAWN_DELTAS[] = { 7, 9 }; - private static final int BLACK_PAWN_DELTAS[] = { -7, -9 }; - - public static final long KNIGHT_ATTACKS[] = new long[64]; - public static final long KING_ATTACKS[] = new long[64]; - public static final long WHITE_PAWN_ATTACKS[] = new long[64]; - public static final long BLACK_PAWN_ATTACKS[] = new long[64]; - - public static final long BETWEEN[][] = new long[64][64]; - public static final long RAYS[][] = new long[64][64]; - - // Large overlapping attack table indexed using magic multiplication. - private static final long ATTACKS[] = new long[88772]; - - // Slow attack set generation. Used only to bootstrap the attack tables. - private static long slidingAttacks(int square, long occupied, int[] deltas) { - long attacks = 0; - for (int delta: deltas) { - int sq = square; - do { - sq += delta; - if (sq < 0 || 64 <= sq || Square.distance(sq, sq - delta) > 2) break; - attacks |= 1L << sq; - } while (!Bitboard.contains(occupied, sq)); - } - return attacks; - } - - private static void initMagics(int square, Magic magic, int shift, int[] deltas) { - long subset = 0; - do { - long attack = slidingAttacks(square, subset, deltas); - int idx = (int) ((magic.factor * subset) >>> (64 - shift)) + magic.offset; - assert ATTACKS[idx] == 0 || ATTACKS[idx] == attack; - ATTACKS[idx] = attack; - - // Carry-rippler trick for enumerating subsets. - subset = (subset - magic.mask) & magic.mask; - } while (subset != 0); - } - - static { - for (int i = 0; i < 8; i++) { - RANKS[i] = 0xffL << (i * 8); - FILES[i] = 0x0101010101010101L << i; - } - - for (int sq = 0; sq < 64; sq++) { - KNIGHT_ATTACKS[sq] = slidingAttacks(sq, Bitboard.ALL, KNIGHT_DELTAS); - KING_ATTACKS[sq] = slidingAttacks(sq, Bitboard.ALL, KING_DELTAS); - WHITE_PAWN_ATTACKS[sq] = slidingAttacks(sq, Bitboard.ALL, WHITE_PAWN_DELTAS); - BLACK_PAWN_ATTACKS[sq] = slidingAttacks(sq, Bitboard.ALL, BLACK_PAWN_DELTAS); - - initMagics(sq, Magic.ROOK[sq], 12, ROOK_DELTAS); - initMagics(sq, Magic.BISHOP[sq], 9, BISHOP_DELTAS); - } - - for (int a = 0; a < 64; a++) { - for (int b = 0; b < 64; b++) { - if (Bitboard.contains(slidingAttacks(a, 0, ROOK_DELTAS), b)) { - BETWEEN[a][b] = - slidingAttacks(a, 1L << b, ROOK_DELTAS) & - slidingAttacks(b, 1L << a, ROOK_DELTAS); - RAYS[a][b] = - (1L << a) | (1L << b) | - slidingAttacks(a, 0, ROOK_DELTAS) & - slidingAttacks(b, 0, ROOK_DELTAS); - } else if (Bitboard.contains(slidingAttacks(a, 0, BISHOP_DELTAS), b) ) { - BETWEEN[a][b] = - slidingAttacks(a, 1L << b, BISHOP_DELTAS) & - slidingAttacks(b, 1L << a, BISHOP_DELTAS); - RAYS[a][b] = - (1L << a) | (1L << b) | - slidingAttacks(a, 0, BISHOP_DELTAS) & - slidingAttacks(b, 0, BISHOP_DELTAS); - } - } - } - } - - public static long bishopAttacks(int square, long occupied) { - Magic magic = Magic.BISHOP[square]; - return ATTACKS[((int) (magic.factor * (occupied & magic.mask) >>> (64 - 9)) + magic.offset)]; - } - - public static long rookAttacks(int square, long occupied) { - Magic magic = Magic.ROOK[square]; - return ATTACKS[((int) (magic.factor * (occupied & magic.mask) >>> (64 - 12)) + magic.offset)]; - } - - public static long queenAttacks(int square, long occupied) { - return bishopAttacks(square, occupied) ^ rookAttacks(square, occupied); - } - - public static long pawnAttacks(boolean white, int square) { - return (white ? WHITE_PAWN_ATTACKS : BLACK_PAWN_ATTACKS)[square]; - } - - public static int lsb(long b) { - assert b != 0; - return Long.numberOfTrailingZeros(b); - } - - public static int msb(long b) { - assert b != 0; - return 63 - Long.numberOfLeadingZeros(b); - } - - public static boolean moreThanOne(long b) { - return (b & (b - 1L)) != 0; - } - - public static boolean contains(long b, int sq) { - return (b & (1L << sq)) != 0; - } - - public static Set squareSet(long b) { - HashSet set = new HashSet(); - while (b != 0) { - int sq = lsb(b); - set.add(sq); - b &= b - 1L; - } - return set; - } -} diff --git a/src/main/java/game/Board.java b/src/main/java/game/Board.java deleted file mode 100644 index 694e144..0000000 --- a/src/main/java/game/Board.java +++ /dev/null @@ -1,494 +0,0 @@ -package org.lichess.compression.game; - -import java.util.Map; -import java.util.HashMap; - -public final class Board { - public long pawns; - public long knights; - public long bishops; - public long rooks; - public long queens; - public long kings; - - public long white; - public long black; - public long occupied; - - public boolean turn; - public int epSquare; - public long castlingRights; - - public int incrementalHash; - - public Board() { - this.pawns = 0xff00000000ff00L; - this.knights = 0x4200000000000042L; - this.bishops = 0x2400000000000024L; - this.rooks = 0x8100000000000081L; - this.queens = 0x800000000000008L; - this.kings = 0x1000000000000010L; - - this.white = 0xffffL; - this.black = 0xffff000000000000L; - this.occupied = 0xffff00000000ffffL; - - this.turn = true; - this.epSquare = 0; - this.castlingRights = this.rooks; - - this.incrementalHash = ZobristHash.hashPieces(this) ^ ZobristHash.hashTurn(this); - } - - public Board(Board board) { - this.pawns = board.pawns; - this.knights = board.knights; - this.bishops = board.bishops; - this.rooks = board.rooks; - this.queens = board.queens; - this.kings = board.kings; - - this.white = board.white; - this.black = board.black; - this.occupied = board.occupied; - - this.turn = board.turn; - this.epSquare = board.epSquare; - this.castlingRights = board.castlingRights; - - this.incrementalHash = ZobristHash.hashPieces(this) ^ ZobristHash.hashTurn(this); - } - - Board(long pawns, long knights, long bishops, long rooks, long queens, long kings, - long white, long black, - boolean turn, int epSquare, long castlingRights) { - - this.pawns = pawns; - this.knights = knights; - this.bishops = bishops; - this.rooks = rooks; - this.queens = queens; - this.kings = kings; - - this.white = white; - this.black = black; - this.occupied = white | black; - - this.turn = turn; - this.epSquare = epSquare; - this.castlingRights = castlingRights; - - this.incrementalHash = ZobristHash.hashPieces(this) ^ ZobristHash.hashTurn(this); - } - - private boolean isOccupied(int square) { - return Bitboard.contains(this.occupied, square); - } - - private void discard(int square) { - if (!isOccupied(square)) return; - Role role = roleAt(square); - long mask = 1L << square; - - switch (role) { - case PAWN: this.pawns ^= mask; break; - case KNIGHT: this.knights ^= mask; break; - case BISHOP: this.bishops ^= mask; break; - case ROOK: this.rooks ^= mask; break; - case QUEEN: this.queens ^= mask; break; - case KING: this.kings ^= mask; break; - } - - boolean color = whiteAt(square); - if (color) this.white ^= mask; - else this.black ^= mask; - - this.occupied ^= mask; - this.incrementalHash ^= ZobristHash.hashPiece(square, color, role); - } - - private void put(int square, boolean color, Role role) { - discard(square); - - long mask = 1L << square; - - switch (role) { - case PAWN: this.pawns ^= mask; break; - case KNIGHT: this.knights ^= mask; break; - case BISHOP: this.bishops ^= mask; break; - case ROOK: this.rooks ^= mask; break; - case QUEEN: this.queens ^= mask; break; - case KING: this.kings ^= mask; break; - } - - if (color) this.white ^= mask; - else this.black ^= mask; - - this.occupied ^= mask; - this.incrementalHash ^= ZobristHash.hashPiece(square, color, role); - } - - public Role roleAt(int square) { - if (Bitboard.contains(this.pawns, square)) return Role.PAWN; - if (Bitboard.contains(this.knights, square)) return Role.KNIGHT; - if (Bitboard.contains(this.bishops, square)) return Role.BISHOP; - if (Bitboard.contains(this.rooks, square)) return Role.ROOK; - if (Bitboard.contains(this.queens, square)) return Role.QUEEN; - if (Bitboard.contains(this.kings, square)) return Role.KING; - return null; - } - - public boolean whiteAt(int square) { - return Bitboard.contains(this.white, square); - } - - public int zobristHash() { - return this.incrementalHash ^ ZobristHash.hashCastling(this) ^ ZobristHash.hashEnPassant(this); - } - - public Map pieceMap() { - HashMap map = new HashMap(); - long occupied = this.occupied; - while (occupied != 0) { - int sq = Bitboard.lsb(occupied); - map.put(sq, new Piece(whiteAt(sq), roleAt(sq))); - occupied &= occupied - 1L; - } - return map; - } - - public void play(Move move) { - this.epSquare = 0; - - switch (move.type) { - case Move.NORMAL: - if (move.role == Role.PAWN && Math.abs(move.from - move.to) == 16) { - long theirPawns = them() & this.pawns; - if (theirPawns != 0) { - int sq = move.from + (this.turn ? 8 : -8); - if ((Bitboard.pawnAttacks(this.turn, sq) & theirPawns) != 0) { - this.epSquare = sq; - } - } - } - - if (this.castlingRights != 0) { - if (move.role == Role.KING) { - this.castlingRights &= Bitboard.RANKS[this.turn ? 7 : 0]; - } else if (move.role == Role.ROOK) { - this.castlingRights &= ~(1L << move.from); - } - - if (move.capture) { - this.castlingRights &= ~(1L << move.to); - } - } - - discard(move.from); - put(move.to, this.turn, move.promotion != null ? move.promotion : move.role); - break; - - case Move.CASTLING: - this.castlingRights &= Bitboard.RANKS[this.turn ? 7 : 0]; - int rookTo = Square.combine(move.to < move.from ? Square.D1 : Square.F1, move.to); - int kingTo = Square.combine(move.to < move.from ? Square.C1 : Square.G1, move.from); - discard(move.from); - discard(move.to); - put(rookTo, this.turn, Role.ROOK); - put(kingTo, this.turn, Role.KING); - break; - - case Move.EN_PASSANT: - discard(Square.combine(move.to, move.from)); - discard(move.from); - put(move.to, this.turn, Role.PAWN); - break; - } - - this.turn = !this.turn; - this.incrementalHash ^= ZobristHash.POLYGLOT[780]; - } - - long us() { - return byColor(this.turn); - } - - long them() { - return byColor(!this.turn); - } - - long byColor(boolean white) { - return white ? this.white : this.black; - } - - private int king(boolean white) { - return Bitboard.lsb(this.kings & byColor(white)); - } - - private long sliderBlockers(int king) { - long snipers = them() & ( - Bitboard.rookAttacks(king, 0) & (this.rooks ^ this.queens) | - Bitboard.bishopAttacks(king, 0) & (this.bishops ^ this.queens)); - - long blockers = 0; - - while (snipers != 0) { - int sniper = Bitboard.lsb(snipers); - long between = Bitboard.BETWEEN[king][sniper] & this.occupied; - if (!Bitboard.moreThanOne(between)) blockers |= between; - snipers &= snipers - 1L; - } - - return blockers; - } - - public boolean isCheck() { - return attacksTo(king(this.turn), !this.turn) != 0; - } - - private long attacksTo(int sq, boolean attacker) { - return attacksTo(sq, attacker, this.occupied); - } - - private long attacksTo(int sq, boolean attacker, long occupied) { - return byColor(attacker) & ( - Bitboard.rookAttacks(sq, occupied) & (this.rooks ^ this.queens) | - Bitboard.bishopAttacks(sq, occupied) & (this.bishops ^ this.queens) | - Bitboard.KNIGHT_ATTACKS[sq] & this.knights | - Bitboard.KING_ATTACKS[sq] & this.kings | - Bitboard.pawnAttacks(!attacker, sq) & this.pawns); - } - - public void legalMoves(MoveList moves) { - moves.clear(); - - if (this.epSquare != 0) { - genEnPassant(moves); - } - - int king = king(this.turn); - long checkers = attacksTo(king, !this.turn); - if (checkers == 0) { - long target = ~us(); - genNonKing(target, moves); - genSafeKing(king, target, moves); - genCastling(king, moves); - } else { - genEvasions(king, checkers, moves); - } - - long blockers = sliderBlockers(king); - if (blockers != 0 || this.epSquare != 0) { - moves.retain(m -> isSafe(king, m, blockers)); - } - } - - public boolean hasLegalEnPassant() { - // Like legalMoves(), but generate only en passant captures to see if - // there are any legal en passant moves in the position. - - if (this.epSquare == 0) return false; // shortcut - - MoveList moves = new MoveList(2); - genEnPassant(moves); - - int king = king(this.turn); - long blockers = sliderBlockers(king); - return moves.anyMatch(m -> isSafe(king, m, blockers)); - } - - private void genNonKing(long mask, MoveList moves) { - genPawn(mask, moves); - - // Knights. - long knights = us() & this.knights; - while (knights != 0) { - int from = Bitboard.lsb(knights); - long targets = Bitboard.KNIGHT_ATTACKS[from] & mask; - while (targets != 0) { - int to = Bitboard.lsb(targets); - moves.pushNormal(this, Role.KNIGHT, from, isOccupied(to), to); - targets &= targets - 1L; - } - knights &= knights - 1L; - } - - // Bishops. - long bishops = us() & this.bishops; - while (bishops != 0) { - int from = Bitboard.lsb(bishops); - long targets = Bitboard.bishopAttacks(from, this.occupied) & mask; - while (targets != 0) { - int to = Bitboard.lsb(targets); - moves.pushNormal(this, Role.BISHOP, from, isOccupied(to), to); - targets &= targets - 1L; - } - bishops &= bishops - 1L; - } - - // Rooks. - long rooks = us() & this.rooks; - while (rooks != 0) { - int from = Bitboard.lsb(rooks); - long targets = Bitboard.rookAttacks(from, this.occupied) & mask; - while (targets != 0) { - int to = Bitboard.lsb(targets); - moves.pushNormal(this, Role.ROOK, from, isOccupied(to), to); - targets &= targets - 1L; - } - rooks &= rooks - 1L; - } - - // Queens. - long queens = us() & this.queens; - while (queens != 0) { - int from = Bitboard.lsb(queens); - long targets = Bitboard.queenAttacks(from, this.occupied) & mask; - while (targets != 0) { - int to = Bitboard.lsb(targets); - moves.pushNormal(this, Role.QUEEN, from, isOccupied(to), to); - targets &= targets - 1L; - } - queens &= queens - 1L; - } - } - - private void genSafeKing(int king, long mask, MoveList moves) { - long targets = Bitboard.KING_ATTACKS[king] & mask; - while (targets != 0) { - int to = Bitboard.lsb(targets); - if (attacksTo(to, !this.turn) == 0) { - moves.pushNormal(this, Role.KING, king, isOccupied(to), to); - } - targets &= targets - 1L; - } - } - - private void genEvasions(int king, long checkers, MoveList moves) { - // Checks by these sliding pieces can maybe be blocked. - long sliders = checkers & (this.bishops ^ this.rooks ^ this.queens); - - // Collect attacked squares that the king can not escape to. - long attacked = 0; - while (sliders != 0) { - int slider = Bitboard.lsb(sliders); - attacked |= Bitboard.RAYS[king][slider] ^ (1L << slider); - sliders &= sliders - 1L; - } - - genSafeKing(king, ~us() & ~attacked, moves); - - if (checkers != 0 && !Bitboard.moreThanOne(checkers)) { - int checker = Bitboard.lsb(checkers); - long target = Bitboard.BETWEEN[king][checker] | checkers; - genNonKing(target, moves); - } - } - - private void genPawn(long mask, MoveList moves) { - // Pawn captures (except en passant). - long capturers = us() & this.pawns; - while (capturers != 0) { - int from = Bitboard.lsb(capturers); - long targets = Bitboard.pawnAttacks(this.turn, from) & them() & mask; - while (targets != 0) { - int to = Bitboard.lsb(targets); - addPawnMoves(from, true, to, moves); - targets &= targets - 1L; - } - capturers &= capturers - 1L; - } - - // Normal pawn moves. - long singleMoves = - ~this.occupied & (this.turn ? - ((this.white & this.pawns) << 8) : - ((this.black & this.pawns) >>> 8)); - - long doubleMoves = - ~this.occupied & - (this.turn ? (singleMoves << 8) : (singleMoves >>> 8)) & - Bitboard.RANKS[this.turn ? 3 : 4]; - - singleMoves &= mask; - doubleMoves &= mask; - - while (singleMoves != 0) { - int to = Bitboard.lsb(singleMoves); - int from = to + (this.turn ? -8 : 8); - addPawnMoves(from, false, to, moves); - singleMoves &= singleMoves - 1L; - } - - while (doubleMoves != 0) { - int to = Bitboard.lsb(doubleMoves); - int from = to + (this.turn ? -16: 16); - moves.pushNormal(this, Role.PAWN, from, false, to); - doubleMoves &= doubleMoves - 1L; - } - } - - private void addPawnMoves(int from, boolean capture, int to, MoveList moves) { - if (Square.rank(to) == (this.turn ? 7 : 0)) { - moves.pushPromotion(this, from, capture, to, Role.QUEEN); - moves.pushPromotion(this, from, capture, to, Role.KNIGHT); - moves.pushPromotion(this, from, capture, to, Role.ROOK); - moves.pushPromotion(this, from, capture, to, Role.BISHOP); - } else { - moves.pushNormal(this, Role.PAWN, from, capture, to); - } - } - - private void genEnPassant(MoveList moves) { - long pawns = us() & this.pawns & Bitboard.pawnAttacks(!this.turn, this.epSquare); - while (pawns != 0) { - int pawn = Bitboard.lsb(pawns); - moves.pushEnPassant(this, pawn, this.epSquare); - pawns &= pawns - 1L; - } - } - - private void genCastling(int king, MoveList moves) { - long rooks = this.castlingRights & Bitboard.RANKS[this.turn ? 0 : 7]; - while (rooks != 0) { - int rook = Bitboard.lsb(rooks); - long path = Bitboard.BETWEEN[king][rook]; - if ((path & this.occupied) == 0) { - int kingTo = Square.combine(rook < king ? Square.C1 : Square.G1, king); - long kingPath = Bitboard.BETWEEN[king][kingTo] | (1L << kingTo) | (1L << king); - while (kingPath != 0) { - int sq = Bitboard.lsb(kingPath); - if (attacksTo(sq, !this.turn, this.occupied ^ (1L << king)) != 0) { - break; - } - kingPath &= kingPath - 1L; - } - if (kingPath == 0) moves.pushCastle(this, king, rook); - } - rooks &= rooks - 1L; - } - } - - // Used for filtering candidate moves that would leave/put the king - // in check. - private boolean isSafe(int king, Move move, long blockers) { - switch (move.type) { - case Move.NORMAL: - return - !Bitboard.contains(us() & blockers, move.from) || - Square.aligned(move.from, move.to, king); - - case Move.EN_PASSANT: - long occupied = this.occupied; - occupied ^= (1L << move.from); - occupied ^= (1L << Square.combine(move.to, move.from)); // captured pawn - occupied |= (1L << move.to); - return - (Bitboard.rookAttacks(king, occupied) & them() & (this.rooks ^ this.queens)) == 0 && - (Bitboard.bishopAttacks(king, occupied) & them() & (this.bishops ^ this.queens)) == 0; - - default: - return true; - } - } -} diff --git a/src/main/java/game/Encoder.java b/src/main/java/game/Encoder.java deleted file mode 100644 index d68580f..0000000 --- a/src/main/java/game/Encoder.java +++ /dev/null @@ -1,226 +0,0 @@ -package org.lichess.compression.game; - -import java.util.Arrays; -import java.util.HashMap; -import java.util.Map; -import java.util.HashSet; -import java.util.Set; -import java.util.regex.Pattern; -import java.util.regex.Matcher; - -import java.nio.ByteBuffer; - -import org.lichess.compression.BitReader; -import org.lichess.compression.BitWriter; - -public class Encoder { - private static final ThreadLocal moveList = new ThreadLocal() { - @Override - protected MoveList initialValue() { - return new MoveList(); - } - }; - - private static Pattern SAN_PATTERN = Pattern.compile( - "([NBKRQ])?([a-h])?([1-8])?x?([a-h][1-8])(?:=([NBRQK]))?[\\+#]?"); - - private static Role charToRole(char c) { - switch (c) { - case 'N': return Role.KNIGHT; - case 'B': return Role.BISHOP; - case 'R': return Role.ROOK; - case 'Q': return Role.QUEEN; - case 'K': return Role.KING; - default: throw new IllegalArgumentException(); - } - } - - public static byte[] encode(String pgnMoves[]) { - BitWriter writer = new BitWriter(); - - Board board = new Board(); - MoveList legals = moveList.get(); - - for (String pgnMove: pgnMoves) { - // Parse SAN. - Role role = null, promotion = null; - long from = Bitboard.ALL; - int to; - - if (pgnMove.startsWith("O-O-O")) { - role = Role.KING; - from = board.kings; - to = Bitboard.lsb(board.rooks & Bitboard.RANKS[board.turn ? 0 : 7]); - } else if (pgnMove.startsWith("O-O")) { - role = Role.KING; - from = board.kings; - to = Bitboard.msb(board.rooks & Bitboard.RANKS[board.turn ? 0 : 7]); - } else { - Matcher matcher = SAN_PATTERN.matcher(pgnMove); - if (!matcher.matches()) return null; - - String roleStr = matcher.group(1); - role = roleStr == null ? Role.PAWN : charToRole(roleStr.charAt(0)); - - if (matcher.group(2) != null) from &= Bitboard.FILES[matcher.group(2).charAt(0) - 'a']; - if (matcher.group(3) != null) from &= Bitboard.RANKS[matcher.group(3).charAt(0) - '1']; - - to = Square.square(matcher.group(4).charAt(0) - 'a', matcher.group(4).charAt(1) - '1'); - - if (matcher.group(5) != null) { - promotion = charToRole(matcher.group(5).charAt(0)); - } - } - - // Find index in legal moves. - board.legalMoves(legals); - legals.sort(); - - boolean foundMatch = false; - int size = legals.size(); - - for (int i = 0; i < size; i++) { - Move legal = legals.get(i); - if (legal.role == role && legal.to == to && legal.promotion == promotion && Bitboard.contains(from, legal.from)) { - if (!foundMatch) { - // Encode and play. - Huffman.write(i, writer); - board.play(legal); - foundMatch = true; - } - else return null; - } - } - - if (!foundMatch) return null; - } - - return writer.toArray(); - } - - public static class DecodeResult { - public final String pgnMoves[]; - public final Board board; - public final int halfMoveClock; - public final byte positionHashes[]; - public final String lastUci; - - public DecodeResult(String pgnMoves[], Board board, int halfMoveClock, byte positionHashes[], String lastUci) { - this.pgnMoves = pgnMoves; - this.board = board; - this.halfMoveClock = halfMoveClock; - this.positionHashes = positionHashes; - this.lastUci = lastUci; - } - } - - public static DecodeResult decode(byte input[], int plies) { - BitReader reader = new BitReader(input); - - String output[] = new String[plies]; - - Board board = new Board(); - MoveList legals = moveList.get(); - - String lastUci = null; - - // Collect the position hashes (3 bytes each) since the last capture - // or pawn move. - int lastZeroingPly = -1; - int lastIrreversiblePly = -1; - byte positionHashes[] = new byte[3 * (plies + 1)]; - setHash(positionHashes, -1, board.zobristHash()); - - for (int i = 0; i <= plies; i++) { - if (0 < i || i < plies) board.legalMoves(legals); - - // Append check or checkmate suffix to previous move. - if (0 < i) { - if (board.isCheck()) output[i - 1] += (legals.isEmpty() ? "#" : "+"); - } - - // Decode and play next move. - if (i < plies) { - legals.sort(); - Move move = legals.get(Huffman.read(reader)); - output[i] = san(move, legals); - board.play(move); - - if (move.isZeroing()) lastZeroingPly = i; - if (move.isIrreversible()) lastIrreversiblePly = i; - setHash(positionHashes, i, board.zobristHash()); - - if (i + 1 == plies) lastUci = move.uci(); - } - } - - return new DecodeResult( - output, - board, - plies - 1 - lastZeroingPly, - Arrays.copyOf(positionHashes, 3 * (plies - lastIrreversiblePly)), - lastUci); - } - - private static String san(Move move, MoveList legals) { - switch (move.type) { - case Move.NORMAL: - case Move.EN_PASSANT: - StringBuilder builder = new StringBuilder(6); - builder.append(move.role.symbol); - - // From. - if (move.role != Role.PAWN) { - boolean file = false, rank = false; - long others = 0; - - for (int i = 0; i < legals.size(); i++) { - Move other = legals.get(i); - if (other.role == move.role && other.to == move.to && other.from != move.from) { - others |= 1L << other.from; - } - } - - if (others != 0) { - if ((others & Bitboard.RANKS[Square.rank(move.from)]) != 0) file = true; - if ((others & Bitboard.FILES[Square.file(move.from)]) != 0) rank = true; - else file = true; - } - - if (file) builder.append((char) (Square.file(move.from) + 'a')); - if (rank) builder.append((char) (Square.rank(move.from) + '1')); - } else if (move.capture) { - builder.append((char) (Square.file(move.from) + 'a')); - } - - // Capture. - if (move.capture) builder.append('x'); - - // To. - builder.append((char) (Square.file(move.to) + 'a')); - builder.append((char) (Square.rank(move.to) + '1')); - - // Promotion. - if (move.promotion != null) { - builder.append('='); - builder.append(move.promotion.symbol); - } - - return builder.toString(); - - case Move.CASTLING: - return move.from < move.to ? "O-O" : "O-O-O"; - } - - return "--"; - } - - private static void setHash(byte buffer[], int ply, int hash) { - // The hash for the starting position (ply = -1) goes last. The most - // recent position goes first. - int base = buffer.length - 3 * (ply + 1 + 1); - buffer[base] = (byte) (hash >>> 16); - buffer[base + 1] = (byte) (hash >>> 8); - buffer[base + 2] = (byte) hash; - } -} diff --git a/src/main/java/game/Huffman.java b/src/main/java/game/Huffman.java deleted file mode 100644 index f1b4426..0000000 --- a/src/main/java/game/Huffman.java +++ /dev/null @@ -1,334 +0,0 @@ -package org.lichess.compression.game; - -import org.lichess.compression.BitReader; -import org.lichess.compression.BitWriter; - -class Huffman { - public static void write(int value, BitWriter writer) { - Symbol symbol = CODES[value]; - writer.writeBits(symbol.code, symbol.bits); - } - - public static int read(BitReader reader) { - Node node = ROOT; - while (node.zero != null && node.one != null) { - int bit = reader.readBits(1); - if (bit == 0) node = node.zero; - else node = node.one; - } - return node.leaf; - } - - private static class Symbol { - public final int code; - public final int bits; - - public Symbol(int code, int bits) { - this.code = code; - this.bits = bits; - } - } - - private static class Node { - public final Node zero; - public final Node one; - public final int leaf; - - public Node(int leaf) { - this.zero = null; - this.one = null; - this.leaf = leaf; - } - - public Node(Node zero, Node one) { - this.zero = zero; - this.one = one; - this.leaf = -1; - } - } - - private static Node buildTree(int code, int bits) { - assert bits <= 32; - - for (int i = 0; i <= 0xff; i++) { - if (CODES[i].code == code && CODES[i].bits == bits) { - return new Node(i); - } - } - - return new Node( - buildTree(code << 1, bits + 1), - buildTree((code << 1) | 1, bits + 1)); - } - - // Huffman code for indexes in the legal move list. Precomputed based on - // actual frequency in 16,232,215 rated games. - // - // This is based on a maximum of 256 legal moves per position, but the - // highest indexes did not actually occur. They were manually assigned a - // frequency of 1 and ordered. - // - // On the training corpus this achieves: - // 37.03 bytes per game - // 0.551 bytes per move - private static final Symbol CODES[] = { - new Symbol(0b00, 2), // 0: 225883932 (20.71%) - new Symbol(0b100, 3), // 1: 134956126 (12.37%) - new Symbol(0b1101, 4), // 2: 89041269 (8.16%) - new Symbol(0b1010, 4), // 3: 69386238 (6.36%) - new Symbol(0b0101, 4), // 4: 57040790 (5.23%) - new Symbol(0b11101, 5), // 5: 44974559 (4.12%) - new Symbol(0b10111, 5), // 6: 36547155 (3.35%) - new Symbol(0b01110, 5), // 7: 31624920 (2.90%) - new Symbol(0b01100, 5), // 8: 28432772 (2.61%) - new Symbol(0b01000, 5), // 9: 26540493 (2.43%) - new Symbol(0b111101, 6), // 10: 24484873 (2.24%) - new Symbol(0b111001, 6), // 11: 23058034 (2.11%) - new Symbol(0b111100, 6), // 12: 23535272 (2.16%) - new Symbol(0b110011, 6), // 13: 20482457 (1.88%) - new Symbol(0b110010, 6), // 14: 20450172 (1.87%) - new Symbol(0b110000, 6), // 15: 18316057 (1.68%) - new Symbol(0b101101, 6), // 16: 17214833 (1.58%) - new Symbol(0b101100, 6), // 17: 16964761 (1.56%) - new Symbol(0b011111, 6), // 18: 16530028 (1.52%) - new Symbol(0b011011, 6), // 19: 15369510 (1.41%) - new Symbol(0b010011, 6), // 20: 14178440 (1.30%) - new Symbol(0b011010, 6), // 21: 14275714 (1.31%) - new Symbol(0b1111111, 7), // 22: 13353306 (1.22%) - new Symbol(0b1111101, 7), // 23: 12829602 (1.18%) - new Symbol(0b1111110, 7), // 24: 13102592 (1.20%) - new Symbol(0b1111100, 7), // 25: 11932647 (1.09%) - new Symbol(0b1110000, 7), // 26: 10608657 (0.97%) - new Symbol(0b1100011, 7), // 27: 10142459 (0.93%) - new Symbol(0b0111101, 7), // 28: 8294594 (0.76%) - new Symbol(0b0100101, 7), // 29: 7337490 (0.67%) - new Symbol(0b0100100, 7), // 30: 6337744 (0.58%) - new Symbol(0b11100010, 8), // 31: 5380717 (0.49%) - new Symbol(0b11000101, 8), // 32: 4560556 (0.42%) - new Symbol(0b01111001, 8), // 33: 3913313 (0.36%) - new Symbol(0b111000111, 9), // 34: 3038767 (0.28%) - new Symbol(0b110001001, 9), // 35: 2480514 (0.23%) - new Symbol(0b011110001, 9), // 36: 1951026 (0.18%) - new Symbol(0b011110000, 9), // 37: 1521451 (0.14%) - new Symbol(0b1110001100, 10), // 38: 1183252 (0.11%) - new Symbol(0b1100010000, 10), // 39: 938708 (0.09%) - new Symbol(0b11100011010, 11), // 40: 673339 (0.06%) - new Symbol(0b11000100010, 11), // 41: 513153 (0.05%) - new Symbol(0b111000110110, 12), // 42: 377299 (0.03%) - new Symbol(0b110001000110, 12), // 43: 276996 (0.03%) - new Symbol(0b1110001101110, 13), // 44: 199682 (0.02%) - new Symbol(0b1100010001110, 13), // 45: 144602 (0.01%) - new Symbol(0b11100011011110, 14), // 46: 103313 (0.01%) - new Symbol(0b11000100011110, 14), // 47: 73046 (0.01%) - new Symbol(0b111000110111110, 15), // 48: 52339 (0.00%) - new Symbol(0b110001000111110, 15), // 49: 36779 (0.00%) - new Symbol(0b1110001101111110, 16), // 50: 26341 (0.00%) - new Symbol(0b1100010001111110, 16), // 51: 18719 (0.00%) - new Symbol(0b11000100011111111, 17), // 52: 13225 (0.00%) - new Symbol(0b111000110111111111, 18), // 53: 9392 (0.00%) - new Symbol(0b111000110111111101, 18), // 54: 6945 (0.00%) - new Symbol(0b110001000111111100, 18), // 55: 4893 (0.00%) - new Symbol(0b1110001101111111100, 19), // 56: 3698 (0.00%) - new Symbol(0b1100010001111111011, 19), // 57: 2763 (0.00%) - new Symbol(0b11100011011111111011, 20), // 58: 2114 (0.00%) - new Symbol(0b11100011011111110010, 20), // 59: 1631 (0.00%) - new Symbol(0b11100011011111110000, 20), // 60: 1380 (0.00%) - new Symbol(0b111000110111111110101, 21), // 61: 1090 (0.00%) - new Symbol(0b111000110111111100110, 21), // 62: 887 (0.00%) - new Symbol(0b111000110111111100010, 21), // 63: 715 (0.00%) - new Symbol(0b110001000111111101001, 21), // 64: 590 (0.00%) - new Symbol(0b110001000111111101000, 21), // 65: 549 (0.00%) - new Symbol(0b1110001101111111101000, 22), // 66: 477 (0.00%) - new Symbol(0b1110001101111111000110, 22), // 67: 388 (0.00%) - new Symbol(0b1100010001111111010111, 22), // 68: 351 (0.00%) - new Symbol(0b1100010001111111010101, 22), // 69: 319 (0.00%) - new Symbol(0b11100011011111111010011, 23), // 70: 262 (0.00%) - new Symbol(0b11100011011111110011110, 23), // 71: 236 (0.00%) - new Symbol(0b11100011011111110001110, 23), // 72: 200 (0.00%) - new Symbol(0b11100011011111110001111, 23), // 73: 210 (0.00%) - new Symbol(0b11000100011111110101100, 23), // 74: 153 (0.00%) - new Symbol(0b111000110111111100111011, 24), // 75: 117 (0.00%) - new Symbol(0b111000110111111110100100, 24), // 76: 121 (0.00%) - new Symbol(0b111000110111111100111111, 24), // 77: 121 (0.00%) - new Symbol(0b111000110111111100111010, 24), // 78: 115 (0.00%) - new Symbol(0b110001000111111101011011, 24), // 79: 95 (0.00%) - new Symbol(0b110001000111111101010011, 24), // 80: 75 (0.00%) - new Symbol(0b110001000111111101010001, 24), // 81: 67 (0.00%) - new Symbol(0b1110001101111111001110011, 25), // 82: 55 (0.00%) - new Symbol(0b1110001101111111001110001, 25), // 83: 50 (0.00%) - new Symbol(0b1110001101111111001110010, 25), // 84: 55 (0.00%) - new Symbol(0b1100010001111111010100101, 25), // 85: 33 (0.00%) - new Symbol(0b1100010001111111010110100, 25), // 86: 33 (0.00%) - new Symbol(0b1100010001111111010100001, 25), // 87: 30 (0.00%) - new Symbol(0b11100011011111110011111011, 26), // 88: 32 (0.00%) - new Symbol(0b11100011011111110011111001, 26), // 89: 28 (0.00%) - new Symbol(0b11100011011111110011111010, 26), // 90: 29 (0.00%) - new Symbol(0b11100011011111110011111000, 26), // 91: 27 (0.00%) - new Symbol(0b11000100011111110101101011, 26), // 92: 21 (0.00%) - new Symbol(0b111000110111111110100101111, 27), // 93: 15 (0.00%) - new Symbol(0b110001000111111101011010100, 27), // 94: 9 (0.00%) - new Symbol(0b110001000111111101011010101, 27), // 95: 10 (0.00%) - new Symbol(0b111000110111111100111000010, 27), // 96: 12 (0.00%) - new Symbol(0b111000110111111100111000011, 27), // 97: 12 (0.00%) - new Symbol(0b110001000111111101010010011, 27), // 98: 8 (0.00%) - new Symbol(0b1110001101111111101001010011, 28), // 99: 7 (0.00%) - new Symbol(0b1100010001111111010100100101, 28), // 100: 2 (0.00%) - new Symbol(0b1110001101111111001110000011, 28), // 101: 4 (0.00%) - new Symbol(0b1110001101111111001110000010, 28), // 102: 5 (0.00%) - new Symbol(0b1110001101111111001110000000, 28), // 103: 5 (0.00%) - new Symbol(0b11100011011111110011100000010, 29), // 104 - new Symbol(0b11000100011111110101000001001, 29), // 105: 5 (0.00%) - new Symbol(0b11100011011111110011100000011, 29), // 106: 1 (0.00%) - new Symbol(0b11000100011111110101000001000, 29), // 107: 1 (0.00%) - new Symbol(0b11000100011111110101000000011, 29), // 108 - new Symbol(0b110001000111111101010000011110, 30), // 109: 1 (0.00%) - new Symbol(0b111000110111111110100101100110, 30), // 110: 2 (0.00%) - new Symbol(0b111000110111111110100101010111, 30), // 111: 1 (0.00%) - new Symbol(0b110001000111111101010000001101, 30), // 112: 1 (0.00%) - new Symbol(0b111000110111111110100101100010, 30), // 113 - new Symbol(0b110001000111111101010000001000, 30), // 114 - new Symbol(0b110001000111111101010000000101, 30), // 115: 1 (0.00%) - new Symbol(0b110001000111111101010000000000, 30), // 116 - new Symbol(0b110001000111111101010000001010, 30), // 117 - new Symbol(0b110001000111111101010010001101, 30), // 118 - new Symbol(0b110001000111111101010010010011, 30), // 119 - new Symbol(0b110001000111111101010010010010, 30), // 120 - new Symbol(0b110001000111111101010010010001, 30), // 121 - new Symbol(0b110001000111111101010010010000, 30), // 122 - new Symbol(0b110001000111111101010010001011, 30), // 123 - new Symbol(0b110001000111111101010010001010, 30), // 124 - new Symbol(0b110001000111111101010010001001, 30), // 125 - new Symbol(0b110001000111111101010010001000, 30), // 126 - new Symbol(0b110001000111111101010010000111, 30), // 127 - new Symbol(0b110001000111111101010010000110, 30), // 128 - new Symbol(0b110001000111111101010010000011, 30), // 129 - new Symbol(0b110001000111111101010010000010, 30), // 130 - new Symbol(0b110001000111111101010000011011, 30), // 131 - new Symbol(0b110001000111111101010000011010, 30), // 132 - new Symbol(0b110001000111111101010000011001, 30), // 133 - new Symbol(0b110001000111111101010000011000, 30), // 134 - new Symbol(0b110001000111111101010000010101, 30), // 135 - new Symbol(0b110001000111111101010000010100, 30), // 136 - new Symbol(0b110001000111111101010010000101, 30), // 137 - new Symbol(0b110001000111111101010010000100, 30), // 138 - new Symbol(0b110001000111111101010000011111, 30), // 139 - new Symbol(0b110001000111111101010000011101, 30), // 140 - new Symbol(0b110001000111111101010000011100, 30), // 141 - new Symbol(0b110001000111111101010010000001, 30), // 142 - new Symbol(0b110001000111111101010010000000, 30), // 143 - new Symbol(0b110001000111111101010000001111, 30), // 144 - new Symbol(0b110001000111111101010000001110, 30), // 145 - new Symbol(0b110001000111111101010000001100, 30), // 146 - new Symbol(0b110001000111111101010000010111, 30), // 147 - new Symbol(0b110001000111111101010000010110, 30), // 148 - new Symbol(0b110001000111111101010000001001, 30), // 149 - new Symbol(0b110001000111111101010000000100, 30), // 150 - new Symbol(0b110001000111111101010000000011, 30), // 151 - new Symbol(0b110001000111111101010000000010, 30), // 152 - new Symbol(0b110001000111111101010000000001, 30), // 153 - new Symbol(0b110001000111111101010000001011, 30), // 154 - new Symbol(0b110001000111111101010010001111, 30), // 155 - new Symbol(0b110001000111111101010010001110, 30), // 156 - new Symbol(0b110001000111111101010010001100, 30), // 157 - new Symbol(0b1110001101111111101001010111101, 31), // 158 - new Symbol(0b1110001101111111101001010111111, 31), // 159 - new Symbol(0b1110001101111111101001010100010, 31), // 160 - new Symbol(0b1110001101111111101001011011111, 31), // 161 - new Symbol(0b1110001101111111101001010100100, 31), // 162 - new Symbol(0b1110001101111111101001010111001, 31), // 163 - new Symbol(0b1110001101111111101001011011010, 31), // 164 - new Symbol(0b1110001101111111101001011010010, 31), // 165 - new Symbol(0b1110001101111111101001011010000, 31), // 166 - new Symbol(0b1110001101111111101001010111010, 31), // 167 - new Symbol(0b1110001101111111101001010001011, 31), // 168 - new Symbol(0b1110001101111111101001010001010, 31), // 169 - new Symbol(0b1110001101111111101001010001001, 31), // 170 - new Symbol(0b1110001101111111101001010001000, 31), // 171 - new Symbol(0b1110001101111111101001010000111, 31), // 172 - new Symbol(0b1110001101111111101001010000110, 31), // 173 - new Symbol(0b1110001101111111101001010000101, 31), // 174 - new Symbol(0b1110001101111111101001010000100, 31), // 175 - new Symbol(0b1110001101111111101001011010111, 31), // 176 - new Symbol(0b1110001101111111101001011010110, 31), // 177 - new Symbol(0b1110001101111111101001011010101, 31), // 178 - new Symbol(0b1110001101111111101001011010100, 31), // 179 - new Symbol(0b1110001101111111101001010110111, 31), // 180 - new Symbol(0b1110001101111111101001010110110, 31), // 181 - new Symbol(0b1110001101111111101001010010101, 31), // 182 - new Symbol(0b1110001101111111101001010010100, 31), // 183 - new Symbol(0b1110001101111111101001010110101, 31), // 184 - new Symbol(0b1110001101111111101001010110100, 31), // 185 - new Symbol(0b1110001101111111101001010010111, 31), // 186 - new Symbol(0b1110001101111111101001010010110, 31), // 187 - new Symbol(0b1110001101111111101001010110001, 31), // 188 - new Symbol(0b1110001101111111101001010110000, 31), // 189 - new Symbol(0b1110001101111111101001010010011, 31), // 190 - new Symbol(0b1110001101111111101001010010010, 31), // 191 - new Symbol(0b1110001101111111101001011101101, 31), // 192 - new Symbol(0b1110001101111111101001011101100, 31), // 193 - new Symbol(0b1110001101111111101001011101011, 31), // 194 - new Symbol(0b1110001101111111101001011101010, 31), // 195 - new Symbol(0b1110001101111111101001011100111, 31), // 196 - new Symbol(0b1110001101111111101001011100110, 31), // 197 - new Symbol(0b1110001101111111101001010010001, 31), // 198 - new Symbol(0b1110001101111111101001010010000, 31), // 199 - new Symbol(0b1110001101111111101001011100011, 31), // 200 - new Symbol(0b1110001101111111101001011100010, 31), // 201 - new Symbol(0b1110001101111111101001011100001, 31), // 202 - new Symbol(0b1110001101111111101001011100000, 31), // 203 - new Symbol(0b1110001101111111101001011101001, 31), // 204 - new Symbol(0b1110001101111111101001011101000, 31), // 205 - new Symbol(0b1110001101111111101001010001111, 31), // 206 - new Symbol(0b1110001101111111101001010001110, 31), // 207 - new Symbol(0b1110001101111111101001010000011, 31), // 208 - new Symbol(0b1110001101111111101001010000010, 31), // 209 - new Symbol(0b1110001101111111101001010001101, 31), // 210 - new Symbol(0b1110001101111111101001010001100, 31), // 211 - new Symbol(0b1110001101111111101001011001111, 31), // 212 - new Symbol(0b1110001101111111101001011001110, 31), // 213 - new Symbol(0b1110001101111111101001010000001, 31), // 214 - new Symbol(0b1110001101111111101001010000000, 31), // 215 - new Symbol(0b1110001101111111101001011011001, 31), // 216 - new Symbol(0b1110001101111111101001011011000, 31), // 217 - new Symbol(0b1110001101111111101001011100101, 31), // 218 - new Symbol(0b1110001101111111101001011100100, 31), // 219 - new Symbol(0b1110001101111111101001010101101, 31), // 220 - new Symbol(0b1110001101111111101001010101100, 31), // 221 - new Symbol(0b1110001101111111101001010110011, 31), // 222 - new Symbol(0b1110001101111111101001010110010, 31), // 223 - new Symbol(0b1110001101111111101001010101001, 31), // 224 - new Symbol(0b1110001101111111101001010101000, 31), // 225 - new Symbol(0b1110001101111111101001011101111, 31), // 226 - new Symbol(0b1110001101111111101001011101110, 31), // 227 - new Symbol(0b1110001101111111101001011001011, 31), // 228 - new Symbol(0b1110001101111111101001011001010, 31), // 229 - new Symbol(0b1110001101111111101001011000011, 31), // 230 - new Symbol(0b1110001101111111101001011000010, 31), // 231 - new Symbol(0b1110001101111111101001010101011, 31), // 232 - new Symbol(0b1110001101111111101001010101010, 31), // 233 - new Symbol(0b1110001101111111101001011001001, 31), // 234 - new Symbol(0b1110001101111111101001011001000, 31), // 235 - new Symbol(0b1110001101111111101001011000111, 31), // 236 - new Symbol(0b1110001101111111101001011000110, 31), // 237 - new Symbol(0b1110001101111111101001011000001, 31), // 238 - new Symbol(0b1110001101111111101001011000000, 31), // 239 - new Symbol(0b1110001101111111101001010111100, 31), // 240 - new Symbol(0b1110001101111111101001010100111, 31), // 241 - new Symbol(0b1110001101111111101001010100110, 31), // 242 - new Symbol(0b1110001101111111101001010111110, 31), // 243 - new Symbol(0b1110001101111111101001010100011, 31), // 244 - new Symbol(0b1110001101111111101001010100001, 31), // 245 - new Symbol(0b1110001101111111101001010100000, 31), // 246 - new Symbol(0b1110001101111111101001011011110, 31), // 247 - new Symbol(0b1110001101111111101001010100101, 31), // 248 - new Symbol(0b1110001101111111101001011011101, 31), // 249 - new Symbol(0b1110001101111111101001011011100, 31), // 250 - new Symbol(0b1110001101111111101001010111000, 31), // 251 - new Symbol(0b1110001101111111101001011011011, 31), // 252 - new Symbol(0b1110001101111111101001011010001, 31), // 253 - new Symbol(0b1110001101111111101001011010011, 31), // 254 - new Symbol(0b1110001101111111101001010111011, 31), // 255 - }; - - private static final Node ROOT = buildTree(0, 0); -} diff --git a/src/main/java/game/Magic.java b/src/main/java/game/Magic.java deleted file mode 100644 index a25538f..0000000 --- a/src/main/java/game/Magic.java +++ /dev/null @@ -1,155 +0,0 @@ -package org.lichess.compression.game; - -class Magic { - // Mask relevant occupancies. - public final long mask; - - // Magic factor. - public final long factor; - - // Offset in overlapping table. - public final int offset; - - public Magic(long mask, long factor, int offset) { - this.mask = mask; - this.factor = factor; - this.offset = offset; - } - - // Precomputed overlapping fixed shift magics: - // https://www.chessprogramming.org/Magic_Bitboards#Fixed_shift_Fancy - - public static Magic ROOK[] = { - new Magic(0x000101010101017eL, 0x00280077ffebfffeL, 26304), - new Magic(0x000202020202027cL, 0x2004010201097fffL, 35520), - new Magic(0x000404040404047aL, 0x0010020010053fffL, 38592), - new Magic(0x0008080808080876L, 0x0040040008004002L, 8026), - new Magic(0x001010101010106eL, 0x7fd00441ffffd003L, 22196), - new Magic(0x002020202020205eL, 0x4020008887dffffeL, 80870), - new Magic(0x004040404040403eL, 0x004000888847ffffL, 76747), - new Magic(0x008080808080807eL, 0x006800fbff75fffdL, 30400), - new Magic(0x0001010101017e00L, 0x000028010113ffffL, 11115), - new Magic(0x0002020202027c00L, 0x0020040201fcffffL, 18205), - new Magic(0x0004040404047a00L, 0x007fe80042ffffe8L, 53577), - new Magic(0x0008080808087600L, 0x00001800217fffe8L, 62724), - new Magic(0x0010101010106e00L, 0x00001800073fffe8L, 34282), - new Magic(0x0020202020205e00L, 0x00001800e05fffe8L, 29196), - new Magic(0x0040404040403e00L, 0x00001800602fffe8L, 23806), - new Magic(0x0080808080807e00L, 0x000030002fffffa0L, 49481), - new Magic(0x00010101017e0100L, 0x00300018010bffffL, 2410), - new Magic(0x00020202027c0200L, 0x0003000c0085fffbL, 36498), - new Magic(0x00040404047a0400L, 0x0004000802010008L, 24478), - new Magic(0x0008080808760800L, 0x0004002020020004L, 10074), - new Magic(0x00101010106e1000L, 0x0001002002002001L, 79315), - new Magic(0x00202020205e2000L, 0x0001001000801040L, 51779), - new Magic(0x00404040403e4000L, 0x0000004040008001L, 13586), - new Magic(0x00808080807e8000L, 0x0000006800cdfff4L, 19323), - new Magic(0x000101017e010100L, 0x0040200010080010L, 70612), - new Magic(0x000202027c020200L, 0x0000080010040010L, 83652), - new Magic(0x000404047a040400L, 0x0004010008020008L, 63110), - new Magic(0x0008080876080800L, 0x0000040020200200L, 34496), - new Magic(0x001010106e101000L, 0x0002008010100100L, 84966), - new Magic(0x002020205e202000L, 0x0000008020010020L, 54341), - new Magic(0x004040403e404000L, 0x0000008020200040L, 60421), - new Magic(0x008080807e808000L, 0x0000820020004020L, 86402), - new Magic(0x0001017e01010100L, 0x00fffd1800300030L, 50245), - new Magic(0x0002027c02020200L, 0x007fff7fbfd40020L, 76622), - new Magic(0x0004047a04040400L, 0x003fffbd00180018L, 84676), - new Magic(0x0008087608080800L, 0x001fffde80180018L, 78757), - new Magic(0x0010106e10101000L, 0x000fffe0bfe80018L, 37346), - new Magic(0x0020205e20202000L, 0x0001000080202001L, 370), - new Magic(0x0040403e40404000L, 0x0003fffbff980180L, 42182), - new Magic(0x0080807e80808000L, 0x0001fffdff9000e0L, 45385), - new Magic(0x00017e0101010100L, 0x00fffefeebffd800L, 61659), - new Magic(0x00027c0202020200L, 0x007ffff7ffc01400L, 12790), - new Magic(0x00047a0404040400L, 0x003fffbfe4ffe800L, 16762), - new Magic(0x0008760808080800L, 0x001ffff01fc03000L, 0), - new Magic(0x00106e1010101000L, 0x000fffe7f8bfe800L, 38380), - new Magic(0x00205e2020202000L, 0x0007ffdfdf3ff808L, 11098), - new Magic(0x00403e4040404000L, 0x0003fff85fffa804L, 21803), - new Magic(0x00807e8080808000L, 0x0001fffd75ffa802L, 39189), - new Magic(0x007e010101010100L, 0x00ffffd7ffebffd8L, 58628), - new Magic(0x007c020202020200L, 0x007fff75ff7fbfd8L, 44116), - new Magic(0x007a040404040400L, 0x003fff863fbf7fd8L, 78357), - new Magic(0x0076080808080800L, 0x001fffbfdfd7ffd8L, 44481), - new Magic(0x006e101010101000L, 0x000ffff810280028L, 64134), - new Magic(0x005e202020202000L, 0x0007ffd7f7feffd8L, 41759), - new Magic(0x003e404040404000L, 0x0003fffc0c480048L, 1394), - new Magic(0x007e808080808000L, 0x0001ffffafd7ffd8L, 40910), - new Magic(0x7e01010101010100L, 0x00ffffe4ffdfa3baL, 66516), - new Magic(0x7c02020202020200L, 0x007fffef7ff3d3daL, 3897), - new Magic(0x7a04040404040400L, 0x003fffbfdfeff7faL, 3930), - new Magic(0x7608080808080800L, 0x001fffeff7fbfc22L, 72934), - new Magic(0x6e10101010101000L, 0x0000020408001001L, 72662), - new Magic(0x5e20202020202000L, 0x0007fffeffff77fdL, 56325), - new Magic(0x3e40404040404000L, 0x0003ffffbf7dfeecL, 66501), - new Magic(0x7e80808080808000L, 0x0001ffff9dffa333L, 14826), - }; - - public static Magic BISHOP[] = { - new Magic(0x0040201008040200L, 0x007fbfbfbfbfbfffL, 5378), - new Magic(0x0000402010080400L, 0x0000a060401007fcL, 4093), - new Magic(0x0000004020100a00L, 0x0001004008020000L, 4314), - new Magic(0x0000000040221400L, 0x0000806004000000L, 6587), - new Magic(0x0000000002442800L, 0x0000100400000000L, 6491), - new Magic(0x0000000204085000L, 0x000021c100b20000L, 6330), - new Magic(0x0000020408102000L, 0x0000040041008000L, 5609), - new Magic(0x0002040810204000L, 0x00000fb0203fff80L, 22236), - new Magic(0x0020100804020000L, 0x0000040100401004L, 6106), - new Magic(0x0040201008040000L, 0x0000020080200802L, 5625), - new Magic(0x00004020100a0000L, 0x0000004010202000L, 16785), - new Magic(0x0000004022140000L, 0x0000008060040000L, 16817), - new Magic(0x0000000244280000L, 0x0000004402000000L, 6842), - new Magic(0x0000020408500000L, 0x0000000801008000L, 7003), - new Magic(0x0002040810200000L, 0x000007efe0bfff80L, 4197), - new Magic(0x0004081020400000L, 0x0000000820820020L, 7356), - new Magic(0x0010080402000200L, 0x0000400080808080L, 4602), - new Magic(0x0020100804000400L, 0x00021f0100400808L, 4538), - new Magic(0x004020100a000a00L, 0x00018000c06f3fffL, 29531), - new Magic(0x0000402214001400L, 0x0000258200801000L, 45393), - new Magic(0x0000024428002800L, 0x0000240080840000L, 12420), - new Magic(0x0002040850005000L, 0x000018000c03fff8L, 15763), - new Magic(0x0004081020002000L, 0x00000a5840208020L, 5050), - new Magic(0x0008102040004000L, 0x0000020008208020L, 4346), - new Magic(0x0008040200020400L, 0x0000804000810100L, 6074), - new Magic(0x0010080400040800L, 0x0001011900802008L, 7866), - new Magic(0x0020100a000a1000L, 0x0000804000810100L, 32139), - new Magic(0x0040221400142200L, 0x000100403c0403ffL, 57673), - new Magic(0x0002442800284400L, 0x00078402a8802000L, 55365), - new Magic(0x0004085000500800L, 0x0000101000804400L, 15818), - new Magic(0x0008102000201000L, 0x0000080800104100L, 5562), - new Magic(0x0010204000402000L, 0x00004004c0082008L, 6390), - new Magic(0x0004020002040800L, 0x0001010120008020L, 7930), - new Magic(0x0008040004081000L, 0x000080809a004010L, 13329), - new Magic(0x00100a000a102000L, 0x0007fefe08810010L, 7170), - new Magic(0x0022140014224000L, 0x0003ff0f833fc080L, 27267), - new Magic(0x0044280028440200L, 0x007fe08019003042L, 53787), - new Magic(0x0008500050080400L, 0x003fffefea003000L, 5097), - new Magic(0x0010200020100800L, 0x0000101010002080L, 6643), - new Magic(0x0020400040201000L, 0x0000802005080804L, 6138), - new Magic(0x0002000204081000L, 0x0000808080a80040L, 7418), - new Magic(0x0004000408102000L, 0x0000104100200040L, 7898), - new Magic(0x000a000a10204000L, 0x0003ffdf7f833fc0L, 42012), - new Magic(0x0014001422400000L, 0x0000008840450020L, 57350), - new Magic(0x0028002844020000L, 0x00007ffc80180030L, 22813), - new Magic(0x0050005008040200L, 0x007fffdd80140028L, 56693), - new Magic(0x0020002010080400L, 0x00020080200a0004L, 5818), - new Magic(0x0040004020100800L, 0x0000101010100020L, 7098), - new Magic(0x0000020408102000L, 0x0007ffdfc1805000L, 4451), - new Magic(0x0000040810204000L, 0x0003ffefe0c02200L, 4709), - new Magic(0x00000a1020400000L, 0x0000000820806000L, 4794), - new Magic(0x0000142240000000L, 0x0000000008403000L, 13364), - new Magic(0x0000284402000000L, 0x0000000100202000L, 4570), - new Magic(0x0000500804020000L, 0x0000004040802000L, 4282), - new Magic(0x0000201008040200L, 0x0004010040100400L, 14964), - new Magic(0x0000402010080400L, 0x00006020601803f4L, 4026), - new Magic(0x0002040810204000L, 0x0003ffdfdfc28048L, 4826), - new Magic(0x0004081020400000L, 0x0000000820820020L, 7354), - new Magic(0x000a102040000000L, 0x0000000008208060L, 4848), - new Magic(0x0014224000000000L, 0x0000000000808020L, 15946), - new Magic(0x0028440200000000L, 0x0000000001002020L, 14932), - new Magic(0x0050080402000000L, 0x0000000401002008L, 16588), - new Magic(0x0020100804020000L, 0x0000004040404040L, 6905), - new Magic(0x0040201008040200L, 0x007fff9fdf7ff813L, 16076), - }; -} diff --git a/src/main/java/game/Move.java b/src/main/java/game/Move.java deleted file mode 100644 index 7a867bb..0000000 --- a/src/main/java/game/Move.java +++ /dev/null @@ -1,143 +0,0 @@ -package org.lichess.compression.game; - -final class Move implements Comparable { - public static final int NORMAL = 0; - public static final int EN_PASSANT = 1; - public static final int CASTLING = 2; - - public int type; - public Role role; - public int from; - public boolean capture; - public int to; - public Role promotion; - - private int score; - - void set(Board board, int type, Role role, int from, boolean capture, int to, Role promotion) { - // Overwrite the current move. This is like a constructor, but reuses - // an existing object. - - this.type = type; - this.role = role; - this.from = from; - this.capture = capture; - this.to = to; - this.promotion = promotion; - - // Assign higher scores to moves that are more likely to be played. - // - // Scores must be unique for every move in the position, because - // move ordering should never depend on implementation details of the - // generator. - - long defendingPawns = - Bitboard.pawnAttacks(board.turn, to) & - board.pawns & - board.them(); - - int moveValue = pieceValue(board, role, to) - pieceValue(board, role, from); - - this.score = - (promotion == null ? 0 : promotion.index << 26) + - (capture ? 1 << 25 : 0) + - ((defendingPawns == 0 ? 6 : (5 - role.index)) << 22) + - (512 + moveValue << 12) + - (to << 6) + - from; - } - - public int compareTo(Move other) { - return other.score - this.score; - } - - public String uci() { - int to = this.to; - - // Select the king target square instead. - if (this.type == CASTLING) { - to = Square.combine(this.to < this.from ? Square.C1 : Square.G1, this.from); - } - - StringBuilder builder = new StringBuilder(this.promotion == null ? 4 : 5); - builder.append((char) (Square.file(this.from) + 'a')); - builder.append((char) (Square.rank(this.from) + '1')); - builder.append((char) (Square.file(to) + 'a')); - builder.append((char) (Square.rank(to) + '1')); - if (this.promotion != null) builder.append(this.promotion.symbol.toLowerCase()); - return builder.toString(); - } - - public boolean isZeroing() { - return this.capture || this.role == Role.PAWN; - } - - public boolean isIrreversible() { - return this.isZeroing() || this.type == CASTLING; - } - - // Piece-Square table with some manual tweaks (breaking symmetry). - // - // Original table taken from: - // https://github.com/flok99/feeks/blob/f02e4897555ac08497a5fea43f241bad30f2ecff/psq.py#L8-L67 - - private static int pieceValue(Board board, Role role, int square) { - return PSQT[role.index][board.turn ? Square.mirror(square) : square]; - } - - private static final int PSQT[][] = { - { 0, 0, 0, 0, 0, 0, 0, 0, - 50, 50, 50, 50, 50, 50, 50, 50, - 10, 10, 20, 30, 30, 20, 10, 10, - 5, 5, 10, 25, 25, 10, 5, 5, - 0, 0, 0, 20, 21, 0, 0, 0, - 5, -5,-10, 0, 0,-10, -5, 5, - 5, 10, 10,-31,-31, 10, 10, 5, - 0, 0, 0, 0, 0, 0, 0, 0 }, - - { -50,-40,-30,-30,-30,-30,-40,-50, - -40,-20, 0, 0, 0, 0,-20,-40, - -30, 0, 10, 15, 15, 10, 0,-30, - -30, 5, 15, 20, 20, 15, 5,-30, - -30, 0, 15, 20, 20, 15, 0,-30, - -30, 5, 10, 15, 15, 11, 5,-30, - -40,-20, 0, 5, 5, 0,-20,-40, - -50,-40,-30,-30,-30,-30,-40,-50 }, - - { -20,-10,-10,-10,-10,-10,-10,-20, - -10, 0, 0, 0, 0, 0, 0,-10, - -10, 0, 5, 10, 10, 5, 0,-10, - -10, 5, 5, 10, 10, 5, 5,-10, - -10, 0, 10, 10, 10, 10, 0,-10, - -10, 10, 10, 10, 10, 10, 10,-10, - -10, 5, 0, 0, 0, 0, 5,-10, - -20,-10,-10,-10,-10,-10,-10,-20 }, - - { 0, 0, 0, 0, 0, 0, 0, 0, - 5, 10, 10, 10, 10, 10, 10, 5, - -5, 0, 0, 0, 0, 0, 0, -5, - -5, 0, 0, 0, 0, 0, 0, -5, - -5, 0, 0, 0, 0, 0, 0, -5, - -5, 0, 0, 0, 0, 0, 0, -5, - -5, 0, 0, 0, 0, 0, 0, -5, - 0, 0, 0, 5, 5, 0, 0, 0 }, - - { -20,-10,-10, -5, -5,-10,-10,-20, - -10, 0, 0, 0, 0, 0, 0,-10, - -10, 0, 5, 5, 5, 5, 0,-10, - -5, 0, 5, 5, 5, 5, 0, -5, - 0, 0, 5, 5, 5, 5, 0, -5, - -10, 5, 5, 5, 5, 5, 0,-10, - -10, 0, 5, 0, 0, 0, 0,-10, - -20,-10,-10, -5, -5,-10,-10,-20 }, - - { -30,-40,-40,-50,-50,-40,-40,-30, - -30,-40,-40,-50,-50,-40,-40,-30, - -30,-40,-40,-50,-50,-40,-40,-30, - -30,-40,-40,-50,-50,-40,-40,-30, - -20,-30,-30,-40,-40,-30,-30,-20, - -10,-20,-20,-20,-20,-20,-20,-10, - 20, 20, 0, 0, 0, 0, 20, 20, - 0, 30, 10, 0, 0, 10, 30, 0 } - }; -} diff --git a/src/main/java/game/MoveList.java b/src/main/java/game/MoveList.java deleted file mode 100644 index 3902132..0000000 --- a/src/main/java/game/MoveList.java +++ /dev/null @@ -1,93 +0,0 @@ -package org.lichess.compression.game; - -import java.util.Arrays; -import java.util.function.Predicate; - -final class MoveList { - // A move list that reuses a pool of moves, never allocating new objects. - // This is somewhat dangerous: Care must be taken that the list is not - // modified while external code still holds references. - private final Move buffer[]; - private int size = 0; - - public MoveList() { - this(256); - } - - public MoveList(int capacity) { - buffer = new Move[capacity]; - - for (int i = 0; i < buffer.length; i++) { - buffer[i] = new Move(); - } - } - - public void clear() { - size = 0; - } - - public int size() { - return size; - } - - public Move get(int i) { - assert i < size; - return buffer[i]; - } - - public boolean isEmpty() { - return size == 0; - } - - public void pushNormal(Board board, Role role, int from, boolean capture, int to) { - buffer[size++].set(board, Move.NORMAL, role, from, capture, to, null); - } - - public void pushPromotion(Board board, int from, boolean capture, int to, Role promotion) { - buffer[size++].set(board, Move.NORMAL, Role.PAWN, from, capture, to, promotion); - } - - public void pushCastle(Board board, int king, int rook) { - buffer[size++].set(board, Move.CASTLING, Role.KING, king, false, rook, null); - } - - public void pushEnPassant(Board board, int capturer, int to) { - buffer[size++].set(board, Move.EN_PASSANT, Role.PAWN, capturer, true, to, null); - } - - public void sort() { - Arrays.sort(buffer, 0, size, null); - } - - public boolean anyMatch(Predicate predicate) { - for (int i = 0; i < size; i++) { - if (predicate.test(buffer[i])) - return true; - } - return false; - } - - public void retain(Predicate predicate) { - // Keep only the moves where the predicate returns true. Does not - // preserve the order of moves. - int i = 0; - while (i < size) { - if (predicate.test(buffer[i])) { - i++; - } else { - swapRemove(i); - } - } - } - - private void swapRemove(int i) { - // Removes a move by swapping the last move into its place. - // For i != j buffer[i] and buffer[j] should never point to the same - // object! - assert i < size; - size--; - Move tmp = buffer[i]; - buffer[i] = buffer[size]; - buffer[size] = tmp; - } -} diff --git a/src/main/java/game/PerftTest.java b/src/main/java/game/PerftTest.java deleted file mode 100644 index 0bc5108..0000000 --- a/src/main/java/game/PerftTest.java +++ /dev/null @@ -1,20624 +0,0 @@ -package org.lichess.compression.game; - -public class PerftTest { - public static long perft(Board board, int depth) { - // Counts the number of paths in the tree of legal moves. Useful for - // testing performance and comparing to well known numbers. - if (depth >= 1) { - MoveList moves = new MoveList(); - board.legalMoves(moves); - - if (depth == 1) { - return moves.size(); - } else { - long sum = 0; - for (int i = 0; i < moves.size(); i++) { - Move move = moves.get(i); - Board child = new Board(board); - child.play(move); - sum += perft(child, depth - 1); - } - return sum; - } - } else { - return 1; - } - } - - public static void assertEqual(long lhs, long rhs) { - if (lhs != rhs) throw new RuntimeException("perft test failed"); - } - - // Particularly tricky test positions from: - // https://chessprogramming.wikispaces.com/Perft+Results - - public static void trickyBatch() { - // (2) Kiwipete by Peter McKenzie - // r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - - Board board = new Board(0x2d50081280e700L, 0x221000040000L, 0x40010000001800L, 0x8100000000000081L, 0x10000000200000L, 0x1000000000000010L, 0x181024ff91L, 0x917d730002800000L, true, 0, 0x8100000000000081L); - assertEqual(perft(board, 1), 48); - assertEqual(perft(board, 2), 2039); - assertEqual(perft(board, 3), 97862); - - // (3) 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - - board = new Board(0x4080220005000L, 0x0L, 0x0L, 0x8002000000L, 0x0L, 0x180000000L, 0x302005000L, 0x40880a0000000L, true, 0, 0x0L); - assertEqual(perft(board, 1), 14); - assertEqual(perft(board, 2), 191); - assertEqual(perft(board, 3), 2812); - assertEqual(perft(board, 4), 43238); - - // (4) Mirrored - // r2q1rk1/pP1p2pp/Q4n2/bbp1p3/Np6/1B3NBn/pPPP1PPP/R3K2R b KQ - - board = new Board(0xcb00140200ef00L, 0x200001a00000L, 0x300420000L, 0x2100000000000081L, 0x800010000000000L, 0x4000000000000010L, 0x201000162ee91L, 0x69c9201702800100L, false, 0, 0x81L); - assertEqual(perft(board, 1), 6); - assertEqual(perft(board, 2), 264); - assertEqual(perft(board, 3), 9467); - - // (5) http://www.talkchess.com/forum/viewtopic.php?t=42463 - // rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - - board = new Board(0xeb04000000c700L, 0x200000000003002L, 0x410000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x2000000000000010L, 0x800000400d79fL, 0xaff3040000002000L, true, 0, 0x81L); - assertEqual(perft(board, 1), 44); - assertEqual(perft(board, 2), 1486); - assertEqual(perft(board, 3), 62379); - - // (6) By Steven Edwards - // r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - - board = new Board(0xe609101009e600L, 0x240000240000L, 0x4444000000L, 0x2100000000000021L, 0x10000000001000L, 0x4000000000000040L, 0x40142df661L, 0x61f62d1440000000L, true, 0, 0x0L); - assertEqual(perft(board, 1), 46); - assertEqual(perft(board, 2), 2079); - assertEqual(perft(board, 3), 89890); - } - - // Test cases generated from: - // https://marcelk.net/rookie/nostalgia/v3/perft-random.epd - - public static void batch0() { - // gentest-1 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2 - assertEqual(perft(new Board(0xfb04004004bb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4004bbffL, 0xfffb040000000000L, false, 0, 0x8100000000000081L), 4), 274234); - - // gentest-3 - assertEqual(perft(new Board(0xf30c004004bb00L, 0x4200000000000042L, 0x2400000000004004L, 0x8100000000000081L, 0x4000000000008L, 0x1000000000000010L, 0x4004fbdfL, 0xf7f70c0000000000L, true, 0, 0x8100000000000081L), 4), 579004); - - // gentest-4 - assertEqual(perft(new Board(0xf10e004004bb00L, 0x4200000000000042L, 0x2400000010000004L, 0x8100000000000081L, 0x4000000000400L, 0x1000000000000010L, 0x5004bfd7L, 0xf7f50e0000000000L, false, 0, 0x8100000000000081L), 4), 699777); - - // gentest-5 - assertEqual(perft(new Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000000050000004L, 0x8100000000000081L, 0x4000000000400L, 0x1000000000000010L, 0x10843fd7L, 0xf3758e0040000000L, true, 0, 0x8100000000000081L), 4), 701084); - - // gentest-6 - assertEqual(perft(new Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000000840000004L, 0x8100000000000081L, 0x800400000000000L, 0x1000000000000010L, 0x400800843bd7L, 0xfb718e0040000000L, false, 0, 0x8100000000000081L), 4), 872551); - - // gentest-7 - assertEqual(perft(new Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000000840000004L, 0x8100000000000081L, 0x800000000080000L, 0x400000000000010L, 0x8008c3bd7L, 0xef718e0040000000L, true, 0, 0x81L), 4), 891412); - - // gentest-8 - assertEqual(perft(new Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000002000004004L, 0x8100000000000081L, 0x800000000080000L, 0x400000000000010L, 0x8c7bd7L, 0xef718e2000000000L, false, 0, 0x81L), 4), 832461); - - // gentest-9 - assertEqual(perft(new Board(0x718c0202843900L, 0x4200000000000042L, 0x2000002000004004L, 0x8100000000000081L, 0x800000000080000L, 0x8000000000010L, 0x28c79d7L, 0xeb798c2200000000L, true, 0, 0x81L), 4), 715605); - - // gentest-10 - assertEqual(perft(new Board(0x708d0202843900L, 0x4200000000200002L, 0x2000002000004004L, 0x8100000000000081L, 0x800000000000400L, 0x8000000000010L, 0x2a47d97L, 0xeb788d2200000000L, false, 0, 0x81L), 4), 781431); - - // gentest-11 - assertEqual(perft(new Board(0x708c0302843900L, 0x4200000000200002L, 0x2000000010004004L, 0x8100000000000081L, 0x800000000080000L, 0x8000000000010L, 0x2ac7997L, 0xeb788c0310000000L, true, 0, 0x81L), 4), 784949); - - // gentest-12 - assertEqual(perft(new Board(0x30cc0302843900L, 0x4200000080000002L, 0x2000000010000024L, 0x8100000000000081L, 0x800000000080000L, 0x8000000000010L, 0x828c39b7L, 0xeb38cc0310000000L, false, 0, 0x81L), 4), 743330); - - // gentest-13 - assertEqual(perft(new Board(0x30c40302843900L, 0x4200000080000002L, 0x20000000000000a4L, 0x8100000000000001L, 0x800080000000000L, 0x400000000000010L, 0x80082843937L, 0xef30c40300000080L, true, 0, 0x1L), 4), 807330); - - // gentest-14 - assertEqual(perft(new Board(0x30c403029c2100L, 0x4200000080000002L, 0x20000000000000a4L, 0x8100000000000001L, 0x4080000000000L, 0x400000000000010L, 0x800829c2137L, 0xe734c40300000080L, false, 0, 0x1L), 4), 960905); - - // gentest-15 - assertEqual(perft(new Board(0x308403029c2100L, 0x4200400000000002L, 0x2000000000200024L, 0x8100000000000001L, 0x4080000000000L, 0x2000000000010L, 0x4800029c2137L, 0xe336840300200000L, true, 0, 0x1L), 4), 1259372); - - // gentest-16 - assertEqual(perft(new Board(0x10c403009c2100L, 0x4200000000010000L, 0x2000000000200024L, 0x8100000000000001L, 0x4080000000000L, 0x2000000000010L, 0x801009d2135L, 0xe316c40200200000L, false, 0, 0x1L), 4), 924296); - - // gentest-17 - assertEqual(perft(new Board(0x10c403009c2100L, 0x200200000000002L, 0x2000000010000024L, 0x8100000000000001L, 0x4080000000000L, 0x2000000000010L, 0x801009c2137L, 0xa316e40210000000L, true, 0, 0x1L), 4), 1342725); - - // gentest-18 - assertEqual(perft(new Board(0x10c403009c2100L, 0x200200000000002L, 0x2000002000000024L, 0x8100000000000001L, 0x4000080000000L, 0x2000000000010L, 0x1809c2137L, 0xa316e42200000000L, false, 0, 0x1L), 4), 1463588); - - // gentest-19 - assertEqual(perft(new Board(0x10c403009c2100L, 0x210000000002L, 0x2000002000000024L, 0x8100000000000001L, 0x20400000L, 0x2000000000010L, 0x1209c2137L, 0xa112e52200400000L, true, 0, 0x1L), 4), 1909468); - - // gentest-20 - assertEqual(perft(new Board(0x10c403009c2100L, 0x210000000002L, 0x2000002000000024L, 0x4100000000000001L, 0x800400000L, 0x2000000000010L, 0x9009c2137L, 0x6112e52200400000L, false, 0, 0x1L), 4), 2271390); - - // gentest-21 - assertEqual(perft(new Board(0x10c403019c2000L, 0x200400000002L, 0x2000000040000024L, 0x4100000000000001L, 0x800400000L, 0x2000000000010L, 0x9019c2037L, 0x6112e40640400000L, true, 0, 0x1L), 4), 2903019); - - // gentest-22 - assertEqual(perft(new Board(0x10c403019c2000L, 0x200400000002L, 0x2000000040000024L, 0x4100000000000001L, 0x800400000L, 0x10000000010L, 0x9019c2037L, 0x6110e50640400000L, false, 0, 0x1L), 4), 2567078); - - // gentest-23 - assertEqual(perft(new Board(0xc413019c2000L, 0x200400000002L, 0x2000000000001024L, 0x4100000000000001L, 0x404000L, 0x10000000010L, 0x1019c6037L, 0x6100e51600401000L, true, 0, 0x1L), 4), 1095789); - - // gentest-24 - assertEqual(perft(new Board(0xc011009c2000L, 0x200400000002L, 0x2000000000001024L, 0x4100000000000001L, 0x40000400000L, 0x200000010L, 0x401009c2037L, 0x6100e01600401000L, false, 0, 0x1L), 4), 16244); - - // gentest-25 - assertEqual(perft(new Board(0xc011009c2000L, 0x200400000002L, 0x2000000000005004L, 0x4100000000000001L, 0x400000L, 0x80000000010L, 0x1009c6017L, 0x6100e81400401000L, true, 0, 0x1L), 4), 1218982); - - // gentest-26 - assertEqual(perft(new Board(0xc011409c0000L, 0xc00000002L, 0x2000000000005004L, 0x4100000000000001L, 0x0L, 0x80000000010L, 0x1409c4017L, 0x6100c81c00001000L, false, 0, 0x1L), 4), 756910); - - // gentest-27 - assertEqual(perft(new Board(0xc011409c0000L, 0x810000002L, 0x2000000000005004L, 0x140000000010000L, 0x0L, 0x80000000010L, 0x1409d4016L, 0x2140c81810001000L, true, 0, 0x0L), 4), 631901); - - // gentest-28 - assertEqual(perft(new Board(0xc011409c0000L, 0x810000800L, 0x2000000000201004L, 0x110000000010000L, 0x0L, 0x80000000010L, 0x140bd0814L, 0x2110c81810001000L, false, 0, 0x0L), 4), 751251); - - // gentest-29 - assertEqual(perft(new Board(0xc011409c0000L, 0x4000000400800L, 0x2000000000201200L, 0x110000000010000L, 0x0L, 0x80000000010L, 0x140bd0a10L, 0x2114c81000401000L, true, 0, 0x0L), 4), 697477); - - // gentest-30 - assertEqual(perft(new Board(0xc011409c0000L, 0x4000000400800L, 0x2100000000001200L, 0x10000000000001L, 0x0L, 0x8000000000010L, 0x1000001409c0a11L, 0x201cc01000401000L, false, 0, 0x0L), 4), 660957); - - // gentest-31 - assertEqual(perft(new Board(0xc011409c0000L, 0x1000000000400800L, 0x40000010001200L, 0x10000000000001L, 0x0L, 0x8000000000010L, 0x1509c0a11L, 0x1058c01000401000L, true, 0, 0x0L), 4), 483244); - - // gentest-32 - assertEqual(perft(new Board(0xc011409c0000L, 0x1000000000400800L, 0x140000000001200L, 0x10000000000100L, 0x0L, 0x80000000010L, 0x1000001409c0b10L, 0x1050c81000401000L, false, 0, 0x0L), 4), 489620); - - // gentest-33 - assertEqual(perft(new Board(0xc011409c0000L, 0x1000000010000800L, 0x140000000001001L, 0x100000000100L, 0x0L, 0x80000000010L, 0x1000001409c0911L, 0x1040d81010001000L, true, 0, 0x0L), 4), 281677); - - // gentest-34 - assertEqual(perft(new Board(0xc011409c0000L, 0x1000000000000020L, 0x40000010001001L, 0x100000000100L, 0x0L, 0x400000010L, 0x1509c0131L, 0x1040d01400001000L, false, 0, 0x0L), 4), 337049); - - // gentest-35 - assertEqual(perft(new Board(0x8051409c0000L, 0x1000000000008000L, 0x40000010001001L, 0x10000000100L, 0x0L, 0x400000010L, 0x1509c8111L, 0x1040815400001000L, true, 0, 0x0L), 4), 314612); - - // gentest-36 - assertEqual(perft(new Board(0x8051409c0000L, 0x80000008000L, 0x40400000001001L, 0x10000000200L, 0x0L, 0x400000010L, 0x4001409c8211L, 0x40895400001000L, false, 0, 0x0L), 4), 415723); - - // gentest-37 - assertEqual(perft(new Board(0xd1409c0000L, 0x400000000008000L, 0xc0000000001001L, 0x10000000200L, 0x0L, 0x400000010L, 0x800001409c8211L, 0x44001d400001000L, true, 0, 0x0L), 4), 412224); - - // gentest-38 - assertEqual(perft(new Board(0xd1c01c0000L, 0x1000000008000L, 0xc0000000001001L, 0x10002000000L, 0x0L, 0x400000010L, 0x800001c21c8011L, 0x4101d400001000L, false, 0, 0x0L), 4), 439782); - - // gentest-39 - assertEqual(perft(new Board(0xd1801c0000L, 0x1000000000020L, 0x80200040000001L, 0x10002000000L, 0x0L, 0x400000010L, 0x800001821c0031L, 0x121d440000000L, true, 0, 0x0L), 4), 362146); - - // gentest-40 - assertEqual(perft(new Board(0xd1801c0000L, 0x1000000000020L, 0x80200040000001L, 0x2010000000000L, 0x0L, 0x40000000010L, 0x820001801c0031L, 0x125d040000000L, false, 0, 0x0L), 4), 318916); - - // gentest-41 - assertEqual(perft(new Board(0xd188140000L, 0x400000000000020L, 0x80200000001001L, 0x2010000000000L, 0x0L, 0x40000000010L, 0x82000188140031L, 0x40025d000001000L, true, 0, 0x0L), 4), 509994); - - // gentest-42 - assertEqual(perft(new Board(0xd188140000L, 0x400000000000020L, 0x90000000001001L, 0x8010000000000L, 0x0L, 0x40000000800L, 0x88000188140821L, 0x41005d000001000L, false, 0, 0x0L), 4), 442872); - - // gentest-43 - assertEqual(perft(new Board(0x9188140000L, 0x400000000000020L, 0x80080000001001L, 0x8010000000000L, 0x0L, 0x40000000004L, 0x88000108140025L, 0x4000d9080001000L, true, 0, 0x0L), 4), 392378); - - // gentest-44 - assertEqual(perft(new Board(0x9188140000L, 0x400000000000020L, 0x80000080003L, 0x8010000000000L, 0x0L, 0x40000000200L, 0x8000108140223L, 0x4000d9080080000L, false, 0, 0x0L), 4), 355398); - - // gentest-45 - assertEqual(perft(new Board(0x9188140000L, 0x20000000020L, 0x80000080003L, 0x2010000000000L, 0x0L, 0x200000200L, 0x2000108140223L, 0xb9280080000L, true, 0, 0x0L), 4), 327247); - - // gentest-46 - assertEqual(perft(new Board(0x9188140000L, 0x20000000020L, 0x80000080003L, 0x4000010000000000L, 0x0L, 0x4000200L, 0x4000000108140223L, 0xb9084080000L, false, 0, 0x0L), 4), 386325); - - // gentest-47 - assertEqual(perft(new Board(0x9188140000L, 0x20000000020L, 0x2000000000001003L, 0x10040000000L, 0x0L, 0x4000200L, 0x148140223L, 0x2000039084001000L, true, 0, 0x0L), 4), 322047); - - // gentest-48 - assertEqual(perft(new Board(0x19c0140000L, 0x20000000020L, 0x2000000010001001L, 0x10000000000L, 0x0L, 0x4000200L, 0x910140221L, 0x20000310c4001000L, false, 0, 0x0L), 4), 143529); - - // gentest-49 - assertEqual(perft(new Board(0x11c0140000L, 0x800000020L, 0x800000001401L, 0x10000000000L, 0x0L, 0x4000200L, 0x100140621L, 0x8118c4001000L, true, 0, 0x0L), 4), 187436); - - // gentest-50 - assertEqual(perft(new Board(0x11c0140000L, 0x800400000L, 0x800000001401L, 0x200000000000L, 0x0L, 0x4000100L, 0x100540501L, 0xa018c4001000L, false, 0, 0x0L), 4), 348692); - - // gentest-51 - assertEqual(perft(new Board(0x11c0140000L, 0x2400000L, 0x800000001401L, 0x20000000000L, 0x0L, 0x4010000L, 0x100550401L, 0x8210c6001000L, true, 0, 0x0L), 4), 287677); - - // gentest-52 - assertEqual(perft(new Board(0x11c0140000L, 0x8002000000L, 0x800000081001L, 0x10000000000L, 0x0L, 0x4010000L, 0x81001d0001L, 0x8110c6001000L, false, 0, 0x0L), 4), 29157); - - // gentest-53 - assertEqual(perft(new Board(0x11c0140000L, 0x2400000L, 0x802000000001L, 0x10000000000L, 0x0L, 0x4010000L, 0x100550001L, 0x8130c6000000L, true, 0, 0x0L), 4), 108753); - - // gentest-54 - assertEqual(perft(new Board(0x11c0140000L, 0x2000080L, 0x800010000200L, 0x10000000000L, 0x0L, 0x4010000L, 0x100150280L, 0x8110d6000000L, false, 0, 0x0L), 4), 74867); - - // gentest-55 - assertEqual(perft(new Board(0x11c0140000L, 0x2002000L, 0x40002000000200L, 0x10000000000L, 0x0L, 0x4010000L, 0x100152200L, 0x400130c6000000L, true, 0, 0x0L), 4), 108745); - - // gentest-56 - assertEqual(perft(new Board(0x1180140000L, 0x42000000L, 0x40002000000001L, 0x400000000000L, 0x0L, 0x4010000L, 0x140150001L, 0x40403086000000L, false, 0, 0x0L), 4), 109696); - - // gentest-57 - assertEqual(perft(new Board(0x1180140000L, 0x42000000L, 0x40000000000202L, 0x800000000000L, 0x0L, 0x4010000L, 0x140150200L, 0x40801086000002L, true, 0, 0x0L), 4), 85445); - - // gentest-58 - assertEqual(perft(new Board(0x1180140000L, 0x42000000L, 0x40000000000202L, 0x800000000000L, 0x0L, 0x200010000L, 0x140150200L, 0x40801282000002L, false, 0, 0x0L), 4), 125127); - - // gentest-59 - assertEqual(perft(new Board(0x1180140000L, 0x200002000000L, 0x40000000000202L, 0x800000000000L, 0x0L, 0x200010000L, 0x200100150200L, 0x40801282000002L, true, 0, 0x0L), 4), 133804); - - // gentest-60 - assertEqual(perft(new Board(0x1180140000L, 0x2400000L, 0x40000000080200L, 0x800000000000L, 0x0L, 0x200010000L, 0x100550200L, 0x40801282080000L, false, 0, 0x0L), 4), 153820); - - // gentest-61 - assertEqual(perft(new Board(0x1180140000L, 0x400400L, 0x40000000080200L, 0x200000000000L, 0x0L, 0x200020000L, 0x100560200L, 0x40201280080400L, true, 0, 0x0L), 4), 157837); - - // gentest-62 - assertEqual(perft(new Board(0x1180140000L, 0x480L, 0x40000000001004L, 0x200000000000L, 0x0L, 0x200020000L, 0x100160084L, 0x40201280001400L, false, 0, 0x0L), 4), 135981); - - // gentest-63 - assertEqual(perft(new Board(0x1180140000L, 0x480L, 0x2000000000001200L, 0x200000L, 0x0L, 0x200020000L, 0x100160280L, 0x2000001280201400L, true, 0, 0x0L), 4), 90496); - - // gentest-64 - assertEqual(perft(new Board(0x1180140000L, 0x480L, 0x2000000004000200L, 0x200000L, 0x0L, 0x200000002L, 0x100140282L, 0x2000001284200400L, false, 0, 0x0L), 4), 120416); - - // gentest-65 - assertEqual(perft(new Board(0x1100940000L, 0x480L, 0x2000000004010000L, 0x400000L, 0x0L, 0x200000002L, 0x100150082L, 0x2000001204c00400L, true, 0, 0x0L), 4), 208386); - - // gentest-66 - assertEqual(perft(new Board(0x1100940000L, 0x400400L, 0x2020080000000000L, 0x0L, 0x0L, 0x200000002L, 0x80100540002L, 0x2020001200800400L, false, 0, 0x0L), 4), 204499); - - // gentest-67 - assertEqual(perft(new Board(0x11000840000L, 0x500000L, 0x20080000000000L, 0x0L, 0x0L, 0x200000002L, 0x10000440002L, 0x20081200900000L, true, 0, 0x0L), 4), 99518); - - // gentest-68 - assertEqual(perft(new Board(0x1000840000L, 0x400400L, 0x120080000000000L, 0x0L, 0x0L, 0x200000002L, 0x100000000440002L, 0x20081200800400L, false, 0, 0x0L), 4), 202322); - - // gentest-69 - assertEqual(perft(new Board(0x1000840000L, 0x400400L, 0x100010010000L, 0x0L, 0x0L, 0x200000002L, 0x10440002L, 0x101200810400L, true, 0, 0x0L), 4), 198356); - - // gentest-70 - assertEqual(perft(new Board(0x1000840000L, 0x8000000400L, 0x100000090000L, 0x0L, 0x0L, 0x100000002L, 0x80000c0002L, 0x101100810400L, false, 0, 0x0L), 4), 163093); - - // gentest-71 - assertEqual(perft(new Board(0x1000048000L, 0x8000000000L, 0x2000010400L, 0x0L, 0x0L, 0x100000002L, 0x8000040402L, 0x3100018000L, true, 0, 0x0L), 4), 70356); - - // gentest-72 - assertEqual(perft(new Board(0x1000048000L, 0x8000000000L, 0x400000090000L, 0x0L, 0x0L, 0x100000100L, 0x80000c0100L, 0x401100018000L, false, 0, 0x0L), 4), 128257); - - // gentest-73 - assertEqual(perft(new Board(0x1000048000L, 0x8000000000L, 0x200400000000000L, 0x0L, 0x0L, 0x100000100L, 0x408000040100L, 0x200001100008000L, true, 0, 0x0L), 4), 54477); - - // gentest-74 - assertEqual(perft(new Board(0x1000048000L, 0x20000000L, 0x1200000000000000L, 0x0L, 0x0L, 0x20000000100L, 0x1000000020040100L, 0x200021000008000L, false, 0, 0x0L), 4), 84303); - - // gentest-75 - assertEqual(perft(new Board(0x10040000L, 0x20000000L, 0x1200000000000000L, 0x0L, 0x80L, 0x20000020000L, 0x1000000020060000L, 0x200020010000080L, true, 0, 0x0L), 4), 322322); - - // gentest-76 - assertEqual(perft(new Board(0x14000000L, 0x20000000L, 0x208000000000000L, 0x0L, 0x8000000000000000L, 0x20000020000L, 0x8000024020000L, 0x8200020010000000L, false, 0, 0x0L), 4), 342342); - - // gentest-77 - assertEqual(perft(new Board(0x14000000L, 0x20000000L, 0x8080000000000L, 0x0L, 0x0L, 0x20000000200L, 0x8000024000200L, 0xa0010000000L, true, 0, 0x0L), 4), 116986); - - // gentest-78 - assertEqual(perft(new Board(0x14000000L, 0x4000L, 0x8080000000000L, 0x0L, 0x0L, 0x4000000040000L, 0x8000004044000L, 0x4080010000000L, false, 0, 0x0L), 4), 62176); - - // gentest-79 - assertEqual(perft(new Board(0x14000000L, 0x4000L, 0x800040000000000L, 0x0L, 0x0L, 0x4000000040000L, 0x40004044000L, 0x804000010000000L, true, 0, 0x0L), 4), 40252); - - // gentest-80 - assertEqual(perft(new Board(0x14000000L, 0x20000000L, 0x800000001000000L, 0x0L, 0x0L, 0x80000040000L, 0x25040000L, 0x800080010000000L, false, 0, 0x0L), 4), 43315); - - // gentest-81 - assertEqual(perft(new Board(0x410000000L, 0x20000000L, 0x81000000L, 0x0L, 0x0L, 0x4000000040000L, 0x421040000L, 0x4000090000000L, true, 0, 0x0L), 4), 60640); - - // gentest-82 - assertEqual(perft(new Board(0x410000000L, 0x20000000L, 0x40080000000L, 0x0L, 0x0L, 0x800000004000000L, 0x40424000000L, 0x800000090000000L, false, 0, 0x0L), 4), 47069); - - // gentest-83 - assertEqual(perft(new Board(0x410000000L, 0x800000000L, 0x40020000000L, 0x0L, 0x0L, 0x800000004000000L, 0x40c04000000L, 0x800000030000000L, true, 0, 0x0L), 4), 54526); - - // gentest-84 - assertEqual(perft(new Board(0x410000000L, 0x100000L, 0x40000008000L, 0x0L, 0x0L, 0x800000000040000L, 0x40400140000L, 0x800000010008000L, false, 0, 0x0L), 4), 47793); - - // gentest-85 - assertEqual(perft(new Board(0x410000000L, 0x100000L, 0x1800000000L, 0x0L, 0x0L, 0x800000000040000L, 0xc00140000L, 0x800001010000000L, true, 0, 0x0L), 4), 27716); - - // gentest-86 - assertEqual(perft(new Board(0x410000000L, 0x100000L, 0x202000000000000L, 0x0L, 0x0L, 0x800000000000800L, 0x2000400100800L, 0xa00000010000000L, false, 0, 0x0L), 4), 48238); - - // gentest-87 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-88 - assertEqual(perft(new Board(0xfe00010401fa00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x401faffL, 0xfffe000100000000L, false, 0, 0x8100000000000081L), 4), 242685); - - // gentest-89 - assertEqual(perft(new Board(0xfe00010403f800L, 0x4000010000000042L, 0x2400000000000024L, 0x8001000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x403f8ffL, 0xfcff010100000000L, true, 0, 0x8000000000000081L), 4), 204573); - - // gentest-90 - assertEqual(perft(new Board(0xf6080144833800L, 0x4000010000000042L, 0x2400000000000024L, 0x8001000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x448338ffL, 0xfcf7090100000000L, false, 0, 0x8000000000000081L), 4), 284308); - - // gentest-91 - assertEqual(perft(new Board(0xd608204d833000L, 0x4000010000000042L, 0x2400000000000024L, 0x8001000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4c8330ffL, 0xfcd7092001000000L, true, 0, 0x8000000000000081L), 4), 493990); - - // gentest-92 - assertEqual(perft(new Board(0x9608604d932000L, 0x4000010000000042L, 0x2400000000000220L, 0x8001000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4c9322fbL, 0xfc97096001000000L, false, 0, 0x8000000000000081L), 4), 549873); - - // gentest-93 - assertEqual(perft(new Board(0x1688604d932000L, 0x4000010000000042L, 0x2400000000000220L, 0x8001000000000081L, 0x8000000001000L, 0x1000000000000010L, 0x4c9332f3L, 0xf41f896001000000L, true, 0, 0x8000000000000081L), 4), 417380); - - // gentest-94 - assertEqual(perft(new Board(0x16886845932000L, 0x4000000002000042L, 0xa400000000000020L, 0x1000000000081L, 0x8000000001000L, 0x1000000000000010L, 0x80000008449330f3L, 0x741f886003000000L, false, 0, 0x81L), 4), 613681); - - // gentest-95 - assertEqual(perft(new Board(0x14886a45932000L, 0x4000010000000042L, 0xa400000000000020L, 0x1000000000081L, 0x8000000000100L, 0x1000000000000010L, 0x80000008449321f3L, 0x741d896201000000L, true, 0, 0x81L), 4), 556204); - - // gentest-96 - assertEqual(perft(new Board(0x14886847932000L, 0x4000010000000042L, 0x2400000000040020L, 0x1000000000081L, 0x8000000000100L, 0x1000000000000010L, 0x8449721f3L, 0x741d896003000000L, false, 0, 0x81L), 4), 532817); - - // gentest-97 - assertEqual(perft(new Board(0x14886847932000L, 0x4000010000000042L, 0x2400000000040020L, 0x1000000000081L, 0x800000000000400L, 0x8000000000010L, 0x8449724f3L, 0x6c1d896003000000L, true, 0, 0x81L), 4), 495417); - - // gentest-98 - assertEqual(perft(new Board(0x14886847932000L, 0x4000010000001002L, 0x2400000000040020L, 0x2000000000081L, 0x800000000000800L, 0x8000000000010L, 0x8449738b3L, 0x6c1e896003000000L, false, 0, 0x81L), 4), 465740); - - // gentest-99 - assertEqual(perft(new Board(0x14886847932000L, 0x210000000042L, 0x2400000000040020L, 0x200000000000081L, 0x800000000000800L, 0x8000000000010L, 0x8449728f3L, 0x2e1ca96003000000L, true, 0, 0x81L), 4), 635387); - - // gentest-100 - assertEqual(perft(new Board(0x14886847932000L, 0x4000010000000840L, 0x2400000000040020L, 0x200000000000081L, 0x800000000080000L, 0x8000000000010L, 0x8449f28f1L, 0x6e1c896003000000L, false, 0, 0x81L), 4), 568525); - - // gentest-101 - assertEqual(perft(new Board(0x14886847932000L, 0x210000000840L, 0x2400000000040020L, 0x20000000082L, 0x800000000080000L, 0x8000000000010L, 0x8449f28f2L, 0x2c1cab6003000000L, true, 0, 0x80L), 4), 725952); - - // gentest-102 - assertEqual(perft(new Board(0x108c6845932000L, 0x210000000840L, 0x2400000002000020L, 0x20000000082L, 0x800000000080000L, 0x8000000001000L, 0x8469b38e2L, 0x2c18af6001000000L, false, 0, 0x0L), 4), 776907); - - // gentest-103 - assertEqual(perft(new Board(0x100ce845932000L, 0x210000000840L, 0x2400000002000020L, 0x20000008002L, 0x1000000000080000L, 0x8000000001000L, 0x8469bb862L, 0x34182fe001000000L, true, 0, 0x0L), 4), 914591); - - // gentest-104 - assertEqual(perft(new Board(0x100cc845932000L, 0x210000000840L, 0x2400000002000020L, 0x20000008001L, 0x1000002000000000L, 0x4000000001000L, 0x284693b861L, 0x34142fc001000000L, false, 0, 0x0L), 4), 1698889); - - // gentest-105 - assertEqual(perft(new Board(0x100cc845932000L, 0x210000000840L, 0x400800002000020L, 0x20000008001L, 0x1000400000000000L, 0x800000000001000L, 0x40084693b861L, 0x1c10afc001000000L, true, 0, 0x0L), 4), 1957673); - - // gentest-106 - assertEqual(perft(new Board(0x100cc845932000L, 0x200400200800L, 0x400800002000020L, 0x20000008004L, 0x1000400000000000L, 0x800000000001000L, 0x400846b3b824L, 0x1c10aec401000000L, false, 0, 0x0L), 4), 2356499); - - // gentest-107 - assertEqual(perft(new Board(0x100cc845932000L, 0x4000000200800L, 0x400800002000020L, 0x20000008004L, 0x1000200000000000L, 0x800000000001000L, 0x200846b3b824L, 0x1c148ec001000000L, true, 0, 0x0L), 4), 1846425); - - // gentest-108 - assertEqual(perft(new Board(0x1008cc45932000L, 0x4000000200800L, 0x400800002000020L, 0x20000008004L, 0x9000000000000000L, 0x800000000001000L, 0x8000000846b3b824L, 0x1c148ac401000000L, false, 0, 0x0L), 4), 1166929); - - // gentest-109 - assertEqual(perft(new Board(0x1008c847932000L, 0x4000000200800L, 0x400800000000020L, 0x10000004004L, 0x9000000000000000L, 0x800000000001000L, 0x8000000844b37824L, 0x1c1489c003000000L, true, 0, 0x0L), 4), 1086397); - - // gentest-110 - assertEqual(perft(new Board(0x1008c847932000L, 0x4000000200800L, 0x802000000020L, 0x10000000044L, 0x3000000000000000L, 0x800000000001000L, 0x2000000844b33864L, 0x181489e003000000L, false, 0, 0x0L), 4), 1011703); - - // gentest-111 - assertEqual(perft(new Board(0x1008c847932000L, 0x100000000000810L, 0x802000000020L, 0x10000000044L, 0x3000000000000000L, 0x400000000001000L, 0x2000000844933874L, 0x151089e003000000L, true, 0, 0x0L), 4), 1077115); - - // gentest-112 - assertEqual(perft(new Board(0x8c847932000L, 0x100000010000010L, 0x802000000020L, 0x100000044L, 0x1010000000000000L, 0x400000000001000L, 0x10000854933074L, 0x150088e103000000L, false, 0, 0x0L), 4), 1522310); - - // gentest-113 - assertEqual(perft(new Board(0x8c865930000L, 0x100000010000010L, 0x802000000020L, 0x100000044L, 0x810000000000000L, 0x400000000001000L, 0x10000874921074L, 0xd0088e101010000L, true, 0, 0x0L), 4), 1564035); - - // gentest-114 - assertEqual(perft(new Board(0x8c867910000L, 0x20400000010L, 0x802000000020L, 0x100000044L, 0x810000000000000L, 0x400000000001000L, 0x10000c66901074L, 0xc008ae101010000L, false, 0, 0x0L), 4), 1829511); - - // gentest-115 - assertEqual(perft(new Board(0x848e7910000L, 0x120000000010L, 0x802000000020L, 0x200000044L, 0x810000000000000L, 0x400000000001000L, 0x10100866901074L, 0xc008a6281010000L, true, 0, 0x0L), 4), 1063673); - - // gentest-116 - assertEqual(perft(new Board(0x848e7910000L, 0x120000000010L, 0x802000000020L, 0x200000041L, 0x800000000000000L, 0x8000000001000L, 0x100866901071L, 0x8088a6281010000L, false, 0, 0x0L), 4), 777314); - - // gentest-117 - assertEqual(perft(new Board(0x848e7900100L, 0x100100000000010L, 0x802000004000L, 0x200000041L, 0x800000000000000L, 0x8000000001000L, 0x100866905051L, 0x908886281000100L, true, 0, 0x0L), 4), 913433); - - // gentest-118 - assertEqual(perft(new Board(0x848f7800100L, 0x100100000000400L, 0x2000002000004000L, 0x200000041L, 0x800000000000000L, 0x8000000001000L, 0x100876805441L, 0x2908086281000100L, false, 0, 0x0L), 4), 1183963); - - // gentest-119 - assertEqual(perft(new Board(0x848f7800100L, 0x100000400000400L, 0x802000004000L, 0x200000041L, 0x800000000000000L, 0x400000000001000L, 0xc76805441L, 0xd00886281000100L, true, 0, 0x0L), 4), 1394054); - - // gentest-120 - assertEqual(perft(new Board(0x848f7800100L, 0x100100000000400L, 0x2000002000004000L, 0x200000048L, 0x800000000000000L, 0x400000000001000L, 0x100876805448L, 0x2d00086281000100L, false, 0, 0x0L), 4), 1463252); - - // gentest-121 - assertEqual(perft(new Board(0x848f7800100L, 0x4100000000400L, 0x2000002000000080L, 0x200000048L, 0x200000000000L, 0x400000000001000L, 0x1008768014c8L, 0x2404286281000100L, true, 0, 0x0L), 4), 2271336); - - // gentest-122 - assertEqual(perft(new Board(0x848f7800100L, 0x804000000000400L, 0x2000002000000080L, 0x200000000000048L, 0x200000000000L, 0x400000000002000L, 0x8000008768024c8L, 0x2604286081000100L, false, 0, 0x0L), 4), 1746961); - - // gentest-123 - assertEqual(perft(new Board(0x848f5800100L, 0x804000000010000L, 0x2000002000000080L, 0x2000048L, 0x1000000000L, 0x400000000002000L, 0x8000008748120c8L, 0x2404087083000100L, true, 0, 0x0L), 4), 1688989); - - // gentest-124 - assertEqual(perft(new Board(0x848e5800100L, 0x804000000000400L, 0x2000002000000080L, 0x2000840L, 0x10000000L, 0x400000000002000L, 0x800000864802cc0L, 0x2404086093000100L, false, 0, 0x0L), 4), 1477788); - - // gentest-125 - assertEqual(perft(new Board(0x848e5800100L, 0x1800000000000400L, 0x2000002000000080L, 0x2000840L, 0x0L, 0x400000000100000L, 0x800000864900cc0L, 0x3400086083000100L, true, 0, 0x0L), 4), 1055159); - - // gentest-126 - assertEqual(perft(new Board(0x848e5800000L, 0x1000000002000400L, 0x2000002000000081L, 0x840L, 0x0L, 0x400000000100000L, 0x866900cc0L, 0x3400086081000001L, false, 0, 0x0L), 4), 677190); - - // gentest-127 - assertEqual(perft(new Board(0x848e5800000L, 0x1000000000080400L, 0x2000003000000080L, 0x840L, 0x0L, 0x200000000100000L, 0x864980cc0L, 0x3200087081000000L, true, 0, 0x0L), 4), 799546); - - // gentest-128 - assertEqual(perft(new Board(0x848e5800000L, 0x1000000000002010L, 0x2400001000000080L, 0x840L, 0x0L, 0x200000000100000L, 0x8649028d0L, 0x3600085081000000L, false, 0, 0x0L), 4), 415339); - - // gentest-129 - assertEqual(perft(new Board(0x868c5800000L, 0x1000000000002010L, 0x2400800000000080L, 0x840L, 0x0L, 0x200000000100000L, 0x28449028d0L, 0x3600884081000000L, true, 0, 0x0L), 4), 192816); - - // gentest-130 - assertEqual(perft(new Board(0x868c5800000L, 0x200000002010L, 0x2400800010000000L, 0x440L, 0x0L, 0x200000000100000L, 0x2854902450L, 0x2600a84081000000L, false, 0, 0x0L), 4), 255650); - - // gentest-131 - assertEqual(perft(new Board(0x868c5800000L, 0x4000000000002010L, 0x2400800000080000L, 0x440L, 0x0L, 0x2000000100000L, 0x2844982450L, 0x6402884081000000L, true, 0, 0x0L), 4), 157288); - - // gentest-132 - assertEqual(perft(new Board(0x868c5800000L, 0x4000000000002010L, 0x2440000000000002L, 0x1040L, 0x0L, 0x2000000100000L, 0x2844903052L, 0x6442084081000000L, false, 0, 0x0L), 4), 317430); - - // gentest-133 - assertEqual(perft(new Board(0x868c5800000L, 0x4000000000000018L, 0x2440000000000002L, 0x1040L, 0x0L, 0x2000000100000L, 0x284490105aL, 0x6442084081000000L, true, 0, 0x0L), 4), 385647); - - // gentest-134 - assertEqual(perft(new Board(0x868c4810000L, 0x4000000000000018L, 0x2440000000000002L, 0x1040L, 0x0L, 0x2000000100000L, 0x284490105aL, 0x6442084080010000L, false, 0, 0x0L), 4), 388284); - - // gentest-135 - assertEqual(perft(new Board(0x868c4810000L, 0x4000000000000018L, 0x450000000000002L, 0x2040L, 0x0L, 0x100000000100000L, 0x284490205aL, 0x4550084080010000L, true, 0, 0x0L), 4), 442218); - - // gentest-136 - assertEqual(perft(new Board(0x868c4810000L, 0x4000000000040010L, 0x50100000000002L, 0x20000040L, 0x0L, 0x100000000100000L, 0x2864940052L, 0x4150184080010000L, false, 0, 0x0L), 4), 420458); - - // gentest-137 - assertEqual(perft(new Board(0x868c4810000L, 0x4000000000240000L, 0x10101000000002L, 0x20000040L, 0x0L, 0x100000000100000L, 0x2864b40042L, 0x4110185080010000L, true, 0, 0x0L), 4), 494428); - - // gentest-138 - assertEqual(perft(new Board(0x86cc0810000L, 0x4000000000240000L, 0x10101000000002L, 0x8000040L, 0x0L, 0x2000000100000L, 0x2c48b40042L, 0x4012185080010000L, false, 0, 0x0L), 4), 801728); - - // gentest-139 - assertEqual(perft(new Board(0x6cc0810000L, 0x4000000000200008L, 0x800101000000002L, 0x8000040L, 0x0L, 0x2000000100000L, 0x2848b0004aL, 0x4802105480010000L, true, 0, 0x0L), 4), 1007127); - - // gentest-140 - assertEqual(perft(new Board(0x6440810000L, 0x4000000080000008L, 0x800001800000002L, 0x4000040L, 0x0L, 0x2000000100000L, 0x20c490004aL, 0x4802005c00010000L, false, 0, 0x0L), 4), 1024337); - - // gentest-141 - assertEqual(perft(new Board(0x24c0810000L, 0x4000000000000008L, 0x1900000002L, 0x4004000L, 0x0L, 0x2000000100000L, 0x204490400aL, 0x4002001d80010000L, true, 0, 0x0L), 4), 1018724); - - // gentest-142 - assertEqual(perft(new Board(0x24c0810000L, 0x4000000000000008L, 0x21800000002L, 0xc000000L, 0x0L, 0x2000000100000L, 0x204c90000aL, 0x4002021c80010000L, false, 0, 0x0L), 4), 626245); - - // gentest-143 - assertEqual(perft(new Board(0x24c0810000L, 0x4000000000000008L, 0x21000000102L, 0x9000000L, 0x0L, 0x200000000100000L, 0x204990000aL, 0x4200021480010100L, true, 0, 0x0L), 4), 578656); - - // gentest-144 - assertEqual(perft(new Board(0x24c0810000L, 0x4000000000000008L, 0x1001000080100L, 0x9000000L, 0x0L, 0x200000000100000L, 0x2049980008L, 0x4201001480010100L, false, 0, 0x0L), 4), 461885); - - // gentest-145 - assertEqual(perft(new Board(0x20c8810000L, 0x4000000000000008L, 0x1001000080100L, 0x1000000L, 0x0L, 0x4000000001000L, 0x2041881008L, 0x4005001088010100L, true, 0, 0x0L), 4), 360665); - - // gentest-146 - assertEqual(perft(new Board(0x2000c8800000L, 0x4000000000000008L, 0x1001000080100L, 0x10000L, 0x0L, 0x2000000001000L, 0x200040891008L, 0x4003001088000100L, false, 0, 0x0L), 4), 424101); - - // gentest-147 - assertEqual(perft(new Board(0x2000c8800000L, 0x4000000000002000L, 0x1000000480100L, 0x10000L, 0x0L, 0x100000000001000L, 0x200040893000L, 0x4101000088400100L, true, 0, 0x0L), 4), 226618); - - // gentest-148 - assertEqual(perft(new Board(0x2000c8800000L, 0x4000000000002000L, 0x1000000400102L, 0x200000L, 0x0L, 0x200000000001000L, 0x200040a03002L, 0x4201000088400100L, false, 0, 0x0L), 4), 281430); - - // gentest-149 - assertEqual(perft(new Board(0x2000c8800000L, 0x4000000000002000L, 0x1000820000002L, 0x400000L, 0x0L, 0x200000000001000L, 0x200040c03002L, 0x42010008a8000000L, true, 0, 0x0L), 4), 487323); - - // gentest-150 - assertEqual(perft(new Board(0x2000c8800000L, 0x10000010000000L, 0x1000820000002L, 0x400000L, 0x0L, 0x200000000080000L, 0x200050c80002L, 0x2110008a8000000L, false, 0, 0x0L), 4), 261280); - - // gentest-151 - assertEqual(perft(new Board(0x200048c00000L, 0x10000400000000L, 0x1000820000002L, 0x0L, 0x0L, 0x400000000080000L, 0x200440880002L, 0x411000828400000L, true, 0, 0x0L), 4), 228853); - - // gentest-152 - assertEqual(perft(new Board(0x200048800000L, 0x10000000400000L, 0xc20000002L, 0x0L, 0x0L, 0x400000000080000L, 0x200040c80002L, 0x410000c28000000L, false, 0, 0x0L), 4), 252394); - - // gentest-153 - assertEqual(perft(new Board(0x200048800000L, 0x10000000001000L, 0x4802000002L, 0x0L, 0x0L, 0x400000000080000L, 0x200040881002L, 0x41000480a000000L, true, 0, 0x0L), 4), 204517); - - // gentest-154 - assertEqual(perft(new Board(0x100000c8000000L, 0x1000L, 0x4c00000002L, 0x0L, 0x0L, 0x400000000080000L, 0x100000c0081002L, 0x400004c08000000L, false, 0, 0x0L), 4), 187665); - - // gentest-155 - assertEqual(perft(new Board(0x100000c8000000L, 0x1000L, 0x4000014100L, 0x0L, 0x0L, 0x400000000080000L, 0x100000c0081100L, 0x400004008014000L, true, 0, 0x0L), 4), 253977); - - // gentest-156 - assertEqual(perft(new Board(0xc8000000L, 0x1000L, 0x800000004014000L, 0x1000000000000000L, 0x0L, 0x400000000080000L, 0x10000000c4081000L, 0xc00000008014000L, false, 0, 0x0L), 4), 268014); - - // gentest-157 - assertEqual(perft(new Board(0xc8000000L, 0x1000L, 0x2800010000004000L, 0x1000000000000000L, 0x0L, 0x200000000080000L, 0x10000100c0081000L, 0x2a00000008004000L, true, 0, 0x0L), 4), 222543); - - // gentest-158 - assertEqual(perft(new Board(0xc8000000L, 0x40000L, 0x800010000004000L, 0x2000000000000000L, 0x0L, 0x1000000080000L, 0x20000100c00c0000L, 0x801000008004000L, false, 0, 0x0L), 4), 269977); - - // gentest-159 - assertEqual(perft(new Board(0xc8000000L, 0x1000000L, 0x4000004000L, 0x2000000000000000L, 0x0L, 0x10000080000L, 0x20000000c1080000L, 0x14008004000L, true, 0, 0x0L), 4), 179032); - - // gentest-160 - assertEqual(perft(new Board(0xc8000000L, 0x1000000L, 0x20004000L, 0x8000000000L, 0x0L, 0x10000080000L, 0x80c1080000L, 0x10028004000L, false, 0, 0x0L), 4), 126337); - - // gentest-161 - assertEqual(perft(new Board(0xc8000000L, 0x1000000L, 0x400020L, 0x400000000L, 0x0L, 0x10000080000L, 0x4c1080000L, 0x10008400020L, true, 0, 0x0L), 4), 24579); - - // gentest-162 - assertEqual(perft(new Board(0xc0000000L, 0x1000000L, 0x80000000020L, 0x400000000L, 0x0L, 0x10000040000L, 0x4c1040000L, 0x90000000020L, false, 0, 0x0L), 4), 110536); - - // gentest-163 - assertEqual(perft(new Board(0xc0000000L, 0x1000000L, 0x20L, 0x4000000000000L, 0x0L, 0x100040000L, 0x40000c1040000L, 0x100000020L, true, 0, 0x0L), 4), 41007); - - // gentest-164 - assertEqual(perft(new Board(0xc0000000L, 0x1000000L, 0x10000000000L, 0x80000000000000L, 0x0L, 0x100040000L, 0x800000c1040000L, 0x10100000000L, false, 0, 0x0L), 4), 36864); - - // gentest-165 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80000L, 0x40000000000000L, 0x0L, 0x1040000L, 0x400000c0040000L, 0x1080000L, true, 0, 0x0L), 4), 39090); - - // gentest-166 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80000L, 0x8000000000000L, 0x0L, 0x200000200L, 0x80000c0000200L, 0x200080000L, false, 0, 0x0L), 4), 98651); - - // gentest-167 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80000L, 0x8000000L, 0x0L, 0x200000200L, 0xc8000200L, 0x200080000L, true, 0, 0x0L), 4), 53654); - - // gentest-168 - assertEqual(perft(new Board(0x4080000000L, 0x0L, 0x4000000L, 0x1000000L, 0x0L, 0x200000200L, 0x4081000200L, 0x204000000L, false, 0, 0x0L), 4), 58314); - - // gentest-169 - assertEqual(perft(new Board(0x400080000000L, 0x0L, 0x4000000L, 0x0L, 0x0L, 0x2000200L, 0x400080000200L, 0x6000000L, true, 0, 0x0L), 4), 10016); - - // gentest-170 - assertEqual(perft(new Board(0x400080000000L, 0x0L, 0x4000000L, 0x0L, 0x0L, 0x40008L, 0x400080000008L, 0x4040000L, false, 0, 0x0L), 4), 6579); - - // gentest-171 - assertEqual(perft(new Board(0x408000000000L, 0x0L, 0x100000000000L, 0x0L, 0x0L, 0x80008L, 0x408000000008L, 0x100000080000L, true, 0, 0x0L), 4), 5458); - - // gentest-172 - assertEqual(perft(new Board(0x80400000000000L, 0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x80008L, 0x80400000000008L, 0x20000000080000L, false, 0, 0x0L), 4), 15092); - - // gentest-173 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-174 - assertEqual(perft(new Board(0xdf00200401fa00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x401faffL, 0xffdf002000000000L, false, 0, 0x8100000000000081L), 4), 221495); - - // gentest-175 - assertEqual(perft(new Board(0xdf00002500fa00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x500faffL, 0xbfdf200020000000L, true, 0, 0x8100000000000081L), 4), 307209); - - // gentest-176 - assertEqual(perft(new Board(0xd700082508f200L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x800000000000008L, 0x1000000000000010L, 0x509f2feL, 0xbfd7200820000000L, false, 0, 0x8100000000000080L), 4), 880242); - - // gentest-177 - assertEqual(perft(new Board(0x87005825887200L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x800000000000008L, 0x1000000000000010L, 0x58972feL, 0xbf87205820000000L, true, 0, 0x8100000000000080L), 4), 1166930); - - // gentest-178 - assertEqual(perft(new Board(0x87005825887200L, 0x200200000000042L, 0x2400000000100020L, 0x8100000000010080L, 0x800000000000800L, 0x20000000000010L, 0x5997af2L, 0xafa7205820000000L, false, 0, 0x80L), 4), 1756740); - - // gentest-179 - assertEqual(perft(new Board(0x700d825087200L, 0x200200000000042L, 0x2000020000800020L, 0x8100000000010080L, 0x800000000000800L, 0x20000000000010L, 0x20005097af2L, 0xab2720d820800000L, true, 0, 0x80L), 4), 2688254); - - // gentest-180 - assertEqual(perft(new Board(0x700d8250a7000L, 0x200200000000042L, 0x20002800020L, 0x8100000000000180L, 0x800000000000800L, 0x20000000000010L, 0x200050a79f2L, 0x8b2720d822800000L, false, 0, 0x80L), 4), 2361793); - - // gentest-181 - assertEqual(perft(new Board(0x700d0210a7000L, 0x200200000000042L, 0x20002800020L, 0x8100000000000180L, 0x800000800L, 0x20000000000010L, 0x200010a79f2L, 0x832720d822800000L, true, 0, 0x80L), 4), 2552421); - - // gentest-182 - assertEqual(perft(new Board(0x300d0210a7000L, 0x200000000042L, 0x200000002800020L, 0x8100000000000180L, 0x800000800L, 0x40000000000010L, 0x2000000010a79f2L, 0x814320d822800000L, false, 0, 0x80L), 4), 2325605); - - // gentest-183 - assertEqual(perft(new Board(0x30090610a7000L, 0x200000800002L, 0x200000002000020L, 0x8100000000000180L, 0x100000800L, 0x40000000000010L, 0x2000000018a79b2L, 0x8143209162000000L, true, 0, 0x80L), 4), 1067873); - - // gentest-184 - assertEqual(perft(new Board(0x30090610a7000L, 0x200000800002L, 0x80002000020L, 0x8100000000000280L, 0x100000800L, 0x20000000000010L, 0x800018a7ab2L, 0x8123209162000000L, false, 0, 0x80L), 4), 1207848); - - // gentest-185 - assertEqual(perft(new Board(0x30090610a7000L, 0x840002L, 0x80002000020L, 0x8100000000000240L, 0x100000800L, 0x20000000000010L, 0x800018a7a72L, 0x8123009162040000L, true, 0, 0x0L), 4), 1159671); - - // gentest-186 - assertEqual(perft(new Board(0x30090610a7000L, 0x840002L, 0x402000020L, 0x180000000000240L, 0x100100000L, 0x20000000000010L, 0x4019a7272L, 0x1a3009162040000L, false, 0, 0x0L), 4), 1034200); - - // gentest-187 - assertEqual(perft(new Board(0x10290610a7000L, 0x840002L, 0x402000020L, 0x180000000000280L, 0x100100000L, 0x200000000010L, 0x4019a72b2L, 0x181229162040000L, true, 0, 0x0L), 4), 1127423); - - // gentest-188 - assertEqual(perft(new Board(0x10290610a7000L, 0x840002L, 0x10000002000020L, 0x180000000000280L, 0x100100000L, 0x400000000800L, 0x100000019a7aa2L, 0x181429162040000L, false, 0, 0x0L), 4), 1073189); - - // gentest-189 - assertEqual(perft(new Board(0x10290610a7000L, 0x840002L, 0x2000020L, 0x2080000000000280L, 0x100100000L, 0x200000000800L, 0x39a7aa2L, 0x2081229160040000L, true, 0, 0x0L), 4), 1191780); - - // gentest-190 - assertEqual(perft(new Board(0x10090611a6000L, 0x840002L, 0x2000020L, 0x2080000000000280L, 0x20100000000L, 0x2000000800L, 0x200039a6aa2L, 0x208100b160040000L, false, 0, 0x0L), 4), 1992851); - - // gentest-191 - assertEqual(perft(new Board(0x10090611a6000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x20100000000L, 0x2000000400L, 0x200039a66a2L, 0x202100b160040000L, true, 0, 0x0L), 4), 1834477); - - // gentest-192 - assertEqual(perft(new Board(0x10010e11a6000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x1000000100000000L, 0x2000000400L, 0x10000000039a66a2L, 0x20210031e0040000L, false, 0, 0x0L), 4), 1423025); - - // gentest-193 - assertEqual(perft(new Board(0x10010c13a4000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x1004000000000000L, 0x2000000400L, 0x1000000003aa46a2L, 0x20250030c0140000L, true, 0, 0x0L), 4), 1153685); - - // gentest-194 - assertEqual(perft(new Board(0x10010c13a4000L, 0x840002L, 0x2000020L, 0x2020000000000240L, 0xc000000000000L, 0x200000000400L, 0x8000003aa4662L, 0x20252010c0140000L, false, 0, 0x0L), 4), 1189959); - - // gentest-195 - assertEqual(perft(new Board(0x11c13a4000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x9000000000000L, 0x200000000400L, 0x8000003aa46a2L, 0x20212011c0140000L, true, 0, 0x0L), 4), 1370682); - - // gentest-196 - assertEqual(perft(new Board(0x11c13a4000L, 0x840800L, 0x2000020L, 0x1020000000000280L, 0x1000008000000L, 0x200000000400L, 0xbaa4ea0L, 0x10212011c0140000L, false, 0, 0x0L), 4), 2166254); - - // gentest-197 - assertEqual(perft(new Board(0x11817a0000L, 0x840800L, 0x2000020L, 0x1020000000000280L, 0x20008000000L, 0x200000000400L, 0xbca0ea0L, 0x1020221180340000L, true, 0, 0x0L), 4), 2157199); - - // gentest-198 - assertEqual(perft(new Board(0x11817a0000L, 0x840800L, 0x4000L, 0x30000000000280L, 0x20008000000L, 0x200000000400L, 0x9ca4e80L, 0x30221180340000L, false, 0, 0x0L), 4), 2105288); - - // gentest-199 - assertEqual(perft(new Board(0x11817a0000L, 0x840800L, 0x4000L, 0x88000000000240L, 0x20008000000L, 0x200000000400L, 0x9ca4e40L, 0x88221180340000L, true, 0, 0x0L), 4), 2460084); - - // gentest-200 - assertEqual(perft(new Board(0x1183780000L, 0x840800L, 0x4000L, 0x880000000000202L, 0x20008000000L, 0x200000000400L, 0xbc84e02L, 0x880221180340000L, false, 0, 0x0L), 4), 3835695); - - // gentest-201 - assertEqual(perft(new Board(0x1183780000L, 0x40840L, 0x4000L, 0x880000000000202L, 0x10008000000L, 0x200000000400L, 0xb484e42L, 0x880211180340000L, true, 0, 0x0L), 4), 3155675); - - // gentest-202 - assertEqual(perft(new Board(0x11c3380000L, 0x40840L, 0x4000L, 0x80000008000202L, 0x10000000000L, 0x200000020000L, 0x430a4a42L, 0x80211188340000L, false, 0, 0x0L), 4), 1298865); - - // gentest-203 - assertEqual(perft(new Board(0x1d3380000L, 0x40840L, 0x4000L, 0x8008000102L, 0x10000000000L, 0x200000020000L, 0x430a4942L, 0x218198340000L, true, 0, 0x0L), 4), 1585324); - - // gentest-204 - assertEqual(perft(new Board(0x153180000L, 0x80040800L, 0x4000L, 0x4008000102L, 0x10000000000L, 0x200000020000L, 0xc30a4902L, 0x214118140000L, false, 0, 0x0L), 4), 1450959); - - // gentest-205 - assertEqual(perft(new Board(0x153081000L, 0x240800L, 0x4000L, 0x4008000102L, 0x1000000000000L, 0x200000020000L, 0x432a4902L, 0x1204118041000L, true, 0, 0x0L), 4), 1979363); - - // gentest-206 - assertEqual(perft(new Board(0x153081000L, 0x812L, 0x4000L, 0x4008000400L, 0x1000000000000L, 0x200000020000L, 0x430a4c10L, 0x1204118001002L, false, 0, 0x0L), 4), 889038); - - // gentest-207 - assertEqual(perft(new Board(0x153081000L, 0x200012L, 0x4000L, 0x8800000400L, 0x1000000000000L, 0x200000020000L, 0x432a4410L, 0x1208910001002L, true, 0, 0x0L), 4), 1514645); - - // gentest-208 - assertEqual(perft(new Board(0x153081000L, 0x850L, 0x4000L, 0x8800000400L, 0x1000000000000L, 0x200000040000L, 0x430c4450L, 0x1208910001800L, false, 0, 0x0L), 4), 823315); - - // gentest-209 - assertEqual(perft(new Board(0x153081000L, 0x850L, 0x800000L, 0x8008400L, 0x1000000000000L, 0x200000040000L, 0x438c0450L, 0x1200118009800L, true, 0, 0x0L), 4), 366670); - - // gentest-210 - assertEqual(perft(new Board(0x153081000L, 0x200040L, 0x800000L, 0x8008400L, 0x400000000L, 0x200000000800L, 0x43a80c40L, 0x200518009000L, false, 0, 0x0L), 4), 566531); - - // gentest-211 - assertEqual(perft(new Board(0x153081000L, 0x1000000040L, 0x0L, 0x8008000400L, 0x400000000L, 0x200000000800L, 0x1043080c40L, 0x208518001000L, true, 0, 0x0L), 4), 753644); - - // gentest-212 - assertEqual(perft(new Board(0x153081000L, 0x5000000000L, 0x0L, 0x8000480L, 0x400000000L, 0x200000000800L, 0x5043080c00L, 0x200518001080L, false, 0, 0x0L), 4), 744017); - - // gentest-213 - assertEqual(perft(new Board(0x53081000L, 0x80001000000000L, 0x0L, 0x8000480L, 0x400000000L, 0x40000000000800L, 0x80001041080c00L, 0x4000041a001080L, true, 0, 0x0L), 4), 656842); - - // gentest-214 - assertEqual(perft(new Board(0x53081000L, 0x80000000200000L, 0x0L, 0x8040002L, 0x400000000L, 0x40000000000800L, 0x800000412c0800L, 0x4000041a001002L, false, 0, 0x0L), 4), 670900); - - // gentest-215 - assertEqual(perft(new Board(0x13081000L, 0x80000000200000L, 0x0L, 0x8040002L, 0x4000000000L, 0x40000000000800L, 0x800000012c0800L, 0x4000401a001002L, true, 0, 0x0L), 4), 103116); - - // gentest-216 - assertEqual(perft(new Board(0x13080000L, 0x4000200000L, 0x0L, 0x8040002L, 0x400000000L, 0x40000000001000L, 0x40012c1000L, 0x4000041a000002L, false, 0, 0x0L), 4), 740651); - - // gentest-217 - assertEqual(perft(new Board(0x13080000L, 0x4000200000L, 0x0L, 0x800000000040002L, 0x4000000L, 0x40000000002000L, 0x40012c2000L, 0x840000016000002L, true, 0, 0x0L), 4), 988061); - - // gentest-218 - assertEqual(perft(new Board(0x13080000L, 0x4080000000L, 0x0L, 0x800000000040002L, 0x8000000L, 0x40000000004000L, 0x40810c4000L, 0x84000001a000002L, false, 0, 0x0L), 4), 703958); - - // gentest-219 - assertEqual(perft(new Board(0x13080000L, 0x100080000000L, 0x0L, 0x800000000040002L, 0x800000000L, 0x20000000004000L, 0x1000810c4000L, 0x820000812000002L, true, 0, 0x0L), 4), 983771); - - // gentest-220 - assertEqual(perft(new Board(0x110a0000L, 0x500000000000L, 0x0L, 0x800000004000002L, 0x800000000L, 0x20000000004000L, 0x500005084000L, 0x820000810020002L, false, 0, 0x0L), 4), 930928); - - // gentest-221 - assertEqual(perft(new Board(0x110a0000L, 0x500000000000L, 0x0L, 0x804000002L, 0x4000000000L, 0x20000000008000L, 0x500005088000L, 0x20004810020002L, true, 0, 0x0L), 4), 723494); - - // gentest-222 - assertEqual(perft(new Board(0x110a0000L, 0x40000020000000L, 0x0L, 0x804000002L, 0x1000000000L, 0x20000000008000L, 0x40000025088000L, 0x20001810020002L, false, 0, 0x0L), 4), 593298); - - // gentest-223 - assertEqual(perft(new Board(0x110a0000L, 0x20000000L, 0x0L, 0x4000800000002L, 0x40000000000000L, 0x2000000000008000L, 0x4000021088000L, 0x2040000810020002L, true, 0, 0x0L), 4), 580215); - - // gentest-224 - assertEqual(perft(new Board(0x110a0000L, 0x4000L, 0x0L, 0x10002000000002L, 0x40000000000000L, 0x2000000000008000L, 0x1000000108c000L, 0x2040002010020002L, false, 0, 0x0L), 4), 343776); - - // gentest-225 - assertEqual(perft(new Board(0x110a0000L, 0x0L, 0x0L, 0x10000080000002L, 0x40000000000000L, 0x2000000000008000L, 0x10000001088000L, 0x2040000090020002L, true, 0, 0x0L), 4), 0); - - // gentest-226 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-227 - assertEqual(perft(new Board(0x7f800080007f00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80807fbfL, 0xff7f800000000000L, false, 0, 0x8100000000000081L), 4), 213604); - - // gentest-228 - assertEqual(perft(new Board(0x5e812080007f00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000041L, 0x800000000000008L, 0x1000000000000010L, 0x80807f7fL, 0xff5e812000000000L, true, 0, 0x8100000000000001L), 4), 165912); - - // gentest-229 - assertEqual(perft(new Board(0x5a812480047b00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80847bbfL, 0xff5a812400000000L, false, 0, 0x8100000000000001L), 4), 264849); - - // gentest-230 - assertEqual(perft(new Board(0x4a902580245b00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80a45bbfL, 0xff4a902500000000L, true, 0, 0x8100000000000001L), 4), 482676); - - // gentest-231 - assertEqual(perft(new Board(0x429825802c5300L, 0x4200000000800800L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80ac5bbdL, 0xff42982500000000L, false, 0, 0x8100000000000001L), 4), 638663); - - // gentest-232 - assertEqual(perft(new Board(0x429825902c4300L, 0x4000040000800800L, 0x2400000000000024L, 0x8100000000000081L, 0x4000000000008L, 0x1000000000000010L, 0x90ac4bbdL, 0xf5469c2500000000L, true, 0, 0x8100000000000001L), 4), 1053636); - - // gentest-233 - assertEqual(perft(new Board(0x429825902c4300L, 0x10040000800800L, 0x2400000000001004L, 0x8100000000000081L, 0x4000000000008L, 0x1000000000000020L, 0x90ac5badL, 0xb5569c2500000000L, false, 0, 0x8100000000000000L), 4), 930788); - - // gentest-234 - assertEqual(perft(new Board(0x429824912c4300L, 0x10040020000800L, 0x2400000000001004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000020L, 0xb02c5badL, 0xbd529c2401000000L, true, 0, 0x8100000000000000L), 4), 904102); - - // gentest-235 - assertEqual(perft(new Board(0x429824902c4300L, 0x10040000800800L, 0x2008000000001004L, 0x8100000000000081L, 0x800000001000000L, 0x1000000000000020L, 0x91ac5ba5L, 0xb95a9c2400000000L, false, 0, 0x8100000000000000L), 4), 1642686); - - // gentest-236 - assertEqual(perft(new Board(0x29864902c4300L, 0x10040000800800L, 0x2008000000001004L, 0x8100000000000081L, 0x800000004000000L, 0x20000000000020L, 0x94ac5ba5L, 0xa93a9c6400000000L, true, 0, 0x0L), 4), 1883115); - - // gentest-237 - assertEqual(perft(new Board(0x29864902c4300L, 0x10040020000800L, 0x200800000000000cL, 0x8100000000000081L, 0x20004000000L, 0x20000000000020L, 0xb42c4badL, 0xa13a9e6400000000L, false, 0, 0x0L), 4), 2963978); - - // gentest-238 - assertEqual(perft(new Board(0x29864902c4300L, 0x40820020000L, 0x200800000000000cL, 0x8100000000000081L, 0x20004000000L, 0x1000000000000020L, 0xb42e43adL, 0xb10a9e6c00000000L, true, 0, 0x0L), 4), 2979618); - - // gentest-239 - assertEqual(perft(new Board(0x29864902d4200L, 0x40002021000L, 0x200800000000000cL, 0x8100000000000081L, 0x20004000000L, 0x1000000000000020L, 0x942f52adL, 0xb10a9e6402000000L, false, 0, 0x0L), 4), 2469594); - - // gentest-240 - assertEqual(perft(new Board(0x29864902d4200L, 0x200000102001000L, 0x200800000000000cL, 0x8800000000000081L, 0x20004000000L, 0x1000000000000020L, 0x1942d52adL, 0xba0a9a6402000000L, true, 0, 0x0L), 4), 1827435); - - // gentest-241 - assertEqual(perft(new Board(0x29844902d4200L, 0x210000002001000L, 0x200800000000000cL, 0x8800000000000081L, 0x20004000000L, 0x1000000000000020L, 0x100000842d52adL, 0xba0a9a4412000000L, false, 0, 0x0L), 4), 2304898); - - // gentest-242 - assertEqual(perft(new Board(0x29844902d4200L, 0x210000002001000L, 0x200800000000000cL, 0x4800000000000081L, 0x100020000L, 0x1000000000000020L, 0x100000802f52adL, 0x7a0a984512000000L, true, 0, 0x0L), 4), 2472800); - - // gentest-243 - assertEqual(perft(new Board(0x9846900d4200L, 0x210000002001000L, 0x200800000000000cL, 0x4800000000000081L, 0x104000000L, 0x1000000000000020L, 0x100000940d52adL, 0x7a08984702000000L, false, 0, 0x0L), 4), 1749150); - - // gentest-244 - assertEqual(perft(new Board(0x9846900d4200L, 0x210020000001000L, 0x200800000000000cL, 0x4800000000000082L, 0x104000000L, 0x1000000000000020L, 0x100000940d52aeL, 0x7a089a4700000000L, true, 0, 0x0L), 4), 1707683); - - // gentest-245 - assertEqual(perft(new Board(0x9846900f4000L, 0x210020000001000L, 0x200800000000000cL, 0x4800000000000082L, 0x1000001000000L, 0x1000000000000020L, 0x100000910f50aeL, 0x7a099a4600000000L, false, 0, 0x0L), 4), 1414056); - - // gentest-246 - assertEqual(perft(new Board(0x9846900f4000L, 0x200060000001000L, 0x200800000000000cL, 0x800400000000082L, 0x2000001000000L, 0x1000000000000020L, 0x400910f50aeL, 0x3a0ada4600000000L, true, 0, 0x0L), 4), 1557524); - - // gentest-247 - assertEqual(perft(new Board(0x9846900f4000L, 0x200040004001000L, 0x200800000000000cL, 0x800400000000082L, 0x2000000100000L, 0x1000000000000020L, 0x400901f50aeL, 0x3a0ad84604000000L, false, 0, 0x0L), 4), 1458071); - - // gentest-248 - assertEqual(perft(new Board(0x1806900f4000L, 0x200040004001000L, 0x200800000000000cL, 0x800800000000082L, 0x2000000000000L, 0x1000000000000020L, 0x400100f50aeL, 0x3a0a980684000000L, true, 0, 0x0L), 4), 1187713); - - // gentest-249 - assertEqual(perft(new Board(0x1806900e4000L, 0x200040000011000L, 0x200800000000000cL, 0x800800000000082L, 0x2000000000000L, 0x1000000000000020L, 0x400100e50aeL, 0x3a0a980680010000L, false, 0, 0x0L), 4), 903728); - - // gentest-250 - assertEqual(perft(new Board(0x1806800e4000L, 0x1000011000L, 0x200800000000000cL, 0x800800000000082L, 0x2000000000000L, 0x1000000000000020L, 0xe50aeL, 0x380a981680010000L, true, 0, 0x0L), 4), 1026466); - - // gentest-251 - assertEqual(perft(new Board(0x1806840a4000L, 0x40011000L, 0x200800000000000cL, 0x800800000000042L, 0x2000000000000L, 0x1000000000000020L, 0x40a506eL, 0x380a9806c0010000L, false, 0, 0x0L), 4), 565643); - - // gentest-252 - assertEqual(perft(new Board(0x1806800a4000L, 0x44001000L, 0x48000000100008L, 0x800800000000042L, 0x2000000000000L, 0x1000000000000020L, 0x1a506aL, 0x184a9806c4000000L, true, 0, 0x0L), 4), 1168595); - - // gentest-253 - assertEqual(perft(new Board(0x100e84084000L, 0x40001000L, 0x48000001100000L, 0x800800000000042L, 0x2000000000000L, 0x1000000000000020L, 0x5185062L, 0x184a900ec0000000L, false, 0, 0x0L), 4), 1333706); - - // gentest-254 - assertEqual(perft(new Board(0x1a86084000L, 0x40001000L, 0x48000001100000L, 0x800800000000040L, 0x2000000000000L, 0x1000000000000020L, 0x5185060L, 0x184a801ac2000000L, true, 0, 0x0L), 4), 1023884); - - // gentest-255 - assertEqual(perft(new Board(0x1e82084000L, 0x40001000L, 0x40100001100000L, 0x800800000000080L, 0x2000000000000L, 0x1000000000000020L, 0x4011850a0L, 0x1842901ac2000000L, false, 0, 0x0L), 4), 1030120); - - // gentest-256 - assertEqual(perft(new Board(0x1e82084000L, 0x40001000L, 0x40100001000040L, 0x8800000000080L, 0x20000000000L, 0x1000000000000020L, 0x4010850e0L, 0x1048921ac2000000L, true, 0, 0x0L), 4), 697548); - - // gentest-257 - assertEqual(perft(new Board(0x1e8a004000L, 0x40001000L, 0x40100001000040L, 0x800800000800000L, 0x20000000000L, 0x1000000000000020L, 0x409805060L, 0x1840921ac2000000L, false, 0, 0x0L), 4), 848525); - - // gentest-258 - assertEqual(perft(new Board(0x1e0a004000L, 0x40001000L, 0x40100001000040L, 0x1800080000000L, 0x20000000000L, 0x1000000000000020L, 0x489005060L, 0x1041921a42000000L, true, 0, 0x0L), 4), 902369); - - // gentest-259 - assertEqual(perft(new Board(0x41a0a004000L, 0x40001000L, 0x40100001000040L, 0x1800000008000L, 0x20000000000L, 0x800000000000020L, 0x4000900d060L, 0x841921a42000000L, false, 0, 0x0L), 4), 678556); - - // gentest-260 - assertEqual(perft(new Board(0x41a0a004000L, 0x40040000L, 0x40002001000040L, 0x1800000008000L, 0x400000000L, 0x800000000000020L, 0x4000904c060L, 0x841803e42000000L, true, 0, 0x0L), 4), 1367656); - - // gentest-261 - assertEqual(perft(new Board(0x41a0a004000L, 0x440000000L, 0x40002001000040L, 0x1800000008000L, 0x2000000000000000L, 0x800000000000020L, 0x4040900c060L, 0x2841803a42000000L, false, 0, 0x0L), 4), 884926); - - // gentest-262 - assertEqual(perft(new Board(0x41a0a004000L, 0x50000000L, 0x40002001000040L, 0x20800000008000L, 0x10000000000000L, 0x800000000000020L, 0x4001900c060L, 0x870803a42000000L, true, 0, 0x0L), 4), 935521); - - // gentest-263 - assertEqual(perft(new Board(0x4001a0a004000L, 0x80040000000L, 0x40002001000040L, 0x20800000008000L, 0x10000000000000L, 0x400000000000020L, 0x408000900c060L, 0x470803a42000000L, false, 0, 0x0L), 4), 67484); - - // gentest-264 - assertEqual(perft(new Board(0x4001a0a004000L, 0x40000000L, 0x40002001002000L, 0x20080000008000L, 0x2000000000000000L, 0x400000000000020L, 0x400000900e020L, 0x2460083a42000000L, true, 0, 0x0L), 4), 690173); - - // gentest-265 - assertEqual(perft(new Board(0x4001a0a004000L, 0x40000000L, 0x40002000002008L, 0x20040000008000L, 0x2000000000000000L, 0x400000000000010L, 0x400000800e018L, 0x2460043a42000000L, false, 0, 0x0L), 4), 988428); - - // gentest-266 - assertEqual(perft(new Board(0x4001a0a004000L, 0x8000L, 0x48000040002000L, 0x20040000000000L, 0x2000000000000000L, 0x400000000000010L, 0x4000048006010L, 0x2468041a02008000L, true, 0, 0x0L), 4), 405980); - - // gentest-267 - assertEqual(perft(new Board(0x4001a02004000L, 0x8000L, 0x40100000802000L, 0x20040000000000L, 0x2000000000000000L, 0x400000000000010L, 0x4001000806010L, 0x2460140a02008000L, false, 0, 0x0L), 4), 362345); - - // gentest-268 - assertEqual(perft(new Board(0x4001a02004000L, 0x8000L, 0x40120000800000L, 0x24000000L, 0x2000000000000000L, 0x400000000000010L, 0x4021000804010L, 0x2440100a26008000L, true, 0, 0x0L), 4), 348811); - - // gentest-269 - assertEqual(perft(new Board(0x4001a02004000L, 0x8000L, 0x40100000900000L, 0x30000000L, 0x2000000000000000L, 0x400000000001000L, 0x4001000905000L, 0x2440100a32008000L, false, 0, 0x0L), 4), 156664); - - // gentest-270 - assertEqual(perft(new Board(0x4001a02004000L, 0x20L, 0x40100000900000L, 0x30000000L, 0x8000000000000000L, 0x400000000000010L, 0x4001000904010L, 0x8440100a32000020L, true, 0, 0x0L), 4), 83063); - - // gentest-271 - assertEqual(perft(new Board(0x4001a02004000L, 0x20L, 0x40100000001000L, 0x20100000L, 0x8000000000000000L, 0x400000000000010L, 0x4001000005010L, 0x8440100a22100020L, false, 0, 0x0L), 4), 89503); - - // gentest-272 - assertEqual(perft(new Board(0x4001a42000000L, 0x20L, 0x40100000001000L, 0x2000100000L, 0x80L, 0x400000000000010L, 0x4001040001010L, 0x440102a021000a0L, true, 0, 0x0L), 4), 33059); - - // gentest-273 - assertEqual(perft(new Board(0x4003a02000000L, 0x20L, 0x40100000000000L, 0x1000L, 0x80L, 0x400000000000008L, 0x4003000000008L, 0x440100a020010a0L, false, 0, 0x0L), 4), 22408); - - // gentest-274 - assertEqual(perft(new Board(0x4101a02000000L, 0x20L, 0x40000000000000L, 0x200000L, 0x80L, 0x400000000000008L, 0x4101000000008L, 0x440000a022000a0L, true, 0, 0x0L), 4), 28484); - - // gentest-275 - assertEqual(perft(new Board(0x14001a02000000L, 0x20L, 0x40000000000000L, 0x20000000L, 0x80L, 0x400000000001000L, 0x14001000001000L, 0x440000a220000a0L, false, 0, 0x0L), 4), 57305); - - // gentest-276 - assertEqual(perft(new Board(0x14001a02000000L, 0x800L, 0x40000000000000L, 0x20000000L, 0x80L, 0x8000000080000L, 0x14001000080000L, 0x48000a22000880L, true, 0, 0x0L), 4), 143831); - - // gentest-277 - assertEqual(perft(new Board(0x10001a02000000L, 0x800L, 0x40000040000000L, 0x20000000L, 0x80L, 0x4000000080000L, 0x10001040080000L, 0x44000a22000880L, false, 0, 0x0L), 4), 387368); - - // gentest-278 - assertEqual(perft(new Board(0x10001a02000000L, 0x800L, 0x2000002000000000L, 0x20000000L, 0x80L, 0x20000080000L, 0x10003000080000L, 0x2000020a22000880L, true, 0, 0x0L), 4), 606454); - - // gentest-279 - assertEqual(perft(new Board(0x120a000000L, 0x100000000800L, 0x2000000000L, 0x20000000L, 0x80L, 0x20000080000L, 0x103000080000L, 0x2022a000880L, false, 0, 0x0L), 4), 269972); - - // gentest-280 - assertEqual(perft(new Board(0x120a000000L, 0x100000000800L, 0x40000000L, 0x200000L, 0x80L, 0x20000080000L, 0x101040080000L, 0x2020a200880L, true, 0, 0x0L), 4), 84596); - - // gentest-281 - assertEqual(perft(new Board(0x120a000000L, 0x100000000800L, 0x1000L, 0x0L, 0x8000000000L, 0x20000080000L, 0x101000081000L, 0x2820a000800L, false, 0, 0x0L), 4), 130810); - - // gentest-282 - assertEqual(perft(new Board(0x20a000000L, 0x400000800L, 0x1000L, 0x0L, 0x200000000000000L, 0x20000080000L, 0x400081000L, 0x20002020a000800L, true, 0, 0x0L), 4), 141931); - - // gentest-283 - assertEqual(perft(new Board(0x20a000000L, 0x400000800L, 0x8000000000L, 0x0L, 0x1000000000L, 0x20000000400L, 0x8400000400L, 0x2120a000800L, false, 0, 0x0L), 4), 255150); - - // gentest-284 - assertEqual(perft(new Board(0x20a000000L, 0x400000020L, 0x1000L, 0x0L, 0x800000000L, 0x20000000400L, 0x400001400L, 0x20a0a000020L, true, 0, 0x0L), 4), 257475); - - // gentest-285 - assertEqual(perft(new Board(0x20a000000L, 0x400000020L, 0x200000L, 0x0L, 0x40000000000L, 0x20000000008L, 0x400200008L, 0x6020a000020L, false, 0, 0x0L), 4), 193250); - - // gentest-286 - assertEqual(perft(new Board(0x20a000000L, 0x20L, 0x200000L, 0x0L, 0x400000000L, 0x4000000001000L, 0x201000L, 0x400060a000020L, true, 0, 0x0L), 4), 118591); - - // gentest-287 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x40000000000L, 0x0L, 0x400000000L, 0x4000000000020L, 0x40000000020L, 0x4000608020000L, false, 0, 0x0L), 4), 84262); - - // gentest-288 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x2000000000000L, 0x0L, 0x400000000L, 0x100000000020L, 0x2000000000020L, 0x100608020000L, true, 0, 0x0L), 4), 105537); - - // gentest-289 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x40000000000L, 0x0L, 0x20000000000L, 0x100000000010L, 0x40000000010L, 0x120208020000L, false, 0, 0x0L), 4), 67662); - - // gentest-290 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x40000000000L, 0x0L, 0x20000000000L, 0x100000001000L, 0x40000001000L, 0x120208020000L, true, 0, 0x0L), 4), 91405); - - // gentest-291 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x2000000000000L, 0x0L, 0x40000000000L, 0x100000000008L, 0x2000000000008L, 0x140208020000L, false, 0, 0x0L), 4), 53185); - - // gentest-292 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x2000000000000L, 0x0L, 0x800000000L, 0x1000001000L, 0x2000000001000L, 0x1a08020000L, true, 0, 0x0L), 4), 54943); - - // gentest-293 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x4000L, 0x0L, 0x0L, 0x1000000020L, 0x4020L, 0x1208020000L, false, 0, 0x0L), 4), 11946); - - // gentest-294 - assertEqual(perft(new Board(0x208020000L, 0x0L, 0x4000L, 0x0L, 0x0L, 0x2000002000L, 0x6000L, 0x2208020000L, true, 0, 0x0L), 4), 18301); - - // gentest-295 - assertEqual(perft(new Board(0xa020000L, 0x0L, 0x40000000000L, 0x0L, 0x0L, 0x2000000040L, 0x40000000040L, 0x200a020000L, false, 0, 0x0L), 4), 18073); - - // gentest-296 - assertEqual(perft(new Board(0xa020000L, 0x0L, 0x4000L, 0x0L, 0x0L, 0x20000000000040L, 0x4040L, 0x2000000a020000L, true, 0, 0x0L), 4), 14461); - - // gentest-297 - assertEqual(perft(new Board(0xa020000L, 0x0L, 0x20L, 0x0L, 0x0L, 0x100000000080L, 0xa0L, 0x10000a020000L, false, 0, 0x0L), 4), 9837); - - // gentest-298 - assertEqual(perft(new Board(0xa000000L, 0x0L, 0x4002L, 0x0L, 0x0L, 0x100000000080L, 0x4080L, 0x10000a000002L, true, 0, 0x0L), 4), 22649); - - // gentest-299 - assertEqual(perft(new Board(0xa000000L, 0x0L, 0x800000002L, 0x0L, 0x0L, 0x1000008000L, 0x800008000L, 0x100a000002L, false, 0, 0x0L), 4), 45501); - - // gentest-300 - assertEqual(perft(new Board(0xa000000L, 0x0L, 0x100010000000L, 0x0L, 0x0L, 0x1000008000L, 0x10008000L, 0x10100a000000L, true, 0, 0x0L), 4), 60566); - - // gentest-301 - assertEqual(perft(new Board(0xa000000L, 0x0L, 0x2000000002L, 0x0L, 0x0L, 0x1000000080L, 0x82L, 0x300a000000L, false, 0, 0x0L), 4), 21809); - - // gentest-302 - assertEqual(perft(new Board(0xa000000L, 0x0L, 0x402000000000L, 0x0L, 0x0L, 0x800000080L, 0x2000000080L, 0x40080a000000L, true, 0, 0x0L), 4), 25908); - - // gentest-303 - assertEqual(perft(new Board(0xa000000L, 0x0L, 0x8000000000L, 0x0L, 0x0L, 0x100000000080L, 0x8000000080L, 0x10000a000000L, false, 0, 0x0L), 4), 8933); - - // gentest-304 - assertEqual(perft(new Board(0x2080000L, 0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x1000000080L, 0x20000000000080L, 0x1002080000L, true, 0, 0x0L), 4), 10020); - - // gentest-305 - assertEqual(perft(new Board(0xa0000L, 0x0L, 0x200000000L, 0x0L, 0x0L, 0x1000000080L, 0x200000080L, 0x10000a0000L, false, 0, 0x0L), 4), 10553); - - // gentest-306 - assertEqual(perft(new Board(0xa0000L, 0x0L, 0x4000000L, 0x0L, 0x0L, 0x20000080L, 0x4000080L, 0x200a0000L, true, 0, 0x0L), 4), 10014); - - // gentest-307 - assertEqual(perft(new Board(0xa0000L, 0x0L, 0x4000000000000000L, 0x0L, 0x0L, 0x40004000L, 0x4000000000004000L, 0x400a0000L, false, 0, 0x0L), 4), 8957); - - // gentest-308 - assertEqual(perft(new Board(0xa0000L, 0x0L, 0x4000000000000000L, 0x0L, 0x0L, 0x80200000L, 0x4000000000200000L, 0x800a0000L, true, 0, 0x0L), 4), 5198); - - // gentest-309 - assertEqual(perft(new Board(0x80000L, 0x0L, 0x20000L, 0x0L, 0x0L, 0x4000400000L, 0x420000L, 0x4000080000L, false, 0, 0x0L), 4), 9412); - - // gentest-310 - assertEqual(perft(new Board(0x0L, 0x8L, 0x20000000000000L, 0x0L, 0x0L, 0x4000400000L, 0x20000000400000L, 0x4000000008L, true, 0, 0x0L), 4), 15421); - - // gentest-311 - assertEqual(perft(new Board(0x0L, 0x8L, 0x100L, 0x0L, 0x0L, 0x800000400000L, 0x400100L, 0x800000000008L, false, 0, 0x0L), 4), 15779); - - // gentest-312 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-313 - assertEqual(perft(new Board(0xf7000840209f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40209fffL, 0xfff7000800000000L, false, 0, 0x8100000000000081L), 4), 338556); - - // gentest-314 - assertEqual(perft(new Board(0xe5001a40229d00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40229dffL, 0xffe5001a00000000L, true, 0, 0x8100000000000081L), 4), 654393); - - // gentest-315 - assertEqual(perft(new Board(0xe5001a40239c00L, 0x4000040000000042L, 0x2400000000004004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4023dcdfL, 0xfde5041a00000000L, false, 0, 0x8100000000000081L), 4), 624373); - - // gentest-316 - assertEqual(perft(new Board(0xe5001248239c00L, 0x4000040000000042L, 0x2000002000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40239cffL, 0xf9e5043208000000L, true, 0, 0x8100000000000081L), 4), 671745); - - // gentest-317 - assertEqual(perft(new Board(0xe50002d8231c00L, 0x4000040000040040L, 0x2000002000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xc0271cfdL, 0xf9e5042218000000L, false, 0, 0x8100000000000081L), 4), 1002742); - - // gentest-318 - assertEqual(perft(new Board(0xe50002d9221c00L, 0x840000040040L, 0x2000002000000024L, 0x8100000000000081L, 0x4000000008L, 0x1000000000000010L, 0xc1261cfdL, 0xb1e5846218000000L, true, 0, 0x8100000000000081L), 4), 1307169); - - // gentest-319 - assertEqual(perft(new Board(0xe50002d9221c00L, 0x840000040040L, 0x2000002000000024L, 0x4100000000800001L, 0x4000000008L, 0x1000000000002000L, 0xc1a63c6dL, 0x71e5846218000000L, false, 0, 0x100000000000000L), 4), 1305153); - - // gentest-320 - assertEqual(perft(new Board(0xe50002d9221c00L, 0x800800000040040L, 0x2400000000000220L, 0x4100000000800001L, 0x4000000008L, 0x1000000000002000L, 0xc1a63e69L, 0x7de5804218000000L, true, 0, 0x100000000000000L), 4), 1631657); - - // gentest-321 - assertEqual(perft(new Board(0xe50002d9221c00L, 0x800800000040040L, 0x400000002010020L, 0x4100000000800001L, 0x4000000002L, 0x1000000000002000L, 0xc1a73c63L, 0x5de580421a000000L, false, 0, 0x100000000000000L), 4), 1710636); - - // gentest-322 - assertEqual(perft(new Board(0xe50002d9221c00L, 0x800800000040040L, 0x400000002010020L, 0x8100000000800001L, 0x8000000100L, 0x1000000000002000L, 0xc1a73d61L, 0x9de580821a000000L, true, 0, 0x100000000000000L), 4), 1580613); - - // gentest-323 - assertEqual(perft(new Board(0xe50002d8221c00L, 0x800800800000040L, 0x400000002010020L, 0x8100000000800001L, 0x8000000100L, 0x8000000002000L, 0xac0a33d61L, 0x8ded80801a000000L, false, 0, 0x0L), 4), 1580965); - - // gentest-324 - assertEqual(perft(new Board(0xe50002d8221c00L, 0x800800800000040L, 0x400000002010020L, 0x8100000000800010L, 0x20000100L, 0x8000000002000L, 0xac0a33d70L, 0x8ded80003a000000L, true, 0, 0x0L), 4), 1433971); - - // gentest-325 - assertEqual(perft(new Board(0xe5004298221c00L, 0x800820000000040L, 0x400000002010020L, 0x8100000000800010L, 0x20000100L, 0x80000002000L, 0x24280a33d70L, 0x8de588003a000000L, false, 0, 0x0L), 4), 1185296); - - // gentest-326 - assertEqual(perft(new Board(0xc4402398221c00L, 0x800820000000040L, 0x400000002010020L, 0x8100000000800010L, 0x20000100L, 0x80000002000L, 0x420280a33d70L, 0x8dc488213a000000L, true, 0, 0x0L), 4), 878297); - - // gentest-327 - assertEqual(perft(new Board(0xc4402398221c00L, 0x800820000000040L, 0x2000002010020L, 0x8100000000800008L, 0x20000002L, 0x80000002000L, 0x420280a33c6aL, 0x89c688213a000000L, false, 0, 0x0L), 4), 851149); - - // gentest-328 - assertEqual(perft(new Board(0xc4402398221c00L, 0x800820000000040L, 0x2000002010020L, 0x8100000000800010L, 0x20000002L, 0x80000002000L, 0x420280a33c72L, 0x89c688213a000000L, true, 0, 0x0L), 4), 875724); - - // gentest-329 - assertEqual(perft(new Board(0xc4402398221c00L, 0x800820000000040L, 0x2000002014000L, 0x8100000000800010L, 0x400002L, 0x80000000020L, 0x420280a35c72L, 0x89c688211a400000L, false, 0, 0x0L), 4), 1200334); - - // gentest-330 - assertEqual(perft(new Board(0xc4402398221c00L, 0xc00000040000040L, 0x2000002014000L, 0x8100000000800010L, 0x400002L, 0x8000000000020L, 0x400400280a35c72L, 0x89ce00215a400000L, true, 0, 0x0L), 4), 1604160); - - // gentest-331 - assertEqual(perft(new Board(0xc44023982a1400L, 0x800020040000040L, 0x2000002014000L, 0x8100000000800010L, 0x400002L, 0x10000000000020L, 0x420280ab5472L, 0x89d600215a400000L, false, 0, 0x0L), 4), 1445881); - - // gentest-332 - assertEqual(perft(new Board(0xc44023882a1400L, 0x20020040000040L, 0x2000002014000L, 0x8100000000800010L, 0x400200L, 0x10000000000020L, 0x4202808b5670L, 0x81f600214a600000L, true, 0, 0x0L), 4), 2263658); - - // gentest-333 - assertEqual(perft(new Board(0xc44023882a1400L, 0x20000840000040L, 0x2000002014000L, 0x8100000000800010L, 0x400001L, 0x8000000000020L, 0x400a808b5471L, 0x81ee00214a600000L, false, 0, 0x0L), 4), 3419587); - - // gentest-334 - assertEqual(perft(new Board(0xc44023882a1400L, 0x800000840000040L, 0x2000002004004L, 0x8100000000800010L, 0x20000001L, 0x8000000000020L, 0x400a808a5475L, 0x89ce00216a200000L, true, 0, 0x0L), 4), 2740662); - - // gentest-335 - assertEqual(perft(new Board(0xc04023982a0400L, 0x804000040000040L, 0x2000000004014L, 0x8100000000800000L, 0x20000001L, 0x8000000000020L, 0x44002908a4465L, 0x89ca002168200010L, false, 20, 0x0L), 4), 2468318); - - // gentest-336 - assertEqual(perft(new Board(0xc04023980a4400L, 0x804000000000040L, 0x2000000100010L, 0x8100000000800000L, 0x20000001L, 0x8000000000020L, 0x44002909a0461L, 0x89ca002128004010L, true, 0, 0x0L), 4), 165481); - - // gentest-337 - assertEqual(perft(new Board(0xc04023980a4400L, 0x804000000000040L, 0x2000000100000L, 0x2100000000200000L, 0x20000001L, 0x8000000000010L, 0x44002903a0451L, 0x29ca002128004000L, false, 0, 0x0L), 4), 1901192); - - // gentest-338 - assertEqual(perft(new Board(0xc04023980a4400L, 0x804000000000040L, 0x2000000100000L, 0x2100000000200000L, 0x1800000L, 0x8000000000010L, 0x44002913a0450L, 0x29ca002108804000L, true, 0, 0x0L), 4), 1415044); - - // gentest-339 - assertEqual(perft(new Board(0xc04023900a4400L, 0x804000000001000L, 0x400000000100000L, 0x2100000000200000L, 0x8800000L, 0x8000000000010L, 0x44002983a1410L, 0x2dc8002100804000L, false, 0, 0x0L), 4), 101758); - - // gentest-340 - assertEqual(perft(new Board(0x404023900a4400L, 0x800000000001000L, 0x400000000100000L, 0x2100000000200000L, 0x800001L, 0x4000000000010L, 0x2903a1411L, 0x2d44402100804000L, true, 0, 0x0L), 4), 1648415); - - // gentest-341 - assertEqual(perft(new Board(0x404023900a0400L, 0x800000000001040L, 0x400000000002000L, 0x2100000000800000L, 0x1L, 0x4000000000010L, 0x2908a3411L, 0x2d44402100000040L, false, 0, 0x0L), 4), 1002897); - - // gentest-342 - assertEqual(perft(new Board(0x404023900a0400L, 0x40000001040L, 0x400000008000000L, 0x2100000000800000L, 0x1L, 0x8000000000010L, 0x2988a1411L, 0x2548442100000040L, true, 0, 0x0L), 4), 1412942); - - // gentest-343 - assertEqual(perft(new Board(0x404023900a0400L, 0x40000001040L, 0x400000008000000L, 0x900000000400000L, 0x1000000L, 0x8000000000010L, 0x2994a1410L, 0xd48442100000040L, false, 0, 0x0L), 4), 1027974); - - // gentest-344 - assertEqual(perft(new Board(0x404023900a0400L, 0x8001040L, 0x400000000000000L, 0x900000000400000L, 0x2000000L, 0x4000000000010L, 0x2924a1410L, 0xd44402108000040L, true, 0, 0x0L), 4), 750360); - - // gentest-345 - assertEqual(perft(new Board(0x40402198020400L, 0x200001040L, 0x400000000000000L, 0x900004000000000L, 0x2000000L, 0x4000000000010L, 0x409a021410L, 0xd44402300000040L, false, 0, 0x0L), 4), 845722); - - // gentest-346 - assertEqual(perft(new Board(0x40402198020400L, 0x200001040L, 0x400000000000000L, 0x1100004000000000L, 0x4000000L, 0x2000000000010L, 0x409c021410L, 0x1542402300000040L, true, 0, 0x0L), 4), 712577); - - // gentest-347 - assertEqual(perft(new Board(0x40400198020400L, 0x200001040L, 0x0L, 0x900002000000000L, 0x400000000000000L, 0x2000000000010L, 0x400002098021410L, 0x942400300000040L, false, 0, 0x0L), 4), 117042); - - // gentest-348 - assertEqual(perft(new Board(0x40400198020000L, 0x41040L, 0x0L, 0x900002000000000L, 0x0L, 0x400000000000010L, 0x2098021010L, 0xd40400100040040L, true, 0, 0x0L), 4), 405444); - - // gentest-349 - assertEqual(perft(new Board(0x4040009a000000L, 0x1048L, 0x0L, 0x900000100000000L, 0x0L, 0x400000000000010L, 0x19a001010L, 0xd40400000000048L, false, 0, 0x0L), 4), 307219); - - // gentest-350 - assertEqual(perft(new Board(0x4040801a000000L, 0x1048L, 0x0L, 0x800000100000000L, 0x0L, 0x400000000000010L, 0x801a001010L, 0xc40400100000048L, true, 0, 0x0L), 4), 183278); - - // gentest-351 - assertEqual(perft(new Board(0x4040801a000000L, 0x48L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000800L, 0x801a000840L, 0x2440400100000008L, false, 0, 0x0L), 4), 209109); - - // gentest-352 - assertEqual(perft(new Board(0x4000d00a000000L, 0x40040L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000800L, 0x900a000840L, 0x2440004100040000L, true, 0, 0x0L), 4), 200017); - - // gentest-353 - assertEqual(perft(new Board(0x4010c00a000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000800L, 0x10800a800800L, 0x2440004100000100L, false, 0, 0x0L), 4), 165001); - - // gentest-354 - assertEqual(perft(new Board(0x4010804a000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x200000000080000L, 0x10800a880000L, 0x2240000140000100L, true, 0, 0x0L), 4), 211370); - - // gentest-355 - assertEqual(perft(new Board(0x40108842000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000400L, 0x108802800400L, 0x2440000140000100L, false, 0, 0x0L), 4), 153995); - - // gentest-356 - assertEqual(perft(new Board(0x40108842000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x2000000000200L, 0x108802800200L, 0x2042000140000100L, true, 0, 0x0L), 4), 183104); - - // gentest-357 - assertEqual(perft(new Board(0x10c842000000L, 0x10000100L, 0x0L, 0x2000000100000000L, 0x0L, 0x2000000000200L, 0x108812000200L, 0x2002004140000100L, false, 0, 0x0L), 4), 222436); - - // gentest-358 - assertEqual(perft(new Board(0x10ca40000000L, 0x10000100L, 0x0L, 0x2000010000000000L, 0x0L, 0x400000000000200L, 0x108a10000200L, 0x2400014040000100L, true, 0, 0x0L), 4), 166016); - - // gentest-359 - assertEqual(perft(new Board(0x1000ca40000000L, 0x400000100L, 0x0L, 0x10000200000L, 0x0L, 0x400000000000200L, 0x10008e00000200L, 0x400014040200100L, false, 0, 0x0L), 4), 250268); - - // gentest-360 - assertEqual(perft(new Board(0xca40000000L, 0x1000000400000100L, 0x0L, 0x10000200000L, 0x0L, 0x400000000000200L, 0x1000008e00000200L, 0x400014040200100L, true, 0, 0x0L), 4), 245377); - - // gentest-361 - assertEqual(perft(new Board(0xca00400000L, 0x1002000000000100L, 0x0L, 0x10000200000L, 0x0L, 0x400000000000001L, 0x1002008a00000001L, 0x400014000600100L, false, 0, 0x0L), 4), 124304); - - // gentest-362 - assertEqual(perft(new Board(0xca00400000L, 0x1800000000040000L, 0x0L, 0x1000000200000L, 0x0L, 0x400000000000001L, 0x1800008a00000001L, 0x401004000640000L, true, 0, 0x0L), 4), 15018); - - // gentest-363 - assertEqual(perft(new Board(0xca00400000L, 0x1800000000040000L, 0x0L, 0x1000000100000L, 0x0L, 0x400000000000400L, 0x1800008a00000400L, 0x401004000540000L, false, 0, 0x0L), 4), 237605); - - // gentest-364 - assertEqual(perft(new Board(0x804200400000L, 0x1800000800000000L, 0x0L, 0x20000000100000L, 0x0L, 0x400000000000400L, 0x1800800200000400L, 0x420004800500000L, true, 0, 0x0L), 4), 231451); - - // gentest-365 - assertEqual(perft(new Board(0x804200400000L, 0x400000800000000L, 0x0L, 0x20000000100000L, 0x0L, 0x800000000000400L, 0x400800200000400L, 0x820004800500000L, false, 0, 0x0L), 4), 141087); - - // gentest-366 - assertEqual(perft(new Board(0x804200400000L, 0x400000800000000L, 0x0L, 0x10000000000010L, 0x0L, 0x800000000000200L, 0x400800200000200L, 0x810004800400010L, true, 0, 0x0L), 4), 118116); - - // gentest-367 - assertEqual(perft(new Board(0x804200400000L, 0x1000800000000L, 0x0L, 0x8000000000010L, 0x0L, 0x800000000010000L, 0x1800200010000L, 0x808004800400010L, false, 0, 0x0L), 4), 68491); - - // gentest-368 - assertEqual(perft(new Board(0x804200400000L, 0x40800000000L, 0x0L, 0x20000000000010L, 0x0L, 0x1000000000010000L, 0x840200010000L, 0x1020004800400010L, true, 0, 0x0L), 4), 226773); - - // gentest-369 - assertEqual(perft(new Board(0x4200400000L, 0x40800000000L, 0x0L, 0x8020100000000000L, 0x0L, 0x1000000000010000L, 0x8000040200010000L, 0x1020104800400000L, false, 0, 0x0L), 4), 30786); - - // gentest-370 - assertEqual(perft(new Board(0x4200004000L, 0x40800000000L, 0x0L, 0x4020100000000000L, 0x0L, 0x8000000010000L, 0x4000040200010000L, 0x28104800004000L, true, 0, 0x0L), 4), 498458); - - // gentest-371 - assertEqual(perft(new Board(0x240004000L, 0x10000800000000L, 0x0L, 0x4020100000000000L, 0x0L, 0x8000000000200L, 0x4010000200000200L, 0x28100840004000L, false, 0, 0x0L), 4), 604944); - - // gentest-372 - assertEqual(perft(new Board(0x240004000L, 0x10000800000000L, 0x0L, 0x820100000000000L, 0x0L, 0x20000000200L, 0x810000200000200L, 0x20120840004000L, true, 0, 0x0L), 4), 530768); - - // gentest-373 - assertEqual(perft(new Board(0x240004000L, 0x10000800000000L, 0x0L, 0x820040000000000L, 0x0L, 0x20000020000L, 0x810000200020000L, 0x20060840004000L, false, 0, 0x0L), 4), 527481); - - // gentest-374 - assertEqual(perft(new Board(0x240000000L, 0x10000800000040L, 0x0L, 0x200c0000000000L, 0x0L, 0x1000000020000L, 0x10080200020000L, 0x21040840000040L, true, 0, 0x0L), 4), 334167); - - // gentest-375 - assertEqual(perft(new Board(0x240000000L, 0x800000040L, 0x0L, 0x20080000000000L, 0x0L, 0x1000001000000L, 0xa01000000L, 0x21080040000040L, false, 0, 0x0L), 4), 116524); - - // gentest-376 - assertEqual(perft(new Board(0x240000000L, 0x10000000000040L, 0x0L, 0x8200000000000L, 0x0L, 0x1000001000000L, 0x10000201000000L, 0x9200040000040L, true, 0, 0x0L), 4), 79975); - - // gentest-377 - assertEqual(perft(new Board(0x240000000L, 0x10000000000040L, 0x0L, 0x800200000000000L, 0x0L, 0x1000000040000L, 0x10000200040000L, 0x801200040000040L, false, 0, 0x0L), 4), 130245); - - // gentest-378 - assertEqual(perft(new Board(0x240000000L, 0x2000000040L, 0x0L, 0x2000000000080000L, 0x0L, 0x1000000040000L, 0x2200040000L, 0x2001000040080040L, true, 0, 0x0L), 4), 52164); - - // gentest-379 - assertEqual(perft(new Board(0x240000000L, 0x40000000000040L, 0x0L, 0x100000000080000L, 0x0L, 0x1000000000400L, 0x40000200000400L, 0x101000040080040L, false, 0, 0x0L), 4), 60472); - - // gentest-380 - assertEqual(perft(new Board(0x240000000L, 0x40000000000040L, 0x0L, 0x200080000000000L, 0x0L, 0x1000000000002L, 0x40000200000002L, 0x201080040000040L, true, 0, 0x0L), 4), 75567); - - // gentest-381 - assertEqual(perft(new Board(0x240000000L, 0x800000000000040L, 0x0L, 0x200000800000000L, 0x0L, 0x1000000000002L, 0x800000200000002L, 0x201000840000040L, false, 0, 0x0L), 4), 44352); - - // gentest-382 - assertEqual(perft(new Board(0x240000000L, 0x40L, 0x0L, 0x200000000000008L, 0x0L, 0x1000000000001L, 0x200000001L, 0x201000040000048L, true, 0, 0x0L), 4), 7794); - - // gentest-383 - assertEqual(perft(new Board(0x240000000L, 0x40L, 0x0L, 0x200000000000001L, 0x0L, 0x1000000040000L, 0x200040000L, 0x201000040000041L, false, 0, 0x0L), 4), 33228); - - // gentest-384 - assertEqual(perft(new Board(0x240000000L, 0x40L, 0x0L, 0x100000000001L, 0x0L, 0x1000004000000L, 0x204000000L, 0x1100040000041L, true, 0, 0x0L), 4), 37234); - - // gentest-385 - assertEqual(perft(new Board(0x20040000000L, 0x40L, 0x0L, 0x1000000000000001L, 0x0L, 0x1000000080000L, 0x20000080000L, 0x1001000040000041L, false, 0, 0x0L), 4), 5233); - - // gentest-386 - assertEqual(perft(new Board(0x20040000000L, 0x40L, 0x0L, 0x1001000000000000L, 0x0L, 0x100000000000400L, 0x20000000400L, 0x1101000040000040L, true, 0, 0x0L), 4), 43734); - - // gentest-387 - assertEqual(perft(new Board(0x20040000000L, 0x800000L, 0x0L, 0x1001000000000000L, 0x0L, 0x100000000000400L, 0x20000000400L, 0x1101000040800000L, false, 0, 0x0L), 4), 47817); - - // gentest-388 - assertEqual(perft(new Board(0x20040000000L, 0x800000L, 0x0L, 0x1000000800000000L, 0x0L, 0x100000000080000L, 0x20000080000L, 0x1100000840800000L, true, 0, 0x0L), 4), 16090); - - // gentest-389 - assertEqual(perft(new Board(0x20040000000L, 0x800000L, 0x0L, 0x1000000100000000L, 0x0L, 0x100000002000000L, 0x20002000000L, 0x1100000140800000L, false, 0, 0x0L), 4), 25673); - - // gentest-390 - assertEqual(perft(new Board(0x20040000000L, 0x800000L, 0x0L, 0x100000000000000L, 0x0L, 0x2000100000000L, 0x20100000000L, 0x102000040800000L, true, 0, 0x0L), 4), 4558); - - // gentest-391 - assertEqual(perft(new Board(0x20040000000L, 0x800000L, 0x0L, 0x2000000000000000L, 0x0L, 0x2000001000000L, 0x20001000000L, 0x2002000040800000L, false, 0, 0x0L), 4), 15008); - - // gentest-392 - assertEqual(perft(new Board(0x2000040000000L, 0x800000L, 0x0L, 0x2000000000000000L, 0x0L, 0x20001000000L, 0x2000001000000L, 0x2000020040800000L, true, 0, 0x0L), 4), 24270); - - // gentest-393 - assertEqual(perft(new Board(0x40000000L, 0x800000L, 0x0L, 0x200000000000000L, 0x0L, 0x20002000000L, 0x2000000L, 0x200020040800000L, false, 0, 0x0L), 4), 10276); - - // gentest-394 - assertEqual(perft(new Board(0x40000000L, 0x4000000000L, 0x0L, 0x8000000000000000L, 0x0L, 0x20004000000L, 0x4000000L, 0x8000024040000000L, true, 0, 0x0L), 4), 27110); - - // gentest-395 - assertEqual(perft(new Board(0x40000000L, 0x4000000000L, 0x0L, 0x8000000000000000L, 0x0L, 0x2080000000000L, 0x80000000000L, 0x8002004040000000L, false, 0, 0x0L), 4), 16684); - - // gentest-396 - assertEqual(perft(new Board(0x40000000L, 0x4000000000L, 0x0L, 0x8000L, 0x0L, 0x108000000000000L, 0x8000000000000L, 0x100004040008000L, true, 0, 0x0L), 4), 17800); - - // gentest-397 - assertEqual(perft(new Board(0x40000000L, 0x4000000000L, 0x0L, 0x1000L, 0x0L, 0x900000000000000L, 0x800000000000000L, 0x100004040001000L, false, 0, 0x0L), 4), 7499); - - // gentest-398 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-399 - assertEqual(perft(new Board(0xfe01000002fd00L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2fffbL, 0xfffe010000000000L, false, 0, 0x8100000000000081L), 4), 294596); - - // gentest-400 - assertEqual(perft(new Board(0xea05100102fc00L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x102fefbL, 0xffea051000000000L, true, 0, 0x8100000000000081L), 4), 621649); - } - - public static void batch1() { - // gentest-401 - assertEqual(perft(new Board(0xea05100152ac00L, 0x200200000000042L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x152aefbL, 0xbfea251000000000L, false, 0, 0x8100000000000081L), 4), 1095857); - - // gentest-402 - assertEqual(perft(new Board(0xea05104112ac00L, 0x200200000000042L, 0x2400000000000220L, 0x8100000000000081L, 0x200000008L, 0x1000000000000010L, 0x4112aefbL, 0xb7ea251200000000L, true, 0, 0x8100000000000081L), 4), 1281512); - - // gentest-403 - assertEqual(perft(new Board(0xea05104110ac00L, 0x200200000001002L, 0x2400000000040020L, 0x8100000000000081L, 0x20008L, 0x1000000000000010L, 0x4114bcbbL, 0xb7ea251000020000L, false, 0, 0x8100000000000081L), 4), 1102194); - - // gentest-404 - assertEqual(perft(new Board(0xea051061108c00L, 0x200200000001002L, 0x400020000040020L, 0x8100000000000081L, 0x20008L, 0x1000000000000010L, 0x61149cbbL, 0x97ea271000020000L, true, 0, 0x8100000000000081L), 4), 1264174); - - // gentest-405 - assertEqual(perft(new Board(0xea051061108c00L, 0x200200000000042L, 0x400020000040020L, 0x8100000000000081L, 0x21000L, 0x2000000000000010L, 0x61149cf3L, 0xa7ea271000020000L, false, 0, 0x81L), 4), 1530762); - - // gentest-406 - assertEqual(perft(new Board(0x6a855021108c00L, 0x200200000000042L, 0x400000400040020L, 0x8100000000000081L, 0x21000L, 0x2000000000000010L, 0x4021149cf3L, 0xa76aa51400020000L, true, 0, 0x81L), 4), 2293549); - - // gentest-407 - assertEqual(perft(new Board(0x6a847201108c00L, 0x200200000000042L, 0x400000400040020L, 0x8100000000000081L, 0x20000L, 0x2000000000000010L, 0x6001148cf3L, 0xa76aa41600020000L, false, 0, 0x81L), 4), 1681259); - - // gentest-408 - assertEqual(perft(new Board(0x2ac45201108c00L, 0x200200000000042L, 0x400000400040020L, 0x180000000000081L, 0x20000L, 0x2000000000000010L, 0x404001148cf3L, 0x27aaa41600020000L, true, 0, 0x81L), 4), 1884769); - - // gentest-409 - assertEqual(perft(new Board(0xaaa41201108c00L, 0x200000000000042L, 0x401000000040020L, 0x100000000000081L, 0x20000L, 0x2000000000000010L, 0x80200001148cf3L, 0x272b841200020000L, false, 0, 0x81L), 4), 534014); - - // gentest-410 - assertEqual(perft(new Board(0xaaa40003108c00L, 0x10000000042L, 0x401001000000020L, 0x100000000000081L, 0x20000L, 0x2000000000000010L, 0x80201001108cf3L, 0x252b850002020000L, true, 0, 0x81L), 4), 835636); - - // gentest-411 - assertEqual(perft(new Board(0x2aa40003108c00L, 0x10000000042L, 0x401080000000020L, 0x100000000000081L, 0x8000000000020000L, 0x1000000000000010L, 0x8000280001108cf3L, 0x152b850002020000L, false, 0, 0x81L), 4), 0); - - // gentest-412 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-413 - assertEqual(perft(new Board(0xef10001020cf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1020cfffL, 0xffef100000000000L, false, 0, 0x8100000000000081L), 4), 586355); - - // gentest-414 - assertEqual(perft(new Board(0x6e90011020cf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x1020efefL, 0xff6e900100000000L, true, 0, 0x8100000000000000L), 4), 726774); - - // gentest-415 - assertEqual(perft(new Board(0x6e10811220cd00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000001000L, 0x1000000000002000L, 0x1220fde7L, 0xff6e108100000000L, false, 0, 0x8100000000000000L), 4), 807478); - - // gentest-416 - assertEqual(perft(new Board(0xe50a11220cd00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x1220edefL, 0xff0e50a100000000L, true, 0, 0x8100000000000000L), 4), 1107158); - - // gentest-417 - assertEqual(perft(new Board(0xe50a31820c500L, 0x4200000000000042L, 0x400000400000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x21820e5efL, 0xdf0e50a500000000L, false, 0, 0x8100000000000000L), 4), 1279346); - - // gentest-418 - assertEqual(perft(new Board(0xe50a31820c500L, 0x200800000000042L, 0x400020000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000400000L, 0x21860c5efL, 0x9f0ed2a100000000L, true, 0, 0x8100000000000000L), 4), 885259); - - // gentest-419 - assertEqual(perft(new Board(0xe50a31820c500L, 0x200800000000042L, 0x400020000000024L, 0x8100000000000081L, 0x800000000001000L, 0x20000000400000L, 0x21860d5e7L, 0x8f2ed2a100000000L, false, 0, 0x0L), 4), 999959); - - // gentest-420 - assertEqual(perft(new Board(0xe10e31820c500L, 0x200800000000042L, 0x400020000000220L, 0x2100000000000081L, 0x800000000001000L, 0x20000000400000L, 0x21860d7e3L, 0x2f2e92e100000000L, true, 0, 0x0L), 4), 664118); - - // gentest-421 - assertEqual(perft(new Board(0xe10e31920c400L, 0x200800000000840L, 0x400020000000220L, 0x2100000000000081L, 0x10000000001000L, 0x20000000400000L, 0x21960dee1L, 0x273e92e100000000L, false, 0, 0x0L), 4), 885742); - - // gentest-422 - assertEqual(perft(new Board(0xe10639920c400L, 0x200000040000840L, 0x400020000000220L, 0x2100000000000081L, 0x10000000001000L, 0x20000000800000L, 0x219a0dee1L, 0x273e1261c0000000L, true, 0, 0x0L), 4), 878056); - - // gentest-423 - assertEqual(perft(new Board(0xe10639920c400L, 0x200000040000840L, 0x400020000000220L, 0x900000000000082L, 0x10000000080000L, 0x20000000800000L, 0x219a8cee2L, 0xf3e1261c0000000L, false, 0, 0x0L), 4), 971596); - - // gentest-424 - assertEqual(perft(new Board(0xe10439920c400L, 0x200000040000840L, 0x400020000000220L, 0x900000000000082L, 0x10000000020000L, 0x200000800000L, 0x209a2cee2L, 0xf1e3241d0000000L, true, 0, 0x0L), 4), 1021059); - - // gentest-425 - assertEqual(perft(new Board(0xe10439920c400L, 0x200000040000840L, 0x400020000041000L, 0x900000000000082L, 0x10000000020000L, 0x40000000800000L, 0x209a6dcc2L, 0xf5e1241d0000000L, false, 0, 0x0L), 4), 1395850); - - // gentest-426 - assertEqual(perft(new Board(0xe10439920c400L, 0x200000000100840L, 0x400020000041000L, 0x900000000000280L, 0x200000020000L, 0x40000000800000L, 0x209a6dec0L, 0xf4e324190100000L, true, 0, 0x0L), 4), 985905); - - // gentest-427 - assertEqual(perft(new Board(0xe104399608400L, 0x10000100840L, 0x400020000040020L, 0x900000000000280L, 0x200000020000L, 0x40000000800000L, 0x209e68ee0L, 0xd4e334190100000L, false, 0, 0x0L), 4), 1173998); - - // gentest-428 - assertEqual(perft(new Board(0xe104391608400L, 0x10000100840L, 0x400020000040020L, 0x4100000000000280L, 0x8010000L, 0x40000000800000L, 0x201e58ee0L, 0x454e134198100000L, true, 0, 0x0L), 4), 1022796); - - // gentest-429 - assertEqual(perft(new Board(0xe104391608400L, 0x10000100042L, 0x400020000040020L, 0x2100000000000280L, 0x8000100L, 0x40000000800000L, 0x201e487e2L, 0x254e134198100000L, false, 0, 0x0L), 4), 1133069); - - // gentest-430 - assertEqual(perft(new Board(0xa045391608400L, 0x10000100042L, 0x400020000040020L, 0x2100000000000280L, 0x8000001L, 0x40000000800000L, 0x201e486e3L, 0x254a075198100000L, true, 0, 0x0L), 4), 1327163); - - // gentest-431 - assertEqual(perft(new Board(0xa045381608400L, 0x10000100042L, 0x400020004040000L, 0x2100000000000180L, 0x8000001L, 0x40000000800000L, 0x205c485c3L, 0x254a075188300000L, false, 0, 0x0L), 4), 1328245); - - // gentest-432 - assertEqual(perft(new Board(0xa005381608400L, 0x10000100042L, 0x400020004040000L, 0x2100000000000180L, 0x80000000200L, 0x40000000800000L, 0x5c487c2L, 0x254a0b5380300000L, true, 0, 0x0L), 4), 2206800); - - // gentest-433 - assertEqual(perft(new Board(0xa005185608400L, 0x10000100042L, 0x400020002000000L, 0x2100000000000081L, 0x80000000200L, 0x40000000800000L, 0x3c086c3L, 0x254a0b5184300000L, false, 0, 0x0L), 4), 1447371); - - // gentest-434 - assertEqual(perft(new Board(0xa005085608400L, 0x10000100042L, 0x400020100000000L, 0x2100000000000081L, 0x200000200L, 0x40000000800000L, 0x101c086c3L, 0x254a035284300000L, true, 0, 0x0L), 4), 1262752); - - // gentest-435 - assertEqual(perft(new Board(0xa005085408400L, 0x10000300002L, 0x400020100000000L, 0x4100000000000081L, 0x208000000L, 0x40000000800000L, 0x109e08483L, 0x454a035284100000L, false, 0, 0x0L), 4), 2673665); - - // gentest-436 - assertEqual(perft(new Board(0x2005885408400L, 0x10000100802L, 0x400020100000000L, 0x4100000000000081L, 0x208000000L, 0x8000000000800000L, 0x109c08c83L, 0xc502035a84100000L, true, 0, 0x0L), 4), 90540); - - // gentest-437 - assertEqual(perft(new Board(0x2005885408400L, 0x10000100802L, 0x400000500000000L, 0x4100000000000021L, 0x240000000L, 0x8000000000800000L, 0x141c08c23L, 0xc502015e84100000L, false, 0, 0x0L), 4), 1868162); - - // gentest-438 - assertEqual(perft(new Board(0x2005885408400L, 0x10000204002L, 0x400000500000000L, 0x4200000000000021L, 0x240000000L, 0x8000000000800000L, 0x141e08423L, 0xc602015e84004000L, true, 0, 0x0L), 4), 1804816); - - // gentest-439 - assertEqual(perft(new Board(0x2005805408400L, 0x10080004002L, 0x2500000000L, 0x4200000020000001L, 0x240000000L, 0x8000000000800000L, 0x1e1c08403L, 0xc202017e04004000L, false, 0, 0x0L), 4), 2127541); - - // gentest-440 - assertEqual(perft(new Board(0x2005805408400L, 0x10080004002L, 0x140000040L, 0x4200000010000001L, 0x200000000L, 0x8000000000800000L, 0x191c08403L, 0xc202015a44004040L, true, 0, 0x0L), 4), 145880); - - // gentest-441 - assertEqual(perft(new Board(0x2005805408400L, 0x10080004002L, 0x100000040L, 0x4200000000100001L, 0x200L, 0x8000000040000000L, 0x1c1508403L, 0xc202015804004240L, false, 0, 0x0L), 4), 1268638); - - // gentest-442 - assertEqual(perft(new Board(0x2005801428000L, 0x10080004002L, 0x100000040L, 0x4200000000000001L, 0x400L, 0x8000000040000000L, 0x1c1408003L, 0xc202015800024440L, true, 0, 0x0L), 4), 837242); - - // gentest-443 - assertEqual(perft(new Board(0x2005801428000L, 0x10000004002L, 0x2000040L, 0x4100000000000001L, 0x400L, 0x8000000040000000L, 0x4340c003L, 0xc102015800020440L, false, 0, 0x0L), 4), 1076950); - - // gentest-444 - assertEqual(perft(new Board(0x2005801428000L, 0x10000004002L, 0x2000040L, 0x4100000000000001L, 0x8000000000L, 0x8000000000800000L, 0x3c0c003L, 0xc10201d800020040L, true, 0, 0x0L), 4), 29691); - - // gentest-445 - assertEqual(perft(new Board(0x2005801428000L, 0x10080000002L, 0x10000000000040L, 0x4100000000000001L, 0x200000L, 0x8000000000800000L, 0x10000081c08003L, 0xc102015800220040L, false, 0, 0x0L), 4), 667974); - - // gentest-446 - assertEqual(perft(new Board(0x2001801428000L, 0x10080000002L, 0x4400000000L, 0x4001000000000001L, 0x200000L, 0x8000000000800000L, 0x4081c08003L, 0xc003011c00220000L, true, 0, 0x0L), 4), 578135); - - // gentest-447 - assertEqual(perft(new Board(0x2001801428000L, 0x10080000002L, 0x10000400000000L, 0x4001000000000001L, 0x0L, 0x8000000000004000L, 0x1000008140c003L, 0xc003011c00020000L, false, 0, 0x0L), 4), 415486); - - // gentest-448 - assertEqual(perft(new Board(0x2001801428000L, 0x10080000002L, 0x10000400000000L, 0x1000000012000L, 0x0L, 0x8000000000004000L, 0x1000008141c002L, 0x8003011c00022000L, true, 0, 0x0L), 4), 46619); - - // gentest-449 - assertEqual(perft(new Board(0x2001801428000L, 0x10080000002L, 0x10000400000000L, 0x1000020000001L, 0x0L, 0x8000000000800000L, 0x10000081c08003L, 0x8003011c20020000L, false, 0, 0x0L), 4), 401858); - - // gentest-450 - assertEqual(perft(new Board(0x2001801428000L, 0x10080000002L, 0x200400000000L, 0x1000020000001L, 0x0L, 0x4000000000800000L, 0x200081c08003L, 0x4003011c20020000L, true, 0, 0x0L), 4), 429517); - - // gentest-451 - assertEqual(perft(new Board(0x2001900428000L, 0x10000004002L, 0x200400000000L, 0x1002000000001L, 0x0L, 0x4000000000800000L, 0x200100c0c003L, 0x4003013c00020000L, false, 0, 0x0L), 4), 358440); - - // gentest-452 - assertEqual(perft(new Board(0x2001900428000L, 0x10000004002L, 0x200400000000L, 0x1800000000001L, 0x0L, 0x4000000040000000L, 0x20014040c003L, 0x4003811c00020000L, true, 0, 0x0L), 4), 481170); - - // gentest-453 - assertEqual(perft(new Board(0x2001900428000L, 0x10000000012L, 0x220000000000L, 0x1800000000001L, 0x0L, 0x4000004000000000L, 0x204100408013L, 0x4003831800020000L, false, 0, 0x0L), 4), 314442); - - // gentest-454 - assertEqual(perft(new Board(0x2001900408200L, 0x400000810L, 0x220000000000L, 0x1800000000001L, 0x0L, 0x4000004000000000L, 0x204100408811L, 0x4003821c00000200L, true, 0, 0x0L), 4), 819564); - - // gentest-455 - assertEqual(perft(new Board(0x2011800408200L, 0x400000810L, 0x220000000000L, 0x1800100000000L, 0x0L, 0x2000004000000000L, 0x214100408810L, 0x2003821c00000200L, false, 0, 0x0L), 4), 557140); - - // gentest-456 - assertEqual(perft(new Board(0x2011800408200L, 0x20012L, 0x200000002000L, 0x1800100000000L, 0x0L, 0x2000004000000000L, 0x214100408012L, 0x2003801800022200L, true, 0, 0x0L), 4), 583930); - - // gentest-457 - assertEqual(perft(new Board(0x2011800408200L, 0xa0002L, 0x800000000000040L, 0x1800100000000L, 0x0L, 0x2000004000000000L, 0x800014100488002L, 0x2003801800020240L, false, 0, 0x0L), 4), 855487); - - // gentest-458 - assertEqual(perft(new Board(0x2011800408200L, 0x13L, 0x800000000000040L, 0x1000100800000L, 0x0L, 0x2000004000000000L, 0x800014100408012L, 0x2003001800800241L, true, 0, 0x0L), 4), 401456); - - // gentest-459 - assertEqual(perft(new Board(0x2001800408200L, 0x13L, 0x4000000000040L, 0x10001800000L, 0x0L, 0x2000004000000000L, 0x4004001408012L, 0x2002011800800241L, false, 0, 0x0L), 4), 769341); - - // gentest-460 - assertEqual(perft(new Board(0x1a00408200L, 0x24002L, 0x4000000000040L, 0x10001800000L, 0x0L, 0x2000004000000000L, 0x400400140c002L, 0x2000011a00820240L, true, 0, 0x0L), 4), 933062); - - // gentest-461 - assertEqual(perft(new Board(0x1a00408200L, 0x24002L, 0x4000000000040L, 0x400100800000L, 0x0L, 0x2000002000000000L, 0x400210040c002L, 0x2000401a00820240L, false, 0, 0x0L), 4), 689748); - - // gentest-462 - assertEqual(perft(new Board(0x1a00400200L, 0x24002L, 0x4000000000040L, 0xc00000010000L, 0x0L, 0x2000002000000000L, 0x4002000414002L, 0x2000c01a00020240L, true, 0, 0x0L), 4), 622484); - - // gentest-463 - assertEqual(perft(new Board(0x1a00400200L, 0x20020002L, 0x200000000000040L, 0x40800000010000L, 0x0L, 0x2000002000000000L, 0x200002020410002L, 0x2040801a00020240L, false, 0, 0x0L), 4), 950815); - - // gentest-464 - assertEqual(perft(new Board(0x1a00400200L, 0x10004002L, 0x200000000000040L, 0x40800000010000L, 0x0L, 0x2000002000000000L, 0x200002000414002L, 0x2040801a10000240L, true, 0, 0x0L), 4), 941251); - - // gentest-465 - assertEqual(perft(new Board(0x1a00400200L, 0x10004800L, 0x200000000000040L, 0x8040000000000100L, 0x0L, 0x2000002000000000L, 0x200002000404900L, 0xa040001a10000240L, false, 0, 0x0L), 4), 1010455); - - // gentest-466 - assertEqual(perft(new Board(0x1a00400200L, 0x10004000L, 0x200000000000040L, 0x40008000000100L, 0x0L, 0x2000002000000000L, 0x200002010404100L, 0x2040009a00000240L, true, 0, 0x0L), 4), 83244); - - // gentest-467 - assertEqual(perft(new Board(0x1a00400200L, 0x4000004000L, 0x200000000000040L, 0x40000000000180L, 0x0L, 0x2000000040000000L, 0x200004040404100L, 0x2040001a000002c0L, false, 0, 0x0L), 4), 464595); - - // gentest-468 - assertEqual(perft(new Board(0x1a00400200L, 0x4000004000L, 0x200020000000000L, 0x4000000010080L, 0x0L, 0x2000000040000000L, 0x200004040414000L, 0x2004021a00000280L, true, 0, 0x0L), 4), 997991); - - // gentest-469 - assertEqual(perft(new Board(0x1a00400200L, 0x4000100000L, 0x200020000000000L, 0x4000000010080L, 0x0L, 0x10000000200000L, 0x200004000710000L, 0x14021a00000280L, false, 0, 0x0L), 4), 1202493); - - // gentest-470 - assertEqual(perft(new Board(0x1a00400200L, 0x900000L, 0x200020000000000L, 0x400000000010080L, 0x0L, 0x10000000200000L, 0x200000000f10000L, 0x410021a00000280L, true, 0, 0x0L), 4), 1227470); - - // gentest-471 - assertEqual(perft(new Board(0xa40000200L, 0x900000L, 0x800001000000000L, 0x400000000010080L, 0x0L, 0x10000000200000L, 0x1040b10000L, 0xc10000a00000280L, false, 0, 0x0L), 4), 1182713); - - // gentest-472 - assertEqual(perft(new Board(0xa40000200L, 0x800008L, 0x800001000000000L, 0x404000000010000L, 0x0L, 0x10000000200000L, 0x1040a10008L, 0xc14000a00000200L, true, 0, 0x0L), 4), 645794); - - // gentest-473 - assertEqual(perft(new Board(0xa40000200L, 0x840000L, 0x800000000400000L, 0x104000000010000L, 0x0L, 0x10000000200000L, 0x40e50000L, 0x914000a00000200L, false, 0, 0x0L), 4), 724771); - - // gentest-474 - assertEqual(perft(new Board(0x248000200L, 0x40040L, 0x800000000400000L, 0x104000000010000L, 0x0L, 0x20000000200000L, 0x40650040L, 0x924000208000200L, true, 0, 0x0L), 4), 1122931); - - // gentest-475 - assertEqual(perft(new Board(0x248000200L, 0x40040L, 0x800000000400000L, 0x101000000010000L, 0x0L, 0x20000020000000L, 0x60450040L, 0x921000208000200L, false, 0, 0x0L), 4), 640016); - - // gentest-476 - assertEqual(perft(new Board(0x248000200L, 0x240000L, 0x800000000400000L, 0x401000000010000L, 0x0L, 0x400020000000L, 0x60650000L, 0xc01400208000200L, true, 0, 0x0L), 4), 944594); - - // gentest-477 - assertEqual(perft(new Board(0x248000000L, 0x240000L, 0x800000000400000L, 0x401000000010002L, 0x0L, 0x400020000000L, 0x60650000L, 0xc01400208000002L, false, 0, 0x0L), 4), 1228059); - - // gentest-478 - assertEqual(perft(new Board(0x248000000L, 0x1000040000L, 0x800000000400000L, 0x500000000010002L, 0x0L, 0x200020000000L, 0x1060450000L, 0xd00200208000002L, true, 0, 0x0L), 4), 625979); - - // gentest-479 - assertEqual(perft(new Board(0x248000000L, 0x4040000L, 0x800000000400000L, 0x500000000020002L, 0x0L, 0x40000020000000L, 0x64460000L, 0xd40000208000002L, false, 0, 0x0L), 4), 1220378); - - // gentest-480 - assertEqual(perft(new Board(0x248000000L, 0x4040000L, 0x200000400000L, 0x500000000020002L, 0x0L, 0x40000000200000L, 0x44660000L, 0x540200208000002L, true, 0, 0x0L), 4), 1988941); - - // gentest-481 - assertEqual(perft(new Board(0x248000000L, 0x4040000L, 0x200080000000L, 0x500000000020002L, 0x0L, 0x800000002000L, 0xc4062000L, 0x500a00208000002L, false, 0, 0x0L), 4), 1103781); - - // gentest-482 - assertEqual(perft(new Board(0x248000000L, 0x40200L, 0x200080000000L, 0x400000100020008L, 0x0L, 0x800000002000L, 0xc0062200L, 0x400a00308000008L, true, 0, 0x0L), 4), 723373); - - // gentest-483 - assertEqual(perft(new Board(0x248000000L, 0x4000002L, 0x200080000000L, 0x400000100020010L, 0x0L, 0x800000002000L, 0xc4022002L, 0x400a00308000010L, false, 0, 0x0L), 4), 1156641); - - // gentest-484 - assertEqual(perft(new Board(0x248000000L, 0x4000002L, 0x200000400000L, 0x400000000020081L, 0x0L, 0x800000002000L, 0x44422002L, 0x400a00208000081L, true, 0, 0x0L), 4), 1290524); - - // gentest-485 - assertEqual(perft(new Board(0x248000000L, 0x4000002L, 0x200000400000L, 0x100000000020081L, 0x0L, 0x800000002000L, 0x44422002L, 0x100a00208000081L, false, 0, 0x0L), 4), 1250103); - - // gentest-486 - assertEqual(perft(new Board(0x248000000L, 0x4000000L, 0x200000400000L, 0x100000000020002L, 0x0L, 0x800000000020L, 0x44420020L, 0x100a00208000002L, true, 0, 0x0L), 4), 140147); - - // gentest-487 - assertEqual(perft(new Board(0x248000000L, 0x4000000L, 0x200000400000L, 0x100000000020002L, 0x0L, 0x80000000002000L, 0x44422000L, 0x180200208000002L, false, 0, 0x0L), 4), 840135); - - // gentest-488 - assertEqual(perft(new Board(0x248000000L, 0x800L, 0x200000400000L, 0x20108L, 0x0L, 0x80000000002000L, 0x40422800L, 0x80200208000108L, true, 0, 0x0L), 4), 401420); - - // gentest-489 - assertEqual(perft(new Board(0x248000000L, 0x800L, 0x201000000000L, 0x100000000020008L, 0x0L, 0x80000000002000L, 0x1040022800L, 0x180200208000008L, false, 0, 0x0L), 4), 795144); - - // gentest-490 - assertEqual(perft(new Board(0x48000000L, 0x800L, 0x201000000000L, 0x200200008L, 0x0L, 0x80000000002000L, 0x1240002800L, 0x80200008200008L, true, 0, 0x0L), 4), 67966); - - // gentest-491 - assertEqual(perft(new Board(0x48000000L, 0x800L, 0x201000000000L, 0x100200001L, 0x0L, 0x80000000004000L, 0x1140004800L, 0x80200008200001L, false, 0, 0x0L), 4), 704821); - - // gentest-492 - assertEqual(perft(new Board(0x40080000L, 0x800L, 0x1080000000L, 0x200101L, 0x0L, 0x80000000004000L, 0x1040004900L, 0x80000080280001L, true, 0, 0x0L), 4), 611079); - - // gentest-493 - assertEqual(perft(new Board(0x40080000L, 0x800L, 0x80400000L, 0x100L, 0x0L, 0x80000000200000L, 0x40600800L, 0x80000080080100L, false, 0, 0x0L), 4), 148900); - - // gentest-494 - assertEqual(perft(new Board(0x40080000L, 0x20000L, 0x80400000L, 0x100L, 0x0L, 0x20000000200000L, 0x40620000L, 0x20000080080100L, true, 0, 0x0L), 4), 239797); - - // gentest-495 - assertEqual(perft(new Board(0x40080000L, 0x100000000L, 0x80400000L, 0x0L, 0x0L, 0x20000000002000L, 0x140402000L, 0x20000080080000L, false, 0, 0x0L), 4), 41627); - - // gentest-496 - assertEqual(perft(new Board(0x40080000L, 0x2000000000000L, 0x80400000L, 0x0L, 0x0L, 0x400000002000L, 0x2000040402000L, 0x400080080000L, true, 0, 0x0L), 4), 25265); - - // gentest-497 - assertEqual(perft(new Board(0x40080000L, 0x2000000000000L, 0x80400000L, 0x0L, 0x0L, 0x800000100000L, 0x2000040500000L, 0x800080080000L, false, 0, 0x0L), 4), 36294); - - // gentest-498 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-499 - assertEqual(perft(new Board(0xfb00040009f600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x9f6ffL, 0xfffb000400000000L, false, 0, 0x8100000000000081L), 4), 352927); - - // gentest-500 - assertEqual(perft(new Board(0xb900460009f600L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x29f6bfL, 0xffb9004600000000L, true, 0, 0x8100000000000081L), 4), 490486); - - // gentest-501 - assertEqual(perft(new Board(0xb900460009f600L, 0x200200000000802L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2009febbL, 0xbfb9204600000000L, false, 0, 0x8100000000000081L), 4), 600908); - - // gentest-502 - assertEqual(perft(new Board(0xb90006200bf400L, 0x200200000000802L, 0x2400000000000020L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0xbfcbbL, 0xb7b9220620000000L, true, 0, 0x8100000000000081L), 4), 430332); - - // gentest-503 - assertEqual(perft(new Board(0xb90006220df000L, 0x200200000000802L, 0x2000010000000020L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x20df8bbL, 0xb3b9230620000000L, false, 0, 0x8100000000000081L), 4), 411320); - - // gentest-504 - assertEqual(perft(new Board(0x390086220df000L, 0x4200000000000802L, 0x2000010000000020L, 0x8100000000000081L, 0x20000000004L, 0x1000000000000010L, 0x20df8b7L, 0xf339038620000000L, true, 0, 0x8100000000000081L), 4), 444924); - - // gentest-505 - assertEqual(perft(new Board(0x192086a20d7000L, 0x4200000000200002L, 0x2000010000000020L, 0x8100000000000081L, 0x20000000004L, 0x1000000000000010L, 0x822d70b7L, 0xf319238620000000L, false, 0, 0x8100000000000081L), 4), 457760); - - // gentest-506 - assertEqual(perft(new Board(0x112886a20d7000L, 0x4000040000200002L, 0x2000010000000020L, 0x8100000000000081L, 0x20000000004L, 0x1000000000000800L, 0x822d78a7L, 0xf1112f8620000000L, true, 0, 0x8100000000000000L), 4), 630780); - - // gentest-507 - assertEqual(perft(new Board(0x112886a20d7000L, 0x4000040000200002L, 0x810000000020L, 0x8100000000008001L, 0x20000000004L, 0x1000000000000008L, 0x822df02fL, 0xd111af8620000000L, false, 0, 0x8100000000000000L), 4), 674056); - - // gentest-508 - assertEqual(perft(new Board(0x112886e20d3000L, 0x4800000000200002L, 0x810000000020L, 0x8100000000008001L, 0x40000000004L, 0x1000000000000008L, 0xc22db02fL, 0xd911ad8620000000L, true, 0, 0x8100000000000000L), 4), 784614); - - // gentest-509 - assertEqual(perft(new Board(0x112886e20d3000L, 0x4800000000000002L, 0x14000800000L, 0x8100000000008001L, 0x40000000004L, 0x1000000000000008L, 0xc28db00fL, 0xd9112dc620000000L, false, 0, 0x8100000000000000L), 4), 612529); - - // gentest-510 - assertEqual(perft(new Board(0x112886e30c3000L, 0x4800000000000002L, 0x14000800000L, 0x8100000000008001L, 0x40000000004L, 0x1000000000000008L, 0xc38cb00fL, 0xd9112dc620000000L, true, 0, 0x8100000000000000L), 4), 879811); - - // gentest-511 - assertEqual(perft(new Board(0x1128c4630c3000L, 0x4800000000000800L, 0x10000800000L, 0x8100000000008001L, 0x40000000004L, 0x1000000000000008L, 0x40428cb80dL, 0xd9112d8421000000L, false, 0, 0x8100000000000000L), 4), 1265833); - - // gentest-512 - assertEqual(perft(new Board(0x1128c4630c3000L, 0x4800000000200000L, 0x400000000800000L, 0x8100000000008001L, 0x20000000004L, 0x1000000000000008L, 0x4042acb00dL, 0xdd112a8421000000L, true, 0, 0x8100000000000000L), 4), 1509358); - - // gentest-513 - assertEqual(perft(new Board(0x1128c467083000L, 0x4800000008000000L, 0x400000000800000L, 0x100800000008001L, 0x20000000004L, 0x1000000000000008L, 0x404e88b00dL, 0x5d11aa8421000000L, false, 0, 0x100000000000000L), 4), 1679934); - - // gentest-514 - assertEqual(perft(new Board(0x128d467083000L, 0x4800000008000000L, 0x400000000000020L, 0x100800000008001L, 0x10000000004L, 0x1000000000000008L, 0x404e08b02dL, 0x5d01a99421000000L, true, 0, 0x100000000000000L), 4), 1676557); - - // gentest-515 - assertEqual(perft(new Board(0x188b467083000L, 0x4800000008000000L, 0x400000000000020L, 0x100000000800001L, 0x10000000004L, 0x1000000000000008L, 0x80004e88302dL, 0x5d0109b421000000L, false, 0, 0x100000000000000L), 4), 1407813); - - // gentest-516 - assertEqual(perft(new Board(0x188b467083000L, 0x4800000008000000L, 0x40000000020L, 0x100000000800001L, 0x10000000004L, 0x1000000000000400L, 0x80004e883425L, 0x59010db421000000L, true, 0, 0x100000000000000L), 4), 1816796); - - // gentest-517 - assertEqual(perft(new Board(0x188b467083000L, 0x4000100008000000L, 0x40000000020L, 0x100000000800004L, 0x10000000200L, 0x1000000000000400L, 0x80004e883624L, 0x51011db421000000L, false, 0, 0x100000000000000L), 4), 2074049); - - // gentest-518 - assertEqual(perft(new Board(0x188b467083000L, 0x4000100008000000L, 0x8000000000020L, 0x100000000800004L, 0x10000010000L, 0x10000000000400L, 0x80004e893424L, 0x411919b421000000L, true, 0, 0x0L), 4), 1748549); - - // gentest-519 - assertEqual(perft(new Board(0x18834e7083000L, 0x4000100000020000L, 0x8000000000020L, 0x100000000800001L, 0x10000010000L, 0x10000000000400L, 0x8000468b3421L, 0x41191934a1000000L, false, 0, 0x0L), 4), 1400040); - - // gentest-520 - assertEqual(perft(new Board(0x18834e7083000L, 0x4004000000000800L, 0x8000000000020L, 0x2000000000800001L, 0x10000010000L, 0x10000000000400L, 0x800046893c21L, 0x601d0934a1000000L, true, 0, 0x0L), 4), 1619451); - - // gentest-521 - assertEqual(perft(new Board(0x18834e5083000L, 0x4004000000000800L, 0x40000000020L, 0x2000000000100001L, 0x10000010000L, 0x10000000000400L, 0x800444193c21L, 0x60150d30a1000000L, false, 0, 0x0L), 4), 1830415); - - // gentest-522 - assertEqual(perft(new Board(0x18834e5083000L, 0x4000100010000000L, 0x100000000000020L, 0x2000000000100001L, 0x10000010000L, 0x10000000000400L, 0x800454193421L, 0x61111930a1000000L, true, 0, 0x0L), 4), 1598746); - - // gentest-523 - assertEqual(perft(new Board(0x18034e5083000L, 0x4000084000000000L, 0x100000000000020L, 0x2000000000100001L, 0x10000010000L, 0x10000000000008L, 0x880444193029L, 0x61110170a1000000L, false, 0, 0x0L), 4), 1470793); - - // gentest-524 - assertEqual(perft(new Board(0x18034e5083000L, 0x4000080000200000L, 0x100000000000020L, 0x2000000000100001L, 0x40000010000L, 0x10000000000004L, 0x880444193025L, 0x61110430a1200000L, true, 0, 0x0L), 4), 1077938); - - // gentest-525 - assertEqual(perft(new Board(0x18014e5282000L, 0x4000080000000000L, 0x100000000000020L, 0x2000000000100001L, 0x40000010000L, 0x10000000000200L, 0x880404392221L, 0x61110410e1000000L, false, 0, 0x0L), 4), 984666); - - // gentest-526 - assertEqual(perft(new Board(0x18014a5682000L, 0x4000080000000000L, 0x100000000000020L, 0x2000000000100001L, 0x40000020000L, 0x8000000000200L, 0x8804043a2221L, 0x61090410a1400000L, true, 0, 0x0L), 4), 1658139); - - // gentest-527 - assertEqual(perft(new Board(0x18014a5682000L, 0x4000080000000000L, 0x100000000000020L, 0x400000000100010L, 0x40000000008L, 0x8000000000200L, 0x880404382238L, 0x45090410a1400000L, false, 0, 0x0L), 4), 800872); - - // gentest-528 - assertEqual(perft(new Board(0x18014ad602000L, 0x4000080000000000L, 0x100000000000020L, 0x400000000100010L, 0x40000000008L, 0x8000000000200L, 0x88040c302238L, 0x45090410a1400000L, true, 0, 0x0L), 4), 1332829); - - // gentest-529 - assertEqual(perft(new Board(0x10014ad602000L, 0x800010000000L, 0x100000000004000L, 0x400000000100010L, 0x40000000008L, 0x8000000000200L, 0x41c306218L, 0x5098410a1400000L, false, 0, 0x0L), 4), 1399507); - - // gentest-530 - assertEqual(perft(new Board(0x10014ad602000L, 0x800010000000L, 0x40000004000L, 0x400000000101000L, 0x800000008L, 0x8000000000200L, 0x41c307208L, 0x4098418a1400000L, true, 0, 0x0L), 4), 1484687); - - // gentest-531 - assertEqual(perft(new Board(0x10014ac602000L, 0x800010000000L, 0x40000800000L, 0x400000000101000L, 0x801000000L, 0x4000000000200L, 0x41db03200L, 0x4058418a0400000L, false, 0, 0x0L), 4), 1936628); - - // gentest-532 - assertEqual(perft(new Board(0x10014ac600000L, 0x4000000010000000L, 0x40000800000L, 0x8000000000101000L, 0x801000000L, 0x4000000000200L, 0x41df01200L, 0xc0050418a0000000L, true, 0, 0x0L), 4), 1851755); - - // gentest-533 - assertEqual(perft(new Board(0x10014ac600000L, 0x4000080000000000L, 0x40000800000L, 0x8000000000101000L, 0x10000100L, 0x4000000000200L, 0x8040cf01300L, 0xc0050410b0000000L, false, 0, 0x0L), 4), 1475983); - - // gentest-534 - assertEqual(perft(new Board(0x15ac600000L, 0x4000080000000000L, 0x8000200000000L, 0x8000000000101000L, 0x10000100L, 0x4000000000200L, 0x808040c701300L, 0xc0040013b0000000L, true, 0, 0x0L), 4), 1633892); - - // gentest-535 - assertEqual(perft(new Board(0x14ac600000L, 0x4000080000000000L, 0x200000000L, 0x8000000000011000L, 0x110000000L, 0x8000000000200L, 0x8050c611200L, 0xc0080012b0000000L, false, 0, 0x0L), 4), 1484959); - - // gentest-536 - assertEqual(perft(new Board(0x14ac600000L, 0x880000000000L, 0x200000000L, 0x800000000001001L, 0x110000000L, 0x8000000000200L, 0x8050c601201L, 0x8088012b0000000L, true, 0, 0x0L), 4), 2381671); - - // gentest-537 - assertEqual(perft(new Board(0x14ac600000L, 0x880000000000L, 0x0L, 0x800000000001001L, 0x100000200000000L, 0x8000000000200L, 0x8060c601201L, 0x9088010a0000000L, false, 0, 0x0L), 4), 229959); - - // gentest-538 - assertEqual(perft(new Board(0x14ac600000L, 0x880000000000L, 0x0L, 0x100000000001001L, 0x40200000000L, 0x8000000010000L, 0x8060c611001L, 0x1088410a0000000L, true, 0, 0x0L), 4), 190288); - - // gentest-539 - assertEqual(perft(new Board(0x14ac600000L, 0x20080000000000L, 0x0L, 0x100000010000001L, 0x40001000000L, 0x8000000010000L, 0x8041d610001L, 0x1280410a0000000L, false, 0, 0x0L), 4), 637847); - - // gentest-540 - assertEqual(perft(new Board(0x1c84600000L, 0x20080000000000L, 0x0L, 0x100000010000001L, 0x40001000000L, 0x4000000010000L, 0x80c15210001L, 0x124041080400000L, true, 0, 0x0L), 4), 722822); - - // gentest-541 - assertEqual(perft(new Board(0x1c84600000L, 0x20080000000000L, 0x0L, 0x4000000040000040L, 0x40001000000L, 0x4000000010000L, 0x80c45210040L, 0x4024041080400000L, false, 0, 0x0L), 4), 1197005); - - // gentest-542 - assertEqual(perft(new Board(0x1c84600000L, 0x20080000000000L, 0x0L, 0x4000000040000040L, 0x8000100000000L, 0x200000000010000L, 0x80d44210040L, 0x4228001080400000L, true, 0, 0x0L), 4), 1128050); - - // gentest-543 - assertEqual(perft(new Board(0x1c04e00000L, 0x20080000000000L, 0x0L, 0x4000000020000040L, 0x8000100000000L, 0x200000002000000L, 0x80d26200040L, 0x4228001000c00000L, false, 0, 0x0L), 4), 1038527); - - // gentest-544 - assertEqual(perft(new Board(0x1c04e00000L, 0x22000000000000L, 0x0L, 0x4020000040L, 0x1000100000000L, 0x200000002000000L, 0x2000d26200040L, 0x221005000c00000L, true, 0, 0x0L), 4), 524984); - - // gentest-545 - assertEqual(perft(new Board(0x1c04e00000L, 0x20080000000000L, 0x0L, 0x8020000040L, 0x1000200000000L, 0x200000002000000L, 0x80e26200040L, 0x221009000c00000L, false, 0, 0x0L), 4), 77806); - - // gentest-546 - assertEqual(perft(new Board(0x1c04e00000L, 0x20002000000000L, 0x0L, 0x4020000040L, 0x20200000000L, 0x200000002000000L, 0x2e26200040L, 0x220025000c00000L, true, 0, 0x0L), 4), 368728); - - // gentest-547 - assertEqual(perft(new Board(0x1c04e00000L, 0x880000000000L, 0x0L, 0x4020000008L, 0x20200000000L, 0x200000002000000L, 0x80e26200008L, 0x200825000c00000L, false, 0, 0x0L), 4), 318541); - - // gentest-548 - assertEqual(perft(new Board(0x1c04e00000L, 0x880000000000L, 0x0L, 0x4020000004L, 0x20200000000L, 0x200000002000000L, 0x80e26200004L, 0x200825000c00000L, true, 0, 0x0L), 4), 317762); - - // gentest-549 - assertEqual(perft(new Board(0xc14e00000L, 0x1000800000000000L, 0x0L, 0x4080000004L, 0x20200000000L, 0x200000002000000L, 0x1000000e86200004L, 0x200824010c00000L, false, 0, 0x0L), 4), 405817); - - // gentest-550 - assertEqual(perft(new Board(0xc14e00000L, 0x800000000000L, 0x0L, 0x4080000004L, 0x20200000000L, 0x4000002000000L, 0xe86200004L, 0x4824010c00000L, true, 0, 0x0L), 4), 489546); - - // gentest-551 - assertEqual(perft(new Board(0xc14e00000L, 0x800000000000L, 0x0L, 0x4080000040L, 0x200000000L, 0x4000000010000L, 0xc84210040L, 0x4804210c00000L, false, 0, 0x0L), 4), 389992); - - // gentest-552 - assertEqual(perft(new Board(0xc14e00000L, 0x0L, 0x0L, 0x800040000040L, 0x10000000000L, 0x4000000010000L, 0x800c04210040L, 0x4010050c00000L, true, 0, 0x0L), 4), 72095); - - // gentest-553 - assertEqual(perft(new Board(0xc10e00000L, 0x0L, 0x0L, 0x800040000040L, 0x4000000L, 0x4000000010000L, 0x800c00210040L, 0x4000054c00000L, false, 0, 0x0L), 4), 315221); - - // gentest-554 - assertEqual(perft(new Board(0xc10e00000L, 0x0L, 0x0L, 0x800080000040L, 0x80000L, 0x4000001000000L, 0x800c01200040L, 0x4000090c80000L, true, 0, 0x0L), 4), 333002); - - // gentest-555 - assertEqual(perft(new Board(0xc10e00000L, 0x0L, 0x0L, 0x800080004000L, 0x10000000000L, 0x4000000020000L, 0x800c00224000L, 0x4010090c00000L, false, 0, 0x0L), 4), 450219); - - // gentest-556 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x800080000000L, 0x200000000000L, 0x4000000040000L, 0x800c00240000L, 0x4200090404000L, true, 0, 0x0L), 4), 108187); - - // gentest-557 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x2000800000L, 0x0L, 0x4000000040000L, 0x2c00240000L, 0x4000010c04000L, false, 0, 0x0L), 4), 101623); - - // gentest-558 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x200002000000000L, 0x0L, 0x4000000020000L, 0x2c00220000L, 0x204000010404000L, true, 0, 0x0L), 4), 38907); - - // gentest-559 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x200004000000000L, 0x0L, 0x800000000040000L, 0x4c00240000L, 0xa00000010404000L, false, 0, 0x0L), 4), 97160); - - // gentest-560 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x4000002000L, 0x0L, 0x800000004000000L, 0x4c04200000L, 0x800000010406000L, true, 0, 0x0L), 4), 84434); - - // gentest-561 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x40000000002000L, 0x0L, 0x8000004000000L, 0x40000c04200000L, 0x8000010406000L, false, 0, 0x0L), 4), 17198); - - // gentest-562 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x40000000001000L, 0x0L, 0x400000002000000L, 0x40000c02200000L, 0x400000010405000L, true, 0, 0x0L), 4), 109499); - - // gentest-563 - assertEqual(perft(new Board(0xc10604000L, 0x0L, 0x0L, 0x100000001000L, 0x0L, 0x8000002000000L, 0x100c02200000L, 0x8000010405000L, false, 0, 0x0L), 4), 100882); - - // gentest-564 - assertEqual(perft(new Board(0xc10404000L, 0x0L, 0x0L, 0x1000200000L, 0x0L, 0x8000002000000L, 0x1c02000000L, 0x8000010604000L, true, 0, 0x0L), 4), 60162); - - // gentest-565 - assertEqual(perft(new Board(0xc10404000L, 0x0L, 0x0L, 0x1000200000L, 0x0L, 0x10000002000000L, 0x1c02000000L, 0x10000010604000L, false, 0, 0x0L), 4), 16510); - - // gentest-566 - assertEqual(perft(new Board(0xc10404000L, 0x0L, 0x0L, 0x1000000000002000L, 0x0L, 0x20000002000000L, 0x1000000c02000000L, 0x20000010406000L, true, 0, 0x0L), 4), 116104); - - // gentest-567 - assertEqual(perft(new Board(0xc10404000L, 0x0L, 0x0L, 0x8000000000200000L, 0x0L, 0x20000002000000L, 0x8000000c02000000L, 0x20000010604000L, false, 0, 0x0L), 4), 128697); - - // gentest-568 - assertEqual(perft(new Board(0xc10400000L, 0x0L, 0x0L, 0x8000000000200000L, 0x40L, 0x400001000000L, 0x8000000c01000000L, 0x400010600040L, true, 0, 0x0L), 4), 251525); - - // gentest-569 - assertEqual(perft(new Board(0xc10400000L, 0x0L, 0x0L, 0x4000000000000020L, 0x40L, 0x400001000000L, 0x4000000c01000000L, 0x400010400060L, false, 0, 0x0L), 4), 39585); - - // gentest-570 - assertEqual(perft(new Board(0xc10400000L, 0x0L, 0x0L, 0x4000000000000004L, 0x40L, 0x20000002000000L, 0x4000000c02000000L, 0x20000010400044L, true, 0, 0x0L), 4), 162599); - - // gentest-571 - assertEqual(perft(new Board(0xc10400000L, 0x0L, 0x0L, 0x400000000004L, 0x100000L, 0x20000002000000L, 0x400c02000000L, 0x20000010500004L, false, 0, 0x0L), 4), 152924); - - // gentest-572 - assertEqual(perft(new Board(0xc10400000L, 0x0L, 0x0L, 0x400000000004L, 0x800L, 0x20000200000000L, 0x400e00000000L, 0x20000010400804L, true, 0, 0x0L), 4), 251768); - - // gentest-573 - assertEqual(perft(new Board(0xc10400000L, 0x0L, 0x0L, 0x100000000004L, 0x0L, 0x20000002000000L, 0x100c02000000L, 0x20000010400004L, false, 0, 0x0L), 4), 70169); - - // gentest-574 - assertEqual(perft(new Board(0xc10400000L, 0x0L, 0x0L, 0x100000000010L, 0x0L, 0x20000100000000L, 0x100d00000000L, 0x20000010400010L, true, 0, 0x0L), 4), 61735); - - // gentest-575 - assertEqual(perft(new Board(0xc00500000L, 0x0L, 0x0L, 0x800000000010L, 0x0L, 0x20000002000000L, 0x800c02000000L, 0x20000000500010L, false, 0, 0x0L), 4), 92733); - - // gentest-576 - assertEqual(perft(new Board(0xc00401000L, 0x0L, 0x0L, 0x8010L, 0x0L, 0x40000002000000L, 0xc02008000L, 0x40000000401010L, true, 0, 0x0L), 4), 73129); - - // gentest-577 - assertEqual(perft(new Board(0x80400401000L, 0x0L, 0x0L, 0x80000010L, 0x0L, 0x2000000002000000L, 0x80482000000L, 0x2000000000401010L, false, 0, 0x0L), 4), 64660); - - // gentest-578 - assertEqual(perft(new Board(0x80400401000L, 0x0L, 0x0L, 0x80800000L, 0x0L, 0x2000000000020000L, 0x80480020000L, 0x2000000000c01000L, true, 0, 0x0L), 4), 83131); - - // gentest-579 - assertEqual(perft(new Board(0x8000400401000L, 0x0L, 0x0L, 0x8002000000L, 0x0L, 0x2000000000020000L, 0x8000402020000L, 0x2000008000401000L, false, 0, 0x0L), 4), 196892); - - // gentest-580 - assertEqual(perft(new Board(0x8000400400000L, 0x0L, 0x10L, 0x8040000000L, 0x0L, 0x10000000020000L, 0x8000440020000L, 0x10008000400010L, true, 0, 0x0L), 4), 198348); - - // gentest-581 - assertEqual(perft(new Board(0x8000400400000L, 0x0L, 0x10L, 0x8000000000L, 0x0L, 0x800000000020000L, 0x8008400020000L, 0x800000000400010L, false, 0, 0x0L), 4), 35972); - - // gentest-582 - assertEqual(perft(new Board(0x8000400000000L, 0x0L, 0x50L, 0x80000000L, 0x0L, 0x800000000020000L, 0x8000480020000L, 0x800000000000050L, true, 0, 0x0L), 4), 84820); - - // gentest-583 - assertEqual(perft(new Board(0x400000000L, 0x0L, 0x50L, 0x2000000L, 0x800000000000000L, 0x10000000020000L, 0x800000402020000L, 0x10000000000050L, false, 0, 0x0L), 4), 38271); - - // gentest-584 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-585 - assertEqual(perft(new Board(0xbf40000400fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000400L, 0x1000000000000010L, 0x400fff7L, 0xffbf400000000000L, false, 0, 0x8100000000000081L), 4), 407090); - - // gentest-586 - assertEqual(perft(new Board(0x3dc0020400fb00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000400L, 0x1000000000000010L, 0x401fff5L, 0xff3dc00200000000L, true, 0, 0x8100000000000081L), 4), 419743); - - // gentest-587 - assertEqual(perft(new Board(0x35c8060000fb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000400L, 0x1000000000000010L, 0x40400fff5L, 0xff35c80200000000L, false, 0, 0x8100000000000081L), 4), 909494); - - // gentest-588 - assertEqual(perft(new Board(0x35c8060010eb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, 0x1000000000000400L, 0x8000000000010L, 0x40410eff5L, 0xf73dc80200000000L, true, 0, 0x81L), 4), 673655); - - // gentest-589 - assertEqual(perft(new Board(0x3489060010eb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, 0x1000400000000000L, 0x8000000000010L, 0x40040410ebf5L, 0xf73c890200000000L, false, 0, 0x81L), 4), 750848); - - // gentest-590 - assertEqual(perft(new Board(0x1489260010eb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, 0x40400000000000L, 0x8000000000010L, 0x4000040410ebf5L, 0xe71cc92200000000L, true, 0, 0x81L), 4), 1101005); - - // gentest-591 - assertEqual(perft(new Board(0x14092600906b00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, 0xc00000000000L, 0x100000000010L, 0x800404906bf5L, 0xe714592200000000L, false, 0, 0x81L), 4), 775616); - - // gentest-592 - assertEqual(perft(new Board(0x14012e00906b00L, 0x4200000000010040L, 0x440000000000024L, 0x8100000000000081L, 0xc00000000000L, 0x100000000010L, 0x800400916bf5L, 0xc754512a00000000L, true, 0, 0x81L), 4), 896972); - - // gentest-593 - assertEqual(perft(new Board(0x14012e10806b00L, 0x4200000000010040L, 0x400000000040024L, 0x8100000000000081L, 0x400020000000L, 0x100000000010L, 0x430816bf5L, 0xc714512a00040000L, false, 0, 0x81L), 4), 1790569); - - // gentest-594 - assertEqual(perft(new Board(0x14012e10806300L, 0x4200000000010040L, 0x400000000000824L, 0x8100000000000081L, 0x4040000000L, 0x100000000010L, 0x4508163f5L, 0xc714116a00000800L, true, 0, 0x81L), 4), 118738); - - // gentest-595 - assertEqual(perft(new Board(0x14002f10c02300L, 0x4200000000010040L, 0x400000000000824L, 0x8100000000000081L, 0x4040000000L, 0x100000001000L, 0x450c133e5L, 0xc714106b00000800L, false, 0, 0x0L), 4), 1083773); - - // gentest-596 - assertEqual(perft(new Board(0x1400271ac02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000010000000081L, 0x4040000000L, 0x100000001000L, 0x452c131e5L, 0xc614116308000800L, true, 0, 0x0L), 4), 924987); - - // gentest-597 - assertEqual(perft(new Board(0x1400271ac02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000010000000082L, 0x4040000000L, 0x20000000200000L, 0x452e121e6L, 0xc634016308000800L, false, 0, 0x0L), 4), 1531221); - - // gentest-598 - assertEqual(perft(new Board(0x1400271ac02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000100000008002L, 0x4040000000L, 0x400000200000L, 0x452e1a166L, 0xc614506308000800L, true, 0, 0x0L), 4), 902176); - - // gentest-599 - assertEqual(perft(new Board(0x14012618c02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000040000008002L, 0x4040000000L, 0x400000200000L, 0x10450e1a166L, 0xc614446208000800L, false, 0, 0x0L), 4), 1091367); - - // gentest-600 - assertEqual(perft(new Board(0x14012618c02100L, 0x4200000000010040L, 0x400000100080004L, 0x8000200000008002L, 0x4040000000L, 0x400000200000L, 0x10450e9a146L, 0xc614606308000000L, true, 0, 0x0L), 4), 1159999); - - // gentest-601 - assertEqual(perft(new Board(0x15002618c02100L, 0x4200000000010040L, 0x100100180000L, 0x8000200000008002L, 0x4040000000L, 0x400000200000L, 0x1000450f9a142L, 0xc214706308000000L, false, 0, 0x0L), 4), 1725479); - - // gentest-602 - assertEqual(perft(new Board(0x15002690403100L, 0x4200000000010040L, 0x100100080000L, 0x8000200000008002L, 0x4040000000L, 0x400000200000L, 0x10004d069a142L, 0xc214706300001000L, true, 0, 0x0L), 4), 1586826); - - // gentest-603 - assertEqual(perft(new Board(0x15003680403100L, 0x4200000000010040L, 0x100100080000L, 0x8000200000008001L, 0x4040000000L, 0x40000000200000L, 0x10014c069a141L, 0xc254306300001000L, false, 0, 0x0L), 4), 2366746); - - // gentest-604 - assertEqual(perft(new Board(0x15003680403100L, 0x4000010000010040L, 0x100100080000L, 0x8000200000000081L, 0x4040000000L, 0x800000200000L, 0x10014c06921c1L, 0xc014b16300001000L, true, 0, 0x0L), 4), 1766663); - - // gentest-605 - assertEqual(perft(new Board(0x150016c0403100L, 0x4000010000010040L, 0x100100000400L, 0x8000200000000081L, 0x4000000000L, 0x800000004000L, 0x10014804165c1L, 0xc014b14340001000L, false, 0, 0x0L), 4), 1630260); - - // gentest-606 - assertEqual(perft(new Board(0x140016c0403100L, 0x4000010000010040L, 0x100002100000400L, 0xa000000000000081L, 0x4000000000L, 0x800000004000L, 0x1000014804165c1L, 0xe014816340001000L, true, 0, 0x0L), 4), 1892584); - - // gentest-607 - assertEqual(perft(new Board(0x140016c0403100L, 0x4000010000010040L, 0x2110000002L, 0x8200000000000081L, 0x4000000000L, 0x800000004000L, 0x14904161c3L, 0xc214816340001000L, false, 0, 0x0L), 4), 1024405); - - // gentest-608 - assertEqual(perft(new Board(0x140012c0403100L, 0x4000000400010040L, 0x2012080000L, 0x8200000000000081L, 0x4000000000L, 0x800000004000L, 0x10904961c1L, 0xc214806642001000L, true, 0, 0x0L), 4), 1973950); - - // gentest-609 - assertEqual(perft(new Board(0x140012c0403100L, 0x4000010000000440L, 0x2012080000L, 0x8200000000000090L, 0x4000000000L, 0x800000004000L, 0x10904865d0L, 0xc214816242001000L, false, 0, 0x0L), 4), 1566387); - - // gentest-610 - assertEqual(perft(new Board(0x140012c0402100L, 0x4000010000001400L, 0x100012080000L, 0x8200000000000090L, 0x800L, 0x800000004000L, 0x1090487590L, 0xc214910242000800L, true, 0, 0x0L), 4), 2066184); - - // gentest-611 - assertEqual(perft(new Board(0x140012c0402100L, 0x4000010000000440L, 0x80100002080000L, 0x8000020000000090L, 0x800L, 0x800000004000L, 0x800010804865d0L, 0xc014930242000800L, false, 0, 0x0L), 4), 1408784); - - // gentest-612 - assertEqual(perft(new Board(0x140012c0402100L, 0x4000010000000040L, 0x80100002080000L, 0x8000020000000082L, 0x40000000000L, 0x800000004000L, 0x800010804861c2L, 0xc014970242000000L, true, 0, 0x0L), 4), 235680); - - // gentest-613 - assertEqual(perft(new Board(0x140012c0402100L, 0x4000010000000040L, 0x80100002000020L, 0x8000020000000082L, 0x4000000L, 0x800000008000L, 0x8000108040a1e2L, 0xc014930246000000L, false, 0, 0x0L), 4), 1120504); - - // gentest-614 - assertEqual(perft(new Board(0x140010c0402000L, 0x4000010000000040L, 0x88000202000000L, 0x8000020000000082L, 0x100L, 0x800000008000L, 0x8000128040a0c2L, 0xc01c830042000100L, true, 0, 0x0L), 4), 1536493); - - // gentest-615 - assertEqual(perft(new Board(0x140010c0402000L, 0x4000000000000040L, 0x88010002000000L, 0x8000020000000088L, 0x10000L, 0x800000008000L, 0x8001108040a0c8L, 0xc01c820042010000L, false, 0, 0x0L), 4), 1651559); - - // gentest-616 - assertEqual(perft(new Board(0x100014c0402000L, 0x4000000000000040L, 0x8010000080800L, 0x8000020000000088L, 0x10000L, 0x800000008000L, 0x1108048a0c8L, 0xc018820440010800L, true, 0, 0x0L), 4), 1588037); - - // gentest-617 - assertEqual(perft(new Board(0x100014c0402000L, 0x4000000000000040L, 0x408000000080800L, 0x80000200000000a0L, 0x1000000000000L, 0x800000008000L, 0x40000108048a0e0L, 0xc019820440000800L, false, 0, 0x0L), 4), 1263011); - - // gentest-618 - assertEqual(perft(new Board(0x100014c0402000L, 0x4000000000000040L, 0x400400200000800L, 0x82000000000000a0L, 0x1000000000000L, 0x800000008000L, 0x40040108040a0e0L, 0xc211800640000800L, true, 0, 0x0L), 4), 1170122); - - // gentest-619 - assertEqual(perft(new Board(0x100014c0402000L, 0x4000000000000040L, 0x400200000800L, 0x8400000000000081L, 0x1000000000000L, 0x800000008000L, 0x40108040a0c1L, 0xc411800640000800L, false, 0, 0x0L), 4), 1188864); - - // gentest-620 - assertEqual(perft(new Board(0x100014e0400000L, 0x4000000000000040L, 0x400200100000L, 0x8400000000000081L, 0x10000000000L, 0x800000008000L, 0x4010a04080c1L, 0xc410810640100000L, true, 0, 0x0L), 4), 1003013); - - // gentest-621 - assertEqual(perft(new Board(0x100014e0400000L, 0x4000000000000040L, 0x210100000L, 0x8400000000000082L, 0x10000000000L, 0x40000000008000L, 0x10b04080c2L, 0xc450010640100000L, false, 0, 0x0L), 4), 1424338); - - // gentest-622 - assertEqual(perft(new Board(0x100014e0400000L, 0x4000000000000040L, 0x210100000L, 0x8400000000000280L, 0x100000000000000L, 0x40000000008000L, 0x10b04082c0L, 0xc550000640100000L, true, 0, 0x0L), 4), 1413398); - - // gentest-623 - assertEqual(perft(new Board(0x100014e0400000L, 0x4000000000000040L, 0x10180000L, 0x8400000000000180L, 0x100000000000000L, 0x40000000004000L, 0x10b04041c0L, 0xc550000440180000L, false, 0, 0x0L), 4), 1052959); - - // gentest-624 - assertEqual(perft(new Board(0x100014e0400000L, 0x4000000000000040L, 0x10180000L, 0x8400000000000081L, 0x2000000000000L, 0x20000000004000L, 0x10b04040c1L, 0xc432000440180000L, true, 0, 0x0L), 4), 1151941); - - // gentest-625 - assertEqual(perft(new Board(0x100014e0400000L, 0x4000000000000040L, 0x10180000L, 0xa000010000000080L, 0x2000000000000L, 0x20000000004000L, 0x110b04040c0L, 0xe032000440180000L, false, 0, 0x0L), 4), 1129389); - - // gentest-626 - assertEqual(perft(new Board(0x100014e0400000L, 0x200000000040L, 0x10180000L, 0x8400000001000080L, 0x2000000000000L, 0x20000000004000L, 0x10b14040c0L, 0x8432200440180000L, true, 0, 0x0L), 4), 1601708); - - // gentest-627 - assertEqual(perft(new Board(0x102004e0400000L, 0x40L, 0x400000180000L, 0x8400000001000080L, 0x20000000000L, 0x20000000004000L, 0x6000a14040c0L, 0x8430020440180000L, false, 0, 0x0L), 4), 171569); - - // gentest-628 - assertEqual(perft(new Board(0x102004e0400000L, 0x200000L, 0x10000100000L, 0x8400000001000080L, 0x20000000000L, 0x400000004000L, 0x2000a1604080L, 0x8410430440100000L, true, 0, 0x0L), 4), 1823581); - - // gentest-629 - assertEqual(perft(new Board(0x102004e0400000L, 0x800000L, 0x10000100000L, 0x8400000001000080L, 0x2L, 0x400000004000L, 0x2000a1c04080L, 0x8410410440100002L, false, 0, 0x0L), 4), 1213332); - - // gentest-630 - assertEqual(perft(new Board(0x102024c0400000L, 0x800000L, 0x10000100000L, 0x9000000001000080L, 0x2L, 0x800000004000L, 0x202081c04080L, 0x9010810440100002L, true, 0, 0x0L), 4), 1132776); - - // gentest-631 - assertEqual(perft(new Board(0x10202480c00000L, 0x0L, 0x10000100000L, 0x9000000000000180L, 0x2L, 0x800000008000L, 0x202080408180L, 0x9010810400900002L, false, 0, 0x0L), 4), 879131); - - // gentest-632 - assertEqual(perft(new Board(0x10202480c00000L, 0x0L, 0x10000000000L, 0x9000000000000140L, 0x20000L, 0x800000008000L, 0x202080408140L, 0x9010810400820000L, true, 0, 0x0L), 4), 1017732); - - // gentest-633 - assertEqual(perft(new Board(0x10202480c00000L, 0x0L, 0x10000000000L, 0x9000000020000040L, 0x200000000L, 0x800000008000L, 0x2020a0408040L, 0x9010810600800000L, false, 0, 0x0L), 4), 540242); - - // gentest-634 - assertEqual(perft(new Board(0x10202480c00000L, 0x0L, 0x400000000000000L, 0x9000000020000010L, 0x1000L, 0x800000008000L, 0x2020a0408010L, 0x9410800400801000L, true, 0, 0x0L), 4), 116716); - - // gentest-635 - assertEqual(perft(new Board(0x202480c00000L, 0x0L, 0x400000000000000L, 0x8810000020000000L, 0x0L, 0x800000008000L, 0x102020a0408000L, 0x8c00800400800000L, false, 0, 0x0L), 4), 310283); - - // gentest-636 - assertEqual(perft(new Board(0x202480c00000L, 0x0L, 0x400000000000000L, 0x8040000020000002L, 0x0L, 0x800000008000L, 0x402020a0408000L, 0x8400800400800002L, true, 0, 0x0L), 4), 301555); - - // gentest-637 - assertEqual(perft(new Board(0x202480c00000L, 0x0L, 0x400000000000000L, 0x8001000004000001L, 0x0L, 0x800000008000L, 0x1202084408000L, 0x8400800400800001L, false, 0, 0x0L), 4), 343882); - - // gentest-638 - assertEqual(perft(new Board(0x202480c00000L, 0x0L, 0x20000L, 0x8001000000000401L, 0x0L, 0x800000008000L, 0x1202080408400L, 0x8000800400820001L, true, 0, 0x0L), 4), 580549); - - // gentest-639 - assertEqual(perft(new Board(0x202480c00000L, 0x0L, 0x20000L, 0x200010000000005L, 0x0L, 0x800000008000L, 0x212080408004L, 0x200800400820001L, false, 0, 0x0L), 4), 529164); - - // gentest-640 - assertEqual(perft(new Board(0x202480c00000L, 0x0L, 0x20000L, 0x200010006000000L, 0x0L, 0x800000008000L, 0x212084408000L, 0x200800402820000L, true, 0, 0x0L), 4), 414173); - - // gentest-641 - assertEqual(perft(new Board(0x202480c00000L, 0x0L, 0x20000L, 0x20006000001L, 0x0L, 0x800000000080L, 0x202084400081L, 0x820402820000L, false, 0, 0x0L), 4), 263895); - - // gentest-642 - assertEqual(perft(new Board(0x202480408000L, 0x0L, 0x20000L, 0x20210000001L, 0x0L, 0x800000000080L, 0x202090400081L, 0x820600028000L, true, 0, 0x0L), 4), 410826); - - // gentest-643 - assertEqual(perft(new Board(0x20002480408000L, 0x0L, 0x20000L, 0x2100200000001L, 0x0L, 0x800000000080L, 0x20102080400081L, 0x2800600028000L, false, 0, 0x0L), 4), 75293); - - // gentest-644 - assertEqual(perft(new Board(0x2000a400408000L, 0x0L, 0x100000000000L, 0x2000200000001L, 0x0L, 0x80000000000080L, 0x2000a000400081L, 0x82100600008000L, true, 0, 0x0L), 4), 277220); - - // gentest-645 - assertEqual(perft(new Board(0xa400408000L, 0x0L, 0x100000000000L, 0x2002000000010200L, 0x0L, 0x80000000000080L, 0x200000a000410080L, 0x82100400008200L, false, 0, 0x0L), 4), 508390); - - // gentest-646 - assertEqual(perft(new Board(0xa400408000L, 0x0L, 0x100000000000L, 0x200000002010100L, 0x0L, 0x80000000000080L, 0x20000a000410080L, 0x80100402008100L, true, 0, 0x0L), 4), 499386); - - // gentest-647 - assertEqual(perft(new Board(0xa440008000L, 0x0L, 0x100000000000L, 0x200010000000300L, 0x0L, 0x80000000000080L, 0x20001a040000080L, 0x80100400008300L, false, 0, 0x0L), 4), 345849); - - // gentest-648 - assertEqual(perft(new Board(0xa440008000L, 0x0L, 0x400000000000000L, 0x4000010000010200L, 0x0L, 0x80000000000080L, 0x400001a040000080L, 0x480000400018200L, true, 0, 0x0L), 4), 313582); - - // gentest-649 - assertEqual(perft(new Board(0xe400008000L, 0x0L, 0x400000000000000L, 0x4100000000014000L, 0x0L, 0x80000000000080L, 0x410000e000000080L, 0x48000040001c000L, false, 0, 0x0L), 4), 219413); - - // gentest-650 - assertEqual(perft(new Board(0xe400008000L, 0x0L, 0x400000000000000L, 0x2100000000004001L, 0x0L, 0x80000000000080L, 0x210000e000000080L, 0x48000040000c001L, true, 0, 0x0L), 4), 15507); - - // gentest-651 - assertEqual(perft(new Board(0xe400008000L, 0x0L, 0x400000000000000L, 0x2000000000000040L, 0x0L, 0x80000000000080L, 0x200000e0000000c0L, 0x480000400008000L, false, 0, 0x0L), 4), 30796); - - // gentest-652 - assertEqual(perft(new Board(0xe400000000L, 0x0L, 0x8000000000000L, 0x2000000000000000L, 0x0L, 0x80000000000040L, 0x200000e000000040L, 0x88000400000000L, true, 0, 0x0L), 4), 20076); - - // gentest-653 - assertEqual(perft(new Board(0xe400000000L, 0x0L, 0x8000000000000L, 0x20000000000000L, 0x0L, 0x8000000000004000L, 0x2000e000004000L, 0x8008000400000000L, false, 0, 0x0L), 4), 24740); - - // gentest-654 - assertEqual(perft(new Board(0xe400000000L, 0x0L, 0x1000000L, 0x20000000000000L, 0x0L, 0x8000000000002000L, 0x2000e000002000L, 0x8000000401000000L, true, 0, 0x0L), 4), 28902); - - // gentest-655 - assertEqual(perft(new Board(0x40a400000000L, 0x0L, 0x400L, 0x20000000000000L, 0x0L, 0x8000000000200000L, 0x2040a000200000L, 0x8000000400000400L, false, 0, 0x0L), 4), 22130); - - // gentest-656 - assertEqual(perft(new Board(0x40a400000000L, 0x0L, 0x80000L, 0x1000000000000L, 0x0L, 0x8000000000200000L, 0x140a000200000L, 0x8000000400080000L, true, 0, 0x0L), 4), 42845); - - // gentest-657 - assertEqual(perft(new Board(0x608400000000L, 0x0L, 0x20L, 0x1000000000000L, 0x0L, 0x8000000010000000L, 0x1608010000000L, 0x8000000400000020L, false, 0, 0x0L), 4), 26060); - - // gentest-658 - assertEqual(perft(new Board(0x608400000000L, 0x0L, 0x10000000000L, 0x1000000000000L, 0x0L, 0x8000002000000000L, 0x160a000000000L, 0x8000010400000000L, true, 0, 0x0L), 4), 19191); - - // gentest-659 - assertEqual(perft(new Board(0x608400000000L, 0x0L, 0x400000000000000L, 0x1000000000000L, 0x0L, 0x8000000020000000L, 0x1608020000000L, 0x8400000400000000L, false, 0, 0x0L), 4), 36352); - - // gentest-660 - assertEqual(perft(new Board(0x608400000000L, 0x0L, 0x400000000000000L, 0x20000000000000L, 0x0L, 0x8000000020000000L, 0x20608020000000L, 0x8400000400000000L, true, 0, 0x0L), 4), 16295); - - // gentest-661 - assertEqual(perft(new Board(0x608400000000L, 0x0L, 0x8000000000000L, 0x200000000000000L, 0x0L, 0x8000000020000000L, 0x200608020000000L, 0x8008000400000000L, false, 0, 0x0L), 4), 3519); - - // gentest-662 - assertEqual(perft(new Board(0x608400000000L, 0x0L, 0x400000000000000L, 0x200000000000000L, 0x0L, 0x4000000000200000L, 0x200608000200000L, 0x4400000400000000L, true, 0, 0x0L), 4), 16797); - - // gentest-663 - assertEqual(perft(new Board(0x608004000000L, 0x0L, 0x400000000000000L, 0x1L, 0x0L, 0x4000000000200000L, 0x608000200001L, 0x4400000004000000L, false, 0, 0x0L), 4), 38487); - - // gentest-664 - assertEqual(perft(new Board(0x608004000000L, 0x0L, 0x80L, 0x1L, 0x0L, 0x4000000040000000L, 0x608040000001L, 0x4000000004000080L, true, 0, 0x0L), 4), 43843); - - // gentest-665 - assertEqual(perft(new Board(0x608004000000L, 0x0L, 0x80L, 0x8L, 0x0L, 0x8000000000800000L, 0x608000800008L, 0x8000000004000080L, false, 0, 0x0L), 4), 30745); - - // gentest-666 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-667 - assertEqual(perft(new Board(0xfb04000002fd00L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2fffbL, 0xfffb040000000000L, false, 0, 0x8100000000000081L), 4), 361756); - - // gentest-668 - assertEqual(perft(new Board(0xd304280402f900L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x402fbfbL, 0xffd3042800000000L, true, 0, 0x8100000000000081L), 4), 611204); - - // gentest-669 - assertEqual(perft(new Board(0x5304a80600f900L, 0x4200000000800002L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x680fbbbL, 0xff5304a800000000L, false, 0, 0x8100000000000081L), 4), 743804); - - // gentest-670 - assertEqual(perft(new Board(0x5300a80700f800L, 0x4200000000800002L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x580fabbL, 0xff5300a802000000L, true, 0, 0x8100000000000081L), 4), 776716); - - // gentest-671 - assertEqual(perft(new Board(0x300a80700f800L, 0x4200000000800002L, 0x2400001000000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x100580f8bbL, 0xff0300a802000000L, false, 0, 0x8100000000000081L), 4), 1365627); - - // gentest-672 - assertEqual(perft(new Board(0x102a80700f800L, 0x4000000000800002L, 0x2600000000000020L, 0x8100000000000081L, 0x80000008L, 0x1000000000000010L, 0x20000000580f8bbL, 0xf50102a882000000L, true, 0, 0x8100000000000081L), 4), 1007791); - - // gentest-673 - assertEqual(perft(new Board(0x102a84700b800L, 0x4000000000800002L, 0x2202000000000020L, 0x8100000000000081L, 0x80020000L, 0x1000000000000010L, 0x20000004582b8b3L, 0xf10302a882000000L, false, 0, 0x8100000000000081L), 4), 1538359); - - // gentest-674 - assertEqual(perft(new Board(0x102a00f00b800L, 0x4000000000800002L, 0x2202000000000020L, 0x8100000000000081L, 0x200000020000L, 0x1000000000000010L, 0x20000800582b8b3L, 0xf10322200a000000L, true, 0, 0x8100000000000081L), 4), 1913479); - - // gentest-675 - assertEqual(perft(new Board(0x102a00f00b800L, 0x4000000000800002L, 0x2000080800000020L, 0x8100000000000081L, 0x200000040000L, 0x1000000000000010L, 0x8800584b8b3L, 0xf10122280a000000L, false, 0, 0x8100000000000081L), 4), 2455013); - - // gentest-676 - assertEqual(perft(new Board(0x102a00f00b800L, 0x10000000000042L, 0x2000080800000020L, 0x8100000000000081L, 0x200000040000L, 0x800000000000010L, 0x8800504b8f3L, 0xa91122280a000000L, true, 0, 0x81L), 4), 2238341); - - // gentest-677 - assertEqual(perft(new Board(0x102a00f00b800L, 0x10000000200002L, 0x6000080000004000L, 0x8100000000000081L, 0x200000040000L, 0x800000000000010L, 0x8800524f893L, 0xe91122200a000000L, false, 0, 0x81L), 4), 2010203); - - // gentest-678 - assertEqual(perft(new Board(0x2a10f00b800L, 0x200002L, 0x6010000000004000L, 0x8100000000000081L, 0x200000040000L, 0x8000000000010L, 0x1000800524f893L, 0xe10822210a000000L, true, 0, 0x81L), 4), 1941947); - - // gentest-679 - assertEqual(perft(new Board(0x2a11f00a800L, 0x200002L, 0x6010000000004000L, 0x8000010000000081L, 0x200000080000L, 0x8000000000010L, 0x1000801528e893L, 0xe00823210a000000L, false, 0, 0x81L), 4), 1511211); - - // gentest-680 - assertEqual(perft(new Board(0x2a11f00a800L, 0x200002L, 0x2000100000004000L, 0x8000010000000081L, 0x200000020000L, 0x10000000000010L, 0x801522e893L, 0xa01033210a000000L, true, 0, 0x81L), 4), 1044616); - - // gentest-681 - assertEqual(perft(new Board(0x2211f00a800L, 0x400000000002L, 0x2000100000004000L, 0x18000000081L, 0x200000020000L, 0x10000000000010L, 0x40001502e893L, 0x201033a10a000000L, false, 0, 0x81L), 4), 286832); - - // gentest-682 - assertEqual(perft(new Board(0x2211f802800L, 0x400000000002L, 0x2000100000004000L, 0x18000000081L, 0x200000020000L, 0x400000010L, 0x400015826893L, 0x200033a50a000000L, true, 0, 0x81L), 4), 1365571); - - // gentest-683 - assertEqual(perft(new Board(0x2211fa00800L, 0x400000000002L, 0x2000100000000020L, 0x80010000000081L, 0x200000020000L, 0x400000010L, 0x400015a208b3L, 0x208033250a000000L, false, 0, 0x81L), 4), 1333688); - - // gentest-684 - assertEqual(perft(new Board(0x2211fa00800L, 0x8000000000000002L, 0x2400000000000020L, 0x80010000000081L, 0x4000020000L, 0x400000010L, 0x8000000015a208b3L, 0x248003650a000000L, true, 0, 0x81L), 4), 1133362); - - // gentest-685 - assertEqual(perft(new Board(0x2211fa00800L, 0x400000000002L, 0x400080000000020L, 0x80010000000081L, 0x4000020000L, 0x400001000L, 0x400015a218a3L, 0x4800b650a000000L, false, 0, 0x0L), 4), 1339193); - - // gentest-686 - assertEqual(perft(new Board(0x2211fa00800L, 0x400000000002L, 0x400080000000020L, 0x40010000000081L, 0x480000L, 0x400001000L, 0x400015a818a3L, 0x4400b250a400000L, true, 0, 0x0L), 4), 724429); - - // gentest-687 - assertEqual(perft(new Board(0x2211f800800L, 0x400000000002L, 0x400080000000020L, 0x40010000000041L, 0x280000L, 0x400000010L, 0x400015880873L, 0x4400b250a200000L, false, 0, 0x0L), 4), 941740); - - // gentest-688 - assertEqual(perft(new Board(0x2211f800800L, 0x400000000002L, 0x400001000000020L, 0x41000000010040L, 0x280000L, 0x400000010L, 0x400015890872L, 0x44102350a200000L, true, 0, 0x0L), 4), 1331284); - - // gentest-689 - assertEqual(perft(new Board(0x2211f800800L, 0x400000000002L, 0x400001000080000L, 0x40010000010040L, 0x220000L, 0x400000010L, 0x4000158b0852L, 0x44003350a200000L, false, 0, 0x0L), 4), 836880); - - // gentest-690 - assertEqual(perft(new Board(0x2211f800800L, 0x400000000002L, 0x400001000080000L, 0x40014000010000L, 0x20080L, 0x80000000010L, 0x4040158b0812L, 0x4400b310a000080L, true, 0, 0x0L), 4), 124471); - - // gentest-691 - assertEqual(perft(new Board(0x2211f800800L, 0x20000002L, 0x400001000080000L, 0x40014000010000L, 0x20080L, 0x40000001000L, 0x40358b1802L, 0x44007310a000080L, false, 0, 0x0L), 4), 831921); - - // gentest-692 - assertEqual(perft(new Board(0x2211f800800L, 0x20000002L, 0x8001000080000L, 0x40014000010000L, 0x404L, 0x40000001000L, 0x4035891c02L, 0x4807310a000004L, true, 0, 0x0L), 4), 906323); - - // gentest-693 - assertEqual(perft(new Board(0x2211f800800L, 0x400000000002L, 0x8000020080000L, 0x40014000010000L, 0x40004L, 0x40000001000L, 0x4040158d1802L, 0x4807212a000004L, false, 0, 0x0L), 4), 1037122); - - // gentest-694 - assertEqual(perft(new Board(0x22117840800L, 0x400000000002L, 0x8000020080000L, 0x40014000010000L, 0x0L, 0x40000000020L, 0x404015890822L, 0x48072122040000L, true, 0, 0x0L), 4), 631726); - - // gentest-695 - assertEqual(perft(new Board(0x22117800800L, 0x400000000002L, 0x208000000080000L, 0x40010000044000L, 0x0L, 0x40000000020L, 0x4000158c4822L, 0x248072102000000L, false, 0, 0x0L), 4), 501921); - - // gentest-696 - assertEqual(perft(new Board(0x22117800800L, 0x400000000002L, 0x220000000080000L, 0x40010000440000L, 0x0L, 0x40000000020L, 0x400015cc0822L, 0x260072102000000L, true, 0, 0x0L), 4), 546153); - - // gentest-697 - assertEqual(perft(new Board(0x22117800800L, 0x400000000002L, 0x220000000080000L, 0x4000010000440000L, 0x0L, 0x40000000010L, 0x400015cc0812L, 0x4220072102000000L, false, 0, 0x0L), 4), 630254); - - // gentest-698 - assertEqual(perft(new Board(0x23107800800L, 0x2L, 0x220000000080000L, 0x410000440000L, 0x0L, 0x400000010L, 0x1005cc0812L, 0x220432502000000L, true, 0, 0x0L), 4), 398930); - - // gentest-699 - assertEqual(perft(new Board(0x23107800800L, 0x2L, 0x220000010000000L, 0x100400000040040L, 0x0L, 0x400000010L, 0x1015840852L, 0x320422502000000L, false, 0, 0x0L), 4), 809039); - - // gentest-700 - assertEqual(perft(new Board(0x21117800800L, 0x2L, 0x220000000000000L, 0x100100000040040L, 0x0L, 0x400000008L, 0x100584084aL, 0x320120512000000L, true, 0, 0x0L), 4), 380530); - - // gentest-701 - assertEqual(perft(new Board(0x21117800800L, 0x2L, 0x220000000000000L, 0x100040000204000L, 0x0L, 0x400000008L, 0x1005a0480aL, 0x320060512000000L, false, 0, 0x0L), 4), 594908); - - // gentest-702 - assertEqual(perft(new Board(0x21117800800L, 0x2L, 0x220000000000000L, 0x100040000004000L, 0x0L, 0x80008L, 0x100580480aL, 0x320060112080000L, true, 0, 0x0L), 4), 186885); - - // gentest-703 - assertEqual(perft(new Board(0x21513800800L, 0x2L, 0x200000800000000L, 0x4100040000000000L, 0x0L, 0x80008L, 0x400000140180080aL, 0x300060912080000L, false, 0, 0x0L), 4), 241871); - - // gentest-704 - assertEqual(perft(new Board(0x21513800800L, 0x2L, 0x4200000000000000L, 0x100040000004000L, 0x0L, 0x80008L, 0x140180480aL, 0x4300060112080000L, true, 0, 0x0L), 4), 187709); - - // gentest-705 - assertEqual(perft(new Board(0x21513800800L, 0x10000L, 0x4200000000000000L, 0x104000000008000L, 0x0L, 0x80008L, 0x1401818808L, 0x4304020112080000L, false, 0, 0x0L), 4), 131423); - - // gentest-706 - assertEqual(perft(new Board(0x21503900800L, 0x200000000L, 0x4200000000000000L, 0x101000000008000L, 0x0L, 0x80008L, 0x1601808808L, 0x4301020102180000L, true, 0, 0x0L), 4), 170907); - - // gentest-707 - assertEqual(perft(new Board(0x21501920800L, 0x4000000L, 0x4200000000000000L, 0x101000000008000L, 0x0L, 0x80008L, 0x1405808808L, 0x43010201001a0000L, false, 0, 0x0L), 4), 159754); - - // gentest-708 - assertEqual(perft(new Board(0x1581120800L, 0x4000000L, 0x280000000000000L, 0x101000000008000L, 0x0L, 0x80008L, 0x1085008808L, 0x3810005001a0000L, true, 0, 0x0L), 4), 112040); - - // gentest-709 - assertEqual(perft(new Board(0x1581120800L, 0x4000000L, 0x280000000000000L, 0x101000000008000L, 0x0L, 0x8000008L, 0x1085008808L, 0x381000508120000L, false, 0, 0x0L), 4), 171137); - - // gentest-710 - assertEqual(perft(new Board(0x1581120800L, 0x4000000L, 0x84000000000000L, 0x140000000002000L, 0x0L, 0x8000008L, 0x1085002808L, 0x1c4000508120000L, true, 0, 0x0L), 4), 556785); - - // gentest-711 - assertEqual(perft(new Board(0x1481120800L, 0x4000000L, 0x4002000000000L, 0x140000000002000L, 0x0L, 0x8000008L, 0x1085002808L, 0x144002408120000L, false, 0, 0x0L), 4), 710752); - - // gentest-712 - assertEqual(perft(new Board(0x1481120800L, 0x4000000L, 0x4000010000000L, 0x140000000000020L, 0x0L, 0x80008L, 0x1085000828L, 0x1440004101a0000L, true, 0, 0x0L), 4), 663724); - - // gentest-713 - assertEqual(perft(new Board(0x1481100a00L, 0x20000000000L, 0x4000010000000L, 0x140002000000000L, 0x0L, 0x80008L, 0x23081000808L, 0x144000410180200L, false, 0, 0x0L), 4), 488211); - - // gentest-714 - assertEqual(perft(new Board(0x100481100a00L, 0x20000000000L, 0x4000010000000L, 0x140002000000000L, 0x0L, 0x80008L, 0x122081000808L, 0x144000410180200L, true, 0, 0x0L), 4), 716501); - - // gentest-715 - assertEqual(perft(new Board(0x100481100a00L, 0x20000000000L, 0x4000010000000L, 0x140000000001000L, 0x0L, 0x8000008L, 0x120081001808L, 0x144000418100200L, false, 0, 0x0L), 4), 522561); - - // gentest-716 - assertEqual(perft(new Board(0x108401100a00L, 0x20000000000L, 0x4000800000000L, 0x41000000001000L, 0x0L, 0x8000008L, 0x128001001808L, 0x45000c08100200L, true, 0, 0x0L), 4), 463155); - - // gentest-717 - assertEqual(perft(new Board(0x108500100a00L, 0x8000000000000L, 0x1800000000L, 0x41000000001000L, 0x0L, 0x8000008L, 0x8108100001808L, 0x41001c08100200L, false, 0, 0x0L), 4), 485603); - - // gentest-718 - assertEqual(perft(new Board(0x108104100a00L, 0x8000000000000L, 0x1800000000L, 0x81000000004000L, 0x0L, 0x8000008L, 0x8108100004808L, 0x8100180c100200L, true, 0, 0x0L), 4), 650532); - - // gentest-719 - assertEqual(perft(new Board(0x108104180200L, 0x8000000000000L, 0x41000000000L, 0x81000000001000L, 0x0L, 0x8000008L, 0x8108100081008L, 0x8104100c100200L, false, 0, 0x0L), 4), 534017); - - // gentest-720 - assertEqual(perft(new Board(0x108004180200L, 0x8000000000000L, 0x41000000000L, 0x40000100000800L, 0x0L, 0x8000008L, 0x8108000080808L, 0x4004110c100200L, true, 0, 0x0L), 4), 621807); - - // gentest-721 - assertEqual(perft(new Board(0x108004180200L, 0x8000000000000L, 0x41000000000L, 0x4000000100000800L, 0x0L, 0x8000008L, 0x8108000080808L, 0x400004110c100200L, false, 0, 0x0L), 4), 663557); - - // gentest-722 - assertEqual(perft(new Board(0x108004180200L, 0x8000000000000L, 0x41000000000L, 0x40000100000800L, 0x0L, 0x8000010L, 0x8108000080810L, 0x4004110c100200L, true, 0, 0x0L), 4), 677830); - - // gentest-723 - assertEqual(perft(new Board(0x10008004180000L, 0x8000000000000L, 0x41000000000L, 0x40000100000800L, 0x2L, 0x8001000L, 0x18008000081800L, 0x4004110c100002L, false, 0, 0x0L), 4), 732001); - - // gentest-724 - assertEqual(perft(new Board(0x10008004180000L, 0x8000000000000L, 0x200040000000000L, 0x40000100000800L, 0x0L, 0x8000010L, 0x18008000080810L, 0x24004010c100000L, true, 0, 0x0L), 4), 943368); - - // gentest-725 - assertEqual(perft(new Board(0x10008004001000L, 0x1000000000L, 0x200040000000000L, 0x40000100000800L, 0x0L, 0x8000010L, 0x10009004000810L, 0x240040108001000L, false, 0, 0x0L), 4), 93562); - - // gentest-726 - assertEqual(perft(new Board(0x10008004001000L, 0x0L, 0x200040000000000L, 0x400100000800L, 0x0L, 0x1000002000L, 0x10008004002800L, 0x200441100001000L, true, 0, 0x0L), 4), 510503); - - // gentest-727 - assertEqual(perft(new Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x2400100000000L, 0x0L, 0x1000002000L, 0x12008004002000L, 0x1200401100001000L, false, 0, 0x0L), 4), 411283); - - // gentest-728 - assertEqual(perft(new Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x40000001000002L, 0x0L, 0x1000002000L, 0x10008004002002L, 0x1240001001001000L, true, 0, 0x0L), 4), 430917); - - // gentest-729 - assertEqual(perft(new Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x40000000010400L, 0x0L, 0x1000002000L, 0x10008004002400L, 0x1240001000011000L, false, 0, 0x0L), 4), 225320); - - // gentest-730 - assertEqual(perft(new Board(0x10008004001000L, 0x0L, 0x200400000000000L, 0x40000000010400L, 0x0L, 0x10000010L, 0x10008004000410L, 0x240400010011000L, true, 0, 0x0L), 4), 249515); - - // gentest-731 - assertEqual(perft(new Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x40000000010800L, 0x0L, 0x10002000L, 0x10008004002800L, 0x1240000010011000L, false, 0, 0x0L), 4), 331202); - - // gentest-732 - assertEqual(perft(new Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x400000010000L, 0x0L, 0x8002000L, 0x10008004002000L, 0x1200400008011000L, true, 0, 0x0L), 4), 57202); - - // gentest-733 - assertEqual(perft(new Board(0x8400001000L, 0x0L, 0x220000000000000L, 0x400000010000L, 0x1000000000000000L, 0x8002000L, 0x1000008400002000L, 0x220400008011000L, false, 0, 0x0L), 4), 666227); - - // gentest-734 - assertEqual(perft(new Board(0x8400001000L, 0x0L, 0x220000000000000L, 0x10010000L, 0x1000000000000000L, 0x8004000L, 0x1000008400004000L, 0x220000018011000L, true, 0, 0x0L), 4), 450064); - - // gentest-735 - assertEqual(perft(new Board(0x8000001000L, 0x0L, 0x220000000000000L, 0x10010000L, 0x4000000000000L, 0x400004000L, 0x4008000004000L, 0x220000410011000L, false, 0, 0x0L), 4), 68691); - - // gentest-736 - assertEqual(perft(new Board(0x8000001000L, 0x0L, 0x220000000000000L, 0x20010000L, 0x8000L, 0x800004000L, 0x800000c000L, 0x220000820011000L, true, 0, 0x0L), 4), 212940); - - // gentest-737 - assertEqual(perft(new Board(0x8000001000L, 0x0L, 0x1200000000000000L, 0x10000L, 0x8000000L, 0x800004000L, 0x8008004000L, 0x1200000800011000L, false, 0, 0x0L), 4), 35998); - - // gentest-738 - assertEqual(perft(new Board(0x800000001000L, 0x0L, 0x1000000000400000L, 0x10000L, 0x0L, 0x8004000L, 0x800000004000L, 0x1000000008411000L, true, 0, 0x0L), 4), 23341); - - // gentest-739 - assertEqual(perft(new Board(0x800000001000L, 0x0L, 0x1000000000400000L, 0x200000L, 0x0L, 0x8000080L, 0x800000000080L, 0x1000000008601000L, false, 0, 0x0L), 4), 18544); - - // gentest-740 - assertEqual(perft(new Board(0x800000001000L, 0x0L, 0x1004000000000000L, 0x20000000L, 0x0L, 0x8004000L, 0x800000004000L, 0x1004000028001000L, true, 0, 0x0L), 4), 33632); - - // gentest-741 - assertEqual(perft(new Board(0x80000000000000L, 0x10L, 0x1004000000000000L, 0x20000000L, 0x0L, 0x8008000L, 0x80000000008000L, 0x1004000028000010L, false, 0, 0x0L), 4), 48020); - - // gentest-742 - assertEqual(perft(new Board(0x80000000000000L, 0x10L, 0x1004000000000000L, 0x2000L, 0x0L, 0x1000000040L, 0x80000000000040L, 0x1004001000002010L, true, 0, 0x0L), 4), 32729); - - // gentest-743 - assertEqual(perft(new Board(0x0L, 0x10L, 0x24000000000000L, 0x400000000002000L, 0x0L, 0x1000000040L, 0x400000000000040L, 0x24001000002010L, false, 0, 0x0L), 4), 159834); - - // gentest-744 - assertEqual(perft(new Board(0x0L, 0x10L, 0x2000000000L, 0x4000000002000L, 0x0L, 0x1000000040L, 0x4000000000040L, 0x3000002010L, true, 0, 0x0L), 4), 161706); - - // gentest-745 - assertEqual(perft(new Board(0x0L, 0x10L, 0x2000000000L, 0x400000000002000L, 0x0L, 0x100000000080L, 0x400000000000080L, 0x102000002010L, false, 0, 0x0L), 4), 137131); - - // gentest-746 - assertEqual(perft(new Board(0x0L, 0x10L, 0x2000000000L, 0x2000L, 0x0L, 0x40000000080L, 0x80L, 0x42000002010L, true, 0, 0x0L), 4), 1905); - - // gentest-747 - assertEqual(perft(new Board(0x0L, 0x10L, 0x2000000000L, 0x0L, 0x0L, 0x800002000L, 0x2000L, 0x2800000010L, false, 0, 0x0L), 4), 12275); - - // gentest-748 - assertEqual(perft(new Board(0x0L, 0x10L, 0x2L, 0x0L, 0x0L, 0x400000020L, 0x20L, 0x400000012L, true, 0, 0x0L), 4), 6792); - - // gentest-749 - assertEqual(perft(new Board(0x0L, 0x10L, 0x2L, 0x0L, 0x0L, 0x8002000L, 0x2000L, 0x8000012L, false, 0, 0x0L), 4), 7835); - - // gentest-750 - assertEqual(perft(new Board(0x0L, 0x10L, 0x400L, 0x0L, 0x0L, 0x800000040L, 0x40L, 0x800000410L, true, 0, 0x0L), 4), 6072); - - // gentest-751 - assertEqual(perft(new Board(0x0L, 0x10L, 0x10000000L, 0x0L, 0x0L, 0x800400000L, 0x400000L, 0x810000010L, false, 0, 0x0L), 4), 10487); - - // gentest-752 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-753 - assertEqual(perft(new Board(0xff00000900f600L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x900f6ffL, 0xbfff800000000000L, false, 0, 0x8100000000000081L), 4), 390277); - - // gentest-754 - assertEqual(perft(new Board(0xef00101900e600L, 0x200002000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1900e6ffL, 0xbfef003000000000L, true, 0, 0x8100000000000081L), 4), 1729845); - - // gentest-755 - assertEqual(perft(new Board(0xef00101900e600L, 0x200000000100042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000001000L, 0x1000000000000010L, 0x3900f6f3L, 0xbfef001000100000L, false, 0, 0x8100000000000081L), 4), 1592016); - - // gentest-756 - assertEqual(perft(new Board(0xef00101900e600L, 0x200000000000062L, 0x2400000020000000L, 0x4100000000000081L, 0x800000000080000L, 0x1000000000000010L, 0x3908e6d3L, 0x7fef001000000020L, true, 0, 0x100000000000081L), 4), 1904130); - - // gentest-757 - assertEqual(perft(new Board(0xe708101900e600L, 0x200000000000062L, 0x2400000000000800L, 0x4100000000000081L, 0x800000000080000L, 0x1000000000000010L, 0x1908eed3L, 0x7fe7081000000020L, false, 0, 0x100000000000081L), 4), 2081723); - - // gentest-758 - assertEqual(perft(new Board(0xe508121900e600L, 0x10000000042L, 0x2400000000000800L, 0x4100000000000081L, 0x800000000080000L, 0x1000000000000020L, 0x1908eee3L, 0x7de5091200000000L, true, 0, 0x100000000000000L), 4), 1630302); - - // gentest-759 - assertEqual(perft(new Board(0xe508121900e600L, 0x10000040040L, 0x2400004000000000L, 0x4100000000000081L, 0x80080000L, 0x1000000000000020L, 0x40190ce6e1L, 0x75e5091280000000L, false, 0, 0x100000000000000L), 4), 2173716); - - // gentest-760 - assertEqual(perft(new Board(0xe5081019006600L, 0x10200000040L, 0x2400004000000000L, 0x4100000000000001L, 0x80080L, 0x1000000000000020L, 0x4219086661L, 0x75e5091000000080L, true, 0, 0x100000000000000L), 4), 1487011); - - // gentest-761 - assertEqual(perft(new Board(0xe5081019006600L, 0x10200000040L, 0x410004000000000L, 0x4100000000000001L, 0x80000080L, 0x1000000000000020L, 0x4299006661L, 0x55f5091000000080L, false, 0, 0x100000000000000L), 4), 1490246); - - // gentest-762 - assertEqual(perft(new Board(0xe5081019006600L, 0x10200000040L, 0x410004000000000L, 0x4100000000000001L, 0x8080L, 0x1000000000000020L, 0x421900e661L, 0x55f5091000000080L, true, 0, 0x100000000000000L), 4), 1463119); - - // gentest-763 - assertEqual(perft(new Board(0xc5281011046200L, 0x10200000040L, 0x410004000000000L, 0x4100000000000001L, 0x8080L, 0x1000000000000020L, 0x521104e261L, 0x55d5290000000080L, false, 0, 0x100000000000000L), 4), 1176938); - - // gentest-764 - assertEqual(perft(new Board(0xc5281011046200L, 0x10200000040L, 0x800004040000000L, 0x4100000000000004L, 0x8080L, 0x1000000000000020L, 0x521104e264L, 0x59c5290040000080L, true, 0, 0x100000000000000L), 4), 1103649); - - // gentest-765 - assertEqual(perft(new Board(0xc5081011442200L, 0x10200000040L, 0xc00200000000000L, 0x4100000000000004L, 0x8080L, 0x1000000000000020L, 0x20121144a264L, 0x5dc5090000000080L, false, 0, 0x100000000000000L), 4), 845727); - - // gentest-766 - assertEqual(perft(new Board(0xc5081011442200L, 0x10200000040L, 0x400200000000000L, 0x4100000000000004L, 0x800080L, 0x10000000000020L, 0x1211c42264L, 0x45d5290000000080L, true, 0, 0x0L), 4), 1076320); - - // gentest-767 - assertEqual(perft(new Board(0xc5081110442200L, 0x10200000040L, 0x400000080000000L, 0x4100000000000004L, 0x100000000080L, 0x10000000000020L, 0x101310442264L, 0x45d5090080000080L, false, 0, 0x0L), 4), 81989); - - // gentest-768 - assertEqual(perft(new Board(0xc5081110442200L, 0x10200000040L, 0x400200000000000L, 0x4100000000000004L, 0x80L, 0x2000000000000020L, 0x1310442264L, 0x65c5290000000080L, true, 0, 0x0L), 4), 526835); - - // gentest-769 - assertEqual(perft(new Board(0xc5001110442200L, 0x90000000040L, 0x400200000000000L, 0x4100000000000004L, 0x4000L, 0x2000000000000010L, 0x81110442254L, 0x65c5210000004000L, false, 0, 0x0L), 4), 525365); - - // gentest-770 - assertEqual(perft(new Board(0xc5001110442200L, 0x90000000040L, 0x300000000000L, 0x4200000000000008L, 0x4000L, 0x2000000000000010L, 0x81110442258L, 0x62c5310000004000L, true, 0, 0x0L), 4), 1148563); - - // gentest-771 - assertEqual(perft(new Board(0xc5001110442200L, 0x12000000040L, 0x300000000000L, 0x4200000000000002L, 0x8000L, 0x2000000000000010L, 0x3110442252L, 0x62c5310000008000L, false, 0, 0x0L), 4), 915715); - - // gentest-772 - assertEqual(perft(new Board(0xc5001110442200L, 0x12000000040L, 0x104000000000L, 0x4200000000000001L, 0x8000L, 0x20000000000010L, 0x3110442251L, 0x42e5114000008000L, true, 0, 0x0L), 4), 1251801); - - // gentest-773 - assertEqual(perft(new Board(0xc5001110640200L, 0x12000000040L, 0x104000000000L, 0x4100000000010000L, 0x8000L, 0x20000000000010L, 0x3110650250L, 0x41e5114000008000L, false, 0, 0x0L), 4), 731549); - - // gentest-774 - assertEqual(perft(new Board(0xc5001110640200L, 0x12000000040L, 0x104000000000L, 0x300000000000001L, 0x4000L, 0x20000000000010L, 0x3110640251L, 0x3e5114000004000L, true, 0, 0x0L), 4), 813221); - - // gentest-775 - assertEqual(perft(new Board(0xc5001110660000L, 0x12000001000L, 0x104000000000L, 0x900000000000001L, 0x4000L, 0x20000000000010L, 0x3110661011L, 0x9e5114000004000L, false, 0, 0x0L), 4), 742625); - - // gentest-776 - assertEqual(perft(new Board(0x45801110660000L, 0x12000001000L, 0x104000000000L, 0x1100000000000002L, 0x4000L, 0x20000000000010L, 0x3110661012L, 0x1165914000004000L, true, 0, 0x0L), 4), 573582); - - // gentest-777 - assertEqual(perft(new Board(0x45801110660000L, 0x12000001000L, 0x104000000000L, 0x300000000000002L, 0x4000L, 0x20000000000400L, 0x3110661402L, 0x365914000004000L, false, 0, 0x0L), 4), 826913); - - // gentest-778 - assertEqual(perft(new Board(0x45801114620000L, 0x12000001000L, 0x100000100000L, 0x100000200000002L, 0x4000L, 0x20000000000400L, 0x3114621402L, 0x165910200104000L, true, 0, 0x0L), 4), 1200208); - - // gentest-779 - assertEqual(perft(new Board(0x45801154220000L, 0x12000001000L, 0x100000100000L, 0x4000000200000002L, 0x4000L, 0x20000000080000L, 0x31542a1002L, 0x4065910200104000L, false, 0, 0x0L), 4), 1459426); - - // gentest-780 - assertEqual(perft(new Board(0x45801154220000L, 0x12000001000L, 0x100000100000L, 0x200000200000200L, 0x8000L, 0x20000000080000L, 0x31542a1200L, 0x265910200108000L, true, 0, 0x0L), 4), 1312957); - - // gentest-781 - assertEqual(perft(new Board(0x45801154220000L, 0x10000401000L, 0x100008000000L, 0x200000200000200L, 0x8000L, 0x20000000000400L, 0x1154621600L, 0x265910208008000L, false, 0, 0x0L), 4), 756019); - - // gentest-782 - assertEqual(perft(new Board(0x45805110220000L, 0x10000401000L, 0xc000000L, 0x800000200000200L, 0x8000L, 0x20000000000400L, 0x5110621600L, 0x86581020c008000L, true, 0, 0x0L), 4), 664806); - - // gentest-783 - assertEqual(perft(new Board(0x45904110220000L, 0x10000401000L, 0xc000000L, 0x800000400000002L, 0x8000L, 0x20000000000400L, 0x104110621402L, 0x86581040c008000L, false, 0, 0x0L), 4), 116813); - - // gentest-784 - assertEqual(perft(new Board(0x45904110220000L, 0x10000401000L, 0xc000000L, 0x800000200000004L, 0x8000L, 0x400000000400L, 0x104110621404L, 0x845c1020c008000L, true, 0, 0x0L), 4), 1126348); - - // gentest-785 - assertEqual(perft(new Board(0x45904110220000L, 0x10000401000L, 0xc000000L, 0x800000200000004L, 0x8000000000L, 0x400000000400L, 0x104110621404L, 0x845c1820c000000L, false, 0, 0x0L), 4), 1261196); - - // gentest-786 - assertEqual(perft(new Board(0x45904110220000L, 0x10000401000L, 0x8080000L, 0x800000200000004L, 0x40000000L, 0x400000000800L, 0x104110621804L, 0x845c10248080000L, true, 0, 0x0L), 4), 2029965); - - // gentest-787 - assertEqual(perft(new Board(0x45905100220000L, 0x10000401000L, 0x8080000L, 0x800000400000004L, 0x40000000L, 0x400000000008L, 0x10510062100cL, 0x845c10448080000L, false, 0, 0x0L), 4), 982370); - - // gentest-788 - assertEqual(perft(new Board(0x45904140020000L, 0x10000401000L, 0x80000080000L, 0x800000400000004L, 0x0L, 0x400000000008L, 0x10414042100cL, 0x845c90400080000L, true, 0, 0x0L), 4), 528837); - - // gentest-789 - assertEqual(perft(new Board(0x45904140020000L, 0x10000001080L, 0x82000000000L, 0x800000404000000L, 0x0L, 0x400000000008L, 0x104144021088L, 0x845c92400000000L, false, 0, 0x0L), 4), 395355); - - // gentest-790 - assertEqual(perft(new Board(0x45904140020000L, 0x10000001080L, 0x2008000000L, 0x800000404000000L, 0x0L, 0x400000000004L, 0x104144021084L, 0x845c12408000000L, true, 0, 0x0L), 4), 299385); - - // gentest-791 - assertEqual(perft(new Board(0x45900140020000L, 0x10000001080L, 0x2008000000L, 0x800040004000000L, 0x0L, 0x400000000800L, 0x900144021880L, 0x845452008000000L, false, 0, 0x0L), 4), 563613); - - // gentest-792 - assertEqual(perft(new Board(0x45900140020000L, 0x400400080L, 0x8080000L, 0x800040004000000L, 0x0L, 0x400000000800L, 0x900144420880L, 0x845440408080000L, true, 0, 0x0L), 4), 787111); - - // gentest-793 - assertEqual(perft(new Board(0x45904100020000L, 0x400402000L, 0x8080000L, 0x200040004000000L, 0x0L, 0x400000000800L, 0x904104422800L, 0x245440408080000L, false, 0, 0x0L), 4), 1045754); - - // gentest-794 - assertEqual(perft(new Board(0xc5104100020000L, 0x400402000L, 0x8080000L, 0x200040004000000L, 0x0L, 0x400000000800L, 0x80104104422800L, 0x245440408080000L, true, 0, 0x0L), 4), 1114960); - - // gentest-795 - assertEqual(perft(new Board(0x45104100020000L, 0x1480000L, 0x8000000008000000L, 0x200040004000000L, 0x0L, 0x400000000800L, 0x80001041044a0800L, 0x245440009000000L, false, 0, 0x0L), 4), 955027); - - // gentest-796 - assertEqual(perft(new Board(0x45104100020000L, 0x1480000L, 0x8000000000000200L, 0x400040002000000L, 0x0L, 0x400000000800L, 0x80001041024a0800L, 0x445440001000200L, true, 0, 0x0L), 4), 682484); - - // gentest-797 - assertEqual(perft(new Board(0x45104100020000L, 0x1080080L, 0x8000000000000200L, 0x2002040000000000L, 0x0L, 0x400000000800L, 0x80021041000a0880L, 0x2045440001000200L, false, 0, 0x0L), 4), 627496); - - // gentest-798 - assertEqual(perft(new Board(0x44100100020000L, 0x1080080L, 0x8000000000000200L, 0x1001040000000000L, 0x0L, 0x4000000800L, 0x80011001000a0880L, 0x1044044001000200L, true, 0, 0x0L), 4), 577005); - - // gentest-799 - assertEqual(perft(new Board(0x4510000020000L, 0x1000090L, 0x8000000000000200L, 0x1001040000000000L, 0x0L, 0x4000000800L, 0x8001110000020890L, 0x1004444001000200L, false, 0, 0x0L), 4), 439712); - - // gentest-800 - assertEqual(perft(new Board(0x4510000020000L, 0x20000000090L, 0x8000000000000200L, 0x1001040000000000L, 0x0L, 0x40000008L, 0x8001110000020098L, 0x1004460040000200L, true, 0, 0x0L), 4), 442552); - } - - public static void batch2() { - // gentest-801 - assertEqual(perft(new Board(0x4510000020000L, 0x20000080080L, 0x1000000200L, 0x1001000400000000L, 0x0L, 0x40000008L, 0x11110000a0088L, 0x1004420440000200L, false, 0, 0x0L), 4), 895695); - - // gentest-802 - assertEqual(perft(new Board(0x4510000020000L, 0x20000080080L, 0x1000000001L, 0x2001000400000000L, 0x0L, 0x40000010L, 0x11110000a0090L, 0x2004420440000001L, true, 0, 0x0L), 4), 993462); - - // gentest-803 - assertEqual(perft(new Board(0x4510000020000L, 0x20000080080L, 0x8000000000000001L, 0x2001000000040000L, 0x0L, 0x40001000L, 0x80011100000a1080L, 0x2004420040040001L, false, 0, 0x0L), 4), 627264); - - // gentest-804 - assertEqual(perft(new Board(0x4510000020000L, 0x20000082000L, 0x8000000000000001L, 0x1000000040000L, 0x0L, 0x2000001000L, 0x80011100000a3000L, 0x4422000040001L, true, 0, 0x0L), 4), 323289); - - // gentest-805 - assertEqual(perft(new Board(0x4510000020000L, 0x20000082000L, 0x40001L, 0x1000004000000L, 0x0L, 0x2000100000L, 0x11100001e2000L, 0x4422004000001L, false, 0, 0x0L), 4), 364371); - - // gentest-806 - assertEqual(perft(new Board(0x4510000020000L, 0x100000000082000L, 0x801L, 0x1000002000000L, 0x0L, 0x2000100000L, 0x11100001a2800L, 0x104402002000001L, true, 0, 0x0L), 4), 275169); - - // gentest-807 - assertEqual(perft(new Board(0x550000020000L, 0x100000000002004L, 0x40001L, 0x1000002000000L, 0x0L, 0x2000100000L, 0x1110000162004L, 0x100442002000001L, false, 0, 0x0L), 4), 337483); - - // gentest-808 - assertEqual(perft(new Board(0x154000020000L, 0x4000000002004L, 0x40001L, 0x1000002000000L, 0x0L, 0x2000001000L, 0x1110000063004L, 0x4046002000001L, true, 0, 0x0L), 4), 495482); - - // gentest-809 - assertEqual(perft(new Board(0x154000020000L, 0x1000000000000084L, 0x40001L, 0x1000002000000L, 0x0L, 0x2000000800L, 0x1110000060884L, 0x1000046002000001L, false, 0, 0x0L), 4), 392706); - - // gentest-810 - assertEqual(perft(new Board(0x154000020000L, 0x1000000000080080L, 0x40001L, 0x1000004000000L, 0x0L, 0x2000000800L, 0x11100000e0880L, 0x1000046004000001L, true, 0, 0x0L), 4), 474259); - - // gentest-811 - assertEqual(perft(new Board(0x154000020000L, 0x1000000000000480L, 0x40001L, 0x1000010000000L, 0x0L, 0x2000000800L, 0x1110000060c80L, 0x1000046010000001L, false, 0, 0x0L), 4), 375337); - - // gentest-812 - assertEqual(perft(new Board(0x54000020000L, 0x1000000000400400L, 0x40001L, 0x1000001000000L, 0x0L, 0x100000000800L, 0x1010000460c00L, 0x1000144001000001L, true, 0, 0x0L), 4), 485800); - - // gentest-813 - assertEqual(perft(new Board(0x54000020000L, 0x1000000000000420L, 0x40001L, 0x1000001000000L, 0x0L, 0x2000001000L, 0x1010000061420L, 0x1000046001000001L, false, 0, 0x0L), 4), 548022); - - // gentest-814 - assertEqual(perft(new Board(0x54000020000L, 0x1000000000000420L, 0x40001L, 0x80000001000000L, 0x0L, 0x2000001000L, 0x80010000061420L, 0x1000046001000001L, true, 0, 0x0L), 4), 781489); - - // gentest-815 - assertEqual(perft(new Board(0x54000020000L, 0x1000000000400400L, 0x40001L, 0x20008000L, 0x0L, 0x2000001000L, 0x10000469400L, 0x1000046020000001L, false, 0, 0x0L), 4), 86862); - - // gentest-816 - assertEqual(perft(new Board(0x54000020000L, 0x80000400400L, 0x801L, 0x20008000L, 0x0L, 0x100000001000L, 0x10000429c00L, 0x1c4020000001L, true, 0, 0x0L), 4), 1080330); - - // gentest-817 - assertEqual(perft(new Board(0x54002000000L, 0x80000400400L, 0x1000000800L, 0x8020000000L, 0x0L, 0x100000001000L, 0x18002401c00L, 0x1c5020000000L, false, 0, 0x0L), 4), 872153); - - // gentest-818 - assertEqual(perft(new Board(0x54002000000L, 0x2000000410000L, 0x1000000800L, 0x8000002000L, 0x0L, 0x100000001000L, 0x18002411800L, 0x2145000002000L, true, 0, 0x0L), 4), 129359); - - // gentest-819 - assertEqual(perft(new Board(0x54002000000L, 0x2000000400400L, 0x1000000800L, 0x8000002000L, 0x0L, 0x20000000000008L, 0x18002400c08L, 0x22045000002000L, false, 0, 0x0L), 4), 831422); - - // gentest-820 - assertEqual(perft(new Board(0x54002000000L, 0x2000000400400L, 0x8000000000000800L, 0x2000L, 0x0L, 0x2000000000000008L, 0x10002400c08L, 0xa002044000002000L, true, 0, 0x0L), 4), 336313); - - // gentest-821 - assertEqual(perft(new Board(0x54002000000L, 0x2000000010020L, 0x200000000800L, 0x2000L, 0x0L, 0x2000000000000008L, 0x10002010828L, 0x2002244000002000L, false, 0, 0x0L), 4), 272058); - - // gentest-822 - assertEqual(perft(new Board(0x54002000000L, 0x800000000010020L, 0x8000000000000800L, 0x2000L, 0x0L, 0x2000000000000004L, 0x10002010824L, 0xa800044000002000L, true, 0, 0x0L), 4), 217778); - - // gentest-823 - assertEqual(perft(new Board(0x54200000000L, 0x800000000010020L, 0x40800L, 0x2000L, 0x0L, 0x2000000000000008L, 0x10200010828L, 0x2800044000042000L, false, 0, 0x0L), 4), 295741); - - // gentest-824 - assertEqual(perft(new Board(0x54200000000L, 0x800000000010020L, 0x40000002000000L, 0x2000L, 0x0L, 0x20000000000008L, 0x10202010028L, 0x860044000002000L, true, 0, 0x0L), 4), 357128); - - // gentest-825 - assertEqual(perft(new Board(0x74000000000L, 0x800000000010020L, 0x50000000000000L, 0x200000000000L, 0x0L, 0x20000000000008L, 0x10030000010028L, 0x860244000000000L, false, 0, 0x0L), 4), 193649); - - // gentest-826 - assertEqual(perft(new Board(0x74000000000L, 0x800000000010020L, 0x10000000000200L, 0x80000000000L, 0x0L, 0x20000000001000L, 0x10030000011020L, 0x8200c4000000200L, true, 0, 0x0L), 4), 283609); - - // gentest-827 - assertEqual(perft(new Board(0x74000000000L, 0x800000000410000L, 0x10000000000200L, 0x8000000L, 0x0L, 0x20000000000010L, 0x10030000410010L, 0x820044008000200L, false, 0, 0x0L), 4), 305189); - - // gentest-828 - assertEqual(perft(new Board(0x74000000000L, 0x800000000410000L, 0x10000000000200L, 0x1000000L, 0x0L, 0x40000000002000L, 0x10030000412000L, 0x840044001000200L, true, 0, 0x0L), 4), 386364); - - // gentest-829 - assertEqual(perft(new Board(0x74000000000L, 0x800008000010000L, 0x200400000000L, 0x1000000L, 0x0L, 0x40000000002000L, 0x38400012000L, 0x840244001000000L, false, 0, 0x0L), 4), 79514); - - // gentest-830 - assertEqual(perft(new Board(0x74000000000L, 0x800008000010000L, 0x10200000000000L, 0x4000000L, 0x0L, 0x20000000002000L, 0x10038000012000L, 0x820244004000000L, true, 0, 0x0L), 4), 351284); - - // gentest-831 - assertEqual(perft(new Board(0x74000000000L, 0x800008200000000L, 0x10200000000000L, 0x400000000L, 0x0L, 0x20000000000040L, 0x10038200000040L, 0x820244400000000L, false, 0, 0x0L), 4), 245958); - - // gentest-832 - assertEqual(perft(new Board(0x74000000000L, 0x801008000000000L, 0x10200000000000L, 0x800000L, 0x0L, 0x20000000000040L, 0x11038000000040L, 0x820244000800000L, true, 0, 0x0L), 4), 228750); - - // gentest-833 - assertEqual(perft(new Board(0x74000000000L, 0x801000000001000L, 0x10200000000000L, 0x20000L, 0x0L, 0x20000000000040L, 0x11030000001040L, 0x820244000020000L, false, 0, 0x0L), 4), 313040); - - // gentest-834 - assertEqual(perft(new Board(0x74000000000L, 0x801000000040000L, 0x10200000000000L, 0x200000000L, 0x0L, 0x1000000000000040L, 0x11030000040040L, 0x1800244200000000L, true, 0, 0x0L), 4), 267416); - - // gentest-835 - assertEqual(perft(new Board(0x74000000000L, 0x801000000001000L, 0x10200000000000L, 0x2000000000L, 0x0L, 0x1000000000000080L, 0x11030000001080L, 0x1800246000000000L, false, 0, 0x0L), 4), 231027); - - // gentest-836 - assertEqual(perft(new Board(0x74000000000L, 0x21000000001000L, 0x280000000000L, 0x200000L, 0x0L, 0x1000000000000080L, 0x10b0000001080L, 0x1020244000200000L, true, 0, 0x0L), 4), 396185); - - // gentest-837 - assertEqual(perft(new Board(0x74000000000L, 0x21000000400000L, 0x200000010000L, 0x200000L, 0x0L, 0x800000000000080L, 0x1030000410080L, 0x820244000200000L, false, 0, 0x0L), 4), 205955); - - // gentest-838 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-839 - assertEqual(perft(new Board(0xfe00010400fb00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x480fbbfL, 0xfffe000100000000L, false, 0, 0x8100000000000081L), 4), 264284); - - // gentest-840 - assertEqual(perft(new Board(0xde20010400fb00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400fbffL, 0xfdde240100000000L, true, 0, 0x8100000000000081L), 4), 279425); - - // gentest-841 - assertEqual(perft(new Board(0xde00210c10e300L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xc10e3ffL, 0xfdde042100000000L, false, 0, 0x8100000000000081L), 4), 594770); - - // gentest-842 - assertEqual(perft(new Board(0x9c42210d10e200L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xd10e2ffL, 0xfd9c462100000000L, true, 0, 0x8100000000000081L), 4), 644780); - - // gentest-843 - assertEqual(perft(new Board(0x9c42210d10e200L, 0x4000040000000042L, 0x2000010000080800L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xd18eadbL, 0xf99c472100000000L, false, 0, 0x8100000000000081L), 4), 1063746); - - // gentest-844 - assertEqual(perft(new Board(0x9c42210530c200L, 0x4000000008000042L, 0x2002000000080800L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x538cadbL, 0xf99e422108000000L, true, 0, 0x8100000000000081L), 4), 1139047); - - // gentest-845 - assertEqual(perft(new Board(0x9c42211520c200L, 0x4000000008000042L, 0x2800000080800L, 0x8100000000000081L, 0x800000000020000L, 0x1000000000000010L, 0x152acad3L, 0xd99ec22108000000L, false, 0, 0x8100000000000081L), 4), 1488363); - - // gentest-846 - assertEqual(perft(new Board(0x9c42211520c200L, 0x200008000042L, 0x2002000000080800L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1528cadbL, 0xb99e622108000000L, true, 0, 0x8100000000000081L), 4), 1586816); - - // gentest-847 - assertEqual(perft(new Board(0x9c42211520c200L, 0x200008800002L, 0x2002000000180000L, 0x8200000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x15b8c29bL, 0xba9e622108000000L, false, 0, 0x8000000000000081L), 4), 1857193); - - // gentest-848 - assertEqual(perft(new Board(0x9442291520c200L, 0x200008800002L, 0x2002000000180000L, 0x4200000000000081L, 0x800000000000008L, 0x1000000000000800L, 0x15b8ca8bL, 0x7a96622908000000L, true, 0, 0x0L), 4), 2071481); - - // gentest-849 - assertEqual(perft(new Board(0x9442190520c200L, 0x200008800002L, 0x2000042000100000L, 0x4200000000000081L, 0x800000000000008L, 0x1000000000000800L, 0x3005b0ca8bL, 0x7a94660908000000L, false, 0, 0x0L), 4), 1888807); - - // gentest-850 - assertEqual(perft(new Board(0x9442190520c200L, 0x4018000002L, 0x2100002000100000L, 0x4200000000000081L, 0x800000000000008L, 0x1000000000000800L, 0x700530ca8bL, 0x7b94420918000000L, true, 0, 0x0L), 4), 248065); - - // gentest-851 - assertEqual(perft(new Board(0x9442190520c200L, 0x18000002L, 0x100802000100000L, 0x4200000000000081L, 0x800000000000008L, 0x1000000000040000L, 0x301534c28bL, 0x5b94c20908000000L, false, 0, 0x0L), 4), 2161223); - - // gentest-852 - assertEqual(perft(new Board(0x9442190520c200L, 0x18000002L, 0x8840000100000L, 0x4200000000000081L, 0x800000000000008L, 0x2000000000040000L, 0x800101534c28bL, 0x6a94c60908000000L, true, 0, 0x0L), 4), 2231378); - - // gentest-853 - assertEqual(perft(new Board(0x9442190522c000L, 0x18000002L, 0x40140000100000L, 0x4200000000000081L, 0x800000000000008L, 0x2000000000040000L, 0x10101536c08bL, 0x6ad4460908000000L, false, 0, 0x0L), 4), 2254043); - - // gentest-854 - assertEqual(perft(new Board(0x9442110522c000L, 0x10000402L, 0x42000800100000L, 0x4200000000000081L, 0x800000000000008L, 0x2000000000040000L, 0x181536c08bL, 0x6ad6420100000400L, true, 0, 0x0L), 4), 2134230); - - // gentest-855 - assertEqual(perft(new Board(0x9442110522c000L, 0x10000402L, 0x42100020000000L, 0x4200000000000081L, 0x80000000008L, 0x2000000000040000L, 0x10103526c08bL, 0x62d64a0100000400L, false, 0, 0x0L), 4), 2506103); - - // gentest-856 - assertEqual(perft(new Board(0x94421105a24000L, 0x10000402L, 0x2300020000000L, 0x4200000000000081L, 0x8000000000008L, 0x2000000000040000L, 0x101035a6408bL, 0x629e620100000400L, true, 0, 0x0L), 4), 3381653); - - // gentest-857 - assertEqual(perft(new Board(0x94421105a24000L, 0x10000002L, 0x2300020000000L, 0x4100000000000081L, 0x8000000000010L, 0x2000000000000400L, 0x101035a24493L, 0x619e620100000000L, false, 0, 0x0L), 4), 2946452); - - // gentest-858 - assertEqual(perft(new Board(0x94421501a24000L, 0x10000002L, 0x2300020000000L, 0x4100000000000081L, 0x800000000000010L, 0x1000000000000400L, 0x101431a24493L, 0x5996620100000000L, true, 0, 0x0L), 4), 2233879); - - // gentest-859 - assertEqual(perft(new Board(0x94421501a24000L, 0x10040000L, 0x2300020000000L, 0x4100000000000081L, 0x10L, 0x1000000000000800L, 0x101431a64891L, 0x5196620100000000L, false, 0, 0x0L), 4), 1637698); - - // gentest-860 - assertEqual(perft(new Board(0x94401701a24000L, 0x10040000L, 0x4002200020000000L, 0x8100000000000081L, 0x10L, 0x1000000000000800L, 0x4000001431a64891L, 0x9196600300000000L, true, 0, 0x0L), 4), 1456522); - - // gentest-861 - assertEqual(perft(new Board(0x94401701a24000L, 0x10040000L, 0x4002200020000000L, 0x8400000000000048L, 0x10L, 0x1000000000000800L, 0x4000001431a64858L, 0x9496600300000000L, false, 0, 0x0L), 4), 851494); - - // gentest-862 - assertEqual(perft(new Board(0x84501701a24000L, 0x40000L, 0x4000200030000000L, 0x8400000000000048L, 0x100000L, 0x1000000000000800L, 0x4000001421b64848L, 0x9484700310000000L, true, 0, 0x0L), 4), 976763); - - // gentest-863 - assertEqual(perft(new Board(0x84501701a24000L, 0x40000L, 0x4000200020000000L, 0x8400000000080040L, 0x100000L, 0x1000000000001000L, 0x4000001421be5040L, 0x9484700300000000L, false, 0, 0x0L), 4), 599779); - - // gentest-864 - assertEqual(perft(new Board(0x4509701a24000L, 0x40000L, 0x4000204000000000L, 0x8800000000080040L, 0x100000L, 0x1000000000001000L, 0x4000005401be5040L, 0x9804708300000000L, true, 0, 0x0L), 4), 861677); - - // gentest-865 - assertEqual(perft(new Board(0x4509701a24000L, 0x40000L, 0x4000204000000000L, 0x8000000000080040L, 0x8000000L, 0x1000000000002000L, 0x4000005409ae6040L, 0x9004708300000000L, false, 0, 0x0L), 4), 447828); - - // gentest-866 - assertEqual(perft(new Board(0x549701a24000L, 0x40000L, 0x4000204000000000L, 0x80000000080040L, 0x8000000L, 0x1000000000100000L, 0x4000005409be4040L, 0x1080748300000000L, true, 0, 0x0L), 4), 595169); - - // gentest-867 - assertEqual(perft(new Board(0x549703a04000L, 0x2L, 0x4000204000000000L, 0x800000080040L, 0x8000000L, 0x1000000000100000L, 0x400000540bb84042L, 0x1000f48300000000L, false, 0, 0x0L), 4), 271719); - - // gentest-868 - assertEqual(perft(new Board(0x549703a04000L, 0x2L, 0x4000204000000000L, 0x1000000080040L, 0x80000000000L, 0x1000000000100000L, 0x4000085403b84042L, 0x1001748300000000L, true, 0, 0x0L), 4), 432380); - - // gentest-869 - assertEqual(perft(new Board(0x549703a04000L, 0x2L, 0x4000004000000000L, 0x1000000080040L, 0x800000000000000L, 0x1000000000100000L, 0x4800005403b84042L, 0x1001548300000000L, false, 0, 0x0L), 4), 0); - - // gentest-870 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-871 - assertEqual(perft(new Board(0xff00001200ed00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1200edffL, 0xfdff040000000000L, false, 0, 0x8100000000000081L), 4), 504493); - - // gentest-872 - assertEqual(perft(new Board(0xaf50001200ed00L, 0x4000040000000042L, 0x2400000000080004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1208eddfL, 0xfdaf540000000000L, true, 0, 0x8100000000000081L), 4), 986600); - - // gentest-873 - assertEqual(perft(new Board(0xad50025200ad00L, 0x4000040000800002L, 0x2400000000080004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x5288ad9fL, 0xfdad540200000000L, false, 0, 0x8100000000000081L), 4), 754184); - - // gentest-874 - assertEqual(perft(new Board(0xa5500a5000ad00L, 0x4000004002000002L, 0x2400000000080004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x405008ad9fL, 0xfda5500a02000000L, true, 0, 0x8100000000000081L), 4), 1055955); - - // gentest-875 - assertEqual(perft(new Board(0xa5500ad0002900L, 0x4000004000000402L, 0x2400000000080004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000001000L, 0x40d008398fL, 0xfda5500a00000400L, false, 0, 0x8100000000000000L), 4), 1303940); - - // gentest-876 - assertEqual(perft(new Board(0xa5500ad0002900L, 0x10000000010400L, 0x2400000000080004L, 0x8100000000000081L, 0x4000000008L, 0x1000000000001000L, 0xd009398dL, 0xb5b5504a00000400L, true, 0, 0x8100000000000000L), 4), 924900); - - // gentest-877 - assertEqual(perft(new Board(0xa5500ad0002900L, 0x4000000000010000L, 0x2400000000080004L, 0x8100000000000021L, 0x4000000400L, 0x1000000000001000L, 0xd0093d25L, 0xf5a5504a00000000L, false, 0, 0x8100000000000000L), 4), 1238842); - - // gentest-878 - assertEqual(perft(new Board(0xa5500ad0002900L, 0x4000000000010000L, 0x2000010000080004L, 0x8100000000000041L, 0x1000000400L, 0x1000000000001000L, 0xd0093d45L, 0xf1a5511a00000000L, true, 0, 0x8100000000000000L), 4), 1562977); - - // gentest-879 - assertEqual(perft(new Board(0xa5500ad0200900L, 0x4000000000010000L, 0x2000010000080004L, 0x8100000000000009L, 0x20000400L, 0x1000000000001000L, 0xd0291d0dL, 0xf1a5510a20000000L, false, 0, 0x8100000000000000L), 4), 1092681); - - // gentest-880 - assertEqual(perft(new Board(0xa5500ad0200900L, 0x4000000000010000L, 0x810004000004L, 0x8100000000000009L, 0x20000400L, 0x800000000001000L, 0xd4211d0dL, 0xc9a5d10a20000000L, true, 0, 0x0L), 4), 922972); - - // gentest-881 - assertEqual(perft(new Board(0xa5500ad0200900L, 0x4000000000010000L, 0x810004000004L, 0x8100000000000009L, 0x1000000002L, 0x800000000002000L, 0xd421290fL, 0xc9a5d11a00000000L, false, 0, 0x0L), 4), 1198266); - - // gentest-882 - assertEqual(perft(new Board(0xa5500ad0200900L, 0x4000000000010000L, 0x2800004000004L, 0x8400000000000081L, 0x1000000002L, 0x800000000002000L, 0xd4212987L, 0xcca7d01a00000000L, true, 0, 0x0L), 4), 1529770); - - // gentest-883 - assertEqual(perft(new Board(0xa5500ad0200900L, 0x4000000000010000L, 0x2800000080004L, 0x8400000000008001L, 0x20000002L, 0x800000000002000L, 0xd029a907L, 0xcca7d00a20000000L, false, 0, 0x0L), 4), 793217); - - // gentest-884 - assertEqual(perft(new Board(0xa55008d0200900L, 0x4000000200000000L, 0x2800000080004L, 0x8400000000008001L, 0x20000002L, 0x10000000002000L, 0x2d028a907L, 0xc4b7d00820000000L, true, 0, 0x0L), 4), 1190580); - - // gentest-885 - assertEqual(perft(new Board(0xa0518850200900L, 0x4004000000000000L, 0x2800000080004L, 0x8400000000008001L, 0x20000002L, 0x10000000002000L, 0x400805028a907L, 0xc4b2d10820000000L, false, 0, 0x0L), 4), 1437122); - - // gentest-886 - assertEqual(perft(new Board(0xa0518054200900L, 0x4004000000000000L, 0x840000000004L, 0x8400000000008001L, 0x20000002L, 0x10000000002000L, 0x400805020a907L, 0xc4b0d50024000000L, true, 0, 0x0L), 4), 1554006); - - // gentest-887 - assertEqual(perft(new Board(0xa0508054200900L, 0x4000010000000000L, 0x800001010000L, 0x8400000000008001L, 0x20000002L, 0x10000000002000L, 0x1805021a903L, 0xc4b0d00025000000L, false, 0, 0x0L), 4), 293895); - - // gentest-888 - assertEqual(perft(new Board(0xa0508054200900L, 0x4000010000000000L, 0x800001010000L, 0x8400000000008001L, 0x22000000L, 0x8000000002000L, 0x1805221a901L, 0xc4a8d00025000000L, true, 0, 0x0L), 4), 1838047); - - // gentest-889 - assertEqual(perft(new Board(0xa0508054200900L, 0x4000010000000000L, 0x800001010000L, 0x8000040000008001L, 0x20000200L, 0x8000000002000L, 0x1805021ab01L, 0xc0a8d40025000000L, false, 0, 0x0L), 4), 2038434); - - // gentest-890 - assertEqual(perft(new Board(0xa0508054200900L, 0x4000010000000000L, 0x800000010400L, 0x400008001L, 0x8000000020000000L, 0x8000000002000L, 0x800001805021a901L, 0x40a8d00424000400L, true, 0, 0x0L), 4), 2159564); - - // gentest-891 - assertEqual(perft(new Board(0xa0508054200900L, 0x4000010000000000L, 0x800000010400L, 0x800008001L, 0x8000000020000000L, 0x8000000002000L, 0x800001805021a901L, 0x40a8d00824000400L, false, 0, 0x0L), 4), 2365262); - - // gentest-892 - assertEqual(perft(new Board(0x80708054200900L, 0x4200000000000000L, 0x800000010400L, 0x800008001L, 0x8000000020000000L, 0x400000000002000L, 0x820000805021a901L, 0x4480f00824000400L, true, 0, 0x0L), 4), 1888637); - - // gentest-893 - assertEqual(perft(new Board(0x80708054200900L, 0x4200000000000000L, 0x800001000004L, 0x800008080L, 0x8000000020000000L, 0x400000000002000L, 0x820000805020a984L, 0x4480f00825000000L, false, 0, 0x0L), 4), 1204805); - - // gentest-894 - assertEqual(perft(new Board(0x8070805c200100L, 0x4200000000000000L, 0x800000020004L, 0x800008080L, 0x8000001000000000L, 0x400000000002000L, 0x820000805820a184L, 0x4480f01804020000L, true, 0, 0x0L), 4), 1306811); - - // gentest-895 - assertEqual(perft(new Board(0x8070805c200100L, 0x4200000000000000L, 0x800000020004L, 0x800000280L, 0x8000000020000000L, 0x400000000000010L, 0x8200008058200394L, 0x4480f00824020000L, false, 0, 0x0L), 4), 1419154); - - // gentest-896 - assertEqual(perft(new Board(0x80609054200100L, 0x4200000000000000L, 0x800000020004L, 0xa80L, 0x8000000020000000L, 0x400000000000010L, 0x8200009050200394L, 0x4480e00024020800L, true, 0, 0x0L), 4), 758890); - - // gentest-897 - assertEqual(perft(new Board(0x80708054200000L, 0x4200000000000000L, 0x800000000104L, 0x882L, 0x8000000020000000L, 0x400000000000010L, 0x8200108050200096L, 0x4480e00024000900L, false, 0, 0x0L), 4), 835835); - - // gentest-898 - assertEqual(perft(new Board(0x80708054000000L, 0x4200000000000000L, 0x800000000104L, 0x842L, 0x8000000000004000L, 0x400000000000010L, 0x8200108050000056L, 0x4480e00004004900L, true, 0, 0x0L), 4), 604921); - - // gentest-899 - assertEqual(perft(new Board(0x8070c014000000L, 0x4200000000000000L, 0x800000000104L, 0x842L, 0x40000000200000L, 0x400000000000010L, 0x24010c010000056L, 0x4480e00004200900L, false, 0, 0x0L), 4), 1116594); - - // gentest-900 - assertEqual(perft(new Board(0x8070c010040000L, 0x210000000000000L, 0x104L, 0x842L, 0x800000200000L, 0x400000000000010L, 0x20090c010000056L, 0x490600000240900L, true, 0, 0x0L), 4), 870486); - - // gentest-901 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-902 - assertEqual(perft(new Board(0x7f00800011ee00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x11eeffL, 0xff7f008000000000L, false, 0, 0x8100000000000081L), 4), 420571); - - // gentest-903 - assertEqual(perft(new Board(0x730c800011ee00L, 0x4200000000000042L, 0x2400000200000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20011eedfL, 0xff730c8000000000L, true, 0, 0x8100000000000081L), 4), 788727); - - // gentest-904 - assertEqual(perft(new Board(0x730c804011ae00L, 0x4200000000000042L, 0x2400000001000004L, 0x8100000000000081L, 0x4000000000008L, 0x1000000000000010L, 0x4111aedfL, 0xf7770c8000000000L, false, 0, 0x8100000000000081L), 4), 546835); - - // gentest-905 - assertEqual(perft(new Board(0x71048a0011ae00L, 0x4200000000000042L, 0x2400000001000004L, 0x8100000000000081L, 0x4000000000008L, 0x1000000000000010L, 0x800111aedfL, 0xf775040a00000000L, true, 0, 0x8100000000000081L), 4), 860387); - - // gentest-906 - assertEqual(perft(new Board(0x71008e20118e00L, 0x4200000000000042L, 0x2400000000020004L, 0x8100000000000081L, 0x4000000000008L, 0x1000000000000010L, 0x8020138edfL, 0xf775000e00000000L, false, 0, 0x8100000000000081L), 4), 910152); - - // gentest-907 - assertEqual(perft(new Board(0x61009e20118e00L, 0x4200000000000042L, 0x2000000040020004L, 0x8100000000000081L, 0x4000000001000L, 0x1000000000000010L, 0x8020139ed7L, 0xf365001e40000000L, true, 0, 0x8100000000000081L), 4), 1574750); - - // gentest-908 - assertEqual(perft(new Board(0x61009628118600L, 0x4008000000000042L, 0x2000000840000004L, 0x8100000000000081L, 0x4000000001000L, 0x1000000000000010L, 0x88281196d7L, 0xf16d001640000000L, false, 0, 0x8100000000000081L), 4), 3085274); - - // gentest-909 - assertEqual(perft(new Board(0x4000b728158200L, 0x4008000000000042L, 0x2000000840000004L, 0x8100000000000081L, 0x4000000001000L, 0x1000000000000010L, 0x88281592d7L, 0xf14c003740000000L, true, 0, 0x8100000000000081L), 4), 2613497); - - // gentest-910 - assertEqual(perft(new Board(0x4000b728158200L, 0x4008000000000042L, 0x2002000040000004L, 0x8100000000000081L, 0x4000000002000L, 0x10000000000010L, 0x200802815a2d7L, 0xe15c003740000000L, false, 0, 0x81L), 4), 2016071); - - // gentest-911 - assertEqual(perft(new Board(0x4000b639058200L, 0x4000200000000042L, 0x2002000040000004L, 0x8100000000000081L, 0x4000000002000L, 0x10000000000010L, 0x200803805a2d7L, 0xe154203641000000L, true, 0, 0x81L), 4), 2159399); - - // gentest-912 - assertEqual(perft(new Board(0x4000b639058200L, 0x4000200000000042L, 0x2000010040000004L, 0x180000000000081L, 0x4000000200000L, 0x10000000000010L, 0x180382582d7L, 0x61d4203641000000L, false, 0, 0x81L), 4), 1999837); - - // gentest-913 - assertEqual(perft(new Board(0x4000a23d058200L, 0x4000200000001002L, 0x2000010040000004L, 0x180000000000081L, 0x4000000200000L, 0x10000000000010L, 0x18030259297L, 0x61d420224d000000L, true, 0, 0x81L), 4), 1937881); - - // gentest-914 - assertEqual(perft(new Board(0x4000a23d058200L, 0x4000200000001002L, 0x2000010040000004L, 0x180000000000081L, 0x40000800000L, 0x10000000000010L, 0x18030859297L, 0x61d024224d000000L, false, 0, 0x81L), 4), 1684462); - - // gentest-915 - assertEqual(perft(new Board(0x4000a23d058200L, 0x4000200000000002L, 0x2000010000001004L, 0x180000000000081L, 0x1000000000100000L, 0x10000000000010L, 0x18030158297L, 0x71d020220d001000L, true, 0, 0x81L), 4), 1145504); - - // gentest-916 - assertEqual(perft(new Board(0x400022bd050200L, 0x4000200000000002L, 0x2000010000001004L, 0x100008000000081L, 0x1000000000100000L, 0x10000000000010L, 0x100b0150297L, 0x715020a20d001000L, false, 0, 0x81L), 4), 1191891); - - // gentest-917 - assertEqual(perft(new Board(0x4022bd050200L, 0x4000200000000002L, 0x2000010000001800L, 0x1008000000081L, 0x1000000000100000L, 0x10000000000010L, 0x100b0150a93L, 0x701160a20d001000L, true, 0, 0x81L), 4), 942258); - - // gentest-918 - assertEqual(perft(new Board(0x4020bd050200L, 0x4000200000000002L, 0x2000000200001800L, 0x1008000008001L, 0x20000000100000L, 0x10000000000010L, 0x2b0158a13L, 0x603160a00d001000L, false, 0, 0x1L), 4), 1143719); - - // gentest-919 - assertEqual(perft(new Board(0x4020b5050200L, 0x4000200000000002L, 0x2000000200001800L, 0x100008000008001L, 0x80000008000000L, 0x10000000000010L, 0x2b8058a13L, 0x619060a005001000L, true, 0, 0x1L), 4), 783225); - - // gentest-920 - assertEqual(perft(new Board(0x4020b5050200L, 0x4000200000000002L, 0x2000000200001800L, 0x100008000008001L, 0x480000000000000L, 0x800000000000010L, 0x4000002b0058a13L, 0x698060a005001000L, false, 0, 0x1L), 4), 58257); - - // gentest-921 - assertEqual(perft(new Board(0x4020b5040200L, 0x4000200000000002L, 0x200111000L, 0x400008000008001L, 0x80000000000000L, 0x800000000000010L, 0x2b0148213L, 0x4c8060a005011000L, true, 0, 0x1L), 4), 1318644); - - // gentest-922 - assertEqual(perft(new Board(0x4020b1040200L, 0x4000200000000002L, 0x2000000004100000L, 0x400008000001001L, 0x80000000000000L, 0x800000000000010L, 0xb4141213L, 0x6c8060a001000000L, false, 0, 0x1L), 4), 1709325); - - // gentest-923 - assertEqual(perft(new Board(0x4020b3040000L, 0x4000200000000002L, 0x80004100000L, 0x100008000001001L, 0x80000000000000L, 0x800000000000010L, 0xb6141013L, 0x498068a001000000L, true, 0, 0x1L), 4), 1886876); - - // gentest-924 - assertEqual(perft(new Board(0x4020b3040000L, 0x4000200000000002L, 0x10010000100000L, 0x100008000001100L, 0x80000000000000L, 0x800000000000010L, 0x100b2141112L, 0x499060a001000000L, false, 0, 0x0L), 4), 923566); - - // gentest-925 - assertEqual(perft(new Board(0x4020b3040000L, 0x4000200000000002L, 0x10030000000000L, 0x100008000001100L, 0x800000000000L, 0x1000000000000010L, 0x300b2041112L, 0x5110e0a001000000L, true, 0, 0x0L), 4), 1140855); - - // gentest-926 - assertEqual(perft(new Board(0x4020b3040000L, 0x4000200000000002L, 0x2000010000100000L, 0x100008000001100L, 0x800000000000L, 0x1000000000000008L, 0x100b214110aL, 0x7100e0a001000000L, false, 0, 0x0L), 4), 1129379); - - // gentest-927 - assertEqual(perft(new Board(0x4020b3040000L, 0x4000200000000002L, 0x2001000000000000L, 0x18000001100L, 0x800000000000L, 0x800000000000008L, 0x10000b204110aL, 0x6800e1a001000000L, true, 0, 0x0L), 4), 912105); - - // gentest-928 - assertEqual(perft(new Board(0x4020b3040000L, 0x4000200000000800L, 0x240000000000000L, 0x18000001100L, 0x800000000000L, 0x800000000000008L, 0x2000000b2041908L, 0x4840e1a001000000L, false, 0, 0x0L), 4), 632491); - - // gentest-929 - assertEqual(perft(new Board(0x4020a3040000L, 0x4000000014000000L, 0x240000000000000L, 0x48000001100L, 0x800000000000L, 0x800000000000008L, 0x2000000a6041108L, 0x4840c4a011000000L, true, 0, 0x0L), 4), 986616); - - // gentest-930 - assertEqual(perft(new Board(0x4020a3040000L, 0x4000000004400000L, 0x240000000000000L, 0x49000000200L, 0x800000000000L, 0x800000000000008L, 0x2000010a6040208L, 0x4840c4a001400000L, false, 0, 0x0L), 4), 856910); - - // gentest-931 - assertEqual(perft(new Board(0x402083040000L, 0x4000000004400000L, 0x240000000000000L, 0x4009000000002L, 0x20000000L, 0x800000000000008L, 0x20000108604000aL, 0x484440a021400000L, true, 0, 0x0L), 4), 1145512); - - // gentest-932 - assertEqual(perft(new Board(0x402083040000L, 0x4000000004400000L, 0x240000000000000L, 0x4008800000004L, 0x80000000000L, 0x800000000000008L, 0x20000088604000cL, 0x484448a001400000L, false, 0, 0x0L), 4), 613078); - - // gentest-933 - assertEqual(perft(new Board(0x402083040000L, 0x4000000100000080L, 0x8200000000000000L, 0x4008800000004L, 0x80000000000L, 0x800000000000008L, 0x20000098204000cL, 0xc80448a001000080L, true, 0, 0x0L), 4), 381715); - - // gentest-934 - assertEqual(perft(new Board(0x402083040000L, 0x4000000100000080L, 0x8200000000000000L, 0x4088000000004L, 0x0L, 0x10000000001000L, 0x200080182041004L, 0xc01440a001000080L, false, 0, 0x0L), 4), 849952); - - // gentest-935 - assertEqual(perft(new Board(0x402083040000L, 0x4000000100400000L, 0x8200000000000000L, 0xc8000000004L, 0x0L, 0x10000000200000L, 0x200080182240004L, 0xc01044a001400000L, true, 0, 0x0L), 4), 756848); - - // gentest-936 - assertEqual(perft(new Board(0x402083040000L, 0x4000000004400000L, 0x240000000000000L, 0x800048000000004L, 0x0L, 0x10000000200000L, 0xa00000086240004L, 0x405044a001400000L, false, 0, 0x0L), 4), 1384200); - - // gentest-937 - assertEqual(perft(new Board(0x402083040000L, 0x200004001000L, 0x240000000000000L, 0x48000080004L, 0x0L, 0x10000000200000L, 0x2000000862c0004L, 0x5064a001001000L, true, 0, 0x0L), 4), 1338700); - - // gentest-938 - assertEqual(perft(new Board(0x402083040000L, 0x200000101000L, 0x240000000000000L, 0x8048000000004L, 0x0L, 0x100000200000L, 0x208000082340004L, 0x4074a001001000L, false, 0, 0x0L), 4), 1372259); - - // gentest-939 - assertEqual(perft(new Board(0x402083040000L, 0x4000101000L, 0x240000000000000L, 0x20048000000004L, 0x0L, 0x100000200000L, 0x220000082340004L, 0x4054e001001000L, true, 0, 0x0L), 4), 137632); - - // gentest-940 - assertEqual(perft(new Board(0x402083040000L, 0x4000001400L, 0x200200000000000L, 0x20048000000004L, 0x0L, 0x100000002000L, 0x220000082042404L, 0x74e001001000L, false, 0, 0x0L), 4), 1080890); - - // gentest-941 - assertEqual(perft(new Board(0x402083040000L, 0x80000000000400L, 0x200200000000000L, 0x20048000000004L, 0x0L, 0x100000000040L, 0x220000082040444L, 0x8074a001000000L, true, 0, 0x0L), 4), 608485); - - // gentest-942 - assertEqual(perft(new Board(0x402082050000L, 0x80000000000400L, 0x4200000000000L, 0x2000048000000004L, 0x0L, 0x100000000040L, 0x2004000082040444L, 0x8074a000010000L, false, 0, 0x0L), 4), 688129); - - // gentest-943 - assertEqual(perft(new Board(0x4000a2050000L, 0x80000000000400L, 0x804000000000000L, 0x4000048000000004L, 0x0L, 0x100000000040L, 0x4004000082040444L, 0x880548020010000L, true, 0, 0x0L), 4), 744728); - - // gentest-944 - assertEqual(perft(new Board(0x4002a0050000L, 0x80000000000400L, 0x200100000000L, 0x4000048000000004L, 0x0L, 0x100000000040L, 0x4000000380040444L, 0x80748020010000L, false, 0, 0x0L), 4), 1058997); - - // gentest-945 - assertEqual(perft(new Board(0x4002a0050000L, 0x80000000000400L, 0x200100000000L, 0x200008000000004L, 0x0L, 0x100000000040L, 0x380040444L, 0x280708020010000L, true, 0, 0x0L), 4), 582348); - - // gentest-946 - assertEqual(perft(new Board(0x4002a4010000L, 0x80000000000010L, 0x200100000000L, 0x2008000000004L, 0x0L, 0x100000000040L, 0x384000054L, 0x82708020010000L, false, 0, 0x0L), 4), 646579); - - // gentest-947 - assertEqual(perft(new Board(0x42a4010000L, 0x80000000000010L, 0x8000020000000000L, 0x2008000000004L, 0x0L, 0x100000000040L, 0x20284000054L, 0x808210c020010000L, true, 0, 0x0L), 4), 479734); - - // gentest-948 - assertEqual(perft(new Board(0x42a4010000L, 0x80000000000010L, 0x8000000000000000L, 0x4008000000008L, 0x0L, 0x100000000040L, 0x284000058L, 0x808410c020010000L, false, 0, 0x0L), 4), 377699); - - // gentest-949 - assertEqual(perft(new Board(0x4284210000L, 0x80000000000010L, 0x1000000000L, 0x4008000000004L, 0x0L, 0x100000000040L, 0x284000054L, 0x8410d000210000L, true, 0, 0x0L), 4), 266372); - - // gentest-950 - assertEqual(perft(new Board(0x4284010000L, 0x80000000000010L, 0x1000000000L, 0x8008000200000L, 0x0L, 0x100000000040L, 0x284200050L, 0x8810d000010000L, false, 0, 0x0L), 4), 512675); - - // gentest-951 - assertEqual(perft(new Board(0x4284010000L, 0x80000000000010L, 0x80000000000L, 0x8208000000000L, 0x0L, 0x10000000000040L, 0x200284000050L, 0x9808c000010000L, true, 0, 0x0L), 4), 220699); - - // gentest-952 - assertEqual(perft(new Board(0x4204010000L, 0x80000000000010L, 0x80000000000L, 0x8200000800000L, 0x0L, 0x10000000004000L, 0x204204004010L, 0x98080000810000L, false, 0, 0x0L), 4), 319050); - - // gentest-953 - assertEqual(perft(new Board(0x4204010000L, 0x80000000000010L, 0x400000000L, 0x800000000802000L, 0x0L, 0x10000000004000L, 0x4204006010L, 0x890000400810000L, true, 0, 0x0L), 4), 422575); - - // gentest-954 - assertEqual(perft(new Board(0x4204010000L, 0x80000080000000L, 0x1000000000000L, 0x800000000802000L, 0x0L, 0x10000000004000L, 0x4284006000L, 0x891000000810000L, false, 0, 0x0L), 4), 376906); - - // gentest-955 - assertEqual(perft(new Board(0x4204010000L, 0x200080000000L, 0x1000000000000L, 0x2008800000L, 0x0L, 0x10000000004000L, 0x6284004000L, 0x11200008810000L, true, 0, 0x0L), 4), 302133); - - // gentest-956 - assertEqual(perft(new Board(0x4204010000L, 0x200080000000L, 0x1000000000000L, 0x8208000L, 0x0L, 0x10000000000040L, 0x4284200040L, 0x11200008018000L, false, 0, 0x0L), 4), 320688); - - // gentest-957 - assertEqual(perft(new Board(0x4600010000L, 0x4000000080000000L, 0x1000000000000L, 0x20208000L, 0x0L, 0x10000000000040L, 0x4680200040L, 0x4011000020018000L, true, 0, 0x0L), 4), 208161); - - // gentest-958 - assertEqual(perft(new Board(0x24400010000L, 0x4000000080000000L, 0x1000000000000L, 0x20200100L, 0x0L, 0x10000000000020L, 0x24480200020L, 0x4011000020010100L, false, 0, 0x0L), 4), 155903); - - // gentest-959 - assertEqual(perft(new Board(0x400400010000L, 0x4000000080000000L, 0x20000000000L, 0x200100L, 0x0L, 0x10000000000020L, 0x400480000020L, 0x4010020000210100L, true, 0, 0x0L), 4), 16923); - - // gentest-960 - assertEqual(perft(new Board(0x440000010000L, 0x4000000080000000L, 0x100000000L, 0x200100L, 0x0L, 0x10000000000040L, 0x440080000040L, 0x4010000100210100L, false, 0, 0x0L), 4), 44474); - - // gentest-961 - assertEqual(perft(new Board(0x440000010000L, 0x4000000080000000L, 0x10L, 0x200200L, 0x0L, 0x10000000000080L, 0x440080000080L, 0x4010000000210210L, true, 0, 0x0L), 4), 52222); - - // gentest-962 - assertEqual(perft(new Board(0x4400000010000L, 0x4000000000200000L, 0x10L, 0x200L, 0x0L, 0x80000000080L, 0x4400000200080L, 0x4000080000010210L, false, 0, 0x0L), 4), 170429); - - // gentest-963 - assertEqual(perft(new Board(0x400000010000L, 0x4400000000200000L, 0x100000000L, 0x200L, 0x0L, 0x4000000000080L, 0x400400000200080L, 0x4004000100010200L, true, 0, 0x0L), 4), 125909); - - // gentest-964 - assertEqual(perft(new Board(0x400000010000L, 0x4010000000008000L, 0x100000000L, 0x4000L, 0x0L, 0x4000000000080L, 0x10400000008080L, 0x4004000100014000L, false, 0, 0x0L), 4), 65824); - - // gentest-965 - assertEqual(perft(new Board(0x400000010000L, 0x4010000000008000L, 0x100000000L, 0x100000L, 0x0L, 0x4000000000040L, 0x10400000008040L, 0x4004000100110000L, true, 0, 0x0L), 4), 112618); - - // gentest-966 - assertEqual(perft(new Board(0x400000010000L, 0x4010000000008000L, 0x100000000L, 0x0L, 0x0L, 0x4000000400000L, 0x10400000408000L, 0x4004000100010000L, false, 0, 0x0L), 4), 53299); - - // gentest-967 - assertEqual(perft(new Board(0x400000010000L, 0x10008000200000L, 0x100000000L, 0x0L, 0x0L, 0x4000000400000L, 0x10400000600000L, 0x4008100010000L, true, 0, 0x0L), 4), 28564); - - // gentest-968 - assertEqual(perft(new Board(0x400000010000L, 0x10009000000000L, 0x100000000L, 0x0L, 0x0L, 0x200000000008000L, 0x10401000008000L, 0x200008100010000L, false, 0, 0x0L), 4), 66521); - - // gentest-969 - assertEqual(perft(new Board(0x400000000100L, 0x10009000000000L, 0x2000000L, 0x0L, 0x0L, 0x200000000000080L, 0x10401000000080L, 0x200008002000100L, true, 0, 0x0L), 4), 81048); - - // gentest-970 - assertEqual(perft(new Board(0x400000000000L, 0x10008000000040L, 0x2000000L, 0x0L, 0x1L, 0x200000000000080L, 0x104000000000c0L, 0x200008002000001L, false, 0, 0x0L), 4), 98381); - - // gentest-971 - assertEqual(perft(new Board(0x400000000000L, 0x4000008000000040L, 0x400000000L, 0x0L, 0x1000000000L, 0x200000000000080L, 0x40004000000000c0L, 0x200009400000000L, true, 0, 0x0L), 4), 118429); - - // gentest-972 - assertEqual(perft(new Board(0x400000000000L, 0x10008000800000L, 0x400000000L, 0x0L, 0x40000000000000L, 0x200000000000080L, 0x10400000800080L, 0x240008400000000L, false, 0, 0x0L), 4), 114605); - - // gentest-973 - assertEqual(perft(new Board(0x400000000000L, 0x8000002000L, 0x10000000000000L, 0x0L, 0x40000L, 0x200000000000080L, 0x400000002080L, 0x210008000040000L, true, 0, 0x0L), 4), 129047); - - // gentest-974 - assertEqual(perft(new Board(0x400000000000L, 0x8000080000L, 0x10000000000000L, 0x0L, 0x8000000000000000L, 0x200000000008000L, 0x400000088000L, 0x8210008000000000L, false, 0, 0x0L), 4), 111965); - - // gentest-975 - assertEqual(perft(new Board(0x400000000000L, 0x8000000200L, 0x10000000000000L, 0x0L, 0x40000L, 0x200000000008000L, 0x400000008200L, 0x210008000040000L, true, 0, 0x0L), 4), 104699); - - // gentest-976 - assertEqual(perft(new Board(0x400000000000L, 0x8100000000L, 0x10000000000000L, 0x0L, 0x200000L, 0x200000000008000L, 0x400100008000L, 0x210008000200000L, false, 0, 0x0L), 4), 61268); - - // gentest-977 - assertEqual(perft(new Board(0x400000000000L, 0x48000000000L, 0x10000000000000L, 0x0L, 0x800000000L, 0x400000000008000L, 0x440000008000L, 0x410008800000000L, true, 0, 0x0L), 4), 117291); - - // gentest-978 - assertEqual(perft(new Board(0x40000000000000L, 0x9000000000L, 0x10000000000000L, 0x0L, 0x2000000000L, 0x400000000008000L, 0x40001000008000L, 0x41000a000000000L, false, 0, 0x0L), 4), 189922); - - // gentest-979 - assertEqual(perft(new Board(0x0L, 0x9000000000L, 0x4010000000000000L, 0x0L, 0x20000000000000L, 0x400000000008000L, 0x4000001000008000L, 0x430008000000000L, true, 0, 0x0L), 4), 182221); - - // gentest-980 - assertEqual(perft(new Board(0x0L, 0x8000002000L, 0x4010000000000000L, 0x0L, 0x1000000000000000L, 0x400000000008000L, 0x400000000000a000L, 0x1410008000000000L, false, 0, 0x0L), 4), 200078); - - // gentest-981 - assertEqual(perft(new Board(0x0L, 0x8000002000L, 0x84000000L, 0x0L, 0x200000000L, 0x400000000008000L, 0x400a000L, 0x400008280000000L, true, 0, 0x0L), 4), 354795); - - // gentest-982 - assertEqual(perft(new Board(0x0L, 0x200000002000L, 0x40080000000L, 0x0L, 0x0L, 0x400000000008000L, 0x4000000a000L, 0x400200080000000L, false, 0, 0x0L), 4), 61542); - - // gentest-983 - assertEqual(perft(new Board(0x0L, 0x2000L, 0x40080000000L, 0x0L, 0x0L, 0x400000000004000L, 0x40000004000L, 0x400000080002000L, true, 0, 0x0L), 4), 34848); - - // gentest-984 - assertEqual(perft(new Board(0x0L, 0x80000L, 0x81000000L, 0x0L, 0x0L, 0x400000000000020L, 0x1000020L, 0x400000080080000L, false, 0, 0x0L), 4), 37066); - - // gentest-985 - assertEqual(perft(new Board(0x0L, 0x80000L, 0x80000400L, 0x0L, 0x0L, 0x100000000000020L, 0x420L, 0x100000080080000L, true, 0, 0x0L), 4), 23130); - - // gentest-986 - assertEqual(perft(new Board(0x0L, 0x20000000L, 0x400080000000L, 0x0L, 0x0L, 0x100000000000040L, 0x400000000040L, 0x1000000a0000000L, false, 0, 0x0L), 4), 35738); - - // gentest-987 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-988 - assertEqual(perft(new Board(0xfd020080017e00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80017effL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 219822); - - // gentest-989 - assertEqual(perft(new Board(0xf9068000017e00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x8000017effL, 0xbff9260000000000L, true, 0, 0x8100000000000081L), 4), 244919); - - // gentest-990 - assertEqual(perft(new Board(0xf9068000097600L, 0x200200000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x4000000000008L, 0x1000000000000010L, 0x80000d76fdL, 0xb7fd260000000000L, false, 0, 0x8100000000000081L), 4), 788005); - - // gentest-991 - assertEqual(perft(new Board(0x79868000097600L, 0x200200000040040L, 0x2400000000000024L, 0x180000000008001L, 0x4000000000008L, 0x1000000000000010L, 0x80000df67dL, 0x37fda60000000000L, true, 0, 0x100000000000001L), 4), 702291); - - // gentest-992 - assertEqual(perft(new Board(0x79868800017600L, 0x200200000040040L, 0x2400000000000024L, 0x180000000008001L, 0x20000008L, 0x1000000000000010L, 0x880005f67dL, 0x37f9a60020000000L, false, 0, 0x100000000000001L), 4), 1162500); - - // gentest-993 - assertEqual(perft(new Board(0x39c28800017600L, 0x200200000040040L, 0x2400000000000024L, 0x180000000000081L, 0x20000008L, 0x1000000000000010L, 0x80000576fdL, 0x37b9e20820000000L, true, 0, 0x100000000000001L), 4), 1237879); - - // gentest-994 - assertEqual(perft(new Board(0x29c29800017600L, 0x200200000040040L, 0x2400000000000820L, 0x180000080000001L, 0x20000008L, 0x1000000000000010L, 0x8080057e79L, 0x37a9e21820000000L, false, 0, 0x100000000000001L), 4), 1515114); - - // gentest-995 - assertEqual(perft(new Board(0x29c09a00017600L, 0x200000010040040L, 0x2400000000000820L, 0x180000000000081L, 0x20000008L, 0x1000000000000010L, 0x8000057ef9L, 0x37a9c01a30000000L, true, 0, 0x100000000000001L), 4), 1225510); - - // gentest-996 - assertEqual(perft(new Board(0x9c0ba00017600L, 0x200000400000040L, 0x2400000000000820L, 0x180000000000081L, 0x20000008L, 0x1000000000000010L, 0x8400017ef9L, 0x3789c03a20000000L, false, 0, 0x100000000000001L), 4), 1487719); - - // gentest-997 - assertEqual(perft(new Board(0x980fa00017600L, 0x200000400000040L, 0x2400000000000820L, 0x180000000000081L, 0x4000004L, 0x1000000000000010L, 0x8400017ef5L, 0x3789807a04000000L, true, 0, 0x100000000000001L), 4), 1466876); - - // gentest-998 - assertEqual(perft(new Board(0x980fa00017600L, 0x110000000040L, 0x2400000000000820L, 0x180000000000081L, 0x4000002L, 0x1000000000000010L, 0x108000017ef3L, 0x3589817a04000000L, false, 0, 0x100000000000001L), 4), 1626177); - - // gentest-999 - assertEqual(perft(new Board(0x980fa00116600L, 0x100002000040L, 0x2400000000000820L, 0x180000000000081L, 0x10000002L, 0x1000000000000010L, 0x108000116ef3L, 0x3589807a12000000L, true, 0, 0x100000000000001L), 4), 1330569); - - // gentest-1000 - assertEqual(perft(new Board(0x980fa00114600L, 0x100002000040L, 0x2400000000000820L, 0x180000000800001L, 0x2L, 0x1000000000000010L, 0x108000914e73L, 0x3589807a02000000L, false, 0, 0x100000000000001L), 4), 781301); - - // gentest-1001 - assertEqual(perft(new Board(0x980fa02114400L, 0x110000000040L, 0x2400000000000820L, 0x120000000800001L, 0x2L, 0x1000000000000010L, 0x108002914c73L, 0x3529817a00000000L, true, 0, 0x100000000000001L), 4), 617206); - - // gentest-1002 - assertEqual(perft(new Board(0x980f800114400L, 0x110000000040L, 0x400000202000800L, 0x120000000800001L, 0x20000L, 0x1000000000000010L, 0x108200934c51L, 0x1529817802000000L, false, 0, 0x100000000000001L), 4), 1165958); - - // gentest-1003 - assertEqual(perft(new Board(0x980d820114400L, 0x800010000000040L, 0x2400000200000800L, 0x120000000800001L, 0x20000L, 0x1000000000000010L, 0x800008200934c51L, 0x3529815820000000L, true, 0, 0x100000000000001L), 4), 1269315); - - // gentest-1004 - assertEqual(perft(new Board(0x980d820114400L, 0x800010000000040L, 0x400000202040000L, 0x120000000800001L, 0x100L, 0x1000000000000010L, 0x800008200954551L, 0x1529815822000000L, false, 0, 0x100000000000001L), 4), 1071124); - - // gentest-1005 - assertEqual(perft(new Board(0x980d820114400L, 0x800010000000040L, 0x400080208000000L, 0x120000000800001L, 0x100L, 0x1000000000000010L, 0x800008208914551L, 0x1529895820000000L, true, 0, 0x100000000000001L), 4), 1362333); - - // gentest-1006 - assertEqual(perft(new Board(0x980d820114400L, 0x20010000000040L, 0x40008000c000000L, 0x140000000800001L, 0x100L, 0x1000000000000010L, 0x2000800c914551L, 0x1549895820000000L, false, 0, 0x100000000000001L), 4), 1138857); - - // gentest-1007 - assertEqual(perft(new Board(0x980d820014400L, 0x20000200000040L, 0x40008000c000000L, 0x140000000800001L, 0x100L, 0x1000000000000010L, 0x2000802c814551L, 0x1549885a00000000L, true, 0, 0x100000000000001L), 4), 1837308); - - // gentest-1008 - assertEqual(perft(new Board(0x980d820014400L, 0x20000200000040L, 0x40008000c000000L, 0x140000000400004L, 0x100L, 0x10000000000010L, 0x2000802c414554L, 0x559885a00000000L, false, 0, 0x0L), 4), 1713599); - - // gentest-1009 - assertEqual(perft(new Board(0x980d820014400L, 0x20000200000040L, 0x9000c000000L, 0x240000000400002L, 0x100L, 0x10000000000010L, 0x2000802c414552L, 0x259895a00000000L, true, 0, 0x0L), 4), 2731013); - - // gentest-1010 - assertEqual(perft(new Board(0x980c820014400L, 0x20000200000040L, 0x91004000000L, 0x42000000400002L, 0x100L, 0x10000000001000L, 0x20009024415542L, 0x5b894a00000000L, false, 0, 0x0L), 4), 1309651); - - // gentest-1011 - assertEqual(perft(new Board(0x980c820014400L, 0x20000000040040L, 0x4011004000000L, 0x42000000400002L, 0x100L, 0x10000000000010L, 0x20009024414552L, 0x5f814800040000L, true, 0, 0x0L), 4), 2057058); - - // gentest-1012 - assertEqual(perft(new Board(0x980e800014400L, 0x20000000040040L, 0x4090004000000L, 0x40000002400002L, 0x100L, 0x10000000000010L, 0x2008a004414552L, 0x5d814802040000L, false, 0, 0x0L), 4), 215081); - - // gentest-1013 - assertEqual(perft(new Board(0x980a840014400L, 0x20000000040040L, 0x90004000000L, 0x40000002400002L, 0x100L, 0x10000000000800L, 0x2000a004414d42L, 0x59890842040000L, true, 0, 0x0L), 4), 1725768); - - // gentest-1014 - assertEqual(perft(new Board(0x980a840014400L, 0x20000000040040L, 0x90004000000L, 0x40000000400208L, 0x100L, 0x10000000000010L, 0x2000a004414558L, 0x59890840040200L, false, 0, 0x0L), 4), 1760394); - - // gentest-1015 - assertEqual(perft(new Board(0x980a840014400L, 0x20000200000040L, 0x10002001000L, 0x40000000400208L, 0x100L, 0x10000000000010L, 0x2000a000415558L, 0x59810a42000200L, true, 0, 0x0L), 4), 172559); - - // gentest-1016 - assertEqual(perft(new Board(0x980a048014400L, 0x800000200000040L, 0x10002001000L, 0x40000000400208L, 0x100L, 0x10000000000020L, 0x80000a000415568L, 0x5981024a000200L, false, 0, 0x0L), 4), 1170425); - - // gentest-1017 - assertEqual(perft(new Board(0x980a048014400L, 0x800000000040040L, 0x10006000000L, 0x40000000400208L, 0x100L, 0x1000000000000020L, 0x80000a004414568L, 0x104981004a040200L, true, 0, 0x0L), 4), 1106298); - - // gentest-1018 - assertEqual(perft(new Board(0x188a048014400L, 0x800000000040040L, 0x10006000000L, 0x40000000480200L, 0x100L, 0x1000000000000010L, 0x80000a004494550L, 0x104189004a040200L, false, 0, 0x0L), 4), 705251); - - // gentest-1019 - assertEqual(perft(new Board(0x188a048014400L, 0x800000000000040L, 0x10006000000L, 0x40000000400a00L, 0x100L, 0x1000000000000010L, 0x80000a004414d10L, 0x104189004a000240L, true, 0, 0x0L), 4), 778681); - - // gentest-1020 - assertEqual(perft(new Board(0x188a049004400L, 0x800000000001000L, 0x10006000000L, 0x40000000800a00L, 0x100L, 0x1000000000000010L, 0x80000a005804d10L, 0x104189004a001200L, false, 0, 0x0L), 4), 1184184); - - // gentest-1021 - assertEqual(perft(new Board(0x188a009404400L, 0x800000000000000L, 0x10002001000L, 0x2000000800a00L, 0x100L, 0x1000000000000010L, 0x80000a001805d10L, 0x100389000a400200L, true, 0, 0x0L), 4), 557635); - - // gentest-1022 - assertEqual(perft(new Board(0x188a009404400L, 0x800000000000000L, 0x10006000000L, 0x20000000800800L, 0x200L, 0x1000000000000010L, 0x80000a005804e10L, 0x102189000a400000L, false, 0, 0x0L), 4), 525862); - - // gentest-1023 - assertEqual(perft(new Board(0x188a009404400L, 0x0L, 0x10006000000L, 0x2000000800800L, 0x200L, 0x800000000000008L, 0xa005804e08L, 0x80389000a400000L, true, 0, 0x0L), 4), 583895); - - // gentest-1024 - assertEqual(perft(new Board(0x188a100484400L, 0x0L, 0x10006000000L, 0x2000000800800L, 0x40000000000000L, 0x800000000000008L, 0x4000a104804c08L, 0x803890002480000L, false, 0, 0x0L), 4), 436325); - - // gentest-1025 - assertEqual(perft(new Board(0x188a100484400L, 0x0L, 0x110002000000L, 0x80000000800800L, 0x0L, 0x800000000000008L, 0x10a100804c08L, 0x881890002480000L, true, 0, 0x0L), 4), 208336); - - // gentest-1026 - assertEqual(perft(new Board(0x188a104484000L, 0x0L, 0x10002000000L, 0x8000000800800L, 0x0L, 0x800000000000008L, 0xa104804808L, 0x809890002480000L, false, 0, 0x0L), 4), 95559); - - // gentest-1027 - assertEqual(perft(new Board(0x89a104484000L, 0x0L, 0x202000000L, 0x8000000800800L, 0x0L, 0x800000000000010L, 0xa104804810L, 0x808890202480000L, true, 0, 0x0L), 4), 44435); - - // gentest-1028 - assertEqual(perft(new Board(0x89a104084000L, 0x0L, 0x202000000L, 0x2000000400800L, 0x0L, 0x800000000002000L, 0xa104406800L, 0x802890202080000L, false, 0, 0x0L), 4), 276570); - - // gentest-1029 - assertEqual(perft(new Board(0xa98100084000L, 0x0L, 0x6000000L, 0x80000000400800L, 0x0L, 0x800000000002000L, 0x208100406800L, 0x880890006080000L, true, 0, 0x0L), 4), 251924); - - // gentest-1030 - assertEqual(perft(new Board(0xa98100084000L, 0x0L, 0x4000000002000000L, 0xc0000000000800L, 0x0L, 0x800000000000020L, 0x40208100004820L, 0x4880890002080000L, false, 0, 0x0L), 4), 151357); - - // gentest-1031 - assertEqual(perft(new Board(0xa98100084000L, 0x0L, 0x2020000L, 0x4080000000000800L, 0x0L, 0x8000000000020L, 0x4000208100004820L, 0x888900020a0000L, true, 0, 0x0L), 4), 275076); - - // gentest-1032 - assertEqual(perft(new Board(0xa18900480000L, 0x0L, 0x2020000L, 0x1080000000000800L, 0x0L, 0x8000000000020L, 0x1000208100400820L, 0x888108020a0000L, false, 0, 0x0L), 4), 321393); - - // gentest-1033 - assertEqual(perft(new Board(0xa18900480000L, 0x0L, 0x2020000L, 0x40001000000800L, 0x0L, 0x80000000020L, 0x209100400820L, 0x408908020a0000L, true, 0, 0x0L), 4), 395549); - - // gentest-1034 - assertEqual(perft(new Board(0xa18900480000L, 0x0L, 0x2020000L, 0x40000040000800L, 0x0L, 0x100000000020L, 0x208140400820L, 0x409108020a0000L, false, 0, 0x0L), 4), 431368); - - // gentest-1035 - assertEqual(perft(new Board(0xa18108480000L, 0x0L, 0x2020000L, 0x40000040000800L, 0x0L, 0x80000000010L, 0x208140400810L, 0x4089000a0a0000L, true, 0, 0x0L), 4), 108360); - - // gentest-1036 - assertEqual(perft(new Board(0xa18100480000L, 0x0L, 0x2020000L, 0x40000040000800L, 0x0L, 0x1000000010L, 0x208140400810L, 0x408110020a0000L, false, 0, 0x0L), 4), 220679); - - // gentest-1037 - assertEqual(perft(new Board(0x40818100480000L, 0x0L, 0x2000000000020000L, 0x40000800L, 0x0L, 0x1000000010L, 0x40008140400810L, 0x20008110000a0000L, true, 0, 0x0L), 4), 207961); - - // gentest-1038 - assertEqual(perft(new Board(0x40818100480000L, 0x0L, 0x80000020000L, 0x20000008L, 0x0L, 0x1000000010L, 0x40008120400018L, 0x8910000a0000L, false, 0, 0x0L), 4), 198643); - - // gentest-1039 - assertEqual(perft(new Board(0x40818100480000L, 0x0L, 0x80000020000L, 0x20000001L, 0x0L, 0x1000000010L, 0x40008120400011L, 0x8910000a0000L, true, 0, 0x0L), 4), 235832); - - // gentest-1040 - assertEqual(perft(new Board(0x40818140000800L, 0x0L, 0x80000020000L, 0x20000001L, 0x0L, 0x1000001000L, 0x40008160001001L, 0x891000020800L, false, 0, 0x0L), 4), 349567); - - // gentest-1041 - assertEqual(perft(new Board(0x40818140000000L, 0x0L, 0x20080000000000L, 0x20000001L, 0x8L, 0x1000002000L, 0x40008160002001L, 0x20891000000008L, true, 0, 0x0L), 4), 464632); - - // gentest-1042 - assertEqual(perft(new Board(0x818140000000L, 0x0L, 0x20080000000000L, 0x20000001L, 0x2000000000000008L, 0x100000002000L, 0x2000008160002001L, 0x20990000000008L, false, 0, 0x0L), 4), 582569); - - // gentest-1043 - assertEqual(perft(new Board(0x818100000000L, 0x0L, 0x20080000000000L, 0x20000020L, 0x2000004000000000L, 0x100000002000L, 0x2000008120002020L, 0x20994000000000L, true, 0, 0x0L), 4), 731427); - - // gentest-1044 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x88000000000L, 0x20000020L, 0x2000004000000000L, 0x100000002000L, 0x2000000120002020L, 0x99c000000000L, false, 0, 0x0L), 4), 770634); - - // gentest-1045 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x88000000000L, 0x20000020L, 0x2040000000000000L, 0x100000000040L, 0x2000000120000060L, 0x40998000000000L, true, 0, 0x0L), 4), 127501); - - // gentest-1046 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x80000001000L, 0x20000004L, 0x40000000000000L, 0x100000000040L, 0x40000120000044L, 0x990000001000L, false, 0, 0x0L), 4), 598054); - - // gentest-1047 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x80000001000L, 0x20000010L, 0x40000000000000L, 0x100000000040L, 0x40000120000050L, 0x990000001000L, true, 0, 0x0L), 4), 245109); - - // gentest-1048 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x200000000001000L, 0x200000000010L, 0x40000L, 0x100000000040L, 0x200100040050L, 0x200910000001000L, false, 0, 0x0L), 4), 67581); - - // gentest-1049 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x80000001000L, 0x200000000008L, 0x40000L, 0x8000000000040L, 0x200100040048L, 0x8890000001000L, true, 0, 0x0L), 4), 351441); - - // gentest-1050 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x1000L, 0x80020000000L, 0x40000L, 0x10000000000040L, 0x80120040040L, 0x10810000001000L, false, 0, 0x0L), 4), 263528); - - // gentest-1051 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x200000L, 0x80020000000L, 0x40000L, 0x1000000000000080L, 0x80120040080L, 0x1000810000200000L, true, 0, 0x0L), 4), 13424); - - // gentest-1052 - assertEqual(perft(new Board(0x810100000000L, 0x0L, 0x40000000L, 0x82000000000L, 0x40000L, 0x1000000000008000L, 0x82100048000L, 0x1000810040000000L, false, 0, 0x0L), 4), 164648); - - // gentest-1053 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1054 - assertEqual(perft(new Board(0xff00000010ef00L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000040000000L, 0x1000000000000010L, 0x4010eff7L, 0xfdff010000000000L, false, 0, 0x8100000000000081L), 4), 780737); - - // gentest-1055 - assertEqual(perft(new Board(0xff00000010ef00L, 0x4000000400000042L, 0x2400000000000024L, 0x8200000000000081L, 0x800000000800000L, 0x1000000000000010L, 0x90eff7L, 0xfeff000400000000L, true, 0, 0x8000000000000081L), 4), 650517); - - // gentest-1056 - assertEqual(perft(new Board(0xff00000010ef00L, 0x4000000000000042L, 0x2400000000080004L, 0x8200000000000081L, 0x800000000400000L, 0x1000000000000010L, 0x58efd7L, 0xfeff000000000000L, false, 0, 0x8000000000000081L), 4), 594607); - - // gentest-1057 - assertEqual(perft(new Board(0xcf10200010ef00L, 0x4000000000000042L, 0x2400000000000024L, 0x8200000000000081L, 0x800000000400000L, 0x1000000000000010L, 0x50eff7L, 0xfecf102000000000L, true, 0, 0x8000000000000081L), 4), 1021334); - - // gentest-1058 - assertEqual(perft(new Board(0xcf10200814e300L, 0x4000000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000400000L, 0x1000000000000010L, 0x854e3f7L, 0xfdcf102000000000L, false, 0, 0x8000000000000081L), 4), 1048519); - - // gentest-1059 - assertEqual(perft(new Board(0xce112088146300L, 0x4000000000000042L, 0x2400000000000024L, 0x8200000000000081L, 0x800000000400000L, 0x1000000000000010L, 0x885463f7L, 0xfece112000000000L, true, 0, 0x8000000000000081L), 4), 1003011); - - // gentest-1060 - assertEqual(perft(new Board(0xce013088166100L, 0x4000000000000042L, 0x2400000200000004L, 0x8200000000000081L, 0x800000000400000L, 0x1000000000000010L, 0x2885661d7L, 0xfece013000000000L, false, 0, 0x8000000000000081L), 4), 1141722); - - // gentest-1061 - assertEqual(perft(new Board(0xca053088166100L, 0x200000000042L, 0x2400000200000004L, 0x8200000000000081L, 0x800000000400000L, 0x1000000000000800L, 0x2885669c7L, 0xbeca253000000000L, true, 0, 0x8000000000000000L), 4), 1338114); - - // gentest-1062 - assertEqual(perft(new Board(0x8a0510a8166100L, 0x200000000042L, 0x2400000200010000L, 0x8200000000000081L, 0x840000000000000L, 0x1000000000000800L, 0x400002881769c3L, 0xbe8a251020000000L, false, 0, 0x8000000000000000L), 4), 1448061); - - // gentest-1063 - assertEqual(perft(new Board(0x8a0510a8166100L, 0x200000000042L, 0x400000200010000L, 0x8200000000000081L, 0x40000100000000L, 0x1000000000080000L, 0x400002881e61c3L, 0x968a251120010000L, true, 0, 0x8000000000000000L), 4), 1132105); - - // gentest-1064 - assertEqual(perft(new Board(0x8a0510a8364100L, 0x200000000042L, 0x2400000200000000L, 0x8200000000000081L, 0x40000100000000L, 0x1000000000000800L, 0x400002883649c3L, 0xb68a251120000000L, false, 0, 0x8000000000000000L), 4), 1259538); - - // gentest-1065 - assertEqual(perft(new Board(0xa0590a0364100L, 0x200000000042L, 0x400080200000000L, 0x8200000000000081L, 0x40000100000000L, 0x1000000000000800L, 0x400012803649c3L, 0x960a2d8120000000L, true, 0, 0x8000000000000000L), 4), 1059681); - - // gentest-1066 - assertEqual(perft(new Board(0xa0190a0364100L, 0x200000000042L, 0x4000c0000000000L, 0x8200000000000081L, 0x20000100000000L, 0x800000000000800L, 0x200410803649c3L, 0x8e0a298120000000L, false, 0, 0x0L), 4), 1306666); - - // gentest-1067 - assertEqual(perft(new Board(0xa0190a0364100L, 0x800000042L, 0x4000c0000000000L, 0x8200000000000081L, 0x80000200000000L, 0x800000000000800L, 0x800410803649c3L, 0x8e0a098a20000000L, true, 0, 0x0L), 4), 1282383); - - // gentest-1068 - assertEqual(perft(new Board(0xa0190a0660100L, 0x100042L, 0x4000c0000000000L, 0x8200000000000081L, 0x400200000000L, 0x800000000000800L, 0x4410806609c3L, 0x8e0a098220100000L, false, 0, 0x0L), 4), 1484450); - - // gentest-1069 - assertEqual(perft(new Board(0x20590a0260100L, 0x40000042L, 0x400080000000000L, 0x8200000000000081L, 0x400200000000L, 0x800000000000800L, 0x4010802609c3L, 0x8e020d8260000000L, true, 0, 0x0L), 4), 1027346); - - // gentest-1070 - assertEqual(perft(new Board(0x20590a1260000L, 0x40000042L, 0x400080000000000L, 0x4200000000000081L, 0x80000200000000L, 0x800000000000800L, 0x800010812608c3L, 0x4e020d8260000000L, false, 0, 0x0L), 4), 1143772); - - // gentest-1071 - assertEqual(perft(new Board(0x20194a1260000L, 0x40000042L, 0x400080000000000L, 0x4200000000000081L, 0x22000000000L, 0x800000000000800L, 0x30812608c3L, 0x4e020b8460000000L, true, 0, 0x0L), 4), 883996); - - // gentest-1072 - assertEqual(perft(new Board(0x20194a1260000L, 0x40001002L, 0x400080000000000L, 0x4100000000000081L, 0x20020000000000L, 0x800000000000800L, 0x20001081261883L, 0x4d020b8460000000L, false, 0, 0x0L), 4), 1415704); - - // gentest-1073 - assertEqual(perft(new Board(0x20194a1260000L, 0x40001002L, 0x400080000000000L, 0x4100000000000081L, 0x200100000000L, 0x8000000000800L, 0x201081261883L, 0x450a098560000000L, true, 0, 0x0L), 4), 938435); - - // gentest-1074 - assertEqual(perft(new Board(0x20194a1260000L, 0x40001002L, 0x2400000000000000L, 0x4100000000000009L, 0x200100000000L, 0x8000000080000L, 0x2010812e100bL, 0x650a018560000000L, false, 0, 0x0L), 4), 626388); - - // gentest-1075 - assertEqual(perft(new Board(0x20194a0260000L, 0x40001002L, 0x400080000000000L, 0x4100000000000005L, 0x200001000000L, 0x8000000080000L, 0x2010802e1007L, 0x450a098461000000L, true, 0, 0x0L), 4), 975145); - - // gentest-1076 - assertEqual(perft(new Board(0x20194a0260000L, 0x40001002L, 0x400080000000000L, 0x4100000001000008L, 0x200000000000L, 0x40000080000L, 0x2010812e100aL, 0x45020d8460000000L, false, 0, 0x0L), 4), 1015782); - - // gentest-1077 - assertEqual(perft(new Board(0x20194a0260000L, 0x40001002L, 0x82000000000L, 0x100004001000008L, 0x200000000000L, 0x40004000000L, 0x20108526100aL, 0x1020de460000000L, true, 0, 0x0L), 4), 1103266); - - // gentest-1078 - assertEqual(perft(new Board(0x20194a0260000L, 0x40001002L, 0x2000000000L, 0x2000084001000000L, 0x200000000000L, 0x40004000000L, 0x281085261002L, 0x200205e460000000L, false, 0, 0x0L), 4), 38374); - - // gentest-1079 - assertEqual(perft(new Board(0x20194e0060000L, 0x1002L, 0x2000000000L, 0x2040080001000000L, 0x200000000000L, 0x4000004000000L, 0x2810c5061002L, 0x204601a420000000L, true, 0, 0x0L), 4), 1153904); - - // gentest-1080 - assertEqual(perft(new Board(0x20194e0060000L, 0x1002L, 0x2000000000L, 0x2000000001080000L, 0x20000000000000L, 0x4000004000000L, 0x200010c50e1002L, 0x200601a420000000L, false, 0, 0x0L), 4), 168011); - - // gentest-1081 - assertEqual(perft(new Board(0x20194e0060000L, 0x1002L, 0x8000000000000L, 0x20000001080000L, 0x10000000000000L, 0x4000004000000L, 0x100010c50e1002L, 0x2e018420000000L, true, 0, 0x0L), 4), 308249); - - // gentest-1082 - assertEqual(perft(new Board(0x196e0060000L, 0x1002L, 0x8000000000000L, 0x20000001080000L, 0x2000000000000000L, 0x4000800000000L, 0x20000018c10e1002L, 0x2c018620000000L, false, 0, 0x0L), 4), 518222); - - // gentest-1083 - assertEqual(perft(new Board(0x116e0060000L, 0x1002L, 0x8000000000000L, 0x80000000080001L, 0x2000000000000000L, 0x4000800000000L, 0x20000018800e1003L, 0x8c010660000000L, true, 0, 0x0L), 4), 446219); - - // gentest-1084 - assertEqual(perft(new Board(0x112e4060000L, 0x1002L, 0x8000000000000L, 0x80000000080001L, 0x200000000000L, 0x4000800000000L, 0x2018800e1003L, 0x8c010264000000L, false, 0, 0x0L), 4), 562240); - - // gentest-1085 - assertEqual(perft(new Board(0x112c4260000L, 0x1002L, 0x8000000000000L, 0x800000080001L, 0x100000000000L, 0x4000800000000L, 0x1018800e1003L, 0xc810244200000L, true, 0, 0x0L), 4), 495296); - - // gentest-1086 - assertEqual(perft(new Board(0x112c4060000L, 0x6L, 0x8000000000000L, 0x800000200001L, 0x100000000000L, 0x400000800000000L, 0x101880260007L, 0x408810244000000L, false, 0, 0x0L), 4), 374110); - - // gentest-1087 - assertEqual(perft(new Board(0x1284260000L, 0x6L, 0x8000000000000L, 0x800000000001L, 0x10000000000L, 0x800000800000000L, 0x11880060007L, 0x808800204200000L, true, 0, 0x0L), 4), 321941); - - // gentest-1088 - assertEqual(perft(new Board(0x1284260000L, 0x6L, 0x40000000L, 0x800100000000L, 0x10000000000L, 0x800000800000000L, 0x11980060006L, 0x800800244200000L, false, 0, 0x0L), 4), 330210); - - // gentest-1089 - assertEqual(perft(new Board(0x1280260000L, 0x804L, 0x40000000L, 0x800100000000L, 0x10000000000L, 0x10000800000000L, 0x11980040804L, 0x10800240220000L, true, 0, 0x0L), 4), 419043); - - // gentest-1090 - assertEqual(perft(new Board(0x1280260000L, 0x80800L, 0x40000000L, 0x100000000L, 0x80000000000L, 0x10000800000000L, 0x819800c0800L, 0x10000240220000L, false, 0, 0x0L), 4), 33424); - - // gentest-1091 - assertEqual(perft(new Board(0x1280260000L, 0x80800L, 0x8000000000000L, 0x100000000L, 0x4000000000000L, 0x1000000800000000L, 0x40019800c0800L, 0x1008000200220000L, true, 0, 0x0L), 4), 158715); - - // gentest-1092 - assertEqual(perft(new Board(0x1280260000L, 0x2000800L, 0x0L, 0x100000000L, 0x0L, 0x8000800000000L, 0x1982040800L, 0x8000200220000L, false, 0, 0x0L), 4), 37988); - - // gentest-1093 - assertEqual(perft(new Board(0x1280240200L, 0x2000800L, 0x0L, 0x100L, 0x0L, 0x10000800000000L, 0x1882040900L, 0x10000200200200L, true, 0, 0x0L), 4), 72089); - - // gentest-1094 - assertEqual(perft(new Board(0x1280240000L, 0x10004000000L, 0x0L, 0x102L, 0x0L, 0x10000800000000L, 0x11884040100L, 0x10000200200002L, false, 0, 0x0L), 4), 201440); - - // gentest-1095 - assertEqual(perft(new Board(0x1280240000L, 0x10004000000L, 0x0L, 0x10100L, 0x0L, 0x10000800000000L, 0x11884050000L, 0x10000200200100L, true, 0, 0x0L), 4), 103441); - - // gentest-1096 - assertEqual(perft(new Board(0x1280240000L, 0x200000004000000L, 0x0L, 0x10200L, 0x0L, 0x10040000000000L, 0x200041084050000L, 0x10000200200200L, false, 0, 0x0L), 4), 159567); - - // gentest-1097 - assertEqual(perft(new Board(0x1280240000L, 0x200000004000000L, 0x0L, 0x1000200L, 0x0L, 0x10040000000000L, 0x200041085040000L, 0x10000200200200L, true, 0, 0x0L), 4), 161121); - - // gentest-1098 - assertEqual(perft(new Board(0x1280240000L, 0x200002000000000L, 0x0L, 0x1000800L, 0x0L, 0x10040000000000L, 0x200043081040000L, 0x10000200200800L, false, 0, 0x0L), 4), 72687); - - // gentest-1099 - assertEqual(perft(new Board(0x1280240000L, 0x200002000000000L, 0x0L, 0x8000001000000L, 0x0L, 0x100400000000L, 0x200003481040000L, 0x8100200200000L, true, 0, 0x0L), 4), 184205); - - // gentest-1100 - assertEqual(perft(new Board(0x1280240000L, 0x10010000000000L, 0x0L, 0x800000001000000L, 0x0L, 0x100400000000L, 0x10011481040000L, 0x800100200200000L, false, 0, 0x0L), 4), 174743); - - // gentest-1101 - assertEqual(perft(new Board(0x1280240000L, 0x10010000000000L, 0x0L, 0x100000020000000L, 0x0L, 0x8000400000000L, 0x100114a0040000L, 0x108000200200000L, true, 0, 0x0L), 4), 124569); - - // gentest-1102 - assertEqual(perft(new Board(0x1284200000L, 0x14000000000000L, 0x0L, 0x1000000020000000L, 0x0L, 0x8000400000000L, 0x140014a4000000L, 0x1008000200200000L, false, 0, 0x0L), 4), 122255); - - // gentest-1103 - assertEqual(perft(new Board(0x1284200000L, 0x10010000000000L, 0x0L, 0x100000020000000L, 0x0L, 0x8000400000000L, 0x100114a4000000L, 0x108000200200000L, true, 0, 0x0L), 4), 113294); - - // gentest-1104 - assertEqual(perft(new Board(0x1084200000L, 0x10000002000000L, 0x0L, 0x100000010000000L, 0x0L, 0x8000400000000L, 0x10001492000000L, 0x108000004200000L, false, 0, 0x0L), 4), 196947); - - // gentest-1105 - assertEqual(perft(new Board(0x1084200000L, 0x400000002000000L, 0x0L, 0x1000010000000L, 0x0L, 0x800000400000000L, 0x400001492000000L, 0x801000004200000L, true, 0, 0x0L), 4), 166007); - - // gentest-1106 - assertEqual(perft(new Board(0x1084200000L, 0x2000000L, 0x0L, 0x1000040000000L, 0x0L, 0x400000008000000L, 0x10ca000000L, 0x401000004200000L, false, 0, 0x0L), 4), 174332); - - // gentest-1107 - assertEqual(perft(new Board(0x1084200000L, 0x2000000L, 0x0L, 0x40000000000100L, 0x0L, 0x800000008000000L, 0x4000108a000000L, 0x800000004200100L, true, 0, 0x0L), 4), 167038); - - // gentest-1108 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x101L, 0x0L, 0x800000008000000L, 0x108a000001L, 0x800000000240100L, false, 0, 0x0L), 4), 193765); - - // gentest-1109 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x2001L, 0x0L, 0x1000000004000000L, 0x1086000001L, 0x1000000000242000L, true, 0, 0x0L), 4), 146620); - - // gentest-1110 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x4100L, 0x0L, 0x1000000200000000L, 0x1282000100L, 0x1000000000244000L, false, 0, 0x0L), 4), 211279); - - // gentest-1111 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x3000L, 0x0L, 0x20000200000000L, 0x1282001000L, 0x20000000242000L, true, 0, 0x0L), 4), 92121); - - // gentest-1112 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x10002000L, 0x0L, 0x2000000200000000L, 0x1292000000L, 0x2000000000242000L, false, 0, 0x0L), 4), 98227); - - // gentest-1113 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x8000020L, 0x0L, 0x4000000200000000L, 0x128a000000L, 0x4000000000240020L, true, 0, 0x0L), 4), 131557); - - // gentest-1114 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x8000040L, 0x0L, 0x4000000100000000L, 0x118a000000L, 0x4000000000240040L, false, 0, 0x0L), 4), 166745); - - // gentest-1115 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x8000080L, 0x0L, 0x20000200000000L, 0x128a000000L, 0x20000000240080L, true, 0, 0x0L), 4), 181877); - - // gentest-1116 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x20000080L, 0x0L, 0x1000000400000000L, 0x14a2000000L, 0x1000000000240080L, false, 0, 0x0L), 4), 122540); - - // gentest-1117 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x2000001000L, 0x0L, 0x1000000400000000L, 0x3482000000L, 0x1000000000241000L, true, 0, 0x0L), 4), 100961); - - // gentest-1118 - assertEqual(perft(new Board(0x1080240000L, 0x2000000L, 0x0L, 0x20001000L, 0x0L, 0x800040000000000L, 0x410a2000000L, 0x800000000241000L, false, 0, 0x0L), 4), 105615); - - // gentest-1119 - assertEqual(perft(new Board(0x1080200400L, 0x2000000L, 0x0L, 0x20100000L, 0x0L, 0x800020000000000L, 0x210a2000000L, 0x800000000300400L, true, 0, 0x0L), 4), 132510); - - // gentest-1120 - assertEqual(perft(new Board(0x1080200400L, 0x2000000L, 0x0L, 0x8100000L, 0x0L, 0x401000000000000L, 0x100108a000000L, 0x400000000300400L, false, 0, 0x0L), 4), 85009); - - // gentest-1121 - assertEqual(perft(new Board(0x80200000L, 0x2000000L, 0x4L, 0x1000080000L, 0x0L, 0x401000000000000L, 0x1000082080000L, 0x400001000200004L, true, 0, 0x0L), 4), 161052); - - // gentest-1122 - assertEqual(perft(new Board(0x80200000L, 0x40000000000L, 0x4L, 0x8000010000000L, 0x0L, 0x401000000000000L, 0x9040080000000L, 0x400000010200004L, false, 0, 0x0L), 4), 178874); - - // gentest-1123 - assertEqual(perft(new Board(0x80200000L, 0x40000000000L, 0x4L, 0x10000000001000L, 0x0L, 0x401000000000000L, 0x11040080000000L, 0x400000000201004L, true, 0, 0x0L), 4), 151000); - - // gentest-1124 - assertEqual(perft(new Board(0x80200000L, 0x40000000000L, 0x4L, 0x10000000000800L, 0x0L, 0x401000000000000L, 0x11040080000000L, 0x400000000200804L, false, 0, 0x0L), 4), 132545); - - // gentest-1125 - assertEqual(perft(new Board(0x80200000L, 0x40000000000L, 0x200L, 0x8000000002000L, 0x0L, 0x401000000000000L, 0x9040080000000L, 0x400000000202200L, true, 0, 0x0L), 4), 112707); - - // gentest-1126 - assertEqual(perft(new Board(0x80200000L, 0x40000000000L, 0x200L, 0x8000000008000L, 0x0L, 0x401000000000000L, 0x9040080000000L, 0x400000000208200L, false, 0, 0x0L), 4), 149623); - - // gentest-1127 - assertEqual(perft(new Board(0x80200000L, 0x40000000000L, 0x1000000000L, 0x8000L, 0x0L, 0xa000000000000L, 0x2040080000000L, 0x8001000208000L, true, 0, 0x0L), 4), 84714); - - // gentest-1128 - assertEqual(perft(new Board(0x80200000L, 0x2000000L, 0x8000000L, 0x8000L, 0x0L, 0x8010000000000L, 0x10082000000L, 0x8000008208000L, false, 0, 0x0L), 4), 82950); - - // gentest-1129 - assertEqual(perft(new Board(0x80200000L, 0x40000000000L, 0x20000000000L, 0x1000L, 0x0L, 0x8010000000000L, 0x50080000000L, 0x8020000201000L, true, 0, 0x0L), 4), 71949); - - // gentest-1130 - assertEqual(perft(new Board(0x80200000L, 0x4000000L, 0x20000000000L, 0x800L, 0x0L, 0x8010000000000L, 0x10084000000L, 0x8020000200800L, false, 0, 0x0L), 4), 77526); - - // gentest-1131 - assertEqual(perft(new Board(0x80200000L, 0x1000000000L, 0x8000000L, 0x800L, 0x0L, 0x110000000000L, 0x11080000000L, 0x100008200800L, true, 0, 0x0L), 4), 101687); - - // gentest-1132 - assertEqual(perft(new Board(0x8000200000L, 0x1000000000L, 0x8000000L, 0x800L, 0x0L, 0x80200000000L, 0x9200000000L, 0x80008200800L, false, 0, 0x0L), 4), 89069); - - // gentest-1133 - assertEqual(perft(new Board(0x8000002000L, 0x400000000000L, 0x40L, 0x800L, 0x0L, 0x80200000000L, 0x408200000000L, 0x80000002840L, true, 0, 0x0L), 4), 52168); - - // gentest-1134 - assertEqual(perft(new Board(0x8000002000L, 0x20000000L, 0x40L, 0x80000L, 0x0L, 0xa0000000000L, 0x28020000000L, 0x80000082040L, false, 0, 0x0L), 4), 48436); - - // gentest-1135 - assertEqual(perft(new Board(0x8000002000L, 0x4000L, 0x40L, 0x10000000L, 0x0L, 0xa0000000000L, 0x28000004000L, 0x80010002040L, true, 0, 0x0L), 4), 53041); - - // gentest-1136 - assertEqual(perft(new Board(0x800000002000L, 0x4000L, 0x40L, 0x10000000000000L, 0x0L, 0x80200000000L, 0x800200004000L, 0x10080000002040L, false, 0, 0x0L), 4), 54004); - - // gentest-1137 - assertEqual(perft(new Board(0x800000002000L, 0x10L, 0x40L, 0x1000000000000000L, 0x0L, 0x80200000000L, 0x800200000010L, 0x1000080000002040L, true, 0, 0x0L), 4), 79958); - - // gentest-1138 - assertEqual(perft(new Board(0x800000002000L, 0x80000L, 0x40L, 0x1000000000000000L, 0x0L, 0x110000000000L, 0x810000080000L, 0x1000100000002040L, false, 0, 0x0L), 4), 61043); - - // gentest-1139 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1140 - assertEqual(perft(new Board(0xfd02004400bb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4400bbffL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 282565); - - // gentest-1141 - assertEqual(perft(new Board(0xf803044410ab00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4410abffL, 0xfff8030400000000L, true, 0, 0x8100000000000081L), 4), 286279); - - // gentest-1142 - assertEqual(perft(new Board(0xf80304c6102900L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xc61029ffL, 0xfdf8070400000000L, false, 0, 0x8100000000000081L), 4), 596607); - - // gentest-1143 - assertEqual(perft(new Board(0xe80314c6102900L, 0x4000040000000042L, 0x410000000000024L, 0x8100000000000081L, 0x800000001000000L, 0x1000000000000010L, 0xc71029f7L, 0xddf8071400000000L, true, 0, 0x8100000000000081L), 4), 917769); - - // gentest-1144 - assertEqual(perft(new Board(0xe8039446102900L, 0x240000000042L, 0x410000000000024L, 0x8100000000000081L, 0x800000001000000L, 0x1000000000000008L, 0x80471029efL, 0x9df8271400000000L, false, 0, 0x8100000000000000L), 4), 972211); - - // gentest-1145 - assertEqual(perft(new Board(0xe8039446300900L, 0x240000000042L, 0x410000000000024L, 0x8002000000000081L, 0x800000001000000L, 0x1000000000000008L, 0x80473009efL, 0x9cfa271400000000L, true, 0, 0x8000000000000000L), 4), 858773); - - // gentest-1146 - assertEqual(perft(new Board(0xe8039404300900L, 0x40040000042L, 0x410000000000024L, 0x8002000000000081L, 0x800000100000000L, 0x1000000000000008L, 0x85043009efL, 0x9cfa071040000000L, false, 0, 0x8000000000000000L), 4), 1108358); - - // gentest-1147 - assertEqual(perft(new Board(0xe8039424100900L, 0x40000008042L, 0x2400000000000024L, 0x8002000000000081L, 0x800000100000000L, 0x1000000000000008L, 0x85241009efL, 0xbcea071000008000L, true, 0, 0x8000000000000000L), 4), 1127707); - - // gentest-1148 - assertEqual(perft(new Board(0xe803b404100900L, 0x40000008042L, 0x2400000000000024L, 0x8002000000000081L, 0x200100000000L, 0x1000000000001000L, 0xa5041019e7L, 0xb4ea271000008000L, false, 0, 0x8000000000000000L), 4), 999796); - - // gentest-1149 - assertEqual(perft(new Board(0xe803b404100900L, 0x40000000062L, 0x2400000000000004L, 0x8001000000000081L, 0x200100000000L, 0x1000000000002000L, 0xa5041029c7L, 0xb4e9271000000020L, true, 0, 0x8000000000000000L), 4), 1162455); - - // gentest-1150 - assertEqual(perft(new Board(0xe00bb414000900L, 0x40000010060L, 0x2400000000000004L, 0x8001000000000081L, 0x200100000000L, 0x1000000000002000L, 0xa5140129c5L, 0xb4e12f1000000020L, false, 0, 0x8000000000000000L), 4), 1099873); - - // gentest-1151 - assertEqual(perft(new Board(0xe009b614000900L, 0x40000010060L, 0x2400000000000004L, 0x8001000000000081L, 0x180000000L, 0x1000000000200000L, 0xa5142109c5L, 0xb4e10d1280000020L, true, 0, 0x8000000000000000L), 4), 987483); - - // gentest-1152 - assertEqual(perft(new Board(0xe001be14000900L, 0x40000010060L, 0x2400000000000004L, 0x8001000080000001L, 0x1000000L, 0x1000000000200000L, 0xa495210945L, 0xb4e1051a00000020L, false, 0, 0x8000000000000000L), 4), 999247); - - // gentest-1153 - assertEqual(perft(new Board(0xc021bc14000900L, 0x40000010060L, 0x2400000000000200L, 0x8001000080000001L, 0x1000000L, 0x1000000000200000L, 0xa491210b41L, 0xb4c1251804000020L, true, 0, 0x8000000000000000L), 4), 1165214); - - // gentest-1154 - assertEqual(perft(new Board(0xc021bc14000900L, 0x40000010060L, 0x2002000008000000L, 0x8001000040000001L, 0x1000000L, 0x1000000000200000L, 0xa459210941L, 0xb0c3251804000020L, false, 0, 0x8000000000000000L), 4), 643467); - - // gentest-1155 - assertEqual(perft(new Board(0x8061bc14000900L, 0x40000010060L, 0x12000008000000L, 0x8001000040000008L, 0x1000000L, 0x1000000000200000L, 0xa459210948L, 0x9093651804000020L, true, 0, 0x8000000000000000L), 4), 1020037); - - // gentest-1156 - assertEqual(perft(new Board(0x8061bc14000900L, 0x40000010060L, 0x12000008000000L, 0x4001000040000008L, 0x1000000L, 0x1000000000001000L, 0xa459011948L, 0x5093651804000020L, false, 0, 0x0L), 4), 1061448); - - // gentest-1157 - assertEqual(perft(new Board(0x8061bc14000900L, 0x40000010060L, 0x12000000002000L, 0x41000040000008L, 0x1000000L, 0x800000000001000L, 0xa451013948L, 0x8d3651804000020L, true, 0, 0x0L), 4), 1089533); - - // gentest-1158 - assertEqual(perft(new Board(0x8061bc14000900L, 0x40000010040L, 0x410000000002000L, 0x41000000400008L, 0x1000000L, 0x800000000000020L, 0xa411412968L, 0xcd1651804000000L, false, 0, 0x0L), 4), 1326572); - - // gentest-1159 - assertEqual(perft(new Board(0x8061bc14000900L, 0x40000010040L, 0x2400000000002000L, 0x11000000020008L, 0x1000000L, 0x800000000000020L, 0xa411032968L, 0x2c91651804000000L, true, 0, 0x0L), 4), 1797989); - - // gentest-1160 - assertEqual(perft(new Board(0x8061bc14000900L, 0x40000010040L, 0x2400000080000000L, 0x1001000000080008L, 0x1000000L, 0x800000000000020L, 0xa491090968L, 0x3c81651804000000L, false, 0, 0x0L), 4), 1646818); - - // gentest-1161 - assertEqual(perft(new Board(0xe1bc14000900L, 0x40000210000L, 0x2400000080000000L, 0x1008000000080008L, 0x1000000L, 0x800000000000020L, 0xa491290928L, 0x3c08e51804000000L, true, 0, 0x0L), 4), 1315395); - - // gentest-1162 - assertEqual(perft(new Board(0xe1bc14000900L, 0x40000210000L, 0x2400000080000000L, 0x1020000000020002L, 0x1000000L, 0x800000000000020L, 0xa491230922L, 0x3c20e51804000000L, false, 0, 0x0L), 4), 1989603); - - // gentest-1163 - assertEqual(perft(new Board(0xe0b414000900L, 0x40000210000L, 0x2400000080000000L, 0x1020000000020002L, 0x10000000000L, 0x8000000000020L, 0x1a480230922L, 0x3428e41014000000L, true, 0, 0x0L), 4), 1267239); - - // gentest-1164 - assertEqual(perft(new Board(0xe0b414000900L, 0x2210000L, 0x2400004000000000L, 0x1020000000020002L, 0x10000000000L, 0x8000000000010L, 0x1e400230912L, 0x3428e01016000000L, false, 0, 0x0L), 4), 1113820); - - // gentest-1165 - assertEqual(perft(new Board(0xe09414000900L, 0x10000210000L, 0x2400004000000000L, 0x1010000000020002L, 0x0L, 0x8000000000010L, 0x40c400230912L, 0x3418a11014000000L, true, 0, 0x0L), 4), 495964); - - // gentest-1166 - assertEqual(perft(new Board(0xc09414000900L, 0x10000210000L, 0x2400200000000000L, 0x1080000200000002L, 0x0L, 0x8000000000010L, 0x608600210912L, 0x3488811014000000L, false, 0, 0x0L), 4), 628858); - - // gentest-1167 - assertEqual(perft(new Board(0xc09414000900L, 0x4000000210000L, 0x2400200000000000L, 0x90000200000200L, 0x0L, 0x8000000000010L, 0x608600210b10L, 0x249c801014000000L, true, 0, 0x0L), 4), 549018); - - // gentest-1168 - assertEqual(perft(new Board(0x80808414000900L, 0x4000000210000L, 0x2400001000000000L, 0x1000000200000200L, 0x0L, 0x8000000000010L, 0x80009600210b10L, 0x340c800014000000L, false, 0, 0x0L), 4), 705175); - - // gentest-1169 - assertEqual(perft(new Board(0x80808414000900L, 0x4000000210000L, 0x2400001000000000L, 0x1000000000020200L, 0x0L, 0x8000000000010L, 0x80009400230b10L, 0x340c800014000000L, true, 0, 0x0L), 4), 747027); - - // gentest-1170 - assertEqual(perft(new Board(0x80808410000900L, 0x100004008000L, 0x2400001000000000L, 0x1000000000020200L, 0x0L, 0x8000000000010L, 0x80009404028b10L, 0x3408900010000000L, false, 0, 0x0L), 4), 692037); - - // gentest-1171 - assertEqual(perft(new Board(0x80808410000900L, 0x100004008000L, 0x600001000000000L, 0x1000000000000200L, 0x0L, 0x8000000000010L, 0x80009404008b10L, 0x1608900010000000L, true, 0, 0x0L), 4), 721107); - - // gentest-1172 - assertEqual(perft(new Board(0x80808410010800L, 0x100004008000L, 0x600000008000000L, 0x10000000000200L, 0x0L, 0x8000000000010L, 0x8000840c018a10L, 0x618900010000000L, false, 0, 0x0L), 4), 701429); - - // gentest-1173 - assertEqual(perft(new Board(0x808410010800L, 0x4028000L, 0x8600000000000000L, 0x10000000000200L, 0x0L, 0x8000000000010L, 0x8000008404018a10L, 0x618800010020000L, true, 0, 0x0L), 4), 396433); - - // gentest-1174 - assertEqual(perft(new Board(0x808410010800L, 0x100028000L, 0x8401000000000000L, 0x10000000000100L, 0x0L, 0x8000000000010L, 0x8000008500018910L, 0x419800010020000L, false, 0, 0x0L), 4), 292273); - - // gentest-1175 - assertEqual(perft(new Board(0x808410010800L, 0x2000000008001L, 0x8401000000000000L, 0x80000000000100L, 0x0L, 0x8000000000010L, 0x8002008400018910L, 0x489800010000001L, true, 0, 0x0L), 4), 167383); - - // gentest-1176 - assertEqual(perft(new Board(0x808410010800L, 0x2000000028000L, 0x401000000040000L, 0x80000000000100L, 0x0L, 0x8000000000020L, 0x2008400058920L, 0x489800010020000L, false, 0, 0x0L), 4), 236670); - - // gentest-1177 - assertEqual(perft(new Board(0x808410010800L, 0x28000L, 0x3000100000000L, 0x80000000000100L, 0x0L, 0x400000000000020L, 0x8500018920L, 0x483800010020000L, true, 0, 0x0L), 4), 187738); - - // gentest-1178 - assertEqual(perft(new Board(0x808410010800L, 0x28000L, 0x3000100000000L, 0x80000000000001L, 0x0L, 0x200000000001000L, 0x8500019801L, 0x283800010020000L, false, 0, 0x0L), 4), 231591); - - // gentest-1179 - assertEqual(perft(new Board(0x808410010000L, 0x8800L, 0x101000100000000L, 0x80000000000040L, 0x0L, 0x200000000001000L, 0x8500019040L, 0x381800010000800L, true, 0, 0x0L), 4), 296004); - - // gentest-1180 - assertEqual(perft(new Board(0x808410010000L, 0x8000L, 0x101000000040000L, 0x40000000000040L, 0x0L, 0x200000000000800L, 0x8400058840L, 0x341800010000000L, false, 0, 0x0L), 4), 335369); - - // gentest-1181 - assertEqual(perft(new Board(0x808410010000L, 0x8000L, 0x101000002000000L, 0x40L, 0x0L, 0x200000000000800L, 0x8402018800L, 0x301800010000040L, true, 0, 0x0L), 4), 67616); - - // gentest-1182 - assertEqual(perft(new Board(0x808410010000L, 0x8000L, 0x101000100000000L, 0x40000000L, 0x0L, 0x200000000000008L, 0x8500018008L, 0x301800050000000L, false, 0, 0x0L), 4), 83541); - - // gentest-1183 - assertEqual(perft(new Board(0x808410010000L, 0x8000L, 0x1040000000010L, 0x40L, 0x0L, 0x200000000000008L, 0x8400018018L, 0x201840010000040L, true, 0, 0x0L), 4), 57578); - - // gentest-1184 - assertEqual(perft(new Board(0x808410010000L, 0x8000L, 0x101000000000010L, 0x40L, 0x0L, 0x200000000100000L, 0x8400118010L, 0x301800010000040L, false, 0, 0x0L), 4), 69089); - - // gentest-1185 - assertEqual(perft(new Board(0x808410010000L, 0x8000L, 0x101000000000000L, 0x20L, 0x0L, 0x200000008000000L, 0x8408018000L, 0x301800010000020L, true, 0, 0x0L), 4), 32415); - - // gentest-1186 - assertEqual(perft(new Board(0x808411000000L, 0x8000L, 0x101000000000000L, 0x2000000000000000L, 0x0L, 0x200000000040000L, 0x8401048000L, 0x2301800010000000L, false, 0, 0x0L), 4), 57743); - - // gentest-1187 - assertEqual(perft(new Board(0x808411000000L, 0x40000000L, 0x101000000000000L, 0x200000000000L, 0x0L, 0x400000000040000L, 0x8441040000L, 0x501a00010000000L, true, 0, 0x0L), 4), 112905); - - // gentest-1188 - assertEqual(perft(new Board(0x48011000000L, 0x800000000000L, 0x101000000000000L, 0x100000000000L, 0x0L, 0x400000000040000L, 0x848001040000L, 0x501100010000000L, false, 0, 0x0L), 4), 61533); - - // gentest-1189 - assertEqual(perft(new Board(0x48011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x800000002000000L, 0x848003000000L, 0x911000010000000L, true, 0, 0x0L), 4), 54337); - - // gentest-1190 - assertEqual(perft(new Board(0x4008011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x8000000010000L, 0x4808001010000L, 0x119000010000000L, false, 0, 0x0L), 4), 86936); - - // gentest-1191 - assertEqual(perft(new Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x4000000000200L, 0x808001000200L, 0x115000010000000L, true, 0, 0x0L), 4), 98282); - - // gentest-1192 - assertEqual(perft(new Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x20000000400L, 0x20008001000400L, 0x111020010000000L, false, 0, 0x0L), 4), 64680); - - // gentest-1193 - assertEqual(perft(new Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x20000000400L, 0x808001000400L, 0x111020010000000L, true, 0, 0x0L), 4), 56318); - - // gentest-1194 - assertEqual(perft(new Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x8000000000000L, 0x0L, 0x20000040000L, 0x808001040000L, 0x109020010000000L, false, 0, 0x0L), 4), 55122); - - // gentest-1195 - assertEqual(perft(new Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x20000000800L, 0x808001000800L, 0x111020010000000L, true, 0, 0x0L), 4), 52261); - - // gentest-1196 - assertEqual(perft(new Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x1000000000L, 0x0L, 0x20000001000L, 0x20008001001000L, 0x101021010000000L, false, 0, 0x0L), 4), 67131); - - // gentest-1197 - assertEqual(perft(new Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x80000L, 0x0L, 0x20000100000L, 0x20008001100000L, 0x101020010080000L, true, 0, 0x0L), 4), 19204); - - // gentest-1198 - assertEqual(perft(new Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x80000L, 0x0L, 0x400002000L, 0x20008001002000L, 0x101000410080000L, false, 0, 0x0L), 4), 74859); - - // gentest-1199 - assertEqual(perft(new Board(0x8011000000L, 0x800000000000000L, 0x300000000000000L, 0x80000L, 0x0L, 0x20000002000L, 0x800008001002000L, 0x300020010080000L, true, 0, 0x0L), 4), 83660); - - // gentest-1200 - assertEqual(perft(new Board(0x8011000000L, 0x2000000000000000L, 0x300000000000000L, 0x10000L, 0x0L, 0x20000002000L, 0x2000008001002000L, 0x300020010010000L, false, 0, 0x0L), 4), 67148); - } - - public static void batch3() { - // gentest-1201 - assertEqual(perft(new Board(0x8001100000L, 0x2000000000000000L, 0x100000020000000L, 0x10000L, 0x0L, 0x20000000040L, 0x2000008001000040L, 0x100020020110000L, true, 0, 0x0L), 4), 32103); - - // gentest-1202 - assertEqual(perft(new Board(0x800001100000L, 0x2000000000000000L, 0x100000020000000L, 0x10000L, 0x0L, 0x2000000004000L, 0x2000800001004000L, 0x102000020110000L, false, 0, 0x0L), 4), 38143); - - // gentest-1203 - assertEqual(perft(new Board(0x800100001000L, 0x2000000000000000L, 0x100000020000000L, 0x80000L, 0x0L, 0x2000000004000L, 0x2000800100004000L, 0x102000020081000L, true, 0, 0x0L), 4), 71175); - - // gentest-1204 - assertEqual(perft(new Board(0x800100001000L, 0x100000000000L, 0x100000020000000L, 0x80000L, 0x0L, 0x1000000002000L, 0x900100002000L, 0x101000020081000L, false, 0, 0x0L), 4), 166012); - - // gentest-1205 - assertEqual(perft(new Board(0x800100001000L, 0x400000000L, 0x40020000000L, 0x10000L, 0x0L, 0x1000000002000L, 0x800500002000L, 0x1040020011000L, true, 0, 0x0L), 4), 182597); - - // gentest-1206 - assertEqual(perft(new Board(0x800100001000L, 0x8000000L, 0x220000000L, 0x10000L, 0x0L, 0x1000000002000L, 0x800108002000L, 0x1000220011000L, false, 0, 0x0L), 4), 147301); - - // gentest-1207 - assertEqual(perft(new Board(0x800000001000L, 0x200000L, 0x220000000L, 0x100000000L, 0x0L, 0x100000000002000L, 0x800000202000L, 0x100000320001000L, true, 0, 0x0L), 4), 113619); - - // gentest-1208 - assertEqual(perft(new Board(0x800000001000L, 0x8000L, 0x200100000L, 0x100000000L, 0x0L, 0x100000000000010L, 0x800000008010L, 0x100000300101000L, false, 0, 0x0L), 4), 23064); - - // gentest-1209 - assertEqual(perft(new Board(0x800000001000L, 0x20L, 0x20200000000L, 0x10000L, 0x0L, 0x100000000000010L, 0x800000000030L, 0x100020200011000L, true, 0, 0x0L), 4), 43455); - - // gentest-1210 - assertEqual(perft(new Board(0x800000001000L, 0x10000000L, 0x20200000000L, 0x100000000L, 0x0L, 0x100000000000010L, 0x800010000010L, 0x100020300001000L, false, 0, 0x0L), 4), 57585); - - // gentest-1211 - assertEqual(perft(new Board(0x800000001000L, 0x10000000L, 0x30000000000L, 0x10000L, 0x0L, 0x100000000000800L, 0x800010000800L, 0x100030000011000L, true, 0, 0x0L), 4), 104632); - - // gentest-1212 - assertEqual(perft(new Board(0x80000000001000L, 0x4000000000L, 0x1010000000000L, 0x10000L, 0x0L, 0x100000000000800L, 0x80004000000800L, 0x101010000011000L, false, 0, 0x0L), 4), 94615); - - // gentest-1213 - assertEqual(perft(new Board(0x80000000001000L, 0x100000000000L, 0x3000000000000L, 0x10000L, 0x0L, 0x100000000000800L, 0x80100000000800L, 0x103000000011000L, true, 0, 0x0L), 4), 148843); - - // gentest-1214 - assertEqual(perft(new Board(0x1000L, 0x100000000000L, 0x2000000042000L, 0x10000L, 0x0L, 0x100000000000800L, 0x100000040800L, 0x102000000013000L, false, 0, 0x0L), 4), 283639); - - // gentest-1215 - assertEqual(perft(new Board(0x1000L, 0x4000000000000L, 0x2000008040000L, 0x10000L, 0x0L, 0x200000000000800L, 0x4000000040800L, 0x202000008011000L, true, 0, 0x0L), 4), 260578); - - // gentest-1216 - assertEqual(perft(new Board(0x1000L, 0x4000000000000L, 0x200000a000000L, 0x400000L, 0x0L, 0x200000000000010L, 0x4000002000010L, 0x202000008401000L, false, 0, 0x0L), 4), 277288); - - // gentest-1217 - assertEqual(perft(new Board(0x1000L, 0x4000000000000L, 0x2080000000001L, 0x400000L, 0x0L, 0x200000000000010L, 0x4080000000010L, 0x202000000401001L, true, 0, 0x0L), 4), 154705); - - // gentest-1218 - assertEqual(perft(new Board(0x0L, 0x4000000000000L, 0x2002000000000001L, 0x4000000000L, 0x0L, 0x200000000001000L, 0x2004000000001000L, 0x202004000000001L, false, 0, 0x0L), 4), 299638); - - // gentest-1219 - assertEqual(perft(new Board(0x0L, 0x4000000000000L, 0x2000040000000001L, 0x400000L, 0x0L, 0x200000000002000L, 0x2004000000002000L, 0x200040000400001L, true, 0, 0x0L), 4), 269265); - - // gentest-1220 - assertEqual(perft(new Board(0x0L, 0x4000000000000L, 0x40000010001L, 0x100000L, 0x0L, 0x200000000002000L, 0x4000000012000L, 0x200040000100001L, false, 0, 0x0L), 4), 259327); - - // gentest-1221 - assertEqual(perft(new Board(0x0L, 0x1000000000000000L, 0x40000010001L, 0x8000000000L, 0x0L, 0x200000000002000L, 0x1000000000012000L, 0x200048000000001L, true, 0, 0x0L), 4), 286191); - - // gentest-1222 - assertEqual(perft(new Board(0x0L, 0x1000000000000000L, 0x40400000001L, 0x8000000000L, 0x0L, 0x400000000000010L, 0x1000000400000010L, 0x400048000000001L, false, 0, 0x0L), 4), 315549); - - // gentest-1223 - assertEqual(perft(new Board(0x0L, 0x1000000000000000L, 0x40040400000000L, 0x80L, 0x0L, 0x400000000001000L, 0x1000000400001000L, 0x440040000000080L, true, 0, 0x0L), 4), 343615); - - // gentest-1224 - assertEqual(perft(new Board(0x0L, 0x80000000000L, 0x40040400000000L, 0x80000000000000L, 0x0L, 0x400000000080000L, 0x80400080000L, 0x4c0040000000000L, false, 0, 0x0L), 4), 44825); - - // gentest-1225 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1226 - assertEqual(perft(new Board(0xfe00010800f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x800fff7L, 0xfffe000100000000L, false, 0, 0x8100000000000081L), 4), 452342); - - // gentest-1227 - assertEqual(perft(new Board(0xfe000108807700L, 0x200200000000042L, 0x2400000000000024L, 0x8000010000000081L, 0x800000000000800L, 0x1000000000000010L, 0x8807ff7L, 0xbefe210100000000L, true, 0, 0x8000000000000081L), 4), 609289); - - // gentest-1228 - assertEqual(perft(new Board(0xfc00030c807300L, 0x200200000000042L, 0x2400000000000024L, 0x8000010000000081L, 0x800000000000008L, 0x1000000000000010L, 0xc8073ffL, 0xbefc210300000000L, false, 0, 0x8000000000000081L), 4), 704688); - - // gentest-1229 - assertEqual(perft(new Board(0xf4000b0c807300L, 0x200200000000042L, 0x2400004000000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400c8073fbL, 0xbff4200b00000000L, true, 0, 0x8000000000000081L), 4), 1100571); - - // gentest-1230 - assertEqual(perft(new Board(0xf4000b0ca05300L, 0x200200000000042L, 0x2002004000000020L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x400ca05bf3L, 0xbbf6200b00000000L, false, 0, 0x8000000000000081L), 4), 920978); - - // gentest-1231 - assertEqual(perft(new Board(0xe4001b0ca05300L, 0x200008000000042L, 0x2002000020000020L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x2ca05bf3L, 0xbbe6009b00000000L, true, 0, 0x8000000000000081L), 4), 1564987); - - // gentest-1232 - assertEqual(perft(new Board(0xe4001b0ca25100L, 0x200008000000042L, 0x2002000020000020L, 0x8000010000000081L, 0x800000000000004L, 0x1000000000000010L, 0x2ca251f7L, 0xbae6019b00000000L, false, 0, 0x8000000000000081L), 4), 1978598); - - // gentest-1233 - assertEqual(perft(new Board(0xe400020da25100L, 0x200008000000042L, 0x2002001000000020L, 0x8000010000000081L, 0x800000000000004L, 0x1000000000000010L, 0x1008a251f7L, 0xbae6018205000000L, true, 0, 0x8000000000000081L), 4), 2719707); - - // gentest-1234 - assertEqual(perft(new Board(0xe000020da25100L, 0x200008000000042L, 0x2006000000000020L, 0x8000010000000081L, 0x80000004L, 0x1000000000000008L, 0x4000008a251efL, 0xb2e2018285000000L, false, 0, 0x8000000000000000L), 4), 2662389); - - // gentest-1235 - assertEqual(perft(new Board(0xa040020fa05100L, 0x200008000000042L, 0x2006000000000020L, 0x4000010000000081L, 0x80000004L, 0x1000000000000008L, 0x400000aa051efL, 0x72a2418285000000L, true, 0, 0x0L), 4), 1944381); - - // gentest-1236 - assertEqual(perft(new Board(0xa040020fa05100L, 0x200000020000042L, 0x2006000000000020L, 0x4000010000000081L, 0x800080000000L, 0x1000000000000004L, 0x480000aa051e7L, 0x72a24102a5000000L, false, 0, 0x0L), 4), 1793519); - - // gentest-1237 - assertEqual(perft(new Board(0x8010420fa05100L, 0x200000020000042L, 0x2006000000000020L, 0x4000010000000081L, 0x80000000L, 0x1000000000000004L, 0x400000aa051e7L, 0x72821142a5000000L, true, 0, 0x0L), 4), 869683); - - // gentest-1238 - assertEqual(perft(new Board(0x8010420fa05100L, 0x200000020000042L, 0x2002020000000020L, 0x4000080000008001L, 0x80000000L, 0x1000000000000004L, 0x2000aa0d167L, 0x72821842a5000000L, false, 0, 0x0L), 4), 695762); - - // gentest-1239 - assertEqual(perft(new Board(0xd20fa15000L, 0x200000020000042L, 0x2002020000000020L, 0x4000080000008001L, 0x80000000L, 0x1000000000000004L, 0x2000aa1d067L, 0x720208d2a5000000L, true, 0, 0x0L), 4), 721861); - - // gentest-1240 - assertEqual(perft(new Board(0xd20f611000L, 0x200000020000042L, 0x2002000400000020L, 0x4000080000008001L, 0x800000L, 0x1000000000000004L, 0x40a619067L, 0x720208d225800000L, false, 0, 0x0L), 4), 1307118); - - // gentest-1241 - assertEqual(perft(new Board(0xd20f611000L, 0x8100000800002L, 0x2002000400000020L, 0x4000080000008001L, 0x0L, 0x1000000000000004L, 0x40ae19027L, 0x700a18d205000000L, true, 0, 0x0L), 4), 777942); - - // gentest-1242 - assertEqual(perft(new Board(0xd20f611000L, 0x8100000002002L, 0x2002020000000020L, 0x4000000800008001L, 0x0L, 0x1000000000000004L, 0x2000a61b027L, 0x700a10da05000000L, false, 0, 0x0L), 4), 958150); - - // gentest-1243 - assertEqual(perft(new Board(0xc20d710000L, 0x8100000002002L, 0x2020002000020L, 0x4000000800008001L, 0x0L, 0x1000000000000004L, 0x2000071a027L, 0x500a10ca0f000000L, true, 0, 0x0L), 4), 1672700); - - // gentest-1244 - assertEqual(perft(new Board(0x428d710000L, 0x8100000002800L, 0x2020002000020L, 0x4000000800800001L, 0x0L, 0x1000000000000004L, 0x20000f12825L, 0x500a104a8f000000L, false, 0, 0x0L), 4), 1612858); - - // gentest-1245 - assertEqual(perft(new Board(0x4285710000L, 0x8100000002800L, 0x12020000000020L, 0x4000000800000081L, 0x0L, 0x1000000000000004L, 0x200006128a5L, 0x501a104a85100000L, true, 0, 0x0L), 4), 2118963); - - // gentest-1246 - assertEqual(perft(new Board(0x42a5510000L, 0x8100000002800L, 0x20a0000000020L, 0x4000000800000041L, 0x0L, 0x1000000000000004L, 0x20020412865L, 0x500a184a85100000L, false, 0, 0x0L), 4), 2347640); - - // gentest-1247 - assertEqual(perft(new Board(0x42a5500000L, 0x8100000002800L, 0x60000010020L, 0x4000000800000041L, 0x0L, 0x1000000000000400L, 0x20020402c61L, 0x5008144a85110000L, true, 0, 0x0L), 4), 2593114); - - // gentest-1248 - assertEqual(perft(new Board(0x42a5500000L, 0x100400202000L, 0x60000010020L, 0x4000000800000041L, 0x0L, 0x1000000000000002L, 0x20020602063L, 0x5000144e85110000L, false, 0, 0x0L), 4), 1961773); - - // gentest-1249 - assertEqual(perft(new Board(0x4225500000L, 0x100480002000L, 0x100020000010020L, 0x4000001000000041L, 0x0L, 0x1000000000000002L, 0x200a0402063L, 0x5100105605110000L, true, 0, 0x0L), 4), 1381459); - - // gentest-1250 - assertEqual(perft(new Board(0x4225500000L, 0x40001400002000L, 0x100020000010020L, 0x4000000000000041L, 0x0L, 0x1000000000000002L, 0x21020402063L, 0x5140004605110000L, false, 0, 0x0L), 4), 987735); - - // gentest-1251 - assertEqual(perft(new Board(0x4027500000L, 0x40001400000000L, 0x20010010020L, 0x4000000000000041L, 0x0L, 0x1000000000000002L, 0x21020400063L, 0x5040004417110000L, true, 0, 0x0L), 4), 74875); - - // gentest-1252 - assertEqual(perft(new Board(0x4027500000L, 0x3000000000L, 0x410010020L, 0x4000000000000041L, 0x0L, 0x1000000000000100L, 0x1420400161L, 0x5000006017110000L, false, 0, 0x0L), 4), 670288); - - // gentest-1253 - assertEqual(perft(new Board(0x4027500000L, 0x42000000000L, 0x400004220L, 0x4000000000000041L, 0x0L, 0x1000000000000100L, 0x40420400161L, 0x5000006007104200L, true, 0, 0x0L), 4), 999451); - - // gentest-1254 - assertEqual(perft(new Board(0x4025500000L, 0x1000080000000L, 0x2004220L, 0x4000000000000041L, 0x0L, 0x1000000000000100L, 0x1000022400161L, 0x5000004085104200L, false, 0, 0x0L), 4), 841331); - - // gentest-1255 - assertEqual(perft(new Board(0x4025500000L, 0x400002000000000L, 0x100000002000220L, 0x4000000000000041L, 0x0L, 0x1000000000000100L, 0x400000022400161L, 0x5100006005100200L, true, 0, 0x0L), 4), 885454); - - // gentest-1256 - assertEqual(perft(new Board(0x4025500000L, 0x22000000000L, 0x100000002004001L, 0x4000000000000040L, 0x0L, 0x1000000000000100L, 0x20022404140L, 0x5100006005100001L, false, 0, 0x0L), 4), 1084673); - - // gentest-1257 - assertEqual(perft(new Board(0x4025500000L, 0x22000000000L, 0x140000002004000L, 0x400000000040L, 0x0L, 0x1000000000000002L, 0x20022404042L, 0x1140406005100000L, true, 0, 0x0L), 4), 1158966); - - // gentest-1258 - assertEqual(perft(new Board(0x4025500000L, 0x22000000000L, 0x100001002800000L, 0x400000000008L, 0x0L, 0x1000000000000002L, 0x20022c0000aL, 0x1100407005100000L, false, 0, 0x0L), 4), 1650240); - - // gentest-1259 - assertEqual(perft(new Board(0x4025500000L, 0x400002000000000L, 0x100000002840000L, 0x40000000008L, 0x0L, 0x1000000000000002L, 0x400000022c0000aL, 0x1100046005140000L, true, 0, 0x0L), 4), 933071); - - // gentest-1260 - assertEqual(perft(new Board(0x4024510000L, 0x400002000000000L, 0x100000000840000L, 0x40000000008L, 0x0L, 0x1000000000000004L, 0x400000020c4000cL, 0x1100046004110000L, false, 0, 0x0L), 4), 632226); - - // gentest-1261 - assertEqual(perft(new Board(0x24510000L, 0x400000080000000L, 0x8100000000800000L, 0x40000000008L, 0x0L, 0x1000000000000004L, 0x8400000000c0000cL, 0x11000400a4110000L, true, 0, 0x0L), 4), 484521); - - // gentest-1262 - assertEqual(perft(new Board(0x24100100L, 0x400000080000000L, 0x100001000800000L, 0x40000000008L, 0x0L, 0x1000000000000004L, 0x40000102080000cL, 0x1100040084100100L, false, 0, 0x0L), 4), 502263); - - // gentest-1263 - assertEqual(perft(new Board(0x24100100L, 0x400000080000000L, 0x100000008800000L, 0x4000000008L, 0x0L, 0x1000000000000004L, 0x40000002880000cL, 0x1100004084100100L, true, 0, 0x0L), 4), 790785); - - // gentest-1264 - assertEqual(perft(new Board(0x24000100L, 0x20080000000L, 0x100000000900000L, 0x400000008L, 0x0L, 0x1000000000000004L, 0x2002090000cL, 0x1100000484000100L, false, 0, 0x0L), 4), 688367); - - // gentest-1265 - assertEqual(perft(new Board(0x24000000L, 0x20080000001L, 0x100000000900000L, 0x400000000000008L, 0x0L, 0x1000000000000200L, 0x20020900208L, 0x1500000084000001L, true, 0, 0x0L), 4), 639894); - - // gentest-1266 - assertEqual(perft(new Board(0x24000000L, 0x20080000001L, 0x8800080L, 0x400000000000010L, 0x0L, 0x1000000000000200L, 0x20028800210L, 0x1400000084000081L, false, 0, 0x0L), 4), 130387); - - // gentest-1267 - assertEqual(perft(new Board(0x24000000L, 0x20080020000L, 0x1000800080L, 0x400000000000010L, 0x0L, 0x800000000000200L, 0x21020800210L, 0xc00000084020080L, true, 0, 0x0L), 4), 639400); - - // gentest-1268 - assertEqual(perft(new Board(0x24000000L, 0x81020000L, 0x800080L, 0x4000000000010L, 0x0L, 0x800000000000200L, 0x21800210L, 0x804000084020080L, false, 0, 0x0L), 4), 584667); - - // gentest-1269 - assertEqual(perft(new Board(0x24000000L, 0x400009000000L, 0x40000080L, 0x4000000000010L, 0x0L, 0x800000000000200L, 0x61000210L, 0x80440000c000080L, true, 0, 0x0L), 4), 878377); - - // gentest-1270 - assertEqual(perft(new Board(0x2004000000L, 0x400009000000L, 0x40000080L, 0x8000000000008L, 0x0L, 0x800000000000200L, 0x2041000208L, 0x80840000c000080L, false, 0, 0x0L), 4), 647040); - - // gentest-1271 - assertEqual(perft(new Board(0x2004000000L, 0x440000040000L, 0x40200000L, 0x8000000000008L, 0x0L, 0x800000000000200L, 0x2040040208L, 0x808440004200000L, true, 0, 0x0L), 4), 753183); - - // gentest-1272 - assertEqual(perft(new Board(0x2004000000L, 0x440000040000L, 0x4000L, 0x8000000000008L, 0x0L, 0x10000000000200L, 0x2000044208L, 0x18440004000000L, false, 0, 0x0L), 4), 612262); - - // gentest-1273 - assertEqual(perft(new Board(0x2004000000L, 0x800000080040000L, 0x4000L, 0x8000000000008L, 0x0L, 0x10000000000002L, 0x200004400aL, 0x818000084000000L, true, 0, 0x0L), 4), 343513); - - // gentest-1274 - assertEqual(perft(new Board(0x2004000000L, 0x800000080040000L, 0x4000L, 0x1000000000800L, 0x0L, 0x10000000000004L, 0x2000044804L, 0x811000084000000L, false, 0, 0x0L), 4), 432815); - - // gentest-1275 - assertEqual(perft(new Board(0x2004000000L, 0x100080040000L, 0x20L, 0x8000000000800L, 0x0L, 0x10000000000004L, 0x2000040824L, 0x18100084000000L, true, 0, 0x0L), 4), 501650); - - // gentest-1276 - assertEqual(perft(new Board(0x2004000000L, 0x100080040000L, 0x20L, 0x8000000004000L, 0x0L, 0x20000000000002L, 0x2000044022L, 0x28100084000000L, false, 0, 0x0L), 4), 483929); - - // gentest-1277 - assertEqual(perft(new Board(0x2004000000L, 0x800000080040000L, 0x20L, 0x4800000000L, 0x0L, 0x20000000000002L, 0x6000040022L, 0x820000884000000L, true, 0, 0x0L), 4), 277469); - - // gentest-1278 - assertEqual(perft(new Board(0x4000000L, 0x800002000040000L, 0x80000L, 0x8800000000L, 0x0L, 0x20000000000002L, 0x80000c0002L, 0x820002804000000L, false, 0, 0x0L), 4), 484580); - - // gentest-1279 - assertEqual(perft(new Board(0x4000000L, 0x800002000040000L, 0x20L, 0x88000000000L, 0x0L, 0x4000000000000002L, 0x8000040022L, 0x4800082004000000L, true, 0, 0x0L), 4), 377216); - - // gentest-1280 - assertEqual(perft(new Board(0x4000000L, 0x800002000040000L, 0x20L, 0x800000008000L, 0x0L, 0x4000000000000400L, 0x48420L, 0x4800802004000000L, false, 0, 0x0L), 4), 444384); - - // gentest-1281 - assertEqual(perft(new Board(0x4000000L, 0x2002000040000L, 0x20L, 0x8000000000008000L, 0x0L, 0x4000000000000004L, 0x48024L, 0xc002002004000000L, true, 0, 0x0L), 4), 357294); - - // gentest-1282 - assertEqual(perft(new Board(0x4000000L, 0x42000000040000L, 0x20L, 0x8000000000004000L, 0x0L, 0x4000000000000002L, 0x44022L, 0xc042000004000000L, false, 0, 0x0L), 4), 186894); - - // gentest-1283 - assertEqual(perft(new Board(0x0L, 0x2008000040000L, 0x4000000L, 0x8000000000004000L, 0x0L, 0x2000000000000002L, 0x4044002L, 0xa002008000000000L, true, 0, 0x0L), 4), 276983); - - // gentest-1284 - assertEqual(perft(new Board(0x0L, 0x2008000040000L, 0x1000L, 0x4000000000000000L, 0x0L, 0x2000000000000002L, 0x41002L, 0x6002008000000000L, false, 0, 0x0L), 4), 161782); - - // gentest-1285 - assertEqual(perft(new Board(0x0L, 0x40080000040000L, 0x10000000000L, 0x4000000000000000L, 0x0L, 0x2000000000000002L, 0x10000040002L, 0x6040080000000000L, true, 0, 0x0L), 4), 98244); - - // gentest-1286 - assertEqual(perft(new Board(0x0L, 0x1040000010000000L, 0x10000000000L, 0x4000000000000000L, 0x0L, 0x2000000000000200L, 0x10010000200L, 0x7040000000000000L, false, 0, 0x0L), 4), 71533); - - // gentest-1287 - assertEqual(perft(new Board(0x0L, 0x300400000000L, 0x10000000000L, 0x4000000000000000L, 0x0L, 0x2000000000000200L, 0x10400000200L, 0x6000300000000000L, true, 0, 0x0L), 4), 263997); - - // gentest-1288 - assertEqual(perft(new Board(0x0L, 0x808200000000000L, 0x200000000L, 0x4000000000000000L, 0x0L, 0x2000000000000200L, 0x8000200000200L, 0x6800200000000000L, false, 0, 0x0L), 4), 39236); - - // gentest-1289 - assertEqual(perft(new Board(0x0L, 0x20200400000000L, 0x200000000L, 0x4000000000000000L, 0x0L, 0x10000000000200L, 0x600000200L, 0x4030200000000000L, true, 0, 0x0L), 4), 453756); - - // gentest-1290 - assertEqual(perft(new Board(0x0L, 0x380000000000L, 0x1000L, 0x4000000000000000L, 0x0L, 0x10000000000200L, 0x100000001200L, 0x4010280000000000L, false, 0, 0x0L), 4), 456587); - - // gentest-1291 - assertEqual(perft(new Board(0x0L, 0x20300000000000L, 0x8L, 0x4000000000000000L, 0x0L, 0x8000000000200L, 0x100000000208L, 0x4028200000000000L, true, 0, 0x0L), 4), 334185); - - // gentest-1292 - assertEqual(perft(new Board(0x0L, 0x2020200000000000L, 0x400L, 0x4000000000000000L, 0x0L, 0x400000000000200L, 0x2000000000000600L, 0x4420200000000000L, false, 0, 0x0L), 4), 219203); - - // gentest-1293 - assertEqual(perft(new Board(0x0L, 0x1020000000000000L, 0x400L, 0x2000000000000000L, 0x0L, 0x400000000010000L, 0x10400L, 0x3420000000000000L, true, 0, 0x0L), 4), 59505); - - // gentest-1294 - assertEqual(perft(new Board(0x0L, 0x1020000000000000L, 0x400000000000L, 0x2000000000000000L, 0x0L, 0x4000001000000L, 0x400001000000L, 0x3024000000000000L, false, 0, 0x0L), 4), 68596); - - // gentest-1295 - assertEqual(perft(new Board(0x0L, 0x1000800000000000L, 0x8000000000L, 0x2000000000000000L, 0x0L, 0x800000001000000L, 0x8001000000L, 0x3800800000000000L, true, 0, 0x0L), 4), 61791); - - // gentest-1296 - assertEqual(perft(new Board(0x0L, 0x1000800000000000L, 0x8000000000L, 0x2000000000000000L, 0x0L, 0x400000002000000L, 0x8002000000L, 0x3400800000000000L, false, 0, 0x0L), 4), 86562); - - // gentest-1297 - assertEqual(perft(new Board(0x0L, 0x1000000040000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000002000000L, 0x2000000L, 0x5400000040000000L, true, 0, 0x0L), 4), 22909); - - // gentest-1298 - assertEqual(perft(new Board(0x0L, 0x40000040000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000002000000L, 0x2000000L, 0x4440000040000000L, false, 0, 0x0L), 4), 20343); - - // gentest-1299 - assertEqual(perft(new Board(0x0L, 0x40000004000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000200000000L, 0x200000000L, 0x4440000004000000L, true, 0, 0x0L), 4), 11659); - - // gentest-1300 - assertEqual(perft(new Board(0x0L, 0x40020000000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000200000000L, 0x200000000L, 0x4440020000000000L, false, 0, 0x0L), 4), 9690); - - // gentest-1301 - assertEqual(perft(new Board(0x0L, 0x40020000000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000004000000L, 0x4000000L, 0x4440020000000000L, true, 0, 0x0L), 4), 16685); - - // gentest-1302 - assertEqual(perft(new Board(0x0L, 0x40000000000000L, 0x0L, 0x8000000000000000L, 0x0L, 0x400020000000000L, 0x20000000000L, 0x8440000000000000L, false, 0, 0x0L), 4), 9589); - - // gentest-1303 - assertEqual(perft(new Board(0x0L, 0x2000000000L, 0x0L, 0x800000L, 0x0L, 0x400000200000000L, 0x200000000L, 0x400002000800000L, true, 0, 0x0L), 4), 23975); - - // gentest-1304 - assertEqual(perft(new Board(0x0L, 0x80000000000L, 0x0L, 0x800000L, 0x0L, 0x400010000000000L, 0x10000000000L, 0x400080000800000L, false, 0, 0x0L), 4), 6924); - - // gentest-1305 - assertEqual(perft(new Board(0x0L, 0x20000000000000L, 0x0L, 0x200000L, 0x0L, 0x400000100000000L, 0x100000000L, 0x420000000200000L, true, 0, 0x0L), 4), 12632); - - // gentest-1306 - assertEqual(perft(new Board(0x0L, 0x20000000000000L, 0x0L, 0x80000L, 0x0L, 0x400000004000000L, 0x4000000L, 0x420000000080000L, false, 0, 0x0L), 4), 13954); - - // gentest-1307 - assertEqual(perft(new Board(0x0L, 0x8000000000000000L, 0x0L, 0x800000L, 0x0L, 0x400000002000000L, 0x2000000L, 0x8400000000800000L, true, 0, 0x0L), 4), 11082); - - // gentest-1308 - assertEqual(perft(new Board(0x0L, 0x8000000000000000L, 0x0L, 0x80L, 0x0L, 0x400000004000000L, 0x4000000L, 0x8400000000000080L, false, 0, 0x0L), 4), 20305); - - // gentest-1309 - assertEqual(perft(new Board(0x0L, 0x8000000000000000L, 0x0L, 0x40L, 0x0L, 0x400000200000000L, 0x200000000L, 0x8400000000000040L, true, 0, 0x0L), 4), 18458); - - // gentest-1310 - assertEqual(perft(new Board(0x0L, 0x20000000000000L, 0x0L, 0x40L, 0x0L, 0x400000200000000L, 0x200000000L, 0x420000000000040L, false, 0, 0x0L), 4), 20962); - - // gentest-1311 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1312 - assertEqual(perft(new Board(0xff00001004eb00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1004ebffL, 0xbfff200000000000L, false, 0, 0x8100000000000081L), 4), 501702); - - // gentest-1313 - assertEqual(perft(new Board(0xbf40001004eb00L, 0x240000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000001000L, 0x1004fbefL, 0xbdbf640000000000L, true, 0, 0x8100000000000000L), 4), 432079); - - // gentest-1314 - assertEqual(perft(new Board(0xbf0040100ce300L, 0x240000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000200000L, 0x102ce3efL, 0xbdbf244000000000L, false, 0, 0x8100000000000000L), 4), 472741); - - // gentest-1315 - assertEqual(perft(new Board(0xbf0040100ce300L, 0x40000400042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000200000L, 0x302ce3ebL, 0xbdbf044000400000L, true, 0, 0x8100000000000000L), 4), 813248); - - // gentest-1316 - assertEqual(perft(new Board(0xbf0000100ce300L, 0x400000000c2L, 0x2400004000000020L, 0x8100000000000001L, 0x800000000000008L, 0x1000000000200000L, 0x40102ce36bL, 0xbdbf040000000080L, false, 0, 0x8100000000000000L), 4), 599565); - - // gentest-1317 - assertEqual(perft(new Board(0xb700081408e300L, 0x400000000c2L, 0x2400004000000020L, 0x8100000000000001L, 0x80000000008L, 0x1000000000200000L, 0x401428e36bL, 0xb5b70c0800000080L, true, 0, 0x8100000000000000L), 4), 2059860); - - // gentest-1318 - assertEqual(perft(new Board(0x97002894086300L, 0x400000008c0L, 0x2400004000000020L, 0x8100000000000001L, 0x80000000008L, 0x1000000000200000L, 0x4094286b69L, 0xb5970c2800000080L, false, 0, 0x8100000000000000L), 4), 1537442); - - // gentest-1319 - assertEqual(perft(new Board(0x97002884084300L, 0x40000002840L, 0x2400004000000020L, 0x8100000000000001L, 0x800000000000008L, 0x1000000000200000L, 0x6084284b69L, 0xbd97040800002000L, true, 0, 0x8100000000000000L), 4), 1280062); - - // gentest-1320 - assertEqual(perft(new Board(0x96012884084300L, 0x40000022040L, 0x2400004000001000L, 0x8100000000000001L, 0x800000000000008L, 0x1000000000200000L, 0x60842a5349L, 0xbd96050800002000L, false, 0, 0x8100000000000000L), 4), 1202592); - - // gentest-1321 - assertEqual(perft(new Board(0x9601a00c084300L, 0x40000022040L, 0x2400004000001000L, 0x8100000000000001L, 0x8000000000008L, 0x1000000000200000L, 0xe0042a5349L, 0xb59e050008002000L, true, 0, 0x8100000000000000L), 4), 940278); - - // gentest-1322 - assertEqual(perft(new Board(0x9601a00c084300L, 0x40000022040L, 0x2400000000401000L, 0x8001000000000001L, 0x8000000000008L, 0x1000000000200000L, 0xa0046a5349L, 0xb49f050008002000L, false, 0, 0x8000000000000000L), 4), 619339); - - // gentest-1323 - assertEqual(perft(new Board(0x9401820c084300L, 0x40000022040L, 0x2400000020001000L, 0x8001000000000001L, 0x2000000008L, 0x1000000000200000L, 0x80242a5349L, 0xb495052208002000L, true, 0, 0x8000000000000000L), 4), 969675); - - // gentest-1324 - assertEqual(perft(new Board(0x8411c20c080300L, 0x40000022040L, 0x2400000020001000L, 0x8001000000000001L, 0x2000000008L, 0x1000000000200000L, 0xc0242a1349L, 0xb485152208002000L, false, 0, 0x8000000000000000L), 4), 992882); - - // gentest-1325 - assertEqual(perft(new Board(0x8411c20c080300L, 0x40000022040L, 0x2400000020001000L, 0x8001000000000001L, 0x2000000008L, 0x1000000000400000L, 0xc0244a1349L, 0xb485152208002000L, true, 0, 0x8000000000000000L), 4), 2035873); - - // gentest-1326 - assertEqual(perft(new Board(0x8411c20c090200L, 0x40000022040L, 0x2400000000001000L, 0x8001000000000001L, 0x8L, 0x1000000020000000L, 0xc0240b1249L, 0xb485150208002000L, false, 0, 0x8000000000000000L), 4), 624682); - - // gentest-1327 - assertEqual(perft(new Board(0x8411c20c010200L, 0x400000a0040L, 0x2400000000001000L, 0x8001000000000001L, 0x2L, 0x10000020000000L, 0xc024031243L, 0xa495150208080000L, true, 0, 0x0L), 4), 129823); - - // gentest-1328 - assertEqual(perft(new Board(0x8411c20c010200L, 0x40000020040L, 0x2400000000001000L, 0x8001000000000001L, 0x80000L, 0x80000200000L, 0xc0042b1241L, 0xa4851d0208000000L, false, 0, 0x0L), 4), 579260); - - // gentest-1329 - assertEqual(perft(new Board(0x8401d20c010200L, 0x40000020040L, 0x2400000000001000L, 0x8001000000000001L, 0x400000000000L, 0x8000000200000L, 0x40c004231241L, 0xa48d051208000000L, true, 0, 0x0L), 4), 614526); - - // gentest-1330 - assertEqual(perft(new Board(0x8401d20c010200L, 0x100020040L, 0x2400000000000020L, 0x8001000000000100L, 0x400000000000L, 0x8000000200000L, 0x40c004230360L, 0xa48d011308000000L, false, 0, 0x0L), 4), 625638); - - // gentest-1331 - assertEqual(perft(new Board(0x8001d60c010200L, 0x100020040L, 0x2400000000001000L, 0x8002000000000100L, 0x400000000000L, 0x8000000200000L, 0x40c004231340L, 0xa48a011708000000L, true, 0, 0x0L), 4), 400053); - - // gentest-1332 - assertEqual(perft(new Board(0x8001d60c010200L, 0x100020040L, 0x410000000001000L, 0x8002000000000100L, 0x40000000000L, 0x8000000200000L, 0x4c004231340L, 0x849a011708000000L, false, 0, 0x0L), 4), 44044); - - // gentest-1333 - assertEqual(perft(new Board(0x8001d60c010200L, 0x100020040L, 0x10000040001000L, 0x8002000000000100L, 0x10000000L, 0x800000000200000L, 0xc014231340L, 0x8892011748000000L, true, 0, 0x0L), 4), 140614); - - // gentest-1334 - assertEqual(perft(new Board(0x8001d60c010200L, 0x100020040L, 0x200000001000L, 0x8002000000000100L, 0x800000L, 0x800000000200000L, 0xc004a31340L, 0x8882211708000000L, false, 0, 0x0L), 4), 547396); - - // gentest-1335 - assertEqual(perft(new Board(0x8001960c010200L, 0x100020040L, 0x4000001000L, 0x8002000000000100L, 0x4000L, 0x4000000200000L, 0x8004235340L, 0x8086015708000000L, true, 0, 0x0L), 4), 732594); - - // gentest-1336 - assertEqual(perft(new Board(0x8081160c010200L, 0x100020040L, 0x4000001000L, 0x8002000000000100L, 0x80L, 0x800000000200000L, 0x8000042313c0L, 0x8882015708000000L, false, 0, 0x0L), 4), 481420); - - // gentest-1337 - assertEqual(perft(new Board(0x8081160c010200L, 0x100000041L, 0x20001000L, 0x1002000000000100L, 0x80L, 0x800000000200000L, 0x8000042113c1L, 0x1882011728000000L, true, 0, 0x0L), 4), 380839); - - // gentest-1338 - assertEqual(perft(new Board(0x8081160c010200L, 0x100000041L, 0x100020L, 0x1002000000000100L, 0x80L, 0x800000010000000L, 0x8000140103e1L, 0x1882011708100000L, false, 0, 0x0L), 4), 516546); - - // gentest-1339 - assertEqual(perft(new Board(0x8081160c010200L, 0x100000041L, 0x100020L, 0x1040000000000100L, 0x80L, 0x800000000200000L, 0x8000042103e1L, 0x18c0011708100000L, true, 0, 0x0L), 4), 473317); - - // gentest-1340 - assertEqual(perft(new Board(0x8081160c010200L, 0x100001001L, 0x100020L, 0x1010000000000100L, 0x80L, 0x800000040000000L, 0x8000440113a1L, 0x1890011708100000L, false, 0, 0x0L), 4), 656277); - - // gentest-1341 - assertEqual(perft(new Board(0x8081160c010200L, 0x100001001L, 0x2020L, 0x1008000000000100L, 0x800000L, 0x800000040000000L, 0x800044811321L, 0x1888011708002000L, true, 0, 0x0L), 4), 626986); - - // gentest-1342 - assertEqual(perft(new Board(0x8081160e010000L, 0x100001001L, 0x60L, 0x1008000000000400L, 0x800000L, 0x800000040000000L, 0x800046811421L, 0x1888011708000040L, false, 0, 0x0L), 4), 747156); - - // gentest-1343 - assertEqual(perft(new Board(0x8081160a010000L, 0x4001001L, 0x60L, 0x2008000000000400L, 0x800000L, 0x800004000000000L, 0x804002811421L, 0x288801160c000040L, true, 0, 0x0L), 4), 1210914); - - // gentest-1344 - assertEqual(perft(new Board(0x80811602010000L, 0xc000001L, 0x60L, 0x2008000000000100L, 0x800000L, 0x10004000000000L, 0x80400a810121L, 0x2098011604000040L, false, 0, 0x0L), 4), 1891827); - - // gentest-1345 - assertEqual(perft(new Board(0x80811602010000L, 0x4000001L, 0x8000020L, 0x2008000000000100L, 0x4000L, 0x1000004000000000L, 0x804002014121L, 0x308801160c000000L, true, 0, 0x0L), 4), 1107225); - - // gentest-1346 - assertEqual(perft(new Board(0x80801702010000L, 0x4000001L, 0x8000020L, 0x2008000000004000L, 0x80L, 0x1000004000000000L, 0x8040020140a1L, 0x308800170c000000L, false, 0, 0x0L), 4), 818571); - - // gentest-1347 - assertEqual(perft(new Board(0x80800712010000L, 0x4000001L, 0x8000020L, 0x2010000000004000L, 0x80L, 0x1000000040000000L, 0x8000420140a1L, 0x309000071c000000L, true, 0, 0x0L), 4), 1046851); - - // gentest-1348 - assertEqual(perft(new Board(0x80800712010000L, 0x4000001L, 0x40020L, 0x2010000000000800L, 0x80L, 0x1000000000400000L, 0x8000024108a1L, 0x3090000714040000L, false, 0, 0x0L), 4), 1330219); - - // gentest-1349 - assertEqual(perft(new Board(0x80800712010000L, 0x4000001L, 0x40020L, 0x2000000040000800L, 0x80L, 0x1000000000008000L, 0x8000020188a1L, 0x3080000754040000L, true, 0, 0x0L), 4), 961970); - - // gentest-1350 - assertEqual(perft(new Board(0x80800712010000L, 0x4000400L, 0x40020L, 0x20000840000000L, 0x80L, 0x1000000000008000L, 0x8008020184a0L, 0x10a0000754040000L, false, 0, 0x0L), 4), 1252930); - - // gentest-1351 - assertEqual(perft(new Board(0x80800712010000L, 0x4000400L, 0x40020L, 0x20008800000000L, 0x80L, 0x1000000000800000L, 0x8008028104a0L, 0x10a0008714040000L, true, 0, 0x0L), 4), 175507); - - // gentest-1352 - assertEqual(perft(new Board(0x80800702010000L, 0x4000400L, 0x40020L, 0x208800000000L, 0x10000000L, 0x1000000000400000L, 0x800812410420L, 0x1080208704040000L, false, 0, 0x0L), 4), 274078); - - // gentest-1353 - assertEqual(perft(new Board(0x800702010000L, 0x100400L, 0x40020L, 0x208800000000L, 0x80000000000000L, 0x2000000000400000L, 0x80800802410420L, 0x2000208700140000L, true, 0, 0x0L), 4), 1312103); - - // gentest-1354 - assertEqual(perft(new Board(0x800602010000L, 0x100400L, 0x840000L, 0x288000000000L, 0x80000000000000L, 0x2000000000400000L, 0x80880000c10400L, 0x2000208602140000L, false, 0, 0x0L), 4), 1014830); - - // gentest-1355 - assertEqual(perft(new Board(0x800602010000L, 0x4400L, 0x840000L, 0x8a000000000L, 0x4000000000000L, 0x2000000000400000L, 0x4880000c10400L, 0x200000a602044000L, true, 0, 0x0L), 4), 887331); - - // gentest-1356 - assertEqual(perft(new Board(0x800600030000L, 0x4400L, 0x840000L, 0x8a000000000L, 0x10000000000000L, 0x2000000000400000L, 0x10880000c10400L, 0x200000a600064000L, false, 0, 0x0L), 4), 62588); - - // gentest-1357 - assertEqual(perft(new Board(0x800600030000L, 0x4400L, 0x840000L, 0x2000088000000000L, 0x1000000000L, 0x4000000000400000L, 0x881000c10400L, 0x6000008600064000L, true, 0, 0x0L), 4), 1664295); - - // gentest-1358 - assertEqual(perft(new Board(0x800200030000L, 0x8004000L, 0x840000L, 0x2000008000000000L, 0x1000000000L, 0x4000000000400000L, 0x801008c10000L, 0x6000008200064000L, false, 0, 0x0L), 4), 987775); - - // gentest-1359 - assertEqual(perft(new Board(0x200030000L, 0x8004000L, 0x840000L, 0x2000080000000000L, 0x10000000L, 0x4000000000400000L, 0x18c10000L, 0x6000080200064000L, true, 0, 0x0L), 4), 1530710); - - // gentest-1360 - assertEqual(perft(new Board(0x200030000L, 0x8000000L, 0x100000040000L, 0x2000080000000000L, 0x10000000L, 0x8000000000004000L, 0x100018014000L, 0xa000080200060000L, false, 0, 0x0L), 4), 1266527); - - // gentest-1361 - assertEqual(perft(new Board(0x200030000L, 0x8000000L, 0x100000000200L, 0x2000080000000000L, 0x80000000L, 0x40000000004000L, 0x100088014000L, 0x2040080200020200L, true, 0, 0x0L), 4), 953873); - - // gentest-1362 - assertEqual(perft(new Board(0x300020000L, 0x8000000L, 0x100000000200L, 0x280000000000L, 0x80000000L, 0x40000000004000L, 0x100188004000L, 0x40280200020200L, false, 0, 0x0L), 4), 712596); - - // gentest-1363 - assertEqual(perft(new Board(0x300020000L, 0x8000000L, 0x100000000200L, 0x240000000000L, 0x400000L, 0x2000000000004000L, 0x100108404000L, 0x2000240200020200L, true, 0, 0x0L), 4), 996194); - - // gentest-1364 - assertEqual(perft(new Board(0x300020000L, 0x8000000L, 0x100000000200L, 0x240000000000L, 0x4000000000L, 0x10000000800000L, 0x104108800000L, 0x10240200020200L, false, 0, 0x0L), 4), 659156); - - // gentest-1365 - assertEqual(perft(new Board(0x300020000L, 0x8000000L, 0x200L, 0x300000000000L, 0x8000000000L, 0x800000000800000L, 0x8108800000L, 0x800300200020200L, true, 0, 0x0L), 4), 558041); - - // gentest-1366 - assertEqual(perft(new Board(0x300020000L, 0x40000000000L, 0x200L, 0x200000001000L, 0x800000000000L, 0x800000000800000L, 0x840100800000L, 0x800200200021200L, false, 0, 0x0L), 4), 78127); - - // gentest-1367 - assertEqual(perft(new Board(0x300020000L, 0x40000000000L, 0x200L, 0x20000000001000L, 0x80000000L, 0x4000000800000L, 0x40180800000L, 0x24000200021200L, true, 0, 0x0L), 4), 659384); - - // gentest-1368 - assertEqual(perft(new Board(0x300020000L, 0x10000000000000L, 0x200L, 0x20000000001000L, 0x800000000000000L, 0x2000000800000L, 0x810000100800000L, 0x22000200021200L, false, 0, 0x0L), 4), 450571); - - // gentest-1369 - assertEqual(perft(new Board(0x300020000L, 0x10000000000000L, 0x200L, 0x20000010000000L, 0x80000000000L, 0x2000000800000L, 0x10080100800000L, 0x22000210020200L, true, 0, 0x0L), 4), 694880); - - // gentest-1370 - assertEqual(perft(new Board(0x10200020000L, 0x10000000000000L, 0x200L, 0x2010000000L, 0x100000000000L, 0x2000000800000L, 0x10110000800000L, 0x2002210020200L, false, 0, 0x0L), 4), 68646); - - // gentest-1371 - assertEqual(perft(new Board(0x10200020000L, 0x10000000000000L, 0x200L, 0x410000000L, 0x80000000000L, 0x100000000800000L, 0x10090000800000L, 0x100000610020200L, true, 0, 0x0L), 4), 686469); - - // gentest-1372 - assertEqual(perft(new Board(0x10200020000L, 0x400000000000000L, 0x200L, 0x410000000L, 0x0L, 0x200000000800000L, 0x400010000800000L, 0x200000610020200L, false, 0, 0x0L), 4), 83602); - - // gentest-1373 - assertEqual(perft(new Board(0x10200020000L, 0x80000000000L, 0x4L, 0x4000010000000L, 0x0L, 0x200000000800000L, 0x90000800000L, 0x204000210020004L, true, 0, 0x0L), 4), 138298); - - // gentest-1374 - assertEqual(perft(new Board(0x10200020000L, 0x2000000000L, 0x4L, 0x40010000000L, 0x0L, 0x200000000004000L, 0x12000004000L, 0x200040210020004L, false, 0, 0x0L), 4), 266361); - - // gentest-1375 - assertEqual(perft(new Board(0x10200020000L, 0x40000000000000L, 0x4000000000L, 0x20010000000L, 0x0L, 0x200000000004000L, 0x40010000004000L, 0x200024210020000L, true, 0, 0x0L), 4), 146431); - - // gentest-1376 - assertEqual(perft(new Board(0x10200020000L, 0x40000000000000L, 0x20000000L, 0x20010000000L, 0x0L, 0x200000000000040L, 0x40010000000040L, 0x200020230020000L, false, 0, 0x0L), 4), 84440); - - // gentest-1377 - assertEqual(perft(new Board(0x10200020000L, 0x40000000000000L, 0x8000L, 0x20004000000L, 0x0L, 0x200000000004000L, 0x40010000004000L, 0x200020204028000L, true, 0, 0x0L), 4), 96213); - - // gentest-1378 - assertEqual(perft(new Board(0x10200020000L, 0x400000L, 0x8000L, 0x40004000000L, 0x0L, 0x200000000004000L, 0x10000404000L, 0x200040204028000L, false, 0, 0x0L), 4), 100487); - - // gentest-1379 - assertEqual(perft(new Board(0x10200020000L, 0x1000L, 0x8000L, 0x40000000400L, 0x0L, 0x4000000004000L, 0x10000005000L, 0x4040200028400L, true, 0, 0x0L), 4), 58613); - - // gentest-1380 - assertEqual(perft(new Board(0x10200020000L, 0x400000L, 0x8000L, 0x400000000400L, 0x0L, 0x4000000000080L, 0x10000400080L, 0x4400200028400L, false, 0, 0x0L), 4), 52272); - - // gentest-1381 - assertEqual(perft(new Board(0x1000200000200L, 0x0L, 0x8000L, 0x400400L, 0x0L, 0x4000000000080L, 0x1000000000080L, 0x4000200408600L, true, 0, 0x0L), 4), 34172); - - // gentest-1382 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1383 - assertEqual(perft(new Board(0xbf40040000fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40000fbffL, 0xffbf400000000000L, false, 0, 0x8100000000000081L), 4), 248473); - - // gentest-1384 - assertEqual(perft(new Board(0xbe40054000bb00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x44000bbffL, 0xbfbec00100000000L, true, 0, 0x8100000000000081L), 4), 270161); - - // gentest-1385 - assertEqual(perft(new Board(0xbc42014000bb00L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2004020bbbfL, 0xbfbcc00100000000L, false, 0, 0x8100000000000081L), 4), 398168); - - // gentest-1386 - assertEqual(perft(new Board(0x9866014000bb00L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000400L, 0x1000000000000010L, 0x2004020bfb7L, 0xbf98e40100000000L, true, 0, 0x8100000000000081L), 4), 613437); - - // gentest-1387 - assertEqual(perft(new Board(0x9862014200b900L, 0x200800000200002L, 0x2002000000000024L, 0x8100000000000081L, 0x800040000000000L, 0x1000000000000010L, 0x6004220b9b7L, 0xbb9ae00100000000L, false, 0, 0x8100000000000081L), 4), 871466); - - // gentest-1388 - assertEqual(perft(new Board(0x9842610200b900L, 0x200800000200002L, 0x2000010000000024L, 0x8100000000000081L, 0x800040000000000L, 0x1000000000000010L, 0x6400220b9b7L, 0xbb98c12100000000L, true, 0, 0x8100000000000081L), 4), 861183); - - // gentest-1389 - assertEqual(perft(new Board(0x9842618a003100L, 0x200800000200002L, 0x2002000000000024L, 0x8100000000000081L, 0x800040000000000L, 0x1000000000000010L, 0x6408a2031b7L, 0xbb9ac02100000000L, false, 0, 0x8100000000000081L), 4), 892418); - - // gentest-1390 - assertEqual(perft(new Board(0x8852219a002100L, 0x200800000200002L, 0x2002000000000024L, 0x8100000000000081L, 0x44000000000L, 0x1000000000000010L, 0x6009a2021b7L, 0xb38ad06100000000L, true, 0, 0x8100000000000081L), 4), 2476476); - - // gentest-1391 - assertEqual(perft(new Board(0x8852211a002100L, 0x200800000200002L, 0x42000000000024L, 0x8100000000000081L, 0x44000000000L, 0x1000000000000010L, 0x46001a2021b7L, 0x93ca906100000000L, false, 0, 0x8100000000000081L), 4), 3344835); - - // gentest-1392 - assertEqual(perft(new Board(0x88522912002100L, 0x200800000200002L, 0x42000000000024L, 0x8001000000000081L, 0x40000400000L, 0x1000000000000010L, 0x4608122021b7L, 0x92cb902100400000L, true, 0, 0x8000000000000081L), 4), 5060975); - - // gentest-1393 - assertEqual(perft(new Board(0x885a2013002100L, 0x200800000200002L, 0x42000000000024L, 0x8001000000000081L, 0x40000400000L, 0x1000000000001000L, 0x4e00122031a7L, 0x92cb902001400000L, false, 0, 0x8000000000000000L), 4), 3181227); - - // gentest-1394 - assertEqual(perft(new Board(0x85a2013400100L, 0x200800000200002L, 0x42000000000024L, 0x81000000000081L, 0x40000000000L, 0x1000000000001000L, 0xe00126011a7L, 0x12cbd02001000000L, true, 0, 0x0L), 4), 1861996); - - // gentest-1395 - assertEqual(perft(new Board(0x85a2013400100L, 0x810000200002L, 0x42000020000020L, 0x81000000000041L, 0x40000000000L, 0x1000000000001000L, 0xe0032601163L, 0x10cbd12001000000L, false, 0, 0x0L), 4), 1415562); - - // gentest-1396 - assertEqual(perft(new Board(0x85a2003400100L, 0x10040200002L, 0x2000020000021L, 0x81000000000040L, 0x40000000000L, 0x1000000000001000L, 0xe2022601162L, 0x108b510041000001L, true, 0, 0x0L), 4), 2398184); - - // gentest-1397 - assertEqual(perft(new Board(0x85a2003400100L, 0x10040200002L, 0x400000020000021L, 0x81000000000040L, 0x0L, 0x1000000000080000L, 0xa2022680162L, 0x1489510041000001L, false, 0, 0x0L), 4), 1244777); - - // gentest-1398 - assertEqual(perft(new Board(0x84a2003400100L, 0x4000040200002L, 0x400000020000021L, 0x81000000000080L, 0x0L, 0x1000000000080000L, 0xa00226801a2L, 0x148d402041000001L, true, 0, 0x0L), 4), 1587268); - - // gentest-1399 - assertEqual(perft(new Board(0x80a6003410000L, 0x4001040000002L, 0x400000020000021L, 0x81000000000080L, 0x0L, 0x1000000000080000L, 0xa10224900a2L, 0x148d006041000001L, false, 0, 0x0L), 4), 908552); - - // gentest-1400 - assertEqual(perft(new Board(0x80a6003410000L, 0x4801000000002L, 0x400000000100021L, 0x1000000008080L, 0x0L, 0x1000000000080000L, 0xa10025900a2L, 0x140d806001008001L, true, 0, 0x0L), 4), 833139); - - // gentest-1401 - assertEqual(perft(new Board(0x80a4023410000L, 0x4801000000800L, 0x400000000104001L, 0x1000000008080L, 0x0L, 0x1000000000080000L, 0xa1002594880L, 0x140d804021008001L, false, 0, 0x0L), 4), 1533662); - - // gentest-1402 - assertEqual(perft(new Board(0xa4023410000L, 0xc000040000800L, 0x400000000104001L, 0x1000000008080L, 0x0L, 0x20000000080000L, 0x80a0002594880L, 0x425004061008001L, true, 0, 0x0L), 4), 2353206); - - // gentest-1403 - assertEqual(perft(new Board(0xa4221410000L, 0xc000040000800L, 0x440000000104000L, 0x1000000008080L, 0x0L, 0x20000010000000L, 0x80a0210514880L, 0x465004061008000L, false, 0, 0x0L), 4), 1642322); - - // gentest-1404 - assertEqual(perft(new Board(0xa4221410000L, 0xc000000100800L, 0x440000000800000L, 0x1000000008080L, 0x0L, 0x4000000010000000L, 0x80a0210c10880L, 0x4445004021108000L, true, 0, 0x0L), 4), 1440992); - - // gentest-1405 - assertEqual(perft(new Board(0xa4221410000L, 0xc000000100800L, 0x400001000004000L, 0x1000000008080L, 0x0L, 0x4000000000080000L, 0x80a0200494880L, 0x4405005021108000L, false, 0, 0x0L), 4), 2019427); - - // gentest-1406 - assertEqual(perft(new Board(0xa4221410000L, 0xc000800000800L, 0x400001000000000L, 0x1000000004020L, 0x0L, 0x4000000000080000L, 0x80a0200490820L, 0x4405005821004000L, true, 0, 0x0L), 4), 1119312); - - // gentest-1407 - assertEqual(perft(new Board(0xa4221410000L, 0xc000900000000L, 0x400000000040000L, 0x1000000004020L, 0x0L, 0x4000000000080000L, 0x80a0300490020L, 0x4405004821044000L, false, 0, 0x0L), 4), 1123101); - - // gentest-1408 - assertEqual(perft(new Board(0xa4221410000L, 0x4200900000000L, 0x400000000040000L, 0x1000000000420L, 0x0L, 0x40000000080000L, 0x2a0300490020L, 0x445004821040400L, true, 0, 0x0L), 4), 1641134); - - // gentest-1409 - assertEqual(perft(new Board(0xa4221410000L, 0x4000940000000L, 0x400000000000800L, 0x1000000000420L, 0x0L, 0x40000010000000L, 0xa0350410020L, 0x445004821000c00L, false, 0, 0x0L), 4), 1201455); - - // gentest-1410 - assertEqual(perft(new Board(0x84221010000L, 0x20940000000L, 0x400000000000800L, 0x1000000000420L, 0x0L, 0x40000010000000L, 0x80370010020L, 0x441024801000c00L, true, 0, 0x0L), 4), 1223913); - - // gentest-1411 - assertEqual(perft(new Board(0x86201010000L, 0x20940000000L, 0x400000000000010L, 0x1000000000404L, 0x0L, 0x40000010000000L, 0x82350010004L, 0x441024801000410L, false, 0, 0x0L), 4), 879086); - - // gentest-1412 - assertEqual(perft(new Board(0x86201010000L, 0x10020100002000L, 0x400000000000010L, 0x1000000000404L, 0x0L, 0x20000010000000L, 0x82310012004L, 0x431024001000410L, true, 0, 0x0L), 4), 752939); - - // gentest-1413 - assertEqual(perft(new Board(0x86201010000L, 0x4000020100002000L, 0x400000000000010L, 0x1000000000404L, 0x0L, 0x20000000100000L, 0x82300112004L, 0x4421024001000410L, false, 0, 0x0L), 4), 568056); - - // gentest-1414 - assertEqual(perft(new Board(0x86201010000L, 0x4000020140000000L, 0x400000000000010L, 0x1000000000204L, 0x0L, 0x2000000000100000L, 0x82340110004L, 0x6401024001000210L, true, 0, 0x0L), 4), 869157); - - // gentest-1415 - assertEqual(perft(new Board(0x82241010000L, 0x4000220000020000L, 0x400000000000010L, 0x1000000000204L, 0x0L, 0x2000000000100000L, 0x282200130004L, 0x6401020041000210L, false, 0, 0x0L), 4), 903418); - - // gentest-1416 - assertEqual(perft(new Board(0x82241010000L, 0x4000220000020000L, 0x400000000000010L, 0x400040200L, 0x0L, 0x2000000000100000L, 0x282200170000L, 0x6400020441000210L, true, 0, 0x0L), 4), 604727); - - // gentest-1417 - assertEqual(perft(new Board(0x82241010000L, 0x4008020400000000L, 0x400000000000010L, 0x40200L, 0x0L, 0x20000000100000L, 0x8082600150000L, 0x4420020041000210L, false, 0, 0x0L), 4), 298523); - - // gentest-1418 - assertEqual(perft(new Board(0x82241010000L, 0x8220400000000L, 0x400000000000010L, 0x40100L, 0x0L, 0x20000000080000L, 0x80826000d0000L, 0x420220041000110L, true, 0, 0x0L), 4), 307925); - - // gentest-1419 - assertEqual(perft(new Board(0x82241010000L, 0x220010000000L, 0x8000000000010L, 0x40100L, 0x0L, 0x20000000080000L, 0xa22100d0000L, 0x28200041000110L, false, 0, 0x0L), 4), 402622); - - // gentest-1420 - assertEqual(perft(new Board(0x82041010000L, 0x220010000000L, 0x200000010L, 0x40100L, 0x0L, 0x40000000100000L, 0xa2010150000L, 0x40200241000110L, true, 0, 0x0L), 4), 548411); - - // gentest-1421 - assertEqual(perft(new Board(0x82041010000L, 0x8000014000000L, 0x200000010L, 0x500L, 0x0L, 0x40000000100000L, 0x82014110400L, 0x48000241000110L, false, 0, 0x0L), 4), 378166); - - // gentest-1422 - assertEqual(perft(new Board(0x82041010000L, 0x200010000800L, 0x4000010L, 0x500L, 0x0L, 0x40000000100000L, 0x82010110c00L, 0x40200045000110L, true, 0, 0x0L), 4), 352809); - - // gentest-1423 - assertEqual(perft(new Board(0x82041010000L, 0x4000000010000800L, 0x10L, 0x4000100L, 0x0L, 0x40000000080000L, 0x82014090800L, 0x4040000041000110L, false, 0, 0x0L), 4), 187467); - - // gentest-1424 - assertEqual(perft(new Board(0x82041010000L, 0x4000000010000020L, 0x80000000L, 0x4000100L, 0x0L, 0x2000000000080000L, 0x82014090020L, 0x60000000c1000100L, true, 0, 0x0L), 4), 271652); - - // gentest-1425 - assertEqual(perft(new Board(0x82041010000L, 0x4000000000440000L, 0x80000000L, 0x4002000L, 0x0L, 0x2000000000080000L, 0x820044d0000L, 0x60000000c1002000L, false, 0, 0x0L), 4), 307334); - - // gentest-1426 - assertEqual(perft(new Board(0x82041010000L, 0x4000000200400000L, 0x80000000L, 0x4000020L, 0x0L, 0x1000000000080000L, 0x82204490000L, 0x50000000c1000020L, true, 0, 0x0L), 4), 340154); - - // gentest-1427 - assertEqual(perft(new Board(0x82041010000L, 0x4001000000001000L, 0x10000000000000L, 0x4000020L, 0x0L, 0x1000000000080000L, 0x1082004091000L, 0x5010000041000020L, false, 0, 0x0L), 4), 379813); - - // gentest-1428 - assertEqual(perft(new Board(0x82041010000L, 0x4001000000400000L, 0x20000000L, 0x4000020L, 0x0L, 0x1000000000080000L, 0x1082004490000L, 0x5000000061000020L, true, 0, 0x0L), 4), 308860); - - // gentest-1429 - assertEqual(perft(new Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x24L, 0x0L, 0x1000000000080000L, 0x42000490004L, 0x5000080041000020L, false, 0, 0x0L), 4), 440166); - - // gentest-1430 - assertEqual(perft(new Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x420L, 0x0L, 0x1000000000080000L, 0x42000490400L, 0x5000080041000020L, true, 0, 0x0L), 4), 593062); - - // gentest-1431 - assertEqual(perft(new Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x4002L, 0x0L, 0x1000000004000000L, 0x42004414000L, 0x5000080041000002L, false, 0, 0x0L), 4), 489926); - - // gentest-1432 - assertEqual(perft(new Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x2200L, 0x0L, 0x1000000004000000L, 0x42004410200L, 0x5000080041002000L, true, 0, 0x0L), 4), 500671); - - // gentest-1433 - assertEqual(perft(new Board(0x2041010000L, 0x4000040000000020L, 0x2000000L, 0x2200L, 0x0L, 0x1000000200000000L, 0x42200010220L, 0x5000000043002000L, false, 0, 0x0L), 4), 382246); - - // gentest-1434 - assertEqual(perft(new Board(0x2042010000L, 0x4000040000000020L, 0x0L, 0x200L, 0x0L, 0x1000000200000000L, 0x42202000020L, 0x5000000040010200L, true, 0, 0x0L), 4), 103664); - - // gentest-1435 - assertEqual(perft(new Board(0x2042010000L, 0x4000000000020020L, 0x0L, 0x2000L, 0x0L, 0x1000000200000000L, 0x2202020020L, 0x5000000040012000L, false, 0, 0x0L), 4), 116770); - - // gentest-1436 - assertEqual(perft(new Board(0x2042010000L, 0x4000000000020020L, 0x0L, 0x200000L, 0x0L, 0x2000040000000000L, 0x42002020020L, 0x6000000040210000L, true, 0, 0x0L), 4), 121231); - - // gentest-1437 - assertEqual(perft(new Board(0x2042010000L, 0x4000000000020020L, 0x0L, 0x40000L, 0x0L, 0x2800000000000000L, 0x800002002020020L, 0x6000000040050000L, false, 0, 0x0L), 4), 58300); - - // gentest-1438 - assertEqual(perft(new Board(0x42000100L, 0x200000020020L, 0x0L, 0x40000L, 0x0L, 0x2800000000000000L, 0x800000002020020L, 0x2000200040040100L, true, 0, 0x0L), 4), 85879); - - // gentest-1439 - assertEqual(perft(new Board(0x42000100L, 0x10000420L, 0x0L, 0x40000L, 0x0L, 0x2800000000000000L, 0x800000002000420L, 0x2000000050040100L, false, 0, 0x0L), 4), 97437); - - // gentest-1440 - assertEqual(perft(new Board(0x42000000L, 0x10000021L, 0x0L, 0x400000L, 0x0L, 0x2800000000000000L, 0x800000002000021L, 0x2000000050400000L, true, 0, 0x0L), 4), 41659); - - // gentest-1441 - assertEqual(perft(new Board(0x42000000L, 0x10100020L, 0x0L, 0x200000L, 0x0L, 0x2800000000000000L, 0x800000002100020L, 0x2000000050200000L, false, 0, 0x0L), 4), 86502); - - // gentest-1442 - assertEqual(perft(new Board(0x42000000L, 0x10100020L, 0x0L, 0x400000L, 0x0L, 0x440000000000000L, 0x400000002100020L, 0x40000050400000L, true, 0, 0x0L), 4), 106590); - - // gentest-1443 - assertEqual(perft(new Board(0x2000000L, 0x50008000L, 0x0L, 0x400000L, 0x0L, 0x400400000000000L, 0x400000042008000L, 0x400010400000L, false, 0, 0x0L), 4), 82537); - - // gentest-1444 - assertEqual(perft(new Board(0x2000000L, 0x40008800L, 0x0L, 0x400000L, 0x0L, 0x82000000000000L, 0x2000042008000L, 0x80000000400800L, true, 0, 0x0L), 4), 96787); - - // gentest-1445 - assertEqual(perft(new Board(0x200000000L, 0x40200000L, 0x0L, 0x400000L, 0x0L, 0x82000000000000L, 0x2000240000000L, 0x80000000600000L, false, 0, 0x0L), 4), 54115); - - // gentest-1446 - assertEqual(perft(new Board(0x200000000L, 0x200000200000L, 0x0L, 0x40000000L, 0x0L, 0x8002000000000000L, 0x2200200000000L, 0x8000000040200000L, true, 0, 0x0L), 4), 106972); - - // gentest-1447 - assertEqual(perft(new Board(0x200000000L, 0x80000000200000L, 0x0L, 0x1000000L, 0x0L, 0x8200000000000000L, 0x280000200000000L, 0x8000000001200000L, false, 0, 0x0L), 4), 36973); - - // gentest-1448 - assertEqual(perft(new Board(0x200000000L, 0x200000200000L, 0x0L, 0x400000000000000L, 0x0L, 0x8200000000000000L, 0x200200200000000L, 0x8400000000200000L, true, 0, 0x0L), 4), 12350); - - // gentest-1449 - assertEqual(perft(new Board(0x200000000L, 0x200000200000L, 0x0L, 0x0L, 0x0L, 0x8000040000000000L, 0x240200000000L, 0x8000000000200000L, false, 0, 0x0L), 4), 12793); - - // gentest-1450 - assertEqual(perft(new Board(0x200000000L, 0x200000080000L, 0x0L, 0x0L, 0x0L, 0x8002000000000000L, 0x2200200000000L, 0x8000000000080000L, true, 0, 0x0L), 4), 20198); - - // gentest-1451 - assertEqual(perft(new Board(0x200000000L, 0xc00000000L, 0x0L, 0x0L, 0x0L, 0x8100000000000000L, 0x100000a00000000L, 0x8000000400000000L, false, 0, 0x0L), 4), 13198); - - // gentest-1452 - assertEqual(perft(new Board(0x200000000L, 0x420000000L, 0x0L, 0x0L, 0x0L, 0x8100000000000000L, 0x100000220000000L, 0x8000000400000000L, true, 0, 0x0L), 4), 10982); - - // gentest-1453 - assertEqual(perft(new Board(0x200000000L, 0x1400000L, 0x0L, 0x0L, 0x0L, 0x8100000000000000L, 0x100000200400000L, 0x8000000001000000L, false, 0, 0x0L), 4), 5753); - - // gentest-1454 - assertEqual(perft(new Board(0x200000000L, 0x20000400000L, 0x0L, 0x0L, 0x0L, 0x81000000000000L, 0x1000200400000L, 0x80020000000000L, true, 0, 0x0L), 4), 9748); - - // gentest-1455 - assertEqual(perft(new Board(0x200000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x800100000000L, 0x300400000L, 0x800000000000L, false, 0, 0x0L), 4), 3066); - - // gentest-1456 - assertEqual(perft(new Board(0x200000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x180000000L, 0x300001000L, 0x80000000L, true, 0, 0x0L), 4), 3080); - - // gentest-1457 - assertEqual(perft(new Board(0x200000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x20040000000L, 0x20200400000L, 0x40000000L, false, 0, 0x0L), 4), 4646); - - // gentest-1458 - assertEqual(perft(new Board(0x200000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x400004000L, 0x600400000L, 0x4000L, true, 0, 0x0L), 4), 5446); - - // gentest-1459 - assertEqual(perft(new Board(0x200000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x2800000L, 0x202001000L, 0x800000L, false, 0, 0x0L), 4), 3801); - - // gentest-1460 - assertEqual(perft(new Board(0x200000000L, 0x40000L, 0x0L, 0x0L, 0x0L, 0x2800000L, 0x202040000L, 0x800000L, true, 0, 0x0L), 4), 5679); - - // gentest-1461 - assertEqual(perft(new Board(0x200000000L, 0x40000L, 0x0L, 0x0L, 0x0L, 0x10000004000L, 0x10200040000L, 0x4000L, false, 0, 0x0L), 4), 5915); - - // gentest-1462 - assertEqual(perft(new Board(0x200000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x10000004000L, 0x10200001000L, 0x4000L, true, 0, 0x0L), 4), 3933); - - // gentest-1463 - assertEqual(perft(new Board(0x200000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000000040L, 0x1000200000000L, 0x40L, false, 0, 0x0L), 4), 1044); - - // gentest-1464 - assertEqual(perft(new Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000800000L, 0x1020000000000L, 0x800000L, true, 0, 0x0L), 4), 1004); - - // gentest-1465 - assertEqual(perft(new Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000080000000L, 0x100020000000000L, 0x80000000L, false, 0, 0x0L), 4), 816); - - // gentest-1466 - assertEqual(perft(new Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200400000000000L, 0x200020000000000L, 0x400000000000L, true, 0, 0x0L), 4), 1845); - - // gentest-1467 - assertEqual(perft(new Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2200000000000L, 0x2020000000000L, 0x200000000000L, false, 0, 0x0L), 4), 2487); - - // gentest-1468 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1469 - assertEqual(perft(new Board(0xfe00010800f700L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x820f7bfL, 0xfffe000100000000L, false, 0, 0x8100000000000081L), 4), 447202); - - // gentest-1470 - assertEqual(perft(new Board(0xde00210802f500L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x822f5bfL, 0xbfde802100000000L, true, 0, 0x8100000000000081L), 4), 454114); - - // gentest-1471 - assertEqual(perft(new Board(0xdc02210902f400L, 0x200800000200800L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x922fcbdL, 0xbfdc822100000000L, false, 0, 0x8100000000000081L), 4), 290752); - - // gentest-1472 - assertEqual(perft(new Board(0xd00e2189027400L, 0x200800000200800L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x89227cbdL, 0xbfd08e2100000000L, true, 0, 0x8100000000000081L), 4), 381462); - - // gentest-1473 - assertEqual(perft(new Board(0xd00e2189126400L, 0x200804000000800L, 0x2008000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4089126cbdL, 0xbbd88e2100000000L, false, 0, 0x8100000000000081L), 4), 532969); - - // gentest-1474 - assertEqual(perft(new Board(0xd00e218d126000L, 0x200804000000800L, 0x2008000000000024L, 0x8000010000000081L, 0x4000000000008L, 0x1000000000000010L, 0x408d1268bdL, 0xb2dc8f2100000000L, true, 0, 0x8000000000000081L), 4), 504508); - - // gentest-1475 - assertEqual(perft(new Board(0xd00e812d126000L, 0x200804000000800L, 0x2008000000000024L, 0x8000010000000081L, 0x4000000001000L, 0x1000000000000010L, 0xc00d1278b5L, 0xb2dc8f0120000000L, false, 0, 0x8000000000000081L), 4), 654616); - - // gentest-1476 - assertEqual(perft(new Board(0xd00e812d126000L, 0x200004040200000L, 0x2008000000000024L, 0x8000010000000081L, 0x800000000001000L, 0x1000000000000010L, 0xc00d3270b5L, 0xbad80f0160000000L, true, 0, 0x8000000000000081L), 4), 688515); - - // gentest-1477 - assertEqual(perft(new Board(0xd00e812d522000L, 0x200004040200000L, 0x2008000000000024L, 0x8000010000000081L, 0x400000000000400L, 0x1000000000000010L, 0xc00d7224b5L, 0xb6d80f0160000000L, false, 0, 0x8000000000000081L), 4), 1218947); - - // gentest-1478 - assertEqual(perft(new Board(0x504a852d522000L, 0x200004040200000L, 0x2008000000000024L, 0x8000010000000081L, 0x400000000000000L, 0x1000000000000010L, 0xc00d7220b5L, 0xb6584b0560000000L, true, 0, 0x8000000000000081L), 4), 1249721); - - // gentest-1479 - assertEqual(perft(new Board(0x504a852d522000L, 0x200004040200000L, 0x2008000000800004L, 0x8000010000000081L, 0x2000000000000L, 0x1000000000000008L, 0xc00df2208dL, 0xb25a4b0560000000L, false, 0, 0x8000000000000000L), 4), 1405190); - - // gentest-1480 - assertEqual(perft(new Board(0x500a852d522000L, 0x200004040200000L, 0x2000040000800800L, 0x8000010000000081L, 0x2000000000000L, 0x1000000000000008L, 0x400df22889L, 0xb2520f8560000000L, true, 0, 0x8000000000000000L), 4), 1379748); - - // gentest-1481 - assertEqual(perft(new Board(0x500a842c522000L, 0x200004040200000L, 0x2000000101800000L, 0x8000010000010080L, 0x2000000000000L, 0x1000000000000008L, 0x410cf32088L, 0xb2520b8461000000L, false, 0, 0x8000000000000000L), 4), 1674969); - - // gentest-1482 - assertEqual(perft(new Board(0x500a842c522000L, 0x200004040200000L, 0x2000000101800000L, 0x8000010000010080L, 0x1000000000000L, 0x1000000000001000L, 0x410cf33080L, 0xb2510b8461000000L, true, 0, 0x8000000000000000L), 4), 1641968); - - // gentest-1483 - assertEqual(perft(new Board(0x500a842c522000L, 0x200004040000800L, 0x2008000000840000L, 0x8000010000010080L, 0x1000000000000L, 0x1000000000001000L, 0x400cd73880L, 0xb2590b8460000000L, false, 0, 0x8000000000000000L), 4), 1763826); - - // gentest-1484 - assertEqual(perft(new Board(0x500a842c522000L, 0x44040000800L, 0x2008000000800001L, 0x8000010000010080L, 0x100000000000000L, 0x1000000000001000L, 0x400cd33881L, 0xb1580f8460000000L, true, 0, 0x8000000000000000L), 4), 1929090); - - // gentest-1485 - assertEqual(perft(new Board(0x500a842e502000L, 0x4140000800L, 0x2008000000800001L, 0x8000010000010010L, 0x100000000000000L, 0x1000000000001000L, 0x400ed13811L, 0xb1580b8560000000L, false, 0, 0x8000000000000000L), 4), 2488661); - - // gentest-1486 - assertEqual(perft(new Board(0x500a843e402000L, 0x4140000800L, 0x2008000000800001L, 0x8000010000010010L, 0x100000000000000L, 0x400000000001000L, 0x401ec13811L, 0xa5580b8560000000L, true, 0, 0x0L), 4), 2125838); - - // gentest-1487 - assertEqual(perft(new Board(0x500a843e402000L, 0x20000140020000L, 0x2008000000800001L, 0x8000010000010010L, 0x2000000000000L, 0x400000000001000L, 0x2000001ec33011L, 0xa45a0b8560000000L, false, 0, 0x0L), 4), 1935896); - - // gentest-1488 - assertEqual(perft(new Board(0x400a903e402000L, 0x20000140020000L, 0x2008000000800001L, 0x8000010000010004L, 0x2000000000000L, 0x400000000001000L, 0x2000001cc33005L, 0xa44a0b9162000000L, true, 0, 0x0L), 4), 1686494); - - // gentest-1489 - assertEqual(perft(new Board(0x400a903e402000L, 0x20000140020000L, 0x2008000000840000L, 0x8100000000010020L, 0x2000000000000L, 0x400000000001000L, 0x2000001cc73020L, 0xa54a0a9162000000L, false, 0, 0x0L), 4), 2141267); - - // gentest-1490 - assertEqual(perft(new Board(0x400a903e600000L, 0x20000140020000L, 0x2000000200840000L, 0x8100000000010020L, 0x2000000000000L, 0x200000000001000L, 0x2000001ce71020L, 0xa3420a9362000000L, true, 0, 0x0L), 4), 2274193); - - // gentest-1491 - assertEqual(perft(new Board(0x400a903e600000L, 0x8000000140020000L, 0x2000000200840000L, 0x100000000010080L, 0x10000000000L, 0x200000000001000L, 0x800000001ce71080L, 0x23400b9362000000L, false, 0, 0x0L), 4), 1250740); - - // gentest-1492 - assertEqual(perft(new Board(0x400a903a600000L, 0x8000000044000800L, 0x2000000200840000L, 0x100000000010080L, 0x1000000000000L, 0x200000000001000L, 0x8000000018e51880L, 0x23410a9266000000L, true, 0, 0x0L), 4), 1365208); - - // gentest-1493 - assertEqual(perft(new Board(0x400a903a600000L, 0x8000800004000800L, 0x2000000200840000L, 0x100000000000108L, 0x1000000000000L, 0x200000000001000L, 0x8000000018e41908L, 0x23418a9226000000L, false, 0, 0x0L), 4), 1353738); - - // gentest-1494 - assertEqual(perft(new Board(0xad832600000L, 0xc000000004000800L, 0x2000000200840000L, 0x100000000000108L, 0x1000000000000L, 0x200000000001000L, 0x8000000810e41908L, 0x63010ad226000000L, true, 0, 0x0L), 4), 1513183); - - // gentest-1495 - assertEqual(perft(new Board(0xad832600000L, 0x8000200004000800L, 0x2000000200840000L, 0x100000000000420L, 0x1000000000000L, 0x200000000001000L, 0x8000000810e41c20L, 0x23012ad226000000L, false, 0, 0x0L), 4), 1358023); - - // gentest-1496 - assertEqual(perft(new Board(0xad822600000L, 0x8000200010000000L, 0x2000000200840000L, 0x100000000000420L, 0x1000000000000L, 0x200000000002000L, 0x8000000800e42420L, 0x23012ad232000000L, true, 0, 0x0L), 4), 218118); - - // gentest-1497 - assertEqual(perft(new Board(0xad822600000L, 0x8000200010000000L, 0x2000000200840000L, 0x100000000000440L, 0x1000000000000L, 0x4000000000010L, 0x8000000800e40450L, 0x21052ad232000000L, false, 0, 0x0L), 4), 1314619); - - // gentest-1498 - assertEqual(perft(new Board(0xa58a2600000L, 0xc000000010000000L, 0x2400000200040000L, 0x100000000000440L, 0x1000000000000L, 0x4000000000010L, 0x8400000800640450L, 0x61050a52b2000000L, true, 0, 0x0L), 4), 1113465); - - // gentest-1499 - assertEqual(perft(new Board(0xa58a0600000L, 0xc000000010000000L, 0x2400000300000000L, 0x100000000000440L, 0x1000000000000L, 0x800000000000010L, 0x8400000900600450L, 0x69010a52b0000000L, false, 0, 0x0L), 4), 1493013); - - // gentest-1500 - assertEqual(perft(new Board(0xa58a0600000L, 0xc000000010000000L, 0x2400000104000000L, 0x200000000004400L, 0x1000000000000L, 0x800000000000010L, 0x8400000900604410L, 0x6a010a50b4000000L, true, 0, 0x0L), 4), 1359242); - - // gentest-1501 - assertEqual(perft(new Board(0x858a0600000L, 0xc000000000002000L, 0x2000020044000000L, 0x200000000004400L, 0x1000000000000L, 0x800000000000010L, 0x8000020840604410L, 0x6a010850a4002000L, false, 0, 0x0L), 4), 147271); - - // gentest-1502 - assertEqual(perft(new Board(0x858a0200000L, 0xc000000000002000L, 0x2000000044000000L, 0x200000000004400L, 0x200000000L, 0x800000000000010L, 0x80000008c0204410L, 0x6a00085224002000L, true, 0, 0x0L), 4), 841270); - - // gentest-1503 - assertEqual(perft(new Board(0x858a0200000L, 0xc000000000080000L, 0x2000000040000000L, 0x200000004004000L, 0x200000000L, 0x800000000001000L, 0x80000008c4205000L, 0x6a00085220080000L, false, 0, 0x0L), 4), 790205); - - // gentest-1504 - assertEqual(perft(new Board(0x818a0200000L, 0xc000000000080000L, 0x40000040000000L, 0x200000010004000L, 0x200000000L, 0x800000000001000L, 0x8000000850205000L, 0x4a400812a0080000L, true, 0, 0x0L), 4), 593510); - - // gentest-1505 - assertEqual(perft(new Board(0x818a0200000L, 0xc000000000080000L, 0x40002000000000L, 0x400000001004000L, 0x200000000L, 0x800000000001000L, 0x8000002801205000L, 0x4c400812a0080000L, false, 0, 0x0L), 4), 1296356); - - // gentest-1506 - assertEqual(perft(new Board(0x818a0200000L, 0xc000000000080000L, 0x40002000000000L, 0x200000001400000L, 0x400000000L, 0x800000000001000L, 0x8000002801601000L, 0x4a400814a0080000L, true, 0, 0x0L), 4), 1673161); - - // gentest-1507 - assertEqual(perft(new Board(0x81880200000L, 0xc000000000080000L, 0x80800000000000L, 0x200000020400000L, 0x400000000L, 0x800000000001000L, 0x8080000820601000L, 0x4a00881480080000L, false, 0, 0x0L), 4), 1226096); - - // gentest-1508 - assertEqual(perft(new Board(0x81880200000L, 0xc000000000000004L, 0x80800000000000L, 0x200000020400000L, 0x2000L, 0x800000000000008L, 0x8080000820600008L, 0x4a00881080002004L, true, 0, 0x0L), 4), 1004259); - - // gentest-1509 - assertEqual(perft(new Board(0x81880200000L, 0xc000000000000004L, 0x80800000000000L, 0x200000042000000L, 0x8000L, 0x800000000000008L, 0x8080000842200008L, 0x4a00881080008004L, false, 0, 0x0L), 4), 1026450); - - // gentest-1510 - assertEqual(perft(new Board(0x81800a00000L, 0xc000000000000004L, 0x80004000000000L, 0x200000050000000L, 0x8000L, 0x800000000000008L, 0x8080000850200008L, 0x4a00085000808004L, true, 0, 0x0L), 4), 673669); - - // gentest-1511 - assertEqual(perft(new Board(0x81800a00000L, 0xc000000000000004L, 0x80004000000000L, 0xa0020000L, 0x8000L, 0x800000000000008L, 0x80800008a0200008L, 0x4800085000828004L, false, 0, 0x0L), 4), 642039); - - // gentest-1512 - assertEqual(perft(new Board(0x80810a00000L, 0xc000000000000004L, 0x404000000000L, 0x80020000L, 0x20000000L, 0x800000000000008L, 0x8000400880200008L, 0x4800084030820004L, true, 0, 0x0L), 4), 334742); - - // gentest-1513 - assertEqual(perft(new Board(0x80810a00000L, 0xc000000000000004L, 0x404000000000L, 0x80000200L, 0x20000000L, 0x800000000000008L, 0x8000400880200008L, 0x4800084030800204L, false, 0, 0x0L), 4), 350968); - - // gentest-1514 - assertEqual(perft(new Board(0x80830800000L, 0xc000000000000004L, 0x404000000000L, 0x80001000L, 0x200000000000L, 0x800000000000008L, 0x80004008a0000008L, 0x4800284010801004L, true, 0, 0x0L), 4), 270247); - - // gentest-1515 - assertEqual(perft(new Board(0x80830800000L, 0x4000400000000004L, 0x6000000000L, 0x80001000L, 0x2000000000000000L, 0x800000000000008L, 0x4028a0000008L, 0x6800084010801004L, false, 0, 0x0L), 4), 310503); - - // gentest-1516 - assertEqual(perft(new Board(0x80830800000L, 0xc00000000004L, 0x8004000000000L, 0x80002000L, 0x2000000000000000L, 0x800000000000008L, 0x84008a0000008L, 0x2800884010802004L, true, 0, 0x0L), 4), 472353); - - // gentest-1517 - assertEqual(perft(new Board(0x82810800000L, 0xc00000000004L, 0x8004000000000L, 0xa0000000L, 0x2000000000000000L, 0x800000000000010L, 0x8402880000010L, 0x2800884030800004L, false, 0, 0x0L), 4), 271697); - - // gentest-1518 - assertEqual(perft(new Board(0x82810008000L, 0x801000000004L, 0x8004000000000L, 0xa0000000L, 0x2000000000000000L, 0x10000000000010L, 0x8003880000010L, 0x2010884030008004L, true, 0, 0x0L), 4), 419254); - - // gentest-1519 - assertEqual(perft(new Board(0x82810008000L, 0x8800000000004L, 0x104000000000L, 0xa0000000L, 0x4000000000000000L, 0x10000000000010L, 0x8102880000010L, 0x4010884030008004L, false, 0, 0x0L), 4), 271798); - - // gentest-1520 - assertEqual(perft(new Board(0x82810000000L, 0x2000000040000084L, 0x104000000000L, 0xa0000000L, 0x4000000000000000L, 0x10000000000010L, 0x2000102880000010L, 0x4010084070000084L, true, 0, 0x0L), 4), 236547); - - // gentest-1521 - assertEqual(perft(new Board(0x82810000000L, 0x2000000040000084L, 0x8004000000000L, 0x80000000L, 0x4000000000000000L, 0x10000000000020L, 0x2008002880000020L, 0x4010084050000084L, false, 0, 0x0L), 4), 326121); - - // gentest-1522 - assertEqual(perft(new Board(0x82010000000L, 0x2000000040001080L, 0x44000000000L, 0x80000000L, 0x800000000L, 0x10000000000020L, 0x2000042080000020L, 0x10084850001080L, true, 0, 0x0L), 4), 588925); - - // gentest-1523 - assertEqual(perft(new Board(0x80010000000L, 0x2000000040000080L, 0x240000000000L, 0x80000000L, 0x800000000L, 0x10000000001000L, 0x2000040080001000L, 0x10280850000080L, false, 0, 0x0L), 4), 437881); - - // gentest-1524 - assertEqual(perft(new Board(0x80010000000L, 0x2000002040000000L, 0x240000000000L, 0x80000000L, 0x800000000L, 0x10000000000010L, 0x2000040080000010L, 0x10282850000000L, true, 0, 0x0L), 4), 510272); - - // gentest-1525 - assertEqual(perft(new Board(0x80010000000L, 0x80002000008000L, 0x240000000000L, 0x800000000000L, 0x800000000L, 0x10000000000010L, 0x80840000000010L, 0x10282810008000L, false, 0, 0x0L), 4), 366328); - - // gentest-1526 - assertEqual(perft(new Board(0x80010000000L, 0x80800000008000L, 0x240000000000L, 0x0L, 0x8000000L, 0x10000000001000L, 0x80040000001000L, 0x10a80018008000L, true, 0, 0x0L), 4), 153235); - - // gentest-1527 - assertEqual(perft(new Board(0x80010000000L, 0xa00000200000L, 0x200000000L, 0x0L, 0x8000000L, 0x10000000001000L, 0x200200001000L, 0x10880018200000L, false, 0, 0x0L), 4), 198568); - - // gentest-1528 - assertEqual(perft(new Board(0x80010000000L, 0xa04000000000L, 0x200000000L, 0x0L, 0x200L, 0x10000000000008L, 0x200200000008L, 0x10884010000200L, true, 0, 0x0L), 4), 249063); - - // gentest-1529 - assertEqual(perft(new Board(0x80010000000L, 0x4000804000000000L, 0x4000000L, 0x0L, 0x200L, 0x100000000008L, 0x4000000004000008L, 0x984010000200L, false, 0, 0x0L), 4), 18966); - - // gentest-1530 - assertEqual(perft(new Board(0x80010000000L, 0x4020004000000000L, 0x200000000L, 0x0L, 0x200L, 0x2000000008L, 0x4000000200000008L, 0x20086010000200L, true, 0, 0x0L), 4), 117054); - - // gentest-1531 - assertEqual(perft(new Board(0x80010000000L, 0x20204000000000L, 0x8000000000000L, 0x0L, 0x200L, 0x1000000008L, 0x8200000000008L, 0x20085010000200L, false, 0, 0x0L), 4), 170383); - - // gentest-1532 - assertEqual(perft(new Board(0x80010000000L, 0x20204000000000L, 0x40000000000L, 0x0L, 0x20000L, 0x1000000008L, 0x240000000008L, 0x20085010020000L, true, 0, 0x0L), 4), 61492); - - // gentest-1533 - assertEqual(perft(new Board(0x80000000000L, 0x20204000000000L, 0x10000000L, 0x0L, 0x1000000L, 0x1000001000L, 0x200010001000L, 0x20085001000000L, false, 0, 0x0L), 4), 322063); - - // gentest-1534 - assertEqual(perft(new Board(0x80000000000L, 0x8000204000000000L, 0x2000000000000L, 0x0L, 0x1L, 0x1000001000L, 0x2200000001000L, 0x8000085000000001L, true, 0, 0x0L), 4), 258452); - - // gentest-1535 - assertEqual(perft(new Board(0x80000000000L, 0x8000004010000000L, 0x2000000000000L, 0x0L, 0x4L, 0x1000080000L, 0x2000010080000L, 0x8000085000000004L, false, 0, 0x0L), 4), 138766); - - // gentest-1536 - assertEqual(perft(new Board(0x80000000000L, 0x8000004000000000L, 0x2000000000000L, 0x0L, 0x4L, 0x1000080000L, 0x2004000080000L, 0x8000081000000004L, true, 0, 0x0L), 4), 106690); - - // gentest-1537 - assertEqual(perft(new Board(0x80000000000L, 0x8000004000000000L, 0x800000000L, 0x0L, 0x4000000000000L, 0x1000080000L, 0x4800080000L, 0x8004081000000000L, false, 0, 0x0L), 4), 169804); - - // gentest-1538 - assertEqual(perft(new Board(0x80000000000L, 0x20004000000000L, 0x800000000L, 0x0L, 0x0L, 0x1000000400L, 0x4800000400L, 0x20081000000000L, true, 0, 0x0L), 4), 42778); - - // gentest-1539 - assertEqual(perft(new Board(0x80000000000L, 0x20004000000000L, 0x80L, 0x0L, 0x0L, 0x2000080000L, 0x4000080080L, 0x20082000000000L, false, 0, 0x0L), 4), 39194); - - // gentest-1540 - assertEqual(perft(new Board(0x80000000000L, 0x4000000000L, 0x80L, 0x0L, 0x0L, 0x48000000L, 0x8000080L, 0x84040000000L, true, 0, 0x0L), 4), 20492); - - // gentest-1541 - assertEqual(perft(new Board(0x80000000000L, 0x800000L, 0x2000000000000L, 0x0L, 0x0L, 0x48000000L, 0x2000008000000L, 0x80040800000L, false, 0, 0x0L), 4), 21058); - - // gentest-1542 - assertEqual(perft(new Board(0x80000000000L, 0x40L, 0x200000L, 0x0L, 0x0L, 0x28000000L, 0x8200000L, 0x80020000040L, true, 0, 0x0L), 4), 13480); - - // gentest-1543 - assertEqual(perft(new Board(0x80000000000L, 0x200000L, 0x0L, 0x0L, 0x0L, 0x22000000L, 0x2000000L, 0x80020200000L, false, 0, 0x0L), 4), 9133); - - // gentest-1544 - assertEqual(perft(new Board(0x80000000000L, 0x8000000L, 0x0L, 0x0L, 0x0L, 0x1100000000L, 0x100000000L, 0x81008000000L, true, 0, 0x0L), 4), 4194); - - // gentest-1545 - assertEqual(perft(new Board(0x800000000L, 0x8000000L, 0x0L, 0x0L, 0x0L, 0x1400000000L, 0x400000000L, 0x1808000000L, false, 0, 0x0L), 4), 4091); - - // gentest-1546 - assertEqual(perft(new Board(0x8000000L, 0x200000L, 0x0L, 0x0L, 0x0L, 0x1002000000L, 0x2000000L, 0x1008200000L, true, 0, 0x0L), 4), 7439); - - // gentest-1547 - assertEqual(perft(new Board(0x80000L, 0x200000L, 0x0L, 0x0L, 0x0L, 0x21000000000L, 0x20000000000L, 0x1000280000L, false, 0, 0x0L), 4), 10664); - - // gentest-1548 - assertEqual(perft(new Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x2000008000000L, 0x2000000000000L, 0x8080040L, true, 0, 0x0L), 4), 5444); - - // gentest-1549 - assertEqual(perft(new Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x2000000040000L, 0x2000000000000L, 0xc0040L, false, 0, 0x0L), 4), 5930); - - // gentest-1550 - assertEqual(perft(new Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x400000001000000L, 0x400000000000000L, 0x1080040L, true, 0, 0x0L), 4), 3275); - - // gentest-1551 - assertEqual(perft(new Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x20000010000L, 0x20000000000L, 0x90040L, false, 0, 0x0L), 4), 4544); - - // gentest-1552 - assertEqual(perft(new Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x4000000010000L, 0x4000000000000L, 0x90040L, true, 0, 0x0L), 4), 5403); - - // gentest-1553 - assertEqual(perft(new Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x1000000020000L, 0x1000000000000L, 0xa0040L, false, 0, 0x0L), 4), 3927); - - // gentest-1554 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1555 - assertEqual(perft(new Board(0xbf40000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffbf400000000000L, false, 0, 0x8100000000000081L), 4), 216714); - - // gentest-1556 - assertEqual(perft(new Board(0xbf40000400fb00L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400fbffL, 0xbdbfc40000000000L, true, 0, 0x8100000000000081L), 4), 294303); - - // gentest-1557 - assertEqual(perft(new Board(0xbf40000c00f300L, 0x801000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000080000L, 0x1000000000000010L, 0xc08f3f7L, 0xbdbfc01000000000L, false, 0, 0x8100000000000081L), 4), 753041); - - // gentest-1558 - assertEqual(perft(new Board(0xbd40020c00f300L, 0x801000000042L, 0x2400000000000024L, 0x4100000000000081L, 0x800002000000000L, 0x1000000000000010L, 0x200c00f3f7L, 0x7dbdc01200000000L, true, 0, 0x100000000000081L), 4), 987897); - - // gentest-1559 - assertEqual(perft(new Board(0xbd40020c00f300L, 0x801000010040L, 0x2400000000000024L, 0x140000000000081L, 0x800000040000000L, 0x1000000000000010L, 0x4c01f3f5L, 0x3dfdc01200000000L, false, 0, 0x100000000000081L), 4), 693880); - - // gentest-1560 - assertEqual(perft(new Board(0xb845020c02f100L, 0x801000010040L, 0x2400000000000024L, 0x140000000000081L, 0x800000040000000L, 0x1000000000000010L, 0x4c03f1f5L, 0x3df8c51200000000L, true, 0, 0x100000000000081L), 4), 751949); - - // gentest-1561 - assertEqual(perft(new Board(0xb845021c02e100L, 0x801000010040L, 0x2400000000000024L, 0x140000000000081L, 0x20000200000L, 0x1000000000000010L, 0x1c23e1f5L, 0x35f8c71200000000L, false, 0, 0x100000000000081L), 4), 1126311); - - // gentest-1562 - assertEqual(perft(new Board(0x9864031c02e100L, 0x801000011000L, 0x2400000000000024L, 0x140000000000081L, 0x20000200000L, 0x1000000000000010L, 0x1c23f1b5L, 0x35d8e61300000000L, true, 0, 0x100000000000081L), 4), 1492591); - - // gentest-1563 - assertEqual(perft(new Board(0x98640b1402e100L, 0x800000011000L, 0x2400000000000024L, 0x140000000000081L, 0x20040000000L, 0x1000000000000010L, 0x85403f1b5L, 0x35d8e60300000000L, false, 0, 0x100000000000081L), 4), 1492710); - - // gentest-1564 - assertEqual(perft(new Board(0x90640b1402e100L, 0x800000011000L, 0x2400000000000024L, 0x140000000000081L, 0x1000000000000L, 0x8000000000010L, 0x81403f1b5L, 0x25d9e40300000000L, true, 0, 0x81L), 4), 818289); - - // gentest-1565 - assertEqual(perft(new Board(0x90640b1400e100L, 0x800000011000L, 0x2400000000000024L, 0x140000000000081L, 0x1000000000000L, 0x1000000000000010L, 0x91401f1b5L, 0x35d1e40200000000L, false, 0, 0x81L), 4), 1046510); - - // gentest-1566 - assertEqual(perft(new Board(0x90640b1400e100L, 0x800000011000L, 0x2400000000000220L, 0x140000000000081L, 0x20000000000L, 0x1000000000000010L, 0x91401f3b1L, 0x35d0e60200000000L, true, 0, 0x81L), 4), 1546903); - - // gentest-1567 - assertEqual(perft(new Board(0x90440b1400e100L, 0x800000011000L, 0x2400004000000020L, 0x140000000000081L, 0x1000000000000L, 0x1000000000000010L, 0x491401f1b1L, 0x35d1c40200000000L, false, 0, 0x81L), 4), 1278011); - - // gentest-1568 - assertEqual(perft(new Board(0x90440b1400e100L, 0x800000010004L, 0x2400004000000020L, 0x41000000000081L, 0x8000000L, 0x1000000000000010L, 0x491401e1b5L, 0x34d1c40208000000L, true, 0, 0x81L), 4), 1433399); - - // gentest-1569 - assertEqual(perft(new Board(0x9044091640a100L, 0x800000010004L, 0x2400200000000020L, 0x41000000000081L, 0x8000000L, 0x1000000000000010L, 0x20091441a1b5L, 0x34d1c4000a000000L, false, 0, 0x81L), 4), 1310436); - - // gentest-1570 - assertEqual(perft(new Board(0x9044091440a100L, 0x800000010004L, 0x2400000008000020L, 0x41000000000081L, 0x0L, 0x1000000000000010L, 0x91c41a0b5L, 0x34d1c40000000100L, true, 0, 0x81L), 4), 920124); - - // gentest-1571 - assertEqual(perft(new Board(0x9044190440a100L, 0x800000010004L, 0x2400000008004000L, 0x42000000000081L, 0x0L, 0x1000000000000010L, 0x190c41e095L, 0x34d2c40000000100L, false, 0, 0x81L), 4), 967837); - - // gentest-1572 - assertEqual(perft(new Board(0x9044190440a100L, 0x4000000000000004L, 0x2400000008004000L, 0x40000200000081L, 0x0L, 0x1000000000000010L, 0x190c40e095L, 0x74d0440200000100L, true, 0, 0x81L), 4), 876472); - - // gentest-1573 - assertEqual(perft(new Board(0x9044190440a100L, 0x4000000000000004L, 0x2400020000004000L, 0x40000200000081L, 0x0L, 0x8000000001000L, 0x2190440f085L, 0x64d8440200000100L, false, 0, 0x0L), 4), 467170); - - // gentest-1574 - assertEqual(perft(new Board(0x9044190440a100L, 0x200000000004L, 0x2400020000800000L, 0x40000200000081L, 0x0L, 0x1000000000001000L, 0x21904c0b085L, 0x34d0640200000100L, true, 0, 0x0L), 4), 1131467); - - // gentest-1575 - assertEqual(perft(new Board(0x9044190440a100L, 0x200000020000L, 0x2002020000800000L, 0x40000200000088L, 0x0L, 0x1000000000001000L, 0x21904c2b088L, 0x30d2640200000100L, false, 0, 0x0L), 4), 1409082); - - // gentest-1576 - assertEqual(perft(new Board(0x9045180440a100L, 0x200000020000L, 0x2002020000800000L, 0x20000002000088L, 0x0L, 0x1000000000001000L, 0x31804c2b088L, 0x30b2640002000100L, true, 0, 0x0L), 4), 1619841); - - // gentest-1577 - assertEqual(perft(new Board(0x9045180440a100L, 0x8000000020000L, 0x2002020000000000L, 0x20000002080080L, 0x0L, 0x1000000000001000L, 0x318044ab080L, 0x30ba440002000100L, false, 0, 0x0L), 4), 1479331); - - // gentest-1578 - assertEqual(perft(new Board(0x1045980440a100L, 0x8000000020000L, 0x2400020000000000L, 0x20000002080080L, 0x0L, 0x1000000000000008L, 0x318044aa088L, 0x3438448002000100L, true, 0, 0x0L), 4), 1172250); - - // gentest-1579 - assertEqual(perft(new Board(0x1045980440a100L, 0x8000000020000L, 0x2400000100000000L, 0x200002080080L, 0x0L, 0x1000000000000004L, 0x119044aa084L, 0x3418648002000100L, false, 0, 0x0L), 4), 919098); - - // gentest-1580 - assertEqual(perft(new Board(0x10419c0440a000L, 0x8000000020001L, 0x2400000100000000L, 0x200002000088L, 0x0L, 0x1000000000000004L, 0x1190442a08cL, 0x3418608402000001L, true, 0, 0x0L), 4), 668104); - - // gentest-1581 - assertEqual(perft(new Board(0x1041980440a000L, 0x8000000000001L, 0x2400000100000000L, 0x22000088L, 0x0L, 0x1000000000000004L, 0x801190440a08cL, 0x3410408022000001L, false, 0, 0x0L), 4), 581884); - - // gentest-1582 - assertEqual(perft(new Board(0x1041980440a000L, 0x8000000000001L, 0x2400000100000000L, 0x48020080L, 0x0L, 0x1000000000000004L, 0x801190c40a084L, 0x3410408040020001L, true, 0, 0x0L), 4), 735386); - - // gentest-1583 - assertEqual(perft(new Board(0x1041980440a000L, 0x8000000000001L, 0x2404000000000000L, 0x4000020880L, 0x0L, 0x1000000000000004L, 0xc01180440a884L, 0x341040c000020001L, false, 0, 0x0L), 4), 592040); - - // gentest-1584 - assertEqual(perft(new Board(0x1041980400a000L, 0x200000000000001L, 0x2404000000000000L, 0x4000400880L, 0x0L, 0x1000000000000004L, 0x20401180400a884L, 0x341040c000400001L, true, 0, 0x0L), 4), 576202); - - // gentest-1585 - assertEqual(perft(new Board(0x5198a4000000L, 0x200000000000001L, 0x2404000000000000L, 0x4000400880L, 0x0L, 0x1000000000000004L, 0x2040118a4000884L, 0x340050c000400001L, false, 0, 0x0L), 4), 626710); - - // gentest-1586 - assertEqual(perft(new Board(0x5188a4000000L, 0x200000000000001L, 0x2404000000000000L, 0x1000005080L, 0x0L, 0x1000000000000004L, 0x2040108a4001084L, 0x3400509000004001L, true, 0, 0x0L), 4), 803147); - - // gentest-1587 - assertEqual(perft(new Board(0x5188a4000000L, 0x200000000000001L, 0x440000400000000L, 0x1000005080L, 0x0L, 0x1000000000000004L, 0x200010ca4001084L, 0x1440509000004001L, false, 0, 0x0L), 4), 771057); - - // gentest-1588 - assertEqual(perft(new Board(0x51a884000000L, 0x200000000000001L, 0x48000400000000L, 0x5000001080L, 0x0L, 0x1000000000000004L, 0x200012c84001084L, 0x104850d000000001L, true, 0, 0x0L), 4), 956656); - - // gentest-1589 - assertEqual(perft(new Board(0x51a884000000L, 0x200000000000001L, 0x48000008000000L, 0x5000009000L, 0x0L, 0x800000000000004L, 0x20001288c009004L, 0x84850d000000001L, false, 0, 0x0L), 4), 869978); - - // gentest-1590 - assertEqual(perft(new Board(0x518884000000L, 0x200000000000001L, 0x40000208000000L, 0x3000009000L, 0x0L, 0x800000000000800L, 0x20001088c009800L, 0x84050b200000001L, true, 0, 0x0L), 4), 728337); - - // gentest-1591 - assertEqual(perft(new Board(0x518c80000000L, 0x200000000000001L, 0x40000208000000L, 0x1010008020L, 0x0L, 0x800000000000800L, 0x200010c98008800L, 0x840509200000021L, false, 0, 0x0L), 4), 770433); - - // gentest-1592 - assertEqual(perft(new Board(0x518c80000000L, 0x200000000000001L, 0x40000208000000L, 0x1040008020L, 0x0L, 0x800000000000800L, 0x200010cc8008800L, 0x840509200000021L, true, 0, 0x0L), 4), 870896); - - // gentest-1593 - assertEqual(perft(new Board(0x518c80000000L, 0x200000000000001L, 0x40000000001040L, 0x1020008020L, 0x0L, 0x800000000000800L, 0x200010ca0008840L, 0x840509000001021L, false, 0, 0x0L), 4), 574148); - - // gentest-1594 - assertEqual(perft(new Board(0x518c80000000L, 0x200000000000400L, 0x40000000101000L, 0x1020008004L, 0x0L, 0x800000000000800L, 0x200010ca0108800L, 0x840509000001404L, true, 0, 0x0L), 4), 878484); - - // gentest-1595 - assertEqual(perft(new Board(0x518c80000000L, 0x200000000000400L, 0x40000020001000L, 0x1001008002L, 0x0L, 0x800000000000800L, 0x200010ca1008800L, 0x840509000001402L, false, 0, 0x0L), 4), 1026730); - - // gentest-1596 - assertEqual(perft(new Board(0x1508c80000000L, 0x200000000000400L, 0x40000020001000L, 0x41008002L, 0x0L, 0x800000000000800L, 0x201000ca1008800L, 0x840508040001402L, true, 0, 0x0L), 4), 1840204); - - // gentest-1597 - assertEqual(perft(new Board(0x5508880000000L, 0x200000000000400L, 0x40000020001000L, 0x4001008002L, 0x0L, 0x800000000000800L, 0x2050008a1008800L, 0x84050c000001402L, false, 0, 0x0L), 4), 145113); - - // gentest-1598 - assertEqual(perft(new Board(0x5508880000000L, 0x40000000400L, 0x40000020080000L, 0x4001008002L, 0x0L, 0x400000000000800L, 0x50408a1008800L, 0x44050c000080402L, true, 0, 0x0L), 4), 1720360); - - // gentest-1599 - assertEqual(perft(new Board(0x5508880000000L, 0x200000000000400L, 0x40000020080000L, 0x4001002020L, 0x0L, 0x400000000000800L, 0x2050008a1002800L, 0x44050c000080420L, false, 0, 0x0L), 4), 1231918); - - // gentest-1600 - assertEqual(perft(new Board(0x5508880000000L, 0x40000000400L, 0x8000000020080000L, 0x4001002020L, 0x0L, 0x400000000000800L, 0x50408a1002800L, 0x840050c000080420L, true, 0, 0x0L), 4), 1266129); - } - - public static void batch4() { - // gentest-1601 - assertEqual(perft(new Board(0x5508880000000L, 0x40000000400L, 0x8000000000480000L, 0x4001002000L, 0x0L, 0x400000000000008L, 0x5040881402008L, 0x840050c000080400L, false, 0, 0x0L), 4), 1112932); - - // gentest-1602 - assertEqual(perft(new Board(0x5508880000000L, 0x40000000010L, 0x8000000004400000L, 0x4001004000L, 0x0L, 0x400000000000008L, 0x5040881404008L, 0x840050c004000010L, true, 0, 0x0L), 4), 826733); - - // gentest-1603 - assertEqual(perft(new Board(0x5508880000000L, 0x40000000010L, 0x8000000000400100L, 0x4004000200L, 0x0L, 0x400000000000008L, 0x5040884400208L, 0x840050c000000110L, false, 0, 0x0L), 4), 709443); - - // gentest-1604 - assertEqual(perft(new Board(0x5508080000000L, 0x40000000010L, 0x8000000000400000L, 0x804020000L, 0x0L, 0x400000000000008L, 0x5040084420008L, 0x8400508800000010L, true, 0, 0x0L), 4), 109621); - - // gentest-1605 - assertEqual(perft(new Board(0x4508080000000L, 0x8000010L, 0x8000000000400000L, 0x4004020000L, 0x100000000000000L, 0x400000000000008L, 0x10400008c420008L, 0x840050c000000010L, false, 0, 0x0L), 4), 56768); - - // gentest-1606 - assertEqual(perft(new Board(0x4508080000000L, 0x8000010L, 0x8000000000400000L, 0x4004020000L, 0x40000000000L, 0x400000000000008L, 0x404008c420008L, 0x840050c000000010L, true, 0, 0x0L), 4), 601422); - - // gentest-1607 - assertEqual(perft(new Board(0x4409080000000L, 0x8000010L, 0x8000000000400000L, 0x4004020000L, 0x40000000000L, 0x400000000000008L, 0x404008c420008L, 0x840040d000000010L, false, 0, 0x0L), 4), 319284); - - // gentest-1608 - assertEqual(perft(new Board(0x4408088000000L, 0x200000L, 0x8000000000400000L, 0x4000020400L, 0x40000000000L, 0x400000000000008L, 0x4040080420408L, 0x840040c008200000L, true, 0, 0x0L), 4), 584433); - - // gentest-1609 - assertEqual(perft(new Board(0x4408088000000L, 0x200000L, 0x200000400000L, 0x4000060000L, 0x10000000L, 0x400000000000008L, 0x4000090460008L, 0x40060c008200000L, false, 0, 0x0L), 4), 815067); - - // gentest-1610 - assertEqual(perft(new Board(0x4408088000000L, 0x800L, 0x200000400000L, 0x4200040000L, 0x10000000L, 0x8000000000008L, 0x4000290440008L, 0x860c008000800L, true, 0, 0x0L), 4), 1093864); - - // gentest-1611 - assertEqual(perft(new Board(0x4408088000000L, 0x20000L, 0x200000400000L, 0x4400040000L, 0x10000000L, 0x8000000000008L, 0x4000490440008L, 0x860c008020000L, false, 0, 0x0L), 4), 691515); - - // gentest-1612 - assertEqual(perft(new Board(0x4408088000000L, 0x10000000000L, 0x200000400000L, 0x4000000004L, 0x10000000L, 0x8000000000008L, 0x400009040000cL, 0x861c008000000L, true, 0, 0x0L), 4), 514113); - - // gentest-1613 - assertEqual(perft(new Board(0x4008088000000L, 0x10000000000L, 0x200000400000L, 0x200000004L, 0x800000000000L, 0x8000000000008L, 0x480008040000cL, 0x8218208000000L, false, 0, 0x0L), 4), 743706); - - // gentest-1614 - assertEqual(perft(new Board(0x4008088000000L, 0x10000000000L, 0x800000000400000L, 0x6L, 0x8000000000000000L, 0x8000000000008L, 0x800400008040000cL, 0x808018008000002L, true, 0, 0x0L), 4), 247000); - - // gentest-1615 - assertEqual(perft(new Board(0x4008088000000L, 0x10000000000L, 0x800000000002000L, 0x200000400000000L, 0x8000000000000000L, 0x8000000000008L, 0x8004000480002008L, 0xa08018008000000L, false, 0, 0x0L), 4), 573146); - - // gentest-1616 - assertEqual(perft(new Board(0x8088000000L, 0x804000000000000L, 0x2000L, 0x402000000L, 0x8000000000000000L, 0x8000000000008L, 0x8800000480002008L, 0xc00800a000000L, true, 0, 0x0L), 4), 333989); - - // gentest-1617 - assertEqual(perft(new Board(0x8080000000L, 0x804000000000000L, 0x8000000L, 0x60000L, 0x8000000000000000L, 0x8000000000008L, 0x8800000088040008L, 0xc008000020000L, false, 0, 0x0L), 4), 400883); - - // gentest-1618 - assertEqual(perft(new Board(0x8080000000L, 0x800010000000000L, 0x8000000L, 0x204000000L, 0x8000000000000000L, 0x8000000000008L, 0x880000008c000008L, 0x8018200000000L, true, 0, 0x0L), 4), 378844); - - // gentest-1619 - assertEqual(perft(new Board(0x8080000000L, 0x800010000000000L, 0x8000000L, 0x2000000040000L, 0x1000000000L, 0x8000000000008L, 0x800001088040008L, 0xa018000000000L, false, 0, 0x0L), 4), 370565); - - // gentest-1620 - assertEqual(perft(new Board(0x8080000000L, 0x800010000000000L, 0x100000L, 0x40000040000L, 0x1000000000L, 0x8000000000008L, 0x800001080140008L, 0x8058000000000L, true, 0, 0x0L), 4), 409940); - - // gentest-1621 - assertEqual(perft(new Board(0x8080000000L, 0x804000000000000L, 0x100000L, 0x40000080000L, 0x1000000000L, 0x8000000000800L, 0x800001080180800L, 0xc048000000000L, false, 0, 0x0L), 4), 73773); - - // gentest-1622 - assertEqual(perft(new Board(0x8080000000L, 0x800000800000000L, 0x100000L, 0x80000080000L, 0x400000000L, 0x8000000000800L, 0x800000480180800L, 0x8088800000000L, true, 0, 0x0L), 4), 263921); - - // gentest-1623 - assertEqual(perft(new Board(0x8080000000L, 0x800000800000000L, 0x100000L, 0x80000080000L, 0x200000000L, 0x400000000000400L, 0x800000280180400L, 0x400088800000000L, false, 0, 0x0L), 4), 506864); - - // gentest-1624 - assertEqual(perft(new Board(0x8080000000L, 0x2000800000000L, 0x100000L, 0x280000L, 0x200000000L, 0x400000000000400L, 0x2000280180400L, 0x400008800200000L, true, 0, 0x0L), 4), 447796); - - // gentest-1625 - assertEqual(perft(new Board(0x8080000000L, 0x800000800000000L, 0x100000L, 0x20000000080000L, 0x200000000L, 0x400000000020000L, 0x8000002801a0000L, 0x420008800000000L, false, 0, 0x0L), 4), 631251); - - // gentest-1626 - assertEqual(perft(new Board(0x8080000000L, 0x804000000000000L, 0x100000L, 0x2000000000080000L, 0x40000000000L, 0x400000000020000L, 0x8000400801a0000L, 0x2404008000000000L, true, 0, 0x0L), 4), 407444); - - // gentest-1627 - assertEqual(perft(new Board(0x8080000000L, 0x800100000000000L, 0x20000000L, 0x2000000000080000L, 0x1000000000000000L, 0x400000000020000L, 0x18000000a00a0000L, 0x2400108000000000L, false, 0, 0x0L), 4), 277690); - - // gentest-1628 - assertEqual(perft(new Board(0x8080000000L, 0x800000000000000L, 0x0L, 0x20080000L, 0x1000000000L, 0x400000000020000L, 0x10800a0000L, 0xc00008020000000L, true, 0, 0x0L), 4), 382016); - - // gentest-1629 - assertEqual(perft(new Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x20200000L, 0x1000000000L, 0x400000000000400L, 0x1080200400L, 0x402008020000000L, false, 0, 0x0L), 4), 425290); - - // gentest-1630 - assertEqual(perft(new Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x2200000L, 0x1000000000L, 0x800000000000200L, 0x1080200200L, 0x802008002000000L, true, 0, 0x0L), 4), 60989); - - // gentest-1631 - assertEqual(perft(new Board(0x8080000000L, 0x400000000L, 0x0L, 0x2400000L, 0x1000000000L, 0x800000000000004L, 0x1080400004L, 0x800008402000000L, false, 0, 0x0L), 4), 450321); - - // gentest-1632 - assertEqual(perft(new Board(0x8080000000L, 0x400000000L, 0x0L, 0x420000L, 0x4000000000L, 0x1000000000000004L, 0x4080400004L, 0x1000008400020000L, true, 0, 0x0L), 4), 224525); - - // gentest-1633 - assertEqual(perft(new Board(0x8080000000L, 0x400000000L, 0x0L, 0x420000L, 0x2000000000L, 0x10000000000004L, 0x2080400004L, 0x10008400020000L, false, 0, 0x0L), 4), 427572); - - // gentest-1634 - assertEqual(perft(new Board(0x8080000000L, 0x400000000L, 0x0L, 0x500000L, 0x80000000000000L, 0x2000000000000004L, 0x80000080400004L, 0x2000008400100000L, true, 0, 0x0L), 4), 221460); - - // gentest-1635 - assertEqual(perft(new Board(0x8080000000L, 0x8000000000000L, 0x0L, 0x500000L, 0x20000000000000L, 0x2000000000000800L, 0x20000080400800L, 0x2008008000100000L, false, 0, 0x0L), 4), 4279); - - // gentest-1636 - assertEqual(perft(new Board(0x8080000000L, 0x400000000L, 0x0L, 0x100000L, 0x0L, 0x20000000000800L, 0x80100800L, 0x20008400000000L, true, 0, 0x0L), 4), 53017); - - // gentest-1637 - assertEqual(perft(new Board(0x8080000000L, 0x400000000L, 0x0L, 0x20000L, 0x0L, 0x200000000800L, 0x80020800L, 0x208400000000L, false, 0, 0x0L), 4), 63665); - - // gentest-1638 - assertEqual(perft(new Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x2L, 0x0L, 0x1000000800L, 0x80000802L, 0x2009000000000L, true, 0, 0x0L), 4), 41364); - - // gentest-1639 - assertEqual(perft(new Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x2L, 0x0L, 0x2000000004L, 0x80000006L, 0x200a000000000L, false, 0, 0x0L), 4), 21948); - - // gentest-1640 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1641 - assertEqual(perft(new Board(0xff00000800f700L, 0x4000040000000042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2800f7fbL, 0xfdff040000000000L, false, 0, 0x8100000000000081L), 4), 532558); - - // gentest-1642 - assertEqual(perft(new Board(0xe708101800e700L, 0x4000040000000042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x3800e7fbL, 0xfde70c1000000000L, true, 0, 0x8100000000000081L), 4), 1847613); - - // gentest-1643 - assertEqual(perft(new Board(0xe708101840a700L, 0x4000040000000042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x8000000001000L, 0x3840b7ebL, 0xedef0c1000000000L, false, 0, 0x0L), 4), 1036367); - - // gentest-1644 - assertEqual(perft(new Board(0x670880b8402700L, 0x4000040000000042L, 0x2400000000000020L, 0x8100000000000081L, 0x800000000000008L, 0x8000000001000L, 0x984037ebL, 0xed6f0c8020000000L, true, 0, 0x0L), 4), 764370); - - // gentest-1645 - assertEqual(perft(new Board(0x670880b8600700L, 0x4000001000010040L, 0x2400000000000020L, 0x8100000000000081L, 0x800000000000008L, 0x8000000001000L, 0x986117e9L, 0xed6f089020000000L, false, 0, 0x0L), 4), 820131); - - // gentest-1646 - assertEqual(perft(new Board(0x2708c0b8640300L, 0x4000000040010040L, 0x2400000000000020L, 0x8100000000000081L, 0x800000000000008L, 0x8000000001000L, 0x986513e9L, 0xed2f08c060000000L, true, 0, 0x0L), 4), 914777); - - // gentest-1647 - assertEqual(perft(new Board(0x2708c0b8640300L, 0x4000000040010040L, 0x2400000000000020L, 0x180000000800004L, 0x800000000000008L, 0x8000000001000L, 0x98e5136cL, 0x6daf08c060000000L, false, 0, 0x0L), 4), 864286); - - // gentest-1648 - assertEqual(perft(new Board(0x2708c8b0640300L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, 0x1000000000000008L, 0x8000000001000L, 0x890e5136cL, 0x55af88c060000000L, true, 0, 0x0L), 4), 653206); - - // gentest-1649 - assertEqual(perft(new Board(0x2708c8b0640300L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, 0x8000100000000000L, 0x8000000001000L, 0x8000000890e51364L, 0x45af98c060000000L, false, 0, 0x0L), 4), 892116); - - // gentest-1650 - assertEqual(perft(new Board(0x728c0b0660100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, 0x8000000800000000L, 0x8000000001000L, 0x8000000090e71164L, 0x458fa8c860000000L, true, 0, 0x0L), 4), 752791); - - // gentest-1651 - assertEqual(perft(new Board(0x728c0b0660100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, 0x400800000000L, 0x40000001000L, 0x400090e71164L, 0x4587acc860000000L, false, 0, 0x0L), 4), 1125940); - - // gentest-1652 - assertEqual(perft(new Board(0x728c0b0660100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800002L, 0x400400000000L, 0x20000001000L, 0x400090e71162L, 0x4587aac460000000L, true, 0, 0x0L), 4), 1338685); - - // gentest-1653 - assertEqual(perft(new Board(0x728c0b0620100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800010L, 0x2000040000L, 0x20000001000L, 0x2090e31170L, 0x4587aac060040000L, false, 0, 0x0L), 4), 1003922); - - // gentest-1654 - assertEqual(perft(new Board(0x728c0b0620100L, 0x10000040010040L, 0x400800000004000L, 0x180000000800010L, 0x2000000200L, 0x20000001000L, 0x2090e35150L, 0x597aac060000200L, true, 0, 0x0L), 4), 167517); - - // gentest-1655 - assertEqual(perft(new Board(0x728d0a0620100L, 0x10000040010040L, 0x400800000004000L, 0x120000000800010L, 0x2000000200L, 0x20000080000L, 0x3080eb4150L, 0x537aac060000200L, false, 0, 0x0L), 4), 1577379); - - // gentest-1656 - assertEqual(perft(new Board(0x62990a0620100L, 0x10000040010040L, 0x400800000004000L, 0x140000000800010L, 0x4000000200L, 0x20000080000L, 0x5080eb4150L, 0x556ab8060000200L, true, 0, 0x0L), 4), 1693697); - - // gentest-1657 - assertEqual(perft(new Board(0x62990a2600100L, 0x400040010040L, 0x400800000004000L, 0x140000000000090L, 0x4000000200L, 0x20000080000L, 0x50826941d0L, 0x546eb8060000200L, false, 0, 0x0L), 4), 1328473); - - // gentest-1658 - assertEqual(perft(new Board(0x62990a2600100L, 0x8000000040010040L, 0x400004000000020L, 0x140000000000090L, 0x200L, 0x20000080000L, 0x10826901f0L, 0x85462bc060000200L, true, 0, 0x0L), 4), 1094209); - - // gentest-1659 - assertEqual(perft(new Board(0x62990a2600100L, 0x8000000000110040L, 0x400004000000020L, 0x140000000000084L, 0x200L, 0x20000080000L, 0x10826901e4L, 0x85462bc020100200L, false, 0, 0x0L), 4), 1290097); - - // gentest-1660 - assertEqual(perft(new Board(0x62990a2600100L, 0x20000000110040L, 0x400004000000020L, 0x140000000000480L, 0x0L, 0x20000080000L, 0x10826905e0L, 0x5662bc020100000L, true, 0, 0x0L), 4), 1018632); - - // gentest-1661 - assertEqual(perft(new Board(0x62990a2600100L, 0x20000000011400L, 0x400004000000020L, 0x140000000800000L, 0x0L, 0x20000080000L, 0x1082e91120L, 0x5662bc020000400L, false, 0, 0x0L), 4), 463014); - - // gentest-1662 - assertEqual(perft(new Board(0x62992a0600100L, 0x20000000011010L, 0x4000800020L, 0x140000000000000L, 0x0L, 0x20000080000L, 0x1280691120L, 0x1662bc020800010L, true, 0, 0x0L), 4), 140774); - - // gentest-1663 - assertEqual(perft(new Board(0x62992a0600100L, 0x20000000010050L, 0x4000000020L, 0x140000000000000L, 0x0L, 0x20000040000L, 0x1280650140L, 0x1662bc020000030L, false, 0, 0x0L), 4), 390034); - - // gentest-1664 - assertEqual(perft(new Board(0x609a2a0600100L, 0x1000010050L, 0x4000000020L, 0x140000000000000L, 0x0L, 0x20000040000L, 0x80280650140L, 0x14603f020000030L, true, 0, 0x0L), 4), 464014); - - // gentest-1665 - assertEqual(perft(new Board(0xe01a2a0600100L, 0x1000010050L, 0x4000000020L, 0x180000000000000L, 0x0L, 0x20002000000L, 0x8000282610140L, 0x18603f020000030L, false, 0, 0x0L), 4), 364639); - - // gentest-1666 - assertEqual(perft(new Board(0xe01e220600100L, 0x1000010050L, 0x20L, 0x21000000000000L, 0x0L, 0x20002000000L, 0x8004202610140L, 0x2703b020000030L, true, 0, 0x0L), 4), 202471); - - // gentest-1667 - assertEqual(perft(new Board(0xe01e220610000L, 0x1000000052L, 0x800000L, 0x21000000000000L, 0x0L, 0x20002000000L, 0x8004202610042L, 0x2703b020800010L, false, 0, 0x0L), 4), 152966); - - // gentest-1668 - assertEqual(perft(new Board(0xe41a220610000L, 0x40000000052L, 0x800000L, 0x41000000000000L, 0x0L, 0x20002000000L, 0x8400202610042L, 0x4707a020800010L, true, 0, 0x0L), 4), 50333); - - // gentest-1669 - assertEqual(perft(new Board(0x640a220610000L, 0x40000000052L, 0x800000L, 0x841000000000000L, 0x0L, 0x20000040000L, 0x800400000650042L, 0x4706a220800010L, false, 0, 0x0L), 4), 421426); - - // gentest-1670 - assertEqual(perft(new Board(0x640a220610000L, 0x8000052L, 0x800000L, 0x6001000000000000L, 0x0L, 0x20000040000L, 0x2000400000650042L, 0x400702a228800010L, true, 0, 0x0L), 4), 333675); - - // gentest-1671 - assertEqual(perft(new Board(0x640a220210000L, 0x40000000052L, 0x800000L, 0x4001000000000000L, 0x0L, 0x20000040000L, 0x4000400020250042L, 0x706a200800010L, false, 0, 0x0L), 4), 157077); - - // gentest-1672 - assertEqual(perft(new Board(0x640a220210000L, 0x152L, 0x800000L, 0x4001000000000000L, 0x0L, 0x20000000800L, 0x4000400020210842L, 0x702a200800110L, true, 0, 0x0L), 4), 155066); - - // gentest-1673 - assertEqual(perft(new Board(0x640a220210000L, 0x152L, 0x800000L, 0x40000001000000L, 0x0L, 0x20000000008L, 0x4040002021004aL, 0x602a201800110L, false, 0, 0x0L), 4), 157026); - - // gentest-1674 - assertEqual(perft(new Board(0x640a220000000L, 0x950L, 0x800000L, 0x40000000200000L, 0x0L, 0x20000000008L, 0x40400020000848L, 0x602a200a00110L, true, 0, 0x0L), 4), 174492); - - // gentest-1675 - assertEqual(perft(new Board(0x640a220000000L, 0x2000052L, 0x800000L, 0x20000000200000L, 0x0L, 0x20000000008L, 0x2040002000004aL, 0x602a202a00010L, false, 0, 0x0L), 4), 251721); - - // gentest-1676 - assertEqual(perft(new Board(0x640a220000000L, 0x800000042L, 0x800000L, 0x20000000010000L, 0x0L, 0x20000000010L, 0x20400020000052L, 0x602aa00810000L, true, 0, 0x0L), 4), 269851); - - // gentest-1677 - assertEqual(perft(new Board(0x640a220000000L, 0x800000042L, 0x800000L, 0x80000010000L, 0x0L, 0x400000010L, 0x480020000052L, 0x600ae00810000L, false, 0, 0x0L), 4), 291640); - - // gentest-1678 - assertEqual(perft(new Board(0x640a220000000L, 0x100042L, 0x40000000L, 0x10000010000L, 0x0L, 0x400000010L, 0x410020000052L, 0x600a640110000L, true, 0, 0x0L), 4), 207292); - - // gentest-1679 - assertEqual(perft(new Board(0x640a220000000L, 0x800402L, 0x40000000L, 0x10000010000L, 0x0L, 0x400000020L, 0x410020800022L, 0x600a640010400L, false, 0, 0x0L), 4), 241839); - - // gentest-1680 - assertEqual(perft(new Board(0x442a220000000L, 0x800402L, 0x40000000L, 0x10000000000L, 0x0L, 0x400004000L, 0x400020804002L, 0x403a640000400L, true, 0, 0x0L), 4), 97718); - - // gentest-1681 - assertEqual(perft(new Board(0x442a220000000L, 0x4000000402L, 0x1000L, 0x10000000000L, 0x0L, 0x400002000L, 0x404020002002L, 0x403a600001400L, false, 0, 0x0L), 4), 140045); - - // gentest-1682 - assertEqual(perft(new Board(0x442a220000000L, 0x4000100800L, 0x80000L, 0x10000000000L, 0x0L, 0x400002000L, 0x404020002800L, 0x403a600180000L, true, 0, 0x0L), 4), 151819); - - // gentest-1683 - assertEqual(perft(new Board(0x442a220000000L, 0x4000100800L, 0x2L, 0x10000000000L, 0x0L, 0x400002000L, 0x404020002800L, 0x403a600100002L, false, 0, 0x0L), 4), 166524); - - // gentest-1684 - assertEqual(perft(new Board(0x442a220000000L, 0x100800L, 0x10000000L, 0x10000000000L, 0x0L, 0x400002000L, 0x400020002800L, 0x403a610100000L, true, 0, 0x0L), 4), 92495); - - // gentest-1685 - assertEqual(perft(new Board(0x442a220000000L, 0x100800L, 0x10000000L, 0x100L, 0x0L, 0x400800000L, 0x400020800800L, 0x402a610100100L, false, 0, 0x0L), 4), 87344); - - // gentest-1686 - assertEqual(perft(new Board(0x442a220000000L, 0x120000L, 0x10000000L, 0x100000000L, 0x0L, 0x2800000L, 0x400020820000L, 0x402a312100000L, true, 0, 0x0L), 4), 82278); - - // gentest-1687 - assertEqual(perft(new Board(0x44222a0000000L, 0x100001L, 0x10000000L, 0x100000000L, 0x0L, 0x2008000L, 0x400020008001L, 0x4022392100000L, false, 0, 0x0L), 4), 26138); - - // gentest-1688 - assertEqual(perft(new Board(0x44222a0000000L, 0x4000000L, 0x10000000L, 0x1L, 0x0L, 0x2800000L, 0x400020800000L, 0x4022296000001L, true, 0, 0x0L), 4), 17802); - - // gentest-1689 - assertEqual(perft(new Board(0x40222a0000000L, 0x4000000000000800L, 0x10000000L, 0x1L, 0x0L, 0x2800000L, 0x4000000020800000L, 0x4022292000801L, false, 0, 0x0L), 4), 41937); - - // gentest-1690 - assertEqual(perft(new Board(0x40222a0000000L, 0x200000020000L, 0x2000000000000L, 0x1L, 0x0L, 0x2800000L, 0x200020800000L, 0x6022282020001L, true, 0, 0x0L), 4), 76771); - - // gentest-1691 - assertEqual(perft(new Board(0x40222a0000000L, 0x120000L, 0x2000000000000L, 0x1L, 0x0L, 0x810000L, 0x20900000L, 0x6022280030001L, false, 0, 0x0L), 4), 52265); - - // gentest-1692 - assertEqual(perft(new Board(0x40222a0000000L, 0x120000L, 0x0L, 0x1L, 0x0L, 0x2004000L, 0x20104000L, 0x4022282020001L, true, 0, 0x0L), 4), 58772); - - // gentest-1693 - assertEqual(perft(new Board(0x40222a0000000L, 0x120000L, 0x0L, 0x1L, 0x0L, 0x44000L, 0x20104000L, 0x4022280060001L, false, 0, 0x0L), 4), 74771); - - // gentest-1694 - assertEqual(perft(new Board(0x40222a0000000L, 0x820L, 0x0L, 0x10000L, 0x0L, 0x44000L, 0x20004020L, 0x4022280050800L, true, 0, 0x0L), 4), 42095); - - // gentest-1695 - assertEqual(perft(new Board(0x40222a0000000L, 0x200020L, 0x0L, 0x10000L, 0x0L, 0x840000L, 0x20800020L, 0x4022280250000L, false, 0, 0x0L), 4), 21816); - - // gentest-1696 - assertEqual(perft(new Board(0x40222a0000000L, 0x208000L, 0x0L, 0x1L, 0x0L, 0x840000L, 0x20808000L, 0x4022280240001L, true, 0, 0x0L), 4), 20837); - - // gentest-1697 - assertEqual(perft(new Board(0x40222a0000000L, 0x800000200000L, 0x0L, 0x8L, 0x0L, 0x840000L, 0x800020800000L, 0x4022280240008L, false, 0, 0x0L), 4), 32236); - - // gentest-1698 - assertEqual(perft(new Board(0x4022220000000L, 0x801000000000L, 0x0L, 0x800000000000000L, 0x0L, 0x80040000L, 0x8000a0000000L, 0x804023200040000L, true, 0, 0x0L), 4), 72169); - - // gentest-1699 - assertEqual(perft(new Board(0x4022220000000L, 0x801000000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x80040000L, 0x8000a0000000L, 0x4004023200040000L, false, 0, 0x0L), 4), 48880); - - // gentest-1700 - assertEqual(perft(new Board(0x4022220000000L, 0x4000040000000000L, 0x0L, 0x0L, 0x0L, 0x88000000L, 0x40000000a0000000L, 0x4062208000000L, true, 0, 0x0L), 4), 12510); - - // gentest-1701 - assertEqual(perft(new Board(0x4022220000000L, 0x240000000000L, 0x0L, 0x0L, 0x0L, 0x4400000000L, 0x204020000000L, 0x4062600000000L, false, 0, 0x0L), 4), 20988); - - // gentest-1702 - assertEqual(perft(new Board(0x4020022000000L, 0x200200000000000L, 0x0L, 0x0L, 0x0L, 0x2400000000L, 0x202020000000L, 0x204020402000000L, true, 0, 0x0L), 4), 18272); - - // gentest-1703 - assertEqual(perft(new Board(0x4020022000000L, 0x200200000000000L, 0x0L, 0x0L, 0x0L, 0x4200000L, 0x200020200000L, 0x204020006000000L, false, 0, 0x0L), 4), 33500); - - // gentest-1704 - assertEqual(perft(new Board(0x20422000000L, 0x10010000000L, 0x0L, 0x0L, 0x0L, 0x4200000L, 0x30200000L, 0x30406000000L, true, 0, 0x0L), 4), 17389); - - // gentest-1705 - assertEqual(perft(new Board(0x20422000000L, 0x14000000000L, 0x0L, 0x0L, 0x0L, 0x800001000L, 0x4020001000L, 0x30c02000000L, false, 0, 0x0L), 4), 17226); - - // gentest-1706 - assertEqual(perft(new Board(0x20422000000L, 0x20010000000000L, 0x0L, 0x0L, 0x0L, 0x4000000001000L, 0x20000020001000L, 0x4030402000000L, true, 0, 0x0L), 4), 18958); - - // gentest-1707 - assertEqual(perft(new Board(0x20026000000L, 0x14000000000L, 0x0L, 0x0L, 0x0L, 0x4000000000008L, 0x4020000008L, 0x4030006000000L, false, 0, 0x0L), 4), 19693); - - // gentest-1708 - assertEqual(perft(new Board(0x20024020000L, 0x200004000000000L, 0x0L, 0x0L, 0x0L, 0x4000000000800L, 0x4020000800L, 0x204020004020000L, true, 0, 0x0L), 4), 20833); - - // gentest-1709 - assertEqual(perft(new Board(0x20024020000L, 0x200004000000000L, 0x0L, 0x0L, 0x0L, 0x8000002000000L, 0x4022000000L, 0x208020004020000L, false, 0, 0x0L), 4), 15574); - - // gentest-1710 - assertEqual(perft(new Board(0x20020060000L, 0x200100000000000L, 0x0L, 0x0L, 0x0L, 0x80002000000L, 0x100022000000L, 0x2000a0000060000L, true, 0, 0x0L), 4), 18981); - - // gentest-1711 - assertEqual(perft(new Board(0x20020000000L, 0x110000000000L, 0x0L, 0x0L, 0x0L, 0x80000040000L, 0x100020040000L, 0xb0000000000L, false, 0, 0x0L), 4), 18636); - - // gentest-1712 - assertEqual(perft(new Board(0x20020000000L, 0x1000100000000000L, 0x0L, 0x0L, 0x0L, 0x80000000400L, 0x100020000400L, 0x10000a0000000000L, true, 0, 0x0L), 4), 22063); - - // gentest-1713 - assertEqual(perft(new Board(0x20020000000L, 0x40100000000000L, 0x0L, 0x0L, 0x0L, 0x80000040000L, 0x100020040000L, 0x400a0000000000L, false, 0, 0x0L), 4), 18537); - - // gentest-1714 - assertEqual(perft(new Board(0x20020000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x10040000L, 0x40000020040000L, 0x20010000000L, true, 0, 0x0L), 4), 4912); - - // gentest-1715 - assertEqual(perft(new Board(0x20000000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x20000008L, 0x40000000000008L, 0x20020000000L, false, 0, 0x0L), 4), 5068); - - // gentest-1716 - assertEqual(perft(new Board(0x20000000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x20000400L, 0x40000000000400L, 0x20020000000L, true, 0, 0x0L), 4), 7624); - - // gentest-1717 - assertEqual(perft(new Board(0x200000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x20001000L, 0x40000000001000L, 0x220000000L, false, 0, 0x0L), 4), 4550); - - // gentest-1718 - assertEqual(perft(new Board(0x200000000L, 0x100000000000L, 0x0L, 0x0L, 0x0L, 0x800001000L, 0x100000001000L, 0xa00000000L, true, 0, 0x0L), 4), 9597); - - // gentest-1719 - assertEqual(perft(new Board(0x200000000L, 0x100000000000L, 0x0L, 0x0L, 0x0L, 0x4001000L, 0x100000001000L, 0x204000000L, false, 0, 0x0L), 4), 6993); - - // gentest-1720 - assertEqual(perft(new Board(0x200000000L, 0x4000000000000L, 0x0L, 0x0L, 0x0L, 0x41000L, 0x4000000001000L, 0x200040000L, true, 0, 0x0L), 4), 7043); - - // gentest-1721 - assertEqual(perft(new Board(0x200000000L, 0x4000000000000L, 0x0L, 0x0L, 0x0L, 0x21000L, 0x4000000001000L, 0x200020000L, false, 0, 0x0L), 4), 9426); - - // gentest-1722 - assertEqual(perft(new Board(0x200000000L, 0x800000000L, 0x0L, 0x0L, 0x0L, 0x4001000L, 0x800001000L, 0x204000000L, true, 0, 0x0L), 4), 7180); - - // gentest-1723 - assertEqual(perft(new Board(0x200000000L, 0x800000000L, 0x0L, 0x0L, 0x0L, 0x21000L, 0x800001000L, 0x200020000L, false, 0, 0x0L), 4), 8773); - - // gentest-1724 - assertEqual(perft(new Board(0x2000000L, 0x800000000L, 0x0L, 0x0L, 0x0L, 0x1080000L, 0x800080000L, 0x3000000L, true, 0, 0x0L), 4), 4490); - - // gentest-1725 - assertEqual(perft(new Board(0x2000000L, 0x40000L, 0x0L, 0x0L, 0x0L, 0x200100000L, 0x140000L, 0x202000000L, false, 0, 0x0L), 4), 8172); - - // gentest-1726 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1727 - assertEqual(perft(new Board(0xef100008807700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x88077ffL, 0xffef100000000000L, false, 0, 0x8100000000000081L), 4), 654281); - - // gentest-1728 - assertEqual(perft(new Board(0xe7180008807700L, 0x4200000000040040L, 0x400000002000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x88477fdL, 0xdfe7180002000000L, true, 0, 0x8100000000000081L), 4), 576820); - - // gentest-1729 - assertEqual(perft(new Board(0xe71800c8003700L, 0x4200000000040040L, 0x400000002000024L, 0x8100000000000081L, 0x800000000000008L, 0x10000000000010L, 0xc80437fdL, 0xcff7180002000000L, false, 0, 0x81L), 4), 634738); - - // gentest-1730 - assertEqual(perft(new Board(0xe51802c8003700L, 0x4200000000840000L, 0x8000002000024L, 0x8100000000000081L, 0x800000000000008L, 0x10000000000010L, 0xc88437bdL, 0xcbfd180202000000L, true, 0, 0x81L), 4), 530445); - - // gentest-1731 - assertEqual(perft(new Board(0xe5184288003700L, 0x4000040020040000L, 0x8000002000024L, 0x8100000000000081L, 0x800000000000008L, 0x10000000000010L, 0x40a80437bdL, 0xc9fd1c0202000000L, false, 0, 0x81L), 4), 630054); - - // gentest-1732 - assertEqual(perft(new Board(0xe5184288003700L, 0x4000040020040000L, 0x8000100000024L, 0x8200000000008001L, 0x800000000000008L, 0x10000000000010L, 0x40a804b73dL, 0xcafd1c0300000000L, true, 0, 0x1L), 4), 594631); - - // gentest-1733 - assertEqual(perft(new Board(0xe5184288102700L, 0x4000040020040000L, 0x8000100000024L, 0x8100000000008001L, 0x800000000000800L, 0x10000000000010L, 0x40a814af35L, 0xc9fd1c0300000000L, false, 0, 0x1L), 4), 1081824); - - // gentest-1734 - assertEqual(perft(new Board(0xe5004a88102700L, 0x4000040000040000L, 0x8000100000024L, 0x8100000000008001L, 0x800000000000800L, 0x10000000000010L, 0x408814af35L, 0xc9fd040b00000000L, true, 0, 0x1L), 4), 947889); - - // gentest-1735 - assertEqual(perft(new Board(0xe5004a88102700L, 0x4000040000000008L, 0x8000104000004L, 0x8100000000008001L, 0x2000000000000800L, 0x10000000000010L, 0x408c10af1dL, 0xe1fd040b00000000L, false, 0, 0x1L), 4), 902629); - - // gentest-1736 - assertEqual(perft(new Board(0x65804a88102700L, 0x4000040000000008L, 0x100820004L, 0x8100000000008001L, 0x2000000000000800L, 0x10000000000010L, 0x408812af1dL, 0xe175840b00800000L, true, 0, 0x1L), 4), 674094); - - // gentest-1737 - assertEqual(perft(new Board(0x65804a8c102300L, 0x4000040000000008L, 0x20000820004L, 0x8100000000008001L, 0x2000000100000000L, 0x10000000000010L, 0x418c12a31dL, 0xe175860a00800000L, false, 0, 0x1L), 4), 1284082); - - // gentest-1738 - assertEqual(perft(new Board(0x25c04a8d102200L, 0x4000000002000008L, 0x20000820004L, 0x8100000000008001L, 0x2000000100000000L, 0x10000000000010L, 0x418d12a21dL, 0xe135c20a02800000L, true, 0, 0x1L), 4), 1007776); - - // gentest-1739 - assertEqual(perft(new Board(0x25c04a8d102200L, 0x4000000002000008L, 0x820004L, 0x8100000000008001L, 0x40020000000000L, 0x10000000000800L, 0x2408d12aa0dL, 0xc175c00a02800000L, false, 0, 0x0L), 4), 1548791); - - // gentest-1740 - assertEqual(perft(new Board(0x24c14a8d102200L, 0x4000000002000008L, 0x820004L, 0x8200000000008001L, 0x40020000000000L, 0x10000000001000L, 0x2408d12b20dL, 0xc274c10a02800000L, true, 0, 0x0L), 4), 1395628); - - // gentest-1741 - assertEqual(perft(new Board(0x24c14a8d102200L, 0x4000000002000008L, 0x800104L, 0x8200000000008001L, 0x220000000000L, 0x10000000000010L, 0x2408d10a31dL, 0xc234e10a02800000L, false, 0, 0x0L), 4), 1480083); - - // gentest-1742 - assertEqual(perft(new Board(0x24c14a8d122000L, 0x4000000002000008L, 0x124L, 0x8000020000008001L, 0x200000000000L, 0x10000000000010L, 0x408d12a11dL, 0xc034e30a02000020L, true, 0, 0x0L), 4), 729025); - - // gentest-1743 - assertEqual(perft(new Board(0x24c14aa9120000L, 0x4000000002000008L, 0x124L, 0x8000020000008001L, 0x200000000000L, 0x800000000000010L, 0x42a912811dL, 0xc824e30802000020L, false, 0, 0x0L), 4), 845787); - - // gentest-1744 - assertEqual(perft(new Board(0x24c14aa9120000L, 0x4000000002000008L, 0x26L, 0x8000100000008001L, 0x200000000000L, 0x1000000000000010L, 0x42a912801fL, 0xd024f10802000020L, true, 0, 0x0L), 4), 1373036); - - // gentest-1745 - assertEqual(perft(new Board(0x24c14aa9120000L, 0x4000000002000008L, 0x26L, 0x8000100000008001L, 0x10000000000000L, 0x1000000000000010L, 0x42a912801fL, 0xd034d10802000020L, false, 0, 0x0L), 4), 1233688); - - // gentest-1746 - assertEqual(perft(new Board(0x24c10aa9120000L, 0x4000000002000008L, 0x26L, 0x8000100000001001L, 0x8000000000L, 0x1000000000000010L, 0x2a912101fL, 0xd024d18802000020L, true, 0, 0x0L), 4), 992157); - - // gentest-1747 - assertEqual(perft(new Board(0x24c10aa9120000L, 0x4000000002000008L, 0x80006L, 0x8000100000001001L, 0x8000000000L, 0x1000000000000010L, 0x2a912101fL, 0xd024d18802080000L, false, 0, 0x0L), 4), 854150); - - // gentest-1748 - assertEqual(perft(new Board(0x4c12aa9120000L, 0x4000000002000008L, 0x80006L, 0x8000020000001001L, 0x8000000000L, 0x1000000000000800L, 0x2a912180fL, 0xd004c3a802080000L, true, 0, 0x0L), 4), 449344); - - // gentest-1749 - assertEqual(perft(new Board(0x4c12ba8120000L, 0x4000000002000008L, 0x80202L, 0x8000020000001001L, 0x8000000000L, 0x2000000000000800L, 0x3a8121a0bL, 0xe004c3a802080000L, false, 0, 0x0L), 4), 458391); - - // gentest-1750 - assertEqual(perft(new Board(0x4816ba8120000L, 0x4000000002000008L, 0x80202L, 0x8000040000001100L, 0x8000000000L, 0x2000000000000800L, 0x3a8121b0aL, 0xe00485e802080000L, true, 0, 0x0L), 4), 605152); - - // gentest-1751 - assertEqual(perft(new Board(0x48169a8120000L, 0x4000000002000008L, 0x80006L, 0x8000040000001100L, 0x8000000000L, 0x1000000000000800L, 0x101a812190eL, 0xd00484e802080000L, false, 0, 0x0L), 4), 604281); - - // gentest-1752 - assertEqual(perft(new Board(0x48169a8120000L, 0x4000000002000008L, 0x80006L, 0x80040000001001L, 0x8000000000L, 0x10000000000800L, 0x101a812180fL, 0x409484e802080000L, true, 0, 0x0L), 4), 713914); - - // gentest-1753 - assertEqual(perft(new Board(0x48169b8020000L, 0x4000000002000008L, 0x26L, 0x80040000000011L, 0x8000000000L, 0x10000000000800L, 0x101b802081fL, 0x409484e802000020L, false, 0, 0x0L), 4), 922744); - - // gentest-1754 - assertEqual(perft(new Board(0x48169b8020000L, 0x4000000002000008L, 0x800104L, 0x80080000000011L, 0x8000000000L, 0x10000000000800L, 0x101b802091dL, 0x409488e802800000L, true, 0, 0x0L), 4), 666709); - - // gentest-1755 - assertEqual(perft(new Board(0x4816998020000L, 0x4000000002000000L, 0x800104L, 0x80080000000011L, 0x8L, 0x10000000100000L, 0x14198120115L, 0x4094882802800008L, false, 0, 0x0L), 4), 476606); - - // gentest-1756 - assertEqual(perft(new Board(0x4816998020000L, 0x4000000002000000L, 0x800104L, 0x88000000000041L, 0x20L, 0x10000000100000L, 0x14198120145L, 0x409c802802800020L, true, 0, 0x0L), 4), 405499); - - // gentest-1757 - assertEqual(perft(new Board(0x4814998020000L, 0x4000000002000000L, 0x810100L, 0x88000000000042L, 0x20L, 0x10000000100000L, 0x14188130142L, 0x409c800812800020L, false, 0, 0x0L), 4), 408389); - - // gentest-1758 - assertEqual(perft(new Board(0x4c10998020000L, 0x4000000002000000L, 0x40010100L, 0x88000000000042L, 0x20L, 0x80000100000L, 0x410188130142L, 0x408c880852000020L, true, 0, 0x0L), 4), 434865); - - // gentest-1759 - assertEqual(perft(new Board(0x4c10998020000L, 0x4000000002000000L, 0x40000300L, 0xa0000000000041L, 0x20L, 0x80000100000L, 0x410188120341L, 0x40a4880852000020L, false, 0, 0x0L), 4), 706272); - - // gentest-1760 - assertEqual(perft(new Board(0x4c10998020000L, 0x4000000002000000L, 0x40000300L, 0x8040000000000060L, 0x0L, 0x80000100000L, 0x410188120360L, 0xc044880852000000L, true, 0, 0x0L), 4), 485736); - - // gentest-1761 - assertEqual(perft(new Board(0x4c10998020000L, 0x4000000000080000L, 0x40000300L, 0x8040000000200004L, 0x0L, 0x80000100000L, 0x410188320304L, 0xc044880850080000L, false, 0, 0x0L), 4), 682567); - - // gentest-1762 - assertEqual(perft(new Board(0x4c10998020000L, 0x200000080000L, 0x40000300L, 0x140000000200020L, 0x0L, 0x80000100000L, 0x410188320320L, 0x144a80850080000L, true, 0, 0x0L), 4), 897191); - - // gentest-1763 - assertEqual(perft(new Board(0x4c10998020000L, 0x200000080000L, 0x40000202L, 0x140000000202000L, 0x0L, 0x100000100000L, 0x410188322202L, 0x144b00850080000L, false, 0, 0x0L), 4), 804004); - - // gentest-1764 - assertEqual(perft(new Board(0x44810998020000L, 0x200000080000L, 0x40000202L, 0x110000000202000L, 0x0L, 0x100000100000L, 0x40010188322202L, 0x114b00850080000L, true, 0, 0x0L), 4), 824121); - - // gentest-1765 - assertEqual(perft(new Board(0x44818918020000L, 0x200000080000L, 0x40000202L, 0x108000000802000L, 0x0L, 0x100000100000L, 0x40018108922202L, 0x10cb00850080000L, false, 0, 0x0L), 4), 995004); - - // gentest-1766 - assertEqual(perft(new Board(0x45808918020000L, 0x80000000080000L, 0x20aL, 0x108000000802000L, 0x0L, 0x100000100000L, 0x41008108922202L, 0x18c900810080008L, true, 0, 0x0L), 4), 912833); - - // gentest-1767 - assertEqual(perft(new Board(0x45808918020000L, 0x80000000000000L, 0x608L, 0x208000000802000L, 0x0L, 0x100000100000L, 0x41008108922600L, 0x28c900810000008L, false, 0, 0x0L), 4), 989857); - - // gentest-1768 - assertEqual(perft(new Board(0x1848918020000L, 0x4080000000000000L, 0x200600L, 0x208000000802000L, 0x0L, 0x100000100000L, 0x4001008108922600L, 0x288940810200000L, true, 0, 0x0L), 4), 946021); - - // gentest-1769 - assertEqual(perft(new Board(0x1848918020000L, 0x90000000000000L, 0x200600L, 0xa000080002000L, 0x0L, 0x100000100000L, 0x11008188122600L, 0x8a940810200000L, false, 0, 0x0L), 4), 688953); - - // gentest-1770 - assertEqual(perft(new Board(0x848918020000L, 0x10004000000000L, 0x200600L, 0x9000000802000L, 0x0L, 0x100000100000L, 0x10008108922600L, 0x9944810200000L, true, 0, 0x0L), 4), 510048); - - // gentest-1771 - assertEqual(perft(new Board(0x840918020000L, 0x4000004000000000L, 0x8000000600L, 0x900000000a000L, 0x0L, 0x100000100000L, 0x400000010812a600L, 0x994c810000000L, false, 0, 0x0L), 4), 610211); - - // gentest-1772 - assertEqual(perft(new Board(0x840918020000L, 0x4000004000000000L, 0x20000000000401L, 0x80100000000a000L, 0x0L, 0x100000100000L, 0x400000010812a401L, 0x821944810000000L, true, 0, 0x0L), 4), 545356); - - // gentest-1773 - assertEqual(perft(new Board(0x840918020000L, 0x4000004000000000L, 0x20000000000401L, 0x201000000009000L, 0x0L, 0x100020000000L, 0x4000000128029401L, 0x221944810000000L, false, 0, 0x0L), 4), 577067); - - // gentest-1774 - assertEqual(perft(new Board(0x840918020000L, 0x4000000000L, 0x20000000000401L, 0x208000000009000L, 0x0L, 0x200020000000L, 0x128029401L, 0x228a44810000000L, true, 0, 0x0L), 4), 580039); - - // gentest-1775 - assertEqual(perft(new Board(0x800d18020000L, 0x4000000000L, 0x20000200000001L, 0x208000000009000L, 0x0L, 0x200020000000L, 0x328029001L, 0x228a04c10000000L, false, 0, 0x0L), 4), 839657); - - // gentest-1776 - assertEqual(perft(new Board(0x800d18020000L, 0x4000000000L, 0x20000200000001L, 0xa00000000008200L, 0x0L, 0x40000020000000L, 0x328028201L, 0xa60804c10000000L, true, 0, 0x0L), 4), 970075); - - // gentest-1777 - assertEqual(perft(new Board(0x800d18020000L, 0x4000000000L, 0x20040000000001L, 0x20800000000c000L, 0x0L, 0x40000020000000L, 0x4012802c001L, 0x268804c10000000L, false, 0, 0x0L), 4), 921206); - - // gentest-1778 - assertEqual(perft(new Board(0x800d08120000L, 0x4000000000L, 0x20040000000001L, 0x208000080004000L, 0x0L, 0x200020000000L, 0x401a8024001L, 0x228a04c00100000L, true, 0, 0x0L), 4), 926743); - - // gentest-1779 - assertEqual(perft(new Board(0x800d08120000L, 0x4000000000L, 0x20040000040000L, 0x8008000080002000L, 0x0L, 0x200020000000L, 0x401a8062000L, 0x8028a04c00100000L, false, 0, 0x0L), 4), 856608); - - // gentest-1780 - assertEqual(perft(new Board(0x800d08120000L, 0x4000000000L, 0x20040002000000L, 0x8001000080002000L, 0x0L, 0x200020000000L, 0x401aa022000L, 0x8021a04c00100000L, true, 0, 0x0L), 4), 889851); - - // gentest-1781 - assertEqual(perft(new Board(0x800c08120000L, 0x4000000000L, 0x20040002000000L, 0x8000000100001080L, 0x0L, 0x200020000000L, 0x4002a021080L, 0x8020a04d00100000L, false, 0, 0x0L), 4), 1378356); - - // gentest-1782 - assertEqual(perft(new Board(0x800c08120000L, 0x200000L, 0x4000040000000010L, 0x8000000100001080L, 0x0L, 0x200020000000L, 0x40028021090L, 0xc000a00d00300000L, true, 0, 0x0L), 4), 846637); - - // gentest-1783 - assertEqual(perft(new Board(0x800c00120000L, 0x40L, 0x4000040000000010L, 0x8000000100001080L, 0x0L, 0x200040000000L, 0x40440021090L, 0xc000a00900100040L, false, 0, 0x0L), 4), 470795); - - // gentest-1784 - assertEqual(perft(new Board(0x800408120000L, 0x40L, 0x4000040080000000L, 0x8000000100001080L, 0x0L, 0x20000040000000L, 0x404c0021080L, 0xc020800108100040L, true, 0, 0x0L), 4), 446327); - - // gentest-1785 - assertEqual(perft(new Board(0x800408120000L, 0x1000L, 0x4000040080000000L, 0x8000000100800100L, 0x0L, 0x20000040000000L, 0x404c0820100L, 0xc020800108101000L, false, 0, 0x0L), 4), 509657); - - // gentest-1786 - assertEqual(perft(new Board(0x800408120000L, 0x20000000L, 0x4000040080000000L, 0x8000010200800000L, 0x0L, 0x20000040000000L, 0x504c0820000L, 0xc020800228100000L, true, 0, 0x0L), 4), 568291); - - // gentest-1787 - assertEqual(perft(new Board(0x8004001a0000L, 0x20000000L, 0x4000040000000010L, 0x8000000200800001L, 0x0L, 0x20000040000000L, 0x40440820011L, 0xc020800220180000L, false, 0, 0x0L), 4), 832707); - - // gentest-1788 - assertEqual(perft(new Board(0x8000001a0000L, 0x100000000000L, 0x4000040000040000L, 0x8000000400800001L, 0x0L, 0x20000040000000L, 0x40040860001L, 0xc020900400180000L, true, 0, 0x0L), 4), 1091664); - - // gentest-1789 - assertEqual(perft(new Board(0x8000001a0000L, 0x4000000000000L, 0xc000000000000080L, 0x400800001L, 0x0L, 0x20000040000000L, 0x8000000040820081L, 0x4024800400180000L, false, 0, 0x0L), 4), 767702); - - // gentest-1790 - assertEqual(perft(new Board(0x8000000a1000L, 0x4000000000000L, 0xc000000000200000L, 0x840001L, 0x0L, 0x20000040000000L, 0x8000000040a20001L, 0x40248000000c1000L, true, 0, 0x0L), 4), 789802); - - // gentest-1791 - assertEqual(perft(new Board(0x800000081000L, 0x4000000000000L, 0x4000240000000000L, 0x820001L, 0x0L, 0x20000040000000L, 0x240040800001L, 0x40248000000a1000L, false, 0, 0x0L), 4), 1230923); - - // gentest-1792 - assertEqual(perft(new Board(0x800000081000L, 0x4000000000000L, 0x80240000000000L, 0x200000000000081L, 0x0L, 0x20000040000000L, 0x240040000081L, 0x2a4800000081000L, true, 0, 0x0L), 4), 2132580); - - // gentest-1793 - assertEqual(perft(new Board(0x800000081000L, 0x4000000000000L, 0x80041000000000L, 0x200000000000009L, 0x0L, 0x10000040000000L, 0x41040000009L, 0x294800000081000L, false, 0, 0x0L), 4), 1736488); - - // gentest-1794 - assertEqual(perft(new Board(0x800000080000L, 0x10000000000L, 0x82001000000000L, 0x200000000000009L, 0x0L, 0x10000040000000L, 0x2001040000001L, 0x290810000080008L, true, 0, 0x0L), 4), 1004452); - - // gentest-1795 - assertEqual(perft(new Board(0x800000080000L, 0x10000000000L, 0x180000000040000L, 0x2000000000000009L, 0x0L, 0x10000040000000L, 0x100000040040001L, 0x2090810000080008L, false, 0, 0x0L), 4), 876272); - - // gentest-1796 - assertEqual(perft(new Board(0x80000L, 0x10000000000L, 0x180000000040000L, 0x4000000000000009L, 0x0L, 0x10008000000000L, 0x100008000040001L, 0x4090010000080008L, true, 0, 0x0L), 4), 758115); - - // gentest-1797 - assertEqual(perft(new Board(0x80000L, 0x10000000000L, 0x80000000200000L, 0x4000000000000009L, 0x0L, 0x208000000000L, 0x8000200001L, 0x4080210000080008L, false, 0, 0x0L), 4), 418415); - - // gentest-1798 - assertEqual(perft(new Board(0x800L, 0x10000000000L, 0x80000000200000L, 0x4000000000000009L, 0x0L, 0x40004000000000L, 0x4000200001L, 0x40c0010000000808L, true, 0, 0x0L), 4), 377649); - - // gentest-1799 - assertEqual(perft(new Board(0x800L, 0x10000000000L, 0x200400L, 0x4000000000000008L, 0x0L, 0x40000040000000L, 0x40200008L, 0x4040010000000c00L, false, 0, 0x0L), 4), 268630); - - // gentest-1800 - assertEqual(perft(new Board(0x800L, 0x10000000000L, 0x800000400L, 0x4000000000000008L, 0x0L, 0x80000040000000L, 0x840000008L, 0x4080010000000c00L, true, 0, 0x0L), 4), 88396); - - // gentest-1801 - assertEqual(perft(new Board(0x800L, 0x10000000000L, 0x2000000000002L, 0x4000000000000008L, 0x0L, 0x80000000800000L, 0x2000000800008L, 0x4080010000000802L, false, 0, 0x0L), 4), 265788); - - // gentest-1802 - assertEqual(perft(new Board(0x800L, 0x400000000L, 0x100000000000400L, 0x4000000000000008L, 0x0L, 0x80000000800000L, 0x100000000800008L, 0x4080000400000c00L, true, 0, 0x0L), 4), 358166); - - // gentest-1803 - assertEqual(perft(new Board(0x800L, 0x8000000000000L, 0x100000000000400L, 0x4200000000000000L, 0x0L, 0x80000000800000L, 0x300000000800000L, 0x4088000000000c00L, false, 0, 0x0L), 4), 420811); - - // gentest-1804 - assertEqual(perft(new Board(0x800L, 0x20000000000L, 0x4400L, 0x4200000000000000L, 0x0L, 0x800000800000L, 0x200000000804000L, 0x4000820000000c00L, true, 0, 0x0L), 4), 359830); - - // gentest-1805 - assertEqual(perft(new Board(0x800L, 0x20000000000L, 0x4002L, 0x4040000000000000L, 0x0L, 0x800000800000L, 0x40000000804000L, 0x4000820000000802L, false, 0, 0x0L), 4), 353522); - - // gentest-1806 - assertEqual(perft(new Board(0x0L, 0x1000000L, 0x4002L, 0x4020000000000000L, 0x8L, 0x800000800000L, 0x20000000804000L, 0x400080000100000aL, true, 0, 0x0L), 4), 761303); - - // gentest-1807 - assertEqual(perft(new Board(0x0L, 0x1000000L, 0x4002L, 0x4004000000000000L, 0x800000000L, 0x800080000000L, 0x4000080004000L, 0x4000800801000002L, false, 0, 0x0L), 4), 734321); - - // gentest-1808 - assertEqual(perft(new Board(0x0L, 0x1000000L, 0x4002L, 0x8000000000000004L, 0x2000000000000L, 0x800080000000L, 0x80004004L, 0x8002800001000002L, true, 0, 0x0L), 4), 738935); - - // gentest-1809 - assertEqual(perft(new Board(0x0L, 0x1000000L, 0x800002L, 0x8000000000000004L, 0x10000000L, 0x800000400000L, 0xc00004L, 0x8000800011000002L, false, 0, 0x0L), 4), 635736); - - // gentest-1810 - assertEqual(perft(new Board(0x0L, 0x1000000L, 0x420L, 0x80000000000004L, 0x10000000L, 0x800000400000L, 0x400024L, 0x80800011000400L, true, 0, 0x0L), 4), 411182); - - // gentest-1811 - assertEqual(perft(new Board(0x0L, 0x1000000L, 0x80002L, 0x80000004000000L, 0x10000000L, 0x800000400000L, 0x4480000L, 0x80800011000002L, false, 0, 0x0L), 4), 483640); - - // gentest-1812 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1813 - assertEqual(perft(new Board(0xdf00200002fd00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x6fdfdL, 0xffdf002000000000L, false, 0, 0x8100000000000081L), 4), 258319); - - // gentest-1814 - assertEqual(perft(new Board(0x9f40200102fc00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x20000000000010L, 0x106fcfdL, 0xefbf402000000000L, true, 0, 0x81L), 4), 400297); - - // gentest-1815 - assertEqual(perft(new Board(0x9740280308f400L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x20000000000010L, 0x30cf4fdL, 0xefb7402800000000L, false, 0, 0x81L), 4), 782053); - - // gentest-1816 - assertEqual(perft(new Board(0x93402c83087400L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x40000000000010L, 0x830c74fdL, 0xefd3402c00000000L, true, 0, 0x81L), 4), 798633); - - // gentest-1817 - assertEqual(perft(new Board(0x93402c83087400L, 0x4200000000040040L, 0x2400000020000020L, 0x8100000000000081L, 0x100000008L, 0x40000000000010L, 0xa30c74f9L, 0xe7d3402d00000000L, false, 0, 0x81L), 4), 989802); - - // gentest-1818 - assertEqual(perft(new Board(0x93402481087400L, 0x200800800000040L, 0x2400000020000020L, 0x8100000000000081L, 0x2000008L, 0x40000000000010L, 0x8a10874f9L, 0xa7d3c02402000000L, true, 0, 0x81L), 4), 163040); - - // gentest-1819 - assertEqual(perft(new Board(0x934024810c7000L, 0x200800800000040L, 0x2400000020000020L, 0x8100000000000081L, 0x20002L, 0x40000000000010L, 0x8a10c70f3L, 0xa7d3c02400020000L, false, 0, 0x81L), 4), 1334908); - - // gentest-1820 - assertEqual(perft(new Board(0x934024810c7000L, 0x840800000040L, 0x2400000020000020L, 0x8100000000000081L, 0x8L, 0x40000000000010L, 0x8a10c70f9L, 0xa5d3c42400000000L, true, 0, 0x81L), 4), 826627); - - // gentest-1821 - assertEqual(perft(new Board(0x835024810c7000L, 0x4840000000040L, 0x2400000020000020L, 0x8100000000000084L, 0x8L, 0x40000000000010L, 0x40000a10c70fcL, 0xa5c3d42400000000L, false, 0, 0x80L), 4), 675018); - - // gentest-1822 - assertEqual(perft(new Board(0x835020850c7000L, 0x4840000000040L, 0x2400000020000020L, 0x8100000000000082L, 0x8L, 0x200000000010L, 0x40000a10c70faL, 0xa583f42004000000L, true, 0, 0x80L), 4), 1173935); - - // gentest-1823 - assertEqual(perft(new Board(0x835020850c7000L, 0x840000100040L, 0x2400000020000020L, 0x8100000000000082L, 0x8L, 0x20000000000010L, 0xa11c70faL, 0xa5a3d42004000000L, false, 0, 0x80L), 4), 1188154); - - // gentest-1824 - assertEqual(perft(new Board(0x835020850c7000L, 0x200800000900000L, 0x2400000020000020L, 0x4100000000000082L, 0x8L, 0x20000000000010L, 0xa19c70baL, 0x67a3d02004000000L, true, 0, 0x80L), 4), 788779); - - // gentest-1825 - assertEqual(perft(new Board(0x831060c50c3000L, 0x200800000900000L, 0x2400000020000020L, 0x4100000000000081L, 0x8L, 0x20000000000010L, 0xe19c30b9L, 0x67a3906004000000L, false, 0, 0x80L), 4), 941568); - - // gentest-1826 - assertEqual(perft(new Board(0x831060c5043000L, 0x220000000900000L, 0x2400000020000020L, 0x4100000000000081L, 0x8L, 0x200000000010L, 0xe59430b9L, 0x67a3306000000000L, true, 0, 0x80L), 4), 1093528); - - // gentest-1827 - assertEqual(perft(new Board(0x831060c5043000L, 0x200001000900000L, 0x2400000020000020L, 0x4100000000000082L, 0x8000000L, 0x200000000010L, 0xed9430b2L, 0x6783307000000000L, false, 0, 0x80L), 4), 1229299); - - // gentest-1828 - assertEqual(perft(new Board(0x831020c5043000L, 0x200001000900000L, 0x2400000000008020L, 0x4100000000000082L, 0x8000000L, 0x400000000010L, 0x4d94b0b2L, 0x6783503080000000L, true, 0, 0x80L), 4), 1557019); - - // gentest-1829 - assertEqual(perft(new Board(0x831020e5041000L, 0x200005000100000L, 0x400800000008020L, 0x4100000000000082L, 0x8000000L, 0x400000000010L, 0x406d1490b2L, 0x4783d03080000000L, false, 0, 0x80L), 4), 1189135); - - // gentest-1830 - assertEqual(perft(new Board(0x831020e5041000L, 0x200005000100000L, 0x400800000008020L, 0x4100000000000082L, 0x8000000L, 0x400000000008L, 0x406d1490aaL, 0x4783d03080000000L, true, 0, 0x0L), 4), 1192987); - - // gentest-1831 - assertEqual(perft(new Board(0x821025e1041000L, 0x200001010100000L, 0x400800000008020L, 0x4100000000000082L, 0x8000000L, 0x400000000008L, 0x4791490aaL, 0x4782d03180000000L, false, 0, 0x0L), 4), 1406837); - - // gentest-1832 - assertEqual(perft(new Board(0x821005f1041000L, 0x200001000100000L, 0x400800000008020L, 0x900000000000082L, 0x8000000L, 0x400000000010L, 0x4691490b2L, 0xf82d01190000000L, true, 0, 0x0L), 4), 1150629); - - // gentest-1833 - assertEqual(perft(new Board(0x821005f1041000L, 0x200001000100000L, 0x400800000008020L, 0x2100000000000088L, 0x2000000L, 0x400000000010L, 0x4631490b8L, 0x2782d01190000000L, false, 0, 0x0L), 4), 1096086); - - // gentest-1834 - assertEqual(perft(new Board(0x801205f1041000L, 0x200001000004000L, 0x400800000008020L, 0x2100000000000088L, 0x2000000L, 0x20000000000010L, 0x46304d0b8L, 0x27a0921190000000L, true, 0, 0x0L), 4), 1059622); - - // gentest-1835 - assertEqual(perft(new Board(0x801205b1041000L, 0x200001000004000L, 0x400004000008020L, 0x2100000000000088L, 0x200L, 0x20000000000010L, 0x42104d2b8L, 0x27a0125190000000L, false, 0, 0x0L), 4), 1280402); - - // gentest-1836 - assertEqual(perft(new Board(0x801205b5001000L, 0x200001000004000L, 0x2004000008020L, 0x2100000000000088L, 0x200L, 0x4000000000000010L, 0x42500d2b8L, 0x6382125190000000L, true, 0, 0x0L), 4), 1619147); - - // gentest-1837 - assertEqual(perft(new Board(0x801205b5001000L, 0x200000000204000L, 0x2004000000060L, 0x2100000000000088L, 0x200L, 0x4000000000002000L, 0x4250072e8L, 0x6382124190200000L, false, 0, 0x0L), 4), 1659619); - - // gentest-1838 - assertEqual(perft(new Board(0x801205b5001000L, 0x200000000300000L, 0x2004000000060L, 0x20010000000088L, 0x200L, 0x4000000000002000L, 0x4251032e8L, 0x42a2134190200000L, true, 0, 0x0L), 4), 1902199); - - // gentest-1839 - assertEqual(perft(new Board(0x801601b5001000L, 0x200002000200000L, 0x2004000000060L, 0x10010000000088L, 0x200L, 0x4000000000002000L, 0x420250032e8L, 0x4292134190200000L, false, 0, 0x0L), 4), 1738773); - - // gentest-1840 - assertEqual(perft(new Board(0x801601b5001000L, 0x200002000200000L, 0x2200000000060L, 0x1000010000000090L, 0x200L, 0x4000000000002000L, 0x420250032f0L, 0x5282330190200000L, true, 0, 0x0L), 4), 1685283); - - // gentest-1841 - assertEqual(perft(new Board(0x801201b5001000L, 0x200002000200000L, 0x240000000060L, 0x1000010000000090L, 0x2000000000000000L, 0x4000000000002000L, 0x20000020250030f0L, 0x5280370190200000L, false, 0, 0x0L), 4), 38073); - - // gentest-1842 - assertEqual(perft(new Board(0x801201b5001000L, 0x200002000200000L, 0x40000000260L, 0x1000010000000084L, 0x0L, 0x2000000000002000L, 0x20250030e4L, 0x3280170190200200L, true, 0, 0x0L), 4), 748529); - - // gentest-1843 - assertEqual(perft(new Board(0x801201b5001000L, 0x200002000000040L, 0x40000004200L, 0x1000010000000088L, 0x0L, 0x2000000000002000L, 0x2025007088L, 0x3280170190000240L, false, 0, 0x0L), 4), 1029368); - - // gentest-1844 - assertEqual(perft(new Board(0x9201b5001000L, 0x200002000000040L, 0x40000004001L, 0x1000090000000080L, 0x0L, 0x2000000000002000L, 0x82025007080L, 0x3200970190000041L, true, 0, 0x0L), 4), 734280); - - // gentest-1845 - assertEqual(perft(new Board(0x9201b5001000L, 0x200002000000040L, 0x40000004001L, 0x1001000800000080L, 0x0L, 0x2000000000002000L, 0x2825007080L, 0x3201960190000041L, false, 0, 0x0L), 4), 1299413); - - // gentest-1846 - assertEqual(perft(new Board(0x8211b5001000L, 0x200002000000040L, 0x8000000004001L, 0x1001000800000080L, 0x0L, 0x2000000000000010L, 0x2825005090L, 0x3209821190000041L, true, 0, 0x0L), 4), 907124); - - // gentest-1847 - assertEqual(perft(new Board(0x8201b5001000L, 0x200000000400040L, 0x8000000004001L, 0x1001000800000080L, 0x0L, 0x2000000000000020L, 0x8054050a0L, 0x32098201b0000041L, false, 0, 0x0L), 4), 1116063); - - // gentest-1848 - assertEqual(perft(new Board(0x8201b4001000L, 0x200000000400040L, 0x1004001L, 0x401000800000080L, 0x0L, 0x2000000000002000L, 0x804407080L, 0x26018201b1000041L, true, 0, 0x0L), 4), 1516041); - - // gentest-1849 - assertEqual(perft(new Board(0x8201b4001000L, 0x200000000400040L, 0x1004001L, 0x480000000000090L, 0x0L, 0x2000000000002000L, 0x4407090L, 0x26808201b1000041L, false, 0, 0x0L), 4), 853896); - - // gentest-1850 - assertEqual(perft(new Board(0x8201b4001000L, 0x200000000400040L, 0x1004001L, 0x4020000000000a0L, 0x0L, 0x2000000000002000L, 0x44070a0L, 0x26028201b1000041L, true, 0, 0x0L), 4), 757102); - - // gentest-1851 - assertEqual(perft(new Board(0x8201a4100000L, 0x200000010000040L, 0x9004000L, 0x4020000000000a0L, 0x0L, 0x2000000000002000L, 0x141060a0L, 0x26028201a9000040L, false, 0, 0x0L), 4), 1005208); - - // gentest-1852 - assertEqual(perft(new Board(0x8201a4100000L, 0x200000000000840L, 0x9004000L, 0x4800000000000a0L, 0x0L, 0x4000000000002000L, 0x41068a0L, 0x46808201a9000040L, true, 0, 0x0L), 4), 1083347); - - // gentest-1853 - assertEqual(perft(new Board(0x8205a0100000L, 0x200000000000042L, 0x40008004000L, 0x4800000000000a0L, 0x0L, 0x4000000000002000L, 0x4001060a2L, 0x46808601a8000040L, false, 0, 0x0L), 4), 822792); - - // gentest-1854 - assertEqual(perft(new Board(0x820580300000L, 0x200000000000002L, 0x40008004000L, 0x2080000000000060L, 0x0L, 0x4000000000002000L, 0x400106062L, 0x6280860188200000L, true, 0, 0x0L), 4), 246300); - - // gentest-1855 - assertEqual(perft(new Board(0x820580300000L, 0x200000000000002L, 0x8000008000080L, 0x2080000000000048L, 0x0L, 0x4000000000002000L, 0x4001020caL, 0x6288820188200000L, false, 0, 0x0L), 4), 97145); - - // gentest-1856 - assertEqual(perft(new Board(0x820580300000L, 0x200000000000002L, 0x48000000000080L, 0x880080000000040L, 0x0L, 0x4000000000002000L, 0x804001020c2L, 0x4ac8820180200000L, true, 0, 0x0L), 4), 624577); - - // gentest-1857 - assertEqual(perft(new Board(0x820580300000L, 0x200000000010000L, 0x440000000000080L, 0x880200000000040L, 0x0L, 0x4000000000002000L, 0x2004001120c0L, 0x4ec0820180200000L, false, 0, 0x0L), 4), 675743); - - // gentest-1858 - assertEqual(perft(new Board(0x800580300000L, 0x200000000010000L, 0x48000000000080L, 0x880400000000040L, 0x0L, 0x4000000000002000L, 0x4000001120c0L, 0x4ac8800580200000L, true, 0, 0x0L), 4), 525798); - - // gentest-1859 - assertEqual(perft(new Board(0x800184300000L, 0x200000000000400L, 0x48000000000080L, 0x880400000000020L, 0x0L, 0x4000000000002000L, 0x4000001024a0L, 0x4ac8800184200000L, false, 0, 0x0L), 4), 476704); - - // gentest-1860 - assertEqual(perft(new Board(0x800184300000L, 0x200000000000400L, 0x40040000000080L, 0x8800004000000020L, 0x0L, 0x4000000000002000L, 0x40001024a0L, 0xca40840184200000L, true, 0, 0x0L), 4), 669506); - - // gentest-1861 - assertEqual(perft(new Board(0x800184300000L, 0x200000000000400L, 0x40000040080L, 0x8800000200000020L, 0x0L, 0x4000000000000040L, 0x2001004e0L, 0xca00840184240000L, false, 0, 0x0L), 4), 1015965); - - // gentest-1862 - assertEqual(perft(new Board(0x800184300000L, 0x200000000000010L, 0x100001000000080L, 0x8800000200000020L, 0x0L, 0x4000000000000040L, 0x2001000f0L, 0xcb00801184200000L, true, 0, 0x0L), 4), 586578); - - // gentest-1863 - assertEqual(perft(new Board(0x800184300000L, 0x8000000080000L, 0x100001000000080L, 0x8800000200002000L, 0x0L, 0x4000000000000040L, 0x2001820c0L, 0xc908801184200000L, false, 0, 0x0L), 4), 1088044); - - // gentest-1864 - assertEqual(perft(new Board(0x800085300000L, 0x8000002000000L, 0x100001000000080L, 0x8800000200002000L, 0x0L, 0x40000000000040L, 0x2021020c0L, 0x8948801085200000L, true, 0, 0x0L), 4), 951969); - - // gentest-1865 - assertEqual(perft(new Board(0x800085100000L, 0x8000002000000L, 0x100000000208000L, 0x8800000200002000L, 0x0L, 0x40000000000020L, 0x202302020L, 0x8948800085008000L, false, 0, 0x0L), 4), 1671493); - - // gentest-1866 - assertEqual(perft(new Board(0x800085100000L, 0x8000002000000L, 0x800208000L, 0x880000200000200L, 0x0L, 0x40000000000020L, 0x202300220L, 0x8c8800885008000L, true, 0, 0x0L), 4), 1486060); - - // gentest-1867 - assertEqual(perft(new Board(0x800085100000L, 0x2000000000000100L, 0x800208000L, 0x880000200000800L, 0x0L, 0x40000000000020L, 0x200300920L, 0x28c0800885008000L, false, 0, 0x0L), 4), 1538584); - - // gentest-1868 - assertEqual(perft(new Board(0x800085100000L, 0x2000000000000100L, 0x800600000L, 0x88000200000800L, 0x0L, 0x40000000001000L, 0x200301900L, 0x20c8800885400000L, true, 0, 0x0L), 4), 954383); - - // gentest-1869 - assertEqual(perft(new Board(0x8085100000L, 0x2000000000000004L, 0x600000L, 0x88000800000800L, 0x0L, 0x40000000001000L, 0x800301804L, 0x20c8008085400000L, false, 0, 0x0L), 4), 730339); - - // gentest-1870 - assertEqual(perft(new Board(0x8085100000L, 0x2000000000000004L, 0x200200L, 0x88000800000100L, 0x0L, 0x40000000001000L, 0x800301104L, 0x20c8008085000200L, true, 0, 0x0L), 4), 704887); - - // gentest-1871 - assertEqual(perft(new Board(0x8085100000L, 0x2000000000000004L, 0x200200L, 0x84000800000001L, 0x0L, 0x40000000002000L, 0x800302005L, 0x20c4008085000200L, false, 0, 0x0L), 4), 961060); - - // gentest-1872 - assertEqual(perft(new Board(0x8081180000L, 0x2000000000000000L, 0x200200L, 0x84000800000001L, 0x0L, 0x4000000000002000L, 0x800302001L, 0x6084008081080200L, true, 0, 0x0L), 4), 1234447); - - // gentest-1873 - assertEqual(perft(new Board(0x8081180000L, 0x2000000000000000L, 0x200200L, 0x480000200000001L, 0x0L, 0x4000000000002000L, 0x200302001L, 0x6480008081080200L, false, 0, 0x0L), 4), 1646132); - - // gentest-1874 - assertEqual(perft(new Board(0x8081180000L, 0x100000000000L, 0x200001L, 0x480000200000000L, 0x0L, 0x4000000000000040L, 0x200300040L, 0x4480108081080001L, true, 0, 0x0L), 4), 1245268); - - // gentest-1875 - assertEqual(perft(new Board(0x8081180000L, 0x4000000000L, 0x40000000001L, 0x480000200000000L, 0x0L, 0x4000000000000040L, 0x40200100040L, 0x448000c081080001L, false, 0, 0x0L), 4), 751905); - - // gentest-1876 - assertEqual(perft(new Board(0x8081180000L, 0x4000000000L, 0x40000000001L, 0x400800000000002L, 0x0L, 0x80000000000040L, 0x40000100042L, 0x48080c081080001L, true, 0, 0x0L), 4), 802392); - - // gentest-1877 - assertEqual(perft(new Board(0x8080180000L, 0x4000000000L, 0x200000001L, 0x400400000000002L, 0x0L, 0x80000000000040L, 0x200100042L, 0x48040c080080001L, false, 0, 0x0L), 4), 555002); - - // gentest-1878 - assertEqual(perft(new Board(0x8080180000L, 0x4000000000L, 0x40000000001L, 0x100000000002L, 0x0L, 0x80000000000040L, 0x40000100042L, 0x8010c080080001L, true, 0, 0x0L), 4), 512340); - - // gentest-1879 - assertEqual(perft(new Board(0x8080180000L, 0x4000000000L, 0x10000000001L, 0x2L, 0x0L, 0x80000000000040L, 0x10000100042L, 0x8000c080080001L, false, 0, 0x0L), 4), 152733); - - // gentest-1880 - assertEqual(perft(new Board(0x8080180000L, 0x100000000000L, 0x200000001L, 0x2L, 0x0L, 0x800000000040L, 0x200100042L, 0x908080080001L, true, 0, 0x0L), 4), 186714); - - // gentest-1881 - assertEqual(perft(new Board(0x8080100000L, 0x100000000000L, 0x80000L, 0x200L, 0x0L, 0x800000000040L, 0x180240L, 0x908080000000L, false, 0, 0x0L), 4), 84727); - - // gentest-1882 - assertEqual(perft(new Board(0x8080100000L, 0x20000000000000L, 0x2L, 0x200L, 0x0L, 0x800000000040L, 0x100242L, 0x20808080000000L, true, 0, 0x0L), 4), 46793); - - // gentest-1883 - assertEqual(perft(new Board(0x8080100000L, 0x4000000000L, 0x2L, 0x4000000000000L, 0x0L, 0x800000000040L, 0x4000000100042L, 0x80c080000000L, false, 0, 0x0L), 4), 25179); - - // gentest-1884 - assertEqual(perft(new Board(0x8080100000L, 0x800000L, 0x2L, 0x4000000000000L, 0x0L, 0x4000008000L, 0x4000000108002L, 0xc080800000L, true, 0, 0x0L), 4), 24735); - - // gentest-1885 - assertEqual(perft(new Board(0x8080100000L, 0x40L, 0x2L, 0x20000000L, 0x0L, 0x4000008000L, 0x20108002L, 0xc080000040L, false, 0, 0x0L), 4), 13085); - - // gentest-1886 - assertEqual(perft(new Board(0x8080100000L, 0x800000L, 0x2L, 0x2000L, 0x0L, 0x800000008000L, 0x10a002L, 0x808080800000L, true, 0, 0x0L), 4), 22492); - - // gentest-1887 - assertEqual(perft(new Board(0x8090000000L, 0x4000000000L, 0x2L, 0x400L, 0x0L, 0x800000008000L, 0x10008402L, 0x80c080000000L, false, 0, 0x0L), 4), 32215); - - // gentest-1888 - assertEqual(perft(new Board(0x8090000000L, 0x200000L, 0x2L, 0x400L, 0x0L, 0x80000000004000L, 0x10004402L, 0x80008080200000L, true, 0, 0x0L), 4), 43101); - - // gentest-1889 - assertEqual(perft(new Board(0x9080000000L, 0x200000L, 0x2L, 0x4000000000000L, 0x0L, 0x800000004000L, 0x4001000004002L, 0x808080200000L, false, 0, 0x0L), 4), 35954); - - // gentest-1890 - assertEqual(perft(new Board(0x108080000000L, 0x10000000L, 0x2L, 0x4000000000000L, 0x0L, 0x800000004000L, 0x4100000004002L, 0x808090000000L, true, 0, 0x0L), 4), 57264); - - // gentest-1891 - assertEqual(perft(new Board(0x108080000000L, 0x10000000L, 0x400L, 0x40000000000L, 0x0L, 0x80000000004000L, 0x140000004400L, 0x80008090000000L, false, 0, 0x0L), 4), 26840); - - // gentest-1892 - assertEqual(perft(new Board(0x108000008000L, 0x10000000L, 0x400L, 0x40000000000L, 0x0L, 0x80000000000040L, 0x140000000440L, 0x80008010008000L, true, 0, 0x0L), 4), 6391); - - // gentest-1893 - assertEqual(perft(new Board(0x108000000000L, 0x10000000L, 0x400L, 0x40000000000L, 0x80L, 0x80000000001000L, 0x140000001400L, 0x80008010000080L, false, 0, 0x0L), 4), 73706); - - // gentest-1894 - assertEqual(perft(new Board(0x100080000000L, 0x10000000L, 0x400L, 0x40000000000L, 0x200000L, 0x80000000000010L, 0x140000000410L, 0x80000090200000L, true, 0, 0x0L), 4), 127758); - - // gentest-1895 - assertEqual(perft(new Board(0x100080000000L, 0x10000000L, 0x8L, 0x80000000000L, 0x0L, 0x80000000000010L, 0x180000000018L, 0x80000090000000L, false, 0, 0x0L), 4), 69212); - - // gentest-1896 - assertEqual(perft(new Board(0x100080000000L, 0x1000000000000000L, 0x8000000000L, 0x0L, 0x0L, 0x80000000000010L, 0x108000000010L, 0x1080000080000000L, true, 0, 0x0L), 4), 14328); - - // gentest-1897 - assertEqual(perft(new Board(0x100080000000L, 0x1000000000000000L, 0x8L, 0x0L, 0x0L, 0x40000000002000L, 0x100000002008L, 0x1040000080000000L, false, 0, 0x0L), 4), 25314); - - // gentest-1898 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1899 - assertEqual(perft(new Board(0xbf00400010ef00L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x30efbfL, 0xffbf004000000000L, false, 0, 0x8100000000000081L), 4), 394621); - - // gentest-1900 - assertEqual(perft(new Board(0x3f00c00810e700L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x830e7bfL, 0xbf3f80c000000000L, true, 0, 0x8100000000000081L), 4), 554289); - - // gentest-1901 - assertEqual(perft(new Board(0x3f00c00910e600L, 0x200000040200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x930eeb7L, 0xbf3f00c040000000L, false, 0, 0x8100000000000081L), 4), 772961); - - // gentest-1902 - assertEqual(perft(new Board(0x1e21c00910e600L, 0x200000040200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000080000L, 0x1000000000000010L, 0x938e6b7L, 0xbf1e21c040000000L, true, 0, 0x8100000000000081L), 4), 861031); - - // gentest-1903 - assertEqual(perft(new Board(0x1e01e00d10e200L, 0x200000040000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000080000L, 0x1000000000000010L, 0xd18e2f7L, 0xbf1e01e040000000L, false, 0, 0x8100000000000081L), 4), 741199); - - // gentest-1904 - assertEqual(perft(new Board(0x1c03e00d10e200L, 0x200000040040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000080000L, 0x20000000000010L, 0xd1ce2f5L, 0xaf3c03e040000000L, true, 0, 0x81L), 4), 1177972); - - // gentest-1905 - assertEqual(perft(new Board(0x1c03e00d10e200L, 0x200000040000140L, 0x2400000000000024L, 0x8100000000000081L, 0x1000000000000002L, 0x20000000000010L, 0xd10e3f7L, 0xb73c03e040000000L, false, 0, 0x81L), 4), 672715); - - // gentest-1906 - assertEqual(perft(new Board(0x1c03e00d10e200L, 0x200000000080140L, 0x2400000000000024L, 0x8100000000000081L, 0x1000000000000400L, 0x20000000000010L, 0xd10e7f5L, 0xb73c03e000080000L, true, 0, 0x81L), 4), 135716); - - // gentest-1907 - assertEqual(perft(new Board(0x1c03e00d10e200L, 0x200000000000144L, 0x2400000000000020L, 0x8100000000000081L, 0x1000000000000002L, 0x20000000000008L, 0xd10e3ebL, 0xb73c03e000000004L, false, 0, 0x0L), 4), 731446); - - // gentest-1908 - assertEqual(perft(new Board(0x1c01e20d10e200L, 0x200000000000144L, 0x2400000000000020L, 0x8100000000000081L, 0x1000000000000002L, 0x4000000000000400L, 0xd10e7e3L, 0xf71c01e200000004L, true, 0, 0x0L), 4), 677806); - - // gentest-1909 - assertEqual(perft(new Board(0x1c01e00d10e200L, 0x200000020000104L, 0x2400000000000020L, 0x8100000000000081L, 0x1000000000000002L, 0x4000000000000400L, 0x2910e7a3L, 0xf71c01e004000004L, false, 0, 0x0L), 4), 681754); - - // gentest-1910 - assertEqual(perft(new Board(0x1801a44d10e200L, 0x200000020000100L, 0x2400000000000020L, 0x8100000000000081L, 0x1000000000000004L, 0x4000000000000400L, 0x2910e7a5L, 0xf71801a444000000L, true, 0, 0x0L), 4), 562837); - - // gentest-1911 - assertEqual(perft(new Board(0x1801a44d12e000L, 0x200000000001100L, 0x2002000000000020L, 0x8100000000000081L, 0x1000000000000004L, 0x4000000000000400L, 0x912f5a5L, 0xf31a01a444000000L, false, 0, 0x0L), 4), 772979); - - // gentest-1912 - assertEqual(perft(new Board(0x1801a40d52e000L, 0x200000000001100L, 0x2002000000000020L, 0x8100000000000081L, 0x800000000000008L, 0x4000000000000400L, 0x912f5a9L, 0xeb1a01a404400000L, true, 0, 0x0L), 4), 1024057); - - // gentest-1913 - assertEqual(perft(new Board(0x1801a40952e000L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, 0x800000000000008L, 0x4000000000000004L, 0x914f0adL, 0xeb1a01a400420000L, false, 0, 0x0L), 4), 886375); - - // gentest-1914 - assertEqual(perft(new Board(0x1801a40950e200L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, 0x4000000000010L, 0x4000000000000004L, 0x914f0b5L, 0xe31e01a400400200L, true, 0, 0x0L), 4), 228659); - - // gentest-1915 - assertEqual(perft(new Board(0x1801a409506200L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, 0x4000000000010L, 0x40000000000400L, 0x95474b1L, 0xa35e01a400000200L, false, 0, 0x0L), 4), 1816208); - - // gentest-1916 - assertEqual(perft(new Board(0x1009a409506200L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, 0x4000000000010L, 0x20000000020000L, 0x95670b1L, 0xa33609a400000200L, true, 0, 0x0L), 4), 1748763); - - // gentest-1917 - assertEqual(perft(new Board(0x1009a409506000L, 0x200000000001008L, 0x2002000000000020L, 0x8100000000000083L, 0x4000000000010L, 0x20000000000400L, 0x95074b9L, 0xa33609a400000002L, false, 0, 0x0L), 4), 1302119); - - // gentest-1918 - assertEqual(perft(new Board(0x1009a409506000L, 0x200000000001008L, 0x2002000000000020L, 0x8100000000008201L, 0x4000000000010L, 0x20000000000400L, 0x950f439L, 0xa33609a400000200L, true, 0, 0x0L), 4), 201430); - - // gentest-1919 - assertEqual(perft(new Board(0x1009a409506000L, 0x200000000001008L, 0x2002000000000020L, 0x8100000000008001L, 0x400000000000010L, 0x20000000000100L, 0x950f139L, 0xa73209a400000000L, false, 0, 0x0L), 4), 804716); - - // gentest-1920 - assertEqual(perft(new Board(0x10098429506000L, 0x200000000001008L, 0x2002000000000020L, 0x180000000000081L, 0x400000000000010L, 0x20000000000100L, 0x95071b9L, 0x27b2098420000000L, true, 0, 0x0L), 4), 1169937); - - // gentest-1921 - assertEqual(perft(new Board(0x10098409506000L, 0x8000020000008L, 0x2002000000000020L, 0x180000000000081L, 0x400000000000800L, 0x20000000000100L, 0x295069a9L, 0x25ba098400000000L, false, 0, 0x0L), 4), 1605409); - - // gentest-1922 - assertEqual(perft(new Board(0x10098508506000L, 0x8000020000008L, 0x2002000000000020L, 0x180000000000081L, 0x800000800L, 0x20000000000100L, 0x1285069a9L, 0x21ba098c00000000L, true, 0, 0x0L), 4), 200833); - - // gentest-1923 - assertEqual(perft(new Board(0x10098500506000L, 0x8000000800008L, 0x2002000000000020L, 0x180000000000081L, 0x8000800L, 0x20000000000002L, 0x100d068abL, 0x21ba098408000000L, false, 0, 0x0L), 4), 1870035); - - // gentest-1924 - assertEqual(perft(new Board(0x10098500506000L, 0x8000000800008L, 0x42000000000020L, 0x180000000000081L, 0x40010L, 0x20000000000002L, 0x100d060bbL, 0x1fa098400040000L, true, 0, 0x0L), 4), 1200408); - - // gentest-1925 - assertEqual(perft(new Board(0x10098540106000L, 0x8000000800008L, 0x42000000000020L, 0x180000000000081L, 0x10L, 0x20000000000400L, 0x1409064b9L, 0x1fa098400000000L, false, 0, 0x0L), 4), 1613253); - - // gentest-1926 - assertEqual(perft(new Board(0x100905c0106000L, 0x8000000800008L, 0x42000000000020L, 0x880000000000081L, 0x10L, 0x20000000000004L, 0x1409060bdL, 0x8fa090480000000L, true, 0, 0x0L), 4), 1191898); - - // gentest-1927 - assertEqual(perft(new Board(0x100905c0106000L, 0x8000000800008L, 0x40000210000000L, 0x880000001000080L, 0x10L, 0x20000000000004L, 0x34190609cL, 0x8f8090490000000L, false, 0, 0x0L), 4), 2059136); - - // gentest-1928 - assertEqual(perft(new Board(0x100905c0106000L, 0x8000000800008L, 0x210040000L, 0x800800001000080L, 0x40L, 0x20000000000004L, 0x3419060ccL, 0x838890490040000L, true, 0, 0x0L), 4), 1456218); - - // gentest-1929 - assertEqual(perft(new Board(0x100905c0106000L, 0x8000000800008L, 0x10040100L, 0x800100001000080L, 0x40L, 0x20000000000004L, 0x1419061ccL, 0x838190490040000L, false, 0, 0x0L), 4), 880096); - - // gentest-1930 - assertEqual(perft(new Board(0x100905c0106000L, 0x8000000800008L, 0x12000002L, 0x800400001000080L, 0x40L, 0x20000000000004L, 0x1419060ceL, 0x838490492000000L, true, 0, 0x0L), 4), 762827); - - // gentest-1931 - assertEqual(perft(new Board(0x100905c0304000L, 0x8000000800008L, 0x802000100L, 0x800400001000080L, 0x40L, 0x20000000000004L, 0x141b041ccL, 0x838490c82000000L, false, 0, 0x0L), 4), 770692); - - // gentest-1932 - assertEqual(perft(new Board(0x915c0304000L, 0x8000000800008L, 0x800000900L, 0x800400001000080L, 0x2000L, 0x20000000000004L, 0x141b0618cL, 0x828491c80000800L, true, 0, 0x0L), 4), 186164); - - // gentest-1933 - assertEqual(perft(new Board(0x91580304000L, 0x8000020000008L, 0x800000100L, 0x800000041000080L, 0x2000L, 0x20000000000800L, 0x121306988L, 0x828091cc0000000L, false, 0, 0x0L), 4), 1489768); - - // gentest-1934 - assertEqual(perft(new Board(0x91580304000L, 0x8000000800008L, 0x800000100L, 0x800000001400080L, 0x2000L, 0x20000000000800L, 0x101b06988L, 0x828091c80400000L, true, 0, 0x0L), 4), 1098748); - - // gentest-1935 - assertEqual(perft(new Board(0x91590204000L, 0x8000000800008L, 0x100000000100L, 0x800000001000080L, 0x400000L, 0x20000000000800L, 0x111e04988L, 0x828191480000000L, false, 0, 0x0L), 4), 676360); - - // gentest-1936 - assertEqual(perft(new Board(0x915b0004000L, 0x8000000800008L, 0x800000100L, 0x400000001000080L, 0x400000L, 0x20000000000800L, 0x131c04988L, 0x428091c80000000L, true, 0, 0x0L), 4), 965759); - - // gentest-1937 - assertEqual(perft(new Board(0x915b0004000L, 0x8000000800008L, 0x20100L, 0x400000002000080L, 0x400000L, 0x20000000080000L, 0x132c84188L, 0x428091480020000L, false, 0, 0x0L), 4), 799309); - - // gentest-1938 - assertEqual(perft(new Board(0x915b0004000L, 0x200000800008L, 0x20100L, 0x400000002000080L, 0x400000L, 0x1000000000040000L, 0x132c44188L, 0x1400291480020000L, true, 0, 0x0L), 4), 1000165); - - // gentest-1939 - assertEqual(perft(new Board(0x915b0004000L, 0x200000800008L, 0x20000000000100L, 0x400000001000080L, 0x200000L, 0x1000000000040000L, 0x131a44188L, 0x1420291480000000L, false, 0, 0x0L), 4), 810603); - - // gentest-1940 - assertEqual(perft(new Board(0x911b4004000L, 0x4000000000800008L, 0x20000000000100L, 0x400000001000040L, 0x200000L, 0x1000000000040000L, 0x131a44148L, 0x5420091084000000L, true, 0, 0x0L), 4), 383953); - - // gentest-1941 - assertEqual(perft(new Board(0x911b4004000L, 0x4000000000800008L, 0x20000000000100L, 0x400000002000040L, 0x1000L, 0x800000000040000L, 0x132845148L, 0x4c20091084000000L, false, 0, 0x0L), 4), 574544); - - // gentest-1942 - assertEqual(perft(new Board(0x91194004000L, 0x4000000000800008L, 0x20000000000100L, 0x1000002000040L, 0x1000L, 0x800000000040000L, 0x1112845148L, 0x4821090084000000L, true, 0, 0x0L), 4), 658945); - - // gentest-1943 - assertEqual(perft(new Board(0x91194004000L, 0x4000000000800008L, 0x20000000000100L, 0x1000200000040L, 0x10L, 0x8000000040000L, 0x1310844158L, 0x4029090084000000L, false, 0, 0x0L), 4), 544998); - - // gentest-1944 - assertEqual(perft(new Board(0x91194004000L, 0x4000000000800008L, 0x20000000000100L, 0x1000000000040L, 0x10L, 0x200000800L, 0x1110804958L, 0x4021090284000000L, true, 0, 0x0L), 4), 310186); - - // gentest-1945 - assertEqual(perft(new Board(0x91194004000L, 0x4000000000800008L, 0x20000000020000L, 0x100000000000040L, 0x2000L, 0x200000800L, 0x1110826848L, 0x4120090284000000L, false, 0, 0x0L), 4), 521133); - - // gentest-1946 - assertEqual(perft(new Board(0x11994004000L, 0x4000000000800008L, 0x20000000020000L, 0x100000000000040L, 0x0L, 0x400000800L, 0x1110824848L, 0x4120010c84000000L, true, 0, 0x0L), 4), 261972); - - // gentest-1947 - assertEqual(perft(new Board(0x11984004000L, 0x200000800008L, 0x20000000000400L, 0x100000000000040L, 0x0L, 0x400000800L, 0x1900804c48L, 0x120210484000000L, false, 0, 0x0L), 4), 469907); - - // gentest-1948 - assertEqual(perft(new Board(0x110984004000L, 0x200000800008L, 0x20000000000400L, 0x1000000000000040L, 0x0L, 0x400000800L, 0x100900804c48L, 0x1020210484000000L, true, 0, 0x0L), 4), 491554); - - // gentest-1949 - assertEqual(perft(new Board(0x110984004000L, 0x200000800008L, 0x20002000000000L, 0x400000000000040L, 0x0L, 0x400000004L, 0x10290080404cL, 0x420210484000000L, false, 0, 0x0L), 4), 493391); - - // gentest-1950 - assertEqual(perft(new Board(0x110980044000L, 0x200000800008L, 0xa000000000L, 0x400000000000040L, 0x0L, 0x400000002L, 0x10290080404aL, 0x400218480040000L, true, 0, 0x0L), 4), 472154); - - // gentest-1951 - assertEqual(perft(new Board(0x110980044000L, 0x200000800008L, 0x20000000080000L, 0x400000000000040L, 0x0L, 0x400000100L, 0x100900884148L, 0x420210480040000L, false, 0, 0x0L), 4), 581765); - - // gentest-1952 - assertEqual(perft(new Board(0x110980044000L, 0x200000800008L, 0x4000000000080000L, 0x40000000040L, 0x0L, 0x400010000L, 0x100900894048L, 0x4000250480040000L, true, 0, 0x0L), 4), 323150); - - // gentest-1953 - assertEqual(perft(new Board(0x150180044000L, 0x8000000800008L, 0x4000000000001000L, 0x40L, 0x0L, 0x400010000L, 0x140100815048L, 0x4008010480040000L, false, 0, 0x0L), 4), 137526); - - // gentest-1954 - assertEqual(perft(new Board(0x150180044000L, 0x204000000008L, 0x80000000001000L, 0x40L, 0x0L, 0x400010000L, 0x144100015048L, 0x80210480040000L, true, 0, 0x0L), 4), 267894); - - // gentest-1955 - assertEqual(perft(new Board(0x140180044000L, 0xc000000008L, 0x80010000000000L, 0x40L, 0x0L, 0x400010000L, 0x154100014048L, 0x80008480040000L, false, 0, 0x0L), 4), 208742); - - // gentest-1956 - assertEqual(perft(new Board(0x140180044000L, 0x204000000008L, 0x80000000000000L, 0x40L, 0x0L, 0x200010000L, 0x144100014048L, 0x80200280040000L, true, 0, 0x0L), 4), 154853); - - // gentest-1957 - assertEqual(perft(new Board(0x4100180044000L, 0x204000100000L, 0x80000000000000L, 0x40L, 0x0L, 0x400010000L, 0x4104100114040L, 0x80200480040000L, false, 0, 0x0L), 4), 325756); - - // gentest-1958 - assertEqual(perft(new Board(0x4100180004000L, 0x4000004000000400L, 0x80000000000000L, 0x40L, 0x0L, 0x400010000L, 0x4104100014440L, 0x4080000480000000L, true, 0, 0x0L), 4), 159456); - - // gentest-1959 - assertEqual(perft(new Board(0x100180004000L, 0x4400004000000400L, 0x80000L, 0x40L, 0x0L, 0x400020000L, 0x400104100024440L, 0x4000000480080000L, false, 0, 0x0L), 4), 213215); - - // gentest-1960 - assertEqual(perft(new Board(0x100100804000L, 0x4400004000100000L, 0x2000000000L, 0x40L, 0x0L, 0x400020000L, 0x400104100124040L, 0x4000002400800000L, true, 0, 0x0L), 4), 235246); - - // gentest-1961 - assertEqual(perft(new Board(0x100100804000L, 0x4400000810000000L, 0x80000000000000L, 0x40L, 0x0L, 0x400020000L, 0x400100910024040L, 0x4080000400800000L, false, 0, 0x0L), 4), 68395); - - // gentest-1962 - assertEqual(perft(new Board(0x100100804000L, 0x4400000000000000L, 0x10000000L, 0x10L, 0x0L, 0x800020000L, 0x400100100024010L, 0x4000000810800000L, true, 0, 0x0L), 4), 154030); - - // gentest-1963 - assertEqual(perft(new Board(0x100140800000L, 0x4400000000000000L, 0x4000L, 0x10L, 0x0L, 0x800020000L, 0x400100140020010L, 0x4000000800804000L, false, 0, 0x0L), 4), 81059); - - // gentest-1964 - assertEqual(perft(new Board(0x100140800000L, 0x4400000000000000L, 0x4000L, 0x10L, 0x0L, 0x800000200L, 0x400100140000210L, 0x4000000800804000L, true, 0, 0x0L), 4), 98365); - - // gentest-1965 - assertEqual(perft(new Board(0x100140800000L, 0x4400000000000000L, 0x4000L, 0x40L, 0x0L, 0x4000002L, 0x400100140000042L, 0x4000000004804000L, false, 0, 0x0L), 4), 112447); - - // gentest-1966 - assertEqual(perft(new Board(0x100140800000L, 0x4400000000000000L, 0x100000000000000L, 0x20L, 0x0L, 0x8000002L, 0x400100140000022L, 0x4100000008800000L, true, 0, 0x0L), 4), 153496); - - // gentest-1967 - assertEqual(perft(new Board(0x100140800000L, 0x4400000000000000L, 0x100000000000000L, 0x20000000L, 0x0L, 0x400000002L, 0x400100160000002L, 0x4100000400800000L, false, 0, 0x0L), 4), 101212); - - // gentest-1968 - assertEqual(perft(new Board(0x100140800000L, 0x4001000000000000L, 0x200000L, 0x20000000L, 0x0L, 0x80000000002L, 0x1100160000002L, 0x4000080000a00000L, true, 0, 0x0L), 4), 118872); - - // gentest-1969 - assertEqual(perft(new Board(0x100140800000L, 0x4001000000000000L, 0x1000L, 0x20000000000000L, 0x0L, 0x80000000002L, 0x21100140000002L, 0x4000080000801000L, false, 0, 0x0L), 4), 114917); - - // gentest-1970 - assertEqual(perft(new Board(0x100140800000L, 0x11000000000000L, 0x10000000000L, 0x80000000000000L, 0x0L, 0x80000000002L, 0x81100140000002L, 0x10090000800000L, true, 0, 0x0L), 4), 88510); - - // gentest-1971 - assertEqual(perft(new Board(0x100140800000L, 0x42000000000L, 0x10000000000L, 0x80000000000000L, 0x0L, 0x80000000001L, 0x80140140000001L, 0x92000800000L, false, 0, 0x0L), 4), 173692); - - // gentest-1972 - assertEqual(perft(new Board(0x100140800000L, 0x40008000000L, 0x80000L, 0x8000000000L, 0x0L, 0x80000000001L, 0x148140000001L, 0x80008880000L, true, 0, 0x0L), 4), 197730); - - // gentest-1973 - assertEqual(perft(new Board(0x100140800000L, 0x10000008000000L, 0x80000L, 0x0L, 0x0L, 0x800000001L, 0x10100140000001L, 0x808880000L, false, 0, 0x0L), 4), 13515); - - // gentest-1974 - assertEqual(perft(new Board(0x100140800000L, 0x4000002000000000L, 0x80000L, 0x0L, 0x0L, 0x10000001L, 0x4000100140000001L, 0x2010880000L, true, 0, 0x0L), 4), 33394); - - // gentest-1975 - assertEqual(perft(new Board(0x100140800000L, 0x4000000000400000L, 0x80000L, 0x0L, 0x0L, 0x10000001L, 0x4000100140000001L, 0x10c80000L, false, 0, 0x0L), 4), 29974); - - // gentest-1976 - assertEqual(perft(new Board(0x100140800000L, 0x4000002000000000L, 0x80000L, 0x0L, 0x0L, 0x800000100L, 0x4000100140000100L, 0x2800880000L, true, 0, 0x0L), 4), 51628); - - // gentest-1977 - assertEqual(perft(new Board(0x104100800000L, 0x4010000000000000L, 0x80000L, 0x0L, 0x0L, 0x800000200L, 0x4000104100000200L, 0x10000800880000L, false, 0, 0x0L), 4), 59710); - - // gentest-1978 - assertEqual(perft(new Board(0x104100800000L, 0x10002000000000L, 0x80000L, 0x0L, 0x0L, 0x10000200L, 0x10104100000200L, 0x2010880000L, true, 0, 0x0L), 4), 74224); - - // gentest-1979 - assertEqual(perft(new Board(0x104100800000L, 0x800800000000L, 0x80000L, 0x0L, 0x0L, 0x10010000L, 0x104900010000L, 0x800010880000L, false, 0, 0x0L), 4), 71175); - - // gentest-1980 - assertEqual(perft(new Board(0x500100800000L, 0x10000800000000L, 0x80000L, 0x0L, 0x0L, 0x10010000L, 0x500900010000L, 0x10000010880000L, true, 0, 0x0L), 4), 66613); - - // gentest-1981 - assertEqual(perft(new Board(0x500100800000L, 0x10000800000000L, 0x80000L, 0x0L, 0x0L, 0x240000L, 0x500900040000L, 0x10000000a80000L, false, 0, 0x0L), 4), 97759); - - // gentest-1982 - assertEqual(perft(new Board(0x500100800000L, 0x10000800000000L, 0x400L, 0x0L, 0x0L, 0x8200000L, 0x500908000000L, 0x10000000a00400L, true, 0, 0x0L), 4), 70760); - - // gentest-1983 - assertEqual(perft(new Board(0x500100800000L, 0x1010000000000000L, 0x400L, 0x0L, 0x0L, 0x8004000L, 0x1000500108000000L, 0x10000000804400L, false, 0, 0x0L), 4), 58748); - - // gentest-1984 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-1985 - assertEqual(perft(new Board(0xff00002400db00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2400dbffL, 0xbfff800000000000L, false, 0, 0x8100000000000081L), 4), 239086); - - // gentest-1986 - assertEqual(perft(new Board(0xf700082408d300L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2408d3ffL, 0xfff7000800000000L, true, 0, 0x8100000000000081L), 4), 615738); - - // gentest-1987 - assertEqual(perft(new Board(0xf5020824885300L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x248953fdL, 0xfff5020800000000L, false, 0, 0x8100000000000081L), 4), 586034); - - // gentest-1988 - assertEqual(perft(new Board(0xf4030824885300L, 0x4200000200000040L, 0x2000100000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2248853fdL, 0xfbf4130800000000L, true, 0, 0x8100000000000081L), 4), 573207); - - // gentest-1989 - assertEqual(perft(new Board(0xf4030864881300L, 0x4201000000000040L, 0x2000100000000024L, 0x8100000000000081L, 0x400000000000008L, 0x1000000000000010L, 0x10000648813fdL, 0xf7f4130800000000L, false, 0, 0x8100000000000081L), 4), 486705); - - // gentest-1990 - assertEqual(perft(new Board(0xf4030864881300L, 0x201800000000040L, 0x2000100000000024L, 0x8100000000000081L, 0x400000000020000L, 0x800000000000010L, 0x10000648a13f5L, 0xaff4930800000000L, true, 0, 0x81L), 4), 528517); - - // gentest-1991 - assertEqual(perft(new Board(0xf4030864881300L, 0x201800000200000L, 0x2000100000000024L, 0x8100000000000081L, 0x2000000010000L, 0x800000000000010L, 0x1000064a913b5L, 0xabf6930800000000L, false, 0, 0x81L), 4), 920485); - - // gentest-1992 - assertEqual(perft(new Board(0xd4032824881300L, 0x201800000200000L, 0x2000100000000024L, 0x8100000000000081L, 0x2000000010000L, 0x8000000000010L, 0x1002024a913b5L, 0xa3de930800000000L, true, 0, 0x81L), 4), 675114); - - // gentest-1993 - assertEqual(perft(new Board(0xd402282c801300L, 0x201800000200000L, 0x2000100000000024L, 0x8100000000000081L, 0x400010000000000L, 0x8000000000010L, 0x101202ca013b5L, 0xa7dc920800000000L, false, 0, 0x81L), 4), 675207); - - // gentest-1994 - assertEqual(perft(new Board(0xd402282c801300L, 0x201000040000800L, 0x2000100000000024L, 0x8100000000000081L, 0x1000010000000000L, 0x8000000000010L, 0x101202c801bb5L, 0xb3dc120840000000L, true, 0, 0x81L), 4), 636665); - - // gentest-1995 - assertEqual(perft(new Board(0xd402202c900300L, 0x201000040000800L, 0x2000100000000024L, 0x8100000000000041L, 0x1000010000000000L, 0x8000000000010L, 0x1012028900b75L, 0xb3dc120044000000L, false, 0, 0x1L), 4), 1119593); - - // gentest-1996 - assertEqual(perft(new Board(0xd402202c900300L, 0x201001000000800L, 0x2000000800001004L, 0x8100000000000041L, 0x1000010000000000L, 0x8000000000010L, 0x1012028901b55L, 0xb3dc021804000000L, true, 0, 0x1L), 4), 1916981); - - // gentest-1997 - assertEqual(perft(new Board(0xd402202c900300L, 0x201000000000800L, 0x2000000800080004L, 0x8100000000000081L, 0x1000010000000000L, 0x8000000000010L, 0x1012028980b95L, 0xb3dc020804000000L, false, 0, 0x1L), 4), 1276238); - - // gentest-1998 - assertEqual(perft(new Board(0x5402a02c900300L, 0x201000000000800L, 0x2020000000080004L, 0x8100000000000082L, 0x1000010000000000L, 0x8000000000010L, 0x1012028980b96L, 0xb37c028004000000L, true, 0, 0x0L), 4), 740911); - - // gentest-1999 - assertEqual(perft(new Board(0x5402a03c800300L, 0x201000000000800L, 0x2020000000080004L, 0x4100000000000022L, 0x1000010000000000L, 0x8000000000010L, 0x1012038880b36L, 0x737c028004000000L, false, 0, 0x0L), 4), 514359); - - // gentest-2000 - assertEqual(perft(new Board(0x4412a038840300L, 0x201000000200000L, 0x2020000000080004L, 0x4100000000000022L, 0x1000010000000000L, 0x8000000000010L, 0x1012038a80336L, 0x736c128000040000L, true, 0, 0x0L), 4), 896892); - } - - public static void batch5() { - // gentest-2001 - assertEqual(perft(new Board(0x412e038840300L, 0x201000000200000L, 0x2020000001000004L, 0x4100000000000022L, 0x1000010000000000L, 0x8000000000010L, 0x1012039a00336L, 0x732c12c000040000L, false, 0, 0x0L), 4), 275475); - - // gentest-2002 - assertEqual(perft(new Board(0x16e038840300L, 0x201000000008000L, 0x2020000001000004L, 0x140000000000022L, 0x1000010000000000L, 0x8000000000010L, 0x1012039808336L, 0x336816c000040000L, true, 0, 0x0L), 4), 967481); - - // gentest-2003 - assertEqual(perft(new Board(0x16e038840300L, 0x201000000008000L, 0x2020000000000404L, 0x180000000000022L, 0x1000010000000000L, 0x8000000001000L, 0x1012038809726L, 0x33a816c000040000L, false, 0, 0x0L), 4), 1516657); - - // gentest-2004 - assertEqual(perft(new Board(0x16e038840300L, 0x201000000008000L, 0x2020000000000404L, 0x180000000000022L, 0x1002000000000000L, 0x800000000001000L, 0x3002038809726L, 0x3ba016c000040000L, true, 0, 0x0L), 4), 1064359); - - // gentest-2005 - assertEqual(perft(new Board(0x16e038840300L, 0x201000000200000L, 0x202000000000000cL, 0x180000000000022L, 0xa000000000000L, 0x800000000001000L, 0x3002038a0132eL, 0x2ba816c000040000L, false, 0, 0x0L), 4), 1830664); - - // gentest-2006 - assertEqual(perft(new Board(0x16e038810600L, 0x201000000200000L, 0x600000000000000cL, 0x180000000000022L, 0xa000000000000L, 0x800000000001000L, 0x3002038a1122eL, 0x6b8816c000000400L, true, 0, 0x0L), 4), 1952238); - - // gentest-2007 - assertEqual(perft(new Board(0x12c038810600L, 0x201000000200000L, 0x600000000000000cL, 0x140000000000022L, 0x8040000000000L, 0x800000000001000L, 0x1140038a1122eL, 0x6b4802c000000400L, false, 0, 0x0L), 4), 2573261); - - // gentest-2008 - assertEqual(perft(new Board(0x2c038810600L, 0x600000000200000L, 0x400000000200000cL, 0x140000000000022L, 0x140000000000L, 0x800000000001000L, 0x400040038a1122eL, 0x4b4012c002000400L, true, 0, 0x0L), 4), 4398943); - - // gentest-2009 - assertEqual(perft(new Board(0x2c038810600L, 0x408000000200000L, 0x4000000002100008L, 0x140000000000022L, 0x100001000000L, 0x800000000001000L, 0x400000039b1122aL, 0x494812c002000400L, false, 0, 0x0L), 4), 5070327); - - // gentest-2010 - assertEqual(perft(new Board(0x2c038810200L, 0x600000000200000L, 0x400000000210000aL, 0x140000000000020L, 0x100001000000L, 0x800000000002000L, 0x400000039b12228L, 0x4b4012c002000002L, true, 0, 0x0L), 4), 4186042); - - // gentest-2011 - assertEqual(perft(new Board(0x2c038810200L, 0x600000000200000L, 0x8000000210000aL, 0x140000000000080L, 0x100001000000L, 0x800000000004000L, 0x400000039b14288L, 0xbc012c002000002L, false, 0, 0x0L), 4), 5113041); - - // gentest-2012 - assertEqual(perft(new Board(0x2c038810200L, 0x600000000200000L, 0x90000000002108L, 0x140000000000080L, 0x100001000000L, 0x800000000004000L, 0x400000039a16288L, 0xbd012c000000100L, true, 0, 0x0L), 4), 3753578); - - // gentest-2013 - assertEqual(perft(new Board(0x2c078010200L, 0x600000000200000L, 0x90000000100108L, 0x140000000000080L, 0x1000000L, 0x800000000004000L, 0x400000079314288L, 0xbd002c000000100L, false, 0, 0x0L), 4), 2500779); - - // gentest-2014 - assertEqual(perft(new Board(0x2c078030000L, 0x600000000200000L, 0x80000002100108L, 0x140000000000080L, 0x1000000L, 0x4000000004000L, 0x400000079334088L, 0x3c402c002000100L, true, 0, 0x0L), 4), 1860461); - - // gentest-2015 - assertEqual(perft(new Board(0x240f8030000L, 0x600000000200000L, 0x80000002100108L, 0x140000000000080L, 0x200000000L, 0x4000000008000L, 0x400000278338088L, 0x3c4024082000100L, false, 0, 0x0L), 4), 1799741); - - // gentest-2016 - assertEqual(perft(new Board(0x240f8030000L, 0x600000000200000L, 0x80000002100108L, 0x110000000000080L, 0x2000000000L, 0x800000000008000L, 0x400002078338088L, 0xb90024082000100L, true, 0, 0x0L), 4), 1544295); - - // gentest-2017 - assertEqual(perft(new Board(0x200f8030000L, 0x600004000000000L, 0x80000002100108L, 0x120000000000080L, 0x800000000L, 0x800000000008000L, 0x400004878138088L, 0xba0020082000100L, false, 0, 0x0L), 4), 255304); - - // gentest-2018 - assertEqual(perft(new Board(0x200f8030000L, 0x220000000000000L, 0x80000000100118L, 0x100000000000080L, 0x800000000L, 0x400000000008000L, 0x20000878138088L, 0x780020080000110L, true, 0, 0x0L), 4), 515573); - - // gentest-2019 - assertEqual(perft(new Board(0x200f8030000L, 0x220000000000000L, 0x80000000002118L, 0x1000000000080L, 0x4000000000L, 0x400000000008000L, 0x2000407803a088L, 0x681020080000110L, false, 0, 0x0L), 4), 1026348); - - // gentest-2020 - assertEqual(perft(new Board(0x200f8030000L, 0x810000000000L, 0x80000000002118L, 0x1000000000080L, 0x4000000000L, 0x4000000008000L, 0x80407803a088L, 0x85030080000110L, true, 0, 0x0L), 4), 591438); - - // gentest-2021 - assertEqual(perft(new Board(0x200f9020000L, 0x810000000000L, 0x4000000000002108L, 0x1000000000010L, 0x4000000000L, 0x4000000008000L, 0x80407902a018L, 0x4005030080000100L, false, 0, 0x0L), 4), 601367); - - // gentest-2022 - assertEqual(perft(new Board(0x20079820000L, 0x810000000000L, 0x4000000000002108L, 0x1000000000010L, 0x40000000000000L, 0x80000008000L, 0x4080007902a018L, 0x40010b0000800100L, true, 0, 0x0L), 4), 444961); - - // gentest-2023 - assertEqual(perft(new Board(0x21069020000L, 0x810000000000L, 0x4000000000002108L, 0x4000000000010L, 0x40000000000000L, 0x80000800000L, 0x40801069822018L, 0x40040b0000000100L, false, 0, 0x0L), 4), 73503); - - // gentest-2024 - assertEqual(perft(new Board(0x21069020000L, 0x810000000000L, 0x4000000000002108L, 0x4000000000010L, 0x0L, 0x10000000800000L, 0x801069822018L, 0x4014030000000100L, true, 0, 0x0L), 4), 417263); - - // gentest-2025 - assertEqual(perft(new Board(0x21069020000L, 0x810000000000L, 0x4000000000400108L, 0x2000000000020L, 0x0L, 0x10000000800000L, 0x801069c20028L, 0x4012030000000100L, false, 0, 0x0L), 4), 284891); - - // gentest-2026 - assertEqual(perft(new Board(0x21069000000L, 0x810000000000L, 0x20000000420400L, 0x2000000000020L, 0x0L, 0x10000000800000L, 0x801069c00420L, 0x32030000020000L, true, 0, 0x0L), 4), 597568); - - // gentest-2027 - assertEqual(perft(new Board(0x23049000000L, 0x810000000000L, 0x20000000420400L, 0x1000000200000L, 0x0L, 0x10000000800000L, 0x803049e00400L, 0x31030000020000L, false, 0, 0x0L), 4), 470287); - - // gentest-2028 - assertEqual(perft(new Board(0x23049000000L, 0x810000000000L, 0x20000000400500L, 0x1000000002000L, 0x0L, 0x10000000800000L, 0x803049c02400L, 0x31030000000100L, true, 0, 0x0L), 4), 358904); - - // gentest-2029 - assertEqual(perft(new Board(0x23148000000L, 0x810000000000L, 0x20000000400500L, 0x1000000000020L, 0x0L, 0x2000000000800000L, 0x803148c00420L, 0x2021030000000100L, false, 0, 0x0L), 4), 687865); - - // gentest-2030 - assertEqual(perft(new Board(0x23940000000L, 0x810000000000L, 0x4000000000400500L, 0x1000000000020L, 0x0L, 0x10000000800000L, 0x803940c00420L, 0x4011030000000100L, true, 0, 0x0L), 4), 386150); - - // gentest-2031 - assertEqual(perft(new Board(0x23940000000L, 0x810000000000L, 0x4000000000400500L, 0x8000000000080L, 0x0L, 0x10000000800000L, 0x803940c00480L, 0x4018030000000100L, false, 0, 0x0L), 4), 413438); - - // gentest-2032 - assertEqual(perft(new Board(0x23940000000L, 0x800002000000L, 0x4000000000400500L, 0x2000000000040L, 0x0L, 0x10000000800000L, 0x803940c00440L, 0x4012020002000100L, true, 0, 0x0L), 4), 391718); - - // gentest-2033 - assertEqual(perft(new Board(0x23940000000L, 0x800002000000L, 0x4000000001400002L, 0x2000000000020L, 0x0L, 0x10000000800000L, 0x803941c00020L, 0x4012020002000002L, false, 0, 0x0L), 4), 482185); - - // gentest-2034 - assertEqual(perft(new Board(0x23140000000L, 0x800800000000L, 0x4008000010400000L, 0x2000000000020L, 0x0L, 0x10000000800000L, 0x8803140c00020L, 0x4012020810000000L, true, 0, 0x0L), 4), 454097); - - // gentest-2035 - assertEqual(perft(new Board(0x23140000000L, 0x800000100000L, 0x4008000010000010L, 0x2000000000020L, 0x0L, 0x10000080000000L, 0x88031c0000030L, 0x4012020010100000L, false, 0, 0x0L), 4), 610325); - - // gentest-2036 - assertEqual(perft(new Board(0x122140000000L, 0x800000000400L, 0x4008000000004010L, 0x2000000000020L, 0x0L, 0x10000080000000L, 0x89021c0000030L, 0x4012020000004400L, true, 0, 0x0L), 4), 329426); - - // gentest-2037 - assertEqual(perft(new Board(0x122140000000L, 0x800000000400L, 0x4008000000800010L, 0x2000000000040L, 0x0L, 0x10008000000000L, 0x890a140000050L, 0x4012020000800400L, false, 0, 0x0L), 4), 227321); - - // gentest-2038 - assertEqual(perft(new Board(0x122140000000L, 0x800000010000L, 0x4008000000000030L, 0x2000000400000L, 0x0L, 0x10008000000000L, 0x890a140400010L, 0x4012020000010020L, true, 0, 0x0L), 4), 331186); - - // gentest-2039 - assertEqual(perft(new Board(0x122140000000L, 0x800000010000L, 0x4000040000000030L, 0x4000000000040L, 0x0L, 0x10008000000000L, 0x94a140000050L, 0x4014020000010020L, false, 0, 0x0L), 4), 460687); - - // gentest-2040 - assertEqual(perft(new Board(0x122140000000L, 0x800000010000L, 0x80040000004010L, 0x4000000000080L, 0x0L, 0x10008000000000L, 0x94a140000090L, 0x94020000014000L, true, 0, 0x0L), 4), 461486); - - // gentest-2041 - assertEqual(perft(new Board(0x122140000000L, 0x800000010000L, 0x82000000004010L, 0x80000400L, 0x0L, 0x10008000000000L, 0x290a1c0000010L, 0x90020000014400L, false, 0, 0x0L), 4), 460079); - - // gentest-2042 - assertEqual(perft(new Board(0x102340000000L, 0x800000010000L, 0x80040000004010L, 0x80000200L, 0x0L, 0x10008000000000L, 0x94a1c0000010L, 0x90000200014200L, true, 0, 0x0L), 4), 286212); - - // gentest-2043 - assertEqual(perft(new Board(0x102340000000L, 0x800000010000L, 0x80040002004000L, 0x8200L, 0x0L, 0x208000000000L, 0x94a142008000L, 0x80200200014200L, false, 0, 0x0L), 4), 337897); - - // gentest-2044 - assertEqual(perft(new Board(0x102340000000L, 0x800000010000L, 0x80040012000000L, 0x80008000L, 0x0L, 0x208000000000L, 0x94a1c2000000L, 0x80200210018000L, true, 0, 0x0L), 4), 221246); - - // gentest-2045 - assertEqual(perft(new Board(0x102340000000L, 0x4000000000010000L, 0x40012000000L, 0x8000L, 0x0L, 0x208000000000L, 0x400014a142008000L, 0x200210010000L, false, 0, 0x0L), 4), 32722); - - // gentest-2046 - assertEqual(perft(new Board(0x110240000000L, 0x4000000000010000L, 0x42002000000L, 0x8000L, 0x0L, 0x40008000000000L, 0x4000158042008000L, 0x40002200010000L, true, 0, 0x0L), 4), 222463); - - // gentest-2047 - assertEqual(perft(new Board(0x112200000000L, 0x4000000000000002L, 0x12000000L, 0x8000L, 0x0L, 0x40008000000000L, 0x400011a012008000L, 0x40000200000002L, false, 0, 0x0L), 4), 52174); - - // gentest-2048 - assertEqual(perft(new Board(0x112200000000L, 0x10000L, 0x12000000L, 0x800000L, 0x0L, 0x4000008000000000L, 0x11a012800000L, 0x4000000200010000L, true, 0, 0x0L), 4), 53603); - - // gentest-2049 - assertEqual(perft(new Board(0x112200000000L, 0x4000000L, 0x80010000000L, 0x400000L, 0x0L, 0x4000008000000000L, 0x19a010400000L, 0x4000000204000000L, false, 0, 0x0L), 4), 28998); - - // gentest-2050 - assertEqual(perft(new Board(0x112200000000L, 0x200L, 0x80000000080L, 0x400000L, 0x0L, 0x80008000000000L, 0x19a000400080L, 0x80000200000200L, true, 0, 0x0L), 4), 62510); - - // gentest-2051 - assertEqual(perft(new Board(0x112200000000L, 0x200L, 0x1000080000000000L, 0x400000L, 0x0L, 0x8000008000000000L, 0x100019a000400000L, 0x8000000200000200L, false, 0, 0x0L), 4), 51134); - - // gentest-2052 - assertEqual(perft(new Board(0x112200000000L, 0x400000000L, 0x1000080000000000L, 0x400000000000L, 0x0L, 0x8000008000000000L, 0x100059a000000000L, 0x8000000600000000L, true, 0, 0x0L), 4), 60000); - - // gentest-2053 - assertEqual(perft(new Board(0x102200000000L, 0x10000000000L, 0x1000080000000000L, 0x400000000000L, 0x0L, 0x8000008000000000L, 0x100058a000000000L, 0x8000010200000000L, false, 0, 0x0L), 4), 30524); - - // gentest-2054 - assertEqual(perft(new Board(0x102200000000L, 0x20000L, 0x1000000000008000L, 0x400000000000L, 0x0L, 0x8000008000000000L, 0x100050a000008000L, 0x8000000200020000L, true, 0, 0x0L), 4), 35260); - - // gentest-2055 - assertEqual(perft(new Board(0x102200000000L, 0x4L, 0x1000001000000000L, 0x400000000000L, 0x0L, 0x8000008000000000L, 0x100050b000000000L, 0x8000000200000004L, false, 0, 0x0L), 4), 4690); - - // gentest-2056 - assertEqual(perft(new Board(0x102200000000L, 0x4L, 0x1000001000000000L, 0x200000000000L, 0x0L, 0x4000008000000000L, 0x100030b000000000L, 0x4000000200000004L, true, 0, 0x0L), 4), 31710); - - // gentest-2057 - assertEqual(perft(new Board(0x102200000000L, 0x4L, 0x24000000000000L, 0x200000000000L, 0x0L, 0x80008000000000L, 0x2430a000000000L, 0x80000200000004L, false, 0, 0x0L), 4), 18017); - - // gentest-2058 - assertEqual(perft(new Board(0x102002000000L, 0x4L, 0x24000000000000L, 0x800000000000L, 0x0L, 0x40008000000000L, 0x2490a000000000L, 0x40000002000004L, true, 0, 0x0L), 4), 17067); - - // gentest-2059 - assertEqual(perft(new Board(0x102002000000L, 0x4L, 0x20080000000000L, 0x800000000000L, 0x0L, 0x2000000080000000L, 0x20982080000000L, 0x2000000002000004L, false, 0, 0x0L), 4), 3549); - - // gentest-2060 - assertEqual(perft(new Board(0x102002000000L, 0x80000L, 0x20080000000000L, 0x800000000000L, 0x0L, 0x40008000000000L, 0x2098a000000000L, 0x40000002080000L, true, 0, 0x0L), 4), 23407); - - // gentest-2061 - assertEqual(perft(new Board(0x102002000000L, 0x400000000L, 0x220000000000000L, 0x800000000000L, 0x0L, 0x40004000000000L, 0x220906000000000L, 0x40000402000000L, false, 0, 0x0L), 4), 38608); - - // gentest-2062 - assertEqual(perft(new Board(0x102002000000L, 0x4L, 0x20000020000000L, 0x800000000000L, 0x0L, 0x40004000000000L, 0x20906020000000L, 0x40000002000004L, true, 0, 0x0L), 4), 25013); - - // gentest-2063 - assertEqual(perft(new Board(0x10002002000000L, 0x4L, 0x20000020000000L, 0x800000000000L, 0x0L, 0x2000000080000000L, 0x308020a0000000L, 0x2000000002000004L, false, 0, 0x0L), 4), 24181); - - // gentest-2064 - assertEqual(perft(new Board(0x2002000000L, 0x80000L, 0x100020000000L, 0x800000000000L, 0x0L, 0x10000080000000L, 0x9020a0000000L, 0x10000002080000L, true, 0, 0x0L), 4), 84142); - - // gentest-2065 - assertEqual(perft(new Board(0x2002000000L, 0x1000000000L, 0x100020000000L, 0x800000000000L, 0x0L, 0x10008000000000L, 0x90a020000000L, 0x10001002000000L, false, 0, 0x0L), 4), 80659); - - // gentest-2066 - assertEqual(perft(new Board(0x2000020000L, 0x40000000000L, 0x100000000004L, 0x800000000000L, 0x0L, 0x10008000000000L, 0x90a000000004L, 0x10040000020000L, true, 0, 0x0L), 4), 56313); - - // gentest-2067 - assertEqual(perft(new Board(0x2000020000L, 0x1000000000000L, 0x20000000100000L, 0x800000000000L, 0x0L, 0x10008000000000L, 0x2080a000100000L, 0x11000000020000L, false, 0, 0x0L), 4), 59955); - - // gentest-2068 - assertEqual(perft(new Board(0x2000020000L, 0x1000000000L, 0x20000000100000L, 0x800000000000L, 0x0L, 0x10000080000000L, 0x20802080100000L, 0x10001000020000L, true, 0, 0x0L), 4), 120796); - - // gentest-2069 - assertEqual(perft(new Board(0x2000000200L, 0x1000000000L, 0x4001000000000000L, 0x800000000000L, 0x0L, 0x10000080000000L, 0x4001802080000000L, 0x10001000000200L, false, 0, 0x0L), 4), 169786); - - // gentest-2070 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2071 - assertEqual(perft(new Board(0xff00002000df00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x2000ffefL, 0xbfff800000000000L, false, 0, 0x8100000000000000L), 4), 245210); - - // gentest-2072 - assertEqual(perft(new Board(0xaf50002000df00L, 0x200800000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x2080ffafL, 0xbfafd00000000000L, true, 0, 0x8100000000000000L), 4), 482203); - - // gentest-2073 - assertEqual(perft(new Board(0xaf500062009d00L, 0x200800000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x10000000000008L, 0x1000000000002000L, 0x6280bdafL, 0xb7bfd00000000000L, false, 0, 0x8100000000000000L), 4), 466232); - - // gentest-2074 - assertEqual(perft(new Board(0xa7580062009d00L, 0x200800000800002L, 0x2400000000010020L, 0x4100000000000081L, 0x10000000000008L, 0x1000000000002000L, 0x6281bdabL, 0x77b7d80000000000L, true, 0, 0x100000000000000L), 4), 440761); - - // gentest-2075 - assertEqual(perft(new Board(0xa758204a009500L, 0x8800000800002L, 0x2400000000010020L, 0x4100000000000081L, 0x10000000000008L, 0x1000000000002000L, 0x204a81b5abL, 0x75bfd80000000000L, false, 0, 0x100000000000000L), 4), 608308); - - // gentest-2076 - assertEqual(perft(new Board(0xa758004a009500L, 0x48000000800002L, 0x2400000000010020L, 0x4100000000000081L, 0x10000000000004L, 0x1000000000002000L, 0x4a81b5a7L, 0x75ff580000000000L, true, 0, 0x100000000000000L), 4), 596516); - - // gentest-2077 - assertEqual(perft(new Board(0xa758004a009500L, 0x48004000000002L, 0x2400000000010020L, 0x8100000000000081L, 0x10000000100000L, 0x1000000000002000L, 0x404a11b5a3L, 0xb5ff580000000000L, false, 0, 0x100000000000000L), 4), 811256); - - // gentest-2078 - assertEqual(perft(new Board(0xa35c004a009500L, 0x48004000040000L, 0x2400000000010020L, 0x8100000000000081L, 0x10000000100000L, 0x800000000002000L, 0x404a15b5a1L, 0xadfb5c0000000000L, true, 0, 0x0L), 4), 1045184); - - // gentest-2079 - assertEqual(perft(new Board(0xa35c004a009500L, 0x8008010040000L, 0x2400000000010020L, 0x8100000000000082L, 0x10000000100000L, 0x800000000002000L, 0x5a15b5a2L, 0xadbb5c8000000000L, false, 0, 0x0L), 4), 1329748); - - // gentest-2080 - assertEqual(perft(new Board(0x23dc004a009500L, 0x8000020040800L, 0x2400000000010020L, 0x8100000000000082L, 0x10000000100000L, 0x800000000002000L, 0x4a15bda2L, 0xad3bdc0020000000L, true, 0, 0x0L), 4), 1369731); - - // gentest-2081 - assertEqual(perft(new Board(0x23d80648009500L, 0x8000020040800L, 0x2400000000010020L, 0x8100000000000082L, 0x10000000100000L, 0x800000000000010L, 0x248159db2L, 0xad3bd80420000000L, false, 0, 0x0L), 4), 1298288); - - // gentest-2082 - assertEqual(perft(new Board(0x22d80748801500L, 0x20020040800L, 0x2400000000010020L, 0x8100000000000082L, 0x10000000100000L, 0x800000000000010L, 0x248951db2L, 0xad32da0520000000L, true, 0, 0x0L), 4), 1492559); - - // gentest-2083 - assertEqual(perft(new Board(0x22d80748801500L, 0x20020040800L, 0x2400000000010020L, 0x8000010000000088L, 0x10000000200000L, 0x800000000000010L, 0x248a51db8L, 0xac32db0520000000L, false, 0, 0x0L), 4), 1408524); - - // gentest-2084 - assertEqual(perft(new Board(0x22c817c8001500L, 0x20020040800L, 0x2400000000010020L, 0x8100000000000088L, 0x10000000200000L, 0x800000000000010L, 0x2c8251db8L, 0xad32ca1520000000L, true, 0, 0x0L), 4), 2263188); - - // gentest-2085 - assertEqual(perft(new Board(0x22c83788001500L, 0x20020040800L, 0x2000000000000220L, 0x8100000000000088L, 0x10000000200000L, 0x800000000000010L, 0x2288241fb8L, 0xa932ca1520000000L, false, 0, 0x0L), 4), 2380512); - - // gentest-2086 - assertEqual(perft(new Board(0x22c83788001500L, 0x20000040800L, 0x2000000000000220L, 0x4001000000000088L, 0x10000020000000L, 0x800000000000010L, 0x22a8041fb8L, 0x6833ca1500000000L, true, 0, 0x0L), 4), 1664908); - - // gentest-2087 - assertEqual(perft(new Board(0x22c83708011400L, 0x20000040800L, 0x2000000000000220L, 0x4001000080000008L, 0x20000000L, 0x800000000000010L, 0x22a8051e38L, 0x6823ca1500000000L, false, 0, 0x0L), 4), 1270739); - - // gentest-2088 - assertEqual(perft(new Board(0x22c82728011400L, 0x20000040800L, 0x2000000000000220L, 0x41008000000008L, 0x0L, 0x800000000000010L, 0xa208051e38L, 0x2863ca0520000000L, true, 0, 0x0L), 4), 578964); - - // gentest-2089 - assertEqual(perft(new Board(0x22c02f28011400L, 0x20004040000L, 0x2000000000000220L, 0x41008000000002L, 0x0L, 0x800000000000010L, 0xa20c051632L, 0x2863c20d20000000L, false, 0, 0x0L), 4), 595724); - - // gentest-2090 - assertEqual(perft(new Board(0x22c02f28011400L, 0x20004040000L, 0x2000000000000021L, 0x4001008000000002L, 0x0L, 0x1000000000000010L, 0xa20c051433L, 0x7023c20d20000000L, true, 0, 0x0L), 4), 614621); - - // gentest-2091 - assertEqual(perft(new Board(0x22006f20011400L, 0x20004040000L, 0x2000000000000021L, 0x4001800000000002L, 0x0L, 0x1000000000000010L, 0x802604051433L, 0x7023024920000000L, false, 0, 0x0L), 4), 859943); - - // gentest-2092 - assertEqual(perft(new Board(0x22006f20011400L, 0x400000000140000L, 0x10000000000021L, 0x4001800000000002L, 0x0L, 0x1000000000000010L, 0x802600151433L, 0x5433004920000000L, true, 0, 0x0L), 4), 749768); - - // gentest-2093 - assertEqual(perft(new Board(0x22204f20011400L, 0x400000000140000L, 0x80000000021L, 0x4001800000000004L, 0x0L, 0x1000000000000010L, 0xa00600151435L, 0x5423084920000000L, false, 0, 0x0L), 4), 524216); - - // gentest-2094 - assertEqual(perft(new Board(0x22204f20011400L, 0x400000000140000L, 0x4000000000021L, 0x4100000080000004L, 0x0L, 0x1000000000000010L, 0x200680151435L, 0x5526004920000000L, true, 0, 0x0L), 4), 635878); - - // gentest-2095 - assertEqual(perft(new Board(0x20244b20011400L, 0x400000000140000L, 0x4000000000220L, 0x4100000080000004L, 0x0L, 0x1000000000000010L, 0x200280151634L, 0x5524044920000000L, false, 0, 0x0L), 4), 745578); - - // gentest-2096 - assertEqual(perft(new Board(0x20244308111400L, 0x400000000040000L, 0x4000000000220L, 0xc100000000000004L, 0x0L, 0x1000000000000010L, 0x8000200200051634L, 0x5524044108100000L, true, 0, 0x0L), 4), 352468); - - // gentest-2097 - assertEqual(perft(new Board(0x20244308111400L, 0x400000000000100L, 0x1000000220L, 0x4100000080000004L, 0x0L, 0x1000000000000010L, 0x200280011734L, 0x5520045108100000L, false, 0, 0x0L), 4), 458078); - - // gentest-2098 - assertEqual(perft(new Board(0x20240289151000L, 0x400000000000100L, 0x1000000220L, 0x4100000000000004L, 0x0L, 0x1000000000000010L, 0x200200051334L, 0x5520041089100000L, true, 0, 0x0L), 4), 178707); - - // gentest-2099 - assertEqual(perft(new Board(0x20240289151000L, 0x400000000000100L, 0x1000000280L, 0x4100000000000004L, 0x0L, 0x8000000000010L, 0x200200051394L, 0x4528041089100000L, false, 0, 0x0L), 4), 329478); - - // gentest-2100 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2101 - assertEqual(perft(new Board(0xbf00480000f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80000f7ffL, 0xffbf004000000000L, false, 0, 0x8100000000000081L), 4), 369350); - - // gentest-2102 - assertEqual(perft(new Board(0x9f00680000f700L, 0x4200000000040040L, 0x400800000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80004f7fdL, 0xdf9f806000000000L, true, 0, 0x8100000000000081L), 4), 319039); - - // gentest-2103 - assertEqual(perft(new Board(0x8f00780001f600L, 0x4200000000040040L, 0x400800000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x80005fef5L, 0xdf8f807000000000L, false, 0, 0x8100000000000081L), 4), 450755); - - // gentest-2104 - assertEqual(perft(new Board(0x89027c0001f600L, 0x4200000000000042L, 0x400800000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x80001fef7L, 0xdf89827400000000L, true, 42, 0x8100000000000081L), 4), 476024); - - // gentest-2105 - assertEqual(perft(new Board(0x89027c4001b600L, 0x4000010000000042L, 0x400800000000024L, 0x8100000000000081L, 0x800000100000000L, 0x1000000000000010L, 0x94001b6f7L, 0xdd89837400000000L, false, 0, 0x8100000000000081L), 4), 584660); - - // gentest-2106 - assertEqual(perft(new Board(0x89003d4001b600L, 0x4000010000000042L, 0x400800000000024L, 0x8100000000000081L, 0x800000000000000L, 0x1000000000000010L, 0x280001b6f7L, 0xdd89811540000000L, true, 0, 0x8100000000000081L), 4), 517533); - - // gentest-2107 - assertEqual(perft(new Board(0x89003d4104b200L, 0x4000010000000042L, 0x400800000000024L, 0x8200000000000081L, 0x800000000000000L, 0x1000000000000010L, 0x280104b2f7L, 0xde89811540000000L, false, 0, 0x8000000000000081L), 4), 599525); - - // gentest-2108 - assertEqual(perft(new Board(0x81281d4104b200L, 0x4000010000000042L, 0x400800000000024L, 0x8000000000020081L, 0x800000000000000L, 0x1000000000000010L, 0x20080104b2f7L, 0xdc81891540020000L, true, 0, 0x8000000000000081L), 4), 569488); - - // gentest-2109 - assertEqual(perft(new Board(0x81281d4104b200L, 0x4000010000000042L, 0x8800000000024L, 0x8000000000030080L, 0x800000000000000L, 0x1000000000000010L, 0x20080105b2f6L, 0xd889891540020000L, false, 0, 0x8000000000000080L), 4), 690708); - - // gentest-2110 - assertEqual(perft(new Board(0x81281d4104b200L, 0x4000010000000840L, 0x440000000000024L, 0x8000000000030080L, 0x800000000000000L, 0x1000000000000010L, 0x20080105baf4L, 0xdcc1091540020000L, true, 0, 0x8000000000000080L), 4), 564894); - - // gentest-2111 - assertEqual(perft(new Board(0x81081d4500b200L, 0x4000010000000840L, 0x440000000004004L, 0x8000000000030080L, 0x200000000000L, 0x1000000000000010L, 0x80501fad4L, 0xd4c1291540020000L, false, 0, 0x8000000000000080L), 4), 1089112); - - // gentest-2112 - assertEqual(perft(new Board(0x80091d45209200L, 0x4200000000000840L, 0x440000000004004L, 0x8000000000030080L, 0x200000000000L, 0x1000000000000010L, 0x80521dad4L, 0xd6c0291540020000L, true, 0, 0x8000000000000080L), 4), 631131); - - // gentest-2113 - assertEqual(perft(new Board(0x80090d55209200L, 0x4200000000002800L, 0x440000000004004L, 0x8000000000030080L, 0x200000000000L, 0x1000000000000010L, 0x80521fa94L, 0xd6c0290550020000L, false, 0, 0x8000000000000080L), 4), 1396715); - - // gentest-2114 - assertEqual(perft(new Board(0x80090d45209000L, 0x4200000010002000L, 0x440000000004004L, 0x8000000000010480L, 0x200000000000L, 0x1000000000000010L, 0x81521f094L, 0xd6c0290540000400L, true, 0, 0x8000000000000080L), 4), 1784793); - - // gentest-2115 - assertEqual(perft(new Board(0x80010d45209000L, 0x4200080000002000L, 0x440000000004004L, 0x8000000000010440L, 0x200000000000L, 0x2000000000000010L, 0x8080521f054L, 0xe6c0210540000400L, false, 0, 0x0L), 4), 1698679); - - // gentest-2116 - assertEqual(perft(new Board(0x80010d45308000L, 0x4200080000002000L, 0x400000008004004L, 0x8000000000010440L, 0x1L, 0x2000000000000010L, 0x8080531e054L, 0xe680010548000401L, true, 0, 0x0L), 4), 1022724); - - // gentest-2117 - assertEqual(perft(new Board(0x80010d41308000L, 0x4200080000002000L, 0x400000008000024L, 0x8000000004080040L, 0x1L, 0x2000000000000010L, 0x8080138a074L, 0xe68001054c000001L, false, 0, 0x0L), 4), 1119115); - - // gentest-2118 - assertEqual(perft(new Board(0x80010d41308000L, 0x4408000000002000L, 0x8000024L, 0x8000000004080040L, 0x200L, 0x2000000000000010L, 0x40000080138a074L, 0xe08801054c000200L, true, 0, 0x0L), 4), 1275937); - - // gentest-2119 - assertEqual(perft(new Board(0x80010d41308000L, 0x4008000200002000L, 0x8000024L, 0x80000000000c0040L, 0x200L, 0x2000000000000010L, 0xa0138a074L, 0xe088010548040200L, false, 0, 0x0L), 4), 1164215); - - // gentest-2120 - assertEqual(perft(new Board(0x80010d41008000L, 0x4000001200002000L, 0x100024L, 0x80000000000c0040L, 0x200L, 0x2000000000000010L, 0xa4108a074L, 0xe080011500140200L, true, 0, 0x0L), 4), 1238723); - - // gentest-2121 - assertEqual(perft(new Board(0x80010d41008000L, 0x4000001200002000L, 0x824L, 0x80000000000c0080L, 0x200L, 0x2000000000001000L, 0xa4108b0a4L, 0xe080011500040a00L, false, 0, 0x0L), 4), 814896); - - // gentest-2122 - assertEqual(perft(new Board(0x80010d41008000L, 0x4000001200002000L, 0x4004L, 0x80000000000c0080L, 0x200L, 0x40000000001000L, 0xa4108f080L, 0xc0c0011500040204L, true, 0, 0x0L), 4), 164412); - - // gentest-2123 - assertEqual(perft(new Board(0x80010d41008000L, 0x201200800000L, 0x4004L, 0x80000000000c0080L, 0x200L, 0x40000000000008L, 0xa4188c088L, 0x80c0211500040204L, false, 0, 0x0L), 4), 1413829); - - // gentest-2124 - assertEqual(perft(new Board(0x80010d41008000L, 0x200204800000L, 0x10000004L, 0x80000000000c0080L, 0x2L, 0x40000000000008L, 0xa51888088L, 0x80c0210504040006L, true, 0, 0x0L), 4), 1357320); - - // gentest-2125 - assertEqual(perft(new Board(0x80014d01008000L, 0x200204002000L, 0x10000004L, 0x8000000000090080L, 0x2L, 0x40000000000008L, 0x4a1108a088L, 0x80c0210504010006L, false, 0, 0x0L), 4), 1235222); - - // gentest-2126 - assertEqual(perft(new Board(0x80014d01008000L, 0x200204002000L, 0x80004L, 0x400000000010080L, 0x0L, 0x40000000000008L, 0x4a0108a088L, 0x4c0210504010004L, true, 0, 0x0L), 4), 1248532); - - // gentest-2127 - assertEqual(perft(new Board(0x80014d01800000L, 0x20000c002000L, 0x80004L, 0x400000000020080L, 0x0L, 0x40000000000008L, 0x4809882088L, 0x4c0210504020004L, false, 0, 0x0L), 4), 1499634); - - // gentest-2128 - assertEqual(perft(new Board(0x80014d01800000L, 0x200008002800L, 0x400000000004L, 0x400000200000080L, 0x0L, 0x40000000000008L, 0x404809802088L, 0x4c0210700000804L, true, 0, 0x0L), 4), 1202770); - - // gentest-2129 - assertEqual(perft(new Board(0x80014d01800000L, 0x200008002800L, 0x400000000004L, 0x400000200000020L, 0x0L, 0x4000000000000010L, 0x404809802030L, 0x4480210700000804L, false, 0, 0x0L), 4), 915410); - - // gentest-2130 - assertEqual(perft(new Board(0x14d01800000L, 0x200008002800L, 0x80000000000200L, 0x400000200000020L, 0x0L, 0x20000000000010L, 0x80004809802030L, 0x420210700000a00L, true, 0, 0x0L), 4), 901042); - - // gentest-2131 - assertEqual(perft(new Board(0x14d01800000L, 0x20000c040000L, 0x80000000000200L, 0x400000200000020L, 0x0L, 0x20000000000010L, 0x80004809840030L, 0x420210704000200L, false, 0, 0x0L), 4), 875512); - - // gentest-2132 - assertEqual(perft(new Board(0x14d01800000L, 0x200004041000L, 0x80000000000200L, 0x4000200000020L, 0x0L, 0x1000000000000010L, 0x80004801841030L, 0x1004210704000200L, true, 0, 0x0L), 4), 1034595); - - // gentest-2133 - assertEqual(perft(new Board(0x14d01800000L, 0x200000041800L, 0x80000000000200L, 0x4000200000020L, 0x0L, 0x1000000000000010L, 0x80004801841030L, 0x1004210700000a00L, false, 0, 0x0L), 4), 1084586); - - // gentest-2134 - assertEqual(perft(new Board(0x14d01800000L, 0x10460000L, 0x80000000000200L, 0x4000200000020L, 0x0L, 0x1000000000000010L, 0x80004801c40030L, 0x1004010710020200L, true, 0, 0x0L), 4), 778833); - - // gentest-2135 - assertEqual(perft(new Board(0x94501800000L, 0x210420000L, 0x80000000000200L, 0x1000000000020L, 0x0L, 0x1000000000000010L, 0x80084201c00030L, 0x1001010510020200L, false, 0, 0x0L), 4), 631753); - - // gentest-2136 - assertEqual(perft(new Board(0x90501800000L, 0x4000410800L, 0x80000000000200L, 0x1000000000020L, 0x0L, 0x1000000000000010L, 0x80080001c10030L, 0x1001014500000a00L, true, 0, 0x0L), 4), 702236); - - // gentest-2137 - assertEqual(perft(new Board(0x90501800000L, 0x4000010082L, 0x400000000200L, 0x1000000000020L, 0x0L, 0x1000000000000010L, 0x4800018100b0L, 0x1001014500000202L, false, 0, 0x0L), 4), 63219); - - // gentest-2138 - assertEqual(perft(new Board(0x90501800000L, 0x20000000010082L, 0x400000000200L, 0x10000000002000L, 0x0L, 0x1000000000000010L, 0x480001812090L, 0x1030010500000202L, true, 0, 0x0L), 4), 67245); - - // gentest-2139 - assertEqual(perft(new Board(0x90501800000L, 0x10082L, 0x20200000000000L, 0x10000000002000L, 0x0L, 0x1000000000000020L, 0x200800018120a0L, 0x1010210500000002L, false, 0, 0x0L), 4), 78336); - - // gentest-2140 - assertEqual(perft(new Board(0x8010501800000L, 0x10082L, 0x200000000000L, 0x20000000002000L, 0x0L, 0x2000000000000020L, 0x80000018120a0L, 0x2020210500000002L, true, 0, 0x0L), 4), 190530); - - // gentest-2141 - assertEqual(perft(new Board(0x10501800000L, 0x2000000050080L, 0x200000000000L, 0x20000000002000L, 0x0L, 0x2000000000000020L, 0x20000018120a0L, 0x2020210500040000L, false, 0, 0x0L), 4), 320677); - - // gentest-2142 - assertEqual(perft(new Board(0x10581000000L, 0x2000020010080L, 0x200000000000L, 0x20000000002000L, 0x0L, 0x2000000000000020L, 0x20000810120a0L, 0x2020210520000000L, true, 0, 0x0L), 4), 400317); - - // gentest-2143 - assertEqual(perft(new Board(0x10501000000L, 0x2008000010080L, 0x200000000000L, 0x20000000200000L, 0x0L, 0x2000000000000020L, 0x20000012100a0L, 0x2020218500000000L, false, 0, 0x0L), 4), 246524); - - // gentest-2144 - assertEqual(perft(new Board(0x10501000000L, 0x2000000410080L, 0x200000000000L, 0x4000000200000L, 0x0L, 0x2000000000001000L, 0x2000001211080L, 0x2004210500400000L, true, 0, 0x0L), 4), 77964); - - // gentest-2145 - assertEqual(perft(new Board(0x10501000000L, 0x80010010080L, 0x200000000000L, 0x4000000200000L, 0x0L, 0x2000000000100000L, 0x80001310080L, 0x2004210510000000L, false, 0, 0x0L), 4), 240078); - - // gentest-2146 - assertEqual(perft(new Board(0x10501000000L, 0x400000000050080L, 0x200000000000L, 0x4000000200000L, 0x0L, 0x4000000000100000L, 0x400000001310080L, 0x4004210500040000L, true, 0, 0x0L), 4), 322627); - - // gentest-2147 - assertEqual(perft(new Board(0x10501000000L, 0x400000000010082L, 0x200000000000L, 0x4000000200000L, 0x0L, 0x4000000000100000L, 0x400000001310080L, 0x4004210500000002L, false, 0, 0x0L), 4), 311019); - - // gentest-2148 - assertEqual(perft(new Board(0x10501000000L, 0x400000000010082L, 0x8000000000000000L, 0x4000000000020L, 0x0L, 0x40000000100000L, 0x4000000011100a0L, 0x8044010500000002L, true, 0, 0x0L), 4), 189775); - - // gentest-2149 - assertEqual(perft(new Board(0x10501000000L, 0x400000000010082L, 0x8000000000000000L, 0x2004000000000000L, 0x0L, 0x400000100000L, 0x2400000001110080L, 0x8004410500000002L, false, 0, 0x0L), 4), 331380); - - // gentest-2150 - assertEqual(perft(new Board(0x10105000000L, 0x400000000010082L, 0x0L, 0x8002000000000000L, 0x0L, 0x400000100000L, 0x8400000001110080L, 0x2410104000002L, true, 0, 0x0L), 4), 233687); - - // gentest-2151 - assertEqual(perft(new Board(0x10105000000L, 0x400000200400002L, 0x0L, 0x8000000000000000L, 0x0L, 0x400000100000L, 0x8400000201500000L, 0x410104000002L, false, 0, 0x0L), 4), 78602); - - // gentest-2152 - assertEqual(perft(new Board(0x10105000000L, 0x400000200440000L, 0x0L, 0x8000000000000000L, 0x0L, 0x40000008000000L, 0x8400000209400000L, 0x40010104040000L, true, 0, 0x0L), 4), 97722); - - // gentest-2153 - assertEqual(perft(new Board(0x10105000000L, 0x400000000450000L, 0x0L, 0x8000000000000000L, 0x0L, 0x20000400000000L, 0x8400000401410000L, 0x20010104040000L, false, 0, 0x0L), 4), 92282); - - // gentest-2154 - assertEqual(perft(new Board(0x10101040000L, 0x400000000410008L, 0x0L, 0x8000000000000000L, 0x0L, 0x20040000000000L, 0x8400040001410000L, 0x20010100040008L, true, 0, 0x0L), 4), 74609); - - // gentest-2155 - assertEqual(perft(new Board(0x10101000400L, 0x400008000010008L, 0x0L, 0x1000000000000000L, 0x0L, 0x20040000000000L, 0x1400048001010000L, 0x20010100000408L, false, 0, 0x0L), 4), 72398); - - // gentest-2156 - assertEqual(perft(new Board(0x10101000000L, 0x400008000110000L, 0x0L, 0x1000000000000004L, 0x0L, 0x20020000000000L, 0x1400028001010000L, 0x20010100100004L, true, 0, 0x0L), 4), 224581); - - // gentest-2157 - assertEqual(perft(new Board(0x10101000000L, 0x400200000010020L, 0x0L, 0x2000000000000004L, 0x0L, 0x20020000000000L, 0x2400220001010000L, 0x20010100000024L, false, 0, 0x0L), 4), 35034); - - // gentest-2158 - assertEqual(perft(new Board(0x10101000000L, 0x400200000010800L, 0x0L, 0x2000000000000004L, 0x0L, 0x2100000000000L, 0x2402200001010000L, 0x110100000804L, true, 0, 0x0L), 4), 287056); - - // gentest-2159 - assertEqual(perft(new Board(0x10101000000L, 0x400000040010800L, 0x0L, 0x8000000000000080L, 0x0L, 0x2100000000000L, 0x8402000041010000L, 0x110100000880L, false, 0, 0x0L), 4), 383097); - - // gentest-2160 - assertEqual(perft(new Board(0x10101000000L, 0x400000250000000L, 0x0L, 0x8000000000000008L, 0x0L, 0x2100000000000L, 0x8402000241000000L, 0x110110000008L, true, 0, 0x0L), 4), 513017); - - // gentest-2161 - assertEqual(perft(new Board(0x10101000000L, 0x80210002000L, 0x0L, 0x8000000000000020L, 0x0L, 0x2100000000000L, 0x8002080201002000L, 0x110110000020L, false, 0, 0x0L), 4), 516331); - - // gentest-2162 - assertEqual(perft(new Board(0x10101000000L, 0x80210002000L, 0x0L, 0x8000000000L, 0x0L, 0x2100000000000L, 0x2080201002000L, 0x118110000000L, true, 0, 0x0L), 4), 279530); - - // gentest-2163 - assertEqual(perft(new Board(0x10101000000L, 0x80200000008L, 0x0L, 0x8000000000L, 0x0L, 0x140000000000L, 0x40201000008L, 0x198100000000L, false, 0, 0x0L), 4), 88268); - - // gentest-2164 - assertEqual(perft(new Board(0x10101000000L, 0x1080000000008L, 0x0L, 0x8000000000L, 0x0L, 0x4000040000000000L, 0x1040001000008L, 0x4000098100000000L, true, 0, 0x0L), 4), 70294); - - // gentest-2165 - assertEqual(perft(new Board(0x10101000000L, 0x1000000000008L, 0x0L, 0x2000000000L, 0x0L, 0x4004000000000000L, 0x5000001000008L, 0x4000012100000000L, false, 0, 0x0L), 4), 55338); - - // gentest-2166 - assertEqual(perft(new Board(0x10101000000L, 0x1000000000008L, 0x0L, 0x20L, 0x0L, 0x4400000000000000L, 0x401000001000008L, 0x4000010100000020L, true, 0, 0x0L), 4), 39099); - - // gentest-2167 - assertEqual(perft(new Board(0x10101000000L, 0x40000002000L, 0x0L, 0x20L, 0x0L, 0x2400000000000000L, 0x400040001002000L, 0x2000010100000020L, false, 0, 0x0L), 4), 51490); - - // gentest-2168 - assertEqual(perft(new Board(0x10101000000L, 0x40000002000L, 0x0L, 0x4L, 0x0L, 0x24000000000000L, 0x4040001002000L, 0x20010100000004L, true, 0, 0x0L), 4), 62833); - - // gentest-2169 - assertEqual(perft(new Board(0x10101000000L, 0x40000000200L, 0x0L, 0x1L, 0x0L, 0x24000000000000L, 0x4040001000200L, 0x20010100000001L, false, 0, 0x0L), 4), 74388); - - // gentest-2170 - assertEqual(perft(new Board(0x10101000000L, 0x40000000200L, 0x0L, 0x10L, 0x0L, 0x220000000000000L, 0x200040001000200L, 0x20010100000010L, true, 0, 0x0L), 4), 75912); - - // gentest-2171 - assertEqual(perft(new Board(0x10101000000L, 0x40000000800L, 0x0L, 0x10L, 0x0L, 0x1200000000000000L, 0x200040001000800L, 0x1000010100000010L, false, 0, 0x0L), 4), 68703); - - // gentest-2172 - assertEqual(perft(new Board(0x10101000000L, 0x10000000000800L, 0x0L, 0x10L, 0x0L, 0x1200000000000000L, 0x210000001000800L, 0x1000010100000010L, true, 0, 0x0L), 4), 70733); - - // gentest-2173 - assertEqual(perft(new Board(0x10101000000L, 0x10000000000800L, 0x0L, 0x4L, 0x0L, 0x1200000000000000L, 0x210000001000800L, 0x1000010100000004L, false, 0, 0x0L), 4), 64826); - - // gentest-2174 - assertEqual(perft(new Board(0x10101000000L, 0x10000004000000L, 0x0L, 0x4L, 0x0L, 0x220000000000000L, 0x210000005000000L, 0x20010100000004L, true, 0, 0x0L), 4), 81777); - - // gentest-2175 - assertEqual(perft(new Board(0x10101000000L, 0x10000000000200L, 0x0L, 0x80L, 0x0L, 0x22000000000000L, 0x12000001000200L, 0x20010100000080L, false, 0, 0x0L), 4), 87303); - - // gentest-2176 - assertEqual(perft(new Board(0x10101000000L, 0x10000000000200L, 0x0L, 0x1000000000L, 0x0L, 0x21000000000000L, 0x11000001000200L, 0x20011100000000L, true, 0, 0x0L), 4), 59501); - - // gentest-2177 - assertEqual(perft(new Board(0x10101000000L, 0x10000000000200L, 0x0L, 0x1000000000L, 0x0L, 0x1001000000000000L, 0x11000001000200L, 0x1000011100000000L, false, 0, 0x0L), 4), 47612); - - // gentest-2178 - assertEqual(perft(new Board(0x10101000000L, 0x10000000000008L, 0x0L, 0x200000000000L, 0x0L, 0x1001000000000000L, 0x11000001000008L, 0x1000210100000000L, true, 0, 0x0L), 4), 47450); - - // gentest-2179 - assertEqual(perft(new Board(0x10101000000L, 0x10000010000000L, 0x0L, 0x40000000000L, 0x0L, 0x1001000000000000L, 0x11000011000000L, 0x1000050100000000L, false, 0, 0x0L), 4), 70053); - - // gentest-2180 - assertEqual(perft(new Board(0x10101000000L, 0x4000000010000000L, 0x0L, 0x800000000000L, 0x0L, 0x9000000000000L, 0x4001000011000000L, 0x8810100000000L, true, 0, 0x0L), 4), 42872); - - // gentest-2181 - assertEqual(perft(new Board(0x10101000000L, 0x4000000010000000L, 0x0L, 0x800000000000L, 0x0L, 0x801000000000000L, 0x4001000011000000L, 0x800810100000000L, false, 0, 0x0L), 4), 47870); - - // gentest-2182 - assertEqual(perft(new Board(0x10101000000L, 0x10000010000000L, 0x0L, 0x800000000000L, 0x0L, 0x9000000000000L, 0x11000011000000L, 0x8810100000000L, true, 0, 0x0L), 4), 70708); - - // gentest-2183 - assertEqual(perft(new Board(0x10101000000L, 0x10000000020000L, 0x0L, 0x800000000000L, 0x0L, 0x1001000000000000L, 0x11000001020000L, 0x1000810100000000L, false, 0, 0x0L), 4), 67167); - - // gentest-2184 - assertEqual(perft(new Board(0x10101000000L, 0x10000000000001L, 0x0L, 0x80000000L, 0x0L, 0x1001000000000000L, 0x11000001000001L, 0x1000010180000000L, true, 0, 0x0L), 4), 51916); - - // gentest-2185 - assertEqual(perft(new Board(0x10100000000L, 0x800000000001L, 0x0L, 0x1000000L, 0x0L, 0x1001000000000000L, 0x1800000000001L, 0x1000010101000000L, false, 0, 0x0L), 4), 28218); - - // gentest-2186 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2187 - assertEqual(perft(new Board(0xfb04000010ef00L, 0x4200000000001002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10ffbfL, 0xfffb040000000000L, false, 0, 0x8100000000000081L), 4), 290439); - - // gentest-2188 - assertEqual(perft(new Board(0xf906000010ef00L, 0x200200008000002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x810efbfL, 0xbff9260000000000L, true, 0, 0x8100000000000081L), 4), 614446); - - // gentest-2189 - assertEqual(perft(new Board(0xe916000118e600L, 0x200200008000002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x918e6bfL, 0xbfe9360000000000L, false, 0, 0x8100000000000081L), 4), 914323); - - // gentest-2190 - assertEqual(perft(new Board(0x6996010018e600L, 0x200200008000002L, 0x410000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10818e6bfL, 0x9f79b60000000000L, true, 0, 0x8100000000000081L), 4), 1157191); - - // gentest-2191 - assertEqual(perft(new Board(0x6916810218e400L, 0x200200008000002L, 0x410000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10a18e4bfL, 0x9f79368000000000L, false, 0, 0x8100000000000081L), 4), 1106461); - - // gentest-2192 - assertEqual(perft(new Board(0x291641a218c400L, 0x200200008000002L, 0x410000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x12a18c4bfL, 0x9f39364080000000L, true, 0, 0x8100000000000081L), 4), 1257007); - - // gentest-2193 - assertEqual(perft(new Board(0x291245a218c400L, 0x200200008000002L, 0x410000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000800L, 0x12a18ceabL, 0x9f39324480000000L, false, 0, 0x8100000000000000L), 4), 1398440); - - // gentest-2194 - assertEqual(perft(new Board(0x291245a218c400L, 0x200000008000002L, 0x2400000000000220L, 0x8100000000000081L, 0x800008000000000L, 0x1000000000000800L, 0x812a18cea3L, 0xbf29124480000000L, true, 0, 0x8100000000000000L), 4), 1503236); - - // gentest-2195 - assertEqual(perft(new Board(0x281344a218c400L, 0x200002000000002L, 0x2400000000000220L, 0x8100000000000081L, 0x800008000000000L, 0x1000000000000800L, 0x2a02218cea3L, 0xbf28114480000000L, false, 0, 0x8100000000000000L), 4), 1457642); - - // gentest-2196 - assertEqual(perft(new Board(0x281344a218c400L, 0x200002000000002L, 0x440000000010020L, 0x8100000000000081L, 0x10008000000000L, 0x1000000000000800L, 0x2a02219cca3L, 0x9778114480000000L, true, 0, 0x8100000000000000L), 4), 1245972); - - // gentest-2197 - assertEqual(perft(new Board(0x281245a218c400L, 0x200002000000002L, 0x440000000010020L, 0x8100000000000081L, 0x10400000000000L, 0x1000000000000800L, 0x42202219cca3L, 0x9778104580000000L, false, 0, 0x8100000000000000L), 4), 1664982); - - // gentest-2198 - assertEqual(perft(new Board(0x2812452a90c400L, 0x200002000000002L, 0x440000000010020L, 0x4100000000000081L, 0x10400000000000L, 0x1000000000000800L, 0x42202a11cca3L, 0x5778104500800000L, true, 0, 0x100000000000000L), 4), 1689056); - - // gentest-2199 - assertEqual(perft(new Board(0x2812453a80c400L, 0x200080000000002L, 0x440000000010020L, 0x4100000000000081L, 0x10400000000000L, 0x800000000000800L, 0x4a003a01cca3L, 0x4f78104500800000L, false, 0, 0x0L), 4), 1824142); - - // gentest-2200 - assertEqual(perft(new Board(0x2802553e80c000L, 0x200080000000002L, 0x42000000010020L, 0x4100000000000081L, 0x10400000000000L, 0x800000000000800L, 0x4a003e01c8a3L, 0x4b7a005500800000L, true, 0, 0x0L), 4), 1593982); - - // gentest-2201 - assertEqual(perft(new Board(0x802553e80c000L, 0x200080000000002L, 0x40010000010020L, 0x4100000000000081L, 0x30000000000000L, 0x800000000000010L, 0x200a003e01c0b3L, 0x4b58015500800000L, false, 0, 0x0L), 4), 1138342); - - // gentest-2202 - assertEqual(perft(new Board(0x802553e80c000L, 0x600000000000002L, 0x2000010000010020L, 0x4100000000000081L, 0x30000000000000L, 0x800000000000010L, 0x42002003e01c0b3L, 0x6b18015500800000L, true, 0, 0x0L), 4), 1119801); - - // gentest-2203 - assertEqual(perft(new Board(0x802553e80c000L, 0x600000000000002L, 0x2002000000000024L, 0x4100000000000081L, 0x10000000000000L, 0x800000000000010L, 0x41002003e00c0b7L, 0x6b0a005500800000L, false, 0, 0x0L), 4), 70239); - - // gentest-2204 - assertEqual(perft(new Board(0x802513e80c000L, 0x200000000000800L, 0x2002000000000024L, 0x4100000000000081L, 0x10000000000000L, 0x400000000000010L, 0x1002003600c8b5L, 0x670a005108800000L, true, 0, 0x0L), 4), 664102); - - // gentest-2205 - assertEqual(perft(new Board(0x802513e80c000L, 0x200000000000800L, 0x42000000000024L, 0x4100000000000082L, 0x1000000000000000L, 0x400000000000010L, 0x100002003600c8b6L, 0x474a005108800000L, false, 0, 0x0L), 4), 14247); - - // gentest-2206 - assertEqual(perft(new Board(0x802533c80c000L, 0x200000000000800L, 0x42000000000024L, 0x8100000000000082L, 0x0L, 0x400000000000010L, 0x2023400c8b6L, 0x874a005108800000L, true, 0, 0x0L), 4), 364465); - - // gentest-2207 - assertEqual(perft(new Board(0x802533cc08000L, 0x200000000000800L, 0x42000000010020L, 0x100008000000082L, 0x0L, 0x400000000000010L, 0x202344188b2L, 0x74a00d108800000L, false, 0, 0x0L), 4), 467547); - - // gentest-2208 - assertEqual(perft(new Board(0xa533c408000L, 0x200000000000800L, 0x42000000810000L, 0x100008000000082L, 0x0L, 0x800000000000010L, 0x20234c18892L, 0xb4208d108000000L, true, 0, 0x0L), 4), 775604); - - // gentest-2209 - assertEqual(perft(new Board(0xa137c408000L, 0x200000000020000L, 0x42000000014000L, 0x100008000000082L, 0x0L, 0x800000000000010L, 0x2023443c092L, 0xb42089148000000L, false, 0, 0x0L), 4), 839048); - - // gentest-2210 - assertEqual(perft(new Board(0xa137c408000L, 0x200000000020000L, 0x42000000014000L, 0x100002000000082L, 0x0L, 0x10000000000800L, 0x2023443c882L, 0x352083148000000L, true, 0, 0x0L), 4), 1060512); - - // gentest-2211 - assertEqual(perft(new Board(0xa1374408000L, 0x10008000000L, 0x42000000014000L, 0x100002000000280L, 0x0L, 0x10000000000800L, 0x2023c41ca80L, 0x152093140000000L, false, 0, 0x0L), 4), 1639588); - - // gentest-2212 - assertEqual(perft(new Board(0xa1374408000L, 0x10008000000L, 0x42000000014000L, 0x1002000000280L, 0x0L, 0x200000100000L, 0x2023c51c280L, 0x43293140000000L, true, 0, 0x0L), 4), 809924); - - // gentest-2213 - assertEqual(perft(new Board(0xa1354408000L, 0x200000000020000L, 0x42000000014000L, 0x1002000000280L, 0x0L, 0x200000100000L, 0x2121453c280L, 0x243282140000000L, false, 0, 0x0L), 4), 287802); - - // gentest-2214 - assertEqual(perft(new Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x1002000000280L, 0x0L, 0x400000100000L, 0x1002021452c280L, 0x243403140000000L, true, 0, 0x0L), 4), 1175188); - - // gentest-2215 - assertEqual(perft(new Board(0x21354408000L, 0x200000000020000L, 0x12800000004000L, 0x1002000000082L, 0x0L, 0x400000080000L, 0x100202144ac082L, 0x203c03140000000L, false, 0, 0x0L), 4), 1241163); - - // gentest-2216 - assertEqual(perft(new Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x10000000002a0L, 0x0L, 0x400000080000L, 0x100202144ac280L, 0x243401140000020L, true, 0, 0x0L), 4), 1185826); - - // gentest-2217 - assertEqual(perft(new Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x1000000200280L, 0x0L, 0x400000000800L, 0x1002021442ca80L, 0x243401140200000L, false, 0, 0x0L), 4), 1131339); - - // gentest-2218 - assertEqual(perft(new Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x1000000200280L, 0x0L, 0x400000000010L, 0x1002021442c290L, 0x243401140200000L, true, 0, 0x0L), 4), 1054513); - - // gentest-2219 - assertEqual(perft(new Board(0x21354408000L, 0x200000000020000L, 0x842000000004000L, 0x1000000100280L, 0x0L, 0x400000000020L, 0x80002021442c2a0L, 0x243401140100000L, false, 0, 0x0L), 4), 535070); - - // gentest-2220 - assertEqual(perft(new Board(0x21354408000L, 0x200000000020000L, 0x2404000000004000L, 0x1000000100280L, 0x0L, 0x400000000020L, 0x402021442c2a0L, 0x2601401140100000L, true, 0, 0x0L), 4), 811453); - - // gentest-2221 - assertEqual(perft(new Board(0x20354408000L, 0x200000000020000L, 0x2400001000004000L, 0x1000000000290L, 0x0L, 0x400000002000L, 0x2121442e280L, 0x2601400140000010L, false, 0, 0x0L), 4), 1351160); - - // gentest-2222 - assertEqual(perft(new Board(0x20354408000L, 0x10000020000L, 0x2004002000004000L, 0x1000000000290L, 0x0L, 0x400000002000L, 0x402021442e280L, 0x2001412140000010L, true, 0, 0x0L), 4), 1105756); - - // gentest-2223 - assertEqual(perft(new Board(0x21344408000L, 0x10000020000L, 0x2004002000004000L, 0x100000000008aL, 0x0L, 0x400000002000L, 0x402120442e082L, 0x2001412140000008L, false, 0, 0x0L), 4), 1654153); - - // gentest-2224 - assertEqual(perft(new Board(0x21344408000L, 0x10000020000L, 0x2004000010080000L, 0x100000000008aL, 0x0L, 0x4000002000L, 0x402121442a082L, 0x2001014140080008L, true, 0, 0x0L), 4), 1007345); - - // gentest-2225 - assertEqual(perft(new Board(0x21344408000L, 0x10000020000L, 0x2004000000084000L, 0x1000000000882L, 0x0L, 0x4000100000L, 0x402120452c082L, 0x2001014140080800L, false, 0, 0x0L), 4), 1380827); - - // gentest-2226 - assertEqual(perft(new Board(0x21244408000L, 0x10100000000L, 0x2004000000084000L, 0x1000000000282L, 0x0L, 0x400000100000L, 0x402130450c082L, 0x2001410040080200L, true, 0, 0x0L), 4), 1531420); - - // gentest-2227 - assertEqual(perft(new Board(0x21244408000L, 0x10100000000L, 0x2004000000280000L, 0x1000000002090L, 0x0L, 0x400000100000L, 0x4021304708090L, 0x2001410040082000L, false, 0, 0x0L), 4), 1288429); - - // gentest-2228 - assertEqual(perft(new Board(0x21244408000L, 0x10100000000L, 0x2200000000200020L, 0x1000000000490L, 0x0L, 0x400000100000L, 0x200021304708090L, 0x2001410040000420L, true, 0, 0x0L), 4), 1355264); - - // gentest-2229 - assertEqual(perft(new Board(0x212c4400000L, 0x10000020000L, 0x2200000000280000L, 0x1000000000490L, 0x0L, 0x400000100000L, 0x200021284720090L, 0x2001410040080400L, false, 0, 0x0L), 4), 1773162); - - // gentest-2230 - assertEqual(perft(new Board(0x212c0400000L, 0x10000020000L, 0x2200000800080000L, 0x5000000000090L, 0x0L, 0x400000100000L, 0x200021a80520090L, 0x2005410040080000L, true, 0, 0x0L), 4), 1710380); - - // gentest-2231 - assertEqual(perft(new Board(0x212c0400000L, 0x10400000000L, 0x2200000000080000L, 0x21000000000090L, 0x0L, 0x400000100000L, 0x200021680500090L, 0x2021410040080000L, false, 0, 0x0L), 4), 1064834); - - // gentest-2232 - assertEqual(perft(new Board(0x210c0400000L, 0x8010000000000L, 0x210000200000000L, 0x21000000000090L, 0x0L, 0x400000100000L, 0x208021080500090L, 0x31410240000000L, true, 0, 0x0L), 4), 702369); - - // gentest-2233 - assertEqual(perft(new Board(0x210c0400000L, 0x8010000000000L, 0x210000200000000L, 0x22000000008010L, 0x0L, 0x400008000000L, 0x208021088408010L, 0x32410240000000L, false, 0, 0x0L), 4), 1120300); - - // gentest-2234 - assertEqual(perft(new Board(0x210c0400000L, 0x8010000000000L, 0x200200200000000L, 0x82000000000410L, 0x0L, 0x400008000000L, 0x208021088400410L, 0x82610240000000L, true, 0, 0x0L), 4), 1207441); - - // gentest-2235 - assertEqual(perft(new Board(0x210c0400000L, 0x2000010000000000L, 0x200200200000000L, 0x82040000000010L, 0x0L, 0x40000008000000L, 0x2200061088400010L, 0xc2210240000000L, false, 0, 0x0L), 4), 831180); - - // gentest-2236 - assertEqual(perft(new Board(0x29040400000L, 0x2000010000000000L, 0x200200000001000L, 0x82040000000010L, 0x0L, 0x40000008000000L, 0x2200069008400010L, 0xc2210040001000L, true, 0, 0x0L), 4), 642425); - - // gentest-2237 - assertEqual(perft(new Board(0x29040400000L, 0x80010000000000L, 0x200000001000L, 0x200000400000010L, 0x0L, 0x40000008000000L, 0x80029408400010L, 0x240210040001000L, false, 0, 0x0L), 4), 492102); - - // gentest-2238 - assertEqual(perft(new Board(0x29040400000L, 0x2000010000000000L, 0x200000001000L, 0x10000400000010L, 0x0L, 0x40000008000000L, 0x2000029408400010L, 0x50210040001000L, true, 0, 0x0L), 4), 444307); - - // gentest-2239 - assertEqual(perft(new Board(0x821040400000L, 0x110000000000L, 0x200000001000L, 0x10000400000010L, 0x0L, 0x8000000008000000L, 0x921408400010L, 0x8010210040001000L, false, 0, 0x0L), 4), 495857); - - // gentest-2240 - assertEqual(perft(new Board(0x821040400000L, 0x800000400000000L, 0x200000001000L, 0x20000000000010L, 0x0L, 0x8000000008000000L, 0x800821008400010L, 0x8020200440001000L, true, 0, 0x0L), 4), 285569); - - // gentest-2241 - assertEqual(perft(new Board(0x801040400000L, 0x800000400000000L, 0x200200000001000L, 0x10000000000010L, 0x0L, 0x8000000008000000L, 0xa00801008400010L, 0x8010200440001000L, false, 0, 0x0L), 4), 340453); - - // gentest-2242 - assertEqual(perft(new Board(0xa00040400000L, 0x800000400000000L, 0x200000200000000L, 0x4000000000010L, 0x0L, 0x8000000008000000L, 0xa00a00008400010L, 0x8004000640000000L, true, 0, 0x0L), 4), 360132); - - // gentest-2243 - assertEqual(perft(new Board(0x20800040400000L, 0x800000400000000L, 0x1000200000000L, 0x40000000010L, 0x0L, 0x8000000008000000L, 0x821800008400010L, 0x8000040640000000L, false, 0, 0x0L), 4), 347098); - - // gentest-2244 - assertEqual(perft(new Board(0x20800040400000L, 0x800010000000000L, 0x1000200000000L, 0x84L, 0x0L, 0x8000000008000000L, 0x821800008400080L, 0x8000010240000004L, true, 0, 0x0L), 4), 294812); - - // gentest-2245 - assertEqual(perft(new Board(0x800040400000L, 0x800010000000000L, 0x2001000200000000L, 0x48000L, 0x0L, 0x8000000008000000L, 0x2801800008408000L, 0x8000010240040000L, false, 0, 0x0L), 4), 437053); - - // gentest-2246 - assertEqual(perft(new Board(0x80000040400000L, 0x802000000000000L, 0x2001000200000000L, 0x48000L, 0x0L, 0x8000000008000000L, 0x2881000008408000L, 0x8002000240040000L, true, 0, 0x0L), 4), 428570); - - // gentest-2247 - assertEqual(perft(new Board(0x80000040400000L, 0x802000000000000L, 0x1800000080000L, 0x8000040000L, 0x0L, 0x8000000008000000L, 0x881808008400000L, 0x80020000400c0000L, false, 0, 0x0L), 4), 403066); - - // gentest-2248 - assertEqual(perft(new Board(0x40400000L, 0x802000000000000L, 0x81800000000000L, 0x4000000000080L, 0x0L, 0x8000000008000000L, 0x801800008400080L, 0x8086000040000000L, true, 0, 0x0L), 4), 300199); - - // gentest-2249 - assertEqual(perft(new Board(0x40400000L, 0x802000000000000L, 0x4010800000000000L, 0x4000000000080L, 0x0L, 0x8000000008000000L, 0x810800008400080L, 0xc006000040000000L, false, 0, 0x0L), 4), 325925); - - // gentest-2250 - assertEqual(perft(new Board(0x40400000L, 0x802000000000000L, 0x4000000000100000L, 0x10000000000080L, 0x0L, 0x40000008000000L, 0x800000008500080L, 0x4052000040000000L, true, 0, 0x0L), 4), 296537); - - // gentest-2251 - assertEqual(perft(new Board(0x40400000L, 0x802000000000000L, 0x80000000100000L, 0x10000000000080L, 0x0L, 0x40000004000000L, 0x800000004500080L, 0xd2000040000000L, false, 0, 0x0L), 4), 369040); - - // gentest-2252 - assertEqual(perft(new Board(0x40400000L, 0x802000000000000L, 0x800000000002L, 0x10000000000080L, 0x0L, 0x8000000004000000L, 0x800800004400080L, 0x8012000040000002L, true, 0, 0x0L), 4), 220935); - - // gentest-2253 - assertEqual(perft(new Board(0x40400000L, 0x800080000000000L, 0x800000000002L, 0x10000000000080L, 0x0L, 0x8000040000000000L, 0x800840000400080L, 0x8010080040000002L, false, 0, 0x0L), 4), 330141); - - // gentest-2254 - assertEqual(perft(new Board(0x40400000L, 0xc00000000000000L, 0x20000002L, 0x10000000000080L, 0x0L, 0x40040000000000L, 0x800040020400080L, 0x450000040000002L, true, 0, 0x0L), 4), 361727); - - // gentest-2255 - assertEqual(perft(new Board(0x40400000L, 0x420000000000000L, 0x30000000L, 0x10000000000080L, 0x0L, 0x40000400000000L, 0x20000420400080L, 0x450000050000000L, false, 0, 0x0L), 4), 650628); - - // gentest-2256 - assertEqual(perft(new Board(0x40400000L, 0x420000000000000L, 0x30000000L, 0x100000000800000L, 0x0L, 0x40000400000000L, 0x20000420c00000L, 0x540000050000000L, true, 0, 0x0L), 4), 438621); - - // gentest-2257 - assertEqual(perft(new Board(0x40400000L, 0x400004000000000L, 0x800010000000L, 0x100000000800000L, 0x0L, 0x400400000000L, 0x804400c00000L, 0x500400050000000L, false, 0, 0x0L), 4), 172136); - - // gentest-2258 - assertEqual(perft(new Board(0x40400000L, 0x400004000000000L, 0x800000000400L, 0x800100L, 0x0L, 0x400200000000L, 0x804200c00000L, 0x400400040000500L, true, 0, 0x0L), 4), 131301); - - // gentest-2259 - assertEqual(perft(new Board(0x40400000L, 0x400100000000000L, 0x800001000000L, 0x800100L, 0x0L, 0x410000000000L, 0x910000c00000L, 0x400400041000100L, false, 0, 0x0L), 4), 165398); - - // gentest-2260 - assertEqual(perft(new Board(0x40400000L, 0x400100000000000L, 0x800000020000L, 0x810000L, 0x0L, 0x400200000000L, 0x900200c00000L, 0x400400040030000L, true, 0, 0x0L), 4), 210860); - - // gentest-2261 - assertEqual(perft(new Board(0x40400000L, 0x400000000080000L, 0x800000020000L, 0x1800000L, 0x0L, 0x400200000000L, 0x800200c80000L, 0x400400041020000L, false, 0, 0x0L), 4), 270332); - - // gentest-2262 - assertEqual(perft(new Board(0x40400000L, 0x400000400000000L, 0x800000000400L, 0x800001L, 0x0L, 0x400200000000L, 0x800600c00000L, 0x400400040000401L, true, 0, 0x0L), 4), 330661); - - // gentest-2263 - assertEqual(perft(new Board(0x40400000L, 0x400000400000000L, 0x2000000000000400L, 0x800008L, 0x0L, 0x400004000000L, 0x2000000404c00000L, 0x400400040000408L, false, 0, 0x0L), 4), 299537); - - // gentest-2264 - assertEqual(perft(new Board(0xc00000L, 0x20400000000L, 0x2000000000000400L, 0x8L, 0x0L, 0x400002000000L, 0x2000000402400000L, 0x420000800408L, true, 0, 0x0L), 4), 262369); - - // gentest-2265 - assertEqual(perft(new Board(0xc00000L, 0x8000000040000L, 0x2000000000000400L, 0x8L, 0x0L, 0x400002000000L, 0x2000000002440000L, 0x8400000800408L, false, 0, 0x0L), 4), 263223); - - // gentest-2266 - assertEqual(perft(new Board(0xc00000L, 0x8000000040000L, 0x2000000000000400L, 0x8L, 0x0L, 0x400001000000L, 0x2000000001440000L, 0x8400000800408L, true, 0, 0x0L), 4), 65182); - - // gentest-2267 - assertEqual(perft(new Board(0xc00000L, 0x8000800000000L, 0x2000000000000400L, 0x80000000000L, 0x0L, 0x400200000000L, 0x2000000a00400000L, 0x8480000800400L, false, 0, 0x0L), 4), 145326); - - // gentest-2268 - assertEqual(perft(new Board(0xc00000L, 0x8000800000000L, 0x2000002000000000L, 0x10000000000L, 0x0L, 0x400100000000L, 0x2000000900400000L, 0x8412000800000L, true, 0, 0x0L), 4), 31139); - - // gentest-2269 - assertEqual(perft(new Board(0xc00000L, 0x8000800000000L, 0x400000400L, 0x0L, 0x0L, 0x410000000000L, 0x10c00400000L, 0x8400000800400L, false, 0, 0x0L), 4), 172553); - - // gentest-2270 - assertEqual(perft(new Board(0xc00000L, 0x200800000000L, 0x400000400L, 0x0L, 0x0L, 0x20000200000000L, 0xe00400000L, 0x20200000800400L, true, 0, 0x0L), 4), 270616); - - // gentest-2271 - assertEqual(perft(new Board(0xc00000L, 0x200800000000L, 0x480000000000L, 0x0L, 0x0L, 0x20000001000000L, 0x80801400000L, 0x20600000800000L, false, 0, 0x0L), 4), 164127); - - // gentest-2272 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2273 - assertEqual(perft(new Board(0xfd02000a00f500L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xa00f5ffL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 410437); - - // gentest-2274 - assertEqual(perft(new Board(0xe51a000a00f500L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000800L, 0xa00fdefL, 0xffe51a0000000000L, true, 0, 0x8100000000000000L), 4), 590254); - - // gentest-2275 - assertEqual(perft(new Board(0xc53a008b007400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000800L, 0x8b007cefL, 0xffc53a0000000000L, false, 0, 0x8100000000000000L), 4), 542851); - - // gentest-2276 - assertEqual(perft(new Board(0xc13a04ab005400L, 0x210000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000800L, 0xab005cefL, 0xbfd13a0400000000L, true, 0, 0x8100000000000000L), 4), 685987); - - // gentest-2277 - assertEqual(perft(new Board(0x413ac4ab001400L, 0x210000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000800L, 0x40ab001cefL, 0xbf513a8400000000L, false, 0, 0x8100000000000000L), 4), 711215); - - // gentest-2278 - assertEqual(perft(new Board(0x411ac4ab001400L, 0x200000800000042L, 0x2400000000000024L, 0x8100000000800001L, 0x800000000000008L, 0x1000000000000800L, 0xab801c6fL, 0xbf411acc00000000L, true, 0, 0x8100000000000000L), 4), 1164017); - - // gentest-2279 - assertEqual(perft(new Board(0x411ac6a9001400L, 0x200000800000042L, 0x2400000000000024L, 0x8100000000010001L, 0x800000000000008L, 0x20000000000800L, 0x2a9011c6fL, 0xaf611acc00000000L, false, 0, 0x0L), 4), 955645); - - // gentest-2280 - assertEqual(perft(new Board(0x411ac6a9001400L, 0x8000002000042L, 0x2400000000000024L, 0x8100000000800001L, 0x800000000000008L, 0x20000000000800L, 0x2a9801c6fL, 0xad691ac402000000L, true, 0, 0x0L), 4), 1135849); - - // gentest-2281 - assertEqual(perft(new Board(0x411ac6a9001400L, 0x8000002000042L, 0x2400000000100020L, 0x100800000800001L, 0x800000000000008L, 0x20000000040000L, 0x2a994146bL, 0x2d699ac402000000L, false, 0, 0x0L), 4), 868968); - - // gentest-2282 - assertEqual(perft(new Board(0x411ac6a9001400L, 0x8000000000046L, 0x2400000000100020L, 0x100800000800001L, 0x800000000000008L, 0x20000004000000L, 0x2ad90146bL, 0x2d699ac400000004L, true, 0, 0x0L), 4), 726519); - - // gentest-2283 - assertEqual(perft(new Board(0x411ad6a1001400L, 0x46L, 0x2400000000002020L, 0x100800000800001L, 0x800000000000008L, 0x20000004000000L, 0x12a580346bL, 0x2d619ac400000004L, false, 0, 0x0L), 4), 1143051); - - // gentest-2284 - assertEqual(perft(new Board(0x411ad6a1001400L, 0x46L, 0x2400000000006000L, 0x8100000000800001L, 0x800000000000008L, 0x4000000004000000L, 0x12a580744bL, 0xed411ac400000004L, true, 0, 0x0L), 4), 1338103); - - // gentest-2285 - assertEqual(perft(new Board(0x411a96a1001400L, 0x46L, 0x2400000000006000L, 0x100804000000001L, 0x800000000000008L, 0x4000000004000000L, 0x52a500744bL, 0x6d419a8400000004L, false, 0, 0x0L), 4), 1196993); - - // gentest-2286 - assertEqual(perft(new Board(0x411a96a1001400L, 0x46L, 0x2008000000404000L, 0x100804000000001L, 0x4000000000008L, 0x4000000004000000L, 0x52a540544bL, 0x614d9a8400000004L, true, 0, 0x0L), 4), 1223635); - - // gentest-2287 - assertEqual(perft(new Board(0x11a96a1001400L, 0x46L, 0x2008000000404000L, 0x100800000000001L, 0x4000000080000L, 0x40000004000000L, 0x12a5485443L, 0x214d9a8400000004L, false, 0, 0x0L), 4), 1078491); - - // gentest-2288 - assertEqual(perft(new Board(0x11296a1001400L, 0x46L, 0x2008000000404000L, 0x400800000000001L, 0x4000000000800L, 0x40000004000000L, 0x2a5405c43L, 0x244d929400000004L, true, 0, 0x0L), 4), 1265706); - - // gentest-2289 - assertEqual(perft(new Board(0x11296a1001400L, 0x46L, 0x2008000800008000L, 0x400800000000001L, 0x4000000000800L, 0x200004000000L, 0xaa5009c43L, 0x240db29400000004L, false, 0, 0x0L), 4), 907444); - - // gentest-2290 - assertEqual(perft(new Board(0x11296a1001400L, 0x46L, 0x200a000000008000L, 0x100800000000001L, 0x4000000000800L, 0x40000004000000L, 0x20002a5009c43L, 0x214d929400000004L, true, 0, 0x0L), 4), 1221717); - - // gentest-2291 - assertEqual(perft(new Board(0x11296a1001400L, 0x200006L, 0x2008000010008000L, 0x180000000000001L, 0x4000000000800L, 0x40000004000000L, 0x2b5209c03L, 0x21cd129400000004L, false, 0, 0x0L), 4), 1145212); - - // gentest-2292 - assertEqual(perft(new Board(0x1396a1001400L, 0x200006L, 0x2008000010008000L, 0x8100000000000001L, 0x4000800000000L, 0x40000004000000L, 0xab5209403L, 0xa14c139400000004L, true, 0, 0x0L), 4), 1172284); - - // gentest-2293 - assertEqual(perft(new Board(0x1396a1001400L, 0x200804L, 0x2008000000088000L, 0x4100000000000001L, 0x4000800000000L, 0x40000004000000L, 0xaa5289c01L, 0x614c139400000004L, false, 0, 0x0L), 4), 1175527); - - // gentest-2294 - assertEqual(perft(new Board(0x1396a1001400L, 0x200804L, 0x2400000000088000L, 0x4000000000000001L, 0x300000000000000L, 0x40000004000000L, 0x1000002a5289c01L, 0x6640139400000004L, true, 0, 0x0L), 4), 568621); - - // gentest-2295 - assertEqual(perft(new Board(0x139681001400L, 0x814L, 0x410000000088000L, 0x4000000000000001L, 0x300000000000000L, 0x40000004000000L, 0x100001285089c11L, 0x4650138400000004L, false, 0, 0x0L), 4), 830250); - - // gentest-2296 - assertEqual(perft(new Board(0x139681001400L, 0x24800L, 0x410000000088000L, 0x2000000000000001L, 0x300000000000000L, 0x40000004000000L, 0x10000128508dc01L, 0x2650138400020000L, true, 0, 0x0L), 4), 1536203); - - // gentest-2297 - assertEqual(perft(new Board(0x139681001400L, 0x24800L, 0x410000010008000L, 0x2000000000000008L, 0x101000000000000L, 0x40000004000000L, 0x10000129500dc08L, 0x2451138400020000L, false, 0, 0x0L), 4), 1387642); - - // gentest-2298 - assertEqual(perft(new Board(0x139681001400L, 0x24020L, 0x410000010008000L, 0x8L, 0x101000000000000L, 0x40000004000000L, 0x10000129500d420L, 0x451138400020008L, true, 0, 0x0L), 4), 974333); - - // gentest-2299 - assertEqual(perft(new Board(0x139681001400L, 0x24020L, 0x410000010008000L, 0x4L, 0x201000000000000L, 0x40000000080000L, 0x20000129108d420L, 0x451138400020004L, false, 0, 0x0L), 4), 829657); - - // gentest-2300 - assertEqual(perft(new Board(0x139681001000L, 0x24020L, 0x410000010008000L, 0x4L, 0x101000000000000L, 0x40000000080000L, 0x10000129108d020L, 0x451138400020004L, true, 0, 0x0L), 4), 675675); - - // gentest-2301 - assertEqual(perft(new Board(0x139780100000L, 0x24020L, 0x18000010008000L, 0x4L, 0x101000000000000L, 0x40000000080000L, 0x10000139018c020L, 0x59138400020004L, false, 0, 0x0L), 4), 569640); - - // gentest-2302 - assertEqual(perft(new Board(0x139780100000L, 0x8004020L, 0x18000030000000L, 0x10L, 0x101000000000000L, 0x40000000080000L, 0x1000013b0184020L, 0x59138408000010L, true, 0, 0x0L), 4), 774598); - - // gentest-2303 - assertEqual(perft(new Board(0x139780100000L, 0x2000000030L, 0x18800010000000L, 0x0L, 0x101000000000000L, 0x40000000080000L, 0x100801390180030L, 0x5913a400000000L, false, 0, 0x0L), 4), 111912); - - // gentest-2304 - assertEqual(perft(new Board(0x139780100000L, 0x800000000030L, 0x1010000010000000L, 0x0L, 0x1000000000000L, 0x40000000080000L, 0x1001390180030L, 0x1050938400000000L, true, 0, 0x0L), 4), 273653); - - // gentest-2305 - assertEqual(perft(new Board(0x139780100000L, 0x20000000000030L, 0x1000000010000000L, 0x0L, 0x10000000000000L, 0x40000000000800L, 0x10001390100830L, 0x1060138400000000L, false, 0, 0x0L), 4), 144956); - - // gentest-2306 - assertEqual(perft(new Board(0x139780100000L, 0x20000000000030L, 0x8000010000000L, 0x0L, 0x10000000000000L, 0x8000000000001000L, 0x10001390101030L, 0x8028138400000000L, true, 0, 0x0L), 4), 195936); - - // gentest-2307 - assertEqual(perft(new Board(0x139384100000L, 0x20000000000810L, 0x10000000L, 0x0L, 0x8000000000000L, 0x8000000000001000L, 0x8001390101810L, 0x8020138004000000L, false, 0, 0x0L), 4), 154929); - - // gentest-2308 - assertEqual(perft(new Board(0x139380140000L, 0x800000000810L, 0x10000000L, 0x0L, 0x80000000000L, 0x8000000000001000L, 0x81390101810L, 0x8000938000040000L, true, 0, 0x0L), 4), 175344); - - // gentest-2309 - assertEqual(perft(new Board(0x129380140000L, 0x800000000810L, 0x80L, 0x0L, 0x10000L, 0x8000000000001000L, 0x1180111890L, 0x8000928200040000L, false, 0, 0x0L), 4), 156793); - - // gentest-2310 - assertEqual(perft(new Board(0x129380100000L, 0x800000000010L, 0x100000000000008L, 0x0L, 0x10000L, 0x8000000000001000L, 0x100001180111010L, 0x8000928200000008L, true, 0, 0x0L), 4), 27575); - - // gentest-2311 - assertEqual(perft(new Board(0x109380100000L, 0x800000000010L, 0x100000000000008L, 0x0L, 0x10000L, 0x8000000000000040L, 0x100001080110050L, 0x8000908300000008L, false, 0, 0x0L), 4), 196308); - - // gentest-2312 - assertEqual(perft(new Board(0x109380100000L, 0x20000000000010L, 0x100000000000400L, 0x0L, 0x10000L, 0x8000000000002000L, 0x100001080112010L, 0x8020108300000400L, true, 0, 0x0L), 4), 290336); - - // gentest-2313 - assertEqual(perft(new Board(0x109380100000L, 0x20000000080000L, 0x2400000000000L, 0x0L, 0x10000L, 0x8000000000002000L, 0x2001080192000L, 0x8020508300000000L, false, 0, 0x0L), 4), 248315); - - // gentest-2314 - assertEqual(perft(new Board(0x109281100000L, 0x20000000080000L, 0x2400000000000L, 0x0L, 0x10000L, 0x80000000000010L, 0x2001080190010L, 0xa0508201000000L, true, 0, 0x0L), 4), 235513); - - // gentest-2315 - assertEqual(perft(new Board(0x109281100000L, 0x800000000000004L, 0x2400000000000L, 0x0L, 0x10000L, 0x80000000000800L, 0x2001080110804L, 0x880508201000000L, false, 0, 0x0L), 4), 185174); - - // gentest-2316 - assertEqual(perft(new Board(0x109281100000L, 0x800000000000004L, 0x2400000000000L, 0x0L, 0x10000L, 0x80000000000010L, 0x2001080110014L, 0x880508201000000L, true, 0, 0x0L), 4), 205984); - - // gentest-2317 - assertEqual(perft(new Board(0x109280100000L, 0x800000000000004L, 0x400000000080L, 0x0L, 0x1000000L, 0x4000000000000010L, 0x1081100094L, 0x4800508200000000L, false, 0, 0x0L), 4), 284583); - - // gentest-2318 - assertEqual(perft(new Board(0x109082100000L, 0x800000000000004L, 0x400000000080L, 0x0L, 0x1000000L, 0x20000000001000L, 0x1081101084L, 0x820508002000000L, true, 0, 0x0L), 4), 165367); - - // gentest-2319 - assertEqual(perft(new Board(0x109092000000L, 0x800000000000004L, 0x400000000080L, 0x0L, 0x1000000L, 0x4000000000000800L, 0x1091000884L, 0x4800508002000000L, false, 0, 0x0L), 4), 129817); - - // gentest-2320 - assertEqual(perft(new Board(0x109092000000L, 0x800000000000004L, 0x1000000000004000L, 0x0L, 0x1000000L, 0x20000000000800L, 0x1091004804L, 0x1820108002000000L, true, 0, 0x0L), 4), 112894); - - // gentest-2321 - assertEqual(perft(new Board(0x109092000000L, 0x800000000000100L, 0x1000000000004000L, 0x0L, 0x1000000L, 0x400000100000L, 0x1091104100L, 0x1800508002000000L, false, 0, 0x0L), 4), 110903); - - // gentest-2322 - assertEqual(perft(new Board(0x109092000000L, 0x800000000000100L, 0x20000000004000L, 0x0L, 0x1000000L, 0x80000000001000L, 0x1091005100L, 0x8a0108002000000L, true, 0, 0x0L), 4), 89225); - - // gentest-2323 - assertEqual(perft(new Board(0x109092000000L, 0x800000000000004L, 0x20000000200000L, 0x0L, 0x1000000L, 0x400000001000L, 0x1091201004L, 0x820508002000000L, false, 0, 0x0L), 4), 67132); - - // gentest-2324 - assertEqual(perft(new Board(0x109092000000L, 0x800000000000004L, 0x4000000000200000L, 0x0L, 0x1000000000000000L, 0x80000000001000L, 0x1000001090201004L, 0x4880108002000000L, true, 0, 0x0L), 4), 41125); - - // gentest-2325 - assertEqual(perft(new Board(0x109092000000L, 0x800000000000004L, 0x4000000040000000L, 0x0L, 0x1000000000000000L, 0x800000000008L, 0x10000010d000000cL, 0x4800908002000000L, false, 0, 0x0L), 4), 54886); - - // gentest-2326 - assertEqual(perft(new Board(0x109092000000L, 0x4L, 0x80000040000000L, 0x0L, 0x20000000000000L, 0x800000000008L, 0x200010d000000cL, 0x80908002000000L, true, 0, 0x0L), 4), 32984); - - // gentest-2327 - assertEqual(perft(new Board(0x109092000000L, 0x4L, 0x80002000000000L, 0x0L, 0x0L, 0x40000000000008L, 0x309000000cL, 0xc0108002000000L, false, 0, 0x0L), 4), 14075); - - // gentest-2328 - assertEqual(perft(new Board(0x109092000000L, 0x1000L, 0x402000000000L, 0x0L, 0x0L, 0x2000000000000008L, 0x3090001008L, 0x2000508002000000L, true, 0, 0x0L), 4), 21909); - - // gentest-2329 - assertEqual(perft(new Board(0x109092000000L, 0x40L, 0x402000000000L, 0x0L, 0x0L, 0x10000000000400L, 0x3090000440L, 0x10508002000000L, false, 0, 0x0L), 4), 19313); - - // gentest-2330 - assertEqual(perft(new Board(0x109090020000L, 0x40L, 0x20002000000000L, 0x0L, 0x0L, 0x10000000000800L, 0x3090000840L, 0x30108000020000L, true, 0, 0x0L), 4), 18785); - - // gentest-2331 - assertEqual(perft(new Board(0x109090000200L, 0x40L, 0x20002000000000L, 0x0L, 0x0L, 0x10000000040000L, 0x3090040040L, 0x30108000000200L, false, 0, 0x0L), 4), 30911); - - // gentest-2332 - assertEqual(perft(new Board(0x109090000200L, 0x40L, 0x400000000000L, 0x0L, 0x0L, 0x8000000040000L, 0x401090040040L, 0x8108000000200L, true, 0, 0x0L), 4), 20107); - - // gentest-2333 - assertEqual(perft(new Board(0x109090000200L, 0x200000L, 0x400000000000L, 0x0L, 0x0L, 0x40000020000L, 0x401090220000L, 0x148000000200L, false, 0, 0x0L), 4), 22617); - - // gentest-2334 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x400000000000L, 0x0L, 0x2L, 0x4000000020000L, 0x401090028000L, 0x4108000000002L, true, 0, 0x0L), 4), 19828); - - // gentest-2335 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x400000000000L, 0x0L, 0x0L, 0x4000000000200L, 0x401090008200L, 0x4108000000000L, false, 0, 0x0L), 4), 10223); - - // gentest-2336 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x1000000000000000L, 0x0L, 0x0L, 0x10000000200L, 0x1000001090008200L, 0x118000000000L, true, 0, 0x0L), 4), 7230); - - // gentest-2337 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x1000000000001L, 0x8001090008001L, 0x1108000000000L, false, 0, 0x0L), 4), 3998); - - // gentest-2338 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x1000000000002L, 0x8001090008002L, 0x1108000000000L, true, 0, 0x0L), 4), 4997); - - // gentest-2339 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x200000000020000L, 0x8001090028000L, 0x200108000000000L, false, 0, 0x0L), 4), 5361); - - // gentest-2340 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x200000000010000L, 0x8001090018000L, 0x200108000000000L, true, 0, 0x0L), 4), 4346); - - // gentest-2341 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x100000100000000L, 0x8001190008000L, 0x100108000000000L, false, 0, 0x0L), 4), 2171); - - // gentest-2342 - assertEqual(perft(new Board(0x109090000000L, 0x8000L, 0x40000000000L, 0x0L, 0x0L, 0x200000100000000L, 0x41190008000L, 0x200108000000000L, true, 0, 0x0L), 4), 2717); - - // gentest-2343 - assertEqual(perft(new Board(0x109090000000L, 0x20L, 0x40000000000L, 0x0L, 0x0L, 0x1000200000000L, 0x41290000020L, 0x1108000000000L, false, 0, 0x0L), 4), 782); - - // gentest-2344 - assertEqual(perft(new Board(0x109090000000L, 0x20L, 0x40000000000L, 0x0L, 0x0L, 0x1000001000000L, 0x41091000020L, 0x1108000000000L, true, 0, 0x0L), 4), 2824); - - // gentest-2345 - assertEqual(perft(new Board(0x109090000000L, 0x20L, 0x200000000L, 0x0L, 0x0L, 0x200000002000000L, 0x1292000020L, 0x200108000000000L, false, 0, 0x0L), 4), 7798); - - // gentest-2346 - assertEqual(perft(new Board(0x109090000000L, 0x20L, 0x10000000000L, 0x0L, 0x0L, 0x200000002000000L, 0x11092000020L, 0x200108000000000L, true, 0, 0x0L), 4), 4489); - - // gentest-2347 - assertEqual(perft(new Board(0x109090000000L, 0x800L, 0x10000000000L, 0x0L, 0x0L, 0x1000400000000L, 0x11490000800L, 0x1108000000000L, false, 0, 0x0L), 4), 2134); - - // gentest-2348 - assertEqual(perft(new Board(0x109090000000L, 0x800L, 0x4000000L, 0x0L, 0x0L, 0x2000400000000L, 0x1494000800L, 0x2108000000000L, true, 0, 0x0L), 4), 6633); - - // gentest-2349 - assertEqual(perft(new Board(0x109090000000L, 0x200000L, 0x4000000L, 0x0L, 0x0L, 0x400000002000000L, 0x1096200000L, 0x400108000000000L, false, 0, 0x0L), 4), 12689); - - // gentest-2350 - assertEqual(perft(new Board(0x109090000000L, 0x200000L, 0x80000L, 0x0L, 0x0L, 0x400000002000000L, 0x1092280000L, 0x400108000000000L, true, 0, 0x0L), 4), 11113); - - // gentest-2351 - assertEqual(perft(new Board(0x109090000000L, 0x200000L, 0x400L, 0x0L, 0x0L, 0x4000000020000L, 0x1090220400L, 0x4108000000000L, false, 0, 0x0L), 4), 10558); - - // gentest-2352 - assertEqual(perft(new Board(0x109090000000L, 0x200000L, 0x400L, 0x0L, 0x0L, 0x10001000000L, 0x1091200400L, 0x118000000000L, true, 0, 0x0L), 4), 3590); - - // gentest-2353 - assertEqual(perft(new Board(0x109090000000L, 0x200000000L, 0x400L, 0x0L, 0x0L, 0x20001000000L, 0x1291000400L, 0x128000000000L, false, 0, 0x0L), 4), 3073); - - // gentest-2354 - assertEqual(perft(new Board(0x109090000000L, 0x200000000L, 0x20000L, 0x0L, 0x0L, 0x40001000000L, 0x1291020000L, 0x148000000000L, true, 0, 0x0L), 4), 4544); - - // gentest-2355 - assertEqual(perft(new Board(0x109090000000L, 0x80000000000L, 0x4000000L, 0x0L, 0x0L, 0x20001000000L, 0x81095000000L, 0x128000000000L, false, 0, 0x0L), 4), 5536); - - // gentest-2356 - assertEqual(perft(new Board(0x109090000000L, 0x80000000000L, 0x80000L, 0x0L, 0x0L, 0x40001000000L, 0x81091080000L, 0x148000000000L, true, 0, 0x0L), 4), 5629); - - // gentest-2357 - assertEqual(perft(new Board(0x109090000000L, 0x80000000000L, 0x4000L, 0x0L, 0x0L, 0x20001000000L, 0x81091004000L, 0x128000000000L, false, 0, 0x0L), 4), 4335); - - // gentest-2358 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2359 - assertEqual(perft(new Board(0xfe00010800f700L, 0x4200000000000840L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x800fffdL, 0xfffe000100000000L, false, 0, 0x8100000000000081L), 4), 286109); - - // gentest-2360 - assertEqual(perft(new Board(0xfc02010800f700L, 0x4200000000000840L, 0x2400000000000024L, 0x8000010000000082L, 0x800000000000008L, 0x1000000000000010L, 0x800fffeL, 0xfefc030100000000L, true, 0, 0x8000000000000080L), 4), 245032); - - // gentest-2361 - assertEqual(perft(new Board(0xfc02011800e700L, 0x200800000200800L, 0x2400000000000024L, 0x8000010000000082L, 0x800000000000008L, 0x1000000000000010L, 0x1820efbeL, 0xbefc830100000000L, false, 0, 0x8000000000000080L), 4), 362660); - - // gentest-2362 - assertEqual(perft(new Board(0xfc02001900e700L, 0x200800000200800L, 0x2400000004000004L, 0x8100000000000082L, 0x800000000000008L, 0x1000000000000010L, 0x1c20ef9eL, 0xbffc820001000000L, true, 0, 0x8000000000000080L), 4), 558141); - - // gentest-2363 - assertEqual(perft(new Board(0xfc02001a01e500L, 0x200800000200800L, 0x2400000004000004L, 0x8100000000000082L, 0x800000000001000L, 0x1000000000000010L, 0x1e20fd96L, 0xbffc820000010000L, false, 0, 0x8000000000000080L), 4), 704424); - - // gentest-2364 - assertEqual(perft(new Board(0xdc02201a01e500L, 0x200000040200800L, 0x2400000004000004L, 0x8100000000000082L, 0x800000000000008L, 0x1000000000000010L, 0x1e20ed9eL, 0xbfdc022040010000L, true, 0, 0x8000000000000080L), 4), 917880); - - // gentest-2365 - assertEqual(perft(new Board(0xdc02201a01e500L, 0x200000040200800L, 0x2400000000020200L, 0x8000000001000082L, 0x800000000000008L, 0x1000000000000010L, 0x1a22ef9aL, 0xbedc022041010000L, false, 0, 0x8000000000000080L), 4), 1011540); - - // gentest-2366 - assertEqual(perft(new Board(0xd806300a016500L, 0x200000000208800L, 0x2400000000020200L, 0x8000000001000082L, 0x800000000000008L, 0x1000000000000010L, 0x100a226f9aL, 0xbed8062001018000L, true, 0, 0x8000000000000080L), 4), 577406); - - // gentest-2367 - assertEqual(perft(new Board(0xd802340a016500L, 0x200000000208800L, 0x2400000000060000L, 0x8000000001000084L, 0x800000000000008L, 0x1000000000000010L, 0x100a266d9cL, 0xbed8022401018000L, false, 0, 0x8000000000000080L), 4), 602092); - - // gentest-2368 - assertEqual(perft(new Board(0xd800360a016500L, 0x200000000208800L, 0x2002000000020200L, 0x8000000001000084L, 0x800000000000008L, 0x1000000000000010L, 0x100a226f9cL, 0xbada002601018000L, true, 0, 0x8000000000000080L), 4), 1083554); - - // gentest-2369 - assertEqual(perft(new Board(0xd800360a412500L, 0x200000004208000L, 0x2002000000020200L, 0x8000000001000084L, 0x800000000000008L, 0x20000000000010L, 0x100e62279cL, 0xaafa002601018000L, false, 0, 0x80L), 4), 1150678); - - // gentest-2370 - assertEqual(perft(new Board(0xd0003e0a412500L, 0x200000044200000L, 0x2002000000020200L, 0x8000000001000044L, 0x800000000000008L, 0x20000000000010L, 0x100e62275cL, 0xaaf2002e41010000L, true, 0, 0x0L), 4), 1170099); - - // gentest-2371 - assertEqual(perft(new Board(0xd0003e08402500L, 0x200000040010800L, 0x2002000000020200L, 0x8000000002000044L, 0x800000000000008L, 0x20000000000010L, 0x1008432f5cL, 0xaaf2002e42000000L, false, 0, 0x0L), 4), 1127701); - - // gentest-2372 - assertEqual(perft(new Board(0xd0001e28402500L, 0x200000040010800L, 0x2002000001000200L, 0x4000000002000044L, 0x800000000000008L, 0x20000000000010L, 0x1009412f5cL, 0x6af2000e62000000L, true, 0, 0x0L), 4), 1191489); - - // gentest-2373 - assertEqual(perft(new Board(0xd0001c28402500L, 0x200000244000000L, 0x2002000001000200L, 0x4000000000020044L, 0x800000000000008L, 0x20000000000010L, 0x120d40275cL, 0x6af2000c60020000L, false, 0, 0x0L), 4), 1846973); - - // gentest-2374 - assertEqual(perft(new Board(0xd0001c28402500L, 0x201000044000000L, 0x2002000001000200L, 0x4000000000020044L, 0x800000000000008L, 0x20000000000010L, 0x100100d40275cL, 0x6af2000c60020000L, true, 0, 0x0L), 4), 1909764); - - // gentest-2375 - assertEqual(perft(new Board(0xd0001c29402400L, 0x201000044000000L, 0x3002000000000200L, 0x4000000000020044L, 0x800000000000008L, 0x100000000010L, 0x100100100d40265cL, 0x6ad2100c60020000L, false, 0, 0x0L), 4), 1782699); - - // gentest-2376 - assertEqual(perft(new Board(0xd0001c29402400L, 0x201080040000000L, 0x3002000000000200L, 0x4000000000020044L, 0x800000000000008L, 0x100000000010L, 0x100108100940265cL, 0x6ad2100c60020000L, true, 0, 0x0L), 4), 1849913); - - // gentest-2377 - assertEqual(perft(new Board(0x50009c29402400L, 0x2000c0040000000L, 0x3002000000010000L, 0x4000000000020044L, 0x800000000000008L, 0x100000000010L, 0x10000c100941245cL, 0x6a52108c60020000L, false, 0, 0x0L), 4), 1956603); - - // gentest-2378 - assertEqual(perft(new Board(0x50009c29402400L, 0x2002c0000000000L, 0x2022000000010000L, 0x4000000000020044L, 0x800000000000008L, 0x8000000000010L, 0x200c100941245cL, 0x6a5a208c20020000L, true, 0, 0x0L), 4), 2156016); - - // gentest-2379 - assertEqual(perft(new Board(0x50009c29402000L, 0x1200240000000000L, 0x2022000000010000L, 0x4000000000040044L, 0x800000000000008L, 0x8000000000010L, 0x102004100941205cL, 0x6a5a208c20040000L, false, 0, 0x0L), 4), 1797192); - - // gentest-2380 - assertEqual(perft(new Board(0x50009c09600000L, 0x1200040000000000L, 0x2022000000010000L, 0x4000000000040044L, 0x800000000000008L, 0x8000000000010L, 0x2004100921005cL, 0x7a5a008c00440000L, true, 0, 0x0L), 4), 1005045); - - // gentest-2381 - assertEqual(perft(new Board(0x50009809600000L, 0x1200000000000000L, 0x2022000400000000L, 0x4000000000040440L, 0x800000000000008L, 0x40000000010L, 0x20001409200458L, 0x7a52048800440000L, false, 0, 0x0L), 4), 1061272); - - // gentest-2382 - assertEqual(perft(new Board(0x50009809600000L, 0x1200000000000000L, 0x2100400400000000L, 0x4000000000040440L, 0x4000000000008L, 0x40000000010L, 0x401409200458L, 0x7354048800440000L, true, 0, 0x0L), 4), 1022634); - - // gentest-2383 - assertEqual(perft(new Board(0x50009809204000L, 0x1200000000000000L, 0x2100420000000000L, 0x4000000000040440L, 0x4000000000001L, 0x40000000010L, 0x421009200451L, 0x7354048800044000L, false, 0, 0x0L), 4), 634539); - - // gentest-2384 - assertEqual(perft(new Board(0x50009809204000L, 0x1008000000000000L, 0x2100420000000000L, 0x4000000000000440L, 0x4000000000100L, 0x40000000010L, 0x421009200150L, 0x715c048800004400L, true, 0, 0x0L), 4), 537978); - - // gentest-2385 - assertEqual(perft(new Board(0x50009809204000L, 0x1008000000000000L, 0x2120000000000000L, 0x4000000000000040L, 0x4000000000400L, 0x20000000010L, 0x20001009200450L, 0x715c028800004000L, false, 0, 0x0L), 4), 727613); - - // gentest-2386 - assertEqual(perft(new Board(0x50008809004000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000040L, 0x4000000000400L, 0x20000000800L, 0x20000009000c40L, 0x7154028800204000L, true, 0, 0x0L), 4), 173258); - - // gentest-2387 - assertEqual(perft(new Board(0x50008809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000040L, 0x2000000004000L, 0x20000080000L, 0x20000009084040L, 0x7152028800200000L, false, 0, 0x0L), 4), 809651); - - // gentest-2388 - assertEqual(perft(new Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000040L, 0x10000004000L, 0x20000040000L, 0x20000009044040L, 0x7140138800200000L, true, 0, 0x0L), 4), 1136179); - - // gentest-2389 - assertEqual(perft(new Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000004000L, 0x10000400000L, 0x1000000040000L, 0x20000009444000L, 0x7141118800200000L, false, 0, 0x0L), 4), 997382); - - // gentest-2390 - assertEqual(perft(new Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000004000L, 0x20000400000L, 0x1000000020000L, 0x20000009424000L, 0x7141128800200000L, true, 0, 0x0L), 4), 117817); - - // gentest-2391 - assertEqual(perft(new Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000200L, 0x400000L, 0x1000000000100L, 0x20000009400300L, 0x7141108800200000L, false, 0, 0x0L), 4), 813569); - - // gentest-2392 - assertEqual(perft(new Board(0x40008809000000L, 0x1000000000200000L, 0x100100400000000L, 0x4000000000000200L, 0x400000L, 0x1000000000100L, 0x100009400300L, 0x5141008c00200000L, true, 0, 0x0L), 4), 1021759); - - // gentest-2393 - assertEqual(perft(new Board(0x40008809000000L, 0x1000000000200000L, 0x2100100000000000L, 0x4000000000000200L, 0x800L, 0x1000000000100L, 0x100009000b00L, 0x7141008800200000L, false, 0, 0x0L), 4), 672612); - - // gentest-2394 - assertEqual(perft(new Board(0x40008809000000L, 0x1000000000200000L, 0x140000010000L, 0x4000000000000200L, 0x8000L, 0x1000000000100L, 0x100009008300L, 0x5041048800210000L, true, 0, 0x0L), 4), 1170120); - - // gentest-2395 - assertEqual(perft(new Board(0x40008809000000L, 0x1000000000000010L, 0x40000810000L, 0x4000000000000002L, 0x8000L, 0x1000000000100L, 0x9808102L, 0x5041048800010010L, false, 0, 0x0L), 4), 833284); - - // gentest-2396 - assertEqual(perft(new Board(0xc809000000L, 0x1000000000000010L, 0x108000000010000L, 0x4000000000000002L, 0x8000L, 0x1000000000100L, 0x8000009008102L, 0x510100c800010010L, true, 0, 0x0L), 4), 804208); - - // gentest-2397 - assertEqual(perft(new Board(0xc809000000L, 0x1000000000000010L, 0x108000000000000L, 0x4000000000000000L, 0x8000L, 0x2000000010000L, 0x8000009018000L, 0x510200c800000010L, false, 0, 0x0L), 4), 239912); - - // gentest-2398 - assertEqual(perft(new Board(0x4889000000L, 0x1000000000000400L, 0x108000000000000L, 0x4000000000000000L, 0x8000L, 0x2000000000200L, 0x8000009008200L, 0x5102004880000400L, true, 0, 0x0L), 4), 290132); - - // gentest-2399 - assertEqual(perft(new Board(0x4889000000L, 0x80000000400L, 0x108000000000000L, 0x4000000000000000L, 0x4L, 0x2000000000200L, 0x8000009000204L, 0x4102084880000400L, false, 0, 0x0L), 4), 508790); - - // gentest-2400 - assertEqual(perft(new Board(0x4889000000L, 0x2000000000L, 0x108000000000000L, 0x1000000000000000L, 0x400L, 0x2000000000200L, 0x8000009000600L, 0x1102006880000000L, true, 0, 0x0L), 4), 390970); - } - - public static void batch6() { - // gentest-2401 - assertEqual(perft(new Board(0x8c9000000L, 0x2000000000L, 0x108000000000000L, 0x1000000000000000L, 0x40000L, 0x2000000000200L, 0x8000009040200L, 0x11020028c0000000L, false, 0, 0x0L), 4), 447494); - - // gentest-2402 - assertEqual(perft(new Board(0x8c9000000L, 0x400000L, 0x100000200000000L, 0x100000000000L, 0x40000L, 0x2000000000200L, 0x209040200L, 0x1021008c0400000L, true, 0, 0x0L), 4), 416404); - - // gentest-2403 - assertEqual(perft(new Board(0x8c9000000L, 0x400000L, 0x100000200000000L, 0x10L, 0x20000L, 0x2000000000200L, 0x209020200L, 0x1020008c0400010L, false, 0, 0x0L), 4), 280167); - - // gentest-2404 - assertEqual(perft(new Board(0x8c9000000L, 0x2000000000L, 0x100000000001000L, 0x10L, 0x20000L, 0x400000000000200L, 0x9021200L, 0x5000028c0000010L, true, 0, 0x0L), 4), 317104); - - // gentest-2405 - assertEqual(perft(new Board(0x8c1000000L, 0x8000000L, 0x100000000001000L, 0x10L, 0x40000L, 0x400000000000200L, 0x1041200L, 0x5000008c8000010L, false, 0, 0x0L), 4), 105085); - - // gentest-2406 - assertEqual(perft(new Board(0x8c1000000L, 0x8000000L, 0x40000200000L, 0x1000L, 0x40000L, 0x400000000000200L, 0x1240200L, 0x4000408c8001000L, true, 0, 0x0L), 4), 102750); - - // gentest-2407 - assertEqual(perft(new Board(0xc1000000L, 0x8000000L, 0x40800000000L, 0x1000L, 0x40000L, 0x4000000000004L, 0x801040004L, 0x40400c8001000L, false, 0, 0x0L), 4), 653453); - - // gentest-2408 - assertEqual(perft(new Board(0xc0000000L, 0x8000000L, 0x40800000000L, 0x100000000L, 0x40000L, 0x4000000000004L, 0x800040004L, 0x40401c8000000L, true, 0, 0x0L), 4), 698430); - - // gentest-2409 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x40000000100L, 0x100000000L, 0x8000000L, 0x20000000004L, 0x8000104L, 0x601c0000000L, false, 0, 0x0L), 4), 106162); - - // gentest-2410 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x40000000000L, 0x100L, 0x80000000000L, 0x200000004L, 0x80000000004L, 0x402c0000100L, true, 0, 0x0L), 4), 254555); - - // gentest-2411 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x100L, 0x400000000000000L, 0x200000004L, 0x400000000000004L, 0x20002c0000100L, false, 0, 0x0L), 4), 230622); - - // gentest-2412 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80L, 0x100L, 0x2000000000000L, 0x400000004L, 0x2000000000004L, 0x4c0000180L, true, 0, 0x0L), 4), 175501); - - // gentest-2413 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80L, 0x2000L, 0x10000000000L, 0x400000002L, 0x10000000002L, 0x4c0002080L, false, 0, 0x0L), 4), 197432); - - // gentest-2414 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x2000L, 0x1000000000000L, 0x800000002L, 0x1000000000002L, 0x20008c0002000L, true, 0, 0x0L), 4), 95487); - - // gentest-2415 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x2000L, 0x40000L, 0x40000000002L, 0x40002L, 0x20400c0002000L, false, 0, 0x0L), 4), 56357); - - // gentest-2416 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x2000L, 0x0L, 0x40000000002L, 0x2L, 0x20400c0002000L, true, 0, 0x0L), 4), 2892); - - // gentest-2417 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x800L, 0x0L, 0x40000000002L, 0x2L, 0x20400c0000800L, false, 0, 0x0L), 4), 5835); - - // gentest-2418 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80L, 0x800L, 0x0L, 0x20000000004L, 0x4L, 0x200c0000880L, true, 0, 0x0L), 4), 4681); - - // gentest-2419 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80L, 0x8L, 0x0L, 0x20000000100L, 0x100L, 0x200c0000088L, false, 0, 0x0L), 4), 14920); - - // gentest-2420 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x80L, 0x1L, 0x0L, 0x20000020000L, 0x20000L, 0x200c0000081L, true, 0, 0x0L), 4), 20956); - - // gentest-2421 - assertEqual(perft(new Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x1L, 0x0L, 0x20000040000L, 0x40000L, 0x20200c0000001L, false, 0, 0x0L), 4), 33631); - - // gentest-2422 - assertEqual(perft(new Board(0x40800000L, 0x0L, 0x2000000000000L, 0x4L, 0x0L, 0x20008000000L, 0x8000000L, 0x2020040800004L, true, 0, 0x0L), 4), 15063); - - // gentest-2423 - assertEqual(perft(new Board(0x40800000L, 0x0L, 0x100000000000000L, 0x4L, 0x0L, 0x20008000000L, 0x8000000L, 0x100020040800004L, false, 0, 0x0L), 4), 15940); - - // gentest-2424 - assertEqual(perft(new Board(0x40800000L, 0x0L, 0x100000000000000L, 0x800000000000L, 0x0L, 0x20010000000L, 0x10000000L, 0x100820040800000L, true, 0, 0x0L), 4), 20833); - - // gentest-2425 - assertEqual(perft(new Board(0x40800000L, 0x0L, 0x40000000000L, 0x800000000000L, 0x0L, 0x20000400000L, 0x400000L, 0x860040800000L, false, 0, 0x0L), 4), 13010); - - // gentest-2426 - assertEqual(perft(new Board(0x40008000L, 0x0L, 0x100000000000000L, 0x800000000000L, 0x0L, 0x20020000000L, 0x20000000L, 0x100820040008000L, true, 0, 0x0L), 4), 22699); - - // gentest-2427 - assertEqual(perft(new Board(0x40008000L, 0x0L, 0x100000000000000L, 0x800000000000L, 0x0L, 0x108000000L, 0x8000000L, 0x100800140008000L, false, 0, 0x0L), 4), 22085); - - // gentest-2428 - assertEqual(perft(new Board(0x40008000L, 0x0L, 0x10000000L, 0x10000000000L, 0x0L, 0x104000000L, 0x4000000L, 0x10150008000L, true, 0, 0x0L), 4), 15305); - - // gentest-2429 - assertEqual(perft(new Board(0x40008000L, 0x0L, 0x10000000L, 0x20000000000L, 0x0L, 0x104000000L, 0x4000000L, 0x20150008000L, false, 0, 0x0L), 4), 16111); - - // gentest-2430 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x10000000L, 0x800000000080L, 0x0L, 0x100020000L, 0x20000L, 0x800150000080L, true, 0, 0x0L), 4), 29208); - - // gentest-2431 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x10000000L, 0x800000000002L, 0x0L, 0x108000000L, 0x8000000L, 0x800150000002L, false, 0, 0x0L), 4), 40565); - - // gentest-2432 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x10000000L, 0x8000000000000002L, 0x0L, 0x20004000000L, 0x4000000L, 0x8000020050000002L, true, 0, 0x0L), 4), 16108); - - // gentest-2433 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x800000000000002L, 0x0L, 0x20010000000L, 0x10000000L, 0x800020040000002L, false, 0, 0x0L), 4), 26923); - - // gentest-2434 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x1000000000000002L, 0x0L, 0x208000000L, 0x8000000L, 0x1000000240000002L, true, 0, 0x0L), 4), 11349); - - // gentest-2435 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x1000000002000000L, 0x0L, 0x80200000000L, 0x80000000000L, 0x1000000242000000L, false, 0, 0x0L), 4), 11228); - - // gentest-2436 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x1400000000000000L, 0x0L, 0xa00000000L, 0x800000000L, 0x1400000240000000L, true, 0, 0x0L), 4), 4039); - - // gentest-2437 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x1400000000000000L, 0x0L, 0x40004000000L, 0x4000000L, 0x1400040040000000L, false, 0, 0x0L), 4), 13249); - - // gentest-2438 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x8800000000000000L, 0x0L, 0x40008000000L, 0x8000000L, 0x8800040040000000L, true, 0, 0x0L), 4), 21442); - - // gentest-2439 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x8800000000000000L, 0x0L, 0x20000001000L, 0x1000L, 0x8800020040000000L, false, 0, 0x0L), 4), 19687); - - // gentest-2440 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x800000000800000L, 0x0L, 0x400002000L, 0x2000L, 0x800000440800000L, true, 0, 0x0L), 4), 22613); - - // gentest-2441 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x800008000000000L, 0x0L, 0x400002000L, 0x2000L, 0x800008440000000L, false, 0, 0x0L), 4), 27501); - - // gentest-2442 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x800800000L, 0x0L, 0x400000040L, 0x40L, 0xc40800000L, true, 0, 0x0L), 4), 13649); - - // gentest-2443 - assertEqual(perft(new Board(0x40000000L, 0x0L, 0x0L, 0x80000800000L, 0x0L, 0x400000040L, 0x40L, 0x80440800000L, false, 0, 0x0L), 4), 15240); - - // gentest-2444 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2445 - assertEqual(perft(new Board(0xfe00012400db00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2400dbffL, 0xfffe000100000000L, false, 0, 0x8100000000000081L), 4), 264710); - - // gentest-2446 - assertEqual(perft(new Board(0xfa00052400db00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x20000000008L, 0x1000000000002000L, 0x2400fbefL, 0xf7fa020500000000L, true, 0, 0x8100000000000000L), 4), 630906); - - // gentest-2447 - assertEqual(perft(new Board(0xfa00052500da00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x2500daffL, 0xb7fa220500000000L, false, 0, 0x8100000000000000L), 4), 418219); - - // gentest-2448 - assertEqual(perft(new Board(0xf2000d25009a00L, 0x200200000000042L, 0x2000000040000024L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x25009affL, 0xb3f2220d40000000L, true, 0, 0x8100000000000000L), 4), 739981); - - // gentest-2449 - assertEqual(perft(new Board(0xf2000d25108a00L, 0x240000000042L, 0x2000000040000024L, 0x8100000000000081L, 0x20000200000L, 0x1000000000000010L, 0x25308af7L, 0xb1f2260d40000000L, false, 0, 0x8100000000000000L), 4), 1573356); - - // gentest-2450 - assertEqual(perft(new Board(0xf2000d25108a00L, 0x8008000042L, 0x2000000000000024L, 0x8100000000000081L, 0x20040000000L, 0x1000000000000010L, 0x65108af7L, 0xb1f2028d08000000L, true, 0, 0x8100000000000000L), 4), 1711230); - - // gentest-2451 - assertEqual(perft(new Board(0xf2000525108800L, 0x8008000042L, 0x2000000000000024L, 0x8100000000000081L, 0x800000200L, 0x1000000000000010L, 0x8251088f7L, 0xb1f2008508000200L, false, 0, 0x8100000000000000L), 4), 1369674); - - // gentest-2452 - assertEqual(perft(new Board(0xf0040525108800L, 0x8008000042L, 0x2000000000000024L, 0x8100000000000081L, 0x100L, 0x1000000000000010L, 0x251088f7L, 0xb1f0048508000100L, true, 0, 0x8100000000000000L), 4), 452555); - - // gentest-2453 - assertEqual(perft(new Board(0xf0040524108800L, 0x8008800002L, 0x2000000000000024L, 0x8100000000010080L, 0x1000000L, 0x1000000000000010L, 0x249188b6L, 0xb1f0048509000000L, false, 0, 0x8100000000000000L), 4), 446916); - - // gentest-2454 - assertEqual(perft(new Board(0xd0240534008800L, 0x8008800002L, 0x2000000000000024L, 0x8200000000010080L, 0x1000000L, 0x1000000000000010L, 0x348188b6L, 0xb2d0248509000000L, true, 0, 0x8000000000000000L), 4), 607956); - - // gentest-2455 - assertEqual(perft(new Board(0xd0240534008800L, 0xa000800002L, 0x2000000000000024L, 0x8200000000000180L, 0x1000000L, 0x1000000000001000L, 0x348099a6L, 0xb2d024a501000000L, false, 0, 0x8000000000000000L), 4), 459128); - - // gentest-2456 - assertEqual(perft(new Board(0xd0240534008800L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000180L, 0x40000L, 0x1000000000001000L, 0x3400b9a6L, 0xb2d024a500040000L, true, 0, 0x8000000000000000L), 4), 924631); - - // gentest-2457 - assertEqual(perft(new Board(0xd024053c008000L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000180L, 0x400000L, 0x1000000000000800L, 0x3c00a9a6L, 0xb2d024a500400000L, false, 0, 0x8000000000000000L), 4), 1176891); - - // gentest-2458 - assertEqual(perft(new Board(0xd024053c008000L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000480L, 0x80000000L, 0x8000000000800L, 0x3c00aca6L, 0xa2d824a580000000L, true, 0, 0x0L), 4), 931638); - - // gentest-2459 - assertEqual(perft(new Board(0xd024152c008000L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000480L, 0x80000000L, 0x1000000000001000L, 0x102c00b4a6L, 0xb2d024a580000000L, false, 0, 0x0L), 4), 763846); - - // gentest-2460 - assertEqual(perft(new Board(0xd024152c008000L, 0x8000102002L, 0x2000000000000220L, 0x8000020000000480L, 0x80000000L, 0x1000000000001000L, 0x102c00b6a2L, 0xb0d0268580100000L, true, 0, 0x0L), 4), 952525); - - // gentest-2461 - assertEqual(perft(new Board(0xd024350c008000L, 0x8000900002L, 0x2000000000000020L, 0x8000000000000680L, 0x80000000L, 0x1000000000001000L, 0x300c8094a2L, 0xb0d0248580100200L, false, 0, 0x0L), 4), 462933); - - // gentest-2462 - assertEqual(perft(new Board(0xd024310c008000L, 0x8000900002L, 0x2000000000000020L, 0x8000000000000640L, 0x10000000L, 0x1000000000001000L, 0x3004809462L, 0xb0d0248118100200L, true, 0, 0x0L), 4), 607431); - - // gentest-2463 - assertEqual(perft(new Board(0xd024310c008000L, 0x8000844000L, 0x2000000000000020L, 0x8000000000000640L, 0x10000000L, 0x1000000000002000L, 0x300484a460L, 0xb0d0248118004200L, false, 0, 0x0L), 4), 549916); - - // gentest-2464 - assertEqual(perft(new Board(0xc034310c008000L, 0x8000840000L, 0x2004000L, 0x8000000000000640L, 0x10000000L, 0x1000000000002000L, 0x300484e440L, 0x90c034811a000200L, true, 0, 0x0L), 4), 1026170); - - // gentest-2465 - assertEqual(perft(new Board(0xc034310c008000L, 0x8000840000L, 0x802000000L, 0x8000000000000640L, 0x0L, 0x1000000000002000L, 0x380484a440L, 0x90c034810a000200L, false, 0, 0x0L), 4), 1144379); - - // gentest-2466 - assertEqual(perft(new Board(0xc0342104088000L, 0x8000840000L, 0x802000000L, 0x8000000000000442L, 0x0L, 0x1000000000002000L, 0x20280484a440L, 0x90c0148102080002L, true, 0, 0x0L), 4), 1392454); - - // gentest-2467 - assertEqual(perft(new Board(0xc0042104088000L, 0x200000840000L, 0x802000000L, 0x8000000000000442L, 0x0L, 0x1000000000002000L, 0x280484a440L, 0x90c0240102080002L, false, 0, 0x0L), 4), 1254312); - - // gentest-2468 - assertEqual(perft(new Board(0xc0002904008800L, 0x200010800000L, 0x2000000L, 0x8000000000000442L, 0x0L, 0x1000000000002000L, 0x201480a440L, 0x90c0200902000802L, true, 0, 0x0L), 4), 1109396); - - // gentest-2469 - assertEqual(perft(new Board(0x80002904008800L, 0x200010800000L, 0x10000L, 0x8040000000000402L, 0x0L, 0x1000000000100000L, 0x40002014908400L, 0x9080200900010802L, false, 0, 0x0L), 4), 1443831); - - // gentest-2470 - assertEqual(perft(new Board(0x80002904008800L, 0x200010800000L, 0x4L, 0x8040000000000480L, 0x0L, 0x1000000000080000L, 0x40002014888400L, 0x9080200900000884L, true, 0, 0x0L), 4), 652712); - - // gentest-2471 - assertEqual(perft(new Board(0x80002904008800L, 0x200010800000L, 0x4L, 0x8004000000000480L, 0x0L, 0x800000000080000L, 0x4002014888400L, 0x8880200900000884L, false, 0, 0x0L), 4), 586949); - - // gentest-2472 - assertEqual(perft(new Board(0x80002904008000L, 0x40800800L, 0x4L, 0x8004000000000480L, 0x8L, 0x800000000080000L, 0x4002004888c00L, 0x888000094000008cL, true, 0, 0x0L), 4), 364803); - - // gentest-2473 - assertEqual(perft(new Board(0x80002904008000L, 0x40a00000L, 0x4L, 0x8020000000000480L, 0x10L, 0x800000000080000L, 0x20002004a88400L, 0x8880000940000094L, false, 0, 0x0L), 4), 1022295); - - // gentest-2474 - assertEqual(perft(new Board(0x80002d00008000L, 0x40a00000L, 0x100000L, 0x8020000000000440L, 0x10L, 0x800000000080000L, 0x20002400a88400L, 0x8880000940100050L, true, 0, 0x0L), 4), 1004052); - - // gentest-2475 - assertEqual(perft(new Board(0x2c01008000L, 0x40a00000L, 0x100000L, 0x8080000000000440L, 0x10L, 0x800000000080000L, 0x80002400a88400L, 0x8800000841100050L, false, 0, 0x0L), 4), 1058374); - - // gentest-2476 - assertEqual(perft(new Board(0x2c01008000L, 0x40a00000L, 0x800L, 0x8080000000000040L, 0x0L, 0x800000000080000L, 0x80002400a88000L, 0x8800000841000840L, true, 0, 0x0L), 4), 610082); - - // gentest-2477 - assertEqual(perft(new Board(0x2c01008000L, 0x804000200000L, 0x800L, 0x8002000000000040L, 0x0L, 0x800000000080000L, 0x2006400288000L, 0x8800800801000840L, false, 0, 0x0L), 4), 789737); - - // gentest-2478 - assertEqual(perft(new Board(0x2c01008000L, 0x804000200000L, 0x10L, 0x8020000000400000L, 0x0L, 0x800000000080000L, 0x20006400288000L, 0x8800800801400010L, true, 0, 0x0L), 4), 231860); - - // gentest-2479 - assertEqual(perft(new Board(0x2c00018000L, 0x804000200000L, 0x10L, 0x8002000000400000L, 0x0L, 0x800000000080000L, 0x2006400288000L, 0x8800800800410010L, false, 0, 0x0L), 4), 370725); - - // gentest-2480 - assertEqual(perft(new Board(0x42800008000L, 0x804000200001L, 0x10L, 0x8002000000400000L, 0x0L, 0x800000000080000L, 0x2046000288000L, 0x8800800800400011L, true, 0, 0x0L), 4), 315489); - - // gentest-2481 - assertEqual(perft(new Board(0x42800400000L, 0x804000200400L, 0x10L, 0x8002000000000000L, 0x0L, 0x800000000001000L, 0x2046000601000L, 0x8800800800000410L, false, 0, 0x0L), 4), 386591); - - // gentest-2482 - assertEqual(perft(new Board(0x42800400000L, 0x804000201000L, 0x10L, 0x8002000000000000L, 0x0L, 0x800000000000008L, 0x2046000600008L, 0x8800800800001010L, true, 0, 0x0L), 4), 372298); - - // gentest-2483 - assertEqual(perft(new Board(0x42800400000L, 0x804000201000L, 0x2000000L, 0x8040000000000000L, 0x0L, 0x800000000000008L, 0x40046000600008L, 0x8800800802001000L, false, 0, 0x0L), 4), 360618); - - // gentest-2484 - assertEqual(perft(new Board(0x42800400000L, 0x804000000804L, 0x2000000L, 0x1040000000000000L, 0x0L, 0x800000000000008L, 0x40046000400808L, 0x1800800802000004L, true, 0, 0x0L), 4), 355322); - - // gentest-2485 - assertEqual(perft(new Board(0x42800400000L, 0x900000000804L, 0x2000000000000000L, 0x1002000000000000L, 0x0L, 0x800000000000008L, 0x2142000400808L, 0x3800800800000004L, false, 0, 0x0L), 4), 32233); - - // gentest-2486 - assertEqual(perft(new Board(0x42800400000L, 0x800000001800L, 0x2000000000000000L, 0x2100000000000L, 0x0L, 0x800000000000400L, 0x2042000400c00L, 0x2800900800001000L, true, 0, 0x0L), 4), 455252); - - // gentest-2487 - assertEqual(perft(new Board(0x42800000000L, 0x800000400800L, 0x2000000000000000L, 0x2100000000000L, 0x0L, 0x800000000000400L, 0x2042000000c00L, 0x2800900800400000L, false, 0, 0x0L), 4), 529034); - - // gentest-2488 - assertEqual(perft(new Board(0x42800000000L, 0x800000400800L, 0x2000000000000000L, 0x1001000000000L, 0x0L, 0x800000000000400L, 0x1042000000c00L, 0x2800801800400000L, true, 0, 0x0L), 4), 460574); - - // gentest-2489 - assertEqual(perft(new Board(0x42800000000L, 0x800000600000L, 0x2000000000000000L, 0x1008000000000000L, 0x0L, 0x800000000000400L, 0x8042000200400L, 0x3800800800400000L, false, 0, 0x0L), 4), 16128); - - // gentest-2490 - assertEqual(perft(new Board(0x42800000000L, 0x4000000008400000L, 0x2000000000000000L, 0x1008000000000000L, 0x0L, 0x400000000000400L, 0x8042008000400L, 0x7400000800400000L, true, 0, 0x0L), 4), 301401); - - // gentest-2491 - assertEqual(perft(new Board(0x42800000000L, 0x4000000008000020L, 0x2000000000000000L, 0x1008000000000000L, 0x0L, 0x400000000000400L, 0x8042008000400L, 0x7400000800000020L, false, 0, 0x0L), 4), 231286); - - // gentest-2492 - assertEqual(perft(new Board(0x42800000000L, 0x10000008000020L, 0x80000000000L, 0x1008000000000000L, 0x0L, 0x400000000000008L, 0x8042008000008L, 0x1410080800000020L, true, 0, 0x0L), 4), 145013); - - // gentest-2493 - assertEqual(perft(new Board(0x2800000000L, 0x140000000020L, 0x80000000000L, 0x1002000000000000L, 0x0L, 0x400000000000008L, 0x2102000000008L, 0x14000c0800000020L, false, 0, 0x0L), 4), 453615); - - // gentest-2494 - assertEqual(perft(new Board(0x2800000000L, 0x140000000020L, 0x1000000000L, 0x4020000000000000L, 0x0L, 0x400000000000008L, 0x20102000000008L, 0x4400041800000020L, true, 0, 0x0L), 4), 451588); - - // gentest-2495 - assertEqual(perft(new Board(0x2800000000L, 0x40040000000020L, 0x1000000000L, 0x4000000000000000L, 0x0L, 0x8000000000008L, 0x40002000000008L, 0x4008041800000020L, false, 0, 0x0L), 4), 87498); - - // gentest-2496 - assertEqual(perft(new Board(0x2800000000L, 0x40040000008000L, 0x1000000000L, 0x4000000000000000L, 0x0L, 0x800000000000010L, 0x40002000000010L, 0x4800041800008000L, true, 0, 0x0L), 4), 56320); - - // gentest-2497 - assertEqual(perft(new Board(0x200800000000L, 0x40040000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x800000000000008L, 0x40200000000008L, 0x4800040800408000L, false, 0, 0x0L), 4), 60069); - - // gentest-2498 - assertEqual(perft(new Board(0x200800000000L, 0x140000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x2000000000008L, 0x300000000008L, 0x4002040800408000L, true, 0, 0x0L), 4), 170635); - - // gentest-2499 - assertEqual(perft(new Board(0x20000008000000L, 0x44000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x2000000000008L, 0x20004000000008L, 0x4002040008408000L, false, 0, 0x0L), 4), 290678); - - // gentest-2500 - assertEqual(perft(new Board(0x8000000L, 0x2000044000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x100000000000008L, 0x2000004000000008L, 0x4100040008408000L, true, 0, 0x0L), 4), 156938); - - // gentest-2501 - assertEqual(perft(new Board(0x8000000L, 0x20000c0000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x2000000000008L, 0x2000080000000008L, 0x4002040008408000L, false, 0, 0x0L), 4), 40819); - - // gentest-2502 - assertEqual(perft(new Board(0x8000000L, 0x2020040000000020L, 0x400000L, 0x4000000000000000L, 0x0L, 0x20000000008L, 0x2020000000000008L, 0x4000060008400020L, true, 0, 0x0L), 4), 166510); - - // gentest-2503 - assertEqual(perft(new Board(0x8000000L, 0x808040000000020L, 0x400000L, 0x4000000000000000L, 0x0L, 0x4000000000008L, 0x808000000000008L, 0x4004040008400020L, false, 0, 0x0L), 4), 135054); - - // gentest-2504 - assertEqual(perft(new Board(0x8000000L, 0x808040000000020L, 0x80000000000L, 0x4000000000000000L, 0x0L, 0x4000000000004L, 0x808000000000004L, 0x40040c0008000020L, true, 0, 0x0L), 4), 194109); - - // gentest-2505 - assertEqual(perft(new Board(0x8000000L, 0x2800040000000020L, 0x80000000000L, 0x400000000000L, 0x0L, 0x4000000000002L, 0x2800000000000002L, 0x44c0008000020L, false, 0, 0x0L), 4), 152426); - - // gentest-2506 - assertEqual(perft(new Board(0x8000000L, 0x2020040000000800L, 0x80000000000L, 0x40000000000000L, 0x0L, 0x4000000000002L, 0x2020000000000002L, 0x440c0008000800L, true, 0, 0x0L), 4), 74905); - - // gentest-2507 - assertEqual(perft(new Board(0x8000000L, 0x2000080100000800L, 0x0L, 0x40000000000000L, 0x0L, 0x4000000000100L, 0x2000080000000100L, 0x44000108000800L, false, 0, 0x0L), 4), 121904); - - // gentest-2508 - assertEqual(perft(new Board(0x8000000L, 0x80c0000000800L, 0x0L, 0x20000000000000L, 0x0L, 0x4000000000100L, 0x8080000000100L, 0x24040008000800L, true, 0, 0x0L), 4), 158463); - - // gentest-2509 - assertEqual(perft(new Board(0x8000000L, 0x10020010000800L, 0x0L, 0x20000000000000L, 0x0L, 0x4000000000100L, 0x20010000100L, 0x34000008000800L, false, 0, 0x0L), 4), 177427); - - // gentest-2510 - assertEqual(perft(new Board(0x8000000L, 0x420000000800L, 0x0L, 0x80000000000000L, 0x0L, 0x4000000000100L, 0x20000000900L, 0x84400008000000L, true, 0, 0x0L), 4), 130145); - - // gentest-2511 - assertEqual(perft(new Board(0x8000000L, 0x420000000020L, 0x0L, 0x80L, 0x0L, 0x4000000000001L, 0x20000000021L, 0x4400008000080L, false, 0, 0x0L), 4), 49471); - - // gentest-2512 - assertEqual(perft(new Board(0x80000L, 0x1004000020L, 0x0L, 0x80L, 0x0L, 0x4000000000001L, 0x4000021L, 0x4001000080080L, true, 0, 0x0L), 4), 62982); - - // gentest-2513 - assertEqual(perft(new Board(0x80000L, 0x1000100020L, 0x0L, 0x80L, 0x0L, 0x800000000000002L, 0x100022L, 0x800001000080080L, false, 0, 0x0L), 4), 73453); - - // gentest-2514 - assertEqual(perft(new Board(0x80000L, 0x1000004020L, 0x0L, 0x80L, 0x0L, 0x1000000000000002L, 0x4022L, 0x1000001000080080L, true, 0, 0x0L), 4), 42592); - - // gentest-2515 - assertEqual(perft(new Board(0x80000L, 0x1000004800L, 0x0L, 0x800000L, 0x0L, 0x1000000000000200L, 0x4a00L, 0x1000001000880000L, false, 0, 0x0L), 4), 122486); - - // gentest-2516 - assertEqual(perft(new Board(0x80000L, 0x40000004800L, 0x0L, 0x8000000000000000L, 0x0L, 0x1000000000020000L, 0x24800L, 0x9000040000080000L, true, 0, 0x0L), 4), 113911); - - // gentest-2517 - assertEqual(perft(new Board(0x80000L, 0x10000000404000L, 0x0L, 0x8000000000000000L, 0x0L, 0x1000000000020000L, 0x424000L, 0x9010000000080000L, false, 0, 0x0L), 4), 114490); - - // gentest-2518 - assertEqual(perft(new Board(0x80000L, 0x10000080400000L, 0x0L, 0x0L, 0x0L, 0x800000000020000L, 0x80420000L, 0x810000000080000L, true, 0, 0x0L), 4), 36928); - - // gentest-2519 - assertEqual(perft(new Board(0x80000L, 0xa000200000L, 0x0L, 0x0L, 0x0L, 0x800000000020000L, 0x8000220000L, 0x800002000080000L, false, 0, 0x0L), 4), 56744); - - // gentest-2520 - assertEqual(perft(new Board(0x80000L, 0x408000200000L, 0x0L, 0x0L, 0x0L, 0x800000000040000L, 0x8000240000L, 0x800400000080000L, true, 0, 0x0L), 4), 44607); - - // gentest-2521 - assertEqual(perft(new Board(0x0L, 0x408000200000L, 0x0L, 0x0L, 0x0L, 0x400000000080000L, 0x8000280000L, 0x400400000000000L, false, 0, 0x0L), 4), 37679); - - // gentest-2522 - assertEqual(perft(new Board(0x0L, 0x4000008000200000L, 0x0L, 0x0L, 0x0L, 0x400000000001000L, 0x8000201000L, 0x4400000000000000L, true, 0, 0x0L), 4), 26347); - - // gentest-2523 - assertEqual(perft(new Board(0x0L, 0xa00000000800L, 0x0L, 0x0L, 0x0L, 0x400000000001000L, 0x200000001800L, 0x400800000000000L, false, 0, 0x0L), 4), 29733); - - // gentest-2524 - assertEqual(perft(new Board(0x0L, 0xa00000000800L, 0x0L, 0x0L, 0x0L, 0x400000000000008L, 0x200000000808L, 0x400800000000000L, true, 0, 0x0L), 4), 24871); - - // gentest-2525 - assertEqual(perft(new Board(0x0L, 0x4000000000100800L, 0x0L, 0x0L, 0x0L, 0x400000000000008L, 0x100808L, 0x4400000000000000L, false, 0, 0x0L), 4), 22923); - - // gentest-2526 - assertEqual(perft(new Board(0x0L, 0x4000000000004800L, 0x0L, 0x0L, 0x0L, 0x400000000000008L, 0x4808L, 0x4400000000000000L, true, 0, 0x0L), 4), 16947); - - // gentest-2527 - assertEqual(perft(new Board(0x0L, 0x4000000000024000L, 0x0L, 0x0L, 0x0L, 0x800000000000010L, 0x24010L, 0x4800000000000000L, false, 0, 0x0L), 4), 16559); - - // gentest-2528 - assertEqual(perft(new Board(0x0L, 0x4000000000024000L, 0x0L, 0x0L, 0x0L, 0x20000000000008L, 0x24008L, 0x4020000000000000L, true, 0, 0x0L), 4), 22240); - - // gentest-2529 - assertEqual(perft(new Board(0x0L, 0x4000000080000001L, 0x0L, 0x0L, 0x0L, 0x40000000000008L, 0x80000009L, 0x4040000000000000L, false, 0, 0x0L), 4), 10980); - - // gentest-2530 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2531 - assertEqual(perft(new Board(0x7f8000000af500L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xaf5ffL, 0xff7f800000000000L, false, 0, 0x8100000000000081L), 4), 316231); - - // gentest-2532 - assertEqual(perft(new Board(0x3b8400000af500L, 0x4200000000000042L, 0x2400004000000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40000af5fbL, 0xff3b840000000000L, true, 0, 0x8100000000000081L), 4), 398912); - - // gentest-2533 - assertEqual(perft(new Board(0x3b0440000af500L, 0x4200000000000840L, 0x2400000000000020L, 0x8100000000000081L, 0x800000000000004L, 0x1000000000000010L, 0xafdf5L, 0xff3b044000000000L, false, 0, 0x8100000000000081L), 4), 508223); - - // gentest-2534 - assertEqual(perft(new Board(0x3b0440000a7500L, 0x4200000000000042L, 0x440000000000020L, 0x100000000008081L, 0x800000000000004L, 0x1000000000000010L, 0xa75f7L, 0x5f7b044000008000L, true, 0, 0x100000000000081L), 4), 899836); - - // gentest-2535 - assertEqual(perft(new Board(0x3b0440000a7500L, 0x4200000000010040L, 0x440000000000020L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0xb7df1L, 0xdf7b044000000000L, false, 0, 0x100000000000081L), 4), 1289227); - - // gentest-2536 - assertEqual(perft(new Board(0x390442000a7500L, 0x4200000000010040L, 0x42000000000020L, 0x8100000000000081L, 0x800000100000000L, 0x1000000000000010L, 0x1000b75f1L, 0xdb7b044200000000L, true, 0, 0x100000000000081L), 4), 1483418); - - // gentest-2537 - assertEqual(perft(new Board(0x310c42100a6500L, 0x4200000000010040L, 0x42000000000020L, 0x8100000000000081L, 0x800000000040000L, 0x1000000000000010L, 0x100f65f1L, 0xdb730c4200000000L, false, 0, 0x100000000000081L), 4), 1680279); - - // gentest-2538 - assertEqual(perft(new Board(0x310c42100a6500L, 0x4200000000011000L, 0x10008000020L, 0x8100000000000081L, 0x800000000040000L, 0x1000000000000010L, 0x100f75b1L, 0xdb310d4208000000L, true, 0, 0x100000000000081L), 4), 1375354); - - // gentest-2539 - assertEqual(perft(new Board(0x310c42100a4500L, 0x4200000000011000L, 0x10000002020L, 0x8100000000000088L, 0x800000002000000L, 0x1000000000000004L, 0x120b55acL, 0xdb310d4200002000L, false, 0, 0x100000000000000L), 4), 1408223); - - // gentest-2540 - assertEqual(perft(new Board(0x310c42100a4500L, 0x4200000004001000L, 0x2000000000030L, 0x8100000000000088L, 0x800000002000000L, 0x1000000000000004L, 0x160a55acL, 0xdb330c4200000010L, true, 0, 0x100000000000000L), 4), 1852247); - - // gentest-2541 - assertEqual(perft(new Board(0x310c42100a4500L, 0x4200000004001000L, 0x400000000000030L, 0x8100000000000088L, 0x800000000000040L, 0x1000000000000004L, 0x140a55ecL, 0xdf310c4200000010L, false, 0, 0x100000000000000L), 4), 2112863); - - // gentest-2542 - assertEqual(perft(new Board(0x310c42110a4400L, 0x4200000004001000L, 0x400000000000030L, 0x180000000000088L, 0x20000000040L, 0x1000000000000004L, 0x150a54ecL, 0x57b10e4200000010L, true, 0, 0x100000000000000L), 4), 2572000); - - // gentest-2543 - assertEqual(perft(new Board(0x310c02510a4400L, 0x4200000000101000L, 0x400000000000030L, 0x180000000000880L, 0x20000000040L, 0x1000000000000004L, 0x111a5ce4L, 0x57b10e0240000010L, false, 0, 0x100000000000000L), 4), 1461557); - - // gentest-2544 - assertEqual(perft(new Board(0x310c12410a4400L, 0x4200000000101000L, 0x10000000030L, 0x180000000000880L, 0x20000000040L, 0x1000000000000004L, 0x10011a5ce4L, 0x53b10f0240000010L, true, 0, 0x100000000000000L), 4), 1136985); - - // gentest-2545 - assertEqual(perft(new Board(0x211c1243084400L, 0x4200000000101000L, 0x10000000030L, 0x180000000000800L, 0x20000000040L, 0x1000000000000004L, 0x80001003185c64L, 0x53211f0240000010L, false, 0, 0x100000000000000L), 4), 782460); - - // gentest-2546 - assertEqual(perft(new Board(0x11c3342084400L, 0x4200000000101000L, 0x400000000000030L, 0x180000000000800L, 0x20000000040L, 0x1000000000000004L, 0x80001102185c64L, 0x57011e2240000010L, true, 0, 0x100000000000000L), 4), 962993); - - // gentest-2547 - assertEqual(perft(new Board(0x11d3242084400L, 0x210000800001000L, 0x400000000000030L, 0x180000000000800L, 0x20000000040L, 0x1000000000000004L, 0x80011802085c64L, 0x17111e2240000010L, false, 0, 0x100000000000000L), 4), 984312); - - // gentest-2548 - assertEqual(perft(new Board(0x11d3242084400L, 0x200000800001000L, 0x400000000400020L, 0x140000000000800L, 0x20000000040L, 0x1000000000000004L, 0x40011002085c64L, 0x17011e2a40400000L, true, 0, 0x100000000000000L), 4), 794231); - - // gentest-2549 - assertEqual(perft(new Board(0x11d1242084400L, 0x200000800001000L, 0x400000000400020L, 0x100000000000800L, 0x20000008000L, 0x1000000000000004L, 0x1100208dc24L, 0x17011e0a40400000L, false, 0, 0x100000000000000L), 4), 540121); - - // gentest-2550 - assertEqual(perft(new Board(0x11d12420c4000L, 0x200000020001000L, 0x400000000400020L, 0x100000000000800L, 0x400008000L, 0x1000000000000004L, 0x110020cd824L, 0x17011c0660400000L, true, 0, 0x100000000000000L), 4), 499594); - - // gentest-2551 - assertEqual(perft(new Board(0x11d1a42044000L, 0x200000020001000L, 0x2000000400020L, 0x100000000000800L, 0x400008000L, 0x1000000000000004L, 0x1180204d824L, 0x13031c0660400000L, false, 0, 0x100000000000000L), 4), 660460); - - // gentest-2552 - assertEqual(perft(new Board(0x11d1a42044000L, 0x200000000000000L, 0x2000000003000L, 0x100000000000800L, 0x400008000L, 0x1000000000000004L, 0x1180204d804L, 0x13031c0640002000L, true, 0, 0x100000000000000L), 4), 661699); - - // gentest-2553 - assertEqual(perft(new Board(0x11c1a42044000L, 0x200000000000000L, 0x3000L, 0x100000000000800L, 0x400008000L, 0x8000000000004L, 0x10000180204d804L, 0x2091c0640002000L, false, 0, 0x0L), 4), 632994); - - // gentest-2554 - assertEqual(perft(new Board(0x11c1a42044000L, 0x200000000000000L, 0x3000L, 0x100000000000800L, 0x8000000400000000L, 0x4000000000004L, 0x8100001802045804L, 0x2051c0640002000L, true, 0, 0x0L), 4), 648095); - - // gentest-2555 - assertEqual(perft(new Board(0x11c0a42044000L, 0x200000000000000L, 0x8001000L, 0x100000000000800L, 0x8000000400000000L, 0x4000000000400L, 0x8100080802045c00L, 0x205140648000000L, false, 0, 0x0L), 4), 162891); - - // gentest-2556 - assertEqual(perft(new Board(0x1140242044000L, 0x200000000000000L, 0x400001000L, 0x100000000000800L, 0x8000080000000000L, 0x4000000000400L, 0x8100100002045c00L, 0x2050c0640000000L, true, 0, 0x0L), 4), 794114); - - // gentest-2557 - assertEqual(perft(new Board(0x1140242044000L, 0x10000000000L, 0x400001000L, 0x400000000000800L, 0x880000000000L, 0x4000000000400L, 0x400900002045c00L, 0x50d0640000000L, false, 0, 0x0L), 4), 117449); - - // gentest-2558 - assertEqual(perft(new Board(0x1140242044000L, 0x10000000000L, 0x400001000L, 0x400000000000800L, 0x4200000000000L, 0x20000000400L, 0x400300002045c00L, 0x5070640000000L, true, 0, 0x0L), 4), 1223299); - - // gentest-2559 - assertEqual(perft(new Board(0x1100042044000L, 0x10000000000L, 0x40000000040L, 0x400000000000800L, 0x4200000000000L, 0x20000000400L, 0x400340002044c00L, 0x5030040000040L, false, 0, 0x0L), 4), 1266843); - - // gentest-2560 - assertEqual(perft(new Board(0x1100042044000L, 0x10000000000L, 0x40000008000L, 0x100000000000800L, 0x800200000000000L, 0x20000000400L, 0x100340002044c00L, 0x801030040008000L, true, 0, 0x0L), 4), 1358764); - - // gentest-2561 - assertEqual(perft(new Board(0x1100042004000L, 0x0L, 0x40000008000L, 0x100000000080000L, 0x800200000000000L, 0x20000000400L, 0x100340002084400L, 0x801020040008000L, false, 0, 0x0L), 4), 1710905); - - // gentest-2562 - assertEqual(perft(new Board(0x1100042004000L, 0x0L, 0x40020000000L, 0x100000000080000L, 0x880000000000L, 0x20000000400L, 0x100940002084400L, 0x10a0060000000L, true, 0, 0x0L), 4), 1551325); - - // gentest-2563 - assertEqual(perft(new Board(0x1100042004000L, 0x0L, 0x40020000000L, 0x8000000000000800L, 0x800800000000L, 0x20000000400L, 0x8000940002004c00L, 0x1020860000000L, false, 0, 0x0L), 4), 1370480); - - // gentest-2564 - assertEqual(perft(new Board(0x100142004000L, 0x0L, 0x40020000000L, 0x8000000000000000L, 0x800000000800L, 0x20000020000L, 0x8000940002024000L, 0x20160000800L, true, 0, 0x0L), 4), 962135); - - // gentest-2565 - assertEqual(perft(new Board(0x100142004000L, 0x0L, 0x40000400000L, 0x200000000000000L, 0x800000000800L, 0x20000010000L, 0x200940002014000L, 0x20140400800L, false, 0, 0x0L), 4), 142526); - - // gentest-2566 - assertEqual(perft(new Board(0x100042004000L, 0x0L, 0x40000400000L, 0x200000000000000L, 0x40000000000800L, 0x10000010000L, 0x240140000014000L, 0x10042400800L, true, 0, 0x0L), 4), 77687); - - // gentest-2567 - assertEqual(perft(new Board(0x100040004000L, 0x0L, 0x2000000400000L, 0x2000000L, 0x48000000000000L, 0x10000010000L, 0x42100002014000L, 0x8010040400000L, false, 0, 0x0L), 4), 94163); - - // gentest-2568 - assertEqual(perft(new Board(0x100040004000L, 0x0L, 0x2000000400000L, 0x2000000L, 0x1000000000040000L, 0x1000000010000L, 0x2100002054000L, 0x1001000040400000L, true, 0, 0x0L), 4), 892567); - - // gentest-2569 - assertEqual(perft(new Board(0x100040004000L, 0x0L, 0x800002000L, 0x2000000L, 0x1000000000000010L, 0x1000000010000L, 0x100802014010L, 0x1001000040002000L, false, 0, 0x0L), 4), 809570); - - // gentest-2570 - assertEqual(perft(new Board(0x100040004000L, 0x0L, 0x880000000L, 0x2000000L, 0x1000000000100000L, 0x10000010000L, 0x100802114000L, 0x10000100c0000000L, true, 0, 0x0L), 4), 833232); - - // gentest-2571 - assertEqual(perft(new Board(0x100040004000L, 0x0L, 0x40000000010L, 0x2000000L, 0x1000000000020000L, 0x10000010000L, 0x140002034000L, 0x1000010040000010L, false, 0, 0x0L), 4), 579238); - - // gentest-2572 - assertEqual(perft(new Board(0x100040004000L, 0x0L, 0x40000000010L, 0x20000000L, 0x2000000000020000L, 0x1000000010000L, 0x140020034000L, 0x2001000040000010L, true, 0, 0x0L), 4), 137139); - - // gentest-2573 - assertEqual(perft(new Board(0x100040004000L, 0x0L, 0x40000040000L, 0x200000L, 0x20000L, 0x1000000010000L, 0x140000234000L, 0x1000040040000L, false, 0, 0x0L), 4), 181861); - - // gentest-2574 - assertEqual(perft(new Board(0x100000204000L, 0x0L, 0x40040000000000L, 0x0L, 0x20000L, 0x1000000000100L, 0x140000024100L, 0x41000000200000L, true, 0, 0x0L), 4), 116555); - - // gentest-2575 - assertEqual(perft(new Board(0x100000204000L, 0x0L, 0x40040000000000L, 0x0L, 0x10000L, 0x20000020000L, 0x140000034000L, 0x40020000200000L, false, 0, 0x0L), 4), 152651); - - // gentest-2576 - assertEqual(perft(new Board(0x100000204000L, 0x0L, 0x40000000001L, 0x0L, 0x1000000L, 0x20000020000L, 0x140001024000L, 0x20000200001L, true, 0, 0x0L), 4), 117560); - - // gentest-2577 - assertEqual(perft(new Board(0x100000204000L, 0x0L, 0x1010000000L, 0x0L, 0x1000000L, 0x20000020000L, 0x100011024000L, 0x21000200000L, false, 0, 0x0L), 4), 234358); - - // gentest-2578 - assertEqual(perft(new Board(0x100000204000L, 0x0L, 0x1010000000L, 0x0L, 0x100L, 0x20000020000L, 0x100010024100L, 0x21000200000L, true, 0, 0x0L), 4), 238025); - - // gentest-2579 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x4000000200000L, 0x0L, 0x1000000000000L, 0x20000020000L, 0x1100000224000L, 0x4020000000000L, false, 0, 0x0L), 4), 12741); - - // gentest-2580 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x200000000200000L, 0x0L, 0x8000000L, 0x200020000L, 0x100008224000L, 0x200000200000000L, true, 0, 0x0L), 4), 114804); - - // gentest-2581 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x200000040000000L, 0x0L, 0x4000000L, 0x20000020000L, 0x100044024000L, 0x200020000000000L, false, 0, 0x0L), 4), 98469); - - // gentest-2582 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x60000000L, 0x0L, 0x4000000L, 0x1000000000200L, 0x100044004200L, 0x1000020000000L, true, 0, 0x0L), 4), 143145); - - // gentest-2583 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x40000004L, 0x0L, 0x40000L, 0x1000000000002L, 0x100040044002L, 0x1000000000004L, false, 0, 0x0L), 4), 138151); - - // gentest-2584 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x20040000000L, 0x0L, 0x40000L, 0x1000000000400L, 0x100040044400L, 0x1020000000000L, true, 0, 0x0L), 4), 134554); - - // gentest-2585 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x8200000L, 0x0L, 0x800L, 0x1000000000400L, 0x100000204c00L, 0x1000008000000L, false, 0, 0x0L), 4), 196825); - - // gentest-2586 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x100000000000040L, 0x0L, 0x800L, 0x1000000000400L, 0x100100000004c00L, 0x1000000000040L, true, 0, 0x0L), 4), 89161); - - // gentest-2587 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x202000L, 0x0L, 0x100000000L, 0x1000000000400L, 0x100100204400L, 0x1000000002000L, false, 0, 0x0L), 4), 13307); - - // gentest-2588 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x8000002000L, 0x0L, 0x100000000L, 0x400000000000400L, 0x108100004400L, 0x400000000002000L, true, 0, 0x0L), 4), 134780); - - // gentest-2589 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x8000002000L, 0x0L, 0x80000L, 0x200000000000400L, 0x108000084400L, 0x200000000002000L, false, 0, 0x0L), 4), 220826); - - // gentest-2590 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x1008000000000L, 0x0L, 0x800000L, 0x4000000000400L, 0x108000804400L, 0x5000000000000L, true, 0, 0x0L), 4), 128396); - - // gentest-2591 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x20040000000L, 0x0L, 0x800000L, 0x4000000000008L, 0x100040804008L, 0x4020000000000L, false, 0, 0x0L), 4), 110424); - - // gentest-2592 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x3000L, 0x0L, 0x800000L, 0x4000000000008L, 0x100000805008L, 0x4000000002000L, true, 0, 0x0L), 4), 151205); - - // gentest-2593 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x8000000000000000L, 0x4000000000008L, 0x8000100000005008L, 0x5000000000000L, false, 0, 0x0L), 4), 129619); - - // gentest-2594 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x1L, 0x4000000000008L, 0x100000005009L, 0x5000000000000L, true, 0, 0x0L), 4), 108925); - - // gentest-2595 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x2000000000000000L, 0x800000000000008L, 0x2000100000005008L, 0x801000000000000L, false, 0, 0x0L), 4), 10896); - - // gentest-2596 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x4000000000000000L, 0x40000000008L, 0x4000100000005008L, 0x1040000000000L, true, 0, 0x0L), 4), 101389); - - // gentest-2597 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x1000000000020L, 0x0L, 0x400000000000L, 0x2000000000008L, 0x500000004028L, 0x3000000000000L, false, 0, 0x0L), 4), 127685); - - // gentest-2598 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x8000020L, 0x0L, 0x2000000000L, 0x100000000000008L, 0x102000004028L, 0x100000008000000L, true, 0, 0x0L), 4), 156576); - - // gentest-2599 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x400000020L, 0x0L, 0x2000000000L, 0x100000000080000L, 0x102000084020L, 0x100000400000000L, false, 0, 0x0L), 4), 122141); - - // gentest-2600 - assertEqual(perft(new Board(0x100000004000L, 0x0L, 0x80000000020L, 0x0L, 0x200000000000L, 0x2000000080000L, 0x300000084020L, 0x2080000000000L, true, 0, 0x0L), 4), 192073); - - // gentest-2601 - assertEqual(perft(new Board(0x10000000004000L, 0x0L, 0x80000000020L, 0x0L, 0x20000000L, 0x40000080000L, 0x10000020084020L, 0xc0000000000L, false, 0, 0x0L), 4), 192453); - - // gentest-2602 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x200000000000020L, 0x0L, 0x1000000020000000L, 0x2000000080000L, 0x1000000020084020L, 0x202000000000000L, true, 0, 0x0L), 4), 172814); - - // gentest-2603 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x80000000020L, 0x0L, 0x200008000L, 0x2000000080000L, 0x20008c020L, 0x2080000000000L, false, 0, 0x0L), 4), 66088); - - // gentest-2604 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x200000000000020L, 0x0L, 0x4000008000L, 0x100000000080000L, 0x400008c020L, 0x300000000000000L, true, 0, 0x0L), 4), 129773); - - // gentest-2605 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x200000000000020L, 0x0L, 0x40008000L, 0x1000008000000L, 0x4800c020L, 0x201000000000000L, false, 0, 0x0L), 4), 129604); - - // gentest-2606 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x80000000020L, 0x0L, 0x40008000L, 0x1000000080000L, 0x4008c020L, 0x1080000000000L, true, 0, 0x0L), 4), 251338); - - // gentest-2607 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x1000000020L, 0x0L, 0x800000200000L, 0x1000000080000L, 0x800000284020L, 0x1001000000000L, false, 0, 0x0L), 4), 278978); - - // gentest-2608 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x100000020L, 0x0L, 0x8000000000200000L, 0x1000000080000L, 0x8000000000284020L, 0x1000100000000L, true, 0, 0x0L), 4), 140199); - - // gentest-2609 - assertEqual(perft(new Board(0x4000L, 0x0L, 0x800000000000020L, 0x0L, 0xa00000L, 0x1000000080000L, 0xa84020L, 0x801000000000000L, false, 0, 0x0L), 4), 157237); - - // gentest-2610 - assertEqual(perft(new Board(0x0L, 0x0L, 0x400020L, 0x0L, 0xa00000L, 0x1000000080000L, 0xa80020L, 0x1000000400000L, true, 0, 0x0L), 4), 179368); - - // gentest-2611 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20L, 0x0L, 0x804000L, 0x20000080000L, 0x884020L, 0x20000000000L, false, 0, 0x0L), 4), 46892); - - // gentest-2612 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20L, 0x0L, 0x8000000004000L, 0x20000080000L, 0x8000000084020L, 0x20000000000L, true, 0, 0x0L), 4), 16927); - - // gentest-2613 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20L, 0x0L, 0x8000010000000L, 0x400080000L, 0x8000010080020L, 0x400000000L, false, 0, 0x0L), 4), 7321); - - // gentest-2614 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20L, 0x0L, 0x1008000000000000L, 0x400080000L, 0x1008000000080020L, 0x400000000L, true, 0, 0x0L), 4), 11111); - - // gentest-2615 - assertEqual(perft(new Board(0x0L, 0x0L, 0x800000L, 0x0L, 0x1020000000000000L, 0x20000080000L, 0x1020000000880000L, 0x20000000000L, false, 0, 0x0L), 4), 22906); - - // gentest-2616 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2617 - assertEqual(perft(new Board(0xef10000402f900L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x402f9ffL, 0xffef100000000000L, false, 0, 0x8100000000000081L), 4), 437655); - - // gentest-2618 - assertEqual(perft(new Board(0x6f90001402e900L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x200000000008L, 0x1000000000000010L, 0x1402e9ffL, 0xf76fb00000000000L, true, 0, 0x8100000000000081L), 4), 1011835); - - // gentest-2619 - assertEqual(perft(new Board(0x6f90001d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x80000008L, 0x1000000000000010L, 0x1d02e0ffL, 0xf76f900080000000L, false, 0, 0x8100000000000081L), 4), 1468477); - - // gentest-2620 - assertEqual(perft(new Board(0x6f90001d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x400008L, 0x10000000000800L, 0x1d02e8efL, 0xe77f900000400000L, true, 0, 0x0L), 4), 1032281); - - // gentest-2621 - assertEqual(perft(new Board(0x4f90201d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x600000L, 0x10000000000800L, 0x1d23e8e6L, 0xe75f902000400000L, false, 0, 0x0L), 4), 1240556); - - // gentest-2622 - assertEqual(perft(new Board(0xdd0221d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x400000L, 0x10000000000800L, 0x1d43e8e6L, 0xe71dd02200000000L, true, 0, 0x0L), 4), 912456); - - // gentest-2623 - assertEqual(perft(new Board(0x5d02a1f00e000L, 0x4200000000000042L, 0x2400000000080004L, 0x8100000000010080L, 0x400000L, 0x10000000000800L, 0x1f49e8c6L, 0xe715d02a00000000L, false, 0, 0x0L), 4), 1125496); - - // gentest-2624 - assertEqual(perft(new Board(0x5d02a1f00e000L, 0x4200000000000042L, 0x2000010000080004L, 0x8100000000010080L, 0x80000000000L, 0x200000000800L, 0x8001f09e8c6L, 0xe305f12a00000000L, true, 0, 0x0L), 4), 855744); - - // gentest-2625 - assertEqual(perft(new Board(0x5d02a1f00e000L, 0x4008000000000042L, 0x2000010000000404L, 0x8100000000010080L, 0x80000000000L, 0x200000000008L, 0x8001f01e4ceL, 0xe10df12a00000000L, false, 0, 0x0L), 4), 1726615); - - // gentest-2626 - assertEqual(perft(new Board(0x1d82a1f00e000L, 0x4200000000000042L, 0x2000010000080004L, 0x8100000000010080L, 0x0L, 0x200000000008L, 0x1f09e0ceL, 0xe301f92a00000000L, true, 0, 0x0L), 4), 499254); - - // gentest-2627 - assertEqual(perft(new Board(0x1d8221f00e000L, 0x4200000000000042L, 0x2000010000080800L, 0x8100000000010080L, 0x0L, 0x200000000008L, 0x1b09e8caL, 0xe301f92204000000L, false, 0, 0x0L), 4), 468347); - - // gentest-2628 - assertEqual(perft(new Board(0x1d8201b08e000L, 0x4200000000001002L, 0x2000010000000800L, 0x8100000000010080L, 0x0L, 0x200000000008L, 0x1a01f88aL, 0xe301f92001080000L, true, 0, 0x0L), 4), 449141); - - // gentest-2629 - assertEqual(perft(new Board(0x198601b08e000L, 0x4200000000001002L, 0x2000010000000010L, 0x8100000000010080L, 0x0L, 0x200000000004L, 0x1a01f096L, 0xe301b96001080000L, false, 0, 0x0L), 4), 399581); - - // gentest-2630 - assertEqual(perft(new Board(0x198681300e800L, 0x4200000000001002L, 0x2000000200000010L, 0x8100000000010080L, 0x0L, 0x200000000004L, 0x81201f096L, 0xe301b86201000800L, true, 0, 0x0L), 4), 176385); - - // gentest-2631 - assertEqual(perft(new Board(0x99681300e000L, 0x4200000000001002L, 0x2000000200000010L, 0x8100000000080080L, 0x0L, 0x200000000800L, 0x81208f892L, 0xe300b96201000000L, false, 0, 0x0L), 4), 619077); - - // gentest-2632 - assertEqual(perft(new Board(0x99681300e000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000080080L, 0x0L, 0x200000000400L, 0x81208f492L, 0x4390b96201000000L, true, 0, 0x0L), 4), 753764); - - // gentest-2633 - assertEqual(perft(new Board(0x996892412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000080080L, 0x0L, 0x200000000400L, 0x892483492L, 0x4390b96200010000L, false, 0, 0x0L), 4), 726111); - - // gentest-2634 - assertEqual(perft(new Board(0x9821d2412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000080080L, 0x0L, 0x200000000400L, 0x100092483492L, 0x4390a82340010000L, true, 0, 0x0L), 4), 793128); - - // gentest-2635 - assertEqual(perft(new Board(0x9821d2412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000040080L, 0x0L, 0x40000000020000L, 0x100092463092L, 0x43d0882340010000L, false, 0, 0x0L), 4), 758757); - - // gentest-2636 - assertEqual(perft(new Board(0x9800f3412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000040080L, 0x0L, 0x40000000000400L, 0x100092443492L, 0x43d0880261010000L, true, 0, 0x0L), 4), 646112); - - // gentest-2637 - assertEqual(perft(new Board(0x9800f3412000L, 0x4200000000000006L, 0x1010000000000800L, 0x180000000040080L, 0x0L, 0x40000000000400L, 0x100092442c86L, 0x53d0880061010000L, false, 0, 0x0L), 4), 767455); - - // gentest-2638 - assertEqual(perft(new Board(0x9800f3012000L, 0x4200000000000006L, 0x1010000000000800L, 0x8100000000040080L, 0x0L, 0x2000000000000400L, 0x1000b2042c86L, 0xf310880041010000L, true, 0, 0x0L), 4), 578528); - - // gentest-2639 - assertEqual(perft(new Board(0x9800f3012000L, 0x200200000000006L, 0x1010000000000800L, 0x8100040000000080L, 0x0L, 0x2000000000000400L, 0x1400b2002c86L, 0xb310a80041010000L, false, 0, 0x0L), 4), 665380); - - // gentest-2640 - assertEqual(perft(new Board(0x9800f3012000L, 0x200200000000006L, 0x1010000000000800L, 0x8500000000000080L, 0x0L, 0x80000000000400L, 0x4001000b2002c86L, 0x9390a80041010000L, true, 0, 0x0L), 4), 785564); - - // gentest-2641 - assertEqual(perft(new Board(0x9800b3412000L, 0x200200000000006L, 0x1010000000000800L, 0x8100040000008000L, 0x0L, 0x80000000000400L, 0x1400b200ac06L, 0x9390a80001410000L, false, 0, 0x0L), 4), 767289); - - // gentest-2642 - assertEqual(perft(new Board(0x1880b3412000L, 0x4200000000000006L, 0x1010000000000800L, 0x8100020000008000L, 0x0L, 0x80000000000400L, 0x1200b200ac06L, 0xd390088001410000L, true, 0, 0x0L), 4), 477933); - - // gentest-2643 - assertEqual(perft(new Board(0x1880b3410000L, 0x4200000000080002L, 0x10000200000800L, 0x8100020000008000L, 0x0L, 0x80000000000400L, 0x1200b2488c02L, 0xc390088201010000L, false, 0, 0x0L), 4), 515951); - - // gentest-2644 - assertEqual(perft(new Board(0x1880b3410000L, 0x2008000000c0000L, 0x18000000000800L, 0x8100020000008000L, 0x0L, 0x80000000000400L, 0x1200b24c8c00L, 0x8398888001010000L, true, 0, 0x0L), 4), 1046443); - - // gentest-2645 - assertEqual(perft(new Board(0x1880f3010000L, 0x4200001000040000L, 0x18000000000800L, 0x8100020000008000L, 0x0L, 0x80000000000400L, 0x1210f2048c00L, 0xc398088001010000L, false, 0, 0x0L), 4), 761219); - - // gentest-2646 - assertEqual(perft(new Board(0x1880f3010000L, 0x200201000040000L, 0x410000000000800L, 0x8100020000008000L, 0x0L, 0x80000000000002L, 0x1210f2048802L, 0x8790288001010000L, true, 0, 0x0L), 4), 988565); - - // gentest-2647 - assertEqual(perft(new Board(0x1880a3010000L, 0x200001010040000L, 0x410000000000800L, 0x8100020000000080L, 0x0L, 0x80000000000002L, 0x1290a2040882L, 0x8790080011010000L, false, 0, 0x0L), 4), 1241435); - - // gentest-2648 - assertEqual(perft(new Board(0x1880a3010000L, 0x200001010040000L, 0x410000000000004L, 0x180020000000080L, 0x0L, 0x40000000000002L, 0x1290a2040086L, 0x7d0080011010000L, true, 0, 0x0L), 4), 1153122); - - // gentest-2649 - assertEqual(perft(new Board(0x1882a1010000L, 0x1010040000L, 0xc00000000000004L, 0x380000000000080L, 0x0L, 0x40000000000002L, 0x2001092a0040086L, 0xdc0080011010000L, false, 0, 0x0L), 4), 1049715); - - // gentest-2650 - assertEqual(perft(new Board(0x1882a1000100L, 0x1810000000L, 0x404000000000004L, 0x380000000000080L, 0x0L, 0x40000000000002L, 0x200109aa0000086L, 0x5c4080011000100L, true, 0, 0x0L), 4), 115424); - - // gentest-2651 - assertEqual(perft(new Board(0x882a1000000L, 0x1810000000L, 0x4100000000004L, 0x380000000000080L, 0x0L, 0x40000000000002L, 0x200009aa0000086L, 0x1c4180011000000L, false, 0, 0x0L), 4), 1097133); - - // gentest-2652 - assertEqual(perft(new Board(0x802a1000000L, 0x1800040000L, 0x4100000000004L, 0x300008000000080L, 0x0L, 0x40000000000400L, 0x200001aa0000484L, 0x144188001040000L, true, 0, 0x0L), 4), 1678048); - - // gentest-2653 - assertEqual(perft(new Board(0x12a1000000L, 0x800040000L, 0x4100000000004L, 0x300008000200000L, 0x0L, 0x40000000000400L, 0x200000aa0200404L, 0x144109001040000L, false, 0, 0x0L), 4), 1343056); - - // gentest-2654 - assertEqual(perft(new Board(0x12a1000000L, 0x800040000L, 0x100002000004L, 0x300008000000020L, 0x0L, 0x40000000000400L, 0x200000aa0000424L, 0x140109003040000L, true, 0, 0x0L), 4), 1282534); - - // gentest-2655 - assertEqual(perft(new Board(0x12a1000000L, 0x10000000040000L, 0x100002000004L, 0x100008000000020L, 0x0L, 0x20000000000400L, 0x1100002a0000424L, 0x20109003040000L, false, 0, 0x0L), 4), 993938); - - // gentest-2656 - assertEqual(perft(new Board(0x12a1000000L, 0x10000000040000L, 0x8000002000800L, 0x100002000000020L, 0x0L, 0x20000000000400L, 0x1100002a0000c20L, 0x28003003040000L, true, 0, 0x0L), 4), 956619); - - // gentest-2657 - assertEqual(perft(new Board(0x1281000000L, 0x10000010000000L, 0x8000002000800L, 0x2100000020L, 0x0L, 0x20000000000400L, 0x10001380000c20L, 0x28002013000000L, false, 0, 0x0L), 4), 1033684); - - // gentest-2658 - assertEqual(perft(new Board(0x1281000000L, 0x10000000L, 0x8000100000800L, 0x2000000020L, 0x0L, 0x10000000000002L, 0x1280000822L, 0x18002111000000L, true, 0, 0x0L), 4), 603337); - - // gentest-2659 - assertEqual(perft(new Board(0x1281000000L, 0x10000000L, 0x1000000100040000L, 0x2000000020L, 0x0L, 0x10000000000200L, 0x1280040220L, 0x1010002111000000L, false, 0, 0x0L), 4), 552943); - - // gentest-2660 - assertEqual(perft(new Board(0x1281000000L, 0x400000L, 0x1000000000000010L, 0x2000000020L, 0x0L, 0x10000000000200L, 0x1280000220L, 0x1010002001400010L, true, 0, 0x0L), 4), 219506); - - // gentest-2661 - assertEqual(perft(new Board(0x100281000000L, 0x400000L, 0x1000000100000000L, 0x2000000000L, 0x0L, 0x10000000000200L, 0x102280000200L, 0x1010000101400000L, false, 0, 0x0L), 4), 161871); - - // gentest-2662 - assertEqual(perft(new Board(0x100280010000L, 0x400000L, 0x1800000000000000L, 0x20L, 0x0L, 0x10000000000200L, 0x100280000220L, 0x1810000000410000L, true, 0, 0x0L), 4), 51714); - - // gentest-2663 - assertEqual(perft(new Board(0x100280010000L, 0x400000L, 0x1000020000000000L, 0x2L, 0x0L, 0x10000000000001L, 0x100280000003L, 0x1010020000410000L, false, 0, 0x0L), 4), 102211); - - // gentest-2664 - assertEqual(perft(new Board(0x100280010000L, 0x400000L, 0x20020000000000L, 0x10L, 0x0L, 0x10000000000001L, 0x100280000011L, 0x30020000410000L, true, 0, 0x0L), 4), 113175); - - // gentest-2665 - assertEqual(perft(new Board(0x20000280010000L, 0x400000L, 0x100000L, 0x1000L, 0x0L, 0x10000000000001L, 0x20000280001001L, 0x10000000510000L, false, 0, 0x0L), 4), 68203); - - // gentest-2666 - assertEqual(perft(new Board(0x20000280010000L, 0x400000L, 0x100000L, 0x1000L, 0x0L, 0x10000000000100L, 0x20000280001100L, 0x10000000510000L, true, 0, 0x0L), 4), 91832); - - // gentest-2667 - assertEqual(perft(new Board(0x20000280010000L, 0x400000L, 0x0L, 0x100000L, 0x0L, 0x800000000020000L, 0x20000280120000L, 0x800000000410000L, false, 0, 0x0L), 4), 51092); - - // gentest-2668 - assertEqual(perft(new Board(0x280010000L, 0x2000000000002000L, 0x0L, 0x100000L, 0x0L, 0x800000000020000L, 0x2000000280120000L, 0x800000000012000L, true, 0, 0x0L), 4), 47414); - - // gentest-2669 - assertEqual(perft(new Board(0x280010000L, 0x2000000000002000L, 0x0L, 0x1000L, 0x0L, 0x4000000020000L, 0x2000000280021000L, 0x4000000012000L, false, 0, 0x0L), 4), 84345); - - // gentest-2670 - assertEqual(perft(new Board(0x280000100L, 0x2000000000002000L, 0x0L, 0x100000L, 0x0L, 0x200000000020000L, 0x2000000280120000L, 0x200000000002100L, true, 0, 0x0L), 4), 117673); - - // gentest-2671 - assertEqual(perft(new Board(0x280000100L, 0x2000000000002000L, 0x0L, 0x400000L, 0x0L, 0x1000000040000L, 0x2000000280440000L, 0x1000000002100L, false, 0, 0x0L), 4), 75022); - - // gentest-2672 - assertEqual(perft(new Board(0x280000000L, 0x2000000000002000L, 0x40000000000000L, 0x400000L, 0x0L, 0x1000002000000L, 0x2000000282400000L, 0x41000000002000L, true, 0, 0x0L), 4), 149891); - - // gentest-2673 - assertEqual(perft(new Board(0x280000000L, 0x2000000040000000L, 0x40000000000000L, 0x200000000000L, 0x0L, 0x1000002000000L, 0x2000200282000000L, 0x41000040000000L, false, 0, 0x0L), 4), 81399); - - // gentest-2674 - assertEqual(perft(new Board(0x280000000L, 0x2000000040000000L, 0x40000000000000L, 0x2000000000L, 0x0L, 0x1000002000000L, 0x2000002282000000L, 0x41000040000000L, true, 0, 0x0L), 4), 134298); - - // gentest-2675 - assertEqual(perft(new Board(0x280000000L, 0x80000040000000L, 0x200000000000L, 0x2000000000L, 0x0L, 0x1000004000000L, 0x80002284000000L, 0x1200040000000L, false, 0, 0x0L), 4), 133365); - - // gentest-2676 - assertEqual(perft(new Board(0x280000000L, 0x80000040000000L, 0x40000L, 0x2000000000L, 0x0L, 0x20000020000L, 0x80002280020000L, 0x20040040000L, true, 0, 0x0L), 4), 165417); - - // gentest-2677 - assertEqual(perft(new Board(0x80000000L, 0x80000040000000L, 0x40000L, 0x200000L, 0x0L, 0x200000100L, 0x80000080200100L, 0x240040000L, false, 0, 0x0L), 4), 198499); - - // gentest-2678 - assertEqual(perft(new Board(0x80000000L, 0x80000040000000L, 0x10L, 0x20L, 0x0L, 0x2000100L, 0x80000080000120L, 0x42000010L, true, 0, 0x0L), 4), 80551); - - // gentest-2679 - assertEqual(perft(new Board(0x80000000L, 0x80000000008000L, 0x10L, 0x80000L, 0x0L, 0x2000100L, 0x80000080080100L, 0x2008010L, false, 0, 0x0L), 4), 78057); - - // gentest-2680 - assertEqual(perft(new Board(0x0L, 0x80000000200000L, 0x80000000L, 0x8000000000000L, 0x0L, 0x2000100L, 0x88000000000100L, 0x82200000L, true, 0, 0x0L), 4), 111068); - - // gentest-2681 - assertEqual(perft(new Board(0x0L, 0x80001000000000L, 0x80000000L, 0x100000L, 0x0L, 0x2000100L, 0x80000000100100L, 0x1082000000L, false, 0, 0x0L), 4), 118126); - - // gentest-2682 - assertEqual(perft(new Board(0x0L, 0x5000000000L, 0x80000000L, 0x100000L, 0x0L, 0x2000100L, 0x4000100100L, 0x1082000000L, true, 0, 0x0L), 4), 103819); - - // gentest-2683 - assertEqual(perft(new Board(0x0L, 0x5000000000L, 0x80000000L, 0x40000L, 0x0L, 0x1000100L, 0x4000040100L, 0x1081000000L, false, 0, 0x0L), 4), 100493); - - // gentest-2684 - assertEqual(perft(new Board(0x0L, 0x8000000000000L, 0x4000000000L, 0x20000L, 0x0L, 0x1000100L, 0x20100L, 0x8004001000000L, true, 0, 0x0L), 4), 60824); - - // gentest-2685 - assertEqual(perft(new Board(0x0L, 0x200000000000L, 0x4000000000L, 0x400000000000000L, 0x0L, 0x1000100L, 0x400000000000100L, 0x204001000000L, false, 0, 0x0L), 4), 75248); - - // gentest-2686 - assertEqual(perft(new Board(0x0L, 0x2000000000000000L, 0x4000000000L, 0x4000000000000000L, 0x0L, 0x1000100L, 0x4000000000000100L, 0x2000004001000000L, true, 0, 0x0L), 4), 22073); - - // gentest-2687 - assertEqual(perft(new Board(0x0L, 0x2000000000000000L, 0x20000000L, 0x40L, 0x0L, 0x1000100L, 0x140L, 0x2000000021000000L, false, 0, 0x0L), 4), 74797); - - // gentest-2688 - assertEqual(perft(new Board(0x0L, 0x400000000000L, 0x800L, 0x40000000000000L, 0x0L, 0x1000100L, 0x40000000000100L, 0x400001000800L, true, 0, 0x0L), 4), 47112); - - // gentest-2689 - assertEqual(perft(new Board(0x0L, 0x400000000000L, 0x800L, 0x1000000000000L, 0x0L, 0x2000002L, 0x1000000000002L, 0x400002000800L, false, 0, 0x0L), 4), 87471); - - // gentest-2690 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x10L, 0x1000000000000L, 0x0L, 0x2000100L, 0x1000000000100L, 0x82000010L, true, 0, 0x0L), 4), 40006); - - // gentest-2691 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x40000L, 0x400000000L, 0x0L, 0x2000100L, 0x400000100L, 0x82040000L, false, 0, 0x0L), 4), 40805); - - // gentest-2692 - assertEqual(perft(new Board(0x0L, 0x400000000000L, 0x200L, 0x4000000000L, 0x0L, 0x2000100L, 0x4000000100L, 0x400002000200L, true, 0, 0x0L), 4), 48320); - - // gentest-2693 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x200L, 0x200000000L, 0x0L, 0x2000100L, 0x200000100L, 0x82000200L, false, 0, 0x0L), 4), 7985); - - // gentest-2694 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x4L, 0x200000000000000L, 0x0L, 0x40100L, 0x200000000000100L, 0x80040004L, true, 0, 0x0L), 4), 53202); - - // gentest-2695 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x4L, 0x200000L, 0x0L, 0x4000100L, 0x200100L, 0x84000004L, false, 0, 0x0L), 4), 61721); - - // gentest-2696 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x4L, 0x20000000000000L, 0x0L, 0x2000100L, 0x20000000000100L, 0x82000004L, true, 0, 0x0L), 4), 58506); - - // gentest-2697 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x4L, 0x10000000L, 0x0L, 0x200000100L, 0x10000100L, 0x280000004L, false, 0, 0x0L), 4), 75982); - - // gentest-2698 - assertEqual(perft(new Board(0x0L, 0x200000L, 0x200L, 0x100000000000L, 0x0L, 0x200000100L, 0x100000000100L, 0x200200200L, true, 0, 0x0L), 4), 100412); - - // gentest-2699 - assertEqual(perft(new Board(0x0L, 0x200000L, 0x8000000L, 0x80000000000L, 0x0L, 0x200020000L, 0x80000020000L, 0x208200000L, false, 0, 0x0L), 4), 100906); - - // gentest-2700 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x40L, 0x8000000L, 0x0L, 0x200020000L, 0x8020000L, 0x280000040L, true, 0, 0x0L), 4), 71642); - - // gentest-2701 - assertEqual(perft(new Board(0x0L, 0x80000000L, 0x400000000L, 0x1000000000L, 0x0L, 0x200020000L, 0x1000020000L, 0x680000000L, false, 0, 0x0L), 4), 37187); - - // gentest-2702 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2703 - assertEqual(perft(new Board(0xff00000800f700L, 0x4000040000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x804f7fdL, 0xfdff040000000000L, false, 0, 0x8100000000000081L), 4), 463750); - - // gentest-2704 - assertEqual(perft(new Board(0xef10000800f700L, 0x840000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x804fff5L, 0xbdef940000000000L, true, 0, 0x8100000000000081L), 4), 931780); - - // gentest-2705 - assertEqual(perft(new Board(0xaf10400840b700L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x840bff7L, 0xbdaf944000000000L, false, 0, 0x8100000000000081L), 4), 811180); - - // gentest-2706 - assertEqual(perft(new Board(0xad00520840b700L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000080000L, 0x1000000000000010L, 0x848b7f7L, 0xbdad845200000000L, true, 0, 0x8100000000000081L), 4), 1508602); - - // gentest-2707 - assertEqual(perft(new Board(0xad00120840b700L, 0x840000000042L, 0x2000014000000020L, 0x8100000000000081L, 0x800000004000000L, 0x1000000000000010L, 0x400c40b7f3L, 0xb9ad851200000000L, false, 0, 0x8100000000000081L), 4), 1613865); - - // gentest-2708 - assertEqual(perft(new Board(0xad00120840b700L, 0x800100000042L, 0x2000014000000020L, 0x8100000000000081L, 0x200000004000000L, 0x1000000000000008L, 0x400c40b7ebL, 0xb3ad811300000000L, true, 0, 0x8100000000000000L), 4), 1611221); - - // gentest-2709 - assertEqual(perft(new Board(0xad00121840a700L, 0x800100000042L, 0x40014000000020L, 0x8100000000000081L, 0x200000800000000L, 0x1000000000000008L, 0x481840a7ebL, 0x93ed811300000000L, false, 0, 0x8100000000000000L), 4), 1460883); - - // gentest-2710 - assertEqual(perft(new Board(0xa508121841a600L, 0x800100000042L, 0x40014000000020L, 0x8100000000000081L, 0x400000800000000L, 0x1000000000000008L, 0x481841a6ebL, 0x95e5891300000000L, true, 0, 0x8100000000000000L), 4), 1594947); - - // gentest-2711 - assertEqual(perft(new Board(0xa508121841a600L, 0x800000820002L, 0x40010000100020L, 0x8100000000000081L, 0x400000800000000L, 0x1000000000000008L, 0x818d1a6abL, 0x95e5891200020000L, false, 0, 0x8100000000000000L), 4), 1475021); - - // gentest-2712 - assertEqual(perft(new Board(0xa508121841a600L, 0x800000800003L, 0x40010000100020L, 0x2100000000000080L, 0x400000004000000L, 0x1000000000000008L, 0x1cd1a6aaL, 0x35e5891200000001L, true, 0, 0x100000000000000L), 4), 1224115); - - // gentest-2713 - assertEqual(perft(new Board(0xa508131840a600L, 0x800000800003L, 0x40010000100020L, 0x2100000000000080L, 0x400000004000000L, 0x8000000000008L, 0x11cd0a6aaL, 0x25ed891200000001L, false, 0, 0x0L), 4), 1205150); - - // gentest-2714 - assertEqual(perft(new Board(0xa508131840a600L, 0x800000800003L, 0x42000000101000L, 0x8100000000000080L, 0x400000004000000L, 0x8000000000008L, 0x11cd0b68aL, 0x85ef881200000001L, true, 0, 0x0L), 4), 1642806); - - // gentest-2715 - assertEqual(perft(new Board(0xa509101c40a600L, 0x800000800003L, 0x42000000001800L, 0x8100000000000080L, 0x400000000000000L, 0x8000000000008L, 0x10018c0be8aL, 0x85ef881004000001L, false, 0, 0x0L), 4), 1168704); - - // gentest-2716 - assertEqual(perft(new Board(0xa10d101c40a600L, 0x800000000043L, 0x42000000001800L, 0x8100000000000080L, 0x1000000000000000L, 0x8000000000008L, 0x1001840becaL, 0x91eb8c1004000001L, true, 0, 0x0L), 4), 966136); - - // gentest-2717 - assertEqual(perft(new Board(0x812d101c40a600L, 0x800000000043L, 0x42004000001000L, 0x8100000000000080L, 0x1000000000000000L, 0x8000000000008L, 0x1401840b6caL, 0x91cbac1004000001L, false, 0, 0x0L), 4), 1139126); - - // gentest-2718 - assertEqual(perft(new Board(0x8125181c42a200L, 0x800000000042L, 0x42004000001000L, 0x8100000000000080L, 0x1000000000000000L, 0x8000000000008L, 0x1401842b2caL, 0x91cba41804000000L, true, 0, 0x0L), 4), 1122231); - - // gentest-2719 - assertEqual(perft(new Board(0x8125181a40a200L, 0x40000042L, 0x42004004000000L, 0x8100000000000080L, 0x1000000000000000L, 0x8000000000008L, 0x1401e40a2caL, 0x91cb241840000000L, false, 0, 0x0L), 4), 1350369); - - // gentest-2720 - assertEqual(perft(new Board(0x8125181a408200L, 0x2042L, 0x42004004000000L, 0x8100000000000080L, 0x400000000000000L, 0x8000000001000L, 0x1401e4092c2L, 0x85cb241800002000L, true, 0, 0x0L), 4), 1047648); - - // gentest-2721 - assertEqual(perft(new Board(0x8105181a408200L, 0x2840L, 0x42200004000000L, 0x8100000000000080L, 0x200000000000000L, 0x8000000001000L, 0x21001e409ac0L, 0x83cb041800002000L, false, 0, 0x0L), 4), 974420); - - // gentest-2722 - assertEqual(perft(new Board(0x8105181a408200L, 0x202800L, 0x42200004000000L, 0x8100000000000080L, 0x2000000000000000L, 0x8000000001000L, 0x21001e609a80L, 0xa1cb041800002000L, true, 0, 0x0L), 4), 1783230); - - // gentest-2723 - assertEqual(perft(new Board(0x185180a408200L, 0x202800L, 0x42004004000000L, 0x8100000000000080L, 0x2000000000000000L, 0x8000000001000L, 0x1480e609a80L, 0xa14b841000002000L, false, 0, 0x0L), 4), 1922793); - - // gentest-2724 - assertEqual(perft(new Board(0x185080a408200L, 0x2800L, 0x2005004000000L, 0x8100000000000080L, 0x20000000L, 0x8000000001000L, 0x1480e409a80L, 0x810b841020002000L, true, 0, 0x0L), 4), 2033933); - - // gentest-2725 - assertEqual(perft(new Board(0x1810c0a408200L, 0x2002L, 0x2005004000000L, 0x8100000000000080L, 0x20000000L, 0x8000000000010L, 0x1480e408292L, 0x810b801420002000L, false, 0, 0x0L), 4), 1729359); - - // gentest-2726 - assertEqual(perft(new Board(0x1810c0a408200L, 0x2002L, 0x2005004000000L, 0x1100000000000020L, 0x40000000L, 0x8000000000010L, 0x1480e408232L, 0x110b801440002000L, true, 0, 0x0L), 4), 1639240); - - // gentest-2727 - assertEqual(perft(new Board(0x1010c02408200L, 0x10000002L, 0x2801004000000L, 0x1100000000000020L, 0x40000000L, 0x8000000000010L, 0x810c06408232L, 0x110b001050000000L, false, 0, 0x0L), 4), 1849276); - - // gentest-2728 - assertEqual(perft(new Board(0x1010c02408200L, 0x10000002L, 0x40041004000000L, 0x1100000000000020L, 0x4000000000L, 0x8000000000010L, 0x40010c06408232L, 0x1109045010000000L, true, 0, 0x0L), 4), 1836575); - - // gentest-2729 - assertEqual(perft(new Board(0x1010c02408200L, 0x10000002L, 0x40041001000000L, 0x1100000000000020L, 0x2000000000L, 0x8000000000010L, 0x40010c03408232L, 0x1109043010000000L, false, 0, 0x0L), 4), 1445924); - - // gentest-2730 - assertEqual(perft(new Board(0x1010e00408200L, 0x40002L, 0x40041001000000L, 0x900000000000020L, 0x2000000000L, 0x8000000000010L, 0x40010e01408232L, 0x909043000040000L, true, 0, 0x0L), 4), 1382400); - - // gentest-2731 - assertEqual(perft(new Board(0x1010e00408200L, 0x40002L, 0x40041001000000L, 0x920000000000000L, 0x4000000000L, 0x8000000000010L, 0x60010e01408212L, 0x909045000040000L, false, 0, 0x0L), 4), 108139); - - // gentest-2732 - assertEqual(perft(new Board(0x1050c00408200L, 0x40002L, 0x40001001000000L, 0xa20000000000000L, 0x4000000000L, 0x1000000000000010L, 0x60050c01408212L, 0x1a01005000040000L, true, 0, 0x0L), 4), 1371846); - - // gentest-2733 - assertEqual(perft(new Board(0x1050c00408200L, 0x200010000L, 0x8000001001000000L, 0xa20000000000000L, 0x4000000000L, 0x1000000000000010L, 0x8020050c01418210L, 0x1a01005200000000L, false, 0, 0x0L), 4), 1188671); - - // gentest-2734 - assertEqual(perft(new Board(0x1050c00408200L, 0x200010000L, 0x8000000021000000L, 0xa20000000000000L, 0x4L, 0x1000000000001000L, 0x8020050c01419200L, 0x1a01000220000004L, true, 0, 0x0L), 4), 998825); - - // gentest-2735 - assertEqual(perft(new Board(0x1050c00408200L, 0x10000L, 0x8004000001000000L, 0xa00000200000000L, 0x4L, 0x1000000000001000L, 0x8000050e01419200L, 0x1a05000000000004L, false, 0, 0x0L), 4), 588536); - - // gentest-2736 - assertEqual(perft(new Board(0x1050400408200L, 0x10000L, 0x8004000001000000L, 0x102000800000000L, 0x4L, 0x1000000000001000L, 0x8002050401419200L, 0x1105000800000004L, true, 0, 0x0L), 4), 968017); - - // gentest-2737 - assertEqual(perft(new Board(0x1050400408200L, 0x4000000L, 0x8004000001000000L, 0x102000800000000L, 0x4L, 0x10000000200000L, 0x8002050405608200L, 0x115000800000004L, false, 0, 0x0L), 4), 971092); - - // gentest-2738 - assertEqual(perft(new Board(0x1050400408200L, 0x4000000L, 0x8004000001000000L, 0x100028000000000L, 0x4L, 0x2000000000200000L, 0x8000070405608200L, 0x2105008000000004L, true, 0, 0x0L), 4), 1145789); - - // gentest-2739 - assertEqual(perft(new Board(0x1050400408200L, 0x4000000L, 0x4000000040008L, 0x1000028000000000L, 0x4L, 0x2000000000200000L, 0x70404648208L, 0x3005008000000004L, false, 0, 0x0L), 4), 1347835); - - // gentest-2740 - assertEqual(perft(new Board(0x1050400008200L, 0x4000000L, 0x40000000400008L, 0x1000028000000000L, 0x4L, 0x4000000000200000L, 0x40070404208208L, 0x5001008000400004L, true, 0, 0x0L), 4), 1671742); - - // gentest-2741 - assertEqual(perft(new Board(0x1050400400200L, 0x4000000L, 0x1000000008L, 0x800028000000000L, 0x4L, 0x4000000000200000L, 0x71404600208L, 0x4801008000000004L, false, 0, 0x0L), 4), 953378); - - // gentest-2742 - assertEqual(perft(new Board(0x1050400400200L, 0x0L, 0x1000000400L, 0x800028000000000L, 0x800000000L, 0x4000000000200000L, 0x71400600600L, 0x4801008800000000L, true, 0, 0x0L), 4), 188532); - - // gentest-2743 - assertEqual(perft(new Board(0x1050400400200L, 0x0L, 0x400L, 0x800028000000000L, 0x1000000000L, 0x4000000000002000L, 0x70400402600L, 0x4801009000000000L, false, 0, 0x0L), 4), 618697); - - // gentest-2744 - assertEqual(perft(new Board(0x1050400400200L, 0x0L, 0x1000000L, 0x200028000000000L, 0x100000L, 0x4000000000002000L, 0x70401402200L, 0x4201008000100000L, true, 0, 0x0L), 4), 57008); - - // gentest-2745 - assertEqual(perft(new Board(0x1050400400200L, 0x0L, 0x400L, 0x200020800000000L, 0x0L, 0x4000000000100000L, 0x70400500600L, 0x4201000800000000L, false, 0, 0x0L), 4), 227079); - - // gentest-2746 - assertEqual(perft(new Board(0x1050400400200L, 0x0L, 0x400L, 0x1000021000000000L, 0x0L, 0x4000000000200000L, 0x70400600600L, 0x5001001000000000L, true, 0, 0x0L), 4), 200110); - - // gentest-2747 - assertEqual(perft(new Board(0x1050400400200L, 0x0L, 0x80000L, 0x200001002000000L, 0x0L, 0x4000000000200000L, 0x50402680200L, 0x4201001000000000L, false, 0, 0x0L), 4), 340940); - - // gentest-2748 - assertEqual(perft(new Board(0x1050400400200L, 0x0L, 0x80000L, 0x2000002002000000L, 0x0L, 0x4000000040000000L, 0x50442480200L, 0x6001002000000000L, true, 0, 0x0L), 4), 199401); - - // gentest-2749 - assertEqual(perft(new Board(0x1050440000200L, 0x0L, 0x80000L, 0x2000002002000000L, 0x0L, 0x80000080000000L, 0x504c2080200L, 0x2081002000000000L, false, 0, 0x0L), 4), 127275); - - // gentest-2750 - assertEqual(perft(new Board(0x1050400000200L, 0x0L, 0x1000L, 0x2042000000L, 0x0L, 0x80000080000000L, 0x50482001200L, 0x81002040000000L, true, 0, 0x0L), 4), 29672); - - // gentest-2751 - assertEqual(perft(new Board(0x1050400000200L, 0x0L, 0x1000L, 0x2002400000L, 0x0L, 0x80000080000000L, 0x50482001200L, 0x81002000400000L, false, 0, 0x0L), 4), 297475); - - // gentest-2752 - assertEqual(perft(new Board(0x1050400000200L, 0x0L, 0x1000L, 0x200004000002000L, 0x0L, 0x80000080000000L, 0x200050480001200L, 0x81004000002000L, true, 0, 0x0L), 4), 258561); - - // gentest-2753 - assertEqual(perft(new Board(0x1050400000200L, 0x0L, 0x40000000L, 0x4000004020000000L, 0x0L, 0x80000080000000L, 0x40000504c0000200L, 0x81004020000000L, false, 0, 0x0L), 4), 133544); - - // gentest-2754 - assertEqual(perft(new Board(0x1050400020000L, 0x0L, 0x40000000L, 0x4000001000002000L, 0x0L, 0x80000080000000L, 0x40000504c0020000L, 0x81001000002000L, true, 0, 0x0L), 4), 270700); - - // gentest-2755 - assertEqual(perft(new Board(0x1050400020000L, 0x0L, 0x20L, 0x4000003000000000L, 0x0L, 0x80000080000000L, 0x4000050480020020L, 0x81003000000000L, false, 0, 0x0L), 4), 166739); - - // gentest-2756 - assertEqual(perft(new Board(0x5010400020000L, 0x0L, 0x20L, 0x4000000010200000L, 0x0L, 0x80000080000000L, 0x4004010480020020L, 0x81000010200000L, true, 0, 0x0L), 4), 38834); - - // gentest-2757 - assertEqual(perft(new Board(0x5010400020000L, 0x0L, 0x0L, 0x50000020L, 0x0L, 0x80000000400000L, 0x4010440420000L, 0x81000010000020L, false, 0, 0x0L), 4), 214299); - - // gentest-2758 - assertEqual(perft(new Board(0x1010400020000L, 0x0L, 0x0L, 0x2000000041000000L, 0x400000000000000L, 0x80000000400000L, 0x400010440420000L, 0x2081000001000000L, true, 0, 0x0L), 4), 287143); - - // gentest-2759 - assertEqual(perft(new Board(0x1010400020000L, 0x0L, 0x0L, 0x9200000L, 0x400000000000000L, 0x80000000008000L, 0x400010408028000L, 0x81000001200000L, false, 0, 0x0L), 4), 402362); - - // gentest-2760 - assertEqual(perft(new Board(0x1010400020000L, 0x0L, 0x0L, 0x20000000000801L, 0x400000000000000L, 0x80000000008000L, 0x400010400028800L, 0xa1000000000001L, true, 0, 0x0L), 4), 482519); - - // gentest-2761 - assertEqual(perft(new Board(0x1010400020000L, 0x0L, 0x0L, 0x6001L, 0x4000000000000000L, 0x80000000008000L, 0x400001040002c000L, 0x81000000002001L, false, 0, 0x0L), 4), 10023); - - // gentest-2762 - assertEqual(perft(new Board(0x1010400020000L, 0x0L, 0x0L, 0x4201L, 0x20000000000000L, 0x800000008000L, 0x2001040002c000L, 0x1800000000201L, true, 0, 0x0L), 4), 188859); - - // gentest-2763 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2764 - assertEqual(perft(new Board(0x7f00800000bf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x800000bfffL, 0xff7f000000000000L, false, 0, 0x8100000000000081L), 4), 242735); - - // gentest-2765 - assertEqual(perft(new Board(0x7f000004003b00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000008081L, 0x800000000000008L, 0x1000000000000010L, 0x4003bffL, 0x7f7f000000008000L, true, 0, 0x100000000000081L), 4), 376773); - - // gentest-2766 - assertEqual(perft(new Board(0x7b040004003b00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000800001L, 0x800000000000008L, 0x1000000000000010L, 0x4803b7fL, 0x7f7b040000000000L, false, 0, 0x100000000000001L), 4), 424005); - - // gentest-2767 - assertEqual(perft(new Board(0x5b042005003a00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000800001L, 0x800000000000008L, 0x20000000000010L, 0x5803a7fL, 0x6f7b042000000000L, true, 0, 0x1L), 4), 546322); - - // gentest-2768 - assertEqual(perft(new Board(0x59062005003a00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000020100L, 0x800000000000008L, 0x20000000000010L, 0x5023b7eL, 0x6f79062000000000L, false, 0, 0x0L), 4), 388565); - - // gentest-2769 - assertEqual(perft(new Board(0x49162005003a00L, 0x4200000000000042L, 0x2000010000000024L, 0x100000000200100L, 0x800000000000008L, 0x20000000000010L, 0x5203b7eL, 0x6b69172000000000L, true, 0, 0x0L), 4), 652399); - - // gentest-2770 - assertEqual(perft(new Board(0x49162001003a00L, 0x4200000000000042L, 0x2000000004800004L, 0x100000000210000L, 0x800000000000008L, 0x20000000000010L, 0x1a13a5eL, 0x6b69162004000000L, false, 0, 0x0L), 4), 995227); - - // gentest-2771 - assertEqual(perft(new Board(0x49162003003800L, 0x200200000000042L, 0x2000000004800004L, 0x100000000210000L, 0x800000000000008L, 0x400000000010L, 0x3a1385eL, 0x2b49762004000000L, true, 0, 0x0L), 4), 901958); - - // gentest-2772 - assertEqual(perft(new Board(0x49162003003800L, 0x200200000000042L, 0x2000000800800004L, 0x100000008200000L, 0x800000000000008L, 0x400000000010L, 0xba0385eL, 0x2b49762800000000L, false, 0, 0x0L), 4), 961303); - - // gentest-2773 - assertEqual(perft(new Board(0x49162001102800L, 0x200008000000042L, 0x802800004L, 0x100000008200000L, 0x800000000000008L, 0x400000000010L, 0x9b0285eL, 0xb4956a802000000L, true, 0, 0x0L), 4), 915565); - - // gentest-2774 - assertEqual(perft(new Board(0x49162001102800L, 0x200008000010040L, 0x2a00004L, 0x100000020000000L, 0x800000000000008L, 0x400000000010L, 0x2191285cL, 0xb4956a002200000L, false, 0, 0x0L), 4), 1044830); - - // gentest-2775 - assertEqual(perft(new Board(0x49162001102000L, 0x200008000010040L, 0xa00004L, 0x100000020000000L, 0x800000000000008L, 0x800000000800L, 0x2191284cL, 0xb4996a000200000L, true, 0, 0x0L), 4), 1030768); - - // gentest-2776 - assertEqual(perft(new Board(0x49162001102000L, 0x200008000010040L, 0x204004L, 0x100000002000000L, 0x200000000008L, 0x800000000800L, 0x311684cL, 0x349b6a000200000L, false, 0, 0x0L), 4), 1156448); - - // gentest-2777 - assertEqual(perft(new Board(0x49162001102000L, 0x200000020010040L, 0x204004L, 0x100000008000000L, 0x200000000008L, 0x400000000800L, 0x911684cL, 0x349762020200000L, true, 0, 0x0L), 4), 1105618); - - // gentest-2778 - assertEqual(perft(new Board(0x49162001102000L, 0x200000020010040L, 0x204004L, 0x100001000000000L, 0x10000000000008L, 0x400000000800L, 0x100111684cL, 0x359562020200000L, false, 0, 0x0L), 4), 1124521); - - // gentest-2779 - assertEqual(perft(new Board(0x9562021002000L, 0x200000000010040L, 0x204004L, 0x100001000000000L, 0x10000000000008L, 0x800000000800L, 0x102101684cL, 0x319d62000200000L, true, 0, 0x0L), 4), 978251); - - // gentest-2780 - assertEqual(perft(new Board(0x9562021002000L, 0x200000000010040L, 0x204004L, 0x100001000000000L, 0x20000000080000L, 0x800000000800L, 0x1021096844L, 0x329d62000200000L, false, 0, 0x0L), 4), 1178757); - - // gentest-2781 - assertEqual(perft(new Board(0x9562021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x20000000080000L, 0x80000000000800L, 0x221092844L, 0x3a9562000004000L, true, 0, 0x0L), 4), 1027527); - - // gentest-2782 - assertEqual(perft(new Board(0x9562021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x40000000001000L, 0x80000000000400L, 0x221013444L, 0x3c9562000004000L, false, 0, 0x0L), 4), 983932); - - // gentest-2783 - assertEqual(perft(new Board(0x9166021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x40000000001000L, 0x8000000000000800L, 0x221013844L, 0x8349166000004000L, true, 0, 0x0L), 4), 1016100); - - // gentest-2784 - assertEqual(perft(new Board(0x9166021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x40000000100000L, 0x80000000000800L, 0x221112844L, 0x3c9166000004000L, false, 0, 0x0L), 4), 1266046); - - // gentest-2785 - assertEqual(perft(new Board(0x8166121002000L, 0x200000000000440L, 0x4004L, 0x100000200000000L, 0x40000000100000L, 0x8000000000000800L, 0x221102c44L, 0x8348166100004000L, true, 0, 0x0L), 4), 1235949); - - // gentest-2786 - assertEqual(perft(new Board(0x8166121002000L, 0x200000000200400L, 0x4004L, 0x100000200000000L, 0x80001L, 0x8000000000000800L, 0x221282c04L, 0x8308166100004001L, false, 0, 0x0L), 4), 1041797); - - // gentest-2787 - assertEqual(perft(new Board(0x8166121002000L, 0x200000000200400L, 0x4004L, 0x100000200000000L, 0x10000800000000L, 0x8000000000000800L, 0xa21202c04L, 0x8318166100004000L, true, 0, 0x0L), 4), 1219673); - - // gentest-2788 - assertEqual(perft(new Board(0x8166121200000L, 0x200000000000440L, 0x4004L, 0x100000200000000L, 0x80000800000000L, 0x8000000000000800L, 0xa21200c44L, 0x8388166100004000L, false, 0, 0x0L), 4), 917875); - - // gentest-2789 - assertEqual(perft(new Board(0x1e6121200000L, 0x200000000000440L, 0x14000L, 0x100000200000000L, 0x80000800000000L, 0x4000000000000800L, 0xa21210c40L, 0x43801e6100004000L, true, 0, 0x0L), 4), 1433914); - - // gentest-2790 - assertEqual(perft(new Board(0x166921200000L, 0x200000000000041L, 0x14000L, 0x100000200000000L, 0x80000000080000L, 0x4000000000000800L, 0x221290841L, 0x4380166900004000L, false, 0, 0x0L), 4), 1383526); - - // gentest-2791 - assertEqual(perft(new Board(0x126b21000000L, 0x200000000000041L, 0x80000200000L, 0x100000000000000L, 0x80000000080000L, 0x4000000000000800L, 0x80021080841L, 0x4380126b00200000L, true, 0, 0x0L), 4), 1369685); - - // gentest-2792 - assertEqual(perft(new Board(0x126b21000000L, 0x200000000000440L, 0x80000200000L, 0x100000000000000L, 0x4000000080000L, 0x4000000000100000L, 0x80021180440L, 0x4304126b00200000L, false, 0, 0x0L), 4), 1203798); - - // gentest-2793 - assertEqual(perft(new Board(0x126b21000000L, 0x40000000440L, 0x1000004000L, 0x100000000000000L, 0x4000000080000L, 0x4000000000100000L, 0x1021180440L, 0x4104166b00004000L, true, 0, 0x0L), 4), 1642789); - - // gentest-2794 - assertEqual(perft(new Board(0x122b61000000L, 0x40000100040L, 0x1000004000L, 0x100000000000000L, 0x4000000080000L, 0x4000000000002000L, 0x1021182040L, 0x4104162b40004000L, false, 0, 0x0L), 4), 1937559); - - // gentest-2795 - assertEqual(perft(new Board(0x122361000000L, 0x40800000040L, 0x1000800000L, 0x400000000000000L, 0x4000000080000L, 0x4000000000002000L, 0x1821082040L, 0x4404162340800000L, true, 0, 0x0L), 4), 1465541); - - // gentest-2796 - assertEqual(perft(new Board(0x122361000000L, 0x10000800000040L, 0x40000000800000L, 0x400000000000000L, 0x4000000040000L, 0x4000000000002000L, 0x40000821042040L, 0x4414122340800000L, false, 0, 0x0L), 4), 1081428); - - // gentest-2797 - assertEqual(perft(new Board(0x122163000000L, 0x10000800000040L, 0x800000L, 0x400000000000000L, 0x4000000000000L, 0x40000000002000L, 0x4000821002040L, 0x450122142800000L, true, 0, 0x0L), 4), 410720); - - // gentest-2798 - assertEqual(perft(new Board(0x122163000000L, 0x10000800001000L, 0x800000L, 0x100000000000000L, 0x400000000000000L, 0x40000000002000L, 0x400000821003000L, 0x150122142800000L, false, 0, 0x0L), 4), 322516); - - // gentest-2799 - assertEqual(perft(new Board(0x122163000000L, 0x10000800001000L, 0x800000L, 0x100000000000000L, 0x40000000000L, 0x80000000002000L, 0x40821003000L, 0x190122142800000L, true, 0, 0x0L), 4), 456216); - - // gentest-2800 - assertEqual(perft(new Board(0x102163000000L, 0x10020008000000L, 0x800000L, 0x1000000000000L, 0x40000000000L, 0x80000000002000L, 0x60029002000L, 0x91102142800000L, false, 0, 0x0L), 4), 421679); - } - - public static void batch7() { - // gentest-2801 - assertEqual(perft(new Board(0x102163000000L, 0x10000808000000L, 0x800000L, 0x1000000000000L, 0x40000000000L, 0x80000000002000L, 0x40829002000L, 0x91102142800000L, true, 0, 0x0L), 4), 419996); - - // gentest-2802 - assertEqual(perft(new Board(0x102161000000L, 0x40002000400L, 0x800000L, 0x1000000000000L, 0x0L, 0x80000000002000L, 0x23002400L, 0x81142140800000L, false, 0, 0x0L), 4), 118310); - - // gentest-2803 - assertEqual(perft(new Board(0x102161000000L, 0x40000000400L, 0x800000L, 0x2000000000000L, 0x0L, 0x80000000002000L, 0x40021002400L, 0x82102140800000L, true, 0, 0x0L), 4), 130507); - - // gentest-2804 - assertEqual(perft(new Board(0x102161000000L, 0x40002000000L, 0x800000L, 0x2000000000000L, 0x0L, 0x400000000010L, 0x40023000010L, 0x2502140800000L, false, 0, 0x0L), 4), 101975); - - // gentest-2805 - assertEqual(perft(new Board(0x102161000000L, 0x10000002000000L, 0x20L, 0x2000000000000L, 0x0L, 0x20000000000010L, 0x10000023000010L, 0x22102140000020L, true, 0, 0x0L), 4), 119238); - - // gentest-2806 - assertEqual(perft(new Board(0x102161000000L, 0x400000000000100L, 0x20L, 0x8000000000000L, 0x0L, 0x20000000000010L, 0x400000021000110L, 0x28102140000020L, false, 0, 0x0L), 4), 59645); - - // gentest-2807 - assertEqual(perft(new Board(0x102161000000L, 0x400000002000000L, 0x80000L, 0x8000000000000L, 0x0L, 0x400000000010L, 0x400000023000010L, 0x8502140080000L, true, 0, 0x0L), 4), 99645); - - // gentest-2808 - assertEqual(perft(new Board(0x102161000000L, 0x80000080000L, 0x0L, 0x4000000000000L, 0x0L, 0x400000000010L, 0x80021080010L, 0x4502140000000L, false, 0, 0x0L), 4), 115700); - - // gentest-2809 - assertEqual(perft(new Board(0x102161000000L, 0x80400000000L, 0x0L, 0x10000000000000L, 0x0L, 0x80000000000010L, 0x80421000010L, 0x90102140000000L, true, 0, 0x0L), 4), 71580); - - // gentest-2810 - assertEqual(perft(new Board(0x2161000000L, 0x180000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x800000000800L, 0x180021000800L, 0x10802140000000L, false, 0, 0x0L), 4), 69065); - - // gentest-2811 - assertEqual(perft(new Board(0x2161000000L, 0x180000000000L, 0x0L, 0x4000000000000L, 0x0L, 0x800000040000L, 0x180021040000L, 0x4802140000000L, true, 0, 0x0L), 4), 30910); - - // gentest-2812 - assertEqual(perft(new Board(0x2161000000L, 0x180000000000L, 0x0L, 0x40000000000000L, 0x0L, 0x800000040000L, 0x180021040000L, 0x40802140000000L, false, 0, 0x0L), 4), 67550); - - // gentest-2813 - assertEqual(perft(new Board(0x2161000000L, 0x20100000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x80000000040000L, 0x20100021040000L, 0x90002140000000L, true, 0, 0x0L), 4), 50060); - - // gentest-2814 - assertEqual(perft(new Board(0x2121400000L, 0x180000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x80000004000000L, 0x180025000000L, 0x90002100400000L, false, 0, 0x0L), 4), 62282); - - // gentest-2815 - assertEqual(perft(new Board(0x2121400000L, 0x100200000000L, 0x0L, 0x1000000000000L, 0x0L, 0x800004000000L, 0x100225000000L, 0x1802100400000L, true, 0, 0x0L), 4), 51626); - - // gentest-2816 - assertEqual(perft(new Board(0x2121400000L, 0x4100000000000L, 0x0L, 0x20000000000000L, 0x0L, 0x800800000000L, 0x4100821000000L, 0x20802100400000L, false, 0, 0x0L), 4), 28522); - - // gentest-2817 - assertEqual(perft(new Board(0x2121400000L, 0x4100000000000L, 0x0L, 0x8000000000000L, 0x0L, 0x800004000000L, 0x4100025000000L, 0x8802100400000L, true, 0, 0x0L), 4), 54174); - - // gentest-2818 - assertEqual(perft(new Board(0x2121004000L, 0x4100000000000L, 0x0L, 0x8000000000000L, 0x0L, 0x800004000000L, 0x4100025000000L, 0x8802100004000L, false, 0, 0x0L), 4), 77626); - - // gentest-2819 - assertEqual(perft(new Board(0x2121000000L, 0x1000100000000000L, 0x2000L, 0x8000000000000L, 0x0L, 0x800004000000L, 0x1000100025000000L, 0x8802100002000L, true, 0, 0x0L), 4), 96019); - - // gentest-2820 - assertEqual(perft(new Board(0x2121000000L, 0x1000100000000000L, 0x2000L, 0x800000000L, 0x0L, 0x800004000000L, 0x1000100025000000L, 0x802900002000L, false, 0, 0x0L), 4), 73697); - - // gentest-2821 - assertEqual(perft(new Board(0x2121000000L, 0x1000100000000000L, 0x20000000000L, 0x800000000L, 0x0L, 0x8000040000L, 0x1000100021040000L, 0x2a900000000L, true, 0, 0x0L), 4), 66194); - - // gentest-2822 - assertEqual(perft(new Board(0x2121000000L, 0x1000100000000000L, 0x20000000000L, 0x1000000000L, 0x0L, 0x8000000001L, 0x1000100021000001L, 0x2b100000000L, false, 0, 0x0L), 4), 55232); - - // gentest-2823 - assertEqual(perft(new Board(0x2121000000L, 0x1800000000000000L, 0x20000000000L, 0x1000L, 0x0L, 0x40000001L, 0x1800000021000001L, 0x22140001000L, true, 0, 0x0L), 4), 55365); - - // gentest-2824 - assertEqual(perft(new Board(0x2121000000L, 0x1000800000000000L, 0x20000000000L, 0x1000L, 0x0L, 0x200001L, 0x1000800021000001L, 0x22100201000L, false, 0, 0x0L), 4), 64447); - - // gentest-2825 - assertEqual(perft(new Board(0x2121000000L, 0x800000000000L, 0x400000000L, 0x1000000000000000L, 0x0L, 0x200002L, 0x800021000002L, 0x1000002500200000L, true, 0, 0x0L), 4), 72498); - - // gentest-2826 - assertEqual(perft(new Board(0x2121000000L, 0x800000000000L, 0x100000L, 0x1000000000000000L, 0x0L, 0x200002L, 0x800021000002L, 0x1000002100300000L, false, 0, 0x0L), 4), 50270); - - // gentest-2827 - assertEqual(perft(new Board(0x121000000L, 0x2000000000L, 0x8000000L, 0x10000000000000L, 0x0L, 0x200002L, 0x2021000002L, 0x10000108200000L, true, 0, 0x0L), 4), 81362); - - // gentest-2828 - assertEqual(perft(new Board(0x121000000L, 0x4000L, 0x8000000L, 0x10000000000000L, 0x0L, 0x100002L, 0x21004002L, 0x10000108100000L, false, 0, 0x0L), 4), 8885); - - // gentest-2829 - assertEqual(perft(new Board(0x2101000000L, 0x4000L, 0x1000000000000L, 0x10000000000000L, 0x0L, 0x2002L, 0x2001004002L, 0x11000100002000L, true, 0, 0x0L), 4), 54788); - - // gentest-2830 - assertEqual(perft(new Board(0x2101000000L, 0x80000000L, 0x1000000000000L, 0x10000000000000L, 0x0L, 0x420L, 0x2081000400L, 0x11000100000020L, false, 0, 0x0L), 4), 58698); - - // gentest-2831 - assertEqual(perft(new Board(0x2101000000L, 0x80000000L, 0x1000000000000L, 0x10000000L, 0x0L, 0x42L, 0x2081000002L, 0x1000110000040L, true, 0, 0x0L), 4), 41054); - - // gentest-2832 - assertEqual(perft(new Board(0x2101000000L, 0x2000000000000000L, 0x1000000000000L, 0x1000L, 0x0L, 0x42L, 0x2000002001000002L, 0x1000100001040L, false, 0, 0x0L), 4), 37638); - - // gentest-2833 - assertEqual(perft(new Board(0x2101000000L, 0x100000000000L, 0x400000000L, 0x10000000000000L, 0x0L, 0x42L, 0x102001000002L, 0x10000500000040L, true, 0, 0x0L), 4), 94214); - - // gentest-2834 - assertEqual(perft(new Board(0x2101000000L, 0x4000000000000L, 0x400000000L, 0x20000000000000L, 0x0L, 0x440L, 0x4002001000400L, 0x20000500000040L, false, 0, 0x0L), 4), 94274); - - // gentest-2835 - assertEqual(perft(new Board(0x2101000000L, 0x4000000000000L, 0x400000000L, 0x40000000000000L, 0x0L, 0x48000L, 0x4002001040000L, 0x40000500008000L, true, 0, 0x0L), 4), 118139); - - // gentest-2836 - assertEqual(perft(new Board(0x2101000000L, 0x100000000000L, 0x400000000L, 0x1000000000000L, 0x0L, 0x8800L, 0x102001000800L, 0x1000500008000L, false, 0, 0x0L), 4), 107330); - - // gentest-2837 - assertEqual(perft(new Board(0x2101000000L, 0x100000000000L, 0x2000000L, 0x1000000000000L, 0x0L, 0x1040L, 0x102001001000L, 0x1000102000040L, true, 0, 0x0L), 4), 61142); - - // gentest-2838 - assertEqual(perft(new Board(0x2101000000L, 0x40000000000000L, 0x2000000L, 0x1000000000000L, 0x0L, 0x84000L, 0x40002001080000L, 0x1000102004000L, false, 0, 0x0L), 4), 52958); - - // gentest-2839 - assertEqual(perft(new Board(0x2101000000L, 0x40000000000000L, 0x2000000L, 0x8000000000000L, 0x0L, 0x5000L, 0x40002001001000L, 0x8000102004000L, true, 0, 0x0L), 4), 24138); - - // gentest-2840 - assertEqual(perft(new Board(0x2101000000L, 0x1000000000000000L, 0x2000000L, 0x8000000L, 0x0L, 0x104000L, 0x1000002001100000L, 0x10a004000L, false, 0, 0x0L), 4), 35700); - - // gentest-2841 - assertEqual(perft(new Board(0x200101000000L, 0x1000000000000000L, 0x2000000L, 0x80000L, 0x0L, 0x104000L, 0x1000200001100000L, 0x102084000L, true, 0, 0x0L), 4), 17554); - - // gentest-2842 - assertEqual(perft(new Board(0x200101000000L, 0x1000000000000000L, 0x2000000L, 0x40000L, 0x0L, 0x1000004000L, 0x1000201001000000L, 0x102044000L, false, 0, 0x0L), 4), 62451); - - // gentest-2843 - assertEqual(perft(new Board(0x200101000000L, 0x1000000000000000L, 0x2000000L, 0x800000L, 0x0L, 0x800000020L, 0x1000200801000000L, 0x102800020L, true, 0, 0x0L), 4), 67109); - - // gentest-2844 - assertEqual(perft(new Board(0x200101000000L, 0x80000000000L, 0x2000000L, 0x10000L, 0x0L, 0x8000020L, 0x280009000000L, 0x102010020L, false, 0, 0x0L), 4), 54165); - - // gentest-2845 - assertEqual(perft(new Board(0x200101000000L, 0x2000000000L, 0x2000000L, 0x200000L, 0x0L, 0x8000010L, 0x202009000000L, 0x102200010L, true, 0, 0x0L), 4), 63492); - - // gentest-2846 - assertEqual(perft(new Board(0x200101000000L, 0x40000000L, 0x2000000L, 0x200000L, 0x0L, 0x8000800L, 0x200049000000L, 0x102200800L, false, 0, 0x0L), 4), 43601); - - // gentest-2847 - assertEqual(perft(new Board(0x101000000L, 0x40000000L, 0x2000000000000000L, 0x200000000000L, 0x0L, 0x1000000800L, 0x1041000000L, 0x2000200100000800L, true, 0, 0x0L), 4), 42312); - - // gentest-2848 - assertEqual(perft(new Board(0x101000000L, 0x200000000000L, 0x40000000000000L, 0x0L, 0x0L, 0x100000000800L, 0x300001000000L, 0x40000100000800L, false, 0, 0x0L), 4), 24918); - - // gentest-2849 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2850 - assertEqual(perft(new Board(0xff00200000df00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x200000dfffL, 0xbfff200000000000L, false, 0, 0x8100000000000081L), 4), 220261); - - // gentest-2851 - assertEqual(perft(new Board(0xbb40240800d700L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x200800d7ffL, 0xbfbb600400000000L, true, 0, 0x8100000000000081L), 4), 652632); - - // gentest-2852 - assertEqual(perft(new Board(0xbb08640000d700L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x8200000d7ffL, 0xbfbb204400000000L, false, 0, 0x8100000000000081L), 4), 484097); - - // gentest-2853 - assertEqual(perft(new Board(0xbb08640000d700L, 0x200000800000042L, 0x440000000000820L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x8200000dffbL, 0x9ffb004c00000000L, true, 0, 0x8100000000000081L), 4), 884800); - - // gentest-2854 - assertEqual(perft(new Board(0xbb086440049300L, 0x200000800000042L, 0x440000000000820L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x82040049bfbL, 0x97fb024c00000000L, false, 0, 0x8100000000000081L), 4), 935668); - - // gentest-2855 - assertEqual(perft(new Board(0xab087440009300L, 0x200000800040040L, 0x400000000000820L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x82040049bf9L, 0x97ab025c00000000L, true, 44, 0x8100000000000081L), 4), 912423); - - // gentest-2856 - assertEqual(perft(new Board(0xab087440801300L, 0x40800040040L, 0x400000000000820L, 0x8100000000000081L, 0x20000020000L, 0x1000000000000010L, 0x82040861bf1L, 0x95ab065c00000000L, false, 0, 0x8100000000000081L), 4), 1224307); - - // gentest-2857 - assertEqual(perft(new Board(0xab086450801300L, 0x40800000040L, 0x400000000000820L, 0x8100000000000081L, 0x4000000020000L, 0x1000000000000010L, 0x82840821bf1L, 0x95af044410000000L, true, 0, 0x8100000000000081L), 4), 1163424); - - // gentest-2858 - assertEqual(perft(new Board(0x2b08e450801300L, 0x40800000040L, 0x400000000040020L, 0x8100000000000081L, 0x4000000020000L, 0x1000000000002000L, 0x828408633e1L, 0x952f04c410000000L, false, 0, 0x8100000000000000L), 4), 1275842); - - // gentest-2859 - assertEqual(perft(new Board(0x2b08e450801300L, 0x40800000040L, 0x400000000000030L, 0x8100000000000081L, 0x4000000020000L, 0x1000000000002000L, 0x828408233f1L, 0x952f04c410000000L, true, 0, 0x8100000000000000L), 4), 1220459); - - // gentest-2860 - assertEqual(perft(new Board(0x2b08e450801300L, 0x40002000040L, 0x400000000004010L, 0x8100000000000081L, 0x200000000020000L, 0x1000000000002000L, 0x820428273d1L, 0x972b04c410000000L, false, 0, 0x8100000000000000L), 4), 746925); - - // gentest-2861 - assertEqual(perft(new Board(0x2b08e450801300L, 0x400002000040L, 0x400000000004010L, 0x8100000000000081L, 0x200000000010000L, 0x1000000000002000L, 0x820428173d1L, 0x972b40c410000000L, true, 0, 0x8100000000000000L), 4), 650803); - - // gentest-2862 - assertEqual(perft(new Board(0x2b08e450801300L, 0x400800200000L, 0x400000000004010L, 0x8100000000000081L, 0x200000000010000L, 0x800000000002000L, 0x82840a17391L, 0x8f2b40c410000000L, false, 0, 0x0L), 4), 1022801); - - // gentest-2863 - assertEqual(perft(new Board(0x2b08a450801300L, 0x4880000000L, 0x400000000004010L, 0x2100000000000081L, 0x200000000010000L, 0x800000000002000L, 0x86840817391L, 0x2f2b008490000000L, true, 0, 0x0L), 4), 649338); - - // gentest-2864 - assertEqual(perft(new Board(0x2b08a450801300L, 0x24080000000L, 0x400000000000030L, 0x4100000000000081L, 0x200000000010000L, 0x800000000002000L, 0xa60408133b1L, 0x4f2b008490000000L, false, 0, 0x0L), 4), 622373); - - // gentest-2865 - assertEqual(perft(new Board(0x2b08a450801300L, 0x24000004000L, 0x400000000000030L, 0x4100000000000081L, 0x200000000040000L, 0x1000000000002000L, 0xa60408433b1L, 0x572b008410004000L, true, 0, 0x0L), 4), 869973); - - // gentest-2866 - assertEqual(perft(new Board(0x2b0824d0811200L, 0x24000004000L, 0x400000000000820L, 0x4100000000000081L, 0x200000000040000L, 0x1000000000002000L, 0xa6040853aa1L, 0x572b000490004000L, false, 0, 0x0L), 4), 605029); - - // gentest-2867 - assertEqual(perft(new Board(0x2b0820d0811200L, 0x24000004000L, 0x400000000000820L, 0x4100000000000081L, 0x200000400000000L, 0x1000000000002000L, 0xa6440813aa1L, 0x572b000090004000L, true, 0, 0x0L), 4), 610455); - - // gentest-2868 - assertEqual(perft(new Board(0x30820d0811200L, 0x28000000100000L, 0x400000000000820L, 0x4100000000000081L, 0x200000400000000L, 0x1000000000002000L, 0x28082440813aa1L, 0x5703000090100000L, false, 0, 0x0L), 4), 1004628); - - // gentest-2869 - assertEqual(perft(new Board(0x2082190811200L, 0x28000000000000L, 0x400000000000820L, 0x100000040000081L, 0x200000000100000L, 0x1000000000002000L, 0x28082000913aa1L, 0x17020001d0000000L, true, 0, 0x0L), 4), 639299); - - // gentest-2870 - assertEqual(perft(new Board(0x82390811200L, 0x2020000000000000L, 0x400000000004800L, 0x100000040000081L, 0x200000000100000L, 0x1000000000002000L, 0x2020082000917a81L, 0x17000003d0000000L, false, 0, 0x0L), 4), 1263295); - - // gentest-2871 - assertEqual(perft(new Board(0x80390811200L, 0x2020000000000000L, 0x2000004800L, 0x100000040000005L, 0x4000000100000L, 0x1000000000002000L, 0x2020080000917a05L, 0x11040023d0000000L, true, 0, 0x0L), 4), 2923058); - - // gentest-2872 - assertEqual(perft(new Board(0x80380811200L, 0x2020000000000000L, 0x8000010000800L, 0x100000040000041L, 0x4000000100000L, 0x1000000000002000L, 0x2020080010913a41L, 0x110c0003c0000000L, false, 0, 0x0L), 4), 3040888); - - // gentest-2873 - assertEqual(perft(new Board(0x80380811200L, 0x28000000000000L, 0x10000800L, 0x100000040000041L, 0x100000L, 0x1000000000002000L, 0x28080010813a41L, 0x11000003c0100000L, true, 0, 0x0L), 4), 124599); - - // gentest-2874 - assertEqual(perft(new Board(0x80380811200L, 0x220000000000000L, 0x10000800L, 0x100000000000041L, 0x0L, 0x1000000000100000L, 0x220080010911a01L, 0x1100000380000040L, false, 0, 0x0L), 4), 527748); - - // gentest-2875 - assertEqual(perft(new Board(0x80380811200L, 0x220000000000000L, 0x10000800L, 0x100000000000041L, 0x0L, 0x40000008000000L, 0x220080018811a01L, 0x140000380000040L, true, 0, 0x0L), 4), 813428); - - // gentest-2876 - assertEqual(perft(new Board(0x803c0011200L, 0xa00000000000000L, 0x10000800L, 0x100000000000001L, 0x0L, 0x40000008000000L, 0xa00080058011a01L, 0x140000380000000L, false, 0, 0x0L), 4), 219949); - - // gentest-2877 - assertEqual(perft(new Board(0x803c0011200L, 0x200000000000000L, 0x10000800L, 0x100000000000001L, 0x0L, 0x20000008000000L, 0x200080058011a01L, 0x120000380000000L, true, 0, 0x0L), 4), 258684); - - // gentest-2878 - assertEqual(perft(new Board(0x803c0011200L, 0x200000000000000L, 0x100800000000000L, 0x1L, 0x0L, 0x100008000000L, 0x300880048011201L, 0x100380000000L, false, 0, 0x0L), 4), 50388); - - // gentest-2879 - assertEqual(perft(new Board(0x1c2011200L, 0x200000000000000L, 0x140000000000000L, 0x1L, 0x0L, 0x80008000000L, 0x340000048011201L, 0x80182000000L, true, 0, 0x0L), 4), 51094); - - // gentest-2880 - assertEqual(perft(new Board(0x1c2011200L, 0x8000000000000L, 0x140000000000000L, 0x20L, 0x0L, 0x10000008000000L, 0x148000048011220L, 0x10000182000000L, false, 0, 0x0L), 4), 124041); - - // gentest-2881 - assertEqual(perft(new Board(0x142811200L, 0x8000000000000L, 0x140000000000000L, 0x200000L, 0x0L, 0x80008000000L, 0x148000048211200L, 0x80102800000L, true, 0, 0x0L), 4), 74138); - - // gentest-2882 - assertEqual(perft(new Board(0x4102811200L, 0x8000000000000L, 0x140000000000000L, 0x20000000L, 0x0L, 0x4000008000000L, 0x148004028011200L, 0x4000102800000L, false, 0, 0x0L), 4), 95673); - - // gentest-2883 - assertEqual(perft(new Board(0x4102811200L, 0x8000000000000L, 0x100800000000000L, 0x20000000L, 0x0L, 0x4000008000000L, 0x108804028011200L, 0x4000102800000L, true, 0, 0x0L), 4), 83465); - - // gentest-2884 - assertEqual(perft(new Board(0x5102810200L, 0x0L, 0x100800000000000L, 0x20000000L, 0x0L, 0x8000008000000L, 0x100805028010200L, 0x8000102800000L, false, 0, 0x0L), 4), 72731); - - // gentest-2885 - assertEqual(perft(new Board(0x5003810200L, 0x0L, 0x800800000000L, 0x20000000L, 0x0L, 0x800000008000000L, 0x805828010200L, 0x800000003800000L, true, 0, 0x0L), 4), 59322); - - // gentest-2886 - assertEqual(perft(new Board(0x5003810200L, 0x0L, 0x800000200000L, 0x20000000L, 0x0L, 0x1000000400000000L, 0x805420210200L, 0x1000000003800000L, false, 0, 0x0L), 4), 45045); - - // gentest-2887 - assertEqual(perft(new Board(0x5003810200L, 0x0L, 0x800000200000L, 0x4000000L, 0x0L, 0x20000400000000L, 0x805404210200L, 0x20000003800000L, true, 0, 0x0L), 4), 49951); - - // gentest-2888 - assertEqual(perft(new Board(0x5003810200L, 0x0L, 0x808000000000L, 0x4L, 0x0L, 0x100400000000L, 0x80d400010204L, 0x100003800000L, false, 0, 0x0L), 4), 39526); - - // gentest-2889 - assertEqual(perft(new Board(0x5003018200L, 0x0L, 0x1000800000000000L, 0x4L, 0x0L, 0x2400000000L, 0x1000805400010204L, 0x2003008000L, true, 0, 0x0L), 4), 101743); - - // gentest-2890 - assertEqual(perft(new Board(0x5003038000L, 0x0L, 0x1000800000000000L, 0x4L, 0x0L, 0x14000000L, 0x1000805004030004L, 0x13008000L, false, 0, 0x0L), 4), 86554); - - // gentest-2891 - assertEqual(perft(new Board(0x5003030000L, 0x0L, 0x1000800000000000L, 0x1L, 0x80000000L, 0x14000000L, 0x1000805004030001L, 0x93000000L, true, 0, 0x0L), 4), 160641); - - // gentest-2892 - assertEqual(perft(new Board(0x5001030000L, 0x0L, 0x1000800000000000L, 0x40L, 0x800000L, 0x12000000L, 0x1000805002030040L, 0x11800000L, false, 0, 0x0L), 4), 323989); - - // gentest-2893 - assertEqual(perft(new Board(0x5001030000L, 0x0L, 0x800000000000L, 0x400000L, 0x1000000000000000L, 0x12000000L, 0x805002430000L, 0x1000000011000000L, true, 0, 0x0L), 4), 109149); - - // gentest-2894 - assertEqual(perft(new Board(0x5000030000L, 0x0L, 0x800000000000L, 0x8000000000000L, 0x1000000000000000L, 0x12000000L, 0x8805002010000L, 0x1000000010020000L, false, 0, 0x0L), 4), 172783); - - // gentest-2895 - assertEqual(perft(new Board(0x5000030000L, 0x0L, 0x800000000000L, 0x8000000000000L, 0x100000000000000L, 0x2004000000L, 0x8805004010000L, 0x100002000020000L, true, 0, 0x0L), 4), 251614); - - // gentest-2896 - assertEqual(perft(new Board(0x5000030000L, 0x0L, 0x800000000000L, 0x1000000000000L, 0x100000000000000L, 0x28000000L, 0x1805008010000L, 0x100000020020000L, false, 0, 0x0L), 4), 108858); - - // gentest-2897 - assertEqual(perft(new Board(0x5000030000L, 0x0L, 0x800000000000L, 0x100000000L, 0x100000000000000L, 0x28000000L, 0x805108010000L, 0x100000020020000L, true, 0, 0x0L), 4), 97778); - - // gentest-2898 - assertEqual(perft(new Board(0x5000030000L, 0x0L, 0x800000000000L, 0x100000000L, 0x200000L, 0x80020000000L, 0x885100010000L, 0x20220000L, false, 0, 0x0L), 4), 130289); - - // gentest-2899 - assertEqual(perft(new Board(0x5000010200L, 0x0L, 0x800000000000L, 0x100000000L, 0x10000000L, 0x420000000L, 0x805500010000L, 0x30000200L, true, 0, 0x0L), 4), 129748); - - // gentest-2900 - assertEqual(perft(new Board(0x5001000000L, 0x0L, 0x40000000000002L, 0x100000000L, 0x10000000L, 0x420000000L, 0x40005501000000L, 0x30000002L, false, 0, 0x0L), 4), 141380); - - // gentest-2901 - assertEqual(perft(new Board(0x5001000000L, 0x0L, 0x40000000080000L, 0x100000000L, 0x1000L, 0x20020000000L, 0x40025101000000L, 0x20081000L, true, 0, 0x0L), 4), 282625); - - // gentest-2902 - assertEqual(perft(new Board(0x5001000000L, 0x0L, 0x40000000080000L, 0x400L, 0x10000000L, 0x20020000000L, 0x40025001000400L, 0x30080000L, false, 0, 0x0L), 4), 358703); - - // gentest-2903 - assertEqual(perft(new Board(0x1001000000L, 0x0L, 0x40000000001000L, 0x2000L, 0x10000000L, 0x24000000000L, 0x40021001002000L, 0x4010001000L, true, 0, 0x0L), 4), 285473); - - // gentest-2904 - assertEqual(perft(new Board(0x1001000000L, 0x0L, 0x800200000000L, 0x2000L, 0x10000000L, 0x24000000000L, 0x821001002000L, 0x4210000000L, false, 0, 0x0L), 4), 96066); - - // gentest-2905 - assertEqual(perft(new Board(0x1001000000L, 0x0L, 0x10020000000L, 0x2000L, 0x10000000L, 0x20040000000L, 0x21021002000L, 0x10050000000L, true, 0, 0x0L), 4), 405393); - - // gentest-2906 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x10000000004L, 0x8000L, 0x1000000000L, 0x20040000000L, 0x20001008004L, 0x11040000000L, false, 0, 0x0L), 4), 395737); - - // gentest-2907 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x80004L, 0x80000000000000L, 0x4000000000L, 0x20040000000L, 0x80020001000004L, 0x4040080000L, true, 0, 0x0L), 4), 448417); - - // gentest-2908 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x2000000800L, 0x80000000000000L, 0x4000000000L, 0x4000040000000L, 0x84000001000800L, 0x6040000000L, false, 0, 0x0L), 4), 254564); - - // gentest-2909 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x404000000000L, 0x80000000000000L, 0x800000000000L, 0x4000040000000L, 0x84004001000000L, 0xc00040000000L, true, 0, 0x0L), 4), 293691); - - // gentest-2910 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x400080000000L, 0x80000000000000L, 0x4000000000L, 0x200000040000000L, 0x280000081000000L, 0x404040000000L, false, 0, 0x0L), 4), 280088); - - // gentest-2911 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x400080000000L, 0x1000000000000L, 0x2000000000L, 0x200000000200000L, 0x201000081000000L, 0x402000200000L, true, 0, 0x0L), 4), 329278); - - // gentest-2912 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x10400000000000L, 0x1000000000000L, 0x2000000000L, 0x4000000004000L, 0x15000001000000L, 0x402000004000L, false, 0, 0x0L), 4), 334545); - - // gentest-2913 - assertEqual(perft(new Board(0x1000000L, 0x0L, 0x10000010000000L, 0x1000000000000L, 0x200000000000L, 0x400000000004000L, 0x411000001000000L, 0x200010004000L, true, 0, 0x0L), 4), 453171); - - // gentest-2914 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x80000080000L, 0x1000000000000L, 0x200000000000L, 0x400000000004000L, 0x401080100000000L, 0x200000084000L, false, 0, 0x0L), 4), 505821); - - // gentest-2915 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x10000008000L, 0x1000000000000L, 0x400000000000L, 0x400000000004000L, 0x401000100008000L, 0x410000004000L, true, 0, 0x0L), 4), 73905); - - // gentest-2916 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x10000000000L, 0x100000000000000L, 0x400000000000L, 0x8000000008000L, 0x108000100000000L, 0x410000008000L, false, 0, 0x0L), 4), 119345); - - // gentest-2917 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x4000000L, 0x1000000000000L, 0x400L, 0x8000000008000L, 0x9000100000000L, 0x4008400L, true, 0, 0x0L), 4), 148521); - - // gentest-2918 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x4000000L, 0x1000000000000000L, 0x2L, 0x8000000008000L, 0x1008000100000000L, 0x4008002L, false, 0, 0x0L), 4), 295296); - - // gentest-2919 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x4000000L, 0x2000000000000000L, 0x20000000000L, 0x8000000008000L, 0x2008000100000000L, 0x20004008000L, true, 0, 0x0L), 4), 254153); - - // gentest-2920 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x4000000L, 0x20000000L, 0x40000000000L, 0x800000000008000L, 0x800000120000000L, 0x40004008000L, false, 0, 0x0L), 4), 185228); - - // gentest-2921 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x100000000000L, 0x2000000000000000L, 0x40000000000L, 0x800000000000080L, 0x2800000100000000L, 0x140000000080L, true, 0, 0x0L), 4), 111433); - - // gentest-2922 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x100000000000L, 0x4000000000000L, 0x0L, 0x800000000000080L, 0x804000100000000L, 0x100000000080L, false, 0, 0x0L), 4), 45994); - - // gentest-2923 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x1000000000000000L, 0x400000000L, 0x0L, 0x800000000000080L, 0x800000500000000L, 0x1000000000000080L, true, 0, 0x0L), 4), 25948); - - // gentest-2924 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x1000000L, 0x400000000000000L, 0x0L, 0x800000000000080L, 0xc00010000000000L, 0x1000080L, false, 0, 0x0L), 4), 20942); - - // gentest-2925 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x1000000000000000L, 0x4000000000000L, 0x0L, 0x800000000004000L, 0x804010000000000L, 0x1000000000004000L, true, 0, 0x0L), 4), 45432); - - // gentest-2926 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x1000000000000000L, 0x4000000000000L, 0x0L, 0x200000000000080L, 0x204010000000000L, 0x1000000000000080L, false, 0, 0x0L), 4), 31913); - - // gentest-2927 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x1000000000000000L, 0x4000000000000L, 0x0L, 0x400000000000020L, 0x404010000000000L, 0x1000000000000020L, true, 0, 0x0L), 4), 33729); - - // gentest-2928 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x8000000000L, 0x20000000000000L, 0x0L, 0x800000000000020L, 0x820010000000000L, 0x8000000020L, false, 0, 0x0L), 4), 16980); - - // gentest-2929 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x400000000000L, 0x200000L, 0x0L, 0x800000000000010L, 0x800010000200000L, 0x400000000010L, true, 0, 0x0L), 4), 46526); - - // gentest-2930 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x80000000000000L, 0x20000L, 0x0L, 0x8000000000010L, 0x8010000020000L, 0x80000000000010L, false, 0, 0x0L), 4), 61913); - - // gentest-2931 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x80000000000000L, 0x200L, 0x0L, 0x8000000000010L, 0x8010000000200L, 0x80000000000010L, true, 0, 0x0L), 4), 48954); - - // gentest-2932 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x2L, 0x800L, 0x0L, 0x100000000010L, 0x110000000800L, 0x12L, false, 0, 0x0L), 4), 26592); - - // gentest-2933 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x400L, 0x1000L, 0x0L, 0x100000000020L, 0x110000001000L, 0x420L, true, 0, 0x0L), 4), 29872); - - // gentest-2934 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x400L, 0x8000L, 0x0L, 0x80000000010L, 0x90000008000L, 0x410L, false, 0, 0x0L), 4), 52621); - - // gentest-2935 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-2936 - assertEqual(perft(new Board(0xef00102001de00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2001deffL, 0xffef001000000000L, false, 0, 0x8100000000000081L), 4), 399908); - - // gentest-2937 - assertEqual(perft(new Board(0xeb04103001ce00L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x3001ceffL, 0xfdeb051000000000L, true, 0, 0x8100000000000081L), 4), 885371); - - // gentest-2938 - assertEqual(perft(new Board(0xeb04103001ce00L, 0x4000010000000042L, 0x2400000000001004L, 0x8100000000000081L, 0x200000000008L, 0x1000000000000020L, 0x3001deefL, 0xf5eb251000000000L, false, 0, 0x8100000000000000L), 4), 803782); - - // gentest-2939 - assertEqual(perft(new Board(0xeb04103100ce00L, 0x4000010000000042L, 0x400000000011004L, 0x8200000000000081L, 0x200000000008L, 0x1000000000000020L, 0x3100deefL, 0xd6eb251000010000L, true, 0, 0x8000000000000000L), 4), 993496); - - // gentest-2940 - assertEqual(perft(new Board(0xeb041031804e00L, 0x4000010000000042L, 0x400000004010004L, 0x8200000000000081L, 0x200000000008L, 0x800000000000020L, 0x35804eefL, 0xceeb251000010000L, false, 0, 0x0L), 4), 1327868); - - // gentest-2941 - assertEqual(perft(new Board(0xeb041031844a00L, 0x4000010000000042L, 0x410000004000004L, 0x8200000000000081L, 0x80000000008L, 0x800000000000020L, 0x35844aefL, 0xcefb0d1000000000L, true, 0, 0x0L), 4), 1323568); - - // gentest-2942 - assertEqual(perft(new Board(0xeb043011844a00L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, 0x88000000000L, 0x800000000000020L, 0xa015844ae7L, 0xeeeb0d1000000000L, false, 0, 0x0L), 4), 1136579); - - // gentest-2943 - assertEqual(perft(new Board(0xeb0034118c4200L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, 0x48000000000L, 0x800000000000020L, 0xa0158c42e7L, 0xeeeb051400000000L, true, 0, 0x0L), 4), 1262150); - - // gentest-2944 - assertEqual(perft(new Board(0xeb0014118c4200L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, 0x208000000000L, 0x800000000000010L, 0x80158c42d7L, 0xeeeb211400000000L, false, 0, 0x0L), 4), 1292844); - - // gentest-2945 - assertEqual(perft(new Board(0x638814118c4200L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, 0x208000000000L, 0x800000000000800L, 0x80158c4ac7L, 0xee63a91400000000L, true, 0, 0x0L), 4), 1062454); - - // gentest-2946 - assertEqual(perft(new Board(0x638814518c0200L, 0x4000000000000042L, 0x2008010000000004L, 0x8200000000000081L, 0x208000000000L, 0x800000000000800L, 0x180518c0ac7L, 0xea6ba81400000000L, false, 0, 0x0L), 4), 791347); - - // gentest-2947 - assertEqual(perft(new Board(0x63801c518c0200L, 0x4000000000001002L, 0x2008010000000004L, 0x8200000000000081L, 0x10008000000000L, 0x800000000000800L, 0x180518c1a87L, 0xea7b801c00000000L, true, 0, 0x0L), 4), 1119516); - - // gentest-2948 - assertEqual(perft(new Board(0x638014d10c0200L, 0x4000000000000042L, 0x2008010000000004L, 0x8200000000000081L, 0x10008000000000L, 0x800000000000800L, 0x180c10c0ac7L, 0xea7b801410000000L, false, 0, 0x0L), 4), 806522); - - // gentest-2949 - assertEqual(perft(new Board(0x638014910c0200L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, 0x10008000000000L, 0x800000000000800L, 0x180810d0ac6L, 0xe973801450000000L, true, 0, 0x0L), 4), 900148); - - // gentest-2950 - assertEqual(perft(new Board(0x238056910c0000L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, 0x10008000000000L, 0x800000000000800L, 0x182810d08c6L, 0xe933805450000000L, false, 0, 0x0L), 4), 696377); - - // gentest-2951 - assertEqual(perft(new Board(0x238056811c0000L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, 0x108000000000L, 0x800000000000010L, 0x182810d00d6L, 0xe923905440100000L, true, 0, 0x0L), 4), 1039444); - - // gentest-2952 - assertEqual(perft(new Board(0x3a01685180000L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, 0x104000000000L, 0x800000000000010L, 0x142850900d6L, 0xe903b01440100000L, false, 0, 0x0L), 4), 1329144); - - // gentest-2953 - assertEqual(perft(new Board(0x3a01685080000L, 0x4000000000000042L, 0x2000010040100000L, 0x180000000010080L, 0x400004000000000L, 0x800000000000010L, 0x142851900d2L, 0x6d83a01440000000L, true, 0, 0x0L), 4), 1406059); - - // gentest-2954 - assertEqual(perft(new Board(0x3a01685080000L, 0x4000000000000042L, 0x2000010000300000L, 0x180000000040080L, 0x400008000000000L, 0x800000000000010L, 0x182851c00d2L, 0x6d83a01400200000L, false, 0, 0x0L), 4), 1495619); - - // gentest-2955 - assertEqual(perft(new Board(0x3a01685000000L, 0x4000000000000042L, 0x2000010000200004L, 0x180000000040080L, 0x8000080000L, 0x800000000000010L, 0x182850400d6L, 0x6983a01400280000L, true, 0, 0x0L), 4), 1512471); - - // gentest-2956 - assertEqual(perft(new Board(0x1a01685000000L, 0x4000000000000840L, 0x2002000000200004L, 0x180000000040080L, 0x8000000000L, 0x800000000000010L, 0x20082850408d4L, 0x6981a01400200000L, false, 0, 0x0L), 4), 1256456); - - // gentest-2957 - assertEqual(perft(new Board(0x1a01685000000L, 0x4000000000200040L, 0x2002000000000004L, 0x180000000040080L, 0x8000000000L, 0x800000000000010L, 0x20082852400d4L, 0x6981a01400000000L, true, 0, 0x0L), 4), 667804); - - // gentest-2958 - assertEqual(perft(new Board(0x1a21485000000L, 0x4000000000200040L, 0x2002000000000004L, 0x180000000040080L, 0x0L, 0x1000000000000010L, 0x20200852400d4L, 0x7181a01400000000L, false, 0, 0x0L), 4), 657090); - - // gentest-2959 - assertEqual(perft(new Board(0x1a29405000000L, 0x4000000000200040L, 0x2002000000000004L, 0x110000000040080L, 0x0L, 0x1000000000000010L, 0x20280052400d4L, 0x7111a01400000000L, true, 0, 0x0L), 4), 487689); - - // gentest-2960 - assertEqual(perft(new Board(0x1229405000000L, 0x4000000000200040L, 0x2000840000000000L, 0x104000000040080L, 0x0L, 0x1000000000000010L, 0x8680052400d0L, 0x7105201400000000L, false, 0, 0x0L), 4), 142138); - - // gentest-2961 - assertEqual(perft(new Board(0x1229504000000L, 0x4000000000200040L, 0x2000840000000000L, 0x104000000040080L, 0x0L, 0x400000000000010L, 0x8681042400d0L, 0x6505201400000000L, true, 0, 0x0L), 4), 575088); - - // gentest-2962 - assertEqual(perft(new Board(0x1229504000000L, 0x4000000000201000L, 0x2100800000000000L, 0x20000000040080L, 0x0L, 0x400000000000010L, 0x100828104241090L, 0x6421201400000000L, false, 0, 0x0L), 4), 553133); - - // gentest-2963 - assertEqual(perft(new Board(0x1229504000000L, 0x800020200000L, 0x2100000000000000L, 0x20000000040080L, 0x0L, 0x8000000000010L, 0x100028124240090L, 0x2029a01400000000L, true, 0, 0x0L), 4), 446645); - - // gentest-2964 - assertEqual(perft(new Board(0x1229504000000L, 0x804020000000L, 0x2100000000000000L, 0x20000000010080L, 0x0L, 0x400000000000010L, 0x10002c124010090L, 0x2421a01400000000L, false, 0, 0x0L), 4), 696792); - - // gentest-2965 - assertEqual(perft(new Board(0x102d504000000L, 0x2020000000L, 0x2000000000200000L, 0x20000000010080L, 0x0L, 0x400000000000010L, 0x28124210090L, 0x2421007400000000L, true, 0, 0x0L), 4), 868137); - - // gentest-2966 - assertEqual(perft(new Board(0x102d504000000L, 0x2000004000L, 0x2000000000200000L, 0x20000000810000L, 0x0L, 0x800000000000010L, 0x28104a14010L, 0x2821007400000000L, false, 0, 0x0L), 4), 646646); - - // gentest-2967 - assertEqual(perft(new Board(0x102d504000000L, 0x80000004000L, 0x2000000040000000L, 0x80000000810000L, 0x0L, 0x800000000000010L, 0x28144814010L, 0x2881085400000000L, true, 0, 0x0L), 4), 718518); - - // gentest-2968 - assertEqual(perft(new Board(0x102d504000000L, 0x80000004000L, 0x2000000040000000L, 0x10000000210000L, 0x0L, 0x800000000000010L, 0x28144214010L, 0x2811085400000000L, false, 0, 0x0L), 4), 558481); - - // gentest-2969 - assertEqual(perft(new Board(0x102d504000000L, 0x2000000004000L, 0x2000100000000000L, 0x40000000210000L, 0x0L, 0x800000000000010L, 0x128104214010L, 0x2843005400000000L, true, 0, 0x0L), 4), 399215); - - // gentest-2970 - assertEqual(perft(new Board(0x102d504000000L, 0x2000800000000L, 0x2000100000000000L, 0x8000000210000L, 0x0L, 0x800000000000010L, 0x128904210010L, 0x280b005400000000L, false, 0, 0x0L), 4), 519655); - - // gentest-2971 - assertEqual(perft(new Board(0x102d504000000L, 0x1000000800000000L, 0x2000100000000000L, 0x8000000010020L, 0x0L, 0x800000000000010L, 0x128904010030L, 0x3809005400000000L, true, 0, 0x0L), 4), 636298); - - // gentest-2972 - assertEqual(perft(new Board(0x102d504000000L, 0x1000000002000000L, 0x2000100000000000L, 0x40000000400020L, 0x0L, 0x800000000000010L, 0x128106400030L, 0x3841005400000000L, false, 0, 0x0L), 4), 589382); - - // gentest-2973 - assertEqual(perft(new Board(0x103c414000000L, 0x1000000002000000L, 0x2000100000000000L, 0x20000000400020L, 0x0L, 0x800000000000010L, 0x138006400030L, 0x3821004410000000L, true, 0, 0x0L), 4), 606653); - - // gentest-2974 - assertEqual(perft(new Board(0x103c414000000L, 0x1000000002000000L, 0x2000100000000000L, 0x40002000020000L, 0x0L, 0x800000000000010L, 0x13a006020010L, 0x3841004410000000L, false, 0, 0x0L), 4), 445667); - - // gentest-2975 - assertEqual(perft(new Board(0x1038454000000L, 0x1000000002000000L, 0x100000000000L, 0x2002000000020000L, 0x0L, 0x800000000000010L, 0x2000138006020010L, 0x1803000450000000L, true, 0, 0x0L), 4), 246709); - - // gentest-2976 - assertEqual(perft(new Board(0x38454000000L, 0x1000000002000000L, 0x2000000000L, 0x22000000020000L, 0x0L, 0x800000000000010L, 0x2001a006020010L, 0x1802020450000000L, false, 0, 0x0L), 4), 235031); - - // gentest-2977 - assertEqual(perft(new Board(0x38454000000L, 0x1000000002000000L, 0x80000000000000L, 0x420000000020000L, 0x0L, 0x800000000000010L, 0xa0018006020010L, 0x1c00020450000000L, true, 0, 0x0L), 4), 208224); - - // gentest-2978 - assertEqual(perft(new Board(0x38454000000L, 0x1000000002000000L, 0x80000000000000L, 0x5000000080000L, 0x0L, 0x800000000000010L, 0x81018006080010L, 0x1804020450000000L, false, 0, 0x0L), 4), 58519); - - // gentest-2979 - assertEqual(perft(new Board(0x38454000000L, 0x80002000000L, 0x80000000000000L, 0x1040000080000L, 0x0L, 0x800000000000008L, 0x81018006080008L, 0x8000e0450000000L, true, 0, 0x0L), 4), 121984); - - // gentest-2980 - assertEqual(perft(new Board(0x38404400000L, 0x80000000400L, 0x10000000L, 0x1040000080000L, 0x0L, 0x800000000000008L, 0x1018014080408L, 0x8000e0400400000L, false, 0, 0x0L), 4), 85507); - - // gentest-2981 - assertEqual(perft(new Board(0x38404400000L, 0x80008000000L, 0x10000000L, 0x1000000080000L, 0x0L, 0x800000000000008L, 0x1801c080008L, 0x8010a0400400000L, true, 0, 0x0L), 4), 396727); - - // gentest-2982 - assertEqual(perft(new Board(0x38404400000L, 0x80000200000L, 0x80L, 0x1000000080000L, 0x0L, 0x8000000000008L, 0x18004280088L, 0x90a0400400000L, false, 0, 0x0L), 4), 130649); - - // gentest-2983 - assertEqual(perft(new Board(0x38404400000L, 0x80000200000L, 0x4000L, 0x100000000080000L, 0x0L, 0x4000000000008L, 0x18004284008L, 0x1040a0400400000L, true, 0, 0x0L), 4), 295823); - - // gentest-2984 - assertEqual(perft(new Board(0x38404400000L, 0x20000000200000L, 0x4000L, 0x100000800000000L, 0x0L, 0x4000000001000L, 0x18804205000L, 0x124020400400000L, false, 0, 0x0L), 4), 237741); - - // gentest-2985 - assertEqual(perft(new Board(0x38404400000L, 0x400000000040L, 0x4000L, 0x100000800000000L, 0x0L, 0x4000000001000L, 0x18804005040L, 0x104420400400000L, true, 0, 0x0L), 4), 209660); - - // gentest-2986 - assertEqual(perft(new Board(0x38404400000L, 0x400000000040L, 0x4000L, 0x1000004000000000L, 0x0L, 0x4000000000008L, 0x1c004004048L, 0x1004420400400000L, false, 0, 0x0L), 4), 327669); - - // gentest-2987 - assertEqual(perft(new Board(0x430404400000L, 0x40L, 0x4000L, 0x4010000000L, 0x0L, 0x200000000000008L, 0x414004004048L, 0x200020410400000L, true, 0, 0x0L), 4), 97076); - - // gentest-2988 - assertEqual(perft(new Board(0x430004400000L, 0x40L, 0x40000000000L, 0x1000000400000000L, 0x0L, 0x200000000000008L, 0x450404000048L, 0x1200020000400000L, false, 0, 0x0L), 4), 154529); - - // gentest-2989 - assertEqual(perft(new Board(0x430004400000L, 0x40L, 0x4000L, 0x40000400000000L, 0x0L, 0x200000000000008L, 0x410404004048L, 0x240020000400000L, true, 0, 0x0L), 4), 115471); - - // gentest-2990 - assertEqual(perft(new Board(0x430004400000L, 0x40L, 0x10000000L, 0x8000800000000L, 0x0L, 0x200000000000008L, 0x410814000048L, 0x208020000400000L, false, 0, 0x0L), 4), 164130); - - // gentest-2991 - assertEqual(perft(new Board(0x30004400000L, 0x200000L, 0x10000000L, 0x400800000000L, 0x0L, 0x200000000000008L, 0x10814200008L, 0x200420000400000L, true, 0, 0x0L), 4), 200985); - - // gentest-2992 - assertEqual(perft(new Board(0x1020004400000L, 0x200000L, 0x10000000L, 0x400800000000L, 0x0L, 0x100000000000004L, 0x1000814200004L, 0x100420000400000L, false, 0, 0x0L), 4), 136456); - - // gentest-2993 - assertEqual(perft(new Board(0x20004400000L, 0x200000L, 0x10000000L, 0x408000000000L, 0x0L, 0x10000000004L, 0x8014200004L, 0x430000400000L, true, 0, 0x0L), 4), 199320); - - // gentest-2994 - assertEqual(perft(new Board(0x204400000L, 0x200000L, 0x80000000000000L, 0x8000000000L, 0x0L, 0x10000000004L, 0x80008004200004L, 0x10200400000L, false, 0, 0x0L), 4), 51435); - - // gentest-2995 - assertEqual(perft(new Board(0x204004000L, 0x10L, 0x80000000000000L, 0x8000000000L, 0x0L, 0x100000004L, 0x80008004000014L, 0x300004000L, true, 0, 0x0L), 4), 69444); - - // gentest-2996 - assertEqual(perft(new Board(0x204004000L, 0x10L, 0x4000000000000000L, 0x8000000000000000L, 0x0L, 0x20000000004L, 0xc000000004000014L, 0x20200004000L, false, 0, 0x0L), 4), 78822); - - // gentest-2997 - assertEqual(perft(new Board(0x204000000L, 0x200010L, 0x4000000000000000L, 0x80000000000000L, 0x0L, 0x20000000004L, 0x4080000004000014L, 0x20200200000L, true, 0, 0x0L), 4), 110096); - - // gentest-2998 - assertEqual(perft(new Board(0x204000000L, 0x200010L, 0x4000000000000000L, 0x1000000000000L, 0x0L, 0x10000000004L, 0x4001000004000014L, 0x10200200000L, false, 0, 0x0L), 4), 12036); - - // gentest-2999 - assertEqual(perft(new Board(0x6000000L, 0x200010L, 0x4000000000000000L, 0x0L, 0x0L, 0x1000000000002L, 0x4000000004000012L, 0x1000002200000L, true, 0, 0x0L), 4), 30709); - - // gentest-3000 - assertEqual(perft(new Board(0x402000000L, 0x8080000L, 0x4000000000000000L, 0x0L, 0x0L, 0x1000000000002L, 0x4000000400080002L, 0x100000a000000L, false, 0, 0x0L), 4), 50250); - - // gentest-3001 - assertEqual(perft(new Board(0x402000000L, 0x101000000000L, 0x4000000000000000L, 0x0L, 0x0L, 0x100000000000002L, 0x4000001400000002L, 0x100100002000000L, true, 0, 0x0L), 4), 34669); - - // gentest-3002 - assertEqual(perft(new Board(0x400020000L, 0x10100000000000L, 0x4000000000000000L, 0x0L, 0x0L, 0x100000000000002L, 0x4010000400000002L, 0x100100000020000L, false, 0, 0x0L), 4), 25057); - - // gentest-3003 - assertEqual(perft(new Board(0x400020000L, 0x10040000000000L, 0x4000000L, 0x0L, 0x0L, 0x100000000000002L, 0x10000404000002L, 0x100040000020000L, true, 0, 0x0L), 4), 33255); - - // gentest-3004 - assertEqual(perft(new Board(0x400020000L, 0x210000000000000L, 0x4000000L, 0x0L, 0x0L, 0x100000000000002L, 0x10000404000002L, 0x300000000020000L, false, 0, 0x0L), 4), 16730); - - // gentest-3005 - assertEqual(perft(new Board(0x400020000L, 0x200400000000000L, 0x4000000L, 0x0L, 0x0L, 0x100000000000002L, 0x400404000002L, 0x300000000020000L, true, 0, 0x0L), 4), 16276); - - // gentest-3006 - assertEqual(perft(new Board(0x400000000L, 0x410000000000L, 0x20000L, 0x0L, 0x0L, 0x100000000000200L, 0x400400020200L, 0x100010000000000L, false, 0, 0x0L), 4), 25592); - - // gentest-3007 - assertEqual(perft(new Board(0x400000000L, 0x410000000000L, 0x8L, 0x0L, 0x0L, 0x400000000000200L, 0x400400000208L, 0x400010000000000L, true, 0, 0x0L), 4), 31673); - - // gentest-3008 - assertEqual(perft(new Board(0x400000000L, 0x8000010000000000L, 0x8000000000L, 0x0L, 0x0L, 0x8000000000200L, 0x8000008400000200L, 0x8010000000000L, false, 0, 0x0L), 4), 27029); - - // gentest-3009 - assertEqual(perft(new Board(0x400000000L, 0x8000000000000100L, 0x20000000000000L, 0x0L, 0x0L, 0x8000000000200L, 0x8020000400000200L, 0x8000000000100L, true, 0, 0x0L), 4), 16697); - - // gentest-3010 - assertEqual(perft(new Board(0x400000000L, 0x8000000000000000L, 0x100L, 0x0L, 0x0L, 0x4000000000002L, 0x8000000400000102L, 0x4000000000000L, false, 0, 0x0L), 4), 6532); - - // gentest-3011 - assertEqual(perft(new Board(0x400000000L, 0x8000000000000000L, 0x100000000000L, 0x0L, 0x0L, 0x1000000000000002L, 0x8000100400000002L, 0x1000000000000000L, true, 0, 0x0L), 4), 4417); - - // gentest-3012 - assertEqual(perft(new Board(0x400000000L, 0x80000000000L, 0x100000000000L, 0x0L, 0x0L, 0x10000000000002L, 0x180400000002L, 0x10000000000000L, false, 0, 0x0L), 4), 6576); - - // gentest-3013 - assertEqual(perft(new Board(0x400000000L, 0x80000000000L, 0x40000000L, 0x0L, 0x0L, 0x10000000000002L, 0x80440000002L, 0x10000000000000L, true, 0, 0x0L), 4), 8531); - - // gentest-3014 - assertEqual(perft(new Board(0x400000000L, 0x200000000L, 0x40000000L, 0x0L, 0x0L, 0x800000000000001L, 0x640000001L, 0x800000000000000L, false, 0, 0x0L), 4), 3339); - - // gentest-3015 - assertEqual(perft(new Board(0x400000000L, 0x200000000L, 0x40000000L, 0x0L, 0x0L, 0x2000000000000002L, 0x640000002L, 0x2000000000000000L, true, 0, 0x0L), 4), 11498); - - // gentest-3016 - assertEqual(perft(new Board(0x400000000L, 0x4000000000000L, 0x8000000000000L, 0x0L, 0x0L, 0x20000000000002L, 0xc000400000002L, 0x20000000000000L, false, 0, 0x0L), 4), 13789); - - // gentest-3017 - assertEqual(perft(new Board(0x400000000L, 0x4000000000000L, 0x8000000000000L, 0x0L, 0x0L, 0x40000000000100L, 0xc000400000100L, 0x40000000000000L, true, 0, 0x0L), 4), 15149); - - // gentest-3018 - assertEqual(perft(new Board(0x400000000L, 0x1000000000000000L, 0x1000000L, 0x0L, 0x0L, 0x8000000000000100L, 0x1000000401000100L, 0x8000000000000000L, false, 0, 0x0L), 4), 2245); - - // gentest-3019 - assertEqual(perft(new Board(0x400000000L, 0x200000000000L, 0x1000000L, 0x0L, 0x0L, 0x8000000000000100L, 0x200401000100L, 0x8000000000000000L, true, 0, 0x0L), 4), 3467); - - // gentest-3020 - assertEqual(perft(new Board(0x400000000L, 0x10000000L, 0x1000000L, 0x0L, 0x0L, 0x40000000000200L, 0x411000200L, 0x40000000000000L, false, 0, 0x0L), 4), 16262); - - // gentest-3021 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3022 - assertEqual(perft(new Board(0xfd02000004fb00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x5fbfdL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 281870); - - // gentest-3023 - assertEqual(perft(new Board(0xd52a0080047b00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80057bfdL, 0xffd52a0000000000L, true, 0, 0x8100000000000081L), 4), 421449); - - // gentest-3024 - assertEqual(perft(new Board(0xd52a0080146b00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000800001L, 0x800000000000008L, 0x8000000000010L, 0x80956b7dL, 0xefdd2a0000000000L, false, 0, 0x1L), 4), 574252); - - // gentest-3025 - assertEqual(perft(new Board(0xc42a1180146b00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x8000000000010L, 0x80156bfdL, 0xefcc2a1100000000L, true, 0, 0x1L), 4), 697557); - - // gentest-3026 - assertEqual(perft(new Board(0x442a9188146300L, 0x4200000200000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x8000000000010L, 0x2881463fdL, 0xef4c2a9100000000L, false, 0, 0x1L), 4), 944902); - - // gentest-3027 - assertEqual(perft(new Board(0x442a9089146300L, 0x200800200000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000200000L, 0x8000000000010L, 0x2883463f5L, 0xaf4caa9001000000L, true, 0, 0x1L), 4), 1024011); - - // gentest-3028 - assertEqual(perft(new Board(0x442a9089166100L, 0x810200000040L, 0x2400000000000024L, 0x8100000000000082L, 0x800000000200000L, 0x8000000000010L, 0x2883661f6L, 0xad4cab9001000000L, false, 0, 0x0L), 4), 1277431); - - // gentest-3029 - assertEqual(perft(new Board(0x442a9088166100L, 0x810200001000L, 0x2400000000000024L, 0x8100000000000082L, 0x800000000200000L, 0x100000000010L, 0x2883471b6L, 0xad44bb9000020000L, true, 0, 0x0L), 4), 992244); - - // gentest-3030 - assertEqual(perft(new Board(0x402a9488166100L, 0x810000011000L, 0x2400000000000024L, 0x8000000000000082L, 0x900000000000000L, 0x100000000010L, 0x1000000881571b6L, 0xac40bb9400020000L, false, 0, 0x0L), 4), 1110407); - - // gentest-3031 - assertEqual(perft(new Board(0x402a8488166100L, 0x40011000L, 0x2400000000000024L, 0x8000000000000082L, 0x800010000000000L, 0x100000000010L, 0x100801571b6L, 0xac403a8448020000L, true, 0, 0x0L), 4), 1031772); - - // gentest-3032 - assertEqual(perft(new Board(0x402a8488066100L, 0x510000L, 0x2400000000000024L, 0x8000000000000082L, 0x900000000000000L, 0x100000000010L, 0x1000000804561b6L, 0xac403a8408120000L, false, 0, 0x0L), 4), 1449489); - - // gentest-3033 - assertEqual(perft(new Board(0x402a8488066100L, 0x410400L, 0x2400000000000024L, 0x80000000000042L, 0x900000000000000L, 0x100000000010L, 0x100000080456176L, 0x2cc03a8408020400L, true, 0, 0x0L), 4), 118677); - - // gentest-3034 - assertEqual(perft(new Board(0x402a8488046300L, 0x410000L, 0x2400000000000024L, 0x80000000000042L, 0x900000000000000L, 0x100000000010L, 0x100000080456176L, 0x2cc03a8408000200L, false, 0, 0x0L), 4), 881898); - - // gentest-3035 - assertEqual(perft(new Board(0x402a8488046300L, 0x410000L, 0x2400000000000024L, 0x800000000042L, 0x800000010000000L, 0x20000000000010L, 0x90456176L, 0x2c60aa8408000200L, true, 0, 0x0L), 4), 1229633); - - // gentest-3036 - assertEqual(perft(new Board(0x402a0488046300L, 0x8000010000L, 0x2400000000000024L, 0x800000000042L, 0x800002000000000L, 0x10000000000010L, 0xa080056176L, 0x2c50aa0408000200L, false, 0, 0x0L), 4), 1042258); - - // gentest-3037 - assertEqual(perft(new Board(0x620c88046300L, 0x8000000400L, 0x2400000000000024L, 0x800000000042L, 0x800002000000000L, 0x10000000000010L, 0xa080046576L, 0x2c10e20c08000200L, true, 0, 0x0L), 4), 1316696); - - // gentest-3038 - assertEqual(perft(new Board(0x620c88046300L, 0x8000000400L, 0x2400000000001004L, 0x800000000042L, 0x800001000000000L, 0x80000000010L, 0x9080047556L, 0x2c00ea0c08000200L, false, 0, 0x0L), 4), 205245); - - // gentest-3039 - assertEqual(perft(new Board(0x620c88056200L, 0x8000000400L, 0x2008000000001004L, 0x800000000042L, 0x800001000000000L, 0x40000000010L, 0x9080057456L, 0x2808e60c08000200L, true, 0, 0x0L), 4), 1755453); - - // gentest-3040 - assertEqual(perft(new Board(0x620c88056000L, 0x8000000400L, 0x2008010000000000L, 0x800000000046L, 0x800001000000000L, 0x40000000800L, 0x19080056c42L, 0x2808e60c08000004L, false, 0, 0x0L), 4), 2013647); - - // gentest-3041 - assertEqual(perft(new Board(0x420c88056000L, 0x200000000400L, 0x3000010000000000L, 0x80000000000046L, 0x800001000000000L, 0x40000000800L, 0x211080056c42L, 0x3880460c08000004L, true, 0, 0x0L), 4), 2817390); - - // gentest-3042 - assertEqual(perft(new Board(0x420c88056000L, 0x80000000000400L, 0x2020000004000000L, 0x46L, 0x800001000000000L, 0x40000000800L, 0x80001084056c42L, 0x2820460c08000004L, false, 0, 0x0L), 4), 1854380); - - // gentest-3043 - assertEqual(perft(new Board(0x400c88056000L, 0x80000000000400L, 0x2020000004000000L, 0x44L, 0x200001000000000L, 0x20000000800L, 0x80001084056c40L, 0x2220420c08000004L, true, 0, 0x0L), 4), 1941375); - - // gentest-3044 - assertEqual(perft(new Board(0x400c88452000L, 0x80000000000400L, 0x2020000004000000L, 0x44L, 0x2008000000000L, 0x20000000800L, 0x80008084452c40L, 0x2022420c08000004L, false, 0, 0x0L), 4), 1276940); - - // gentest-3045 - assertEqual(perft(new Board(0x400488452000L, 0x80000000000400L, 0x2020000004000000L, 0x44L, 0x2000800000000L, 0x20000000800L, 0x80000884452c40L, 0x2022420408000004L, true, 0, 0x0L), 4), 1712575); - - // gentest-3046 - assertEqual(perft(new Board(0x4488452000L, 0x80000000000400L, 0x2020000004000000L, 0x14L, 0x2080000000000L, 0x20000000800L, 0x80080084452c10L, 0x2022024408000004L, false, 0, 0x0L), 4), 318006); - - // gentest-3047 - assertEqual(perft(new Board(0x4488452000L, 0x80000000000400L, 0x2020000004000000L, 0x84L, 0x10080000000000L, 0x1000000000800L, 0x80080084452c80L, 0x2031004408000004L, true, 0, 0x0L), 4), 2112861); - - // gentest-3048 - assertEqual(perft(new Board(0x4488452000L, 0x80000000000400L, 0x2000000804000000L, 0x84L, 0x10000000000000L, 0x1000000000800L, 0x90000084452c80L, 0x2001004c08000004L, false, 0, 0x0L), 4), 235732); - - // gentest-3049 - assertEqual(perft(new Board(0xc408452000L, 0x80000000000400L, 0x2000000804000000L, 0x88L, 0x10000000000000L, 0x200000000000800L, 0x90008004452c80L, 0x2200004c08000008L, true, 0, 0x0L), 4), 52188); - - // gentest-3050 - assertEqual(perft(new Board(0x8408452000L, 0x4000000400L, 0x2000100004000000L, 0x88L, 0x10000000000000L, 0x200000000001000L, 0x1000c004453480L, 0x2200100408000008L, false, 0, 0x0L), 4), 828232); - - // gentest-3051 - assertEqual(perft(new Board(0x8408452000L, 0x4000000400L, 0x2000000004000000L, 0x82L, 0x10000000000000L, 0x200000000200000L, 0x1000c000652480L, 0x220000040c000002L, true, 0, 0x0L), 4), 1148562); - - // gentest-3052 - assertEqual(perft(new Board(0x8408452000L, 0x4000000400L, 0x2000000004000000L, 0x8002L, 0x800000000000000L, 0x1000000200000L, 0x80000c00065a400L, 0x200100040c000002L, false, 0, 0x0L), 4), 989698); - - // gentest-3053 - assertEqual(perft(new Board(0x8408452000L, 0x4000000400L, 0x2000000004000000L, 0x8200L, 0x10000000000000L, 0x100000000200000L, 0x1000c00065a400L, 0x210000040c000200L, true, 0, 0x0L), 4), 800379); - - // gentest-3054 - assertEqual(perft(new Board(0x8408452000L, 0x4000000400L, 0x2000000800000000L, 0x8200L, 0x100000L, 0x100000020000000L, 0xc02055a400L, 0x2100000c08000200L, false, 0, 0x0L), 4), 1003136); - - // gentest-3055 - assertEqual(perft(new Board(0x8400552000L, 0x4000000400L, 0x2000000010000000L, 0x4200L, 0x0L, 0x100000020000000L, 0xc020456400L, 0x2100000410100200L, true, 0, 0x0L), 4), 402290); - - // gentest-3056 - assertEqual(perft(new Board(0x8004552000L, 0x800000000400L, 0x2000000010000000L, 0x4200L, 0x0L, 0x100000020000000L, 0x808020456400L, 0x2100000014100200L, false, 0, 0x0L), 4), 325256); - - // gentest-3057 - assertEqual(perft(new Board(0x8044152000L, 0x800000000400L, 0x200010000000L, 0x4200L, 0x0L, 0x100000020000000L, 0x808060056400L, 0x100200014100200L, true, 0, 0x0L), 4), 339525); - - // gentest-3058 - assertEqual(perft(new Board(0xc004152000L, 0x800008000000L, 0x200010000000L, 0x24000L, 0x0L, 0x100000020000000L, 0x80c028056000L, 0x100200014120000L, false, 0, 0x0L), 4), 511507); - - // gentest-3059 - assertEqual(perft(new Board(0xc004142000L, 0x800008000000L, 0x200010000000L, 0x4001L, 0x0L, 0x100000040000000L, 0x80c048046000L, 0x100200014100001L, true, 0, 0x0L), 4), 583524); - - // gentest-3060 - assertEqual(perft(new Board(0x208004142000L, 0x802000000000L, 0x10000000L, 0x4004L, 0x0L, 0x100000040000000L, 0xa0a040046000L, 0x100000014100004L, false, 0, 0x0L), 4), 211604); - - // gentest-3061 - assertEqual(perft(new Board(0x208004142000L, 0x800008000000L, 0x10000000L, 0x5000L, 0x0L, 0x100000040000000L, 0xa08048046000L, 0x100000014101000L, true, 0, 0x0L), 4), 206449); - - // gentest-3062 - assertEqual(perft(new Board(0x208004142000L, 0x800008000000L, 0x10000000L, 0x4200L, 0x0L, 0x100000080000000L, 0xa08088046000L, 0x100000014100200L, false, 0, 0x0L), 4), 488541); - - // gentest-3063 - assertEqual(perft(new Board(0x208004142000L, 0x800008000000L, 0x80000000000000L, 0x4000000000000200L, 0x0L, 0x2000080000000L, 0x4000a08088042000L, 0x82000004100200L, true, 0, 0x0L), 4), 467914); - - // gentest-3064 - assertEqual(perft(new Board(0x208004042000L, 0x802000000000L, 0x80000000000000L, 0x2000000000000200L, 0x0L, 0x2000080000000L, 0x2000a0a080040000L, 0x82000004002200L, false, 0, 0x0L), 4), 219086); - - // gentest-3065 - assertEqual(perft(new Board(0x208004040000L, 0x802000000000L, 0x80000000000000L, 0x800000000000204L, 0x0L, 0x2000080000000L, 0x800a0a080040000L, 0x82000004000204L, true, 0, 0x0L), 4), 531682); - - // gentest-3066 - assertEqual(perft(new Board(0x208004040000L, 0x10800000000000L, 0x80000000000000L, 0x400000200000004L, 0x0L, 0x2000080000000L, 0x410a08080040000L, 0x82000204000004L, false, 0, 0x0L), 4), 439894); - - // gentest-3067 - assertEqual(perft(new Board(0x200004040000L, 0x10800000000000L, 0x80000000000000L, 0x400004000000004L, 0x0L, 0x2000040000000L, 0x410a00040040000L, 0x82004004000004L, true, 0, 0x0L), 4), 90615); - - // gentest-3068 - assertEqual(perft(new Board(0x200004040000L, 0x10800000000000L, 0x80000000000000L, 0x200004000000400L, 0x0L, 0x2000020000000L, 0x210a00020040000L, 0x82004004000400L, false, 0, 0x0L), 4), 55759); - - // gentest-3069 - assertEqual(perft(new Board(0x200004040000L, 0x10800000000000L, 0x80000000000000L, 0x8000004000000800L, 0x0L, 0x10020000000L, 0x8010a00020040000L, 0x80014004000800L, true, 0, 0x0L), 4), 483611); - - // gentest-3070 - assertEqual(perft(new Board(0x200004040000L, 0x800002000000L, 0x80000000000000L, 0x8000008000000800L, 0x0L, 0x10020000000L, 0x8000a00022040000L, 0x80018004000800L, false, 0, 0x0L), 4), 78314); - - // gentest-3071 - assertEqual(perft(new Board(0x200004040000L, 0x800002000000L, 0x80000L, 0x2000008000000800L, 0x0L, 0x2000020000000L, 0x2000a00022040000L, 0x2008004080800L, true, 0, 0x0L), 4), 412188); - - // gentest-3072 - assertEqual(perft(new Board(0x200004040000L, 0x2000080000L, 0x0L, 0xa000000000000800L, 0x0L, 0x2000020000000L, 0x20002020200c0000L, 0x8002000004000800L, false, 0, 0x0L), 4), 394096); - - // gentest-3073 - assertEqual(perft(new Board(0x200004040000L, 0x80000080000L, 0x0L, 0xa000000000008000L, 0x0L, 0x40020000000L, 0x20002800200c0000L, 0x8000040004008000L, true, 0, 0x0L), 4), 464582); - - // gentest-3074 - assertEqual(perft(new Board(0x200004040000L, 0x20000000000010L, 0x0L, 0xa000800000000000L, 0x0L, 0x40020000000L, 0x2020200020040010L, 0x8000840004000000L, false, 0, 0x0L), 4), 153428); - - // gentest-3075 - assertEqual(perft(new Board(0x200004040000L, 0x20000000000010L, 0x0L, 0xa000800000000000L, 0x0L, 0x1000000400000L, 0x2020200000440010L, 0x8001800004000000L, true, 0, 0x0L), 4), 101606); - - // gentest-3076 - assertEqual(perft(new Board(0x200004040000L, 0x20000000000010L, 0x0L, 0x400800000000000L, 0x0L, 0x1000000200000L, 0x20200000240010L, 0x401800004000000L, false, 0, 0x0L), 4), 134122); - - // gentest-3077 - assertEqual(perft(new Board(0x200004040000L, 0x20000000000010L, 0x0L, 0x440000000000000L, 0x0L, 0x1000010000000L, 0x20200010040010L, 0x441000004000000L, true, 0, 0x0L), 4), 165221); - - // gentest-3078 - assertEqual(perft(new Board(0x200004040000L, 0x20000000004000L, 0x0L, 0x440000000000000L, 0x0L, 0x100000008000000L, 0x20200008044000L, 0x540000004000000L, false, 0, 0x0L), 4), 80510); - - // gentest-3079 - assertEqual(perft(new Board(0x200004040000L, 0x20000000000010L, 0x0L, 0x4004000000000L, 0x0L, 0x100000008000000L, 0x20200008040010L, 0x104004004000000L, true, 0, 0x0L), 4), 87408); - - // gentest-3080 - assertEqual(perft(new Board(0x200004040000L, 0x4000000000000010L, 0x0L, 0x44000000000L, 0x0L, 0x100000008000000L, 0x4000200008040010L, 0x100044004000000L, false, 0, 0x0L), 4), 60445); - - // gentest-3081 - assertEqual(perft(new Board(0x4040000L, 0x800000000010L, 0x0L, 0x200000004000L, 0x0L, 0x100000008000000L, 0x800008040010L, 0x100200004004000L, true, 0, 0x0L), 4), 141406); - - // gentest-3082 - assertEqual(perft(new Board(0x4040000L, 0x40200000L, 0x0L, 0x100000004000L, 0x0L, 0x100000008000000L, 0x48240000L, 0x100100004004000L, false, 0, 0x0L), 4), 152158); - - // gentest-3083 - assertEqual(perft(new Board(0x4040000L, 0x200000L, 0x0L, 0x104000L, 0x0L, 0x100000008000000L, 0x8240000L, 0x100000004104000L, true, 0, 0x0L), 4), 68578); - - // gentest-3084 - assertEqual(perft(new Board(0x4040000L, 0x1000L, 0x0L, 0x100000L, 0x0L, 0x100000008000000L, 0x8041000L, 0x100000004100000L, false, 0, 0x0L), 4), 13554); - - // gentest-3085 - assertEqual(perft(new Board(0x4040000L, 0x1000L, 0x0L, 0x80000000L, 0x0L, 0x100000800000000L, 0x800041000L, 0x100000084000000L, true, 0, 0x0L), 4), 22573); - - // gentest-3086 - assertEqual(perft(new Board(0x4040000L, 0x1000L, 0x0L, 0x80000000000000L, 0x0L, 0x100000008000000L, 0x8041000L, 0x180000004000000L, false, 0, 0x0L), 4), 25505); - - // gentest-3087 - assertEqual(perft(new Board(0x4040000L, 0x40L, 0x0L, 0x10000000000000L, 0x0L, 0x100000008000000L, 0x8040040L, 0x110000004000000L, true, 0, 0x0L), 4), 14118); - - // gentest-3088 - assertEqual(perft(new Board(0x4040000L, 0x4L, 0x0L, 0x100000L, 0x0L, 0x100000008000000L, 0x8040004L, 0x100000004100000L, false, 0, 0x0L), 4), 14729); - - // gentest-3089 - assertEqual(perft(new Board(0x4040000L, 0x80000L, 0x0L, 0x80000000000000L, 0x0L, 0x100000008000000L, 0x80c0000L, 0x180000004000000L, true, 0, 0x0L), 4), 46150); - - // gentest-3090 - assertEqual(perft(new Board(0x4040000L, 0x80000L, 0x0L, 0x4000000000000L, 0x0L, 0x100000020000000L, 0x200c0000L, 0x104000004000000L, false, 0, 0x0L), 4), 35316); - - // gentest-3091 - assertEqual(perft(new Board(0x4040000L, 0x4L, 0x0L, 0x1000000000000L, 0x0L, 0x100000020000000L, 0x20040004L, 0x101000004000000L, true, 0, 0x0L), 4), 29839); - - // gentest-3092 - assertEqual(perft(new Board(0x4040000L, 0x80000L, 0x0L, 0x2000000000000L, 0x0L, 0x100002000000000L, 0x20000c0000L, 0x102000004000000L, false, 0, 0x0L), 4), 46617); - - // gentest-3093 - assertEqual(perft(new Board(0x4040000L, 0x80000L, 0x0L, 0x4000000000000000L, 0x0L, 0x100004000000000L, 0x40000c0000L, 0x4100000004000000L, true, 0, 0x0L), 4), 17816); - - // gentest-3094 - assertEqual(perft(new Board(0x4040000L, 0x10L, 0x0L, 0x400000000000L, 0x0L, 0x100000020000000L, 0x20040010L, 0x100400004000000L, false, 0, 0x0L), 4), 26347); - - // gentest-3095 - assertEqual(perft(new Board(0x4040000L, 0x10L, 0x0L, 0x400000L, 0x0L, 0x100001000000000L, 0x1000040010L, 0x100000004400000L, true, 0, 0x0L), 4), 27517); - - // gentest-3096 - assertEqual(perft(new Board(0x4040000L, 0x200L, 0x0L, 0x800000L, 0x0L, 0x100001000000000L, 0x1000040200L, 0x100000004800000L, false, 0, 0x0L), 4), 25275); - - // gentest-3097 - assertEqual(perft(new Board(0x4040000L, 0x200L, 0x0L, 0x10000000000000L, 0x0L, 0x100000008000000L, 0x8040200L, 0x110000004000000L, true, 0, 0x0L), 4), 17357); - - // gentest-3098 - assertEqual(perft(new Board(0x40000L, 0x4000000L, 0x0L, 0x10000000L, 0x0L, 0x100000800000000L, 0x804040000L, 0x100000010000000L, false, 0, 0x0L), 4), 26421); - - // gentest-3099 - assertEqual(perft(new Board(0x40000L, 0x80000000000L, 0x0L, 0x1000L, 0x0L, 0x100000800000000L, 0x80800040000L, 0x100000000001000L, true, 0, 0x0L), 4), 39067); - - // gentest-3100 - assertEqual(perft(new Board(0x40000L, 0x1000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x100000800000000L, 0x1800040000L, 0x110000000000000L, false, 0, 0x0L), 4), 33287); - - // gentest-3101 - assertEqual(perft(new Board(0x40000L, 0x0L, 0x0L, 0x8000000000L, 0x0L, 0x100080000000000L, 0x80000040000L, 0x100008000000000L, true, 0, 0x0L), 4), 10961); - - // gentest-3102 - assertEqual(perft(new Board(0x40000L, 0x0L, 0x0L, 0x80L, 0x0L, 0x100100000000000L, 0x100000040000L, 0x100000000000080L, false, 0, 0x0L), 4), 17362); - - // gentest-3103 - assertEqual(perft(new Board(0x40000L, 0x0L, 0x0L, 0x8000000000L, 0x0L, 0x100002000000000L, 0x2000040000L, 0x100008000000000L, true, 0, 0x0L), 4), 10680); - - // gentest-3104 - assertEqual(perft(new Board(0x4000000L, 0x0L, 0x0L, 0x800000000L, 0x0L, 0x100000040000000L, 0x44000000L, 0x100000800000000L, false, 0, 0x0L), 4), 12627); - - // gentest-3105 - assertEqual(perft(new Board(0x4000000L, 0x0L, 0x0L, 0x2000000000000L, 0x0L, 0x100008000000000L, 0x8004000000L, 0x102000000000000L, true, 0, 0x0L), 4), 9734); - - // gentest-3106 - assertEqual(perft(new Board(0x4000000L, 0x0L, 0x0L, 0x2000000000000L, 0x0L, 0x1000040000000L, 0x44000000L, 0x3000000000000L, false, 0, 0x0L), 4), 16354); - - // gentest-3107 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3108 - assertEqual(perft(new Board(0xdf002000827d00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x827dffL, 0xffdf002000000000L, false, 0, 0x8100000000000081L), 4), 198366); - - // gentest-3109 - assertEqual(perft(new Board(0xd7002840823d00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40823dffL, 0xffd7002800000000L, true, 0, 0x8100000000000081L), 4), 348037); - - // gentest-3110 - assertEqual(perft(new Board(0xd5022843803c00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x43803cffL, 0xffd5022800000000L, false, 0, 0x8100000000000081L), 4), 402435); - - // gentest-3111 - assertEqual(perft(new Board(0xc5122843a01c00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x200000000008L, 0x1000000000000010L, 0x43a01cffL, 0xf7c5322800000000L, true, 0, 0x8100000000000081L), 4), 746156); - - // gentest-3112 - assertEqual(perft(new Board(0xc5122843a01c00L, 0x4200000000000042L, 0x2400000000014000L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x43a15cdbL, 0xffc5122800000000L, false, 0, 0x8100000000000081L), 4), 544797); - - // gentest-3113 - assertEqual(perft(new Board(0xc0122d47a01800L, 0x4200000000000042L, 0x2400000000014000L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x47a158dbL, 0xffc0122d00000000L, true, 0, 0x8100000000000081L), 4), 687211); - - // gentest-3114 - assertEqual(perft(new Board(0xc0132c45a01800L, 0x4200000000000042L, 0x2400000000014000L, 0x8100000000000081L, 0x800000000000008L, 0x10000000000010L, 0x10045a158dbL, 0xefd0122c00000000L, false, 0, 0x81L), 4), 533878); - - // gentest-3115 - assertEqual(perft(new Board(0xc0132445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8100000000000081L, 0x800000000000008L, 0x80000000010L, 0x10041a558d9L, 0xefc01a2404000000L, true, 0, 0x81L), 4), 815131); - - // gentest-3116 - assertEqual(perft(new Board(0xc0132445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8100000000000081L, 0x1000000000020000L, 0x80000002000L, 0x10041a778c1L, 0xf7c01a2404000000L, false, 0, 0x0L), 4), 1734554); - - // gentest-3117 - assertEqual(perft(new Board(0xc0122445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8100000000000081L, 0x1000000000020000L, 0x80000100000L, 0x41b758c1L, 0xf7c01a2404000000L, true, 0, 0x0L), 4), 1321505); - - // gentest-3118 - assertEqual(perft(new Board(0xc0122445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8000000100000081L, 0x1000000002000000L, 0x80000002000L, 0x43a578c1L, 0xf6c01a2504000000L, false, 0, 0x0L), 4), 1594520); - - // gentest-3119 - assertEqual(perft(new Board(0xc0122445a01800L, 0x4200000010000040L, 0x2000010000014000L, 0x8000000100000081L, 0x1000000002000000L, 0x10000000002000L, 0x53a178c1L, 0xf2d0132504000000L, true, 0, 0x0L), 4), 1215286); - - // gentest-3120 - assertEqual(perft(new Board(0x80522445a01800L, 0x4200000010000040L, 0x2000010000014000L, 0x8000000100000081L, 0x1000000000020000L, 0x10000000100000L, 0x51b358c1L, 0xf290532504000000L, false, 0, 0x0L), 4), 1152480); - - // gentest-3121 - assertEqual(perft(new Board(0x80522445a01800L, 0x4200000010000040L, 0x2000010000014000L, 0x8000000100000088L, 0x400000000020000L, 0x8000000100000L, 0x51b358c8L, 0xe688532504000000L, true, 0, 0x0L), 4), 1057110); - - // gentest-3122 - assertEqual(perft(new Board(0x80522445a01800L, 0x4200000010000040L, 0x810000014000L, 0x80000001000000a0L, 0x400000000020000L, 0x8000000002000L, 0x51a378e0L, 0xc688d32504000000L, false, 0, 0x0L), 4), 1192914); - - // gentest-3123 - assertEqual(perft(new Board(0x80520055a01800L, 0x4200000000000040L, 0x10420004000L, 0x80000001000000a0L, 0x400000000020000L, 0x8000000002000L, 0x441a278e0L, 0xc688530134000000L, true, 0, 0x0L), 4), 1448864); - - // gentest-3124 - assertEqual(perft(new Board(0x80520041a41800L, 0x4200000000000040L, 0x10420004000L, 0x80000001000000a0L, 0x400000010000000L, 0x8000000002000L, 0x451a078e0L, 0xc688530120040000L, false, 0, 0x0L), 4), 1519577); - - // gentest-3125 - assertEqual(perft(new Board(0x80520041a41800L, 0x4200000000000040L, 0x822004000L, 0x80000001000000a0L, 0x400000010000000L, 0x8000000002000L, 0x53a078e0L, 0xc688520920040000L, true, 0, 0x0L), 4), 1803452); - - // gentest-3126 - assertEqual(perft(new Board(0x80520041a01800L, 0x4200000000000040L, 0x822004000L, 0x80000001000000a0L, 0x400000000040000L, 0x8000000002000L, 0x43a470e0L, 0xc688520920000800L, false, 0, 0x0L), 4), 2032584); - - // gentest-3127 - assertEqual(perft(new Board(0x80520041801800L, 0x4200000000000040L, 0x2000000020204000L, 0x81000000000000a0L, 0x400000000040000L, 0x8000000002000L, 0x20000000418470e0L, 0xc788520020200800L, true, 0, 0x0L), 4), 2499457); - - // gentest-3128 - assertEqual(perft(new Board(0x80520041801000L, 0x4200000000000040L, 0x2000000020204000L, 0x81000000000000a8L, 0x400000000040000L, 0x8000000002000L, 0x20000000418470e0L, 0xc788520020200008L, false, 0, 0x0L), 4), 3104258); - - // gentest-3129 - assertEqual(perft(new Board(0x80520041801000L, 0x4200000000000040L, 0x40000000004800L, 0x81000000000000a8L, 0x400000000040000L, 0x8000000002000L, 0x400000418430e0L, 0xc788520000004808L, true, 0, 0x0L), 4), 2226215); - - // gentest-3130 - assertEqual(perft(new Board(0x80520041801000L, 0x210000000000040L, 0x8004800L, 0x81000000000000a8L, 0x400000000000004L, 0x8000000002000L, 0x498030e4L, 0x8798520000004808L, false, 0, 0x0L), 4), 2420572); - - // gentest-3131 - assertEqual(perft(new Board(0x80520041801000L, 0x210000000000040L, 0x8004800L, 0x81000000000000a8L, 0x40000L, 0x1000000000002000L, 0x498030e0L, 0x9390520000044808L, true, 0, 0x0L), 4), 1024402); - - // gentest-3132 - assertEqual(perft(new Board(0x80520041900000L, 0x210000000000040L, 0x4800L, 0x8100000000008028L, 0x8000000L, 0x1000000000002000L, 0x4190a060L, 0x9390520008004808L, false, 0, 0x0L), 4), 569813); - - // gentest-3133 - assertEqual(perft(new Board(0x80520041900000L, 0x210000000000040L, 0x4800L, 0x4100000000008018L, 0x800000000000000L, 0x1000000000002000L, 0x4190a050L, 0x5b90520000004808L, true, 0, 0x0L), 4), 423337); - - // gentest-3134 - assertEqual(perft(new Board(0x80520051800000L, 0x210000000000040L, 0x4800L, 0x4100000000009002L, 0x800000000000000L, 0x1000000000002000L, 0x5180b040L, 0x5b90520000004802L, false, 0, 0x0L), 4), 451256); - - // gentest-3135 - assertEqual(perft(new Board(0x80124051800000L, 0x10040000000040L, 0x4800L, 0x4100000000008012L, 0x800000000000000L, 0x1000000000002000L, 0x5180a050L, 0x5990164000004802L, true, 0, 0x0L), 4), 717581); - - // gentest-3136 - assertEqual(perft(new Board(0x80124051800000L, 0x10040000000040L, 0x4000L, 0x4100000000008802L, 0x80000L, 0x1000000000002000L, 0x5180a840L, 0x5190164000084002L, false, 0, 0x0L), 4), 792288); - - // gentest-3137 - assertEqual(perft(new Board(0x80124051800000L, 0x42000200000L, 0x4000L, 0x4100000000008802L, 0x0L, 0x1000000000002000L, 0x51a0a800L, 0x5180166000004002L, true, 0, 0x0L), 4), 1311047); - - // gentest-3138 - assertEqual(perft(new Board(0x80126041800000L, 0x800000000200000L, 0x4000L, 0x4100000000008802L, 0x0L, 0x1000000000001000L, 0x2041a09800L, 0x5980124000004002L, false, 0, 0x0L), 4), 698174); - - // gentest-3139 - assertEqual(perft(new Board(0x80126041800000L, 0x800000000000000L, 0x200000L, 0x2100000000008202L, 0x0L, 0x1000000000001000L, 0x2041809200L, 0x3980124000200002L, true, 0, 0x0L), 4), 153188); - - // gentest-3140 - assertEqual(perft(new Board(0x80126041800000L, 0x800000000000000L, 0x200000L, 0x2100000000004202L, 0x0L, 0x10000000000800L, 0x2041804a00L, 0x2990124000200002L, false, 0, 0x0L), 4), 641547); - - // gentest-3141 - assertEqual(perft(new Board(0x80026041800000L, 0x800000000000000L, 0x1000L, 0x2100000000000202L, 0x0L, 0x10000000000800L, 0x41800a00L, 0x2990026000001002L, true, 0, 0x0L), 4), 352301); - - // gentest-3142 - assertEqual(perft(new Board(0x80026041800000L, 0x100000000000L, 0x1000L, 0x2100000000000002L, 0x0L, 0x10000000100000L, 0x41900002L, 0x2190126000001000L, false, 0, 0x0L), 4), 476612); - - // gentest-3143 - assertEqual(perft(new Board(0x80026041800000L, 0x100000000000L, 0x1000L, 0x8001000000000080L, 0x0L, 0x10000000100000L, 0x41900080L, 0x8091126000001000L, true, 0, 0x0L), 4), 345665); - - // gentest-3144 - assertEqual(perft(new Board(0x80006241800000L, 0x100000000000L, 0x0L, 0x8001000000008000L, 0x0L, 0x10000000001000L, 0x41809000L, 0x8091106200000000L, false, 0, 0x0L), 4), 244014); - - // gentest-3145 - assertEqual(perft(new Board(0x800062c0000000L, 0x100000000000L, 0x0L, 0x100000001008000L, 0x0L, 0x10000000001000L, 0xc0009000L, 0x190106201000000L, true, 0, 0x0L), 4), 373735); - - // gentest-3146 - assertEqual(perft(new Board(0x800062c0000000L, 0x100000000000L, 0x0L, 0x100000001800000L, 0x0L, 0x1000000000200000L, 0xc0a00000L, 0x1180106201000000L, false, 0, 0x0L), 4), 162314); - - // gentest-3147 - assertEqual(perft(new Board(0x800062c0000000L, 0x400000000L, 0x0L, 0x100000004008000L, 0x0L, 0x1000000000200000L, 0xc0208000L, 0x1180006604000000L, true, 0, 0x0L), 4), 322512); - - // gentest-3148 - assertEqual(perft(new Board(0x800062c0000000L, 0x400000000L, 0x0L, 0x100000010100000L, 0x0L, 0x1000000000200000L, 0xc0300000L, 0x1180006610000000L, false, 0, 0x0L), 4), 194169); - - // gentest-3149 - assertEqual(perft(new Board(0x800062c0000000L, 0x80000L, 0x0L, 0x100000010001000L, 0x0L, 0x8000000200000L, 0xc0201000L, 0x188006210080000L, true, 0, 0x0L), 4), 403128); - - // gentest-3150 - assertEqual(perft(new Board(0x80006280000000L, 0x80000L, 0x0L, 0x110000010L, 0x0L, 0x8000000200000L, 0x2080200010L, 0x88004310080000L, false, 0, 0x0L), 4), 335827); - - // gentest-3151 - assertEqual(perft(new Board(0x80006280000000L, 0x400000000L, 0x0L, 0x100001020L, 0x0L, 0x8000000200000L, 0x2080200020L, 0x88004700001000L, true, 0, 0x0L), 4), 252258); - - // gentest-3152 - assertEqual(perft(new Board(0xa04280000000L, 0x400000000L, 0x0L, 0x100003000L, 0x0L, 0x8000000200000L, 0x200080202000L, 0x8804700001000L, false, 0, 0x0L), 4), 181638); - - // gentest-3153 - assertEqual(perft(new Board(0xa04280000000L, 0x10000000000L, 0x0L, 0x100002400L, 0x0L, 0x8000000004000L, 0x200080006000L, 0x8814300000400L, true, 0, 0x0L), 4), 139712); - - // gentest-3154 - assertEqual(perft(new Board(0xa04280000000L, 0x10000000000L, 0x0L, 0x2401L, 0x0L, 0x8000000004000L, 0x200080006000L, 0x8814200000401L, false, 0, 0x0L), 4), 177984); - - // gentest-3155 - assertEqual(perft(new Board(0xa002c0000000L, 0x10000000000L, 0x0L, 0xc01L, 0x0L, 0x100000004000L, 0x200080004800L, 0x910240000401L, true, 0, 0x0L), 4), 70726); - - // gentest-3156 - assertEqual(perft(new Board(0xa002c0000000L, 0x10000000000L, 0x0L, 0x100002400L, 0x0L, 0x100000000040L, 0x200080002040L, 0x910340000400L, false, 0, 0x0L), 4), 147308); - - // gentest-3157 - assertEqual(perft(new Board(0xa002c0000000L, 0x2000000L, 0x0L, 0x500000200L, 0x0L, 0x100000000040L, 0x200080000240L, 0x900742000000L, true, 0, 0x0L), 4), 253881); - - // gentest-3158 - assertEqual(perft(new Board(0xa002c0000000L, 0x400L, 0x0L, 0x500000080L, 0x0L, 0x100000000040L, 0x2000800000c0L, 0x900740000400L, false, 0, 0x0L), 4), 96887); - - // gentest-3159 - assertEqual(perft(new Board(0x8002c0000000L, 0x400L, 0x0L, 0x4100000080L, 0x0L, 0x200000002000L, 0x80002080L, 0xa04340000400L, true, 0, 0x0L), 4), 190295); - - // gentest-3160 - assertEqual(perft(new Board(0x8002c0000000L, 0x400L, 0x0L, 0x4000000100008000L, 0x0L, 0x200000001000L, 0x80009000L, 0x4000a00340000400L, false, 0, 0x0L), 4), 114875); - - // gentest-3161 - assertEqual(perft(new Board(0x8002c0000000L, 0x400L, 0x0L, 0x800000100800000L, 0x0L, 0x100000001000L, 0x80801000L, 0x800900340000400L, true, 0, 0x0L), 4), 186396); - - // gentest-3162 - assertEqual(perft(new Board(0x808240000000L, 0x400L, 0x0L, 0x108040000L, 0x0L, 0x100000001000L, 0x8000041000L, 0x900348000400L, false, 0, 0x0L), 4), 200987); - - // gentest-3163 - assertEqual(perft(new Board(0x808240000000L, 0x10000L, 0x0L, 0x900040000L, 0x0L, 0x100000100000L, 0x8000140000L, 0x900b40010000L, true, 0, 0x0L), 4), 134308); - - // gentest-3164 - assertEqual(perft(new Board(0x800240000000L, 0x10000L, 0x0L, 0x2000008100000000L, 0x0L, 0x100000100000L, 0x2000000000100000L, 0x908340010000L, false, 0, 0x0L), 4), 147999); - - // gentest-3165 - assertEqual(perft(new Board(0x800240000000L, 0x10000L, 0x0L, 0x8000008001000000L, 0x0L, 0x10000000100000L, 0x8000000000100000L, 0x10808241010000L, true, 0, 0x0L), 4), 113035); - - // gentest-3166 - assertEqual(perft(new Board(0x240000000L, 0x10000L, 0x0L, 0x804001000000L, 0x0L, 0x10000000080000L, 0x800000080000L, 0x10004241010000L, false, 0, 0x0L), 4), 176745); - - // gentest-3167 - assertEqual(perft(new Board(0x240000000L, 0x4000000L, 0x0L, 0x4080000001L, 0x0L, 0x10000000080000L, 0x80080000L, 0x10004244000001L, true, 0, 0x0L), 4), 223030); - - // gentest-3168 - assertEqual(perft(new Board(0x240000000L, 0x4000000L, 0x0L, 0x4000800001L, 0x0L, 0x80008000000L, 0x8800000L, 0x84244000001L, false, 0, 0x0L), 4), 255584); - - // gentest-3169 - assertEqual(perft(new Board(0x240000000L, 0x4000000L, 0x0L, 0x400001200000L, 0x0L, 0x80008000000L, 0x8200000L, 0x480245000000L, true, 0, 0x0L), 4), 160404); - - // gentest-3170 - assertEqual(perft(new Board(0x240000000L, 0x4000000L, 0x0L, 0x400000200100L, 0x0L, 0x80008000000L, 0x8200000L, 0x480244000100L, false, 0, 0x0L), 4), 249894); - - // gentest-3171 - assertEqual(perft(new Board(0x240000000L, 0x4000000L, 0x0L, 0x2000400000004000L, 0x0L, 0x80008000000L, 0x2000000008000000L, 0x480244004000L, true, 0, 0x0L), 4), 180903); - - // gentest-3172 - assertEqual(perft(new Board(0x240000000L, 0x4000000L, 0x0L, 0x100004000004000L, 0x0L, 0x80000040000L, 0x100000000040000L, 0x84244004000L, false, 0, 0x0L), 4), 233149); - - // gentest-3173 - assertEqual(perft(new Board(0x240000000L, 0x20000000000L, 0x0L, 0x4100000100L, 0x0L, 0x80000040000L, 0x100040000L, 0xa4240000100L, true, 0, 0x0L), 4), 132802); - - // gentest-3174 - assertEqual(perft(new Board(0x240000000L, 0x20000000000L, 0x0L, 0x1004000004000L, 0x0L, 0x80000020000L, 0x1000000020000L, 0xa4240004000L, false, 0, 0x0L), 4), 185397); - - // gentest-3175 - assertEqual(perft(new Board(0x240000000L, 0x800000000L, 0x0L, 0x100004000004000L, 0x0L, 0x400020000L, 0x100000000020000L, 0x4e40004000L, true, 0, 0x0L), 4), 135946); - - // gentest-3176 - assertEqual(perft(new Board(0x240000000L, 0x800000000L, 0x0L, 0x4000000050L, 0x0L, 0x400020000L, 0x20010L, 0x4e40000040L, false, 0, 0x0L), 4), 155583); - - // gentest-3177 - assertEqual(perft(new Board(0x240000000L, 0x800000000L, 0x0L, 0x4000000000000044L, 0x0L, 0x8020000L, 0x20004L, 0x4000000a48000040L, true, 0, 0x0L), 4), 203343); - - // gentest-3178 - assertEqual(perft(new Board(0x240000000L, 0x800000000L, 0x0L, 0x40000000000044L, 0x0L, 0x8000001L, 0x5L, 0x40000a48000040L, false, 0, 0x0L), 4), 72974); - - // gentest-3179 - assertEqual(perft(new Board(0x240000000L, 0x100000L, 0x0L, 0x40000000000060L, 0x0L, 0x10000001L, 0x21L, 0x40000250100040L, true, 0, 0x0L), 4), 64038); - - // gentest-3180 - assertEqual(perft(new Board(0x240000000L, 0x100000L, 0x0L, 0x1000000000040L, 0x0L, 0x10000002L, 0x42L, 0x1000250100000L, false, 0, 0x0L), 4), 93462); - - // gentest-3181 - assertEqual(perft(new Board(0x200400000L, 0x4000L, 0x0L, 0x1000000000008L, 0x0L, 0x10000002L, 0xaL, 0x1000210404000L, true, 0, 0x0L), 4), 105431); - - // gentest-3182 - assertEqual(perft(new Board(0x200400000L, 0x4000L, 0x0L, 0x80000000000020L, 0x0L, 0x10000200L, 0x220L, 0x80000210404000L, false, 0, 0x0L), 4), 190062); - - // gentest-3183 - assertEqual(perft(new Board(0x200400000L, 0x4000L, 0x0L, 0x80000000000020L, 0x0L, 0x400000002L, 0x22L, 0x80000600404000L, true, 0, 0x0L), 4), 142322); - - // gentest-3184 - assertEqual(perft(new Board(0x200400000L, 0x4000L, 0x0L, 0x108000L, 0x0L, 0x400000002L, 0x100002L, 0x60040c000L, false, 0, 0x0L), 4), 92909); - - // gentest-3185 - assertEqual(perft(new Board(0x200400000L, 0x100000L, 0x0L, 0x8000000000000000L, 0x0L, 0x400000001L, 0x1L, 0x8000000600500000L, true, 0, 0x0L), 4), 13558); - - // gentest-3186 - assertEqual(perft(new Board(0x200400000L, 0x100000L, 0x0L, 0x800000L, 0x0L, 0x400000002L, 0x2L, 0x600d00000L, false, 0, 0x0L), 4), 10290); - - // gentest-3187 - assertEqual(perft(new Board(0x200400000L, 0x100000L, 0x0L, 0x8000000000L, 0x0L, 0x20000000100L, 0x100L, 0x28200500000L, true, 0, 0x0L), 4), 17630); - - // gentest-3188 - assertEqual(perft(new Board(0x200400000L, 0x100000L, 0x0L, 0x8000L, 0x0L, 0x20000010000L, 0x10000L, 0x20200508000L, false, 0, 0x0L), 4), 8544); - - // gentest-3189 - assertEqual(perft(new Board(0x200400000L, 0x100000L, 0x0L, 0x2000L, 0x0L, 0x20002000000L, 0x2000000L, 0x20200502000L, true, 0, 0x0L), 4), 8304); - - // gentest-3190 - assertEqual(perft(new Board(0x200400000L, 0x100000L, 0x0L, 0x1000L, 0x0L, 0x20000010000L, 0x10000L, 0x20200501000L, false, 0, 0x0L), 4), 4210); - - // gentest-3191 - assertEqual(perft(new Board(0x400000L, 0x800000000L, 0x0L, 0x1000L, 0x0L, 0x20002000000L, 0x2000000L, 0x20800401000L, true, 0, 0x0L), 4), 10232); - - // gentest-3192 - assertEqual(perft(new Board(0x400000L, 0x2000000L, 0x0L, 0x1000L, 0x0L, 0x20000020000L, 0x20000L, 0x20002401000L, false, 0, 0x0L), 4), 12769); - - // gentest-3193 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3194 - assertEqual(perft(new Board(0xfb000404807b00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4807bffL, 0xfffb000400000000L, false, 0, 0x8100000000000081L), 4), 229003); - - // gentest-3195 - assertEqual(perft(new Board(0xf3000c04817a00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4817affL, 0xfdf3040c00000000L, true, 0, 0x8100000000000081L), 4), 510637); - - // gentest-3196 - assertEqual(perft(new Board(0xf300041c816a00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000020000L, 0x1000000000000010L, 0x14836af7L, 0xfdf3040408000000L, false, 0, 0x8100000000000081L), 4), 888903); - - // gentest-3197 - assertEqual(perft(new Board(0xf300041c816a00L, 0x4000040000000042L, 0x2000100000000024L, 0x8200000000000081L, 0x800020000000000L, 0x1000000000000010L, 0x20014816af7L, 0xfaf3140408000000L, true, 0, 0x8000000000000081L), 4), 792849); - - // gentest-3198 - assertEqual(perft(new Board(0xf202041cc92200L, 0x4000040000000042L, 0x2000100000000024L, 0x8200000000000081L, 0x800000000000000L, 0x1000000000000010L, 0x14c922f7L, 0xfaf2160408000000L, false, 0, 0x8000000000000081L), 4), 487367); - - // gentest-3199 - assertEqual(perft(new Board(0xf202041cc92200L, 0x4000040000000840L, 0x2008000000000024L, 0x8200000000000081L, 0x800000000000000L, 0x1000000000000010L, 0x14c92af5L, 0xfafa060408000000L, true, 0, 0x8000000000000081L), 4), 269333); - - // gentest-3200 - assertEqual(perft(new Board(0x7202841ce90200L, 0x4000040000020040L, 0x2008000000000024L, 0x8200000000000081L, 0x800000000000000L, 0x1000000000000010L, 0x14eb02f5L, 0xfa7a068408000000L, false, 0, 0x8000000000000081L), 4), 426538); - } - - public static void batch8() { - // gentest-3201 - assertEqual(perft(new Board(0x7202841ce90200L, 0x240000020040L, 0x2400000000000024L, 0x8200000000000081L, 0x800000000000000L, 0x1000000000001000L, 0x14eb12e5L, 0xbe72268408000000L, true, 0, 0x8000000000000000L), 4), 485646); - - // gentest-3202 - assertEqual(perft(new Board(0x7202948c690200L, 0x240000020040L, 0x2400000000000024L, 0x8200000000000081L, 0x8000000000000L, 0x1000000000001000L, 0x10846b12e5L, 0xb67a268408000000L, false, 0, 0x8000000000000000L), 4), 494015); - - // gentest-3203 - assertEqual(perft(new Board(0x3252848c690200L, 0x240000020040L, 0x440000000000024L, 0x8200000000000081L, 0x8000000000000L, 0x1000000000001000L, 0x1000846b12e5L, 0x967a668408000000L, true, 0, 0x8000000000000000L), 4), 472305); - - // gentest-3204 - assertEqual(perft(new Board(0x3252848c690200L, 0x240000020040L, 0x440000000100020L, 0x2200000000000081L, 0x8000000000000L, 0x4000000000000008L, 0x1000847b02e9L, 0x667a668408000000L, false, 0, 0x0L), 4), 727414); - - // gentest-3205 - assertEqual(perft(new Board(0x3252848c690200L, 0x1200000021000L, 0x440000000100020L, 0x2200000000000081L, 0x80000000000L, 0x4000000000000008L, 0x1000847b12a9L, 0x66736a8408000000L, true, 0, 0x0L), 4), 983237); - - // gentest-3206 - assertEqual(perft(new Board(0x3252848c690200L, 0x1200020000800L, 0x440000000100020L, 0x2200000000000081L, 0x8000000000000L, 0x4000000000000008L, 0x1000a4790aa9L, 0x667b628408000000L, false, 0, 0x0L), 4), 674002); - - // gentest-3207 - assertEqual(perft(new Board(0x3242848c690200L, 0x1200020000800L, 0x440000000101000L, 0x2200000000000081L, 0x8000000000000L, 0x4000000000000008L, 0xa4791a89L, 0x667b628408000000L, true, 0, 0x0L), 4), 817022); - - // gentest-3208 - assertEqual(perft(new Board(0x3242848d680200L, 0x1200020000800L, 0x440000000101000L, 0x2200000000000180L, 0x800000000000000L, 0x4000000000000008L, 0xa5781b88L, 0x6e73628408000000L, false, 0, 0x0L), 4), 724536); - - // gentest-3209 - assertEqual(perft(new Board(0x32428485680200L, 0x1200020000800L, 0x8800008001000L, 0x2200000000000180L, 0x800000000000000L, 0x4000000000000008L, 0xad681b88L, 0x6a3be28400000000L, true, 0, 0x0L), 4), 1150681); - - // gentest-3210 - assertEqual(perft(new Board(0x32428485680200L, 0x1200020000800L, 0x802008001000L, 0x2200000000000084L, 0x800000000000000L, 0x4000000000000008L, 0xad681a8cL, 0x6a33e2a400000000L, false, 0, 0x0L), 4), 1438454); - - // gentest-3211 - assertEqual(perft(new Board(0x32428485680200L, 0x1200020000800L, 0x40002008001000L, 0x2200000000000014L, 0x4000000000000L, 0x4000000000000008L, 0xad681a1cL, 0x627762a400000000L, true, 0, 0x0L), 4), 1346038); - - // gentest-3212 - assertEqual(perft(new Board(0x32428487680000L, 0x1200000000800L, 0x40002008001000L, 0x2200000000000012L, 0x20000000L, 0x4000000000000008L, 0x8f68181aL, 0x627362a420000000L, false, 0, 0x0L), 4), 1391741); - - // gentest-3213 - assertEqual(perft(new Board(0x32428483680000L, 0x1200010000000L, 0x40002000001000L, 0x2200000000000012L, 0x4000000L, 0x4000000000000008L, 0x9368101aL, 0x627362a404000000L, true, 0, 0x0L), 4), 892739); - - // gentest-3214 - assertEqual(perft(new Board(0x32428483680000L, 0x401200000000000L, 0x40002000001000L, 0x2200000000000012L, 0x200000000L, 0x4000000000000008L, 0x40000008368101aL, 0x627362a600000000L, false, 0, 0x0L), 4), 579465); - - // gentest-3215 - assertEqual(perft(new Board(0x12628483680000L, 0x1080800000000L, 0x40002000001000L, 0x2200000000000012L, 0x200000000L, 0x4000000000000008L, 0x8008368101aL, 0x625362ae00000000L, true, 0, 0x0L), 4), 903575); - - // gentest-3216 - assertEqual(perft(new Board(0x12628483680000L, 0x1001000800000000L, 0x40000000801000L, 0x2200000000020010L, 0x200000000L, 0x4000000000000008L, 0x10000000836a1018L, 0x6253628e00800000L, false, 0, 0x0L), 4), 604652); - - // gentest-3217 - assertEqual(perft(new Board(0x12628483680000L, 0x1000800000000L, 0x2000000000801000L, 0x1200000000000210L, 0x200000000L, 0x4000000000000008L, 0x83681218L, 0x7213628e00800000L, true, 0, 0x0L), 4), 481141); - - // gentest-3218 - assertEqual(perft(new Board(0x12628582680000L, 0x1000800000000L, 0x2000000000801000L, 0x1200000000000210L, 0x200000000L, 0x40000000000004L, 0x182681214L, 0x3253628e00800000L, false, 0, 0x0L), 4), 653338); - - // gentest-3219 - assertEqual(perft(new Board(0x12628582680000L, 0x1000000100000L, 0x2000000000801000L, 0x1200000000000220L, 0x200000000L, 0x4000000000000004L, 0x182681224L, 0x7213628600900000L, true, 0, 0x0L), 4), 690430); - - // gentest-3220 - assertEqual(perft(new Board(0x126285a2480000L, 0x1000000100000L, 0x2000000000801000L, 0x1200000000000220L, 0x40000000000L, 0x4000000000000800L, 0x1a2481a20L, 0x7213668400900000L, false, 0, 0x0L), 4), 1492193); - - // gentest-3221 - assertEqual(perft(new Board(0x126284a2480000L, 0x1000000100000L, 0x2000000000801000L, 0x1200000000000220L, 0x4000L, 0x4000000000000800L, 0x200a2481a20L, 0x7213608400904000L, true, 0, 0x0L), 4), 897176); - - // gentest-3222 - assertEqual(perft(new Board(0x126284a2480000L, 0x1000040000000L, 0x2000000000801000L, 0x1200000000000201L, 0x4000L, 0x4000000000000800L, 0x200a2481a01L, 0x7213608440804000L, false, 0, 0x0L), 4), 887761); - - // gentest-3223 - assertEqual(perft(new Board(0x126284a2480000L, 0x1800000000000L, 0x2000000000801000L, 0x1200000001000200L, 0x20L, 0x4000000000000800L, 0x200a3481a00L, 0x7213e08400800020L, true, 0, 0x0L), 4), 807762); - - // gentest-3224 - assertEqual(perft(new Board(0x126286e0080000L, 0x1800000000000L, 0x2000000000801000L, 0xa00000001000200L, 0x20L, 0x4000000000000800L, 0x202e1081a00L, 0x6a13e08400800020L, false, 0, 0x0L), 4), 800863); - - // gentest-3225 - assertEqual(perft(new Board(0x126286a0080000L, 0x1800000000000L, 0x2000000000200000L, 0xa00000001000200L, 0x20L, 0x4000000000000800L, 0x202a1080a00L, 0x6a13e08400200020L, true, 0, 0x0L), 4), 709036); - - // gentest-3226 - assertEqual(perft(new Board(0x126286a8000000L, 0x840000000000L, 0x2000000000200000L, 0xa00000001000100L, 0x20L, 0x4000000000000800L, 0x202a9000900L, 0x6a12e48400200020L, false, 0, 0x0L), 4), 543036); - - // gentest-3227 - assertEqual(perft(new Board(0x126286a8000000L, 0x840000000000L, 0x2000000000000008L, 0xa00000001010000L, 0x1L, 0x4000000000000800L, 0x202a9010800L, 0x6a12e48400000009L, true, 0, 0x0L), 4), 658495); - - // gentest-3228 - assertEqual(perft(new Board(0x126286a8000000L, 0x800002000000L, 0x2000000000000008L, 0xa00000000020001L, 0x0L, 0x4000000000000800L, 0x202a8020801L, 0x6a12e08402000008L, false, 0, 0x0L), 4), 671269); - - // gentest-3229 - assertEqual(perft(new Board(0x126286a8000000L, 0x800002000000L, 0x2000000000200000L, 0xa00000000000001L, 0x0L, 0x80000000000800L, 0x202a8000801L, 0x2a92e08402200000L, true, 0, 0x0L), 4), 401411); - - // gentest-3230 - assertEqual(perft(new Board(0x126286a8000000L, 0x4000000002000000L, 0x2000000000200000L, 0xa00010000000000L, 0x0L, 0x80000000000800L, 0x302a8000800L, 0x6a92608402200000L, false, 0, 0x0L), 4), 216321); - - // gentest-3231 - assertEqual(perft(new Board(0x126286a8000000L, 0x4000000002000000L, 0x2000000800000000L, 0xa00000000000100L, 0x0L, 0x80000000000800L, 0x202a8000900L, 0x6a92608c02000000L, true, 0, 0x0L), 4), 309114); - - // gentest-3232 - assertEqual(perft(new Board(0x126286a0000000L, 0x4000000002000000L, 0x2000000800000000L, 0x600000000000100L, 0x0L, 0x80000000000010L, 0x206a0000110L, 0x6692608802000000L, false, 0, 0x0L), 4), 290674); - - // gentest-3233 - assertEqual(perft(new Board(0x27282a0000000L, 0x4000000002000000L, 0xc00000000L, 0x600000000000100L, 0x0L, 0x80000000001000L, 0x202a0001100L, 0x4682708c02000000L, true, 0, 0x0L), 4), 270014); - - // gentest-3234 - assertEqual(perft(new Board(0x252a2a0000000L, 0x4000000002000000L, 0xc00000000L, 0x600000000002000L, 0x0L, 0x80000000000008L, 0x202a0002008L, 0x468250ac02000000L, false, 0, 0x0L), 4), 181833); - - // gentest-3235 - assertEqual(perft(new Board(0x252a2a0000000L, 0x4000000002000000L, 0x400000080L, 0x600000000000200L, 0x0L, 0x80000000000008L, 0x202a0000208L, 0x468250a402000080L, true, 0, 0x0L), 4), 193453); - - // gentest-3236 - assertEqual(perft(new Board(0x252a2a0000000L, 0x4000040000000000L, 0x400000080L, 0x600000000020000L, 0x0L, 0x80000000000400L, 0x202a0020400L, 0x468254a400000080L, false, 0, 0x0L), 4), 277457); - - // gentest-3237 - assertEqual(perft(new Board(0x256a0a0000000L, 0x4000000000000000L, 0x2080L, 0x500000000020000L, 0x0L, 0x80000000000400L, 0x600a0020400L, 0x458250a000002080L, true, 0, 0x0L), 4), 396562); - - // gentest-3238 - assertEqual(perft(new Board(0x256a0a0000000L, 0x4000000000000000L, 0x400080L, 0x500000001000000L, 0x0L, 0x80000000000400L, 0x600a1000400L, 0x458250a000400080L, false, 0, 0x0L), 4), 303305); - - // gentest-3239 - assertEqual(perft(new Board(0x652a0a0000000L, 0x10000000000000L, 0x400080L, 0x500000001000000L, 0x0L, 0x8000000000000400L, 0x40200a1000400L, 0x851250a000400080L, true, 0, 0x0L), 4), 295666); - - // gentest-3240 - assertEqual(perft(new Board(0x252a0a0000000L, 0x10000000000000L, 0x400080L, 0x104000000000100L, 0x0L, 0x8000000000000800L, 0x200a0000900L, 0x811650a000400080L, false, 0, 0x0L), 4), 232909); - - // gentest-3241 - assertEqual(perft(new Board(0x252a0a0000000L, 0x10000000000000L, 0x400080L, 0x4010000000100L, 0x0L, 0x8000000000000008L, 0x200a0000108L, 0x801651a000400080L, true, 0, 0x0L), 4), 204027); - - // gentest-3242 - assertEqual(perft(new Board(0x252a0a0000000L, 0x10000000000000L, 0x600000L, 0x4010001000000L, 0x0L, 0x8000000000000800L, 0x200a1000800L, 0x801651a000600000L, false, 0, 0x0L), 4), 167327); - - // gentest-3243 - assertEqual(perft(new Board(0x252a080000000L, 0x10000000000000L, 0x20200000L, 0x5000000000100L, 0x0L, 0x8000000000000800L, 0x20080000900L, 0x801750a020200000L, true, 0, 0x0L), 4), 45698); - - // gentest-3244 - assertEqual(perft(new Board(0x252a080000000L, 0x800000000L, 0x20200000L, 0x5000100000000L, 0x0L, 0x8000000000000010L, 0x20180000010L, 0x800750a820200000L, false, 0, 0x0L), 4), 257050); - - // gentest-3245 - assertEqual(perft(new Board(0x252a080000000L, 0x800000000L, 0x20004000L, 0x1000400040000L, 0x0L, 0x8000000000000010L, 0x20480000010L, 0x800350a820044000L, true, 0, 0x0L), 4), 232781); - - // gentest-3246 - assertEqual(perft(new Board(0x252a080000000L, 0x800000000L, 0x20004000L, 0x1040000040000L, 0x0L, 0x40000000001000L, 0x60080001000L, 0x4350a820044000L, false, 0, 0x0L), 4), 272382); - - // gentest-3247 - assertEqual(perft(new Board(0x252a080000000L, 0x200000000000L, 0x4800L, 0x1000004040000L, 0x0L, 0x40000000001000L, 0x20084001000L, 0x4370a000044800L, true, 0, 0x0L), 4), 385762); - - // gentest-3248 - assertEqual(perft(new Board(0x350a080000000L, 0x200000000000L, 0x4800L, 0x20040000L, 0x0L, 0x8000000000001000L, 0x10000a0001000L, 0x800270a000044800L, false, 0, 0x0L), 4), 336528); - - // gentest-3249 - assertEqual(perft(new Board(0x150a280000000L, 0x200000000000L, 0x800000800L, 0x40020L, 0x0L, 0x8000000000001000L, 0x1000080001020L, 0x800070aa00040800L, true, 0, 0x0L), 4), 397564); - - // gentest-3250 - assertEqual(perft(new Board(0x1508280000000L, 0x200000000000L, 0x800000800L, 0x2000040000L, 0x0L, 0x40000000000020L, 0x1002080000020L, 0x40708a00040800L, false, 0, 0x0L), 4), 436687); - - // gentest-3251 - assertEqual(perft(new Board(0x1508280000000L, 0x200000000000L, 0x10L, 0x800400000L, 0x0L, 0x40000000000020L, 0x1000880000020L, 0x40708200400010L, true, 0, 0x0L), 4), 285162); - - // gentest-3252 - assertEqual(perft(new Board(0x1508280000000L, 0x8000000000000L, 0x10L, 0x20400000L, 0x0L, 0x40000000000020L, 0x10000a0000020L, 0x48508200400010L, false, 0, 0x0L), 4), 262136); - - // gentest-3253 - assertEqual(perft(new Board(0x1508082000000L, 0x8000000000000L, 0x10L, 0x802000L, 0x0L, 0x40000000000020L, 0x1000080002020L, 0x48508002800010L, true, 0, 0x0L), 4), 277818); - - // gentest-3254 - assertEqual(perft(new Board(0x508082000000L, 0x8000000000000L, 0x40080L, 0x802000L, 0x0L, 0x40000000000020L, 0x800020a0L, 0x48508002840000L, false, 0, 0x0L), 4), 319690); - - // gentest-3255 - assertEqual(perft(new Board(0x508082000000L, 0x2000000000000000L, 0x40080L, 0x800400L, 0x0L, 0x80000000000020L, 0x800004a0L, 0x2080508002840000L, true, 0, 0x0L), 4), 223628); - - // gentest-3256 - assertEqual(perft(new Board(0x508082000000L, 0x2000000000000000L, 0x90L, 0x800200L, 0x0L, 0x80000000000020L, 0x800002a0L, 0x2080508002800010L, false, 0, 0x0L), 4), 190447); - - // gentest-3257 - assertEqual(perft(new Board(0x508080000000L, 0x2000000000000000L, 0x2000080L, 0x80000L, 0x0L, 0x80000000000020L, 0x800000a0L, 0x2080508002080000L, true, 0, 0x0L), 4), 94483); - - // gentest-3258 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x3000000L, 0x80000L, 0x0L, 0x80000000000020L, 0x81000020L, 0x2080409002080000L, false, 0, 0x0L), 4), 95874); - - // gentest-3259 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x1000000100000000L, 0x80000L, 0x0L, 0x80000000000020L, 0x1000000080000020L, 0x2080409100080000L, true, 0, 0x0L), 4), 74404); - - // gentest-3260 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x40100000000L, 0x8L, 0x0L, 0x80000000001000L, 0x40080001000L, 0x2080409100000008L, false, 0, 0x0L), 4), 129116); - - // gentest-3261 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x1000010L, 0x8L, 0x0L, 0x8000000000001000L, 0x81001000L, 0xa000409000000018L, true, 0, 0x0L), 4), 65038); - - // gentest-3262 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x1000010L, 0x4L, 0x0L, 0x8000000000100000L, 0x81100000L, 0xa000409000000014L, false, 0, 0x0L), 4), 71768); - - // gentest-3263 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x40000000010L, 0x10000000L, 0x0L, 0x8000000000100000L, 0x40080100000L, 0xa000409010000010L, true, 0, 0x0L), 4), 16841); - - // gentest-3264 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x40000000800L, 0x10000000L, 0x0L, 0x8000000000002000L, 0x40080002000L, 0xa000409010000800L, false, 0, 0x0L), 4), 105470); - - // gentest-3265 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x44000000000L, 0x10L, 0x0L, 0x8000000000004000L, 0x40080004000L, 0xa00040d000000010L, true, 0, 0x0L), 4), 122187); - - // gentest-3266 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x40100000L, 0x10L, 0x0L, 0x8000000000004000L, 0xc0004000L, 0xa000409000100010L, false, 0, 0x0L), 4), 99847); - - // gentest-3267 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x60000000L, 0x4L, 0x0L, 0x8000000000200000L, 0xc0200000L, 0xa000409020000004L, true, 0, 0x0L), 4), 84698); - - // gentest-3268 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x100020000000L, 0x10L, 0x0L, 0x8000000000200000L, 0x100080200000L, 0xa000409020000010L, false, 0, 0x0L), 4), 77299); - - // gentest-3269 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x100020000000L, 0x200000L, 0x0L, 0x8000000000002000L, 0x100080002000L, 0xa000409020200000L, true, 0, 0x0L), 4), 31046); - - // gentest-3270 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x8000000400000L, 0x0L, 0x0L, 0x8000000000200000L, 0x8000080200000L, 0xa000409000400000L, false, 0, 0x0L), 4), 26624); - - // gentest-3271 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x40000100000L, 0x0L, 0x0L, 0x8000000000200000L, 0x40080200000L, 0xa000409000100000L, true, 0, 0x0L), 4), 49162); - - // gentest-3272 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x400000000000040L, 0x0L, 0x0L, 0x8000000000200000L, 0x400000080200000L, 0xa000409000000040L, false, 0, 0x0L), 4), 28078); - - // gentest-3273 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x8000000000010L, 0x0L, 0x0L, 0x8000000000200000L, 0x8000080200000L, 0xa000409000000010L, true, 0, 0x0L), 4), 36938); - - // gentest-3274 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x40002000000L, 0x0L, 0x0L, 0x8000000000004000L, 0x40080004000L, 0xa000409002000000L, false, 0, 0x0L), 4), 65349); - - // gentest-3275 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x40000010000L, 0x0L, 0x0L, 0x8000000000008000L, 0x40080008000L, 0xa000409000010000L, true, 0, 0x0L), 4), 47479); - - // gentest-3276 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x100080000000000L, 0x0L, 0x0L, 0x8000000000008000L, 0x100000080008000L, 0xa000489000000000L, false, 0, 0x0L), 4), 30948); - - // gentest-3277 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x2080000000000L, 0x0L, 0x0L, 0x8000000000008000L, 0x2000080008000L, 0xa000489000000000L, true, 0, 0x0L), 4), 38699); - - // gentest-3278 - assertEqual(perft(new Board(0x409080000000L, 0x2000000000000000L, 0x10020L, 0x0L, 0x0L, 0x8000000000008000L, 0x80008020L, 0xa000409000010000L, false, 0, 0x0L), 4), 31435); - - // gentest-3279 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3280 - assertEqual(perft(new Board(0xef00104000bf00L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4080bfdfL, 0xffef001000000000L, false, 0, 0x8100000000000081L), 4), 361797); - - // gentest-3281 - assertEqual(perft(new Board(0xed02104100be00L, 0x200200000000042L, 0x2400000000800004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4180bedfL, 0xbfed221000000000L, true, 0, 0x8100000000000081L), 4), 398902); - - // gentest-3282 - assertEqual(perft(new Board(0xed02104900b600L, 0x240000000042L, 0x2400000000800004L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x4980b7deL, 0xbded261000000000L, false, 0, 0x8100000000000080L), 4), 868546); - - // gentest-3283 - assertEqual(perft(new Board(0xed02004900b600L, 0x200002000042L, 0x2400004000800000L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x404180b7daL, 0xbded22000a000000L, true, 0, 0x8100000000000080L), 4), 843889); - - // gentest-3284 - assertEqual(perft(new Board(0xe902044900b600L, 0x200002000042L, 0x2400000020800000L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000800L, 0x6180bfcaL, 0xbde922040a000000L, false, 0, 0x8100000000000000L), 4), 777164); - - // gentest-3285 - assertEqual(perft(new Board(0xe900064900b600L, 0x200002000042L, 0x2400000020000020L, 0x8100000000000180L, 0x4000000000008L, 0x1000000000000800L, 0x6100bfeaL, 0xb5ed20060a000000L, true, 0, 0x8100000000000000L), 4), 1331750); - - // gentest-3286 - assertEqual(perft(new Board(0xe900460900b200L, 0x200000000042L, 0x2400000020000020L, 0x8100000000000180L, 0x4000000000008L, 0x1000000000000400L, 0x402100b7eaL, 0xb5ed200608000000L, false, 0, 0x8100000000000000L), 4), 1321476); - - // gentest-3287 - assertEqual(perft(new Board(0xe108460900b200L, 0x200000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x1000000008L, 0x1000000000000400L, 0x400100b7eeL, 0xb5e1281608000000L, true, 0, 0x8100000000000000L), 4), 1399722); - - // gentest-3288 - assertEqual(perft(new Board(0xe1084609009200L, 0x200000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x20000008L, 0x1000000000000400L, 0x40010196eeL, 0xb5e1280628000000L, false, 0, 0x8100000000000000L), 4), 1536287); - - // gentest-3289 - assertEqual(perft(new Board(0xe1084619008200L, 0x200000000042L, 0x2000000000800004L, 0x8100000000010080L, 0x28L, 0x1000000000000400L, 0x40110186ceL, 0xb1e1280608800020L, true, 0, 0x8100000000000000L), 4), 1743727); - - // gentest-3290 - assertEqual(perft(new Board(0xe1084619008200L, 0x200000000840L, 0x2000000000800004L, 0x8800000000010080L, 0x8000000020L, 0x1000000000000400L, 0xc011018ec4L, 0xb8e1280608800020L, false, 0, 0x8000000000000000L), 4), 1516709); - - // gentest-3291 - assertEqual(perft(new Board(0x21484619008200L, 0x200000000840L, 0x2000000000800004L, 0x8800000000010080L, 0x80000000004000L, 0x1000000000000400L, 0x80004011018ec4L, 0xb821680608804000L, true, 0, 0x8000000000000000L), 4), 1428249); - - // gentest-3292 - assertEqual(perft(new Board(0x21484619008200L, 0x200000000002L, 0x2000000000800004L, 0x8800000000200080L, 0x80000000000040L, 0x1000000000000400L, 0x80004011208686L, 0xb821680608800040L, false, 0, 0x8000000000000000L), 4), 1792782); - - // gentest-3293 - assertEqual(perft(new Board(0x21484619008200L, 0x200000000800L, 0x800000800004L, 0x8800000000200080L, 0x80000000100000L, 0x1000000000000400L, 0x80004011208e84L, 0x9821e80608900000L, true, 0, 0x8000000000000000L), 4), 1450461); - - // gentest-3294 - assertEqual(perft(new Board(0x21484609008200L, 0x200010000000L, 0x800000800004L, 0x8800000000200080L, 0x40000000000000L, 0x1000000000000400L, 0x40004011208684L, 0x9821e80608800000L, false, 0, 0x8000000000000000L), 4), 1561118); - - // gentest-3295 - assertEqual(perft(new Board(0x21484609008200L, 0x40800L, 0x800000800004L, 0x8800000000200080L, 0x40000000000000L, 0x1000000000000400L, 0x40004001208e84L, 0x9821c80608840000L, true, 0, 0x8000000000000000L), 4), 1032776); - - // gentest-3296 - assertEqual(perft(new Board(0x21484609008200L, 0x40020L, 0x800000800004L, 0x8800000000080080L, 0x40000000000000L, 0x8000000000400L, 0x400040010886a4L, 0x8829c80608840000L, false, 0, 0x0L), 4), 1341951); - - // gentest-3297 - assertEqual(perft(new Board(0x21484609008200L, 0x440000L, 0x800000800004L, 0x8100000000080080L, 0x40000000000000L, 0x400000000000400L, 0x40004001488684L, 0x8521c80608840000L, true, 0, 0x0L), 4), 1332516); - - // gentest-3298 - assertEqual(perft(new Board(0x21484601008200L, 0x2000000002L, 0x800000800004L, 0x8100000008000080L, 0x40000000000000L, 0x400000000000400L, 0x40006009008684L, 0x8521c80600800002L, false, 0, 0x0L), 4), 1181520); - - // gentest-3299 - assertEqual(perft(new Board(0x20096601008200L, 0x2L, 0x800000800004L, 0x8100000008000020L, 0x40000000000000L, 0x400000000000400L, 0x40004009008624L, 0x8520892600800002L, true, 0, 0x0L), 4), 1118099); - - // gentest-3300 - assertEqual(perft(new Board(0x20096700008200L, 0x10000L, 0x800000800004L, 0x8100000008000020L, 0x40000000000000L, 0x400000000000800L, 0x40004108008a24L, 0x8520892600810000L, false, 0, 0x0L), 4), 697950); - - // gentest-3301 - assertEqual(perft(new Board(0x20096700008200L, 0x10000L, 0x800000800004L, 0x8800000008000020L, 0x1000000000L, 0x4000000000800L, 0x5108008a24L, 0x8824892600810000L, true, 0, 0x0L), 4), 1336107); - - // gentest-3302 - assertEqual(perft(new Board(0x20096700008200L, 0x10000L, 0x800000800004L, 0x8800000008200000L, 0x1000000000L, 0x400000000001000L, 0x5108209204L, 0x8c20892600810000L, false, 0, 0x0L), 4), 1441105); - - // gentest-3303 - assertEqual(perft(new Board(0x20096700008200L, 0x0L, 0x800000800004L, 0x8800000008010000L, 0x1000000000L, 0x100000000001000L, 0x5108019204L, 0x8920892600800000L, true, 0, 0x0L), 4), 1265450); - - // gentest-3304 - assertEqual(perft(new Board(0x20096700008200L, 0x0L, 0x2000000000800004L, 0x8800000008010000L, 0x200000000000L, 0x100000000080000L, 0x204108098204L, 0xa920092600800000L, false, 0, 0x0L), 4), 619053); - - // gentest-3305 - assertEqual(perft(new Board(0x96700008200L, 0x0L, 0x2000000000800004L, 0x8000000008011000L, 0x20000000000000L, 0x100000000080000L, 0x20004108098204L, 0xa100092600801000L, true, 0, 0x0L), 4), 941519); - - // gentest-3306 - assertEqual(perft(new Board(0x96700008200L, 0x0L, 0x2000000000800004L, 0x8000000002011000L, 0x400000000000L, 0x200000000080000L, 0x404102098204L, 0xa200092600801000L, false, 0, 0x0L), 4), 782913); - - // gentest-3307 - assertEqual(perft(new Board(0x96700008200L, 0x0L, 0x10000000800004L, 0x800010011000L, 0x400000000000L, 0x200000000080000L, 0x404110098204L, 0x210892600801000L, true, 0, 0x0L), 4), 906071); - - // gentest-3308 - assertEqual(perft(new Board(0x96700008200L, 0x0L, 0x10000000800004L, 0x80000001011000L, 0x800000000000L, 0x200000000080000L, 0x804101098204L, 0x290092600801000L, false, 0, 0x0L), 4), 690564); - - // gentest-3309 - assertEqual(perft(new Board(0x96700000200L, 0x0L, 0x10000000800004L, 0x80000008018000L, 0x800000000000L, 0x200000000080000L, 0x804108090204L, 0x290092600808000L, true, 0, 0x0L), 4), 684652); - - // gentest-3310 - assertEqual(perft(new Board(0x96700000200L, 0x0L, 0x10000020800000L, 0x80000008008001L, 0x800000000000L, 0x4000000080000L, 0x804128080201L, 0x94092600808000L, false, 0, 0x0L), 4), 815062); - - // gentest-3311 - assertEqual(perft(new Board(0x96700000200L, 0x0L, 0x800000020800000L, 0x80000008008100L, 0x800000000000L, 0x200000000080000L, 0x804128080300L, 0xa80092600808000L, true, 0, 0x0L), 4), 854153); - - // gentest-3312 - assertEqual(perft(new Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x80000008008100L, 0x100000000000L, 0x200000000080000L, 0x104128080300L, 0x284012600808000L, false, 0, 0x0L), 4), 984986); - - // gentest-3313 - assertEqual(perft(new Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x2000000008008100L, 0x10000000L, 0x200000000080000L, 0x4138080300L, 0x2204012600808000L, true, 0, 0x0L), 4), 743536); - - // gentest-3314 - assertEqual(perft(new Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x800000008008100L, 0x40L, 0x200000000080000L, 0x4128080340L, 0xa04012600808000L, false, 0, 0x0L), 4), 690585); - - // gentest-3315 - assertEqual(perft(new Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x800000800000104L, 0x40L, 0x200000000080000L, 0x4920080340L, 0xa04012600800004L, true, 0, 0x0L), 4), 773540); - - // gentest-3316 - assertEqual(perft(new Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x800000800000104L, 0x800L, 0x400000000080000L, 0x4920080b00L, 0xc04012600800004L, false, 0, 0x0L), 4), 631463); - - // gentest-3317 - assertEqual(perft(new Board(0x16700000200L, 0x0L, 0x20000104000L, 0x800000800000104L, 0x800L, 0x400000000080000L, 0x4900180b00L, 0xc00032600004004L, true, 0, 0x0L), 4), 612825); - - // gentest-3318 - assertEqual(perft(new Board(0x16700000200L, 0x0L, 0x20000900000L, 0x800000800010004L, 0x800L, 0x400000000001000L, 0x4900111a00L, 0xc00032600800004L, false, 0, 0x0L), 4), 779389); - - // gentest-3319 - assertEqual(perft(new Board(0x412700000200L, 0x0L, 0x20000900000L, 0x800000800050000L, 0x800L, 0x2000000001000L, 0x400900111a00L, 0x802032600840000L, true, 0, 0x0L), 4), 1132976); - - // gentest-3320 - assertEqual(perft(new Board(0x412700020000L, 0x0L, 0x20020800000L, 0x400000800050000L, 0x800L, 0x2000000001000L, 0x400920031800L, 0x402032600840000L, false, 0, 0x0L), 4), 878771); - - // gentest-3321 - assertEqual(perft(new Board(0x412700020000L, 0x0L, 0x4000020800000L, 0x400000804010000L, 0x800L, 0x2000000000010L, 0x400920030810L, 0x406012604800000L, true, 0, 0x0L), 4), 1260034); - - // gentest-3322 - assertEqual(perft(new Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x4000000804010000L, 0x800000000000L, 0x2000000000010L, 0xc80900030010L, 0x4006012604800000L, false, 0, 0x0L), 4), 1197581); - - // gentest-3323 - assertEqual(perft(new Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x100000820010000L, 0x80000000000000L, 0x2000000000010L, 0x80480900030010L, 0x106012620800000L, true, 0, 0x0L), 4), 704787); - - // gentest-3324 - assertEqual(perft(new Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x100000018010000L, 0x80000000000000L, 0x2000000000800L, 0x80480108030800L, 0x106012610800000L, false, 0, 0x0L), 4), 989580); - - // gentest-3325 - assertEqual(perft(new Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x300000008010000L, 0x20000000000000L, 0x2000000000800L, 0x20480108030800L, 0x306012600800000L, true, 0, 0x0L), 4), 568192); - - // gentest-3326 - assertEqual(perft(new Board(0x412702000000L, 0x0L, 0x4000000808000L, 0x201000008010000L, 0x20000000000000L, 0x2000000000800L, 0x2040010a018800L, 0x207012600800000L, false, 0, 0x0L), 4), 798703); - - // gentest-3327 - assertEqual(perft(new Board(0x41230a000000L, 0x0L, 0x808000L, 0x201000000010000L, 0x4000000000000L, 0x100000000000800L, 0x4400102018800L, 0x301012208800000L, true, 0, 0x0L), 4), 441583); - - // gentest-3328 - assertEqual(perft(new Board(0x41230a000000L, 0x0L, 0x808000L, 0x3000000000100L, 0x20000000000L, 0x100000000000800L, 0x420102008900L, 0x103012208800000L, false, 0, 0x0L), 4), 178865); - - // gentest-3329 - assertEqual(perft(new Board(0x41230a000000L, 0x0L, 0x808000L, 0x84000000000100L, 0x400000000L, 0x100000000000800L, 0x400502008900L, 0x184012208800000L, true, 0, 0x0L), 4), 545480); - - // gentest-3330 - assertEqual(perft(new Board(0x41230a000000L, 0x0L, 0x80000800000L, 0xc0000000000100L, 0x400000000L, 0x100000000080000L, 0x480502080100L, 0x1c0012208800000L, false, 0, 0x0L), 4), 392916); - - // gentest-3331 - assertEqual(perft(new Board(0x41030a000000L, 0x0L, 0x80000800000L, 0x2800000000100L, 0x2000000000L, 0x100000000080000L, 0x482102080100L, 0x102810208800000L, true, 0, 0x0L), 4), 623385); - - // gentest-3332 - assertEqual(perft(new Board(0x1030a000000L, 0x0L, 0x80000800000L, 0x2400000000100L, 0x40000000000L, 0x100000000080000L, 0xc0102080100L, 0x102410208800000L, false, 0, 0x0L), 4), 426489); - - // gentest-3333 - assertEqual(perft(new Board(0x1030a000000L, 0x0L, 0x80000800000L, 0x2000000000801L, 0x40000000000L, 0x100000000080000L, 0xc0102080001L, 0x102010208800800L, true, 0, 0x0L), 4), 14945); - - // gentest-3334 - assertEqual(perft(new Board(0x10302080000L, 0x0L, 0x80000800000L, 0x2000000000001L, 0x20000000000L, 0x100000000000800L, 0xa0102000801L, 0x102010200880000L, false, 0, 0x0L), 4), 300914); - - // gentest-3335 - assertEqual(perft(new Board(0x10302080000L, 0x0L, 0x10100000000000L, 0x20000000000001L, 0x20000000000L, 0x100000000000800L, 0x10020102000801L, 0x120110200080000L, true, 0, 0x0L), 4), 409423); - - // gentest-3336 - assertEqual(perft(new Board(0x10302080000L, 0x0L, 0x10100000000000L, 0x20000000000001L, 0x400000000L, 0x2000000000004L, 0x10000502000005L, 0x22110200080000L, false, 0, 0x0L), 4), 360926); - - // gentest-3337 - assertEqual(perft(new Board(0x10102080000L, 0x0L, 0x10000004000000L, 0x20000000000001L, 0x200000000L, 0x400000000000004L, 0x10000302000005L, 0x420010004080000L, true, 0, 0x0L), 4), 195908); - - // gentest-3338 - assertEqual(perft(new Board(0x10102080000L, 0x0L, 0x10100000000000L, 0x20000000000001L, 0x80000000000000L, 0x400000000000004L, 0x90000102000005L, 0x420110000080000L, false, 0, 0x0L), 4), 367431); - - // gentest-3339 - assertEqual(perft(new Board(0x10100080000L, 0x0L, 0x10100000000000L, 0x2000001L, 0x40000000000000L, 0x400000000000004L, 0x50000100000005L, 0x400110002080000L, true, 0, 0x0L), 4), 483641); - - // gentest-3340 - assertEqual(perft(new Board(0x10100080000L, 0x0L, 0x30000000000000L, 0x2000002L, 0x1L, 0x400000000000004L, 0x10000100000007L, 0x420010002080000L, false, 0, 0x0L), 4), 357782); - - // gentest-3341 - assertEqual(perft(new Board(0x10100080000L, 0x0L, 0x20004000000000L, 0x200000002L, 0x1L, 0x400000000000004L, 0x4100000007L, 0x420010200080000L, true, 0, 0x0L), 4), 312247); - - // gentest-3342 - assertEqual(perft(new Board(0x10100080000L, 0x0L, 0x1000004000000000L, 0x200000002L, 0x4000000000000L, 0x400000000000004L, 0x4004100000006L, 0x1400010200080000L, false, 0, 0x0L), 4), 5397); - - // gentest-3343 - assertEqual(perft(new Board(0x10100080000L, 0x0L, 0x1000004000000000L, 0x200000002L, 0x0L, 0x2000000000008L, 0x410000000aL, 0x1002010200080000L, true, 0, 0x0L), 4), 92348); - - // gentest-3344 - assertEqual(perft(new Board(0x10100000800L, 0x0L, 0x1000000000100000L, 0x202000000L, 0x0L, 0x2000000000008L, 0x102100008L, 0x1002010200000800L, false, 0, 0x0L), 4), 97339); - - // gentest-3345 - assertEqual(perft(new Board(0x10100000800L, 0x0L, 0x40000002000L, 0x202000000L, 0x0L, 0x100000000000008L, 0x102002008L, 0x100050200000800L, true, 0, 0x0L), 4), 233630); - - // gentest-3346 - assertEqual(perft(new Board(0x10000000800L, 0x0L, 0x40000002000L, 0x104000000L, 0x0L, 0x100000000001000L, 0x4003000L, 0x100050100000800L, false, 0, 0x0L), 4), 326388); - - // gentest-3347 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x40000002000L, 0x800000004L, 0x8L, 0x100000000001000L, 0x3004L, 0x100050800000008L, true, 0, 0x0L), 4), 26589); - - // gentest-3348 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x40000000010L, 0x8L, 0x0L, 0x100000000001000L, 0x1010L, 0x100050000000008L, false, 0, 0x0L), 4), 61353); - - // gentest-3349 - assertEqual(perft(new Board(0x10000000000L, 0x0L, 0x40000000000L, 0x1000000000L, 0x0L, 0x100000000002000L, 0x2000L, 0x100051000000000L, true, 0, 0x0L), 4), 8658); - - // gentest-3350 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x40000000000L, 0x1000000000L, 0x0L, 0x100000000008000L, 0x8000L, 0x100041100000000L, false, 0, 0x0L), 4), 9521); - - // gentest-3351 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x1000000000000000L, 0x1000000000L, 0x0L, 0x2000000400000L, 0x400000L, 0x1002001100000000L, true, 0, 0x0L), 4), 29994); - - // gentest-3352 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x1000000L, 0x1000000000L, 0x0L, 0x2000000400000L, 0x400000L, 0x2001101000000L, false, 0, 0x0L), 4), 27440); - - // gentest-3353 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x20000L, 0x1000000000L, 0x0L, 0x400000000800000L, 0x800000L, 0x400001100020000L, true, 0, 0x0L), 4), 21380); - - // gentest-3354 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x800000000L, 0x1000000000L, 0x0L, 0x400000000000040L, 0x40L, 0x400001900000000L, false, 0, 0x0L), 4), 9987); - - // gentest-3355 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x20000000000000L, 0x10000000000000L, 0x0L, 0x400000000002000L, 0x2000L, 0x430000100000000L, true, 0, 0x0L), 4), 19454); - - // gentest-3356 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x20000000000000L, 0x10000000000000L, 0x0L, 0x2000000000020L, 0x20L, 0x32000100000000L, false, 0, 0x0L), 4), 13192); - - // gentest-3357 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x400000000000L, 0x10000000000000L, 0x0L, 0x10000000040L, 0x40L, 0x10410100000000L, true, 0, 0x0L), 4), 17889); - - // gentest-3358 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x400000000000L, 0x10000000000000L, 0x0L, 0x1000000000040L, 0x40L, 0x11400100000000L, false, 0, 0x0L), 4), 16293); - - // gentest-3359 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x400000000000L, 0x1000000000000000L, 0x0L, 0x100000000000020L, 0x20L, 0x1100400100000000L, true, 0, 0x0L), 4), 11047); - - // gentest-3360 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x400000000000L, 0x1000000000000000L, 0x0L, 0x2000000000020L, 0x20L, 0x1002400100000000L, false, 0, 0x0L), 4), 17351); - - // gentest-3361 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x80000000000000L, 0x1000000000000000L, 0x0L, 0x2000000000040L, 0x40L, 0x1082000100000000L, true, 0, 0x0L), 4), 20013); - - // gentest-3362 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x80000000000000L, 0x1000L, 0x0L, 0x2000000800000L, 0x800000L, 0x82000100001000L, false, 0, 0x0L), 4), 15282); - - // gentest-3363 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x80000000000000L, 0x400L, 0x0L, 0x2000080000000L, 0x80000000L, 0x82000100000400L, true, 0, 0x0L), 4), 19220); - - // gentest-3364 - assertEqual(perft(new Board(0x100000000L, 0x0L, 0x80000000000000L, 0x400L, 0x0L, 0x400000000400000L, 0x400000L, 0x480000100000400L, false, 0, 0x0L), 4), 16411); - - // gentest-3365 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3366 - assertEqual(perft(new Board(0xfd02000800f700L, 0x4200000000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x810f7fbL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 367754); - - // gentest-3367 - assertEqual(perft(new Board(0x6d82100800f700L, 0x4200000000040040L, 0x2400000000100020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x814f7f9L, 0xff6d821000000000L, true, 0, 0x8100000000000081L), 4), 923031); - - // gentest-3368 - assertEqual(perft(new Board(0x6d82104800b700L, 0x4200000000040040L, 0x400000002000820L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4804bff9L, 0xdf6d821002000000L, false, 0, 0x8100000000000081L), 4), 992552); - - // gentest-3369 - assertEqual(perft(new Board(0x6d820068009700L, 0x4200000000040040L, 0x10002000820L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x60049ff9L, 0xdb6d83000a000000L, true, 0, 0x8100000000000081L), 4), 802938); - - // gentest-3370 - assertEqual(perft(new Board(0x6d820068009700L, 0x4200000000040040L, 0x10002100020L, 0x8100000000000084L, 0x4000000008L, 0x1000000000000010L, 0x601497fcL, 0xd36d83400a000000L, false, 0, 0x8100000000000080L), 4), 1008569); - - // gentest-3371 - assertEqual(perft(new Board(0x6d82006a009500L, 0x4200000000040040L, 0x410000000100020L, 0x8100000000000084L, 0x4000000008L, 0x1000000000000010L, 0x621495fcL, 0xd77d824008000000L, true, 0, 0x8100000000000080L), 4), 1020256); - - // gentest-3372 - assertEqual(perft(new Board(0x6c82016a009500L, 0x4200000001000040L, 0x410000000100020L, 0x8100000000000084L, 0x4000080000L, 0x1000000000000010L, 0x631895f4L, 0xd77c824108000000L, false, 0, 0x8100000000000080L), 4), 1930284); - - // gentest-3373 - assertEqual(perft(new Board(0x6c82016a009500L, 0x4200000001000040L, 0x410000000100020L, 0x8100000000000084L, 0x200200000000L, 0x1000000000000010L, 0x2631095f4L, 0xd77ca20108000000L, true, 0, 0x8100000000000080L), 4), 1463855); - - // gentest-3374 - assertEqual(perft(new Board(0x6c82016a009500L, 0x4200000001000040L, 0x410000000100020L, 0x8100000000000084L, 0x2200000000L, 0x1000000000000010L, 0x2631095f4L, 0xd77c822108000000L, false, 0, 0x8100000000000080L), 4), 2013697); - - // gentest-3375 - assertEqual(perft(new Board(0x4ca2016a801500L, 0x4200000001000040L, 0x400000400100020L, 0x8100000000000084L, 0x2200000000L, 0x1000000000000010L, 0x2639015f4L, 0xd74ca22508000000L, true, 0, 0x8100000000000080L), 4), 1273346); - - // gentest-3376 - assertEqual(perft(new Board(0x4ca0016a801100L, 0x4200020000000040L, 0x400000400100020L, 0x8100000000000084L, 0x4000400L, 0x1000000000000010L, 0x200669011f4L, 0xd74ca00508000400L, false, 0, 0x8100000000000080L), 4), 1762950); - - // gentest-3377 - assertEqual(perft(new Board(0xce0412a801100L, 0x4200020000000040L, 0x400000400100020L, 0x8001000000000084L, 0x4000400L, 0x1000000000000010L, 0x240269011f4L, 0xd60de00508000400L, true, 0, 0x8000000000000080L), 4), 1743435); - - // gentest-3378 - assertEqual(perft(new Board(0xc60412a801100L, 0x4300000000000040L, 0x400000400100020L, 0x8001000000000084L, 0x20400L, 0x1000000000000010L, 0x1000000229211f4L, 0xd60d604508000400L, false, 0, 0x8000000000000080L), 4), 1620303); - - // gentest-3379 - assertEqual(perft(new Board(0xc604328801100L, 0x4300000000000040L, 0x400000400100020L, 0x8001000000000084L, 0x20800L, 0x10000000000010L, 0x1000002209211f4L, 0xc61d604508000800L, true, 0, 0x80L), 4), 123251); - - // gentest-3380 - assertEqual(perft(new Board(0xc604328801100L, 0x4300000000000040L, 0x400000400000820L, 0x8001000000000084L, 0x200000L, 0x80000000010L, 0x100000220a019f4L, 0xc60d684508000000L, false, 0, 0x80L), 4), 921004); - - // gentest-3381 - assertEqual(perft(new Board(0x8604328801100L, 0x4004040000000040L, 0x400000400000820L, 0x1800000000084L, 0x200000L, 0x80000000010L, 0x4000220a019f4L, 0x4409ec4508000000L, true, 0, 0x80L), 4), 1091601); - - // gentest-3382 - assertEqual(perft(new Board(0x8604329801000L, 0x4004040000000040L, 0x400000400000820L, 0x1800000040080L, 0x200000L, 0x10000000000010L, 0x4000221a418f0L, 0x4419e44508000000L, false, 0, 0x80L), 4), 1114122); - - // gentest-3383 - assertEqual(perft(new Board(0x8406329801000L, 0x4004040000000040L, 0x400000400000820L, 0x81000000040080L, 0x400000L, 0x10000000000010L, 0x4000221c418f0L, 0x4499446508000000L, true, 0, 0x80L), 4), 1226960); - - // gentest-3384 - assertEqual(perft(new Board(0x8406329801000L, 0x4000040800000040L, 0x400000400000820L, 0x81000000000480L, 0x400000L, 0x80000000010L, 0xa21c01cf0L, 0x44894c6508000000L, false, 0, 0x80L), 4), 1321764); - - // gentest-3385 - assertEqual(perft(new Board(0x8402329801000L, 0x10040800000040L, 0x400020000000820L, 0x81000000000480L, 0x4000000000L, 0x80000000010L, 0x4a21801cf0L, 0x4994e2108000000L, true, 0, 0x80L), 4), 723318); - - // gentest-3386 - assertEqual(perft(new Board(0x84023a9001000L, 0x10060000000040L, 0x400000000000820L, 0x81000000000480L, 0x4000000000L, 0x100000000010L, 0x242a1001cf0L, 0x499542108000000L, false, 0, 0x80L), 4), 726827); - - // gentest-3387 - assertEqual(perft(new Board(0x402ba9001000L, 0x10060000000040L, 0x400000000000820L, 0x82000000000480L, 0x8000000000L, 0x100000000010L, 0x282a1001cf0L, 0x492542908000000L, true, 0, 0x80L), 4), 584179); - - // gentest-3388 - assertEqual(perft(new Board(0x402ba9001000L, 0x10020002000040L, 0x400000000000820L, 0x2000000000480L, 0x8000000000000000L, 0x100000000010L, 0x80000202a1001cf0L, 0x41250290a000000L, false, 0, 0x80L), 4), 399109); - - // gentest-3389 - assertEqual(perft(new Board(0x402ba1081000L, 0x10020002000040L, 0x400000000000820L, 0x200000000000084L, 0x8000000000000000L, 0x100000000010L, 0x80000202a10018f4L, 0x610502902080000L, true, 0, 0x80L), 4), 493664); - - // gentest-3390 - assertEqual(perft(new Board(0x402ba1081000L, 0x4000020002000040L, 0x400000000000820L, 0x200000000800004L, 0x800000000000000L, 0x100000000010L, 0x8000202a1801874L, 0x4600502902080000L, false, 0, 0x0L), 4), 432452); - - // gentest-3391 - assertEqual(perft(new Board(0x402ba1081000L, 0x860000000040L, 0x400000000000820L, 0x200000000800004L, 0x800000000000000L, 0x100000000008L, 0x8000202a180186cL, 0x600d42900080000L, true, 0, 0x0L), 4), 453420); - - // gentest-3392 - assertEqual(perft(new Board(0x402ba1081000L, 0x860000000040L, 0x400000000000820L, 0x200000000100004L, 0x1000000000000000L, 0x20000000000008L, 0x10000202a110186cL, 0x620c42900080000L, false, 0, 0x0L), 4), 61465); - - // gentest-3393 - assertEqual(perft(new Board(0x402ba1081000L, 0x820000000040L, 0x400000000000820L, 0x200000000100004L, 0x40000000000L, 0x20000000000008L, 0x602a110186cL, 0x620c02900080000L, true, 0, 0x0L), 4), 389578); - - // gentest-3394 - assertEqual(perft(new Board(0x402ba1081000L, 0x20040800000L, 0x400000000000820L, 0x200000000100004L, 0x40000000000L, 0x20000000000010L, 0x602a1901834L, 0x620402940080000L, false, 0, 0x0L), 4), 630068); - - // gentest-3395 - assertEqual(perft(new Board(0x402ba1081000L, 0x20040002000L, 0x2000000000820L, 0x200000000100004L, 0x40000000000L, 0x4000000000000010L, 0x602a1103834L, 0x4202402940080000L, true, 0, 0x0L), 4), 953063); - - // gentest-3396 - assertEqual(perft(new Board(0x402aa3081000L, 0x20040002000L, 0x2000000004000L, 0x200000000100004L, 0x40000000000L, 0x4000000000000010L, 0x602a1107014L, 0x4202402842080000L, false, 0, 0x0L), 4), 1330913); - - // gentest-3397 - assertEqual(perft(new Board(0x402aa3081000L, 0x20040002000L, 0x2000000004000L, 0x100004L, 0x1000000000000000L, 0x40000000000010L, 0x10000202a1107014L, 0x42402842080000L, true, 0, 0x0L), 4), 656844); - - // gentest-3398 - assertEqual(perft(new Board(0x402aa3081000L, 0x20040002000L, 0x2000000004000L, 0x400000000100000L, 0x8000000000000L, 0x4000000000000010L, 0x4080202a1107010L, 0x4002402842080000L, false, 0, 0x0L), 4), 24756); - - // gentest-3399 - assertEqual(perft(new Board(0x402aa3081000L, 0x20040002000L, 0x400000000004000L, 0x100000L, 0x800000000000000L, 0x40000000000010L, 0x8000202a1107010L, 0x440402842080000L, true, 0, 0x0L), 4), 391915); - - // gentest-3400 - assertEqual(perft(new Board(0x402aa3080000L, 0x20040002000L, 0x100000004000L, 0x1000L, 0x800000000000000L, 0x40000000000010L, 0x8000202a1087010L, 0x40502842000000L, false, 0, 0x0L), 4), 410357); - - // gentest-3401 - assertEqual(perft(new Board(0x402aa3080000L, 0x21000000080L, 0x8000000004000L, 0x1000L, 0x800000000000000L, 0x40000000000010L, 0x8000202a1085090L, 0x48403802000000L, true, 0, 0x0L), 4), 332911); - - // gentest-3402 - assertEqual(perft(new Board(0x402aa3080000L, 0x21000000080L, 0x8000000004000L, 0x1000L, 0x8000000000000000L, 0x200000000010L, 0x80000202a1085090L, 0x8603802000000L, false, 0, 0x0L), 4), 51501); - - // gentest-3403 - assertEqual(perft(new Board(0x402aa3080000L, 0x20004000080L, 0x8000000004000L, 0x2000L, 0x8000000000000000L, 0x100000000010L, 0x80000202a1086090L, 0x8502806000000L, true, 0, 0x0L), 4), 347722); - - // gentest-3404 - assertEqual(perft(new Board(0x402aa3080000L, 0x20004000080L, 0x8000000800000L, 0x2000L, 0x8000000000000000L, 0x80000000020L, 0x80000202a18820a0L, 0x8482806000000L, false, 0, 0x0L), 4), 391437); - - // gentest-3405 - assertEqual(perft(new Board(0x6aa10a0000L, 0x20004000080L, 0x8000000800000L, 0x200000L, 0x8000000000000000L, 0x80000000020L, 0x80000202a1a800a0L, 0x8086804020000L, true, 0, 0x0L), 4), 392314); - - // gentest-3406 - assertEqual(perft(new Board(0x4aa10a0000L, 0x21000000080L, 0x8002000000000L, 0x200000L, 0x0L, 0x80000000020L, 0x222a12800a0L, 0x8085800020000L, false, 0, 0x0L), 4), 296980); - - // gentest-3407 - assertEqual(perft(new Board(0x8a210a0000L, 0x21000000080L, 0x8002000000000L, 0x200000L, 0x0L, 0x10000000000020L, 0x2a2012800a0L, 0x18001820020000L, true, 0, 0x0L), 4), 264430); - - // gentest-3408 - assertEqual(perft(new Board(0x8a210a0000L, 0x21000000080L, 0x100040000000L, 0x200000L, 0x0L, 0x10000000004000L, 0x28241284080L, 0x10101820020000L, false, 0, 0x0L), 4), 237137); - - // gentest-3409 - assertEqual(perft(new Board(0x8b200a0000L, 0x20020000000080L, 0x100040000000L, 0x200000L, 0x0L, 0x200000004000L, 0x28340284080L, 0x20300820020000L, true, 0, 0x0L), 4), 149104); - - // gentest-3410 - assertEqual(perft(new Board(0x8b200a0000L, 0x120000000000080L, 0x100040000000L, 0x400000L, 0x0L, 0x10000000004000L, 0x100008340484080L, 0x30100820020000L, false, 0, 0x0L), 4), 169255); - - // gentest-3411 - assertEqual(perft(new Board(0x8b200a0000L, 0x24000000000080L, 0x40000000L, 0x400000L, 0x0L, 0x80000004000L, 0x4008300484080L, 0x20080860020000L, true, 0, 0x0L), 4), 130441); - - // gentest-3412 - assertEqual(perft(new Board(0x289200a0000L, 0x8000100000000080L, 0x40000000L, 0x400000L, 0x0L, 0x80000004000L, 0x128100484080L, 0x8000080860020000L, false, 0, 0x0L), 4), 113593); - - // gentest-3413 - assertEqual(perft(new Board(0x281280a0000L, 0x8000100000000080L, 0x8L, 0x400000L, 0x0L, 0x80000000040L, 0x1281004800c0L, 0x8000080028020008L, true, 0, 0x0L), 4), 126614); - - // gentest-3414 - assertEqual(perft(new Board(0x38028080200L, 0x8000100000000080L, 0x8L, 0x40000000L, 0x0L, 0x80000000040L, 0x1380400800c0L, 0x8000080028000208L, false, 0, 0x0L), 4), 192696); - - // gentest-3415 - assertEqual(perft(new Board(0x430028080000L, 0x100000000080L, 0x8L, 0x40000002L, 0x0L, 0x80000000040L, 0x5300400800c0L, 0x8002800000aL, true, 0, 0x0L), 4), 142844); - - // gentest-3416 - assertEqual(perft(new Board(0x430028080000L, 0x100000002000L, 0x8L, 0x80000001L, 0x0L, 0x80000000040L, 0x530080082040L, 0x80028000009L, false, 0, 0x0L), 4), 187264); - - // gentest-3417 - assertEqual(perft(new Board(0x430008080000L, 0x20002000L, 0x200000L, 0x80000001L, 0x0L, 0x1000000040L, 0x4300a0082040L, 0x1008200001L, true, 0, 0x0L), 4), 21185); - - // gentest-3418 - assertEqual(perft(new Board(0x430008080000L, 0x20000008L, 0x200000L, 0x18000L, 0x0L, 0x1000000040L, 0x430020088048L, 0x1008210000L, false, 0, 0x0L), 4), 339492); - - // gentest-3419 - assertEqual(perft(new Board(0x430008080000L, 0x8L, 0x200000L, 0x8000000000020000L, 0x0L, 0x20000040L, 0x8000430000080048L, 0x28220000L, true, 0, 0x0L), 4), 249873); - - // gentest-3420 - assertEqual(perft(new Board(0x1420008080000L, 0x8L, 0x200000L, 0x8000000002000000L, 0x0L, 0x20008000L, 0x8001420000088008L, 0x2a200000L, false, 0, 0x0L), 4), 242155); - - // gentest-3421 - assertEqual(perft(new Board(0x1420008080000L, 0x8L, 0x800000000L, 0x8000000000000200L, 0x0L, 0x20800000L, 0x8001420000880008L, 0x828000200L, true, 0, 0x0L), 4), 268833); - - // gentest-3422 - assertEqual(perft(new Board(0x40020008080000L, 0x8L, 0x800000000L, 0x8000000000020000L, 0x100000000000000L, 0x20800000L, 0x8140020000880008L, 0x828020000L, false, 0, 0x0L), 4), 467335); - - // gentest-3423 - assertEqual(perft(new Board(0x40020008080000L, 0x8L, 0x800000000L, 0x8000000200000000L, 0x1L, 0x2000800000L, 0x8040020000880009L, 0x2a08000000L, true, 0, 0x0L), 4), 602145); - - // gentest-3424 - assertEqual(perft(new Board(0x40020008080000L, 0x8L, 0x800000000L, 0x100000004L, 0x1L, 0x2000800000L, 0x4002000088000dL, 0x2908000000L, false, 0, 0x0L), 4), 549421); - - // gentest-3425 - assertEqual(perft(new Board(0x42000008080000L, 0x8L, 0x800000000L, 0x1000004L, 0x1L, 0x200000800000L, 0x4200000088000dL, 0x200809000000L, true, 0, 0x0L), 4), 613386); - - // gentest-3426 - assertEqual(perft(new Board(0x40000008080000L, 0x200000000000008L, 0x800000000L, 0x100000002L, 0x1L, 0x200000800000L, 0x24000000088000bL, 0x200908000000L, false, 0, 0x0L), 4), 627645); - - // gentest-3427 - assertEqual(perft(new Board(0x40000008080000L, 0x200000000000200L, 0x800000000L, 0x1000002L, 0x1L, 0x400000800000L, 0x240000000880203L, 0x400809000000L, true, 0, 0x0L), 4), 337036); - - // gentest-3428 - assertEqual(perft(new Board(0x40000008080000L, 0x200000004000000L, 0x800000000L, 0x100000002L, 0x1L, 0x400040000000L, 0x240000044080003L, 0x400908000000L, false, 0, 0x0L), 4), 722533); - - // gentest-3429 - assertEqual(perft(new Board(0x8080000L, 0x200000004000000L, 0x2000000000000L, 0x100000002L, 0x4000000000000001L, 0x200040000000L, 0x4200000044080003L, 0x2200108000000L, true, 0, 0x0L), 4), 543802); - - // gentest-3430 - assertEqual(perft(new Board(0x8080000L, 0x200020000000000L, 0x40000000000L, 0x100000002L, 0x4000000000000100L, 0x200040000000L, 0x4200020040080102L, 0x240108000000L, false, 0, 0x0L), 4), 985148); - - // gentest-3431 - assertEqual(perft(new Board(0x8080000L, 0x200020000000000L, 0x10000000L, 0x2000000002L, 0x4000000000002000L, 0x200040000000L, 0x4200020040082002L, 0x202018000000L, true, 0, 0x0L), 4), 437178); - - // gentest-3432 - assertEqual(perft(new Board(0x8080000L, 0x200020000000000L, 0x10000000L, 0x20000002L, 0x4000000000001000L, 0x200000800000L, 0x4200020000881002L, 0x200038000000L, false, 0, 0x0L), 4), 614723); - - // gentest-3433 - assertEqual(perft(new Board(0x8080000L, 0x200000800000000L, 0x10000000L, 0x20000002L, 0x4000000000001000L, 0x80000800000L, 0x4200000800881002L, 0x80038000000L, true, 0, 0x0L), 4), 782180); - - // gentest-3434 - assertEqual(perft(new Board(0x8080000L, 0x200000000040000L, 0x10000000L, 0x20000002L, 0x100000001000L, 0x400800000L, 0x2001000008c1002L, 0x438000000L, false, 0, 0x0L), 4), 820135); - - // gentest-3435 - assertEqual(perft(new Board(0x8080000L, 0x200000000040000L, 0x10000000L, 0x20000002L, 0x100000001000L, 0x400400000L, 0x2001000004c1002L, 0x438000000L, true, 0, 0x0L), 4), 808558); - - // gentest-3436 - assertEqual(perft(new Board(0x10040000L, 0x200000000000000L, 0x0L, 0x2L, 0x100000001000L, 0x420000000L, 0x200100030001002L, 0x400040000L, false, 0, 0x0L), 4), 21417); - - // gentest-3437 - assertEqual(perft(new Board(0x10000400L, 0x200000000000000L, 0x0L, 0x2L, 0x1000L, 0x80020000000L, 0x200000030001002L, 0x80000000400L, true, 0, 0x0L), 4), 108879); - - // gentest-3438 - assertEqual(perft(new Board(0x10000000L, 0x200000000000004L, 0x0L, 0x1000000000L, 0x1000L, 0x80020000000L, 0x200001030001000L, 0x80000000004L, false, 0, 0x0L), 4), 27148); - - // gentest-3439 - assertEqual(perft(new Board(0x10000000L, 0x200000008000000L, 0x0L, 0x1000000000L, 0x1000L, 0x84000000000L, 0x200005010001000L, 0x80008000000L, true, 0, 0x0L), 4), 77484); - - // gentest-3440 - assertEqual(perft(new Board(0x10000000L, 0x200040000000000L, 0x0L, 0x1000000000L, 0x200000L, 0x88000000000L, 0x200009010200000L, 0xc0000000000L, false, 0, 0x0L), 4), 79879); - - // gentest-3441 - assertEqual(perft(new Board(0x10000000L, 0x200000000000000L, 0x0L, 0x1000000000L, 0x20000000L, 0x8008000000000L, 0x9030000000L, 0x208000000000000L, true, 0, 0x0L), 4), 37583); - - // gentest-3442 - assertEqual(perft(new Board(0x10000000L, 0x200000000000000L, 0x0L, 0x10000000000000L, 0x2000000000000000L, 0x400008000000000L, 0x2010008010000000L, 0x600000000000000L, false, 0, 0x0L), 4), 0); - - // gentest-3443 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3444 - assertEqual(perft(new Board(0xf700080220dd00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x220ddffL, 0xfff7000800000000L, false, 0, 0x8100000000000081L), 4), 359803); - - // gentest-3445 - assertEqual(perft(new Board(0xe700181220cd00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1220cdffL, 0xfde7041800000000L, true, 0, 0x8100000000000081L), 4), 1032315); - - // gentest-3446 - assertEqual(perft(new Board(0xe700101a28c500L, 0x4000040000000042L, 0x2400000200000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x21228c5dfL, 0xfde7041008000000L, false, 0, 0x8100000000000081L), 4), 837429); - - // gentest-3447 - assertEqual(perft(new Board(0xe700101a28c500L, 0x4000040000000042L, 0x2400000200000004L, 0x8100000000000081L, 0x800000800L, 0x10000000000010L, 0x21228cdd7L, 0xe5f7041808000000L, true, 0, 0x81L), 4), 1292477); - - // gentest-3448 - assertEqual(perft(new Board(0xe700101a28c500L, 0x4000040000800002L, 0x2000002200000004L, 0x8100000000000081L, 0x800001000L, 0x10000000000010L, 0x212a8d597L, 0xe1f7043808000000L, false, 0, 0x81L), 4), 2244498); - - // gentest-3449 - assertEqual(perft(new Board(0xa700105a28c500L, 0x4000040000800002L, 0x2000002200000004L, 0x8100000000000081L, 0x800001000L, 0x10000000000020L, 0x212a8d5a7L, 0xe1b7043848000000L, true, 0, 0x0L), 4), 1995877); - - // gentest-3450 - assertEqual(perft(new Board(0xa700105a28c500L, 0x4000040000800800L, 0x2000002200000004L, 0x8100000000000041L, 0x800001000L, 0x100000000020L, 0x212a8dd65L, 0xe1a7143848000000L, false, 0, 0x0L), 4), 1355850); - - // gentest-3451 - assertEqual(perft(new Board(0xa700007828c500L, 0x4000000002000800L, 0x2000002200000004L, 0x8100000000000041L, 0x800001000L, 0x100000000020L, 0x21028dd65L, 0xe1a710286a000000L, true, 0, 0x0L), 4), 1446904); - - // gentest-3452 - assertEqual(perft(new Board(0xa700007828c500L, 0x4000000002020000L, 0x2000400200000004L, 0x8100000000000081L, 0x800001000L, 0x100000000020L, 0x2102ad5a5L, 0xe1a750086a000000L, false, 0, 0x0L), 4), 2398388); - - // gentest-3453 - assertEqual(perft(new Board(0xa700007828c500L, 0x4000000002020000L, 0x1000400400000004L, 0x8100000000000081L, 0x8000001000L, 0x100000000020L, 0x10000000102ad5a5L, 0xc1a750846a000000L, true, 0, 0x0L), 4), 1529900); - - // gentest-3454 - assertEqual(perft(new Board(0xa7000078688500L, 0x4000000002000800L, 0x1000400400000004L, 0x8100000000000081L, 0x800000001000L, 0x100000000020L, 0x1000000010689da5L, 0xc1a7d0046a000000L, false, 0, 0x0L), 4), 1275659); - - // gentest-3455 - assertEqual(perft(new Board(0xa7000078688500L, 0x4000000002000800L, 0x1000400400000004L, 0x8008000000000041L, 0x800000001000L, 0x100000000020L, 0x1000000010689d65L, 0xc0afd0046a000000L, true, 0, 0x0L), 4), 1008188); - - // gentest-3456 - assertEqual(perft(new Board(0xa7000078e80500L, 0x4000000002000002L, 0x1000400400000004L, 0x8008000000000041L, 0x800000001000L, 0x1000000020L, 0x1000000010e81567L, 0xc0afc0146a000000L, false, 0, 0x0L), 4), 1218777); - - // gentest-3457 - assertEqual(perft(new Board(0xa5020078e80500L, 0x4000000002000002L, 0x3000400000000004L, 0x8008000000000041L, 0x800000100000L, 0x1000000020L, 0x1000000010f80567L, 0xe0adc2106a000000L, true, 0, 0x0L), 4), 949095); - - // gentest-3458 - assertEqual(perft(new Board(0xa5020078e80500L, 0x4000040000000002L, 0x3000400000000004L, 0x8008000000000041L, 0x800000040000L, 0x1000000020L, 0x1000000010ec0567L, 0xe0adc61068000000L, false, 0, 0x0L), 4), 1149342); - - // gentest-3459 - assertEqual(perft(new Board(0xa5020038e80500L, 0x4200000000000002L, 0x3000400000000004L, 0x8008000000000041L, 0x800000040000L, 0x1000002000L, 0x1000000010cc2547L, 0xe2adc21028200000L, true, 0, 0x0L), 4), 905244); - - // gentest-3460 - assertEqual(perft(new Board(0xa5020078880500L, 0x4200000000000002L, 0x3000400000000004L, 0x8008000000000041L, 0x80040000L, 0x1000200000L, 0x1000000050ac0547L, 0xe2ad4210a8000000L, false, 0, 0x0L), 4), 1262476); - - // gentest-3461 - assertEqual(perft(new Board(0xa1020458880500L, 0x4200000000000002L, 0x3000400020000000L, 0x8008000000000041L, 0x80040000L, 0x200000200000L, 0x1000000070ac0543L, 0xe2a9620488000000L, true, 0, 0x0L), 4), 1175640); - - // gentest-3462 - assertEqual(perft(new Board(0x81020458880500L, 0x4200000000000002L, 0x20c00020000000L, 0x8008000000000005L, 0x80040000L, 0x200000200000L, 0x20000070ac0507L, 0xc289e20488000000L, false, 0, 0x0L), 4), 1105403); - - // gentest-3463 - assertEqual(perft(new Board(0x81020458880500L, 0x4200000000000002L, 0x20809000000000L, 0x8008000000000005L, 0x80040000L, 0x4000200000L, 0x20001050ac0507L, 0xc28982c488000000L, true, 0, 0x0L), 4), 774631); - - // gentest-3464 - assertEqual(perft(new Board(0x81020458080500L, 0x4200000000000002L, 0x20808000008000L, 0x8008000000000005L, 0x840000L, 0x4000001000L, 0x200000500c9507L, 0xc28982c408800000L, false, 0, 0x0L), 4), 944766); - - // gentest-3465 - assertEqual(perft(new Board(0x80020558080500L, 0x4200000000000002L, 0x20808000008000L, 0x8008000000000005L, 0x80000200L, 0x4000001000L, 0x20000050089707L, 0xc28882c588000000L, true, 0, 0x0L), 4), 1062213); - - // gentest-3466 - assertEqual(perft(new Board(0x80000758080500L, 0x4200000000000002L, 0x808800008000L, 0x8008000000000005L, 0x80000200L, 0x4000000800L, 0x850088f07L, 0xc28880c788000000L, false, 0, 0x0L), 4), 821000); - - // gentest-3467 - assertEqual(perft(new Board(0x80000758080500L, 0x4200000000000002L, 0x2000008000008000L, 0x8000000800000005L, 0x80020000L, 0x4000000800L, 0x500a8d07L, 0xe28000cf88000000L, true, 0, 0x0L), 4), 877889); - - // gentest-3468 - assertEqual(perft(new Board(0x80000718080500L, 0x4200000000000002L, 0x2000008000008000L, 0x8000000000000041L, 0x840000000L, 0x4000000800L, 0x810088d43L, 0xe28000c748000000L, false, 0, 0x0L), 4), 135952); - - // gentest-3469 - assertEqual(perft(new Board(0x80000718080500L, 0x200800000000002L, 0x2000008000008000L, 0x8000000040000001L, 0x800000000L, 0x200000000800L, 0x850088d03L, 0xa280a08708000000L, true, 0, 0x0L), 4), 430931); - - // gentest-3470 - assertEqual(perft(new Board(0x80000718080500L, 0x200800000000002L, 0x2000008000008000L, 0x8000000040000001L, 0x80000000000L, 0x10000000001000L, 0x80050089503L, 0xa290808708000000L, false, 0, 0x0L), 4), 36645); - - // gentest-3471 - assertEqual(perft(new Board(0x80000719080400L, 0x200000040000002L, 0x2000008000008000L, 0x8000000000000001L, 0x80000000000L, 0x20000000001000L, 0x80011089403L, 0xa2a0008748000000L, true, 0, 0x0L), 4), 382583); - - // gentest-3472 - assertEqual(perft(new Board(0x80000719080400L, 0x200000000100002L, 0x2000008000008000L, 0x8000000000000001L, 0x800000000000L, 0x20000000002000L, 0x80001108a403L, 0xa2a0008708100000L, false, 0, 0x0L), 4), 609077); - - // gentest-3473 - assertEqual(perft(new Board(0x80000719080400L, 0x200000800000002L, 0x2004008000000000L, 0x8000000000000001L, 0x800000000000L, 0x4000000000002000L, 0x4800011082403L, 0xe280008f08000000L, true, 0, 0x0L), 4), 759718); - - // gentest-3474 - assertEqual(perft(new Board(0x80000719080400L, 0x200000800000800L, 0x2004400000000000L, 0x8000000000000001L, 0x0L, 0x4000000000002000L, 0x4000011082c01L, 0xe280400f08000000L, false, 0, 0x0L), 4), 739398); - - // gentest-3475 - assertEqual(perft(new Board(0x80000719080400L, 0x200000002000800L, 0x4480000000000L, 0x8000000000000008L, 0x0L, 0x4000000000002000L, 0x4000011082c08L, 0xc28048070a000000L, true, 0, 0x0L), 4), 526586); - - // gentest-3476 - assertEqual(perft(new Board(0x8000071d080000L, 0x200040000000002L, 0x4480000000000L, 0x8000000000000008L, 0x0L, 0x4000000000002000L, 0x400001508200aL, 0xc2804c0708000000L, false, 18, 0x0L), 4), 375145); - - // gentest-3477 - assertEqual(perft(new Board(0x8000061d080000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000008L, 0x0L, 0x4000000000002000L, 0x11508200aL, 0xc088481608000000L, true, 0, 0x0L), 4), 386183); - - // gentest-3478 - assertEqual(perft(new Board(0x8000061d080000L, 0x2000001000000002L, 0x480100000000L, 0x8000000000000010L, 0x0L, 0x4000000000400000L, 0x115480012L, 0xe080481608000000L, false, 0, 0x0L), 4), 226734); - - // gentest-3479 - assertEqual(perft(new Board(0x8000041f080000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000004L, 0x0L, 0x4000000000400000L, 0x115480006L, 0xc08848140a000000L, true, 0, 0x0L), 4), 235283); - - // gentest-3480 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000040L, 0x0L, 0x4000000000800000L, 0x115880042L, 0xc088481408020000L, false, 0, 0x0L), 4), 244120); - - // gentest-3481 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000040L, 0x0L, 0x40000000004000L, 0x115084042L, 0x80c8481408020000L, true, 0, 0x0L), 4), 466744); - - // gentest-3482 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x8001000040000L, 0x480100000000L, 0x2000000000000002L, 0x0L, 0x40000000004000L, 0x1150c4002L, 0x20c8481408020000L, false, 0, 0x0L), 4), 769904); - - // gentest-3483 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x8001800000000L, 0x1000080100000000L, 0x20000002L, 0x0L, 0x40000000004000L, 0x915084002L, 0x10c8081428020000L, true, 0, 0x0L), 4), 963437); - - // gentest-3484 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x200001800000000L, 0x1000080000040000L, 0x20000002L, 0x0L, 0x40000000800000L, 0x8158c0002L, 0x12c0081428020000L, false, 0, 0x0L), 4), 934306); - - // gentest-3485 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x200001800000000L, 0xc0000040000L, 0x2000000020L, 0x0L, 0x40000000800000L, 0x8158c0020L, 0x2c00c3408020000L, true, 0, 0x0L), 4), 1048628); - - // gentest-3486 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x230000000000000L, 0xc0000040000L, 0x2000000010L, 0x0L, 0x40000000800000L, 0x100000158c0010L, 0x2e00c2408020000L, false, 0, 0x0L), 4), 741819); - - // gentest-3487 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x220002000000000L, 0x40000048000L, 0x10L, 0x0L, 0x2000000000800000L, 0x20158c0010L, 0x22a0040408028000L, true, 0, 0x0L), 4), 569247); - - // gentest-3488 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x200080080000000L, 0x40000048000L, 0x10L, 0x0L, 0x2000000040000000L, 0xd50c0010L, 0x22800c0408028000L, false, 0, 0x0L), 4), 502412); - - // gentest-3489 - assertEqual(perft(new Board(0x8000041d0a0000L, 0x200080080000000L, 0x40120000000L, 0x10L, 0x0L, 0x2000000040000000L, 0x1d5080010L, 0x22800c0428020000L, true, 0, 0x0L), 4), 558272); - - // gentest-3490 - assertEqual(perft(new Board(0x41d0a0000L, 0x200080080000000L, 0x40120000000L, 0x100000L, 0x0L, 0x2000008000000000L, 0x8195180000L, 0x22000c0428020000L, false, 0, 0x0L), 4), 318116); - - // gentest-3491 - assertEqual(perft(new Board(0x41d0a0000L, 0x200080080000000L, 0x100000100100000L, 0x0L, 0x0L, 0x2000000040000000L, 0x1d5080000L, 0x2300080408120000L, true, 0, 0x0L), 4), 184146); - - // gentest-3492 - assertEqual(perft(new Board(0x51c0a0000L, 0x600000080000000L, 0x100020000100000L, 0x0L, 0x0L, 0x2000000040000000L, 0x201d4080000L, 0x2700000408120000L, false, 0, 0x0L), 4), 122126); - - // gentest-3493 - assertEqual(perft(new Board(0x51c0a0000L, 0x600000080000000L, 0x100020000000040L, 0x0L, 0x0L, 0x1000000000800000L, 0x20194880000L, 0x1700000408020040L, true, 0, 0x0L), 4), 74577); - - // gentest-3494 - assertEqual(perft(new Board(0x51c0a0000L, 0x600000080000000L, 0x802000000000040L, 0x0L, 0x0L, 0x1000000040000000L, 0x8000001d4080000L, 0x1602000408020040L, false, 0, 0x0L), 4), 122572); - - // gentest-3495 - assertEqual(perft(new Board(0x51c0a0000L, 0x9000080000000L, 0x2004000000040L, 0x0L, 0x0L, 0x1000000040000000L, 0x41d4080000L, 0x100b000408020040L, true, 0, 0x0L), 4), 162298); - - // gentest-3496 - assertEqual(perft(new Board(0x51c0a0000L, 0x1200080000000L, 0x2000000000040L, 0x0L, 0x0L, 0x1000000000800000L, 0x194880000L, 0x1003200408020040L, false, 0, 0x0L), 4), 50934); - - // gentest-3497 - assertEqual(perft(new Board(0x51c080200L, 0x1600000000000L, 0x100000000000040L, 0x0L, 0x0L, 0x1000000000800000L, 0x400114880000L, 0x1101200408000240L, true, 0, 0x0L), 4), 73310); - - // gentest-3498 - assertEqual(perft(new Board(0x51c080200L, 0x1200020000000L, 0x100000000100000L, 0x0L, 0x0L, 0x1000000000004000L, 0x134084000L, 0x1101200408100200L, false, 0, 0x0L), 4), 122479); - - // gentest-3499 - assertEqual(perft(new Board(0x1041c080200L, 0x1000020008000L, 0x100000000100000L, 0x0L, 0x0L, 0x1000000000004000L, 0x10034084000L, 0x1101000408108200L, true, 0, 0x0L), 4), 62701); - - // gentest-3500 - assertEqual(perft(new Board(0x1041c080200L, 0x1000000808000L, 0x100000000000004L, 0x0L, 0x0L, 0x1000000000400000L, 0x10014c80000L, 0x1101000408008204L, false, 0, 0x0L), 4), 50877); - - // gentest-3501 - assertEqual(perft(new Board(0x1041c080200L, 0x1004000008000L, 0x100000020000000L, 0x0L, 0x0L, 0x800000000400000L, 0x14014480000L, 0x901000428008200L, true, 0, 0x0L), 4), 26800); - - // gentest-3502 - assertEqual(perft(new Board(0x1041c080200L, 0x21000000008000L, 0x100000020000000L, 0x0L, 0x0L, 0x400000000004000L, 0x20010014084000L, 0x501000428008200L, false, 0, 0x0L), 4), 61437); - - // gentest-3503 - assertEqual(perft(new Board(0x1041c080200L, 0x21000000008000L, 0x100004000000000L, 0x0L, 0x0L, 0x4000000400000L, 0x20010014480000L, 0x105004408008200L, true, 0, 0x0L), 4), 82862); - - // gentest-3504 - assertEqual(perft(new Board(0x1041c080200L, 0x801000000008000L, 0x100000080000000L, 0x0L, 0x0L, 0x4000020000000L, 0x800010034080000L, 0x105000488008200L, false, 0, 0x0L), 4), 37626); - - // gentest-3505 - assertEqual(perft(new Board(0x1041c080200L, 0x1000000008000L, 0x2000080000000L, 0x0L, 0x0L, 0x4000020000000L, 0x10034080000L, 0x7000488008200L, true, 0, 0x0L), 4), 14375); - - // gentest-3506 - assertEqual(perft(new Board(0x1041c080200L, 0x1000040000000L, 0x2000080000000L, 0x0L, 0x0L, 0x4000020000000L, 0x10034080000L, 0x70004c8000200L, false, 0, 0x0L), 4), 28508); - - // gentest-3507 - assertEqual(perft(new Board(0x200041c080200L, 0x40040000000L, 0x80000000L, 0x0L, 0x0L, 0x80020000000L, 0x2000034080000L, 0xc04c8000200L, true, 0, 0x0L), 4), 29835); - - // gentest-3508 - assertEqual(perft(new Board(0x41c080000L, 0x40040000000L, 0x80000002L, 0x200000000000000L, 0x0L, 0x82000000000L, 0x200002014080000L, 0xc04c8000002L, false, 0, 0x0L), 4), 117605); - - // gentest-3509 - assertEqual(perft(new Board(0x41c080000L, 0x200000040000000L, 0x80000002L, 0x0L, 0x0L, 0x440000000000L, 0x400014080000L, 0x2000404c8000002L, true, 0, 0x0L), 4), 16901); - - // gentest-3510 - assertEqual(perft(new Board(0x41c080000L, 0x200001000000000L, 0x80000002L, 0x0L, 0x0L, 0x4000040000000000L, 0x4000000014080000L, 0x200041488000002L, false, 0, 0x0L), 4), 11658); - - // gentest-3511 - assertEqual(perft(new Board(0x41c080000L, 0x208000000000000L, 0x80000002L, 0x0L, 0x0L, 0x8000020000000000L, 0x8000000014080000L, 0x208020488000002L, true, 0, 0x0L), 4), 9416); - - // gentest-3512 - assertEqual(perft(new Board(0x140c080000L, 0x208000000000000L, 0x800000000000002L, 0x0L, 0x0L, 0x4000020000000000L, 0x4000001004080000L, 0xa08020408000002L, false, 0, 0x0L), 4), 9912); - - // gentest-3513 - assertEqual(perft(new Board(0x10040c000000L, 0x200001000000000L, 0x800000000080000L, 0x0L, 0x0L, 0x4000020000000000L, 0x4000100004000000L, 0xa00021408080000L, true, 0, 0x0L), 4), 17170); - - // gentest-3514 - assertEqual(perft(new Board(0x10040c000000L, 0x200001000000000L, 0x800000000000020L, 0x0L, 0x0L, 0x40020000000000L, 0x40100004000000L, 0xa00021408000020L, false, 0, 0x0L), 4), 27537); - - // gentest-3515 - assertEqual(perft(new Board(0x1000040c000000L, 0x220000000000000L, 0x800000000000020L, 0x0L, 0x0L, 0x44000000000000L, 0x50000004000000L, 0xa24000408000020L, true, 0, 0x0L), 4), 56382); - - // gentest-3516 - assertEqual(perft(new Board(0x40c000000L, 0x220000000000000L, 0x4000000000020L, 0x0L, 0x0L, 0x40040000000000L, 0x44000004000000L, 0x220040408000020L, false, 0, 0x0L), 4), 50780); - - // gentest-3517 - assertEqual(perft(new Board(0x40c000000L, 0x200000000000000L, 0x800000000000020L, 0x0L, 0x0L, 0x48000000000000L, 0x840000004000000L, 0x208000408000020L, true, 0, 0x0L), 4), 36785); - - // gentest-3518 - assertEqual(perft(new Board(0x408000000L, 0x200000000000000L, 0x84000000L, 0x0L, 0x0L, 0x2008000000000000L, 0x2000000080000000L, 0x20800040c000000L, false, 0, 0x0L), 4), 31671); - - // gentest-3519 - assertEqual(perft(new Board(0x408000000L, 0x200000000000000L, 0x84000000L, 0x0L, 0x0L, 0x1000040000000000L, 0x1000000080000000L, 0x20004040c000000L, true, 0, 0x0L), 4), 34591); - - // gentest-3520 - assertEqual(perft(new Board(0x408000000L, 0x200000000000000L, 0x100000000010L, 0x0L, 0x0L, 0x800040000000000L, 0x800000000000010L, 0x200140408000000L, false, 0, 0x0L), 4), 32774); - - // gentest-3521 - assertEqual(perft(new Board(0x400080000L, 0x200000000000000L, 0x84000000L, 0x0L, 0x0L, 0x800040000000000L, 0x800000080000000L, 0x200040404080000L, true, 0, 0x0L), 4), 22988); - - // gentest-3522 - assertEqual(perft(new Board(0x400000800L, 0x200000000000000L, 0x10000004000000L, 0x0L, 0x0L, 0x400040000000000L, 0x410000000000000L, 0x200040404000800L, false, 0, 0x0L), 4), 32486); - - // gentest-3523 - assertEqual(perft(new Board(0x400000800L, 0x200000000000000L, 0x18000000000000L, 0x0L, 0x0L, 0x800040000000000L, 0x810000000000000L, 0x208040400000800L, true, 0, 0x0L), 4), 18767); - - // gentest-3524 - assertEqual(perft(new Board(0x400000800L, 0x200000000000000L, 0x8200000000000L, 0x0L, 0x0L, 0x800000200000000L, 0x800200000000000L, 0x208000600000800L, false, 0, 0x0L), 4), 60522); - - // gentest-3525 - assertEqual(perft(new Board(0x400000000L, 0x200000000000000L, 0x8000000000200L, 0x0L, 0x8000000L, 0x800000200000000L, 0x800000000000200L, 0x208000608000000L, true, 0, 0x0L), 4), 59735); - - // gentest-3526 - assertEqual(perft(new Board(0x400000000L, 0x200000000000000L, 0x8200000000000L, 0x0L, 0x40L, 0x10000200000000L, 0x10200000000000L, 0x208000600000040L, false, 0, 0x0L), 4), 171151); - - // gentest-3527 - assertEqual(perft(new Board(0x400000000L, 0x200000000000000L, 0x8000000000001L, 0x0L, 0x40L, 0x10000200000000L, 0x10000000000001L, 0x208000600000040L, true, 0, 0x0L), 4), 161292); - - // gentest-3528 - assertEqual(perft(new Board(0x400000000L, 0x200000000000000L, 0x100000000001L, 0x0L, 0x40L, 0x1000000200000000L, 0x1000000000000001L, 0x200100600000040L, false, 0, 0x0L), 4), 145769); - - // gentest-3529 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3530 - assertEqual(perft(new Board(0xfe010000807f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x80ff7fL, 0xfffe010000000000L, false, 0, 0x8100000000000001L), 4), 165962); - - // gentest-3531 - assertEqual(perft(new Board(0xf6010840803f00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x4080bf7fL, 0xbff6210800000000L, true, 0, 0x8100000000000001L), 4), 362982); - - // gentest-3532 - assertEqual(perft(new Board(0xf6000942883500L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x4288b57fL, 0xbff6200900000000L, false, 0, 0x8100000000000001L), 4), 803592); - - // gentest-3533 - assertEqual(perft(new Board(0xf6000942883500L, 0x240000000042L, 0x2008000000000220L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x4288b77bL, 0xb9fe240900000000L, true, 0, 0x8100000000000001L), 4), 835411); - - // gentest-3534 - assertEqual(perft(new Board(0xf600014a982500L, 0x240000000042L, 0x2008000000004200L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x4298e75bL, 0xb9fe240108000000L, false, 0, 0x8100000000000001L), 4), 1187320); - - // gentest-3535 - assertEqual(perft(new Board(0x7600814a982500L, 0x240000000042L, 0x2008000000014000L, 0x8000010000008001L, 0x800000000000008L, 0x1000000000000010L, 0x4299e55bL, 0xb87e258108000000L, true, 0, 0x8000000000000001L), 4), 1085160); - - // gentest-3536 - assertEqual(perft(new Board(0x3640814ab80500L, 0x240000000840L, 0x2008000000014000L, 0x8000010000008001L, 0x800000000000008L, 0x1000000000000010L, 0x42b9cd59L, 0xb83e658108000000L, false, 0, 0x8000000000000001L), 4), 1018012); - - // gentest-3537 - assertEqual(perft(new Board(0x3440030ab80500L, 0x48000000840L, 0x2008000000014000L, 0x8000010000008001L, 0x800000000000008L, 0x1000000000000010L, 0x2b9cd59L, 0xb83c458308000000L, true, 0, 0x8000000000000001L), 4), 772298); - - // gentest-3538 - assertEqual(perft(new Board(0x3440030eb80100L, 0x48000000840L, 0x2000100000014000L, 0x8000010000008002L, 0x800000000000008L, 0x1000000000000010L, 0x6b9c95aL, 0xb834558308000000L, false, 0, 0x8000000000000000L), 4), 1138903); - - // gentest-3539 - assertEqual(perft(new Board(0x3440030eb80100L, 0x48000000840L, 0x2000100000004200L, 0x4000010000008002L, 0x80000000008L, 0x1000000000000010L, 0x6b8cb5aL, 0x70345d8308000000L, true, 0, 0x0L), 4), 1610030); - - // gentest-3540 - assertEqual(perft(new Board(0x3440030eb80100L, 0x48000000840L, 0x2000100000014000L, 0x4100000000008002L, 0x80000000008L, 0x1000000000000020L, 0x6b9c96aL, 0x71345c8308000000L, false, 0, 0x0L), 4), 1331778); - - // gentest-3541 - assertEqual(perft(new Board(0x3440030eb80100L, 0x40020000840L, 0x2000100000014000L, 0x4100000000008002L, 0x80000000008L, 0x8000000000010L, 0x6b9c95aL, 0x613c5c0328000000L, true, 0, 0x0L), 4), 1178760); - - // gentest-3542 - assertEqual(perft(new Board(0x3440030eb80100L, 0x40020000840L, 0x2000100000014000L, 0x4100000000000082L, 0x80001000000L, 0x800000000000010L, 0x7b949d2L, 0x69345c0328000000L, false, 0, 0x0L), 4), 1220750); - - // gentest-3543 - assertEqual(perft(new Board(0x1440230db80100L, 0x40020000840L, 0x2000100000014000L, 0x4100000000000082L, 0x80000000000L, 0x800000000000010L, 0x204b949d2L, 0x69145c2129000000L, true, 0, 0x0L), 4), 803846); - - // gentest-3544 - assertEqual(perft(new Board(0x1440232da80100L, 0x40000000840L, 0x2000100000014000L, 0x4100000000000082L, 0x400000000L, 0x800000000002000L, 0x224a969c2L, 0x6914542509000000L, false, 0, 0x0L), 4), 571531); - - // gentest-3545 - assertEqual(perft(new Board(0x1440232da80100L, 0x40000000840L, 0x2000100000014000L, 0x1400000000000a0L, 0x400000000L, 0x8000000002000L, 0x224a969e0L, 0x215c542509000000L, true, 0, 0x0L), 4), 401365); - - // gentest-3546 - assertEqual(perft(new Board(0x1444212da80100L, 0x840L, 0x2000100000014000L, 0x1400000000000a0L, 0x400000000L, 0x80000000010L, 0x40024a949f0L, 0x2154582509000000L, false, 0, 0x0L), 4), 82325); - - // gentest-3547 - assertEqual(perft(new Board(0x1404612da80100L, 0x42L, 0x2000100000014000L, 0x10400000000000a0L, 0x400000000L, 0x80000000010L, 0x40024a941f2L, 0x3054186509000000L, true, 0, 0x0L), 4), 111469); - - // gentest-3548 - assertEqual(perft(new Board(0x1400612da80100L, 0x42L, 0x2000100000004200L, 0x10400000000000a0L, 0x400000000L, 0x40000001000L, 0x24a853e2L, 0x3054146509000000L, false, 0, 0x0L), 4), 366507); - - // gentest-3549 - assertEqual(perft(new Board(0x1400612da80100L, 0x42L, 0x2000100000004200L, 0x10004000000000a0L, 0x400000000L, 0x2000000000800L, 0x24a84be2L, 0x3016506509000000L, true, 0, 0x0L), 4), 600857); - - // gentest-3550 - assertEqual(perft(new Board(0x1400612da80100L, 0x40040L, 0x2008000000004200L, 0x10004000000000a0L, 0x400000000L, 0x2000000000400L, 0x24ac47e0L, 0x301e406509000000L, false, 0, 0x0L), 4), 1047997); - - // gentest-3551 - assertEqual(perft(new Board(0x1400612da80100L, 0x40040L, 0x2008000000004200L, 0x1000400000002080L, 0x400000000L, 0x800000000000400L, 0x24ac67c0L, 0x381c406509000000L, true, 0, 0x0L), 4), 563913); - - // gentest-3552 - assertEqual(perft(new Board(0x1400612da80100L, 0x200000040L, 0x2000100000004200L, 0x1000400000002080L, 0x400000000L, 0x800000000000004L, 0x224a863c4L, 0x3814506509000000L, false, 0, 0x0L), 4), 461581); - - // gentest-3553 - assertEqual(perft(new Board(0x1400610da80100L, 0x200000040L, 0x2000100000004200L, 0x1000800000002080L, 0x2000000L, 0x800000000000004L, 0x4204a863c4L, 0x381490210b000000L, true, 0, 0x0L), 4), 552853); - - // gentest-3554 - assertEqual(perft(new Board(0x1400610da80100L, 0x200000040L, 0x2000100000000220L, 0x9000000000002080L, 0x2000000L, 0x800000000000400L, 0x4204a827e0L, 0xb81410210b000000L, false, 0, 0x0L), 4), 492324); - - // gentest-3555 - assertEqual(perft(new Board(0x1400610d280100L, 0x200000040L, 0x6000000000000220L, 0x1000000080002080L, 0x2000000L, 0x800000000000400L, 0x42042827e0L, 0x781400218b000000L, true, 0, 0x0L), 4), 941483); - - // gentest-3556 - assertEqual(perft(new Board(0x1400610d290000L, 0x200000040L, 0x6000000000000220L, 0x1000000080004080L, 0x10L, 0x800000000000400L, 0x42042946e0L, 0x7814002189000010L, false, 0, 0x0L), 4), 706491); - - // gentest-3557 - assertEqual(perft(new Board(0x400710d290000L, 0x200000040L, 0x4010000000000220L, 0x1000000080400080L, 0x10L, 0x800000000000400L, 0x42046906e0L, 0x5814003189000010L, true, 0, 0x0L), 4), 764488); - - // gentest-3558 - assertEqual(perft(new Board(0x4007105290000L, 0x200000040L, 0x4000200000000021L, 0x1000000080400080L, 0x10L, 0x800000000000400L, 0x42046904e1L, 0x5804203181000010L, false, 0, 0x0L), 4), 943709); - - // gentest-3559 - assertEqual(perft(new Board(0x4007105290000L, 0x200000040L, 0x4000200000000021L, 0x10008080400000L, 0x10L, 0x800000000000400L, 0x4284690461L, 0x481420b101000010L, true, 0, 0x0L), 4), 1155917); - - // gentest-3560 - assertEqual(perft(new Board(0x400610d290000L, 0x200000040L, 0x4000200000000021L, 0x10008040000000L, 0x10L, 0x800000000000400L, 0x4244290461L, 0x481420a109000010L, false, 0, 0x0L), 4), 961461); - - // gentest-3561 - assertEqual(perft(new Board(0x400210d290000L, 0x80000000040L, 0x4000004000000001L, 0x10008040000000L, 0x20L, 0x800000000000400L, 0x80044290441L, 0x481400e109000020L, true, 0, 0x0L), 4), 733631); - - // gentest-3562 - assertEqual(perft(new Board(0x400210d290000L, 0x80000000040L, 0x4000004000040000L, 0x10008040000000L, 0x4000L, 0x800000000000008L, 0x800442d0048L, 0x481400e109004000L, false, 0, 0x0L), 4), 1060424); - - // gentest-3563 - assertEqual(perft(new Board(0x400210d290000L, 0x80000000040L, 0x4000004000040000L, 0x8040000080000000L, 0x4000L, 0x800000000000008L, 0x800842d0048L, 0xc844006109004000L, true, 0, 0x0L), 4), 1113783); - - // gentest-3564 - assertEqual(perft(new Board(0x400012d290000L, 0x80000000040L, 0x4000004002000000L, 0x8040000000000080L, 0x4000L, 0x800000000000008L, 0x800062900c8L, 0xc844004129004000L, false, 0, 0x0L), 4), 592923); - - // gentest-3565 - assertEqual(perft(new Board(0x400012d290000L, 0x80000000040L, 0x4000004002000000L, 0x40400000000080L, 0x4000L, 0x800000000000010L, 0x800062900d0L, 0x4844404129004000L, true, 0, 0x0L), 4), 472257); - - // gentest-3566 - assertEqual(perft(new Board(0x400012d290000L, 0x2000000800000L, 0x4000004002000000L, 0x40400000000080L, 0x4000L, 0x1000000000000010L, 0x2000006a90090L, 0x5044404129004000L, false, 0, 0x0L), 4), 398832); - - // gentest-3567 - assertEqual(perft(new Board(0x400002d090000L, 0x2000000800000L, 0x4000004100000000L, 0x40080000000080L, 0x200000L, 0x1000000000000010L, 0x2000104890090L, 0x5044084029200000L, true, 0, 0x0L), 4), 538646); - - // gentest-3568 - assertEqual(perft(new Board(0x2d090000L, 0x2000000800000L, 0x4004004000000000L, 0x40080000000080L, 0x0L, 0x1000000000001000L, 0x6000004891080L, 0x5040084029000000L, false, 0, 0x0L), 4), 609930); - - // gentest-3569 - assertEqual(perft(new Board(0x2d090000L, 0x2000000000040L, 0x4200800000000L, 0x40080000000080L, 0x0L, 0x1000000000001000L, 0x60000040910c0L, 0x1040280829000000L, true, 0, 0x0L), 4), 667823); - - // gentest-3570 - assertEqual(perft(new Board(0x2d090000L, 0x2000000000040L, 0x800000900000000L, 0x8040080000000000L, 0x0L, 0x1000000000001000L, 0x8002000104091040L, 0x1840080829000000L, false, 0, 0x0L), 4), 117784); - - // gentest-3571 - assertEqual(perft(new Board(0x2d090000L, 0x2000000200000L, 0x800000900000000L, 0x8000080000000040L, 0x0L, 0x10000000001000L, 0x8002000104291000L, 0x810080829000040L, true, 0, 0x0L), 4), 962307); - - // gentest-3572 - assertEqual(perft(new Board(0x29090000L, 0x2000080000000L, 0x800000104000000L, 0x8000080000000040L, 0x0L, 0x10000000002000L, 0x8002000180092000L, 0x81008002d000040L, false, 0, 0x0L), 4), 683300); - - // gentest-3573 - assertEqual(perft(new Board(0x29090000L, 0x2000080000000L, 0x800000004000000L, 0x8000100000000040L, 0x0L, 0x8000000002000L, 0x8802000080092000L, 0x810002d000040L, true, 0, 0x0L), 4), 507971); - - // gentest-3574 - assertEqual(perft(new Board(0x29090000L, 0x2000000004000L, 0x800000004000000L, 0x800010000040L, 0x0L, 0x8000000002000L, 0x802800000096000L, 0x800003d000040L, false, 0, 0x0L), 4), 487776); - - // gentest-3575 - assertEqual(perft(new Board(0x29090000L, 0x100004000L, 0x800000004000000L, 0x800000001002L, 0x0L, 0x8000000002000L, 0x800800100096000L, 0x800002d001002L, true, 0, 0x0L), 4), 52422); - - // gentest-3576 - assertEqual(perft(new Board(0x29090000L, 0x100004000L, 0x4010000000000000L, 0x800000001002L, 0x0L, 0x8000000200000L, 0x10800100294000L, 0x4008000029001002L, false, 0, 0x0L), 4), 940462); - - // gentest-3577 - assertEqual(perft(new Board(0x29090000L, 0x100004000L, 0x4000000000000000L, 0x100000001002L, 0x0L, 0x8000000200000L, 0x100100294000L, 0x4008000029001002L, true, 0, 0x0L), 4), 448358); - - // gentest-3578 - assertEqual(perft(new Board(0x29090000L, 0x100000010L, 0x4000000000000000L, 0x100000000802L, 0x0L, 0x8000010000000L, 0x100110090010L, 0x4008000029000802L, false, 0, 0x0L), 4), 301069); - - // gentest-3579 - assertEqual(perft(new Board(0x9090000L, 0x100000010L, 0x4000000000000000L, 0x1100000000800L, 0x0L, 0x8000020000000L, 0x100120090010L, 0x4009000009000800L, true, 0, 0x0L), 4), 323519); - - // gentest-3580 - assertEqual(perft(new Board(0x9090000L, 0x40000000010L, 0x4000000000000000L, 0x1080000000800L, 0x0L, 0x4000020000000L, 0xc0020090010L, 0x4005000009000800L, false, 0, 0x0L), 4), 328211); - - // gentest-3581 - assertEqual(perft(new Board(0x1090000L, 0x40000000010L, 0x20000L, 0x1000008000800L, 0x0L, 0x20020000000L, 0x40028090010L, 0x1020001020800L, true, 0, 0x0L), 4), 529960); - - // gentest-3582 - assertEqual(perft(new Board(0x1090000L, 0x400L, 0x20000L, 0x1000002000800L, 0x0L, 0x40020000000L, 0x22090400L, 0x1040001020800L, false, 0, 0x0L), 4), 305857); - - // gentest-3583 - assertEqual(perft(new Board(0x1090000L, 0x400L, 0x20000L, 0x1020000008000L, 0x0L, 0x420000000L, 0x20020090400L, 0x1000401028000L, true, 0, 0x0L), 4), 431799); - - // gentest-3584 - assertEqual(perft(new Board(0x1090000L, 0x2000000L, 0x20000L, 0x8040000008000L, 0x0L, 0x420000000L, 0x40022090000L, 0x8000401028000L, false, 0, 0x0L), 4), 32217); - - // gentest-3585 - assertEqual(perft(new Board(0x1090000L, 0x2000000L, 0x20000L, 0x1040000008000L, 0x0L, 0x200200000L, 0x40002290000L, 0x1000201028000L, true, 0, 0x0L), 4), 434677); - - // gentest-3586 - assertEqual(perft(new Board(0x9010000L, 0x2000000L, 0x400L, 0x1000000008004L, 0x0L, 0x200200000L, 0xa210004L, 0x1000201008400L, false, 0, 0x0L), 4), 351222); - - // gentest-3587 - assertEqual(perft(new Board(0x9010000L, 0x2000000L, 0x8L, 0x2000000008004L, 0x0L, 0x200400000L, 0xa410004L, 0x2000201008008L, true, 0, 0x0L), 4), 251401); - - // gentest-3588 - assertEqual(perft(new Board(0x9010000L, 0x1000000000L, 0x8L, 0x1000000008004L, 0x0L, 0x200400000L, 0x1008410004L, 0x1000201008008L, false, 0, 0x0L), 4), 375230); - - // gentest-3589 - assertEqual(perft(new Board(0x9010000L, 0x1000000000L, 0x20000L, 0x1000000000081L, 0x0L, 0x200400000L, 0x1008410001L, 0x1000201020080L, true, 0, 0x0L), 4), 448014); - - // gentest-3590 - assertEqual(perft(new Board(0x9010000L, 0x400000000L, 0x100L, 0x1000000000081L, 0x0L, 0x200400000L, 0x408410001L, 0x1000201000180L, false, 0, 0x0L), 4), 410826); - - // gentest-3591 - assertEqual(perft(new Board(0x9010000L, 0x400000000L, 0x100L, 0x1000000000003L, 0x0L, 0x120000000L, 0x428010001L, 0x1000101000102L, true, 0, 0x0L), 4), 253634); - - // gentest-3592 - assertEqual(perft(new Board(0x8010000L, 0x1000000L, 0x0L, 0x1020000000100L, 0x0L, 0x120000000L, 0x29010100L, 0x1020100000000L, false, 0, 0x0L), 4), 226016); - - // gentest-3593 - assertEqual(perft(new Board(0x8010000L, 0x1000000L, 0x0L, 0x2010000000100L, 0x0L, 0x100200000L, 0x9210100L, 0x2010100000000L, true, 0, 0x0L), 4), 228141); - - // gentest-3594 - assertEqual(perft(new Board(0x8010000L, 0x40000L, 0x0L, 0x200010000002000L, 0x0L, 0x100200000L, 0x8252000L, 0x200010100000000L, false, 0, 0x0L), 4), 281379); - - // gentest-3595 - assertEqual(perft(new Board(0x8010000L, 0x1000000L, 0x0L, 0x200000000002040L, 0x0L, 0x100200000L, 0x9212000L, 0x200000100000040L, true, 0, 0x0L), 4), 260149); - - // gentest-3596 - assertEqual(perft(new Board(0x8010000L, 0x1000000L, 0x0L, 0x2000000000840L, 0x0L, 0x120000000L, 0x29010800L, 0x2000100000040L, false, 0, 0x0L), 4), 291120); - - // gentest-3597 - assertEqual(perft(new Board(0x8010000L, 0x1000000L, 0x0L, 0x200000000080040L, 0x0L, 0x120000000L, 0x29090000L, 0x200000100000040L, true, 0, 0x0L), 4), 264438); - - // gentest-3598 - assertEqual(perft(new Board(0x8010000L, 0x200L, 0x0L, 0x200000000800040L, 0x0L, 0x20020000000L, 0x28810200L, 0x200020000000040L, false, 0, 0x0L), 4), 346341); - - // gentest-3599 - assertEqual(perft(new Board(0x8010000L, 0x200L, 0x0L, 0x4000000000800008L, 0x0L, 0x20040000000L, 0x48810200L, 0x4000020000000008L, true, 0, 0x0L), 4), 73236); - - // gentest-3600 - assertEqual(perft(new Board(0x8010000L, 0x8L, 0x0L, 0x4000000000800000L, 0x0L, 0x10000200000L, 0x8a10008L, 0x4000010000000000L, false, 0, 0x0L), 4), 124114); - } - - public static void batch9() { - // gentest-3601 - assertEqual(perft(new Board(0x8010000L, 0x8L, 0x0L, 0x800000000800000L, 0x0L, 0x1000000100000L, 0x8910008L, 0x801000000000000L, true, 0, 0x0L), 4), 109525); - - // gentest-3602 - assertEqual(perft(new Board(0x8010000L, 0x40000L, 0x0L, 0x800000000800000L, 0x0L, 0x2000010000000L, 0x18850000L, 0x802000000000000L, false, 0, 0x0L), 4), 173125); - - // gentest-3603 - assertEqual(perft(new Board(0x8010000L, 0x1000L, 0x0L, 0x400000000800000L, 0x0L, 0x100000010000000L, 0x18811000L, 0x500000000000000L, true, 0, 0x0L), 4), 142993); - - // gentest-3604 - assertEqual(perft(new Board(0x8010000L, 0x1000L, 0x0L, 0x4800000L, 0x0L, 0x100200000000000L, 0x200008811000L, 0x100000004000000L, false, 0, 0x0L), 4), 117391); - - // gentest-3605 - assertEqual(perft(new Board(0x8010000L, 0x1000L, 0x0L, 0x4000000000800000L, 0x0L, 0x120000000000000L, 0x20000008811000L, 0x4100000000000000L, true, 0, 0x0L), 4), 111974); - - // gentest-3606 - assertEqual(perft(new Board(0x8010000L, 0x20000000L, 0x0L, 0x1000000000200000L, 0x0L, 0x120000000000000L, 0x20000028210000L, 0x1100000000000000L, false, 0, 0x0L), 4), 110317); - - // gentest-3607 - assertEqual(perft(new Board(0x8010000L, 0x20000000L, 0x0L, 0x2000000000200000L, 0x0L, 0x210000000000000L, 0x10000028210000L, 0x2200000000000000L, true, 0, 0x0L), 4), 84689); - - // gentest-3608 - assertEqual(perft(new Board(0x8010000L, 0x20000000L, 0x0L, 0x20000000002000L, 0x0L, 0x200100000000000L, 0x100028012000L, 0x220000000000000L, false, 0, 0x0L), 4), 104603); - - // gentest-3609 - assertEqual(perft(new Board(0x8010000L, 0x800000L, 0x0L, 0x80000000002000L, 0x0L, 0x400100000000000L, 0x100008812000L, 0x480000000000000L, true, 0, 0x0L), 4), 110496); - - // gentest-3610 - assertEqual(perft(new Board(0x8010000L, 0x800000L, 0x0L, 0x80000020000000L, 0x0L, 0x800100000000000L, 0x100028810000L, 0x880000000000000L, false, 0, 0x0L), 4), 66062); - - // gentest-3611 - assertEqual(perft(new Board(0x8010000L, 0x800000L, 0x0L, 0x80000020000000L, 0x0L, 0x800200000000000L, 0x200028810000L, 0x880000000000000L, true, 0, 0x0L), 4), 74205); - - // gentest-3612 - assertEqual(perft(new Board(0x8010000L, 0x40L, 0x0L, 0x800020000000L, 0x0L, 0x820000000000000L, 0x20000028010040L, 0x800800000000000L, false, 0, 0x0L), 4), 75113); - - // gentest-3613 - assertEqual(perft(new Board(0x8010000L, 0x40L, 0x0L, 0x20040000000L, 0x0L, 0x820000000000000L, 0x20000048010040L, 0x800020000000000L, true, 0, 0x0L), 4), 78334); - - // gentest-3614 - assertEqual(perft(new Board(0x8010000L, 0x40L, 0x0L, 0x20000004000L, 0x0L, 0x1400000000000000L, 0x1000000008014040L, 0x400020000000000L, false, 0, 0x0L), 4), 96479); - - // gentest-3615 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3616 - assertEqual(perft(new Board(0xdf20004000bf00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4004bffdL, 0xffdf200000000000L, false, 0, 0x8100000000000081L), 4), 231308); - - // gentest-3617 - assertEqual(perft(new Board(0xdf200060009f00L, 0x220000000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x60049ffdL, 0xbfff200000000000L, true, 0, 0x8100000000000081L), 4), 292864); - - // gentest-3618 - assertEqual(perft(new Board(0xdf200060801f00L, 0x200800001000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x61801ffdL, 0xbfdfa00000000000L, false, 0, 0x8100000000000081L), 4), 219176); - - // gentest-3619 - assertEqual(perft(new Board(0xd7002860801f00L, 0x200800001000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x61803fedL, 0xbfd7802800000000L, true, 0, 0x8100000000000000L), 4), 422910); - - // gentest-3620 - assertEqual(perft(new Board(0xd7002860891600L, 0x4200000001000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x618936edL, 0xffd7002800000000L, false, 0, 0x8100000000000000L), 4), 502451); - - // gentest-3621 - assertEqual(perft(new Board(0xd300246c891200L, 0x4200000001000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000002000L, 0x658932edL, 0xffd3002408000000L, true, 0, 0x8100000000000000L), 4), 481064); - - // gentest-3622 - assertEqual(perft(new Board(0xd300242c8b1000L, 0x4200000001000040L, 0x2400000000000024L, 0x8100000000000081L, 0x80000000008L, 0x1000000000002000L, 0x20258b30edL, 0xf7d3080408000000L, false, 0, 0x8100000000000000L), 4), 664056); - - // gentest-3623 - assertEqual(perft(new Board(0xd300242e891000L, 0x4000010001000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000008L, 0x1000000000002000L, 0x20278930edL, 0xf5d3810408000000L, true, 0, 0x8100000000000000L), 4), 590210); - - // gentest-3624 - assertEqual(perft(new Board(0xd102242e891000L, 0x4000010001000040L, 0x2400000000000024L, 0x8100000000008001L, 0x800000000008L, 0x1000000000000010L, 0x202789907dL, 0xf5d1830408000000L, false, 0, 0x8100000000000000L), 4), 559570); - - // gentest-3625 - assertEqual(perft(new Board(0xd102242c891000L, 0x4000010001000040L, 0x2400000000000024L, 0x8100000000008001L, 0x80000000008L, 0x1000000000000010L, 0x242589907dL, 0xf5d10b0008000000L, true, 0, 0x8100000000000000L), 4), 808429); - - // gentest-3626 - assertEqual(perft(new Board(0xd10a002c891000L, 0x4000010000000240L, 0x2000002000000024L, 0x8100000000008001L, 0x8L, 0x1000000000000010L, 0x8002489927dL, 0xf1d1032008000000L, false, 0, 0x8100000000000000L), 4), 483893); - - // gentest-3627 - assertEqual(perft(new Board(0xd10a00ac091000L, 0x4004000000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x8L, 0x1000000000000010L, 0x800a409927dL, 0xf1d5420008000000L, true, 0, 0x8100000000000000L), 4), 502281); - - // gentest-3628 - assertEqual(perft(new Board(0xd10a04a8091000L, 0x4004000000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x1000000L, 0x20000000000010L, 0x804a1099275L, 0xe1f5420008000000L, false, 0, 0x0L), 4), 946787); - - // gentest-3629 - assertEqual(perft(new Board(0xd10804a8091000L, 0x4200000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x400L, 0x20000000000010L, 0x800a0099675L, 0xa1f5600408000000L, true, 0, 0x0L), 4), 1029013); - - // gentest-3630 - assertEqual(perft(new Board(0xd10804a0091000L, 0x210000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x8000000L, 0x20000000000010L, 0x800a8099275L, 0xa1f1610400000000L, false, 0, 0x0L), 4), 999607); - - // gentest-3631 - assertEqual(perft(new Board(0xd10804a0011000L, 0x10000000240L, 0x2000000000080024L, 0x8100000000008001L, 0x200000000000L, 0x4000000000000010L, 0x2800a0019275L, 0xe1d1010400080000L, true, 0, 0x0L), 4), 714319); - - // gentest-3632 - assertEqual(perft(new Board(0xd10804a0110000L, 0x4000000000048L, 0x2000000000080024L, 0x8100000000008001L, 0x200000000000L, 0x4000000000000010L, 0x2800a011807dL, 0xe1d5000400080000L, false, 0, 0x0L), 4), 1590549); - - // gentest-3633 - assertEqual(perft(new Board(0xd10800a4110000L, 0x4000000000048L, 0x2000000000000026L, 0x8100000000008001L, 0x8000000L, 0x4000000000000010L, 0x800a811807dL, 0xe1d5000004000002L, true, 0, 0x0L), 4), 1187993); - - // gentest-3634 - assertEqual(perft(new Board(0xd10800a4110000L, 0x4000000040040L, 0x2000000000000024L, 0x9000000000008002L, 0x8000000L, 0x4000000000000010L, 0x800a8158076L, 0xf0d5000004000000L, false, 0, 0x0L), 4), 1092785); - - // gentest-3635 - assertEqual(perft(new Board(0x904801a4110000L, 0x4000000040040L, 0x2000000000000024L, 0x9000000000008002L, 0x8000000L, 0x4000000000001000L, 0x800a8159066L, 0xf094400104000000L, true, 0, 0x0L), 4), 828709); - - // gentest-3636 - assertEqual(perft(new Board(0x804811a4110000L, 0x4000000040040L, 0x2000000000000024L, 0x9000000000008001L, 0x8000000L, 0x4000000000200000L, 0x800a8358065L, 0xf084401104000000L, false, 0, 0x0L), 4), 1245357); - - // gentest-3637 - assertEqual(perft(new Board(0x4891a4110000L, 0x4000000000048L, 0x2000000000000024L, 0x9000000000008001L, 0x8000000L, 0x4000000000200000L, 0x800a831806dL, 0xf004409104000000L, true, 0, 0x0L), 4), 1122380); - - // gentest-3638 - assertEqual(perft(new Board(0x84091a4110000L, 0x800000048L, 0x2000000000000024L, 0x9000000000008001L, 0x8000000L, 0x4000000000002000L, 0x80000a811a06dL, 0xf000409904000000L, false, 0, 0x0L), 4), 1771396); - - // gentest-3639 - assertEqual(perft(new Board(0x84091a4110000L, 0x800000048L, 0x2000000000000024L, 0x9000000000008001L, 0x800L, 0x4000000000002000L, 0x80000a011a86dL, 0xf000409904000000L, true, 0, 0x0L), 4), 1496424); - - // gentest-3640 - assertEqual(perft(new Board(0x84091a4110000L, 0x48L, 0x2000000000000820L, 0x8000100000008001L, 0x800000000L, 0x4000000000002000L, 0x80008a011a869L, 0xe000509104000000L, false, 0, 0x0L), 4), 768267); - - // gentest-3641 - assertEqual(perft(new Board(0x84091a0150000L, 0x48L, 0x10000000000820L, 0x8000100000008001L, 0x800000000L, 0x4000000000000010L, 0x80008a0118879L, 0xc010509100040000L, true, 0, 0x0L), 4), 1043995); - - // gentest-3642 - assertEqual(perft(new Board(0x84091a0150000L, 0x48L, 0x10000000000820L, 0x900000008004L, 0x80000L, 0x4000000000000010L, 0x80000a019887cL, 0x4010d09100040000L, false, 0, 0x0L), 4), 1046369); - - // gentest-3643 - assertEqual(perft(new Board(0x84091a1100800L, 0x48L, 0x10000000000020L, 0x840000008004L, 0x80000L, 0x4000000000000010L, 0x80000a118807cL, 0x4010c49100000800L, true, 0, 0x0L), 4), 184339); - - // gentest-3644 - assertEqual(perft(new Board(0x84091b1000800L, 0x48L, 0x10000000000020L, 0x8000040000008004L, 0x80000L, 0x4000000000001000L, 0x80000b108906cL, 0xc010449100000800L, false, 0, 0x0L), 4), 1597028); - - // gentest-3645 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x800000000000020L, 0x8000040000008004L, 0x80000L, 0x20000000001000L, 0xb108906cL, 0x8820449100000800L, true, 0, 0x0L), 4), 1555494); - - // gentest-3646 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x800000000000020L, 0x8000000000008404L, 0x100000L, 0x20000000002000L, 0xb110a06cL, 0x8820409100000c00L, false, 0, 0x0L), 4), 1139932); - - // gentest-3647 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x800000000000020L, 0x2000000000008404L, 0x20000L, 0x10000000002000L, 0xb102a06cL, 0x2810409100000c00L, true, 0, 0x0L), 4), 1012272); - - // gentest-3648 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x800010000000000L, 0x2400000000008004L, 0x200000000L, 0x10000000002000L, 0x102b100a04cL, 0x2c10409100000800L, false, 0, 0x0L), 4), 1027677); - - // gentest-3649 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x4010000000000L, 0x2000000000008404L, 0x20000L, 0x10000000002000L, 0x100b102a04cL, 0x2014409100000c00L, true, 0, 0x0L), 4), 1503730); - - // gentest-3650 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x4010000000000L, 0x2000000000008404L, 0x400000000L, 0x20000000002000L, 0x104b100a04cL, 0x2024409100000c00L, false, 0, 0x0L), 4), 1053994); - - // gentest-3651 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x1010000000000L, 0x2000000000008402L, 0x400000000L, 0x20000000002000L, 0x104b100a04aL, 0x2021409100000c00L, true, 0, 0x0L), 4), 704428); - - // gentest-3652 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x20040000000L, 0x2000000000008402L, 0x400000000L, 0x20000000002000L, 0x4f100a04aL, 0x2020429100000c00L, false, 0, 0x0L), 4), 740594); - - // gentest-3653 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x800000040000000L, 0x2000000000008006L, 0x10000L, 0x20000000002000L, 0xf101a04aL, 0x2820409100000804L, true, 0, 0x0L), 4), 1170976); - - // gentest-3654 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x800000000800000L, 0x2000000000008006L, 0x200L, 0x40000000002000L, 0xb180a24aL, 0x2840409100000804L, false, 0, 0x0L), 4), 978045); - - // gentest-3655 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x4000000800000L, 0x2000000000048002L, 0x2000000000000L, 0x40000000002000L, 0x20000b180a04aL, 0x2044409100040800L, true, 0, 0x0L), 4), 1272067); - - // gentest-3656 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x4100000000000L, 0x200000048002L, 0x20000L, 0x40000000002000L, 0x1000b102a04aL, 0x44609100040800L, false, 0, 0x0L), 4), 871492); - - // gentest-3657 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x820000000000000L, 0x200004008002L, 0x20000L, 0x40000000002000L, 0x200000b102a04aL, 0x840609104000800L, true, 0, 0x0L), 4), 1296496); - - // gentest-3658 - assertEqual(perft(new Board(0x4091b1000800L, 0x48L, 0x800000000000000L, 0x20000004008002L, 0x100L, 0x40000000001000L, 0xb100914aL, 0x860409104000800L, false, 0, 0x0L), 4), 1238630); - - // gentest-3659 - assertEqual(perft(new Board(0x4091b1000000L, 0x48L, 0x800000000000000L, 0x2000008008002L, 0x800L, 0x40000000001000L, 0xb100984aL, 0x842409108000000L, true, 0, 0x0L), 4), 1379001); - - // gentest-3660 - assertEqual(perft(new Board(0x4091b1000000L, 0x100040L, 0x800000000000000L, 0x2080000028000L, 0x800L, 0x40000000001000L, 0xb1129840L, 0x842489100000000L, false, 0, 0x0L), 4), 1886417); - - // gentest-3661 - assertEqual(perft(new Board(0x4091b1000000L, 0x100040L, 0x800000000000000L, 0x80002024000L, 0x800L, 0x8000000000001000L, 0xb1125840L, 0x8800489102000000L, true, 0, 0x0L), 4), 1289983); - - // gentest-3662 - assertEqual(perft(new Board(0x4091b1000000L, 0x48L, 0x4000000000L, 0x80002004000L, 0x800L, 0x8000000000001000L, 0xb3005848L, 0x800048d100000000L, false, 0, 0x0L), 4), 653017); - - // gentest-3663 - assertEqual(perft(new Board(0x4091b1000000L, 0x40040L, 0x800000000000L, 0x200002004000L, 0x800L, 0x8000000000001000L, 0xb3045840L, 0x8000e09100000000L, true, 0, 0x0L), 4), 584194); - - // gentest-3664 - assertEqual(perft(new Board(0x91b1000000L, 0x40040L, 0x800000000000L, 0x500002000000L, 0x80000000000L, 0x8000000000001000L, 0x4800b3041040L, 0x8000909100000000L, false, 0, 0x0L), 4), 347034); - - // gentest-3665 - assertEqual(perft(new Board(0x91b1000000L, 0x40040L, 0x800000000000L, 0x4010000002000000L, 0x80000000000L, 0x80000000001000L, 0x40000800b3041040L, 0x90809100000000L, true, 0, 0x0L), 4), 584804); - - // gentest-3666 - assertEqual(perft(new Board(0x91b1000000L, 0x240000L, 0x800000000000L, 0x4040000002000000L, 0x80000000000L, 0x80000000002000L, 0x40000800b3242000L, 0xc0809100000000L, false, 0, 0x0L), 4), 780875); - - // gentest-3667 - assertEqual(perft(new Board(0x90b3000000L, 0x800200000L, 0x800000000000L, 0x4002000000000000L, 0x80000000000L, 0x80000000002000L, 0x40000808b1202000L, 0x82809002000000L, true, 0, 0x0L), 4), 496846); - - // gentest-3668 - assertEqual(perft(new Board(0x9093000000L, 0x800200000L, 0x800000000000L, 0xa00000000000000L, 0x80000000000L, 0x80000000002000L, 0x800081891202000L, 0x280808002000000L, false, 0, 0x0L), 4), 317799); - - // gentest-3669 - assertEqual(perft(new Board(0x9093000000L, 0x800200000L, 0x20000000L, 0x200000000000000L, 0x80000000000L, 0x40000000002000L, 0x200081891202000L, 0x40008022000000L, true, 0, 0x0L), 4), 147602); - - // gentest-3670 - assertEqual(perft(new Board(0x9093000000L, 0x800000010L, 0x800L, 0x200000000000000L, 0x80000000000L, 0x40000000004000L, 0x200081891004010L, 0x40008002000800L, false, 0, 0x0L), 4), 174556); - - // gentest-3671 - assertEqual(perft(new Board(0x9091000000L, 0x2000010L, 0x800000000000L, 0x200000000000000L, 0x80000000000L, 0x80000000004000L, 0x200081093004010L, 0x80808000000000L, true, 0, 0x0L), 4), 124859); - - // gentest-3672 - assertEqual(perft(new Board(0x9091000000L, 0x2080000L, 0x40000000000000L, 0x2000000000000000L, 0x80000000000L, 0x80000000004000L, 0x2000081093084000L, 0xc0008000000000L, false, 0, 0x0L), 4), 80448); - - // gentest-3673 - assertEqual(perft(new Board(0x9091000000L, 0x2080000L, 0x2000000000000000L, 0x0L, 0x800000000L, 0x40000000004000L, 0x1893084000L, 0x2040008000000000L, true, 0, 0x0L), 4), 96430); - - // gentest-3674 - assertEqual(perft(new Board(0x108091000000L, 0x80100L, 0x2000000000000000L, 0x0L, 0x800000000L, 0x80000000004000L, 0x100891084100L, 0x2080008000000000L, false, 0, 0x0L), 4), 167361); - - // gentest-3675 - assertEqual(perft(new Board(0x108091000000L, 0xc0000L, 0x1000000000L, 0x0L, 0x800000000L, 0x80000000004000L, 0x1008910c4000L, 0x80009000000000L, true, 0, 0x0L), 4), 227077); - - // gentest-3676 - assertEqual(perft(new Board(0x108091000000L, 0xc0000L, 0x80000000000L, 0x0L, 0x0L, 0x80000000000040L, 0x1000910c0040L, 0x80088000000000L, false, 0, 0x0L), 4), 76844); - - // gentest-3677 - assertEqual(perft(new Board(0x108091000000L, 0x42000L, 0x10000000000000L, 0x0L, 0x0L, 0x80000000000040L, 0x100091042040L, 0x90008000000000L, true, 0, 0x0L), 4), 51783); - - // gentest-3678 - assertEqual(perft(new Board(0x108011000000L, 0x800100L, 0x80000000L, 0x0L, 0x0L, 0x80000000000040L, 0x100011800140L, 0x80008080000000L, false, 0, 0x0L), 4), 26036); - - // gentest-3679 - assertEqual(perft(new Board(0x108011000000L, 0x800100L, 0x400000L, 0x0L, 0x0L, 0x8000000000000020L, 0x100011800120L, 0x8000008000400000L, true, 0, 0x0L), 4), 28685); - - // gentest-3680 - assertEqual(perft(new Board(0x100091000000L, 0x4000000100L, 0x400000L, 0x0L, 0x0L, 0x8000000000004000L, 0x104011004100L, 0x8000000080400000L, false, 0, 0x0L), 4), 27890); - - // gentest-3681 - assertEqual(perft(new Board(0x100011800000L, 0x4000000100L, 0x0L, 0x0L, 0x0L, 0x8000000000002000L, 0x104011002100L, 0x8000000000800000L, true, 0, 0x0L), 4), 5035); - - // gentest-3682 - assertEqual(perft(new Board(0x100011800000L, 0x200100L, 0x0L, 0x0L, 0x0L, 0x40000000000020L, 0x100011200120L, 0x40000000800000L, false, 0, 0x0L), 4), 13893); - - // gentest-3683 - assertEqual(perft(new Board(0x100011800000L, 0x140L, 0x0L, 0x0L, 0x0L, 0x80000000000020L, 0x100011000160L, 0x80000000800000L, true, 0, 0x0L), 4), 6871); - - // gentest-3684 - assertEqual(perft(new Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x800000004000L, 0x100011804100L, 0x800000000000L, false, 0, 0x0L), 4), 6000); - - // gentest-3685 - assertEqual(perft(new Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x4000000000000040L, 0x100011800140L, 0x4000000000000000L, true, 0, 0x0L), 4), 3944); - - // gentest-3686 - assertEqual(perft(new Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x2000000000000040L, 0x100011800140L, 0x2000000000000000L, false, 0, 0x0L), 4), 4090); - - // gentest-3687 - assertEqual(perft(new Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x80000000000020L, 0x100011800120L, 0x80000000000000L, true, 0, 0x0L), 4), 5387); - - // gentest-3688 - assertEqual(perft(new Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x40000000000020L, 0x100011800120L, 0x40000000000000L, false, 0, 0x0L), 4), 7220); - - // gentest-3689 - assertEqual(perft(new Board(0x101001000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x80000000000020L, 0x101001800120L, 0x80000000000000L, true, 0, 0x0L), 4), 4663); - - // gentest-3690 - assertEqual(perft(new Board(0x101100000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x4000000000004000L, 0x101100804100L, 0x4000000000000000L, false, 0, 0x0L), 4), 4675); - - // gentest-3691 - assertEqual(perft(new Board(0x101100000000L, 0x140L, 0x0L, 0x0L, 0x0L, 0x4000000000004000L, 0x101100004140L, 0x4000000000000000L, true, 0, 0x0L), 4), 4229); - - // gentest-3692 - assertEqual(perft(new Board(0x101100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x40000000004000L, 0x101100084040L, 0x40000000000000L, false, 0, 0x0L), 4), 9174); - - // gentest-3693 - assertEqual(perft(new Board(0x101100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x400000008000L, 0x101100088040L, 0x400000000000L, true, 0, 0x0L), 4), 7710); - - // gentest-3694 - assertEqual(perft(new Board(0x10001100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x800000400000L, 0x10001100480040L, 0x800000000000L, false, 0, 0x0L), 4), 12802); - - // gentest-3695 - assertEqual(perft(new Board(0x10001100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x400000004000L, 0x10001100084040L, 0x400000000000L, true, 0, 0x0L), 4), 16754); - - // gentest-3696 - assertEqual(perft(new Board(0x1100000000L, 0x280000L, 0x1000000000000000L, 0x0L, 0x0L, 0x40000000004000L, 0x1000001100284000L, 0x40000000000000L, false, 0, 0x0L), 4), 14873); - - // gentest-3697 - assertEqual(perft(new Board(0x1100000000L, 0x200004L, 0x1000000000000000L, 0x0L, 0x0L, 0x80000000004000L, 0x1000001100204004L, 0x80000000000000L, true, 0, 0x0L), 4), 11627); - - // gentest-3698 - assertEqual(perft(new Board(0x1100000000L, 0x200004L, 0x40000000000L, 0x0L, 0x0L, 0x4000000000000020L, 0x41100200024L, 0x4000000000000000L, false, 0, 0x0L), 4), 16503); - - // gentest-3699 - assertEqual(perft(new Board(0x1100000000L, 0x200004L, 0x40000000000L, 0x0L, 0x0L, 0x20000000001000L, 0x41100201004L, 0x20000000000000L, true, 0, 0x0L), 4), 20975); - - // gentest-3700 - assertEqual(perft(new Board(0x100100000000L, 0x200004L, 0x40000000000L, 0x0L, 0x0L, 0x40000000000020L, 0x140100200024L, 0x40000000000000L, false, 0, 0x0L), 4), 21791); - - // gentest-3701 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3702 - assertEqual(perft(new Board(0xdf00201020cf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1020cfffL, 0xffdf002000000000L, false, 0, 0x8100000000000081L), 4), 349811); - - // gentest-3703 - assertEqual(perft(new Board(0xdf00300020cf00L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x100020cfffL, 0xbddf842000000000L, true, 0, 0x8100000000000081L), 4), 323037); - - // gentest-3704 - assertEqual(perft(new Board(0xdd023040208f00L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000001000L, 0x1000000000000010L, 0x1040209ff7L, 0xbddd862000000000L, false, 0, 0x8100000000000081L), 4), 520659); - - // gentest-3705 - assertEqual(perft(new Board(0xd5023840208f00L, 0x20040000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000001000L, 0x1000000000000010L, 0x1040249ff5L, 0xbdf5062800000000L, true, 43, 0x8100000000000081L), 4), 987048); - - // gentest-3706 - assertEqual(perft(new Board(0x95027840208f00L, 0x20040001000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800010000000000L, 0x1000000000000010L, 0x11041208ff5L, 0xbdb5066800000000L, false, 0, 0x8100000000000081L), 4), 854886); - - // gentest-3707 - assertEqual(perft(new Board(0x95027840208f00L, 0x20040001000040L, 0x400800200000004L, 0x8200000000000081L, 0x800010000000000L, 0x1000000000000010L, 0x11241208fd5L, 0x9eb5866800000000L, true, 0, 0x8000000000000081L), 4), 530115); - - // gentest-3708 - assertEqual(perft(new Board(0x95027842208d00L, 0x20040001000040L, 0x400800200000004L, 0x8100000000000081L, 0x800010000000000L, 0x1000000000000008L, 0x11243208dcdL, 0x9db5866800000000L, false, 0, 0x8000000000000000L), 4), 440500); - - // gentest-3709 - assertEqual(perft(new Board(0x95027842208d00L, 0x20000008000240L, 0x400800200000004L, 0x8100000000000081L, 0x8010000000000L, 0x1000000000000008L, 0x11242208fcdL, 0x95bd826808000000L, true, 0, 0x8000000000000000L), 4), 738958); - - // gentest-3710 - assertEqual(perft(new Board(0x95027842288500L, 0x20000008000240L, 0x400800200000004L, 0x8100000000000081L, 0x50000000000L, 0x1000000000000010L, 0x112422887d5L, 0x95b5866808000000L, false, 0, 0x8000000000000000L), 4), 743388); - - // gentest-3711 - assertEqual(perft(new Board(0x95025862288500L, 0x80008000240L, 0x400800200000800L, 0x8100000000000081L, 0x50000000000L, 0x1000000000000010L, 0x11242288fd1L, 0x95958e4828000000L, true, 0, 0x8000000000000000L), 4), 1016399); - - // gentest-3712 - assertEqual(perft(new Board(0x95025866288100L, 0x80008000240L, 0x400800200000800L, 0x8100000000000082L, 0x50000000000L, 0x800000000000010L, 0x11246288bd2L, 0x8d958e4828000000L, false, 0, 0x0L), 4), 1130632); - - // gentest-3713 - assertEqual(perft(new Board(0x95025866288100L, 0x80008000240L, 0x400800200000800L, 0x1200000000000084L, 0x50000000000L, 0x800000000000010L, 0x11246288bd4L, 0x1e958e4828000000L, true, 0, 0x0L), 4), 1157201); - - // gentest-3714 - assertEqual(perft(new Board(0x95025866288100L, 0x80200001200L, 0x400800000100000L, 0x1200000000000084L, 0x50000000000L, 0x800000000000010L, 0x11046389394L, 0x1e958e4a20000000L, false, 0, 0x0L), 4), 1638918); - - // gentest-3715 - assertEqual(perft(new Board(0x95025862298000L, 0x80200001200L, 0x400800000100000L, 0x2200000000000084L, 0x10004000000L, 0x800000000000010L, 0x11042399294L, 0x2e958a4a24000000L, true, 0, 0x0L), 4), 2302067); - - // gentest-3716 - assertEqual(perft(new Board(0x95025862298000L, 0x2200001200L, 0x400800400000000L, 0x2200000000000082L, 0x10004000000L, 0x800000000000010L, 0x11442299292L, 0x2e95826a24000000L, false, 0, 0x0L), 4), 1625561); - - // gentest-3717 - assertEqual(perft(new Board(0x95025862298000L, 0x2200001200L, 0x400800400000000L, 0x2200000000000082L, 0x100100000L, 0x800000000000010L, 0x1542299292L, 0x2e95826a20100000L, true, 0, 0x0L), 4), 923250); - - // gentest-3718 - assertEqual(perft(new Board(0x95124862298000L, 0x2200001200L, 0x400800400000000L, 0x2200000000000088L, 0x100100000L, 0x1000000000000010L, 0x100542299298L, 0x3695826a20100000L, false, 0, 0x0L), 4), 769020); - - // gentest-3719 - assertEqual(perft(new Board(0x95124862298000L, 0x2200001200L, 0x400800008000000L, 0x4200000000000088L, 0x100000800L, 0x1000000000000010L, 0x10014a299298L, 0x5695826a20000800L, true, 0, 0x0L), 4), 138537); - - // gentest-3720 - assertEqual(perft(new Board(0x95124862298000L, 0x2001041000L, 0x400800008000000L, 0x4200000000000088L, 0x100000800L, 0x1000000000000020L, 0x10014b2990a8L, 0x5695826820040800L, false, 0, 0x0L), 4), 1678867); - - // gentest-3721 - assertEqual(perft(new Board(0x95124862298000L, 0x2001440000L, 0x400800008000000L, 0x4200000000000088L, 0x100001000L, 0x1000000000000020L, 0x10014b6980a8L, 0x5695826820041000L, true, 0, 0x0L), 4), 95781); - - // gentest-3722 - assertEqual(perft(new Board(0x95124862298000L, 0x1441000L, 0x400800008000000L, 0x4200000000000088L, 0x100000000L, 0x1000000000000040L, 0x10014b2990c8L, 0x5695824820440000L, false, 0, 0x0L), 4), 1040883); - - // gentest-3723 - assertEqual(perft(new Board(0x95124842298000L, 0x221400000L, 0x440000008000000L, 0x4200000000000088L, 0x100000000L, 0x1000000000000040L, 0x10016b2980c8L, 0x56d5024a00400000L, true, 0, 0x0L), 4), 1213056); - - // gentest-3724 - assertEqual(perft(new Board(0x95104842298000L, 0x20020440000L, 0x440000008000000L, 0x4200000000000088L, 0x1000000L, 0x1000000000000040L, 0x12006b2980c8L, 0x56d5004800440000L, false, 0, 0x0L), 4), 272720); - - // gentest-3725 - assertEqual(perft(new Board(0x91104c42298000L, 0x20220400000L, 0x440000000000000L, 0x4200000000000088L, 0x1000000L, 0x1000000000000040L, 0x401200632980c8L, 0x5691004e00400000L, true, 0, 0x0L), 4), 986148); - - // gentest-3726 - assertEqual(perft(new Board(0x91104442298000L, 0x20a00001000L, 0x440000000000000L, 0x4200000000000088L, 0x1000000L, 0x1000000000004000L, 0x4012084329c088L, 0x5691004600001000L, false, 0, 0x0L), 4), 949864); - - // gentest-3727 - assertEqual(perft(new Board(0x91104442298000L, 0xa00001000L, 0x400000000000000L, 0x40020000000088L, 0x20000L, 0x1000000000004000L, 0x1008422bc088L, 0x14d1024600001000L, true, 0, 0x0L), 4), 993720); - - // gentest-3728 - assertEqual(perft(new Board(0x91104442298000L, 0x220040000L, 0x400000000000000L, 0x40020000000088L, 0x20000L, 0x1000000000002000L, 0x1000422fa088L, 0x14d1024620000000L, false, 0, 0x0L), 4), 1213503); - - // gentest-3729 - assertEqual(perft(new Board(0x90104542298000L, 0x80020040000L, 0x400000000000000L, 0x400200000000a0L, 0x20000L, 0x1000000000002000L, 0x1000422fa0a0L, 0x14d00a4520000000L, true, 0, 0x0L), 4), 1179405); - - // gentest-3730 - assertEqual(perft(new Board(0x90104143288000L, 0x80020040000L, 0x400000000000000L, 0x400200000000a0L, 0x20000L, 0x1000000000000010L, 0x1000412e80b0L, 0x14d00a4122000000L, false, 0, 0x0L), 4), 577478); - - // gentest-3731 - assertEqual(perft(new Board(0x90104143208000L, 0x80000080100L, 0x400000000000000L, 0x4200000000a0L, 0x20000L, 0x1000000000000010L, 0x1000412281b0L, 0x14904a4102080000L, true, 0, 0x0L), 4), 91337); - - // gentest-3732 - assertEqual(perft(new Board(0x1010c103208000L, 0x80000080100L, 0x400000000000000L, 0x4200000000a0L, 0x20000L, 0x1000000000001000L, 0x1080012291a0L, 0x14104a4102080000L, false, 0, 0x0L), 4), 731116); - - // gentest-3733 - assertEqual(perft(new Board(0x1010c103208000L, 0x80000080100L, 0x8000000000000L, 0x2200000000a0L, 0x400L, 0x1000000000001000L, 0x1080012095a0L, 0x10182a4102080000L, true, 0, 0x0L), 4), 1144893); - - // gentest-3734 - assertEqual(perft(new Board(0x1010c101208000L, 0x80002080000L, 0x8000000000000L, 0x22000000000a0L, 0x400000000L, 0x1000000000001000L, 0x1084032090a0L, 0x101a284100080000L, false, 0, 0x0L), 4), 1751365); - - // gentest-3735 - assertEqual(perft(new Board(0x1010c100208000L, 0x80002080000L, 0x1000000L, 0x24000000000a0L, 0x2000L, 0x1000000000001000L, 0x10800220b0a0L, 0x1012484101080000L, true, 0, 0x0L), 4), 1117314); - - // gentest-3736 - assertEqual(perft(new Board(0x1010c100208000L, 0x80002080000L, 0x8000000000000L, 0x2400000000082L, 0x100000L, 0x1000000000001000L, 0x108002309082L, 0x101a484100080000L, false, 0, 0x0L), 4), 1794836); - - // gentest-3737 - assertEqual(perft(new Board(0x1010c100208000L, 0x80002000080L, 0x8000000000000L, 0x2400000000002L, 0x10000000L, 0x1000000000001000L, 0x108012209002L, 0x101a484100000080L, true, 0, 0x0L), 4), 1203816); - - // gentest-3738 - assertEqual(perft(new Board(0x10108140208000L, 0x90000000080L, 0x8000000000000L, 0x2400000000008L, 0x10000000L, 0x1000000000001000L, 0x118010209008L, 0x101a480140000080L, false, 0, 0x0L), 4), 1439409); - - // gentest-3739 - assertEqual(perft(new Board(0x10108140208000L, 0x400010000000080L, 0x8000000000000L, 0x4400000000008L, 0x100000000000000L, 0x1000000000001000L, 0x100118000209008L, 0x141c400140000080L, true, 0, 0x0L), 4), 595207); - - // gentest-3740 - assertEqual(perft(new Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x4400000000008L, 0x100000000000000L, 0x1000000000080000L, 0x100118000280008L, 0x141c400100800080L, false, 0, 0x0L), 4), 475811); - - // gentest-3741 - assertEqual(perft(new Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x400400000008L, 0x10000000L, 0x1000000000080000L, 0x118010280008L, 0x1418400500800080L, true, 0, 0x0L), 4), 1162780); - - // gentest-3742 - assertEqual(perft(new Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x400000040008L, 0x2000000000000L, 0x1000000010000000L, 0x2118010200008L, 0x1418400100840080L, false, 0, 0x0L), 4), 934810); - - // gentest-3743 - assertEqual(perft(new Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x400000000408L, 0x2000000L, 0x2000000010000000L, 0x118012200008L, 0x2418400100800480L, true, 0, 0x0L), 4), 1954990); - - // gentest-3744 - assertEqual(perft(new Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x450L, 0x20000L, 0x2000000010000000L, 0x118010220010L, 0x24180001008004c0L, false, 0, 0x0L), 4), 1217006); - - // gentest-3745 - assertEqual(perft(new Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x102040L, 0x20000L, 0x2000000010000000L, 0x118010320000L, 0x24180001008020c0L, true, 0, 0x0L), 4), 1148886); - - // gentest-3746 - assertEqual(perft(new Board(0x10008100a00000L, 0x400010000000080L, 0x100000000000L, 0x102040L, 0x8000L, 0x2000000010000000L, 0x18010308000L, 0x24101001008020c0L, false, 0, 0x0L), 4), 901348); - - // gentest-3747 - assertEqual(perft(new Board(0x10008100a00000L, 0x400010000000080L, 0x8000000000000L, 0x12002L, 0x8000L, 0x2000000010000000L, 0x18010218000L, 0x2418000100802082L, true, 0, 0x0L), 4), 1157578); - - // gentest-3748 - assertEqual(perft(new Board(0x10008120800000L, 0x400010000000080L, 0x8000000000000L, 0x10402L, 0x8000L, 0x2000000000100000L, 0x18020118000L, 0x2418000100800482L, false, 0, 0x0L), 4), 1147337); - - // gentest-3749 - assertEqual(perft(new Board(0x10008120800000L, 0x400010000000080L, 0x8000000000000L, 0x20042L, 0x8000L, 0x2000000000100000L, 0x18020128000L, 0x24180001008000c2L, true, 0, 0x0L), 4), 1333039); - - // gentest-3750 - assertEqual(perft(new Board(0x1000a100800000L, 0x400010000000080L, 0x100000000000L, 0x20042L, 0x200000000000000L, 0x2000000000100000L, 0x20001a000120000L, 0x24101001008000c2L, false, 0, 0x0L), 4), 1039076); - - // gentest-3751 - assertEqual(perft(new Board(0x1000a100800000L, 0x400010000000080L, 0x20000000000000L, 0x2000042L, 0x200000000000000L, 0x4000000000100000L, 0x20001a002100000L, 0x44300001008000c2L, true, 0, 0x0L), 4), 1435235); - - // gentest-3752 - assertEqual(perft(new Board(0x1000a100800000L, 0x400010000000080L, 0x20000000000000L, 0x4202L, 0x200000000000000L, 0x4000000008000000L, 0x20001a008000200L, 0x4430000100804082L, false, 0, 0x0L), 4), 1378035); - - // gentest-3753 - assertEqual(perft(new Board(0x1000a100800000L, 0x400010000000080L, 0x20000L, 0xa02L, 0x2000000000000L, 0x4000000008000000L, 0x201a008000200L, 0x4410000100820882L, true, 0, 0x0L), 4), 236166); - - // gentest-3754 - assertEqual(perft(new Board(0x1000a100800000L, 0x30000000080L, 0x20000L, 0xa02L, 0x8000000000000L, 0x4000000400000000L, 0x801a400000200L, 0x4010020100820882L, false, 0, 0x0L), 4), 1129579); - - // gentest-3755 - assertEqual(perft(new Board(0x1000a100800000L, 0x30000000080L, 0x8L, 0xa02L, 0x800000000000000L, 0x80000400000000L, 0x80001a400000200L, 0x9002010080088aL, true, 0, 0x0L), 4), 901728); - - // gentest-3756 - assertEqual(perft(new Board(0x10208100800000L, 0x30000000080L, 0x8L, 0x80000000102L, 0x800000000000000L, 0x80000400000000L, 0x800218400000100L, 0x900a010080008aL, false, 0, 0x0L), 4), 753974); - - // gentest-3757 - assertEqual(perft(new Board(0x10208100800000L, 0x200000004000080L, 0x8L, 0x80000020100L, 0x800000000000000L, 0x80000400000000L, 0xa00208400000100L, 0x90080104820088L, true, 0, 0x0L), 4), 1091535); - - // gentest-3758 - assertEqual(perft(new Board(0x10208100800000L, 0x200000004000080L, 0x8L, 0x21000L, 0x80000000000L, 0x800400000000L, 0x200288400001000L, 0x10800104820088L, false, 0, 0x0L), 4), 1055956); - - // gentest-3759 - assertEqual(perft(new Board(0x288100008000L, 0x200000004000080L, 0x8L, 0x21000L, 0x0L, 0x800008000000L, 0x200208008001000L, 0x880104028088L, true, 0, 0x0L), 4), 331718); - - // gentest-3760 - assertEqual(perft(new Board(0x288100008000L, 0x200000004000080L, 0x8L, 0x1000000000800000L, 0x0L, 0x800008000000L, 0x1200208008000000L, 0x880104808088L, false, 0, 0x0L), 4), 225641); - - // gentest-3761 - assertEqual(perft(new Board(0x280100008000L, 0x200001000000080L, 0x8L, 0x400008000000000L, 0x0L, 0x800008000000L, 0x600200008000000L, 0x889100008088L, true, 0, 0x0L), 4), 208183); - - // gentest-3762 - assertEqual(perft(new Board(0x280000008000L, 0x1100000080L, 0x8L, 0x400004000000000L, 0x0L, 0x800008000000L, 0x400200108000000L, 0x885000008088L, false, 0, 0x0L), 4), 346645); - - // gentest-3763 - assertEqual(perft(new Board(0x280000008000L, 0x140000080L, 0x8L, 0x800000800000000L, 0x0L, 0x800008000000L, 0x800200108000000L, 0x880840008088L, true, 0, 0x0L), 4), 30258); - - // gentest-3764 - assertEqual(perft(new Board(0x280000008000L, 0x2000040000080L, 0x8L, 0x800001000000000L, 0x0L, 0x800000040000L, 0x802200000040000L, 0x881040008088L, false, 0, 0x0L), 4), 257021); - - // gentest-3765 - assertEqual(perft(new Board(0x280000008000L, 0x2000040000080L, 0x8L, 0x400000000010000L, 0x0L, 0x800000040000L, 0x402200000040000L, 0x880040018088L, true, 0, 0x0L), 4), 81361); - - // gentest-3766 - assertEqual(perft(new Board(0x280000008000L, 0x2000040000080L, 0x200000L, 0x8000000000010000L, 0x0L, 0x800002000000L, 0x8002200002000000L, 0x880040218080L, false, 0, 0x0L), 4), 21542); - - // gentest-3767 - assertEqual(perft(new Board(0x280000008000L, 0x2000040000080L, 0x200000L, 0x810000L, 0x0L, 0x22000000L, 0x2200002800000L, 0x80060218080L, true, 0, 0x0L), 4), 229325); - - // gentest-3768 - assertEqual(perft(new Board(0x280000008000L, 0x2000040000080L, 0x800000000L, 0x80000000L, 0x0L, 0x20010000L, 0x2200080010000L, 0x80860008080L, false, 0, 0x0L), 4), 113174); - - // gentest-3769 - assertEqual(perft(new Board(0x280000008000L, 0x2000040000080L, 0x200000000L, 0x800000000000L, 0x0L, 0x20010000L, 0x2a00000010000L, 0x80260008080L, true, 0, 0x0L), 4), 151261); - - // gentest-3770 - assertEqual(perft(new Board(0x280000008000L, 0x800000040400000L, 0x200000000L, 0x800000000000L, 0x0L, 0x20000200L, 0x800a00000000200L, 0x80260408000L, false, 0, 0x0L), 4), 323052); - - // gentest-3771 - assertEqual(perft(new Board(0x280000000000L, 0x800000040400000L, 0x8000000000000L, 0x800000L, 0x80L, 0x20000200L, 0x800200000800200L, 0x8080060400080L, true, 0, 0x0L), 4), 430197); - - // gentest-3772 - assertEqual(perft(new Board(0x280000000000L, 0x800000040000000L, 0x8000000000000L, 0x400000L, 0x4L, 0x20000100L, 0x800200000400100L, 0x8080060000004L, false, 0, 0x0L), 4), 243503); - - // gentest-3773 - assertEqual(perft(new Board(0x280000000000L, 0x40040000000L, 0x200000000L, 0x400000L, 0x400000000L, 0x20000100L, 0x240000400100L, 0x80660000000L, true, 0, 0x0L), 4), 470114); - - // gentest-3774 - assertEqual(perft(new Board(0x20080000000000L, 0x10000040000000L, 0x200000000L, 0x400000L, 0x2000000000L, 0x20000100L, 0x30000000400100L, 0x82260000000L, false, 0, 0x0L), 4), 469441); - - // gentest-3775 - assertEqual(perft(new Board(0x80000000000L, 0x2010000000002000L, 0x80000L, 0x400000L, 0x2000000000L, 0x20000100L, 0x2010000000400100L, 0x82020082000L, true, 0, 0x0L), 4), 397280); - - // gentest-3776 - assertEqual(perft(new Board(0x80000000000L, 0x2000040000002000L, 0x4000000L, 0x400000L, 0x2000000000L, 0x20010000L, 0x2000040000410000L, 0x82024002000L, false, 0, 0x0L), 4), 782830); - - // gentest-3777 - assertEqual(perft(new Board(0x80000000000L, 0x2000040000002000L, 0x10000000000L, 0x400000L, 0x100000000L, 0x20000200L, 0x2000040000400200L, 0x90120002000L, true, 0, 0x0L), 4), 596047); - - // gentest-3778 - assertEqual(perft(new Board(0x80000000000L, 0x80040000000008L, 0x10000000000L, 0x400000L, 0x100000000L, 0x20000004L, 0x80040000400004L, 0x90120000008L, false, 0, 0x0L), 4), 500342); - - // gentest-3779 - assertEqual(perft(new Board(0x80000000000L, 0x80040000000008L, 0x4000000L, 0x100000L, 0x100000000000000L, 0x20000004L, 0x80040000100004L, 0x100080024000008L, true, 0, 0x0L), 4), 737053); - - // gentest-3780 - assertEqual(perft(new Board(0x80000000000L, 0x1200000000008L, 0x4000000L, 0x100000L, 0x0L, 0x20000004L, 0x1200000100004L, 0x80024000008L, false, 0, 0x0L), 4), 196105); - - // gentest-3781 - assertEqual(perft(new Board(0x80000000000L, 0x4001000000000008L, 0x4000000L, 0x100000L, 0x0L, 0x20000004L, 0x4001000000100004L, 0x80024000008L, true, 0, 0x0L), 4), 170699); - - // gentest-3782 - assertEqual(perft(new Board(0x80000000000L, 0x4001000000000008L, 0x80000L, 0x10L, 0x0L, 0x20000800L, 0x4001000000000810L, 0x80020080008L, false, 0, 0x0L), 4), 155491); - - // gentest-3783 - assertEqual(perft(new Board(0x80000000000L, 0x4000040000000008L, 0x2000000000L, 0x10L, 0x0L, 0x20000800L, 0x4000040000000810L, 0x82020000008L, true, 0, 0x0L), 4), 186986); - - // gentest-3784 - assertEqual(perft(new Board(0x80000000000L, 0x4000000008000000L, 0x400000000000000L, 0x8L, 0x0L, 0x20000800L, 0x4000000008000808L, 0x400080020000000L, false, 0, 0x0L), 4), 98343); - - // gentest-3785 - assertEqual(perft(new Board(0x80000000000L, 0x10000008000000L, 0x100000000000L, 0x8L, 0x0L, 0x20000800L, 0x10000008000808L, 0x180020000000L, true, 0, 0x0L), 4), 141484); - - // gentest-3786 - assertEqual(perft(new Board(0x80000000000L, 0x40000200000L, 0x20000L, 0x8L, 0x0L, 0x20000800L, 0x40000200808L, 0x80020020000L, false, 0, 0x0L), 4), 141447); - - // gentest-3787 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3788 - assertEqual(perft(new Board(0xff00000010ef00L, 0x200800000000042L, 0x2400000200000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20010efdfL, 0xbfff800000000000L, false, 0, 0x8100000000000081L), 4), 367804); - - // gentest-3789 - assertEqual(perft(new Board(0xff00000810e700L, 0x40040000042L, 0x2400000200000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20810e7dfL, 0xbdff040040000000L, true, 0, 0x8100000000000081L), 4), 823395); - - // gentest-3790 - assertEqual(perft(new Board(0xff00002810c700L, 0x200000040000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2810c7ffL, 0xbfff000040000000L, false, 0, 0x8100000000000081L), 4), 656227); - - // gentest-3791 - assertEqual(perft(new Board(0xfb04002810c700L, 0x200000040000042L, 0x2400010000000004L, 0x4100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1002810c7dfL, 0x7ffb040040000000L, true, 0, 0x100000000000081L), 4), 708304); - - // gentest-3792 - assertEqual(perft(new Board(0xf304082c11c200L, 0x200000040000042L, 0x2400010000000004L, 0x4100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1002c11c2dfL, 0x7ff3040840000000L, false, 0, 0x100000000000081L), 4), 897464); - - // gentest-3793 - assertEqual(perft(new Board(0x73008c2c11c200L, 0x200000040000042L, 0x2400010000000004L, 0x4100000000000081L, 0x800000000000008L, 0x1000000000001000L, 0x1002c11d2cfL, 0x7f73008c40000000L, true, 0, 0x100000000000000L), 4), 840917); - - // gentest-3794 - assertEqual(perft(new Board(0x71008c2c11c200L, 0x200000040000042L, 0x2402000000000004L, 0x4100000000000180L, 0x20000000008L, 0x1000000000001000L, 0x200002c11d3ceL, 0x7771028c40000000L, false, 0, 0x100000000000000L), 4), 1658614); - - // gentest-3795 - assertEqual(perft(new Board(0x71008c2c11c200L, 0x200000040040040L, 0x2002000000000004L, 0x4100000000000180L, 0x40000000008L, 0x1000000000001000L, 0x2c15d3ccL, 0x7373048c40000000L, true, 0, 0x100000000000000L), 4), 1232286); - - // gentest-3796 - assertEqual(perft(new Board(0x7100842c114200L, 0x200020000008040L, 0x2002000000000004L, 0x4100000000000180L, 0x40000000008L, 0x1000000000001000L, 0x2002c1153ccL, 0x7373048400008000L, false, 0, 0x100000000000000L), 4), 1051159); - - // gentest-3797 - assertEqual(perft(new Board(0x3140842c114200L, 0x200020000008040L, 0x2002000000000004L, 0x4100000000000180L, 0x200020000L, 0x1000000000001000L, 0x2002c1353c4L, 0x7333408600008000L, true, 0, 0x100000000000000L), 4), 1092321); - - // gentest-3798 - assertEqual(perft(new Board(0x31408c24114200L, 0x200020000008040L, 0x42000000000004L, 0x4100000000000180L, 0x200000008L, 0x1000000000001000L, 0x208241153ccL, 0x5373408600008000L, false, 0, 0x100000000000000L), 4), 1400907); - - // gentest-3799 - assertEqual(perft(new Board(0x31408e20114200L, 0x200020000008040L, 0x2800000000004L, 0x4100000000000180L, 0x8L, 0x2000000000001000L, 0x20a201153ccL, 0x6333c08400008000L, true, 0, 0x0L), 4), 691603); - - // gentest-3800 - assertEqual(perft(new Board(0x30408f20114200L, 0x200020000008040L, 0x2800000000004L, 0x4100000000000180L, 0x800L, 0x2000000000000010L, 0x20a20114bd4L, 0x6332c08500008000L, false, 0, 0x0L), 4), 698466); - - // gentest-3801 - assertEqual(perft(new Board(0x10608f20114200L, 0x200020000008040L, 0x2800000000004L, 0x8100000000000180L, 0x40000L, 0x2000000000000010L, 0x20a201543d4L, 0xa312e08500008000L, true, 0, 0x0L), 4), 854162); - - // gentest-3802 - assertEqual(perft(new Board(0x10600fa0114200L, 0x200020000008040L, 0x2800000000004L, 0x8100000000000180L, 0x2000000000L, 0x2000000000000010L, 0x22a201143d4L, 0xa312e00580008000L, false, 0, 0x0L), 4), 921888); - - // gentest-3803 - assertEqual(perft(new Board(0x10600fa0114200L, 0x60000208000L, 0x2800000000004L, 0x8100000000000180L, 0x2000000000L, 0x4000000000000010L, 0x22a20314394L, 0xc112e40580008000L, true, 0, 0x0L), 4), 1759436); - - // gentest-3804 - assertEqual(perft(new Board(0x10600fa2114000L, 0x60000208000L, 0x2002000000000004L, 0x8100000000000180L, 0x800000L, 0x4000000000000010L, 0x20a22b14194L, 0xe112640580008000L, false, 0, 0x0L), 4), 1897192); - - // gentest-3805 - assertEqual(perft(new Board(0x10402fa2114000L, 0x60000208000L, 0x2002000000000004L, 0x100008000000140L, 0x800000L, 0x4000000000000010L, 0x20a22b14154L, 0x611244a580008000L, true, 0, 0x0L), 4), 1620287); - - // gentest-3806 - assertEqual(perft(new Board(0x10402fa2114000L, 0x400040000208000L, 0x2002000000000004L, 0x180000000000140L, 0x800000L, 0x4000000000002000L, 0x400000a22b16144L, 0x6192442580008000L, false, 0, 0x0L), 4), 1376728); - - // gentest-3807 - assertEqual(perft(new Board(0x10402fa2114000L, 0x401000008008000L, 0x2002000000000004L, 0x180000000000140L, 0x800000L, 0x40000000002000L, 0x400000a2a916144L, 0x21d3402580008000L, true, 0, 0x0L), 4), 1034598); - - // gentest-3808 - assertEqual(perft(new Board(0x403fa2114000L, 0x11000008008000L, 0x2002000000000004L, 0x180000000000041L, 0x800000L, 0x40000000002000L, 0x10000a2a916045L, 0x21c3403580008000L, false, 0, 0x0L), 4), 1165579); - - // gentest-3809 - assertEqual(perft(new Board(0x403fa2114000L, 0x1040008008000L, 0x10010000000004L, 0x180000000000041L, 0x800000L, 0x40000000002000L, 0x40a2a916045L, 0x1d1413580008000L, true, 0, 0x0L), 4), 1811444); - - // gentest-3810 - assertEqual(perft(new Board(0x402bab104000L, 0x1001000008000L, 0x10010000000004L, 0x180000000000041L, 0x800000L, 0x40000000002000L, 0x1a23906045L, 0x1d1412188008000L, false, 0, 0x0L), 4), 1277983); - - // gentest-3811 - assertEqual(perft(new Board(0x4029ab104000L, 0x1000004008000L, 0x10000200000004L, 0x480000000000041L, 0x800000L, 0x40000000002000L, 0x827906045L, 0x4d1402388008000L, true, 0, 0x0L), 4), 1653997); - - // gentest-3812 - assertEqual(perft(new Board(0x4029ab104000L, 0x1000000008000L, 0x10000004010000L, 0x480000000000041L, 0x400000L, 0x40000000002000L, 0x823516041L, 0x4d140218c008000L, false, 0, 0x0L), 4), 1244067); - - // gentest-3813 - assertEqual(perft(new Board(0x402ba9104000L, 0x1000000008000L, 0x10000004010000L, 0x400008000000041L, 0x400000L, 0x200000002000L, 0xa21516041L, 0x41160a18c008000L, true, 0, 0x0L), 4), 964091); - - // gentest-3814 - assertEqual(perft(new Board(0x402ba1184000L, 0x1000000008000L, 0x10000004010000L, 0x400008000000048L, 0x400000L, 0x200000000010L, 0xa21514058L, 0x41160a184088000L, false, 0, 0x0L), 4), 597538); - - // gentest-3815 - assertEqual(perft(new Board(0x4823a1184000L, 0x1000000008000L, 0x4010000L, 0x800008000000048L, 0x400000L, 0x200000000010L, 0x80221504058L, 0x80160a184098000L, true, 0, 0x0L), 4), 445102); - - // gentest-3816 - assertEqual(perft(new Board(0x4823a1104000L, 0x1000000000000L, 0x4000004L, 0x800008000080040L, 0x8000L, 0x200000000010L, 0x8022118c050L, 0x80160a184000004L, false, 0, 0x0L), 4), 502014); - - // gentest-3817 - assertEqual(perft(new Board(0x4823e1100000L, 0x1000000000000L, 0x4000004L, 0x280000000080040L, 0x8000L, 0x200000000010L, 0x80261188050L, 0x281602184000004L, true, 0, 0x0L), 4), 1180284); - - // gentest-3818 - assertEqual(perft(new Board(0x4823e1100000L, 0x1000000000000L, 0x4010000L, 0x280000000000840L, 0x2000L, 0x200000000010L, 0x80261102850L, 0x281602184010000L, false, 0, 0x0L), 4), 1118370); - - // gentest-3819 - assertEqual(perft(new Board(0x863e1100000L, 0x1000000000000L, 0x4010000L, 0x180000000000820L, 0x2000L, 0x200000000010L, 0x80261102830L, 0x181206184010000L, true, 0, 0x0L), 4), 897945); - - // gentest-3820 - assertEqual(perft(new Board(0x86361100000L, 0x1000000000000L, 0x20000000010000L, 0x180000008000020L, 0x80000000L, 0x200000000010L, 0x802e9100030L, 0x1a1206100010000L, false, 0, 0x0L), 4), 873463); - - // gentest-3821 - assertEqual(perft(new Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x480000010000020L, 0x80000000L, 0x200000000010L, 0x802f1100030L, 0x4a0246100010000L, true, 0, 0x0L), 4), 975485); - - // gentest-3822 - assertEqual(perft(new Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x400008010200000L, 0x80L, 0x200000000010L, 0x80271300090L, 0x42024e100010000L, false, 0, 0x0L), 4), 1107635); - - // gentest-3823 - assertEqual(perft(new Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x8200000008200000L, 0x80L, 0x200000000010L, 0x80269300090L, 0x8220246100010000L, true, 0, 0x0L), 4), 1582632); - - // gentest-3824 - assertEqual(perft(new Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x8200000008200000L, 0x80000000L, 0x40000000002000L, 0x802e9302000L, 0x8260046100010000L, false, 0, 0x0L), 4), 1445231); - - // gentest-3825 - assertEqual(perft(new Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x4000800008200000L, 0x0L, 0x40000000002000L, 0x80269302000L, 0x4060846100010000L, true, 0, 0x0L), 4), 828013); - - // gentest-3826 - assertEqual(perft(new Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x800800000280000L, 0x0L, 0x40000000400000L, 0x80261780000L, 0x860846100010000L, false, 0, 0x0L), 4), 661557); - - // gentest-3827 - assertEqual(perft(new Board(0x8006361100000L, 0x40000000000L, 0x20000000010000L, 0x400800000280000L, 0x0L, 0x4000000000400000L, 0x8000261780000L, 0x4420846100010000L, true, 0, 0x0L), 4), 871867); - - // gentest-3828 - assertEqual(perft(new Board(0x6361100000L, 0x40000000000L, 0x420000000000004L, 0x800000240000L, 0x0L, 0x4000000000400000L, 0x400000261740000L, 0x4020846100000004L, false, 0, 0x0L), 4), 583848); - - // gentest-3829 - assertEqual(perft(new Board(0x2361100000L, 0x800000000000000L, 0x420000000000004L, 0x800000240000L, 0x0L, 0x4000000000002000L, 0x400000241342000L, 0x4820802120000004L, true, 0, 0x0L), 4), 732044); - - // gentest-3830 - assertEqual(perft(new Board(0x361100000L, 0x800000000000000L, 0x20002000000004L, 0x220080L, 0x0L, 0x4000000000002000L, 0x2241322000L, 0x4820000120000084L, false, 0, 0x0L), 4), 389679); - - // gentest-3831 - assertEqual(perft(new Board(0x361100000L, 0x80000000000L, 0x20002000000004L, 0x220080L, 0x0L, 0x4000000000004000L, 0x2241324000L, 0x4020080120000084L, true, 0, 0x0L), 4), 597917); - - // gentest-3832 - assertEqual(perft(new Board(0x361100000L, 0x80000000000L, 0x20000000000404L, 0x80000000220000L, 0x0L, 0x4000000000002000L, 0x241322400L, 0x40a0080120000004L, false, 0, 0x0L), 4), 471638); - - // gentest-3833 - assertEqual(perft(new Board(0x361100000L, 0x80000000000L, 0xa0000000000004L, 0xa20000L, 0x0L, 0x8000000000002000L, 0x80000241322000L, 0x8020080120800004L, true, 0, 0x0L), 4), 477524); - - // gentest-3834 - assertEqual(perft(new Board(0x371000000L, 0x4000000L, 0xa0000000000004L, 0xa20000L, 0x0L, 0x8000000000001000L, 0x80000251221000L, 0x8020000124800004L, false, 0, 0x0L), 4), 406096); - - // gentest-3835 - assertEqual(perft(new Board(0x371000000L, 0x800L, 0x20002000000004L, 0x800000220000L, 0x0L, 0x8000000000001000L, 0x2251221000L, 0x8020800120000804L, true, 0, 0x0L), 4), 591447); - - // gentest-3836 - assertEqual(perft(new Board(0x24131000000L, 0x800L, 0x20002000000004L, 0xa20000L, 0x0L, 0x8000000000001000L, 0x26011221000L, 0x8020000120800804L, false, 0, 0x0L), 4), 455545); - - // gentest-3837 - assertEqual(perft(new Board(0x24131000000L, 0x800L, 0x20400000000004L, 0xa00000L, 0x0L, 0x8000000000001000L, 0x424011201000L, 0x8020000120800804L, true, 0, 0x0L), 4), 245831); - - // gentest-3838 - assertEqual(perft(new Board(0x24131000000L, 0x800L, 0x20400000000004L, 0x800000L, 0x0L, 0x4000000000000010L, 0x424011800010L, 0x4020000120000804L, false, 0, 0x0L), 4), 139590); - - // gentest-3839 - assertEqual(perft(new Board(0x24131000000L, 0x8000L, 0x20400000000004L, 0x400000L, 0x0L, 0x4000000000000010L, 0x424011400010L, 0x4020000120008004L, true, 0, 0x0L), 4), 104542); - - // gentest-3840 - assertEqual(perft(new Board(0x24131000000L, 0x8000L, 0x20400000000004L, 0x20L, 0x0L, 0x40000000000010L, 0x424011000030L, 0x60000120008004L, false, 0, 0x0L), 4), 75097); - - // gentest-3841 - assertEqual(perft(new Board(0x24131000000L, 0x8000L, 0x400800100000L, 0x200000L, 0x0L, 0x40000000000010L, 0x424011200010L, 0x40000920108000L, true, 0, 0x0L), 4), 134218); - - // gentest-3842 - assertEqual(perft(new Board(0x24131000000L, 0x8000L, 0x400800000004L, 0x800000L, 0x0L, 0x40000000001000L, 0x424011801000L, 0x40000920008004L, false, 0, 0x0L), 4), 184344); - - // gentest-3843 - assertEqual(perft(new Board(0x24131000000L, 0x8000L, 0x400800000004L, 0x800000000000L, 0x0L, 0x40000000001000L, 0xc24011001000L, 0x40000920008004L, true, 0, 0x0L), 4), 118499); - - // gentest-3844 - assertEqual(perft(new Board(0x24131000000L, 0x40000000L, 0x400800000004L, 0x80000000000000L, 0x0L, 0x40000000001000L, 0x80424011001000L, 0x40000960000004L, false, 0, 0x0L), 4), 29787); - - // gentest-3845 - assertEqual(perft(new Board(0x24131000000L, 0x40000000L, 0x8800000200L, 0x80000000000000L, 0x0L, 0x4000000000001000L, 0x8002c011001000L, 0x4000000960000200L, true, 0, 0x0L), 4), 238423); - - // gentest-3846 - assertEqual(perft(new Board(0x24131000000L, 0x0L, 0x100100000000200L, 0x80000000000000L, 0x0L, 0x4000000000001000L, 0x80124011001000L, 0x4100000120000200L, false, 0, 0x0L), 4), 20306); - - // gentest-3847 - assertEqual(perft(new Board(0x24111200000L, 0x0L, 0x100100000000200L, 0x4000000000000L, 0x0L, 0x2000000000001000L, 0x4124011001000L, 0x2100000100200200L, true, 0, 0x0L), 4), 51500); - - // gentest-3848 - assertEqual(perft(new Board(0x24111200000L, 0x0L, 0x100100008000000L, 0x40000000000000L, 0x0L, 0x2000000000000800L, 0x40124011000800L, 0x2100000108200000L, false, 0, 0x0L), 4), 157818); - - // gentest-3849 - assertEqual(perft(new Board(0x24111002000L, 0x0L, 0x100003000000000L, 0x40000000000000L, 0x0L, 0x2000000000000800L, 0x40026011000800L, 0x2100001100002000L, true, 0, 0x0L), 4), 202676); - - // gentest-3850 - assertEqual(perft(new Board(0x24111002000L, 0x0L, 0x180000020000000L, 0x40000000000000L, 0x0L, 0x2000000000000400L, 0xc0024011000400L, 0x2100000120002000L, false, 0, 0x0L), 4), 123897); - - // gentest-3851 - assertEqual(perft(new Board(0x24111002000L, 0x0L, 0x180000000008000L, 0x10000000000000L, 0x0L, 0x2000000000000400L, 0x90024011000400L, 0x210000010000a000L, true, 0, 0x0L), 4), 117546); - - // gentest-3852 - assertEqual(perft(new Board(0x24111002000L, 0x0L, 0x180000000400000L, 0x10000000000000L, 0x0L, 0x2000000000000200L, 0x90024011000200L, 0x2100000100402000L, false, 0, 0x0L), 4), 116270); - - // gentest-3853 - assertEqual(perft(new Board(0x24101002000L, 0x0L, 0x280000000000000L, 0x10000000L, 0x0L, 0x2000000000000200L, 0x80024011000200L, 0x2200000100002000L, true, 0, 0x0L), 4), 121936); - - // gentest-3854 - assertEqual(perft(new Board(0x24101002000L, 0x0L, 0x280000000000000L, 0x10000000L, 0x0L, 0x40000000000200L, 0x80024011000200L, 0x240000100002000L, false, 0, 0x0L), 4), 131276); - - // gentest-3855 - assertEqual(perft(new Board(0x24101002000L, 0x0L, 0x80000000400000L, 0x2000000L, 0x0L, 0x40000000000200L, 0x80024003000200L, 0x40000100402000L, true, 0, 0x0L), 4), 150968); - - // gentest-3856 - assertEqual(perft(new Board(0x24101002000L, 0x0L, 0x2000400000L, 0x8000000L, 0x0L, 0x2000000000000200L, 0x26009000200L, 0x2000000100402000L, false, 0, 0x0L), 4), 243766); - - // gentest-3857 - assertEqual(perft(new Board(0x24101000000L, 0x0L, 0x2000400000L, 0x820000000L, 0x0L, 0x2000000000000200L, 0x26801000200L, 0x2000000120400000L, true, 0, 0x0L), 4), 349266); - - // gentest-3858 - assertEqual(perft(new Board(0x24101000000L, 0x0L, 0x2000400000L, 0x20080000L, 0x0L, 0x4000000000000200L, 0x26001080200L, 0x4000000120400000L, false, 0, 0x0L), 4), 271425); - - // gentest-3859 - assertEqual(perft(new Board(0x24100000000L, 0x0L, 0x2000400000L, 0x1040000L, 0x0L, 0x4000000000000200L, 0x26000040200L, 0x4000000101400000L, true, 0, 0x0L), 4), 322882); - - // gentest-3860 - assertEqual(perft(new Board(0x24100000000L, 0x0L, 0x100000000000L, 0x10400000L, 0x0L, 0x4000000000000200L, 0x124000400200L, 0x4000000110000000L, false, 0, 0x0L), 4), 56072); - - // gentest-3861 - assertEqual(perft(new Board(0x24100000000L, 0x0L, 0x100000000000L, 0x80020000L, 0x0L, 0x2000000000000200L, 0x124000020200L, 0x2000000180000000L, true, 0, 0x0L), 4), 189295); - - // gentest-3862 - assertEqual(perft(new Board(0x24100000000L, 0x0L, 0x800000000L, 0x220000000L, 0x0L, 0x2000000000000200L, 0x24a00000200L, 0x2000000120000000L, false, 0, 0x0L), 4), 153935); - - // gentest-3863 - assertEqual(perft(new Board(0x24100000000L, 0x0L, 0x4000L, 0x200000008L, 0x0L, 0x2000000000000200L, 0x24200004200L, 0x2000000100000008L, true, 0, 0x0L), 4), 167237); - - // gentest-3864 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x4000L, 0x80200000000L, 0x0L, 0x2000000000010000L, 0x420200014000L, 0x2000080100000000L, false, 0, 0x0L), 4), 152843); - - // gentest-3865 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x10000000L, 0x40200000000L, 0x0L, 0x10000000010000L, 0x420210010000L, 0x10040100000000L, true, 0, 0x0L), 4), 197740); - - // gentest-3866 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x10000000L, 0x40200000000L, 0x0L, 0x2000000000010000L, 0x420210010000L, 0x2000040100000000L, false, 0, 0x0L), 4), 166295); - - // gentest-3867 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x800000000L, 0x200200000000L, 0x0L, 0x40000000010000L, 0x420a00010000L, 0x40200100000000L, true, 0, 0x0L), 4), 160515); - - // gentest-3868 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x100000000000000L, 0x200002000L, 0x0L, 0x40000000020000L, 0x100420200020000L, 0x40000100002000L, false, 0, 0x0L), 4), 150329); - - // gentest-3869 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x100000000000000L, 0x2200000000L, 0x0L, 0x40000000040000L, 0x100420200040000L, 0x40002100000000L, true, 0, 0x0L), 4), 179513); - - // gentest-3870 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x100000000000000L, 0x2000000002L, 0x0L, 0x2000000000040000L, 0x100420000040002L, 0x2000002100000000L, false, 0, 0x0L), 4), 155485); - - // gentest-3871 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x4000L, 0x2000000002L, 0x0L, 0x8000000000040000L, 0x420000044002L, 0x8000002100000000L, true, 0, 0x0L), 4), 157724); - - // gentest-3872 - assertEqual(perft(new Board(0x420100000000L, 0x0L, 0x4000L, 0x2000000010L, 0x0L, 0x4000000000040000L, 0x420000044010L, 0x4000002100000000L, false, 0, 0x0L), 4), 190611); - - // gentest-3873 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3874 - assertEqual(perft(new Board(0xff00000804f300L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x804f3ffL, 0xfdff040000000000L, false, 0, 0x8100000000000081L), 4), 459575); - - // gentest-3875 - assertEqual(perft(new Board(0xbf00402004d300L, 0x4000000008000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2004d3ffL, 0xfdbf004008000000L, true, 0, 0x8100000000000081L), 4), 619095); - - // gentest-3876 - assertEqual(perft(new Board(0x3f00c020845300L, 0x4000000008000840L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20845bfdL, 0xfd3f00c008000000L, false, 0, 0x8100000000000081L), 4), 547442); - - // gentest-3877 - assertEqual(perft(new Board(0x3d02c020845300L, 0x4000000200000840L, 0x2400000000000024L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x2084db7dL, 0xfd3d02c200000000L, true, 0, 0x8100000000000001L), 4), 468434); - - // gentest-3878 - assertEqual(perft(new Board(0x3502c830844300L, 0x4000000200000840L, 0x2400000000000024L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000002000L, 0x3084eb6dL, 0xfd3502ca00000000L, false, 0, 0x8100000000000000L), 4), 1484216); - - // gentest-3879 - assertEqual(perft(new Board(0x3106e010844300L, 0x4000000200000840L, 0x2400000000000024L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000002000L, 0x200084eb6dL, 0xfd3106c210000000L, true, 0, 0x8100000000000000L), 4), 1281678); - - // gentest-3880 - assertEqual(perft(new Board(0x3126c000844300L, 0x4000000210000040L, 0x2400000000000024L, 0x8100000000008001L, 0x80008L, 0x1000000000002000L, 0x20001084e36dL, 0xf53106c200080000L, false, 0, 0x8100000000000000L), 4), 2071968); - - // gentest-3881 - assertEqual(perft(new Board(0x3126c000844300L, 0x4000000210000040L, 0x40000040000024L, 0x8100000000008001L, 0x280000L, 0x1000000000002000L, 0x200010a4e365L, 0xd17106c240080000L, true, 0, 0x8100000000000000L), 4), 2191094); - - // gentest-3882 - assertEqual(perft(new Board(0x31268000844300L, 0x4000000200200040L, 0x40000040000024L, 0x8100000000008001L, 0x0L, 0x1000000000002000L, 0x200000a4e365L, 0xd171068240000000L, false, 0, 0x8100000000000000L), 4), 1037624); - - // gentest-3883 - assertEqual(perft(new Board(0x21368000844300L, 0x4000000200200040L, 0x800044000004L, 0x8100000000008001L, 0x0L, 0x1000000000002000L, 0x200004a4e345L, 0xd121968240000000L, true, 0, 0x8100000000000000L), 4), 893505); - - // gentest-3884 - assertEqual(perft(new Board(0x21368000844300L, 0x4000000200000840L, 0x800040020004L, 0x8800000000008001L, 0x0L, 0x400000000002000L, 0x20000086eb45L, 0xcc21968240000000L, false, 0, 0x0L), 4), 727605); - - // gentest-3885 - assertEqual(perft(new Board(0x21368000c40300L, 0x4000000200000840L, 0x80000002000cL, 0x8000000000088001L, 0x0L, 0x400000000002000L, 0x200000c6ab45L, 0xc421968200080008L, true, 0, 0x0L), 4), 796155); - - // gentest-3886 - assertEqual(perft(new Board(0x21368000c40300L, 0x4000000200000840L, 0x80000002000cL, 0x8000000000200081L, 0x0L, 0x400000000004000L, 0x200000c64bc5L, 0xc421968200200008L, false, 0, 0x0L), 4), 572570); - - // gentest-3887 - assertEqual(perft(new Board(0x21368000c40300L, 0x4000000200000840L, 0x800000020404L, 0x8000000000208001L, 0x0L, 0x800000000004000L, 0x200000c6cb45L, 0xc821968200200400L, true, 0, 0x0L), 4), 677185); - - // gentest-3888 - assertEqual(perft(new Board(0x21368000c40300L, 0x4000000210000040L, 0x800004000404L, 0x8000000000208001L, 0x0L, 0x400000000004000L, 0x200014c4c345L, 0xc421968200200400L, false, 0, 0x0L), 4), 1120063); - - // gentest-3889 - assertEqual(perft(new Board(0x21168000c40300L, 0x200200000040L, 0x800014000004L, 0x8000000000200081L, 0x0L, 0x400000000004000L, 0x4c443c5L, 0x8421b68210200000L, true, 0, 0x0L), 4), 972087); - - // gentest-3890 - assertEqual(perft(new Board(0x21168000c40300L, 0x200200000040L, 0x802024000000L, 0x8000000000200081L, 0x0L, 0x400000000004000L, 0x24c443c1L, 0x8421b6a200200000L, false, 0, 0x0L), 4), 1605646); - - // gentest-3891 - assertEqual(perft(new Board(0x21168000440300L, 0x8000200000040L, 0x800024800000L, 0x8000000000200081L, 0x0L, 0x400000000008000L, 0x244483c1L, 0x8429968200a00000L, true, 0, 0x0L), 4), 1367948); - - // gentest-3892 - assertEqual(perft(new Board(0x21168040040300L, 0x8000200000040L, 0x800004800000L, 0x8000000020000084L, 0x0L, 0x400000000008000L, 0x440483c4L, 0x8429968220800000L, false, 0, 0x0L), 4), 986328); - - // gentest-3893 - assertEqual(perft(new Board(0x21168040040300L, 0x8000200000040L, 0x800004000000L, 0x8000000020000084L, 0x0L, 0x400000000800000L, 0x448403c4L, 0x8429968220000000L, true, 0, 0x0L), 4), 1020582); - - // gentest-3894 - assertEqual(perft(new Board(0x21168042040100L, 0x8000200000040L, 0x800000020000L, 0x8000000000002084L, 0x0L, 0x400000000800000L, 0x428601c4L, 0x8429968200002000L, false, 0, 0x0L), 4), 936472); - - // gentest-3895 - assertEqual(perft(new Board(0x21160002000100L, 0x8000000040040L, 0x800000020000L, 0x8000000000002084L, 0x0L, 0x400000040000000L, 0x420201c4L, 0x8429960000042000L, true, 0, 0x0L), 4), 1470651); - - // gentest-3896 - assertEqual(perft(new Board(0x21160002000100L, 0x8000000240000L, 0x800000020000L, 0x8000000000002090L, 0x0L, 0x4000040000000L, 0x42220190L, 0x802d960000042000L, false, 0, 0x0L), 4), 2498197); - - // gentest-3897 - assertEqual(perft(new Board(0x21160002000100L, 0x8000000040800L, 0x800000020000L, 0x8000000000000290L, 0x0L, 0x2000040000000L, 0x42020990L, 0x802b960000040200L, true, 0, 0x0L), 4), 2348712); - - // gentest-3898 - assertEqual(perft(new Board(0x21120600000100L, 0x8000000040800L, 0x800001000000L, 0x8000000000000290L, 0x0L, 0x2000040000000L, 0x241000990L, 0x802b920400040200L, false, 0, 0x0L), 4), 1483973); - - // gentest-3899 - assertEqual(perft(new Board(0x20120700000100L, 0x8000000040800L, 0x1100000L, 0x8000000000800210L, 0x0L, 0x2000040000000L, 0x241800910L, 0x802a120500140200L, true, 0, 0x0L), 4), 1715482); - - // gentest-3900 - assertEqual(perft(new Board(0x20021700000100L, 0x8000000040200L, 0x1100000L, 0x8000000000800010L, 0x0L, 0x2000040000000L, 0x241800310L, 0x802a021500140000L, false, 0, 0x0L), 4), 1049439); - - // gentest-3901 - assertEqual(perft(new Board(0x20021700000100L, 0x8000000040200L, 0x800001000000L, 0x2000000000800004L, 0x0L, 0x2000040000000L, 0x241800304L, 0x202a821500040000L, true, 0, 0x0L), 4), 830648); - - // gentest-3902 - assertEqual(perft(new Board(0x20021700000100L, 0x200000000040200L, 0x800001000000L, 0x2000000000100004L, 0x0L, 0x2000040000000L, 0x241100304L, 0x2222821500040000L, false, 0, 0x0L), 4), 665391); - - // gentest-3903 - assertEqual(perft(new Board(0x20021700000100L, 0x200000000040200L, 0x800001000000L, 0x2000000000400004L, 0x0L, 0x2000040000000L, 0x241400304L, 0x2222821500040000L, true, 0, 0x0L), 4), 668152); - - // gentest-3904 - assertEqual(perft(new Board(0x20021700000100L, 0x8000000000200L, 0x800001000000L, 0x2000000000440000L, 0x0L, 0x2000000800000L, 0x201c40300L, 0x202a821500000000L, false, 0, 0x0L), 4), 505865); - - // gentest-3905 - assertEqual(perft(new Board(0x20021700000100L, 0x8000000080000L, 0x800001000000L, 0x2000000000440000L, 0x0L, 0x2000000800000L, 0x201cc0100L, 0x202a821500000000L, true, 0, 0x0L), 4), 545016); - - // gentest-3906 - assertEqual(perft(new Board(0x20021300000100L, 0x8000400000000L, 0x800001000000L, 0x4000000000400004L, 0x0L, 0x2000000800000L, 0x601c00104L, 0x402a821100000000L, false, 0, 0x0L), 4), 220920); - - // gentest-3907 - assertEqual(perft(new Board(0x221300000100L, 0x8000400000000L, 0x800001000000L, 0x4000000000040004L, 0x0L, 0x400000000800000L, 0x601840104L, 0x4408a21100000000L, true, 0, 0x0L), 4), 377811); - - // gentest-3908 - assertEqual(perft(new Board(0x221300000100L, 0x8000400000000L, 0x800001000000L, 0x4000000000040004L, 0x0L, 0x200000000800000L, 0x601840104L, 0x4208a21100000000L, false, 0, 0x0L), 4), 533515); - - // gentest-3909 - assertEqual(perft(new Board(0x221300000100L, 0x400080000L, 0x800001000000L, 0x4000040004L, 0x0L, 0x200000000800000L, 0x2018c0104L, 0x200a25500000000L, true, 0, 0x0L), 4), 425618); - - // gentest-3910 - assertEqual(perft(new Board(0x221300000100L, 0x400080000L, 0x2000000001000000L, 0x4000040400L, 0x0L, 0x200000000008000L, 0x2010c8500L, 0x2200225500000000L, false, 0, 0x0L), 4), 369333); - - // gentest-3911 - assertEqual(perft(new Board(0x221300000100L, 0x10002000L, 0x2000000001000000L, 0x4000000000040400L, 0x0L, 0x200000000008000L, 0x20104a500L, 0x6200221110000000L, true, 0, 0x0L), 4), 409937); - - // gentest-3912 - assertEqual(perft(new Board(0x23300000100L, 0x10000008L, 0x2000000001000000L, 0x4000040000000400L, 0x0L, 0x200000000008000L, 0x40201008508L, 0x6200023110000000L, false, 0, 0x0L), 4), 446746); - - // gentest-3913 - assertEqual(perft(new Board(0x23300000100L, 0xaL, 0x2000000001000000L, 0x4000800000000400L, 0x0L, 0x200000000008000L, 0x800201008508L, 0x6200023100000002L, true, 0, 0x0L), 4), 441386); - - // gentest-3914 - assertEqual(perft(new Board(0x23300000100L, 0xaL, 0x2000000001000000L, 0x140000400000L, 0x0L, 0x200000000008000L, 0x140201008108L, 0x2200023100400002L, false, 0, 0x0L), 4), 399940); - - // gentest-3915 - assertEqual(perft(new Board(0x23300000100L, 0x2002L, 0x2000000001000000L, 0x4000140000000000L, 0x0L, 0x2000000008000L, 0x14020100a100L, 0x6002023100000002L, true, 0, 0x0L), 4), 356124); - - // gentest-3916 - assertEqual(perft(new Board(0x23300000100L, 0x80002L, 0x2000000001000000L, 0x8000140000000000L, 0x0L, 0x2000000400000L, 0x140201480100L, 0xa002023100000002L, false, 0, 0x0L), 4), 402693); - - // gentest-3917 - assertEqual(perft(new Board(0x23300000100L, 0x80002L, 0x401000000L, 0x8400100000000000L, 0x0L, 0x2000000400000L, 0x400100201480100L, 0x8002023500000002L, true, 0, 0x0L), 4), 499418); - - // gentest-3918 - assertEqual(perft(new Board(0x23300000100L, 0x202L, 0x10008L, 0x8400100000000000L, 0x0L, 0x2000000400000L, 0x400100200400308L, 0x8002023100010002L, false, 0, 0x0L), 4), 512568); - - // gentest-3919 - assertEqual(perft(new Board(0x23300000100L, 0x202L, 0x10000000000008L, 0x1400800000000000L, 0x0L, 0x2000000400000L, 0x400800200400308L, 0x1012023100000002L, true, 0, 0x0L), 4), 597190); - - // gentest-3920 - assertEqual(perft(new Board(0x23201000100L, 0x202L, 0x10000000000008L, 0x1420000000000000L, 0x0L, 0x2000000400000L, 0x420000200400308L, 0x1012023001000002L, false, 0, 0x0L), 4), 148510); - - // gentest-3921 - assertEqual(perft(new Board(0x22211000100L, 0x202L, 0x10000000000008L, 0x420000000000400L, 0x0L, 0x2000000400000L, 0x20000200400708L, 0x412022011000002L, true, 0, 0x0L), 4), 395393); - - // gentest-3922 - assertEqual(perft(new Board(0x22211000100L, 0x202L, 0x10000000000008L, 0x200200000001000L, 0x0L, 0x2000000400000L, 0x200200401308L, 0x212022011000002L, false, 0, 0x0L), 4), 406927); - - // gentest-3923 - assertEqual(perft(new Board(0x22210000100L, 0x202L, 0x800000001000000L, 0x200200000001000L, 0x0L, 0x100000000400000L, 0x200201401300L, 0xb00022010000002L, true, 0, 0x0L), 4), 162039); - - // gentest-3924 - assertEqual(perft(new Board(0x22210000100L, 0x10200L, 0x800000000020000L, 0x200200000000010L, 0x0L, 0x100000000400000L, 0x200200420310L, 0xb00022010010000L, false, 0, 0x0L), 4), 207418); - - // gentest-3925 - assertEqual(perft(new Board(0x22200100100L, 0x10200L, 0x800000001000000L, 0x200200000000010L, 0x0L, 0x2000000400000L, 0x200201400310L, 0xa02022000110000L, true, 0, 0x0L), 4), 202063); - - // gentest-3926 - assertEqual(perft(new Board(0x22200100100L, 0x4080000L, 0x800000001000000L, 0x200200000000008L, 0x0L, 0x2000000400000L, 0x200201480108L, 0xa02022004100000L, false, 0, 0x0L), 4), 273676); - - // gentest-3927 - assertEqual(perft(new Board(0x22200100100L, 0x80800L, 0x800000001000000L, 0x200200000000008L, 0x0L, 0x400000000800000L, 0x200201880108L, 0xe00022000100800L, true, 0, 0x0L), 4), 252118); - - // gentest-3928 - assertEqual(perft(new Board(0x22200100100L, 0x80800L, 0x10000001000000L, 0x200200000000001L, 0x0L, 0x400000080000000L, 0x200281080101L, 0x610022000100800L, false, 0, 0x0L), 4), 242516); - - // gentest-3929 - assertEqual(perft(new Board(0x22200100100L, 0x80800L, 0x10400L, 0x200200000000001L, 0x0L, 0x400000080000000L, 0x200280080501L, 0x600022000110800L, true, 0, 0x0L), 4), 375305); - - // gentest-3930 - assertEqual(perft(new Board(0x22201100000L, 0x810L, 0x600L, 0x200200000000001L, 0x0L, 0x400000080000000L, 0x200281000411L, 0x600022000100a00L, false, 0, 0x0L), 4), 285551); - - // gentest-3931 - assertEqual(perft(new Board(0x22201100000L, 0x200010L, 0x80200L, 0x2200000000001L, 0x0L, 0x400000080000000L, 0x200281080011L, 0x402022000300200L, true, 0, 0x0L), 4), 69404); - - // gentest-3932 - assertEqual(perft(new Board(0x22201100000L, 0x200000L, 0x80200L, 0x200200000000001L, 0x0L, 0x400008000000000L, 0x208201280001L, 0x600022000100200L, false, 0, 0x0L), 4), 301904); - - // gentest-3933 - assertEqual(perft(new Board(0x22201100000L, 0x4000000000L, 0x80001L, 0x200200000000000L, 0x0L, 0x8008000000000L, 0x20c201080000L, 0x208022000100001L, true, 0, 0x0L), 4), 224040); - - // gentest-3934 - assertEqual(perft(new Board(0x22201100000L, 0x20000000000000L, 0x600L, 0x200200000000000L, 0x0L, 0x8008000000000L, 0x20208201000400L, 0x208022000100200L, false, 0, 0x0L), 4), 217800); - - // gentest-3935 - assertEqual(perft(new Board(0x22201000000L, 0x20000000000000L, 0x610L, 0x200400000000000L, 0x0L, 0x8008000000000L, 0x20408201000400L, 0x208022000000210L, true, 0, 0x0L), 4), 479345); - - // gentest-3936 - assertEqual(perft(new Board(0x20201000000L, 0x20000000000000L, 0x100000000210L, 0x200400000000000L, 0x0L, 0x10008000000000L, 0x20508201000000L, 0x210020000000210L, false, 0, 0x0L), 4), 490834); - - // gentest-3937 - assertEqual(perft(new Board(0x20201000000L, 0x800000000000L, 0x100000000011L, 0x800400000000000L, 0x0L, 0x10008000000000L, 0xd08201000000L, 0x810020000000011L, true, 0, 0x0L), 4), 474644); - - // gentest-3938 - assertEqual(perft(new Board(0x20201000000L, 0x800000000000L, 0x100000000011L, 0x800000000400000L, 0x0L, 0x2000008000000000L, 0x908201400000L, 0x2800020000000011L, false, 0, 0x0L), 4), 565484); - - // gentest-3939 - assertEqual(perft(new Board(0x20201000000L, 0x800000000000L, 0x101000000001L, 0x800000000400000L, 0x0L, 0x2000000040000000L, 0x900241400000L, 0x2800021000000001L, true, 0, 0x0L), 4), 511779); - - // gentest-3940 - assertEqual(perft(new Board(0x20201000000L, 0x800000000000L, 0x101000000001L, 0x40000000000008L, 0x0L, 0x2000000000200000L, 0x40900201200000L, 0x2000021000000009L, false, 0, 0x0L), 4), 682744); - - // gentest-3941 - assertEqual(perft(new Board(0x20201000000L, 0x800000000000L, 0x100000008001L, 0x40000000000020L, 0x0L, 0x2000000000100000L, 0x40900201100000L, 0x2000020000008021L, true, 0, 0x0L), 4), 559270); - - // gentest-3942 - assertEqual(perft(new Board(0x20201000000L, 0x800000000000L, 0x100000008001L, 0x4000000000008L, 0x0L, 0x2000000000002000L, 0x4900201002000L, 0x2000020000008009L, false, 0, 0x0L), 4), 508444); - - // gentest-3943 - assertEqual(perft(new Board(0x20201000000L, 0x20000000000000L, 0x100000008001L, 0x4000800000000L, 0x0L, 0x2000000000002000L, 0x24100201002000L, 0x2000020800008001L, true, 0, 0x0L), 4), 559196); - - // gentest-3944 - assertEqual(perft(new Board(0x20201000000L, 0x20000000000000L, 0x100000008001L, 0xc000000000000L, 0x0L, 0x2000000000200000L, 0x24100201200000L, 0x2008020000008001L, false, 0, 0x0L), 4), 550557); - - // gentest-3945 - assertEqual(perft(new Board(0x20201000000L, 0x800000000000L, 0x100000008001L, 0x4000000080000L, 0x0L, 0x2000000000200000L, 0x4900201200000L, 0x2000020000088001L, true, 0, 0x0L), 4), 106557); - - // gentest-3946 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x100000008001L, 0x4000000040000L, 0x0L, 0x2000000040000000L, 0x4900340000000L, 0x2000020000048001L, false, 0, 0x0L), 4), 379059); - - // gentest-3947 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x200100000000200L, 0x40000L, 0x0L, 0x2000000040000000L, 0x900340040000L, 0x2200020000000200L, true, 0, 0x0L), 4), 285285); - - // gentest-3948 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x200000004000004L, 0x200000L, 0x0L, 0x2000000040000000L, 0x800344200000L, 0x2200020000000004L, false, 0, 0x0L), 4), 66120); - - // gentest-3949 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x4000024000000L, 0x2000L, 0x0L, 0x2000000040000000L, 0x800344002000L, 0x2004020020000000L, true, 0, 0x0L), 4), 147386); - - // gentest-3950 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x4000004000004L, 0x4000L, 0x0L, 0x2000000000200000L, 0x800304204000L, 0x2004020000000004L, false, 0, 0x0L), 4), 283863); - - // gentest-3951 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x4200000000020L, 0x4000L, 0x0L, 0x2000000000200000L, 0x800300204020L, 0x2004220000000000L, true, 0, 0x0L), 4), 287941); - - // gentest-3952 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x8004000000000020L, 0x1000L, 0x0L, 0x2000000010000000L, 0x800310001020L, 0xa004020000000000L, false, 0, 0x0L), 4), 174370); - - // gentest-3953 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x8000000000400020L, 0x800L, 0x0L, 0x1000000010000000L, 0x800310000820L, 0x9000020000400000L, true, 0, 0x0L), 4), 293627); - - // gentest-3954 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x8200000000000020L, 0x200L, 0x0L, 0x1000000010000000L, 0x800310000220L, 0x9200020000000000L, false, 0, 0x0L), 4), 224044); - - // gentest-3955 - assertEqual(perft(new Board(0x20300000000L, 0x800000000000L, 0x8000000020004000L, 0x200L, 0x0L, 0x8000010000000L, 0x800310004200L, 0x8008020020000000L, true, 0, 0x0L), 4), 257631); - - // gentest-3956 - assertEqual(perft(new Board(0x20300000000L, 0x2000000000L, 0x8000000020000020L, 0x200L, 0x0L, 0x100010000000L, 0x2310000220L, 0x8000120020000000L, false, 0, 0x0L), 4), 283569); - - // gentest-3957 - assertEqual(perft(new Board(0x20300000000L, 0x2000000000L, 0x8000000004100000L, 0x200L, 0x0L, 0x200010000000L, 0x2314000200L, 0x8000220000100000L, true, 0, 0x0L), 4), 178246); - - // gentest-3958 - assertEqual(perft(new Board(0x20300000000L, 0x2000000000L, 0x8000000400080000L, 0x2000000L, 0x0L, 0x200010000000L, 0x2312080000L, 0x8000220400000000L, false, 0, 0x0L), 4), 120409); - - // gentest-3959 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-3960 - assertEqual(perft(new Board(0xff00001800e700L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1800e7ffL, 0xbfff800000000000L, false, 0, 0x8100000000000081L), 4), 635081); - - // gentest-3961 - assertEqual(perft(new Board(0xfb04001800e700L, 0x200800000000042L, 0x2400000000000024L, 0x4100000000000081L, 0x800008000000000L, 0x1000000000000010L, 0x801800e7f7L, 0x7ffb840000000000L, true, 0, 0x100000000000081L), 4), 849866); - - // gentest-3962 - assertEqual(perft(new Board(0xfb04001800e700L, 0x200800000000042L, 0x2400000000000024L, 0x4100000000000081L, 0x24000000000L, 0x1000000000000010L, 0x401800e7f7L, 0x77fb860000000000L, false, 0, 0x100000000000081L), 4), 1275760); - - // gentest-3963 - assertEqual(perft(new Board(0xfb04003800c500L, 0x200800000000042L, 0x2400000000000024L, 0x4100000000000081L, 0x4000040000L, 0x1000000000000010L, 0x403800c5f7L, 0x77fb840000040000L, true, 0, 0x100000000000081L), 4), 193007); - - // gentest-3964 - assertEqual(perft(new Board(0xfb04003800c500L, 0x810000000042L, 0x2400000000000820L, 0x4100000000000081L, 0x4000040000L, 0x1000000000001000L, 0x403800dde3L, 0x75fb850000040000L, false, 0, 0x100000000000000L), 4), 1146374); - - // gentest-3965 - assertEqual(perft(new Board(0xfb04003800c500L, 0x810000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x4000000010L, 0x1000000000001000L, 0x403810d5e3L, 0xb5fb850000000010L, true, 0, 0x100000000000000L), 4), 82223); - - // gentest-3966 - assertEqual(perft(new Board(0xfb04003801c400L, 0x810000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x4002000000L, 0x1000000000080000L, 0x403819c4e3L, 0xb5fb850002000000L, false, 0, 0x100000000000000L), 4), 903584); - - // gentest-3967 - assertEqual(perft(new Board(0xdb24003800c400L, 0x10000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800000010000L, 0x1000000000080000L, 0x80003818c4e3L, 0xb5db250000010000L, true, 0, 0x100000000000000L), 4), 152504); - - // gentest-3968 - assertEqual(perft(new Board(0xdb24003800c400L, 0x10000000042L, 0x2400000000101000L, 0x8100000000000081L, 0x800001000000L, 0x1000000000000800L, 0x80003810dcc3L, 0xb5db250001000000L, false, 0, 0x100000000000000L), 4), 948284); - - // gentest-3969 - assertEqual(perft(new Board(0xdb24003800c400L, 0x4000000000042L, 0x2400000000101000L, 0x8100000000000081L, 0x800002000000L, 0x1000000000000008L, 0x80003810d4cbL, 0xb5df240002000000L, true, 0, 0x100000000000000L), 4), 1587760); - - // gentest-3970 - assertEqual(perft(new Board(0xd924023800c400L, 0x4000000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800002000000L, 0x1000000000000004L, 0x80003810c4e7L, 0xb5dd240202000000L, false, 0, 0x100000000000000L), 4), 1058260); - - // gentest-3971 - assertEqual(perft(new Board(0x99a4023800c400L, 0x4000000000042L, 0x2002000000100020L, 0x8100000100000080L, 0x2000000L, 0x1000000000000004L, 0x13810c4e6L, 0xb19fa40202000000L, true, 0, 0x100000000000000L), 4), 885082); - - // gentest-3972 - assertEqual(perft(new Board(0x99a4023800c400L, 0x4000000000040L, 0x2002000000101000L, 0x8100000100000080L, 0x0L, 0x1000000000000002L, 0x13810d4c2L, 0xb19fa40200000000L, false, 0, 0x100000000000000L), 4), 551317); - - // gentest-3973 - assertEqual(perft(new Board(0x9924803a00c400L, 0x4000000200000L, 0x2002000000101000L, 0x8100000100000080L, 0x0L, 0x1000000000000002L, 0x13830d482L, 0xb19f248002000000L, true, 0, 0x100000000000000L), 4), 1327820); - - // gentest-3974 - assertEqual(perft(new Board(0x9924803a00c400L, 0x4001000000000L, 0x2400000000101000L, 0x8100000100000080L, 0x0L, 0x1000000000000100L, 0x113810d580L, 0xb59d248002000000L, false, 0, 0x100000000000000L), 4), 890255); - - // gentest-3975 - assertEqual(perft(new Board(0x9924803a00c400L, 0x500000000000L, 0x2400000000101000L, 0x4100000100000080L, 0x0L, 0x1000000000000100L, 0x40013810d580L, 0x7599348002000000L, true, 0, 0x100000000000000L), 4), 1532493); - - // gentest-3976 - assertEqual(perft(new Board(0x9924803a00c400L, 0x500000000000L, 0x2400000000101000L, 0x4200000200000080L, 0x0L, 0x1000000000000002L, 0x40023810d482L, 0x7699348002000000L, false, 0, 0x0L), 4), 1690376); - - // gentest-3977 - assertEqual(perft(new Board(0x992480ba004400L, 0x4400000000000L, 0x2400000000101000L, 0x4200000200000080L, 0x0L, 0x800000000000002L, 0x4002b8105482L, 0x6e9d248002000000L, true, 0, 0x0L), 4), 1557318); - - // gentest-3978 - assertEqual(perft(new Board(0x992480ba004400L, 0x410000000000L, 0x2400000000003000L, 0x4202000000000080L, 0x0L, 0x800000000000002L, 0x24000b8007482L, 0x6e99258002000000L, false, 0, 0x0L), 4), 694478); - - // gentest-3979 - assertEqual(perft(new Board(0x9904a0ba004400L, 0x8000000400000000L, 0x2400000000003000L, 0x4202000000000080L, 0x0L, 0x800000000000002L, 0x80020000b8007482L, 0x6e9904a402000000L, true, 0, 0x0L), 4), 1189630); - - // gentest-3980 - assertEqual(perft(new Board(0x8904b0ba400400L, 0x8000000400000000L, 0x2400000000001010L, 0x4202000000000080L, 0x0L, 0x800000000000002L, 0x80020000b8401492L, 0x6e8904b402000000L, false, 0, 0x0L), 4), 1189326); - - // gentest-3981 - assertEqual(perft(new Board(0x810cb0ba400400L, 0x8000000400000000L, 0x2400000000001010L, 0x242000000800000L, 0x0L, 0x800000000000002L, 0x80020000b8c01412L, 0x2ec10cb402000000L, true, 0, 0x0L), 4), 1351782); - - // gentest-3982 - assertEqual(perft(new Board(0x810cb0aa400400L, 0x8000000400000000L, 0x2008000000003000L, 0x242000000800000L, 0x0L, 0x800000000000002L, 0x80020020a8c03402L, 0x2ac90c9402000000L, false, 0, 0x0L), 4), 1142726); - - // gentest-3983 - assertEqual(perft(new Board(0x8104b8aa400400L, 0x8002000000000000L, 0x2008000000001040L, 0x240000000800000L, 0x0L, 0x800000000000002L, 0x80000020a8c01442L, 0x2acb049802000000L, true, 0, 0x0L), 4), 592841); - - // gentest-3984 - assertEqual(perft(new Board(0x8104b8aa440000L, 0x8002000000000000L, 0x8080000009000L, 0x240000000800000L, 0x0L, 0x800000000000002L, 0x80000020a8c49002L, 0xacb0c9802000000L, false, 0, 0x0L), 4), 476999); - - // gentest-3985 - assertEqual(perft(new Board(0x8000bdea040000L, 0x8002000000000000L, 0x8080000009000L, 0x240000000800000L, 0x0L, 0x800000000000002L, 0x80000020e8849002L, 0xaca089d02000000L, true, 0, 0x0L), 4), 716051); - - // gentest-3986 - assertEqual(perft(new Board(0x80209dea040000L, 0x8002000000000000L, 0x8080000009000L, 0x200400000800000L, 0x0L, 0x800000000000400L, 0x80002000e8849400L, 0xa8a489d02000000L, false, 0, 0x0L), 4), 746689); - - // gentest-3987 - assertEqual(perft(new Board(0x80209de8040000L, 0x8002000000000000L, 0x8080000009000L, 0x200004000100000L, 0x0L, 0x800000000000400L, 0x80002000e8109400L, 0xa8a08dd00040000L, true, 0, 0x0L), 4), 704328); - - // gentest-3988 - assertEqual(perft(new Board(0x80201de8040000L, 0x8002000000000000L, 0x8090000008000L, 0x200004000400000L, 0x0L, 0x800000000000400L, 0x80002100a8408400L, 0xa8a085d40040000L, false, 0, 0x0L), 4), 563987); - - // gentest-3989 - assertEqual(perft(new Board(0xa00019ec040000L, 0x8002000000000000L, 0x8090000008000L, 0x200004000400000L, 0x0L, 0x10000000000400L, 0x80200100a8408400L, 0x29a085944040000L, true, 0, 0x0L), 4), 654993); - - // gentest-3990 - assertEqual(perft(new Board(0xa00019ec040000L, 0x8000000000000000L, 0x80c0000008000L, 0x200002000400000L, 0x0L, 0x10000000000400L, 0x80200400a8408400L, 0x298083944040000L, false, 0, 0x0L), 4), 731805); - - // gentest-3991 - assertEqual(perft(new Board(0xa00019ec040000L, 0x0L, 0xc000200008000L, 0x8000002000400000L, 0x0L, 0x10000000000400L, 0x200002a8408400L, 0x809c003944040000L, true, 0, 0x0L), 4), 558950); - - // gentest-3992 - assertEqual(perft(new Board(0x800019ec040000L, 0x0L, 0x200c000200008000L, 0x8000002000004000L, 0x0L, 0x20000000000400L, 0x20000002a800c400L, 0x80ac003944040000L, false, 0, 0x0L), 4), 532585); - - // gentest-3993 - assertEqual(perft(new Board(0x800019ec040000L, 0x0L, 0x2208000200008000L, 0x8000002000000800L, 0x0L, 0x4000000000000400L, 0x20000002a8008c00L, 0xc288003944040000L, true, 0, 0x0L), 4), 388131); - - // gentest-3994 - assertEqual(perft(new Board(0x8000996c040000L, 0x0L, 0x2208000200008000L, 0x8000004000000800L, 0x0L, 0x4000000000000004L, 0x2000008228008804L, 0xc288005944040000L, false, 0, 0x0L), 4), 401320); - - // gentest-3995 - assertEqual(perft(new Board(0x8000996c040000L, 0x0L, 0x208000200008000L, 0x8000004000000800L, 0x0L, 0x40000000000008L, 0x8228008808L, 0x82c8005944040000L, true, 0, 0x0L), 4), 408379); - - // gentest-3996 - assertEqual(perft(new Board(0x8080196c040000L, 0x0L, 0x200040001008000L, 0x8000004000000800L, 0x0L, 0x40000000000008L, 0x800029008808L, 0x82c0045944040000L, false, 0, 0x0L), 4), 64823); - - // gentest-3997 - assertEqual(perft(new Board(0x8080196c040000L, 0x0L, 0xc0001008000L, 0x8000004000004000L, 0x0L, 0x400000000008L, 0x80002900c008L, 0x80804c5944040000L, true, 0, 0x0L), 4), 411562); - - // gentest-3998 - assertEqual(perft(new Board(0x80801964040000L, 0x0L, 0x80201000040L, 0x8000004000004000L, 0x0L, 0x400000000008L, 0x801021004048L, 0x8080484b44040000L, false, 0, 0x0L), 4), 511603); - - // gentest-3999 - assertEqual(perft(new Board(0x80801924440000L, 0x0L, 0xc0001100000L, 0x8000004000004000L, 0x0L, 0x400000000008L, 0x801021104008L, 0x80804c4904440000L, true, 0, 0x0L), 4), 622510); - - // gentest-4000 - assertEqual(perft(new Board(0x80801924440000L, 0x0L, 0xe0001000000L, 0x1000004000000400L, 0x0L, 0x400000000008L, 0x821021000408L, 0x10804c4904440000L, false, 0, 0x0L), 4), 702782); - } - - public static void batch10() { - // gentest-4001 - assertEqual(perft(new Board(0x80800924440000L, 0x0L, 0xc0001002000L, 0x9000000400L, 0x0L, 0x400000000008L, 0x800021002408L, 0x804c9904440000L, true, 0, 0x0L), 4), 456739); - - // gentest-4002 - assertEqual(perft(new Board(0x80800924440000L, 0x0L, 0xc0000020040L, 0x1080000400L, 0x0L, 0x400000000008L, 0x800020020448L, 0x804c1984440000L, false, 0, 0x0L), 4), 609159); - - // gentest-4003 - assertEqual(perft(new Board(0x80800825400000L, 0x0L, 0xc0000020040L, 0x1080040000L, 0x0L, 0x20000000000008L, 0x800020060048L, 0xa00c1885400000L, true, 0, 0x0L), 4), 776762); - - // gentest-4004 - assertEqual(perft(new Board(0x80800825400000L, 0x0L, 0xe0000020000L, 0x10000080000400L, 0x0L, 0x20000000000008L, 0x820020020408L, 0xb00c0885400000L, false, 0, 0x0L), 4), 911577); - - // gentest-4005 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40020120000L, 0x10000000008400L, 0x0L, 0x20000000000008L, 0x800000120408L, 0xb0040825408000L, true, 0, 0x0L), 4), 841967); - - // gentest-4006 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40020020800L, 0x10000000009000L, 0x0L, 0x1000000000000008L, 0x800000021808L, 0x1090040825408000L, false, 0, 0x0L), 4), 506835); - - // gentest-4007 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40000000e00L, 0x10000000009000L, 0x0L, 0x1000000000000008L, 0x800000001c08L, 0x1090040805408200L, true, 0, 0x0L), 4), 634324); - - // gentest-4008 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40028000400L, 0x1000000000c000L, 0x0L, 0x1000000000000008L, 0x800020004408L, 0x109004080d408000L, false, 0, 0x0L), 4), 854901); - - // gentest-4009 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40028000400L, 0x10a000L, 0x0L, 0x1000000000000008L, 0x800020002408L, 0x108004080d508000L, true, 0, 0x0L), 4), 714325); - - // gentest-4010 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x440028000000L, 0x10a000L, 0x0L, 0x8000000000800L, 0xc00020002800L, 0x8804080d508000L, false, 0, 0x0L), 4), 610453); - - // gentest-4011 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40028000400L, 0x102080L, 0x0L, 0x800000000000800L, 0x800020002c00L, 0x88004080d500080L, true, 0, 0x0L), 4), 677471); - - // gentest-4012 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x41000000400L, 0x300080L, 0x0L, 0x800000000000800L, 0x800000200c00L, 0x880041805500080L, false, 0, 0x0L), 4), 517849); - - // gentest-4013 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x41000020000L, 0x201080L, 0x0L, 0x1000000000000800L, 0x800000220800L, 0x1080041805401080L, true, 0, 0x0L), 4), 19092); - - // gentest-4014 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40000060000L, 0x20000080L, 0x0L, 0x1000000000001000L, 0x800020021000L, 0x1080040805440080L, false, 0, 0x0L), 4), 327939); - - // gentest-4015 - assertEqual(perft(new Board(0x80800805400000L, 0x0L, 0x40000060000L, 0x20001000000000L, 0x0L, 0x1000000000001000L, 0x20800000021000L, 0x1080041805440000L, true, 0, 0x0L), 4), 36425); - - // gentest-4016 - assertEqual(perft(new Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x1001000000000L, 0x0L, 0x1000000000200000L, 0x1800000200000L, 0x1080041801460000L, false, 0, 0x0L), 4), 111822); - - // gentest-4017 - assertEqual(perft(new Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x100008000000000L, 0x0L, 0x8000000200000L, 0x100800000200000L, 0x88048801460000L, true, 0, 0x0L), 4), 186826); - - // gentest-4018 - assertEqual(perft(new Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x20000080000000L, 0x0L, 0x8000000200000L, 0x20800000200000L, 0x88040881460000L, false, 0, 0x0L), 4), 31087); - - // gentest-4019 - assertEqual(perft(new Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x40000002000000L, 0x0L, 0x400000000200000L, 0x40800000200000L, 0x480040803460000L, true, 0, 0x0L), 4), 156807); - - // gentest-4020 - assertEqual(perft(new Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x200080000000000L, 0x0L, 0x400000000200000L, 0x880000200000L, 0x680040801460000L, false, 0, 0x0L), 4), 105535); - - // gentest-4021 - assertEqual(perft(new Board(0x80800801420000L, 0x0L, 0x200L, 0x200040000000000L, 0x0L, 0x8000000200000L, 0x840000200000L, 0x288000801420200L, true, 0, 0x0L), 4), 189765); - - // gentest-4022 - assertEqual(perft(new Board(0x80800801020000L, 0x0L, 0x1L, 0x200000000000004L, 0x0L, 0x8000000400000L, 0x800000400004L, 0x288000801020001L, false, 0, 0x0L), 4), 236309); - - // gentest-4023 - assertEqual(perft(new Board(0x80800800030000L, 0x0L, 0x1L, 0x204000000000000L, 0x0L, 0x800000000400000L, 0x4800000400000L, 0xa80000800030001L, true, 0, 0x0L), 4), 126158); - - // gentest-4024 - assertEqual(perft(new Board(0x80800800030000L, 0x0L, 0x8000000000000000L, 0x201000000000000L, 0x0L, 0x800000000400000L, 0x1800000400000L, 0x8a80000800030000L, false, 0, 0x0L), 4), 107214); - - // gentest-4025 - assertEqual(perft(new Board(0x80800800010200L, 0x0L, 0x8000000000000000L, 0x401000000000000L, 0x0L, 0x800000000004000L, 0x1800000004000L, 0x8c80000800010200L, true, 0, 0x0L), 4), 157631); - - // gentest-4026 - assertEqual(perft(new Board(0x80800800000200L, 0x0L, 0x40000L, 0x400000001000000L, 0x0L, 0x800000000004000L, 0x800001004000L, 0xc80000800040200L, false, 0, 0x0L), 4), 230041); - - // gentest-4027 - assertEqual(perft(new Board(0x80800008000200L, 0x0L, 0x800L, 0x400000004000000L, 0x0L, 0x800000000004000L, 0x800004004000L, 0xc80000008000a00L, true, 0, 0x0L), 4), 146504); - - // gentest-4028 - assertEqual(perft(new Board(0x80800000000200L, 0x0L, 0x800L, 0x400000008000000L, 0x0L, 0x4000000008000L, 0x800008008000L, 0x484000000000a00L, false, 0, 0x0L), 4), 172323); - - // gentest-4029 - assertEqual(perft(new Board(0x80800000000200L, 0x0L, 0x20000000L, 0x200000008000000L, 0x0L, 0x4000000000080L, 0x800008000080L, 0x284000020000200L, true, 0, 0x0L), 4), 125315); - - // gentest-4030 - assertEqual(perft(new Board(0x80800000000200L, 0x0L, 0x400000L, 0x200000000010000L, 0x0L, 0x4000000000080L, 0x800000010080L, 0x284000000400200L, false, 0, 0x0L), 4), 152378); - - // gentest-4031 - assertEqual(perft(new Board(0x80800000000000L, 0x0L, 0x400000L, 0x2200000L, 0x2L, 0x4000000000080L, 0x800000200080L, 0x84000002400002L, true, 0, 0x0L), 4), 33171); - - // gentest-4032 - assertEqual(perft(new Board(0x80800000000000L, 0x0L, 0x400000L, 0x2040000L, 0x2000000000L, 0x4000000004000L, 0x800000044000L, 0x84002002400000L, false, 0, 0x0L), 4), 70273); - - // gentest-4033 - assertEqual(perft(new Board(0x80800000000000L, 0x0L, 0x10L, 0x2000004L, 0x2000000000L, 0x2000000004000L, 0x800000004004L, 0x82002002000010L, true, 0, 0x0L), 4), 287906); - - // gentest-4034 - assertEqual(perft(new Board(0x80800000000000L, 0x0L, 0x10L, 0x2000000L, 0x2000000000L, 0x40000000080L, 0x800000000080L, 0x80042002000010L, false, 0, 0x0L), 4), 18322); - - // gentest-4035 - assertEqual(perft(new Board(0x80800000000000L, 0x0L, 0x10L, 0x200L, 0x200000L, 0x40000000040L, 0x800000000040L, 0x80040000200210L, true, 0, 0x0L), 4), 0); - - // gentest-4036 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4037 - assertEqual(perft(new Board(0x7f80000048b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x48b7ffL, 0xff7f800000000000L, false, 0, 0x8100000000000081L), 4), 326113); - - // gentest-4038 - assertEqual(perft(new Board(0x5ba4000148b600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x148b6ffL, 0xff5ba40000000000L, true, 0, 0x8100000000000081L), 4), 348681); - - // gentest-4039 - assertEqual(perft(new Board(0x4ba410014ab400L, 0x4200000000000042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x214ab4fbL, 0xff4ba41000000000L, false, 0, 0x8100000000000081L), 4), 578559); - - // gentest-4040 - assertEqual(perft(new Board(0x43ac10014ab400L, 0x4200000000000042L, 0x2400000020000020L, 0x8100000000000180L, 0x10000000000008L, 0x1000000000000010L, 0x214ab5faL, 0xf753ac1000000000L, true, 0, 0x8100000000000080L), 4), 738264); - - // gentest-4041 - assertEqual(perft(new Board(0x43ac1100ca3400L, 0x4200000000000042L, 0x2000100020000020L, 0x8100000000000180L, 0x10000000000008L, 0x1000000000000010L, 0x120ca35faL, 0xf353bc1000000000L, false, 0, 0x8100000000000080L), 4), 782152); - - // gentest-4042 - assertEqual(perft(new Board(0x41ac1310ca2400L, 0x4200000000000042L, 0x2000000820000020L, 0x8100000000000180L, 0x10000000000008L, 0x1000000000000010L, 0x130ca25faL, 0xf351ac1a00000000L, true, 41, 0x8100000000000080L), 4), 809788); - - // gentest-4043 - assertEqual(perft(new Board(0x41ac1310ca2400L, 0x4200000000000840L, 0x2000100020000020L, 0x8100000000000180L, 0x10000000000001L, 0x1000000000000010L, 0x130ca2df1L, 0xf351bc1200000000L, false, 0, 0x8100000000000080L), 4), 895205); - - // gentest-4044 - assertEqual(perft(new Board(0x412c9112ca2400L, 0x4200000000000840L, 0x2000100020000020L, 0x8100000001000080L, 0x10000000000001L, 0x1000000000000010L, 0x131ca2cf1L, 0xf3513c9002000000L, true, 0, 0x8100000000000080L), 4), 994766); - - // gentest-4045 - assertEqual(perft(new Board(0x412c91924a2400L, 0x4200000000000840L, 0x2000000820000020L, 0x8100000001000080L, 0x10000000040000L, 0x1000000000000010L, 0x1b14e2cf0L, 0xf3512c9802000000L, false, 0, 0x8100000000000080L), 4), 830044); - - // gentest-4046 - assertEqual(perft(new Board(0x412c91924a2400L, 0x4200000000000840L, 0x2020800000000020L, 0x8100000001000080L, 0x10000000040000L, 0x1000000000000010L, 0x8001914e2cf0L, 0xf3712c9002000000L, true, 0, 0x8100000000000080L), 4), 735487); - - // gentest-4047 - assertEqual(perft(new Board(0x412c91924a2400L, 0x4000010000000042L, 0x2020800000000020L, 0x8100000001000080L, 0x10000000000001L, 0x1000000000000010L, 0x8001914a24f3L, 0xf1712d9002000000L, false, 0, 0x8100000000000080L), 4), 986483); - - // gentest-4048 - assertEqual(perft(new Board(0x412c81924a2400L, 0x4000010000000042L, 0x2020000000000020L, 0x200800001000080L, 0x10001000000000L, 0x1000000000000010L, 0x11914a24f2L, 0x7271ad8002000000L, true, 0, 0x80L), 4), 1121380); - - // gentest-4049 - assertEqual(perft(new Board(0x412c81926a0400L, 0x4000010000000042L, 0x2020000000000020L, 0x8200000001000080L, 0x10000000000001L, 0x1000000000000010L, 0x1916a04f3L, 0xf2712d8002000000L, false, 0, 0x80L), 4), 842800); - - // gentest-4050 - assertEqual(perft(new Board(0x410c81926a0400L, 0x4000010000000042L, 0x2020000000000020L, 0x8000020001000080L, 0x10200000000000L, 0x8000000000010L, 0x2001916a04f2L, 0xe0790f8002000000L, true, 0, 0x80L), 4), 1228957); - - // gentest-4051 - assertEqual(perft(new Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000100000000020L, 0x8000020000000180L, 0x10004000000000L, 0x8000000000010L, 0x41906a05f2L, 0xe0591f8002000000L, false, 0, 0x80L), 4), 1368127); - - // gentest-4052 - assertEqual(perft(new Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000100000000020L, 0x8000020000000180L, 0x400000040000000L, 0x8000000000010L, 0x1d06a05f2L, 0xe4491f8002000000L, true, 0, 0x80L), 4), 866320); - - // gentest-4053 - assertEqual(perft(new Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000100000800000L, 0x8000020000000180L, 0x200000040000000L, 0x8000000002000L, 0x1d0ea25c2L, 0xe2491f8002000000L, false, 0, 0x0L), 4), 691400); - - // gentest-4054 - assertEqual(perft(new Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000000000800000L, 0x8002000000000180L, 0x200100000000000L, 0x800000000002000L, 0x100190ea25c2L, 0xea430d8002000000L, true, 0, 0x0L), 4), 639090); - - // gentest-4055 - assertEqual(perft(new Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000000000800000L, 0x8020000000000081L, 0x200800000000000L, 0x800000000002000L, 0x800190ea24c3L, 0xea610d8002000000L, false, 0, 0x0L), 4), 1024716); - - // gentest-4056 - assertEqual(perft(new Board(0x14c81926a0400L, 0x4000010000000042L, 0x2000000000800000L, 0x8020000000000081L, 0x820000000000L, 0x800000000000020L, 0x800190ea04e3L, 0xe8214f8002000000L, true, 0, 0x0L), 4), 1314681); - - // gentest-4057 - assertEqual(perft(new Board(0x14489966a0000L, 0x4000010000000042L, 0x2000000000800000L, 0x8020000000000081L, 0x820000000000L, 0x800000000000020L, 0x800194ea00e3L, 0xe821478802000000L, false, 0, 0x0L), 4), 1596634); - - // gentest-4058 - assertEqual(perft(new Board(0x14489966a0000L, 0x4000010000000042L, 0x2008000000000000L, 0x8020000000000081L, 0x820000000000L, 0x800000000000020L, 0x88001946a00e3L, 0xe821478802000000L, true, 0, 0x0L), 4), 1818075); - - // gentest-4059 - assertEqual(perft(new Board(0x144899a620000L, 0x4000010000000042L, 0x2008000000000000L, 0x8080000000000081L, 0x820000000000L, 0x800000000000020L, 0x88009986200e3L, 0xe881478002000000L, false, 0, 0x0L), 4), 973793); - - // gentest-4060 - assertEqual(perft(new Board(0x104899a620000L, 0x4000010000000042L, 0x8000400000000L, 0x8080000000000081L, 0x400200000000L, 0x800000000000020L, 0x84009986200e3L, 0xc881058602000000L, true, 0, 0x0L), 4), 107406); - - // gentest-4061 - assertEqual(perft(new Board(0x100899a620000L, 0x4000010000001002L, 0x8000400000000L, 0x8080000000000180L, 0x400200000000L, 0x800000000000020L, 0x84001986211a2L, 0xc881018e02000000L, false, 0, 0x0L), 4), 1415607); - - // gentest-4062 - assertEqual(perft(new Board(0x100899a620000L, 0x4000010000001002L, 0x400000000L, 0x8000800000000180L, 0x4200000000L, 0x8000000000020L, 0x41986211a2L, 0xc009818e02000000L, true, 0, 0x0L), 4), 1048488); - - // gentest-4063 - assertEqual(perft(new Board(0x100899a620000L, 0x4000010000001002L, 0x400000000L, 0x8080000001000080L, 0x400200000000L, 0x8000000000020L, 0x4001996210a2L, 0xc089018e02000000L, false, 0, 0x0L), 4), 803926); - - // gentest-4064 - assertEqual(perft(new Board(0x100899a620000L, 0x4000010000001002L, 0x400000000L, 0x8080000001000080L, 0x800200000000L, 0x2000000000020L, 0x8001996210a2L, 0xc083018e02000000L, true, 0, 0x0L), 4), 886202); - - // gentest-4065 - assertEqual(perft(new Board(0x10089ba420000L, 0x4000010000001002L, 0x400000000L, 0x8080000001800000L, 0x8800000000000L, 0x2000000000020L, 0x8001b9c21022L, 0xc08b018c02000000L, false, 0, 0x0L), 4), 969539); - - // gentest-4066 - assertEqual(perft(new Board(0x10089ba420000L, 0x4200000000001800L, 0x400000000L, 0x8080000001800000L, 0x8800000000000L, 0x4000000000020L, 0x8001b9c21820L, 0xc28d008c02000000L, true, 0, 0x0L), 4), 984675); - - // gentest-4067 - assertEqual(perft(new Board(0x10089ba420000L, 0x4200000000000804L, 0x20000000000L, 0x8080000001800000L, 0x8010000000000L, 0x4000000000020L, 0x101b9c20824L, 0xc28d028802000000L, false, 0, 0x0L), 4), 672552); - - // gentest-4068 - assertEqual(perft(new Board(0x289ba420000L, 0x4200000000000804L, 0x0L, 0x8080000001800000L, 0x10000000000000L, 0x4000000000020L, 0x1b9c20824L, 0xc294028802000000L, true, 0, 0x0L), 4), 500251); - - // gentest-4069 - assertEqual(perft(new Board(0x289fa020000L, 0x4200000000000804L, 0x0L, 0x8080000001008000L, 0x80000000000L, 0x4000000000020L, 0x1f9028824L, 0xc2840a8802000000L, false, 0, 0x0L), 4), 726542); - - // gentest-4070 - assertEqual(perft(new Board(0x8bda020000L, 0x4200000000200004L, 0x0L, 0x8080000001008000L, 0x20000000L, 0x4000000000020L, 0x1d9228024L, 0xc284008a22000000L, true, 0, 0x0L), 4), 746564); - - // gentest-4071 - assertEqual(perft(new Board(0x8bda020000L, 0x4000040000200004L, 0x0L, 0x8080000001000080L, 0x20000000L, 0x4000000000010L, 0x1d9220094L, 0xc084048a22000000L, false, 0, 0x0L), 4), 753409); - - // gentest-4072 - assertEqual(perft(new Board(0x8bda020000L, 0x4000041000000004L, 0x0L, 0x8080000001000080L, 0x8000L, 0x2000000000010L, 0x11d9020094L, 0xc082048a02008000L, true, 0, 0x0L), 4), 616069); - - // gentest-4073 - assertEqual(perft(new Board(0x8bda020000L, 0x4000040000200004L, 0x0L, 0x8008000000000081L, 0x8000L, 0x2000000000010L, 0x1d8220095L, 0xc00a048a02008000L, false, 0, 0x0L), 4), 688345); - - // gentest-4074 - assertEqual(perft(new Board(0xcb9a020000L, 0x4000040000200004L, 0x0L, 0x8008000000000081L, 0x2L, 0x2000000000010L, 0x4198220095L, 0xc00a048a02000002L, true, 0, 0x0L), 4), 468200); - - // gentest-4075 - assertEqual(perft(new Board(0xcb9a020000L, 0x4000040000200004L, 0x0L, 0x8008000000000041L, 0x2L, 0x10000001000L, 0x4198221045L, 0xc008058a02000002L, false, 0, 0x0L), 4), 482587); - - // gentest-4076 - assertEqual(perft(new Board(0xca8a020000L, 0x4000000100200004L, 0x0L, 0x8004000000000041L, 0x2L, 0x10000001000L, 0x4888221045L, 0xc004018302000002L, true, 0, 0x0L), 4), 554804); - - // gentest-4077 - assertEqual(perft(new Board(0xca8a020000L, 0x4000000100200004L, 0x0L, 0x8004000000010040L, 0x2L, 0x1000000100000L, 0x4888330044L, 0xc005008302000002L, false, 0, 0x0L), 4), 523073); - - // gentest-4078 - assertEqual(perft(new Board(0xca8a020000L, 0x4000000100200004L, 0x0L, 0x8010000000010080L, 0x2L, 0x100000000100000L, 0x4888330084L, 0xc110008302000002L, true, 0, 0x0L), 4), 78996); - - // gentest-4079 - assertEqual(perft(new Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x8010000000010080L, 0x1L, 0x100000000002000L, 0x48882b2080L, 0xc110008302000001L, false, 0, 0x0L), 4), 606026); - - // gentest-4080 - assertEqual(perft(new Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x8010000000010080L, 0x100000000000L, 0x100000000004000L, 0x48882b4080L, 0xc110108302000000L, true, 0, 0x0L), 4), 1116942); - - // gentest-4081 - assertEqual(perft(new Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x9000000000000081L, 0x100000000000L, 0x100000000004000L, 0x48882a4081L, 0xd100108302000000L, false, 0, 0x0L), 4), 1228577); - - // gentest-4082 - assertEqual(perft(new Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x80100000000000c0L, 0x10000000L, 0x100000000004000L, 0x48882a40c0L, 0xc110008312000000L, true, 0, 0x0L), 4), 709234); - - // gentest-4083 - assertEqual(perft(new Board(0xca8a020000L, 0x4000001100200000L, 0x0L, 0x80010000000000c0L, 0x10000000L, 0x100000000002000L, 0x58882220c0L, 0xc101008312000000L, false, 0, 0x0L), 4), 651465); - - // gentest-4084 - assertEqual(perft(new Board(0xca8a020000L, 0x4008000100200000L, 0x0L, 0x80010000000000c0L, 0x800L, 0x100000000002000L, 0x80048882220c0L, 0xc101008302000800L, true, 0, 0x0L), 4), 39745); - - // gentest-4085 - assertEqual(perft(new Board(0xca8a020000L, 0x4008000100200000L, 0x0L, 0x80010000000000c0L, 0x2000L, 0x100000020000000L, 0x80048a82200c0L, 0xc101008302002000L, false, 0, 0x0L), 4), 339764); - - // gentest-4086 - assertEqual(perft(new Board(0xca8a020000L, 0x400a000000000000L, 0x0L, 0x80010000000000c0L, 0x200000L, 0x100001000000000L, 0x80058880200c0L, 0xc103008202200000L, true, 0, 0x0L), 4), 377895); - - // gentest-4087 - assertEqual(perft(new Board(0xca8a020000L, 0x6002000000000000L, 0x0L, 0x80000000000100c0L, 0x200000L, 0x100100000000000L, 0x20001048880200c0L, 0xc102008202210000L, false, 0, 0x0L), 4), 284660); - - // gentest-4088 - assertEqual(perft(new Board(0xce82020000L, 0x2000800000000000L, 0x0L, 0x80000000000100c0L, 0x200000L, 0x100100000000000L, 0x2000104c800200c0L, 0x8100808202210000L, true, 0, 0x0L), 4), 546558); - - // gentest-4089 - assertEqual(perft(new Board(0x4ca82020000L, 0x2000800000000000L, 0x0L, 0x8000000000010081L, 0x40000L, 0x100100000000000L, 0x2000144880020081L, 0x8100808202050000L, false, 0, 0x0L), 4), 518428); - - // gentest-4090 - assertEqual(perft(new Board(0x4ca82020000L, 0x2000800000000000L, 0x0L, 0x40010000000000a0L, 0x40000L, 0x100100000000000L, 0x20001448800200a0L, 0x4101808202040000L, true, 0, 0x0L), 4), 759721); - - // gentest-4091 - assertEqual(perft(new Board(0x4ca82020000L, 0x2000800000000000L, 0x0L, 0x40010000000000c0L, 0x800000L, 0x100001000000000L, 0x20000458800200c0L, 0x4101808202800000L, false, 0, 0x0L), 4), 467102); - - // gentest-4092 - assertEqual(perft(new Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x1004000000080L, 0x400000L, 0x100001000000000L, 0x2000045880020080L, 0x101808202400000L, true, 0, 0x0L), 4), 104381); - - // gentest-4093 - assertEqual(perft(new Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x1000000400080L, 0x8000L, 0x100100000000000L, 0x2000140880420080L, 0x101808202008000L, false, 0, 0x0L), 4), 522883); - - // gentest-4094 - assertEqual(perft(new Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x1000000400010L, 0x20000000000L, 0x100100000000000L, 0x2000140880420010L, 0x101828202000000L, true, 0, 0x0L), 4), 630763); - - // gentest-4095 - assertEqual(perft(new Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x15L, 0x20000000000L, 0x100100000000000L, 0x2000140880020014L, 0x100828202000001L, false, 0, 0x0L), 4), 356458); - - // gentest-4096 - assertEqual(perft(new Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x100001004L, 0x40L, 0x100100000000000L, 0x2000140880021004L, 0x100808302000040L, true, 0, 0x0L), 4), 674154); - - // gentest-4097 - assertEqual(perft(new Board(0x48a82020000L, 0x8800000000000L, 0x0L, 0x100001400L, 0x8L, 0x100100000000000L, 0x8140880021400L, 0x100808302000008L, false, 0, 0x0L), 4), 362819); - - // gentest-4098 - assertEqual(perft(new Board(0x48a82020000L, 0x4008000000000000L, 0x0L, 0x110000400L, 0x40L, 0x100100000000000L, 0x8140890020400L, 0x4100008302000040L, true, 0, 0x0L), 4), 676758); - - // gentest-4099 - assertEqual(perft(new Board(0x4008a82020000L, 0x4000200000000000L, 0x0L, 0x110000400L, 0x400000000000L, 0x100100000000000L, 0x4300890020400L, 0x4100408302000000L, false, 0, 0x0L), 4), 350418); - - // gentest-4100 - assertEqual(perft(new Board(0x4008a82020000L, 0x4000200000000000L, 0x0L, 0x110040000L, 0x400000000000L, 0x100100000000000L, 0x4300890060000L, 0x4100408302000000L, true, 0, 0x0L), 4), 369752); - - // gentest-4101 - assertEqual(perft(new Board(0x4008a82020000L, 0x4000000040000000L, 0x0L, 0x1100040000L, 0x400000L, 0x100100000000000L, 0x41018c0060000L, 0x4100008302400000L, false, 0, 0x0L), 4), 474529); - - // gentest-4102 - assertEqual(perft(new Board(0xa82020000L, 0x10000040000000L, 0x0L, 0x8100040000L, 0x4000000000000L, 0x100100000000000L, 0x1088c0060000L, 0x114000302000000L, true, 0, 0x0L), 4), 488217); - - // gentest-4103 - assertEqual(perft(new Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x8100040000L, 0x20000000000L, 0x100100000000000L, 0x988080060000L, 0x110020302000000L, false, 0, 0x0L), 4), 484906); - - // gentest-4104 - assertEqual(perft(new Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x4008000000020L, 0x20000000000L, 0x100100000000000L, 0x4988080020000L, 0x110020202000020L, true, 0, 0x0L), 4), 511834); - - // gentest-4105 - assertEqual(perft(new Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x200008000000020L, 0x20000000000L, 0x1100000000000L, 0x200988080020000L, 0x11020202000020L, false, 0, 0x0L), 4), 433677); - - // gentest-4106 - assertEqual(perft(new Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x8000008000000001L, 0x40000000000L, 0x1100000000000L, 0x8000988080020000L, 0x11040202000001L, true, 0, 0x0L), 4), 576087); - - // gentest-4107 - assertEqual(perft(new Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x800000800000001L, 0x4000000L, 0x1100000000000L, 0x800980880020000L, 0x11000206000001L, false, 0, 0x0L), 4), 560729); - - // gentest-4108 - assertEqual(perft(new Board(0x80282020000L, 0x4010000000000000L, 0x0L, 0x800000800000040L, 0x4000000L, 0x1100000000000L, 0x4800180880020000L, 0x11000206000040L, true, 0, 0x0L), 4), 391759); - - // gentest-4109 - assertEqual(perft(new Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x800000800000080L, 0x4000000L, 0x1001000000000L, 0x800281880020000L, 0x11000206000080L, false, 0, 0x0L), 4), 470507); - - // gentest-4110 - assertEqual(perft(new Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x800000000000088L, 0x40000000000L, 0x2001000000000L, 0x800281080020008L, 0x12040202000080L, true, 0, 0x0L), 4), 725203); - - // gentest-4111 - assertEqual(perft(new Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x2000000008000080L, 0x4000L, 0x2001000000000L, 0x2000281088020000L, 0x12000202004080L, false, 0, 0x0L), 4), 804650); - - // gentest-4112 - assertEqual(perft(new Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x2000000008000080L, 0x1000L, 0x2000010000000L, 0x2000280098020000L, 0x12000202001080L, true, 0, 0x0L), 4), 28253); - - // gentest-4113 - assertEqual(perft(new Board(0x80282020000L, 0x600000000000L, 0x0L, 0x2000000008000080L, 0x1000L, 0x2000000400000L, 0x2000280088420000L, 0x2400202001080L, false, 0, 0x0L), 4), 687574); - - // gentest-4114 - assertEqual(perft(new Board(0x80282020000L, 0x400010000000L, 0x0L, 0x2000000008000080L, 0x200000L, 0x10000400000L, 0x2000080098420000L, 0x410202200080L, true, 0, 0x0L), 4), 19297); - - // gentest-4115 - assertEqual(perft(new Board(0x80282020000L, 0x400010000000L, 0x0L, 0x280004L, 0x0L, 0x10000400000L, 0x800906a0000L, 0x410202000004L, false, 0, 0x0L), 4), 352297); - - // gentest-4116 - assertEqual(perft(new Board(0x80282020000L, 0x1010000000L, 0x0L, 0x280001L, 0x0L, 0x10020000000L, 0x800b02a0000L, 0x11202000001L, true, 0, 0x0L), 4), 271258); - - // gentest-4117 - assertEqual(perft(new Board(0x80282020000L, 0x1000040000L, 0x0L, 0x280001L, 0x0L, 0x24000000000L, 0x840802e0000L, 0x21202000001L, false, 0, 0x0L), 4), 532307); - - // gentest-4118 - assertEqual(perft(new Board(0x80282020000L, 0x20000000040000L, 0x0L, 0x280001L, 0x0L, 0x10040000000L, 0x800c02e0000L, 0x20010202000001L, true, 0, 0x0L), 4), 310371); - - // gentest-4119 - assertEqual(perft(new Board(0x80282020000L, 0x20000000000008L, 0x0L, 0x290000L, 0x0L, 0x10020000000L, 0x800a02a0008L, 0x20010202010000L, false, 0, 0x0L), 4), 122005); - - // gentest-4120 - assertEqual(perft(new Board(0x8202020000L, 0x80000000008L, 0x0L, 0x290000L, 0x0L, 0x20020000000L, 0x80202a0008L, 0xa0202010000L, true, 0, 0x0L), 4), 216179); - - // gentest-4121 - assertEqual(perft(new Board(0x8202020000L, 0x80000000008L, 0x0L, 0x880001L, 0x0L, 0x20040000000L, 0x80408a0008L, 0xa0202000001L, false, 0, 0x0L), 4), 320238); - - // gentest-4122 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4123 - assertEqual(perft(new Board(0x7f80400000bf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400000bfffL, 0xff7f800000000000L, false, 0, 0x8100000000000081L), 4), 213463); - - // gentest-4124 - assertEqual(perft(new Board(0x7b04c00008b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400008b7ffL, 0xff7b048000000000L, true, 0, 0x8100000000000081L), 4), 341701); - - // gentest-4125 - assertEqual(perft(new Board(0x7b04c000883700L, 0x200800000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40009837fbL, 0xbf7b848000000000L, false, 0, 0x8100000000000081L), 4), 390995); - - // gentest-4126 - assertEqual(perft(new Board(0x6a15c000883700L, 0x200800000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x4000983ff3L, 0xbf6a958000000000L, true, 0, 0x8100000000000081L), 4), 707778); - - // gentest-4127 - assertEqual(perft(new Board(0x6a15c000893600L, 0x200800000000042L, 0x410000000100020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40009936fbL, 0x9f7a958000000000L, false, 0, 0x8100000000000081L), 4), 608495); - - // gentest-4128 - assertEqual(perft(new Board(0x6a158000893600L, 0x200800000040040L, 0x400200000100020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x9d36f9L, 0x9f6ab58000000000L, true, 0, 0x8100000000000081L), 4), 869646); - - // gentest-4129 - assertEqual(perft(new Board(0x6a148100893600L, 0x200800000000042L, 0x400200000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x8936ffL, 0x9f6ab48100000000L, false, 0, 0x8100000000000081L), 4), 590047); - - // gentest-4130 - assertEqual(perft(new Board(0x62148902893400L, 0x200800000000042L, 0x400200000000024L, 0x180000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x28934ffL, 0x1fe2b48900000000L, true, 0, 0x100000000000081L), 4), 766788); - - // gentest-4131 - assertEqual(perft(new Board(0x62148983083400L, 0x200800000000042L, 0x400200000000024L, 0x180000000000081L, 0x8000000000008L, 0x1000000000000010L, 0x830834ffL, 0x17eab48900000000L, false, 0, 0x100000000000081L), 4), 779151); - - // gentest-4132 - assertEqual(perft(new Board(0x62148983083400L, 0x200800000800002L, 0x410000000000024L, 0x180000000000081L, 0x8000000000008L, 0x800000000000010L, 0x838834bfL, 0xffa948900000000L, true, 0, 0x81L), 4), 706508); - - // gentest-4133 - assertEqual(perft(new Board(0x62148883281400L, 0x200800020000002L, 0x410000000000024L, 0x180000000000081L, 0x8000000000008L, 0x800000000000010L, 0xa12814bfL, 0xffa948802000000L, false, 0, 0x81L), 4), 758588); - - // gentest-4134 - assertEqual(perft(new Board(0x62140883281400L, 0x818000000002L, 0x410000000000024L, 0x180000000000081L, 0x8000000000008L, 0x1000000000000010L, 0x80812814bfL, 0x15fa950802000000L, true, 0, 0x81L), 4), 850320); - - // gentest-4135 - assertEqual(perft(new Board(0x60140a832c1000L, 0x818000000002L, 0x410000000800004L, 0x180000000000081L, 0x8000000000008L, 0x1000000000000010L, 0x8081ac109fL, 0x15f8950a02000000L, false, 0, 0x81L), 4), 1522016); - - // gentest-4136 - assertEqual(perft(new Board(0x20140a832c1000L, 0x810000000002L, 0x410000000800004L, 0x41000000000081L, 0x8000000000008L, 0x1000000000000010L, 0x81ac109fL, 0x1479950a02000000L, true, 0, 0x81L), 4), 1664224); - - // gentest-4137 - assertEqual(perft(new Board(0x20140a832c1000L, 0x4000010000010000L, 0x410800000800000L, 0x41000000000081L, 0x8000000000008L, 0x1000000000000010L, 0x800081ad1099L, 0x5479150a02000000L, false, 0, 0x81L), 4), 1846766); - - // gentest-4138 - assertEqual(perft(new Board(0x20140a932c0000L, 0x4000010000010000L, 0x400800400800000L, 0x140000000000081L, 0x8000000000008L, 0x1000000000000010L, 0x800091ad0099L, 0x5568150e02000000L, true, 0, 0x81L), 4), 2514237); - - // gentest-4139 - assertEqual(perft(new Board(0x20140a832c0000L, 0x4000010000010000L, 0x400000400900000L, 0x140000000000081L, 0x10000000000008L, 0x1000000000000010L, 0x881bd0099L, 0x5570150602000000L, false, 0, 0x81L), 4), 2972410); - - // gentest-4140 - assertEqual(perft(new Board(0x20041a832c0000L, 0x4000010000010000L, 0x400000400900000L, 0x140000000000084L, 0x4000000008L, 0x1000000000000010L, 0x881bd009cL, 0x5560055602000000L, true, 0, 0x80L), 4), 3233859); - - // gentest-4141 - assertEqual(perft(new Board(0x20041a832c0000L, 0x4000010000010000L, 0x400000400100000L, 0x41000000000084L, 0x4000000400L, 0x1000000000000010L, 0x4000008813d0494L, 0x5061055602000000L, false, 0, 0x80L), 4), 3458024); - - // gentest-4142 - assertEqual(perft(new Board(0x20041aa30c0000L, 0x4004000000010000L, 0x400000400100000L, 0x1400000000084L, 0x4000000400L, 0x1000000000000010L, 0x4000008a11d0494L, 0x5025445602000000L, true, 0, 0x80L), 4), 4425251); - - // gentest-4143 - assertEqual(perft(new Board(0x20041aa10c0000L, 0x4004000000010000L, 0x400000400000000L, 0x1400000000084L, 0x4000004000L, 0x1000000000000010L, 0x400000ca1094094L, 0x5025445200040000L, false, 0, 0x80L), 4), 3779344); - - // gentest-4144 - assertEqual(perft(new Board(0x241aa10c0000L, 0x4004000000010000L, 0x400000400000000L, 0x1400000000084L, 0x4020L, 0x1000000000000010L, 0x400000ca10900b4L, 0x5005641200044000L, true, 0, 0x80L), 4), 2510256); - - // gentest-4145 - assertEqual(perft(new Board(0x241aa00c0000L, 0x4004000000000002L, 0x400000400000000L, 0x1400000000084L, 0x800020L, 0x1000000000000010L, 0x400000ea00800b6L, 0x5005641000840000L, false, 0, 0x80L), 4), 2699378); - - // gentest-4146 - assertEqual(perft(new Board(0x241aa00c0000L, 0x4100000000000002L, 0x2000400000000L, 0x1400000000084L, 0x4020L, 0x1000000000000010L, 0x2000ea00800b6L, 0x5101641000044000L, true, 0, 0x80L), 4), 1957006); - - // gentest-4147 - assertEqual(perft(new Board(0x201aa00c0000L, 0x4100000000000002L, 0x40008000000L, 0x1400000000084L, 0x4020L, 0x20000000000010L, 0x40aa80800b6L, 0x4121601000044000L, false, 0, 0x80L), 4), 1453359); - - // gentest-4148 - assertEqual(perft(new Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000008000000L, 0x1400000000084L, 0x800020L, 0x2000000000000010L, 0x8000aa80800b6L, 0x6101601000840000L, true, 0, 0x80L), 4), 1904297); - - // gentest-4149 - assertEqual(perft(new Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000008000000L, 0x2400000000084L, 0x800400L, 0x2000000000000010L, 0x8000aa8080496L, 0x6102601000840000L, false, 0, 0x80L), 4), 1615546); - - // gentest-4150 - assertEqual(perft(new Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000008000000L, 0x2400000000084L, 0x440L, 0x2000000000002000L, 0x8000aa8082486L, 0x6102601000040040L, true, 0, 0x0L), 4), 127680); - - // gentest-4151 - assertEqual(perft(new Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000000L, 0x8404000000080L, 0x400L, 0x2000000000002000L, 0x4aa8082482L, 0x6108601000040000L, false, 0, 0x0L), 4), 1249019); - - // gentest-4152 - assertEqual(perft(new Board(0x200aa00c0000L, 0x4004000000000002L, 0x8000000L, 0x40401000000080L, 0x400L, 0x2000000000002000L, 0x1aa8082482L, 0x6044600000040000L, true, 0, 0x0L), 4), 817263); - - // gentest-4153 - assertEqual(perft(new Board(0x1aa00c0000L, 0x4004000000000002L, 0x8000000L, 0x40400000004000L, 0x400L, 0x2000000000002000L, 0xaa8086402L, 0x6044401000040000L, false, 0, 0x0L), 4), 1053898); - - // gentest-4154 - assertEqual(perft(new Board(0x1aa00c0000L, 0x4004000000000002L, 0x8000000L, 0x40000000404000L, 0x4L, 0x1000000000002000L, 0xaa8086006L, 0x5044001000440000L, true, 0, 0x0L), 4), 943379); - - // gentest-4155 - assertEqual(perft(new Board(0xaa00c0000L, 0x4004000000000002L, 0x1000000000L, 0x20000000404000L, 0x40L, 0x1000000000002000L, 0x1aa0086042L, 0x5024000000440000L, false, 0, 0x0L), 4), 645533); - - // gentest-4156 - assertEqual(perft(new Board(0xa800c0000L, 0x4004000000000002L, 0x20000000L, 0x804000L, 0x40L, 0x1000000000002000L, 0xaa0086042L, 0x5004000000840000L, true, 0, 0x0L), 4), 414972); - - // gentest-4157 - assertEqual(perft(new Board(0xa88040000L, 0x4100000000000002L, 0x8000L, 0x804000L, 0x40L, 0x1000000000002000L, 0xa8800e042L, 0x5100000000840000L, false, 0, 0x0L), 4), 194625); - - // gentest-4158 - assertEqual(perft(new Board(0xa88040000L, 0x100200000000002L, 0x8000L, 0x400000800000L, 0x40L, 0x800000000002000L, 0x400a8800a042L, 0x900200000840000L, true, 0, 0x0L), 4), 366322); - - // gentest-4159 - assertEqual(perft(new Board(0xa88040000L, 0x220000000002L, 0x8000L, 0xc00000L, 0x40L, 0x800000000002000L, 0xa8840a042L, 0x800220000840000L, false, 0, 0x0L), 4), 328540); - - // gentest-4160 - assertEqual(perft(new Board(0xa88040000L, 0x20010000002L, 0x0L, 0x408000L, 0x4000L, 0x800000000002000L, 0xa88406002L, 0x800020010048000L, true, 0, 0x0L), 4), 81529); - - // gentest-4161 - assertEqual(perft(new Board(0xa88040000L, 0x24000000002L, 0x0L, 0x408000L, 0x4000L, 0x800000000100000L, 0xa88504002L, 0x800024000048000L, false, 0, 0x0L), 4), 321004); - - // gentest-4162 - assertEqual(perft(new Board(0xa88040000L, 0x100004000000002L, 0x0L, 0x408000L, 0x100L, 0x8000000100000L, 0xa88500102L, 0x108004000048000L, true, 0, 0x0L), 4), 411462); - - // gentest-4163 - assertEqual(perft(new Board(0xa88040000L, 0x100004000000002L, 0x0L, 0x800000L, 0x400L, 0x8000000100000L, 0xa88900402L, 0x108004000040000L, false, 0, 0x0L), 4), 178335); - - // gentest-4164 - assertEqual(perft(new Board(0xa88040000L, 0x100000010000002L, 0x0L, 0x800000L, 0x2000000000L, 0x800000000100000L, 0x2a88900002L, 0x900000010040000L, true, 0, 0x0L), 4), 134828); - - // gentest-4165 - assertEqual(perft(new Board(0xa88000000L, 0x20010000002L, 0x0L, 0x40000L, 0x2000000000L, 0x800000000001000L, 0x2a88041002L, 0x800020010000000L, false, 0, 0x0L), 4), 305392); - - // gentest-4166 - assertEqual(perft(new Board(0xa88000000L, 0x20400000002L, 0x0L, 0x40000L, 0x2000000000000000L, 0x8000000001000L, 0x2000000a88041002L, 0x8020400000000L, true, 0, 0x0L), 4), 210319); - - // gentest-4167 - assertEqual(perft(new Board(0xa88000000L, 0x400000000000002L, 0x0L, 0x400000000L, 0x4000000000000000L, 0x8000000001000L, 0x4000000e88001002L, 0x408000000000000L, false, 0, 0x0L), 4), 44317); - - // gentest-4168 - assertEqual(perft(new Board(0xa88000000L, 0x20000000000002L, 0x0L, 0x4000000L, 0x4000000000000000L, 0x8000000001000L, 0x4000000a8c001002L, 0x28000000000000L, true, 0, 0x0L), 4), 67269); - - // gentest-4169 - assertEqual(perft(new Board(0xa88000000L, 0x80000000002L, 0x0L, 0x4000000L, 0x4000000000000000L, 0x8000000001000L, 0x4000000a8c001002L, 0x8080000000000L, false, 0, 0x0L), 4), 83462); - - // gentest-4170 - assertEqual(perft(new Board(0xa88000000L, 0x4000002L, 0x0L, 0x0L, 0x8000000000000000L, 0x10000000001000L, 0x8000000a88001002L, 0x10000004000000L, true, 0, 0x0L), 4), 44503); - - // gentest-4171 - assertEqual(perft(new Board(0xa88000000L, 0x4000002L, 0x0L, 0x0L, 0x400000000000L, 0x800000000001000L, 0x400a88001002L, 0x800000004000000L, false, 0, 0x0L), 4), 109944); - - // gentest-4172 - assertEqual(perft(new Board(0xa88000000L, 0x10002L, 0x0L, 0x0L, 0x80000000000L, 0x1000000000001000L, 0x80a88001002L, 0x1000000000010000L, true, 0, 0x0L), 4), 32001); - - // gentest-4173 - assertEqual(perft(new Board(0xa88000000L, 0x402L, 0x0L, 0x0L, 0x200000000000000L, 0x1000000000001000L, 0x200000a88001002L, 0x1000000000000400L, false, 0, 0x0L), 4), 16385); - - // gentest-4174 - assertEqual(perft(new Board(0xa88000000L, 0x402L, 0x0L, 0x0L, 0x1000000000000L, 0x200000001000L, 0x1000a88001002L, 0x200000000400L, true, 0, 0x0L), 4), 47193); - - // gentest-4175 - assertEqual(perft(new Board(0x20888000000L, 0x2000002L, 0x0L, 0x0L, 0x80000000000000L, 0x200000001000L, 0x80020888001002L, 0x200002000000L, false, 0, 0x0L), 4), 25593); - - // gentest-4176 - assertEqual(perft(new Board(0x20088000000L, 0x800000002L, 0x0L, 0x0L, 0x800000000000L, 0x10000000001000L, 0x820088001002L, 0x10000800000000L, true, 0, 0x0L), 4), 62905); - - // gentest-4177 - assertEqual(perft(new Board(0x20088000000L, 0x800000002L, 0x0L, 0x0L, 0x4000000000L, 0x80000000020L, 0x24088000022L, 0x80800000000L, false, 0, 0x0L), 4), 78141); - - // gentest-4178 - assertEqual(perft(new Board(0x20088000000L, 0x800000002L, 0x0L, 0x0L, 0x2000000000L, 0x80000000020L, 0x22088000022L, 0x80800000000L, true, 0, 0x0L), 4), 61122); - - // gentest-4179 - assertEqual(perft(new Board(0x20088000000L, 0x10000000000800L, 0x0L, 0x0L, 0x400000000000000L, 0x80000000020L, 0x400020088000820L, 0x10080000000000L, false, 0, 0x0L), 4), 39049); - - // gentest-4180 - assertEqual(perft(new Board(0x20088000000L, 0x4000000000000800L, 0x0L, 0x0L, 0x400000000000000L, 0x10000000004000L, 0x400020088004800L, 0x4010000000000000L, true, 0, 0x0L), 4), 46879); - - // gentest-4181 - assertEqual(perft(new Board(0x20088000000L, 0x4000000000000800L, 0x0L, 0x0L, 0x4L, 0x20000000004000L, 0x20088004804L, 0x4020000000000000L, false, 0, 0x0L), 4), 98338); - - // gentest-4182 - assertEqual(perft(new Board(0x20088000000L, 0x400000000000800L, 0x0L, 0x0L, 0x80L, 0x20000000004000L, 0x20088004880L, 0x420000000000000L, true, 0, 0x0L), 4), 78271); - - // gentest-4183 - assertEqual(perft(new Board(0x20088000000L, 0x400000000000002L, 0x0L, 0x0L, 0x40L, 0x40000000004000L, 0x20088004042L, 0x440000000000000L, false, 0, 0x0L), 4), 58984); - - // gentest-4184 - assertEqual(perft(new Board(0x88000000L, 0x20000000002L, 0x0L, 0x0L, 0x40L, 0x200000200000L, 0x88200042L, 0x220000000000L, true, 0, 0x0L), 4), 65855); - - // gentest-4185 - assertEqual(perft(new Board(0x88000000L, 0x8000000010000L, 0x0L, 0x0L, 0x40L, 0x200020000000L, 0xa8010040L, 0x8200000000000L, false, 0, 0x0L), 4), 56501); - - // gentest-4186 - assertEqual(perft(new Board(0x88000000L, 0x2000000000010000L, 0x0L, 0x0L, 0x40L, 0x20000000200000L, 0x88210040L, 0x2020000000000000L, true, 0, 0x0L), 4), 69366); - - // gentest-4187 - assertEqual(perft(new Board(0x8008000000L, 0x8000000010000L, 0x0L, 0x0L, 0x40L, 0x20000000100000L, 0x8008110040L, 0x28000000000000L, false, 0, 0x0L), 4), 85394); - - // gentest-4188 - assertEqual(perft(new Board(0x8008000000L, 0x400010000L, 0x0L, 0x0L, 0x4000000000L, 0x1000000000100000L, 0xc008110000L, 0x1000000400000000L, true, 0, 0x0L), 4), 65940); - - // gentest-4189 - assertEqual(perft(new Board(0x8008000000L, 0x400010000L, 0x0L, 0x0L, 0x1000000000000000L, 0x8000000100000L, 0x1000008008110000L, 0x8000400000000L, false, 0, 0x0L), 4), 15714); - - // gentest-4190 - assertEqual(perft(new Board(0x8008000000L, 0x8000000010000L, 0x0L, 0x0L, 0x800000000000000L, 0x80000100000L, 0x800008008110000L, 0x8080000000000L, true, 0, 0x0L), 4), 29695); - - // gentest-4191 - assertEqual(perft(new Board(0x8008000000L, 0x200000000010000L, 0x0L, 0x0L, 0x0L, 0x80010000000L, 0x8018010000L, 0x200080000000000L, false, 0, 0x0L), 4), 10579); - - // gentest-4192 - assertEqual(perft(new Board(0x8008000000L, 0x10000000400L, 0x0L, 0x0L, 0x0L, 0x10000010000000L, 0x8018000400L, 0x10010000000000L, true, 0, 0x0L), 4), 20954); - - // gentest-4193 - assertEqual(perft(new Board(0x8008000000L, 0x200000000000001L, 0x0L, 0x0L, 0x0L, 0x10000000100000L, 0x8008100001L, 0x210000000000000L, false, 0, 0x0L), 4), 14224); - - // gentest-4194 - assertEqual(perft(new Board(0x8008000000L, 0x1000000001L, 0x0L, 0x0L, 0x0L, 0x10000000001000L, 0x8008001001L, 0x10001000000000L, true, 0, 0x0L), 4), 23747); - - // gentest-4195 - assertEqual(perft(new Board(0x9000000000L, 0x1L, 0x0L, 0x0L, 0x0L, 0x20000000000020L, 0x9000000021L, 0x20000000000000L, false, 0, 0x0L), 4), 3105); - - // gentest-4196 - assertEqual(perft(new Board(0x9000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x800000020L, 0x9000020020L, 0x800000000L, true, 0, 0x0L), 4), 5544); - - // gentest-4197 - assertEqual(perft(new Board(0x9000000000L, 0x10000000L, 0x0L, 0x0L, 0x0L, 0x4000020L, 0x9010000020L, 0x4000000L, false, 0, 0x0L), 4), 7851); - - // gentest-4198 - assertEqual(perft(new Board(0x9000000000L, 0x800L, 0x0L, 0x0L, 0x0L, 0x8000020L, 0x9000000820L, 0x8000000L, true, 0, 0x0L), 4), 5405); - - // gentest-4199 - assertEqual(perft(new Board(0x9000000000L, 0x800L, 0x0L, 0x0L, 0x0L, 0x800100000L, 0x9000100800L, 0x800000000L, false, 0, 0x0L), 4), 4449); - - // gentest-4200 - assertEqual(perft(new Board(0x9000000000L, 0x800L, 0x0L, 0x0L, 0x0L, 0x8000020000000L, 0x9020000800L, 0x8000000000000L, true, 0, 0x0L), 4), 8370); - - // gentest-4201 - assertEqual(perft(new Board(0x9000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x400000000100000L, 0x9000120000L, 0x400000000000000L, false, 0, 0x0L), 4), 7563); - - // gentest-4202 - assertEqual(perft(new Board(0x9000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x40010000000L, 0x9010020000L, 0x40000000000L, true, 0, 0x0L), 4), 7023); - - // gentest-4203 - assertEqual(perft(new Board(0x801000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x4000008000000L, 0x801008020000L, 0x4000000000000L, false, 0, 0x0L), 4), 7764); - - // gentest-4204 - assertEqual(perft(new Board(0x801000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x8000000100000L, 0x801000120000L, 0x8000000000000L, true, 0, 0x0L), 4), 8913); - - // gentest-4205 - assertEqual(perft(new Board(0x801000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x800000000200000L, 0x801000220000L, 0x800000000000000L, false, 0, 0x0L), 4), 7190); - - // gentest-4206 - assertEqual(perft(new Board(0x801000000000L, 0x400000000L, 0x0L, 0x0L, 0x0L, 0x800000000200000L, 0x801400200000L, 0x800000000000000L, true, 0, 0x0L), 4), 6240); - - // gentest-4207 - assertEqual(perft(new Board(0x80001000000000L, 0x8000000000000L, 0x0L, 0x0L, 0x0L, 0x10000000200000L, 0x88001000200000L, 0x10000000000000L, false, 0, 0x0L), 4), 6725); - - // gentest-4208 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4209 - assertEqual(perft(new Board(0xfd02000100fe00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x180febfL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 239574); - - // gentest-4210 - assertEqual(perft(new Board(0xf902040100fe00L, 0x4000010000800002L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x180ffbeL, 0xfdf9030400000000L, true, 0, 0x8100000000000080L), 4), 227500); - - // gentest-4211 - assertEqual(perft(new Board(0xf902040120de00L, 0x210000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x120dffeL, 0xbdf9230400000000L, false, 0, 0x8100000000000080L), 4), 236461); - - // gentest-4212 - assertEqual(perft(new Board(0x6912842100de00L, 0x210000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x2100dffeL, 0xbd69338400000000L, true, 0, 0x8100000000000080L), 4), 362769); - - // gentest-4213 - assertEqual(perft(new Board(0x6912800500de00L, 0x210000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x10000100dffeL, 0xbd69238004000000L, false, 0, 0x8100000000000080L), 4), 479246); - - // gentest-4214 - assertEqual(perft(new Board(0x4912800d00d600L, 0x210000000042L, 0x2400000000000024L, 0x4100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x900d7feL, 0x7d49338004000000L, true, 0, 0x100000000000080L), 4), 632364); - - // gentest-4215 - assertEqual(perft(new Board(0x4912800d805600L, 0x200400010040L, 0x2400000000000024L, 0x4100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x98157fcL, 0x7d49328404000000L, false, 0, 0x100000000000080L), 4), 630845); - - // gentest-4216 - assertEqual(perft(new Board(0x4912800f805400L, 0x80000400010040L, 0x2400000000000024L, 0x4200000000000180L, 0x800000000000008L, 0x1000000000000010L, 0xb8155fcL, 0x7ec9128404000000L, true, 0, 0x80L), 4), 787293); - - // gentest-4217 - assertEqual(perft(new Board(0x4912800bc41400L, 0x80000400000042L, 0x2400000000000024L, 0x4200000000000180L, 0x800000000000008L, 0x1000000000000010L, 0xbc015feL, 0x7ec9128400040000L, false, 0, 0x80L), 4), 719963); - - // gentest-4218 - assertEqual(perft(new Board(0x4912800bc41400L, 0x80000400000042L, 0x2400000000000024L, 0x4200000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xbc014ffL, 0x7ec9128400040000L, true, 0, 0x80L), 4), 709534); - - // gentest-4219 - assertEqual(perft(new Board(0x491204c9841400L, 0x80000000000042L, 0x2400000000000024L, 0x4200000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4498014ffL, 0x7ec9120080040000L, false, 0, 0x80L), 4), 432781); - - // gentest-4220 - assertEqual(perft(new Board(0x91240c9841400L, 0x80000000000042L, 0x2400000000000024L, 0x4200000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x200498014ffL, 0x7e89104080040000L, true, 0, 0x80L), 4), 477632); - - // gentest-4221 - assertEqual(perft(new Board(0xb1040c9841400L, 0x80000000000042L, 0x2400000000004004L, 0x4200000000000081L, 0x20000000008L, 0x1000000000000010L, 0x20000498054dfL, 0x7689124080040000L, false, 0, 0x80L), 4), 1081636); - - // gentest-4222 - assertEqual(perft(new Board(0x91040c9841400L, 0x200000000042L, 0x2402000000000004L, 0x4200000000000081L, 0x8L, 0x1000000000000010L, 0x20000498014dfL, 0x7609304080040000L, true, 0, 0x80L), 4), 666515); - - // gentest-4223 - assertEqual(perft(new Board(0x91040c9841400L, 0x8000000042L, 0x2400010000000004L, 0x4200000000000081L, 0x8L, 0x1000000000000020L, 0x100498014efL, 0x760910c080040000L, false, 0, 0x0L), 4), 688888); - - // gentest-4224 - assertEqual(perft(new Board(0x91040c9841400L, 0x8000000042L, 0x440010000000004L, 0x4000000002000180L, 0x8L, 0x1000000000000020L, 0x100498015eeL, 0x544910c082040000L, true, 0, 0x0L), 4), 773417); - - // gentest-4225 - assertEqual(perft(new Board(0x91040c9841400L, 0x8000000042L, 0x440010000000010L, 0x4200000000000180L, 0x8L, 0x1000000000000020L, 0x100498015faL, 0x564910c080040000L, false, 0, 0x0L), 4), 568849); - - // gentest-4226 - assertEqual(perft(new Board(0x11840c9841400L, 0x200000200002L, 0x440010000000010L, 0x4200000000000180L, 0x8L, 0x1000000000000020L, 0x10049a015baL, 0x5641384080040000L, true, 0, 0x0L), 4), 947558); - - // gentest-4227 - assertEqual(perft(new Board(0x11840d9840400L, 0x200000200002L, 0x440010000000010L, 0x4000000002010080L, 0x8L, 0x1000000000000020L, 0x10059a104baL, 0x5441384082040000L, false, 0, 0x0L), 4), 1134111); - - // gentest-4228 - assertEqual(perft(new Board(0x11848d1840400L, 0x200000200002L, 0x440010000000010L, 0x4200000000010080L, 0x8L, 0x20000000000020L, 0x10851a104baL, 0x4661384080040000L, true, 0, 0x0L), 4), 1218263); - - // gentest-4229 - assertEqual(perft(new Board(0x11859c0840400L, 0x200000200002L, 0x400810000000010L, 0x4200000000010080L, 0x8L, 0x20000000000020L, 0x11940a104baL, 0x4621b84080040000L, false, 0, 0x0L), 4), 1355848); - - // gentest-4230 - assertEqual(perft(new Board(0x11819c0840400L, 0x204000000002L, 0x400810000000010L, 0x4000000200010080L, 0x8L, 0x2000000000000020L, 0x159408104baL, 0x6401b80280040000L, true, 0, 0x0L), 4), 1097925); - - // gentest-4231 - assertEqual(perft(new Board(0x11811c0800400L, 0x204000000002L, 0x400810000000010L, 0x4000000800040040L, 0x8L, 0x2000000000000020L, 0x1514084047aL, 0x6401b80880000000L, false, 0, 0x0L), 4), 1109305); - - // gentest-4232 - assertEqual(perft(new Board(0x11811c0800400L, 0x80004000000002L, 0x400810000002000L, 0x8000000800040040L, 0x8L, 0x2000000000000020L, 0x1514084246aL, 0xa481980880000000L, true, 0, 0x0L), 4), 822524); - - // gentest-4233 - assertEqual(perft(new Board(0x11811c0800400L, 0x80000000000002L, 0x400810000002000L, 0x8000000800400040L, 0x8L, 0x1000000000000020L, 0x80011140c0246aL, 0x9401980880000000L, false, 0, 0x0L), 4), 1013518); - - // gentest-4234 - assertEqual(perft(new Board(0x11801c0800400L, 0x80000000010000L, 0x400010020002000L, 0x8000001000400040L, 0x8L, 0x1000000000000020L, 0x80010140c12468L, 0x94011810a0000000L, true, 0, 0x0L), 4), 1204810); - - // gentest-4235 - assertEqual(perft(new Board(0x11801c0800400L, 0x80000000010000L, 0x400010020002000L, 0x2000001000020040L, 0x8L, 0x1000000000004000L, 0x80010140836448L, 0x34011810a0000000L, false, 0, 0x0L), 4), 2229656); - - // gentest-4236 - assertEqual(perft(new Board(0x11801c0800400L, 0x80000000010000L, 0x2810000002000L, 0x2000001000020040L, 0x8L, 0x1000000000000020L, 0x80010140832468L, 0x3003981080000000L, true, 0, 0x0L), 4), 1693920); - - // gentest-4237 - assertEqual(perft(new Board(0x1901c0800400L, 0x80000000010000L, 0x2800000002000L, 0x2000001000020080L, 0x8L, 0x1000000000000020L, 0x820001408324a8L, 0x3000991080000000L, false, 0, 0x0L), 4), 1412622); - - // gentest-4238 - assertEqual(perft(new Board(0x1901c0800400L, 0x80000000010000L, 0x2800000000000L, 0x600002080L, 0x8L, 0x1000000000000020L, 0x820003408104a8L, 0x1000990480002000L, true, 0, 0x0L), 4), 106838); - - // gentest-4239 - assertEqual(perft(new Board(0x1901c0840000L, 0x80000000010000L, 0x42000000000000L, 0x600000080L, 0x8L, 0x1000000000002000L, 0x82000340852088L, 0x1040190480000000L, false, 0, 0x0L), 4), 1119902); - - // gentest-4240 - assertEqual(perft(new Board(0x911c0840000L, 0x80000000010000L, 0x42000000000000L, 0x600000080L, 0x8L, 0x10000000000020L, 0x820003408500a8L, 0x50091480000000L, true, 0, 0x0L), 4), 590814); - - // gentest-4241 - assertEqual(perft(new Board(0x95180840000L, 0x80000000010000L, 0x42000000000000L, 0x4000000000082L, 0x8L, 0x10000000000020L, 0x820041008500aaL, 0x54091080000000L, false, 0, 0x0L), 4), 560695); - - // gentest-4242 - assertEqual(perft(new Board(0x95180840000L, 0x80000000010000L, 0x2200000000000L, 0x4000000000082L, 0x800000000L, 0x8000000000020L, 0x820049008500a2L, 0xc291080000000L, true, 0, 0x0L), 4), 419218); - - // gentest-4243 - assertEqual(perft(new Board(0x95180840000L, 0x80000000010000L, 0x2200000000000L, 0x4000082L, 0x2000000L, 0x8000000000020L, 0x820041028500a2L, 0x8291084000000L, false, 0, 0x0L), 4), 522522); - - // gentest-4244 - assertEqual(perft(new Board(0x95180840000L, 0x80000000010000L, 0x8002000000000000L, 0x4000082L, 0x2000000L, 0x1000000000004000L, 0x82004102854082L, 0x9000091084000000L, true, 0, 0x0L), 4), 400987); - - // gentest-4245 - assertEqual(perft(new Board(0x95180840000L, 0x80000000010000L, 0x42000000000000L, 0x4000082L, 0x2000000L, 0x1000000000001000L, 0x82004102851082L, 0x1040091084000000L, false, 0, 0x0L), 4), 664721); - - // gentest-4246 - assertEqual(perft(new Board(0x95180840000L, 0x80000000010000L, 0x8002000000000000L, 0x400008002L, 0x2000000L, 0x1000000000001000L, 0x82004102859002L, 0x9000091480000000L, true, 0, 0x0L), 4), 501021); - - // gentest-4247 - assertEqual(perft(new Board(0x95180840000L, 0x80000000010000L, 0x8002000000000000L, 0x40002008000L, 0x4000000L, 0x1000000000001000L, 0x82004106859000L, 0x90000d1080000000L, false, 0, 0x0L), 4), 310561); - - // gentest-4248 - assertEqual(perft(new Board(0x5980840000L, 0x80000000010000L, 0x2200000000000L, 0x40002008000L, 0x10000000000L, 0x1000000000001000L, 0x82014102859000L, 0x1000241880000000L, true, 0, 0x0L), 4), 561590); - - // gentest-4249 - assertEqual(perft(new Board(0x4990840000L, 0x80000000010000L, 0x400200000000000L, 0x40001008000L, 0x10000000000L, 0x1000000000001000L, 0x480014101859000L, 0x1000240890000000L, false, 0, 0x0L), 4), 546292); - - // gentest-4250 - assertEqual(perft(new Board(0x4980900000L, 0x80000200000000L, 0x400200000000000L, 0x1048000L, 0x10000000000L, 0x1000000000001000L, 0x480014301809000L, 0x1000200880140000L, true, 0, 0x0L), 4), 465629); - - // gentest-4251 - assertEqual(perft(new Board(0x4980900000L, 0x84000000000000L, 0x8400000000000000L, 0x1044000L, 0x10000000000L, 0x1000000000001000L, 0x484014101805000L, 0x9000000880140000L, false, 0, 0x0L), 4), 121112); - - // gentest-4252 - assertEqual(perft(new Board(0x4980900000L, 0x84000000000000L, 0x400200000000000L, 0x20044000L, 0x10000000000L, 0x800000000001000L, 0x484014120805000L, 0x800200880140000L, true, 0, 0x0L), 4), 583797); - - // gentest-4253 - assertEqual(perft(new Board(0x4980900000L, 0x84000000000000L, 0x400001000000000L, 0x2044000L, 0x20000000000L, 0x800000000001000L, 0x484024102805000L, 0x800001880140000L, false, 0, 0x0L), 4), 771774); - - // gentest-4254 - assertEqual(perft(new Board(0x4980900000L, 0x84000000000000L, 0x400000020000000L, 0x2004004L, 0x20000000000L, 0x800000000080000L, 0x484024102884000L, 0x8000008a0100004L, true, 0, 0x0L), 4), 843164); - - // gentest-4255 - assertEqual(perft(new Board(0x4980900000L, 0x80000200000000L, 0x400000020000000L, 0x2004004L, 0x20000000000L, 0x1000000000001000L, 0x480024302805000L, 0x10000008a0100004L, false, 0, 0x0L), 4), 799906); - - // gentest-4256 - assertEqual(perft(new Board(0x4980900000L, 0x80000200000000L, 0x400000020000000L, 0x24008L, 0x20000000000L, 0x1000000000001000L, 0x480024300825000L, 0x10000008a0100008L, true, 0, 0x0L), 4), 461387); - - // gentest-4257 - assertEqual(perft(new Board(0x400980900000L, 0x80000200000000L, 0x400000020000000L, 0x420040L, 0x20000000000L, 0x1000000000001000L, 0x480420300c21000L, 0x10000008a0100040L, false, 0, 0x0L), 4), 468223); - - // gentest-4258 - assertEqual(perft(new Board(0x400980900000L, 0x80000008000000L, 0x404000000000000L, 0x420002L, 0x20000000000L, 0x1000000000001000L, 0x480420108c21000L, 0x1004000880100002L, true, 0, 0x0L), 4), 513536); - - // gentest-4259 - assertEqual(perft(new Board(0x410800d00000L, 0x80000008000000L, 0x400000000000000L, 0x20002L, 0x4000000000000L, 0x1000000000001000L, 0x484410008821000L, 0x1000000800500002L, false, 0, 0x0L), 4), 173238); - - // gentest-4260 - assertEqual(perft(new Board(0x410800d00000L, 0x80000008000000L, 0x400000000000000L, 0x20001L, 0x4000000L, 0x10000000001000L, 0x48041000c821000L, 0x10000800500001L, true, 0, 0x0L), 4), 302162); - - // gentest-4261 - assertEqual(perft(new Board(0x410800d00000L, 0x80000000200000L, 0x40000000L, 0x20004L, 0x4000000L, 0x10000000001000L, 0x80410044a21000L, 0x10000800500004L, false, 0, 0x0L), 4), 336787); - - // gentest-4262 - assertEqual(perft(new Board(0x410800d00000L, 0x80000000200000L, 0x40000000L, 0x12L, 0x4000000L, 0x1000000000001000L, 0x80410044a01002L, 0x1000000800500010L, true, 0, 0x0L), 4), 10103); - - // gentest-4263 - assertEqual(perft(new Board(0x410800d00000L, 0x4000000010L, 0x40000000L, 0x2L, 0x4000000L, 0x10000000001000L, 0x414044801012L, 0x10000800500000L, false, 0, 0x0L), 4), 102620); - - // gentest-4264 - assertEqual(perft(new Board(0x410800d00000L, 0x4000000010L, 0x40000000L, 0x4L, 0x4000000L, 0x2000000000001000L, 0x414044801014L, 0x2000000800500000L, true, 0, 0x0L), 4), 67155); - - // gentest-4265 - assertEqual(perft(new Board(0x410800d00000L, 0x80000000000010L, 0x40000000L, 0x4L, 0x8000000L, 0x4000000000001000L, 0x80410048801014L, 0x4000000800500000L, false, 0, 0x0L), 4), 8819); - - // gentest-4266 - assertEqual(perft(new Board(0x410800900000L, 0x80000000000010L, 0x40000040L, 0x4L, 0x1000000000L, 0x4000000000001000L, 0x80411040801014L, 0x4000000800100040L, true, 0, 0x0L), 4), 42676); - - // gentest-4267 - assertEqual(perft(new Board(0x410800900000L, 0x80000000000010L, 0x40000040L, 0x4L, 0x0L, 0x8000000000000008L, 0x8041004080001cL, 0x8000000800100040L, false, 0, 0x0L), 4), 27189); - - // gentest-4268 - assertEqual(perft(new Board(0x410800900000L, 0x80000000000010L, 0x100000000040L, 0x4L, 0x0L, 0x40000000000008L, 0x8051000080001cL, 0x40000800100040L, true, 0, 0x0L), 4), 38593); - - // gentest-4269 - assertEqual(perft(new Board(0x410800801000L, 0x80000000000010L, 0x100000000040L, 0x40000L, 0x0L, 0x40000000000004L, 0x80510000840014L, 0x40000800001040L, false, 0, 0x0L), 4), 108961); - - // gentest-4270 - assertEqual(perft(new Board(0x410800801000L, 0x80000000000010L, 0x21000000000000L, 0x40000L, 0x0L, 0x800000000004L, 0xa0410000840014L, 0x1800800001000L, true, 0, 0x0L), 4), 97804); - - // gentest-4271 - assertEqual(perft(new Board(0x410008801000L, 0x2000000000000010L, 0x21000000000000L, 0x400L, 0x0L, 0x800000000004L, 0x2020410000800414L, 0x1800008001000L, false, 0, 0x0L), 4), 50751); - - // gentest-4272 - assertEqual(perft(new Board(0x410008801000L, 0x2000000000000010L, 0x21000000000000L, 0x4000000000000L, 0x0L, 0x800000000004L, 0x2024410000800014L, 0x1800008001000L, true, 0, 0x0L), 4), 56914); - - // gentest-4273 - assertEqual(perft(new Board(0x410088001000L, 0x2000000000000010L, 0x20020000000000L, 0x400L, 0x0L, 0x800000000004L, 0x2020410080000414L, 0x820008001000L, false, 0, 0x0L), 4), 60655); - - // gentest-4274 - assertEqual(perft(new Board(0x410088001000L, 0x2000000000004000L, 0x20000400000000L, 0x400L, 0x0L, 0x8000000004L, 0x2020410080004404L, 0x8408001000L, true, 0, 0x0L), 4), 96114); - - // gentest-4275 - assertEqual(perft(new Board(0x410088000000L, 0x8000000004000L, 0x20000400000000L, 0x410L, 0x0L, 0x8000000200L, 0x28410080004600L, 0x8408000010L, false, 0, 0x0L), 4), 333945); - - // gentest-4276 - assertEqual(perft(new Board(0x410088000000L, 0x8000000004000L, 0x30000000000000L, 0x400000010L, 0x0L, 0x40000200L, 0x28410480004200L, 0x10000048000010L, true, 0, 0x0L), 4), 506028); - - // gentest-4277 - assertEqual(perft(new Board(0x410088000000L, 0x8000000004000L, 0x30000000000000L, 0x40000000010L, 0x0L, 0x8000000100L, 0x28450080004100L, 0x10008008000010L, false, 0, 0x0L), 4), 382464); - - // gentest-4278 - assertEqual(perft(new Board(0x410080080000L, 0x8000000004000L, 0x10000000020000L, 0x41000000000L, 0x0L, 0x8000000100L, 0x8450080024100L, 0x10009000080000L, true, 0, 0x0L), 4), 403072); - - // gentest-4279 - assertEqual(perft(new Board(0x410080080000L, 0x200000000004000L, 0x2000000800000000L, 0x41000000000L, 0x0L, 0x8000000100L, 0x200450880004100L, 0x2000009000080000L, false, 0, 0x0L), 4), 278573); - - // gentest-4280 - assertEqual(perft(new Board(0x410080080000L, 0x200000000004000L, 0x800000004L, 0x41000000000L, 0x0L, 0x8000000200L, 0x200450880004200L, 0x9000080004L, true, 0, 0x0L), 4), 61898); - - // gentest-4281 - assertEqual(perft(new Board(0x410080080000L, 0x200000000004000L, 0x800000004L, 0x204000000000L, 0x0L, 0x8000000001L, 0x200610880004001L, 0xc000080004L, false, 0, 0x0L), 4), 199506); - - // gentest-4282 - assertEqual(perft(new Board(0x410080080000L, 0x200000000004000L, 0x800000004L, 0x204000000000L, 0x0L, 0x8000000100L, 0x200610880004100L, 0xc000080004L, true, 0, 0x0L), 4), 234394); - - // gentest-4283 - assertEqual(perft(new Board(0x410080080000L, 0x200000000004000L, 0x4000000000000004L, 0x1000000020L, 0x0L, 0x8000000100L, 0x4200410080004120L, 0x9000080004L, false, 0, 0x0L), 4), 356230); - - // gentest-4284 - assertEqual(perft(new Board(0x410080080000L, 0x200000000000010L, 0x4000000000000004L, 0x8000000000020L, 0x0L, 0x8000000100L, 0x4200410080000130L, 0x8008000080004L, true, 0, 0x0L), 4), 314975); - - // gentest-4285 - assertEqual(perft(new Board(0x410080080000L, 0x200000000000010L, 0x4000000000000004L, 0x2800000000L, 0x0L, 0x8000000100L, 0x4200412080000110L, 0x8800080004L, false, 0, 0x0L), 4), 68908); - - // gentest-4286 - assertEqual(perft(new Board(0x10080080000L, 0x200000000000010L, 0x4000000000000004L, 0x2000000400000000L, 0x0L, 0x400000000100L, 0x6200010080000110L, 0x400400080004L, true, 0, 0x0L), 4), 308580); - - // gentest-4287 - assertEqual(perft(new Board(0x10080080000L, 0x200000000000010L, 0x4004000000L, 0x800000400000000L, 0x0L, 0x400000000100L, 0xa00010084000110L, 0x404400080000L, false, 0, 0x0L), 4), 438089); - - // gentest-4288 - assertEqual(perft(new Board(0x1000080000800L, 0x200000000000010L, 0x4004000000L, 0x800001000000000L, 0x0L, 0x400000000100L, 0xa01000084000110L, 0x405000000800L, true, 0, 0x0L), 4), 1085532); - - // gentest-4289 - assertEqual(perft(new Board(0x4000000000L, 0x200000000000010L, 0x100000004000008L, 0x800001000000000L, 0x0L, 0x400000000100L, 0xb00004004000110L, 0x401000000008L, false, 0, 0x0L), 4), 626375); - - // gentest-4290 - assertEqual(perft(new Board(0x4000000000L, 0x200000000000010L, 0x100000004000008L, 0x3000000000000000L, 0x0L, 0x400000000100L, 0x2300004004000110L, 0x1000400000000008L, true, 0, 0x0L), 4), 484676); - - // gentest-4291 - assertEqual(perft(new Board(0x4000000000L, 0x200000000000010L, 0x100000004000008L, 0x400000000002000L, 0x0L, 0x400000000100L, 0x300004004002110L, 0x400400000000008L, false, 0, 0x0L), 4), 561035); - - // gentest-4292 - assertEqual(perft(new Board(0x4000000000L, 0x200000000000010L, 0x10000008L, 0x4002000L, 0x0L, 0x40000000000100L, 0x200004010002110L, 0x40000004000008L, true, 0, 0x0L), 4), 491920); - - // gentest-4293 - assertEqual(perft(new Board(0x4000000000L, 0x200000000000010L, 0x10000008L, 0x400000400L, 0x0L, 0x40000000000100L, 0x200004010000510L, 0x40000400000008L, false, 0, 0x0L), 4), 387975); - - // gentest-4294 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4295 - assertEqual(perft(new Board(0xfb000480007f00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80017ffdL, 0xfffb000400000000L, false, 0, 0x8100000000000081L), 4), 263160); - - // gentest-4296 - assertEqual(perft(new Board(0x6b900480027d00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80037dfdL, 0xff6b900400000000L, true, 0, 0x8100000000000081L), 4), 397722); - - // gentest-4297 - assertEqual(perft(new Board(0x6b900084027d00L, 0x4200000000810000L, 0x2400000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x1000000000000010L, 0x80837dbeL, 0xff6b900004000000L, false, 0, 0x8100000000000080L), 4), 543191); - - // gentest-4298 - assertEqual(perft(new Board(0x4398a004027d00L, 0x4200000000810000L, 0x2400000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x1000000000000010L, 0x8000837dbeL, 0xff43982004000000L, true, 0, 0x8100000000000080L), 4), 434395); - - // gentest-4299 - assertEqual(perft(new Board(0x398e001027c00L, 0x4200000004800000L, 0x2400000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x1000000000000010L, 0x8005827cbeL, 0xff03986000000000L, false, 0, 0x8100000000000080L), 4), 503452); - - // gentest-4300 - assertEqual(perft(new Board(0x398e001027c00L, 0x4000040004000040L, 0x2400000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x20000000000010L, 0x8005027cfeL, 0xed239c6000000000L, true, 0, 0x80L), 4), 664309); - - // gentest-4301 - assertEqual(perft(new Board(0x299e001027c00L, 0x4000040000300000L, 0x2400000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x20000000000010L, 0x8001327cbeL, 0xed229d6000000000L, false, 0, 0x80L), 4), 668537); - - // gentest-4302 - assertEqual(perft(new Board(0x289f001027c00L, 0x4000040004200000L, 0x410000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x20000000000010L, 0x8005227cbeL, 0xcd328d7000000000L, true, 0, 0x80L), 4), 696711); - - // gentest-4303 - assertEqual(perft(new Board(0x289f001027c00L, 0x4000040004200000L, 0x410000000000220L, 0x8001000000000042L, 0x800000000000008L, 0x20000000000010L, 0x8005227e7aL, 0xcc338d7000000000L, false, 0, 0x0L), 4), 685600); - - // gentest-4304 - assertEqual(perft(new Board(0x289f001027c00L, 0x4200000004200000L, 0x2400000008000020L, 0x8001000000000042L, 0x800000000000008L, 0x20000000000010L, 0x800d227c7aL, 0xee23897000000000L, true, 0, 0x0L), 4), 708753); - - // gentest-4305 - assertEqual(perft(new Board(0x289f041023c00L, 0x4200000100200000L, 0x2400000008000020L, 0x81000000000042L, 0x800000000000008L, 0x20000000000010L, 0x8149223c7aL, 0x6ea3897000000000L, false, 0, 0x0L), 4), 818896); - - // gentest-4306 - assertEqual(perft(new Board(0x289e041023c00L, 0x4200000108000000L, 0x2400000000000020L, 0x81000000000042L, 0x1000000000000008L, 0x20000000000010L, 0x8149023c7aL, 0x76a3896000000000L, true, 0, 0x0L), 4), 628934); - - // gentest-4307 - assertEqual(perft(new Board(0x8be041023c00L, 0x4200000100200000L, 0x2400000000000020L, 0x81000000004002L, 0x1000000000000008L, 0x20000000000010L, 0x8141227c3aL, 0x76a18b6000000000L, false, 0, 0x0L), 4), 688752); - - // gentest-4308 - assertEqual(perft(new Board(0x8be041023c00L, 0x4200000100008000L, 0x2400000000000020L, 0x81000000004002L, 0x1000000000000008L, 0x20000000000010L, 0x814102fc3aL, 0x76a18b6000000000L, true, 0, 0x0L), 4), 539154); - - // gentest-4309 - assertEqual(perft(new Board(0x8be041221c00L, 0x4200040000008000L, 0x2400000000000020L, 0x90000000004002L, 0x1000000000000008L, 0x20000000000010L, 0x4804122dc3aL, 0x76b08b6000000000L, false, 0, 0x0L), 4), 501386); - - // gentest-4310 - assertEqual(perft(new Board(0x8be041221c00L, 0x4000040000008000L, 0x2400000000000020L, 0x90000000002002L, 0x1000000000000008L, 0x40000000000010L, 0x804122bc3aL, 0x74d08f6000000000L, true, 0, 0x0L), 4), 385258); - - // gentest-4311 - assertEqual(perft(new Board(0x8be049221400L, 0x4000040000008000L, 0x2400000000000020L, 0x80000000102004L, 0x1000000000000008L, 0x40000000000010L, 0x804922b43cL, 0x74c08f6000100000L, false, 0, 0x0L), 4), 439747); - - // gentest-4312 - assertEqual(perft(new Board(0x8bc049221400L, 0x10040000008000L, 0x2400000000000020L, 0x80000000104004L, 0x1000000000000008L, 0x40000000000010L, 0x800922d43cL, 0x34d08f4040100000L, true, 0, 0x0L), 4), 511193); - - // gentest-4313 - assertEqual(perft(new Board(0x8bc04b201400L, 0x10040000008000L, 0x2000100000000020L, 0x80000000104002L, 0x1000000000000008L, 0x40000000000010L, 0x800b20d43aL, 0x30d09f4040100000L, false, 0, 0x0L), 4), 996859); - - // gentest-4314 - assertEqual(perft(new Board(0x8bc04b201400L, 0x440000008000L, 0x2000100000000020L, 0x8000000000104002L, 0x1000000000000008L, 0x40000000000800L, 0x800b20dc2aL, 0xb040df4040100000L, true, 0, 0x0L), 4), 1046505); - - // gentest-4315 - assertEqual(perft(new Board(0x8bc04b201400L, 0x440000008000L, 0x2000100000000020L, 0x8000000010002002L, 0x1000000000000004L, 0x40000000000800L, 0x800b20bc26L, 0xb040df4050000000L, false, 0, 0x0L), 4), 1196476); - - // gentest-4316 - assertEqual(perft(new Board(0x8bc249200400L, 0x440000008000L, 0x2000100000000020L, 0x8000000000003002L, 0x20000000000004L, 0x40000000000800L, 0x820920ac26L, 0xa060df4040001000L, true, 0, 0x0L), 4), 303223); - - // gentest-4317 - assertEqual(perft(new Board(0x8bc249200400L, 0x401000008000L, 0x2000100000000020L, 0x8000000000002002L, 0x20000000000004L, 0x40000000001000L, 0x820920b426L, 0xa060db5040000000L, false, 0, 0x0L), 4), 983813); - - // gentest-4318 - assertEqual(perft(new Board(0x8bc249200400L, 0x401000008000L, 0x2000000004000020L, 0x8000000000002002L, 0x2000000004L, 0x40000000100000L, 0x820930a426L, 0xa040cb7044000000L, true, 0, 0x0L), 4), 1067535); - - // gentest-4319 - assertEqual(perft(new Board(0x8bc269000400L, 0x401000008000L, 0x2000000004000020L, 0x8000000000022000L, 0x2000000004L, 0x200000100000L, 0x822912a424L, 0xa000eb7044000000L, false, 0, 0x0L), 4), 1123386); - - // gentest-4320 - assertEqual(perft(new Board(0x8bc249000400L, 0x1020008000L, 0x2000000004080000L, 0x8000000000022000L, 0x4L, 0x200000100000L, 0x82091aa404L, 0xa000ab5064000000L, true, 0, 0x0L), 4), 896565); - - // gentest-4321 - assertEqual(perft(new Board(0x8bc348000400L, 0x1000008000L, 0x2000000004080000L, 0x8000000020020000L, 0x4L, 0x40000000100000L, 0x83281a8404L, 0xa0408b5044000000L, false, 0, 0x0L), 4), 751129); - - // gentest-4322 - assertEqual(perft(new Board(0x8bc348000400L, 0x8000000008000L, 0x2000000004080000L, 0x80000020020000L, 0x20L, 0x40000000100000L, 0x83281a8420L, 0x20c88b4044000000L, true, 0, 0x0L), 4), 634880); - - // gentest-4323 - assertEqual(perft(new Board(0x8bc348000400L, 0x8000000008000L, 0x2000400004000000L, 0x80000000220000L, 0x20L, 0x4000000000100000L, 0x408308328420L, 0x60888b4044000000L, false, 0, 0x0L), 4), 849767); - - // gentest-4324 - assertEqual(perft(new Board(0x8ac348000400L, 0x8000000008000L, 0x2020400000000000L, 0x80000000220000L, 0x80000L, 0x4000000000100000L, 0x4081083a8400L, 0x60a88a4240000000L, true, 0, 0x0L), 4), 573561); - - // gentest-4325 - assertEqual(perft(new Board(0x8ac348000400L, 0x400008000L, 0x2020400000000000L, 0x80002000020000L, 0x1000L, 0x4000000000100000L, 0x40a108129400L, 0x60a08a4640000000L, false, 0, 0x0L), 4), 901229); - - // gentest-4326 - assertEqual(perft(new Board(0x8ac348000400L, 0x10000008000L, 0x60400000000000L, 0x80002000020000L, 0x4000L, 0x4000000000100000L, 0x40a10812c400L, 0x40e08b4240000000L, true, 0, 0x0L), 4), 834091); - - // gentest-4327 - assertEqual(perft(new Board(0x8ac348000400L, 0x4000000000020L, 0x40400000000000L, 0xa0000000020000L, 0x4000L, 0x4000000000100000L, 0x20408108124420L, 0x40c48a4240000000L, false, 0, 0x0L), 4), 440228); - - // gentest-4328 - assertEqual(perft(new Board(0x82cb48000400L, 0x4000000000020L, 0x2000400000000000L, 0xa0000000010000L, 0x4000L, 0x4000000000100000L, 0x20408108114420L, 0x6084824a40000000L, true, 0, 0x0L), 4), 514802); - - // gentest-4329 - assertEqual(perft(new Board(0x82cb48000400L, 0x1000000000400000L, 0x2000400000000000L, 0xa0000000000100L, 0x4000L, 0x4000000000100000L, 0x20408108504500L, 0x7080824a40000000L, false, 0, 0x0L), 4), 461831); - - // gentest-4330 - assertEqual(perft(new Board(0x80cb48000400L, 0x1000000000000080L, 0x400400000000L, 0xa0000000000100L, 0x4000L, 0x4000000000100000L, 0x20408008104580L, 0x5080804f40000000L, true, 0, 0x0L), 4), 621103); - - // gentest-4331 - assertEqual(perft(new Board(0x80cb48000400L, 0x1000000000000080L, 0x400400000000L, 0x80200000000100L, 0x4000L, 0x8000000000002000L, 0x608008006580L, 0x9080804f40000000L, false, 0, 0x0L), 4), 686519); - - // gentest-4332 - assertEqual(perft(new Board(0x80cb48000400L, 0x1000000000400000L, 0x400000010000L, 0x20200000000100L, 0x4000L, 0x8000000000002000L, 0x608008406500L, 0x9020804b40010000L, true, 0, 0x0L), 4), 607185); - - // gentest-4333 - assertEqual(perft(new Board(0x80cb48000400L, 0x1000000000400000L, 0x20000000000000L, 0x200000010000L, 0x4000L, 0x40000000002000L, 0x20208008416400L, 0x1040804b40000000L, false, 0, 0x0L), 4), 136101); - - // gentest-4334 - assertEqual(perft(new Board(0x80cb48000400L, 0x1000000000400000L, 0x20000000000000L, 0x200000000001L, 0x4000L, 0x80000000002000L, 0x20208008406401L, 0x1080804b40000000L, true, 0, 0x0L), 4), 128055); - - // gentest-4335 - assertEqual(perft(new Board(0x80cb48000400L, 0x200000400000L, 0x400000000000L, 0x80000000001L, 0x4000L, 0x80000000002000L, 0x488008406401L, 0x80a04b40000000L, false, 0, 0x0L), 4), 56650); - - // gentest-4336 - assertEqual(perft(new Board(0x80c94a000400L, 0x200000400000L, 0x400000000000L, 0x80000000001L, 0x800000L, 0x4000000000002000L, 0x488008c02401L, 0x4000a04942000000L, true, 0, 0x0L), 4), 201857); - - // gentest-4337 - assertEqual(perft(new Board(0x80c94a000400L, 0x200000400000L, 0x0L, 0x80000000001L, 0x8000L, 0x20000000002000L, 0x8800840a401L, 0x20a04942000000L, false, 0, 0x0L), 4), 185949); - - // gentest-4338 - assertEqual(perft(new Board(0x80c94a000400L, 0x8002000000000L, 0x0L, 0x80000000001L, 0x8000L, 0x1000000000002000L, 0x8a00800a401L, 0x1008804942000000L, true, 0, 0x0L), 4), 201100); - - // gentest-4339 - assertEqual(perft(new Board(0x80c84b000400L, 0x8002000000000L, 0x0L, 0x80000000001L, 0x80L, 0x1000000000001000L, 0x8a008001481L, 0x1008804843000000L, false, 0, 0x0L), 4), 245256); - - // gentest-4340 - assertEqual(perft(new Board(0x80c84b000400L, 0x40200000000000L, 0x0L, 0x80000000001L, 0x80L, 0x2000000000001000L, 0x40088008001481L, 0x2000a04843000000L, true, 0, 0x0L), 4), 216797); - - // gentest-4341 - assertEqual(perft(new Board(0x80c84b000400L, 0x40200000000000L, 0x0L, 0x40000000001L, 0x10L, 0x10000000001000L, 0x40048008001411L, 0x10a04843000000L, false, 0, 0x0L), 4), 212150); - - // gentest-4342 - assertEqual(perft(new Board(0x80c84b000400L, 0x40200000000000L, 0x0L, 0x80000000001L, 0x10L, 0x4000000000001000L, 0x40088008001411L, 0x4000a04843000000L, true, 0, 0x0L), 4), 208987); - - // gentest-4343 - assertEqual(perft(new Board(0x80c80b400400L, 0x40200000000000L, 0x0L, 0x80000000001L, 0x40000L, 0x4000000000200000L, 0x40088008240401L, 0x4000a04803400000L, false, 0, 0x0L), 4), 282827); - - // gentest-4344 - assertEqual(perft(new Board(0x80c80b400400L, 0x200000000000L, 0x0L, 0x80000000040L, 0x40000L, 0x80000000200000L, 0x88008240440L, 0x80a04803400000L, true, 0, 0x0L), 4), 167388); - - // gentest-4345 - assertEqual(perft(new Board(0x80480b400400L, 0x8000000000L, 0x0L, 0x80000000040L, 0x40000L, 0x80000000200000L, 0x80008240440L, 0x8080c803400000L, false, 0, 0x0L), 4), 131438); - - // gentest-4346 - assertEqual(perft(new Board(0x80400a410400L, 0x200000000000L, 0x0L, 0x800000040L, 0x40000L, 0x80000000200000L, 0x808240440L, 0x80a04002410000L, true, 0, 0x0L), 4), 266036); - - // gentest-4347 - assertEqual(perft(new Board(0x80400a400500L, 0x200000000000L, 0x0L, 0x10000040L, 0x40000L, 0x80000000200000L, 0x18240440L, 0x80a04002400100L, false, 0, 0x0L), 4), 445295); - - // gentest-4348 - assertEqual(perft(new Board(0x80400a400400L, 0x200000020000L, 0x0L, 0x1000000000000040L, 0x40000L, 0x80000000200000L, 0x1000000008240440L, 0x80a04002420000L, true, 0, 0x0L), 4), 401381); - - // gentest-4349 - assertEqual(perft(new Board(0x800048400400L, 0x200000020000L, 0x0L, 0x1000000000000040L, 0x2000000L, 0x80000000100000L, 0x100000000a100440L, 0x80a00040420000L, false, 0, 0x0L), 4), 360400); - - // gentest-4350 - assertEqual(perft(new Board(0x800048400400L, 0x1000000000000000L, 0x0L, 0x40L, 0x800L, 0x80000000100000L, 0x8100c40L, 0x1080800040400000L, true, 0, 0x0L), 4), 78757); - - // gentest-4351 - assertEqual(perft(new Board(0x800048004400L, 0x1000000000000000L, 0x0L, 0x40L, 0x800L, 0x80000000100000L, 0x8100c40L, 0x1080800040004000L, false, 0, 0x0L), 4), 80719); - - // gentest-4352 - assertEqual(perft(new Board(0x800048004400L, 0x200000000L, 0x0L, 0x40L, 0x800L, 0x80000010000000L, 0x18000c40L, 0x80800240004000L, true, 0, 0x0L), 4), 144809); - - // gentest-4353 - assertEqual(perft(new Board(0x800048004400L, 0x200000000L, 0x0L, 0x40L, 0x40000L, 0x40000000080000L, 0x80c0440L, 0x40800240004000L, false, 0, 0x0L), 4), 155531); - - // gentest-4354 - assertEqual(perft(new Board(0x800048000400L, 0x200000040L, 0x0L, 0x2L, 0x40000L, 0x400000080000L, 0x80c0402L, 0xc00240000040L, true, 0, 0x0L), 4), 206933); - - // gentest-4355 - assertEqual(perft(new Board(0x800840000400L, 0x200800000L, 0x0L, 0x2L, 0x10000L, 0x400000080000L, 0x800090402L, 0xc00240800000L, false, 0, 0x0L), 4), 308786); - - // gentest-4356 - assertEqual(perft(new Board(0x8840000400L, 0x4200000000L, 0x0L, 0x200L, 0x10000L, 0x400000080000L, 0x800090600L, 0x40c240000000L, true, 0, 0x0L), 4), 232887); - - // gentest-4357 - assertEqual(perft(new Board(0x8840000400L, 0x100200000000L, 0x0L, 0x200L, 0x800000L, 0x400000000800L, 0x800800e00L, 0x508240000000L, false, 0, 0x0L), 4), 373397); - - // gentest-4358 - assertEqual(perft(new Board(0x8800800400L, 0x208000000L, 0x0L, 0x200L, 0x0L, 0x400000080000L, 0x800080600L, 0x408208800000L, true, 0, 0x0L), 4), 73560); - - // gentest-4359 - assertEqual(perft(new Board(0x8800820000L, 0x200000000L, 0x0L, 0x200L, 0x0L, 0x400010000000L, 0x810020200L, 0x408200800000L, false, 0, 0x0L), 4), 42159); - - // gentest-4360 - assertEqual(perft(new Board(0x8800820000L, 0x200000000L, 0x0L, 0x800L, 0x0L, 0x40000010000000L, 0x810020800L, 0x40008200800000L, true, 0, 0x0L), 4), 61134); - - // gentest-4361 - assertEqual(perft(new Board(0x88000820000L, 0x200000000L, 0x0L, 0x800L, 0x0L, 0x80001000000000L, 0x81000020800L, 0x80008200800000L, false, 0, 0x0L), 4), 54743); - - // gentest-4362 - assertEqual(perft(new Board(0x8000820000L, 0x80000000000L, 0x0L, 0x8000L, 0x0L, 0x8000001000000000L, 0x1000028000L, 0x8000088000800000L, true, 0, 0x0L), 4), 34336); - - // gentest-4363 - assertEqual(perft(new Board(0x8000820000L, 0x80000000000L, 0x0L, 0x8000L, 0x0L, 0x80000000080000L, 0xa8000L, 0x80088000800000L, false, 0, 0x0L), 4), 50185); - - // gentest-4364 - assertEqual(perft(new Board(0x80820000L, 0x20000000000000L, 0x0L, 0x80L, 0x0L, 0x80000000080000L, 0xa0080L, 0xa0000080800000L, true, 0, 0x0L), 4), 40193); - - // gentest-4365 - assertEqual(perft(new Board(0x80820000L, 0x4000000000L, 0x0L, 0x8L, 0x0L, 0x80000000000400L, 0x20408L, 0x80004080800000L, false, 0, 0x0L), 4), 45050); - - // gentest-4366 - assertEqual(perft(new Board(0x80028000L, 0x4000000000L, 0x0L, 0x4L, 0x0L, 0x800000000400L, 0x20404L, 0x804080008000L, true, 0, 0x0L), 4), 58301); - - // gentest-4367 - assertEqual(perft(new Board(0x80028000L, 0x10000000L, 0x0L, 0x8000000L, 0x0L, 0x800000000400L, 0x8020400L, 0x800090008000L, false, 0, 0x0L), 4), 95261); - - // gentest-4368 - assertEqual(perft(new Board(0x80028000L, 0x10000000L, 0x0L, 0x1000000L, 0x0L, 0x200000000400L, 0x1020400L, 0x200090008000L, true, 0, 0x0L), 4), 93762); - - // gentest-4369 - assertEqual(perft(new Board(0x80028000L, 0x10000000L, 0x0L, 0x80L, 0x0L, 0x2000000400L, 0x20480L, 0x2090008000L, false, 0, 0x0L), 4), 59061); - - // gentest-4370 - assertEqual(perft(new Board(0x2808000L, 0x400000000L, 0x0L, 0x80L, 0x0L, 0x2000000400L, 0x2000480L, 0x2400808000L, true, 0, 0x0L), 4), 67227); - - // gentest-4371 - assertEqual(perft(new Board(0x400808000L, 0x0L, 0x0L, 0x80L, 0x0L, 0x400000080000L, 0x400080080L, 0x400000808000L, false, 0, 0x0L), 4), 20467); - - // gentest-4372 - assertEqual(perft(new Board(0x400808000L, 0x0L, 0x0L, 0x80L, 0x0L, 0x8000000008000000L, 0x408000080L, 0x8000000000808000L, true, 0, 0x0L), 4), 12591); - - // gentest-4373 - assertEqual(perft(new Board(0x400808000L, 0x0L, 0x0L, 0x4L, 0x0L, 0x40000004000000L, 0x404000004L, 0x40000000808000L, false, 0, 0x0L), 4), 40135); - - // gentest-4374 - assertEqual(perft(new Board(0x400808000L, 0x0L, 0x0L, 0x4L, 0x0L, 0x800800000000L, 0xc00000004L, 0x800000808000L, true, 0, 0x0L), 4), 27183); - - // gentest-4375 - assertEqual(perft(new Board(0x400800000L, 0x0L, 0x80L, 0x400L, 0x0L, 0x880000000000L, 0x80400000400L, 0x800000800080L, false, 0, 0x0L), 4), 51256); - - // gentest-4376 - assertEqual(perft(new Board(0x400800000L, 0x0L, 0x80L, 0x2000L, 0x0L, 0x8000080000000000L, 0x80400002000L, 0x8000000000800080L, true, 0, 0x0L), 4), 42742); - - // gentest-4377 - assertEqual(perft(new Board(0x400800000L, 0x0L, 0x100000000000000L, 0x200000000000L, 0x0L, 0x8004000000000000L, 0x4200400000000L, 0x8100000000800000L, false, 0, 0x0L), 4), 49726); - - // gentest-4378 - assertEqual(perft(new Board(0x400800000L, 0x0L, 0x2000000000000L, 0x200000000000L, 0x0L, 0x8000020000000000L, 0x220400000000L, 0x8002000000800000L, true, 0, 0x0L), 4), 38522); - - // gentest-4379 - assertEqual(perft(new Board(0x400800000L, 0x0L, 0x2000000000000L, 0x80000000000L, 0x0L, 0x4000020000000000L, 0xa0400000000L, 0x4002000000800000L, false, 0, 0x0L), 4), 60314); - - // gentest-4380 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4381 - assertEqual(perft(new Board(0xef00100009f600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x9f6ffL, 0xffef001000000000L, false, 0, 0x8100000000000081L), 4), 606139); - - // gentest-4382 - assertEqual(perft(new Board(0xcb00340009f600L, 0x4200000000000042L, 0x2400004000000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400009f6fbL, 0xffcb003400000000L, true, 0, 0x8100000000000081L), 4), 670734); - - // gentest-4383 - assertEqual(perft(new Board(0x8b40340009f600L, 0x4200000004000040L, 0x2400004000000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400409f6f9L, 0xff8b403400000000L, false, 0, 0x8100000000000081L), 4), 816801); - - // gentest-4384 - assertEqual(perft(new Board(0x8b40340009f600L, 0x4000040004000040L, 0x2400004000000020L, 0x8100000000000081L, 0x100000800L, 0x1000000000000010L, 0x400409fef1L, 0xf58b443500000000L, true, 0, 0x8100000000000081L), 4), 1285056); - - // gentest-4385 - assertEqual(perft(new Board(0x8b40240019e600L, 0x4000041000000040L, 0x2400004000000020L, 0x8100000000000081L, 0x1000800L, 0x1000000000000010L, 0x500019eef1L, 0xf58b442401000000L, false, 0, 0x8100000000000081L), 4), 2253448); - - // gentest-4386 - assertEqual(perft(new Board(0x8a40250019e600L, 0x4000001000000040L, 0x2400000020000020L, 0x8100000000000081L, 0x1000800L, 0x1000000000000010L, 0x2019eef1L, 0xf58a403501000000L, true, 0, 0x8100000000000081L), 4), 1328268); - - // gentest-4387 - assertEqual(perft(new Board(0x8a40251209e400L, 0x4000001000000040L, 0x2400000020000020L, 0x8100000000000081L, 0x200000800L, 0x1000000000000010L, 0x3209ecf1L, 0xf58a403700000000L, false, 0, 0x8100000000000081L), 4), 1454834); - - // gentest-4388 - assertEqual(perft(new Board(0x8a40251001e400L, 0x4000000002000040L, 0x2400000020000020L, 0x8100000000000081L, 0x200000800L, 0x1000000000001000L, 0x3001fce1L, 0xf58a402702000000L, true, 0, 0x8100000000000000L), 4), 276805); - - // gentest-4389 - assertEqual(perft(new Board(0x8a40251401e000L, 0x4000000000200100L, 0x2400000020000020L, 0x8100000000000081L, 0x200000800L, 0x1000000000001000L, 0x3421f8a1L, 0xf58a402700000100L, false, 0, 0x8100000000000000L), 4), 1790696); - - // gentest-4390 - assertEqual(perft(new Board(0x8a40251001e000L, 0x4000000000200000L, 0x2400000020000020L, 0x8100000000000081L, 0x4000004L, 0x1000000000001000L, 0x3021f0a5L, 0xf58a402504000000L, true, 0, 0x8100000000000000L), 4), 199964); - - // gentest-4391 - assertEqual(perft(new Board(0x8a40251001e000L, 0x4000000000200000L, 0x2400000020000020L, 0x8100000000000081L, 0x40004L, 0x1000000000001000L, 0x3021f0a5L, 0xf58a402500040000L, false, 0, 0x8100000000000000L), 4), 1396804); - - // gentest-4392 - assertEqual(perft(new Board(0x8a40310401e000L, 0x4000000000200000L, 0x2400000020000020L, 0x8100000000000081L, 0x40000000000004L, 0x1000000000001000L, 0x102021f0a5L, 0xf5ca402104000000L, true, 0, 0x8100000000000000L), 4), 902957); - - // gentest-4393 - assertEqual(perft(new Board(0x8a50210500e000L, 0x200000200000L, 0x2400000020000020L, 0x8100000000000081L, 0x40000000000004L, 0x1000000000001000L, 0x10002120f0a5L, 0xb5ca602104000000L, false, 0, 0x8100000000000000L), 4), 1357703); - - // gentest-4394 - assertEqual(perft(new Board(0x8852210500e000L, 0x200000200000L, 0x2404000000000020L, 0x8100000000000081L, 0x10000000000004L, 0x1000000000001000L, 0x410000120f0a5L, 0xb598622104000000L, true, 0, 0x8100000000000000L), 4), 1403010); - - // gentest-4395 - assertEqual(perft(new Board(0x8852210500e000L, 0x10200000L, 0x2404000000000020L, 0x8100000000000081L, 0x10000000000400L, 0x1000000000001000L, 0x410000120f4a1L, 0xb598422114000000L, false, 0, 0x8100000000000000L), 4), 1852766); - - // gentest-4396 - assertEqual(perft(new Board(0x8852210500e000L, 0x600000L, 0x2404000000000020L, 0x8100000000000081L, 0x4000000100L, 0x1000000000001000L, 0x410000120f1a1L, 0xb588426104400000L, true, 0, 0x8100000000000000L), 4), 195394); - - // gentest-4397 - assertEqual(perft(new Board(0x88522105406000L, 0x10L, 0x2404000000000020L, 0x8100000000000081L, 0x4000000100L, 0x10000000001000L, 0x41000014071b1L, 0xa598426104000000L, false, 0, 0x0L), 4), 693768); - - // gentest-4398 - assertEqual(perft(new Board(0x88522101446000L, 0x10L, 0x2404000000000020L, 0x8100000000008001L, 0x20000100L, 0x10000000001000L, 0x410000140f131L, 0xa598422120040000L, true, 0, 0x0L), 4), 837281); - - // gentest-4399 - assertEqual(perft(new Board(0x88522101446000L, 0x10L, 0x2400001000000020L, 0x8000010000800001L, 0x20000100L, 0x10000000001000L, 0x101001c07131L, 0xa498432120040000L, false, 0, 0x0L), 4), 756153); - - // gentest-4400 - assertEqual(perft(new Board(0x88502301446000L, 0x10L, 0x2400001000000020L, 0x8000010000800001L, 0x4000100L, 0x10000000000008L, 0x101001c06139L, 0xa498412304040000L, true, 0, 0x0L), 4), 1483880); - } - - public static void batch11() { - // gentest-4401 - assertEqual(perft(new Board(0x80502b01446000L, 0x10L, 0x2400000020000020L, 0x8000010000800001L, 0x4010000L, 0x10000000000008L, 0x100021c16039L, 0xa490412b04040000L, false, 0, 0x0L), 4), 319581); - - // gentest-4402 - assertEqual(perft(new Board(0x80502b01446000L, 0x10L, 0x2400000020000020L, 0x8000010000800001L, 0x6000000L, 0x40000000000008L, 0x100023c06039L, 0xa4c0412b04040000L, true, 0, 0x0L), 4), 1533072); - - // gentest-4403 - assertEqual(perft(new Board(0x80502b01446000L, 0x10L, 0x2400000000000820L, 0x8100000000800100L, 0x6000000L, 0x40000000000008L, 0x100003c06938L, 0xa5c0402b04040000L, false, 0, 0x0L), 4), 1615658); - - // gentest-4404 - assertEqual(perft(new Board(0x80502b01446000L, 0x10L, 0x400000002000800L, 0x8100008000000100L, 0x20L, 0x40000000000008L, 0x108001406918L, 0x85c0402b02040020L, true, 0, 0x0L), 4), 591238); - - // gentest-4405 - assertEqual(perft(new Board(0x502b01446000L, 0x10L, 0x400000002000800L, 0x8100000000000100L, 0x20L, 0x200000000008L, 0x8000100001406918L, 0x500602b02040020L, false, 0, 0x0L), 4), 592183); - - // gentest-4406 - assertEqual(perft(new Board(0x502b01446000L, 0x10L, 0x2000002000800L, 0x8100000000000001L, 0x4000000L, 0x200000000008L, 0x8000100001406819L, 0x102602b06040000L, true, 0, 0x0L), 4), 1220071); - - // gentest-4407 - assertEqual(perft(new Board(0x502b21444000L, 0x10L, 0x40002000800L, 0x300000000000001L, 0x4000000L, 0x200000000008L, 0x200100021404819L, 0x100642b06040000L, false, 0, 0x0L), 4), 389429); - - // gentest-4408 - assertEqual(perft(new Board(0x10402b21404400L, 0x10L, 0x40002000800L, 0x201000000000001L, 0x4000000L, 0x200000000008L, 0x210000021404819L, 0x1642b06000400L, true, 0, 0x0L), 4), 55044); - - // gentest-4409 - assertEqual(perft(new Board(0x402b21404400L, 0x10L, 0x40002000800L, 0x201000000000001L, 0x1000000000020000L, 0x200000000004L, 0x1200000021404815L, 0x1642b02020400L, false, 0, 0x0L), 4), 669484); - - // gentest-4410 - assertEqual(perft(new Board(0x402b21404400L, 0x10L, 0x2000800L, 0x201000000000001L, 0x40000200000L, 0x10000000000004L, 0x200040021404815L, 0x11402b02200400L, true, 0, 0x0L), 4), 719478); - - // gentest-4411 - assertEqual(perft(new Board(0x402b21404400L, 0x10L, 0x2100000L, 0x201000000000001L, 0x10000200000L, 0x8000000000004L, 0x200010021504015L, 0x9402b02200400L, false, 0, 0x0L), 4), 679560); - - // gentest-4412 - assertEqual(perft(new Board(0x402b21404000L, 0x0L, 0x100010L, 0x201000000000001L, 0x10000200000L, 0x10000000000400L, 0x200010021504401L, 0x11402b00200010L, true, 0, 0x0L), 4), 761246); - - // gentest-4413 - assertEqual(perft(new Board(0x402b21404000L, 0x0L, 0x100010L, 0x200000000000001L, 0x1000000200000L, 0x20000000080000L, 0x201000021584001L, 0x20402b00200010L, false, 0, 0x0L), 4), 33972); - - // gentest-4414 - assertEqual(perft(new Board(0x402b21404000L, 0x0L, 0x100010L, 0x200000000010000L, 0x1000000001000L, 0x200000080000L, 0x201000021594000L, 0x602b00001010L, true, 0, 0x0L), 4), 14103); - - // gentest-4415 - assertEqual(perft(new Board(0x402921404000L, 0x0L, 0x100010L, 0x2000000010000L, 0x1000000000000L, 0x200000001000L, 0x3000020515000L, 0x602901000010L, false, 0, 0x0L), 4), 93685); - - // gentest-4416 - assertEqual(perft(new Board(0x402920424000L, 0x0L, 0x102000L, 0x10000L, 0x1000000000000L, 0x200000001000L, 0x1000020515000L, 0x602900022000L, true, 0, 0x0L), 4), 76951); - - // gentest-4417 - assertEqual(perft(new Board(0x402920404200L, 0x0L, 0x102000L, 0x1000000L, 0x1000000000000L, 0x200000000020L, 0x1000021504020L, 0x602900002200L, false, 0, 0x0L), 4), 84328); - - // gentest-4418 - assertEqual(perft(new Board(0x6920404200L, 0x0L, 0x20000000010L, 0x1000000L, 0x1000000000000L, 0x200000000020L, 0x1020021404020L, 0x206900000210L, true, 0, 0x0L), 4), 175491); - - // gentest-4419 - assertEqual(perft(new Board(0x6920404000L, 0x0L, 0x100012L, 0x1000000L, 0x2000000000000L, 0x200000000020L, 0x2000021504020L, 0x206900000012L, false, 0, 0x0L), 4), 221381); - - // gentest-4420 - assertEqual(perft(new Board(0x6920404000L, 0x0L, 0x10100010L, 0x1000000L, 0x20000000000L, 0x10000000000020L, 0x20021504020L, 0x10006910000010L, true, 0, 0x0L), 4), 274342); - - // gentest-4421 - assertEqual(perft(new Board(0x2920404000L, 0x0L, 0x10100010L, 0x1000000L, 0x2000000000000L, 0x10000000000020L, 0x2000001504020L, 0x10002930000010L, false, 0, 0x0L), 4), 113730); - - // gentest-4422 - assertEqual(perft(new Board(0x2920404000L, 0x0L, 0x200810L, 0x1000000L, 0x2000000000000L, 0x2000000000000020L, 0x2000001404820L, 0x2000002920200010L, true, 0, 0x0L), 4), 201589); - - // gentest-4423 - assertEqual(perft(new Board(0x2920404000L, 0x0L, 0x202800L, 0x1000000L, 0x200000000000000L, 0x2000000000000020L, 0x200000001404820L, 0x2000002920202000L, false, 0, 0x0L), 4), 67254); - - // gentest-4424 - assertEqual(perft(new Board(0x2821404000L, 0x0L, 0x202800L, 0x1L, 0x200000000000000L, 0x10000000000020L, 0x200000000404821L, 0x10002821202000L, true, 0, 0x0L), 4), 312435); - - // gentest-4425 - assertEqual(perft(new Board(0x2801404000L, 0x0L, 0x40002800L, 0x8L, 0x20000000L, 0x10000000000020L, 0x20404828L, 0x10002841002000L, false, 0, 0x0L), 4), 271545); - - // gentest-4426 - assertEqual(perft(new Board(0x2009404000L, 0x0L, 0x40002004L, 0x8L, 0x20000000L, 0x2000000000000020L, 0x2040402cL, 0x2000002049002000L, true, 0, 0x0L), 4), 99556); - - // gentest-4427 - assertEqual(perft(new Board(0x2009404000L, 0x0L, 0x40002004L, 0x8L, 0x100000000000000L, 0x40000000000020L, 0x10000000040402cL, 0x40002049002000L, false, 0, 0x0L), 4), 181289); - - // gentest-4428 - assertEqual(perft(new Board(0x2008414000L, 0x0L, 0x40100004L, 0x8L, 0x100000000000000L, 0x40000000000010L, 0x10000000040401cL, 0x40002048110000L, true, 0, 0x0L), 4), 179271); - - // gentest-4429 - assertEqual(perft(new Board(0x28414000L, 0x0L, 0x40100004L, 0x8L, 0x4000000000000000L, 0x40000000000010L, 0x400000000040401cL, 0x40000068110000L, false, 0, 0x0L), 4), 24005); - - // gentest-4430 - assertEqual(perft(new Board(0x28414000L, 0x0L, 0x8000000100004L, 0x80000L, 0x4000000000000000L, 0x200000000010L, 0x4000000000484014L, 0x8200028110000L, true, 0, 0x0L), 4), 264675); - - // gentest-4431 - assertEqual(perft(new Board(0x28414000L, 0x0L, 0x8000000100004L, 0x8L, 0x0L, 0x100000000010L, 0x40401cL, 0x8100028110000L, false, 0, 0x0L), 4), 57148); - - // gentest-4432 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x8000020010000L, 0x8L, 0x0L, 0x100000000010L, 0x14018L, 0x8100028400000L, true, 0, 0x0L), 4), 93821); - - // gentest-4433 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x8000020010000L, 0x40000000000L, 0x0L, 0x200000000010L, 0x40000014010L, 0x8200028400000L, false, 0, 0x0L), 4), 63629); - - // gentest-4434 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x80000800200L, 0x40000000000L, 0x0L, 0x200000000010L, 0x40000004210L, 0x280008c00000L, true, 0, 0x0L), 4), 118065); - - // gentest-4435 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x80000800200L, 0x40000000000L, 0x0L, 0x20000000000004L, 0x40000004204L, 0x20080008c00000L, false, 0, 0x0L), 4), 159316); - - // gentest-4436 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x80040000200L, 0x20000000000L, 0x0L, 0x4000000000000004L, 0x20000004204L, 0x4000080048400000L, true, 0, 0x0L), 4), 119075); - - // gentest-4437 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x1040010000L, 0x20000000000L, 0x0L, 0x4000000000000002L, 0x20000014002L, 0x4000001048400000L, false, 0, 0x0L), 4), 195748); - - // gentest-4438 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x80001000010000L, 0x20000000000L, 0x0L, 0x4000000000000200L, 0x20000014200L, 0x4080001008400000L, true, 0, 0x0L), 4), 105240); - - // gentest-4439 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x1000010400L, 0x80000000000L, 0x0L, 0x4000000000000004L, 0x80000014004L, 0x4000001008400400L, false, 0, 0x0L), 4), 96522); - - // gentest-4440 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x8000000000010400L, 0x80000000000L, 0x0L, 0x2000000000000200L, 0x80000014200L, 0xa000000008400400L, true, 0, 0x0L), 4), 28522); - - // gentest-4441 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x8000000000010400L, 0x200000000000L, 0x0L, 0x4000000000000100L, 0x200000014100L, 0xc000000008400400L, false, 0, 0x0L), 4), 70473); - - // gentest-4442 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x202000010000L, 0x20000000000000L, 0x0L, 0x4000000000000100L, 0x20000000014100L, 0x4000202008400000L, true, 0, 0x0L), 4), 110572); - - // gentest-4443 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x2480000000L, 0x80000000000000L, 0x0L, 0x4000000000000100L, 0x80000400004100L, 0x4000002088400000L, false, 0, 0x0L), 4), 109291); - - // gentest-4444 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x480200000L, 0x2000000000000L, 0x0L, 0x4000000000000100L, 0x2000400004100L, 0x4000000088600000L, true, 0, 0x0L), 4), 159503); - - // gentest-4445 - assertEqual(perft(new Board(0x8404000L, 0x0L, 0x12000080000000L, 0x0L, 0x0L, 0x4000000000000100L, 0x10000000004100L, 0x4002000088400000L, false, 0, 0x0L), 4), 41414); - - // gentest-4446 - assertEqual(perft(new Board(0x484000L, 0x0L, 0x2000010080000000L, 0x0L, 0x0L, 0x4000000000000100L, 0x2000000000004100L, 0x4000010080480000L, true, 0, 0x0L), 4), 27616); - - // gentest-4447 - assertEqual(perft(new Board(0x484000L, 0x0L, 0x800010000010000L, 0x0L, 0x0L, 0x4000000000000001L, 0x14001L, 0x4800010000480000L, false, 0, 0x0L), 4), 27076); - - // gentest-4448 - assertEqual(perft(new Board(0x404800L, 0x0L, 0x14000000004L, 0x0L, 0x0L, 0x4000000000000001L, 0x4005L, 0x4000014000400800L, true, 0, 0x0L), 4), 27500); - - // gentest-4449 - assertEqual(perft(new Board(0x404800L, 0x0L, 0x4000001004L, 0x0L, 0x0L, 0x4000000000000400L, 0x4404L, 0x4000004000401800L, false, 0, 0x0L), 4), 40871); - - // gentest-4450 - assertEqual(perft(new Board(0x404800L, 0x0L, 0x800000000000024L, 0x0L, 0x0L, 0x4000000000040000L, 0x44004L, 0x4800000000400820L, true, 0, 0x0L), 4), 40246); - - // gentest-4451 - assertEqual(perft(new Board(0x404800L, 0x0L, 0x800000000001004L, 0x0L, 0x0L, 0x4000000000040000L, 0x44004L, 0x4800000000401800L, false, 0, 0x0L), 4), 52116); - - // gentest-4452 - assertEqual(perft(new Board(0x404000L, 0x8L, 0x10000000011000L, 0x0L, 0x0L, 0x4000000000040000L, 0x54000L, 0x4010000000401008L, true, 0, 0x0L), 4), 23043); - - // gentest-4453 - assertEqual(perft(new Board(0x404000L, 0x8L, 0x10008000010000L, 0x0L, 0x0L, 0x4000000010000000L, 0x10014000L, 0x4010008000400008L, false, 0, 0x0L), 4), 60414); - - // gentest-4454 - assertEqual(perft(new Board(0x404000L, 0x8L, 0x2020000000010000L, 0x0L, 0x0L, 0x4000000020000000L, 0x20014000L, 0x6020000000400008L, true, 0, 0x0L), 4), 75720); - - // gentest-4455 - assertEqual(perft(new Board(0x404000L, 0x8L, 0x20000408000000L, 0x0L, 0x0L, 0x4000000020000000L, 0x28004000L, 0x4020000400400008L, false, 0, 0x0L), 4), 117707); - - // gentest-4456 - assertEqual(perft(new Board(0x404000L, 0x8L, 0x21000002000000L, 0x0L, 0x0L, 0x40000020000000L, 0x1000020004000L, 0x60000002400008L, true, 0, 0x0L), 4), 116799); - - // gentest-4457 - assertEqual(perft(new Board(0x404000L, 0x100000L, 0x21000002000000L, 0x0L, 0x0L, 0x40000020000000L, 0x1000020004000L, 0x60000002500000L, false, 0, 0x0L), 4), 102094); - - // gentest-4458 - assertEqual(perft(new Board(0x404000L, 0x100000L, 0x1400002000000L, 0x0L, 0x0L, 0x8000000010000000L, 0x1000010004000L, 0x8000400002500000L, true, 0, 0x0L), 4), 26682); - - // gentest-4459 - assertEqual(perft(new Board(0x404000L, 0x100000L, 0x40000a000000L, 0x0L, 0x0L, 0x80000000200000L, 0x8204000L, 0x80400002500000L, false, 0, 0x0L), 4), 121044); - - // gentest-4460 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x40000a000000L, 0x0L, 0x0L, 0x4000000000004000L, 0x8004000L, 0x4000400002400000L, true, 0, 0x0L), 4), 126170); - - // gentest-4461 - assertEqual(perft(new Board(0x0L, 0x0L, 0x1000002000002L, 0x0L, 0x0L, 0x4000000000400000L, 0x1000000400000L, 0x4000000002000002L, false, 0, 0x0L), 4), 79493); - - // gentest-4462 - assertEqual(perft(new Board(0x0L, 0x0L, 0x1080000000002L, 0x0L, 0x0L, 0x4000000020000000L, 0x1000020000000L, 0x4000080000000002L, true, 0, 0x0L), 4), 21777); - - // gentest-4463 - assertEqual(perft(new Board(0x0L, 0x0L, 0x1000002002L, 0x0L, 0x0L, 0x4000000000200000L, 0x202000L, 0x4000001000000002L, false, 0, 0x0L), 4), 95674); - - // gentest-4464 - assertEqual(perft(new Board(0x0L, 0x0L, 0x82000002L, 0x0L, 0x0L, 0x4000000000200000L, 0x80200000L, 0x4000000002000002L, true, 0, 0x0L), 4), 77483); - - // gentest-4465 - assertEqual(perft(new Board(0x0L, 0x0L, 0x80080000002L, 0x0L, 0x0L, 0x4000004000000000L, 0x4080000000L, 0x4000080000000002L, false, 0, 0x0L), 4), 33957); - - // gentest-4466 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4467 - assertEqual(perft(new Board(0xbf40004800b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4800b7ffL, 0xffbf400000000000L, false, 0, 0x8100000000000081L), 4), 418862); - - // gentest-4468 - assertEqual(perft(new Board(0xbb44004800b700L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x4800bff7L, 0xfdbb450000000000L, true, 0, 0x8100000000000081L), 4), 595259); - - // gentest-4469 - assertEqual(perft(new Board(0xbb440068019600L, 0x4000010000000042L, 0x2400000000000024L, 0x8200000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x68019ef7L, 0xfebb450000000000L, false, 0, 0x8000000000000081L), 4), 435984); - - // gentest-4470 - assertEqual(perft(new Board(0xbb440078018600L, 0x4000010000000042L, 0x2400000000000024L, 0x8200000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x78018ef7L, 0xfebb450000000000L, true, 0, 0x8000000000000081L), 4), 705986); - - // gentest-4471 - assertEqual(perft(new Board(0xbb441068018600L, 0x4000010000200002L, 0x2400000000000024L, 0x8200000000000081L, 0x20000000800L, 0x1000000000000010L, 0x1068218eb7L, 0xf6bb470000000000L, false, 0, 0x8000000000000081L), 4), 975626); - - // gentest-4472 - assertEqual(perft(new Board(0xbb441068018600L, 0x4000000400200002L, 0x2400000000800004L, 0x8100000000000081L, 0x20000000800L, 0x1000000000000010L, 0x1068a18e97L, 0xf5bb460400000000L, true, 0, 0x8000000000000081L), 4), 970176); - - // gentest-4473 - assertEqual(perft(new Board(0xbb441860018600L, 0x800400200002L, 0x2400000000800004L, 0x8100000000000081L, 0x20000000800L, 0x1000000000000020L, 0x1860a18ea7L, 0xb5bbc60400000000L, false, 0, 0x8000000000000000L), 4), 968169); - - // gentest-4474 - assertEqual(perft(new Board(0xbb441860018600L, 0x800400000012L, 0x2400000000800004L, 0x8200000000000081L, 0x100000800L, 0x1000000000000020L, 0x1860818eb7L, 0xb6bbc40500000000L, true, 0, 0x8000000000000000L), 4), 968066); - - // gentest-4475 - assertEqual(perft(new Board(0x9b640860058200L, 0x800400000012L, 0x2400000000800004L, 0x8200000000000081L, 0x100000800L, 0x1000000000000020L, 0x200860858ab7L, 0xb69bc40500000000L, false, 0, 0x8000000000000000L), 4), 891707); - - // gentest-4476 - assertEqual(perft(new Board(0x9b600860058200L, 0x800400000402L, 0x2400000000800004L, 0x8100000000000081L, 0x100000800L, 0x1000000000000020L, 0x200060858ea7L, 0xb59bc00d00000000L, true, 0, 0x8000000000000000L), 4), 897714); - - // gentest-4477 - assertEqual(perft(new Board(0xbb400860058200L, 0x800001000402L, 0x2400000000800004L, 0x8100000000000081L, 0x100000800L, 0x1000000000001000L, 0x20000060859e87L, 0xb59bc00901000000L, false, 0, 0x8000000000000000L), 4), 73516); - - // gentest-4478 - assertEqual(perft(new Board(0xba410860058200L, 0x800001000402L, 0x2400000000800004L, 0x8100000000000081L, 0x100000800L, 0x800000000080000L, 0x200000608d8e87L, 0xad9ac10901000000L, true, 0, 0x0L), 4), 454423); - - // gentest-4479 - assertEqual(perft(new Board(0xba414820058200L, 0x41000402L, 0x2400000000800004L, 0x8100000000000041L, 0x100000800L, 0x800000000080000L, 0x200040208d8e47L, 0xad9a410941000000L, false, 0, 0x0L), 4), 574965); - - // gentest-4480 - assertEqual(perft(new Board(0xb2494820058200L, 0x41000402L, 0x2400000000800004L, 0x8100000000000041L, 0x4000000100000L, 0x800000000080000L, 0x200040209d8647L, 0xad96490841000000L, true, 0, 0x0L), 4), 1250883); - - // gentest-4481 - assertEqual(perft(new Board(0xb2494822058000L, 0x1000402L, 0x2400000000800004L, 0x8100000040000001L, 0x20000100000L, 0x800000000080000L, 0x200040629d8407L, 0xad924b0801000000L, false, 0, 0x0L), 4), 609422); - - // gentest-4482 - assertEqual(perft(new Board(0xb2494822058000L, 0x1000402L, 0x2000000000800004L, 0x8100000040000001L, 0x100400000000L, 0x800000000080000L, 0x201040628d8407L, 0xa992490c01000000L, true, 0, 0x0L), 4), 695622); - - // gentest-4483 - assertEqual(perft(new Board(0xb2415822058000L, 0x1000402L, 0x2000000000800004L, 0x8100000040000001L, 0x400000000L, 0x800000000000800L, 0x20004062858c07L, 0xa992411c01000000L, false, 0, 0x0L), 4), 471061); - - // gentest-4484 - assertEqual(perft(new Board(0xb241502a058000L, 0x1000012L, 0x2000000000800004L, 0x8100000040000001L, 0x80000000000L, 0x800000000000800L, 0x20004062858817L, 0xa992491009000000L, true, 0, 0x0L), 4), 504221); - - // gentest-4485 - assertEqual(perft(new Board(0xb041522a058000L, 0x1004002L, 0x2000000000800004L, 0x8100000000400001L, 0x80000000000L, 0x800000000000800L, 0x20004022c5c807L, 0xa990491209000000L, false, 0, 0x0L), 4), 486485); - - // gentest-4486 - assertEqual(perft(new Board(0xb0415226098000L, 0x20000004002L, 0x2000000000800004L, 0x8100000000400001L, 0x80000000000L, 0x800000000000800L, 0x20004026c1c807L, 0xa9904b1200080000L, true, 0, 0x0L), 4), 512043); - - // gentest-4487 - assertEqual(perft(new Board(0xb04152a6090000L, 0x20000004002L, 0x800040000004L, 0x8100000000400001L, 0x80000000000L, 0x800000000000800L, 0x200040e6414807L, 0x8990cb1200080000L, false, 0, 0x0L), 4), 826996); - - // gentest-4488 - assertEqual(perft(new Board(0x904053a6090000L, 0x20000004002L, 0x2000800040000004L, 0x8100000000400001L, 0x8000000L, 0x800000000000800L, 0x20000040e6414807L, 0x8990c21308080000L, true, 0, 0x0L), 4), 955651); - - // gentest-4489 - assertEqual(perft(new Board(0x904053a2090000L, 0x20000004002L, 0x2000800040000004L, 0x8100000000400001L, 0x8000000L, 0x4000000000010L, 0x20000042e2414017L, 0x8194c21108080000L, false, 0, 0x0L), 4), 1298309); - - // gentest-4490 - assertEqual(perft(new Board(0x904053a2090000L, 0x20000000002L, 0x40800040000004L, 0x8100000000400001L, 0x4000L, 0x4000000000010L, 0x400042e2410017L, 0x8194c21100084000L, true, 0, 0x0L), 4), 1646903); - - // gentest-4491 - assertEqual(perft(new Board(0x904053a2090000L, 0x20000000002L, 0x40802000000004L, 0x8100000000400001L, 0x0L, 0x4000000002000L, 0x400062a2412007L, 0x8194c21100080000L, false, 0, 0x0L), 4), 1219673); - - // gentest-4492 - assertEqual(perft(new Board(0x805053a2090000L, 0x400000000000002L, 0x2000802000000004L, 0x8100000000400001L, 0x0L, 0x4000000002000L, 0x20000062a2412007L, 0x8584d01100080000L, true, 0, 0x0L), 4), 660294); - - // gentest-4493 - assertEqual(perft(new Board(0x805053a2090000L, 0x400000000040000L, 0x2000802000000004L, 0x8000010000000041L, 0x0L, 0x4000000002000L, 0x20000062a2052045L, 0x8484d11100080000L, false, 0, 0x0L), 4), 1054736); - - // gentest-4494 - assertEqual(perft(new Board(0x805053a2090000L, 0x10000000000100L, 0x2000802000000004L, 0x8000040000000041L, 0x0L, 0x4000000002000L, 0x20000062a2012145L, 0x8094d41100080000L, true, 0, 0x0L), 4), 937008); - - // gentest-4495 - assertEqual(perft(new Board(0x805051a2090000L, 0x10000000000100L, 0x2000802000000004L, 0x8000020000000041L, 0x0L, 0x4000000400000L, 0x20000060a2410145L, 0x8094d21100080000L, false, 0, 0x0L), 4), 800306); - - // gentest-4496 - assertEqual(perft(new Board(0x809051a2090000L, 0x10000000000100L, 0x2000002000000004L, 0x8000020000000041L, 0x0L, 0x400000000400000L, 0x20008020a2410145L, 0x8490125100080000L, true, 0, 0x0L), 4), 676096); - - // gentest-4497 - assertEqual(perft(new Board(0x809051a2090000L, 0x800000100L, 0x2000002000000004L, 0x8000020000000011L, 0x0L, 0x400000000800000L, 0x20008020a2810115L, 0x8480125900080000L, false, 0, 0x0L), 4), 855983); - - // gentest-4498 - assertEqual(perft(new Board(0x809051a0090000L, 0x2040000L, 0x2000002000000004L, 0x8000020000000011L, 0x0L, 0x200000000800000L, 0x20008020a0850015L, 0x8280125102080000L, true, 0, 0x0L), 4), 993324); - - // gentest-4499 - assertEqual(perft(new Board(0x809040b2080000L, 0x40000L, 0x2000002000000004L, 0x8000020100000010L, 0x0L, 0x200000000800000L, 0x20008021a2840014L, 0x8280124010080000L, false, 0, 0x0L), 4), 629622); - - // gentest-4500 - assertEqual(perft(new Board(0x809040a0080000L, 0x40000L, 0x2000000010000004L, 0x8000000102000010L, 0x0L, 0x4000000800000L, 0x20008001b0840014L, 0x8084104002080000L, true, 0, 0x0L), 4), 1233007); - - // gentest-4501 - assertEqual(perft(new Board(0x809040a0080000L, 0x40000L, 0x2000000800000004L, 0x8000000402000010L, 0x0L, 0x8000000800000L, 0x2000800ca0840014L, 0x8088104002080000L, false, 0, 0x0L), 4), 855778); - - // gentest-4502 - assertEqual(perft(new Board(0x808048a0080000L, 0x40000L, 0x2000000000000004L, 0x8000000418000000L, 0x0L, 0x8000000800000L, 0x20008004b0840004L, 0x8088004808080000L, true, 0, 0x0L), 4), 234954); - - // gentest-4503 - assertEqual(perft(new Board(0x808048a0080000L, 0x40000L, 0x2000000000000004L, 0x4000001408000000L, 0x0L, 0x8000000004000L, 0x20008014a0044004L, 0x4088004808080000L, false, 0, 0x0L), 4), 339812); - - // gentest-4504 - assertEqual(perft(new Board(0x8080c028080000L, 0x40000L, 0x2000000000000004L, 0x4000001404000000L, 0x0L, 0x8000000004000L, 0x2000809420044004L, 0x408800400c080000L, true, 0, 0x0L), 4), 335448); - - // gentest-4505 - assertEqual(perft(new Board(0x80808068080000L, 0x100L, 0x2000000000000004L, 0x4000000404001000L, 0x0L, 0x8000000004000L, 0x2000808420005104L, 0x408800004c080000L, false, 0, 0x0L), 4), 305168); - - // gentest-4506 - assertEqual(perft(new Board(0x80808068000800L, 0x100L, 0x2000000000000004L, 0x4000000404000400L, 0x0L, 0x800000000004000L, 0x2000808420004504L, 0x488000004c000800L, true, 0, 0x0L), 4), 366528); - - // gentest-4507 - assertEqual(perft(new Board(0x80808068000800L, 0x100L, 0x2000000000000004L, 0x4004000400L, 0x0L, 0x800000000004000L, 0x2000808024004504L, 0x880004048000800L, false, 0, 0x0L), 4), 360700); - - // gentest-4508 - assertEqual(perft(new Board(0x80800060080800L, 0x100L, 0x2000000000000004L, 0x8000040400L, 0x0L, 0x800000000004000L, 0x2000800020044504L, 0x880008040080800L, true, 0, 0x0L), 4), 254481); - - // gentest-4509 - assertEqual(perft(new Board(0x80800060080000L, 0x100L, 0x2000000000000004L, 0x8000040008L, 0x0L, 0x8000000004000L, 0x200080002004410cL, 0x88008040080000L, false, 0, 0x0L), 4), 237876); - - // gentest-4510 - assertEqual(perft(new Board(0x80800060080000L, 0x100L, 0x2000000000000004L, 0x840008L, 0x0L, 0x8000000400000L, 0x200080002044010cL, 0x88000040880000L, true, 0, 0x0L), 4), 12546); - - // gentest-4511 - assertEqual(perft(new Board(0x80800060080000L, 0x100L, 0x2000000000010000L, 0x840008L, 0x0L, 0x100000004000L, 0x2000800020054108L, 0x80100040880000L, false, 0, 0x0L), 4), 198007); - - // gentest-4512 - assertEqual(perft(new Board(0x80800020480000L, 0x100L, 0x40000000010000L, 0x840008L, 0x0L, 0x2000004000L, 0x40800020054108L, 0x80002000c80000L, true, 0, 0x0L), 4), 142515); - - // gentest-4513 - assertEqual(perft(new Board(0x80800020480000L, 0x2000000L, 0x40000000010000L, 0x820008L, 0x0L, 0x40004000L, 0x40800022034008L, 0x80000040c80000L, false, 0, 0x0L), 4), 98239); - - // gentest-4514 - assertEqual(perft(new Board(0x80000020400000L, 0x2000000L, 0x40000000010000L, 0xa8000L, 0x0L, 0x40004000L, 0x400000220b4000L, 0x80000040408000L, true, 0, 0x0L), 4), 17927); - - // gentest-4515 - assertEqual(perft(new Board(0x80000020400000L, 0x2000000L, 0x10001L, 0xa8000L, 0x0L, 0x8000000040L, 0x220b0041L, 0x80008000408000L, false, 0, 0x0L), 4), 174064); - - // gentest-4516 - assertEqual(perft(new Board(0x80000020400000L, 0x800000000L, 0x10001L, 0x8a0000L, 0x0L, 0x80000040L, 0x8200b0041L, 0x80000080c00000L, true, 0, 0x0L), 4), 76078); - - // gentest-4517 - assertEqual(perft(new Board(0x80000020400000L, 0x800000000L, 0x10001L, 0x2080080L, 0x0L, 0x80004000L, 0x822094001L, 0x80000080400080L, false, 0, 0x0L), 4), 162878); - - // gentest-4518 - assertEqual(perft(new Board(0x8020400000L, 0x800000000L, 0x10000L, 0x2000009L, 0x0L, 0x80004000L, 0x822014008L, 0x8080400001L, true, 0, 0x0L), 4), 61409); - - // gentest-4519 - assertEqual(perft(new Board(0x8020400000L, 0x800000000L, 0x10000L, 0x200000000000808L, 0x0L, 0x80004000L, 0x200000820014800L, 0x8080400008L, false, 0, 0x0L), 4), 102102); - - // gentest-4520 - assertEqual(perft(new Board(0xa0400000L, 0x800000000L, 0x10000L, 0x20808L, 0x0L, 0x40004000L, 0x820034800L, 0xc0400008L, true, 0, 0x0L), 4), 124778); - - // gentest-4521 - assertEqual(perft(new Board(0xa0400000L, 0x800000000L, 0x400000000L, 0x22010L, 0x0L, 0x40004000L, 0xc20026000L, 0xc0400010L, false, 0, 0x0L), 4), 288387); - - // gentest-4522 - assertEqual(perft(new Board(0xa0400000L, 0x800000000L, 0x400000000L, 0x52000L, 0x0L, 0x40004000L, 0xc20016000L, 0xc0440000L, true, 0, 0x0L), 4), 191473); - - // gentest-4523 - assertEqual(perft(new Board(0x20c00000L, 0x800000000L, 0x20000000000L, 0x52000L, 0x0L, 0x40000020L, 0x20820012020L, 0x40c40000L, false, 0, 0x0L), 4), 263186); - - // gentest-4524 - assertEqual(perft(new Board(0x20c00000L, 0x200000000000L, 0x20000000000L, 0x92000L, 0x0L, 0x2000000020L, 0x220020012020L, 0x2000c80000L, true, 0, 0x0L), 4), 317823); - - // gentest-4525 - assertEqual(perft(new Board(0x20804000L, 0x200000000000L, 0x20000000000L, 0x100000000082000L, 0x0L, 0x2000001000L, 0x100220020003000L, 0x2000884000L, false, 0, 0x0L), 4), 372628); - - // gentest-4526 - assertEqual(perft(new Board(0x20800000L, 0x200000000000L, 0x20000000040L, 0x8000000000012000L, 0x0L, 0x2000001000L, 0x8000220020003000L, 0x2000810040L, true, 0, 0x0L), 4), 379941); - - // gentest-4527 - assertEqual(perft(new Board(0x20800000L, 0x800000000L, 0x400000040L, 0x8000000000012000L, 0x0L, 0x10001000L, 0x8000000c20003000L, 0x10810040L, false, 0, 0x0L), 4), 304989); - - // gentest-4528 - assertEqual(perft(new Board(0x20800000L, 0x2000000L, 0x400000040L, 0x8001000000002000L, 0x0L, 0x10001000L, 0x8000000422003000L, 0x1000010800040L, true, 0, 0x0L), 4), 330138); - - // gentest-4529 - assertEqual(perft(new Board(0x20800000L, 0x2000000L, 0x20000000040L, 0x810000000002000L, 0x0L, 0x10001000L, 0x800020022003000L, 0x10000010800040L, false, 0, 0x0L), 4), 218327); - - // gentest-4530 - assertEqual(perft(new Board(0x20800000L, 0x2000000L, 0x20000008000L, 0x840000000000020L, 0x0L, 0x10001000L, 0x800020022001020L, 0x40000010808000L, true, 0, 0x0L), 4), 454224); - - // gentest-4531 - assertEqual(perft(new Board(0x20800000L, 0x2000000L, 0x8008000L, 0x40000000000028L, 0x0L, 0x2000001000L, 0x2a001028L, 0x40002000808000L, false, 0, 0x0L), 4), 413321); - - // gentest-4532 - assertEqual(perft(new Board(0x20800000L, 0x80000L, 0x8000040L, 0x4000000000028L, 0x0L, 0x2000001000L, 0x28081028L, 0x4002000800040L, true, 0, 0x0L), 4), 444689); - - // gentest-4533 - assertEqual(perft(new Board(0x20800000L, 0x80000L, 0x8000000L, 0x8000000000048L, 0x0L, 0x2000000020L, 0x28080068L, 0x8002000800000L, false, 0, 0x0L), 4), 238607); - - // gentest-4534 - assertEqual(perft(new Board(0x20800000L, 0x80000L, 0x8000000L, 0x5000000000000008L, 0x0L, 0x2000000020L, 0x4000000028080028L, 0x1000002000800000L, true, 0, 0x0L), 4), 292521); - - // gentest-4535 - assertEqual(perft(new Board(0x20800000L, 0x4L, 0x8000000L, 0x3000000000000008L, 0x0L, 0x100000000020L, 0x200000002800002cL, 0x1000100000800000L, false, 0, 0x0L), 4), 135505); - - // gentest-4536 - assertEqual(perft(new Board(0x2000800000L, 0x4L, 0x8000000L, 0x2000000000100008L, 0x0L, 0x8000000000020L, 0x200000200800002cL, 0x8000000900000L, true, 0, 0x0L), 4), 133082); - - // gentest-4537 - assertEqual(perft(new Board(0x2000800000L, 0x100L, 0x20000000000L, 0x2000000000100008L, 0x0L, 0x10000000000020L, 0x2000022000000128L, 0x10000000900000L, false, 0, 0x0L), 4), 142200); - - // gentest-4538 - assertEqual(perft(new Board(0x2000800000L, 0x100L, 0x100000000L, 0x2000040000000008L, 0x0L, 0x10000000000020L, 0x2000002100000128L, 0x10040000800000L, true, 0, 0x0L), 4), 196787); - - // gentest-4539 - assertEqual(perft(new Board(0x2000800000L, 0x100L, 0x100000000L, 0x200c0000000000L, 0x0L, 0x1000000000000020L, 0x20082100000120L, 0x1000040000800000L, false, 0, 0x0L), 4), 144838); - - // gentest-4540 - assertEqual(perft(new Board(0x2000800000L, 0x100L, 0x100000000L, 0x100000000800L, 0x0L, 0x20000000000020L, 0x2100000920L, 0x20100000800000L, true, 0, 0x0L), 4), 199164); - - // gentest-4541 - assertEqual(perft(new Board(0x2000800000L, 0x100L, 0x2000000L, 0x10000000004000L, 0x0L, 0x20000000000020L, 0x2002004120L, 0x30000000800000L, false, 0, 0x0L), 4), 136292); - - // gentest-4542 - assertEqual(perft(new Board(0x2000800000L, 0x100L, 0x2000000L, 0x84000000000L, 0x0L, 0x20000000000020L, 0x6002000120L, 0x20080000800000L, true, 0, 0x0L), 4), 133520); - - // gentest-4543 - assertEqual(perft(new Board(0x2000800000L, 0x100L, 0x10L, 0x4000000800000000L, 0x0L, 0x20000000000020L, 0x4000002000000130L, 0x20000800800000L, false, 0, 0x0L), 4), 145038); - - // gentest-4544 - assertEqual(perft(new Board(0x2000008000L, 0x100L, 0x10L, 0x800000000L, 0x0L, 0x1000000000000020L, 0x2000000130L, 0x1000000800008000L, true, 0, 0x0L), 4), 77639); - - // gentest-4545 - assertEqual(perft(new Board(0x2000000000L, 0x40000L, 0x10L, 0x800000080L, 0x0L, 0x1000000000002000L, 0x2000042010L, 0x1000000800000080L, false, 0, 0x0L), 4), 142079); - - // gentest-4546 - assertEqual(perft(new Board(0x200000000000L, 0x40000L, 0x10L, 0x802000000000L, 0x0L, 0x1000000000002000L, 0x200000042010L, 0x1000802000000000L, true, 0, 0x0L), 4), 42589); - - // gentest-4547 - assertEqual(perft(new Board(0x200000000000L, 0x40000L, 0x10L, 0x800000000000L, 0x0L, 0x1000000020000000L, 0x200020040010L, 0x1000800000000000L, false, 0, 0x0L), 4), 60608); - - // gentest-4548 - assertEqual(perft(new Board(0x200000000000L, 0x1000L, 0x10L, 0x80000000L, 0x0L, 0x800000020000000L, 0x200020001010L, 0x800000080000000L, true, 0, 0x0L), 4), 28683); - - // gentest-4549 - assertEqual(perft(new Board(0x200000000000L, 0x400000L, 0x10L, 0x8000000000L, 0x0L, 0x800000000200000L, 0x200000600010L, 0x800008000000000L, false, 0, 0x0L), 4), 90079); - - // gentest-4550 - assertEqual(perft(new Board(0x200000000000L, 0x400000L, 0x10L, 0x4000000L, 0x0L, 0x800000000002000L, 0x200000402010L, 0x800000004000000L, true, 0, 0x0L), 4), 74825); - - // gentest-4551 - assertEqual(perft(new Board(0x200000000000L, 0x400000L, 0x4000000000000L, 0x0L, 0x0L, 0x800000000002000L, 0x4200000402000L, 0x800000000000000L, false, 0, 0x0L), 4), 6296); - - // gentest-4552 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4553 - assertEqual(perft(new Board(0xbf40000048b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x48b7ffL, 0xffbf400000000000L, false, 0, 0x8100000000000081L), 4), 387170); - - // gentest-4554 - assertEqual(perft(new Board(0xbf00400048b700L, 0x200200000000042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2048b7fbL, 0xbfbf204000000000L, true, 0, 0x8100000000000081L), 4), 547191); - - // gentest-4555 - assertEqual(perft(new Board(0xaf1040004ab500L, 0x200200000010040L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x204bb5f9L, 0xbfaf304000000000L, false, 0, 0x8100000000000081L), 4), 759541); - - // gentest-4556 - assertEqual(perft(new Board(0xad1240005aa500L, 0x200000040010040L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x205ba5f9L, 0xbfad124040000000L, true, 0, 0x8100000000000081L), 4), 1062847); - - // gentest-4557 - assertEqual(perft(new Board(0xad1240005ea100L, 0x200000040010040L, 0x2400000020000020L, 0x8100000000000081L, 0x200000000002L, 0x1000000000000010L, 0x205fa1f3L, 0xb7ad324040000000L, false, 0, 0x8100000000000081L), 4), 1149535); - - // gentest-4558 - assertEqual(perft(new Board(0xad1240045a8100L, 0x200000000012040L, 0x2400000020000020L, 0x4100000000000081L, 0x200000000002L, 0x1000000000000010L, 0x245b81f3L, 0x77ad324000002000L, true, 0, 0x100000000000081L), 4), 1378427); - - // gentest-4559 - assertEqual(perft(new Board(0xad0240045a8100L, 0x200000000012040L, 0x2400100020000000L, 0x4100000000000081L, 0x200000000002L, 0x10000000000010L, 0x1000245b81d3L, 0x67bd224000002000L, false, 0, 0x81L), 4), 1438385); - - // gentest-4560 - assertEqual(perft(new Board(0xad0240045a8100L, 0x200000200800040L, 0x2400000020000000L, 0x4100000000000081L, 0x100000000002L, 0x10000000000010L, 0x2245a81d3L, 0x67bd124000800000L, true, 0, 0x81L), 4), 1069129); - - // gentest-4561 - assertEqual(perft(new Board(0xad0240441a8100L, 0x200000200800040L, 0x2400000020000000L, 0x4100000000000081L, 0x800000008L, 0x10000000000010L, 0x2641a81d9L, 0x67bd024800800000L, false, 0, 0x81L), 4), 1503346); - - // gentest-4562 - assertEqual(perft(new Board(0xa90240441a8100L, 0x200000200800040L, 0x2404000000000000L, 0x4100000000000081L, 0x800000008L, 0x1000000000000010L, 0x40002441a81d9L, 0x77a9024800800000L, true, 0, 0x81L), 4), 1538701); - - // gentest-4563 - assertEqual(perft(new Board(0xa90240441a8100L, 0x200000000840040L, 0x400000002400000L, 0x4100000000000081L, 0x800000008L, 0x1000000000000010L, 0x445e81d9L, 0x57a9024802800000L, false, 0, 0x81L), 4), 1406005); - - // gentest-4564 - assertEqual(perft(new Board(0xa90240441a8100L, 0x200000000840040L, 0x400000002400000L, 0x8100000000000081L, 0x8000008L, 0x1000000000000800L, 0x445e89c9L, 0x97a902400a800000L, true, 0, 0x0L), 4), 1259827); - - // gentest-4565 - assertEqual(perft(new Board(0xa90240441a8100L, 0x200000000841000L, 0x400000002000010L, 0x8100000000000081L, 0x20000008L, 0x1000000000000800L, 0x441e9999L, 0x97a9024022800000L, false, 0, 0x0L), 4), 884745); - - // gentest-4566 - assertEqual(perft(new Board(0xa90240441a8100L, 0x200000000841000L, 0x400000400000010L, 0x2100000000000084L, 0x20000008L, 0x1000000000000800L, 0x441e999cL, 0x37a9024420800000L, true, 0, 0x0L), 4), 878659); - - // gentest-4567 - assertEqual(perft(new Board(0xa90240441a8100L, 0x200000000841000L, 0x400000002000010L, 0x2100000000000440L, 0x20000008L, 0x1000000000000800L, 0x441e9d58L, 0x37a9024022800000L, false, 0, 0x0L), 4), 777247); - - // gentest-4568 - assertEqual(perft(new Board(0x2902c0441a8100L, 0x200000000841000L, 0x400000400000010L, 0x2100000000000440L, 0x20000002L, 0x1000000000000800L, 0x441e9d52L, 0x372902c420800000L, true, 0, 0x0L), 4), 1293798); - - // gentest-4569 - assertEqual(perft(new Board(0x2902c0441a8100L, 0x200000000840004L, 0x400000400000010L, 0x4100000000000420L, 0x20000002L, 0x1000000000000800L, 0x441e8d36L, 0x572902c420800000L, false, 0, 0x0L), 4), 1158499); - - // gentest-4570 - assertEqual(perft(new Board(0x2902c0441a8100L, 0x200000000840004L, 0x400000400000010L, 0x4100000000000220L, 0x20000002L, 0x40000000000800L, 0x441e8b36L, 0x476902c420800000L, true, 0, 0x0L), 4), 1384351); - - // gentest-4571 - assertEqual(perft(new Board(0x2902c0441a8100L, 0x200000400800004L, 0x400000000000010L, 0x4100000000000220L, 0x1000000002L, 0x40000000000800L, 0x4441a8b36L, 0x476902d000800000L, false, 0, 0x0L), 4), 1315608); - - // gentest-4572 - assertEqual(perft(new Board(0x290240c41a8100L, 0x10400800004L, 0x400000000000010L, 0x4100000000000420L, 0x1000000002L, 0x40000000000800L, 0x4441a8d36L, 0x4569035080800000L, true, 0, 0x0L), 4), 1174297); - - // gentest-4573 - assertEqual(perft(new Board(0x290240c41a8100L, 0x10001000044L, 0x400000000000010L, 0x4100000020000400L, 0x1000000002L, 0x40000000000800L, 0x651a8d16L, 0x4569035080000040L, false, 0, 0x0L), 4), 1086203); - - // gentest-4574 - assertEqual(perft(new Board(0x290040c41a8100L, 0x20002000044L, 0x400000000000010L, 0x4200000020000400L, 0x1000000002L, 0x40000000000800L, 0x200641a8d16L, 0x4669005082000040L, true, 0, 0x0L), 4), 1560464); - - // gentest-4575 - assertEqual(perft(new Board(0x290000e51a8000L, 0x20002000044L, 0x400000000000010L, 0x4200000000000200L, 0x1000000002L, 0x40000000000800L, 0x200451a8a16L, 0x46690010a2000040L, false, 0, 0x0L), 4), 1172276); - - // gentest-4576 - assertEqual(perft(new Board(0x280001e51a8000L, 0x20002000044L, 0x400000000002000L, 0x4200000000000200L, 0x1000000000000002L, 0x40000000000800L, 0x200451aaa06L, 0x56680001a2000040L, true, 0, 0x0L), 4), 736776); - - // gentest-4577 - assertEqual(perft(new Board(0x280001e50a8000L, 0x20002000044L, 0x400000000002000L, 0x4002000000000200L, 0x1000000000000001L, 0x40000000000800L, 0x200650aaa05L, 0x546a000182000040L, false, 0, 0x0L), 4), 671306); - - // gentest-4578 - assertEqual(perft(new Board(0x280001e58a0000L, 0x20002000044L, 0x400000000002000L, 0x4002000000000200L, 0x11L, 0x800000000800L, 0x200658a2a05L, 0x442a800182000050L, true, 0, 0x0L), 4), 34619); - - // gentest-4579 - assertEqual(perft(new Board(0x280001e58a0000L, 0x100000002000044L, 0x400000000000010L, 0x4002000000000200L, 0x1L, 0x400000000800L, 0x1000000658a0a15L, 0x442a400182000040L, false, 0, 0x0L), 4), 331191); - - // gentest-4580 - assertEqual(perft(new Board(0x280001e58a0000L, 0x100000000000444L, 0x400000000000010L, 0x4000000200000100L, 0x1L, 0x400000000800L, 0x1000000658a0915L, 0x4428400380000440L, true, 0, 0x0L), 4), 576080); - - // gentest-4581 - assertEqual(perft(new Board(0x280001e58a0000L, 0x4000000001050L, 0x400000000000000L, 0x4000000200000100L, 0x1L, 0x400000000800L, 0x40000658a1901L, 0x4428400380000050L, false, 0, 0x0L), 4), 932393); - - // gentest-4582 - assertEqual(perft(new Board(0x80021e58a0000L, 0x4000000001050L, 0x400000000000000L, 0x4000000200000100L, 0x200L, 0x80000000000800L, 0x40000658a1b00L, 0x4488002380000050L, true, 0, 0x0L), 4), 892621); - - // gentest-4583 - assertEqual(perft(new Board(0x80021e58a0000L, 0x4000000001050L, 0x400000000000000L, 0x1000000200000001L, 0x400L, 0x80000000000800L, 0x40000658a1c01L, 0x1488002380000050L, false, 0, 0x0L), 4), 1028266); - - // gentest-4584 - assertEqual(perft(new Board(0x80021e5820000L, 0x4000000080044L, 0x400000000000000L, 0x1200000000000001L, 0x400L, 0x80000000000800L, 0x4000065820c05L, 0x1688002180080040L, true, 0, 0x0L), 4), 735411); - - // gentest-4585 - assertEqual(perft(new Board(0x80025e1820000L, 0x4000000080044L, 0x400000000000000L, 0x1000000002000002L, 0x400L, 0x80000000000800L, 0x4000461820c06L, 0x1488002182080040L, false, 0, 0x0L), 4), 832680); - - // gentest-4586 - assertEqual(perft(new Board(0x80025e1820000L, 0x4000000080140L, 0x400000000000000L, 0x2002000000000002L, 0x400L, 0x80000000000800L, 0x4000461820d02L, 0x248a002180080040L, true, 0, 0x0L), 4), 820571); - - // gentest-4587 - assertEqual(perft(new Board(0x80025e1820000L, 0x10000080140L, 0x400000000000000L, 0x2002000000000002L, 0x4L, 0x8000000000000800L, 0x10461820906L, 0xa40a002180080040L, false, 0, 0x0L), 4), 488836); - - // gentest-4588 - assertEqual(perft(new Board(0x80421e1820000L, 0x10000080140L, 0x400000000000000L, 0x2002000000000002L, 0x4L, 0x8000000000000800L, 0x50061820906L, 0xa40a002180080040L, true, 0, 0x0L), 4), 651241); - - // gentest-4589 - assertEqual(perft(new Board(0x80421e1820000L, 0x400002140L, 0x400000000000000L, 0x2002000000000002L, 0x200L, 0x8000000000000800L, 0x40461820b02L, 0xa40a002180002040L, false, 0, 0x0L), 4), 85781); - - // gentest-4590 - assertEqual(perft(new Board(0xc21e1820000L, 0x400002140L, 0x400000000000000L, 0x2200000000001L, 0x200L, 0x8000000000000800L, 0x40461820b01L, 0x8402282180002040L, true, 0, 0x0L), 4), 791245); - - // gentest-4591 - assertEqual(perft(new Board(0xc21e1820000L, 0x400002040L, 0x400000000000000L, 0x200002000001L, 0x1000000000L, 0x8000000000000800L, 0x41461820801L, 0x8400282182002040L, false, 0, 0x0L), 4), 903611); - - // gentest-4592 - assertEqual(perft(new Board(0xc21e1820000L, 0x400202000L, 0x400000000000000L, 0x200000000001L, 0x8000000L, 0x8000000000000800L, 0x40469820801L, 0x8400282180202000L, true, 0, 0x0L), 4), 85186); - - // gentest-4593 - assertEqual(perft(new Board(0xc21e1820000L, 0x4000082000L, 0x400000000000000L, 0x200000000001L, 0x8000000L, 0x8000000000000004L, 0x400698a0005L, 0x8400286180002000L, false, 0, 0x0L), 4), 419250); - - // gentest-4594 - assertEqual(perft(new Board(0x429e1820000L, 0x20000000082000L, 0x400000000000000L, 0x200000000001L, 0x20000000000L, 0x8000000000000004L, 0x600618a0005L, 0x8420202980002000L, true, 0, 0x0L), 4), 485957); - - // gentest-4595 - assertEqual(perft(new Board(0x429e1820000L, 0x20000002002000L, 0x400000000000000L, 0x200000000001L, 0x800000000000000L, 0x80000000000004L, 0x800040063820005L, 0x4a0202980002000L, false, 0, 0x0L), 4), 458188); - - // gentest-4596 - assertEqual(perft(new Board(0x428e3820000L, 0x20000000002000L, 0x400000000000000L, 0x200000000001L, 0x800000000000000L, 0x400000000400L, 0x800040061820401L, 0x420602882002000L, true, 0, 0x0L), 4), 381711); - - // gentest-4597 - assertEqual(perft(new Board(0x428e3820000L, 0x20000000000080L, 0x400000000000000L, 0x200000000020L, 0x800000000000000L, 0x400000000400L, 0x800040061820420L, 0x420602882000080L, false, 0, 0x0L), 4), 338316); - - // gentest-4598 - assertEqual(perft(new Board(0x28e3820000L, 0x40000000080L, 0x400000000000000L, 0x200000000040L, 0x0L, 0x400000000400L, 0x61820440L, 0x400642882000080L, true, 0, 0x0L), 4), 148009); - - // gentest-4599 - assertEqual(perft(new Board(0x29e2820000L, 0x40000000080L, 0x400000000000000L, 0x200000000010L, 0x0L, 0x800000000400L, 0x160820410L, 0x400a42882000080L, false, 0, 0x0L), 4), 206948); - - // gentest-4600 - assertEqual(perft(new Board(0x29e2820000L, 0x100000000080L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000400L, 0x160920400L, 0x400b02882000080L, true, 0, 0x0L), 4), 133623); - - // gentest-4601 - assertEqual(perft(new Board(0x29e2820000L, 0x100000002000L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000800L, 0x160920800L, 0x400b02882002000L, false, 0, 0x0L), 4), 161585); - - // gentest-4602 - assertEqual(perft(new Board(0x29e2820000L, 0x100000000800L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000008L, 0x160920008L, 0x400b02882000800L, true, 0, 0x0L), 4), 153620); - - // gentest-4603 - assertEqual(perft(new Board(0x29e2820000L, 0x4000000800L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000004L, 0x160920004L, 0x400a06882000800L, false, 0, 0x0L), 4), 201350); - - // gentest-4604 - assertEqual(perft(new Board(0x29e2820000L, 0x4000000020L, 0x400000000000000L, 0x10010000000000L, 0x0L, 0x800000000004L, 0x10000160820004L, 0x400816882000020L, true, 0, 0x0L), 4), 171162); - - // gentest-4605 - assertEqual(perft(new Board(0x29e2820000L, 0x80000000000020L, 0x400000000000000L, 0x1000010000000000L, 0x0L, 0x800000000008L, 0x1000000160820008L, 0x480812882000020L, false, 0, 0x0L), 4), 139597); - - // gentest-4606 - assertEqual(perft(new Board(0x28e2820000L, 0x2000000000000020L, 0x400000000000000L, 0x1000000100000000L, 0x0L, 0x800000000004L, 0x1000000060820004L, 0x2400802982000020L, true, 0, 0x0L), 4), 125808); - - // gentest-4607 - assertEqual(perft(new Board(0x68a2820000L, 0x400000000020L, 0x400000000000000L, 0x100100000L, 0x0L, 0x800000000004L, 0x4020920004L, 0x400c02982000020L, false, 0, 0x0L), 4), 14541); - - // gentest-4608 - assertEqual(perft(new Board(0x60aa820000L, 0x400000000020L, 0x400000000000000L, 0x100100000000L, 0x0L, 0x40000000000004L, 0x104020820004L, 0x44040218a000020L, true, 0, 0x0L), 4), 167967); - - // gentest-4609 - assertEqual(perft(new Board(0x60aa820000L, 0x400000000020L, 0x400000000000000L, 0x200000010L, 0x0L, 0x40000000000200L, 0x4020820210L, 0x44040228a000020L, false, 0, 0x0L), 4), 155516); - - // gentest-4610 - assertEqual(perft(new Board(0x608a820000L, 0x20000020L, 0x400000000000000L, 0x20000000002L, 0x0L, 0x40000000000200L, 0x4000820202L, 0x4400220aa000020L, true, 0, 0x0L), 4), 117107); - - // gentest-4611 - assertEqual(perft(new Board(0x608a820000L, 0x20000020L, 0x10000000000L, 0x20000000008L, 0x0L, 0x40000000000001L, 0x4000820009L, 0x400320aa000020L, false, 0, 0x0L), 4), 149001); - - // gentest-4612 - assertEqual(perft(new Board(0x608a820000L, 0x20000020L, 0x10000000000L, 0x200000002L, 0x0L, 0x2000000000000001L, 0x4000820003L, 0x20000122aa000020L, true, 0, 0x0L), 4), 60403); - - // gentest-4613 - assertEqual(perft(new Board(0x608a820000L, 0x800000020L, 0x10000000000L, 0x200000004L, 0x0L, 0x2000000000000100L, 0x4000820104L, 0x2000012a8a000020L, false, 0, 0x0L), 4), 124822); - - // gentest-4614 - assertEqual(perft(new Board(0x608a820000L, 0x800400000L, 0x10000000000L, 0x500000000L, 0x0L, 0x2000000000000100L, 0x4400820100L, 0x200001298a400000L, true, 0, 0x0L), 4), 30476); - - // gentest-4615 - assertEqual(perft(new Board(0x608a820000L, 0x800400000L, 0x80000L, 0x100000400L, 0x0L, 0x2000000000000002L, 0x4000820402L, 0x200000298a480000L, false, 0, 0x0L), 4), 67785); - - // gentest-4616 - assertEqual(perft(new Board(0x608a820000L, 0x4000000400000L, 0x200000000L, 0x104000000L, 0x0L, 0x2000000000000002L, 0x4004820002L, 0x200400238a400000L, true, 0, 0x0L), 4), 149827); - - // gentest-4617 - assertEqual(perft(new Board(0x608a820000L, 0x4000000400000L, 0x200000000L, 0x104000000L, 0x0L, 0x40000000000002L, 0x4004820002L, 0x4400238a400000L, false, 0, 0x0L), 4), 145448); - - // gentest-4618 - assertEqual(perft(new Board(0x608a820000L, 0x10000000080L, 0x200000000L, 0x104000000L, 0x0L, 0x40000000000004L, 0x4004820004L, 0x4001238a000080L, true, 0, 0x0L), 4), 105414); - - // gentest-4619 - assertEqual(perft(new Board(0x608a820000L, 0x10000400000L, 0x200000000L, 0x104000000L, 0x0L, 0x40000000000004L, 0x4004820004L, 0x4001238a400000L, false, 0, 0x0L), 4), 111027); - - // gentest-4620 - assertEqual(perft(new Board(0x608a820000L, 0x10000400000L, 0x200000000L, 0x100000000L, 0x0L, 0x40000000000200L, 0x4000820200L, 0x4001238a400000L, true, 0, 0x0L), 4), 14810); - - // gentest-4621 - assertEqual(perft(new Board(0x40208a820000L, 0x10000400000L, 0x20L, 0x100000000L, 0x0L, 0x40000000000002L, 0x400000820002L, 0x4001218a400020L, false, 0, 0x0L), 4), 11882); - - // gentest-4622 - assertEqual(perft(new Board(0x4000aa820000L, 0x10000400000L, 0x20L, 0x100000000L, 0x0L, 0x8000000000000004L, 0x400000820004L, 0x80000101aa400020L, true, 0, 0x0L), 4), 16882); - - // gentest-4623 - assertEqual(perft(new Board(0x4000aa820000L, 0x10000400000L, 0x4000000L, 0x100000000L, 0x0L, 0x8000000000000400L, 0x400000820400L, 0x80000101ae400000L, false, 0, 0x0L), 4), 31234); - - // gentest-4624 - assertEqual(perft(new Board(0x4000aa820000L, 0x10000400000L, 0x20L, 0x100000000L, 0x0L, 0x4000000000000004L, 0x400000820004L, 0x40000101aa400020L, true, 0, 0x0L), 4), 24969); - - // gentest-4625 - assertEqual(perft(new Board(0x400000aa820000L, 0x18000000000L, 0x20L, 0x100000000L, 0x0L, 0x4000000000000800L, 0x40000000820800L, 0x40000181aa000020L, false, 0, 0x0L), 4), 15659); - - // gentest-4626 - assertEqual(perft(new Board(0x400000aa820000L, 0x18000000000L, 0x1000L, 0x100000000L, 0x0L, 0x20000000000004L, 0x40000000820004L, 0x200181aa001000L, true, 0, 0x0L), 4), 43281); - - // gentest-4627 - assertEqual(perft(new Board(0xaa820000L, 0x8400000000L, 0x1000L, 0x4000000100000000L, 0x0L, 0x20000000000800L, 0x4000000000820800L, 0x200085aa001000L, false, 0, 0x0L), 4), 219479); - - // gentest-4628 - assertEqual(perft(new Board(0xaa820000L, 0x8400000000L, 0x8L, 0x400000100000000L, 0x0L, 0x200000000800L, 0x400000000820800L, 0x2085aa000008L, true, 0, 0x0L), 4), 135687); - - // gentest-4629 - assertEqual(perft(new Board(0xaa820000L, 0x8400000000L, 0x8L, 0x200000100000000L, 0x0L, 0x100000000004L, 0x200000000820004L, 0x1085aa000008L, false, 0, 0x0L), 4), 172739); - - // gentest-4630 - assertEqual(perft(new Board(0xa2880000L, 0x8000020000L, 0x8L, 0x300000000L, 0x0L, 0x100000000004L, 0x200800004L, 0x1081a20a0008L, true, 0, 0x0L), 4), 21685); - - // gentest-4631 - assertEqual(perft(new Board(0xa0880000L, 0x8000020000L, 0x40000000L, 0x102000000L, 0x0L, 0x100000000002L, 0x2800002L, 0x1081e00a0000L, false, 0, 0x0L), 4), 155261); - - // gentest-4632 - assertEqual(perft(new Board(0xa0880000L, 0x8000000800L, 0x1000L, 0x102000000L, 0x0L, 0x100000000004L, 0x2800004L, 0x1081a0081800L, true, 0, 0x0L), 4), 141957); - - // gentest-4633 - assertEqual(perft(new Board(0xa0880000L, 0x8000000800L, 0x1000L, 0x1000000100000000L, 0x0L, 0x2000000004L, 0x1000000000800004L, 0xa1a0081800L, false, 0, 0x0L), 4), 126756); - - // gentest-4634 - assertEqual(perft(new Board(0xa0880000L, 0x40000000000800L, 0x1000L, 0x100000010000L, 0x0L, 0x2000000004L, 0x100000800004L, 0x400020a0091800L, true, 0, 0x0L), 4), 103466); - - // gentest-4635 - assertEqual(perft(new Board(0xa0880000L, 0x40000000000800L, 0x8L, 0x400000000010000L, 0x0L, 0x2000000004L, 0x400000000800004L, 0x400020a0090808L, false, 0, 0x0L), 4), 165549); - - // gentest-4636 - assertEqual(perft(new Board(0xa0880000L, 0x40000000000800L, 0x8000000000L, 0x2000000000010000L, 0x0L, 0x100000000004L, 0x2000000000800004L, 0x401080a0090800L, true, 0, 0x0L), 4), 115097); - - // gentest-4637 - assertEqual(perft(new Board(0xa0880000L, 0x2000000800L, 0x8000000000L, 0x400000000010000L, 0x0L, 0x100000000004L, 0x400000000800004L, 0x10a0a0090800L, false, 0, 0x0L), 4), 209599); - - // gentest-4638 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4639 - assertEqual(perft(new Board(0xff000002807d00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2807dffL, 0xbfff800000000000L, false, 0, 0x8100000000000081L), 4), 200647); - - // gentest-4640 - assertEqual(perft(new Board(0x9f600042803d00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x42803dffL, 0xbf9fe00000000000L, true, 0, 0x8100000000000081L), 4), 218491); - - // gentest-4641 - assertEqual(perft(new Board(0x9f204042803d00L, 0x200800000240000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x42a43dbdL, 0xbf9fa04000000000L, false, 0, 0x8100000000000081L), 4), 299815); - - // gentest-4642 - assertEqual(perft(new Board(0x9f204042902d00L, 0x200800000240000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x42b42dbdL, 0xbf9fa04000000000L, true, 0, 0x8100000000000081L), 4), 447156); - - // gentest-4643 - assertEqual(perft(new Board(0x9f204042912c00L, 0x200801000040000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x20000000000010L, 0x1042952cbdL, 0xafbfa04000000000L, false, 0, 0x81L), 4), 118004); - - // gentest-4644 - assertEqual(perft(new Board(0x9f20400a912400L, 0x200001040040000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x100000000010L, 0x100a9524bdL, 0xaf9f304040000000L, true, 0, 0x81L), 4), 925873); - - // gentest-4645 - assertEqual(perft(new Board(0x9b24401a812400L, 0x2000000400c0000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x100000000010L, 0x1a8d24bdL, 0xaf9b344040000000L, false, 0, 0x81L), 4), 745935); - - // gentest-4646 - assertEqual(perft(new Board(0x9b24401a810400L, 0x200000400042000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x20000000000010L, 0x41a8504bdL, 0xafbb244000002000L, true, 0, 0x81L), 4), 1436113); - - // gentest-4647 - assertEqual(perft(new Board(0x1ba4401a810400L, 0x2000000000c2000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000040000000L, 0x20000000000010L, 0x5a8d04b5L, 0xaf3ba44000002000L, false, 0, 0x81L), 4), 1453528); - - // gentest-4648 - assertEqual(perft(new Board(0x1ba44208810400L, 0x2000000100c0000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000040000000L, 0x400000000010L, 0x2488d04b5L, 0xaf1be44010000000L, true, 0, 0x81L), 4), 1321777); - - // gentest-4649 - assertEqual(perft(new Board(0x1ba44208810400L, 0x2000000100c0000L, 0x2400000000000820L, 0x4100000000000081L, 0x800000000000040L, 0x400000000010L, 0x2088d0cf1L, 0x6f1be44010000000L, false, 0, 0x81L), 4), 1448549); - - // gentest-4650 - assertEqual(perft(new Board(0x9a65208810400L, 0x200000810080000L, 0x2400000000000820L, 0x4100000000000081L, 0x800000000000040L, 0x400000000010L, 0xa08890cf1L, 0x6f09e65010000000L, true, 0, 0x81L), 4), 1950811); - - // gentest-4651 - assertEqual(perft(new Board(0x9a65208810400L, 0x200000830000000L, 0x2400000000000820L, 0x8100000000000081L, 0x800000040000000L, 0x400000000010L, 0xa68810cb1L, 0xaf09e65010000000L, false, 0, 0x81L), 4), 268108); - - // gentest-4652 - assertEqual(perft(new Board(0x9a65208810400L, 0x200000830000000L, 0x400000400000820L, 0x8100000000000081L, 0x800000080000000L, 0x80000000000010L, 0xaa8810cb1L, 0x8f89a65410000000L, true, 0, 0x81L), 4), 2074858); - - // gentest-4653 - assertEqual(perft(new Board(0x926d208810400L, 0x200000830000000L, 0x400000400000820L, 0x8100000000000084L, 0x800000080000000L, 0x80000000000010L, 0xaa8810cb4L, 0x8f8926d410000000L, false, 0, 0x80L), 4), 1812459); - - // gentest-4654 - assertEqual(perft(new Board(0x922da08810400L, 0x200000020400000L, 0x400000400000820L, 0x8100000000000084L, 0x800000000000000L, 0x80000000000010L, 0x228810cb4L, 0x8f8922dc00400000L, true, 0, 0x80L), 4), 927652); - - // gentest-4655 - assertEqual(perft(new Board(0x922da08850000L, 0x200000020400000L, 0x2400000000000820L, 0x8100000000000084L, 0x800000000000000L, 0x80000000002000L, 0x2288528a4L, 0xaf8922d800400000L, false, 0, 0x0L), 4), 832059); - - // gentest-4656 - assertEqual(perft(new Board(0x922da08850000L, 0x200000020000000L, 0x400000400001800L, 0x8100000000000084L, 0x800000000000000L, 0x80000000002000L, 0x228853884L, 0x8f8922dc00000000L, true, 0, 0x0L), 4), 1181195); - - // gentest-4657 - assertEqual(perft(new Board(0x9229a48050000L, 0x200000020000000L, 0x400000400001800L, 0x8100000000000084L, 0x800000000000000L, 0x80000000200000L, 0x268251884L, 0x8f89229c00000000L, false, 0, 0x0L), 4), 1022664); - - // gentest-4658 - assertEqual(perft(new Board(0x9229a48040000L, 0x200000020000000L, 0x400000000011010L, 0x4100000000000084L, 0x800000000000000L, 0x80000000200000L, 0x268241094L, 0x4f89229800010000L, true, 0, 0x0L), 4), 1011499); - - // gentest-4659 - assertEqual(perft(new Board(0x9229a48040000L, 0x200000000004000L, 0x400000000011010L, 0x4100000000000084L, 0x800000000000000L, 0x800000400000L, 0x248445094L, 0x4f09a29800010000L, false, 0, 0x0L), 4), 708309); - - // gentest-4660 - assertEqual(perft(new Board(0x9228a48040000L, 0x200000000004000L, 0x410000000003000L, 0x4100000000000084L, 0x800000000000000L, 0x800000400000L, 0x240447084L, 0x4f19a28808000000L, true, 0, 0x0L), 4), 843986); - - // gentest-4661 - assertEqual(perft(new Board(0x8238a48040000L, 0x200000000004000L, 0x410000000001010L, 0x4100000000000082L, 0x800000000000000L, 0x800000400000L, 0x240445092L, 0x4f18a38808000000L, false, 0, 0x0L), 4), 640150); - - // gentest-4662 - assertEqual(perft(new Board(0x8238a48040000L, 0x200000080000000L, 0x400000400001010L, 0x8100000000000082L, 0x800000000000000L, 0x800000400000L, 0x2c0441092L, 0x8f08a38c08000000L, true, 0, 0x0L), 4), 629181); - - // gentest-4663 - assertEqual(perft(new Board(0x8238a48040000L, 0x200000080000000L, 0x400000400003000L, 0x8100000000000042L, 0x1000000000000000L, 0x800000400000L, 0x2c0443042L, 0x9708a38c08000000L, false, 0, 0x0L), 4), 1004922); - - // gentest-4664 - assertEqual(perft(new Board(0x8238a48040000L, 0x200000080000000L, 0x2400000000003000L, 0x8100000000000022L, 0x100000L, 0x800000400000L, 0x2c0443022L, 0xa708a38808100000L, true, 0, 0x0L), 4), 132640); - - // gentest-4665 - assertEqual(perft(new Board(0x8238a48040000L, 0x200000080000000L, 0x2400000000202000L, 0x8100000000000022L, 0x0L, 0x800000004000L, 0x2c0246022L, 0xa708a38808000000L, false, 0, 0x0L), 4), 493636); - - // gentest-4666 - assertEqual(perft(new Board(0x8228b08040000L, 0x200000080000000L, 0x2400000000202000L, 0x8100000000000022L, 0x0L, 0x80000000004000L, 0x8280246022L, 0xa788220908000000L, true, 0, 0x0L), 4), 480500); - - // gentest-4667 - assertEqual(perft(new Board(0x8228b0a000000L, 0x200000080000000L, 0x400000000202000L, 0x8100000000000006L, 0x0L, 0x80000000004000L, 0x8282206006L, 0x8788220908000000L, false, 0, 0x0L), 4), 412870); - - // gentest-4668 - assertEqual(perft(new Board(0x8228a0a000000L, 0x200000080000000L, 0x400000000202000L, 0x8000000100000006L, 0x0L, 0x80000000008000L, 0x828020a006L, 0x868822090a000000L, true, 0, 0x0L), 4), 708946); - - // gentest-4669 - assertEqual(perft(new Board(0xaa0a0a000000L, 0x200000080000000L, 0x400000000600000L, 0x8000000100000006L, 0x0L, 0x80000000008000L, 0x800280608006L, 0x86802a090a000000L, false, 0, 0x0L), 4), 844245); - - // gentest-4670 - assertEqual(perft(new Board(0xaa0a0a000000L, 0x200000080000000L, 0x400000000600000L, 0x8000000000000042L, 0x0L, 0x80000000008000L, 0x800280608040L, 0x86802a080a000002L, true, 0, 0x0L), 4), 405253); - - // gentest-4671 - assertEqual(perft(new Board(0xa20a0a000000L, 0x200000080000000L, 0x180000200000L, 0x8000004000000002L, 0x0L, 0x80000000008000L, 0x884280208000L, 0x828032080a000002L, false, 0, 0x0L), 4), 694893); - - // gentest-4672 - assertEqual(perft(new Board(0xa20a0a000000L, 0x200000080000000L, 0x2020000000200000L, 0x8000004000000008L, 0x0L, 0x80000000008000L, 0x2000804280208000L, 0x82a022080a000008L, true, 0, 0x0L), 4), 403679); - - // gentest-4673 - assertEqual(perft(new Board(0xa20a0a000000L, 0x200002000000000L, 0x2020000000200000L, 0x8000004000000010L, 0x0L, 0x80000000004000L, 0x2000806200204000L, 0x82a022080a000010L, false, 0, 0x0L), 4), 470872); - - // gentest-4674 - assertEqual(perft(new Board(0xa20a0a000000L, 0x200002000000000L, 0x2020000000200000L, 0x8000400000000040L, 0x0L, 0x80000000004000L, 0x2000c02200204000L, 0x82a022080a000040L, true, 0, 0x0L), 4), 48990); - - // gentest-4675 - assertEqual(perft(new Board(0xa20a02080000L, 0x200002000000000L, 0x2020000000200000L, 0x8000400000000000L, 0x0L, 0x80000000008000L, 0x2000c02200208000L, 0x82a0220802080000L, false, 0, 0x0L), 4), 180761); - - // gentest-4676 - assertEqual(perft(new Board(0xa20a02080000L, 0x8002000000000L, 0x2000100000004000L, 0x8000400000000000L, 0x0L, 0x80000000008000L, 0x2000c0220000c000L, 0x8088320802080000L, true, 0, 0x0L), 4), 174369); - - // gentest-4677 - assertEqual(perft(new Board(0xa20a000a0000L, 0x8000000100000L, 0x2000100000004000L, 0x8000400000000000L, 0x0L, 0x80000000000080L, 0x2000c00200104080L, 0x80883208000a0000L, false, 0, 0x0L), 4), 174787); - - // gentest-4678 - assertEqual(perft(new Board(0xa20a000a0000L, 0x8000000100000L, 0x6000000000004000L, 0x8000400000000000L, 0x0L, 0x80000000008000L, 0x2000c0020010c000L, 0xc0882208000a0000L, true, 0, 0x0L), 4), 116615); - - // gentest-4679 - assertEqual(perft(new Board(0x822a000a0000L, 0x8000040000000L, 0x4000000400004000L, 0x8000400000000000L, 0x0L, 0x80000000008000L, 0xc0064000c000L, 0xc0880228000a0000L, false, 0, 0x0L), 4), 159487); - - // gentest-4680 - assertEqual(perft(new Board(0x822a000a0000L, 0x440000000L, 0x2020000000004000L, 0x8000400000000000L, 0x0L, 0x80000000008000L, 0x2000c0024000c000L, 0x80a0022c000a0000L, true, 0, 0x0L), 4), 217628); - - // gentest-4681 - assertEqual(perft(new Board(0x822a000a0000L, 0x440000000L, 0x20080000004000L, 0x4000400000000000L, 0x0L, 0x80000000800000L, 0xc80240804000L, 0x40a0022c000a0000L, false, 0, 0x0L), 4), 396193); - - // gentest-4682 - assertEqual(perft(new Board(0x822a000a0000L, 0x440000000L, 0x20000000404000L, 0x200400000000000L, 0x0L, 0x80000000800000L, 0xc00240c04000L, 0x2a0022c000a0000L, true, 0, 0x0L), 4), 423759); - - // gentest-4683 - assertEqual(perft(new Board(0x822a000a0000L, 0x440000000L, 0x20000080004000L, 0x200400000000000L, 0x0L, 0x8000000000800000L, 0xc002c0804000L, 0x8220022c000a0000L, false, 0, 0x0L), 4), 352364); - - // gentest-4684 - assertEqual(perft(new Board(0x820a40080200L, 0x400000000L, 0x20000080000020L, 0x200400000000000L, 0x0L, 0x8000000000800000L, 0xc00280800020L, 0x8220020c40080200L, true, 0, 0x0L), 4), 75121); - - // gentest-4685 - assertEqual(perft(new Board(0x820a40080200L, 0x400000000L, 0x1000000080000020L, 0x200200000000000L, 0x0L, 0x8000000000400000L, 0xa00280400020L, 0x9200020c40080200L, false, 0, 0x0L), 4), 294252); - - // gentest-4686 - assertEqual(perft(new Board(0x820a40080000L, 0x400000000L, 0x20004000000022L, 0x200200000000000L, 0x0L, 0x8000000000400000L, 0xa04200400020L, 0x8220020c40080002L, true, 0, 0x0L), 4), 397279); - - // gentest-4687 - assertEqual(perft(new Board(0x820a40080000L, 0x400000000L, 0x20004000004400L, 0x200000020000000L, 0x0L, 0x8000000000400000L, 0x804220404000L, 0x8220020c40080400L, false, 0, 0x0L), 4), 489433); - - // gentest-4688 - assertEqual(perft(new Board(0x820a00080000L, 0x8000000000000L, 0x20004000004400L, 0x1000000020000000L, 0x0L, 0x8000000040000000L, 0x804260004000L, 0x9028020800080400L, true, 0, 0x0L), 4), 482052); - - // gentest-4689 - assertEqual(perft(new Board(0x820a00080000L, 0x8000000000000L, 0x20004000004400L, 0x90000000L, 0x0L, 0x8000000000400000L, 0x804280404000L, 0x8028020810080400L, false, 0, 0x0L), 4), 516052); - - // gentest-4690 - assertEqual(perft(new Board(0x820a00000800L, 0x8000000000000L, 0xc000004400L, 0x50000000L, 0x0L, 0x8000000000400000L, 0x804240404000L, 0x8008028810000c00L, true, 0, 0x0L), 4), 435114); - - // gentest-4691 - assertEqual(perft(new Board(0x820a00000800L, 0x8000000000000L, 0x208000280000L, 0x50000000L, 0x0L, 0x8000000000400000L, 0xa00240600000L, 0x8008028810080800L, false, 0, 0x0L), 4), 33472); - - // gentest-4692 - assertEqual(perft(new Board(0x820a00000800L, 0x200000000000L, 0x8000280000L, 0x40001000L, 0x0L, 0x8000000080000000L, 0x8002c0200000L, 0x8000228800081800L, true, 0, 0x0L), 4), 450550); - - // gentest-4693 - assertEqual(perft(new Board(0x820a00000800L, 0x200000000000L, 0xa000200000L, 0x8001000L, 0x0L, 0x8000004000000000L, 0x804208200000L, 0x800022a800001800L, false, 0, 0x0L), 4), 496189); - - // gentest-4694 - assertEqual(perft(new Board(0x820a00000000L, 0x200000000000L, 0xa000200000L, 0x1800L, 0x0L, 0x8000004000000000L, 0x804200200800L, 0x800022a800001000L, true, 0, 0x0L), 4), 394545); - - // gentest-4695 - assertEqual(perft(new Board(0x820a00000000L, 0x200000000000L, 0x8008000200000L, 0x1000000000L, 0x0L, 0x8000004000000000L, 0x805200200000L, 0x8008228800000000L, false, 0, 0x0L), 4), 153768); - - // gentest-4696 - assertEqual(perft(new Board(0x820a00000000L, 0x200000000000L, 0x8008000200000L, 0x1000L, 0x0L, 0x8000004000000000L, 0x804200201000L, 0x8008228800000000L, true, 0, 0x0L), 4), 198690); - - // gentest-4697 - assertEqual(perft(new Board(0x820200000000L, 0x200000000000L, 0x48800000000L, 0x4000L, 0x0L, 0x8000004000000000L, 0x804a00004000L, 0x8000268000000000L, false, 0, 0x0L), 4), 212693); - - // gentest-4698 - assertEqual(perft(new Board(0x820200000000L, 0x200000000000L, 0x40800000400L, 0x4000L, 0x0L, 0x8000002000000000L, 0x802a00004000L, 0x8000260000000400L, true, 0, 0x0L), 4), 68481); - - // gentest-4699 - assertEqual(perft(new Board(0x820000000000L, 0x200000000000L, 0xa00000400L, 0x400000000000L, 0x0L, 0x8000000020000000L, 0xc00820000000L, 0x8000220200000400L, false, 0, 0x0L), 4), 352116); - - // gentest-4700 - assertEqual(perft(new Board(0x820000000000L, 0x80000000000000L, 0xa10000000L, 0x80000000000L, 0x0L, 0x8000000020000000L, 0x880820000000L, 0x8080020210000000L, true, 0, 0x0L), 4), 204834); - - // gentest-4701 - assertEqual(perft(new Board(0x800000000000L, 0x80000000000000L, 0x8000810000000L, 0x20000000000L, 0x0L, 0x8000000020000000L, 0x820820000000L, 0x8088000010000000L, false, 0, 0x0L), 4), 274272); - - // gentest-4702 - assertEqual(perft(new Board(0x800000000000L, 0x80000000000000L, 0x100800000400L, 0x10000000000L, 0x0L, 0x8000000020000000L, 0x810820000000L, 0x8080100000000400L, true, 0, 0x0L), 4), 243451); - - // gentest-4703 - assertEqual(perft(new Board(0x800000000000L, 0x80000000000000L, 0x2002000000400L, 0x80000000000L, 0x0L, 0x8000000020000000L, 0x2880020000000L, 0x8080002000000400L, false, 0, 0x0L), 4), 207996); - - // gentest-4704 - assertEqual(perft(new Board(0x800000000000L, 0x4000000000L, 0x2800080000L, 0x80000000000L, 0x0L, 0x8000000020000000L, 0x880820000000L, 0x8000006000080000L, true, 0, 0x0L), 4), 298143); - - // gentest-4705 - assertEqual(perft(new Board(0x800000000000L, 0x4000000000L, 0x2810000000L, 0x8000000000000L, 0x0L, 0x8000000000400000L, 0x8800800400000L, 0x8000006010000000L, false, 0, 0x0L), 4), 199421); - - // gentest-4706 - assertEqual(perft(new Board(0x800000000000L, 0x4000000000L, 0x2800200000L, 0x800000000000000L, 0x0L, 0x80000000400000L, 0x800800800400000L, 0x80006000200000L, true, 0, 0x0L), 4), 261448); - - // gentest-4707 - assertEqual(perft(new Board(0x800000000000L, 0x10000000L, 0x2002000200000L, 0x800000000000000L, 0x0L, 0x80000080000000L, 0x802800080000000L, 0x80002010200000L, false, 0, 0x0L), 4), 200833); - - // gentest-4708 - assertEqual(perft(new Board(0x800000000000L, 0x10000000L, 0x2012000000000L, 0x800000000L, 0x0L, 0x80000080000000L, 0x2800880000000L, 0x80012010000000L, true, 0, 0x0L), 4), 159937); - - // gentest-4709 - assertEqual(perft(new Board(0x800000000000L, 0x10000000L, 0x2000200000000L, 0x2000000000L, 0x0L, 0x80000000800000L, 0x2802000800000L, 0x80000210000000L, false, 0, 0x0L), 4), 174463); - - // gentest-4710 - assertEqual(perft(new Board(0x800000000000L, 0x20L, 0x2000200000000L, 0x800000000L, 0x0L, 0x80000000800000L, 0x2800800800000L, 0x80000200000020L, true, 0, 0x0L), 4), 93158); - - // gentest-4711 - assertEqual(perft(new Board(0x800000000000L, 0x20L, 0x2040000000000L, 0x4000000000L, 0x0L, 0x80000080000000L, 0x2804080000000L, 0x80040000000020L, false, 0, 0x0L), 4), 108577); - - // gentest-4712 - assertEqual(perft(new Board(0x800000000000L, 0x20L, 0x2000001000000L, 0x4000000000L, 0x0L, 0x8000008000000000L, 0x280c000000000L, 0x8000000001000020L, true, 0, 0x0L), 4), 77333); - - // gentest-4713 - assertEqual(perft(new Board(0x800000000000L, 0x20L, 0x100040000000000L, 0x4000000000L, 0x0L, 0x8000400000000000L, 0x100c04000000000L, 0x8000040000000020L, false, 0, 0x0L), 4), 70339); - - // gentest-4714 - assertEqual(perft(new Board(0x800000000000L, 0x20L, 0x100000000080000L, 0x40L, 0x0L, 0x8000400000000000L, 0x100c00000000040L, 0x8000000000080020L, true, 0, 0x0L), 4), 20098); - - // gentest-4715 - assertEqual(perft(new Board(0x800000000000L, 0x8000L, 0x80000L, 0x40L, 0x0L, 0x8000400000000000L, 0xc00000080040L, 0x8000000000008000L, false, 0, 0x0L), 4), 12862); - - // gentest-4716 - assertEqual(perft(new Board(0x800000000000L, 0x200000L, 0x80000L, 0x10L, 0x0L, 0x4000400000000000L, 0xc00000080010L, 0x4000000000200000L, true, 0, 0x0L), 4), 38395); - - // gentest-4717 - assertEqual(perft(new Board(0x800000000000L, 0x8000000L, 0x200000000L, 0x80L, 0x0L, 0x4000400000000000L, 0xc00200000080L, 0x4000000008000000L, false, 0, 0x0L), 4), 45578); - - // gentest-4718 - assertEqual(perft(new Board(0x800000000000L, 0x10000000000000L, 0x200000000L, 0x80L, 0x0L, 0x4000002000000000L, 0x802200000080L, 0x4010000000000000L, true, 0, 0x0L), 4), 13716); - - // gentest-4719 - assertEqual(perft(new Board(0x800000000000L, 0x40000000000L, 0x200000000L, 0x10L, 0x0L, 0x4000100000000000L, 0x900200000010L, 0x4000040000000000L, false, 0, 0x0L), 4), 50947); - - // gentest-4720 - assertEqual(perft(new Board(0x800000000000L, 0x20000L, 0x200000000L, 0x10L, 0x0L, 0x4000200000000000L, 0xa00200000010L, 0x4000000000020000L, true, 0, 0x0L), 4), 50050); - - // gentest-4721 - assertEqual(perft(new Board(0x800000000000L, 0x8000000L, 0x8000000000000L, 0x10000000000000L, 0x0L, 0x4000200000000000L, 0x18a00000000000L, 0x4000000008000000L, false, 0, 0x0L), 4), 43044); - - // gentest-4722 - assertEqual(perft(new Board(0x800000000000L, 0x1000000000000L, 0x8000000000000L, 0x10000000000000L, 0x0L, 0x4000002000000000L, 0x18802000000000L, 0x4001000000000000L, true, 0, 0x0L), 4), 18474); - - // gentest-4723 - assertEqual(perft(new Board(0x800000000000L, 0x1000000000000L, 0x8000000000000L, 0x10000000000000L, 0x0L, 0x2000080000000000L, 0x18880000000000L, 0x2001000000000000L, false, 0, 0x0L), 4), 8360); - - // gentest-4724 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4725 - assertEqual(perft(new Board(0xf700082000df00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2000dfffL, 0xfff7000800000000L, false, 0, 0x8100000000000081L), 4), 359553); - - // gentest-4726 - assertEqual(perft(new Board(0xf5020820409f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x8000000000010L, 0x20409fffL, 0xeffd020800000000L, true, 0, 0x81L), 4), 302845); - - // gentest-4727 - assertEqual(perft(new Board(0xf50208b0400f00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x8000000000010L, 0xb0400fffL, 0xaffd220800000000L, false, 0, 0x81L), 4), 797284); - - // gentest-4728 - assertEqual(perft(new Board(0xf50208b0400f00L, 0x200200000000042L, 0x2000000040004004L, 0x8100000000000081L, 0x800000000000008L, 0x40000000010L, 0xb0404fdfL, 0xabf5260840000000L, true, 0, 0x81L), 4), 891122); - - // gentest-4729 - assertEqual(perft(new Board(0xf50208b4400b00L, 0x200200000800002L, 0x2000000000005004L, 0x8100000000000081L, 0x800000000000008L, 0x40000000010L, 0xb4c04b9fL, 0xabf5260800001000L, false, 0, 0x81L), 4), 1022100); - - // gentest-4730 - assertEqual(perft(new Board(0xe51208b4400b00L, 0x200200000002002L, 0x2000000000005004L, 0x8100000000000081L, 0x800000000000008L, 0x2000000000010L, 0xb4406b9fL, 0xabe7320800001000L, true, 0, 0x81L), 4), 1614692); - - // gentest-4731 - assertEqual(perft(new Board(0xe51208b0400b00L, 0x240040000002L, 0x2000000000005004L, 0x8100000000000081L, 0x800000000000008L, 0x2000000000010L, 0x8f0404b9fL, 0xa9e7360000001000L, false, 0, 0x81L), 4), 2311992); - - // gentest-4732 - assertEqual(perft(new Board(0xe51208b1400a00L, 0x240040000002L, 0x2005004L, 0x8100000000000081L, 0x200000000000008L, 0x2000000000010L, 0x8f1404a9fL, 0x83e7360002001000L, true, 0, 0x81L), 4), 1903821); - - // gentest-4733 - assertEqual(perft(new Board(0xe50218b1400a00L, 0x240040000002L, 0x2004004L, 0x8100000000000021L, 0x200000000000008L, 0x2000000001000L, 0x8f1405a2fL, 0x83e7261002000000L, false, 0, 0x0L), 4), 1670844); - - // gentest-4734 - assertEqual(perft(new Board(0xe50218b1400a00L, 0x240000000002L, 0x400004004L, 0x8100000000000021L, 0x1000000000000008L, 0x2000000001000L, 0x2008b1405a2fL, 0x91e7061400000000L, true, 0, 0x0L), 4), 1772284); - - // gentest-4735 - assertEqual(perft(new Board(0xe50218b1400a00L, 0x200200000000002L, 0x400004004L, 0x8100000000000021L, 0x1000000000000008L, 0x2000000001000L, 0x2008b1405a2fL, 0x93e7021400000000L, false, 0, 0x0L), 4), 1440593); - - // gentest-4736 - assertEqual(perft(new Board(0x6502b891400a00L, 0x8200000000002L, 0x400004004L, 0x8100000000000021L, 0x1000000000000008L, 0x2000000001000L, 0x202891405a2fL, 0x916f029400000000L, true, 0, 0x0L), 4), 1308456); - - // gentest-4737 - assertEqual(perft(new Board(0x6502b891400a00L, 0x400000002L, 0x4004L, 0x4100000000000021L, 0x1000000000000008L, 0x2000000001000L, 0x2c91405a2fL, 0x5167029000000000L, false, 0, 0x0L), 4), 71176); - - // gentest-4738 - assertEqual(perft(new Board(0x6500bc91400a00L, 0x2L, 0x4004L, 0x4100000000002001L, 0x10000000000008L, 0x2000000001000L, 0x2891407a0fL, 0x4177009400000000L, true, 0, 0x0L), 4), 806385); - - // gentest-4739 - assertEqual(perft(new Board(0x6400bd91400a00L, 0x2L, 0x800004L, 0x4100000000002001L, 0x10000000000400L, 0x2000000001000L, 0x2891c03e07L, 0x4176009500000000L, false, 0, 0x0L), 4), 918323); - - // gentest-4740 - assertEqual(perft(new Board(0x2440bdd1000a00L, 0x2L, 0x800004L, 0x500000000002001L, 0x10000000000400L, 0x2000000001000L, 0x28d1803e07L, 0x536409500000000L, true, 0, 0x0L), 4), 773135); - - // gentest-4741 - assertEqual(perft(new Board(0x2440b9d5000200L, 0x2L, 0x800004L, 0x500000000002001L, 0x10000000000400L, 0x2000000001000L, 0x28d5803607L, 0x536409100000000L, false, 0, 0x0L), 4), 1225847); - - // gentest-4742 - assertEqual(perft(new Board(0x2440b955000200L, 0x2L, 0x800004L, 0x500000000002001L, 0x80000400L, 0x200000000000010L, 0x2855802617L, 0x724409180000000L, true, 0, 0x0L), 4), 507662); - - // gentest-4743 - assertEqual(perft(new Board(0x2440b955000200L, 0x2L, 0x800004L, 0x900000000002001L, 0x80080000L, 0x200000000001000L, 0x2855883207L, 0xb24409180000000L, false, 0, 0x0L), 4), 938340); - - // gentest-4744 - assertEqual(perft(new Board(0x460b955000200L, 0x2L, 0x800004L, 0x1100000000000021L, 0x80080000L, 0x200000000001000L, 0x2855881227L, 0x1304609180000000L, true, 0, 0x0L), 4), 708042); - - // gentest-4745 - assertEqual(perft(new Board(0x460b955000200L, 0x2L, 0x800004L, 0x110000000000041L, 0x80080000L, 0x200000000000800L, 0x2855880a47L, 0x314609180000000L, false, 0, 0x0L), 4), 477677); - - // gentest-4746 - assertEqual(perft(new Board(0x460b955000200L, 0x2L, 0x800004L, 0x110000000000041L, 0x1020L, 0x200000000000800L, 0x2855801a47L, 0x314609100000020L, true, 0, 0x0L), 4), 579335); - - // gentest-4747 - assertEqual(perft(new Board(0x460b955000200L, 0x2L, 0x800004L, 0x110000000004001L, 0x20100000L, 0x200000000000800L, 0x2855904a07L, 0x314609120000000L, false, 0, 0x0L), 4), 512707); - - // gentest-4748 - assertEqual(perft(new Board(0x460b955000200L, 0x40000L, 0x800004L, 0x11000000004001L, 0x20100000L, 0x2000000000800L, 0x2855944a05L, 0x17609120000000L, true, 0, 0x0L), 4), 587292); - - // gentest-4749 - assertEqual(perft(new Board(0x460b915000200L, 0x100L, 0x800004L, 0x1001000000004001L, 0x20100000L, 0x2000000000800L, 0xa815904b05L, 0x1007601120000000L, false, 0, 0x0L), 4), 806906); - - // gentest-4750 - assertEqual(perft(new Board(0x460a935000200L, 0x100L, 0x800004L, 0x1001000000004001L, 0x8000L, 0x2000000000800L, 0xa815804b05L, 0x1007600120008000L, true, 0, 0x0L), 4), 385160); - - // gentest-4751 - assertEqual(perft(new Board(0x460a935020000L, 0x100L, 0x4L, 0x1001000000004001L, 0x800000L, 0x2000000000400L, 0xa815024505L, 0x1007600120800000L, false, 0, 0x0L), 4), 835793); - - // gentest-4752 - assertEqual(perft(new Board(0x460a915220000L, 0x100L, 0x4L, 0x4001000000004002L, 0x800000L, 0x2000000000400L, 0xa815024506L, 0x4007600100a00000L, true, 0, 0x0L), 4), 888973); - - // gentest-4753 - assertEqual(perft(new Board(0x4602915220000L, 0x100L, 0x4L, 0x4001000000000042L, 0x40000000L, 0x2000000000400L, 0x402815020546L, 0x4007200140200000L, false, 0, 0x0L), 4), 634585); - - // gentest-4754 - assertEqual(perft(new Board(0x242915220000L, 0x100L, 0x4L, 0x1400000000042L, 0x40000000L, 0x2000000000008L, 0x281502014eL, 0x3640140200000L, true, 0, 0x0L), 4), 424340); - - // gentest-4755 - assertEqual(perft(new Board(0x600d15220000L, 0x100L, 0x4L, 0x1000000000082L, 0x40000000L, 0x2000000000008L, 0x40081502018eL, 0x3200540200000L, false, 0, 0x0L), 4), 376429); - - // gentest-4756 - assertEqual(perft(new Board(0x600d05220000L, 0x2000000L, 0x4L, 0x1000000000082L, 0x80000000L, 0x2000000000008L, 0x40080702008eL, 0x3200580200000L, true, 0, 0x0L), 4), 376826); - - // gentest-4757 - assertEqual(perft(new Board(0x600d05220000L, 0x2000000L, 0x200L, 0x1000000000082L, 0x8000000L, 0x2000000000010L, 0x400807020292L, 0x3200508200000L, false, 0, 0x0L), 4), 229194); - - // gentest-4758 - assertEqual(perft(new Board(0x600d05220000L, 0x2000000L, 0x200L, 0x1000000000042L, 0x40000L, 0x20000000010L, 0x400807020252L, 0x1220500240000L, true, 0, 0x0L), 4), 45862); - - // gentest-4759 - assertEqual(perft(new Board(0x680505220000L, 0x2000000L, 0x200L, 0x10000000042L, 0x40000L, 0x20000000020L, 0x480007020262L, 0x230500240000L, false, 0, 0x0L), 4), 162392); - - // gentest-4760 - assertEqual(perft(new Board(0x680505220000L, 0x2000000L, 0x4L, 0x10000000042L, 0x40000L, 0x100000000000020L, 0x480007020066L, 0x100210500240000L, true, 0, 0x0L), 4), 265367); - - // gentest-4761 - assertEqual(perft(new Board(0x680505220000L, 0x100L, 0x20000000L, 0x10000000042L, 0x40000L, 0x200000000000020L, 0x480025020162L, 0x200210500240000L, false, 0, 0x0L), 4), 256880); - - // gentest-4762 - assertEqual(perft(new Board(0x600505220000L, 0x100L, 0x20000000L, 0x80000000042L, 0x4L, 0x200000000002000L, 0x400025022142L, 0x200280500200004L, true, 0, 0x0L), 4), 264443); - - // gentest-4763 - assertEqual(perft(new Board(0x600505220000L, 0x100L, 0x0L, 0x80000000005L, 0x20000000L, 0x200000000002000L, 0x400005022105L, 0x200280520200000L, false, 0, 0x0L), 4), 199586); - - // gentest-4764 - assertEqual(perft(new Board(0x600505020000L, 0x100L, 0x0L, 0x80000000005L, 0x8000000L, 0x200000000200000L, 0x400005220105L, 0x200280508000000L, true, 0, 0x0L), 4), 216424); - - // gentest-4765 - assertEqual(perft(new Board(0x600505020000L, 0x100L, 0x0L, 0x80000000005L, 0x0L, 0x200000000002000L, 0x400005022105L, 0x200280500000000L, false, 0, 0x0L), 4), 115396); - - // gentest-4766 - assertEqual(perft(new Board(0x600505020000L, 0x100L, 0x0L, 0x205L, 0x0L, 0x200000000200000L, 0x400005220105L, 0x200200500000200L, true, 0, 0x0L), 4), 82673); - - // gentest-4767 - assertEqual(perft(new Board(0x600505020000L, 0x100L, 0x0L, 0x2011L, 0x0L, 0x200000040000000L, 0x400045020111L, 0x200200500002000L, false, 0, 0x0L), 4), 135045); - - // gentest-4768 - assertEqual(perft(new Board(0x600505020000L, 0x100L, 0x0L, 0x3001L, 0x0L, 0x2000040000000L, 0x400045021101L, 0x2200500002000L, true, 0, 0x0L), 4), 164846); - - // gentest-4769 - assertEqual(perft(new Board(0x600507000000L, 0x100L, 0x0L, 0x3001L, 0x0L, 0x200000000800000L, 0x400007801101L, 0x200200500002000L, false, 0, 0x0L), 4), 133366); - - // gentest-4770 - assertEqual(perft(new Board(0x600507000000L, 0x100L, 0x0L, 0x1000000001L, 0x0L, 0x200000080000000L, 0x400087000101L, 0x200201500000000L, true, 0, 0x0L), 4), 91788); - - // gentest-4771 - assertEqual(perft(new Board(0x600505000000L, 0x2000000L, 0x0L, 0x1000000001L, 0x0L, 0x4000080000000L, 0x400187000001L, 0x4201400000000L, false, 0, 0x0L), 4), 112795); - - // gentest-4772 - assertEqual(perft(new Board(0x610405000000L, 0x2000000L, 0x0L, 0x800000001L, 0x0L, 0x4000080000000L, 0x410087000001L, 0x4200c00000000L, true, 0, 0x0L), 4), 118160); - - // gentest-4773 - assertEqual(perft(new Board(0x40210405000000L, 0x2000000L, 0x0L, 0x80008L, 0x0L, 0x4000080000000L, 0x40010087000008L, 0x4200400080000L, false, 0, 0x0L), 4), 185468); - - // gentest-4774 - assertEqual(perft(new Board(0x40210405000000L, 0x2000000L, 0x0L, 0x800001L, 0x0L, 0x4000080000000L, 0x40010087000001L, 0x4200400800000L, true, 0, 0x0L), 4), 9571); - - // gentest-4775 - assertEqual(perft(new Board(0x210405000000L, 0x2000000L, 0x0L, 0x1L, 0x4000000000000000L, 0x20000800000L, 0x4000010007800001L, 0x220400000000L, false, 0, 0x0L), 4), 31508); - - // gentest-4776 - assertEqual(perft(new Board(0x210405000000L, 0x2000000L, 0x0L, 0x1L, 0x0L, 0x200000000800000L, 0x10007800001L, 0x200200400000000L, true, 0, 0x0L), 4), 13283); - - // gentest-4777 - assertEqual(perft(new Board(0x12405000000L, 0x2000000L, 0x0L, 0x1L, 0x0L, 0x200000000800000L, 0x10007800001L, 0x200002400000000L, false, 0, 0x0L), 4), 12683); - - // gentest-4778 - assertEqual(perft(new Board(0x10425000000L, 0x2000000L, 0x0L, 0x4L, 0x0L, 0x100000000800000L, 0x10007800004L, 0x100000420000000L, true, 0, 0x0L), 4), 6399); - - // gentest-4779 - assertEqual(perft(new Board(0x10425000000L, 0x2000000L, 0x0L, 0x20L, 0x0L, 0x200000000004000L, 0x10007004020L, 0x200000420000000L, false, 0, 0x0L), 4), 12612); - - // gentest-4780 - assertEqual(perft(new Board(0x10425000000L, 0x80000L, 0x0L, 0x20L, 0x0L, 0x800000000004000L, 0x10005084020L, 0x800000420000000L, true, 0, 0x0L), 4), 21507); - - // gentest-4781 - assertEqual(perft(new Board(0x10425000000L, 0x80000L, 0x0L, 0x40L, 0x0L, 0x4000000004000L, 0x10005084040L, 0x4000420000000L, false, 0, 0x0L), 4), 21995); - - // gentest-4782 - assertEqual(perft(new Board(0x10425000000L, 0x1000000000L, 0x0L, 0x40L, 0x0L, 0x1000000004000L, 0x11005004040L, 0x1000420000000L, true, 0, 0x0L), 4), 8799); - - // gentest-4783 - assertEqual(perft(new Board(0x10425000000L, 0x200000L, 0x0L, 0x10L, 0x0L, 0x20000004000L, 0x10005204010L, 0x20420000000L, false, 0, 0x0L), 4), 16644); - - // gentest-4784 - assertEqual(perft(new Board(0x10425000000L, 0x200000L, 0x0L, 0x8L, 0x0L, 0x2004000L, 0x10005204008L, 0x422000000L, true, 0, 0x0L), 4), 23240); - - // gentest-4785 - assertEqual(perft(new Board(0x10425000000L, 0x200000L, 0x0L, 0x8L, 0x0L, 0x44000L, 0x10005204008L, 0x420040000L, false, 0, 0x0L), 4), 20915); - - // gentest-4786 - assertEqual(perft(new Board(0x10425000000L, 0x200000L, 0x0L, 0x8000000L, 0x0L, 0x44000L, 0x1000d204000L, 0x420040000L, true, 0, 0x0L), 4), 18948); - - // gentest-4787 - assertEqual(perft(new Board(0x10425000000L, 0x200000L, 0x0L, 0x10000000L, 0x0L, 0x2008000L, 0x10015208000L, 0x422000000L, false, 0, 0x0L), 4), 12801); - - // gentest-4788 - assertEqual(perft(new Board(0x10405200000L, 0x4000000000L, 0x0L, 0x10000000L, 0x0L, 0x100008000L, 0x14015008000L, 0x500200000L, true, 0, 0x0L), 4), 13384); - - // gentest-4789 - assertEqual(perft(new Board(0x10404200000L, 0x800000L, 0x0L, 0x100000000000L, 0x0L, 0x1008000L, 0x110004808000L, 0x401200000L, false, 0, 0x0L), 4), 13855); - - // gentest-4790 - assertEqual(perft(new Board(0x1000404200000L, 0x800000L, 0x0L, 0x100000000000L, 0x0L, 0x8400L, 0x1100004808000L, 0x400200400L, true, 0, 0x0L), 4), 36867); - - // gentest-4791 - assertEqual(perft(new Board(0x1000404200000L, 0x4000000000L, 0x0L, 0x100000000000L, 0x0L, 0x400004L, 0x1104004400000L, 0x400200004L, false, 0, 0x0L), 4), 36268); - - // gentest-4792 - assertEqual(perft(new Board(0x1000404000000L, 0x4000000000L, 0x0L, 0x1000000000L, 0x20L, 0x400004L, 0x1005004400000L, 0x400000024L, true, 0, 0x0L), 4), 166691); - - // gentest-4793 - assertEqual(perft(new Board(0x404000000L, 0x4000000000L, 0x0L, 0x100000000001000L, 0x20L, 0x400008L, 0x100004004401000L, 0x400000028L, false, 0, 0x0L), 4), 134144); - - // gentest-4794 - assertEqual(perft(new Board(0x404000000L, 0x4000000000L, 0x0L, 0x100000000004000L, 0x20L, 0x400002L, 0x100004004404000L, 0x400000022L, true, 0, 0x0L), 4), 177278); - - // gentest-4795 - assertEqual(perft(new Board(0x404000000L, 0x200000L, 0x0L, 0x100000000004000L, 0x20L, 0x80000004L, 0x100000084204000L, 0x400000024L, false, 0, 0x0L), 4), 129056); - - // gentest-4796 - assertEqual(perft(new Board(0x404000000L, 0x200000L, 0x0L, 0x100000000004000L, 0x400L, 0x8000000004L, 0x100008004204000L, 0x400000404L, true, 0, 0x0L), 4), 377965); - - // gentest-4797 - assertEqual(perft(new Board(0x404000000L, 0x800L, 0x0L, 0x100004000000000L, 0x80000L, 0x8000000004L, 0x10000c004000800L, 0x400080004L, false, 0, 0x0L), 4), 364433); - - // gentest-4798 - assertEqual(perft(new Board(0x404000000L, 0x800L, 0x0L, 0x1004000000000L, 0x1000000000000000L, 0x8000000004L, 0x100c004000800L, 0x1000000400000004L, true, 0, 0x0L), 4), 66985); - - // gentest-4799 - assertEqual(perft(new Board(0x404000000L, 0x800L, 0x0L, 0x1400000000000L, 0x1000000L, 0x4000000004L, 0x1404004000800L, 0x401000004L, false, 0, 0x0L), 4), 325554); - - // gentest-4800 - assertEqual(perft(new Board(0x404000000L, 0x200000L, 0x0L, 0x1400000000000L, 0x2000000L, 0x4000000008L, 0x1404004200000L, 0x402000008L, true, 0, 0x0L), 4), 369215); - } - - public static void batch12() { - // gentest-4801 - assertEqual(perft(new Board(0x404000000L, 0x200000L, 0x0L, 0x1400000000000L, 0x10L, 0x4000000008L, 0x1404004200000L, 0x400000018L, false, 0, 0x0L), 4), 252989); - - // gentest-4802 - assertEqual(perft(new Board(0x404000000L, 0x200000L, 0x0L, 0x10400000000000L, 0x100000L, 0x4000000008L, 0x10404004200000L, 0x400100008L, true, 0, 0x0L), 4), 52211); - - // gentest-4803 - assertEqual(perft(new Board(0x404000000L, 0x200000L, 0x0L, 0x10400000000000L, 0x4000000000L, 0x800008L, 0x10400004a00000L, 0x4400000008L, false, 0, 0x0L), 4), 207759); - - // gentest-4804 - assertEqual(perft(new Board(0x404000000L, 0x800L, 0x0L, 0x10400000000000L, 0x1L, 0x800008L, 0x10400004800800L, 0x400000009L, true, 0, 0x0L), 4), 405132); - - // gentest-4805 - assertEqual(perft(new Board(0x404000000L, 0x800L, 0x0L, 0x10400000000000L, 0x8000000L, 0x2000000008L, 0x10402004000800L, 0x408000008L, false, 0, 0x0L), 4), 297861); - - // gentest-4806 - assertEqual(perft(new Board(0x404000000L, 0x0L, 0x0L, 0x10010000000000L, 0x40000L, 0x2000000800L, 0x10012004000000L, 0x400040800L, true, 0, 0x0L), 4), 363943); - - // gentest-4807 - assertEqual(perft(new Board(0x404000000L, 0x0L, 0x0L, 0x20010000000000L, 0x20000L, 0x10000800L, 0x20010014000000L, 0x400020800L, false, 0, 0x0L), 4), 273175); - - // gentest-4808 - assertEqual(perft(new Board(0x404000000L, 0x0L, 0x0L, 0x10010000000000L, 0x10000L, 0x10040000L, 0x10010014000000L, 0x400050000L, true, 0, 0x0L), 4), 205535); - - // gentest-4809 - assertEqual(perft(new Board(0x404000000L, 0x0L, 0x0L, 0x10020000000000L, 0x10000L, 0x10000800L, 0x10020014000000L, 0x400010800L, false, 0, 0x0L), 4), 236940); - - // gentest-4810 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4811 - assertEqual(perft(new Board(0xfd00024000bf00L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4080bfdfL, 0xfffd000200000000L, false, 0, 0x8100000000000081L), 4), 198188); - - // gentest-4812 - assertEqual(perft(new Board(0xf805024400bb00L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4480bbdfL, 0xfff8050200000000L, true, 0, 0x8100000000000081L), 4), 266477); - - // gentest-4813 - assertEqual(perft(new Board(0xf805400408b300L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400088b3dfL, 0xfff8050004000000L, false, 0, 0x8100000000000081L), 4), 398946); - - // gentest-4814 - assertEqual(perft(new Board(0xd825400400b300L, 0x4200000000000042L, 0x2002000000800004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400480b3dfL, 0xfbda250000000000L, true, 0, 0x8100000000000081L), 4), 446838); - - // gentest-4815 - assertEqual(perft(new Board(0xd805000400b300L, 0x4200000000000042L, 0x2002004000800000L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400480b3dbL, 0xfbda050000000000L, false, 0, 0x8100000000000081L), 4), 508673); - - // gentest-4816 - assertEqual(perft(new Board(0xd805000400b300L, 0x200800000000042L, 0x2002004000800000L, 0x8100000000000081L, 0x4000800000000L, 0x1000000000000010L, 0x480480b3d3L, 0xb3de850000000000L, true, 0, 0x8100000000000081L), 4), 1149963); - - // gentest-4817 - assertEqual(perft(new Board(0xd8050004003300L, 0x200800000000042L, 0x2002004000800000L, 0x8100000000000081L, 0x208000L, 0x1000000000000800L, 0x4004a03bc3L, 0xb3da850000008000L, false, 0, 0x8100000000000000L), 4), 1046634); - - // gentest-4818 - assertEqual(perft(new Board(0xd0050804003300L, 0x200800000000042L, 0x2002004000800000L, 0x8100000000000081L, 0x88000L, 0x1000000000000800L, 0x4004883bc3L, 0xb3d2850800008000L, true, 0, 0x8100000000000000L), 4), 1402699); - - // gentest-4819 - assertEqual(perft(new Board(0xd005000c003300L, 0x200800000000042L, 0x2002000020800000L, 0x8100000000000081L, 0x10008000L, 0x1000000000000800L, 0x34803bc3L, 0xb3d2850008008000L, false, 0, 0x8100000000000000L), 4), 1072853); - - // gentest-4820 - assertEqual(perft(new Board(0xd005000c001300L, 0x8800000040040L, 0x2002000020800000L, 0x8100000000000081L, 0x10002000L, 0x1000000000000800L, 0x34841bc1L, 0xb1da850008002000L, true, 0, 0x8100000000000000L), 4), 2697682); - - // gentest-4821 - assertEqual(perft(new Board(0xc005100e001100L, 0x8800000040040L, 0x2002000020800000L, 0x8100000000000081L, 0x2002L, 0x1000000000000800L, 0x268419c3L, 0xb1ca851008002000L, false, 0, 0x8100000000000000L), 4), 1946565); - - // gentest-4822 - assertEqual(perft(new Board(0x8045100e001100L, 0x8800800000040L, 0x12000020800000L, 0x8100000000000081L, 0x2002L, 0x1000000000000800L, 0x8268019c3L, 0x919ac51008002000L, true, 0, 0x8100000000000000L), 4), 2495117); - - // gentest-4823 - assertEqual(perft(new Board(0x8045100e001100L, 0x800000040L, 0x1a800000000000L, 0x8100000000000081L, 0x200002L, 0x1000000000000800L, 0x88008060019c3L, 0x9192451008200000L, false, 0, 0x8100000000000000L), 4), 225469); - - // gentest-4824 - assertEqual(perft(new Board(0x8005100e001100L, 0x800000040L, 0x1a800000000000L, 0x8100000000000081L, 0x200000L, 0x400000000800L, 0x88008060019c1L, 0x8192451008200000L, true, 0, 0x0L), 4), 2472455); - - // gentest-4825 - assertEqual(perft(new Board(0x8005100e001100L, 0x800000040L, 0x1a800000000000L, 0x3000000000000a0L, 0x200000L, 0x400000000008L, 0x88008060011e8L, 0x392451008200000L, false, 0, 0x0L), 4), 1986274); - - // gentest-4826 - assertEqual(perft(new Board(0x80051006081100L, 0x800000040L, 0x1a000000100000L, 0x3000000000000a0L, 0x2000000000L, 0x400000000008L, 0x80008061011e8L, 0x392453000080000L, true, 0, 0x0L), 4), 1968863); - - // gentest-4827 - assertEqual(perft(new Board(0x80051006081100L, 0x800000040L, 0x2100400000004L, 0x3000000000000a0L, 0x2000000000L, 0x400000000008L, 0x1008060011ecL, 0x382453400080000L, false, 0, 0x0L), 4), 1965753); - - // gentest-4828 - assertEqual(perft(new Board(0x80051006081100L, 0x4000000000040L, 0x2100400000004L, 0x41000000000000a0L, 0x2000000000L, 0x400000000008L, 0x41000060011ecL, 0x4182453400080000L, true, 0, 0x0L), 4), 2357404); - - // gentest-4829 - assertEqual(perft(new Board(0x80051006081100L, 0x4000000000040L, 0x2100400000200L, 0x5000000000008020L, 0x2000000000L, 0x400000000008L, 0x4100006009368L, 0x5082453400080000L, false, 0, 0x0L), 4), 2681500); - - // gentest-4830 - assertEqual(perft(new Board(0x80051006081100L, 0x4000000000040L, 0x2002100000000200L, 0x4200000080000020L, 0x2000000000L, 0x400000000008L, 0x4100086001368L, 0x6282453000080000L, true, 0, 0x0L), 4), 1951699); - - // gentest-4831 - assertEqual(perft(new Board(0x80051402081100L, 0x4000000000040L, 0x2402000000000200L, 0x4200000080000020L, 0x200000L, 0x400000000008L, 0x404000482001368L, 0x6282451000280000L, false, 0, 0x0L), 4), 1794742); - - // gentest-4832 - assertEqual(perft(new Board(0x80051402081100L, 0x4000000000040L, 0x412000000000200L, 0x4200000004000020L, 0x20000000L, 0x400000000008L, 0x404000406001368L, 0x4292451020080000L, true, 0, 0x0L), 4), 2371850); - - // gentest-4833 - assertEqual(perft(new Board(0x851412080100L, 0x4000000000040L, 0x1a000000000200L, 0x4200000004000020L, 0x20000000L, 0x400000000008L, 0xc000416000368L, 0x4212c51020080000L, false, 0, 0x0L), 4), 1783874); - - // gentest-4834 - assertEqual(perft(new Board(0x851412080100L, 0x4000000000040L, 0x200a000000000200L, 0x4200000004000020L, 0x200000L, 0x400000000800L, 0xc000416000b60L, 0x6202c51000280000L, true, 0, 0x0L), 4), 1411381); - - // gentest-4835 - assertEqual(perft(new Board(0x850412080100L, 0x4000000000040L, 0x200a200000000000L, 0x4200000004000000L, 0x20L, 0x400000000800L, 0xc200416000940L, 0x6202c50000080020L, false, 0, 0x0L), 4), 878281); - - // gentest-4836 - assertEqual(perft(new Board(0x850012080100L, 0x4000000000040L, 0xa200400000000L, 0x4200000004000000L, 0x0L, 0x400000000008L, 0xc200016000148L, 0x4202c50400080000L, true, 0, 0x0L), 4), 1157445); - - // gentest-4837 - assertEqual(perft(new Board(0x850012080100L, 0x4000000000000L, 0x4a000000000040L, 0x4200000000000004L, 0x0L, 0x400000000008L, 0x4c00001200010cL, 0x4202c50000080040L, false, 0, 0x0L), 4), 880228); - - // gentest-4838 - assertEqual(perft(new Board(0x850012080100L, 0x200000000L, 0x148000000000040L, 0x4200000000000004L, 0x0L, 0x8000000008L, 0x4800021200010cL, 0x4300858000080040L, true, 0, 0x0L), 4), 842845); - - // gentest-4839 - assertEqual(perft(new Board(0x810412080100L, 0x200000000L, 0x142000000000040L, 0x4200000000000004L, 0x0L, 0x8000000008L, 0x4200021200010cL, 0x4300818400080040L, false, 0, 0x0L), 4), 609009); - - // gentest-4840 - assertEqual(perft(new Board(0x810016080100L, 0x200000000L, 0x140000800002000L, 0x4200000000000004L, 0x0L, 0x8000000008L, 0x40000a1200010cL, 0x4300818004082000L, true, 0, 0x0L), 4), 975297); - - // gentest-4841 - assertEqual(perft(new Board(0x810017080000L, 0x200000000L, 0x140000000000040L, 0x4200000000000004L, 0x0L, 0x8000000008L, 0x14000021300000cL, 0x4200818004080040L, false, 0, 0x0L), 4), 576614); - - // gentest-4842 - assertEqual(perft(new Board(0x810017080000L, 0x200000000L, 0x2101000000000000L, 0x1200000000000004L, 0x0L, 0x8000000008L, 0x210000021300000cL, 0x1201818004080000L, true, 0, 0x0L), 4), 398370); - - // gentest-4843 - assertEqual(perft(new Board(0x810116080000L, 0x8000000L, 0x2101000000000000L, 0x1200000000000004L, 0x0L, 0x400000000008L, 0x210000011a00000cL, 0x1201c10004080000L, false, 0, 0x0L), 4), 392478); - - // gentest-4844 - assertEqual(perft(new Board(0x810116080000L, 0x100000000000L, 0x2100020000000000L, 0x210000000000004L, 0x0L, 0x400000000008L, 0x210010011200000cL, 0x210c30004080000L, true, 0, 0x0L), 4), 461411); - - // gentest-4845 - assertEqual(perft(new Board(0x810116080000L, 0x100000000000L, 0x2000000808000000L, 0x210000000000004L, 0x0L, 0x400000000800L, 0x2000100912000804L, 0x210c1000c080000L, false, 0, 0x0L), 4), 820897); - - // gentest-4846 - assertEqual(perft(new Board(0x810112080000L, 0x100000000000L, 0x2000200800000000L, 0x210000000040000L, 0x0L, 0x400000000800L, 0x2000100912040800L, 0x210e10000080000L, true, 0, 0x0L), 4), 792358); - - // gentest-4847 - assertEqual(perft(new Board(0x810310080000L, 0x100000000000L, 0x2000200800000000L, 0x12000000040000L, 0x0L, 0x400000000010L, 0x2000100b10040010L, 0x12e10000080000L, false, 0, 0x0L), 4), 600495); - - // gentest-4848 - assertEqual(perft(new Board(0x810310080000L, 0x100000000000L, 0x2100200000000000L, 0x28000000040000L, 0x0L, 0x400000000010L, 0x2100100310040010L, 0x28e10000080000L, true, 0, 0x0L), 4), 668275); - - // gentest-4849 - assertEqual(perft(new Board(0x810300080000L, 0x100000000000L, 0x2100001000000000L, 0x28000000040000L, 0x0L, 0x400000000008L, 0x2100100300040008L, 0x28c11000080000L, false, 0, 0x0L), 4), 1266674); - - // gentest-4850 - assertEqual(perft(new Board(0x810300080000L, 0x100000000000L, 0x2100001000000000L, 0x20000004040000L, 0x0L, 0x400000000800L, 0x2100100300040800L, 0x20c11004080000L, true, 0, 0x0L), 4), 1537142); - - // gentest-4851 - assertEqual(perft(new Board(0x810300000000L, 0x100000000000L, 0x100081000000000L, 0x20000020080000L, 0x0L, 0x400000000800L, 0x100180300080800L, 0x20c11020000000L, false, 0, 0x0L), 4), 1553201); - - // gentest-4852 - assertEqual(perft(new Board(0x18300000000L, 0x100000000000L, 0x100000020000200L, 0x20000000080000L, 0x0L, 0x400000000800L, 0x100100320080800L, 0x20418000000200L, true, 0, 0x0L), 4), 821448); - - // gentest-4853 - assertEqual(perft(new Board(0x18300000000L, 0x100000000000L, 0x100001000008000L, 0x20000800000000L, 0x0L, 0x400000000800L, 0x100100b00008800L, 0x20419000000000L, false, 0, 0x0L), 4), 742801); - - // gentest-4854 - assertEqual(perft(new Board(0x8300000000L, 0x800000000000000L, 0x100001000008000L, 0x20000800000000L, 0x0L, 0x40000000000800L, 0x900000900008800L, 0x60009200000000L, true, 0, 0x0L), 4), 462251); - - // gentest-4855 - assertEqual(perft(new Board(0x8300000000L, 0x800000000000000L, 0x40020008000L, 0x20000800000000L, 0x0L, 0x40000000040000L, 0x800040900048000L, 0x60008220000000L, false, 0, 0x0L), 4), 566712); - - // gentest-4856 - assertEqual(perft(new Board(0x8300000000L, 0x800000000000000L, 0xc0000000004L, 0x20000800000000L, 0x0L, 0x80000000040000L, 0x8000c0900040000L, 0xa0008200000004L, true, 0, 0x0L), 4), 614904); - - // gentest-4857 - assertEqual(perft(new Board(0x8300000000L, 0x800000000000000L, 0xc0000000004L, 0x2000800000000L, 0x0L, 0x80000000000400L, 0x8000c0900000400L, 0x82008200000004L, false, 0, 0x0L), 4), 555339); - - // gentest-4858 - assertEqual(perft(new Board(0x8300000000L, 0x800000000000000L, 0x200060000000000L, 0x2000800000000L, 0x0L, 0x80000000000400L, 0xa00040900000400L, 0x82028200000000L, true, 0, 0x0L), 4), 529242); - - // gentest-4859 - assertEqual(perft(new Board(0x380000000L, 0x100000000000L, 0x200060000000000L, 0x2000800000000L, 0x0L, 0x80000000080000L, 0x200140900080000L, 0x82020280000000L, false, 0, 0x0L), 4), 522504); - - // gentest-4860 - assertEqual(perft(new Board(0x380000000L, 0x100000000000L, 0x200060000000000L, 0x20000800000000L, 0x0L, 0x800010000000L, 0x200140910000000L, 0x20820280000000L, true, 0, 0x0L), 4), 692539); - - // gentest-4861 - assertEqual(perft(new Board(0x380000000L, 0x20000000L, 0x200060000000000L, 0x40002000000000L, 0x0L, 0x800010000000L, 0x200042130000000L, 0x40820280000000L, false, 0, 0x0L), 4), 570921); - - // gentest-4862 - assertEqual(perft(new Board(0x380000000L, 0x20000000L, 0x200060000000000L, 0x2000400000000L, 0x0L, 0x40000010000000L, 0x200040530000000L, 0x42020280000000L, true, 0, 0x0L), 4), 422047); - - // gentest-4863 - assertEqual(perft(new Board(0x380000000L, 0x20000000L, 0x200040000002000L, 0x2000000000100L, 0x0L, 0x40000010000000L, 0x200040130000100L, 0x42000280002000L, false, 0, 0x0L), 4), 503492); - - // gentest-4864 - assertEqual(perft(new Board(0x380000000L, 0x20000000L, 0x1200020000000000L, 0x2000000000100L, 0x0L, 0x40000010000000L, 0x1200000130000100L, 0x42020280000000L, true, 0, 0x0L), 4), 489054); - - // gentest-4865 - assertEqual(perft(new Board(0x380000000L, 0x20000000L, 0x220000000002000L, 0x2000000008000L, 0x0L, 0x40000010000000L, 0x220000130008000L, 0x42000280002000L, false, 0, 0x0L), 4), 461899); - - // gentest-4866 - assertEqual(perft(new Board(0x380000000L, 0x20000000L, 0x220020000000000L, 0x2000000000100L, 0x0L, 0x40000010000000L, 0x220000130000100L, 0x42020280000000L, true, 0, 0x0L), 4), 530125); - - // gentest-4867 - assertEqual(perft(new Board(0x182000000L, 0x800000L, 0x24020000000000L, 0x2000000000100L, 0x0L, 0x40000010000000L, 0x24000110800100L, 0x42020082000000L, false, 0, 0x0L), 4), 399315); - - // gentest-4868 - assertEqual(perft(new Board(0x182000000L, 0x800000L, 0x4004000000100000L, 0x2000000000100L, 0x0L, 0x8000000010000000L, 0x4004000110800100L, 0x8002000082100000L, true, 0, 0x0L), 4), 423386); - - // gentest-4869 - assertEqual(perft(new Board(0x182000000L, 0x40L, 0x80000000100000L, 0x4000000000100L, 0x0L, 0x8000000010000000L, 0x80000110000140L, 0x8004000082100000L, false, 0, 0x0L), 4), 333248); - - // gentest-4870 - assertEqual(perft(new Board(0x182000000L, 0x40L, 0x80000000000800L, 0x8000000000100L, 0x0L, 0x8000002000000000L, 0x80002100000140L, 0x8008000082000800L, true, 0, 0x0L), 4), 174509); - - // gentest-4871 - assertEqual(perft(new Board(0x102800000L, 0x40L, 0x80000000000800L, 0x8000000010000L, 0x0L, 0x8000400000000000L, 0x80400100010040L, 0x8008000002800800L, false, 0, 0x0L), 4), 135330); - - // gentest-4872 - assertEqual(perft(new Board(0x102800000L, 0x1000L, 0x80004000000000L, 0x10000000010000L, 0x0L, 0x8000400000000000L, 0x80400100011000L, 0x8010004002800000L, true, 0, 0x0L), 4), 206799); - - // gentest-4873 - assertEqual(perft(new Board(0x102800000L, 0x1000L, 0x80000020000000L, 0x10000000040000L, 0x0L, 0x8000002000000000L, 0x80002100041000L, 0x8010000022800000L, false, 0, 0x0L), 4), 379628); - - // gentest-4874 - assertEqual(perft(new Board(0x10002800000L, 0x1000L, 0x80000020000000L, 0x40000L, 0x0L, 0x8000002000000000L, 0x80012000001000L, 0x8000000022840000L, true, 0, 0x0L), 4), 133346); - - // gentest-4875 - assertEqual(perft(new Board(0x1000002800000L, 0x1000L, 0x80000000000000L, 0x40000L, 0x0L, 0x40000020000000L, 0x81000020001000L, 0x40000002840000L, false, 0, 0x0L), 4), 166204); - - // gentest-4876 - assertEqual(perft(new Board(0x1000002800000L, 0x400000L, 0x80000000000000L, 0x10000L, 0x0L, 0x800020000000L, 0x81000020400000L, 0x800002810000L, true, 0, 0x0L), 4), 102718); - - // gentest-4877 - assertEqual(perft(new Board(0x1000002800000L, 0x10000000L, 0x80000000000000L, 0x40000L, 0x0L, 0x800040000000L, 0x81000050000000L, 0x800002840000L, false, 0, 0x0L), 4), 98905); - - // gentest-4878 - assertEqual(perft(new Board(0x1000002800000L, 0x4000000000L, 0x80000000000000L, 0x40000000000L, 0x0L, 0x800040000000L, 0x81004040000000L, 0x840002800000L, true, 0, 0x0L), 4), 118675); - - // gentest-4879 - assertEqual(perft(new Board(0x1000002800000L, 0x100000000000L, 0x4000000000000000L, 0x4L, 0x0L, 0x800040000000L, 0x4001100040000000L, 0x800002800004L, false, 0, 0x0L), 4), 95961); - - // gentest-4880 - assertEqual(perft(new Board(0x1000002800000L, 0x2000000000000000L, 0x4000000000000000L, 0x20L, 0x0L, 0x800040000000L, 0x6001000040000000L, 0x800002800020L, true, 0, 0x0L), 4), 95402); - - // gentest-4881 - assertEqual(perft(new Board(0x1000002800000L, 0x2000000000000000L, 0x80000000000000L, 0x2L, 0x0L, 0x800000400000L, 0x2081000000400000L, 0x800002800002L, false, 0, 0x0L), 4), 77054); - - // gentest-4882 - assertEqual(perft(new Board(0x1000002800000L, 0x2000000000000000L, 0x80000000000000L, 0x1000000L, 0x0L, 0x800040000000L, 0x2081000040000000L, 0x800003800000L, true, 0, 0x0L), 4), 56096); - - // gentest-4883 - assertEqual(perft(new Board(0x2800000L, 0x2000000000000000L, 0x80000L, 0x100L, 0x100000000000000L, 0x800040000000L, 0x2100000040080000L, 0x800002800100L, false, 0, 0x0L), 4), 277116); - - // gentest-4884 - assertEqual(perft(new Board(0x2800000L, 0x2000000000000000L, 0x80000L, 0x400000L, 0x100000000000000L, 0x800080000000L, 0x2100000080080000L, 0x800002c00000L, true, 0, 0x0L), 4), 178705); - - // gentest-4885 - assertEqual(perft(new Board(0x2800000L, 0x4000000000000L, 0x80000L, 0x400000000000L, 0x100000000000000L, 0x800080000000L, 0x104000080080000L, 0xc00002800000L, false, 0, 0x0L), 4), 280729); - - // gentest-4886 - assertEqual(perft(new Board(0x2800000L, 0x4000000000000L, 0x80000L, 0x10000000000000L, 0x1000000L, 0x800080000000L, 0x4000081080000L, 0x10800002800000L, true, 0, 0x0L), 4), 236373); - - // gentest-4887 - assertEqual(perft(new Board(0x2800000L, 0x4000000000000L, 0x400000000000L, 0x8000000000000L, 0x1000000000000L, 0x800080000000L, 0x5400080000000L, 0x8800002800000L, false, 0, 0x0L), 4), 228017); - - // gentest-4888 - assertEqual(perft(new Board(0x2800000L, 0x4000000000000L, 0x400000000000L, 0x1000000000000000L, 0x8000000L, 0x800080000000L, 0x4400088000000L, 0x1000800002800000L, true, 0, 0x0L), 4), 306074); - - // gentest-4889 - assertEqual(perft(new Board(0x820000L, 0x100000000000000L, 0x400000000000L, 0x1000000000000000L, 0x800000000000000L, 0x800080000000L, 0x900400080000000L, 0x1000800000820000L, false, 0, 0x0L), 4), 174046); - - // gentest-4890 - assertEqual(perft(new Board(0x820000L, 0x100000000000000L, 0x400000000000L, 0x20000000L, 0x200000000000000L, 0x800080000000L, 0x300400080000000L, 0x800020820000L, true, 0, 0x0L), 4), 16375); - - // gentest-4891 - assertEqual(perft(new Board(0x820000L, 0x100000000000000L, 0x10000000L, 0x0L, 0x20000000L, 0x40000080000000L, 0x1000000b0000000L, 0x40000000820000L, false, 0, 0x0L), 4), 29679); - - // gentest-4892 - assertEqual(perft(new Board(0x28000L, 0x100000000000000L, 0x10000000L, 0x0L, 0x20000000L, 0x4000000040000000L, 0x100000070000000L, 0x4000000000028000L, true, 0, 0x0L), 4), 87947); - - // gentest-4893 - assertEqual(perft(new Board(0x28000L, 0x100000000000000L, 0x10000000L, 0x0L, 0x2000000000000000L, 0x8000000000200000L, 0x2100000010200000L, 0x8000000000028000L, false, 0, 0x0L), 4), 0); - - // gentest-4894 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4895 - assertEqual(perft(new Board(0xfb00040201fc00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x201fcffL, 0xfffb000400000000L, false, 0, 0x8100000000000081L), 4), 259281); - - // gentest-4896 - assertEqual(perft(new Board(0xba41042201dc00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2201dcffL, 0xffba410400000000L, true, 0, 0x8100000000000081L), 4), 262228); - - // gentest-4897 - assertEqual(perft(new Board(0xba014463009c00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x63009cffL, 0xffba014400000000L, false, 0, 0x8100000000000081L), 4), 352527); - - // gentest-4898 - assertEqual(perft(new Board(0xba004167089400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x630894ffL, 0xffba004104000000L, true, 0, 0x8100000000000081L), 4), 464985); - - // gentest-4899 - assertEqual(perft(new Board(0xb2084167089400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x630895feL, 0xffb2084104000000L, false, 0, 0x8100000000000080L), 4), 729818); - - // gentest-4900 - assertEqual(perft(new Board(0xb20840650a9400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x610894ffL, 0xffb2084004020000L, true, 0, 0x8100000000000080L), 4), 862095); - - // gentest-4901 - assertEqual(perft(new Board(0xb20860050a9400L, 0x4200000000000042L, 0x2000000040800004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20018894dfL, 0xfbb2084044020000L, false, 0, 0x8100000000000080L), 4), 863095); - - // gentest-4902 - assertEqual(perft(new Board(0xb20860050a9400L, 0x4004000000000042L, 0x2000000040800200L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20018896dbL, 0xf9b6084044020000L, true, 0, 0x8100000000000080L), 4), 1081786); - - // gentest-4903 - assertEqual(perft(new Board(0xa21860050a9000L, 0x4004000000000042L, 0x2000000040000200L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20410a92dbL, 0xf9a6184004000000L, false, 0, 0x8100000000000080L), 4), 1282740); - - // gentest-4904 - assertEqual(perft(new Board(0xa21860050a9000L, 0x4004000000000042L, 0x2000008000000200L, 0x8001000000000081L, 0x400000000000008L, 0x1000000000000010L, 0xa0010a92dbL, 0xf4a7184004000000L, true, 0, 0x8000000000000080L), 4), 1199779); - - // gentest-4905 - assertEqual(perft(new Board(0xa2186007089000L, 0x4000000800000042L, 0x2000008000000200L, 0x8001000000000081L, 0x400000000000400L, 0x1000000000000010L, 0xa0030896d3L, 0xf4a3184804000000L, false, 0, 0x8000000000000080L), 4), 1821754); - - // gentest-4906 - assertEqual(perft(new Board(0xa2186007089000L, 0x4000000800010040L, 0x808000000200L, 0x8000000100000081L, 0x400000000000400L, 0x1000000000000010L, 0xa0030996d1L, 0xd4a2984904000000L, true, 0, 0x8000000000000080L), 4), 2001000); - - // gentest-4907 - assertEqual(perft(new Board(0xa2184007089000L, 0x200a00000040L, 0x808000000200L, 0x8000000100000081L, 0x400000000000400L, 0x1000000000000010L, 0x82030896d1L, 0x94a2b84904000000L, false, 0, 0x8000000000000080L), 4), 2183493); - - // gentest-4908 - assertEqual(perft(new Board(0xa2184007089000L, 0x4200800000040L, 0x40008000000200L, 0x8000000100000081L, 0x400000000000400L, 0x800000000000010L, 0x40080030896d1L, 0x8ce2384904000000L, true, 0, 0x80L), 4), 2360849); - - // gentest-4909 - assertEqual(perft(new Board(0xa2184105089000L, 0x4200800000040L, 0x40000040000200L, 0x2000000000000081L, 0x400000000000400L, 0x800000000000010L, 0x40001410896d1L, 0x2ce2384804000000L, false, 0, 0x80L), 4), 1693983); - - // gentest-4910 - assertEqual(perft(new Board(0xa2184185081000L, 0x4200800000040L, 0x800040000200L, 0x2000000000000081L, 0x100000000000400L, 0x800000000000010L, 0x40001c10816d1L, 0x29a2b84804000000L, true, 0, 0x80L), 4), 1776037); - - // gentest-4911 - assertEqual(perft(new Board(0xa218c105081000L, 0x4200020000040L, 0x800040000004L, 0x2000000000000081L, 0x100000000000400L, 0x800000000000010L, 0x40081410814d5L, 0x29a2b84024000000L, false, 0, 0x80L), 4), 1483469); - - // gentest-4912 - assertEqual(perft(new Board(0xa218c005081000L, 0x4200000004040L, 0x800040000004L, 0x2000000000000081L, 0x100000400L, 0x800000000000800L, 0x4008041081cc5L, 0x28a2b84104004000L, true, 0, 0x0L), 4), 84514); - - // gentest-4913 - assertEqual(perft(new Board(0xa218c005081000L, 0x4200080000040L, 0x800040000004L, 0x2000000000000081L, 0x100000200L, 0x800000000000008L, 0x40080410812cdL, 0x28a2b84184000000L, false, 0, 0x0L), 4), 2151718); - - // gentest-4914 - assertEqual(perft(new Board(0xa2188005081000L, 0x200000200040L, 0x804040000000L, 0x2000000000000081L, 0x100000200L, 0x4000000000008L, 0xc0410812c9L, 0x20a6b80104200000L, true, 0, 0x0L), 4), 3235617); - - // gentest-4915 - assertEqual(perft(new Board(0xa2188005081000L, 0x200000200040L, 0x804040000000L, 0x2000000000000081L, 0x8000010L, 0x4000000000400L, 0xc0490814c1L, 0x20a6b80004200010L, false, 0, 0x0L), 4), 2588455); - - // gentest-4916 - assertEqual(perft(new Board(0xa2188005081000L, 0x200000200000L, 0x804040000000L, 0x100000000010080L, 0x8000040L, 0x4000000000400L, 0xc049091480L, 0x1a6b80004200040L, true, 0, 0x0L), 4), 3355827); - - // gentest-4917 - assertEqual(perft(new Board(0xa2188005081000L, 0x200000200000L, 0x8000c0000000L, 0x100000000010080L, 0x1000000040L, 0x400000000000400L, 0x90c1091480L, 0x5a2b80004200040L, false, 0, 0x0L), 4), 3390908); - - // gentest-4918 - assertEqual(perft(new Board(0xa2188005081000L, 0x40000000200000L, 0x8000c0000000L, 0x100000000010040L, 0x1000000000L, 0x400000000000400L, 0x90c1091440L, 0x5e2980004200000L, true, 0, 0x0L), 4), 1958380); - - // gentest-4919 - assertEqual(perft(new Board(0xa218800d001000L, 0x40000000000000L, 0x800080200000L, 0x10000010040L, 0x1000000000L, 0x400000000000400L, 0x9089211440L, 0x4e2990004000000L, false, 0, 0x0L), 4), 1545207); - - // gentest-4920 - assertEqual(perft(new Board(0xa218800d001000L, 0x2000000000L, 0x2000000080004000L, 0x10000010040L, 0x1000000000L, 0x400000000000400L, 0x9089015440L, 0x24a2192004000000L, true, 0, 0x0L), 4), 1670231); - - // gentest-4921 - assertEqual(perft(new Board(0xa218800d001000L, 0x800000000000L, 0x2000000080000080L, 0x10000080040L, 0x1000000000L, 0x400000000000400L, 0x90890814c0L, 0x24a2990004000000L, false, 0, 0x0L), 4), 1401821); - - // gentest-4922 - assertEqual(perft(new Board(0x8218a00c001000L, 0x800000000000L, 0x2000000080000080L, 0x1800040L, 0x1000000000L, 0x400000000000400L, 0x90888014c0L, 0x2482982005000000L, true, 0, 0x0L), 4), 1340860); - - // gentest-4923 - assertEqual(perft(new Board(0x8218a00c001000L, 0x800000000000L, 0x50000000000080L, 0x1800040L, 0x800000000L, 0x400000000000400L, 0x100088088014c0L, 0x4c2982005000000L, false, 0, 0x0L), 4), 1305063); - - // gentest-4924 - assertEqual(perft(new Board(0x8218a00c001000L, 0x800000000000L, 0x50000000004000L, 0x810040L, 0x800000000L, 0x400000000000400L, 0x10008808805440L, 0x4c2982004010000L, true, 0, 0x0L), 4), 1321044); - - // gentest-4925 - assertEqual(perft(new Board(0x8218a00c001000L, 0x800000000000L, 0x50000000004000L, 0x100040040L, 0x800000000L, 0x400000000000002L, 0x10008808045042L, 0x4c2982104000000L, false, 0, 0x0L), 4), 942285); - - // gentest-4926 - assertEqual(perft(new Board(0x8218a00c001000L, 0x800000000000L, 0x50000000004000L, 0x40040L, 0x800000000L, 0x200000000000001L, 0x10008808045041L, 0x2c2982004000000L, true, 0, 0x0L), 4), 487904); - - // gentest-4927 - assertEqual(perft(new Board(0x8218a00c001000L, 0x4000000000000000L, 0x50000000004000L, 0x20040L, 0x800000000L, 0x200000000000001L, 0x10008808025041L, 0x42c2182004000000L, false, 0, 0x0L), 4), 704692); - - // gentest-4928 - assertEqual(perft(new Board(0x8218a00c100000L, 0x4000000000000000L, 0x10800000004000L, 0x20040L, 0x800000000L, 0x200000000000001L, 0x10008808124041L, 0x4282982004000000L, true, 0, 0x0L), 4), 454741); - - // gentest-4929 - assertEqual(perft(new Board(0x8218a00c000000L, 0x4000000000000000L, 0x10000000100080L, 0x20040L, 0x1000000000L, 0x200000000000001L, 0x100090080200c1L, 0x4282182004100000L, false, 0, 0x0L), 4), 1011494); - - // gentest-4930 - assertEqual(perft(new Board(0x8218a00c000000L, 0x10000000L, 0x10000000100080L, 0x4000020000L, 0x1000000000L, 0x200000000000001L, 0x1000d008020081L, 0x282182014100000L, true, 0, 0x0L), 4), 839781); - - // gentest-4931 - assertEqual(perft(new Board(0x8018a00c000000L, 0x10000000L, 0x10000000100080L, 0x4000000002L, 0x200000000L, 0x200000000000001L, 0x1000c208000083L, 0x280182014100000L, false, 0, 0x0L), 4), 113840); - - // gentest-4932 - assertEqual(perft(new Board(0x8018800c000000L, 0x10000000L, 0x10004000000080L, 0x2L, 0x2000000000L, 0x400000000000001L, 0x1000a008000083L, 0x480184014000000L, true, 0, 0x0L), 4), 545708); - - // gentest-4933 - assertEqual(perft(new Board(0x18800c000000L, 0x10000000L, 0x10000080000080L, 0x4L, 0x80000000000000L, 0x400000000000001L, 0x90008008000085L, 0x400180094000000L, false, 0, 0x0L), 4), 349593); - - // gentest-4934 - assertEqual(perft(new Board(0x18800c000000L, 0x400000000L, 0x10000080000080L, 0x400L, 0x80000000000000L, 0x8000000000001L, 0x90008008000481L, 0x8180484000000L, true, 0, 0x0L), 4), 324135); - - // gentest-4935 - assertEqual(perft(new Board(0x10880c000000L, 0x400000000L, 0x10000090000000L, 0x40000L, 0x80000000000000L, 0x8000000000001L, 0x90008018040001L, 0x8100c84000000L, false, 0, 0x0L), 4), 347199); - - // gentest-4936 - assertEqual(perft(new Board(0x10880c000000L, 0x0L, 0x10000080080000L, 0x40000L, 0x80000000000000L, 0x40000000001L, 0x900080080c0001L, 0x140884000000L, true, 0, 0x0L), 4), 165403); - - // gentest-4937 - assertEqual(perft(new Board(0x108808000000L, 0x0L, 0x10000084000000L, 0x400L, 0x80000000000000L, 0x200000001L, 0x9000800c000401L, 0x100a80000000L, false, 0, 0x0L), 4), 75272); - - // gentest-4938 - assertEqual(perft(new Board(0x108808000000L, 0x0L, 0x200404000000L, 0x400L, 0x80000000000000L, 0x1000001L, 0x8000840c000401L, 0x300801000000L, true, 0, 0x0L), 4), 150843); - - // gentest-4939 - assertEqual(perft(new Board(0x108008000000L, 0x0L, 0x200400000000L, 0x4000000L, 0x80000000000000L, 0x1000002L, 0x8000840c000002L, 0x300001000000L, false, 0, 0x0L), 4), 34010); - - // gentest-4940 - assertEqual(perft(new Board(0x108008000000L, 0x0L, 0x4400000000L, 0x4000000L, 0x10000000000000L, 0x200000002L, 0x1000840c000002L, 0x104200000000L, true, 0, 0x0L), 4), 115374); - - // gentest-4941 - assertEqual(perft(new Board(0x8008000000L, 0x0L, 0x480000000L, 0x40000L, 0x100000000000L, 0x200000002L, 0x108408040002L, 0x280000000L, false, 0, 0x0L), 4), 156802); - - // gentest-4942 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x400400000L, 0x40000L, 0x100000000000L, 0x200000002L, 0x900408040002L, 0x200400000L, true, 0, 0x0L), 4), 177783); - - // gentest-4943 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x400002000L, 0x40000L, 0x400000000000L, 0x200000002L, 0xc00408040002L, 0x200002000L, false, 0, 0x0L), 4), 125825); - - // gentest-4944 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000000004L, 0x40000L, 0x400000000000L, 0x200000002L, 0x1c00008040002L, 0x200000004L, true, 0, 0x0L), 4), 132490); - - // gentest-4945 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000000004L, 0x40000L, 0x200000000000L, 0x1000002L, 0x1a00008040002L, 0x1000004L, false, 0, 0x0L), 4), 154079); - - // gentest-4946 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000000200L, 0x4000000000000L, 0x200000000000L, 0x2000002L, 0x5a00008000002L, 0x2000200L, true, 0, 0x0L), 4), 106223); - - // gentest-4947 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000000200L, 0x4000000000000L, 0x200000000L, 0x10002L, 0x5800208000002L, 0x10200L, false, 0, 0x0L), 4), 41724); - - // gentest-4948 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000100000000L, 0x4000000000000L, 0x2000000000L, 0x10002L, 0x5802008000002L, 0x100010000L, true, 0, 0x0L), 4), 112479); - - // gentest-4949 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000040000L, 0x40000000000L, 0x80000L, 0x10002L, 0x1840008080002L, 0x50000L, false, 0, 0x0L), 4), 28131); - - // gentest-4950 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000000001L, 0x40000000000L, 0x80000000000000L, 0x2000002L, 0x81840008000002L, 0x2000001L, true, 0, 0x0L), 4), 61809); - - // gentest-4951 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000000001L, 0x400000000000L, 0x8000000000000000L, 0x100000002L, 0x8001c00008000002L, 0x100000001L, false, 0, 0x0L), 4), 56014); - - // gentest-4952 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x1000000040000L, 0x400000000000L, 0x200000000000L, 0x100000002L, 0x1e00008000002L, 0x100040000L, true, 0, 0x0L), 4), 82057); - - // gentest-4953 - assertEqual(perft(new Board(0x800008000000L, 0x0L, 0x400000001L, 0x400000000000L, 0x10000000000L, 0x100000002L, 0xc10408000002L, 0x100000001L, false, 0, 0x0L), 4), 0); - - // gentest-4954 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-4955 - assertEqual(perft(new Board(0xbf00400400fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x400fbffL, 0xffbf004000000000L, false, 0, 0x8100000000000081L), 4), 259039); - - // gentest-4956 - assertEqual(perft(new Board(0xb700480400fb00L, 0x4200000000000042L, 0x2000100000000024L, 0x8100000000000081L, 0x800000000020000L, 0x1000000000000010L, 0x402fbf7L, 0xfbb7104800000000L, true, 0, 0x8100000000000081L), 4), 842072); - - // gentest-4957 - assertEqual(perft(new Board(0xb5004a0410eb00L, 0x4200000000010040L, 0x2000100000000024L, 0x8100000000000081L, 0x800000000020000L, 0x1000000000000010L, 0x413ebf5L, 0xfbb5104a00000000L, false, 0, 0x8100000000000081L), 4), 775794); - - // gentest-4958 - assertEqual(perft(new Board(0x9520421400eb00L, 0x4200000000010040L, 0x2000100000000024L, 0x8100000000000081L, 0x800000000020000L, 0x1000000000000010L, 0x1003ebf5L, 0xfb95304204000000L, true, 0, 0x8100000000000081L), 4), 1117318); - - // gentest-4959 - assertEqual(perft(new Board(0x9520421000eb00L, 0x4200000000010040L, 0x2000100004000004L, 0x8100000000000081L, 0x80000020000L, 0x1000000000000008L, 0x1403ebcdL, 0xf395384200000000L, false, 0, 0x8100000000000000L), 4), 1809963); - - // gentest-4960 - assertEqual(perft(new Board(0x9520421000eb00L, 0x4200000000010040L, 0x2000100000800004L, 0x8100000000000081L, 0x2020000L, 0x1000000000000008L, 0x10001003ebcdL, 0xf395204202800000L, true, 0, 0x8100000000000000L), 4), 1151975); - - // gentest-4961 - assertEqual(perft(new Board(0x9520421000eb00L, 0x4200000000010040L, 0x2000100040000004L, 0x8100000000000081L, 0x2100000L, 0x1000000000000010L, 0x10001011ebd5L, 0xf395204242000000L, false, 0, 0x8100000000000000L), 4), 1457212); - - // gentest-4962 - assertEqual(perft(new Board(0x9520420000eb00L, 0x4200000000010040L, 0x2008000040000004L, 0x8100000000000081L, 0x10100000L, 0x20000000000010L, 0x800000011ebd5L, 0xe3b5204250000000L, true, 0, 0x0L), 4), 1250559); - - // gentest-4963 - assertEqual(perft(new Board(0x9520420000eb00L, 0x4200000000010040L, 0x2002000040000004L, 0x8100000000000081L, 0x100000L, 0x20000000000010L, 0x200000011ebd5L, 0xe3b5204240000000L, false, 0, 0x0L), 4), 1237350); - - // gentest-4964 - assertEqual(perft(new Board(0x9520420000eb00L, 0x200800000010040L, 0x2002100000000004L, 0x8100000000000081L, 0x100000L, 0x20000000000020L, 0x200000011ebe5L, 0xa3b5b04200000000L, true, 0, 0x0L), 4), 1261222); - - // gentest-4965 - assertEqual(perft(new Board(0x9520420000eb00L, 0x200800000010040L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, 0x100000000020L, 0x1000001ebe5L, 0xa395b04200000000L, false, 0, 0x0L), 4), 222070); - - // gentest-4966 - assertEqual(perft(new Board(0x9520420000eb00L, 0x200800000010040L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, 0x40000000010L, 0x1000001ebd5L, 0xa395a44200000000L, true, 0, 0x0L), 4), 191096); - - // gentest-4967 - assertEqual(perft(new Board(0x9500620000eb00L, 0x200800000000440L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, 0x40000001000L, 0x1000000ffc5L, 0xa395846200000000L, false, 0, 0x0L), 4), 249909); - - // gentest-4968 - assertEqual(perft(new Board(0x9500600002eb00L, 0x200800000200400L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, 0x40000001000L, 0x1000020ff85L, 0xa395846000020000L, true, 0, 0x0L), 4), 342242); - - // gentest-4969 - assertEqual(perft(new Board(0x9500200000ef00L, 0x200804000000000L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, 0x40000000020L, 0x1400000eba5L, 0xa395842000000400L, false, 0, 0x0L), 4), 217032); - - // gentest-4970 - assertEqual(perft(new Board(0x9104200000ef00L, 0x200804000000000L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, 0x80000000010L, 0x1400000eb95L, 0xa3918c2000000400L, true, 0, 0x0L), 4), 245920); - - // gentest-4971 - assertEqual(perft(new Board(0x9104200800e700L, 0x200804000000000L, 0x40010020000000L, 0x8100000000000081L, 0x0L, 0x80000000010L, 0x1402800e391L, 0x83d18c2000000400L, false, 0, 0x0L), 4), 109900); - - // gentest-4972 - assertEqual(perft(new Board(0x9104200800e700L, 0x200804000000000L, 0x40011000000000L, 0x4100000000000081L, 0x0L, 0x8000000000010L, 0x1500800e391L, 0x43d9842000000400L, true, 0, 0x0L), 4), 712385); - - // gentest-4973 - assertEqual(perft(new Board(0x9104200800e300L, 0x200804000000000L, 0x40011000000000L, 0x4100000000000085L, 0x0L, 0x8000000001000L, 0x1500800f381L, 0x43d9842000000004L, false, 0, 0x0L), 4), 1104057); - - // gentest-4974 - assertEqual(perft(new Board(0x9104200800e300L, 0x220000000200000L, 0x211000000000L, 0x4100000000000085L, 0x0L, 0x8000000001000L, 0x1100820f381L, 0x43b9242000000004L, true, 0, 0x0L), 4), 1804803); - - // gentest-4975 - assertEqual(perft(new Board(0x91042089006200L, 0x220000000200000L, 0x211000000000L, 0x4100000400000081L, 0x0L, 0x8000000001000L, 0x11089207281L, 0x43b9242400000000L, false, 0, 0x0L), 4), 2352659); - - // gentest-4976 - assertEqual(perft(new Board(0x91042081006200L, 0x220000000200000L, 0x90008000000L, 0x4100000100000081L, 0x0L, 0x8000000001000L, 0x90081207281L, 0x43b9042108000000L, true, 0, 0x0L), 4), 3392403); - - // gentest-4977 - assertEqual(perft(new Board(0x91042081006200L, 0x200001000200000L, 0x90008000000L, 0x4100000100800020L, 0x0L, 0x8000000001000L, 0x90081a07220L, 0x4399043108000000L, false, 0, 0x0L), 4), 1868428); - - // gentest-4978 - assertEqual(perft(new Board(0x91042081006200L, 0x200001000200000L, 0x90008000000L, 0x4100000100800040L, 0x0L, 0x8000000001000L, 0x90081a07240L, 0x4399043108000000L, true, 0, 0x0L), 4), 1781403); - - // gentest-4979 - assertEqual(perft(new Board(0x91042080006200L, 0x200001000000000L, 0x80208000000L, 0x4100000001800040L, 0x0L, 0x8000000001000L, 0x81280807240L, 0x4399042009000000L, false, 0, 0x0L), 4), 434053); - - // gentest-4980 - assertEqual(perft(new Board(0x91042080006200L, 0x208000000000000L, 0x80208000000L, 0x140000001800040L, 0x0L, 0x100000001000L, 0x8080280807240L, 0x3d1142009000000L, true, 0, 0x0L), 4), 2452091); - - // gentest-4981 - assertEqual(perft(new Board(0x91042080006200L, 0x208000000000000L, 0x80208000000L, 0x140000100008040L, 0x0L, 0x100000000010L, 0x808028000e250L, 0x3d1142108000000L, false, 0, 0x0L), 4), 1116160); - - // gentest-4982 - assertEqual(perft(new Board(0x91042080006200L, 0x208000000000000L, 0x620000000L, 0x4100000100008040L, 0x0L, 0x100000000010L, 0x80002a000e250L, 0x4391142500000000L, true, 0, 0x0L), 4), 1126717); - - // gentest-4983 - assertEqual(perft(new Board(0x91042080006200L, 0x200000000000000L, 0x620000000L, 0x4100000100008040L, 0x0L, 0x8000000000004L, 0x2a000e244L, 0x4399042500000000L, false, 0, 0x0L), 4), 990667); - - // gentest-4984 - assertEqual(perft(new Board(0x81042080006200L, 0x200000000000000L, 0x81200000000L, 0x4100000100008040L, 0x0L, 0x8000000000004L, 0x128000e244L, 0x43890c2100000000L, true, 0, 0x0L), 4), 1175271); - - // gentest-4985 - assertEqual(perft(new Board(0x810420c0002200L, 0x200000000000000L, 0x80200400000L, 0x4100000100008040L, 0x0L, 0x10000000000004L, 0x2c040a244L, 0x43910c2100000000L, false, 0, 0x0L), 4), 996595); - - // gentest-4986 - assertEqual(perft(new Board(0x810420c0002200L, 0x200000000000000L, 0x81200000000L, 0x100200100008040L, 0x0L, 0x10000000000004L, 0x12c000a244L, 0x3912c2100000000L, true, 0, 0x0L), 4), 963366); - - // gentest-4987 - assertEqual(perft(new Board(0x810420c0002200L, 0x200000000000000L, 0x280000000000L, 0x100000200008040L, 0x0L, 0x10000000000004L, 0x2000c000a244L, 0x3910c2200000000L, false, 0, 0x0L), 4), 123492); - - // gentest-4988 - assertEqual(perft(new Board(0x810420c2002000L, 0x200000000000000L, 0x200020000000L, 0x100000200008040L, 0x0L, 0x20000000000004L, 0x2000c200a044L, 0x3a1042220000000L, true, 0, 0x0L), 4), 103918); - - // gentest-4989 - assertEqual(perft(new Board(0x810420c2002000L, 0x200000000000000L, 0x200020000000L, 0x10000020000c000L, 0x0L, 0x2000000000000200L, 0x2000c200e200L, 0x2381042220000000L, false, 0, 0x0L), 4), 365445); - - // gentest-4990 - assertEqual(perft(new Board(0x810420c2002000L, 0x200000000000000L, 0x280000000000L, 0x100000200004000L, 0x0L, 0x2000000000000001L, 0x2000c2006001L, 0x23810c2200000000L, true, 0, 0x0L), 4), 247596); - - // gentest-4991 - assertEqual(perft(new Board(0x810420c0002000L, 0x200000000000000L, 0x1002000000L, 0x100000200004000L, 0x0L, 0x2000000000000001L, 0x10c0006001L, 0x2381042202000000L, false, 0, 0x0L), 4), 266293); - - // gentest-4992 - assertEqual(perft(new Board(0x810420c0002000L, 0x200000000000000L, 0x1002000000L, 0x100000000000044L, 0x0L, 0x2000000000000001L, 0x10c0002041L, 0x2381042002000004L, true, 0, 0x0L), 4), 53349); - - // gentest-4993 - assertEqual(perft(new Board(0x810420c0002000L, 0x200000000000000L, 0x1000000010L, 0x100000000000002L, 0x0L, 0x2000000000000001L, 0x10c0002003L, 0x2381042000000010L, false, 0, 0x0L), 4), 227105); - - // gentest-4994 - assertEqual(perft(new Board(0x810420c0000000L, 0x200000000000000L, 0x1000002000L, 0x100000000000002L, 0x0L, 0x4000000000000100L, 0x10c0000102L, 0x4381042000002000L, true, 0, 0x0L), 4), 365310); - - // gentest-4995 - assertEqual(perft(new Board(0x810420c0000000L, 0x200000000000000L, 0x8400000L, 0x100000000000002L, 0x0L, 0x4000000000000100L, 0xc0400102L, 0x4381042008000000L, false, 0, 0x0L), 4), 377332); - - // gentest-4996 - assertEqual(perft(new Board(0x810420c0000000L, 0x8000000000000L, 0x40000000400000L, 0x100000000020000L, 0x0L, 0x4000000000000100L, 0xc0420100L, 0x41c9042000000000L, true, 0, 0x0L), 4), 498269); - - // gentest-4997 - assertEqual(perft(new Board(0x8104a040000000L, 0x2000000000000000L, 0x40000000400000L, 0x100000000100000L, 0x0L, 0x4000000000000100L, 0x8040500100L, 0x61c1042000000000L, false, 0, 0x0L), 4), 371944); - - // gentest-4998 - assertEqual(perft(new Board(0x80058060000000L, 0x2000000000000000L, 0x40000000400000L, 0x100100000000000L, 0x0L, 0x4000000000000100L, 0x108040400100L, 0x61c0050020000000L, true, 0, 0x0L), 4), 232266); - - // gentest-4999 - assertEqual(perft(new Board(0x80048160000000L, 0x2000000000000000L, 0x40000000002000L, 0x100000000000010L, 0x0L, 0x4000000000000100L, 0x8040002110L, 0x61c0040120000000L, false, 0, 0x0L), 4), 357098); - - // gentest-5000 - assertEqual(perft(new Board(0x80048160000000L, 0x2000000000000000L, 0x40000000002000L, 0x100000000001000L, 0x0L, 0x200000000100L, 0x8040003100L, 0x21c0240120000000L, true, 0, 0x0L), 4), 182634); - - // gentest-5001 - assertEqual(perft(new Board(0x80048160000000L, 0x2000000000000000L, 0x800000002000L, 0x100000000100000L, 0x0L, 0x200000000100L, 0x8040102100L, 0x2180a40120000000L, false, 0, 0x0L), 4), 176068); - - // gentest-5002 - assertEqual(perft(new Board(0x80048160000000L, 0x2000000000000000L, 0x800000002000L, 0x100000000000010L, 0x0L, 0x200000000100L, 0x8040002110L, 0x2180a40120000000L, true, 0, 0x0L), 4), 205504); - - // gentest-5003 - assertEqual(perft(new Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x100000000000010L, 0x0L, 0x40000000010000L, 0xc000012010L, 0x21c0840120000000L, false, 0, 0x0L), 4), 186496); - - // gentest-5004 - assertEqual(perft(new Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x800000000100000L, 0x0L, 0x8000000000010000L, 0xc000112000L, 0xa880840120000000L, true, 0, 0x0L), 4), 225883); - - // gentest-5005 - assertEqual(perft(new Board(0x8004c120000000L, 0x2000000000000000L, 0x800000100000L, 0x800000000080000L, 0x0L, 0x4000000000010000L, 0xc000190000L, 0x6880840120000000L, false, 0, 0x0L), 4), 211034); - - // gentest-5006 - assertEqual(perft(new Board(0x8004c120000000L, 0x2000000000000000L, 0x800000100000L, 0x1000000000080000L, 0x0L, 0x40000001000000L, 0xc001180000L, 0x30c0840120000000L, true, 0, 0x0L), 4), 179900); - - // gentest-5007 - assertEqual(perft(new Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x100000800000000L, 0x0L, 0x40000001000000L, 0xc801002000L, 0x21c0840120000000L, false, 0, 0x0L), 4), 142432); - - // gentest-5008 - assertEqual(perft(new Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x10000080000L, 0x0L, 0x4000000001000000L, 0xc001082000L, 0x6080850120000000L, true, 0, 0x0L), 4), 127679); - - // gentest-5009 - assertEqual(perft(new Board(0x80848120000000L, 0x2000000000000000L, 0x10L, 0x10000080000L, 0x0L, 0x20000001000000L, 0x808001080010L, 0x20a0050120000000L, false, 0, 0x0L), 4), 84638); - - // gentest-5010 - assertEqual(perft(new Board(0x80808520000000L, 0x2000000000000000L, 0x10L, 0x800010000000000L, 0x0L, 0x200001000000L, 0x800808001000010L, 0x2080210520000000L, true, 0, 0x0L), 4), 110124); - - // gentest-5011 - assertEqual(perft(new Board(0x80808500200000L, 0x2000000000000000L, 0x100000L, 0x800010000000000L, 0x0L, 0x200001000000L, 0x800808001100000L, 0x2080210500200000L, false, 0, 0x0L), 4), 124179); - - // gentest-5012 - assertEqual(perft(new Board(0x80808500200000L, 0x400000000000L, 0x20000000L, 0x800080000000000L, 0x0L, 0x200001000000L, 0x800808021000000L, 0x80680500200000L, true, 0, 0x0L), 4), 176574); - - // gentest-5013 - assertEqual(perft(new Board(0x80808400200000L, 0x400000000000L, 0x20000000L, 0x8000000008000000L, 0x0L, 0x200100000000L, 0x8000808120000000L, 0x80600408200000L, false, 0, 0x0L), 4), 191471); - - // gentest-5014 - assertEqual(perft(new Board(0x80808400200000L, 0x80000000L, 0x20000000L, 0x8000000001000000L, 0x0L, 0x200200000000L, 0x8000808220000000L, 0x80200481200000L, true, 0, 0x0L), 4), 158867); - - // gentest-5015 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x400000L, 0x100000001000000L, 0x0L, 0x200200000000L, 0x100808200400000L, 0x80200085200000L, false, 0, 0x0L), 4), 147770); - - // gentest-5016 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x400000L, 0x100000002000000L, 0x0L, 0x44000000000L, 0x100848000400000L, 0x80004086200000L, true, 0, 0x0L), 4), 202485); - - // gentest-5017 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x200000000000000L, 0x100000000020000L, 0x0L, 0x44000000000L, 0x300848000000000L, 0x80004084220000L, false, 0, 0x0L), 4), 165194); - - // gentest-5018 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x0L, 0x201000000000000L, 0x0L, 0x44000000000L, 0x1848000000000L, 0x280004084200000L, true, 0, 0x0L), 4), 149661); - - // gentest-5019 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x0L, 0x4000000000000100L, 0x0L, 0x44000000000L, 0x848000000100L, 0x4080004084200000L, false, 0, 0x0L), 4), 154896); - - // gentest-5020 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x0L, 0x8001000000000000L, 0x0L, 0x42000000000L, 0x1848000000000L, 0x8080002084200000L, true, 0, 0x0L), 4), 117402); - - // gentest-5021 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x0L, 0x1002000000000000L, 0x0L, 0x2800000000L, 0x2808800000000L, 0x1080002084200000L, false, 0, 0x0L), 4), 126188); - - // gentest-5022 - assertEqual(perft(new Board(0x80808004200000L, 0x80000000L, 0x0L, 0x10000200L, 0x0L, 0x4800000000L, 0x808800000200L, 0x80004094200000L, true, 0, 0x0L), 4), 106594); - - // gentest-5023 - assertEqual(perft(new Board(0x80808000240000L, 0x80000000L, 0x0L, 0x10010000000L, 0x0L, 0x4800000000L, 0x818800000000L, 0x80004090240000L, false, 0, 0x0L), 4), 112131); - - // gentest-5024 - assertEqual(perft(new Board(0x80808000240000L, 0x80000000L, 0x0L, 0x40020000000L, 0x0L, 0x4800000000L, 0x848800000000L, 0x800040a0240000L, true, 0, 0x0L), 4), 65627); - - // gentest-5025 - assertEqual(perft(new Board(0x80808000240000L, 0x2000000000L, 0x0L, 0x4000020000000L, 0x0L, 0x4800000000L, 0x4808800000000L, 0x80006020240000L, false, 0, 0x0L), 4), 96378); - - // gentest-5026 - assertEqual(perft(new Board(0x80808000240000L, 0x2000000000L, 0x0L, 0x40004000000L, 0x0L, 0x4800000000L, 0x848800000000L, 0x80006004240000L, true, 0, 0x0L), 4), 70344); - - // gentest-5027 - assertEqual(perft(new Board(0xc08000240000L, 0x2000000000L, 0x0L, 0x4000000L, 0x0L, 0x104000000000L, 0x908000000000L, 0x406004240000L, false, 0, 0x0L), 4), 25782); - - // gentest-5028 - assertEqual(perft(new Board(0xc00000240000L, 0x2000000000L, 0x0L, 0x4000000L, 0x0L, 0x8004000000000L, 0x8800000000000L, 0x406004240000L, true, 0, 0x0L), 4), 14150); - - // gentest-5029 - assertEqual(perft(new Board(0xc00000240000L, 0x2000000000L, 0x0L, 0x400000000000000L, 0x0L, 0x8004000000000L, 0x8800000000000L, 0x400406000240000L, false, 0, 0x0L), 4), 14138); - - // gentest-5030 - assertEqual(perft(new Board(0xc00000042000L, 0x2000000000L, 0x0L, 0x400000000000000L, 0x0L, 0x100080000000L, 0x900000000000L, 0x400402080042000L, true, 0, 0x0L), 4), 25718); - - // gentest-5031 - assertEqual(perft(new Board(0x800000042000L, 0x2000000000L, 0x0L, 0x800000000000000L, 0x0L, 0x400080000000L, 0xc00000000000L, 0x800002080042000L, false, 0, 0x0L), 4), 18693); - - // gentest-5032 - assertEqual(perft(new Board(0x800000040000L, 0x8000000L, 0x0L, 0x800000000000020L, 0x0L, 0x80000080000000L, 0x80800000000000L, 0x800000088040020L, true, 0, 0x0L), 4), 9057); - - // gentest-5033 - assertEqual(perft(new Board(0x800000040000L, 0x8000000L, 0x0L, 0x80000000020L, 0x0L, 0x4000000080000000L, 0x4000800000000000L, 0x80088040020L, false, 0, 0x0L), 4), 24395); - - // gentest-5034 - assertEqual(perft(new Board(0x800000040000L, 0x8000000L, 0x0L, 0x80000000002L, 0x0L, 0x8000000080000000L, 0x8000800000000000L, 0x80088040002L, true, 0, 0x0L), 4), 22003); - - // gentest-5035 - assertEqual(perft(new Board(0x800000040000L, 0x8000000L, 0x0L, 0x80000000080L, 0x0L, 0x8000000080000000L, 0x8000800000000000L, 0x80088040080L, false, 0, 0x0L), 4), 15724); - - // gentest-5036 - assertEqual(perft(new Board(0x800000040000L, 0x40000000000L, 0x0L, 0x80000000002L, 0x0L, 0x80000080000000L, 0x80800000000000L, 0xc0080040002L, true, 0, 0x0L), 4), 21937); - - // gentest-5037 - assertEqual(perft(new Board(0x800000040000L, 0x40000000000L, 0x0L, 0x2080000000000L, 0x0L, 0x8000000080000000L, 0x8000800000000000L, 0x20c0080040000L, false, 0, 0x0L), 4), 8832); - - // gentest-5038 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5039 - assertEqual(perft(new Board(0xef10000400fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000400L, 0x1000000000000010L, 0x400fff7L, 0xffef100000000000L, false, 0, 0x8100000000000081L), 4), 785252); - - // gentest-5040 - assertEqual(perft(new Board(0xcf10200400fb00L, 0x4200000000000040L, 0x400000000010024L, 0x8100000000000081L, 0x800000000000400L, 0x1000000000000010L, 0x400fff5L, 0xdfcf102000010000L, true, 0, 0x8100000000000081L), 4), 712453); - - // gentest-5041 - assertEqual(perft(new Board(0xcf10200410eb00L, 0x200800000000040L, 0x400000000010024L, 0x8100000000000082L, 0x800000000000400L, 0x1000000000000010L, 0x410eff6L, 0x9fcf902000010000L, false, 0, 0x8100000000000080L), 4), 906324); - - // gentest-5042 - assertEqual(perft(new Board(0xcf10200410eb00L, 0x200800000000040L, 0x410000000000024L, 0x8100000000000082L, 0x800000000080000L, 0x1000000000000010L, 0x418ebf6L, 0x9fdf902000000000L, true, 0, 0x8100000000000080L), 4), 788234); - - // gentest-5043 - assertEqual(perft(new Board(0xcf10200412e900L, 0x200800000000040L, 0x400200000000024L, 0x8100000000000082L, 0x800000000000400L, 0x1000000000000010L, 0x412edf6L, 0x9fcfb02000000000L, false, 0, 0x8100000000000080L), 4), 951179); - - // gentest-5044 - assertEqual(perft(new Board(0xcf10200412e900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x1000000000000010L, 0x412e9feL, 0xdfdf102000000000L, true, 0, 0x8100000000000080L), 4), 605175); - - // gentest-5045 - assertEqual(perft(new Board(0x8f50240032c900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x1000000000000010L, 0x40032c9feL, 0xdf9f502000000000L, false, 0, 0x8100000000000080L), 4), 433591); - - // gentest-5046 - assertEqual(perft(new Board(0x8f54200032c900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000082L, 0x800000000000008L, 0x20000000000010L, 0x4000032c9feL, 0xcfbf502000000000L, true, 0, 0x80L), 4), 750076); - - // gentest-5047 - assertEqual(perft(new Board(0x8f50200032c900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000280L, 0x2000000000000008L, 0x20000000000010L, 0x800000032cbfcL, 0xe7b7502000000000L, false, 0, 0x80L), 4), 895759); - - // gentest-5048 - assertEqual(perft(new Board(0x8b50240032c900L, 0x200800000000040L, 0x410000000000024L, 0x8100000000000280L, 0x2000000000001000L, 0x20000000000010L, 0x800000032dbf4L, 0xa7b3d02400000000L, true, 0, 0x80L), 4), 675596); - - // gentest-5049 - assertEqual(perft(new Board(0x8b502440338800L, 0x810000000040L, 0x410000000000024L, 0x8100000000000280L, 0x2000000000001000L, 0x20000000000010L, 0x8000040339af4L, 0xa5b3d12400000000L, false, 0, 0x80L), 4), 770026); - - // gentest-5050 - assertEqual(perft(new Board(0x81522440338800L, 0x810000000040L, 0xc10000000000024L, 0x4100000000000280L, 0x2000000000001000L, 0x20000000000010L, 0x800000040339af4L, 0x65b1d32400000000L, true, 0, 0x80L), 4), 582873); - - // gentest-5051 - assertEqual(perft(new Board(0x815224c0330800L, 0x810000000040L, 0x818000000000024L, 0x4100000000000280L, 0x2000000000001000L, 0x20000000000010L, 0x8000000c0331af4L, 0x61b9d32400000000L, false, 0, 0x80L), 4), 876293); - - // gentest-5052 - assertEqual(perft(new Board(0x81522490230800L, 0x810000000040L, 0x818000000000024L, 0x4100000000000280L, 0x2000000000001000L, 0x20000000000010L, 0x800000090231af4L, 0x61b9d32400000000L, true, 0, 0x80L), 4), 929745); - - // gentest-5053 - assertEqual(perft(new Board(0x81522490230800L, 0x4800000800000L, 0x818000000000024L, 0x4100000000000280L, 0x2000000000002000L, 0x20000000000010L, 0x800000090a32ab4L, 0x61bdd22400000000L, false, 0, 0x80L), 4), 1372713); - - // gentest-5054 - assertEqual(perft(new Board(0x815204b0230800L, 0x4800000800000L, 0x810000200000024L, 0x4100000000000280L, 0x2000000000000040L, 0x20000000000010L, 0x800000090a30af4L, 0x61b5d20620000000L, true, 0, 0x80L), 4), 1116454); - - // gentest-5055 - assertEqual(perft(new Board(0x815204b0230800L, 0x4800000000000L, 0x800004200004004L, 0x4100000000000280L, 0x2000000000000040L, 0x20000000000010L, 0x800000090234ad4L, 0x61a5d24620000000L, false, 0, 0x80L), 4), 837355); - - // gentest-5056 - assertEqual(perft(new Board(0x815204b0230800L, 0x40000000L, 0x4004000084004L, 0x4100000000000280L, 0x2000000000000040L, 0x20000000000010L, 0x4000090234ad4L, 0x61a1524460080000L, true, 0, 0x80L), 4), 1260276); - - // gentest-5057 - assertEqual(perft(new Board(0x815204b0230800L, 0x1000000000L, 0x4004000084004L, 0x4100000000000280L, 0x2000000008000000L, 0x20000000000010L, 0x4000098234a94L, 0x61a1525420080000L, false, 0, 0x80L), 4), 1773016); - - // gentest-5058 - assertEqual(perft(new Board(0x815204b1220800L, 0x1000000000L, 0x804000004004004L, 0x4100000000000280L, 0x2000000008000000L, 0x20000000000010L, 0x4000099224a94L, 0x69a1521424000000L, true, 0, 0x80L), 4), 1204926); - - // gentest-5059 - assertEqual(perft(new Board(0x815204b1220800L, 0x8000000000000L, 0x804000004004004L, 0x4100000000000220L, 0x2000000008000000L, 0x20000000000008L, 0x4000099224a2cL, 0x69a9520424000000L, false, 0, 0x0L), 4), 1224535); - - // gentest-5060 - assertEqual(perft(new Board(0x815204b1220800L, 0x200000000000L, 0x4000004004004L, 0x4100000000000220L, 0x2000000000000000L, 0x20000000000008L, 0x4000091224a2cL, 0x61a1720424000000L, true, 0, 0x0L), 4), 741287); - - // gentest-5061 - assertEqual(perft(new Board(0x815004b1220800L, 0x200000000000L, 0x20004800004L, 0x4800000000000220L, 0x2000000000000000L, 0x20000000000008L, 0x20091a20a2cL, 0x68a1700424000000L, false, 0, 0x0L), 4), 832045); - - // gentest-5062 - assertEqual(perft(new Board(0x15084b1220800L, 0x200000000000L, 0x22004000004L, 0x4200000000000220L, 0x2000000000000000L, 0x20000000000008L, 0x22091220a2cL, 0x6221708424000000L, true, 0, 0x0L), 4), 722598); - - // gentest-5063 - assertEqual(perft(new Board(0x15084b1220800L, 0x200000000000L, 0x4002004000004L, 0x4200000000000210L, 0x2000000000000000L, 0x1000000000000008L, 0x4002091220a1cL, 0x7201708424000000L, false, 0, 0x0L), 4), 779909); - - // gentest-5064 - assertEqual(perft(new Board(0x5184b1220800L, 0x200000000000L, 0x4002000000024L, 0x4200000000000210L, 0x2000000000000000L, 0x1000000000000400L, 0x4002091220e14L, 0x7200718420000020L, true, 0, 0x0L), 4), 671389); - - // gentest-5065 - assertEqual(perft(new Board(0x518491220800L, 0x200000000000L, 0x2020000024L, 0x240000000000110L, 0x2000000000000000L, 0x1000000000000400L, 0x20b1220d14L, 0x3240718400000020L, false, 0, 0x0L), 4), 1597686); - - // gentest-5066 - assertEqual(perft(new Board(0x518491220800L, 0x200000000000L, 0x2020001004L, 0x240000000000110L, 0x2000000000000000L, 0x800000000000008L, 0x20b122091cL, 0x2a40718400001000L, true, 0, 0x0L), 4), 139808); - - // gentest-5067 - assertEqual(perft(new Board(0x518491220800L, 0x200000000000L, 0x20800004L, 0x240000000000110L, 0x80000000000L, 0x800000000001000L, 0xb1a21914L, 0xa40798400000000L, false, 0, 0x0L), 4), 1540425); - - // gentest-5068 - assertEqual(perft(new Board(0x518095220800L, 0x200000000000L, 0x800000800004L, 0x240000000000110L, 0x8000000000000L, 0x800000000001000L, 0x800091a21914L, 0xa48718004000000L, true, 0, 0x0L), 4), 1398495); - - // gentest-5069 - assertEqual(perft(new Board(0x518095220800L, 0x200000000000L, 0x800000800004L, 0x240000000000180L, 0x1000000000000000L, 0x800000000000008L, 0x800091a2098cL, 0x1a40718004000000L, false, 0, 0x0L), 4), 1266649); - - // gentest-5070 - assertEqual(perft(new Board(0x518095200800L, 0x200000000000L, 0x800000800004L, 0x40000000020180L, 0x1000000000000000L, 0x10000000001000L, 0x800091a01984L, 0x1050718004020000L, true, 0, 0x0L), 4), 1279945); - - // gentest-5071 - assertEqual(perft(new Board(0x51809d200000L, 0x200000000000L, 0x800000800004L, 0x40000000020180L, 0x20000000000000L, 0x10000000002000L, 0x800099a02184L, 0x70718004020000L, false, 19, 0x0L), 4), 1206620); - - // gentest-5072 - assertEqual(perft(new Board(0x51809d200000L, 0x200000000000L, 0x800000800004L, 0x40000000020110L, 0x100000000000000L, 0x10000000002000L, 0x800099a02114L, 0x150718004020000L, true, 0, 0x0L), 4), 2061285); - - // gentest-5073 - assertEqual(perft(new Board(0x51809d200000L, 0x200000000000L, 0x800000800004L, 0x40000000020110L, 0x100000000000000L, 0x800000000002000L, 0x800099a02114L, 0x940718004020000L, false, 0, 0x0L), 4), 2035026); - - // gentest-5074 - assertEqual(perft(new Board(0x51809d200000L, 0x200000000000L, 0x20800004L, 0x10000000100110L, 0x100000000000000L, 0x800000000002000L, 0xb9a02114L, 0x910718004100000L, true, 0, 0x0L), 4), 1574209); - - // gentest-5075 - assertEqual(perft(new Board(0x51809d200000L, 0x200000000000L, 0x4004L, 0x10000000100110L, 0x100000000000000L, 0x4000000002000L, 0x99206114L, 0x114718004100000L, false, 0, 0x0L), 4), 1114903); - - // gentest-5076 - assertEqual(perft(new Board(0x51808d200000L, 0x200000000000L, 0x4004L, 0x10000000100810L, 0x2000000000000L, 0x4000000002000L, 0x89206814L, 0x16718004100000L, true, 0, 0x0L), 4), 1001391); - - // gentest-5077 - assertEqual(perft(new Board(0x51808d200000L, 0x200000000000L, 0x24L, 0x10000000101800L, 0x400000000000000L, 0x4000000002000L, 0x89203824L, 0x414718004100000L, false, 0, 0x0L), 4), 580038); - - // gentest-5078 - assertEqual(perft(new Board(0x51808d200000L, 0x200000000000L, 0x24L, 0x80000000101800L, 0x4000000000000000L, 0x4000000400000L, 0x89601824L, 0x4084718004100000L, true, 0, 0x0L), 4), 704386); - - // gentest-5079 - assertEqual(perft(new Board(0x50818d200000L, 0x200000000000L, 0x10020L, 0x80000000108800L, 0x4000000000000000L, 0x4000000400000L, 0x89618820L, 0x4084708104100000L, false, 0, 0x0L), 4), 1083538); - - // gentest-5080 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x10020L, 0x80000000108800L, 0x4000000000000000L, 0x20000400000L, 0x81618820L, 0x4080528904100000L, true, 0, 0x0L), 4), 1143282); - - // gentest-5081 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x2000000000000020L, 0x80000000048800L, 0x4000000000000000L, 0x20000400000L, 0x2000000081608820L, 0x4080528904040000L, false, 0, 0x0L), 4), 842656); - - // gentest-5082 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x2000000000000020L, 0x200000000c8000L, 0x4000000000000000L, 0x1000000400000L, 0x2000000081688020L, 0x4021508904040000L, true, 0, 0x0L), 4), 924685); - - // gentest-5083 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x2000020L, 0x200000000c0200L, 0x8000000000000000L, 0x1000000400000L, 0x83680220L, 0x8021508904040000L, false, 0, 0x0L), 4), 1434854); - - // gentest-5084 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x2000020L, 0x20000000040a00L, 0x8000000000000000L, 0x2000000400000L, 0x83600a20L, 0x8022508904040000L, true, 0, 0x0L), 4), 1144473); - - // gentest-5085 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x2000020L, 0x20000000040a00L, 0x1000000000L, 0x2000000004000L, 0x83204a20L, 0x22509904040000L, false, 0, 0x0L), 4), 1127536); - - // gentest-5086 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x2080000L, 0x20000000040a00L, 0x8000L, 0x1000000004000L, 0x83284a00L, 0x21508904048000L, true, 0, 0x0L), 4), 65720); - - // gentest-5087 - assertEqual(perft(new Board(0x508185200000L, 0x800000000L, 0x2080000L, 0x20000000044200L, 0x0L, 0x1000000000020L, 0x83284220L, 0x21508904040000L, false, 0, 0x0L), 4), 910218); - - // gentest-5088 - assertEqual(perft(new Board(0x508181280000L, 0x800000000L, 0x2000000L, 0x24000000004002L, 0x0L, 0x1000000000020L, 0x83204022L, 0x25508900080000L, true, 0, 0x0L), 4), 870559); - - // gentest-5089 - assertEqual(perft(new Board(0x508181280000L, 0x800000000L, 0x2000000L, 0x2004000000004002L, 0x0L, 0x1000000000020L, 0x83204022L, 0x2005508900080000L, false, 0, 0x0L), 4), 1113446); - - // gentest-5090 - assertEqual(perft(new Board(0x508181280000L, 0x100000L, 0x10L, 0x2000000000004006L, 0x0L, 0x1000000000020L, 0x81204032L, 0x2001508100180004L, true, 0, 0x0L), 4), 50061); - - // gentest-5091 - assertEqual(perft(new Board(0x508181280000L, 0x100000L, 0x10L, 0x2000000000044002L, 0x0L, 0x1000000002000L, 0x81206012L, 0x20015081001c0000L, false, 0, 0x0L), 4), 466535); - - // gentest-5092 - assertEqual(perft(new Board(0x409181280000L, 0x100000L, 0x10L, 0x8000000000048002L, 0x0L, 0x1000000002000L, 0x8120a012L, 0x80014091001c0000L, true, 0, 0x0L), 4), 311893); - - // gentest-5093 - assertEqual(perft(new Board(0x409181280000L, 0x100000L, 0x10L, 0x8000000006008000L, 0x0L, 0x1000000002000L, 0x8320a010L, 0x8001409104180000L, false, 0, 0x0L), 4), 373157); - - // gentest-5094 - assertEqual(perft(new Board(0x409181280000L, 0x800000000L, 0x10L, 0x8000000010008000L, 0x0L, 0x1000000002000L, 0x9120a010L, 0x8001409900080000L, true, 0, 0x0L), 4), 253382); - - // gentest-5095 - assertEqual(perft(new Board(0x409181280000L, 0x2000000L, 0x40000L, 0x8000000010008000L, 0x0L, 0x1000000004000L, 0x9124c000L, 0x8001409102080000L, false, 0, 0x0L), 4), 278683); - - // gentest-5096 - assertEqual(perft(new Board(0x409181280000L, 0x0L, 0x2000000L, 0x800010008000L, 0x0L, 0x20000004000L, 0x9320c000L, 0xc29100080000L, true, 0, 0x0L), 4), 81504); - - // gentest-5097 - assertEqual(perft(new Board(0x409081280000L, 0x0L, 0x100000000L, 0x800010008000L, 0x0L, 0x10000004000L, 0x19120c000L, 0xc19000080000L, false, 0, 0x0L), 4), 48860); - - // gentest-5098 - assertEqual(perft(new Board(0x4090a1080000L, 0x0L, 0x100000000L, 0x800010008000L, 0x0L, 0x10000004000L, 0x1b100c000L, 0xc19000080000L, true, 0, 0x0L), 4), 61450); - - // gentest-5099 - assertEqual(perft(new Board(0x4090a1080000L, 0x0L, 0x40000L, 0x800004008000L, 0x0L, 0x20000004000L, 0xa504c000L, 0xc29000080000L, false, 0, 0x0L), 4), 75714); - - // gentest-5100 - assertEqual(perft(new Board(0x4080b1080000L, 0x0L, 0x2000000L, 0x800004008000L, 0x0L, 0x2000000004000L, 0xa700c000L, 0x2c08010080000L, true, 0, 0x0L), 4), 90440); - - // gentest-5101 - assertEqual(perft(new Board(0x4080a1080000L, 0x0L, 0x2000000L, 0x800010008000L, 0x0L, 0x20000004000L, 0xb300c000L, 0xc28000080000L, false, 0, 0x0L), 4), 88836); - - // gentest-5102 - assertEqual(perft(new Board(0x4080a1080000L, 0x0L, 0x40000L, 0x200000010008000L, 0x0L, 0x20000004000L, 0xb104c000L, 0x200428000080000L, true, 0, 0x0L), 4), 244363); - - // gentest-5103 - assertEqual(perft(new Board(0x4080a1000800L, 0x0L, 0x40000L, 0x200000000009000L, 0x0L, 0x20000000080L, 0xa1049080L, 0x200428000000800L, false, 0, 0x0L), 4), 238282); - - // gentest-5104 - assertEqual(perft(new Board(0xc0a1000000L, 0x0L, 0x1000000000L, 0x200000000009000L, 0x8L, 0x20000000080L, 0x10a1009080L, 0x20002c000000008L, true, 0, 0x0L), 4), 54544); - - // gentest-5105 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x1000000000L, 0x200000000009000L, 0x10L, 0x20000004000L, 0x308100d000L, 0x20002c000000010L, false, 0, 0x0L), 4), 512017); - - // gentest-5106 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x1000000000L, 0x200000000008200L, 0x2000000L, 0x2000000004000L, 0x308100c200L, 0x20200c002000000L, true, 0, 0x0L), 4), 512892); - - // gentest-5107 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x20000000000L, 0x400000000008200L, 0x2000000L, 0x2000000004000L, 0x2208100c200L, 0x40200c002000000L, false, 0, 0x0L), 4), 800502); - - // gentest-5108 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x20000000000L, 0x4000280L, 0x40000L, 0x2000000004000L, 0x22081004280L, 0x200c004040000L, true, 0, 0x0L), 4), 910268); - - // gentest-5109 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x20000000000L, 0x400000002000001L, 0x40000L, 0x2000000004000L, 0x22083004001L, 0x40200c000040000L, false, 0, 0x0L), 4), 999451); - - // gentest-5110 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x20000000000L, 0x6000001L, 0x4L, 0x2000000400000L, 0x22083400001L, 0x200c004000004L, true, 0, 0x0L), 4), 331241); - - // gentest-5111 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x800000000000000L, 0x2000001L, 0x4L, 0x2000000008000L, 0x800002081008001L, 0x200c002000004L, false, 0, 0x0L), 4), 306256); - - // gentest-5112 - assertEqual(perft(new Board(0xe081000000L, 0x0L, 0x800000000000000L, 0x2000001L, 0x1000000000L, 0x2000000800000L, 0x800002081800001L, 0x200d002000000L, true, 0, 0x0L), 4), 545218); - - // gentest-5113 - assertEqual(perft(new Board(0xe080000000L, 0x0L, 0x10L, 0x1000001L, 0x1000000000L, 0x2000000800000L, 0x2080800011L, 0x200d001000000L, false, 0, 0x0L), 4), 447647); - - // gentest-5114 - assertEqual(perft(new Board(0x6080000000L, 0x0L, 0x10L, 0x1000001L, 0x800000000L, 0x2000000800000L, 0x6000800011L, 0x2000881000000L, true, 0, 0x0L), 4), 395887); - - // gentest-5115 - assertEqual(perft(new Board(0x402080000000L, 0x0L, 0x40000L, 0x1000001L, 0x20000L, 0x2000000800000L, 0x402000840001L, 0x2000081020000L, false, 0, 0x0L), 4), 418569); - - // gentest-5116 - assertEqual(perft(new Board(0x402080000000L, 0x0L, 0x40000L, 0x100000000000010L, 0x10000L, 0x2000000800000L, 0x402000840010L, 0x102000080010000L, true, 0, 0x0L), 4), 433786); - - // gentest-5117 - assertEqual(perft(new Board(0x40200080000000L, 0x0L, 0x40000L, 0x1000000000010L, 0x10000L, 0x2000000800000L, 0x40200000840010L, 0x3000080010000L, false, 0, 0x0L), 4), 435160); - - // gentest-5118 - assertEqual(perft(new Board(0x40200080000000L, 0x0L, 0x40000L, 0x11000000000000L, 0x400000000L, 0x20000800000L, 0x50200000840000L, 0x1020480000000L, true, 0, 0x0L), 4), 688926); - - // gentest-5119 - assertEqual(perft(new Board(0x40200080000000L, 0x0L, 0x40000L, 0x1000000001000L, 0x2000L, 0x20040000000L, 0x40200040041000L, 0x1020080002000L, false, 0, 0x0L), 4), 493584); - - // gentest-5120 - assertEqual(perft(new Board(0x40000000800000L, 0x0L, 0x10L, 0x1000000001000L, 0x200000000000L, 0x20040000000L, 0x40000040001010L, 0x1220000800000L, true, 0, 0x0L), 4), 741478); - - // gentest-5121 - assertEqual(perft(new Board(0x40000000800000L, 0x0L, 0x400000L, 0x20001000000000L, 0x200000000000L, 0x20040000000L, 0x40001040400000L, 0x20220000800000L, false, 0, 0x0L), 4), 339993); - - // gentest-5122 - assertEqual(perft(new Board(0x40000000800000L, 0x0L, 0x2000L, 0x20001000000000L, 0x40000000000L, 0x10040000000L, 0x40001040002000L, 0x20050000800000L, true, 0, 0x0L), 4), 905432); - - // gentest-5123 - assertEqual(perft(new Board(0x800000L, 0x0L, 0x2000L, 0x8001000000000L, 0x400040000000000L, 0x10040000000L, 0x400001040002000L, 0x8050000800000L, false, 0, 0x0L), 4), 77007); - - // gentest-5124 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5125 - assertEqual(perft(new Board(0xf700081800e700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1800e7ffL, 0xfff7000800000000L, false, 0, 0x8100000000000081L), 4), 1136220); - - // gentest-5126 - assertEqual(perft(new Board(0xf600091800e700L, 0x200200000000840L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1800effdL, 0xbff6200900000000L, true, 0, 0x8100000000000081L), 4), 975038); - - // gentest-5127 - assertEqual(perft(new Board(0xf600090801e600L, 0x200000010000840L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000200000L, 0x1000000000000010L, 0x821eef5L, 0xbff6000910000000L, false, 0, 0x8100000000000081L), 4), 1722128); - - // gentest-5128 - assertEqual(perft(new Board(0xf600094801a600L, 0x200000010000840L, 0x2000100000000024L, 0x4100000000000081L, 0x800000000200000L, 0x1000000000000010L, 0x4821aef5L, 0x7bf6100910000000L, true, 0, 0x100000000000081L), 4), 1424936); - - // gentest-5129 - assertEqual(perft(new Board(0xb640094801a600L, 0x200000010001800L, 0x2000100000000024L, 0x4100000000000081L, 0x800000000200000L, 0x1000000000000008L, 0x4821beadL, 0x7bb6500910000000L, false, 0, 0x100000000000000L), 4), 1287446); - - // gentest-5130 - assertEqual(perft(new Board(0xb4400b4a01a400L, 0x200000010001800L, 0x2000100000000024L, 0x8100000000000081L, 0x800000000200000L, 0x1000000000000008L, 0x4a21bcadL, 0xbbb4500b10000000L, true, 0, 0x100000000000000L), 4), 1168613); - - // gentest-5131 - assertEqual(perft(new Board(0xb4400b4a05a000L, 0x200000010001800L, 0x2000100000000024L, 0x8100000000000081L, 0x8000000200000L, 0x1000000000000010L, 0x4a25b8b5L, 0xb3bc500b10000000L, false, 0, 0x100000000000000L), 4), 937482); - - // gentest-5132 - assertEqual(perft(new Board(0xb4400b0a05a000L, 0x200000010021000L, 0x2000000040000024L, 0x8100000000000081L, 0x2000200000L, 0x1000000000000010L, 0xa27b0b5L, 0xb3b4402b50000000L, true, 0, 0x100000000000000L), 4), 1745508); - - // gentest-5133 - assertEqual(perft(new Board(0xb4400b0a05a000L, 0x10010021000L, 0x2000800040000020L, 0x8100000000000082L, 0x2000200000L, 0x1000000000000010L, 0x80000a27b0b2L, 0xb1b4412b50000000L, false, 0, 0x100000000000000L), 4), 2403795); - - // gentest-5134 - assertEqual(perft(new Board(0xb4400b0a05a000L, 0x10010001800L, 0x40800040000020L, 0x8800000000000082L, 0x2000200000L, 0x1000000000000010L, 0x80000a25b8b2L, 0x98f4412b50000000L, true, 0, 0x0L), 4), 2374473); - - // gentest-5135 - assertEqual(perft(new Board(0xb4400b0a05a000L, 0x10010001800L, 0x40800040000020L, 0x8800000000000082L, 0x20200000L, 0x1000000000000010L, 0x80000a25b8b2L, 0x98f4410b70000000L, false, 0, 0x0L), 4), 2738119); - - // gentest-5136 - assertEqual(perft(new Board(0xb4400b0a05a000L, 0x210000000804L, 0x40800040000020L, 0x8800000000000082L, 0x4000200000L, 0x1000000000000010L, 0x80000a25a8b6L, 0x98f4614b40000000L, true, 0, 0x0L), 4), 2079536); - - // gentest-5137 - assertEqual(perft(new Board(0xb4400b0a05a000L, 0x230000000004L, 0x40800040000020L, 0x4800000000000082L, 0x4000200000L, 0x1000000000000010L, 0x82000a25a0b6L, 0x58f4614b40000000L, false, 0, 0x0L), 4), 2289006); - - // gentest-5138 - assertEqual(perft(new Board(0xb4400b0a05a000L, 0x230000000004L, 0x2008800000000020L, 0x4800000000000082L, 0x4000800000L, 0x1000000000000010L, 0x82000a85a0b6L, 0x78bc614b00000000L, true, 0, 0x0L), 4), 2034846); - - // gentest-5139 - assertEqual(perft(new Board(0xb040070b04a000L, 0x210800000004L, 0x2008800000000020L, 0x4800000000000082L, 0x4000800000L, 0x1000000000000010L, 0x80080b84a0b6L, 0x78b8614700000000L, false, 0, 0x0L), 4), 2275739); - - // gentest-5140 - assertEqual(perft(new Board(0xb040070b04a000L, 0x4200000000004L, 0x2008800000000020L, 0x4800000000000082L, 0x800040L, 0x1000000000000010L, 0x80000b84a0b6L, 0x78bc600700000040L, true, 0, 0x0L), 4), 1691561); - - // gentest-5141 - assertEqual(perft(new Board(0xb040070b04a000L, 0x4200000000004L, 0x2008800000000020L, 0x4200000000020080L, 0x800040L, 0x1000000000000008L, 0x80000b86a0acL, 0x72bc600700000040L, false, 0, 0x0L), 4), 1829431); - - // gentest-5142 - assertEqual(perft(new Board(0xb040070304a000L, 0x4200000000004L, 0x2000800000800020L, 0x4800000000020080L, 0x40L, 0x1000000000000008L, 0x80040306a0acL, 0x78b4600300800040L, true, 0, 0x0L), 4), 194315); - - // gentest-5143 - assertEqual(perft(new Board(0xb040050304a000L, 0x4200000000004L, 0x2000000000800820L, 0x4800000000000082L, 0x40L, 0x1000000000000008L, 0x40204a8aeL, 0x78b4600101800040L, false, 0, 0x0L), 4), 752382); - - // gentest-5144 - assertEqual(perft(new Board(0xb044010304a000L, 0x300000000004L, 0x2000000000800820L, 0x840000000000082L, 0x40L, 0x1000000000000008L, 0x4000204a8aeL, 0x38f0700101800040L, true, 0, 0x0L), 4), 495084); - - // gentest-5145 - assertEqual(perft(new Board(0xb044010304a000L, 0x200020000004L, 0x2000000000800820L, 0x840000000020040L, 0x0L, 0x1000000000000008L, 0x4000206a86cL, 0x38f0600121800000L, false, 0, 0x0L), 4), 882039); - - // gentest-5146 - assertEqual(perft(new Board(0xa004110304a000L, 0x200020000004L, 0x2000000000800820L, 0x4800400000020000L, 0x0L, 0x1000000000000008L, 0x44000206a82cL, 0x78a0201121800000L, true, 0, 0x0L), 4), 1571154); - - // gentest-5147 - assertEqual(perft(new Board(0xa004110205a000L, 0x200020080000L, 0x2000000000800820L, 0x4800004000020000L, 0x0L, 0x1000000000000008L, 0x440020ea828L, 0x78a0201120810000L, false, 0, 0x0L), 4), 1928939); - - // gentest-5148 - assertEqual(perft(new Board(0xa004110205a000L, 0x200020000000L, 0x2000000000800820L, 0x484000020000L, 0x0L, 0x1000000000000008L, 0x4402206a828L, 0x30a0681100810000L, true, 0, 0x0L), 4), 1409755); - - // gentest-5149 - assertEqual(perft(new Board(0xa004110205a000L, 0x200000080000L, 0x2000000000804800L, 0x404008020000L, 0x0L, 0x1000000000000008L, 0x440020ee808L, 0x30a0601108810000L, false, 0, 0x0L), 4), 1843854); - - // gentest-5150 - assertEqual(perft(new Board(0xa004110205a000L, 0x8000000080000L, 0x80000904000L, 0x404008020000L, 0x0L, 0x1000000000000008L, 0x440021ee008L, 0x10a8481108810000L, true, 0, 0x0L), 4), 1477938); - - // gentest-5151 - assertEqual(perft(new Board(0xa000110205a000L, 0x80000L, 0x80000904000L, 0x404008020000L, 0x0L, 0x8000000000800L, 0x40021ee800L, 0xa8481108810000L, false, 0, 0x0L), 4), 1460407); - - // gentest-5152 - assertEqual(perft(new Board(0xa000110005a000L, 0x80000L, 0x2b00000L, 0x404800020000L, 0x0L, 0x8000000000800L, 0x40003ea800L, 0xa8401902810000L, true, 0, 0x0L), 4), 1391693); - - // gentest-5153 - assertEqual(perft(new Board(0x2000910005a000L, 0x80000L, 0x2900080L, 0x404800000002L, 0x0L, 0x8000000000800L, 0x40001ca882L, 0x28409902810000L, false, 0, 0x0L), 4), 1679474); - - // gentest-5154 - assertEqual(perft(new Board(0x2000910005a000L, 0x80000L, 0x402800080L, 0x404800000002L, 0x0L, 0x8000000000800L, 0x44000ca882L, 0x28409902810000L, true, 0, 0x0L), 4), 1500655); - - // gentest-5155 - assertEqual(perft(new Board(0x2000910005a000L, 0x80000L, 0x402800080L, 0x14800000100L, 0x0L, 0x8000000000800L, 0x44000ca980L, 0x28019902810000L, false, 0, 0x0L), 4), 1033871); - - // gentest-5156 - assertEqual(perft(new Board(0x2000910005a000L, 0x80000L, 0x2800080L, 0x10400400100L, 0x0L, 0x80000000800L, 0x4ca980L, 0x20099502810000L, true, 0, 0x0L), 4), 979947); - - // gentest-5157 - assertEqual(perft(new Board(0x2000910005a000L, 0x80000L, 0x2804000L, 0x4000010800000100L, 0x0L, 0x80000000800L, 0x40000000000ce900L, 0x20099902810000L, false, 0, 0x0L), 4), 645514); - - // gentest-5158 - assertEqual(perft(new Board(0x2000811005a000L, 0x80000L, 0x2804000L, 0x200040800000100L, 0x0L, 0x80000000800L, 0x2000000000ce900L, 0x200c8912810000L, true, 0, 0x0L), 4), 775593); - - // gentest-5159 - assertEqual(perft(new Board(0x2000811005a000L, 0x80000L, 0x2804000L, 0x200040800000200L, 0x0L, 0x8000000001000L, 0x2000000000cf200L, 0x28048912810000L, false, 0, 0x0L), 4), 1639800); - - // gentest-5160 - assertEqual(perft(new Board(0x2000811005a000L, 0x80000L, 0x2800000L, 0x200104000000200L, 0x0L, 0x8000000001000L, 0x2000000008cb200L, 0x2810c112010000L, true, 0, 0x0L), 4), 870234); - - // gentest-5161 - assertEqual(perft(new Board(0x2000811005a000L, 0x4L, 0x2800000L, 0x200104000000200L, 0x0L, 0x10000000000020L, 0x20000000084a224L, 0x3010c112010000L, false, 0, 0x0L), 4), 985254); - - // gentest-5162 - assertEqual(perft(new Board(0x2000811005a000L, 0x4L, 0x2800000L, 0x200100200000002L, 0x0L, 0x8000000000020L, 0x20000000084a026L, 0x28108312010000L, true, 0, 0x0L), 4), 471008); - - // gentest-5163 - assertEqual(perft(new Board(0x2000019005a000L, 0x4L, 0x2800000L, 0x200100200020000L, 0x0L, 0x8000000000010L, 0x20000000086a014L, 0x28100392010000L, false, 0, 0x0L), 4), 437470); - - // gentest-5164 - assertEqual(perft(new Board(0x219005a000L, 0x1000L, 0x2800000L, 0x200100200020000L, 0x0L, 0x4000000000010L, 0x20000000086b010L, 0x4102392010000L, true, 0, 0x0L), 4), 600709); - - // gentest-5165 - assertEqual(perft(new Board(0x219004a000L, 0x1000L, 0x10000000800000L, 0x100100200010000L, 0x0L, 0x4000000000010L, 0x10000000085b010L, 0x14102390000000L, false, 0, 0x0L), 4), 861834); - - // gentest-5166 - assertEqual(perft(new Board(0x219004a000L, 0x4L, 0x10000000800000L, 0x300200000010000L, 0x0L, 0x4000000000010L, 0x10000000085a014L, 0x214202190000000L, true, 0, 0x0L), 4), 742352); - - // gentest-5167 - assertEqual(perft(new Board(0x219004a000L, 0x1000L, 0x10000000000020L, 0x300200000010000L, 0x0L, 0x2000000000010L, 0x10000000005b030L, 0x212202190000000L, false, 0, 0x0L), 4), 485717); - - // gentest-5168 - assertEqual(perft(new Board(0x219004a000L, 0x1000L, 0x10000000000020L, 0x300800000020000L, 0x0L, 0x4000000000010L, 0x10000000006b030L, 0x214802190000000L, true, 0, 0x0L), 4), 772182); - - // gentest-5169 - assertEqual(perft(new Board(0x219004a000L, 0x8000000L, 0x10000000000020L, 0x300040000010000L, 0x0L, 0x4000000000010L, 0x10000000805a030L, 0x214042190000000L, false, 0, 0x0L), 4), 1362200); - - // gentest-5170 - assertEqual(perft(new Board(0x219000a000L, 0x8000000L, 0x10000000800000L, 0x100000000050002L, 0x0L, 0x4000000000010L, 0x10000000881a010L, 0x14002190040002L, true, 0, 0x0L), 4), 74534); - - // gentest-5171 - assertEqual(perft(new Board(0x219000a000L, 0x200000L, 0x80000800000L, 0x100000000050002L, 0x0L, 0x4000000000800L, 0x100000000a1a800L, 0x4082190040002L, false, 0, 0x0L), 4), 836965); - - // gentest-5172 - assertEqual(perft(new Board(0x219000a000L, 0x40L, 0x80000800000L, 0x100000000050002L, 0x0L, 0x4000000000800L, 0x10000000081a840L, 0x4082190040002L, true, 0, 0x0L), 4), 749775); - - // gentest-5173 - assertEqual(perft(new Board(0x19000a000L, 0x40L, 0x82000000000L, 0x800000004010002L, 0x0L, 0x4000000000800L, 0x80000200001a840L, 0x4080194000002L, false, 0, 0x0L), 4), 1025098); - - // gentest-5174 - assertEqual(perft(new Board(0x180002000L, 0x40L, 0x10008000L, 0x800000400010002L, 0x0L, 0x4000000000800L, 0x800000010012840L, 0x4000580008002L, true, 0, 0x0L), 4), 1428552); - - // gentest-5175 - assertEqual(perft(new Board(0x180002000L, 0x40L, 0x10008000L, 0x800000000020402L, 0x0L, 0x4000000080000L, 0x8000000100a2040L, 0x4000180008402L, false, 0, 0x0L), 4), 628930); - - // gentest-5176 - assertEqual(perft(new Board(0x180002000L, 0x0L, 0x1010000000L, 0x800020000000440L, 0x0L, 0x4000000080000L, 0x800020010082000L, 0x4001180000440L, true, 0, 0x0L), 4), 1344878); - - // gentest-5177 - assertEqual(perft(new Board(0x180002000L, 0x0L, 0x1000200000L, 0x802000000000401L, 0x0L, 0x4000000080000L, 0x802000000282000L, 0x4001180000401L, false, 0, 0x0L), 4), 21150); - - // gentest-5178 - assertEqual(perft(new Board(0x81002000L, 0x0L, 0x1000200000L, 0x10000000000401L, 0x0L, 0x800000000080000L, 0x10000000282000L, 0x800001081000401L, true, 0, 0x0L), 4), 530674); - - // gentest-5179 - assertEqual(perft(new Board(0x81002000L, 0x0L, 0x1010000000L, 0x10000000000420L, 0x0L, 0x800000000080000L, 0x10000010082000L, 0x800001081000420L, false, 0, 0x0L), 4), 572469); - - // gentest-5180 - assertEqual(perft(new Board(0x81002000L, 0x0L, 0x800400000L, 0x10000000000440L, 0x0L, 0x800000000080000L, 0x10000800082000L, 0x800000081400440L, true, 0, 0x0L), 4), 749540); - - // gentest-5181 - assertEqual(perft(new Board(0x81002000L, 0x0L, 0x800400000L, 0x41000000040L, 0x0L, 0x800000000080000L, 0x1800082000L, 0x800040081400040L, false, 0, 0x0L), 4), 658743); - - // gentest-5182 - assertEqual(perft(new Board(0xa1000000L, 0x0L, 0x800400000L, 0x41000000040L, 0x0L, 0x800000000080000L, 0x1820080000L, 0x800040081400040L, true, 0, 0x0L), 4), 555878); - - // gentest-5183 - assertEqual(perft(new Board(0xa1000000L, 0x0L, 0x800400000L, 0x1000400000000040L, 0x0L, 0x800000000100000L, 0x1000000820100000L, 0x800400081400040L, false, 0, 0x0L), 4), 48432); - - // gentest-5184 - assertEqual(perft(new Board(0xa1000000L, 0x0L, 0x400100L, 0x1000020000000040L, 0x0L, 0x4000000100000L, 0x1000000020100100L, 0x4020081400040L, true, 0, 0x0L), 4), 486030); - - // gentest-5185 - assertEqual(perft(new Board(0xa1000000L, 0x0L, 0x400100L, 0x4200000000000040L, 0x0L, 0x4000000100000L, 0x4000000020100100L, 0x204000081400040L, false, 0, 0x0L), 4), 409376); - - // gentest-5186 - assertEqual(perft(new Board(0xa1000000L, 0x0L, 0x400100L, 0x4100000000000040L, 0x0L, 0x8000010000000L, 0x4000000030000100L, 0x108000081400040L, true, 0, 0x0L), 4), 382879); - - // gentest-5187 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400100L, 0x300000000000040L, 0x0L, 0x8000000100000L, 0x200000020100100L, 0x108000080410040L, false, 0, 0x0L), 4), 298791); - - // gentest-5188 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400100L, 0x100000200000002L, 0x0L, 0x8000000100000L, 0x220100100L, 0x108000080410002L, true, 0, 0x0L), 4), 578342); - - // gentest-5189 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x100000400000L, 0x100000200000002L, 0x0L, 0x4000008000000L, 0x100228000000L, 0x104000080410002L, false, 0, 0x0L), 4), 632057); - - // gentest-5190 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400100L, 0x1000000200000002L, 0x0L, 0x4000008000000L, 0x228000100L, 0x1004000080410002L, true, 0, 0x0L), 4), 591556); - - // gentest-5191 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400002L, 0x1000000200000000L, 0x0L, 0x8000400000000L, 0x620000002L, 0x1008000080410000L, false, 0, 0x0L), 4), 201130); - - // gentest-5192 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400002L, 0x2000000000000200L, 0x0L, 0x10000400000000L, 0x420000202L, 0x2010000080410000L, true, 0, 0x0L), 4), 299642); - - // gentest-5193 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400000400000L, 0x8000020000000000L, 0x0L, 0x10000400000000L, 0x420420000000L, 0x8010000080410000L, false, 0, 0x0L), 4), 205841); - - // gentest-5194 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400000L, 0x820000000000L, 0x0L, 0x20000400000000L, 0x20420000000L, 0x20800080410000L, true, 0, 0x0L), 4), 125149); - - // gentest-5195 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400000L, 0x2080000000000L, 0x0L, 0x20000400000000L, 0x2000420000000L, 0x20080080410000L, false, 0, 0x0L), 4), 38143); - - // gentest-5196 - assertEqual(perft(new Board(0xa0010000L, 0x0L, 0x400000L, 0x80000020000L, 0x0L, 0x100400000000L, 0x420020000L, 0x180080410000L, true, 0, 0x0L), 4), 92027); - - // gentest-5197 - assertEqual(perft(new Board(0x2080010000L, 0x0L, 0x400000L, 0x2080000000000L, 0x0L, 0x200400000000L, 0x2002400000000L, 0x280080410000L, false, 0, 0x0L), 4), 113023); - - // gentest-5198 - assertEqual(perft(new Board(0x2080010000L, 0x0L, 0x400000L, 0x2000008000000L, 0x0L, 0x220000000000L, 0x2022000000000L, 0x200088410000L, true, 0, 0x0L), 4), 129515); - - // gentest-5199 - assertEqual(perft(new Board(0x2080010000L, 0x0L, 0x2000L, 0x8000004L, 0x0L, 0x220000000000L, 0x22000000004L, 0x200088012000L, false, 0, 0x0L), 4), 121555); - - // gentest-5200 - assertEqual(perft(new Board(0x2080010000L, 0x0L, 0x40L, 0x800000004L, 0x0L, 0x240000000000L, 0x42000000004L, 0x200880010040L, true, 0, 0x0L), 4), 106148); - } - - public static void batch13() { - // gentest-5201 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x40L, 0x2000000008L, 0x0L, 0x240000000000L, 0x40000000008L, 0x202080010040L, false, 0, 0x0L), 4), 174616); - - // gentest-5202 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x8000L, 0x8000000008L, 0x0L, 0x220000000000L, 0x20000000008L, 0x208080018000L, true, 0, 0x0L), 4), 162065); - - // gentest-5203 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x8000L, 0x8000000004L, 0x0L, 0x42000000000L, 0x40000000004L, 0xa080018000L, false, 0, 0x0L), 4), 109143); - - // gentest-5204 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x40000L, 0x8000000004L, 0x0L, 0x2200000000L, 0x200000004L, 0xa080050000L, true, 0, 0x0L), 4), 110347); - - // gentest-5205 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x8000000L, 0x8000000010L, 0x0L, 0x2200000000L, 0x200000010L, 0xa088010000L, false, 0, 0x0L), 4), 154284); - - // gentest-5206 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x8000000L, 0x8000000000000010L, 0x0L, 0x440000000000L, 0x40000000010L, 0x8000400088010000L, true, 0, 0x0L), 4), 272790); - - // gentest-5207 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x0L, 0x8000200000000000L, 0x0L, 0x440000000000L, 0x240000000000L, 0x8000400080010000L, false, 0, 0x0L), 4), 18391); - - // gentest-5208 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x0L, 0x20800000000000L, 0x0L, 0x48000000000L, 0x20040000000000L, 0x808080010000L, true, 0, 0x0L), 4), 21051); - - // gentest-5209 - assertEqual(perft(new Board(0x80010000L, 0x0L, 0x0L, 0xa000000000000000L, 0x0L, 0x48000000000L, 0x2000040000000000L, 0x8000008080010000L, false, 0, 0x0L), 4), 45136); - - // gentest-5210 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5211 - assertEqual(perft(new Board(0xbf40000020df00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x24dffdL, 0xffbf400000000000L, false, 0, 0x8100000000000081L), 4), 235576); - - // gentest-5212 - assertEqual(perft(new Board(0x9f60000020df00L, 0x4200000800000040L, 0x440000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x80020dffdL, 0xdfdf600000000000L, true, 0, 0x8100000000000081L), 4), 274963); - - // gentest-5213 - assertEqual(perft(new Board(0x9f600040308f00L, 0x4200000800000040L, 0x440000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x2000000000000010L, 0x840308ffdL, 0xefdf600000000000L, false, 0, 0x81L), 4), 455024); - - // gentest-5214 - assertEqual(perft(new Board(0x8b601440b00f00L, 0x4200000800000040L, 0x440000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x2000000000000010L, 0x840b00ffdL, 0xefcb601400000000L, true, 0, 0x81L), 4), 542753); - - // gentest-5215 - assertEqual(perft(new Board(0x8b601440b00f00L, 0x4000040800000040L, 0x440000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x2000000000000010L, 0x840b00ffdL, 0xedcb641400000000L, false, 0, 0x81L), 4), 692812); - - // gentest-5216 - assertEqual(perft(new Board(0x8b601440b00f00L, 0x4000020002000040L, 0x440000000000024L, 0x8100000000000081L, 0x4000000000008L, 0x2000000000000010L, 0x20040b00ffdL, 0xe5cf601402000000L, true, 0, 0x81L), 4), 646865); - - // gentest-5217 - assertEqual(perft(new Board(0x8b601440b00f00L, 0x4000020000080040L, 0x440000000000024L, 0x8100000000000081L, 0x4000000000008L, 0x2000000000001000L, 0x20040b01fedL, 0xe5cf601400080000L, false, 0, 0x0L), 4), 364171); - - // gentest-5218 - assertEqual(perft(new Board(0x8b205440b00f00L, 0x4100000000000050L, 0x440000000000024L, 0x8000000000000081L, 0x4000000000008L, 0x2000000000001000L, 0x100000040b01fedL, 0xe4cf205400000010L, true, 0, 0x0L), 4), 293325); - - // gentest-5219 - assertEqual(perft(new Board(0x83205c40b40b00L, 0x4100000000000040L, 0x440000000000024L, 0x8000000000000081L, 0x4000000000010L, 0x2000000000001000L, 0x100000040b41bf5L, 0xe4c7205c00000000L, false, 0, 0x0L), 4), 439525); - - // gentest-5220 - assertEqual(perft(new Board(0x83205c40b40b00L, 0x4100000000000040L, 0x440000000000024L, 0x8000000000000081L, 0x8000000000008L, 0x2000000000001000L, 0x100000040b41bedL, 0xe4cb205c00000000L, true, 0, 0x0L), 4), 424156); - - // gentest-5221 - assertEqual(perft(new Board(0x83205c42b40900L, 0x4100000000000040L, 0x440000000004004L, 0x8000000000000081L, 0x20000000000008L, 0x2000000000001000L, 0x100000042b459cdL, 0xe4e3205c00000000L, false, 0, 0x0L), 4), 528999); - - // gentest-5222 - assertEqual(perft(new Board(0x83205c42b40900L, 0x4100000000000040L, 0x400800000014000L, 0x8000000000000081L, 0x20000000000008L, 0x10000000001000L, 0x100000042b559c9L, 0xc4b3a05c00000000L, true, 0, 0x0L), 4), 544442); - - // gentest-5223 - assertEqual(perft(new Board(0x83205c42b40900L, 0x4100000000000040L, 0x802000014000L, 0x8000000000000081L, 0x20000000000010L, 0x10000000002000L, 0x100000042b569d1L, 0xc0b3a07c00000000L, false, 0, 0x0L), 4), 678405); - - // gentest-5224 - assertEqual(perft(new Board(0x83205c42b40900L, 0x4000020000000040L, 0x800000014400L, 0x8000000000000081L, 0x1000000000000010L, 0x10000000002000L, 0x20042b569d1L, 0xd093a05c00000400L, true, 0, 0x0L), 4), 941007); - - // gentest-5225 - assertEqual(perft(new Board(0x83205c42b40900L, 0x4000020000000040L, 0x800000014400L, 0x8000000000008001L, 0x1000000000000010L, 0x20000000001000L, 0x20042b5d951L, 0xd0a3a05c00000400L, false, 0, 0x0L), 4), 971318); - - // gentest-5226 - assertEqual(perft(new Board(0x82205d52a40900L, 0x4000020000000040L, 0x800000014008L, 0x8000000000008001L, 0x1000000000000010L, 0x20000000001000L, 0x20052a5d951L, 0xd0a2a05d00000008L, true, 0, 0x0L), 4), 170730); - - // gentest-5227 - assertEqual(perft(new Board(0x82205d52a40900L, 0x4000000004000040L, 0x800000014000L, 0x8000000000008008L, 0x200000010L, 0x20000000001000L, 0x56a5d958L, 0xc0a2a05f00000000L, false, 0, 0x0L), 4), 398043); - - // gentest-5228 - assertEqual(perft(new Board(0x82205542b40900L, 0x4000000004000040L, 0x800000014000L, 0x8000000000008008L, 0x200400000L, 0x20000000001000L, 0x46e5d948L, 0xc0a2a05700100000L, true, 0, 0x0L), 4), 439828); - - // gentest-5229 - assertEqual(perft(new Board(0x82205443b40900L, 0x4000000004000040L, 0x800000014000L, 0x8000000000008010L, 0x200002000L, 0x20000000001000L, 0x46a5f950L, 0xc0a2a05601100000L, false, 0, 0x0L), 4), 372350); - - // gentest-5230 - assertEqual(perft(new Board(0x82205043b40900L, 0x4000000004000040L, 0x2000000000010080L, 0x8000000000008010L, 0x200002000L, 0x20000000001000L, 0x44a5b9d0L, 0xe0a2205203100000L, true, 0, 0x0L), 4), 624990); - - // gentest-5231 - assertEqual(perft(new Board(0x2209043b40900L, 0x4000000004000040L, 0x2000000000010080L, 0x8000000000008010L, 0x4200000000L, 0x20000000001000L, 0x4044a599d0L, 0xe022209203100000L, false, 0, 0x0L), 4), 977428); - - // gentest-5232 - assertEqual(perft(new Board(0x200d063940900L, 0x4000000004000040L, 0x2000000000010080L, 0x8000000000008010L, 0x100000000L, 0x20000000001000L, 0x648599d0L, 0xe02200d103100000L, true, 0, 0x0L), 4), 1423234); - - // gentest-5233 - assertEqual(perft(new Board(0x200d063940900L, 0x4000000004000040L, 0x2000000010010000L, 0x8000000000008020L, 0x4000000000000L, 0x20000000001000L, 0x74859960L, 0xe02600d003100000L, false, 0, 0x0L), 4), 2169874); - - // gentest-5234 - assertEqual(perft(new Board(0x200d063840900L, 0x4000000004000040L, 0x10000010010000L, 0x80000000000000a0L, 0x4000000000000L, 0x20000000001000L, 0x748511e0L, 0xc03600d003000800L, true, 0, 0x0L), 4), 1719296); - - // gentest-5235 - assertEqual(perft(new Board(0x200f043840900L, 0x4000000004000040L, 0x800000000014000L, 0x80000000000000a0L, 0x4000000000000L, 0x20000000001000L, 0x20448551e0L, 0xc82600d003000800L, false, 0, 0x0L), 4), 1071320); - - // gentest-5236 - assertEqual(perft(new Board(0x200e053840900L, 0x4000000004000040L, 0x10000000014000L, 0x8000000000000088L, 0x4000000000000L, 0x20000000001000L, 0x20448551c8L, 0xc03600c013000800L, true, 0, 0x0L), 4), 950621); - - // gentest-5237 - assertEqual(perft(new Board(0x200e043840900L, 0x4000020000000040L, 0x10000010010000L, 0x8000000000000088L, 0x4000000000000L, 0x40000000001000L, 0x220508511c8L, 0xc05600c003000800L, false, 0, 0x0L), 4), 1111699); - - // gentest-5238 - assertEqual(perft(new Board(0x200e043840900L, 0x4100000000000040L, 0x10000010010000L, 0x8000000000000088L, 0x800000000000000L, 0x800000001000L, 0x1000020508511c8L, 0xc81280c003000800L, true, 0, 0x0L), 4), 750929); - - // gentest-5239 - assertEqual(perft(new Board(0x200e043840900L, 0x4100000000200000L, 0x10000010010000L, 0x8000000000000081L, 0x800000000000000L, 0x40000000001000L, 0x100002050a51181L, 0xc85200c003000800L, false, 0, 0x0L), 4), 1790842); - - // gentest-5240 - assertEqual(perft(new Board(0x200e043840100L, 0x4100000000200000L, 0x400090000L, 0x8000000000000081L, 0x800000000000008L, 0x40000000001000L, 0x100002040ad1181L, 0xc84200c403000008L, true, 0, 0x0L), 4), 153041); - - // gentest-5241 - assertEqual(perft(new Board(0x200e043840100L, 0x4100000080000000L, 0x1000000090000L, 0x8000000000000081L, 0x800000000000000L, 0x40000000000008L, 0x1000020c08d0189L, 0xc84300c003000000L, false, 0, 0x0L), 4), 947382); - - // gentest-5242 - assertEqual(perft(new Board(0x200e043840100L, 0x4100000080000000L, 0x1000000080004L, 0x8000000000000081L, 0x8000000L, 0x800000000008L, 0x1000020c08c018dL, 0xc00380c00b000000L, true, 0, 0x0L), 4), 679545); - - // gentest-5243 - assertEqual(perft(new Board(0x200e047800100L, 0x4100000080000000L, 0x1000020080000L, 0x8000000000000081L, 0x40000000000000L, 0x800000000008L, 0x1000020e4880189L, 0xc04380c003000000L, false, 0, 0x0L), 4), 927833); - - // gentest-5244 - assertEqual(perft(new Board(0x200e047800100L, 0x4100000080000000L, 0x200000020080000L, 0x8000000000000021L, 0x4000000000000L, 0x800000000008L, 0x1000020e4880129L, 0xc20680c003000000L, true, 0, 0x0L), 4), 808322); - - // gentest-5245 - assertEqual(perft(new Board(0x200e047800100L, 0x4100000080000000L, 0x200080000080000L, 0x8000000000000021L, 0x40000000000000L, 0x800000000008L, 0x1000820c4880129L, 0xc24280c003000000L, false, 0, 0x0L), 4), 769593); - - // gentest-5246 - assertEqual(perft(new Board(0x2e047800100L, 0x4100000080000000L, 0x210000000080000L, 0x80000000000021L, 0x40000000000000L, 0x800000000008L, 0x1100020c4880129L, 0x42c082c003000000L, true, 0, 0x0L), 4), 703438); - - // gentest-5247 - assertEqual(perft(new Board(0x2e046810100L, 0x4100000080000000L, 0x210000000001000L, 0x80000000200001L, 0x40000000000000L, 0x800000000008L, 0x1100020c4a01109L, 0x42c082c002010000L, false, 0, 0x0L), 4), 500496); - - // gentest-5248 - assertEqual(perft(new Board(0x2a046810100L, 0x100200080000000L, 0x210000000001000L, 0x80000000200001L, 0x40000000000000L, 0x800000000008L, 0x11000a084a01109L, 0x2c0a20042010000L, true, 0, 0x0L), 4), 711650); - - // gentest-5249 - assertEqual(perft(new Board(0x2a046810100L, 0x1100000080000000L, 0x210000000000020L, 0x80000000200001L, 0x40000000000000L, 0x800000000004L, 0x11000a084a00125L, 0x12c0820042010000L, false, 0, 0x0L), 4), 594848); - - // gentest-5250 - assertEqual(perft(new Board(0x2a046810100L, 0x140000080000000L, 0x210000000000020L, 0x80000000200001L, 0x200L, 0x800000000008L, 0x11000a084a00129L, 0x2c0820042010200L, true, 0, 0x0L), 4), 610219); - - // gentest-5251 - assertEqual(perft(new Board(0x2a046810100L, 0x140000080000000L, 0x210000000000020L, 0x80000000000801L, 0x8000000L, 0x800000000008L, 0x11000a084800929L, 0x2c082004a010000L, false, 0, 0x0L), 4), 867262); - - // gentest-5252 - assertEqual(perft(new Board(0x2a044830100L, 0x140000080000000L, 0x210000000000020L, 0x80000000000801L, 0x800000000L, 0x800000000400L, 0x11000a084800d21L, 0x2c0820840030000L, true, 0, 0x0L), 4), 254125); - - // gentest-5253 - assertEqual(perft(new Board(0x2a044830100L, 0x140000000200000L, 0x210000000000020L, 0x80000000000801L, 0x20000000000000L, 0x800000000002L, 0x11000a004a00923L, 0x2e0820040030000L, false, 0, 0x0L), 4), 1105721); - - // gentest-5254 - assertEqual(perft(new Board(0x22044830100L, 0x140000000200000L, 0x10000000088000L, 0x80000000000801L, 0x8000000000L, 0x800000000002L, 0x110002004a80903L, 0xc0828040038000L, true, 0, 0x0L), 4), 658683); - - // gentest-5255 - assertEqual(perft(new Board(0x22044020100L, 0x140000000200000L, 0x1000090000L, 0x80000000000801L, 0x8000000000L, 0x800000000002L, 0x100002044290903L, 0xc0829000020000L, false, 0, 0x0L), 4), 747147); - - // gentest-5256 - assertEqual(perft(new Board(0x22044020100L, 0x140000000200000L, 0x98000L, 0x80000000000401L, 0x4000000000L, 0x800000000002L, 0x100002044290503L, 0xc0824000028000L, true, 0, 0x0L), 4), 670460); - - // gentest-5257 - assertEqual(perft(new Board(0x220044020100L, 0x140000000200000L, 0x80000088000L, 0x80000000000401L, 0x800L, 0x800000000002L, 0x100280044280503L, 0xc0820000028800L, false, 0, 0x0L), 4), 776825); - - // gentest-5258 - assertEqual(perft(new Board(0x220044020100L, 0x140000000000000L, 0x80008080000L, 0x80000000000401L, 0x800L, 0x800000000002L, 0x100280044080503L, 0xc0820008020800L, true, 0, 0x0L), 4), 709254); - - // gentest-5259 - assertEqual(perft(new Board(0x200244020100L, 0x140000000000000L, 0x1008080000L, 0x80000000040001L, 0x800L, 0x800000000002L, 0x1002010440c0103L, 0xc0800208020800L, false, 0, 0x0L), 4), 500163); - - // gentest-5260 - assertEqual(perft(new Board(0x200046000300L, 0x140000000000000L, 0x8088000L, 0x80000000040001L, 0x800L, 0x800000000002L, 0x1002000440c8103L, 0xc080000a000a00L, true, 0, 0x0L), 4), 590102); - - // gentest-5261 - assertEqual(perft(new Board(0x200046000300L, 0x140000000000000L, 0x4000000180000L, 0x80000000000005L, 0x800L, 0x800000000002L, 0x104200044080107L, 0xc0800002100a00L, false, 0, 0x0L), 4), 588662); - - // gentest-5262 - assertEqual(perft(new Board(0x200046000300L, 0x100000000000000L, 0x4002000000040L, 0x80000000000005L, 0x800L, 0x800000000002L, 0x104202044000107L, 0x80800002000a40L, true, 0, 0x0L), 4), 941651); - - // gentest-5263 - assertEqual(perft(new Board(0x200046010000L, 0x100000000000001L, 0x4000000000440L, 0x80000000000004L, 0x800L, 0x800000000002L, 0x104200044010406L, 0x80800002000841L, false, 0, 0x0L), 4), 876176); - - // gentest-5264 - assertEqual(perft(new Board(0x200047000000L, 0x100000000000001L, 0x2004000000000400L, 0x80000000000004L, 0x800L, 0x800000000002L, 0x104200045000406L, 0x2080800002000801L, true, 0, 0x0L), 4), 654713); - - // gentest-5265 - assertEqual(perft(new Board(0x200047000000L, 0x100000000000001L, 0x2004000000020000L, 0x80000000000020L, 0x80000000000L, 0x800000000002L, 0x104200045020022L, 0x2080880002000001L, false, 0, 0x0L), 4), 600349); - - // gentest-5266 - assertEqual(perft(new Board(0x200047000000L, 0x100000000000400L, 0x2000020000020000L, 0x80000000000020L, 0x10000000000L, 0x800000000002L, 0x100220045020022L, 0x2080810002000400L, true, 0, 0x0L), 4), 578637); - - // gentest-5267 - assertEqual(perft(new Board(0x200046000000L, 0x100000000000400L, 0x2000020000000100L, 0x80000000000020L, 0x1000000L, 0x800000000004L, 0x100220044000124L, 0x2080800003000400L, false, 0, 0x0L), 4), 583521); - - // gentest-5268 - assertEqual(perft(new Board(0x200046000000L, 0x100000000000400L, 0x2000000000100100L, 0x2000000000020L, 0x1000000L, 0x400000000004L, 0x100200044100124L, 0x2002400003000400L, true, 0, 0x0L), 4), 880676); - - // gentest-5269 - assertEqual(perft(new Board(0x200046000000L, 0x100000000000001L, 0x2000000000100100L, 0x2000000000020L, 0x1000000L, 0x400000001000L, 0x100200044101120L, 0x2002400003000001L, false, 0, 0x0L), 4), 891351); - - // gentest-5270 - assertEqual(perft(new Board(0x200046000000L, 0x400L, 0x2000000000100100L, 0x2000000000004L, 0x100000000000000L, 0x400000001000L, 0x200044101104L, 0x2102400002000400L, true, 0, 0x0L), 4), 891855); - - // gentest-5271 - assertEqual(perft(new Board(0x200046000000L, 0x400L, 0x80000100100L, 0x2000000000020L, 0x100000000000000L, 0x400000080000L, 0x200044180120L, 0x102480002000400L, false, 0, 0x0L), 4), 1169944); - - // gentest-5272 - assertEqual(perft(new Board(0x200046000000L, 0x100000L, 0x1000000100L, 0x2000020000000L, 0x100000000000000L, 0x400000080000L, 0x200064080100L, 0x102401002100000L, true, 0, 0x0L), 4), 445085); - - // gentest-5273 - assertEqual(perft(new Board(0x200046000000L, 0x100000L, 0x1000000002L, 0x2000008000000L, 0x100000000000000L, 0x800000080000L, 0x20004c080002L, 0x102801002100000L, false, 0, 0x0L), 4), 407315); - - // gentest-5274 - assertEqual(perft(new Board(0x200046000000L, 0x100000L, 0x400002L, 0x40000010000000L, 0x100000000000000L, 0x800000080000L, 0x200054080002L, 0x140800002500000L, true, 0, 0x0L), 4), 529160); - - // gentest-5275 - assertEqual(perft(new Board(0x200046000000L, 0x100000L, 0x80000000002L, 0x40000010000000L, 0x100000000000000L, 0x800000080000L, 0x200054080002L, 0x140880002100000L, false, 0, 0x0L), 4), 576795); - - // gentest-5276 - assertEqual(perft(new Board(0x200046000000L, 0x100000L, 0x8002L, 0x40000010000000L, 0x1000000L, 0x800000000800L, 0x200054000802L, 0x40800003108000L, true, 0, 0x0L), 4), 495611); - - // gentest-5277 - assertEqual(perft(new Board(0x200442000000L, 0x0L, 0x8002L, 0x40000010000000L, 0x1000000L, 0x80000000100000L, 0x200450100002L, 0xc0000003008000L, false, 0, 0x0L), 4), 299406); - - // gentest-5278 - assertEqual(perft(new Board(0x20000442000000L, 0x0L, 0x8002L, 0x40000010000000L, 0x1L, 0x800000100000L, 0x20000450100002L, 0x40800002008001L, true, 0, 0x0L), 4), 364760); - - // gentest-5279 - assertEqual(perft(new Board(0x20000442000000L, 0x0L, 0x80000000002L, 0x40000004000000L, 0x1L, 0x800000000800L, 0x20000444000802L, 0x40880002000001L, false, 0, 0x0L), 4), 460493); - - // gentest-5280 - assertEqual(perft(new Board(0x20000442000000L, 0x0L, 0x80000000002L, 0x40000000000400L, 0x1000L, 0x800000000800L, 0x20000440000c02L, 0x40880002001000L, true, 0, 0x0L), 4), 23945); - - // gentest-5281 - assertEqual(perft(new Board(0x20000442000000L, 0x0L, 0x20000002L, 0x40000000000400L, 0x0L, 0x800000002000L, 0x20000440002402L, 0x40800022000000L, false, 0, 0x0L), 4), 139935); - - // gentest-5282 - assertEqual(perft(new Board(0x20000442000000L, 0x0L, 0x200000000000002L, 0x40000000000004L, 0x0L, 0x4000002000L, 0x20000440002006L, 0x240004002000000L, true, 0, 0x0L), 4), 218506); - - // gentest-5283 - assertEqual(perft(new Board(0x20000442000000L, 0x0L, 0x200000010000000L, 0x4000000000000040L, 0x0L, 0x4000002000L, 0x20000450002040L, 0x4200004002000000L, false, 0, 0x0L), 4), 381855); - - // gentest-5284 - assertEqual(perft(new Board(0x20040042000000L, 0x0L, 0x10400000L, 0x1000000000000040L, 0x0L, 0x4000002000L, 0x20040050002040L, 0x1000004002400000L, true, 0, 0x0L), 4), 81503); - - // gentest-5285 - assertEqual(perft(new Board(0x24000042000000L, 0x0L, 0x10400000L, 0x100000000000040L, 0x0L, 0x4000001000L, 0x24000050001040L, 0x100004002400000L, false, 0, 0x0L), 4), 755103); - - // gentest-5286 - assertEqual(perft(new Board(0x24000042000000L, 0x0L, 0x8000002000000000L, 0x100000000000040L, 0x0L, 0x4000001000L, 0x24002040001040L, 0x8100004002000000L, true, 0, 0x0L), 4), 578838); - - // gentest-5287 - assertEqual(perft(new Board(0x20000042000000L, 0x0L, 0x3000000000L, 0x100000000000004L, 0x400000000000000L, 0x4000001000L, 0x420002040001004L, 0x100005002000000L, false, 0, 0x0L), 4), 1330277); - - // gentest-5288 - assertEqual(perft(new Board(0x20000042000000L, 0x0L, 0x3000000000L, 0x1000004L, 0x4000000L, 0x80001000L, 0x20002044001004L, 0x1083000000L, true, 0, 0x0L), 4), 1065045); - - // gentest-5289 - assertEqual(perft(new Board(0x20000042000000L, 0x0L, 0x8000002000000000L, 0x1000400L, 0x100000000000L, 0x80001000L, 0x20102040001400L, 0x8000000083000000L, false, 0, 0x0L), 4), 663792); - - // gentest-5290 - assertEqual(perft(new Board(0x20000042000000L, 0x0L, 0x8000002000000000L, 0x4040000000000L, 0x100000000000L, 0x80001000L, 0x20142040001000L, 0x8004000082000000L, true, 0, 0x0L), 4), 602333); - - // gentest-5291 - assertEqual(perft(new Board(0x20000042000000L, 0x0L, 0x10000200L, 0x4040000000000L, 0x4000000L, 0x80001000L, 0x20040054001000L, 0x4000082000200L, false, 0, 0x0L), 4), 825571); - - // gentest-5292 - assertEqual(perft(new Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4800000000000L, 0x4000000L, 0x40001000L, 0x20800014001000L, 0x4000042000200L, true, 0, 0x0L), 4), 812075); - - // gentest-5293 - assertEqual(perft(new Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4800000000000L, 0x100000000L, 0x20001000L, 0x20800110001000L, 0x4000022000200L, false, 0, 0x0L), 4), 1193342); - - // gentest-5294 - assertEqual(perft(new Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4200000000000L, 0x100000000L, 0x80001000L, 0x20200110001000L, 0x4000082000200L, true, 0, 0x0L), 4), 1145095); - - // gentest-5295 - assertEqual(perft(new Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4000020000000L, 0x100000000L, 0x40001000L, 0x20000130001000L, 0x4000042000200L, false, 0, 0x0L), 4), 121860); - - // gentest-5296 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5297 - assertEqual(perft(new Board(0x7f00800008f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000800L, 0x1000000000000010L, 0x8fff7L, 0xff7f008000000000L, false, 0, 0x8100000000000081L), 4), 419311); - - // gentest-5298 - assertEqual(perft(new Board(0x7900860008f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000100000L, 0x1000000000000010L, 0x18f7f7L, 0xff79008600000000L, true, 0, 0x8100000000000081L), 4), 719243); - - // gentest-5299 - assertEqual(perft(new Board(0x79008680483700L, 0x4200000000000042L, 0x2400000000000024L, 0x180000000000081L, 0x800000000100000L, 0x1000000000000010L, 0x805837f7L, 0x7ff9008600000000L, false, 0, 0x100000000000081L), 4), 634916); - - // gentest-5300 - assertEqual(perft(new Board(0x79008280483700L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000400000000L, 0x1000000000000010L, 0x4804837f7L, 0xfd79018200000000L, true, 0, 0x100000000000081L), 4), 1046990); - - // gentest-5301 - assertEqual(perft(new Board(0x59208280483700L, 0x4000010000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x804000000000000L, 0x1000000000000010L, 0x4000080c837b7L, 0xfd59218200000000L, false, 0, 0x100000000000081L), 4), 667856); - - // gentest-5302 - assertEqual(perft(new Board(0x51288280483700L, 0x4000014000000002L, 0x2400000000000024L, 0x8200000000000081L, 0x804000000000000L, 0x1000000000000010L, 0x40040804837b7L, 0xfe51298200000000L, true, 0, 0x81L), 4), 1079349); - - // gentest-5303 - assertEqual(perft(new Board(0x51288280582700L, 0x4000010010000002L, 0x2000000040000024L, 0x8200000000000081L, 0x804000000000000L, 0x1000000000000010L, 0x40000905827b7L, 0xfa51298240000000L, false, 0, 0x81L), 4), 1140401); - - // gentest-5304 - assertEqual(perft(new Board(0x11688284582300L, 0x4000010010000002L, 0x2000000040000024L, 0x8200000000000081L, 0x4000000000000L, 0x1000000000000010L, 0x945823b7L, 0xf215698240000000L, true, 0, 0x81L), 4), 898038); - - // gentest-5305 - assertEqual(perft(new Board(0x1168828e502100L, 0x4000000410000002L, 0x2000000040000024L, 0x8200000000000081L, 0x4000000000000L, 0x1000000000000010L, 0x9e5021b7L, 0xf215688640000000L, false, 0, 0x81L), 4), 1321161); - - // gentest-5306 - assertEqual(perft(new Board(0x1168868c502100L, 0x4000000010000002L, 0x2008000000000024L, 0x8200000000000081L, 0x40000000000L, 0x1000000000000010L, 0x49c5021b7L, 0xf2196c8200000000L, true, 0, 0x81L), 4), 1004309); - - // gentest-5307 - assertEqual(perft(new Board(0x1168868c502100L, 0x800010010000L, 0x2008000000000024L, 0x8200000000000041L, 0x40000000000L, 0x1000000000000010L, 0x49c512175L, 0xb219ec8200000000L, false, 0, 0x1L), 4), 973239); - - // gentest-5308 - assertEqual(perft(new Board(0x11688e84502100L, 0x800010010000L, 0x2008000000000024L, 0x8100000000000041L, 0x40000000000L, 0x20000000000010L, 0xc94512175L, 0xa139ec8200000000L, true, 0, 0x1L), 4), 771397); - - // gentest-5309 - assertEqual(perft(new Board(0x10698e84502100L, 0x800000050000L, 0x2008000000001004L, 0x8100000000000041L, 0x40000000000L, 0x20000000000010L, 0xc84553155L, 0xa138ed8200000000L, false, 0, 0x1L), 4), 1047073); - - // gentest-5310 - assertEqual(perft(new Board(0x10698e84502100L, 0x800000050000L, 0x240000000000000cL, 0x8001000000000041L, 0x40000000000L, 0x20000000000010L, 0xc8455215dL, 0xa431ed8200000000L, true, 0, 0x1L), 4), 1105171); - - // gentest-5311 - assertEqual(perft(new Board(0x10698c84502100L, 0x4000000200010000L, 0x240000000000000cL, 0x8001000000000041L, 0x40000000000L, 0x20000000000800L, 0xe8451294dL, 0xe4316d8000000000L, false, 0, 0x0L), 4), 909645); - - // gentest-5312 - assertEqual(perft(new Board(0x10492c84502100L, 0x4000000200010000L, 0x2400008000000004L, 0x8001000000000041L, 0x100000000000000L, 0x20000000000800L, 0x8e84512945L, 0xe531492000000000L, true, 0, 0x0L), 4), 642093); - - // gentest-5313 - assertEqual(perft(new Board(0x10492c84502100L, 0x4000000200010000L, 0x2400000000001200L, 0x8001000000000041L, 0x100000000000000L, 0x40000000000800L, 0xe84513b41L, 0xe551492000000000L, false, 0, 0x0L), 4), 214474); - - // gentest-5314 - assertEqual(perft(new Board(0x10016c84502100L, 0x4000080000010000L, 0x2400000000001200L, 0x8001000000000041L, 0x100000000000000L, 0x80000000000800L, 0x80c84513b41L, 0xe591016000000000L, true, 0, 0x0L), 4), 1188227); - - // gentest-5315 - assertEqual(perft(new Board(0x57884700100L, 0x4000080000010000L, 0x2400000000001200L, 0x8001000000000041L, 0x100000000000000L, 0x80000000000800L, 0xc0884711b41L, 0xe581017000000000L, false, 0, 0x0L), 4), 1251285); - - // gentest-5316 - assertEqual(perft(new Board(0x57884700100L, 0x4000080000010000L, 0x2400000000001200L, 0x8004000000000041L, 0x100000000000000L, 0x80000000080000L, 0xc0884791341L, 0xe584017000000000L, true, 0, 0x0L), 4), 1140892); - - // gentest-5317 - assertEqual(perft(new Board(0x57884700100L, 0x4000080000010000L, 0x2400000008001000L, 0x8001000000000050L, 0x100000000000000L, 0x80000000080000L, 0xc088c791150L, 0xe581017000000000L, false, 0, 0x0L), 4), 1023811); - - // gentest-5318 - assertEqual(perft(new Board(0x558a4700100L, 0x4000080000010000L, 0x2400000000001001L, 0x8002000000000050L, 0x100000000000000L, 0x80000000080000L, 0xc0884791151L, 0xe582015020000000L, true, 0, 0x0L), 4), 1436076); - - // gentest-5319 - assertEqual(perft(new Board(0x20158a4700100L, 0x10002000010000L, 0x2400000000001001L, 0x8000000000000050L, 0x100000000000000L, 0x80000000080000L, 0x2002884791151L, 0xa590015020000000L, false, 0, 0x0L), 4), 890825); - - // gentest-5320 - assertEqual(perft(new Board(0x15884700100L, 0x10002000010000L, 0x2202000000001001L, 0x8000000000000050L, 0x100000000000000L, 0x80000000080000L, 0x200002884391151L, 0xa192015000400000L, true, 0, 0x0L), 4), 695804); - - // gentest-5321 - assertEqual(perft(new Board(0x15884700100L, 0x400002000010000L, 0x2202000000000401L, 0x8000000000000050L, 0x100000000000000L, 0x80000000080000L, 0x200002884390551L, 0xa582015000400000L, false, 0, 0x0L), 4), 780083); - - // gentest-5322 - assertEqual(perft(new Board(0x11884700100L, 0x400002000010000L, 0x202080000000401L, 0x8000000000000050L, 0x100000000000000L, 0x80000000001000L, 0x200002804311551L, 0x8582091080400000L, true, 0, 0x0L), 4), 629215); - - // gentest-5323 - assertEqual(perft(new Board(0x1984700100L, 0x400002200000000L, 0x202080000000401L, 0x8000000000000030L, 0x100000000000000L, 0x80000000001000L, 0x200002a04301531L, 0x8582081180400000L, false, 0, 0x0L), 4), 980245); - - // gentest-5324 - assertEqual(perft(new Board(0x994304100L, 0x400002200000000L, 0x202080000080001L, 0x8000000000000030L, 0x100000000000000L, 0x80000000001000L, 0x200002a04381131L, 0x8582080190004000L, true, 0, 0x0L), 4), 1838515); - - // gentest-5325 - assertEqual(perft(new Board(0x994304100L, 0x404002000000000L, 0x202000008080000L, 0x8000000000000030L, 0x100000000000000L, 0x80000000001000L, 0x400280c381130L, 0x8782000190004000L, false, 0, 0x0L), 4), 1017435); - - // gentest-5326 - assertEqual(perft(new Board(0x994304100L, 0x404002000000000L, 0x300000008080000L, 0x8000000000000024L, 0x1000000000000L, 0x80000000001000L, 0x400280c381124L, 0x8781000190004000L, true, 0, 0x0L), 4), 1785976); - - // gentest-5327 - assertEqual(perft(new Board(0x994300100L, 0x404800000000000L, 0x300000008080000L, 0x8000000000000064L, 0x1000000000000L, 0x80000000000800L, 0x480080c380924L, 0x8781000190000040L, false, 0, 0x0L), 4), 1715198); - - // gentest-5328 - assertEqual(perft(new Board(0x984300100L, 0x404000000000000L, 0x300000018000000L, 0x8000000000000064L, 0x20000000000L, 0x800000000800L, 0x400081c300924L, 0x8700820180000040L, true, 0, 0x0L), 4), 2517090); - - // gentest-5329 - assertEqual(perft(new Board(0x9a4100100L, 0x404000000000000L, 0x300000010000200L, 0x8000000000000024L, 0x20000000000L, 0x800000000800L, 0x4000834100b04L, 0x8700820180000020L, false, 0, 0x0L), 4), 1640862); - - // gentest-5330 - assertEqual(perft(new Board(0x9a4100100L, 0x1400000000000000L, 0x300000010000200L, 0x8000000000000084L, 0x20000000000L, 0x8000000800L, 0x1000000834100b04L, 0x8700028180000080L, true, 0, 0x0L), 4), 1985018); - - // gentest-5331 - assertEqual(perft(new Board(0x1a4100100L, 0x1000080000000000L, 0x300000010000200L, 0x8000000000000082L, 0x20000000000L, 0x8000000800L, 0x1000000034100b02L, 0x83000a8180000080L, false, 0, 0x0L), 4), 1836259); - - // gentest-5332 - assertEqual(perft(new Board(0x1a4100100L, 0x1000080000000000L, 0x300000010000000L, 0x8000000000000006L, 0x200L, 0x8000080000L, 0x1000000034180102L, 0x8300088180000204L, true, 0, 0x0L), 4), 672533); - - // gentest-5333 - assertEqual(perft(new Board(0x1b4000100L, 0x1000080000000000L, 0x300002000000000L, 0x8000000000000006L, 0x20000000000L, 0x8000080000L, 0x1000002034080102L, 0x83000a8180000004L, false, 0, 0x0L), 4), 878850); - - // gentest-5334 - assertEqual(perft(new Board(0x1b4000100L, 0x1000080000000000L, 0x100002000000000L, 0x8200000000000020L, 0x40L, 0x8000080000L, 0x1200002034080100L, 0x8100088180000060L, true, 0, 0x0L), 4), 1009739); - - // gentest-5335 - assertEqual(perft(new Board(0x1b4000100L, 0x80000000000L, 0x100002000000000L, 0x8000000000000006L, 0x40L, 0x8000080000L, 0x82034080102L, 0x8100008180000044L, false, 0, 0x0L), 4), 760163); - - // gentest-5336 - assertEqual(perft(new Board(0x1b4000100L, 0x80000000000L, 0x100002000000000L, 0x8000000000000081L, 0x400000000L, 0x8000080000L, 0x82034080101L, 0x8100008580000080L, true, 0, 0x0L), 4), 784700); - - // gentest-5337 - assertEqual(perft(new Board(0x11a4000100L, 0x80000000000L, 0x100002000000000L, 0x2000000000000080L, 0x400000000L, 0x8000080000L, 0x83024080180L, 0x2100008580000000L, false, 0, 0x0L), 4), 723585); - - // gentest-5338 - assertEqual(perft(new Board(0x1a4000100L, 0x0L, 0x100002000000000L, 0x2000000000000080L, 0x1000000000L, 0x8000000400L, 0x2024000580L, 0x2100009180000000L, true, 0, 0x0L), 4), 879366); - - // gentest-5339 - assertEqual(perft(new Board(0x1a5000000L, 0x0L, 0x100002000000000L, 0x2000000000000008L, 0x100000000000L, 0x8000000400L, 0x2025000408L, 0x2100108180000000L, false, 0, 0x0L), 4), 801276); - - // gentest-5340 - assertEqual(perft(new Board(0x1a4000000L, 0x0L, 0x100002000000000L, 0x2000080000000000L, 0x1000000L, 0x8000000400L, 0x82024000400L, 0x2100008181000000L, true, 0, 0x0L), 4), 109122); - - // gentest-5341 - assertEqual(perft(new Board(0x1a4000000L, 0x0L, 0x100002000000000L, 0x4000010000000000L, 0x1000000L, 0x8000000200L, 0x12024000200L, 0x4100008181000000L, false, 0, 0x0L), 4), 368122); - - // gentest-5342 - assertEqual(perft(new Board(0x1a4000000L, 0x0L, 0x100002000000000L, 0x14000000000L, 0x8000000000000L, 0x8000000002L, 0x12024000002L, 0x10800c180000000L, true, 0, 0x0L), 4), 598996); - - // gentest-5343 - assertEqual(perft(new Board(0x3a0000000L, 0x0L, 0x100000000080000L, 0x10000000000L, 0x8000000000000L, 0x8000000002L, 0x10220080002L, 0x108008180000000L, false, 0, 0x0L), 4), 353415); - - // gentest-5344 - assertEqual(perft(new Board(0x2a1000000L, 0x0L, 0x100400000000000L, 0x10000000000L, 0x8000000000000L, 0x800000000002L, 0x410220000002L, 0x108800081000000L, true, 0, 0x0L), 4), 254566); - - // gentest-5345 - assertEqual(perft(new Board(0x2281000000L, 0x0L, 0x80000000200000L, 0x10000000000L, 0x8000000000000L, 0x800000000002L, 0x80012200000002L, 0x8800081200000L, false, 0, 0x0L), 4), 65327); - - // gentest-5346 - assertEqual(perft(new Board(0x2281000000L, 0x0L, 0x440000000000L, 0x10000000000L, 0x1000000000000L, 0x800000000002L, 0x412200000002L, 0x1840081000000L, true, 0, 0x0L), 4), 179829); - - // gentest-5347 - assertEqual(perft(new Board(0x42081000000L, 0x0L, 0x0L, 0x10000000000L, 0x1000000000000L, 0x8000000002L, 0x52000000002L, 0x1008081000000L, false, 0, 0x0L), 4), 50770); - - // gentest-5348 - assertEqual(perft(new Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x2000000000000L, 0x8000000002L, 0x240000000002L, 0x2008081000000L, true, 0, 0x0L), 4), 11829); - - // gentest-5349 - assertEqual(perft(new Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x1000000000000L, 0x8000000200L, 0x240000000200L, 0x1008081000000L, false, 0, 0x0L), 4), 25254); - - // gentest-5350 - assertEqual(perft(new Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x1000000000000L, 0x20010000L, 0x240000010000L, 0x10000a1000000L, true, 0, 0x0L), 4), 21218); - - // gentest-5351 - assertEqual(perft(new Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x8000000000000L, 0x20000200L, 0x240000000200L, 0x80000a1000000L, false, 0, 0x0L), 4), 45576); - - // gentest-5352 - assertEqual(perft(new Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x400000000000000L, 0x40040000L, 0x240000040000L, 0x4000000c1000000L, true, 0, 0x0L), 4), 43035); - - // gentest-5353 - assertEqual(perft(new Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x100000000000L, 0x40000002L, 0x240000000002L, 0x1000c1000000L, false, 0, 0x0L), 4), 26321); - - // gentest-5354 - assertEqual(perft(new Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x4000000000000000L, 0x40000200L, 0x240000000200L, 0x40000000c1000000L, true, 0, 0x0L), 4), 34885); - - // gentest-5355 - assertEqual(perft(new Board(0x240080010000L, 0x0L, 0x0L, 0x0L, 0x4000000000000000L, 0x40040000L, 0x240000040000L, 0x40000000c0010000L, false, 0, 0x0L), 4), 36849); - - // gentest-5356 - assertEqual(perft(new Board(0x240080010000L, 0x0L, 0x0L, 0x0L, 0x8000L, 0x42000000L, 0x240002000000L, 0xc0018000L, true, 0, 0x0L), 4), 44007); - - // gentest-5357 - assertEqual(perft(new Board(0x20040080010000L, 0x0L, 0x0L, 0x0L, 0x4000000000000L, 0x40020000L, 0x20040000020000L, 0x40000c0010000L, false, 0, 0x0L), 4), 64315); - - // gentest-5358 - assertEqual(perft(new Board(0x40000810000L, 0x0L, 0x0L, 0x0L, 0x2800000000000000L, 0x40020000L, 0x2000040000020000L, 0x800000040810000L, true, 0, 0x0L), 4), 212340); - - // gentest-5359 - assertEqual(perft(new Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x800000000200000L, 0x80010000L, 0x40000210000L, 0x800000080800000L, false, 0, 0x0L), 4), 149601); - - // gentest-5360 - assertEqual(perft(new Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x800000000400000L, 0x800000010000L, 0x40000410000L, 0x800800000800000L, true, 0, 0x0L), 4), 212711); - - // gentest-5361 - assertEqual(perft(new Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x20000000010L, 0x800001000000L, 0x40001000010L, 0x820000800000L, false, 0, 0x0L), 4), 151953); - - // gentest-5362 - assertEqual(perft(new Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x280L, 0x8001000000L, 0x40001000080L, 0x8000800200L, true, 0, 0x0L), 4), 106915); - - // gentest-5363 - assertEqual(perft(new Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x200L, 0x800001000000L, 0x40001000200L, 0x800000800000L, false, 0, 0x0L), 4), 22611); - - // gentest-5364 - assertEqual(perft(new Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x400L, 0x800001000000L, 0x40001000400L, 0x800000800000L, true, 0, 0x0L), 4), 16661); - - // gentest-5365 - assertEqual(perft(new Board(0x40000008000L, 0x0L, 0x0L, 0x0L, 0x1000L, 0x800200000000L, 0x40200001000L, 0x800000008000L, false, 0, 0x0L), 4), 59187); - - // gentest-5366 - assertEqual(perft(new Board(0x40000008000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x240000000L, 0x40200000000L, 0x40008000L, true, 0, 0x0L), 4), 9819); - - // gentest-5367 - assertEqual(perft(new Board(0x40000008000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x220000000L, 0x40200000000L, 0x20008000L, false, 0, 0x0L), 4), 9918); - - // gentest-5368 - assertEqual(perft(new Board(0x40000000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x120000000L, 0x40100000000L, 0x20400000L, true, 0, 0x0L), 4), 7647); - - // gentest-5369 - assertEqual(perft(new Board(0x40000000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x420000000L, 0x40400000000L, 0x20001000L, false, 0, 0x0L), 4), 8928); - - // gentest-5370 - assertEqual(perft(new Board(0x40000000000L, 0x2000000000L, 0x0L, 0x0L, 0x0L, 0x22000000L, 0x40002000000L, 0x2020000000L, true, 0, 0x0L), 4), 14278); - - // gentest-5371 - assertEqual(perft(new Board(0x4000000000000L, 0x2000000000L, 0x0L, 0x0L, 0x0L, 0x410000L, 0x4000000010000L, 0x2000400000L, false, 0, 0x0L), 4), 23038); - - // gentest-5372 - assertEqual(perft(new Board(0x0L, 0x2000000000L, 0x0L, 0x0L, 0x400000000000000L, 0x80010000L, 0x400000000010000L, 0x2080000000L, true, 0, 0x0L), 4), 59963); - - // gentest-5373 - assertEqual(perft(new Board(0x0L, 0x800000000000L, 0x0L, 0x0L, 0x80000000000000L, 0x80010000L, 0x80000000010000L, 0x800080000000L, false, 0, 0x0L), 4), 19104); - - // gentest-5374 - assertEqual(perft(new Board(0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x0L, 0x40010000L, 0x10000L, 0x20000040000000L, true, 0, 0x0L), 4), 5992); - - // gentest-5375 - assertEqual(perft(new Board(0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x0L, 0x2200000000L, 0x200000000L, 0x20002000000000L, false, 0, 0x0L), 4), 8589); - - // gentest-5376 - assertEqual(perft(new Board(0x0L, 0x100000000000L, 0x0L, 0x0L, 0x0L, 0x2004000000L, 0x4000000L, 0x102000000000L, true, 0, 0x0L), 4), 8295); - - // gentest-5377 - assertEqual(perft(new Board(0x0L, 0x800000000000000L, 0x0L, 0x0L, 0x0L, 0x12000000000L, 0x10000000000L, 0x800002000000000L, false, 0, 0x0L), 4), 3568); - - // gentest-5378 - assertEqual(perft(new Board(0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x0L, 0x2400000000000L, 0x2000000000000L, 0x20400000000000L, true, 0, 0x0L), 4), 6786); - - // gentest-5379 - assertEqual(perft(new Board(0x0L, 0x1000000000L, 0x0L, 0x0L, 0x0L, 0x480000000000L, 0x80000000000L, 0x401000000000L, false, 0, 0x0L), 4), 7341); - - // gentest-5380 - assertEqual(perft(new Board(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40001000000000L, 0x1000000000L, 0x40000000000000L, true, 0, 0x0L), 4), 1994); - - // gentest-5381 - assertEqual(perft(new Board(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x500000000000L, 0x100000000000L, 0x400000000000L, false, 0, 0x0L), 4), 1344); - - // gentest-5382 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5383 - assertEqual(perft(new Board(0x7f80000010ef00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x90efbfL, 0xff7f800000000000L, false, 0, 0x8100000000000081L), 4), 357283); - - // gentest-5384 - assertEqual(perft(new Board(0x3e81400010ef00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000001000L, 0x1000000000000010L, 0x90ffb7L, 0xff3e814000000000L, true, 0, 0x8100000000000081L), 4), 317204); - - // gentest-5385 - assertEqual(perft(new Board(0x2e91400010ef00L, 0x4200000000840000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000040000000L, 0x1000000000000010L, 0x4094efb5L, 0xff2e914000000000L, false, 0, 0x8100000000000081L), 4), 1157565); - - // gentest-5386 - assertEqual(perft(new Board(0x2e91400010ef00L, 0x4200000000840000L, 0x400080000000024L, 0x8100000000000081L, 0x800008000000000L, 0x1000000000000010L, 0x800094efb5L, 0xdf2e994000000000L, true, 0, 0x8100000000000081L), 4), 969284); - - // gentest-5387 - assertEqual(perft(new Board(0x2e91000010ef00L, 0x4200000000840000L, 0x400000002000024L, 0x8100000000000081L, 0x800004000000000L, 0x1000000000000008L, 0x400094efadL, 0xdf2e910002000000L, false, 0, 0x8100000000000000L), 4), 1333820); - - // gentest-5388 - assertEqual(perft(new Board(0xeb1000010ef00L, 0x4200000000840000L, 0x400000002000024L, 0x180000000000082L, 0x800004000000000L, 0x1000000000000008L, 0x400094efaeL, 0x5f8eb10002000000L, true, 0, 0x100000000000000L), 4), 1225194); - - // gentest-5389 - assertEqual(perft(new Board(0xe91200010ef00L, 0x4200000000840000L, 0x400000002000024L, 0x180000000000082L, 0x800000000200000L, 0x1000000000000008L, 0xb4efaeL, 0x5f8e912002000000L, false, 0, 0x100000000000000L), 4), 1271536); - - // gentest-5390 - assertEqual(perft(new Board(0xe91200018e700L, 0x4200000000840000L, 0x400200000000024L, 0x180000000000082L, 0x800000000200000L, 0x1000000000000008L, 0xbce7aeL, 0x5f8eb12000000000L, true, 0, 0x100000000000000L), 4), 917717); - - // gentest-5391 - assertEqual(perft(new Board(0xe91200018e700L, 0x4200000200800000L, 0x400200000000820L, 0x180000000000082L, 0x800000000200000L, 0x10000000000008L, 0x200b8efaaL, 0x4f9eb12000000000L, false, 0, 0x0L), 4), 1301504); - - // gentest-5392 - assertEqual(perft(new Board(0xe01b00018e700L, 0x4200004200000000L, 0x400200000000820L, 0x180000000000082L, 0x800000000200000L, 0x10000000000008L, 0x420038efaaL, 0x4f9e21b000000000L, true, 0, 0x0L), 4), 1229887); - - // gentest-5393 - assertEqual(perft(new Board(0xa01a01018e700L, 0x4200004200000000L, 0x400200000000820L, 0x180000000000082L, 0x804000000000000L, 0x10000000000008L, 0x400420018efaaL, 0x4f9a21a010000000L, false, 0, 0x0L), 4), 1495399); - - // gentest-5394 - assertEqual(perft(new Board(0xa01a01038c700L, 0x4200004200000000L, 0x400000000040820L, 0x180000000000082L, 0x804000000000000L, 0x2000000000000008L, 0x400420038cfaaL, 0x6f8a01a010040000L, true, 0, 0x0L), 4), 2220165); - - // gentest-5395 - assertEqual(perft(new Board(0xa01a01138c600L, 0x4000004200000000L, 0x400000000040820L, 0x180000000000082L, 0x210000000000000L, 0x2000000000000008L, 0x20000420138ceaaL, 0x659a01a010040000L, false, 0, 0x0L), 4), 2405059); - - // gentest-5396 - assertEqual(perft(new Board(0xa01209538c200L, 0x4000004200000000L, 0x400000002000820L, 0x180000000000082L, 0x210000000000000L, 0x2000000000000008L, 0x20000420538caaaL, 0x659a012092000000L, true, 0, 0x0L), 4), 1874352); - - // gentest-5397 - assertEqual(perft(new Board(0x209209538c200L, 0x4000004200000000L, 0x400000002000820L, 0x180000000000082L, 0x10000000800000L, 0x2000000000000008L, 0x4205b8caaaL, 0x6592092092000000L, false, 0, 0x0L), 4), 1452909); - - // gentest-5398 - assertEqual(perft(new Board(0x20900a538c200L, 0x4000000210000000L, 0x400000002000820L, 0x180000000000082L, 0x20000000800000L, 0x2000000000000008L, 0x215b8caaaL, 0x65a20900a2000000L, true, 0, 0x0L), 4), 2131758); - - // gentest-5399 - assertEqual(perft(new Board(0x20900a538c200L, 0x4001000010000000L, 0x400000002000820L, 0x180000000000082L, 0x100000800000L, 0x2000000000000010L, 0x1000015b8cab2L, 0x65821900a2000000L, false, 0, 0x0L), 4), 1726082); - - // gentest-5400 - assertEqual(perft(new Board(0x20900a538c200L, 0x4001000010000000L, 0x400000002000820L, 0x180000000000088L, 0x200000800000L, 0x2000000000000010L, 0x1000015b8cab8L, 0x65822900a2000000L, true, 0, 0x0L), 4), 1841227); - - // gentest-5401 - assertEqual(perft(new Board(0x20900a538c200L, 0x4001000400000000L, 0x400000002000020L, 0x280000000000088L, 0x200000800000L, 0x2000000000000010L, 0x1000407b8c2b8L, 0x66822900a0000000L, false, 0, 0x0L), 4), 1682078); - - // gentest-5402 - assertEqual(perft(new Board(0x20801a538c200L, 0x4001010000000000L, 0x8000002000020L, 0x280000000000088L, 0x200000800000L, 0x2000000000000010L, 0x1010007b8c2b8L, 0x628a2801a0000000L, true, 0, 0x0L), 4), 1899913); - - // gentest-5403 - assertEqual(perft(new Board(0x20800a538c200L, 0x4001010000000000L, 0x1000000100000020L, 0x280000000000088L, 0x200040000000L, 0x2000000000000010L, 0x101014538c2b8L, 0x72822800a0000000L, false, 0, 0x0L), 4), 2636383); - - // gentest-5404 - assertEqual(perft(new Board(0x20800a538c200L, 0x1810000000000L, 0x1000000100000020L, 0x280000000000084L, 0x10000040000000L, 0x2000000000000010L, 0x101014538c2b4L, 0x32928800a0000000L, true, 0, 0x0L), 4), 1947841); - - // gentest-5405 - assertEqual(perft(new Board(0x20800a538c200L, 0x1810000000000L, 0x20000100000020L, 0x280000000000084L, 0x10008000000000L, 0x2000000000000800L, 0x101810538caa4L, 0x22b28800a0000000L, false, 0, 0x0L), 4), 2125489); - - // gentest-5406 - assertEqual(perft(new Board(0x20800e5388200L, 0x1810000000000L, 0x4000000100000020L, 0x240000000000084L, 0x10008000000000L, 0x2000000000000800L, 0x1018145388aa4L, 0x62528800a0000000L, true, 0, 0x0L), 4), 2094535); - - // gentest-5407 - assertEqual(perft(new Board(0x20800e5388200L, 0x1810000000000L, 0x100100000020L, 0x240000000000090L, 0x10008000000000L, 0x2000000000000800L, 0x1018145388ab0L, 0x22529800a0000000L, false, 0, 0x0L), 4), 2326571); - - // gentest-5408 - assertEqual(perft(new Board(0x20800e53a8000L, 0x1810000000000L, 0x100100000020L, 0x420000000000090L, 0x10008000000000L, 0x2000000000000800L, 0x10181453a88b0L, 0x24329800a0000000L, true, 0, 0x0L), 4), 1965576); - - // gentest-5409 - assertEqual(perft(new Board(0xa00e53a8000L, 0x400810000000000L, 0x100100000020L, 0x20000000000090L, 0x10001000000000L, 0x2000000000000800L, 0x4000111453a88b0L, 0x20309a00a0000000L, false, 0, 0x0L), 4), 1763958); - - // gentest-5410 - assertEqual(perft(new Board(0x802c53a8000L, 0x400810000000000L, 0x100000020L, 0x20000000000090L, 0x10100000000000L, 0x2000000000000800L, 0x4001101452a88b0L, 0x2030880280100000L, true, 0, 0x0L), 4), 240457); - - // gentest-5411 - assertEqual(perft(new Board(0x802c52a8000L, 0x400012000000000L, 0x100000020L, 0x20000000000090L, 0x10000000100000L, 0x2000000000000004L, 0x4000101453a80b4L, 0x2030082280000000L, false, 0, 0x0L), 4), 1651629); - - // gentest-5412 - assertEqual(perft(new Board(0x802c52a8000L, 0x400012000000000L, 0x100000020L, 0x20000000000090L, 0x200000001000L, 0x4000000000000004L, 0x4000101452a90b4L, 0x4020282280000000L, true, 0, 0x0L), 4), 1938365); - - // gentest-5413 - assertEqual(perft(new Board(0x802c52a8000L, 0x400012000000000L, 0x4800L, 0x20000000000090L, 0x200000001000L, 0x8000000000000004L, 0x4000100452ad894L, 0x8020282280000000L, false, 0, 0x0L), 4), 1778048); - - // gentest-5414 - assertEqual(perft(new Board(0x802c52a8000L, 0x400012000000000L, 0x820L, 0x80000000000090L, 0x10000000001000L, 0x8000000000000004L, 0x4000100452a98b4L, 0x8090082280000000L, true, 0, 0x0L), 4), 1476237); - - // gentest-5415 - assertEqual(perft(new Board(0x842852a8000L, 0x400012000000000L, 0x820L, 0x80000000000080L, 0x18L, 0x8000000000000004L, 0x4000140052a88acL, 0x8080082280000010L, false, 0, 0x0L), 4), 979404); - - // gentest-5416 - assertEqual(perft(new Board(0x842852a8000L, 0x400012000000000L, 0x20L, 0x8000000080L, 0x800L, 0x8000000000000004L, 0x4000140052a88a4L, 0x800008a280000000L, true, 0, 0x0L), 4), 362913); - - // gentest-5417 - assertEqual(perft(new Board(0x8428d228000L, 0x400012000000000L, 0x20L, 0x8000000080L, 0x100000L, 0x80000000000004L, 0x40001400d3280a4L, 0x8008a280000000L, false, 0, 0x0L), 4), 395273); - - // gentest-5418 - assertEqual(perft(new Board(0x8028d228000L, 0x400012000000000L, 0x20L, 0xc0L, 0x20000000L, 0x80000000000004L, 0x40001002d2280a4L, 0x80082280000040L, true, 0, 0x0L), 4), 428716); - - // gentest-5419 - assertEqual(perft(new Board(0x8028d228000L, 0x408800000000000L, 0x20L, 0xc0L, 0x20000000L, 0x80000000000004L, 0x40800002d2280a4L, 0x80880280000040L, false, 0, 0x0L), 4), 504671); - - // gentest-5420 - assertEqual(perft(new Board(0x8028d228000L, 0x428000000000000L, 0x20L, 0x4000000080L, 0x200000000000L, 0x80000000000004L, 0x40820000d2280a4L, 0xa0084280000000L, true, 0, 0x0L), 4), 486196); - - // gentest-5421 - assertEqual(perft(new Board(0x8008d228000L, 0x28020000000000L, 0x20L, 0x4000000080L, 0x400000000000L, 0x80000000000004L, 0x84200092280a4L, 0xa0084084000000L, false, 0, 0x0L), 4), 56133); - - // gentest-5422 - assertEqual(perft(new Board(0x8008d228000L, 0x2020020000000000L, 0x20L, 0x200000080L, 0x400000000000L, 0x8000000000000004L, 0x20004200092280a4L, 0x8020080284000000L, true, 0, 0x0L), 4), 442757); - - // gentest-5423 - assertEqual(perft(new Board(0x8008d228000L, 0x2020020000000000L, 0x20L, 0x1000000080L, 0x100000000000L, 0x8000000000000200L, 0x20001200092282a0L, 0x8020081084000000L, false, 0, 0x0L), 4), 582895); - - // gentest-5424 - assertEqual(perft(new Board(0x80089268000L, 0x2020020000000000L, 0x20L, 0x2000000080L, 0x100000000000L, 0x8000000000010000L, 0x20001200092380a0L, 0x8020082080040000L, true, 0, 0x0L), 4), 431773); - - // gentest-5425 - assertEqual(perft(new Board(0x80089268000L, 0x2020020000000000L, 0x4000000L, 0x400000080L, 0x10000000000000L, 0x8000000000010000L, 0x201002000d238080L, 0x8020080480040000L, false, 0, 0x0L), 4), 675779); - - // gentest-5426 - assertEqual(perft(new Board(0x89268000L, 0x2000024000000000L, 0x4000000L, 0x4000000000080L, 0x80000000000L, 0x8000000000010000L, 0x20000a000d238080L, 0x8004004080040000L, true, 0, 0x0L), 4), 618300); - - // gentest-5427 - assertEqual(perft(new Board(0x89268000L, 0x2000024000000000L, 0x200000000L, 0x400000000000080L, 0x400000L, 0x8000000000010000L, 0x2000020209638080L, 0x8400004080040000L, false, 0, 0x0L), 4), 648501); - - // gentest-5428 - assertEqual(perft(new Board(0x9a68000L, 0x2100100000000000L, 0x200000000L, 0x400000000000080L, 0x400000L, 0x8000000000010000L, 0x2100000209638080L, 0x8400100000840000L, true, 0, 0x0L), 4), 418289); - - // gentest-5429 - assertEqual(perft(new Board(0x9a68000L, 0x2104000000000000L, 0x200000000L, 0x400000000000080L, 0x1000000000000000L, 0x8000000000010000L, 0x3100000209238080L, 0x8404000000840000L, false, 0, 0x0L), 4), 217859); - - // gentest-5430 - assertEqual(perft(new Board(0x9a68000L, 0x2004000000000000L, 0x200000000L, 0x100000000000080L, 0x100000L, 0x4000000000010000L, 0x2000000209338080L, 0x4104000000840000L, true, 0, 0x0L), 4), 395396); - - // gentest-5431 - assertEqual(perft(new Board(0x9a68000L, 0x2004000000000000L, 0x4000000L, 0x1000000000000080L, 0x800L, 0x4000000000010000L, 0x200000000d238880L, 0x5004000000840000L, false, 0, 0x0L), 4), 132646); - - // gentest-5432 - assertEqual(perft(new Board(0x9a68000L, 0x2000100000000000L, 0x4000000L, 0x800000000000080L, 0x400L, 0x4000000000010000L, 0x200000000d238480L, 0x4800100000840000L, true, 0, 0x0L), 4), 286055); - - // gentest-5433 - assertEqual(perft(new Board(0x9a68000L, 0x2000100000000000L, 0x20L, 0x80000000080L, 0x8L, 0x4000000000010000L, 0x20000000092380a8L, 0x4000180000840000L, false, 0, 0x0L), 4), 285465); - - // gentest-5434 - assertEqual(perft(new Board(0x9a68000L, 0x2000100000000000L, 0x20L, 0x80000000080L, 0x80000L, 0x200000010000L, 0x20000000092b80a0L, 0x380000840000L, true, 0, 0x0L), 4), 255123); - - // gentest-5435 - assertEqual(perft(new Board(0x9a68000L, 0x2000100000000000L, 0x20L, 0x20000000080L, 0x10L, 0x200000010000L, 0x20000000092380b0L, 0x320000840000L, false, 0, 0x0L), 4), 365398); - - // gentest-5436 - assertEqual(perft(new Board(0x9a68000L, 0x2000100000000000L, 0x10000000000L, 0x20000000080L, 0x10L, 0x20000000010000L, 0x2000010009238090L, 0x20120000840000L, true, 0, 0x0L), 4), 483749); - - // gentest-5437 - assertEqual(perft(new Board(0x9a68000L, 0x2000100000000000L, 0x10000000000L, 0x2000000000080L, 0x8L, 0x20000000000100L, 0x2000010009228188L, 0x22100000840000L, false, 0, 0x0L), 4), 480289); - - // gentest-5438 - assertEqual(perft(new Board(0x9a68000L, 0x2000100000000000L, 0x10000000000L, 0x200000080L, 0x8L, 0x10000000000001L, 0x2000010009228089L, 0x10100200840000L, true, 0, 0x0L), 4), 383144); - - // gentest-5439 - assertEqual(perft(new Board(0x9a68000L, 0x2800000000000000L, 0x10000000000L, 0x200000020L, 0x8L, 0x10000000000100L, 0x2000010009228128L, 0x810000200840000L, false, 0, 0x0L), 4), 348216); - - // gentest-5440 - assertEqual(perft(new Board(0x9a28400L, 0x2800000000000000L, 0x10000000000L, 0x2000000000020L, 0x800L, 0x10000000000100L, 0x2000010009228920L, 0x812000000800400L, true, 0, 0x0L), 4), 452663); - - // gentest-5441 - assertEqual(perft(new Board(0x9a28400L, 0x2800000000000000L, 0x10000000000L, 0x2000000000040L, 0x2000000L, 0x1000000000000100L, 0x200001000b228140L, 0x1802000000800400L, false, 0, 0x0L), 4), 542643); - - // gentest-5442 - assertEqual(perft(new Board(0x9a28400L, 0x2800000000000000L, 0x10000000000L, 0x4000000002000000L, 0x0L, 0x1000000000000100L, 0x6000010009228100L, 0x1800000002800400L, true, 0, 0x0L), 4), 168006); - - // gentest-5443 - assertEqual(perft(new Board(0x1a28400L, 0x808000000000000L, 0x10000000000L, 0x8004000L, 0x0L, 0x1000000000000100L, 0x801000122c100L, 0x1800000008800400L, false, 0, 0x0L), 4), 385038); - - // gentest-5444 - assertEqual(perft(new Board(0x1a28400L, 0x8100000000000L, 0x200000000L, 0x4004000L, 0x0L, 0x1000000000000100L, 0x800020122c100L, 0x1000100004800400L, true, 0, 0x0L), 4), 264719); - - // gentest-5445 - assertEqual(perft(new Board(0x1a28400L, 0x101000000000L, 0x200000000L, 0x40040L, 0x0L, 0x1000000000000100L, 0x1201228140L, 0x1000100000840400L, false, 0, 0x0L), 4), 80741); - - // gentest-5446 - assertEqual(perft(new Board(0x1a28400L, 0x1020000000L, 0x200000000L, 0x40000400000L, 0x0L, 0x1000000000000100L, 0x1201628100L, 0x1000040020800400L, true, 0, 0x0L), 4), 203740); - - // gentest-5447 - assertEqual(perft(new Board(0x1a28400L, 0x1000000000L, 0x80000L, 0x40000400000L, 0x0L, 0x1000000000000200L, 0x10016a8200L, 0x1000040000800400L, false, 0, 0x0L), 4), 257672); - - // gentest-5448 - assertEqual(perft(new Board(0x1a28000L, 0x1000000000L, 0x80000L, 0x100000400000L, 0x0L, 0x1000000000000400L, 0x10016a8400L, 0x1000100000800000L, true, 0, 0x0L), 4), 153991); - - // gentest-5449 - assertEqual(perft(new Board(0x100a28000L, 0x1000000000L, 0x200000000L, 0x10000400000L, 0x0L, 0x1000000000000400L, 0x1300628400L, 0x1000010000800000L, false, 0, 0x0L), 4), 37238); - - // gentest-5450 - assertEqual(perft(new Board(0x100a28000L, 0x40000000000L, 0x200000000L, 0x10000400000L, 0x0L, 0x80000000400L, 0x40300628400L, 0x90000800000L, true, 0, 0x0L), 4), 95243); - - // gentest-5451 - assertEqual(perft(new Board(0x100a28000L, 0x40000000000L, 0x200000000L, 0x10000400000L, 0x0L, 0x800000004L, 0x40300628004L, 0x10800800000L, false, 0, 0x0L), 4), 59765); - - // gentest-5452 - assertEqual(perft(new Board(0xa28000L, 0x200000000000000L, 0x200000000L, 0x1400000L, 0x0L, 0x800000004L, 0x200000200628004L, 0x801800000L, true, 0, 0x0L), 4), 157364); - - // gentest-5453 - assertEqual(perft(new Board(0xa28000L, 0x200000000000000L, 0x1000000L, 0x40000000L, 0x0L, 0x800000004L, 0x200000001228004L, 0x840800000L, false, 0, 0x0L), 4), 55244); - - // gentest-5454 - assertEqual(perft(new Board(0xa28000L, 0x8000000000000L, 0x0L, 0x10000L, 0x0L, 0x800000004L, 0x8000000228004L, 0x800810000L, true, 0, 0x0L), 4), 26610); - - // gentest-5455 - assertEqual(perft(new Board(0xa28000L, 0x8000000000000L, 0x0L, 0x10000L, 0x0L, 0x8001000L, 0x8000000229000L, 0x8810000L, false, 0, 0x0L), 4), 20733); - - // gentest-5456 - assertEqual(perft(new Board(0xa28000L, 0x400000000L, 0x0L, 0x10000L, 0x0L, 0x8001000L, 0x400229000L, 0x8810000L, true, 0, 0x0L), 4), 25780); - - // gentest-5457 - assertEqual(perft(new Board(0xa28000L, 0x80000000000L, 0x0L, 0x10000L, 0x0L, 0x800001000L, 0x80000229000L, 0x800810000L, false, 0, 0x0L), 4), 43993); - - // gentest-5458 - assertEqual(perft(new Board(0xa28000L, 0x80000000000L, 0x0L, 0x10000000000L, 0x0L, 0x1000100000L, 0x80000328000L, 0x11000800000L, true, 0, 0x0L), 4), 37794); - - // gentest-5459 - assertEqual(perft(new Board(0xa28000L, 0x20000000000000L, 0x0L, 0x10000000000L, 0x0L, 0x100000080000L, 0x200000002a8000L, 0x110000800000L, false, 0, 0x0L), 4), 49838); - - // gentest-5460 - assertEqual(perft(new Board(0xa28000L, 0x4000000000L, 0x0L, 0x1L, 0x0L, 0x2000080000L, 0x40002a8000L, 0x2000800001L, true, 0, 0x0L), 4), 52527); - - // gentest-5461 - assertEqual(perft(new Board(0xa28000L, 0x4000000000L, 0x0L, 0x40L, 0x0L, 0x2000080000L, 0x40002a8000L, 0x2000800040L, false, 0, 0x0L), 4), 34194); - - // gentest-5462 - assertEqual(perft(new Board(0xa28000L, 0x10000000L, 0x0L, 0x40000000000L, 0x0L, 0x2000080000L, 0x102a8000L, 0x42000800000L, true, 0, 0x0L), 4), 46573); - - // gentest-5463 - assertEqual(perft(new Board(0xa28000L, 0x4000000000L, 0x0L, 0x80000000000L, 0x0L, 0x2000001000L, 0x4000229000L, 0x82000800000L, false, 0, 0x0L), 4), 37957); - - // gentest-5464 - assertEqual(perft(new Board(0xa28000L, 0x80000000000000L, 0x0L, 0x80000000000L, 0x0L, 0x2000001000L, 0x80000000229000L, 0x82000800000L, true, 0, 0x0L), 4), 25384); - - // gentest-5465 - assertEqual(perft(new Board(0xa28000L, 0x80000000000000L, 0x0L, 0x200000000000L, 0x0L, 0x2000000800L, 0x80000000228800L, 0x202000800000L, false, 0, 0x0L), 4), 25197); - - // gentest-5466 - assertEqual(perft(new Board(0xa28000L, 0x80000000000000L, 0x0L, 0x200000000000L, 0x0L, 0x8000000000008L, 0x80000000228008L, 0x8200000800000L, true, 0, 0x0L), 4), 29340); - - // gentest-5467 - assertEqual(perft(new Board(0x20828000L, 0x200000000000L, 0x0L, 0x0L, 0x0L, 0x800000000000008L, 0x200020028008L, 0x800000000800000L, false, 0, 0x0L), 4), 3559); - - // gentest-5468 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5469 - assertEqual(perft(new Board(0x7f00800200fd00L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x220fdbfL, 0xff7f008000000000L, false, 0, 0x8100000000000081L), 4), 280455); - - // gentest-5470 - assertEqual(perft(new Board(0x5f20800200fd00L, 0x4200000000200002L, 0x2400000000000220L, 0x8100000000000081L, 0x800000000000008L, 0x20000000000010L, 0x220ffbbL, 0xef7f208000000000L, true, 0, 0x81L), 4), 387672); - - // gentest-5471 - assertEqual(perft(new Board(0x5f20800304f800L, 0x4200000000200002L, 0x2400000000000220L, 0x100800000000081L, 0x800000000000008L, 0x20000000000010L, 0x324fabbL, 0x6f7fa08000000000L, false, 0, 0x81L), 4), 335143); - - // gentest-5472 - assertEqual(perft(new Board(0x5f00a00304f800L, 0x4200000000200002L, 0x2400000000010020L, 0x100400000000081L, 0x800000000000008L, 0x20000000000010L, 0x325f8bbL, 0x6f7f40a000000000L, true, 0, 0x81L), 4), 424496); - - // gentest-5473 - assertEqual(perft(new Board(0x5f00a01304e800L, 0x4000040000200002L, 0x2400000000010020L, 0x100400000000041L, 0x800000000000008L, 0x20000000000010L, 0x1325e87bL, 0x6d7f44a000000000L, false, 0, 0x1L), 4), 734610); - - // gentest-5474 - assertEqual(perft(new Board(0x5f00a11104e800L, 0x4000000000200002L, 0x2400000000010020L, 0x100400000000041L, 0x800000000000008L, 0x100000000010L, 0x11125e87bL, 0x6d5f50a000000000L, true, 0, 0x1L), 4), 411315); - - // gentest-5475 - assertEqual(perft(new Board(0x5f00a101846800L, 0x4000000000200002L, 0x2400000000010020L, 0x200400000000041L, 0x800000000000008L, 0x100000000010L, 0x2101a5687bL, 0x6e5f508000000000L, false, 0, 0x1L), 4), 88980); - - // gentest-5476 - assertEqual(perft(new Board(0x5f000181846800L, 0x4000000000200002L, 0x2400000200010000L, 0x200400000000041L, 0x800000000000008L, 0x2000000010L, 0x301a5685bL, 0x6e5f402080000000L, true, 0, 0x1L), 4), 553868); - - // gentest-5477 - assertEqual(perft(new Board(0x5f000181846800L, 0x4000000000008002L, 0x2400000200010000L, 0x200000040000041L, 0x800000000001000L, 0x2000000010L, 0x30185f853L, 0x6e5f0020c0000000L, false, 0, 0x1L), 4), 870787); - - // gentest-5478 - assertEqual(perft(new Board(0x5f000181a44800L, 0x4000000000008002L, 0x2400000200010000L, 0x200000008000041L, 0x1000000000001000L, 0x2000000010L, 0x301a5d853L, 0x765f002088000000L, true, 0, 0x1L), 4), 845496); - - // gentest-5479 - assertEqual(perft(new Board(0x5f000181a44800L, 0x4000000000008002L, 0x2400000000090000L, 0x200000800000041L, 0x1000000000001000L, 0x2000000020L, 0x101add863L, 0x765f002880000000L, false, 0, 0x0L), 4), 94162); - - // gentest-5480 - assertEqual(perft(new Board(0x5f000181a44800L, 0x4000000000008002L, 0x2400000000010000L, 0x200000000080041L, 0x1000000000000008L, 0x400000000020L, 0x101a5c86bL, 0x765f400080080000L, true, 0, 0x0L), 4), 406668); - - // gentest-5481 - assertEqual(perft(new Board(0x5f0001c5a00800L, 0x4000000000008002L, 0x2400000000010000L, 0x200080000000041L, 0x1000000000000008L, 0x400000000020L, 0x145a1886bL, 0x765f480080000000L, false, 0, 0x0L), 4), 451529); - - // gentest-5482 - assertEqual(perft(new Board(0x5f0001c5a00800L, 0x800000008002L, 0x2400000000010000L, 0x200200000000140L, 0x1000000000000008L, 0x400000000020L, 0x145a1896aL, 0x365fe00080000000L, true, 0, 0x0L), 4), 588321); - - // gentest-5483 - assertEqual(perft(new Board(0x5f0001e5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x200200000000140L, 0x1000000000000004L, 0x400000000020L, 0x165818966L, 0x765f600080000000L, false, 0, 0x0L), 4), 465194); - - // gentest-5484 - assertEqual(perft(new Board(0x5f0021c5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x220000000000140L, 0x1000000000000004L, 0x800000000020L, 0x2145818966L, 0x767f800080000000L, true, 0, 0x0L), 4), 264097); - - // gentest-5485 - assertEqual(perft(new Board(0x5f0021c5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x220000000000140L, 0x1000000000000200L, 0x4000002000L, 0x214581ab42L, 0x767f004080000000L, false, 0, 0x0L), 4), 474610); - - // gentest-5486 - assertEqual(perft(new Board(0x4f1021c5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x220000000000140L, 0x800000000000004L, 0x4000002000L, 0x214581a946L, 0x6e6f104080000000L, true, 0, 0x0L), 4), 698666); - - // gentest-5487 - assertEqual(perft(new Board(0x4f1120c5800800L, 0x4000000000008002L, 0x400080000010000L, 0x220000000004100L, 0x800000000000004L, 0x4000002000L, 0x1204581e906L, 0x4e6f184080000000L, false, 0, 0x0L), 4), 809829); - - // gentest-5488 - assertEqual(perft(new Board(0x4d1102c5800800L, 0x4000000000008002L, 0x400080000010000L, 0x200002000004100L, 0x800000000000004L, 0x4000000010L, 0x1004581c916L, 0x4e4d186280000000L, true, 0, 0x0L), 4), 914458); - - // gentest-5489 - assertEqual(perft(new Board(0x491502c5800800L, 0x4000000000008002L, 0x400080002000000L, 0x200002000001100L, 0x800000000000004L, 0x4000000010L, 0x10047809916L, 0x4e491c6280000000L, false, 0, 0x0L), 4), 1500687); - - // gentest-5490 - assertEqual(perft(new Board(0x491506c1800800L, 0x10000000000002L, 0x400000002008000L, 0x200002000001100L, 0x800000000000004L, 0x4000000010L, 0x10443801916L, 0xe59146280008000L, true, 0, 0x0L), 4), 969781); - - // gentest-5491 - assertEqual(perft(new Board(0x49152681800800L, 0x800000002L, 0x400000000018000L, 0x200000000001100L, 0x800000000000004L, 0x4000000010L, 0x12401811916L, 0xe49144a80008000L, false, 0, 0x0L), 4), 931393); - - // gentest-5492 - assertEqual(perft(new Board(0x49052681800800L, 0x800000002L, 0x400000000018000L, 0x200100000000100L, 0x1000000000000004L, 0x8000000010L, 0x112401810916L, 0x1649048a80008000L, true, 0, 0x0L), 4), 776771); - - // gentest-5493 - assertEqual(perft(new Board(0x49052689800000L, 0x800000002L, 0x400000020010000L, 0x200100000000400L, 0x1000000000000004L, 0x8000000010L, 0x112409810416L, 0x1649048aa0000000L, false, 0, 0x0L), 4), 1233356); - - // gentest-5494 - assertEqual(perft(new Board(0x49052689800000L, 0x10000000000002L, 0x400000000110000L, 0x200100000000400L, 0x1000000000000004L, 0x8000001000L, 0x112409811406L, 0x1659048280100000L, true, 0, 0x0L), 4), 1095017); - - // gentest-5495 - assertEqual(perft(new Board(0x49052689800000L, 0x10000000000002L, 0x400000002100000L, 0x120000000100L, 0x1000000000000004L, 0x8000001000L, 0x11240b801106L, 0x1459068280100000L, false, 0, 0x0L), 4), 1580887); - - // gentest-5496 - assertEqual(perft(new Board(0x49052689800000L, 0x10000000000002L, 0x400000002100000L, 0x4100000000100L, 0x1000000000000010L, 0x8000001000L, 0x11240b801112L, 0x145d048280100000L, true, 0, 0x0L), 4), 1090437); - - // gentest-5497 - assertEqual(perft(new Board(0x49052689800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100200L, 0x2000000000000010L, 0x8000001000L, 0x1240b901212L, 0x245d048280000000L, false, 0, 0x0L), 4), 750768); - - // gentest-5498 - assertEqual(perft(new Board(0x410d2689800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100100L, 0x1000000000000010L, 0x8000001000L, 0x1240b901112L, 0x14550c8280000000L, true, 0, 0x0L), 4), 1093377); - - // gentest-5499 - assertEqual(perft(new Board(0x410d2688800000L, 0x800000002L, 0x400000002000000L, 0x4000000100100L, 0x1000000000000008L, 0x8000001000L, 0x1260a90110aL, 0x14450c8880000000L, false, 0, 0x0L), 4), 1373233); - - // gentest-5500 - assertEqual(perft(new Board(0x410d2688800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100100L, 0x8000000000000400L, 0x8000001000L, 0x1260a901502L, 0x84550c8080000000L, true, 0, 0x0L), 4), 1185373); - - // gentest-5501 - assertEqual(perft(new Board(0x410d2688800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100200L, 0x4000000000020000L, 0x8000001000L, 0x1260a921202L, 0x44550c8080000000L, false, 0, 0x0L), 4), 1176222); - - // gentest-5502 - assertEqual(perft(new Board(0x410d2688800000L, 0x10000000000002L, 0x8000002000000L, 0x4100000000200L, 0x8000000000020000L, 0x8000001000L, 0x11260a821202L, 0x805d0c8080000000L, true, 0, 0x0L), 4), 1076551); - - // gentest-5503 - assertEqual(perft(new Board(0x410d2688800000L, 0x10000010000000L, 0x8000002000000L, 0x4100000000200L, 0x100000000020000L, 0x8000001000L, 0x11261a821200L, 0x15d0c8080000000L, false, 0, 0x0L), 4), 1018531); - - // gentest-5504 - assertEqual(perft(new Board(0x41092688800000L, 0x10000000002000L, 0x8000002000000L, 0x400100000000200L, 0x100000000020000L, 0x8000001000L, 0x11240a823200L, 0x559088280000000L, true, 0, 0x0L), 4), 1472399); - - // gentest-5505 - assertEqual(perft(new Board(0x41092688800000L, 0x10000000002000L, 0x40002000000L, 0x400100000000200L, 0x100000000040000L, 0x8000000020L, 0x11240a842220L, 0x5510c8280000000L, false, 0, 0x0L), 4), 1051947); - - // gentest-5506 - assertEqual(perft(new Board(0x41092688800000L, 0x4000000000002000L, 0x12000000L, 0x400100000000200L, 0x100000000000400L, 0x8000000020L, 0x11240a802620L, 0x4541088290000000L, true, 0, 0x0L), 4), 1001344); - - // gentest-5507 - assertEqual(perft(new Board(0x1096688800000L, 0x4000000000002000L, 0x12000000L, 0x400200000000200L, 0x100000000000400L, 0x8000000040L, 0x21240a802640L, 0x450108c290000000L, false, 0, 0x0L), 4), 803780); - - // gentest-5508 - assertEqual(perft(new Board(0x1096688800000L, 0x4000000000002000L, 0x140000000L, 0x400200000000200L, 0x100000000000400L, 0x8000000040L, 0x212508802640L, 0x450108c2c0000000L, true, 0, 0x0L), 4), 949008); - - // gentest-5509 - assertEqual(perft(new Board(0x1096688800000L, 0x4000000000002000L, 0x140000000L, 0x24000000000200L, 0x100000000000002L, 0x8000000040L, 0x20012508802242L, 0x410508c2c0000000L, false, 0, 0x0L), 4), 1356787); - - // gentest-5510 - assertEqual(perft(new Board(0x1016e88800000L, 0x4000000000002000L, 0x140000000L, 0x80000000000200L, 0x100000000000002L, 0x8000000040L, 0x12508802242L, 0x418100cac0000000L, true, 0, 0x0L), 4), 760543); - - // gentest-5511 - assertEqual(perft(new Board(0x1254a88800000L, 0x4000000000002000L, 0x100200000L, 0x80000000000200L, 0x100000000000002L, 0x8000000040L, 0x250108802242L, 0x418100ca80200000L, false, 0, 0x0L), 4), 883437); - - // gentest-5512 - assertEqual(perft(new Board(0x1254a88800000L, 0x4000000000000080L, 0x100000008L, 0x8000000000200L, 0x100000000000002L, 0x8000000040L, 0x2501088002c2L, 0x410900ca80000008L, true, 0, 0x0L), 4), 756254); - - // gentest-5513 - assertEqual(perft(new Board(0x1254a88800000L, 0x4000000000000080L, 0x100000000L, 0x8000000002000L, 0x2000000000000008L, 0x8000000040L, 0x2501088020c8L, 0x600900ca80000000L, false, 0, 0x0L), 4), 116583); - - // gentest-5514 - assertEqual(perft(new Board(0x9214a88800000L, 0x10000000000080L, 0x100000000L, 0x2000L, 0x2000000000000008L, 0x400000000040L, 0x82101088020c8L, 0x2011404a80000000L, true, 0, 0x0L), 4), 617680); - - // gentest-5515 - assertEqual(perft(new Board(0x9214a88800000L, 0x40000000080L, 0x100000000L, 0x4000L, 0x2000000000000010L, 0x400000000040L, 0x82101088040d0L, 0x2001444a80000000L, false, 0, 0x0L), 4), 1291688); - - // gentest-5516 - assertEqual(perft(new Board(0x1214a88800000L, 0x1000000080L, 0x800000100000000L, 0x4000L, 0x2000000000000010L, 0x80000000000040L, 0x8002101088040d0L, 0x2081005a80000000L, true, 0, 0x0L), 4), 863523); - - // gentest-5517 - assertEqual(perft(new Board(0x1214a88800000L, 0x40000002000L, 0x20100000000L, 0x4000L, 0x2000000000000010L, 0x80000000000040L, 0x230108806050L, 0x2081044a80000000L, false, 0, 0x0L), 4), 911833); - - // gentest-5518 - assertEqual(perft(new Board(0x1214a88800000L, 0x200000000002000L, 0x4000100000000L, 0x4000L, 0x800000000000010L, 0x80000000000040L, 0x4210108806050L, 0xa81004a80000000L, true, 0, 0x0L), 4), 559043); - - // gentest-5519 - assertEqual(perft(new Board(0x1214a88800000L, 0x200000000002000L, 0x4000100000000L, 0x4000L, 0x80000000010L, 0x80000000000040L, 0x4210108806050L, 0x281084a80000000L, false, 0, 0x0L), 4), 761468); - - // gentest-5520 - assertEqual(perft(new Board(0x1214a88800000L, 0x200000000002000L, 0x40000L, 0x4000L, 0x400000010L, 0x80000000000040L, 0x210008846050L, 0x281004e80000000L, true, 0, 0x0L), 4), 411603); - - // gentest-5521 - assertEqual(perft(new Board(0x1214a88800000L, 0x8000000080000L, 0x40000L, 0x4000L, 0x400000800L, 0x80000000000040L, 0x2100088c4840L, 0x89004e80000000L, false, 0, 0x0L), 4), 607248); - - // gentest-5522 - assertEqual(perft(new Board(0x1214a88800000L, 0x8000000000004L, 0x40000L, 0x4000L, 0x100000800L, 0x80000000000040L, 0x210008844844L, 0x89004b80000000L, true, 0, 0x0L), 4), 399305); - - // gentest-5523 - assertEqual(perft(new Board(0x1010a88800000L, 0x200000000004L, 0x1L, 0x4000L, 0x4100000000L, 0x80000000000040L, 0x14008804045L, 0x81200b80000000L, false, 0, 0x0L), 4), 352607); - - // gentest-5524 - assertEqual(perft(new Board(0x1010a88800000L, 0x10000004L, 0x1L, 0x40000000L, 0x4001000000L, 0x80000000000040L, 0x14048800045L, 0x81000a91000000L, true, 0, 0x0L), 4), 217121); - - // gentest-5525 - assertEqual(perft(new Board(0x1010a88800000L, 0x200000001000L, 0x1L, 0x20000000L, 0x4001000000L, 0x80000000000040L, 0x14028801041L, 0x81200a81000000L, false, 0, 0x0L), 4), 256363); - - // gentest-5526 - assertEqual(perft(new Board(0x1010a88800000L, 0x40001000L, 0x1L, 0x20L, 0x4000000008L, 0x80000000000040L, 0x14008801061L, 0x81000ac0000008L, true, 0, 0x0L), 4), 211248); - - // gentest-5527 - assertEqual(perft(new Board(0x1010a88800000L, 0x1000L, 0x1L, 0x8L, 0x40000800L, 0x80000000000040L, 0x10048801049L, 0x81000a80000800L, false, 0, 0x0L), 4), 189715); - - // gentest-5528 - assertEqual(perft(new Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x40000800L, 0x80000000008000L, 0x10048809001L, 0x81000a80000800L, true, 0, 0x0L), 4), 92560); - - // gentest-5529 - assertEqual(perft(new Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x2000000000000800L, 0x4000000000008000L, 0x2000010008809001L, 0x4001000a80000800L, false, 0, 0x0L), 4), 9867); - - // gentest-5530 - assertEqual(perft(new Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x800L, 0x40000000008000L, 0x10008809001L, 0x41000a80000800L, true, 0, 0x0L), 4), 24957); - - // gentest-5531 - assertEqual(perft(new Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x8L, 0x40000000004000L, 0x10008805001L, 0x41000a80000008L, false, 0, 0x0L), 4), 40288); - - // gentest-5532 - assertEqual(perft(new Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x8L, 0x20000000002000L, 0x10008803001L, 0x21000a80000008L, true, 0, 0x0L), 4), 46659); - - // gentest-5533 - assertEqual(perft(new Board(0x1010a88800000L, 0x40000L, 0x1L, 0x0L, 0x4L, 0x20000000200000L, 0x10008a40001L, 0x21000a80000004L, false, 0, 0x0L), 4), 62512); - - // gentest-5534 - assertEqual(perft(new Board(0x1010a88800000L, 0x40000L, 0x1L, 0x0L, 0x20000000L, 0x10000000001000L, 0x10008841001L, 0x11000aa0000000L, true, 0, 0x0L), 4), 70889); - - // gentest-5535 - assertEqual(perft(new Board(0x1010888800000L, 0x200000000L, 0x1L, 0x0L, 0x400000L, 0x10000000000008L, 0x10208800009L, 0x11000880400000L, false, 0, 0x0L), 4), 63172); - - // gentest-5536 - assertEqual(perft(new Board(0x1010888800000L, 0x200000000L, 0x1L, 0x0L, 0x4000000000L, 0x10000000000004L, 0x10208800005L, 0x11004880000000L, true, 0, 0x0L), 4), 21627); - - // gentest-5537 - assertEqual(perft(new Board(0x1010888800000L, 0x200000000L, 0x1L, 0x0L, 0x200000000000L, 0x10000000020000L, 0x10208820001L, 0x11200880000000L, false, 0, 0x0L), 4), 90101); - - // gentest-5538 - assertEqual(perft(new Board(0x1010888000000L, 0x200000000L, 0x1L, 0x0L, 0x800000L, 0x10000002000000L, 0x1020a000001L, 0x11000880800000L, true, 0, 0x0L), 4), 56081); - - // gentest-5539 - assertEqual(perft(new Board(0x1010888000000L, 0x40000L, 0x1L, 0x0L, 0x4000L, 0x10000100000000L, 0x10108040001L, 0x11000880004000L, false, 0, 0x0L), 4), 77193); - - // gentest-5540 - assertEqual(perft(new Board(0x1010888000000L, 0x40000L, 0x200L, 0x0L, 0x10000000L, 0x100100000000L, 0x10108040200L, 0x1100890000000L, true, 0, 0x0L), 4), 87276); - - // gentest-5541 - assertEqual(perft(new Board(0x1010088000000L, 0x20000000000L, 0x200L, 0x0L, 0x1000L, 0x100100000000L, 0x30108000200L, 0x1100080001000L, false, 0, 0x0L), 4), 74202); - - // gentest-5542 - assertEqual(perft(new Board(0x1010088000000L, 0x20000000000L, 0x200L, 0x0L, 0x100000000000L, 0x2002000000L, 0x3000a000200L, 0x1102080000000L, true, 0, 0x0L), 4), 160899); - - // gentest-5543 - assertEqual(perft(new Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x80000000000L, 0x2004000000L, 0x1000d000200L, 0x1082080000000L, false, 0, 0x0L), 4), 92037); - - // gentest-5544 - assertEqual(perft(new Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x20000000000L, 0x2200000000L, 0x10209000200L, 0x1022080000000L, true, 0, 0x0L), 4), 6675); - - // gentest-5545 - assertEqual(perft(new Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x400000000000L, 0x2400000000L, 0x10409000200L, 0x1402080000000L, false, 0, 0x0L), 4), 72558); - - // gentest-5546 - assertEqual(perft(new Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x200000L, 0x2004000000L, 0x1000d000200L, 0x1002080200000L, true, 0, 0x0L), 4), 89228); - - // gentest-5547 - assertEqual(perft(new Board(0x1010880000000L, 0x1000000L, 0x200L, 0x0L, 0x20000000L, 0x2000020000L, 0x10801020200L, 0x10020a0000000L, false, 0, 0x0L), 4), 118995); - - // gentest-5548 - assertEqual(perft(new Board(0x1010880000000L, 0x1000000L, 0x4L, 0x0L, 0x4000000000000L, 0x1000020000L, 0x10801020004L, 0x5001080000000L, true, 0, 0x0L), 4), 110308); - - // gentest-5549 - assertEqual(perft(new Board(0x1010880000000L, 0x1000000L, 0x800000000000L, 0x0L, 0x8000000000000L, 0x1000020000L, 0x810801020000L, 0x9001080000000L, false, 0, 0x0L), 4), 130640); - - // gentest-5550 - assertEqual(perft(new Board(0x1010080000000L, 0x1000000L, 0x800000000000L, 0x0L, 0x8000000L, 0x1000040000L, 0x810001040000L, 0x1001088000000L, true, 0, 0x0L), 4), 15699); - - // gentest-5551 - assertEqual(perft(new Board(0x1010080000000L, 0x0L, 0x800000000000L, 0x0L, 0x0L, 0x1001000000L, 0x810001000000L, 0x1001080000000L, false, 0, 0x0L), 4), 9488); - - // gentest-5552 - assertEqual(perft(new Board(0x1010000800000L, 0x0L, 0x800000000000L, 0x0L, 0x0L, 0x100200000000L, 0x810200000000L, 0x1100000800000L, true, 0, 0x0L), 4), 10741); - - // gentest-5553 - assertEqual(perft(new Board(0x1010000800000L, 0x0L, 0x100000000L, 0x0L, 0x0L, 0x8000200000000L, 0x10300000000L, 0x9000000800000L, false, 0, 0x0L), 4), 6064); - - // gentest-5554 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5555 - assertEqual(perft(new Board(0xfd020000609f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x609fffL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 214121); - - // gentest-5556 - assertEqual(perft(new Board(0xf9020402609d00L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2609dffL, 0xfdf9030400000000L, true, 0, 0x8100000000000081L), 4), 253898); - - // gentest-5557 - assertEqual(perft(new Board(0x79028402689500L, 0x4000010000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2e895bfL, 0xfd79038400000000L, false, 0, 0x8100000000000081L), 4), 468178); - - // gentest-5558 - assertEqual(perft(new Board(0x69029402689500L, 0x4000010020000002L, 0x2400000000000024L, 0x100800000000081L, 0x800000000000008L, 0x1000000000000010L, 0x226895bfL, 0x7d69839400000000L, true, 0, 0x100000000000081L), 4), 1066043); - - // gentest-5559 - assertEqual(perft(new Board(0x690214c2289500L, 0x4000010020000002L, 0x2400000000800004L, 0x100800000000081L, 0x800000000000008L, 0x1000000000000010L, 0x62a8959fL, 0x7d69831480000000L, false, 0, 0x100000000000081L), 4), 1012871); - - // gentest-5560 - assertEqual(perft(new Board(0x690214ca209500L, 0x4000010020000002L, 0x410000000800004L, 0x100040000000081L, 0x800000000000008L, 0x1000000000000010L, 0x6aa0959fL, 0x5d79071480000000L, true, 0, 0x100000000000081L), 4), 1173039); - - // gentest-5561 - assertEqual(perft(new Board(0x690214ca209500L, 0x4000010800000002L, 0x400080000900000L, 0x100040000000081L, 0x800000000000008L, 0x1000000000000010L, 0x84ab0959bL, 0x5d690f1480000000L, false, 0, 0x100000000000081L), 4), 1019226); - - // gentest-5562 - assertEqual(perft(new Board(0x690210c8249100L, 0x4000010800000002L, 0x400080000900000L, 0x100040000000081L, 0x800000000000008L, 0x1000000000000010L, 0x848b0919bL, 0x5d690f1080040000L, true, 0, 0x100000000000081L), 4), 1211094); - - // gentest-5563 - assertEqual(perft(new Board(0x690210e8049100L, 0x4000000802000002L, 0x400080000900000L, 0x100040000000081L, 0x800000000000800L, 0x1000000000000010L, 0x868909993L, 0x5d690e1082040000L, false, 0, 0x100000000000081L), 4), 1025611); - - // gentest-5564 - assertEqual(perft(new Board(0x690200e8049100L, 0x4000000802000002L, 0x90000100020L, 0x100040000000081L, 0x800000000000800L, 0x1000000000000010L, 0x8601099b3L, 0x59690f008a040000L, true, 0, 0x100000000000081L), 4), 1283262); - - // gentest-5565 - assertEqual(perft(new Board(0x690200e8049100L, 0x4010000000000002L, 0x90000100020L, 0x100040000000081L, 0x800000000000400L, 0x1000000000000010L, 0x100000601095b3L, 0x59690f0088040000L, false, 0, 0x100000000000081L), 4), 1649814); - - // gentest-5566 - assertEqual(perft(new Board(0x490220e8049100L, 0x4000400000000002L, 0x80004100020L, 0x100040000000081L, 0x800000000000400L, 0x1000000000000010L, 0x4000601095b3L, 0x59490e208c040000L, true, 0, 0x100000000000081L), 4), 1702304); - - // gentest-5567 - assertEqual(perft(new Board(0x490220e8049100L, 0x4000400000000002L, 0x80004002020L, 0x100040000000081L, 0x4000080000L, 0x1000000000000010L, 0x40006008b1b3L, 0x51490e608c040000L, false, 0, 0x100000000000081L), 4), 2258812); - - // gentest-5568 - assertEqual(perft(new Board(0x490220e0049100L, 0x4000400000000000L, 0x4012020L, 0x100040000000081L, 0x4000080000L, 0x1000000000000010L, 0x40006008b1b1L, 0x5149066084050000L, true, 0, 0x100000000000081L), 4), 2868997); - - // gentest-5569 - assertEqual(perft(new Board(0x490220e0049100L, 0x4000400000000000L, 0x4012020L, 0x100000400000081L, 0x4000000002L, 0x1000000000000008L, 0x40006000b1abL, 0x5149026484050000L, false, 0, 0x100000000000000L), 4), 1655001); - - // gentest-5570 - assertEqual(perft(new Board(0x490220e0049100L, 0x4000400000000000L, 0x4010030L, 0x200000400000081L, 0x10000000000002L, 0x1000000000000008L, 0x4000600091bbL, 0x5259022484050000L, true, 0, 0x0L), 4), 1563050); - - // gentest-5571 - assertEqual(perft(new Board(0x490220e0049100L, 0x4000400000000000L, 0x4010820L, 0x200000400000081L, 0x180000L, 0x1000000000000008L, 0x4000600899a9L, 0x5249022484150000L, false, 0, 0x0L), 4), 1863274); - - // gentest-5572 - assertEqual(perft(new Board(0x490220e0049100L, 0x4000400000000000L, 0x4000224L, 0x204000000000081L, 0x180000L, 0x1000000000000008L, 0x4000600891adL, 0x524d022084140200L, true, 0, 0x0L), 4), 1590470); - - // gentest-5573 - assertEqual(perft(new Board(0x490220e0049100L, 0x4000001000000000L, 0x4004204L, 0x204000000000081L, 0x8080000L, 0x1000000000000008L, 0x106008d18dL, 0x524d02208c040200L, false, 0, 0x0L), 4), 1939118); - - // gentest-5574 - assertEqual(perft(new Board(0x490260a0049100L, 0x4000001000000000L, 0x100000004204L, 0x204000000000081L, 0x8080000L, 0x2000000000000008L, 0x502008d18dL, 0x624d122088040200L, true, 0, 0x0L), 4), 1633502); - - // gentest-5575 - assertEqual(perft(new Board(0x490260a0049100L, 0x4000001000000000L, 0x24a00L, 0x204000000000081L, 0x8080000L, 0x2000000000000010L, 0x502008d991L, 0x624d022088060200L, false, 0, 0x0L), 4), 3328420); - - // gentest-5576 - assertEqual(perft(new Board(0x490260a0049100L, 0x801000000000L, 0x820a00L, 0x200000004000081L, 0x8080000L, 0x2000000000000010L, 0x5020889991L, 0x224982208c060200L, true, 0, 0x0L), 4), 2035363); - - // gentest-5577 - assertEqual(perft(new Board(0x490260b1048000L, 0x801000000000L, 0x820a00L, 0x200000004000081L, 0x80000L, 0x2000000000000010L, 0x5031808891L, 0x22498220840e0200L, false, 0, 0x0L), 4), 1109610); - - // gentest-5578 - assertEqual(perft(new Board(0x490260b1048000L, 0x801000000000L, 0x820200L, 0x200000004000081L, 0x80000000000L, 0x2000000000000020L, 0x50318080a1L, 0x22498a2084060200L, true, 0, 0x0L), 4), 1366466); - - // gentest-5579 - assertEqual(perft(new Board(0x490260b1048000L, 0x801000000000L, 0x820200L, 0x2000004000081L, 0x80000000000L, 0x2000000000000020L, 0x50318080a1L, 0x204b8a2084060200L, false, 0, 0x0L), 4), 1181707); - - // gentest-5580 - assertEqual(perft(new Board(0x490260b1048000L, 0x20001000000000L, 0x820200L, 0x2000004000088L, 0x800000000000L, 0x2000000000000020L, 0x50318080a8L, 0x206b822084060200L, true, 0, 0x0L), 4), 1383326); - - // gentest-5581 - assertEqual(perft(new Board(0x410220b1048000L, 0x4004000000L, 0x820200L, 0xa000000000080L, 0x800000000000L, 0x2000000000000020L, 0x80000358080a0L, 0x2043826080060200L, false, 0, 0x0L), 4), 995011); - - // gentest-5582 - assertEqual(perft(new Board(0x410220b1008400L, 0x4004000000L, 0x820200L, 0x4000000000080L, 0x800000000000L, 0x2000000000000020L, 0x40000358080a0L, 0x2041826080020600L, true, 0, 0x0L), 4), 977558); - - // gentest-5583 - assertEqual(perft(new Board(0x410220b1008000L, 0x4004000000L, 0x820200L, 0x4000000000080L, 0x800000000004L, 0x2000000000002000L, 0x400003580a080L, 0x2041826080020204L, false, 0, 0x0L), 4), 1325374); - - // gentest-5584 - assertEqual(perft(new Board(0x410220b1008000L, 0x100004000000L, 0x820200L, 0x400000080L, 0x400000000004L, 0x2000000000002000L, 0x43580a080L, 0x2041522080020204L, true, 0, 0x0L), 4), 1527488); - - // gentest-5585 - assertEqual(perft(new Board(0x400320b1008000L, 0x180000000000L, 0x820200L, 0x200000080L, 0x400000000004L, 0x2000000000002000L, 0x8023180a080L, 0x2040532080020204L, false, 0, 0x0L), 4), 1283662); - - // gentest-5586 - assertEqual(perft(new Board(0x400320b1008000L, 0x84000000000L, 0x820200L, 0x200000080L, 0x400000000400L, 0x2000000000100000L, 0x80231908080L, 0x2040436080020600L, true, 0, 0x0L), 4), 1559496); - - // gentest-5587 - assertEqual(perft(new Board(0x400320b1008000L, 0x84000000000L, 0x820000L, 0x200000010L, 0x400000000400L, 0x2000000008000000L, 0x80239808010L, 0x2040436080020400L, false, 0, 0x0L), 4), 1115236); - - // gentest-5588 - assertEqual(perft(new Board(0x400320b1008000L, 0x20004000000000L, 0x820000L, 0x200000010L, 0x1000400000000000L, 0x2000000008000000L, 0x20000239808010L, 0x3040436080020000L, true, 0, 0x0L), 4), 1427359); - - // gentest-5589 - assertEqual(perft(new Board(0x400320b1008000L, 0x20000000800000L, 0x20000L, 0x400000008L, 0x1000400000000000L, 0x2000000008000000L, 0x20000439008008L, 0x3040432080820000L, false, 0, 0x0L), 4), 1296781); - - // gentest-5590 - assertEqual(perft(new Board(0x400320b1008000L, 0x20000000800000L, 0x20000L, 0x800000008L, 0x400000000020L, 0x2000000008000000L, 0x20000839008008L, 0x2040432080820020L, true, 0, 0x0L), 4), 973768); - - // gentest-5591 - assertEqual(perft(new Board(0x400221b1008000L, 0x20000000800000L, 0x20000L, 0x4000008L, 0x400000000020L, 0x2000000008000000L, 0x2000003d008008L, 0x2040422180820020L, false, 0, 0x0L), 4), 705031); - - // gentest-5592 - assertEqual(perft(new Board(0x400221b1008000L, 0x4000800000L, 0x20000L, 0x4000008L, 0x400000000020L, 0x2000000008000000L, 0x403d008008L, 0x2040422180820020L, true, 0, 0x0L), 4), 680412); - - // gentest-5593 - assertEqual(perft(new Board(0x400023b1008000L, 0xa00000L, 0x20000L, 0x4000008L, 0x400000000020L, 0x2000001000000000L, 0x1035208008L, 0x2040402380820020L, false, 0, 0x0L), 4), 1162024); - - // gentest-5594 - assertEqual(perft(new Board(0x400023b1008000L, 0xa00000L, 0x20000L, 0x4000000000008L, 0x400040L, 0x2000001000000000L, 0x4001031208008L, 0x2040002380c20040L, true, 0, 0x0L), 4), 1564566); - - // gentest-5595 - assertEqual(perft(new Board(0x400023b1008000L, 0x800800L, 0x20000000000000L, 0x4000000080000L, 0x400040L, 0x2000001000000000L, 0x4001031088800L, 0x2060002380c00040L, false, 0, 0x0L), 4), 1495464); - - // gentest-5596 - assertEqual(perft(new Board(0x400023b1008000L, 0x800800L, 0x20000000000000L, 0x80000L, 0x400040L, 0x2000001000000000L, 0x1031088800L, 0x2060002380c00040L, true, 0, 0x0L), 4), 682634); - - // gentest-5597 - assertEqual(perft(new Board(0x400023b1008000L, 0x800800L, 0x100000000000L, 0x800000000L, 0x400040L, 0x2000080000000000L, 0x80831008800L, 0x2040102380c00040L, false, 0, 0x0L), 4), 568295); - - // gentest-5598 - assertEqual(perft(new Board(0x400001b1008000L, 0x800800L, 0x100000000000L, 0x200000000L, 0x400080L, 0x2000080000000000L, 0x80221008800L, 0x2040100190c00080L, true, 0, 0x0L), 4), 873929); - - // gentest-5599 - assertEqual(perft(new Board(0x400000b1008000L, 0x800800L, 0x20000L, 0x8000000000L, 0x400080L, 0x2000080000000000L, 0x88021008800L, 0x2040000090c20080L, false, 0, 0x0L), 4), 688179); - - // gentest-5600 - assertEqual(perft(new Board(0x40000030008000L, 0x800800L, 0x1000000L, 0x80000000L, 0x400008L, 0x2000080000000000L, 0x800a0008800L, 0x2040000011c00008L, true, 0, 0x0L), 4), 294358); - } - - public static void batch14() { - // gentest-5601 - assertEqual(perft(new Board(0x40000030008000L, 0x800002L, 0x1000000L, 0x80000000L, 0x400020L, 0x2000001000000000L, 0x10a0008002L, 0x2040000011c00020L, false, 0, 0x0L), 4), 390158); - - // gentest-5602 - assertEqual(perft(new Board(0x40000030400000L, 0x800002L, 0x1000000L, 0x80000000L, 0x80000L, 0x2000001000000000L, 0x10a0400002L, 0x2040000011880000L, true, 0, 0x0L), 4), 195572); - - // gentest-5603 - assertEqual(perft(new Board(0x40000030400000L, 0x800002L, 0x40000000000L, 0x8000000000L, 0x80000L, 0x2000001000000000L, 0x9020400002L, 0x2040040010880000L, false, 0, 0x0L), 4), 213530); - - // gentest-5604 - assertEqual(perft(new Board(0x40000030400000L, 0x810000L, 0x1000000L, 0x8000000000L, 0x80000L, 0x2000001000000000L, 0x9020410000L, 0x2040000011880000L, true, 0, 0x0L), 4), 223317); - - // gentest-5605 - assertEqual(perft(new Board(0x40000030400000L, 0x810000L, 0x1000000L, 0x100000000000000L, 0x80000L, 0x10001000000000L, 0x100001020410000L, 0x50000011880000L, false, 0, 0x0L), 4), 291708); - - // gentest-5606 - assertEqual(perft(new Board(0x40000030400000L, 0x810000L, 0x1000000L, 0x100000000000000L, 0x20000000000000L, 0x10002000000000L, 0x100002020410000L, 0x70000011800000L, true, 0, 0x0L), 4), 36981); - - // gentest-5607 - assertEqual(perft(new Board(0x40000020400000L, 0x810000L, 0x1000000L, 0x800000000000000L, 0x100L, 0x10000010000000L, 0x800000030410000L, 0x50000001800100L, false, 0, 0x0L), 4), 292052); - - // gentest-5608 - assertEqual(perft(new Board(0x40000020400000L, 0x4800000L, 0x1000000L, 0x800000000000000L, 0x2000000000000000L, 0x10000010000000L, 0x800000034400000L, 0x2050000001800000L, true, 0, 0x0L), 4), 347610); - - // gentest-5609 - assertEqual(perft(new Board(0x40000020400000L, 0x810000L, 0x1000000L, 0x800000000000000L, 0x2000000000L, 0x10000000100000L, 0x800000020510000L, 0x50002001800000L, false, 0, 0x0L), 4), 438427); - - // gentest-5610 - assertEqual(perft(new Board(0x40000000400000L, 0x810000L, 0x1000000L, 0x800000000000000L, 0x20000000L, 0x10000000080000L, 0x800000000490000L, 0x50000021800000L, true, 0, 0x0L), 4), 317229); - - // gentest-5611 - assertEqual(perft(new Board(0x40000040000000L, 0x810000L, 0x1000000L, 0x1000000000000000L, 0x200000000000000L, 0x10000000080000L, 0x1000000040090000L, 0x250000001800000L, false, 0, 0x0L), 4), 66477); - - // gentest-5612 - assertEqual(perft(new Board(0x40000040000000L, 0x2400L, 0x1000000L, 0x1000000000000000L, 0x200000000000000L, 0x200000080000L, 0x1000000040080400L, 0x240200001002000L, true, 0, 0x0L), 4), 123973); - - // gentest-5613 - assertEqual(perft(new Board(0x40000040000000L, 0x2400L, 0x1000000L, 0x1000000000000000L, 0x200000000000000L, 0x4400000000L, 0x1000000440000400L, 0x240004001002000L, false, 0, 0x0L), 4), 345784); - - // gentest-5614 - assertEqual(perft(new Board(0x40000040000000L, 0x2000L, 0x1000000L, 0x1000000000000000L, 0x400L, 0x4008000000L, 0x1000000048000000L, 0x40004001002400L, true, 0, 0x0L), 4), 237206); - - // gentest-5615 - assertEqual(perft(new Board(0x40004000000000L, 0x2000L, 0x1000000L, 0x400000000000000L, 0x400L, 0x800008000000L, 0x400004008000000L, 0x40800001002400L, false, 0, 0x0L), 4), 24573); - - // gentest-5616 - assertEqual(perft(new Board(0x40000000000000L, 0x2000L, 0x1000000L, 0x1000000000000000L, 0x4L, 0x4008000000L, 0x1000000008000000L, 0x40004001002004L, true, 0, 0x0L), 4), 258671); - - // gentest-5617 - assertEqual(perft(new Board(0x40000000000000L, 0x10000000L, 0x1000000L, 0x4000000000000000L, 0x4L, 0x5000000000L, 0x4000001000000000L, 0x40004011000004L, false, 0, 0x0L), 4), 160121); - - // gentest-5618 - assertEqual(perft(new Board(0x40000000000000L, 0x200000000000L, 0x8L, 0x1000000000000000L, 0x4L, 0x5000000000L, 0x1000001000000000L, 0x4020400000000cL, true, 0, 0x0L), 4), 171119); - - // gentest-5619 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000000000L, 0x4L, 0x4008000000L, 0x200000008000000L, 0x4000404000000cL, false, 0, 0x0L), 4), 176665); - - // gentest-5620 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000000000L, 0x10L, 0x4010000000L, 0x200000010000000L, 0x40004040000018L, true, 0, 0x0L), 4), 50885); - - // gentest-5621 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000000000L, 0x800L, 0x4004000000L, 0x200000004000000L, 0x40004040000808L, false, 0, 0x0L), 4), 200412); - - // gentest-5622 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000L, 0x100000000L, 0x24000000L, 0x204000000L, 0x40000160000008L, true, 0, 0x0L), 4), 215284); - - // gentest-5623 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000L, 0x100000000L, 0x2004000000L, 0x204000000L, 0x40002140000008L, false, 0, 0x0L), 4), 30398); - - // gentest-5624 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x2000000000000L, 0x100000000L, 0x4400000L, 0x2000004000000L, 0x40000140400008L, true, 0, 0x0L), 4), 224598); - - // gentest-5625 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x20000000000L, 0x8000000000L, 0x4400000L, 0x20004000000L, 0x40008040400008L, false, 0, 0x0L), 4), 272283); - - // gentest-5626 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x8L, 0x80000000000L, 0x8000L, 0x4400000L, 0x80004000000L, 0x40000040408008L, true, 0, 0x0L), 4), 318116); - - // gentest-5627 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x200000L, 0x80000L, 0x8000L, 0x4400000L, 0x4080000L, 0x40000040608000L, false, 0, 0x0L), 4), 183461); - - // gentest-5628 - assertEqual(perft(new Board(0x40000000000000L, 0x40000000L, 0x200000L, 0x40000L, 0x800000000000L, 0x4400000L, 0x4040000L, 0x40800040600000L, true, 0, 0x0L), 4), 184330); - - // gentest-5629 - assertEqual(perft(new Board(0x40000000000000L, 0x200000000000L, 0x200000L, 0x400000000000000L, 0x800000000000L, 0x420000L, 0x400000000020000L, 0x40a00000600000L, false, 0, 0x0L), 4), 543997); - - // gentest-5630 - assertEqual(perft(new Board(0x40000000000000L, 0x4000000000000000L, 0x10000000L, 0x2000000000000000L, 0x800000000000L, 0x420000L, 0x2000000000020000L, 0x4040800010400000L, true, 0, 0x0L), 4), 480341); - - // gentest-5631 - assertEqual(perft(new Board(0x40000000000000L, 0x4000000000000000L, 0x10000000L, 0x2000000000L, 0x800000000000L, 0x40020000L, 0x2000020000L, 0x4040800050000000L, false, 0, 0x0L), 4), 348721); - - // gentest-5632 - assertEqual(perft(new Board(0x40000000000000L, 0x4000000000000000L, 0x10000000L, 0x20000000000000L, 0x400000000000L, 0x40020000L, 0x20000000020000L, 0x4040400050000000L, true, 0, 0x0L), 4), 320491); - - // gentest-5633 - assertEqual(perft(new Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x200000000000000L, 0x400000000000L, 0x40020000L, 0x200000000020000L, 0x40c00050000000L, false, 0, 0x0L), 4), 282214); - - // gentest-5634 - assertEqual(perft(new Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x8000000000000000L, 0x80000000000L, 0x420000L, 0x8000000000020000L, 0x40880010400000L, true, 0, 0x0L), 4), 364395); - - // gentest-5635 - assertEqual(perft(new Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x2000000000000000L, 0x80000000000L, 0x24000000L, 0x2000000004000000L, 0x40880030000000L, false, 0, 0x0L), 4), 67005); - - // gentest-5636 - assertEqual(perft(new Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x4000000000000000L, 0x100000000000L, 0x1004000000L, 0x4000000004000000L, 0x40901010000000L, true, 0, 0x0L), 4), 67908); - - // gentest-5637 - assertEqual(perft(new Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x100000000000000L, 0x20000000000000L, 0x1400000000L, 0x100000400000000L, 0x60801010000000L, false, 0, 0x0L), 4), 314171); - - // gentest-5638 - assertEqual(perft(new Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x100000000000000L, 0x100000000L, 0x1200000000L, 0x100000200000000L, 0x40801110000000L, true, 0, 0x0L), 4), 26563); - - // gentest-5639 - assertEqual(perft(new Board(0x40000000000000L, 0x800000000000L, 0x800000000L, 0x100000000L, 0x0L, 0x1400000000L, 0x500000000L, 0x40801800000000L, false, 0, 0x0L), 4), 88134); - - // gentest-5640 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5641 - assertEqual(perft(new Board(0x7f00800008f700L, 0x4200000000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x18f7fbL, 0xff7f008000000000L, false, 0, 0x8100000000000081L), 4), 430274); - - // gentest-5642 - assertEqual(perft(new Board(0x7f00800008f700L, 0x4000040000000042L, 0x2400000020000020L, 0x180000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2008f7fbL, 0x7dff048000000000L, true, 0, 0x100000000000081L), 4), 552748); - - // gentest-5643 - assertEqual(perft(new Board(0x6f10800608f100L, 0x4000040000000042L, 0x2400000020000020L, 0x180000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2608f1fbL, 0x7def148000000000L, false, 0, 0x100000000000081L), 4), 1035570); - - // gentest-5644 - assertEqual(perft(new Board(0x6f10800608f100L, 0x4000040000000042L, 0x2400000000000020L, 0x180000000000081L, 0x800000000000008L, 0x80000000010L, 0x608f1fbL, 0x6def1c8000000000L, true, 0, 0x81L), 4), 506299); - - // gentest-5645 - assertEqual(perft(new Board(0x2f50800629d000L, 0x4000040000000042L, 0x2400000000000020L, 0x180000000000081L, 0x800000000000008L, 0x80000000010L, 0x629d0fbL, 0x6daf5c8000000000L, false, 0, 0x81L), 4), 485263); - - // gentest-5646 - assertEqual(perft(new Board(0x2e50810629d000L, 0x4000040000000042L, 0x2400000000000020L, 0x80010000000180L, 0x800000000000008L, 0x80000000010L, 0x629d1faL, 0x6cae5d8100000000L, true, 0, 0x80L), 4), 704735); - - // gentest-5647 - assertEqual(perft(new Board(0x2e50810429d000L, 0x4000000002000840L, 0x2400000000000020L, 0x80010000000180L, 0x800000000000400L, 0x80000000010L, 0x429ddf0L, 0x6cae598102000000L, false, 0, 0x80L), 4), 745446); - - // gentest-5648 - assertEqual(perft(new Board(0x2e50810429d000L, 0x4000000002000840L, 0x2400000000000020L, 0x81000000000180L, 0x10000000000004L, 0x80000000010L, 0x429d9f4L, 0x64bf588102000000L, true, 0, 0x80L), 4), 591189); - - // gentest-5649 - assertEqual(perft(new Board(0x2c508304699000L, 0x4000000012000040L, 0x2400000000000020L, 0x81000000000180L, 0x10000000000004L, 0x80000000010L, 0x146991f4L, 0x64bd588302000000L, false, 0, 0x80L), 4), 84386); - - // gentest-5650 - assertEqual(perft(new Board(0x28508704699000L, 0x4000004002000040L, 0x2400000000000020L, 0x81000000000180L, 0x10000000000004L, 0x1000000010L, 0x40046991f4L, 0x64b9509702000000L, true, 0, 0x80L), 4), 840246); - - // gentest-5651 - assertEqual(perft(new Board(0x2850870c619000L, 0x4000004002000040L, 0x2400000000000020L, 0x81000000000880L, 0x10000000000004L, 0x200000000010L, 0x400c6198f4L, 0x64b9708702000000L, false, 0, 0x80L), 4), 837936); - - // gentest-5652 - assertEqual(perft(new Board(0x2840870c619000L, 0x4000100002000040L, 0x440000000000020L, 0x180000000000880L, 0x10000000000004L, 0x200000000010L, 0x10000c6198f4L, 0x45f8608702000000L, true, 0, 0x80L), 4), 1199204); - - // gentest-5653 - assertEqual(perft(new Board(0x28408f04619000L, 0x4000100002000040L, 0x440000000000020L, 0x8100000000000880L, 0x10000000000008L, 0x200000000010L, 0x1008046198f8L, 0xc578608702000000L, false, 0, 0x80L), 4), 861685); - - // gentest-5654 - assertEqual(perft(new Board(0x2800cf04619000L, 0x4000100002000040L, 0x400800000000020L, 0x8100000000000880L, 0x10000001000000L, 0x200000000010L, 0x1008056198f0L, 0xc538a0c702000000L, true, 0, 0x80L), 4), 941711); - - // gentest-5655 - assertEqual(perft(new Board(0x28004f84619000L, 0x4000100002000040L, 0x400800000000020L, 0x8100000000000880L, 0x10000000000400L, 0x200000002000L, 0x10080461bce0L, 0xc538a04782000000L, false, 0, 0x0L), 4), 944516); - - // gentest-5656 - assertEqual(perft(new Board(0x28004f84219000L, 0x4000100002000040L, 0x2800000000020L, 0x8100000000000880L, 0x80000000400L, 0x200000002000L, 0x10088421bce0L, 0xc12aa84702000000L, true, 0, 0x0L), 4), 1811642); - - // gentest-5657 - assertEqual(perft(new Board(0x28004f84219000L, 0x4000140000000040L, 0x2800000800000L, 0x8100000000000880L, 0x80000000200L, 0x200000002000L, 0x100884a1bac0L, 0xc12aac4700000000L, false, 0, 0x0L), 4), 257913); - - // gentest-5658 - assertEqual(perft(new Board(0x28004f84219000L, 0x4000140000000040L, 0x2800000800000L, 0x8100000000000880L, 0x80000000004L, 0x200000002000L, 0x100884a1b8c4L, 0xc12aac4700000000L, true, 0, 0x0L), 4), 1724704); - - // gentest-5659 - assertEqual(perft(new Board(0x28004f84219000L, 0x4001100000000040L, 0x2800000800000L, 0x8100000000000880L, 0x80000000002L, 0x200000100000L, 0x100884b198c2L, 0xc12ba84700000000L, false, 0, 0x0L), 4), 1415536); - - // gentest-5660 - assertEqual(perft(new Board(0x28004784219000L, 0x4001100000000040L, 0x2800000000020L, 0x8100000000000880L, 0x800000002L, 0x1000100000L, 0x1000843198e2L, 0xc12b805f00000000L, true, 0, 0x0L), 4), 1242371); - - // gentest-5661 - assertEqual(perft(new Board(0x28004784219000L, 0x4001000000800000L, 0x2800000000020L, 0x8100000800000080L, 0x2L, 0x100000100000L, 0x884b190a2L, 0xc12b904700000000L, false, 0, 0x0L), 4), 762808); - - // gentest-5662 - assertEqual(perft(new Board(0x8404784219000L, 0x4001000000800000L, 0x2800000000020L, 0x8400000800000080L, 0x0L, 0x100000100000L, 0x884b190a0L, 0xc40bd04700000000L, true, 0, 0x0L), 4), 345777); - - // gentest-5663 - assertEqual(perft(new Board(0x8404784219000L, 0x4001000020000000L, 0x100800000000020L, 0x8400002000000080L, 0x0L, 0x100000100000L, 0x20a43190a0L, 0xc509d04700000000L, false, 0, 0x0L), 4), 39462); - - // gentest-5664 - assertEqual(perft(new Board(0x8404784219000L, 0x4001000020000000L, 0x100800000000020L, 0x8800000000000080L, 0x0L, 0x2000000800L, 0xa42198a0L, 0xc909c06700000000L, true, 0, 0x0L), 4), 334303); - - // gentest-5665 - assertEqual(perft(new Board(0x8404584219000L, 0x4001000020000000L, 0x100800000000020L, 0x8800000000000080L, 0x0L, 0x2000000008L, 0xa02190a8L, 0xc909c06504000000L, false, 0, 0x0L), 4), 257990); - - // gentest-5666 - assertEqual(perft(new Board(0x8404584219000L, 0x4000040020000000L, 0x2800000000020L, 0x8800000000000080L, 0x0L, 0x2000000400L, 0xa02194a0L, 0xc80ac46504000000L, true, 0, 0x0L), 4), 315508); - - // gentest-5667 - assertEqual(perft(new Board(0x8404504219000L, 0x4000040020000000L, 0x100800000000020L, 0x8800000000000080L, 0x0L, 0x2000000008L, 0x40202190a8L, 0xc908c42504000000L, false, 0, 0x0L), 4), 217168); - - // gentest-5668 - assertEqual(perft(new Board(0x8400504219000L, 0x4000040020000000L, 0x100800000800000L, 0xa000000000000080L, 0x0L, 0x4000000008L, 0x20a19088L, 0xe108c44504000000L, true, 0, 0x0L), 4), 320698); - - // gentest-5669 - assertEqual(perft(new Board(0x8400504219000L, 0x4000040000000000L, 0x100800000004000L, 0x8000000020000080L, 0x0L, 0x4000000400L, 0x21d480L, 0xc108c44524000000L, false, 0, 0x0L), 4), 321085); - - // gentest-5670 - assertEqual(perft(new Board(0x8400514218000L, 0x4001000000000000L, 0x100800000004000L, 0x8000000020000080L, 0x0L, 0x8000000400L, 0x1021c480L, 0xc109c08524000000L, true, 0, 0x0L), 4), 286674); - - // gentest-5671 - assertEqual(perft(new Board(0x8400515208000L, 0x1200000000000L, 0x100800000004000L, 0x8000000020000002L, 0x0L, 0x8000000400L, 0x1120c402L, 0x8109e08524000000L, false, 0, 0x0L), 4), 581684); - - // gentest-5672 - assertEqual(perft(new Board(0x480505208000L, 0x1200000000000L, 0x800010004000L, 0x8000000020000200L, 0x0L, 0x8000000400L, 0x120c600L, 0x8001e88534000000L, true, 0, 0x0L), 4), 127009); - - // gentest-5673 - assertEqual(perft(new Board(0x480505208000L, 0x240000000000L, 0x800010004000L, 0x8000000220000000L, 0x0L, 0x8000000800L, 0x20120c800L, 0x8000ec8534000000L, false, 0, 0x0L), 4), 493795); - - // gentest-5674 - assertEqual(perft(new Board(0x400d05208000L, 0x240000000000L, 0x800010004000L, 0x8000000280000000L, 0x0L, 0x8000040000L, 0x20124c000L, 0x8000e48d94000000L, true, 0, 0x0L), 4), 362688); - - // gentest-5675 - assertEqual(perft(new Board(0x400c05208000L, 0x240000000000L, 0x800010004000L, 0x8001000080000000L, 0x0L, 0x4000040000L, 0x100000124c000L, 0x8000e44c94000000L, false, 0, 0x0L), 4), 413835); - - // gentest-5676 - assertEqual(perft(new Board(0x400c05208000L, 0x200200000000000L, 0x800010004000L, 0x804000080000000L, 0x0L, 0x4000040000L, 0x400000124c000L, 0xa00e04c94000000L, true, 0, 0x0L), 4), 312853); - - // gentest-5677 - assertEqual(perft(new Board(0x400c05a00000L, 0x200200000000000L, 0x800010004000L, 0x808000080000000L, 0x0L, 0x2000040000L, 0x8000001a44000L, 0xa00e02c94000000L, false, 0, 0x0L), 4), 246547); - - // gentest-5678 - assertEqual(perft(new Board(0x4c05a00000L, 0x200200000000000L, 0x800000004002L, 0x840000080000000L, 0x0L, 0x2000040000L, 0x40000001a44000L, 0xa00a06c84000002L, true, 0, 0x0L), 4), 240946); - - // gentest-5679 - assertEqual(perft(new Board(0x4c05a00000L, 0x200008000000000L, 0x800000004002L, 0x820000080000000L, 0x0L, 0x2000040000L, 0x20000001a44000L, 0xa0080ec84000002L, false, 0, 0x0L), 4), 29518); - - // gentest-5680 - assertEqual(perft(new Board(0x4c05a00000L, 0x200008000000000L, 0x800000004002L, 0x2000080080000000L, 0x0L, 0x1000040000L, 0x2000000001a44000L, 0x20088dc84000002L, true, 0, 0x0L), 4), 202243); - - // gentest-5681 - assertEqual(perft(new Board(0x4c25800000L, 0x200008000000000L, 0x800000004002L, 0x2000080080000000L, 0x0L, 0x100000000200L, 0x2000000021804200L, 0x20098cc84000002L, false, 0, 0x0L), 4), 319345); - - // gentest-5682 - assertEqual(perft(new Board(0x4c25000000L, 0x200008000000000L, 0x800000000022L, 0x2000080000800000L, 0x0L, 0x8000000000200L, 0x2000000021000220L, 0x20888cc04800002L, true, 0, 0x0L), 4), 407948); - - // gentest-5683 - assertEqual(perft(new Board(0x4c01040000L, 0x200008000000000L, 0x800000000022L, 0x2000080000800000L, 0x0L, 0x8000000000004L, 0x2000004001000024L, 0x208888c00840002L, false, 0, 0x0L), 4), 492030); - - // gentest-5684 - assertEqual(perft(new Board(0x4c01040000L, 0x200008000000000L, 0x800000080002L, 0x2000200080000000L, 0x0L, 0x8000000000004L, 0x2000004001080004L, 0x208a08c80040002L, true, 0, 0x0L), 4), 591703); - - // gentest-5685 - assertEqual(perft(new Board(0x4c01040000L, 0x200008000000000L, 0x800000001002L, 0x800200080000000L, 0x0L, 0x10000000000004L, 0x800004001001004L, 0x210a08c80040002L, false, 0, 0x0L), 4), 676086); - - // gentest-5686 - assertEqual(perft(new Board(0x409040000L, 0x200008000000000L, 0x4000001002L, 0x800200080000000L, 0x0L, 0x10000000000008L, 0x800000001001008L, 0x21020c488040002L, true, 0, 0x0L), 4), 559281); - - // gentest-5687 - assertEqual(perft(new Board(0x409040000L, 0x8008000000000L, 0x2004000000002L, 0x800200080000000L, 0x0L, 0x10000000000008L, 0x802000001000008L, 0x1820c488040002L, false, 0, 0x0L), 4), 598033); - - // gentest-5688 - assertEqual(perft(new Board(0x409040000L, 0x8008000000000L, 0x2004010000000L, 0x400200040000000L, 0x0L, 0x10000000000008L, 0x402000001000008L, 0x1820c458040000L, true, 0, 0x0L), 4), 612383); - - // gentest-5689 - assertEqual(perft(new Board(0x9040000L, 0x28000000000L, 0x14010000000L, 0x200440000000L, 0x0L, 0x10000000000008L, 0x10401000008L, 0x1022c058040000L, false, 0, 0x0L), 4), 856037); - - // gentest-5690 - assertEqual(perft(new Board(0x9040000L, 0x28000000000L, 0x54000000000L, 0x201040000000L, 0x0L, 0x20000000000008L, 0x11001000008L, 0x2026c048040000L, true, 0, 0x0L), 4), 841984); - - // gentest-5691 - assertEqual(perft(new Board(0x8040000L, 0x28000000000L, 0x14001000000L, 0x200040000400L, 0x0L, 0x20000000000008L, 0x10000000408L, 0x2022c049040000L, false, 0, 0x0L), 4), 186089); - - // gentest-5692 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x400004001000000L, 0x200080000400L, 0x0L, 0x20000000000008L, 0x400000000000408L, 0x2020c08d040000L, true, 0, 0x0L), 4), 167257); - - // gentest-5693 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x4000004001000000L, 0x200080000400L, 0x0L, 0x40000000000008L, 0x4000000000000408L, 0x4020c08d040000L, false, 0, 0x0L), 4), 184265); - - // gentest-5694 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x4000004001000000L, 0x20000080000400L, 0x0L, 0x40000000001000L, 0x4000000000001400L, 0x6000c08d040000L, true, 0, 0x0L), 4), 260997); - - // gentest-5695 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x4000044000000000L, 0x20000080000800L, 0x0L, 0x40000000000008L, 0x4000000000000808L, 0x6004c08c040000L, false, 0, 0x0L), 4), 539219); - - // gentest-5696 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x4000004000200000L, 0x1000080000800L, 0x0L, 0x40000000000010L, 0x4000000000000810L, 0x4100c08c240000L, true, 0, 0x0L), 4), 759261); - - // gentest-5697 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x404800000000L, 0x1000080000800L, 0x0L, 0x40000000000010L, 0x400000000810L, 0x4100c88c040000L, false, 0, 0x0L), 4), 1094378); - - // gentest-5698 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x404000004000L, 0x1000040000008L, 0x0L, 0x40000000000010L, 0x400000000018L, 0x4100c04c044000L, true, 0, 0x0L), 4), 721283); - - // gentest-5699 - assertEqual(perft(new Board(0x8040000L, 0x8004000000L, 0x90000000004000L, 0x1000040000008L, 0x0L, 0x40000000001000L, 0x80000000001008L, 0x5100804c044000L, false, 0, 0x0L), 4), 822785); - - // gentest-5700 - assertEqual(perft(new Board(0x8040000L, 0x8000000200L, 0x90000000004000L, 0x1000080000080L, 0x0L, 0x40000000001000L, 0x80000000001080L, 0x51008088044200L, true, 0, 0x0L), 4), 661139); - - // gentest-5701 - assertEqual(perft(new Board(0x8040000L, 0x8000000200L, 0x90000000004000L, 0x1000000808000L, 0x0L, 0x40000000002000L, 0x8000000000a000L, 0x51008008844200L, false, 0, 0x0L), 4), 384773); - - // gentest-5702 - assertEqual(perft(new Board(0x8040000L, 0x8000000200L, 0x90040000000000L, 0x4000000800080L, 0x0L, 0x40000000002000L, 0x80000000002080L, 0x54048008840200L, true, 0, 0x0L), 4), 652424); - - // gentest-5703 - assertEqual(perft(new Board(0x8040000L, 0x400200L, 0x90040000000000L, 0x4000000800040L, 0x0L, 0x40000000000010L, 0x80000000000050L, 0x54040008c40200L, false, 0, 0x0L), 4), 270394); - - // gentest-5704 - assertEqual(perft(new Board(0xc0000L, 0x400200L, 0x10002010000000L, 0x4000000800040L, 0x0L, 0x40000000000010L, 0x2000000050L, 0x54000010cc0200L, true, 0, 0x0L), 4), 298618); - - // gentest-5705 - assertEqual(perft(new Board(0xc0000L, 0x200L, 0x410000010000000L, 0x4000000400000L, 0x0L, 0x40000000000010L, 0x400000000000010L, 0x540000104c0200L, false, 0, 0x0L), 4), 149434); - - // gentest-5706 - assertEqual(perft(new Board(0x40800L, 0x200L, 0x410000010000000L, 0x4004000000000L, 0x0L, 0x40000000002000L, 0x400000000002000L, 0x54004010040a00L, true, 0, 0x0L), 4), 286950); - - // gentest-5707 - assertEqual(perft(new Board(0x40000L, 0x208L, 0x12000010000000L, 0x4004000000000L, 0x0L, 0x40000000000020L, 0x2000000000020L, 0x54004010040208L, false, 0, 0x0L), 4), 161425); - - // gentest-5708 - assertEqual(perft(new Board(0x40000L, 0x2200L, 0x110000010000000L, 0x4004000000000L, 0x0L, 0x800000000020L, 0x100000000000020L, 0x14804010042200L, true, 0, 0x0L), 4), 162057); - - // gentest-5709 - assertEqual(perft(new Board(0x40000L, 0x2200L, 0x410000010000000L, 0x4000800000000L, 0x0L, 0x800000000020L, 0x400000000000020L, 0x14800810042200L, false, 0, 0x0L), 4), 278835); - - // gentest-5710 - assertEqual(perft(new Board(0x40000L, 0x2200L, 0xc00000010000000L, 0x4000800000000L, 0x0L, 0x800000001000L, 0x400000000001000L, 0x804800810042200L, true, 0, 0x0L), 4), 271673); - - // gentest-5711 - assertEqual(perft(new Board(0x40000L, 0x2200L, 0xc00000010000000L, 0x4000000080000L, 0x0L, 0x800000001000L, 0x400000000001000L, 0x8048000100c2200L, false, 0, 0x0L), 4), 191207); - - // gentest-5712 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x800000010800000L, 0x4000000000008L, 0x0L, 0x800000001000L, 0x801000L, 0x804800010040288L, true, 0, 0x0L), 4), 142441); - - // gentest-5713 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x1900000000000000L, 0x4000000000008L, 0x0L, 0x800000001000L, 0x1000000000001000L, 0x904800000040288L, false, 0, 0x0L), 4), 109267); - - // gentest-5714 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x900000000000000L, 0x20000000000040L, 0x0L, 0x800000001000L, 0x1000L, 0x9208000000402c0L, true, 0, 0x0L), 4), 5408); - - // gentest-5715 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x900000000000000L, 0x40000000000040L, 0x0L, 0x800020000000L, 0x20000000L, 0x9408000000402c0L, false, 0, 0x0L), 4), 18248); - - // gentest-5716 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x900000000000000L, 0x20000000000040L, 0x0L, 0x802000000000L, 0x2000000000L, 0x9208000000402c0L, true, 0, 0x0L), 4), 14526); - - // gentest-5717 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x900000000000000L, 0x20000000000004L, 0x0L, 0x900000000000L, 0x100000000000L, 0x920800000040284L, false, 0, 0x0L), 4), 17931); - - // gentest-5718 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x104000000000000L, 0x2000000000004L, 0x0L, 0x880000000000L, 0x80000000000L, 0x106800000040284L, true, 0, 0x0L), 4), 31682); - - // gentest-5719 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x104000000000000L, 0x2000000000004L, 0x0L, 0x8800000000L, 0x800000000L, 0x106008000040284L, false, 0, 0x0L), 4), 20281); - - // gentest-5720 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x104000000000000L, 0x800000004L, 0x0L, 0x108000000000L, 0x100000000000L, 0x104008800040284L, true, 0, 0x0L), 4), 27098); - - // gentest-5721 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x100000020000000L, 0x800000004L, 0x0L, 0x108000000000L, 0x100000000000L, 0x100008820040284L, false, 0, 0x0L), 4), 27674); - - // gentest-5722 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x100000000400000L, 0x400000004L, 0x0L, 0x20008000000000L, 0x20000000000000L, 0x100008400440284L, true, 0, 0x0L), 4), 60085); - - // gentest-5723 - assertEqual(perft(new Board(0x40000L, 0x280L, 0x100000000400000L, 0x4000000004L, 0x0L, 0x80008000000000L, 0x80000000000000L, 0x10000c000440284L, false, 0, 0x0L), 4), 5306); - - // gentest-5724 - assertEqual(perft(new Board(0x40000L, 0x4000080L, 0x100000000400000L, 0x4000000004L, 0x0L, 0x8000800000000000L, 0x8000000000000000L, 0x100804004440084L, true, 0, 0x0L), 4), 0); - - // gentest-5725 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5726 - assertEqual(perft(new Board(0xbf400080087700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x800877ffL, 0xffbf400000000000L, false, 0, 0x8100000000000081L), 4), 388092); - - // gentest-5727 - assertEqual(perft(new Board(0x8f403080087700L, 0x4200000000000042L, 0x2400800000000020L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x8000800877fbL, 0xff8f403000000000L, true, 0, 0x8100000000000081L), 4), 804926); - - // gentest-5728 - assertEqual(perft(new Board(0x8f4030800c7300L, 0x4200000000000042L, 0x400800000010020L, 0x8100000000800001L, 0x800000000000008L, 0x1000000000000010L, 0x8000808c737bL, 0xdf8f403000010000L, false, 0, 0x8100000000000001L), 4), 847050); - - // gentest-5729 - assertEqual(perft(new Board(0x8f4030800c7300L, 0x4200000000000042L, 0x400800400000020L, 0x8100000000100001L, 0x800000000000008L, 0x1000000000000010L, 0x8000801c737bL, 0xdf8f403400000000L, true, 0, 0x8100000000000001L), 4), 758853); - - // gentest-5730 - assertEqual(perft(new Board(0x8f403086087100L, 0x210000000000042L, 0x400800400000020L, 0x8100000000100001L, 0x800000000000008L, 0x1000000000000010L, 0x80008618717bL, 0x9f9f403400000000L, false, 0, 0x8100000000000001L), 4), 494313); - - // gentest-5731 - assertEqual(perft(new Board(0x8c423186087100L, 0x210000000000042L, 0x400004400000020L, 0x8100000000100001L, 0x800000000000008L, 0x1000000000000010L, 0x408618717bL, 0x9f9c423500000000L, true, 0, 0x8100000000000001L), 4), 766330); - - // gentest-5732 - assertEqual(perft(new Board(0x8c423186087100L, 0x210000000000840L, 0x400004400000020L, 0x2100000000200001L, 0x800000000000008L, 0x4000000000000010L, 0x4086287979L, 0x6f9c423500000000L, false, 0, 0x1L), 4), 895569); - - // gentest-5733 - assertEqual(perft(new Board(0x8c423186087100L, 0x210000000020040L, 0x400084000000020L, 0x2100000000200001L, 0x800000000000008L, 0x8000000000000010L, 0x40862a7179L, 0xaf9c4a3100000000L, true, 0, 0x1L), 4), 907969); - - // gentest-5734 - assertEqual(perft(new Board(0x8c42218c007100L, 0x210000000020040L, 0x400084000000020L, 0x2100000000200001L, 0x800000000000008L, 0x8000000000000010L, 0x4184227179L, 0xaf9c4a2008000000L, false, 0, 0x1L), 4), 1316186); - - // gentest-5735 - assertEqual(perft(new Board(0x8c422184007100L, 0x210000008000040L, 0x400084000000020L, 0x20010000200001L, 0x800000000000008L, 0x8000000000000010L, 0x418c207179L, 0x8ebc4b2000000000L, true, 0, 0x1L), 4), 1559221); - - // gentest-5736 - assertEqual(perft(new Board(0x8c4a2180007100L, 0x210000008000040L, 0x400004000000020L, 0x2000010000200001L, 0x800000000000008L, 0x8000000000000010L, 0x84188207179L, 0xae9c432000000000L, false, 0, 0x1L), 4), 1016463); - - // gentest-5737 - assertEqual(perft(new Board(0x8c4a01a0007100L, 0x200040008000040L, 0x400004000000020L, 0x2000010000200001L, 0x800000000020000L, 0x8000000000000010L, 0x84188227171L, 0xae8c470020000000L, true, 0, 0x1L), 4), 1539487); - - // gentest-5738 - assertEqual(perft(new Board(0x8c4a8120007100L, 0x210000008000040L, 0x400004000000020L, 0x2000010000200001L, 0x800000000020000L, 0x8000000000000008L, 0x8c108227169L, 0xae9c430020000000L, false, 0, 0x0L), 4), 1351108); - - // gentest-5739 - assertEqual(perft(new Board(0x884a8520007100L, 0x210000008000040L, 0x2004000000020L, 0x2000010000200001L, 0x820000000000000L, 0x8000000000000008L, 0x2008c108207169L, 0xaa9a430420000000L, true, 0, 0x0L), 4), 1586242); - - // gentest-5740 - assertEqual(perft(new Board(0x98428128007100L, 0x200000000000040L, 0x2004000000020L, 0x2000010000200001L, 0x800000004000000L, 0x8000000000000008L, 0x1000c104207169L, 0xaa8a430028000000L, false, 0, 0x0L), 4), 2032970); - - // gentest-5741 - assertEqual(perft(new Board(0x98428128007100L, 0x200000000000040L, 0x2004000000020L, 0x4000010000200001L, 0x4000000000000L, 0x8000000000000008L, 0x1000c100207169L, 0xc28e430028000000L, true, 0, 0x0L), 4), 993508); - - // gentest-5742 - assertEqual(perft(new Board(0x98428138006100L, 0x200000000000040L, 0x2014000000000L, 0x2000000000200001L, 0x4000000000000L, 0x8000000000000008L, 0x1001c110206149L, 0xa28e420028000000L, false, 0, 0x0L), 4), 1479078); - - // gentest-5743 - assertEqual(perft(new Board(0x98408338006100L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x4000000000000L, 0x8000000000000010L, 0x1001c110206151L, 0xa28c400a28000000L, true, 0, 0x0L), 4), 1817163); - - // gentest-5744 - assertEqual(perft(new Board(0x88408338006100L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x40000000000L, 0x8000000000000020L, 0x200001c110206161L, 0x8288440a28000000L, false, 0, 0x0L), 4), 77903); - - // gentest-5745 - assertEqual(perft(new Board(0x88408339006000L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x4000000L, 0x40000000000020L, 0x200001c111206061L, 0x2c8400a2c000000L, true, 0, 0x0L), 4), 90242); - - // gentest-5746 - assertEqual(perft(new Board(0x88408339006000L, 0x200000000000040L, 0x30010000000000L, 0x2000000000200001L, 0x4000000L, 0x40000000000010L, 0x2010018111206051L, 0x2e840022c000000L, false, 0, 0x0L), 4), 1112399); - - // gentest-5747 - assertEqual(perft(new Board(0x880c339006000L, 0x200000000000040L, 0x30010000000000L, 0x2000000000200002L, 0x4000000L, 0x40000000000010L, 0x2010018111206052L, 0x26880422c000000L, true, 0, 0x0L), 4), 1148946); - - // gentest-5748 - assertEqual(perft(new Board(0x8808339006000L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x4000000L, 0x40000000000010L, 0x200001c111206051L, 0x248800a2c000000L, false, 0, 0x0L), 4), 971678); - - // gentest-5749 - assertEqual(perft(new Board(0x8808339006000L, 0x40000000040L, 0x10010800000000L, 0x2000000000200001L, 0x20L, 0x40000000000010L, 0x2010018111206051L, 0x48840a28000020L, true, 0, 0x0L), 4), 44089); - - // gentest-5750 - assertEqual(perft(new Board(0x8808339006000L, 0x40000000040L, 0x10010000000100L, 0x20000000200001L, 0x20L, 0x40000000000800L, 0x30018111206841L, 0x48840228000120L, false, 0, 0x0L), 4), 129906); - - // gentest-5751 - assertEqual(perft(new Board(0x808b39006000L, 0x40000000040L, 0x10010000000100L, 0x80001L, 0x20L, 0x20000000000800L, 0x10018111086841L, 0x20840a28000120L, true, 0, 0x0L), 4), 791055); - - // gentest-5752 - assertEqual(perft(new Board(0x808b39006000L, 0x40000800000L, 0x10010000000100L, 0x200001L, 0x2L, 0x20000000000800L, 0x10018111a06801L, 0x20840a28000102L, false, 0, 0x0L), 4), 535346); - - // gentest-5753 - assertEqual(perft(new Board(0x808b39006000L, 0x40000800000L, 0x10080000100L, 0x200001L, 0x80L, 0x4000000000000800L, 0x18191a06801L, 0x4000840a28000180L, true, 0, 0x0L), 4), 730569); - - // gentest-5754 - assertEqual(perft(new Board(0x808b39006000L, 0x2800000L, 0x10080000100L, 0x240000L, 0x80L, 0x4000000000000800L, 0x18191a46800L, 0x4000800a2a000180L, false, 0, 0x0L), 4), 482046); - - // gentest-5755 - assertEqual(perft(new Board(0x808b39006000L, 0x10000800000L, 0x80000100L, 0x240000L, 0x0L, 0x4000000000000008L, 0x8191a46008L, 0x4000810a28000100L, true, 0, 0x0L), 4), 244873); - - // gentest-5756 - assertEqual(perft(new Board(0x808b19006000L, 0x200000020000000L, 0x80000100L, 0x300000L, 0x0L, 0x4000000000000008L, 0x81b1306008L, 0x4200800a08000100L, false, 0, 0x0L), 4), 182136); - - // gentest-5757 - assertEqual(perft(new Board(0x808b19006000L, 0x200100000000000L, 0x80000100L, 0x300000L, 0x0L, 0x4000000000000008L, 0x108191306008L, 0x4200800a08000100L, true, 0, 0x0L), 4), 202543); - - // gentest-5758 - assertEqual(perft(new Board(0x808b19006000L, 0x204000000000000L, 0x80000100L, 0x20100000L, 0x0L, 0x8000000000000008L, 0x40081b1106008L, 0x8200800a08000100L, false, 0, 0x0L), 4), 216456); - - // gentest-5759 - assertEqual(perft(new Board(0x808b19006000L, 0x204000000000000L, 0x80000100L, 0x20040000L, 0x0L, 0x80000000000008L, 0x40081b1046008L, 0x280800a08000100L, true, 0, 0x0L), 4), 260086); - - // gentest-5760 - assertEqual(perft(new Board(0x808b19006000L, 0x204000000000000L, 0x80000100L, 0x20020000L, 0x0L, 0x40000000000008L, 0x40081b1026008L, 0x240800a08000100L, false, 0, 0x0L), 4), 177526); - - // gentest-5761 - assertEqual(perft(new Board(0x808b19006000L, 0x4040000000000L, 0x80000100L, 0x20800000L, 0x0L, 0x8000000000000008L, 0x40081b1806008L, 0x8000840a08000100L, true, 0, 0x0L), 4), 306280); - - // gentest-5762 - assertEqual(perft(new Board(0x808a19006000L, 0x1000000100000000L, 0x80000100L, 0x20100000L, 0x0L, 0x8000000000000008L, 0x10000080b1106008L, 0x8000800b08000100L, false, 0, 0x0L), 4), 182662); - - // gentest-5763 - assertEqual(perft(new Board(0x809a09006000L, 0x1000000100000000L, 0x80000100L, 0x20100000L, 0x0L, 0x80000000000008L, 0x10000090a1106008L, 0x80800b08000100L, true, 0, 0x0L), 4), 179657); - - // gentest-5764 - assertEqual(perft(new Board(0x809a09006000L, 0x1000000000020000L, 0x800000000000100L, 0x20100000L, 0x0L, 0x80000000000010L, 0x1800009021106010L, 0x80800a08020100L, false, 0, 0x0L), 4), 180496); - - // gentest-5765 - assertEqual(perft(new Board(0x809a09006000L, 0x1000000000080000L, 0x800000000000100L, 0x2000000000100000L, 0x0L, 0x80000000000010L, 0x3800009001106010L, 0x80800a08080100L, true, 0, 0x0L), 4), 22725); - - // gentest-5766 - assertEqual(perft(new Board(0x809a09006000L, 0x1000000002000000L, 0x800000000000100L, 0x2000000000020000L, 0x0L, 0x80000000000800L, 0x3800009001026800L, 0x80800a0a000100L, false, 0, 0x0L), 4), 106240); - - // gentest-5767 - assertEqual(perft(new Board(0x809a01086000L, 0x1000000000000400L, 0x4000000100L, 0x2000000000020000L, 0x0L, 0x80000000000800L, 0x300000d001026800L, 0x80800a00080500L, true, 0, 0x0L), 4), 151020); - - // gentest-5768 - assertEqual(perft(new Board(0x9a01086000L, 0x1000000000100000L, 0x800000000100L, 0x220000L, 0x0L, 0x80000000000800L, 0x1000809001226800L, 0x80000a00180100L, false, 0, 0x0L), 4), 170330); - - // gentest-5769 - assertEqual(perft(new Board(0x9a01086000L, 0x1000000000100000L, 0x800000000100L, 0x20020000L, 0x0L, 0x8000000000000800L, 0x1000809021026800L, 0x8000000a00180100L, true, 0, 0x0L), 4), 187417); - - // gentest-5770 - assertEqual(perft(new Board(0x9a01086000L, 0x80000100000L, 0x800000020000L, 0x20000000000000L, 0x0L, 0x8000000000000800L, 0x20889001006800L, 0x8000000a001a0000L, false, 0, 0x0L), 4), 198041); - - // gentest-5771 - assertEqual(perft(new Board(0x9a01086000L, 0x80000100000L, 0x4000000008L, 0x20000000000000L, 0x0L, 0x8000000000000800L, 0x2008d001006800L, 0x8000000a00180008L, true, 0, 0x0L), 4), 292574); - - // gentest-5772 - assertEqual(perft(new Board(0x9a01184000L, 0x2000000000000L, 0x4000020000L, 0x20000000000000L, 0x0L, 0x8000000000000800L, 0x2200d001104800L, 0x8000000a000a0000L, false, 0, 0x0L), 4), 70913); - - // gentest-5773 - assertEqual(perft(new Board(0x9a01184000L, 0x2000000000000L, 0x4000000400L, 0x8000000000000L, 0x0L, 0x4000000000000800L, 0xa00d001104800L, 0x4000000a00080400L, true, 0, 0x0L), 4), 58165); - - // gentest-5774 - assertEqual(perft(new Board(0x9a01184000L, 0x800000000000000L, 0x4000000008L, 0x80000000000000L, 0x0L, 0x4000000000000800L, 0x88000d001104800L, 0x4000000a00080008L, false, 0, 0x0L), 4), 89073); - - // gentest-5775 - assertEqual(perft(new Board(0x9b00184000L, 0x800000000000000L, 0x4000020000L, 0x80000000000000L, 0x0L, 0x4000000000000800L, 0x88000d100104800L, 0x4000000a000a0000L, true, 0, 0x0L), 4), 52000); - - // gentest-5776 - assertEqual(perft(new Board(0x9b00184000L, 0x100000000000L, 0x800001000000L, 0x80000000000000L, 0x0L, 0x4000000000000800L, 0x80909100104800L, 0x4000000a01080000L, false, 0, 0x0L), 4), 30583); - - // gentest-5777 - assertEqual(perft(new Board(0x9902184000L, 0x800000000000000L, 0x800001000000L, 0x0L, 0x0L, 0x80000000000800L, 0x800809100104800L, 0x80000803080000L, true, 0, 0x0L), 4), 33814); - - // gentest-5778 - assertEqual(perft(new Board(0x914a100000L, 0x800000000000000L, 0x800001000000L, 0x0L, 0x0L, 0x80000000080000L, 0x800809140180000L, 0x8000000b000000L, false, 0, 0x0L), 4), 33522); - - // gentest-5779 - assertEqual(perft(new Board(0x914a100000L, 0x800000000000000L, 0x800010000000L, 0x0L, 0x0L, 0x80000004000000L, 0x800809144100000L, 0x8000001a000000L, true, 0, 0x0L), 4), 68909); - - // gentest-5780 - assertEqual(perft(new Board(0x801142100000L, 0x800000000000000L, 0x4010000000L, 0x0L, 0x0L, 0x80000004000000L, 0x800805144000000L, 0x80000012100000L, false, 0, 0x0L), 4), 64443); - - // gentest-5781 - assertEqual(perft(new Board(0x801142100000L, 0x800000000000000L, 0x4000004000L, 0x0L, 0x0L, 0x4000000000020000L, 0x800805140020000L, 0x4000000002104000L, true, 0, 0x0L), 4), 48260); - - // gentest-5782 - assertEqual(perft(new Board(0x801140100000L, 0x800000000000000L, 0x40020000000L, 0x0L, 0x0L, 0x4000000002000000L, 0x800801162000000L, 0x4000040000100000L, false, 0, 0x0L), 4), 62453); - - // gentest-5783 - assertEqual(perft(new Board(0x801140100000L, 0x0L, 0x2000020000000L, 0x0L, 0x0L, 0x4000000002000000L, 0x801162000000L, 0x4002000000100000L, true, 0, 0x0L), 4), 39328); - - // gentest-5784 - assertEqual(perft(new Board(0x801140100000L, 0x0L, 0x2000000400000L, 0x0L, 0x0L, 0x80000000040000L, 0x801140440000L, 0x82000000100000L, false, 0, 0x0L), 4), 42275); - - // gentest-5785 - assertEqual(perft(new Board(0x801140100000L, 0x0L, 0x40000400000L, 0x0L, 0x0L, 0x80000004000000L, 0x801144400000L, 0x80040000100000L, true, 0, 0x0L), 4), 44398); - - // gentest-5786 - assertEqual(perft(new Board(0x801140100000L, 0x0L, 0x8000000000800L, 0x0L, 0x0L, 0x80000004000000L, 0x801144000800L, 0x88000000100000L, false, 0, 0x0L), 4), 35738); - - // gentest-5787 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x8000000100000L, 0x0L, 0x0L, 0x2000000004000000L, 0x801144100000L, 0x2008000000000000L, true, 0, 0x0L), 4), 48806); - - // gentest-5788 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x8004000000000L, 0x0L, 0x0L, 0x1000000000080000L, 0x805140080000L, 0x1008000000000000L, false, 0, 0x0L), 4), 26357); - - // gentest-5789 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x4200000000L, 0x0L, 0x0L, 0x1000000000000800L, 0x805140000800L, 0x1000000200000000L, true, 0, 0x0L), 4), 31268); - - // gentest-5790 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x200000001000L, 0x0L, 0x0L, 0x1000000000000400L, 0xa01140000400L, 0x1000000000001000L, false, 0, 0x0L), 4), 28502); - - // gentest-5791 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x820000000000000L, 0x0L, 0x0L, 0x1000000000000400L, 0x800801140000400L, 0x1020000000000000L, true, 0, 0x0L), 4), 31353); - - // gentest-5792 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x24000000000000L, 0x0L, 0x0L, 0x2000000000080000L, 0x4801140080000L, 0x2020000000000000L, false, 0, 0x0L), 4), 26241); - - // gentest-5793 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x24000000000000L, 0x0L, 0x0L, 0x2000000004000000L, 0x4801144000000L, 0x2020000000000000L, true, 0, 0x0L), 4), 11882); - - // gentest-5794 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x20080000000000L, 0x0L, 0x0L, 0x10000400000000L, 0x881540000000L, 0x30000000000000L, false, 0, 0x0L), 4), 7098); - - // gentest-5795 - assertEqual(perft(new Board(0x801140000000L, 0x0L, 0x24000000000000L, 0x0L, 0x0L, 0x8000400000000L, 0x4801540000000L, 0x28000000000000L, true, 0, 0x0L), 4), 23037); - - // gentest-5796 - assertEqual(perft(new Board(0x811040000000L, 0x0L, 0x1000080000000000L, 0x0L, 0x0L, 0x8000400000000L, 0x891440000000L, 0x1008000000000000L, false, 0, 0x0L), 4), 11922); - - // gentest-5797 - assertEqual(perft(new Board(0x811040000000L, 0x0L, 0x3000000000000000L, 0x0L, 0x0L, 0x4000400000000L, 0x2000811440000000L, 0x1004000000000000L, true, 0, 0x0L), 4), 17461); - - // gentest-5798 - assertEqual(perft(new Board(0x811040000000L, 0x0L, 0x2000000001000000L, 0x0L, 0x0L, 0x4000004000000L, 0x2000811044000000L, 0x4000001000000L, false, 0, 0x0L), 4), 33373); - - // gentest-5799 - assertEqual(perft(new Board(0x1801040000000L, 0x0L, 0x2000000000000400L, 0x0L, 0x0L, 0x4000004000000L, 0x2001801044000000L, 0x4000000000400L, true, 0, 0x0L), 4), 57476); - - // gentest-5800 - assertEqual(perft(new Board(0x1801040000000L, 0x0L, 0x2000000010000000L, 0x0L, 0x0L, 0x4000004000000L, 0x2001801044000000L, 0x4000010000000L, false, 0, 0x0L), 4), 87051); - - // gentest-5801 - assertEqual(perft(new Board(0x1805000000000L, 0x0L, 0x2000000010000000L, 0x0L, 0x0L, 0x4000004000000L, 0x2001805004000000L, 0x4000010000000L, true, 0, 0x0L), 4), 81297); - - // gentest-5802 - assertEqual(perft(new Board(0x805000000000L, 0x0L, 0x2100040000000000L, 0x0L, 0x0L, 0x4000400000000L, 0x2100805400000000L, 0x4040000000000L, false, 0, 0x0L), 4), 44877); - - // gentest-5803 - assertEqual(perft(new Board(0x805000000000L, 0x0L, 0x2108000000000000L, 0x0L, 0x0L, 0x800000002000000L, 0x2100805002000000L, 0x808000000000000L, true, 0, 0x0L), 4), 54814); - - // gentest-5804 - assertEqual(perft(new Board(0x80005000000000L, 0x0L, 0x2002002000000000L, 0x0L, 0x0L, 0x800000002000000L, 0x2082005002000000L, 0x800002000000000L, false, 0, 0x0L), 4), 116474); - - // gentest-5805 - assertEqual(perft(new Board(0x80005000000000L, 0x0L, 0x2800000000002L, 0x0L, 0x0L, 0x800000002000000L, 0x82805002000000L, 0x800000000000002L, true, 0, 0x0L), 4), 69236); - - // gentest-5806 - assertEqual(perft(new Board(0x80401000000000L, 0x0L, 0x800800000002L, 0x0L, 0x0L, 0x8000002000000L, 0x80c01802000000L, 0x8000000000002L, false, 0, 0x0L), 4), 119673); - - // gentest-5807 - assertEqual(perft(new Board(0x80401000000000L, 0x0L, 0x100800000000400L, 0x0L, 0x0L, 0x8000002000000L, 0x180c01002000000L, 0x8000000000400L, true, 0, 0x0L), 4), 105795); - - // gentest-5808 - assertEqual(perft(new Board(0x80401000000000L, 0x0L, 0x40000000c00L, 0x0L, 0x0L, 0x100002000000L, 0x80441002000800L, 0x100000000400L, false, 0, 0x0L), 4), 95780); - - // gentest-5809 - assertEqual(perft(new Board(0x80401000000000L, 0x0L, 0x14000800L, 0x0L, 0x0L, 0x100002000000L, 0x80401012000800L, 0x100004000000L, true, 0, 0x0L), 4), 93367); - - // gentest-5810 - assertEqual(perft(new Board(0x80401000000000L, 0x0L, 0x10101000L, 0x0L, 0x0L, 0x100002000000L, 0x80401012100000L, 0x100000001000L, false, 0, 0x0L), 4), 132980); - - // gentest-5811 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5812 - assertEqual(perft(new Board(0xff00000104fa00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x104faffL, 0xfdff040000000000L, false, 0, 0x8100000000000081L), 4), 260364); - - // gentest-5813 - assertEqual(perft(new Board(0xd728000104fa00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x104fbfeL, 0xfdd72c0000000000L, true, 0, 0x8100000000000080L), 4), 374543); - - // gentest-5814 - assertEqual(perft(new Board(0x9728400106f800L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x106f8ffL, 0xfd972c4000000000L, false, 0, 0x8100000000000080L), 4), 392493); - - // gentest-5815 - assertEqual(perft(new Board(0x8728500106f800L, 0x4000000002800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x186f8bfL, 0xfd87285002000000L, true, 0, 0x8100000000000080L), 4), 526284); - - // gentest-5816 - assertEqual(perft(new Board(0x8728500146b800L, 0x4000000002800002L, 0x2000000040000024L, 0x8100000000010080L, 0x800000000000008L, 0x1000000000000010L, 0x1c7b8beL, 0xf987285042000000L, false, 0, 0x8100000000000080L), 4), 540869); - - // gentest-5817 - assertEqual(perft(new Board(0x8728500146b800L, 0x4000040000800002L, 0x2000000040000024L, 0x8100000000000081L, 0x800000000000008L, 0x10000000000010L, 0x1c6b8bfL, 0xe9972c5040000000L, true, 0, 0x80L), 4), 539873); - - // gentest-5818 - assertEqual(perft(new Board(0x8728100542b800L, 0x4000044000000002L, 0x2000000040000024L, 0x8100000000000081L, 0x400000000000008L, 0x10000000000010L, 0x400542b8bfL, 0xe5972c1040000000L, false, 0, 0x80L), 4), 927640); - - // gentest-5819 - assertEqual(perft(new Board(0x8728100542b800L, 0x4000044000000002L, 0x2000000040010020L, 0x9000000000000081L, 0x2000000008L, 0x10000000000010L, 0x400543b8bbL, 0xf0972c3040000000L, true, 0, 0x80L), 4), 1166487); - - // gentest-5820 - assertEqual(perft(new Board(0x8728100542b800L, 0x4800000000800002L, 0x2000000040010020L, 0x9000000000000081L, 0x2000000004L, 0x10000000000010L, 0x5c3b8b7L, 0xf897283040000000L, false, 0, 0x80L), 4), 767543); - - // gentest-5821 - assertEqual(perft(new Board(0x8728140142b800L, 0x4800000000800002L, 0x2000100000010020L, 0x9000000000000081L, 0x400000000000004L, 0x10000000000010L, 0x401c3b8b7L, 0xfc97381000000000L, true, 0, 0x80L), 4), 603013); - - // gentest-5822 - assertEqual(perft(new Board(0x8728140142b800L, 0x800800000800002L, 0x2000140000010000L, 0x9000000000000081L, 0x400000000000004L, 0x10000000000010L, 0x40401c3b897L, 0xbc97b81000000000L, false, 0, 0x80L), 4), 1048072); - - // gentest-5823 - assertEqual(perft(new Board(0x8728140142b800L, 0x800800000000002L, 0x2000000000814000L, 0x9000000000000081L, 0x100000000004L, 0x10000000000010L, 0x40143f897L, 0xb897b81000800000L, true, 0, 0x80L), 4), 962706); - - // gentest-5824 - assertEqual(perft(new Board(0x8728140942b000L, 0x800800000000002L, 0x2000000000814000L, 0x9000000000000081L, 0x100000040000L, 0x8000000000010L, 0x40947f093L, 0xb88fb81000800000L, false, 0, 0x80L), 4), 1556399); - - // gentest-5825 - assertEqual(perft(new Board(0x8728140942b000L, 0x20800000000002L, 0x2000000000814000L, 0x9000000000000081L, 0x42000000L, 0x8000000000010L, 0x40b43f093L, 0xb0afa81040800000L, true, 0, 0x80L), 4), 1615249); - - // gentest-5826 - assertEqual(perft(new Board(0x87201429429000L, 0x20800000000002L, 0x2000000000810020L, 0x9000000000000081L, 0x42000000L, 0x8000000000010L, 0x2b4390b3L, 0xb0afa01440800000L, false, 0, 0x80L), 4), 1471652); - - // gentest-5827 - assertEqual(perft(new Board(0x87201029429000L, 0x20800000000002L, 0x10000000810020L, 0x9000000000000081L, 0x44000000L, 0x8000000000010L, 0x254390b3L, 0x90bfa01048800000L, true, 0, 0x80L), 4), 1635019); - - // gentest-5828 - assertEqual(perft(new Board(0x87201029429000L, 0x20800000000002L, 0x80000810020L, 0x9000000000000081L, 0x140000000L, 0x8000000000010L, 0x1214390b3L, 0x90afa81048800000L, false, 0, 0x80L), 4), 1671759); - - // gentest-5829 - assertEqual(perft(new Board(0x87201029429000L, 0x20800000000002L, 0x80000010020L, 0x3000000000000180L, 0x140000000L, 0x8000000000010L, 0x121439192L, 0x30afa81048000020L, true, 0, 0x80L), 4), 2168466); - - // gentest-5830 - assertEqual(perft(new Board(0x86200039429000L, 0x20800000000002L, 0x80400000020L, 0x3000000000000180L, 0x1000040000000L, 0x8000000000010L, 0x1000421429192L, 0x30aea80058000020L, false, 0, 0x80L), 4), 1826006); - - // gentest-5831 - assertEqual(perft(new Board(0x86200039429000L, 0x20800000000002L, 0x80400000020L, 0x9000000000000140L, 0x1000080000000L, 0x8000000000010L, 0x1000421429152L, 0x90aea80098000020L, true, 0, 0x0L), 4), 1764470); - - // gentest-5832 - assertEqual(perft(new Board(0x8620003b409000L, 0x20002000000002L, 0x80400000020L, 0x9000000000000140L, 0x1000080000000L, 0x8000000000008L, 0x100042340914aL, 0x90ae282098000020L, false, 0, 0x0L), 4), 1928988); - - // gentest-5833 - assertEqual(perft(new Board(0x86200023549000L, 0x20002000000000L, 0x80400000020L, 0x9000000000000140L, 0x1000080000000L, 0x8000000000008L, 0x1000423409148L, 0x90ae282080140020L, true, 0, 0x0L), 4), 1425765); - - // gentest-5834 - assertEqual(perft(new Board(0x86200023549000L, 0x20002000000000L, 0x80400000020L, 0x8400000000000840L, 0x1000080000000L, 0x8000000000010L, 0x1000423409850L, 0x84ae282080140020L, false, 0, 0x0L), 4), 1157370); - - // gentest-5835 - assertEqual(perft(new Board(0x86200023549000L, 0x802000000000L, 0x80400000020L, 0x8400000000000840L, 0x100800000L, 0x8000000000010L, 0x523409850L, 0x848ea82000940020L, true, 0, 0x0L), 4), 706975); - - // gentest-5836 - assertEqual(perft(new Board(0x86200023449000L, 0x802000000000L, 0x80000100020L, 0x8400000000000048L, 0x100800000L, 0x10000000000010L, 0x123509058L, 0x8496a82000840020L, false, 0, 0x0L), 4), 1461321); - - // gentest-5837 - assertEqual(perft(new Board(0x86200043049000L, 0x802000000000L, 0x20100020L, 0xc000000000000048L, 0x100800000L, 0x10000000000010L, 0x143109058L, 0xc096a02020840020L, true, 0, 0x0L), 4), 1715654); - - // gentest-5838 - assertEqual(perft(new Board(0x86200043049000L, 0x802000000000L, 0x28000020L, 0xc008000000000040L, 0x100800000L, 0x1000000000000010L, 0x800014b009050L, 0xd086a02020840020L, false, 0, 0x0L), 4), 1538825); - - // gentest-5839 - assertEqual(perft(new Board(0x84220043049000L, 0x802000000000L, 0x28000000L, 0xa008000000000020L, 0x100800000L, 0x1000000000000010L, 0x800014b009030L, 0xb084a22020840000L, true, 0, 0x0L), 4), 1224946); - - // gentest-5840 - assertEqual(perft(new Board(0x84200043049000L, 0x802000000000L, 0x20020000000L, 0xa008000000002000L, 0x100080000L, 0x1000000000000010L, 0x802014300b010L, 0xb084a020200c0000L, false, 0, 0x0L), 4), 1478137); - - // gentest-5841 - assertEqual(perft(new Board(0x84200043049000L, 0x40800000000000L, 0x20000000000L, 0xa008000020000000L, 0x100800000L, 0x1000000000000010L, 0x8020163009010L, 0xb0c4a00000840000L, true, 0, 0x0L), 4), 818448); - - // gentest-5842 - assertEqual(perft(new Board(0x84200003049000L, 0x40000040000000L, 0x20000000000L, 0xa008000020000000L, 0x100800000L, 0x1000000000000010L, 0x8020123009010L, 0xb0c4200040840000L, false, 0, 0x0L), 4), 982786); - - // gentest-5843 - assertEqual(perft(new Board(0x4a00003049000L, 0x40000040000000L, 0x1000000000000L, 0x8028000020000000L, 0x100800000L, 0x1000000000000010L, 0x9000123009010L, 0x9064a00040840000L, true, 0, 0x0L), 4), 1011671); - - // gentest-5844 - assertEqual(perft(new Board(0x4a00003049000L, 0x8040000000L, 0x1000000000000L, 0x8020000800002000L, 0x100800000L, 0x1000000000000010L, 0x100090300b010L, 0x9024a08040840000L, false, 0, 0x0L), 4), 831616); - - // gentest-5845 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5846 - assertEqual(perft(new Board(0xfe01000140be00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x140beffL, 0xfffe010000000000L, false, 0, 0x8100000000000081L), 4), 217524); - - // gentest-5847 - assertEqual(perft(new Board(0xfa00050148b600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x148b6ffL, 0xfffa000500000000L, true, 0, 0x8100000000000081L), 4), 407039); - - // gentest-5848 - assertEqual(perft(new Board(0xba400525489200L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x254892ffL, 0xffba400500000000L, false, 0, 0x8100000000000081L), 4), 343365); - - // gentest-5849 - assertEqual(perft(new Board(0x9a4025254a9000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x254a90ffL, 0xf79a422500000000L, true, 0, 0x8100000000000081L), 4), 482807); - - // gentest-5850 - assertEqual(perft(new Board(0x9a402525489000L, 0x4200000000000042L, 0x2400000000000820L, 0x8100000000000081L, 0x20004L, 0x1000000000000010L, 0x254898f7L, 0xf79a402500020000L, false, 0, 0x8100000000000081L), 4), 623944); - - // gentest-5851 - assertEqual(perft(new Board(0x9a402521489000L, 0x4000040000800002L, 0x2400000000000820L, 0x8100000000000081L, 0x4000004L, 0x1000000000000010L, 0x21c898b7L, 0xf59a442504000000L, true, 0, 0x8100000000000081L), 4), 1006118); - - // gentest-5852 - assertEqual(perft(new Board(0x9a402520489000L, 0x4000040000800002L, 0x2400000000100020L, 0x8100000000000081L, 0x1040000L, 0x1000000000000010L, 0x20dc90b3L, 0xf59a442501000000L, false, 0, 0x8100000000000081L), 4), 1452510); - - // gentest-5853 - assertEqual(perft(new Board(0x9a402124489000L, 0x4000040000800002L, 0x2400000000100020L, 0x8100000000000081L, 0x1200000000L, 0x1000000000000010L, 0x1020d890b3L, 0xf59a442304000000L, true, 0, 0x8100000000000081L), 4), 1810734); - - // gentest-5854 - assertEqual(perft(new Board(0x9a006124409000L, 0x4000040000800800L, 0x2400000000100020L, 0x8100000000000081L, 0x1200000000L, 0x1000000000000010L, 0x1024d098b1L, 0xf59a046300000000L, false, 0, 0x8100000000000081L), 4), 1987908); - - // gentest-5855 - assertEqual(perft(new Board(0x9a006124409000L, 0x4000000008800800L, 0x2400000000100020L, 0x100000000000081L, 0x8000000002000000L, 0x1000000000000010L, 0x8000000024d098b1L, 0x759a00610a000000L, true, 0, 0x100000000000081L), 4), 1007819); - - // gentest-5856 - assertEqual(perft(new Board(0x9a006124409000L, 0x800000800800L, 0x2400000000000220L, 0x100000000000081L, 0x8000000002000000L, 0x1000000000000010L, 0x8000000024c09ab1L, 0x359a806102000000L, false, 0, 0x100000000000081L), 4), 954814); - - // gentest-5857 - assertEqual(perft(new Board(0x9a006134408000L, 0x800000800000L, 0x2400000000000220L, 0x100000000000081L, 0x8000000000000800L, 0x20000000000010L, 0x8000000034c082b1L, 0x25ba806100000800L, true, 0, 0x81L), 4), 14487); - - // gentest-5858 - assertEqual(perft(new Board(0x9a004134408000L, 0x800000800000L, 0x2400000000000220L, 0x100000000000081L, 0x4000000000000000L, 0x20000000000800L, 0x4000000024c08aa1L, 0x25ba804110000000L, false, 0, 0x0L), 4), 71653); - - // gentest-5859 - assertEqual(perft(new Board(0x92084134408000L, 0x800000800000L, 0x2440000000000020L, 0x100000000000081L, 0x0L, 0x4000000000000800L, 0x40000024c088a1L, 0x6592884110000000L, true, 0, 0x0L), 4), 583202); - - // gentest-5860 - assertEqual(perft(new Board(0x92084034408000L, 0x800000800000L, 0x2048000000000020L, 0x100000400000080L, 0x0L, 0x4000000000000800L, 0x40000424c088a0L, 0x619a884010000000L, false, 0, 0x0L), 4), 1076552); - - // gentest-5861 - assertEqual(perft(new Board(0x92084034408000L, 0x800000800000L, 0x2440000000000020L, 0x800000200000080L, 0x0L, 0x4000000000000800L, 0x40000224c088a0L, 0x6c92884010000000L, true, 0, 0x0L), 4), 550796); - - // gentest-5862 - assertEqual(perft(new Board(0x92084034408000L, 0x800000800000L, 0x2000000040000021L, 0x800000200000080L, 0x0L, 0x4000000000000800L, 0x224c088a1L, 0x6892884050000000L, false, 0, 0x0L), 4), 606574); - - // gentest-5863 - assertEqual(perft(new Board(0x92086014408000L, 0x800000800000L, 0x40000040000021L, 0x800000200000080L, 0x0L, 0x20000000000800L, 0x2204c088a1L, 0x8f2884050000000L, true, 0, 0x0L), 4), 789702); - - // gentest-5864 - assertEqual(perft(new Board(0x92086014408000L, 0x800000002000L, 0x40000040000021L, 0x4000001000000080L, 0x0L, 0x20000000000800L, 0x300440a8a1L, 0x40f2884050000000L, false, 0, 0x0L), 4), 581380); - - // gentest-5865 - assertEqual(perft(new Board(0x92086004408000L, 0x800000002000L, 0x40040021L, 0x800000010000080L, 0x0L, 0x20000000000800L, 0x201440a8a1L, 0x8b2884040040000L, true, 0, 0x0L), 4), 163091); - - // gentest-5866 - assertEqual(perft(new Board(0x92006804408000L, 0x800000002000L, 0x40040020L, 0x800000010000080L, 0x0L, 0x20000000000004L, 0x201444a0a4L, 0x8b2804840000000L, false, 0, 0x0L), 4), 955798); - - // gentest-5867 - assertEqual(perft(new Board(0x92006804408000L, 0x800000002000L, 0x40040020L, 0x400000000100080L, 0x0L, 0x20000000000004L, 0x200454a0a4L, 0x4b2804840000000L, true, 0, 0x0L), 4), 989238); - - // gentest-5868 - assertEqual(perft(new Board(0x92006804408000L, 0x800000002000L, 0x48000020L, 0x400000000001080L, 0x0L, 0x2000000000000004L, 0x200c40b0a4L, 0x2492804840000000L, false, 0, 0x0L), 4), 729851); - - // gentest-5869 - assertEqual(perft(new Board(0x92006804408000L, 0x800000002000L, 0x48000020L, 0x4000000001040L, 0x0L, 0x2000000000000004L, 0x200c40b064L, 0x2096804840000000L, true, 0, 0x0L), 4), 693589); - - // gentest-5870 - assertEqual(perft(new Board(0x82007804408000L, 0x800000002000L, 0x48004000L, 0x4000000100040L, 0x0L, 0x2000000000000004L, 0x200c50e044L, 0x2086805840000000L, false, 0, 0x0L), 4), 1012187); - - // gentest-5871 - assertEqual(perft(new Board(0x82007004408000L, 0x800000002000L, 0x48004000L, 0x4000000100040L, 0x0L, 0x20000000000200L, 0x200850e240L, 0xa6805044000000L, true, 0, 0x0L), 4), 1015801); - - // gentest-5872 - assertEqual(perft(new Board(0x82005004408000L, 0x800000800000L, 0x2008004000L, 0x4000000040040L, 0x0L, 0x20000000000200L, 0x8c4c240L, 0xa6807004000000L, false, 0, 0x0L), 4), 1052277); - - // gentest-5873 - assertEqual(perft(new Board(0x8200400c408000L, 0x800000800000L, 0x10080000L, 0x4000000040040L, 0x0L, 0x20000000000200L, 0x10c48240L, 0xa680400c080000L, true, 0, 0x0L), 4), 521784); - - // gentest-5874 - assertEqual(perft(new Board(0x8200400c408000L, 0x800000800000L, 0x10080000L, 0x400040040L, 0x0L, 0x20000002000000L, 0x12c48040L, 0xa280440c080000L, false, 0, 0x0L), 4), 588471); - - // gentest-5875 - assertEqual(perft(new Board(0x200400c408000L, 0x800000800000L, 0x80000000080000L, 0x800040040L, 0x0L, 0x10000002000000L, 0x80000002c48040L, 0x1280480c080000L, true, 0, 0x0L), 4), 552284); - - // gentest-5876 - assertEqual(perft(new Board(0x200400c408000L, 0x800000800000L, 0x80000000080000L, 0x800020020L, 0x0L, 0x8000002000000L, 0x80000002c28020L, 0xa80480c080000L, false, 0, 0x0L), 4), 751021); - - // gentest-5877 - assertEqual(perft(new Board(0x2004008448000L, 0x800000800000L, 0x80000000080000L, 0x800020020L, 0x0L, 0x10000000010000L, 0x80000000c38020L, 0x128048080c0000L, true, 0, 0x0L), 4), 876009); - - // gentest-5878 - assertEqual(perft(new Board(0x2004008448000L, 0x800000000040L, 0x80000000080000L, 0x200800020000L, 0x0L, 0x1000000000010000L, 0x80200000438040L, 0x10028048080c0000L, false, 0, 0x0L), 4), 807684); - - // gentest-5879 - assertEqual(perft(new Board(0x20040004c8000L, 0x800000000040L, 0x2010000000L, 0x200800020000L, 0x0L, 0x1000000000010000L, 0x202000438040L, 0x10028048100c0000L, true, 0, 0x0L), 4), 517555); - - // gentest-5880 - assertEqual(perft(new Board(0x20040004c8000L, 0x800000000040L, 0x2010000000L, 0x201000000002L, 0x0L, 0x1000000001000000L, 0x202001408042L, 0x10028050100c0000L, false, 0, 0x0L), 4), 574308); - - // gentest-5881 - assertEqual(perft(new Board(0x240004c8000L, 0x800000000040L, 0x80000010000000L, 0x200200000002L, 0x0L, 0x1000000001000000L, 0x80200001408042L, 0x10008242100c0000L, true, 0, 0x0L), 4), 634668); - - // gentest-5882 - assertEqual(perft(new Board(0x240004c8000L, 0x800000000040L, 0x80000010000000L, 0x1020000002L, 0x0L, 0x1000000002000000L, 0x80000022408042L, 0x10008250100c0000L, false, 0, 0x0L), 4), 754002); - - // gentest-5883 - assertEqual(perft(new Board(0x240004c8000L, 0x20000000000040L, 0x400000200000L, 0x1020000002L, 0x0L, 0x1000000002000000L, 0x400022408042L, 0x10200250002c0000L, true, 0, 0x0L), 4), 787661); - - // gentest-5884 - assertEqual(perft(new Board(0x240004c8000L, 0x20000000000040L, 0x400000200000L, 0x110020000L, 0x0L, 0x1000000002000000L, 0x400012428040L, 0x10200241002c0000L, false, 0, 0x0L), 4), 92054); - - // gentest-5885 - assertEqual(perft(new Board(0x240004c8000L, 0x20000000000040L, 0x200000L, 0x2010020000L, 0x0L, 0x8000002000000L, 0x12428040L, 0x280260002c0000L, true, 0, 0x0L), 4), 487626); - - // gentest-5886 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000000040L, 0x200000L, 0x2010000200L, 0x0L, 0x400000002000000L, 0x52008240L, 0x4200260002c0000L, false, 0, 0x0L), 4), 471003); - - // gentest-5887 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000000040L, 0x10000000L, 0x200000000200L, 0x0L, 0x400000001000000L, 0x41008240L, 0x4202240100c0000L, true, 0, 0x0L), 4), 356546); - - // gentest-5888 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000002000L, 0x10000000L, 0x40000000200L, 0x0L, 0x400000001000000L, 0x4100a200L, 0x4200640100c0000L, false, 0, 0x0L), 4), 268942); - - // gentest-5889 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000800000L, 0x10000000L, 0x100000000200L, 0x0L, 0x200000001000000L, 0x41808200L, 0x2201240100c0000L, true, 0, 0x0L), 4), 295292); - - // gentest-5890 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000800000L, 0x80L, 0x100000020000L, 0x0L, 0x200000002000000L, 0x42828000L, 0x2201240000c0080L, false, 0, 0x0L), 4), 187541); - - // gentest-5891 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000800000L, 0x80L, 0x2000020000L, 0x0L, 0x200000001000000L, 0x41828000L, 0x2200260000c0080L, true, 0, 0x0L), 4), 152130); - - // gentest-5892 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000800000L, 0x2000000000000L, 0x2200000000L, 0x0L, 0x200000000010000L, 0x240818000L, 0x2220260000c0000L, false, 0, 0x0L), 4), 252604); - - // gentest-5893 - assertEqual(perft(new Board(0x240400c8000L, 0x20000000800000L, 0x800000000L, 0x2000020000L, 0x0L, 0x200000000010000L, 0x40838000L, 0x2200268000c0000L, true, 0, 0x0L), 4), 165952); - - // gentest-5894 - assertEqual(perft(new Board(0x260000c8000L, 0x20000020000000L, 0x2000000000000L, 0x20000L, 0x0L, 0x200000000010000L, 0x2020038000L, 0x2220240000c0000L, false, 0, 0x0L), 4), 190127); - - // gentest-5895 - assertEqual(perft(new Board(0x260000c8000L, 0x800008000000000L, 0x400000000000000L, 0x20000L, 0x0L, 0x200000000010000L, 0xa000038000L, 0xe000240000c0000L, true, 0, 0x0L), 4), 81740); - - // gentest-5896 - assertEqual(perft(new Board(0x60000c8000L, 0x800200000000000L, 0x400000000000000L, 0x20000000000L, 0x0L, 0x100000000010000L, 0x222000018000L, 0xd000040000c0000L, false, 0, 0x0L), 4), 102990); - - // gentest-5897 - assertEqual(perft(new Board(0x40000c8000L, 0x300000000000L, 0x0L, 0x20000000000L, 0x0L, 0x100000000010000L, 0x220000018000L, 0x1001040000c0000L, true, 0, 0x0L), 4), 64999); - - // gentest-5898 - assertEqual(perft(new Board(0x40000c8000L, 0x808000000000000L, 0x0L, 0x20000000000L, 0x0L, 0x100000002000000L, 0x8020002008000L, 0x9000040000c0000L, false, 0, 0x0L), 4), 36945); - - // gentest-5899 - assertEqual(perft(new Board(0x40000c8000L, 0x8000400000000L, 0x0L, 0x20000000000L, 0x0L, 0x100000200000000L, 0x8020200008000L, 0x1000044000c0000L, true, 0, 0x0L), 4), 44458); - - // gentest-5900 - assertEqual(perft(new Board(0x40000c8000L, 0x8000400000000L, 0x0L, 0x100000000000L, 0x0L, 0x2000200000000L, 0x8100200008000L, 0x20044000c0000L, false, 0, 0x0L), 4), 88577); - - // gentest-5901 - assertEqual(perft(new Board(0x4000048800L, 0x8000000000000L, 0x0L, 0x1000000000000000L, 0x0L, 0x2000200000000L, 0x1000000200008000L, 0xa004000040800L, true, 0, 0x0L), 4), 92171); - - // gentest-5902 - assertEqual(perft(new Board(0x4000048800L, 0x8000000000000L, 0x0L, 0x100000000000L, 0x0L, 0x20001000000L, 0x100001008000L, 0x8024000040800L, false, 0, 0x0L), 4), 20676); - - // gentest-5903 - assertEqual(perft(new Board(0x4000048000L, 0x8000000000000L, 0x8L, 0x100000000000L, 0x0L, 0x1000002000000L, 0x100002008000L, 0x9004000040008L, true, 0, 0x0L), 4), 122080); - - // gentest-5904 - assertEqual(perft(new Board(0x48000L, 0x8000000000000L, 0x8L, 0x4000000000L, 0x0L, 0x100000002000000L, 0x4002008000L, 0x108000000040008L, false, 0, 0x0L), 4), 110911); - - // gentest-5905 - assertEqual(perft(new Board(0x48000L, 0x8000000000000L, 0x8L, 0x400000000L, 0x0L, 0x10002000000L, 0x402008000L, 0x8010000040008L, true, 0, 0x0L), 4), 67361); - - // gentest-5906 - assertEqual(perft(new Board(0x8400L, 0x8000000000000L, 0x8L, 0x800000000L, 0x0L, 0x10002000000L, 0x802008000L, 0x8010000000408L, false, 0, 0x0L), 4), 100973); - - // gentest-5907 - assertEqual(perft(new Board(0x8400L, 0x8000000000000L, 0x1000L, 0x400000000L, 0x0L, 0x1000002000000L, 0x402008000L, 0x9000000001400L, true, 0, 0x0L), 4), 166766); - - // gentest-5908 - assertEqual(perft(new Board(0x8400L, 0x400000000L, 0x1000L, 0x100000L, 0x0L, 0x1000002000000L, 0x2108000L, 0x1000400001400L, false, 0, 0x0L), 4), 176534); - - // gentest-5909 - assertEqual(perft(new Board(0x8400L, 0x200000000000L, 0x1000L, 0x10000000L, 0x0L, 0x1000002000000L, 0x12008000L, 0x1200000001400L, true, 0, 0x0L), 4), 186842); - - // gentest-5910 - assertEqual(perft(new Board(0x8400L, 0x200000000000L, 0x8000000000L, 0x80000000L, 0x0L, 0x1000002000000L, 0x82008000L, 0x1208000000400L, false, 0, 0x0L), 4), 124998); - - // gentest-5911 - assertEqual(perft(new Board(0x8000L, 0x200000000000L, 0x400000000004L, 0x40000000L, 0x0L, 0x1000002000000L, 0x42008000L, 0x1600000000004L, true, 0, 0x0L), 4), 232447); - - // gentest-5912 - assertEqual(perft(new Board(0x8000L, 0x200000000000L, 0x2000000004L, 0x1000L, 0x0L, 0x1000002000000L, 0x2009000L, 0x1202000000004L, false, 0, 0x0L), 4), 287822); - - // gentest-5913 - assertEqual(perft(new Board(0x8000L, 0x200000000000L, 0x80000000000004L, 0x100000000000L, 0x0L, 0x1000002000000L, 0x100002008000L, 0x81200000000004L, true, 0, 0x0L), 4), 188869); - - // gentest-5914 - assertEqual(perft(new Board(0x8000L, 0x200000000000L, 0x80000000100000L, 0x100000000000L, 0x0L, 0x1040000000000L, 0x140000008000L, 0x81200000100000L, false, 0, 0x0L), 4), 130380); - - // gentest-5915 - assertEqual(perft(new Board(0x8000L, 0x0L, 0x4000000000000800L, 0x200000000000L, 0x0L, 0x1040000000000L, 0x240000008000L, 0x4001000000000800L, true, 0, 0x0L), 4), 99550); - - // gentest-5916 - assertEqual(perft(new Board(0x8000L, 0x0L, 0x4000000000000800L, 0x20000000000L, 0x0L, 0x104000000000000L, 0x4020000008000L, 0x4100000000000800L, false, 0, 0x0L), 4), 85897); - - // gentest-5917 - assertEqual(perft(new Board(0x8000L, 0x0L, 0x4000000000010000L, 0x200000000000L, 0x0L, 0x104000000000000L, 0x4200000008000L, 0x4100000000010000L, true, 0, 0x0L), 4), 79437); - - // gentest-5918 - assertEqual(perft(new Board(0x80000000L, 0x0L, 0x800010000L, 0x200000000000L, 0x0L, 0x104000000000000L, 0x4200080000000L, 0x100000800010000L, false, 0, 0x0L), 4), 99911); - - // gentest-5919 - assertEqual(perft(new Board(0x80000000L, 0x0L, 0x4000000000010000L, 0x400000000000L, 0x0L, 0x5000000000000L, 0x4400080000000L, 0x4001000000010000L, true, 0, 0x0L), 4), 73187); - - // gentest-5920 - assertEqual(perft(new Board(0x80000000L, 0x0L, 0x4000080000000000L, 0x100000000000L, 0x0L, 0x1040000000000L, 0x140080000000L, 0x4001080000000000L, false, 0, 0x0L), 4), 63237); - - // gentest-5921 - assertEqual(perft(new Board(0x80000000L, 0x0L, 0x6000000000000000L, 0x100000L, 0x0L, 0x1040000000000L, 0x40080100000L, 0x6001000000000000L, true, 0, 0x0L), 4), 73426); - - // gentest-5922 - assertEqual(perft(new Board(0x80000000L, 0x0L, 0x6000000000000000L, 0x20L, 0x0L, 0x50000000000L, 0x40080000020L, 0x6000010000000000L, false, 0, 0x0L), 4), 69598); - - // gentest-5923 - assertEqual(perft(new Board(0x80000000L, 0x0L, 0x2000000000000100L, 0x20L, 0x0L, 0x8010000000000L, 0x8000080000020L, 0x2000010000000100L, true, 0, 0x0L), 4), 107880); - - // gentest-5924 - assertEqual(perft(new Board(0x80000000L, 0x0L, 0x40000000000100L, 0x1L, 0x0L, 0x400010000000000L, 0x400000080000001L, 0x40010000000100L, false, 0, 0x0L), 4), 40879); - - // gentest-5925 - assertEqual(perft(new Board(0x8000000000L, 0x0L, 0x8000100L, 0x1L, 0x0L, 0x400010000000000L, 0x400008000000001L, 0x10008000100L, true, 0, 0x0L), 4), 75639); - - // gentest-5926 - assertEqual(perft(new Board(0x8000000000L, 0x0L, 0x8000100L, 0x1L, 0x0L, 0x400000200000000L, 0x400008000000001L, 0x208000100L, false, 0, 0x0L), 4), 142793); - - // gentest-5927 - assertEqual(perft(new Board(0x8000000000L, 0x0L, 0x8020000L, 0x20L, 0x0L, 0x400040000000000L, 0x400008000000020L, 0x40008020000L, true, 0, 0x0L), 4), 139788); - - // gentest-5928 - assertEqual(perft(new Board(0x8000000000L, 0x0L, 0x8020000L, 0x1L, 0x0L, 0x400000200000000L, 0x400008000000001L, 0x208020000L, false, 0, 0x0L), 4), 186926); - - // gentest-5929 - assertEqual(perft(new Board(0x8000000000L, 0x0L, 0x120000L, 0x1L, 0x0L, 0x2000200000000L, 0x2008000000001L, 0x200120000L, true, 0, 0x0L), 4), 146856); - - // gentest-5930 - assertEqual(perft(new Board(0x800000000000L, 0x0L, 0x100008L, 0x10000000000L, 0x0L, 0x2000200000000L, 0x2810000000000L, 0x200100008L, false, 0, 0x0L), 4), 113291); - - // gentest-5931 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-5932 - assertEqual(perft(new Board(0xdf200010806f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10806fffL, 0xffdf200000000000L, false, 0, 0x8100000000000081L), 4), 334578); - - // gentest-5933 - assertEqual(perft(new Board(0xdb200410846b00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x10846bffL, 0xf7db220400000000L, true, 0, 0x8100000000000081L), 4), 663918); - - // gentest-5934 - assertEqual(perft(new Board(0xdb2004308c4300L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x20000000008L, 0x1000000000000010L, 0x308c43ffL, 0xb7dba20400000000L, false, 0, 0x8100000000000081L), 4), 781504); - - // gentest-5935 - assertEqual(perft(new Board(0xdb2004308c4100L, 0x810000000042L, 0x2400000000001004L, 0x8100000000000081L, 0x208L, 0x1000000000000010L, 0x308c51dfL, 0xb5dba10400000200L, true, 0, 0x8100000000000081L), 4), 682795); - - // gentest-5936 - assertEqual(perft(new Board(0xd3202c108c4100L, 0x810000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x208L, 0x1000000000000010L, 0x20108c41ffL, 0xb5d3a10c00000200L, false, 0, 0x8100000000000081L), 4), 1030216); - - // gentest-5937 - assertEqual(perft(new Board(0xd3200c108c4100L, 0x12000200002L, 0x2400000000000024L, 0x8200000000000081L, 0x208L, 0x1000000000000010L, 0x10ac41bfL, 0xb6d3212c00000200L, true, 0, 0x8000000000000081L), 4), 1450259); - - // gentest-5938 - assertEqual(perft(new Board(0xd1200e108c4100L, 0x13000000002L, 0x2400000000000220L, 0x8200000000000081L, 0x8L, 0x1000000000000010L, 0x10108c43bbL, 0xb6d1212e00000000L, false, 0, 0x8000000000000081L), 4), 808785); - - // gentest-5939 - assertEqual(perft(new Board(0xd1200e900c4100L, 0x13000000002L, 0x2020000000000220L, 0x8200000000000081L, 0x8L, 0x1000000000000010L, 0x10900c43bbL, 0xb2f1212e00000000L, true, 0, 0x8000000000000081L), 4), 1056837); - - // gentest-5940 - assertEqual(perft(new Board(0xd12006d00c0100L, 0x13000000002L, 0x2020000000000220L, 0x8200000000000041L, 0x8L, 0x1000000000000010L, 0x10c00c037bL, 0xb2f1212610000000L, false, 0, 0x8000000000000001L), 4), 1216552); - - // gentest-5941 - assertEqual(perft(new Board(0xd12006d00c0100L, 0x811000000002L, 0x2020000000000220L, 0x8400000000000041L, 0x1000000L, 0x1000000000000010L, 0x10c10c0373L, 0xb4f1a10610000000L, true, 0, 0x8000000000000001L), 4), 1092902); - - // gentest-5942 - assertEqual(perft(new Board(0xd12006d00c0100L, 0x810004000002L, 0x2000000000000220L, 0x8400000000000041L, 0x2000000L, 0x1000000000000010L, 0xc60c0373L, 0xb4d1a10610000000L, false, 0, 0x8000000000000001L), 4), 635042); - - // gentest-5943 - assertEqual(perft(new Board(0xd12006c00c0100L, 0x810004000002L, 0x2000000000000220L, 0x8200000000000041L, 0x2000000L, 0x1000000000002000L, 0xc6042363L, 0xb2d1a10600080000L, true, 0, 0x8000000000000000L), 4), 530730); - - // gentest-5944 - assertEqual(perft(new Board(0xd12006c00c0100L, 0x810004000002L, 0x2000000000000220L, 0x4200000000100001L, 0x2000000L, 0x1000000000002000L, 0xc6142323L, 0x72d1a10600080000L, false, 0, 0x0L), 4), 648253); - - // gentest-5945 - assertEqual(perft(new Board(0xd10026800c0100L, 0x10044000002L, 0x2000000000000220L, 0x4200000000100001L, 0x2000000L, 0x1000000000004000L, 0x86144323L, 0x72d1012640080000L, true, 0, 0x0L), 4), 774052); - - // gentest-5946 - assertEqual(perft(new Board(0xd10026800c0100L, 0x4000040000802L, 0x2000000000000220L, 0x4200000000100001L, 0x2000000L, 0x1000000000800000L, 0x82940b23L, 0x72d5002640080000L, false, 0, 0x0L), 4), 971848); - - // gentest-5947 - assertEqual(perft(new Board(0xd10026800c0100L, 0x4800000000802L, 0x2000000000000220L, 0x4200000000100001L, 0x20000000L, 0x8000000800000L, 0xa0940b23L, 0x62dd802600080000L, true, 0, 0x0L), 4), 939173); - - // gentest-5948 - assertEqual(perft(new Board(0xd00027800c0100L, 0x4800000000802L, 0x2000000000000220L, 0x4200000000200001L, 0x4000000000L, 0x8000000800000L, 0x4080a40b23L, 0x62dc802700080000L, false, 0, 0x0L), 4), 790926); - - // gentest-5949 - assertEqual(perft(new Board(0xd00025820c0100L, 0x1000800010000002L, 0x2000000000000220L, 0x4200000000200001L, 0x4000000000L, 0x8000000800000L, 0x4090a40323L, 0x72d8802502080000L, true, 0, 0x0L), 4), 1038258); - - // gentest-5950 - assertEqual(perft(new Board(0x900025820c0100L, 0x1000800000000802L, 0x2000000000000220L, 0x4400000000200001L, 0x40000000000000L, 0x8000000800000L, 0x40000080a40b23L, 0x7498802502080000L, false, 0, 0x0L), 4), 756516); - - // gentest-5951 - assertEqual(perft(new Board(0x900005a20c0100L, 0x1000800000000802L, 0x2000000000000220L, 0x4800000000200001L, 0x40L, 0x8000000800000L, 0x80a40b63L, 0x7898800522080000L, true, 0, 0x0L), 4), 806953); - - // gentest-5952 - assertEqual(perft(new Board(0x900005a00c0100L, 0x1000800000000802L, 0x2000000000001200L, 0x4800000000200001L, 0x20L, 0x8000000800000L, 0x80a01b23L, 0x78988005200c0000L, false, 0, 0x0L), 4), 780843); - - // gentest-5953 - assertEqual(perft(new Board(0x900001a40c0100L, 0x1000800000000802L, 0x2000000000001200L, 0x800000040200001L, 0x10L, 0x8000000800000L, 0x80a01b13L, 0x38988001640c0000L, true, 0, 0x0L), 4), 804293); - - // gentest-5954 - assertEqual(perft(new Board(0x900001a40c0100L, 0x1000800000000802L, 0x2000000000001200L, 0x800000040100001L, 0x8L, 0x80000800000L, 0x80901b0bL, 0x38908801640c0000L, false, 0, 0x0L), 4), 1001429); - - // gentest-5955 - assertEqual(perft(new Board(0x900001841c0100L, 0x1000002000000802L, 0x2000000000000220L, 0x800000040000001L, 0x8L, 0x80000800000L, 0x80800b2bL, 0x38900821441c0000L, true, 0, 0x0L), 4), 796141); - - // gentest-5956 - assertEqual(perft(new Board(0x900001841c0100L, 0x1000002000000802L, 0x2000000000001200L, 0x800000020000001L, 0x40L, 0x80000800000L, 0x80801b43L, 0x38900821241c0000L, false, 0, 0x0L), 4), 1409832); - - // gentest-5957 - assertEqual(perft(new Board(0x108001841c0100L, 0x1000002000000802L, 0x2000000000001200L, 0x800000020000001L, 0x4L, 0x800800000L, 0x80801b07L, 0x38108029241c0000L, true, 0, 0x0L), 4), 772046); - - // gentest-5958 - assertEqual(perft(new Board(0x108001051c0000L, 0x1000002000000802L, 0x2000000000001200L, 0x800000080000001L, 0x4L, 0x800004000L, 0x1005a07L, 0x38108029841c0000L, false, 0, 0x0L), 4), 812504); - - // gentest-5959 - assertEqual(perft(new Board(0x10008105180000L, 0x1000002000000802L, 0x2000000000001200L, 0x200000080000001L, 0x40000L, 0x800004000L, 0x1045a03L, 0x321000a984180000L, true, 0, 0x0L), 4), 862898); - - // gentest-5960 - assertEqual(perft(new Board(0x10008105180000L, 0x1000002010000002L, 0x40000000001200L, 0x200000080000001L, 0x1000000000L, 0x800004000L, 0x1011005203L, 0x125000a984180000L, false, 0, 0x0L), 4), 76133); - - // gentest-5961 - assertEqual(perft(new Board(0x10008105180000L, 0x1000002010000002L, 0x1000000220L, 0x80020001L, 0x0L, 0x800004000L, 0x11004223L, 0x101000b9841a0000L, true, 0, 0x0L), 4), 642287); - - // gentest-5962 - assertEqual(perft(new Board(0x10008105180000L, 0x1040000010000002L, 0x1000000024L, 0x80030000L, 0x0L, 0x800004000L, 0x11014026L, 0x10500099841a0000L, false, 0, 0x0L), 4), 499600); - - // gentest-5963 - assertEqual(perft(new Board(0x10008105100800L, 0x1040000010000002L, 0x1204L, 0x80030000L, 0x0L, 0x800004000L, 0x11015006L, 0x1050008984120a00L, true, 0, 0x0L), 4), 741639); - - // gentest-5964 - assertEqual(perft(new Board(0x10008105100000L, 0x1040000000000802L, 0x1204L, 0x82010000L, 0x0L, 0x800200000L, 0x1211806L, 0x1050008986100200L, false, 0, 0x0L), 4), 359301); - - // gentest-5965 - assertEqual(perft(new Board(0x10008104100000L, 0x1040000000000022L, 0x1204L, 0x81010000L, 0x0L, 0x40000200000L, 0x211026L, 0x1050048185100200L, true, 0, 0x0L), 4), 461508); - - // gentest-5966 - assertEqual(perft(new Board(0x10008100000000L, 0x1040000000100002L, 0x4000204L, 0x80010000L, 0x0L, 0x40000200000L, 0x4300006L, 0x1050048180010200L, false, 0, 0x0L), 4), 455592); - - // gentest-5967 - assertEqual(perft(new Board(0x10008100000000L, 0x1040000000100002L, 0x4000a00L, 0x200000080000000L, 0x0L, 0x40000200000L, 0x4300802L, 0x1250048180000200L, true, 0, 0x0L), 4), 982289); - - // gentest-5968 - assertEqual(perft(new Board(0x10008100000000L, 0x1040002000000002L, 0x4100200L, 0x800000080000000L, 0x0L, 0x40000200000L, 0x2004300002L, 0x1850048180000200L, false, 0, 0x0L), 4), 1186910); - - // gentest-5969 - assertEqual(perft(new Board(0x9100000000L, 0x1040002000000002L, 0x4000240L, 0x800000080000000L, 0x0L, 0x2000000200000L, 0x2004200042L, 0x1842009180000200L, true, 0, 0x0L), 4), 1024833); - - // gentest-5970 - assertEqual(perft(new Board(0x9100000000L, 0x1040000000000002L, 0x4008200L, 0x80000008L, 0x0L, 0x2000000200000L, 0x40000004208002L, 0x1002009180000208L, false, 0, 0x0L), 4), 673272); - - // gentest-5971 - assertEqual(perft(new Board(0x9100000000L, 0x1000002000000002L, 0x4008200L, 0x40000008L, 0x0L, 0x1000000200000L, 0x2004208002L, 0x1001009140000208L, true, 0, 0x0L), 4), 1050741); - - // gentest-5972 - assertEqual(perft(new Board(0x9100000000L, 0x1000000040000002L, 0x4008200L, 0x400000000008L, 0x0L, 0x1000000200000L, 0x44208002L, 0x1001409100000208L, false, 0, 0x0L), 4), 944664); - - // gentest-5973 - assertEqual(perft(new Board(0x1140000000L, 0x1000000000000002L, 0x4008200L, 0x4000000000000008L, 0x0L, 0x1000000001000L, 0x4009002L, 0x5001001140000208L, true, 0, 0x0L), 4), 349895); - - // gentest-5974 - assertEqual(perft(new Board(0x1140000000L, 0x4000000040000L, 0x20000000008200L, 0x4000000000000008L, 0x0L, 0x1000000001000L, 0x20000000049000L, 0x4005001140000208L, false, 0, 0x0L), 4), 692709); - - // gentest-5975 - assertEqual(perft(new Board(0x1140000000L, 0x4000000000008L, 0x20000000008200L, 0x4008000000L, 0x0L, 0x1000000001000L, 0x20000000009008L, 0x5005148000200L, true, 0, 0x0L), 4), 463777); - - // gentest-5976 - assertEqual(perft(new Board(0x1140000000L, 0x200000008L, 0x1000000000008200L, 0x4008000000L, 0x0L, 0x1000000001000L, 0x1000000000009008L, 0x1005348000200L, false, 0, 0x0L), 4), 317618); - - // gentest-5977 - assertEqual(perft(new Board(0x1140000000L, 0x4000000000008L, 0x1000000000000240L, 0x4000000008000000L, 0x0L, 0x1000000001000L, 0x1000000000001048L, 0x4005001148000200L, true, 0, 0x0L), 4), 272068); - - // gentest-5978 - assertEqual(perft(new Board(0x1140000000L, 0x100000000008L, 0x1000000000400200L, 0x4000000008000000L, 0x0L, 0x1000000001000L, 0x1000000000401008L, 0x4001101148000200L, false, 0, 0x0L), 4), 478266); - - // gentest-5979 - assertEqual(perft(new Board(0x1140000000L, 0x800000000000008L, 0x1000000000400200L, 0x40000008000000L, 0x0L, 0x1000000100000L, 0x1000000000500008L, 0x841001148000200L, true, 0, 0x0L), 4), 359893); - - // gentest-5980 - assertEqual(perft(new Board(0x1140000000L, 0x800000000000008L, 0x100000400200L, 0x40000004000000L, 0x0L, 0x1000000100000L, 0x100000500008L, 0x841001144000200L, false, 0, 0x0L), 4), 492542); - - // gentest-5981 - assertEqual(perft(new Board(0x1140000000L, 0x800000000000008L, 0x8000000400200L, 0x40010000000000L, 0x0L, 0x1000000100000L, 0x8000000500008L, 0x841011140000200L, true, 0, 0x0L), 4), 394970); - - // gentest-5982 - assertEqual(perft(new Board(0x1140000000L, 0x800000000000008L, 0x1000000008400000L, 0x40010000000000L, 0x0L, 0x1000000080000L, 0x1000000000480008L, 0x841011148000000L, false, 0, 0x0L), 4), 495991); - - // gentest-5983 - assertEqual(perft(new Board(0x1140000000L, 0x800000000000008L, 0x1500000L, 0x40080000000000L, 0x0L, 0x1000000080000L, 0x1480008L, 0x841081140100000L, true, 0, 0x0L), 4), 159667); - - // gentest-5984 - assertEqual(perft(new Board(0x1140000000L, 0x800000000000008L, 0x1500000L, 0x4080000000000L, 0x0L, 0x1000200000000L, 0x201400008L, 0x805081140100000L, false, 0, 0x0L), 4), 289299); - - // gentest-5985 - assertEqual(perft(new Board(0x1140000000L, 0x800000000000008L, 0x81000040L, 0x20080000000000L, 0x0L, 0x1000200000000L, 0x281000008L, 0x821081140000040L, true, 0, 0x0L), 4), 310244); - - // gentest-5986 - assertEqual(perft(new Board(0x1040000000L, 0x800000000000008L, 0x1002040L, 0x20020000000000L, 0x0L, 0x1000100000000L, 0x101002008L, 0x821021040000040L, false, 0, 0x0L), 4), 142036); - - // gentest-5987 - assertEqual(perft(new Board(0x1040000000L, 0x800000000000008L, 0x81000040L, 0x4020000000000L, 0x0L, 0x1000100000000L, 0x181000008L, 0x805021040000040L, true, 0, 0x0L), 4), 366800); - - // gentest-5988 - assertEqual(perft(new Board(0x50000000L, 0x800000000000008L, 0x81000040L, 0x4020000000000L, 0x0L, 0x1000100000000L, 0x181000008L, 0x805020050000040L, false, 0, 0x0L), 4), 364067); - - // gentest-5989 - assertEqual(perft(new Board(0x50000000L, 0x8L, 0x800000001000040L, 0x20000000400L, 0x0L, 0x1000100000000L, 0x800000101000008L, 0x1020050000440L, true, 0, 0x0L), 4), 276892); - - // gentest-5990 - assertEqual(perft(new Board(0x50000000L, 0x8L, 0x20001000000L, 0x400L, 0x0L, 0x1000200000000L, 0x201000008L, 0x1020050000400L, false, 0, 0x0L), 4), 54614); - - // gentest-5991 - assertEqual(perft(new Board(0x10400000L, 0x40000L, 0x4000001000000L, 0x400L, 0x0L, 0x1000200000000L, 0x201040000L, 0x5000010400400L, true, 0, 0x0L), 4), 66836); - - // gentest-5992 - assertEqual(perft(new Board(0x10400000L, 0x40000L, 0x20020000L, 0x400L, 0x0L, 0x1040000000000L, 0x40000060000L, 0x1000030400400L, false, 0, 0x0L), 4), 127995); - - // gentest-5993 - assertEqual(perft(new Board(0x10400000L, 0x40000L, 0x20020000L, 0x400L, 0x0L, 0x1000800000000L, 0x800060000L, 0x1000030400400L, true, 0, 0x0L), 4), 142909); - - // gentest-5994 - assertEqual(perft(new Board(0x400000L, 0x40000L, 0x21000000L, 0x800L, 0x0L, 0x1000010000000L, 0x11040000L, 0x1000020400800L, false, 0, 0x0L), 4), 170989); - - // gentest-5995 - assertEqual(perft(new Board(0x400000L, 0x2L, 0x1000800L, 0x200L, 0x0L, 0x1000010000000L, 0x11000002L, 0x1000000400a00L, true, 0, 0x0L), 4), 134122); - - // gentest-5996 - assertEqual(perft(new Board(0x400000L, 0x2L, 0x400000000000800L, 0x20000000000L, 0x0L, 0x1000010000000L, 0x400000010000002L, 0x1020000400800L, false, 0, 0x0L), 4), 142440); - - // gentest-5997 - assertEqual(perft(new Board(0x400000L, 0x2L, 0x800040000000L, 0x20000000000L, 0x0L, 0x2000010000000L, 0x50000002L, 0x2820000400000L, true, 0, 0x0L), 4), 162282); - - // gentest-5998 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x800000800000L, 0x2L, 0x0L, 0x2000000080000L, 0x880000L, 0x2800000400002L, false, 0, 0x0L), 4), 94314); - - // gentest-5999 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x20000020L, 0x200L, 0x0L, 0x2000000080000L, 0x80020L, 0x2000020400200L, true, 0, 0x0L), 4), 46463); - - // gentest-6000 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x4000001000L, 0x200L, 0x0L, 0x2000008000000L, 0x8001000L, 0x2004000400200L, false, 0, 0x0L), 4), 109243); - } - - public static void batch15() { - // gentest-6001 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x4000001000L, 0x800000000000000L, 0x0L, 0x2000000040000L, 0x41000L, 0x802004000400000L, true, 0, 0x0L), 4), 129304); - - // gentest-6002 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x4000000020L, 0x800000000000000L, 0x0L, 0x1000000040000L, 0x40020L, 0x801004000400000L, false, 0, 0x0L), 4), 94877); - - // gentest-6003 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x10000000001000L, 0x8L, 0x0L, 0x1000000040000L, 0x41000L, 0x11000000400008L, true, 0, 0x0L), 4), 106487); - - // gentest-6004 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x10000004000000L, 0x20L, 0x0L, 0x1000000020000L, 0x4020000L, 0x11000000400020L, false, 0, 0x0L), 4), 132060); - - // gentest-6005 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x4000004000000000L, 0x2000L, 0x0L, 0x1000000020000L, 0x4000000000020000L, 0x1004000402000L, true, 0, 0x0L), 4), 90249); - - // gentest-6006 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x4800000000L, 0x200000L, 0x0L, 0x1000002000000L, 0x802000000L, 0x1004000600000L, false, 0, 0x0L), 4), 125685); - - // gentest-6007 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x880000000L, 0x20000L, 0x0L, 0x1000200000000L, 0xa00000000L, 0x1000080420000L, true, 0, 0x0L), 4), 27141); - - // gentest-6008 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x880000000L, 0x2000000000000L, 0x0L, 0x1000008000000L, 0x808000000L, 0x3000080400000L, false, 0, 0x0L), 4), 113903); - - // gentest-6009 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x880000000L, 0x8000000L, 0x0L, 0x1001000000000L, 0x1800000000L, 0x1000088400000L, true, 0, 0x0L), 4), 84951); - - // gentest-6010 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x84000000L, 0x0L, 0x0L, 0x1080000000000L, 0x80004000000L, 0x1000080400000L, false, 0, 0x0L), 4), 23479); - - // gentest-6011 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x4000080000L, 0x0L, 0x0L, 0x2080000000000L, 0x80000080000L, 0x2004000400000L, true, 0, 0x0L), 4), 46070); - - // gentest-6012 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x4000000400L, 0x0L, 0x0L, 0x100040000000000L, 0x40000000400L, 0x100004000400000L, false, 0, 0x0L), 4), 31431); - - // gentest-6013 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x10000000000400L, 0x0L, 0x0L, 0x1000200000000L, 0x200000400L, 0x11000000400000L, true, 0, 0x0L), 4), 28424); - - // gentest-6014 - assertEqual(perft(new Board(0x400000L, 0x0L, 0x10008L, 0x0L, 0x0L, 0x1040000000000L, 0x40000000008L, 0x1000000410000L, false, 0, 0x0L), 4), 19085); - - // gentest-6015 - assertEqual(perft(new Board(0x0L, 0x0L, 0x11040L, 0x0L, 0x0L, 0x1040000000000L, 0x40000001000L, 0x1000000010040L, true, 0, 0x0L), 4), 43418); - - // gentest-6016 - assertEqual(perft(new Board(0x0L, 0x0L, 0x12008L, 0x0L, 0x0L, 0x5000000000000L, 0x4000000000008L, 0x1000000012000L, false, 0, 0x0L), 4), 33108); - - // gentest-6017 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6018 - assertEqual(perft(new Board(0xf700080110ee00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x110eeffL, 0xfff7000800000000L, false, 0, 0x8100000000000081L), 4), 769381); - - // gentest-6019 - assertEqual(perft(new Board(0xf700080510ea00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x510eaffL, 0xfff7000800000000L, true, 0, 0x8100000000000081L), 4), 785113); - - // gentest-6020 - assertEqual(perft(new Board(0xf502080d10e200L, 0x4200000000000042L, 0x2400000000080004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xd18e2dfL, 0xfff5020800000000L, false, 0, 0x8100000000000081L), 4), 1194035); - - // gentest-6021 - assertEqual(perft(new Board(0xf1020c0d10e200L, 0x4000010000000042L, 0x2400000000080004L, 0x8100000000010080L, 0x800000000000008L, 0x1000000000000010L, 0xd19e2deL, 0xfdf1030c00000000L, true, 0, 0x8100000000000080L), 4), 1169083); - - // gentest-6022 - assertEqual(perft(new Board(0xf1020c0d10e200L, 0x4000010000000042L, 0x2400400000000004L, 0x8200000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x40000d10e2dfL, 0xfef1030c00000000L, false, 0, 0x8000000000000080L), 4), 988594); - - // gentest-6023 - assertEqual(perft(new Board(0xf1020c0d10e200L, 0x4000010000040040L, 0x2400400000000004L, 0x8200000000000081L, 0x4000000000008L, 0x1000000000000010L, 0x40000d14e2ddL, 0xf6f5030c00000000L, true, 0, 0x8000000000000080L), 4), 1817791); - - // gentest-6024 - assertEqual(perft(new Board(0x71020c0d10e200L, 0x4000010000040040L, 0x2400000010000004L, 0x8200000000000081L, 0x20000008L, 0x1000000000000010L, 0x1d14e2ddL, 0xf671030c20000000L, false, 0, 0x8000000000000080L), 4), 2966819); - - // gentest-6025 - assertEqual(perft(new Board(0x71020c0d10e200L, 0x4000010000000140L, 0x2002000010000004L, 0x8800000000000081L, 0x20000008L, 0x1000000000000010L, 0x1d10e3ddL, 0xf873030c20000000L, true, 0, 0x8000000000000080L), 4), 2514983); - - // gentest-6026 - assertEqual(perft(new Board(0x71020c0900e200L, 0x4000010000000140L, 0x2002000010000004L, 0x8800000000000081L, 0x100008L, 0x1000000000000020L, 0x81900e3edL, 0xf873030400100000L, false, 0, 0x8000000000000000L), 4), 2543269); - - // gentest-6027 - assertEqual(perft(new Board(0x71020c89006200L, 0x4000010000000140L, 0x2002000010000004L, 0x8200000000000081L, 0x10008L, 0x1000000000000020L, 0x8990063edL, 0xf273030400010000L, true, 0, 0x8000000000000000L), 4), 2289415); - - // gentest-6028 - assertEqual(perft(new Board(0x51022c89026000L, 0x4000010000000140L, 0x2002000010000004L, 0x8200000000000081L, 0x8000010000L, 0x1000000000000020L, 0x88990261e5L, 0xf253032400010000L, false, 0, 0x8000000000000000L), 4), 186441); - - // gentest-6029 - assertEqual(perft(new Board(0x51022c89026000L, 0x4000010000000140L, 0x2002000010010000L, 0x280000000000081L, 0x8000000000L, 0x8000000000020L, 0x88990361e1L, 0x62db032400000000L, true, 0, 0x0L), 4), 1255932); - - // gentest-6030 - assertEqual(perft(new Board(0x11026c89026000L, 0x4000010000200004L, 0x2002000010010000L, 0x280000000000081L, 0x8000000000L, 0x8000000000020L, 0x88992360a5L, 0x629b036400000000L, false, 0, 0x0L), 4), 1415359); - - // gentest-6031 - assertEqual(perft(new Board(0x11024d98026000L, 0x4000010000200004L, 0x2002000000010000L, 0x280000000000081L, 0x8000000000L, 0x800000000000020L, 0x89882360a5L, 0x6a93034410000000L, true, 0, 0x0L), 4), 1014451); - - // gentest-6032 - assertEqual(perft(new Board(0x11020d9a006000L, 0x4000010000200004L, 0x2002000000010000L, 0x200000000000081L, 0x80000000000000L, 0x800000000000020L, 0x8000090a2160a5L, 0x6a13030490000000L, false, 0, 0x0L), 4), 1003569); - - // gentest-6033 - assertEqual(perft(new Board(0x11020d1a806000L, 0x810000200004L, 0x2002000000010000L, 0x200000000000081L, 0x8000000000000000L, 0x800000000000020L, 0x800000090a2160a5L, 0x2a13830410800000L, true, 0, 0x0L), 4), 813999); - - // gentest-6034 - assertEqual(perft(new Board(0x11020d1a806000L, 0x12000200004L, 0x2002000000010000L, 0x200000000008001L, 0x8000000000000000L, 0x800000000000040L, 0x800000090a21e045L, 0x2a13032410800000L, false, 0, 0x0L), 4), 943770); - - // gentest-6035 - assertEqual(perft(new Board(0x1100051a806000L, 0x12000280000L, 0x2000000800010000L, 0x200000000008001L, 0x8000000000000000L, 0x800000000000040L, 0x800000000a29e041L, 0x2a11012d10800000L, true, 0, 0x0L), 4), 2135705); - - // gentest-6036 - assertEqual(perft(new Board(0x1100011a806000L, 0x12000280000L, 0x2000000800010000L, 0x200000000008001L, 0x40000000000L, 0x800000000000040L, 0x4000229e041L, 0x2a11012918800000L, false, 0, 0x0L), 4), 1998927); - - // gentest-6037 - assertEqual(perft(new Board(0x1100011a006000L, 0x90000280000L, 0x2000000800010000L, 0x200000000008001L, 0x400000000L, 0x800000000000040L, 0x40229a041L, 0x2a11090918004000L, true, 0, 0x0L), 4), 1898084); - - // gentest-6038 - assertEqual(perft(new Board(0x1100011a006000L, 0x90000280000L, 0x2000000800010000L, 0x180000000000002L, 0x400000000L, 0x800000000000040L, 0x80000402292042L, 0x2911090918004000L, false, 0, 0x0L), 4), 2089656); - - // gentest-6039 - assertEqual(perft(new Board(0x1100001b006000L, 0x20010000280000L, 0x2000000800000200L, 0x180000000000002L, 0x400000000L, 0x800000000000040L, 0x80000402282242L, 0x2931010819004000L, true, 0, 0x0L), 4), 1290623); - - // gentest-6040 - assertEqual(perft(new Board(0x1100001b006000L, 0x20010000280000L, 0x2000000800010000L, 0x280000000000002L, 0x4000000L, 0x800000000000040L, 0x80000006292042L, 0x2a31010819004000L, false, 0, 0x0L), 4), 1601201); - - // gentest-6041 - assertEqual(perft(new Board(0x1100001b006000L, 0x11000280000L, 0x2000000800010000L, 0x280000000000002L, 0x4000000000000L, 0x1000000000000040L, 0x84000002292042L, 0x3211011819004000L, true, 0, 0x0L), 4), 2000477); - - // gentest-6042 - assertEqual(perft(new Board(0x1100001b006000L, 0x11000280000L, 0x2000000800000200L, 0x880000000000002L, 0x4000000000000L, 0x1000000000000040L, 0x84000002282242L, 0x3811011819004000L, false, 0, 0x0L), 4), 2213774); - - // gentest-6043 - assertEqual(perft(new Board(0x1100000b206000L, 0x50000080000L, 0x2000000800000001L, 0x880000000000002L, 0x4000000000000L, 0x1000000000000040L, 0x84000002082043L, 0x3811050809204000L, true, 0, 0x0L), 4), 963272); - - // gentest-6044 - assertEqual(perft(new Board(0x100000b202000L, 0x50000080040L, 0x2000000800000001L, 0x810000000000002L, 0x4000000000000L, 0x1000000000008000L, 0x1400000208a003L, 0x3801050809200040L, false, 0, 0x0L), 4), 69238); - - // gentest-6045 - assertEqual(perft(new Board(0x100000b202000L, 0x50000080040L, 0x2000000800000001L, 0x800000000000002L, 0x40000L, 0x1000000000008000L, 0x20ca003L, 0x3801050809200040L, true, 0, 0x0L), 4), 800524); - - // gentest-6046 - assertEqual(perft(new Board(0x100000b202000L, 0x10100080040L, 0x2000000800000001L, 0x800000000020000L, 0x40000000000L, 0x1000000000008000L, 0x400020aa001L, 0x3801010909200040L, false, 0, 0x0L), 4), 122345); - - // gentest-6047 - assertEqual(perft(new Board(0x100000b202000L, 0x200040000080040L, 0x2000000800000001L, 0x800000000020000L, 0x0L, 0x1000000000400000L, 0x24a2001L, 0x3a01040809200040L, true, 0, 0x0L), 4), 308813); - - // gentest-6048 - assertEqual(perft(new Board(0x100000b202000L, 0x200040000000240L, 0x2000100000000001L, 0x800000000100000L, 0x0L, 0x1000000000400000L, 0x2502201L, 0x3a01140009200040L, false, 0, 0x0L), 4), 209243); - - // gentest-6049 - assertEqual(perft(new Board(0x100000b202000L, 0x200040000000240L, 0x10100000000001L, 0x800000000000010L, 0x0L, 0x20000000400000L, 0x2402211L, 0xa31140009200040L, true, 0, 0x0L), 4), 411550); - - // gentest-6050 - assertEqual(perft(new Board(0x100000b202000L, 0x200040000000240L, 0x80000001L, 0x800100000000000L, 0x0L, 0x20000020000000L, 0x100022002201L, 0xa21040089200040L, false, 0, 0x0L), 4), 249551); - - // gentest-6051 - assertEqual(perft(new Board(0x100000b202000L, 0x8000100000240L, 0x80000001L, 0x800040000000000L, 0x0L, 0x20000020000000L, 0x40022002201L, 0x829000189200040L, true, 0, 0x0L), 4), 429394); - - // gentest-6052 - assertEqual(perft(new Board(0x100000b202000L, 0x8000104000040L, 0x80000001L, 0xc00000000000000L, 0x0L, 0x200020000000L, 0x400000026002001L, 0x809200189200040L, false, 0, 0x0L), 4), 230227); - - // gentest-6053 - assertEqual(perft(new Board(0x100000b202000L, 0x20500000040L, 0x80000001L, 0xc00000000000000L, 0x0L, 0x20000020000000L, 0x400020022002001L, 0x821000589200040L, true, 0, 0x0L), 4), 405402); - - // gentest-6054 - assertEqual(perft(new Board(0x100000a212000L, 0x20500000040L, 0x80000200L, 0xa00000000000000L, 0x0L, 0x20000020000000L, 0x200020022002200L, 0x821000588210040L, false, 0, 0x0L), 4), 488481); - - // gentest-6055 - assertEqual(perft(new Board(0x100000a200000L, 0x30100000040L, 0x12000L, 0xa00000000000000L, 0x0L, 0x20000020000000L, 0x200020022010000L, 0x821010108202040L, true, 0, 0x0L), 4), 278089); - - // gentest-6056 - assertEqual(perft(new Board(0x1000208200000L, 0x30100000040L, 0x10010L, 0xa00000000000000L, 0x0L, 0x20000040000000L, 0x200020240010000L, 0x821010108200050L, false, 0, 0x0L), 4), 476607); - - // gentest-6057 - assertEqual(perft(new Board(0x1010008200000L, 0xa0000000040L, 0x10010L, 0xa00000000000000L, 0x0L, 0x20000040000000L, 0x200030040010000L, 0x821080008200050L, true, 0, 0x0L), 4), 314788); - - // gentest-6058 - assertEqual(perft(new Board(0x1010008200000L, 0xa0000000040L, 0x10010L, 0x208000000000000L, 0x0L, 0x20000040000000L, 0x200030040010000L, 0x29080008200050L, false, 0, 0x0L), 4), 384585); - - // gentest-6059 - assertEqual(perft(new Board(0x1010008200000L, 0x20010000040L, 0x2000000000000010L, 0x200000800000000L, 0x0L, 0x20000040000000L, 0x2200030040000000L, 0x21000818200050L, true, 0, 0x0L), 4), 353877); - - // gentest-6060 - assertEqual(perft(new Board(0x1010008200000L, 0x20400000040L, 0x800000000010L, 0x4000000800000000L, 0x0L, 0x20000040000000L, 0x4000830040000000L, 0x21000c08200050L, false, 0, 0x0L), 4), 446103); - - // gentest-6061 - assertEqual(perft(new Board(0x1000008200000L, 0x30000000040L, 0x2800L, 0x4000000800000000L, 0x0L, 0x20000040000000L, 0x4000020040000800L, 0x21010808202040L, true, 0, 0x0L), 4), 358966); - - // gentest-6062 - assertEqual(perft(new Board(0x1000008200000L, 0x10800000040L, 0x2800L, 0x4000000000000000L, 0x0L, 0x100020000000L, 0x4000000820000800L, 0x1110008202040L, false, 0, 0x0L), 4), 121523); - - // gentest-6063 - assertEqual(perft(new Board(0x1000008200000L, 0x10800000040L, 0x2800L, 0x40000000L, 0x0L, 0x100020000000L, 0x860000800L, 0x1110008202040L, true, 0, 0x0L), 4), 99593); - - // gentest-6064 - assertEqual(perft(new Board(0x1000008200000L, 0x10010000000040L, 0x810L, 0x400000000000L, 0x0L, 0x100020000000L, 0x10400020000800L, 0x1110008200050L, false, 0, 0x0L), 4), 30453); - - // gentest-6065 - assertEqual(perft(new Board(0x1000008200000L, 0x10000000040L, 0x800L, 0x400000000000L, 0x0L, 0x10001000000000L, 0x401000000000L, 0x11010008200840L, true, 0, 0x0L), 4), 109073); - - // gentest-6066 - assertEqual(perft(new Board(0x1000008200000L, 0x10000000040L, 0x800L, 0x20000000000L, 0x0L, 0x2000080000000000L, 0xa0000000000L, 0x2001010008200840L, false, 0, 0x0L), 4), 85064); - - // gentest-6067 - assertEqual(perft(new Board(0x20008200000L, 0x10000000040L, 0x4000000000L, 0x0L, 0x0L, 0x2000000800000000L, 0x800000000L, 0x2000034008200040L, true, 0, 0x0L), 4), 18323); - - // gentest-6068 - assertEqual(perft(new Board(0x20000200000L, 0x10000000040L, 0x800L, 0x0L, 0x0L, 0x2000000008000000L, 0x8000000L, 0x2000030000200840L, false, 0, 0x0L), 4), 13156); - - // gentest-6069 - assertEqual(perft(new Board(0x20000200000L, 0x10000000040L, 0x800L, 0x0L, 0x0L, 0x2000000000100000L, 0x100000L, 0x2000030000200840L, true, 0, 0x0L), 4), 10010); - - // gentest-6070 - assertEqual(perft(new Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x1000000000000400L, 0x400L, 0x1000030000200040L, false, 0, 0x0L), 4), 8500); - - // gentest-6071 - assertEqual(perft(new Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, 0x4000030000200040L, true, 0, 0x0L), 4), 4330); - - // gentest-6072 - assertEqual(perft(new Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x80000000000200L, 0x200L, 0x80030000200040L, false, 0, 0x0L), 4), 7463); - - // gentest-6073 - assertEqual(perft(new Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x80000000000100L, 0x100L, 0x80030000200040L, true, 0, 0x0L), 4), 4941); - - // gentest-6074 - assertEqual(perft(new Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x400000000001L, 0x1L, 0x430000200040L, false, 0, 0x0L), 4), 4378); - - // gentest-6075 - assertEqual(perft(new Board(0x20000200000L, 0x4000000000040L, 0x0L, 0x0L, 0x0L, 0x80000000000100L, 0x100L, 0x84020000200040L, true, 0, 0x0L), 4), 6433); - - // gentest-6076 - assertEqual(perft(new Board(0x20000002000L, 0x4000000000040L, 0x0L, 0x0L, 0x0L, 0x80000000020000L, 0x20000L, 0x84020000002040L, false, 0, 0x0L), 4), 15458); - - // gentest-6077 - assertEqual(perft(new Board(0x20000000000L, 0x4000000001000L, 0x20L, 0x0L, 0x0L, 0x80000001000000L, 0x1000000L, 0x84020000001020L, true, 0, 0x0L), 4), 6611); - - // gentest-6078 - assertEqual(perft(new Board(0x20000000000L, 0x4000000000040L, 0x20L, 0x0L, 0x0L, 0x80000000010000L, 0x10000L, 0x84020000000060L, false, 0, 0x0L), 4), 11810); - - // gentest-6079 - assertEqual(perft(new Board(0x20000000000L, 0x200000040L, 0x1000L, 0x0L, 0x0L, 0x80000001000000L, 0x1000000L, 0x80020200001040L, true, 0, 0x0L), 4), 3577); - - // gentest-6080 - assertEqual(perft(new Board(0x20000000000L, 0x200000040L, 0x20L, 0x0L, 0x0L, 0x80000001000000L, 0x1000000L, 0x80020200000060L, false, 0, 0x0L), 4), 4086); - - // gentest-6081 - assertEqual(perft(new Board(0x20000000000L, 0x200200000L, 0x20L, 0x0L, 0x0L, 0x8000000002000000L, 0x2000000L, 0x8000020200200020L, true, 0, 0x0L), 4), 3679); - - // gentest-6082 - assertEqual(perft(new Board(0x20000000000L, 0x200200000L, 0x4000L, 0x0L, 0x0L, 0x8000000000000200L, 0x200L, 0x8000020200204000L, false, 0, 0x0L), 4), 12038); - - // gentest-6083 - assertEqual(perft(new Board(0x20000000000L, 0x200008000L, 0x20L, 0x0L, 0x0L, 0x8000000000000004L, 0x4L, 0x8000020200008020L, true, 0, 0x0L), 4), 8120); - - // gentest-6084 - assertEqual(perft(new Board(0x20000000000L, 0x200008000L, 0x80000L, 0x0L, 0x0L, 0x8000000000000001L, 0x1L, 0x8000020200088000L, false, 0, 0x0L), 4), 4096); - - // gentest-6085 - assertEqual(perft(new Board(0x20000000000L, 0x4000000008000L, 0x400L, 0x0L, 0x0L, 0x8000000000000200L, 0x200L, 0x8004020000008400L, true, 0, 0x0L), 4), 9720); - - // gentest-6086 - assertEqual(perft(new Board(0x20000000000L, 0x800008000L, 0x400L, 0x0L, 0x0L, 0x8000000000000800L, 0x800L, 0x8000020800008400L, false, 0, 0x0L), 4), 8793); - - // gentest-6087 - assertEqual(perft(new Board(0x20000000000L, 0x800008000L, 0x2000000000L, 0x0L, 0x0L, 0x40000000000010L, 0x10L, 0x40022800008000L, true, 0, 0x0L), 4), 15152); - - // gentest-6088 - assertEqual(perft(new Board(0x20000000000L, 0x800008000L, 0x800000L, 0x0L, 0x0L, 0x40000000000004L, 0x4L, 0x40020800808000L, false, 0, 0x0L), 4), 17599); - - // gentest-6089 - assertEqual(perft(new Board(0x20000000000L, 0x800008000L, 0x2000000000L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, 0x4000022800008000L, true, 0, 0x0L), 4), 11064); - - // gentest-6090 - assertEqual(perft(new Board(0x20000000000L, 0x800008000L, 0x10000000L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, 0x4000020810008000L, false, 0, 0x0L), 4), 9975); - - // gentest-6091 - assertEqual(perft(new Board(0x20000000000L, 0x2008000L, 0x400L, 0x0L, 0x0L, 0x4000000000000010L, 0x10L, 0x4000020002008400L, true, 0, 0x0L), 4), 8125); - - // gentest-6092 - assertEqual(perft(new Board(0x20000000000L, 0x2008000L, 0x80000L, 0x0L, 0x0L, 0x4000000000000010L, 0x10L, 0x4000020002088000L, false, 0, 0x0L), 4), 8261); - - // gentest-6093 - assertEqual(perft(new Board(0x20000000000L, 0x8100L, 0x80000000000000L, 0x0L, 0x0L, 0x4000000000000800L, 0x800L, 0x4080020000008100L, true, 0, 0x0L), 4), 5603); - - // gentest-6094 - assertEqual(perft(new Board(0x20000000000L, 0x2008000L, 0x80000000000000L, 0x0L, 0x0L, 0x4000000000000800L, 0x800L, 0x4080020002008000L, false, 0, 0x0L), 4), 9825); - - // gentest-6095 - assertEqual(perft(new Board(0x200000000L, 0x2008000L, 0x400L, 0x0L, 0x0L, 0x4000000000000004L, 0x4L, 0x4000000202008400L, true, 0, 0x0L), 4), 4807); - - // gentest-6096 - assertEqual(perft(new Board(0x200000000L, 0x2008000L, 0x2000000000L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, 0x4000002202008000L, false, 0, 0x0L), 4), 9475); - - // gentest-6097 - assertEqual(perft(new Board(0x200000000L, 0x2008000L, 0x10000000L, 0x0L, 0x0L, 0x8000000000000010L, 0x10L, 0x8000000212008000L, true, 0, 0x0L), 4), 10709); - - // gentest-6098 - assertEqual(perft(new Board(0x200000000L, 0x2008000L, 0x80L, 0x0L, 0x0L, 0x8000000000000010L, 0x10L, 0x8000000202008080L, false, 0, 0x0L), 4), 7119); - - // gentest-6099 - assertEqual(perft(new Board(0x200000000L, 0x200100L, 0x80L, 0x0L, 0x0L, 0x8000000000000008L, 0x8L, 0x8000000200200180L, true, 0, 0x0L), 4), 3178); - - // gentest-6100 - assertEqual(perft(new Board(0x200000000L, 0x4000000100L, 0x80L, 0x0L, 0x0L, 0x8000000000000200L, 0x200L, 0x8000004200000180L, false, 0, 0x0L), 4), 9102); - - // gentest-6101 - assertEqual(perft(new Board(0x200000000L, 0x4002000000L, 0x80L, 0x0L, 0x0L, 0x4000000000000400L, 0x400L, 0x4000004202000080L, true, 0, 0x0L), 4), 18583); - - // gentest-6102 - assertEqual(perft(new Board(0x200000000L, 0x4002000000L, 0x80L, 0x0L, 0x0L, 0x20000000000004L, 0x4L, 0x20004202000080L, false, 0, 0x0L), 4), 13702); - - // gentest-6103 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6104 - assertEqual(perft(new Board(0xff00003000cf00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x3000cfffL, 0xfdff040000000000L, false, 0, 0x8100000000000081L), 4), 478442); - - // gentest-6105 - assertEqual(perft(new Board(0x5fa00030804f00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x30804fffL, 0xfd5fa40000000000L, true, 0, 0x8100000000000081L), 4), 352540); - - // gentest-6106 - assertEqual(perft(new Board(0x5ea01120c00f00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1020c00fffL, 0xfd5ea40100000000L, false, 0, 0x8100000000000081L), 4), 405051); - - // gentest-6107 - assertEqual(perft(new Board(0x56a01960800f00L, 0x4000040000000042L, 0x2400000000000024L, 0x8000010000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1060800fffL, 0xfc56a50900000000L, true, 0, 0x8000000000000081L), 4), 596776); - - // gentest-6108 - assertEqual(perft(new Board(0x54a219e4000b00L, 0x4000040000000042L, 0x2400000000000024L, 0x8000010000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10e4000bffL, 0xfc54a70900000000L, false, 0, 0x8000000000000081L), 4), 726240); - - // gentest-6109 - assertEqual(perft(new Board(0x54a219e4080300L, 0x4000000000000442L, 0x2400000000000024L, 0x8000010000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10e40803ffL, 0xfc54a30900000400L, true, 0, 0x8000000000000081L), 4), 105373); - - // gentest-6110 - assertEqual(perft(new Board(0x542299e4080300L, 0x4000000000000442L, 0x2400000000000024L, 0x8000010000008001L, 0x800000000000008L, 0x1000000000001000L, 0x10e408936fL, 0xfc54238900000400L, false, 0, 0x8000000000000000L), 4), 941946); - - // gentest-6111 - assertEqual(perft(new Board(0x542299e4080300L, 0x4000000000010042L, 0x2000002000004004L, 0x8000010000008001L, 0x800000000000008L, 0x1000000000001000L, 0x10e408d34fL, 0xf85423a900010000L, true, 0, 0x8000000000000000L), 4), 1533685); - - // gentest-6112 - assertEqual(perft(new Board(0x542299e4080300L, 0x4000000000010040L, 0x2000000010004004L, 0x8000010000800001L, 0x800000000000008L, 0x1000000000001000L, 0x10e489534dL, 0xf854238910000000L, false, 0, 0x8000000000000000L), 4), 1168064); - - // gentest-6113 - assertEqual(perft(new Board(0x542289e4080300L, 0x4000000000010040L, 0x2000000010004004L, 0x810000800001L, 0x800000000000008L, 0x20000000001000L, 0x2000e489534dL, 0x6874838910000000L, true, 0, 0x0L), 4), 1723698); - - // gentest-6114 - assertEqual(perft(new Board(0x542289e4080300L, 0x4000000000010040L, 0x2000002000004004L, 0x810000800001L, 0x800000000020000L, 0x20000000000008L, 0x2000e48b434dL, 0x687483a900000000L, false, 0, 0x0L), 4), 1704970); - - // gentest-6115 - assertEqual(perft(new Board(0x542289e0080300L, 0x4000000000010040L, 0x2080000000004004L, 0x810000800001L, 0x100000000020000L, 0x20000000000008L, 0x2008e08b434dL, 0x61f4838100000000L, true, 0, 0x0L), 4), 1142821); - - // gentest-6116 - assertEqual(perft(new Board(0x542289e0080300L, 0x4000000000000042L, 0x2080000000004004L, 0x810000800001L, 0x1000000000020000L, 0x20000000000010L, 0x2008e08a4357L, 0x70f4838100000000L, false, 0, 0x0L), 4), 1298981); - - // gentest-6117 - assertEqual(perft(new Board(0x106689e0080300L, 0x4000000000001002L, 0x2080000000004004L, 0x810000800001L, 0x1000000000020000L, 0x20000000000010L, 0x2008e08a5317L, 0x70b0c78100000000L, true, 0, 0x0L), 4), 641271); - - // gentest-6118 - assertEqual(perft(new Board(0x104689e0080300L, 0x200010001000L, 0x2080000000004004L, 0x810000800001L, 0x1000000000020000L, 0x20000000000010L, 0x8f08a5315L, 0x30b0e78100000000L, false, 0, 0x0L), 4), 1093359); - - // gentest-6119 - assertEqual(perft(new Board(0x5689e0080300L, 0x200010001000L, 0x2080000000004004L, 0x1800000800001L, 0x1000000000020000L, 0x20000000002000L, 0x8f08a7305L, 0x30a1f68100000000L, true, 0, 0x0L), 4), 2085693); - - // gentest-6120 - assertEqual(perft(new Board(0x5689e0080300L, 0x200000440000L, 0x2080000000004004L, 0x1800000800001L, 0x8000000020000L, 0x20000000002000L, 0x8e0ce6305L, 0x20a9f68100000000L, false, 0, 0x0L), 4), 2103583); - - // gentest-6121 - assertEqual(perft(new Board(0x5689e1080200L, 0x200000440000L, 0x90000000004004L, 0x1800000800001L, 0x1000000000020000L, 0x20000000002000L, 0x8e1ce6205L, 0x10b1f68100000000L, true, 0, 0x0L), 4), 2110391); - - // gentest-6122 - assertEqual(perft(new Board(0x528de9000200L, 0x200000440000L, 0x90000000004800L, 0x1800000800001L, 0x1000000000020000L, 0x20000000002000L, 0x8e9c66a01L, 0x10b1f28500000000L, false, 0, 0x0L), 4), 2660777); - - // gentest-6123 - assertEqual(perft(new Board(0x528de9000200L, 0x200000440000L, 0x90000000004800L, 0x840000800001L, 0x1000000000020000L, 0x20000000000020L, 0x8e9c64a21L, 0x10b0f68500000000L, true, 0, 0x0L), 4), 1773061); - - // gentest-6124 - assertEqual(perft(new Board(0x5685e9000200L, 0x200000440000L, 0x4010000000004010L, 0x800000800001L, 0x1000000000020000L, 0x20000000000020L, 0x400e9c64231L, 0x5030f28500000000L, false, 0, 0x0L), 4), 1286024); - - // gentest-6125 - assertEqual(perft(new Board(0x5285e9000200L, 0x800440000L, 0x4010000000004010L, 0x800000008001L, 0x40000020000L, 0x20000000000020L, 0xe946c231L, 0x4030d68d00000000L, true, 0, 0x0L), 4), 1920502); - - // gentest-6126 - assertEqual(perft(new Board(0x5281e9000200L, 0x800440000L, 0x4010000000004010L, 0x800000008001L, 0x40000020000L, 0x20000000000020L, 0xe146c231L, 0x4030d68908000000L, false, 0, 0x0L), 4), 2299474); - - // gentest-6127 - assertEqual(perft(new Board(0x5281e9000200L, 0x200000400002L, 0x4010000000004010L, 0x8000000000008001L, 0x40000020000L, 0x20000000000020L, 0xe142c233L, 0xc030768108000000L, true, 0, 0x0L), 4), 2432283); - - // gentest-6128 - assertEqual(perft(new Board(0x5281e8000200L, 0x200000410000L, 0x4010000000044000L, 0x8000000000008001L, 0x1020000L, 0x20000000000020L, 0xe047c221L, 0xc030728109000000L, false, 0, 0x0L), 4), 1819885); - - // gentest-6129 - assertEqual(perft(new Board(0x5281e8000200L, 0x200000410000L, 0x80080000044000L, 0x8000000000008001L, 0x3000000L, 0x20000000000020L, 0xe245c221L, 0x80a07a8109000000L, true, 0, 0x0L), 4), 3211273); - - // gentest-6130 - assertEqual(perft(new Board(0x5281e8000200L, 0x200010000002L, 0x80080000044000L, 0x8000000000008001L, 0x3000000L, 0x4000000000000020L, 0xf204c223L, 0xc0807a8109000000L, false, 0, 0x0L), 4), 1397726); - - // gentest-6131 - assertEqual(perft(new Board(0x5281e0080200L, 0x200010000002L, 0x80001000044000L, 0x8000000000018000L, 0x3000000L, 0x4000000000000020L, 0xf205c222L, 0xc080729101080000L, true, 0, 0x0L), 4), 1113252); - - // gentest-6132 - assertEqual(perft(new Board(0x5281e0080200L, 0x1000000000000802L, 0x80001010040000L, 0x8000000000018000L, 0x3000000L, 0x4000000000000020L, 0xf2058a22L, 0xd080529101080000L, false, 0, 0x0L), 4), 1195682); - - // gentest-6133 - assertEqual(perft(new Board(0x5281e0080200L, 0x1000000000000802L, 0x80200010040000L, 0x8000000000010080L, 0x40002000000L, 0x4000000000000020L, 0xf2050aa2L, 0xd080768100080000L, true, 0, 0x0L), 4), 1539603); - - // gentest-6134 - assertEqual(perft(new Board(0x5281a0080200L, 0x1000000000000802L, 0x80001010000000L, 0x8000000000010080L, 0x40002000000L, 0x4000000000000020L, 0x90b2010aa2L, 0xd080560100080000L, false, 0, 0x0L), 4), 1256553); - - // gentest-6135 - assertEqual(perft(new Board(0x5281a0080200L, 0x1000000000000802L, 0x80001010000000L, 0x8000000000010080L, 0x10000004000000L, 0x4000000000000020L, 0x90b4010aa2L, 0xd090520100080000L, true, 0, 0x0L), 4), 1629953); - - // gentest-6136 - assertEqual(perft(new Board(0x5281a0000200L, 0x1000000000000802L, 0x80001010000000L, 0x8000000000010080L, 0x10000000100000L, 0x2000000000000020L, 0x90b0110aa2L, 0xb090520100000000L, false, 0, 0x0L), 4), 1836102); - - // gentest-6137 - assertEqual(perft(new Board(0x5281a0000200L, 0x40000000000802L, 0x80001010000000L, 0x4000000000080080L, 0x10000000100000L, 0x2000000000000020L, 0x90b0180aa2L, 0x60d0520100000000L, true, 0, 0x0L), 4), 1346981); - - // gentest-6138 - assertEqual(perft(new Board(0x5280a1000200L, 0x40000000010800L, 0x80041000000000L, 0x4000000000080080L, 0x10000000100000L, 0x2000000000000020L, 0x490a0190aa0L, 0x60d0520001000000L, false, 0, 0x0L), 4), 1385459); - - // gentest-6139 - assertEqual(perft(new Board(0x5280a1000200L, 0x40000000010800L, 0x80041000000000L, 0x4000000000080080L, 0x10000000002000L, 0x2000000000000020L, 0x490a0092aa0L, 0x60d0520001000000L, true, 0, 0x0L), 4), 1544002); - - // gentest-6140 - assertEqual(perft(new Board(0x5200a1000200L, 0x10800L, 0xc0040000000000L, 0x4000000000080080L, 0x20000000002000L, 0x2000000000000020L, 0x404400a0092aa0L, 0x60a0120001000000L, false, 0, 0x0L), 4), 232095); - - // gentest-6141 - assertEqual(perft(new Board(0x5200a1000200L, 0x200000800L, 0xc0040000000000L, 0x8000000000080080L, 0x20000000002000L, 0x10000000000020L, 0x404402a0082aa0L, 0x80b0120001000000L, true, 0, 0x0L), 4), 1328024); - - // gentest-6142 - assertEqual(perft(new Board(0x1200a1000200L, 0x200000002L, 0xc0000000200000L, 0x8000000000080080L, 0x400000002000L, 0x10000000000020L, 0x400002a02822a2L, 0x8090520001000000L, false, 0, 0x0L), 4), 1803008); - - // gentest-6143 - assertEqual(perft(new Board(0x1200a1000200L, 0x200000002L, 0x40002000200000L, 0x8000000000080080L, 0x2000L, 0x10000000000040L, 0x400002a02822c2L, 0x8010122001000000L, true, 0, 0x0L), 4), 1199769); - - // gentest-6144 - assertEqual(perft(new Board(0x1200a3000000L, 0x200000002L, 0x40002000004000L, 0x800000080080L, 0x2000L, 0x10000000000040L, 0x400002a20860c2L, 0x10922001000000L, false, 17, 0x0L), 4), 822730); - - // gentest-6145 - assertEqual(perft(new Board(0x210a2010000L, 0x200000002L, 0x40002000004000L, 0x800000080080L, 0x10L, 0x10000000000040L, 0x400002a20840d2L, 0x10823000010000L, true, 0, 0x0L), 4), 1276551); - - // gentest-6146 - assertEqual(perft(new Board(0x210a2010000L, 0x200000002L, 0x42100000000000L, 0x800000040080L, 0x10L, 0x10000000000040L, 0x420002a20400d2L, 0x10921000010000L, false, 0, 0x0L), 4), 1337922); - - // gentest-6147 - assertEqual(perft(new Board(0x210a2010000L, 0x200000002L, 0x42100000000000L, 0x8000000000040080L, 0x10000000L, 0x10000000000040L, 0x420002b20400c2L, 0x8010121000010000L, true, 0, 0x0L), 4), 1713145); - - // gentest-6148 - assertEqual(perft(new Board(0x21022010000L, 0x1000000000000002L, 0x42100000000000L, 0x80040080L, 0x10000000L, 0x10000000000040L, 0x10420000320400c2L, 0x10121080010000L, false, 0, 0x0L), 4), 1503468); - - // gentest-6149 - assertEqual(perft(new Board(0x1222010000L, 0x1000000000000002L, 0x42000000000100L, 0x80040080L, 0x10000000L, 0x10000000002000L, 0x1042000032042082L, 0x10001280010100L, true, 0, 0x0L), 4), 1257132); - - // gentest-6150 - assertEqual(perft(new Board(0x1222010000L, 0x1000000000000002L, 0x42000000000100L, 0x40400080L, 0x10000000L, 0x10000000000040L, 0x10420000324000c2L, 0x10001240010100L, false, 0, 0x0L), 4), 656951); - - // gentest-6151 - assertEqual(perft(new Board(0x1222010000L, 0x1000000000000000L, 0x42000000000002L, 0x804000400000L, 0x10000000L, 0x10000000000040L, 0x1042800032400040L, 0x10005200010002L, true, 0, 0x0L), 4), 629469); - - // gentest-6152 - assertEqual(perft(new Board(0x5202010000L, 0x1000000000000000L, 0x42000000000002L, 0x800000400000L, 0x80000000000000L, 0x800000000000040L, 0x10c2804002400040L, 0x800001200010002L, false, 0, 0x0L), 4), 306036); - - // gentest-6153 - assertEqual(perft(new Board(0x5202010000L, 0x1000000000000000L, 0x42000000000002L, 0x200000400000L, 0x80000000000000L, 0x800000000000040L, 0x10c2204002400040L, 0x800001200010002L, true, 0, 0x0L), 4), 351989); - - // gentest-6154 - assertEqual(perft(new Board(0x5202010000L, 0x1000000000000000L, 0xc2000000000000L, 0x80040000000L, 0x0L, 0x800000000000040L, 0x1042084042000040L, 0x880001200010000L, false, 0, 0x0L), 4), 33564); - - // gentest-6155 - assertEqual(perft(new Board(0x5202010000L, 0x1000000000000000L, 0xc2000000000000L, 0x100040000000L, 0x0L, 0x20000000000040L, 0x1042104042000040L, 0xa0001200010000L, true, 0, 0x0L), 4), 145341); - - // gentest-6156 - assertEqual(perft(new Board(0x4212010000L, 0x1000000000000000L, 0xc0010000000000L, 0x100008000000L, 0x0L, 0x20000000000040L, 0x104011400a000040L, 0xa0000210010000L, false, 0, 0x0L), 4), 58003); - - // gentest-6157 - assertEqual(perft(new Board(0x4012010000L, 0x1000000000000000L, 0x40002200000000L, 0x100008000000L, 0x0L, 0x20000000000040L, 0x104010420a000040L, 0x20002010010000L, true, 0, 0x0L), 4), 136297); - - // gentest-6158 - assertEqual(perft(new Board(0x4002110000L, 0x1000000000000000L, 0x3200000000L, 0x100080000000L, 0x0L, 0x20000000000040L, 0x1000105282000040L, 0x20002000110000L, false, 0, 0x0L), 4), 361669); - - // gentest-6159 - assertEqual(perft(new Board(0x4002011000L, 0x1000000000000000L, 0x1210000000L, 0x100080000000L, 0x0L, 0x20000000000020L, 0x1000105282000020L, 0x20000010011000L, true, 0, 0x0L), 4), 57092); - - // gentest-6160 - assertEqual(perft(new Board(0x4002011000L, 0x1000000000000000L, 0x80000200400000L, 0x100080000000L, 0x0L, 0x20000000002000L, 0x1000104282402000L, 0xa0000000011000L, false, 0, 0x0L), 4), 335573); - - // gentest-6161 - assertEqual(perft(new Board(0x4002010000L, 0x1000000000000000L, 0x80000200400000L, 0x100080000000L, 0x0L, 0x2000000000000010L, 0x1000104282400010L, 0x2080000000010000L, true, 0, 0x0L), 4), 211042); - - // gentest-6162 - assertEqual(perft(new Board(0x4002010000L, 0x1000000000000000L, 0x400200400000L, 0x100000000080L, 0x0L, 0x2000000000002000L, 0x1000104202402080L, 0x2000400000010000L, false, 0, 0x0L), 4), 328088); - - // gentest-6163 - assertEqual(perft(new Board(0x4002010000L, 0x1000000000000000L, 0x20010000400000L, 0x100000000080L, 0x0L, 0x4000000000002000L, 0x1000114002402080L, 0x4020000000010000L, true, 0, 0x0L), 4), 183209); - - // gentest-6164 - assertEqual(perft(new Board(0x4002010000L, 0x200000000000L, 0x20010000400000L, 0x100000000080L, 0x0L, 0x40000000004000L, 0x314002404080L, 0x60000000010000L, false, 0, 0x0L), 4), 202890); - - // gentest-6165 - assertEqual(perft(new Board(0x4002010000L, 0x1000000000000000L, 0x4000010000400000L, 0x100000000080L, 0x0L, 0x2000000000004000L, 0x1000114002404080L, 0x6000000000010000L, true, 0, 0x0L), 4), 136516); - - // gentest-6166 - assertEqual(perft(new Board(0x4002010000L, 0x1000000000000000L, 0x110080000000L, 0x40L, 0x0L, 0x2000000000004000L, 0x1000014082004040L, 0x2000100000010000L, false, 0, 0x0L), 4), 151692); - - // gentest-6167 - assertEqual(perft(new Board(0x4200010000L, 0x1000000000000000L, 0x10080000008L, 0x40L, 0x0L, 0x2000000000004000L, 0x1000014280004040L, 0x2000000000010008L, true, 0, 0x0L), 4), 62751); - - // gentest-6168 - assertEqual(perft(new Board(0x400200010000L, 0x1000000000000000L, 0x10081000000L, 0x40L, 0x0L, 0x2000000000000020L, 0x1000410280000060L, 0x2000000001010000L, false, 0, 0x0L), 4), 30545); - - // gentest-6169 - assertEqual(perft(new Board(0x400200010000L, 0x4000000000000L, 0x10880000000L, 0x40L, 0x0L, 0x2000000000000020L, 0x4410280000060L, 0x2000000800010000L, true, 0, 0x0L), 4), 84816); - - // gentest-6170 - assertEqual(perft(new Board(0x400200010000L, 0x4000000000000L, 0x2000000002100L, 0x40L, 0x0L, 0x2000000000000020L, 0x6400200002060L, 0x2000000000010100L, false, 0, 0x0L), 4), 90329); - - // gentest-6171 - assertEqual(perft(new Board(0x400200010000L, 0x4000000000000L, 0x2000000022000L, 0x40L, 0x0L, 0x10000000000010L, 0x6400200002050L, 0x10000000030000L, true, 0, 0x0L), 4), 183212); - - // gentest-6172 - assertEqual(perft(new Board(0x40000200010000L, 0x4000000000000L, 0x2000000022000L, 0x40L, 0x0L, 0x8000000001000L, 0x46000200003040L, 0x8000000030000L, false, 0, 0x0L), 4), 256959); - - // gentest-6173 - assertEqual(perft(new Board(0x40000200010000L, 0x0L, 0x4000000010002000L, 0x40L, 0x0L, 0x4000000001000L, 0x40000210003040L, 0x4004000000010000L, true, 0, 0x0L), 4), 232796); - - // gentest-6174 - assertEqual(perft(new Board(0x40000200010000L, 0x0L, 0x4000002000002000L, 0x10L, 0x0L, 0x800000000001000L, 0x40002200003010L, 0x4800000000010000L, false, 0, 0x0L), 4), 130386); - - // gentest-6175 - assertEqual(perft(new Board(0x40000200010000L, 0x0L, 0x4000002008000000L, 0x10L, 0x0L, 0x20000000001000L, 0x40002208001010L, 0x4020000000010000L, true, 0, 0x0L), 4), 51581); - - // gentest-6176 - assertEqual(perft(new Board(0x40000200000100L, 0x0L, 0x4000002008000000L, 0x80L, 0x0L, 0x20000000002000L, 0x40002208002080L, 0x4020000000000100L, false, 0, 0x0L), 4), 123478); - - // gentest-6177 - assertEqual(perft(new Board(0x40000200000000L, 0x1L, 0x4000002008000000L, 0x80000000000000L, 0x0L, 0x10000000002000L, 0xc0002208002000L, 0x4010000000000001L, true, 0, 0x0L), 4), 194368); - - // gentest-6178 - assertEqual(perft(new Board(0x40000200000000L, 0x1L, 0x4000003000000000L, 0x80000000000000L, 0x0L, 0x20000000002000L, 0xc0003200002000L, 0x4020000000000001L, false, 0, 0x0L), 4), 62411); - - // gentest-6179 - assertEqual(perft(new Board(0x40000200000000L, 0x1L, 0x4000001000080000L, 0x80000000000000L, 0x0L, 0x20000000002000L, 0xc0001200082000L, 0x4020000000000001L, true, 0, 0x0L), 4), 74460); - - // gentest-6180 - assertEqual(perft(new Board(0x40000200000000L, 0x1L, 0x4000000020080000L, 0x8000000000000000L, 0x0L, 0x100000002000L, 0x8040000220082000L, 0x4000100000000001L, false, 0, 0x0L), 4), 142753); - - // gentest-6181 - assertEqual(perft(new Board(0x200000000L, 0x1L, 0x4000000020080000L, 0x8000000000000000L, 0x0L, 0x100000002000L, 0x8000000220082000L, 0x4000100000000001L, true, 0, 0x0L), 4), 127721); - - // gentest-6182 - assertEqual(perft(new Board(0x200000000L, 0x1L, 0x20000000480000L, 0x800000L, 0x0L, 0x100000002000L, 0x200c82000L, 0x20100000000001L, false, 0, 0x0L), 4), 118252); - - // gentest-6183 - assertEqual(perft(new Board(0x200000000L, 0x1L, 0x400002L, 0x800000L, 0x0L, 0x100000002000L, 0x200c02000L, 0x100000000003L, true, 0, 0x0L), 4), 117713); - - // gentest-6184 - assertEqual(perft(new Board(0x200000000L, 0x20000L, 0x200000000000002L, 0x100000L, 0x0L, 0x100000002000L, 0x200000200102000L, 0x100000020002L, false, 0, 0x0L), 4), 64100); - - // gentest-6185 - assertEqual(perft(new Board(0x200000000L, 0x400000000L, 0x200000000000002L, 0x10L, 0x0L, 0x20000000002000L, 0x200000200002010L, 0x20000400000002L, true, 0, 0x0L), 4), 259346); - - // gentest-6186 - assertEqual(perft(new Board(0x200000000L, 0x400000000L, 0x20000002L, 0x0L, 0x0L, 0x10000000002000L, 0x220002000L, 0x10000400000002L, false, 0, 0x0L), 4), 134137); - - // gentest-6187 - assertEqual(perft(new Board(0x200000000L, 0x400000000L, 0x400002L, 0x0L, 0x0L, 0x1000000000002000L, 0x200402000L, 0x1000000400000002L, true, 0, 0x0L), 4), 87871); - - // gentest-6188 - assertEqual(perft(new Board(0x200000000L, 0x400000000L, 0x80000002L, 0x0L, 0x0L, 0x800000000001000L, 0x280001000L, 0x800000400000002L, false, 0, 0x0L), 4), 15630); - - // gentest-6189 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6190 - assertEqual(perft(new Board(0xfd02000010ef00L, 0x4200000000000042L, 0x2400000000001004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10ffdfL, 0xfffd020000000000L, false, 0, 0x8100000000000081L), 4), 383626); - - // gentest-6191 - assertEqual(perft(new Board(0x3d42800014eb00L, 0x4200000000000042L, 0x2400000000001004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x14fbdfL, 0xff3d428000000000L, true, 0, 0x8100000000000081L), 4), 498704); - - // gentest-6192 - assertEqual(perft(new Board(0x3d42800014eb00L, 0x200200000000042L, 0x2402000000000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x200000014ebdfL, 0xbf3d628000000000L, false, 0, 0x8100000000000081L), 4), 678214); - - // gentest-6193 - assertEqual(perft(new Board(0x3c43800014eb00L, 0x200000040000042L, 0x2402000000000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000020L, 0x200000014ebefL, 0xbf3c438040000000L, true, 0, 0x8100000000000000L), 4), 688509); - - // gentest-6194 - assertEqual(perft(new Board(0x3c43800114ea00L, 0x200000040000042L, 0x540000000000004L, 0x8000000000000081L, 0x800000000000008L, 0x1000000000000020L, 0x10000000114eaefL, 0x9e7c438040000000L, false, 0, 0x8000000000000000L), 4), 861813); - - // gentest-6195 - assertEqual(perft(new Board(0x3c43800114ea00L, 0x200000000000042L, 0x500000008000004L, 0x8000000000000081L, 0x800000040000000L, 0x1000000000000020L, 0x10000004114eae7L, 0x9e3c438008000000L, true, 0, 0x8000000000000000L), 4), 1047685); - - // gentest-6196 - assertEqual(perft(new Board(0x3c43800350a800L, 0x200000000000042L, 0x500000000040004L, 0x8000000000000081L, 0x800000040000000L, 0x1000000000000020L, 0x10000004350a8e7L, 0x9e3c438000040000L, false, 0, 0x8000000000000000L), 4), 1317528); - - // gentest-6197 - assertEqual(perft(new Board(0x3c43800350a800L, 0x200000000000042L, 0x500200000010000L, 0x80000000000081L, 0x800000040000000L, 0x1000000000000020L, 0x10000004351a8e3L, 0x1ebc638000000000L, true, 0, 0x0L), 4), 943860); - - // gentest-6198 - assertEqual(perft(new Board(0x3c438003d02800L, 0x200000000000042L, 0x500000000050000L, 0x80000000000081L, 0x800000040000000L, 0x1000000000001000L, 0x100000043d138c3L, 0x1ebc438000040000L, false, 0, 0x0L), 4), 988395); - - // gentest-6199 - assertEqual(perft(new Board(0x3c418203d02800L, 0x200000000000042L, 0x500001000010000L, 0x80000000000081L, 0x800000080000000L, 0x1000000000001000L, 0x100000083d138c3L, 0x1ebc419200000000L, true, 0, 0x0L), 4), 741580); - - // gentest-6200 - assertEqual(perft(new Board(0x38418603d02800L, 0x200000000000042L, 0x500001000010000L, 0x80000000000081L, 0x800200000000000L, 0x1000000000001000L, 0x100200003d138c3L, 0x1eb8419600000000L, false, 0, 0x0L), 4), 1228771); - - // gentest-6201 - assertEqual(perft(new Board(0x38408703d02800L, 0x200000000000042L, 0x500000008010000L, 0x80000000000081L, 0x800200000000000L, 0x1000000000000008L, 0x100200003d128cbL, 0x1eb8408708000000L, true, 0, 0x0L), 4), 1264471); - - // gentest-6202 - assertEqual(perft(new Board(0x38408703d02800L, 0x200000000000042L, 0x8400000010010000L, 0x80000000000081L, 0x800000000000000L, 0x1000000000000008L, 0x13d128cbL, 0x9eb8408700000000L, false, 0, 0x0L), 4), 711025); - - // gentest-6203 - assertEqual(perft(new Board(0x38408623d00800L, 0x200000000000042L, 0x8400000010010000L, 0x80000000000081L, 0x800000000000000L, 0x2000000000000008L, 0x31d108cbL, 0xaeb8408602000000L, true, 0, 0x0L), 4), 848306); - - // gentest-6204 - assertEqual(perft(new Board(0x38408623d80000L, 0x200000000000042L, 0x400000000014200L, 0x80000000000081L, 0x800000000000000L, 0x2000000000000008L, 0x21d940cbL, 0x2eb8408602000200L, false, 0, 0x0L), 4), 854386); - - // gentest-6205 - assertEqual(perft(new Board(0x384086619a0000L, 0x200000000000042L, 0x400001000014000L, 0x80000000000081L, 0x800000000000000L, 0x2000000000000008L, 0x619940cbL, 0x2eb8409600020000L, true, 0, 0x0L), 4), 1099933); - - // gentest-6206 - assertEqual(perft(new Board(0x384086e11a0000L, 0x200000000000042L, 0x400001800010000L, 0x80000000000081L, 0x800000000000000L, 0x40000000000008L, 0x8e11900cbL, 0xef8409600020000L, false, 0, 0x0L), 4), 1381919); - - // gentest-6207 - assertEqual(perft(new Board(0x384086e01a0000L, 0x200000000000042L, 0x400001800010000L, 0x80000000000081L, 0x4000000000000L, 0x8000000000000008L, 0xae01900cbL, 0x86bc409400020000L, true, 0, 0x0L), 4), 1068730); - - // gentest-6208 - assertEqual(perft(new Board(0x384086e01a0000L, 0x200000000000042L, 0x400001000014000L, 0x80000000000180L, 0x100000000L, 0x8000000000000008L, 0x2e01941caL, 0x86b8409500020000L, false, 0, 0x0L), 4), 1563353); - - // gentest-6209 - assertEqual(perft(new Board(0x186086e01a0000L, 0x200000000000042L, 0x400001000014000L, 0x40000000000180L, 0x100000000L, 0x8000000000001000L, 0x2e01951c2L, 0x8658609500020000L, true, 0, 0x0L), 4), 1385214); - - // gentest-6210 - assertEqual(perft(new Board(0x186086e01a0000L, 0x200000000200002L, 0x400001000014000L, 0x40000000000480L, 0x40000L, 0x8000000000001000L, 0x2e0395482L, 0x8658609400060000L, false, 0, 0x0L), 4), 1160792); - - // gentest-6211 - assertEqual(perft(new Board(0x186086e0120000L, 0x200000000200002L, 0x400000000054000L, 0x40000000000480L, 0x80000L, 0x8000000000002000L, 0x2e0316482L, 0x86586084000e0000L, true, 0, 0x0L), 4), 1616096); - - // gentest-6212 - assertEqual(perft(new Board(0x10608ee0120000L, 0x200000000008002L, 0x400000000054000L, 0x40000000000084L, 0x80000L, 0x8000000000002000L, 0x2e011e086L, 0x8650608c000e0000L, false, 0, 0x0L), 4), 1226731); - - // gentest-6213 - assertEqual(perft(new Board(0x10608ee0120000L, 0x200000000008002L, 0x400000000014800L, 0x40000000000084L, 0x1000L, 0x8000000000400000L, 0x2e051c086L, 0x8650608c00021800L, true, 0, 0x0L), 4), 1111938); - - // gentest-6214 - assertEqual(perft(new Board(0x10608ae4120000L, 0x200000000008002L, 0x400000400004800L, 0x40000000000024L, 0x1000L, 0x8000000000400000L, 0x6e050c026L, 0x8650608804021800L, false, 0, 0x0L), 4), 1041440); - - // gentest-6215 - assertEqual(perft(new Board(0x1040aae4120000L, 0x200000000008002L, 0x2020000004800L, 0x40000000000024L, 0x1000L, 0x8000000000400000L, 0x202e050c026L, 0x825240a804021800L, true, 0, 0x0L), 4), 973657); - - // gentest-6216 - assertEqual(perft(new Board(0x1040aae4120000L, 0x200000000008002L, 0x2020000000800L, 0x40000000000030L, 0x0L, 0x8000000000004000L, 0x202e010c032L, 0x825240a804020800L, false, 0, 0x0L), 4), 469013); - - // gentest-6217 - assertEqual(perft(new Board(0x10402ae4120000L, 0x200000000008002L, 0x2020000000800L, 0x20000000000028L, 0x0L, 0x8000000000004000L, 0x202a010c02aL, 0x8232402844020800L, true, 0, 0x0L), 4), 443735); - - // gentest-6218 - assertEqual(perft(new Board(0x403ae4120000L, 0x200000000008800L, 0x2020000000000L, 0x20000000000028L, 0x0L, 0x8000000000000080L, 0x202a01088a8L, 0x8222403844020000L, false, 0, 0x0L), 4), 415729); - - // gentest-6219 - assertEqual(perft(new Board(0x403ae4120000L, 0x200000000208000L, 0x2020000000000L, 0x20000000000028L, 0x0L, 0x40000000000080L, 0x202a03080a8L, 0x262403844020000L, true, 0, 0x0L), 4), 557337); - - // gentest-6220 - assertEqual(perft(new Board(0x403ae4100200L, 0x200000000208000L, 0x2000400000000L, 0x20000000000030L, 0x0L, 0x40000000000080L, 0x6a03080b0L, 0x262403844000200L, false, 0, 0x0L), 4), 578358); - - // gentest-6221 - assertEqual(perft(new Board(0x4032ec100200L, 0x200000000208000L, 0x3000000000000L, 0x20000000000030L, 0x0L, 0x80000000000080L, 0x10002a03080b0L, 0x2a240304c000200L, true, 0, 0x0L), 4), 410399); - - // gentest-6222 - assertEqual(perft(new Board(0x4230ac300200L, 0x200000040000000L, 0x3000000000000L, 0x20000000000030L, 0x0L, 0x80000000000080L, 0x10200e01000b0L, 0x2a240300c200200L, false, 0, 0x0L), 4), 356801); - - // gentest-6223 - assertEqual(perft(new Board(0x4210ec300000L, 0x200000000000002L, 0x3000000000000L, 0x20000000000050L, 0x0L, 0x80000000000080L, 0x10200a01000d0L, 0x2a240104c200002L, true, 0, 0x0L), 4), 276548); - - // gentest-6224 - assertEqual(perft(new Board(0x210ac300000L, 0x200000000000800L, 0x3000000000000L, 0x20400000000010L, 0x0L, 0x80000000000080L, 0x14200a0100090L, 0x2a200100c200800L, false, 0, 0x0L), 4), 483948); - - // gentest-6225 - assertEqual(perft(new Board(0x210ac300000L, 0x200000000000800L, 0x1010000000000L, 0x600000000010L, 0x0L, 0x80000000000040L, 0x14200a0100050L, 0x28021100c200800L, true, 0, 0x0L), 4), 321732); - - // gentest-6226 - assertEqual(perft(new Board(0x210ac200000L, 0x200000000000800L, 0x1010000000000L, 0x4020000000000010L, 0x0L, 0x80000000000040L, 0x40010200a8000050L, 0x2a0011004200800L, false, 0, 0x0L), 4), 467772); - - // gentest-6227 - assertEqual(perft(new Board(0x210ac200000L, 0x200000000000800L, 0x1010000000000L, 0x4000000000400010L, 0x0L, 0x80000000002000L, 0x40010200a8002010L, 0x280011004600800L, true, 0, 0x0L), 4), 352129); - - // gentest-6228 - assertEqual(perft(new Board(0x200308c200000L, 0x200000000000800L, 0x1010000000000L, 0x400010L, 0x0L, 0x4000000000002000L, 0x3002088002010L, 0x4200011004600800L, false, 0, 0x0L), 4), 185803); - - // gentest-6229 - assertEqual(perft(new Board(0x200308c200000L, 0x200000000020000L, 0x1010000000000L, 0x400080L, 0x0L, 0x2000000000002000L, 0x3002088002080L, 0x2200011004620000L, true, 0, 0x0L), 4), 219378); - - // gentest-6230 - assertEqual(perft(new Board(0x200308c200000L, 0x200000400000000L, 0x1010000000000L, 0x400040L, 0x0L, 0x2000000000002000L, 0x3002088002040L, 0x2200011404600000L, false, 0, 0x0L), 4), 250786); - - // gentest-6231 - assertEqual(perft(new Board(0x2003084200000L, 0x200000400000000L, 0x1010000000000L, 0x400040L, 0x0L, 0x20000000002000L, 0x3003080002040L, 0x220010404600000L, true, 0, 0x0L), 4), 178853); - - // gentest-6232 - assertEqual(perft(new Board(0x2003084200000L, 0x208000000000000L, 0x1010000000000L, 0x400080L, 0x0L, 0x20000000100000L, 0x3003080100080L, 0x228010004600000L, false, 0, 0x0L), 4), 225721); - - // gentest-6233 - assertEqual(perft(new Board(0x2002084200000L, 0x200001000000000L, 0x30000000000L, 0x400080L, 0x0L, 0x40000000100000L, 0x2022080100080L, 0x240011004600000L, true, 0, 0x0L), 4), 266973); - - // gentest-6234 - assertEqual(perft(new Board(0x2002084200000L, 0x200001000000000L, 0x30000000000L, 0x4000000020L, 0x0L, 0x40000000100000L, 0x2022080100020L, 0x240015004200000L, false, 0, 0x0L), 4), 316621); - - // gentest-6235 - assertEqual(perft(new Board(0x2002084200000L, 0x200001000000000L, 0x30000000000L, 0x4000000001L, 0x0L, 0x40000000100000L, 0x2022080100001L, 0x240015004200000L, true, 0, 0x0L), 4), 371457); - - // gentest-6236 - assertEqual(perft(new Board(0x2002084200000L, 0x8001000000000L, 0x20000000000L, 0x14000000000L, 0x0L, 0x40000008000000L, 0x2032088000000L, 0x48005004200000L, false, 0, 0x0L), 4), 325181); - - // gentest-6237 - assertEqual(perft(new Board(0x2002084200000L, 0x8001000000000L, 0x20000000000L, 0x10040L, 0x0L, 0x40000008000000L, 0x2022088010000L, 0x48001004200040L, true, 0, 0x0L), 4), 544763); - - // gentest-6238 - assertEqual(perft(new Board(0x2084200000L, 0x8001000000000L, 0x201000000000000L, 0x10040L, 0x0L, 0x20000008000000L, 0x201002088010000L, 0x28001004200040L, false, 0, 0x0L), 4), 370210); - - // gentest-6239 - assertEqual(perft(new Board(0xa004200000L, 0x8000000080000L, 0x201000000000000L, 0x10080L, 0x0L, 0x20000008000000L, 0x20100a008010000L, 0x28000004280080L, true, 0, 0x0L), 4), 514325); - - // gentest-6240 - assertEqual(perft(new Board(0xa000200000L, 0x8000020000000L, 0x200000000100000L, 0x10080L, 0x0L, 0x20000004000000L, 0x20000a004110000L, 0x28000020200080L, false, 0, 0x0L), 4), 808397); - - // gentest-6241 - assertEqual(perft(new Board(0xa000200000L, 0x8000020000000L, 0x200000000100000L, 0x10000000000L, 0x0L, 0x20000004000000L, 0x20000a004100000L, 0x28010020200000L, true, 0, 0x0L), 4), 400761); - - // gentest-6242 - assertEqual(perft(new Board(0xa000200000L, 0x8000020000000L, 0x200000008000000L, 0x20000000000L, 0x0L, 0x20000004000000L, 0x20000a00c000000L, 0x28020020200000L, false, 0, 0x0L), 4), 351957); - - // gentest-6243 - assertEqual(perft(new Board(0xa000200000L, 0x1020000000L, 0x200000008000000L, 0x20000000000L, 0x0L, 0x200000040000L, 0x20000a008040000L, 0x221020200000L, true, 0, 0x0L), 4), 114794); - - // gentest-6244 - assertEqual(perft(new Board(0xa000200000L, 0x1020000000L, 0x200000400000000L, 0x2L, 0x0L, 0x200000000400L, 0x20000a400000400L, 0x201020200002L, false, 0, 0x0L), 4), 307914); - - // gentest-6245 - assertEqual(perft(new Board(0xa000200000L, 0x20000020000000L, 0x200000000000040L, 0x200L, 0x0L, 0x200000000400L, 0x20000a000000440L, 0x20200020200200L, true, 0, 0x0L), 4), 45083); - - // gentest-6246 - assertEqual(perft(new Board(0x2000200000L, 0x20008000000000L, 0x200000000000040L, 0x200L, 0x0L, 0x200004000000L, 0x200002004000040L, 0x20208000200200L, false, 0, 0x0L), 4), 201461); - - // gentest-6247 - assertEqual(perft(new Board(0x2000200000L, 0x20100000000000L, 0x200000400000000L, 0x200L, 0x0L, 0x200004000000L, 0x200002404000000L, 0x20300000200200L, true, 0, 0x0L), 4), 285507); - - // gentest-6248 - assertEqual(perft(new Board(0x2000200000L, 0x20100000000000L, 0x210000000000000L, 0x200L, 0x0L, 0x40000000040000L, 0x210002000040000L, 0x60100000200200L, false, 0, 0x0L), 4), 291861); - - // gentest-6249 - assertEqual(perft(new Board(0x2000200000L, 0x20100000000000L, 0x200000080000000L, 0x8000L, 0x0L, 0x80000000040000L, 0x200002080040000L, 0xa0100000208000L, true, 0, 0x0L), 4), 284613); - - // gentest-6250 - assertEqual(perft(new Board(0x2000200000L, 0x2020000000000000L, 0xa0000000L, 0x8000L, 0x0L, 0x80000000040000L, 0x20a0040000L, 0x20a0000000208000L, false, 0, 0x0L), 4), 247912); - - // gentest-6251 - assertEqual(perft(new Board(0x2000200000L, 0x28000000000000L, 0x80000800L, 0x0L, 0x0L, 0x80000000040000L, 0x2080040800L, 0xa8000000200000L, true, 0, 0x0L), 4), 104429); - - // gentest-6252 - assertEqual(perft(new Board(0x2000200000L, 0x28000000000000L, 0x800080000000L, 0x0L, 0x0L, 0x8000000000040000L, 0x802080040000L, 0x8028000000200000L, false, 0, 0x0L), 4), 79511); - - // gentest-6253 - assertEqual(perft(new Board(0x2000200000L, 0x20000000000000L, 0xa00000000000L, 0x0L, 0x0L, 0x4000000000040000L, 0xa02000040000L, 0x4020000000200000L, true, 0, 0x0L), 4), 36984); - - // gentest-6254 - assertEqual(perft(new Board(0x2000200000L, 0x800000000000000L, 0x2000200000000000L, 0x0L, 0x0L, 0x4000000008000000L, 0x2000202008000000L, 0x4800000000200000L, false, 0, 0x0L), 4), 22177); - - // gentest-6255 - assertEqual(perft(new Board(0x2000200000L, 0x100000000000L, 0x200000000000L, 0x0L, 0x0L, 0x2000000000040000L, 0x202000040000L, 0x2000100000200000L, true, 0, 0x0L), 4), 29182); - - // gentest-6256 - assertEqual(perft(new Board(0x100000200000L, 0x0L, 0x80000000L, 0x0L, 0x0L, 0x4000000000040000L, 0x100080040000L, 0x4000000000200000L, false, 0, 0x0L), 4), 6972); - - // gentest-6257 - assertEqual(perft(new Board(0x100000200000L, 0x0L, 0x80000000L, 0x0L, 0x0L, 0x8000000000000800L, 0x100080000800L, 0x8000000000200000L, true, 0, 0x0L), 4), 4785); - - // gentest-6258 - assertEqual(perft(new Board(0x100000200000L, 0x0L, 0x10L, 0x0L, 0x0L, 0x40000000100000L, 0x100000100010L, 0x40000000200000L, false, 0, 0x0L), 4), 10353); - - // gentest-6259 - assertEqual(perft(new Board(0x100000200000L, 0x0L, 0x10L, 0x0L, 0x0L, 0x80000010000000L, 0x100010000010L, 0x80000000200000L, true, 0, 0x0L), 4), 8774); - - // gentest-6260 - assertEqual(perft(new Board(0x100000200000L, 0x0L, 0x10L, 0x0L, 0x0L, 0x4000000010000000L, 0x100010000010L, 0x4000000000200000L, false, 0, 0x0L), 4), 7240); - - // gentest-6261 - assertEqual(perft(new Board(0x100000200000L, 0x0L, 0x400000L, 0x0L, 0x0L, 0x800010000000L, 0x100010400000L, 0x800000200000L, true, 0, 0x0L), 4), 10460); - - // gentest-6262 - assertEqual(perft(new Board(0x100000200000L, 0x0L, 0x80000000L, 0x0L, 0x0L, 0x401000000000L, 0x101080000000L, 0x400000200000L, false, 0, 0x0L), 4), 5834); - - // gentest-6263 - assertEqual(perft(new Board(0x100000000000L, 0x0L, 0x4000000000L, 0x0L, 0x20L, 0x401000000000L, 0x105000000000L, 0x400000000020L, true, 0, 0x0L), 4), 83383); - - // gentest-6264 - assertEqual(perft(new Board(0x100000000000L, 0x0L, 0x20000000L, 0x0L, 0x4L, 0x480000000000L, 0x180020000000L, 0x400000000004L, false, 0, 0x0L), 4), 72297); - - // gentest-6265 - assertEqual(perft(new Board(0x100000000000L, 0x0L, 0x20000000L, 0x0L, 0x100000L, 0x400800000000L, 0x100820000000L, 0x400000100000L, true, 0, 0x0L), 4), 90899); - - // gentest-6266 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x1001000000000000L, 0x400800000000L, 0x1000000820000000L, 0x1400000000000L, false, 0, 0x0L), 4), 60803); - - // gentest-6267 - assertEqual(perft(new Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x1000000000000040L, 0x200800000000L, 0x1000000800400000L, 0x200000000040L, true, 0, 0x0L), 4), 214710); - - // gentest-6268 - assertEqual(perft(new Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x8000040L, 0x20000800000000L, 0x808400000L, 0x20000000000040L, false, 0, 0x0L), 4), 277055); - - // gentest-6269 - assertEqual(perft(new Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x10000040L, 0x20000800000000L, 0x800400040L, 0x20000010000000L, true, 0, 0x0L), 4), 31874); - - // gentest-6270 - assertEqual(perft(new Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x2000040L, 0x20040000000000L, 0x40000400040L, 0x20000002000000L, false, 0, 0x0L), 4), 350775); - - // gentest-6271 - assertEqual(perft(new Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x10000040L, 0x10000200000000L, 0x200400040L, 0x10000010000000L, true, 0, 0x0L), 4), 387362); - - // gentest-6272 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x10000040L, 0x20000200000000L, 0x220000040L, 0x20000010000000L, false, 0, 0x0L), 4), 417976); - - // gentest-6273 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x100000000040L, 0x20000004000000L, 0x24000040L, 0x20100000000000L, true, 0, 0x0L), 4), 94418); - - // gentest-6274 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x4000100000000000L, 0x1000000000040000L, 0x4000000020040000L, 0x1000100000000000L, false, 0, 0x0L), 4), 37238); - - // gentest-6275 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6276 - assertEqual(perft(new Board(0xfe01000000ff00L, 0x4200000000810000L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x81ffbdL, 0xfffe010000000000L, false, 0, 0x8100000000000081L), 4), 183425); - - // gentest-6277 - assertEqual(perft(new Board(0xfc03000020df00L, 0x4200000000810000L, 0x2002000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xa1dfbdL, 0xfbfe030000000000L, true, 0, 0x8100000000000081L), 4), 288594); - - // gentest-6278 - assertEqual(perft(new Board(0xfc03000020df00L, 0x4200000000000042L, 0x2002000000000024L, 0x8001000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x20dfffL, 0xfaff030000000000L, false, 0, 0x8000000000000081L), 4), 264026); - - // gentest-6279 - assertEqual(perft(new Board(0xac035000a05f00L, 0x4200000000000042L, 0x2002000000000024L, 0x8001000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xa05fffL, 0xfaaf035000000000L, true, 0, 0x8000000000000081L), 4), 410945); - - // gentest-6280 - assertEqual(perft(new Board(0xac035000e00f00L, 0x4200000000000042L, 0x2000000010000024L, 0x8001000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xe00fffL, 0xfaad035010000000L, false, 0, 0x8000000000000081L), 4), 810205); - - // gentest-6281 - assertEqual(perft(new Board(0xa40b5000e20d00L, 0x4200000000000042L, 0x2000000010000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xe20dffL, 0xfba40b5010000000L, true, 0, 0x8000000000000081L), 4), 710209); - - // gentest-6282 - assertEqual(perft(new Board(0xa40b5082600d00L, 0x4000040000000042L, 0x2000000010000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x82600dffL, 0xf9a40f5010000000L, false, 0, 0x8000000000000081L), 4), 1182471); - - // gentest-6283 - assertEqual(perft(new Board(0xa4091282600d00L, 0x4000040000000042L, 0x2000000010000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000001000L, 0x2601defL, 0xf9a40d1290000000L, true, 0, 0x8000000000000000L), 4), 788530); - - // gentest-6284 - assertEqual(perft(new Board(0x24891282600d00L, 0x4000040000000042L, 0x2000000010800004L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000001000L, 0x2e09d4fL, 0xf9248d1290000000L, false, 0, 0x8000000000000000L), 4), 877025); - - // gentest-6285 - assertEqual(perft(new Board(0x24891282610800L, 0x4000040000000042L, 0x2000000000800404L, 0x8001000000008001L, 0x800000000000008L, 0x1000000000001000L, 0x2e1984fL, 0xf8258d1280000400L, true, 0, 0x8000000000000000L), 4), 797343); - - // gentest-6286 - assertEqual(perft(new Board(0x4a91282610800L, 0x4000040000000042L, 0x2000000000004404L, 0x8001000000008001L, 0x800000000000020L, 0x1000000000001000L, 0x261d867L, 0xf805ad1280000400L, false, 0, 0x8000000000000000L), 4), 550391); - - // gentest-6287 - assertEqual(perft(new Board(0x4a91282610800L, 0x4000040000040040L, 0x2080000000004004L, 0x8002000000008001L, 0x800000000000020L, 0x1000000000001000L, 0x265d865L, 0xf886ad1280000000L, true, 0, 0x8000000000000000L), 4), 876111); - - // gentest-6288 - assertEqual(perft(new Board(0x4a91282610800L, 0x4000040000040040L, 0x2080000000004004L, 0x8002000000000081L, 0x200000000000020L, 0x1000000000002000L, 0x26568e5L, 0xf286ad1280000000L, false, 0, 0x8000000000000000L), 4), 935322); - - // gentest-6289 - assertEqual(perft(new Board(0x4893082610800L, 0x4000000300000040L, 0x2080000000004004L, 0x8002000000000081L, 0x200000000000020L, 0x1000000000002000L, 0x2026168e5L, 0xf286893180000000L, true, 0, 0x8000000000000000L), 4), 637884); - - // gentest-6290 - assertEqual(perft(new Board(0x4893188610000L, 0x4000000200000040L, 0x2080000000004004L, 0x8002000000000081L, 0x800000000000020L, 0x1000000000002000L, 0x3086160e5L, 0xf886893080000000L, false, 0, 0x8000000000000000L), 4), 831958); - - // gentest-6291 - assertEqual(perft(new Board(0x4893108610000L, 0x10000200000040L, 0x2080000000004004L, 0x8002000000000081L, 0x800000000000020L, 0x1000000000000010L, 0x3082140f5L, 0xb896893000400000L, true, 0, 0x8000000000000000L), 4), 734297); - - // gentest-6292 - assertEqual(perft(new Board(0x4893128410000L, 0x10000000000040L, 0x2080000000004004L, 0x8000000200008001L, 0x800000000000020L, 0x1000000000000010L, 0x12801c075L, 0xb894893200400000L, false, 0, 0x8000000000000000L), 4), 1264449); - - // gentest-6293 - assertEqual(perft(new Board(0x4893128410000L, 0x800000040L, 0x2080000000004004L, 0x8200000000008001L, 0x800000000200000L, 0x1000000000000010L, 0x12821c055L, 0xba84893800400000L, true, 0, 0x8000000000000000L), 4), 1599925); - - // gentest-6294 - assertEqual(perft(new Board(0x893528410000L, 0x800000040L, 0x2080000000004004L, 0x8200008000000001L, 0x800000000200000L, 0x1000000000000008L, 0x812821404dL, 0xba80893c00400000L, false, 0, 0x8000000000000000L), 4), 1859239); - - // gentest-6295 - assertEqual(perft(new Board(0x893528410000L, 0x4000000000040L, 0x2080000000004004L, 0x8200008000000001L, 0x800000000200000L, 0x20000000000800L, 0x8128214845L, 0xaaa4893400400000L, true, 0, 0x0L), 4), 2137522); - - // gentest-6296 - assertEqual(perft(new Board(0x893528410000L, 0x4000000000040L, 0x2080000000004004L, 0x8200008000000001L, 0x800000000020000L, 0x40000000040000L, 0x8128074045L, 0xaac4893400400000L, false, 0, 0x0L), 4), 1583516); - - // gentest-6297 - assertEqual(perft(new Board(0x892528410000L, 0x4000000000040L, 0x2000400000004004L, 0x8200008000000001L, 0x800000000000400L, 0x40000000040000L, 0x8108054445L, 0xaa44c92420400000L, true, 0, 0x0L), 4), 2113395); - - // gentest-6298 - assertEqual(perft(new Board(0x892528410000L, 0x4000000000040L, 0x3002000000000800L, 0x8200008000000001L, 0x800000000000400L, 0x40000000040000L, 0x2008108050c41L, 0xba44892420400000L, false, 0, 0x0L), 4), 1802873); - - // gentest-6299 - assertEqual(perft(new Board(0x892528410000L, 0x4000000000040L, 0x3002000000000800L, 0x8200008000000001L, 0x400000000002L, 0x40000000040000L, 0x2008108050843L, 0xb244c92420400000L, true, 0, 0x0L), 4), 2091330); - - // gentest-6300 - assertEqual(perft(new Board(0x92528410000L, 0x4000000000040L, 0x3002000000000800L, 0x8200800000000001L, 0x8000000002L, 0x40000000020000L, 0x2800108030843L, 0xb24409a420400000L, false, 0, 0x0L), 4), 1442131); - - // gentest-6301 - assertEqual(perft(new Board(0x92528410000L, 0x4000000000040L, 0x2002040000000800L, 0x8200000000000001L, 0x8002L, 0x40000000020000L, 0x8002000108030843L, 0x22440d2420408000L, true, 0, 0x0L), 4), 1744519); - - // gentest-6302 - assertEqual(perft(new Board(0x92528410000L, 0x4000000000040L, 0x2002000001000800L, 0x8200000000000001L, 0x8008L, 0x40000004000000L, 0x800200010c010849L, 0x2244092421408000L, false, 0, 0x0L), 4), 1913912); - - // gentest-6303 - assertEqual(perft(new Board(0x92528410000L, 0x4000000000040L, 0x2002000000020800L, 0x8200000000000001L, 0x8008L, 0x200000080000L, 0x8002000108090849L, 0x2204292420428000L, true, 0, 0x0L), 4), 2737518); - - // gentest-6304 - assertEqual(perft(new Board(0x92528410000L, 0x4000000000040L, 0x2002000000000900L, 0x200000000008001L, 0x8000000000L, 0x200000080000L, 0x2008108098841L, 0x2204292420400100L, false, 0, 0x0L), 4), 1371751); - - // gentest-6305 - assertEqual(perft(new Board(0x92508610000L, 0x4000000000040L, 0x2002100000000800L, 0x200000000000081L, 0x8000000000L, 0x200000080000L, 0x20081080908c1L, 0x2204392400600000L, true, 0, 0x0L), 4), 1185083); - - // gentest-6306 - assertEqual(perft(new Board(0x90508410000L, 0x200000040L, 0x2000100000200800L, 0x200000000000081L, 0x2000000000L, 0x200000080000L, 0x21082908c1L, 0x2200390600400000L, false, 0, 0x0L), 4), 165350); - - // gentest-6307 - assertEqual(perft(new Board(0x90508410000L, 0x200000040L, 0x2000000000200800L, 0x200000000000081L, 0x100000000000L, 0x800000000080000L, 0x1001082908c1L, 0x2a00090600400000L, true, 0, 0x0L), 4), 988773); - - // gentest-6308 - assertEqual(perft(new Board(0x90d00410000L, 0x1000000000040L, 0x2000000000200800L, 0x200000000000081L, 0x400000000000L, 0x800000000080000L, 0x4009002908c1L, 0x2a01090400400000L, false, 0, 0x0L), 4), 838475); - - // gentest-6309 - assertEqual(perft(new Board(0x90d00014000L, 0x1000000000040L, 0x2000000000300000L, 0x100000000000081L, 0x400000000000L, 0x800000000080000L, 0x4009003900c1L, 0x2901090400004000L, true, 0, 0x0L), 4), 594436); - - // gentest-6310 - assertEqual(perft(new Board(0x90d00014000L, 0x1000000800000L, 0x40000000300000L, 0x100000000008001L, 0x400000000000L, 0x800000000080000L, 0x400900b98001L, 0x941090400004000L, false, 0, 0x0L), 4), 1173361); - - // gentest-6311 - assertEqual(perft(new Board(0x90d00014000L, 0x1000000800000L, 0x300200L, 0x100000000008001L, 0x2000000000L, 0x10000000080000L, 0x2900b98001L, 0x111090400004200L, true, 0, 0x0L), 4), 1065966); - - // gentest-6312 - assertEqual(perft(new Board(0x90d00014000L, 0x1000000800000L, 0x40000000300000L, 0x100000000008001L, 0x2000000000L, 0x10000000080000L, 0x2900b98001L, 0x151090400004000L, false, 0, 0x0L), 4), 1296203); - - // gentest-6313 - assertEqual(perft(new Board(0x90d00014000L, 0x1000000800000L, 0x300001L, 0x100000000008000L, 0x80000000000000L, 0x1000000000080000L, 0x80000900b98000L, 0x1101090400004001L, true, 0, 0x0L), 4), 495293); - - // gentest-6314 - assertEqual(perft(new Board(0x90d00010000L, 0x1000000800000L, 0x1801L, 0x100000000008000L, 0x80000000000040L, 0x1000000000080000L, 0x80000900899800L, 0x1101090400000041L, false, 0, 0x0L), 4), 877799); - - // gentest-6315 - assertEqual(perft(new Board(0x90d00010000L, 0x1000000800000L, 0x40000000001800L, 0x100000000008000L, 0x80000000000002L, 0x1000000004000000L, 0x80000904819800L, 0x1141090400000002L, true, 0, 0x0L), 4), 943507); - - // gentest-6316 - assertEqual(perft(new Board(0x90d00010000L, 0x1000000800000L, 0x40000000001800L, 0x100000000008000L, 0x40L, 0x10000004000000L, 0x904819840L, 0x151090400000000L, false, 0, 0x0L), 4), 829009); - - // gentest-6317 - assertEqual(perft(new Board(0x90d00010000L, 0x1000000800000L, 0x40000000001800L, 0x1000000000008000L, 0x100000L, 0x8000004000000L, 0x904919800L, 0x1049090400000000L, true, 0, 0x0L), 4), 783287); - - // gentest-6318 - assertEqual(perft(new Board(0x90d00010000L, 0x1000000800000L, 0x40808L, 0x1000000000008000L, 0x4000000000L, 0x8000004000000L, 0x4904818808L, 0x1009090400040000L, false, 0, 0x0L), 4), 992656); - - // gentest-6319 - assertEqual(perft(new Board(0x90d00010000L, 0x1000000800000L, 0x40808L, 0x9000L, 0x4000000000L, 0x8000000080000L, 0x4900898808L, 0x9090400041000L, true, 0, 0x0L), 4), 684193); - - // gentest-6320 - assertEqual(perft(new Board(0x90d00010000L, 0x1000000800000L, 0xc01L, 0x9000L, 0x200000000000L, 0x8000000080000L, 0x200900898c00L, 0x9090400001001L, false, 0, 0x0L), 4), 620760); - - // gentest-6321 - assertEqual(perft(new Board(0x90904010000L, 0x1000000800000L, 0x8000c00L, 0x9000L, 0x4000000000L, 0x8000000080000L, 0x4900898c00L, 0x909000c001000L, true, 0, 0x0L), 4), 49239); - - // gentest-6322 - assertEqual(perft(new Board(0x90904010000L, 0x1000000800000L, 0x1000000c00L, 0x8000L, 0x4000000000L, 0x8000000100000L, 0x4900918c00L, 0x9091004000000L, false, 0, 0x0L), 4), 333713); - - // gentest-6323 - assertEqual(perft(new Board(0x90904010000L, 0x1000000800000L, 0x1000000410L, 0x8000L, 0x4000000000L, 0x2000000000100000L, 0x4900918410L, 0x2001091004000000L, true, 0, 0x0L), 4), 306192); - - // gentest-6324 - assertEqual(perft(new Board(0x90904010000L, 0x1000000800000L, 0x80000000000210L, 0x8000L, 0x80000000L, 0x2000000000100000L, 0x80000980918010L, 0x2001090004000200L, false, 0, 0x0L), 4), 320922); - - // gentest-6325 - assertEqual(perft(new Board(0x90905000000L, 0x4000000800000L, 0x80000000000210L, 0x8000L, 0x80000000L, 0x2000000000100000L, 0x80000981908010L, 0x2004090004000200L, true, 0, 0x0L), 4), 329598); - - // gentest-6326 - assertEqual(perft(new Board(0x90905000000L, 0x4000000002000L, 0x80000000410000L, 0x8000L, 0x80000000L, 0x2000000000100000L, 0x8000098150a000L, 0x2004090004010000L, false, 0, 0x0L), 4), 145583); - - // gentest-6327 - assertEqual(perft(new Board(0x90905000000L, 0x1000000000002000L, 0x490000L, 0x8000L, 0x80000000L, 0x20000000100000L, 0x98158a000L, 0x1020090004010000L, true, 0, 0x0L), 4), 170671); - - // gentest-6328 - assertEqual(perft(new Board(0x90905000000L, 0x1000000000002000L, 0x2401000L, 0x8000L, 0x4000000000L, 0x20000000100000L, 0x490150b000L, 0x1020090006000000L, false, 0, 0x0L), 4), 143676); - - // gentest-6329 - assertEqual(perft(new Board(0x90905000000L, 0x200000002000L, 0x400401000L, 0x8000L, 0x4000000000L, 0x20000000200000L, 0x490160b000L, 0x20290404000000L, true, 0, 0x0L), 4), 378439); - - // gentest-6330 - assertEqual(perft(new Board(0x90905000000L, 0x200000040000L, 0x401040L, 0x8000L, 0x4000000000L, 0x20000000200000L, 0x4901649000L, 0x20290004000040L, false, 0, 0x0L), 4), 419910); - - // gentest-6331 - assertEqual(perft(new Board(0x90905000000L, 0x8000000040000L, 0x1000000401000L, 0x8000L, 0x80000000L, 0x20000000200000L, 0x981649000L, 0x29090004000000L, true, 0, 0x0L), 4), 299617); - - // gentest-6332 - assertEqual(perft(new Board(0x90905000000L, 0x200000000040000L, 0x1000020001000L, 0x80L, 0x80000000L, 0x20000000200000L, 0x9a1241080L, 0x221090004000000L, false, 0, 0x0L), 4), 333171); - - // gentest-6333 - assertEqual(perft(new Board(0x90905000000L, 0x40000040000L, 0x20003000L, 0x10L, 0x80000000L, 0x20000000200000L, 0x9a1241010L, 0x200d0004002000L, true, 0, 0x0L), 4), 576514); - - // gentest-6334 - assertEqual(perft(new Board(0x90905000000L, 0x800000000040000L, 0x1000003000L, 0x10L, 0x80000000L, 0x20000000200000L, 0x1981241010L, 0x820090004002000L, false, 0, 0x0L), 4), 478933); - - // gentest-6335 - assertEqual(perft(new Board(0x11905000000L, 0x800000000040000L, 0x1000000000020L, 0x10L, 0x80000000L, 0x20000000200000L, 0x981240030L, 0x821011004000000L, true, 0, 0x0L), 4), 360851); - - // gentest-6336 - assertEqual(perft(new Board(0x11905000000L, 0x100000040000L, 0x1000000000020L, 0x10L, 0x100000000000000L, 0x20000000200000L, 0x100000901240030L, 0x21111004000000L, false, 0, 0x0L), 4), 346320); - - // gentest-6337 - assertEqual(perft(new Board(0x91105000000L, 0x100000040000L, 0x8000020L, 0x10L, 0x100000000000000L, 0x20000000200000L, 0x100080101240030L, 0x2011100c000000L, true, 0, 0x0L), 4), 376344); - - // gentest-6338 - assertEqual(perft(new Board(0x91105000000L, 0x100000040000L, 0x100020L, 0x8L, 0x100000000000000L, 0x20000000200000L, 0x100080101240028L, 0x20111004100000L, false, 0, 0x0L), 4), 492330); - - // gentest-6339 - assertEqual(perft(new Board(0x8011105000000L, 0x400040000L, 0x100020L, 0x8L, 0x100000000000000L, 0x100000200000L, 0x108000101240028L, 0x111404100000L, true, 0, 0x0L), 4), 410263); - - // gentest-6340 - assertEqual(perft(new Board(0x8011104000000L, 0x1040000L, 0x100020L, 0x8L, 0x2000000000000L, 0x100000200000L, 0xa000100240028L, 0x111005100000L, false, 0, 0x0L), 4), 549704); - - // gentest-6341 - assertEqual(perft(new Board(0x8011104000000L, 0x1040000L, 0x24L, 0x8L, 0x200000000000000L, 0x2000200000L, 0x208000100240028L, 0x13005000004L, true, 0, 0x0L), 4), 370785); - - // gentest-6342 - assertEqual(perft(new Board(0x8011104000000L, 0x1040000L, 0x1004L, 0x80L, 0x200000000000000L, 0x400000200000L, 0x208000100241080L, 0x411005000004L, false, 0, 0x0L), 4), 535315); - - // gentest-6343 - assertEqual(perft(new Board(0x8011104000000L, 0x1040000L, 0x101000L, 0x80L, 0x200000000000000L, 0x2000002000L, 0x208000100043080L, 0x13005100000L, true, 0, 0x0L), 4), 83710); - - // gentest-6344 - assertEqual(perft(new Board(0x8011104000000L, 0x1040000L, 0x40100000L, 0x80L, 0x200000000000000L, 0x200000000020L, 0x2080001400400a0L, 0x211005100000L, false, 0, 0x0L), 4), 699030); - - // gentest-6345 - assertEqual(perft(new Board(0x8011104000000L, 0x1040000L, 0x800040000000L, 0x80L, 0x20000000000L, 0x20000000000020L, 0x80201400400a0L, 0x20811005000000L, true, 0, 0x0L), 4), 508232); - - // gentest-6346 - assertEqual(perft(new Board(0x8011104000000L, 0x1000000L, 0x40000000L, 0x80L, 0x800000000000L, 0x10000000000020L, 0x88001410000a0L, 0x10011004000000L, false, 0, 0x0L), 4), 30206); - - // gentest-6347 - assertEqual(perft(new Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x80L, 0x80000000L, 0x2000000000000020L, 0x80001c10000a0L, 0x2000010014000000L, true, 0, 0x0L), 4), 27122); - - // gentest-6348 - assertEqual(perft(new Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x8000L, 0x400000L, 0x10000000000020L, 0x8000141408020L, 0x10010014000000L, false, 0, 0x0L), 4), 72366); - - // gentest-6349 - assertEqual(perft(new Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x8000L, 0x2000L, 0x40000000000020L, 0x800014100a020L, 0x40010014000000L, true, 0, 0x0L), 4), 52453); - - // gentest-6350 - assertEqual(perft(new Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x8000L, 0x80000000L, 0x2000000000000010L, 0x80001c1008010L, 0x2000010014000000L, false, 0, 0x0L), 4), 36785); - - // gentest-6351 - assertEqual(perft(new Board(0x8010110040000L, 0x1000000L, 0x40000000L, 0x1000L, 0x80000000L, 0x4000000000000010L, 0x80001c1001010L, 0x4000010010040000L, true, 0, 0x0L), 4), 32322); - - // gentest-6352 - assertEqual(perft(new Board(0x8010100140000L, 0x1000000L, 0x800000L, 0x400L, 0x80000000L, 0x4000000000000010L, 0x8000181800410L, 0x4000010000140000L, false, 0, 0x0L), 4), 26425); - - // gentest-6353 - assertEqual(perft(new Board(0x8010100041000L, 0x1000000L, 0x800000L, 0x400L, 0x800000000000L, 0x20000000000010L, 0x8800101800410L, 0x20010000041000L, true, 0, 0x0L), 4), 16787); - - // gentest-6354 - assertEqual(perft(new Board(0x8010100041000L, 0x1000000L, 0x800000L, 0x400L, 0x200000000L, 0x4000000000000010L, 0x8000301800410L, 0x4000010000041000L, false, 0, 0x0L), 4), 43303); - - // gentest-6355 - assertEqual(perft(new Board(0x8010100041000L, 0x1000000L, 0x800000L, 0x400L, 0x800000000L, 0x80000000000010L, 0x8000901800410L, 0x80010000041000L, true, 0, 0x0L), 4), 36793); - - // gentest-6356 - assertEqual(perft(new Board(0x8010100001000L, 0x1000000L, 0x800000L, 0x40000000000L, 0x800000000L, 0x800000000010L, 0x8040901800010L, 0x810000001000L, false, 0, 0x0L), 4), 15628); - - // gentest-6357 - assertEqual(perft(new Board(0x8010100001000L, 0x1000000L, 0x800000L, 0x0L, 0x800000000L, 0x200000000010L, 0x8000901800010L, 0x210000001000L, true, 0, 0x0L), 4), 28418); - - // gentest-6358 - assertEqual(perft(new Board(0x8010100001000L, 0x1000000L, 0x800000L, 0x0L, 0x1000000000000000L, 0x20000000000010L, 0x1008000101800010L, 0x20010000001000L, false, 0, 0x0L), 4), 7504); - - // gentest-6359 - assertEqual(perft(new Board(0x10100001000L, 0x1000000L, 0x800000L, 0x800000000000000L, 0x1000000000000000L, 0x80000000000010L, 0x1800000101800010L, 0x80010000001000L, true, 0, 0x0L), 4), 13589); - - // gentest-6360 - assertEqual(perft(new Board(0x10100001000L, 0x1000000L, 0x800000L, 0x100000000000000L, 0x800000000000000L, 0x800000000010L, 0x900000101800010L, 0x810000001000L, false, 0, 0x0L), 4), 19406); - - // gentest-6361 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6362 - assertEqual(perft(new Board(0xfb00040100fe00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x800000000000008L, 0x1000000000000010L, 0x101fefeL, 0xfffb000400000000L, false, 0, 0x8100000000000080L), 4), 382134); - - // gentest-6363 - assertEqual(perft(new Board(0xbb40041100ee00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x800000000000008L, 0x1000000000000010L, 0x1101eefeL, 0xbfbb600400000000L, true, 0, 0x8100000000000080L), 4), 883810); - - // gentest-6364 - assertEqual(perft(new Board(0xbb00441140ae00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x1140affeL, 0xbfbb204400000000L, false, 0, 0x8100000000000080L), 4), 664019); - - // gentest-6365 - assertEqual(perft(new Board(0xb900461142ac00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x1142adfeL, 0xffb9004600000000L, true, 0, 0x8100000000000080L), 4), 742298); - - // gentest-6366 - assertEqual(perft(new Board(0xb900461542a800L, 0x4000040000001002L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x1542b9beL, 0xfdb9044600000000L, false, 0, 0x8100000000000080L), 4), 704753); - - // gentest-6367 - assertEqual(perft(new Board(0x19a0461542a800L, 0x4000040000011000L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x1543b9bcL, 0xfd19a44600000000L, true, 0, 0x8100000000000080L), 4), 549910); - - // gentest-6368 - assertEqual(perft(new Board(0x11a05e85422800L, 0x4000040000011000L, 0x2400000000000024L, 0x8100000000000180L, 0x800000000000008L, 0x1000000000000010L, 0x10854339bcL, 0xfd11a44e00000000L, false, 0, 0x8100000000000080L), 4), 1158956); - - // gentest-6369 - assertEqual(perft(new Board(0x10a05f85422800L, 0x4000040000050000L, 0x2400000000000024L, 0x8100000000000180L, 0x4000000000008L, 0x1000000000000010L, 0x10854729bcL, 0xf514a44f00000000L, true, 0, 0x8100000000000080L), 4), 1996053); - - // gentest-6370 - assertEqual(perft(new Board(0x10a05f85620800L, 0x4000000008050000L, 0x2400000000000024L, 0x8100000000000180L, 0x4000000001000L, 0x1000000000000010L, 0x10856719b4L, 0xf514a04f08000000L, false, 0, 0x8100000000000080L), 4), 2010775); - - // gentest-6371 - assertEqual(perft(new Board(0x10a01fc5620800L, 0x4000000008050000L, 0x2400000000000024L, 0x8100000000000180L, 0x4000000080000L, 0x20000000000010L, 0x10856f09b4L, 0xe534a00f48000000L, true, 0, 0x80L), 4), 1707864); - - // gentest-6372 - assertEqual(perft(new Board(0x10a01fc7600800L, 0x4000000008050000L, 0x2400000000000220L, 0x8100000000000180L, 0x80000080000L, 0x20000000000010L, 0x10876d0bb0L, 0xe530a80f48000000L, false, 0, 0x80L), 4), 1912964); - - // gentest-6373 - assertEqual(perft(new Board(0x10a00fc7600800L, 0x4000000008050000L, 0x2000100000000024L, 0x8100000000000180L, 0x1000080000L, 0x20000000000010L, 0x876d09b4L, 0xe130b01f48000000L, true, 0, 0x80L), 4), 356317); - - // gentest-6374 - assertEqual(perft(new Board(0x10a00fc7600800L, 0x4000000008050000L, 0x2000002000004004L, 0x8100000000000180L, 0x1010000000L, 0x20000000000010L, 0x97654994L, 0xe130a03f48000000L, false, 0, 0x80L), 4), 1727946); - - // gentest-6375 - assertEqual(perft(new Board(0x10a08f47600800L, 0x4000100000050000L, 0x2000002000004004L, 0x8100000000000180L, 0x80010000000L, 0x20000000000010L, 0x8017654994L, 0xe130b82f40000000L, true, 0, 0x80L), 4), 2427928); - - // gentest-6376 - assertEqual(perft(new Board(0x10a08f47600800L, 0x4000000000050000L, 0x2000002000004004L, 0x8100000000000480L, 0x800100000000000L, 0x20000000000010L, 0x108007654c94L, 0xe930a02f40000000L, false, 0, 0x80L), 4), 166383); - - // gentest-6377 - assertEqual(perft(new Board(0x10a08b47600800L, 0x4000000000050000L, 0x2000002000004004L, 0x8100000000000480L, 0x808000000000000L, 0x40000000000010L, 0x8008005654c94L, 0xe950a02b42000000L, true, 0, 0x80L), 4), 1449310); - - // gentest-6378 - assertEqual(perft(new Board(0x10a08b43600800L, 0x4000000000050000L, 0x2000000010004004L, 0x8100000000000420L, 0x808000000000000L, 0x40000000000040L, 0x8008801654c64L, 0xe950a00352000000L, false, 0, 0x0L), 4), 947122); - - // gentest-6379 - assertEqual(perft(new Board(0x10a08b43600800L, 0x4000000000040002L, 0x2000000010004004L, 0x280000000000420L, 0x808000000000000L, 0x40000000000040L, 0x8008801644c66L, 0x6ad0a00352000000L, true, 0, 0x0L), 4), 773014); - - // gentest-6380 - assertEqual(perft(new Board(0x10a08b03600800L, 0x4000000000040002L, 0x2000000000004004L, 0x280000000000420L, 0x800000010000000L, 0x20000000000040L, 0x8811644c66L, 0x6ab0a00302000000L, false, 0, 0x0L), 4), 700090); - - // gentest-6381 - assertEqual(perft(new Board(0x10a08303600800L, 0x4000000000040002L, 0x2000000000004004L, 0x280000000000420L, 0x8000100L, 0x20000000000040L, 0x8009644c66L, 0x62b0a00302000100L, true, 0, 0x0L), 4), 1049583); - - // gentest-6382 - assertEqual(perft(new Board(0x10a08303600800L, 0x4000000000040002L, 0x2000000000004004L, 0x280000000000220L, 0x80000000000L, 0x20000000000040L, 0x88001644a66L, 0x62b0a00302000000L, false, 0, 0x0L), 4), 458486); - - // gentest-6383 - assertEqual(perft(new Board(0xa88341240800L, 0x4000000000000002L, 0x2000000000004004L, 0x280000000000220L, 0x0L, 0x20000000000040L, 0x8041204a66L, 0x62a0a80300040000L, true, 0, 0x0L), 4), 230677); - - // gentest-6384 - assertEqual(perft(new Board(0xa08b41240800L, 0x4000000000000002L, 0x2000000000004004L, 0x280000000000220L, 0x0L, 0x20000000000040L, 0x8041204a66L, 0x62a0a00b00040000L, false, 0, 0x0L), 4), 304058); - - // gentest-6385 - assertEqual(perft(new Board(0xa08b41240800L, 0x4000000000000002L, 0x2000000000004004L, 0x80020002000020L, 0x0L, 0x100000000040L, 0x8043204866L, 0x6080b20b00040000L, true, 0, 0x0L), 4), 461038); - - // gentest-6386 - assertEqual(perft(new Board(0xa08b41240800L, 0x4000000000010000L, 0x2000000000004004L, 0x80040002000020L, 0x0L, 0x100000008000L, 0x804321c824L, 0x6080b40b00040000L, false, 0, 0x0L), 4), 722601); - - // gentest-6387 - assertEqual(perft(new Board(0xa08341240800L, 0x4000000000010000L, 0x2000000000004004L, 0x20040008000020L, 0x0L, 0x100000008000L, 0x804921c824L, 0x6020b40300040000L, true, 0, 0x0L), 4), 558841); - - // gentest-6388 - assertEqual(perft(new Board(0xa08341240800L, 0x4000000000010000L, 0x2000000000004004L, 0x20080000000080L, 0x0L, 0x100000008000L, 0x804121c884L, 0x6020b80300040000L, false, 0, 0x0L), 4), 319106); - - // gentest-6389 - assertEqual(perft(new Board(0xa083412c0000L, 0x4000000000010000L, 0x10000000004004L, 0x20020000000080L, 0x0L, 0x100000008000L, 0x804129c084L, 0x4030b20300040000L, true, 0, 0x0L), 4), 272425); - - // gentest-6390 - assertEqual(perft(new Board(0xa08341280400L, 0x4000000000010000L, 0x10004000004000L, 0x20020000000040L, 0x0L, 0x100000008000L, 0xc04129c040L, 0x4030b20300000400L, false, 0, 0x0L), 4), 485309); - - // gentest-6391 - assertEqual(perft(new Board(0xa08141280400L, 0x4000000200000000L, 0x4400004000L, 0x20010000000040L, 0x0L, 0x100000008000L, 0xc24128c040L, 0x4020b10500000400L, true, 0, 0x0L), 4), 729621); - - // gentest-6392 - assertEqual(perft(new Board(0xa08141280000L, 0x4000000000000400L, 0x4400004000L, 0x20010000000040L, 0x0L, 0x80000008000L, 0xc04128c440L, 0x4020a90500000000L, false, 0, 0x0L), 4), 631414); - - // gentest-6393 - assertEqual(perft(new Board(0xa08141280000L, 0x4000000000000400L, 0x6800L, 0x40010000000040L, 0x0L, 0x80000008000L, 0x804128cc40L, 0x4040a90100002000L, true, 0, 0x0L), 4), 705271); - - // gentest-6394 - assertEqual(perft(new Board(0xa08041280000L, 0x4000000000000400L, 0x100006000L, 0x40010000000040L, 0x0L, 0x400008000L, 0x814128c440L, 0x4040a10400002000L, false, 0, 0x0L), 4), 477975); - - // gentest-6395 - assertEqual(perft(new Board(0xa08041280000L, 0x4000000000000400L, 0x100002080L, 0x41000000000040L, 0x0L, 0x400008000L, 0x81412884c0L, 0x4041a00400002000L, true, 0, 0x0L), 4), 413729); - - // gentest-6396 - assertEqual(perft(new Board(0xa0c001280000L, 0x4000000000000400L, 0x42080L, 0x60000000000040L, 0x0L, 0x400008000L, 0xc0012c84c0L, 0x4060a00400002000L, false, 0, 0x0L), 4), 462483); - - // gentest-6397 - assertEqual(perft(new Board(0xa08001280000L, 0x4000000000000400L, 0x46000L, 0x8004000000040L, 0x0L, 0x400008000L, 0x80012cc440L, 0x4008a04400002000L, true, 0, 0x0L), 4), 654491); - - // gentest-6398 - assertEqual(perft(new Board(0xa08021080000L, 0x4000000000000400L, 0x40000042000L, 0x800004000000040L, 0x0L, 0x400008000L, 0x480210c8440L, 0x4800a04400002000L, false, 0, 0x0L), 4), 1007637); - - // gentest-6399 - assertEqual(perft(new Board(0xa08021080000L, 0x4000000000000400L, 0x200042000L, 0x8004000000040L, 0x0L, 0x80000008000L, 0x82210c8440L, 0x4008a84000002000L, true, 0, 0x0L), 4), 1076675); - - // gentest-6400 - assertEqual(perft(new Board(0xa08021080000L, 0x4000000000000400L, 0x200100800L, 0x8004040000000L, 0x0L, 0x80000008000L, 0x8261088c00L, 0x4008a84000100000L, false, 0, 0x0L), 4), 686721); - } - - public static void batch16() { - // gentest-6401 - assertEqual(perft(new Board(0xa0a001080000L, 0x4000000000000400L, 0x200002800L, 0x2004040000000L, 0x0L, 0x80000008000L, 0xa241088c00L, 0x4002a84000002000L, true, 0, 0x0L), 4), 742335); - - // gentest-6402 - assertEqual(perft(new Board(0xa0a001080000L, 0x10000000000400L, 0x8000000002800L, 0x2004040000000L, 0x0L, 0x80000004000L, 0x800a041084c00L, 0x12a84000002000L, false, 0, 0x0L), 4), 957059); - - // gentest-6403 - assertEqual(perft(new Board(0xa08001080000L, 0x400000000000400L, 0x8000000002800L, 0x2402000000000L, 0x0L, 0x80000004000L, 0x8408001084c00L, 0x402a82000002000L, true, 0, 0x0L), 4), 1181842); - - // gentest-6404 - assertEqual(perft(new Board(0xa08001080000L, 0x400000000000010L, 0x8000000002800L, 0x2004040000000L, 0x0L, 0x80000004000L, 0x8008041084810L, 0x402a84000002000L, false, 0, 0x0L), 4), 1021024); - - // gentest-6405 - assertEqual(perft(new Board(0xa08001080000L, 0x400000000200000L, 0x8000000000810L, 0x2004040000000L, 0x0L, 0x800004000L, 0x8008041284800L, 0x402a04800000010L, true, 0, 0x0L), 4), 613181); - - // gentest-6406 - assertEqual(perft(new Board(0xa08001080000L, 0x400000000800000L, 0x810L, 0x8000040000000L, 0x0L, 0x800004000L, 0x8041884800L, 0x408a00800000010L, false, 0, 0x0L), 4), 442775); - - // gentest-6407 - assertEqual(perft(new Board(0xa08001080000L, 0x400000000800000L, 0x400800L, 0x48000000000000L, 0x0L, 0x800004000L, 0x40008001884800L, 0x408a00800400000L, true, 0, 0x0L), 4), 472517); - - // gentest-6408 - assertEqual(perft(new Board(0xa08001080000L, 0x400000000800000L, 0x80000000800L, 0x8400000000000L, 0x0L, 0x800000020L, 0x408001880820L, 0x408a80800000000L, false, 0, 0x0L), 4), 549219); - - // gentest-6409 - assertEqual(perft(new Board(0xa08001080000L, 0x1000020000000L, 0x80000000800L, 0x8400000000000L, 0x0L, 0x40000000020L, 0x408021080820L, 0x9ac0000000000L, true, 0, 0x0L), 4), 398144); - - // gentest-6410 - assertEqual(perft(new Board(0xa08001080000L, 0x1000020000000L, 0x1000000010L, 0x8400000000000L, 0x0L, 0x40000001000L, 0x408021081010L, 0x9a41000000000L, false, 0, 0x0L), 4), 448597); - - // gentest-6411 - assertEqual(perft(new Board(0xa08001080000L, 0x220000000L, 0x1000000010L, 0xc0000000000000L, 0x0L, 0x40000001000L, 0x40008021081010L, 0x80a41200000000L, true, 0, 0x0L), 4), 475962); - - // gentest-6412 - assertEqual(perft(new Board(0xa08001080000L, 0x220000000L, 0x80100000000L, 0xc0000000000000L, 0x0L, 0x40000001000L, 0x40008121081000L, 0x80ac0200000000L, false, 0, 0x0L), 4), 289527); - - // gentest-6413 - assertEqual(perft(new Board(0xa08001080000L, 0x220000000L, 0x10000100000000L, 0x80400000000000L, 0x0L, 0x8000000001000L, 0x408121081000L, 0x98a00200000000L, true, 0, 0x0L), 4), 314946); - - // gentest-6414 - assertEqual(perft(new Board(0x80a001080000L, 0x220000000L, 0x10000100000000L, 0x80000000000020L, 0x0L, 0x8000000001000L, 0x8121081020L, 0x98802200000000L, false, 0, 0x0L), 4), 335079); - - // gentest-6415 - assertEqual(perft(new Board(0x80a001080000L, 0x220000000L, 0x2000000100000000L, 0x80000000000020L, 0x0L, 0x40000200000L, 0x8121280020L, 0x2080842200000000L, true, 0, 0x0L), 4), 395374); - - // gentest-6416 - assertEqual(perft(new Board(0x80a001080000L, 0x20010000L, 0x2000200000000000L, 0x80000000000020L, 0x0L, 0x40000200000L, 0x208021280020L, 0x2080842000010000L, false, 0, 0x0L), 4), 486279); - - // gentest-6417 - assertEqual(perft(new Board(0x80a001080000L, 0x11000L, 0x280000000000L, 0x20000000000020L, 0x0L, 0x40000200000L, 0x208001281020L, 0x208c2000010000L, true, 0, 0x0L), 4), 625109); - - // gentest-6418 - assertEqual(perft(new Board(0x80a001080000L, 0x11000L, 0x280000000000L, 0x40000000000020L, 0x0L, 0x40000000800L, 0x208001081820L, 0x408c2000010000L, false, 0, 0x0L), 4), 868881); - - // gentest-6419 - assertEqual(perft(new Board(0x80a001080000L, 0x4001000L, 0x200000000040000L, 0x40000000000020L, 0x0L, 0x40000000800L, 0x80010c1820L, 0x240842004000000L, true, 0, 0x0L), 4), 146003); - - // gentest-6420 - assertEqual(perft(new Board(0x80a100080000L, 0x4001000L, 0x200000000040000L, 0x4000000020L, 0x0L, 0x40000000010L, 0x81000c1030L, 0x200846004000000L, false, 0, 0x0L), 4), 480327); - - // gentest-6421 - assertEqual(perft(new Board(0x80a100080000L, 0x4001000L, 0x1000008000000L, 0x4000000020L, 0x0L, 0x4000000000010L, 0x8108081030L, 0x5806004000000L, true, 0, 0x0L), 4), 481845); - - // gentest-6422 - assertEqual(perft(new Board(0x80a100080000L, 0x4001000L, 0x200000100000L, 0x4020000000L, 0x0L, 0x4000000000010L, 0x208120081010L, 0x4806004100000L, false, 0, 0x0L), 4), 528186); - - // gentest-6423 - assertEqual(perft(new Board(0x80a100080000L, 0x20000001000L, 0x200000000004L, 0x4020000000L, 0x0L, 0x4000000002000L, 0x208120083000L, 0x4826000000004L, true, 0, 0x0L), 4), 410455); - - // gentest-6424 - assertEqual(perft(new Board(0x822000080000L, 0x1000L, 0x200000000004L, 0x8080000000L, 0x0L, 0x4000000002000L, 0x220080083000L, 0x480a000000004L, false, 0, 0x0L), 4), 100930); - - // gentest-6425 - assertEqual(perft(new Board(0x822000080000L, 0x1000L, 0x200000010000L, 0x8080000000L, 0x0L, 0x2000000004000L, 0x220080085000L, 0x280a000010000L, true, 0, 0x0L), 4), 293471); - - // gentest-6426 - assertEqual(perft(new Board(0x822000080000L, 0x1000L, 0x10001L, 0x80000000L, 0x0L, 0x2000000004000L, 0x20000085001L, 0x2802080010000L, false, 0, 0x0L), 4), 199566); - - // gentest-6427 - assertEqual(perft(new Board(0x2a000080000L, 0x1000L, 0x10001L, 0x80000000L, 0x0L, 0x40000000020L, 0x20000081021L, 0x4a080010000L, true, 0, 0x0L), 4), 175393); - - // gentest-6428 - assertEqual(perft(new Board(0x2a008000000L, 0x4L, 0x10001L, 0x8000L, 0x0L, 0x40000000020L, 0x20008000025L, 0x4a000018000L, false, 0, 0x0L), 4), 57364); - - // gentest-6429 - assertEqual(perft(new Board(0x2a008000000L, 0x100L, 0x2000001L, 0x8000L, 0x0L, 0x2000000000020L, 0x20008000121L, 0x200a002008000L, true, 0, 0x0L), 4), 38394); - - // gentest-6430 - assertEqual(perft(new Board(0x2a008000000L, 0x1000000L, 0x2000001L, 0x8000L, 0x0L, 0x400000000000020L, 0x20009000021L, 0x40000a002008000L, false, 0, 0x0L), 4), 44351); - - // gentest-6431 - assertEqual(perft(new Board(0x2a008000000L, 0x200L, 0x400000001L, 0x8000L, 0x0L, 0x200000000000020L, 0x20008000221L, 0x20000a400008000L, true, 0, 0x0L), 4), 37008); - - // gentest-6432 - assertEqual(perft(new Board(0x2a400000000L, 0x200L, 0x1L, 0x2000L, 0x0L, 0x200000000000040L, 0x20400000241L, 0x20000a000002000L, false, 0, 0x0L), 4), 15676); - - // gentest-6433 - assertEqual(perft(new Board(0x200a400000000L, 0x200L, 0x1L, 0x4000L, 0x0L, 0x200000000000040L, 0x2000400000241L, 0x20000a000004000L, true, 0, 0x0L), 4), 4216); - - // gentest-6434 - assertEqual(perft(new Board(0x200a400000000L, 0x200L, 0x1L, 0x8000L, 0x0L, 0x200000000000040L, 0x2000400000241L, 0x20000a000008000L, false, 0, 0x0L), 4), 16387); - - // gentest-6435 - assertEqual(perft(new Board(0x200a400000000L, 0x4000000L, 0x1L, 0x4000L, 0x0L, 0x200000000000040L, 0x2000404000041L, 0x20000a000004000L, true, 0, 0x0L), 4), 10563); - - // gentest-6436 - assertEqual(perft(new Board(0x200a400000000L, 0x20000000000L, 0x1L, 0x4000L, 0x0L, 0x4000000000080L, 0x2020400000081L, 0x400a000004000L, false, 0, 0x0L), 4), 85849); - - // gentest-6437 - assertEqual(perft(new Board(0x200a400000000L, 0x20000000000L, 0x200000000000L, 0x200L, 0x0L, 0x4000000000080L, 0x2220400000080L, 0x400a000000200L, true, 0, 0x0L), 4), 78545); - - // gentest-6438 - assertEqual(perft(new Board(0x200a400000000L, 0x1000000L, 0x8000000000000000L, 0x2000L, 0x0L, 0x4000000000080L, 0x8002000401000080L, 0x400a000002000L, false, 0, 0x0L), 4), 57147); - - // gentest-6439 - assertEqual(perft(new Board(0x200a400000000L, 0x1000000L, 0x8000000L, 0x2000L, 0x0L, 0x4000000000080L, 0x2000409000080L, 0x400a000002000L, true, 0, 0x0L), 4), 60343); - - // gentest-6440 - assertEqual(perft(new Board(0x200a400000000L, 0x1000L, 0x8000000L, 0x0L, 0x0L, 0x4000000000080L, 0x2000408001080L, 0x400a000000000L, false, 0, 0x0L), 4), 21648); - - // gentest-6441 - assertEqual(perft(new Board(0xa400000000L, 0x1000L, 0x1000000000L, 0x0L, 0x0L, 0x2000000000080L, 0x1400001080L, 0x200a000000000L, true, 0, 0x0L), 4), 20980); - - // gentest-6442 - assertEqual(perft(new Board(0xa400000000L, 0x8000000L, 0x1L, 0x0L, 0x0L, 0x400000000000080L, 0x408000081L, 0x40000a000000000L, false, 0, 0x0L), 4), 11271); - - // gentest-6443 - assertEqual(perft(new Board(0x4a000000000L, 0x8000000L, 0x1L, 0x0L, 0x0L, 0x10000000000080L, 0x40008000081L, 0x1000a000000000L, true, 0, 0x0L), 4), 10666); - - // gentest-6444 - assertEqual(perft(new Board(0x4a000000000L, 0x1000L, 0x1L, 0x0L, 0x0L, 0x20000000008000L, 0x40000009001L, 0x2000a000000000L, false, 0, 0x0L), 4), 18444); - - // gentest-6445 - assertEqual(perft(new Board(0x4a000000000L, 0x1000L, 0x1L, 0x0L, 0x0L, 0x20000000004000L, 0x40000005001L, 0x2000a000000000L, true, 0, 0x0L), 4), 23998); - - // gentest-6446 - assertEqual(perft(new Board(0x4a000000000L, 0x1000L, 0x1L, 0x0L, 0x0L, 0x100000004000L, 0x40000005001L, 0x10a000000000L, false, 0, 0x0L), 4), 19254); - - // gentest-6447 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6448 - assertEqual(perft(new Board(0xfd00024000bf00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x4001bffdL, 0xfffd000200000000L, false, 0, 0x8100000000000081L), 4), 234589); - - // gentest-6449 - assertEqual(perft(new Board(0xed00125000af00L, 0x4200000000010040L, 0x2000010000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x5001affdL, 0xfbed011200000000L, true, 0, 0x8100000000000081L), 4), 576432); - - // gentest-6450 - assertEqual(perft(new Board(0xed00125004ab00L, 0x4200000000000040L, 0x10000010024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000001000L, 0x5004bbedL, 0xdbed011200010000L, false, 0, 0x8100000000000000L), 4), 532394); - - // gentest-6451 - assertEqual(perft(new Board(0xcd20125004ab00L, 0x4200000000000040L, 0x10400000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000080000L, 0x500cabedL, 0xdbcd211600000000L, true, 0, 0x8100000000000000L), 4), 476142); - - // gentest-6452 - assertEqual(perft(new Board(0xcd201250842b00L, 0x4200000000000040L, 0x90000000024L, 0x8100000000000081L, 0x800000000020000L, 0x1000000000080000L, 0x508e2be5L, 0xdbcd291200000000L, false, 0, 0x8100000000000000L), 4), 322729); - - // gentest-6453 - assertEqual(perft(new Board(0x4da01250842b00L, 0x210000000000040L, 0x90000000024L, 0x8100000000000081L, 0x800000000020000L, 0x1000000000000400L, 0x50862fe5L, 0x9b5da91200000000L, true, 0, 0x8100000000000000L), 4), 515374); - - // gentest-6454 - assertEqual(perft(new Board(0x49a41250842b00L, 0x210000000001000L, 0x90000000024L, 0x8100000000000081L, 0x800000800000000L, 0x1000000000000400L, 0x850843fa5L, 0x9b59ad1200000000L, false, 0, 0x8100000000000000L), 4), 757692); - - // gentest-6455 - assertEqual(perft(new Board(0x9e41250842b00L, 0x210000000001000L, 0x90000000024L, 0x4100000000008001L, 0x800000800000000L, 0x1000000000000400L, 0x85084bf25L, 0x5b19ed1200000000L, true, 0, 0x100000000000000L), 4), 610160); - - // gentest-6456 - assertEqual(perft(new Board(0x9e41252822900L, 0x210000000001000L, 0x10000000024L, 0x4100000000008001L, 0x800000800000000L, 0x1000000000000400L, 0x85282bd25L, 0x5b19e51200000000L, false, 0, 0x100000000000000L), 4), 450808); - - // gentest-6457 - assertEqual(perft(new Board(0x9e40272820900L, 0x200002000001000L, 0x10000000024L, 0x4100000000008001L, 0x800000800000000L, 0x1000000000000400L, 0x852829d25L, 0x5b09e52220000000L, true, 0, 0x100000000000000L), 4), 713414); - - // gentest-6458 - assertEqual(perft(new Board(0x1e40272820900L, 0x200000000401000L, 0x10000004004L, 0x4100000000008001L, 0x808000000000000L, 0x1000000000000400L, 0x800005282dd05L, 0x5b01e50220400000L, false, 0, 0x100000000000000L), 4), 87724); - - // gentest-6459 - assertEqual(perft(new Board(0x1e40272820900L, 0x200000000401000L, 0x10000000024L, 0x4100000000008001L, 0x100000000L, 0x8000000000400L, 0x52829d25L, 0x4309e50320400000L, true, 0, 0x0L), 4), 630929); - - // gentest-6460 - assertEqual(perft(new Board(0x1c42272820900L, 0x200000000440000L, 0x10000000024L, 0x4100000000002001L, 0x100000000L, 0x8000000000400L, 0x52862d25L, 0x4309c52320400000L, false, 0, 0x0L), 4), 996884); - - // gentest-6461 - assertEqual(perft(new Board(0x1c42272820900L, 0x200000000440000L, 0x10000080004L, 0x8100000000002001L, 0x100000000L, 0x800000000000400L, 0x528e2d05L, 0x8b01c52320400000L, true, 0, 0x0L), 4), 747303); - - // gentest-6462 - assertEqual(perft(new Board(0x1c42252a20900L, 0x200000000440000L, 0x10000000024L, 0x8100000000002001L, 0x100000000L, 0x800000000080000L, 0x528e2925L, 0x8b01c52300600000L, false, 0, 0x0L), 4), 507594); - - // gentest-6463 - assertEqual(perft(new Board(0x1c42252a20900L, 0x200000000401000L, 0x10000000024L, 0x8100000000002001L, 0x800000000000000L, 0x400000000080000L, 0x528a3925L, 0x8f01c52200600000L, true, 0, 0x0L), 4), 103018); - - // gentest-6464 - assertEqual(perft(new Board(0x1c42252a20900L, 0x200000000401000L, 0x10000000024L, 0x180000000002001L, 0x800000000000000L, 0x400000000040000L, 0x52863925L, 0xf81c52200600000L, false, 0, 0x0L), 4), 625174); - - // gentest-6465 - assertEqual(perft(new Board(0x1c42252a20900L, 0x200000000401000L, 0x10000000024L, 0x120000000004001L, 0x800000000000000L, 0x400000000040000L, 0x52865925L, 0xf21c52200600000L, true, 0, 0x0L), 4), 756455); - - // gentest-6466 - assertEqual(perft(new Board(0x1c42252a20900L, 0x200000000001000L, 0x10000000220L, 0x140000000400001L, 0x800000000000000L, 0x400000000040000L, 0x52c61b21L, 0xf41c52200200000L, false, 0, 0x0L), 4), 639246); - - // gentest-6467 - assertEqual(perft(new Board(0x144a252a20100L, 0x200000000001000L, 0x10000000220L, 0x140000000400001L, 0x0L, 0x400000000000800L, 0x52c21b21L, 0x74145a200200000L, true, 0, 0x0L), 4), 504502); - - // gentest-6468 - assertEqual(perft(new Board(0x144a252a20100L, 0x200000000001000L, 0x2000000040020L, 0x140000000400010L, 0x0L, 0x400000000000800L, 0x52c61930L, 0x74344a200200000L, false, 0, 0x0L), 4), 483361); - - // gentest-6469 - assertEqual(perft(new Board(0x144a212820100L, 0x200000000001000L, 0x2000000040020L, 0x140000000400010L, 0x0L, 0x400000000000800L, 0x8012c61920L, 0x743442200000010L, true, 0, 0x0L), 4), 520050); - - // gentest-6470 - assertEqual(perft(new Board(0x144a212820100L, 0x8000000001000L, 0x2000000040020L, 0x140000080000010L, 0x0L, 0x400000000000800L, 0x8092861920L, 0x54b442200000010L, false, 0, 0x0L), 4), 429276); - - // gentest-6471 - assertEqual(perft(new Board(0x144a202820100L, 0x8000000001000L, 0x2000000040020L, 0x140000080000001L, 0x0L, 0x4000000000800L, 0xa082861920L, 0x14f440200000001L, true, 0, 0x0L), 4), 805117); - - // gentest-6472 - assertEqual(perft(new Board(0x144a203820000L, 0x400001000L, 0x2000000044000L, 0x140000080000001L, 0x0L, 0x4000000000800L, 0xa083865800L, 0x147440600000001L, false, 0, 0x0L), 4), 1343863); - - // gentest-6473 - assertEqual(perft(new Board(0x144a203820000L, 0x408000000L, 0x2000000044000L, 0x440000080000002L, 0x0L, 0x4000000000800L, 0xa08b864800L, 0x447440600000002L, true, 0, 0x0L), 4), 1001199); - - // gentest-6474 - assertEqual(perft(new Board(0x144a203820000L, 0x408000000L, 0x2000800040000L, 0x440000080000002L, 0x0L, 0x80000001000L, 0xa88b861000L, 0x4434c0600000002L, false, 0, 0x0L), 4), 1481545); - - // gentest-6475 - assertEqual(perft(new Board(0x1448203820000L, 0x8000008000000L, 0x2000800040000L, 0x440000080000002L, 0x0L, 0x4000000001000L, 0x40888b861000L, 0x44f040200000002L, true, 0, 0x0L), 4), 1039118); - - // gentest-6476 - assertEqual(perft(new Board(0x458203820000L, 0x8000008000000L, 0x2000000004800L, 0x440000080000002L, 0x0L, 0x4000000001000L, 0x40808b825800L, 0x44e050200000002L, false, 0, 0x0L), 4), 831425); - - // gentest-6477 - assertEqual(perft(new Board(0x458302820000L, 0x8000008000000L, 0x100000000004800L, 0x1040000080000002L, 0x0L, 0x4000000001000L, 0x40818a825800L, 0x114c050200000002L, true, 0, 0x0L), 4), 175693); - - // gentest-6478 - assertEqual(perft(new Board(0x458302820000L, 0x8100000000000L, 0x100000000004800L, 0x1040000040000002L, 0x0L, 0x2000000001000L, 0x508142825800L, 0x114a050200000002L, false, 0, 0x0L), 4), 673950); - - // gentest-6479 - assertEqual(perft(new Board(0x458302820000L, 0x8100000000000L, 0x100000000004004L, 0x4800000040000002L, 0x0L, 0x2000000001000L, 0x508142825004L, 0x490a050200000002L, true, 0, 0x0L), 4), 667283); - - // gentest-6480 - assertEqual(perft(new Board(0x458302820000L, 0x40200000000000L, 0x100000000004004L, 0x4800000040000002L, 0x0L, 0x2000000000010L, 0x40408142824014L, 0x4902250200000002L, false, 0, 0x0L), 4), 350927); - - // gentest-6481 - assertEqual(perft(new Board(0x458302820000L, 0x40200000000000L, 0x100000000200004L, 0x4000000040000802L, 0x0L, 0x2000000000010L, 0x40408142a20014L, 0x4102250200000802L, true, 0, 0x0L), 4), 515146); - - // gentest-6482 - assertEqual(perft(new Board(0x458302820000L, 0x40200000000000L, 0x100000000200004L, 0x4008000010000002L, 0x0L, 0x2000000000010L, 0x40408112a20014L, 0x410a250200000002L, false, 0, 0x0L), 4), 552230); - - // gentest-6483 - assertEqual(perft(new Board(0x458302820000L, 0x40000800000000L, 0x100000000200004L, 0x4008100000000002L, 0x0L, 0x200000000000010L, 0x40508102a20014L, 0x4308050a00000002L, true, 0, 0x0L), 4), 559745); - - // gentest-6484 - assertEqual(perft(new Board(0x458302820000L, 0x40000000040000L, 0x100000000200004L, 0x4008100000000002L, 0x0L, 0x200000000000010L, 0x40508102a20014L, 0x4308050200040002L, false, 0, 0x0L), 4), 578201); - - // gentest-6485 - assertEqual(perft(new Board(0x458302820000L, 0x40000000040000L, 0x100000000200004L, 0x4000200008000002L, 0x0L, 0x400000000000010L, 0x40608102a20014L, 0x4500050208040002L, true, 0, 0x0L), 4), 453000); - - // gentest-6486 - assertEqual(perft(new Board(0xc50302820000L, 0x100000040000L, 0x100000000200004L, 0x4000280000000002L, 0x0L, 0x400000000000010L, 0xf00102a20014L, 0x45000d0200040002L, false, 0, 0x0L), 4), 522041); - - // gentest-6487 - assertEqual(perft(new Board(0x80410702820000L, 0x100000040000L, 0x2000000200004L, 0x4000280000000002L, 0x0L, 0x400000000000010L, 0x80700102a20014L, 0x4402090600040002L, true, 0, 0x0L), 4), 1063873); - - // gentest-6488 - assertEqual(perft(new Board(0x80410702820000L, 0x20040000L, 0x2000000200004L, 0x400020000000000aL, 0x0L, 0x400000000002000L, 0x80600122a22004L, 0x440201060004000aL, false, 0, 0x0L), 4), 1593636); - - // gentest-6489 - assertEqual(perft(new Board(0x80410702820000L, 0x820000000L, 0x2000000200004L, 0x400008000000000aL, 0x0L, 0x4000000002000L, 0x80480122a22004L, 0x4006010e0000000aL, true, 0, 0x0L), 4), 1414547); - - // gentest-6490 - assertEqual(perft(new Board(0x80010702820000L, 0x800000200L, 0x2000000200004L, 0x48000000000aL, 0x0L, 0x4000000002000L, 0x80080102a22204L, 0x6410e0000000aL, false, 0, 0x0L), 4), 1210817); - - // gentest-6491 - assertEqual(perft(new Board(0x80010702820000L, 0x20000200L, 0x2000000200004L, 0x400020000000000aL, 0x0L, 0x4000000002000L, 0x80200102a22204L, 0x400601062000000aL, true, 0, 0x0L), 4), 2118506); - - // gentest-6492 - assertEqual(perft(new Board(0x80010702820000L, 0x20000200L, 0x2000040000004L, 0x400008000000000aL, 0x0L, 0x200000000002000L, 0x80080142822204L, 0x420201062000000aL, false, 0, 0x0L), 4), 1885514); - - // gentest-6493 - assertEqual(perft(new Board(0x80010702820000L, 0x100200L, 0xa000000000004L, 0x400008000000000aL, 0x0L, 0x200000000002000L, 0x88080102822204L, 0x420201060010000aL, true, 0, 0x0L), 4), 1720668); - - // gentest-6494 - assertEqual(perft(new Board(0x80010702820000L, 0x2000000200L, 0xa000000000004L, 0x400000400000000aL, 0x0L, 0x200000000002000L, 0x88004102822204L, 0x420201260000000aL, false, 0, 0x0L), 4), 1521076); - - // gentest-6495 - assertEqual(perft(new Board(0x80010702820000L, 0x80000000200L, 0x8000000004004L, 0x400000800000000aL, 0x0L, 0x200000000002000L, 0x88008102822204L, 0x420009060000400aL, true, 0, 0x0L), 4), 1689140); - - // gentest-6496 - assertEqual(perft(new Board(0x80010502820000L, 0x80000000200L, 0x4024L, 0x4000008000000012L, 0x0L, 0x200000000002000L, 0x80008102822224L, 0x4200090400004012L, false, 0, 0x0L), 4), 1760858); - - // gentest-6497 - assertEqual(perft(new Board(0x80010502820000L, 0x400000000000200L, 0x5004L, 0x4000008000000042L, 0x0L, 0x200000000002000L, 0x80008102823204L, 0x4600010400004042L, true, 0, 0x0L), 4), 1444864); - - // gentest-6498 - assertEqual(perft(new Board(0x80010502820000L, 0x10000000000200L, 0x8000004004L, 0x4000004000000042L, 0x0L, 0x200000000002000L, 0x8000c102822204L, 0x4210010400004042L, false, 0, 0x0L), 4), 1439723); - - // gentest-6499 - assertEqual(perft(new Board(0x80010502820000L, 0x10000000000200L, 0x8000004004L, 0x400000400041L, 0x0L, 0x200000000002000L, 0x80008102c22204L, 0x210410400004041L, true, 0, 0x0L), 4), 1407239); - - // gentest-6500 - assertEqual(perft(new Board(0x80010502820000L, 0x10000000000200L, 0x8800000800L, 0x400000040041L, 0x0L, 0x200000000002000L, 0x80008102862a00L, 0x210410c00000041L, false, 0, 0x0L), 4), 2183986); - - // gentest-6501 - assertEqual(perft(new Board(0x80010502820000L, 0x400000000000200L, 0x800200800L, 0x400000040021L, 0x0L, 0x200000000002000L, 0x80000102a62a00L, 0x600410c00000021L, true, 0, 0x0L), 4), 120611); - - // gentest-6502 - assertEqual(perft(new Board(0x80010502820000L, 0x400000000000200L, 0x4800200000L, 0x400000040081L, 0x0L, 0x200000000001000L, 0x80004102a61200L, 0x600410c00000081L, false, 0, 0x0L), 4), 2061204); - - // gentest-6503 - assertEqual(perft(new Board(0x80010502820000L, 0x400000000000200L, 0x4000004000200000L, 0x20000100081L, 0x0L, 0x200000000001000L, 0x80004102b21200L, 0x4600030400000081L, true, 0, 0x0L), 4), 1991065); - - // gentest-6504 - assertEqual(perft(new Board(0x80010582020000L, 0x400000000000200L, 0x4000004000200000L, 0x10000200000000a0L, 0x0L, 0x200000000001000L, 0x1080004182221200L, 0x46000304000000a0L, false, 0, 0x0L), 4), 1277753); - - // gentest-6505 - assertEqual(perft(new Board(0x80010582020000L, 0x400000000000200L, 0x20200000200000L, 0x1000020000008020L, 0x0L, 0x200000000001000L, 0x1080200182221200L, 0x620030400008020L, true, 0, 0x0L), 4), 161531); - - // gentest-6506 - assertEqual(perft(new Board(0x80010582020000L, 0x400000000000200L, 0x200004200000L, 0x20000009000L, 0x0L, 0x200000000000020L, 0x80200182221220L, 0x600030404008000L, false, 0, 0x0L), 4), 683515); - - // gentest-6507 - assertEqual(perft(new Board(0x80010582020000L, 0x1000000000200L, 0x200000001000L, 0x20000008000L, 0x0L, 0x200000000000020L, 0x80200182021220L, 0x201030400008000L, true, 0, 0x0L), 4), 357166); - - // gentest-6508 - assertEqual(perft(new Board(0x80010582020000L, 0x1000000000004L, 0x200000001000L, 0x40000008000L, 0x0L, 0x200000000000020L, 0x80200182021024L, 0x201050400008000L, false, 0, 0x0L), 4), 261623); - - // gentest-6509 - assertEqual(perft(new Board(0x80010186020000L, 0x1000000000004L, 0x200000001000L, 0x400000000008000L, 0x0L, 0x200000000000040L, 0x80200182021044L, 0x601010004008000L, true, 0, 0x0L), 4), 325802); - - // gentest-6510 - assertEqual(perft(new Board(0x80010182060000L, 0x1000000000004L, 0x200000200000L, 0x400000000008000L, 0x0L, 0x200000000000040L, 0x80200182220044L, 0x601010000048000L, false, 0, 0x0L), 4), 355015); - - // gentest-6511 - assertEqual(perft(new Board(0x80010182060000L, 0x1000000000004L, 0x200010000000L, 0x408000000000000L, 0x0L, 0x200000000000040L, 0x80200192020044L, 0x609010000040000L, true, 0, 0x0L), 4), 583560); - - // gentest-6512 - assertEqual(perft(new Board(0x80010182060000L, 0x1000000000004L, 0x200010000000L, 0xc00000000000000L, 0x0L, 0x200000000008000L, 0x80200192028004L, 0xe01010000040000L, false, 0, 0x0L), 4), 402631); - - // gentest-6513 - assertEqual(perft(new Board(0x10182060000L, 0x1000000000004L, 0x200010000000L, 0x8000000000080000L, 0x0L, 0x200000000008000L, 0x200192028004L, 0x82010100000c0000L, true, 0, 0x0L), 4), 372599); - - // gentest-6514 - assertEqual(perft(new Board(0x10182020000L, 0x1000000000004L, 0x400000040000L, 0x8000000000080000L, 0x0L, 0x4000000008000L, 0x400182068004L, 0x8005010000080000L, false, 0, 0x0L), 4), 498036); - - // gentest-6515 - assertEqual(perft(new Board(0x10182020000L, 0x1000000000100L, 0x400000040000L, 0x8000000800000000L, 0x0L, 0x40000008000L, 0x400182068100L, 0x8001050800000000L, true, 0, 0x0L), 4), 470032); - - // gentest-6516 - assertEqual(perft(new Board(0x10380020000L, 0x1000000000100L, 0x20000000040000L, 0x8000000800000000L, 0x0L, 0x2000000008000L, 0x20000380068100L, 0x8003010800000000L, false, 0, 0x0L), 4), 557879); - - // gentest-6517 - assertEqual(perft(new Board(0x10380020000L, 0x1000000000004L, 0x20000000040000L, 0x2000008000000000L, 0x0L, 0x2000000008000L, 0x20000380068004L, 0x2003018000000000L, true, 0, 0x0L), 4), 468713); - - // gentest-6518 - assertEqual(perft(new Board(0x10380020000L, 0x1000000000004L, 0x808000000L, 0x2000008000000000L, 0x0L, 0x400000000008000L, 0xb88028004L, 0x2401018000000000L, false, 0, 0x0L), 4), 599758); - - // gentest-6519 - assertEqual(perft(new Board(0x10380020000L, 0x1000000000004L, 0x1800000000L, 0x8800000000000000L, 0x0L, 0x400000000008000L, 0x1b80028004L, 0x8c01010000000000L, true, 0, 0x0L), 4), 370464); - - // gentest-6520 - assertEqual(perft(new Board(0x10382000000L, 0x1000000001000L, 0x1800000000L, 0x8008000000000000L, 0x0L, 0x400000000008000L, 0x1b82009000L, 0x8409010000000000L, false, 0, 0x0L), 4), 535355); - - // gentest-6521 - assertEqual(perft(new Board(0x10382000000L, 0x1000000001000L, 0x100001000000000L, 0x2080000000000000L, 0x0L, 0x400000000008000L, 0x100001382009000L, 0x2481010000000000L, true, 0, 0x0L), 4), 577649); - - // gentest-6522 - assertEqual(perft(new Board(0x10382000000L, 0x1000000001000L, 0x100000008000000L, 0x80200000000000L, 0x0L, 0x400000000800000L, 0x10000038a801000L, 0x481210000000000L, false, 0, 0x0L), 4), 617224); - - // gentest-6523 - assertEqual(perft(new Board(0x10382000000L, 0x1000L, 0x101000000000000L, 0x80200000000000L, 0x0L, 0x400000000800000L, 0x101000382801000L, 0x480210000000000L, true, 0, 0x0L), 4), 446887); - - // gentest-6524 - assertEqual(perft(new Board(0x10182000000L, 0x1000L, 0x100000000002000L, 0x2200000000000L, 0x0L, 0x400000000800000L, 0x100010182803000L, 0x402200000000000L, false, 0, 0x0L), 4), 391634); - - // gentest-6525 - assertEqual(perft(new Board(0x10182000000L, 0x1000L, 0x100000000000040L, 0x200000080000L, 0x0L, 0x400000000800000L, 0x100010182801040L, 0x400200000080000L, true, 0, 0x0L), 4), 101504); - - // gentest-6526 - assertEqual(perft(new Board(0x10380000000L, 0x1000L, 0x100000000000040L, 0x8200000000000L, 0x0L, 0x400000000008000L, 0x100010380009040L, 0x408200000000000L, false, 0, 0x0L), 4), 465826); - - // gentest-6527 - assertEqual(perft(new Board(0x10380000000L, 0x8000000L, 0x100000000000040L, 0x800000000002000L, 0x0L, 0x400000000008000L, 0x100010388008040L, 0xc00000000002000L, true, 0, 0x0L), 4), 45832); - - // gentest-6528 - assertEqual(perft(new Board(0x10380000000L, 0x8000000L, 0x800000040L, 0x2000L, 0x0L, 0x400000000000080L, 0x10b880000c0L, 0x400000000002000L, false, 0, 0x0L), 4), 148029); - - // gentest-6529 - assertEqual(perft(new Board(0x10380000000L, 0x8000000L, 0x4000000000000040L, 0x2000000000L, 0x0L, 0x800000000000080L, 0x40000103880000c0L, 0x800002000000000L, true, 0, 0x0L), 4), 120086); - - // gentest-6530 - assertEqual(perft(new Board(0x1010280000000L, 0x8000000L, 0x4000000000000040L, 0x2000000000L, 0x0L, 0x1000000000000080L, 0x40010102880000c0L, 0x1000002000000000L, false, 0, 0x0L), 4), 146161); - - // gentest-6531 - assertEqual(perft(new Board(0x1010280000000L, 0x8000000L, 0x4000000000000040L, 0x20000000000000L, 0x0L, 0x2000000000004000L, 0x4001010288004040L, 0x2020000000000000L, true, 0, 0x0L), 4), 107433); - - // gentest-6532 - assertEqual(perft(new Board(0x1010280000000L, 0x1000L, 0x80000000000040L, 0x2000000000L, 0x0L, 0x2000000000004000L, 0x81010280005040L, 0x2000002000000000L, false, 0, 0x0L), 4), 166628); - - // gentest-6533 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6534 - assertEqual(perft(new Board(0xff00000000ff00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xbfff800000000000L, false, 0, 0x8100000000000081L), 4), 197799); - - // gentest-6535 - assertEqual(perft(new Board(0xd728000000ff00L, 0x200800000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x1fffdL, 0xbfd7a80000000000L, true, 0, 0x8100000000000081L), 4), 343589); - - // gentest-6536 - assertEqual(perft(new Board(0xd52a002010cf00L, 0x200800000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2011cffdL, 0xbfd5aa0000000000L, false, 0, 0x8100000000000081L), 4), 691202); - - // gentest-6537 - assertEqual(perft(new Board(0xd522082014cb00L, 0x810000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x2015cbfdL, 0xbdd5a30800000000L, true, 0, 0x8100000000000081L), 4), 748878); - - // gentest-6538 - assertEqual(perft(new Board(0xd1260820944b00L, 0x810000010040L, 0x2400000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x24954bddL, 0xbdd1a70800000000L, false, 0, 0x8100000000000081L), 4), 959297); - - // gentest-6539 - assertEqual(perft(new Board(0xd1260820d40b00L, 0x12000010040L, 0x2008000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x24d50bddL, 0xb9d9272800000000L, true, 0, 0x8100000000000081L), 4), 787298); - - // gentest-6540 - assertEqual(perft(new Board(0x91264820dc0300L, 0x12000000440L, 0x2008000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x24dc07ddL, 0xb999276800000000L, false, 0, 0x8100000000000081L), 4), 964857); - - // gentest-6541 - assertEqual(perft(new Board(0x91264820dc0300L, 0x200002000010040L, 0x48000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x24dd03ddL, 0x9bd9266800000000L, true, 0, 0x8100000000000081L), 4), 846924); - - // gentest-6542 - assertEqual(perft(new Board(0x81364820de0100L, 0x200002200000040L, 0x48000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x224de01ddL, 0x9bc9366800000000L, false, 0, 0x8100000000000081L), 4), 897649); - - // gentest-6543 - assertEqual(perft(new Board(0x80374820de0100L, 0x200002200000040L, 0x2008000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000020L, 0x224de01edL, 0xbb88376800000000L, true, 0, 0x8100000000000000L), 4), 945464); - - // gentest-6544 - assertEqual(perft(new Board(0x80334c20de0100L, 0x200002200000040L, 0x2008000004000004L, 0x8100000000000081L, 0x800000000002000L, 0x1000000000000020L, 0x224de21e5L, 0xbb88336c00000000L, false, 0, 0x8100000000000000L), 4), 937174); - - // gentest-6545 - assertEqual(perft(new Board(0x80334c20de0100L, 0x240000200000040L, 0x2008000004000800L, 0x8001000000000081L, 0x800000000002000L, 0x1000000000000020L, 0x224de29e1L, 0xbac9334c00000000L, true, 0, 0x8000000000000000L), 4), 742729); - - // gentest-6546 - assertEqual(perft(new Board(0x80330c609e0100L, 0x240000200000040L, 0x2008000004000800L, 0x8001000000000081L, 0x800000000002000L, 0x1000000000004000L, 0x2449e69c1L, 0xbac9330c20000000L, false, 0, 0x8000000000000000L), 4), 845428); - - // gentest-6547 - assertEqual(perft(new Board(0x80132c609f0000L, 0x240000200000040L, 0x8080004000800L, 0x8001000000000081L, 0x800000000002000L, 0x1000000000004000L, 0x2449f68c1L, 0x9ac91b2c20000000L, true, 0, 0x8000000000000000L), 4), 1238914); - - // gentest-6548 - assertEqual(perft(new Board(0x80132c609f0000L, 0x240000200000040L, 0x8080004000800L, 0x4001000000000088L, 0x800000080000000L, 0x1000000000004000L, 0x2c49f48c8L, 0x5ac91b2c20000000L, false, 0, 0x0L), 4), 1068637); - - // gentest-6549 - assertEqual(perft(new Board(0x80132c609f0000L, 0x240000200000040L, 0xc000004000800L, 0x2001000000000088L, 0x800000080000000L, 0x1000000000008000L, 0x2c49f88c8L, 0x3acd132c20000000L, true, 0, 0x0L), 4), 656195); - - // gentest-6550 - assertEqual(perft(new Board(0x80132c68970000L, 0x240000200000040L, 0xc000004000010L, 0x2001000000000088L, 0x200080000000L, 0x1000000000008000L, 0x2cc9780d8L, 0x32cd332c20000000L, false, 0, 0x0L), 4), 1053531); - - // gentest-6551 - assertEqual(perft(new Board(0x80132c68970000L, 0x240000200000040L, 0xc000004000010L, 0x2001000000000088L, 0x8080000000L, 0x1000000000004000L, 0x2cc9740d8L, 0x32cd13ac20000000L, true, 0, 0x0L), 4), 905188); - - // gentest-6552 - assertEqual(perft(new Board(0x80033c68970000L, 0x240000200000040L, 0xc000004000800L, 0x2001000000000088L, 0x8080000000L, 0x1000000000200000L, 0x2ccb708c8L, 0x32cd03bc20000000L, false, 0, 0x0L), 4), 813289); - - // gentest-6553 - assertEqual(perft(new Board(0x80033868970000L, 0x241000000000040L, 0xc000004000800L, 0x2000000000000088L, 0x80000000L, 0x1000000000200000L, 0x1000044b708c8L, 0x32cc0338a8000000L, true, 0, 0x0L), 4), 966238); - - // gentest-6554 - assertEqual(perft(new Board(0x80031828970000L, 0x201002000000040L, 0xc000200000800L, 0x2000000000000088L, 0x80000000L, 0x1000000000200000L, 0x1000200b708c8L, 0x328c0338a8000000L, false, 0, 0x0L), 4), 780525); - - // gentest-6555 - assertEqual(perft(new Board(0x831828970000L, 0x201002000000040L, 0xc000200000800L, 0x2000000000a0L, 0x80000000L, 0x1000000000200000L, 0x1000200b708e0L, 0x120ca338a8000000L, true, 0, 0x0L), 4), 781406); - - // gentest-6556 - assertEqual(perft(new Board(0x831838870000L, 0x201080000000040L, 0xc000200000800L, 0x200000000082L, 0x80000000L, 0x1000000000200000L, 0x1000210a708c2L, 0x120cab18a8000000L, false, 0, 0x0L), 4), 610727); - - // gentest-6557 - assertEqual(perft(new Board(0x831838870000L, 0x201080000000040L, 0xc000000001800L, 0x200000000082L, 0x10L, 0x800000000200000L, 0x1000010a718c2L, 0xa0cab1828000010L, true, 0, 0x0L), 4), 858141); - - // gentest-6558 - assertEqual(perft(new Board(0x831838870000L, 0x1201000000000040L, 0xc000000001800L, 0x200000008008L, 0x10L, 0x800000000200000L, 0x1000010a79848L, 0x1a0ca31828000010L, false, 0, 0x0L), 4), 546662); - - // gentest-6559 - assertEqual(perft(new Board(0x831838870000L, 0x1201000000000040L, 0x4040000001010L, 0x2000008008L, 0x0L, 0x800000000200000L, 0x1000010a79058L, 0x1a04873828000000L, true, 0, 0x0L), 4), 460542); - - // gentest-6560 - assertEqual(perft(new Board(0x833828870000L, 0x1201000000000040L, 0x6000000001010L, 0x8001L, 0x0L, 0x800000000200000L, 0x1002000a79051L, 0x1a06831828000000L, false, 0, 0x0L), 4), 235179); - - // gentest-6561 - assertEqual(perft(new Board(0x833828870000L, 0x1001200000000040L, 0x6000000001010L, 0x8001L, 0x0L, 0x800000000002000L, 0x100200087b051L, 0x1806a31828000000L, true, 0, 0x0L), 4), 338259); - - // gentest-6562 - assertEqual(perft(new Board(0x833829860000L, 0x1001200000000040L, 0x6000000001010L, 0x81L, 0x0L, 0x10000000002000L, 0x10020018630d1L, 0x1016a31828000000L, false, 0, 0x0L), 4), 427687); - - // gentest-6563 - assertEqual(perft(new Board(0x832839860000L, 0x1001200000000040L, 0x404000004000010L, 0x81L, 0x0L, 0x10000000002000L, 0x10020058620d1L, 0x1414a30838000000L, true, 0, 0x0L), 4), 405918); - - // gentest-6564 - assertEqual(perft(new Board(0x822839860000L, 0x1001200000000040L, 0x404000004000010L, 0x81L, 0x0L, 0x80000002000L, 0x10020058620d1L, 0x1404aa0838000000L, false, 0, 0x0L), 4), 305016); - - // gentest-6565 - assertEqual(perft(new Board(0x822831860000L, 0x1000240000000040L, 0x4010004000010L, 0x81L, 0x0L, 0x80000002000L, 0x420058220d1L, 0x1004ab0830040000L, true, 0, 0x0L), 4), 403045); - - // gentest-6566 - assertEqual(perft(new Board(0x822831860000L, 0x1000240000000040L, 0x4010004100000L, 0x81L, 0x0L, 0x400002000L, 0x420059220c1L, 0x1004a30c30040000L, false, 0, 0x0L), 4), 75099); - - // gentest-6567 - assertEqual(perft(new Board(0x822811860000L, 0x1000200000000040L, 0x4010004000000L, 0x81L, 0x0L, 0x40000100000L, 0x20059200c1L, 0x1004a70810040000L, true, 0, 0x0L), 4), 296410); - - // gentest-6568 - assertEqual(perft(new Board(0x822811860000L, 0x1000200000000040L, 0x800010004000000L, 0x180L, 0x0L, 0x40000001000L, 0x20058211c0L, 0x1800a70810040000L, false, 0, 0x0L), 4), 218697); - - // gentest-6569 - assertEqual(perft(new Board(0x2a811860000L, 0x1000200000000040L, 0x800010004000000L, 0x480L, 0x0L, 0x400001000L, 0x20058214c0L, 0x1800238c10040000L, true, 0, 0x0L), 4), 166280); - - // gentest-6570 - assertEqual(perft(new Board(0x2a811860000L, 0x5000000000000040L, 0x800010000000000L, 0x480L, 0x0L, 0x400000008L, 0x120018204c8L, 0x5800028c10040000L, false, 0, 0x0L), 4), 237142); - - // gentest-6571 - assertEqual(perft(new Board(0xaa11860000L, 0x4000200000000040L, 0x800010000000000L, 0x8400L, 0x0L, 0x400000008L, 0x12001828448L, 0x4800208e10040000L, true, 0, 0x0L), 4), 228709); - - // gentest-6572 - assertEqual(perft(new Board(0xaa11860000L, 0x4000200000000040L, 0x30000000000L, 0x8400L, 0x0L, 0x400000008L, 0x12001828448L, 0x4000228e10040000L, false, 0, 0x0L), 4), 232951); - - // gentest-6573 - assertEqual(perft(new Board(0xaa11820400L, 0x5000000000000040L, 0x30000000000L, 0x9000L, 0x0L, 0x400000008L, 0x12001829048L, 0x5000028e10000400L, true, 0, 0x0L), 4), 39801); - - // gentest-6574 - assertEqual(perft(new Board(0xaa11820400L, 0x5000000000000040L, 0x800010000000000L, 0x1080L, 0x0L, 0x400000004L, 0x120018210c4L, 0x5800008e10000400L, false, 0, 0x0L), 4), 209345); - - // gentest-6575 - assertEqual(perft(new Board(0xaa11820400L, 0x5000000000000040L, 0x10080000000L, 0x9000L, 0x0L, 0x2000004L, 0x12001829044L, 0x5000008a92000400L, true, 0, 0x0L), 4), 177587); - - // gentest-6576 - assertEqual(perft(new Board(0xab10820400L, 0x5000000000000040L, 0x10000400000L, 0x3000L, 0x0L, 0x2000004L, 0x12100823044L, 0x5000008a12400400L, false, 0, 0x0L), 4), 179791); - - // gentest-6577 - assertEqual(perft(new Board(0xab00920400L, 0x4000200000000040L, 0x10000400000L, 0x201000L, 0x0L, 0x2000004L, 0x12100a21044L, 0x4000208a02500400L, true, 0, 0x0L), 4), 161101); - - // gentest-6578 - assertEqual(perft(new Board(0xab00820400L, 0x4000200000000040L, 0x10000008000L, 0x100020L, 0x0L, 0x2000004L, 0x12100920064L, 0x4000208a02008400L, false, 0, 0x0L), 4), 220368); - - // gentest-6579 - assertEqual(perft(new Board(0xab00820400L, 0x80800000000040L, 0x10000008000L, 0x30L, 0x0L, 0x2000004L, 0x12100820074L, 0x80808a02008400L, true, 0, 0x0L), 4), 197274); - - // gentest-6580 - assertEqual(perft(new Board(0xab00820400L, 0xa0000000000040L, 0x2000000008000L, 0x10000020L, 0x0L, 0x2000004L, 0x2002110820064L, 0xa0008a02008400L, false, 0, 0x0L), 4), 114143); - - // gentest-6581 - assertEqual(perft(new Board(0xa902820400L, 0xa0000000000040L, 0x2000000008000L, 0x1020L, 0x0L, 0x40004L, 0x2002100821064L, 0xa0008802048400L, true, 0, 0x0L), 4), 199346); - - // gentest-6582 - assertEqual(perft(new Board(0xa902800000L, 0xa0000000000040L, 0x2000000008000L, 0x2400L, 0x0L, 0x20004L, 0x2002100802444L, 0xa0008802028000L, false, 0, 0x0L), 4), 298732); - - // gentest-6583 - assertEqual(perft(new Board(0xa902800000L, 0xa0000000000040L, 0x2000000000800L, 0x2400L, 0x0L, 0x20002L, 0x2002100802442L, 0xa0008802020800L, true, 0, 0x0L), 4), 239810); - - // gentest-6584 - assertEqual(perft(new Board(0xa902800000L, 0xa0000000000040L, 0x2004000000000L, 0x20000002000L, 0x0L, 0x20002L, 0x2022100802042L, 0xa000c802020000L, false, 0, 0x0L), 4), 385158); - - // gentest-6585 - assertEqual(perft(new Board(0xa902800000L, 0x80400000000040L, 0x2004000000000L, 0x800000002000L, 0x0L, 0x20002L, 0x2802100802042L, 0x8040c802020000L, true, 0, 0x0L), 4), 241812); - - // gentest-6586 - assertEqual(perft(new Board(0xa102800000L, 0x80400000000040L, 0x20004000000000L, 0x800000002000L, 0x0L, 0x10002L, 0x20802100802042L, 0x8040c002010000L, false, 0, 0x0L), 4), 324412); - - // gentest-6587 - assertEqual(perft(new Board(0x2182800000L, 0x80400000000040L, 0x20004000000000L, 0x800000200000L, 0x0L, 0x1000002L, 0x20802100a00042L, 0x80404083000000L, true, 0, 0x0L), 4), 220126); - - // gentest-6588 - assertEqual(perft(new Board(0x2102800000L, 0x80400000000040L, 0x20004000000000L, 0x8200000L, 0x0L, 0x200000002L, 0x20002108a00042L, 0x80404202000000L, false, 0, 0x0L), 4), 627805); - - // gentest-6589 - assertEqual(perft(new Board(0x2102800000L, 0x80400000000040L, 0x20000000000000L, 0x200800L, 0x0L, 0x400000002L, 0x20002100a00842L, 0x80400402000000L, true, 0, 0x0L), 4), 213479); - - // gentest-6590 - assertEqual(perft(new Board(0x12002800000L, 0x80400000000040L, 0x20000L, 0x200800L, 0x0L, 0x200000002L, 0x12000a20842L, 0x80400202000000L, false, 0, 0x0L), 4), 270265); - - // gentest-6591 - assertEqual(perft(new Board(0x12002800000L, 0x80400000000040L, 0x20000L, 0x20000800L, 0x0L, 0x40000000002L, 0x12020820842L, 0x80440002000000L, true, 0, 0x0L), 4), 258824); - - // gentest-6592 - assertEqual(perft(new Board(0x12002800000L, 0x80400000000040L, 0x20000L, 0x20000800L, 0x0L, 0x400000400L, 0x12020820c40L, 0x80400402000000L, false, 0, 0x0L), 4), 189013); - - // gentest-6593 - assertEqual(perft(new Board(0x10002800000L, 0x200080000040L, 0x20000L, 0x20000800L, 0x0L, 0x400000400L, 0x10020820c40L, 0x200482000000L, true, 0, 0x0L), 4), 254535); - - // gentest-6594 - assertEqual(perft(new Board(0x10002800000L, 0x8080000040L, 0x20000L, 0x4000800L, 0x0L, 0x400000008L, 0x10004820848L, 0x8482000000L, false, 0, 0x0L), 4), 28088); - - // gentest-6595 - assertEqual(perft(new Board(0x10002800000L, 0x200080000040L, 0x20000L, 0x4008000L, 0x0L, 0x200000008L, 0x10004828048L, 0x200282000000L, true, 0, 0x0L), 4), 203583); - - // gentest-6596 - assertEqual(perft(new Board(0x10002800000L, 0x4000000080000040L, 0x20000L, 0x4008000L, 0x0L, 0x200002000L, 0x1000482a040L, 0x4000000282000000L, false, 0, 0x0L), 4), 96421); - - // gentest-6597 - assertEqual(perft(new Board(0x10002800000L, 0x600000000040L, 0x400L, 0x4008000L, 0x0L, 0x200002000L, 0x1000480a440L, 0x600202000000L, true, 0, 0x0L), 4), 268434); - - // gentest-6598 - assertEqual(perft(new Board(0x10002800000L, 0x8000200000000040L, 0x400L, 0x100000008000L, 0x0L, 0x200002000L, 0x11000080a440L, 0x8000200202000000L, false, 0, 0x0L), 4), 163815); - - // gentest-6599 - assertEqual(perft(new Board(0x10002800000L, 0x408000000040L, 0x400L, 0x9000L, 0x0L, 0x200002000L, 0x1000080b440L, 0x408202000000L, true, 0, 0x0L), 4), 170752); - - // gentest-6600 - assertEqual(perft(new Board(0x10002800000L, 0x408000000040L, 0x400L, 0x100000008000L, 0x0L, 0x100004000L, 0x11000080c440L, 0x408102000000L, false, 0, 0x0L), 4), 88818); - - // gentest-6601 - assertEqual(perft(new Board(0x10002800000L, 0x2000000000400040L, 0x400L, 0x80000008000L, 0x0L, 0x100004000L, 0x9000080c440L, 0x2000000102400000L, true, 0, 0x0L), 4), 131632); - - // gentest-6602 - assertEqual(perft(new Board(0x10002800000L, 0x2000000000200020L, 0x400L, 0x80000000080L, 0x0L, 0x100004000L, 0x90000a04480L, 0x2000000102000020L, false, 0, 0x0L), 4), 140384); - - // gentest-6603 - assertEqual(perft(new Board(0x10002800000L, 0x100000208000L, 0x400L, 0x80000000040L, 0x0L, 0x100004000L, 0x90000a04440L, 0x100102008000L, true, 0, 0x0L), 4), 218428); - - // gentest-6604 - assertEqual(perft(new Board(0x10002800000L, 0x100000001020L, 0x400L, 0x80000000040L, 0x0L, 0x100004000L, 0x90000805440L, 0x100102000020L, false, 0, 0x0L), 4), 179754); - - // gentest-6605 - assertEqual(perft(new Board(0x1000002800000L, 0x100000001020L, 0x400L, 0x80000000040L, 0x0L, 0x400004000L, 0x1080000805440L, 0x100402000020L, true, 0, 0x0L), 4), 229796); - - // gentest-6606 - assertEqual(perft(new Board(0x1000002800000L, 0x100000401000L, 0x400L, 0x800000040L, 0x0L, 0x400002000L, 0x1000800803440L, 0x100402400000L, false, 0, 0x0L), 4), 112162); - - // gentest-6607 - assertEqual(perft(new Board(0x1000002800000L, 0x108000001000L, 0x400L, 0x400000040L, 0x0L, 0x20000002000L, 0x1000400803440L, 0x128002000000L, true, 0, 0x0L), 4), 556607); - - // gentest-6608 - assertEqual(perft(new Board(0x1000002800000L, 0x4008008000000L, 0x400L, 0x400000004L, 0x0L, 0x20000002000L, 0x1000408802404L, 0x4028002000000L, false, 0, 0x0L), 4), 392822); - - // gentest-6609 - assertEqual(perft(new Board(0x1000002800000L, 0x108008000000L, 0x400L, 0x200000004L, 0x0L, 0x4000000002000L, 0x1000208802404L, 0x4108002000000L, true, 0, 0x0L), 4), 334522); - - // gentest-6610 - assertEqual(perft(new Board(0x1000002800000L, 0x108008000000L, 0x100L, 0x200000004L, 0x0L, 0x80000002000L, 0x1000208802104L, 0x188002000000L, false, 0, 0x0L), 4), 434577); - - // gentest-6611 - assertEqual(perft(new Board(0x1000002800000L, 0x4000008400000L, 0x100L, 0x200000004L, 0x0L, 0x80000100000L, 0x1000208900104L, 0x4080002400000L, true, 0, 0x0L), 4), 343112); - - // gentest-6612 - assertEqual(perft(new Board(0x1000002800000L, 0x4000008400000L, 0x20000000000000L, 0x8000000004L, 0x0L, 0x10000000100000L, 0x21008008900004L, 0x14000002400000L, false, 0, 0x0L), 4), 530552); - - // gentest-6613 - assertEqual(perft(new Board(0x1000000820000L, 0x4000000200020L, 0x20000000000000L, 0x8000000004L, 0x0L, 0x10000000100000L, 0x21008000b00004L, 0x14000000020020L, true, 0, 0x0L), 4), 74174); - - // gentest-6614 - assertEqual(perft(new Board(0x1000000820000L, 0x10008000020L, 0x20000000000000L, 0x8000000004L, 0x0L, 0x10000010000000L, 0x21008018800004L, 0x10010000020020L, false, 0, 0x0L), 4), 318416); - - // gentest-6615 - assertEqual(perft(new Board(0x1000000820000L, 0x10008000000L, 0x0L, 0x8000000020L, 0x0L, 0x10000010000000L, 0x1008018800020L, 0x10010000020000L, true, 0, 0x0L), 4), 147146); - - // gentest-6616 - assertEqual(perft(new Board(0x1000000820000L, 0x10008000000L, 0x0L, 0x100000000000020L, 0x0L, 0x80010000000L, 0x101000018800020L, 0x90000020000L, false, 0, 0x0L), 4), 80645); - - // gentest-6617 - assertEqual(perft(new Board(0x1000000820000L, 0x200000008000000L, 0x0L, 0x100000000000040L, 0x0L, 0x10000010000000L, 0x101000018800040L, 0x210000000020000L, true, 0, 0x0L), 4), 85158); - - // gentest-6618 - assertEqual(perft(new Board(0x1000000820000L, 0x200040000000000L, 0x0L, 0x100000000000040L, 0x0L, 0x1000000020000000L, 0x101040020800040L, 0x1200000000020000L, false, 0, 0x0L), 4), 28853); - - // gentest-6619 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6620 - assertEqual(perft(new Board(0xfd000200807f00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x817ffdL, 0xfffd000200000000L, false, 0, 0x8100000000000081L), 4), 198000); - - // gentest-6621 - assertEqual(perft(new Board(0xfd000210806f00L, 0x4000001000010040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10816ffdL, 0xfdfd001200000000L, true, 0, 0x8100000000000081L), 4), 458679); - - // gentest-6622 - assertEqual(perft(new Board(0xf9040212806d00L, 0x4000001004000040L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x16806dfdL, 0xfdf9041200000000L, false, 0, 0x8100000000000081L), 4), 568199); - - // gentest-6623 - assertEqual(perft(new Board(0xe9140212806d00L, 0x4000001004001000L, 0x2400000000000024L, 0x8100000000000081L, 0x80000008L, 0x1000000000000010L, 0x16807dbdL, 0xf5e9141280000000L, true, 0, 0x8100000000000081L), 4), 862035); - - // gentest-6624 - assertEqual(perft(new Board(0xe9140212804d00L, 0x4000001004040000L, 0x2400000000000024L, 0x8100000000000081L, 0x8L, 0x1000000000002000L, 0x16846dadL, 0xf5e9141200000000L, false, 0, 0x8100000000000000L), 4), 905779); - - // gentest-6625 - assertEqual(perft(new Board(0xe8140312804d00L, 0x4000000044040000L, 0x2400000000000024L, 0x8100000000000081L, 0x8L, 0x1000000000000040L, 0x16844dedL, 0xf5e8140340000000L, true, 0, 0x8100000000000000L), 4), 934905); - - // gentest-6626 - assertEqual(perft(new Board(0xe8140353004c00L, 0x10000004040000L, 0x2400000000000024L, 0x8100000000000081L, 0x8L, 0x1000000000000040L, 0x57044cedL, 0xb5f8140300000000L, false, 0, 0x8100000000000000L), 4), 816449); - - // gentest-6627 - assertEqual(perft(new Board(0xc8142353004c00L, 0x10000000050000L, 0x2002000000000024L, 0x8100000000000081L, 0x8L, 0x1000000000000040L, 0x53054cedL, 0xb1da142300000000L, true, 0, 0x8100000000000000L), 4), 962260); - - // gentest-6628 - assertEqual(perft(new Board(0xc8142153400c00L, 0x10000000010002L, 0x2002000000000024L, 0x8100000000000081L, 0x8L, 0x1000000000000040L, 0x52410cefL, 0xb1da142101000000L, false, 0, 0x8100000000000000L), 4), 839565); - - // gentest-6629 - assertEqual(perft(new Board(0xc8142153400c00L, 0x10000000010002L, 0x2100000000000220L, 0x8800000000000081L, 0x8L, 0x400000000000040L, 0x52410eebL, 0xadd8142101000000L, true, 0, 0x0L), 4), 701817); - - // gentest-6630 - assertEqual(perft(new Board(0xc8142151400c00L, 0x10000000010002L, 0x2002000008000020L, 0x8800000000000081L, 0x8L, 0x400000000000040L, 0x158410cebL, 0xacda142001000000L, false, 0, 0x0L), 4), 724613); - - // gentest-6631 - assertEqual(perft(new Board(0x8946151400c00L, 0x10000000010002L, 0x2002000008000020L, 0x8800000000000081L, 0x200000L, 0x400000000000040L, 0x158610ce3L, 0xac1a946001000000L, true, 0, 0x0L), 4), 834158); - - // gentest-6632 - assertEqual(perft(new Board(0x8946151440800L, 0x400000010002L, 0x2002000008001000L, 0x8800000000000081L, 0x200000L, 0x400000000000040L, 0x1586518c3L, 0xac0ad46001000000L, false, 0, 0x0L), 4), 1043357); - - // gentest-6633 - assertEqual(perft(new Board(0x946941440800L, 0x400000010002L, 0x2002000008001000L, 0x4800000000000081L, 0x200000L, 0x400000000000040L, 0x21486518c3L, 0x6c02d44801000000L, true, 0, 0x0L), 4), 1123507); - - // gentest-6634 - assertEqual(perft(new Board(0x946941440800L, 0x8000000000010002L, 0x2002000400001000L, 0x4800000000000180L, 0x200000L, 0x400000000000040L, 0x25406519c2L, 0xec02944801000000L, false, 0, 0x0L), 4), 779969); - - // gentest-6635 - assertEqual(perft(new Board(0x847945400800L, 0x8000000000010002L, 0x2002000400001000L, 0x4000080000000180L, 0x200000L, 0x400000000000040L, 0x25446119c2L, 0xe4028c5801000000L, true, 0, 0x0L), 4), 772443); - - // gentest-6636 - assertEqual(perft(new Board(0x847945400800L, 0x8000000000010002L, 0x2002000400001000L, 0x4000088000000100L, 0x200000L, 0x4000000000020L, 0xa544611922L, 0xe0068c5801000000L, false, 0, 0x0L), 4), 776317); - - // gentest-6637 - assertEqual(perft(new Board(0x85605d400800L, 0x8000000000010002L, 0x2002000400001000L, 0x4000088000000100L, 0x200000L, 0x4000000000020L, 0x1a444611922L, 0xe0068c4019000000L, true, 0, 0x0L), 4), 593913); - - // gentest-6638 - assertEqual(perft(new Board(0x5605d400800L, 0x8000000000010002L, 0x2100000400001000L, 0x4000880000000100L, 0x20000000L, 0x4000000000020L, 0x812464411922L, 0xe1040c4019000000L, false, 0, 0x0L), 4), 376987); - - // gentest-6639 - assertEqual(perft(new Board(0x5605d400800L, 0x8000000000010002L, 0x2100000400001000L, 0xc0080000000100L, 0x20000000L, 0x8000000000020L, 0x80012464411922L, 0xa1480c4019000000L, true, 0, 0x0L), 4), 547518); - - // gentest-6640 - assertEqual(perft(new Board(0x25404d500800L, 0x8000000000010002L, 0x2100080000001000L, 0xc0000000000100L, 0x20000000L, 0x8000000000020L, 0x80290064411922L, 0xa148044009100000L, false, 0, 0x0L), 4), 467842); - - // gentest-6641 - assertEqual(perft(new Board(0x25006d400000L, 0x8000000000010002L, 0x2100080000001000L, 0xc0000000000800L, 0x0L, 0x8000000000020L, 0x80290044411822L, 0xa148040029000000L, true, 0, 0x0L), 4), 497134); - - // gentest-6642 - assertEqual(perft(new Board(0x25006d400000L, 0x8000000000010002L, 0x2100080000001000L, 0x40000000000800L, 0x0L, 0x100000000040L, 0x40290044411842L, 0xa100140029000000L, false, 0, 0x0L), 4), 210925); - - // gentest-6643 - assertEqual(perft(new Board(0x25004d400000L, 0x8000000000000402L, 0x140080000001000L, 0x800L, 0x0L, 0x100000000040L, 0x290044001c42L, 0x8140140009400000L, true, 0, 0x0L), 4), 199179); - - // gentest-6644 - assertEqual(perft(new Board(0x250045480000L, 0x8000000000000402L, 0x140080000001000L, 0x8L, 0x0L, 0x100000000020L, 0x29004400142aL, 0x8140140001480000L, false, 0, 0x0L), 4), 204832); - - // gentest-6645 - assertEqual(perft(new Board(0x250045400000L, 0x20000000000402L, 0x140080000000000L, 0x8L, 0x0L, 0x100000001000L, 0x29004400140aL, 0x160140001400000L, true, 0, 0x0L), 4), 325349); - - // gentest-6646 - assertEqual(perft(new Board(0x250045400000L, 0x20000000000402L, 0x8100080000000000L, 0x800L, 0x0L, 0x100000000010L, 0x290044000c12L, 0x8120140001400000L, false, 0, 0x0L), 4), 167281); - - // gentest-6647 - assertEqual(perft(new Board(0x250045400000L, 0x800000002000002L, 0x140080000000000L, 0x800L, 0x0L, 0x100000000010L, 0x290046000812L, 0x940140001400000L, true, 0, 0x0L), 4), 208758); - - // gentest-6648 - assertEqual(perft(new Board(0x250044410000L, 0x800000000000102L, 0x140080000000000L, 0x800L, 0x0L, 0x100000001000L, 0x290044001902L, 0x940140000410000L, false, 0, 0x0L), 4), 158068); - - // gentest-6649 - assertEqual(perft(new Board(0x250044410000L, 0x2000000040002L, 0x8100080000000000L, 0x800L, 0x0L, 0x100000001000L, 0x290044041802L, 0x8102140000410000L, true, 0, 0x0L), 4), 191423); - - // gentest-6650 - assertEqual(perft(new Board(0x210444410000L, 0x2000000040002L, 0x8100000002000000L, 0x8L, 0x0L, 0x100000001000L, 0x21004604100aL, 0x8102100400410000L, false, 0, 0x0L), 4), 153285); - - // gentest-6651 - assertEqual(perft(new Board(0x210046400000L, 0x2000000050000L, 0x8100000000000000L, 0x8L, 0x0L, 0x1000001000L, 0x210044051008L, 0x8102001002400000L, true, 0, 0x0L), 4), 197686); - - // gentest-6652 - assertEqual(perft(new Board(0x2200044420000L, 0x50000L, 0x8100000000000000L, 0x80000L, 0x0L, 0x1000001000L, 0x22000440d1000L, 0x8100001000420000L, false, 0, 0x0L), 4), 96373); - - // gentest-6653 - assertEqual(perft(new Board(0x2204004420000L, 0x50000L, 0x8100000000000000L, 0x80000L, 0x0L, 0x1000001000L, 0x22040040d1000L, 0x8100001000420000L, true, 0, 0x0L), 4), 108370); - - // gentest-6654 - assertEqual(perft(new Board(0x204004420000L, 0x200000001010000L, 0x8100000000000000L, 0x80000L, 0x0L, 0x2000001000L, 0x200204005091000L, 0x8100002000420000L, false, 0, 0x0L), 4), 242909); - - // gentest-6655 - assertEqual(perft(new Board(0x4004420000L, 0x200000001010000L, 0x100200000000000L, 0x8L, 0x0L, 0x100000001000L, 0x200004005011008L, 0x100300000420000L, true, 0, 0x0L), 4), 392965); - - // gentest-6656 - assertEqual(perft(new Board(0x4004420000L, 0x40001010000L, 0x200000200000L, 0x8L, 0x0L, 0x100000000020L, 0x44005010028L, 0x300000620000L, false, 0, 0x0L), 4), 299592); - - // gentest-6657 - assertEqual(perft(new Board(0x4004420000L, 0x10200L, 0x240000000000L, 0x8L, 0x0L, 0x1000000020L, 0x4004010228L, 0x241000420000L, true, 0, 0x0L), 4), 159366); - - // gentest-6658 - assertEqual(perft(new Board(0x4004420000L, 0x600L, 0x8000040000000000L, 0x8L, 0x0L, 0x1000001000L, 0x4004001608L, 0x8000041000420000L, false, 0, 0x0L), 4), 217051); - - // gentest-6659 - assertEqual(perft(new Board(0x4004420000L, 0x600L, 0x40000800000000L, 0x40L, 0x0L, 0x1000001000L, 0x4004001640L, 0x40001800420000L, true, 0, 0x0L), 4), 246385); - - // gentest-6660 - assertEqual(perft(new Board(0x4004420000L, 0x600L, 0x40000800000000L, 0x2L, 0x0L, 0x80000001000L, 0x4004001602L, 0x40080800420000L, false, 0, 0x0L), 4), 344922); - - // gentest-6661 - assertEqual(perft(new Board(0x4004420000L, 0x201L, 0x1800000000L, 0x2L, 0x0L, 0x40000001000L, 0x4004001203L, 0x41800420000L, true, 0, 0x0L), 4), 212958); - - // gentest-6662 - assertEqual(perft(new Board(0x4004420000L, 0x201L, 0x101000000000L, 0x80L, 0x0L, 0x40000001000L, 0x4004001281L, 0x141000420000L, false, 0, 0x0L), 4), 344951); - - // gentest-6663 - assertEqual(perft(new Board(0x4004024000L, 0x80001L, 0x4100000000000L, 0x80L, 0x0L, 0x40000001000L, 0x4004081081L, 0x4140000024000L, true, 0, 0x0L), 4), 540827); - - // gentest-6664 - assertEqual(perft(new Board(0x4004024000L, 0x20000001L, 0x180000000000L, 0x10L, 0x0L, 0x40000001000L, 0x4024001011L, 0x1c0000024000L, false, 0, 0x0L), 4), 344493); - - // gentest-6665 - assertEqual(perft(new Board(0x4400020000L, 0x20000001L, 0x400080000000040L, 0x10L, 0x0L, 0x40000001000L, 0x4420001011L, 0x4000c0000020040L, true, 0, 0x0L), 4), 269830); - - // gentest-6666 - assertEqual(perft(new Board(0x4400020000L, 0x800001L, 0x2080000000040L, 0x10L, 0x0L, 0x40000080000L, 0x4400880011L, 0x20c0000020040L, false, 0, 0x0L), 4), 242437); - - // gentest-6667 - assertEqual(perft(new Board(0x4000020000L, 0x800001L, 0x90400000000L, 0x10L, 0x0L, 0x40000000800L, 0x4000800811L, 0xd0400020000L, true, 0, 0x0L), 4), 352023); - - // gentest-6668 - assertEqual(perft(new Board(0x400000020000L, 0x800001L, 0x90000002000L, 0x40L, 0x0L, 0x40000000800L, 0x400000800841L, 0xd0000022000L, false, 0, 0x0L), 4), 335753); - - // gentest-6669 - assertEqual(perft(new Board(0x400000020000L, 0x20000001L, 0x80000002020L, 0x40L, 0x0L, 0x8000000000800L, 0x400020000841L, 0x8080000022020L, true, 0, 0x0L), 4), 333401); - - // gentest-6670 - assertEqual(perft(new Board(0x400000000000L, 0x20020000L, 0x2000000000002020L, 0x40L, 0x0L, 0x8000000000400L, 0x400020020440L, 0x2008000000002020L, false, 0, 0x0L), 4), 527280); - - // gentest-6671 - assertEqual(perft(new Board(0x400000000000L, 0x20020000L, 0x2000000200002000L, 0x40L, 0x0L, 0x40000000200L, 0x400020020240L, 0x2000040200002000L, true, 0, 0x0L), 4), 514598); - - // gentest-6672 - assertEqual(perft(new Board(0x400000000000L, 0x20020000L, 0x40000200002000L, 0x4000000000L, 0x0L, 0x40000000400L, 0x404020020400L, 0x40040200002000L, false, 0, 0x0L), 4), 496827); - - // gentest-6673 - assertEqual(perft(new Board(0x400000000000L, 0x20020000L, 0x40000280000000L, 0x400000000L, 0x0L, 0x20000000400L, 0x400420020400L, 0x40020280000000L, true, 0, 0x0L), 4), 444113); - - // gentest-6674 - assertEqual(perft(new Board(0x400000000000L, 0x21000L, 0x40000200000010L, 0x400000000L, 0x0L, 0x20000000004L, 0x400400021004L, 0x40020200000010L, false, 0, 0x0L), 4), 339783); - - // gentest-6675 - assertEqual(perft(new Board(0x400000000000L, 0x420000L, 0x8000000040010L, 0x400000000L, 0x0L, 0x20000000004L, 0x400400420004L, 0x8020000040010L, true, 0, 0x0L), 4), 342882); - - // gentest-6676 - assertEqual(perft(new Board(0x40000000000000L, 0x420000L, 0x400000000040010L, 0x200000000L, 0x0L, 0x20000000004L, 0x40000200420004L, 0x400020000040010L, false, 0, 0x0L), 4), 68174); - - // gentest-6677 - assertEqual(perft(new Board(0x0L, 0x400001L, 0x440000000000010L, 0x200000000L, 0x0L, 0x4000000000004L, 0x200400005L, 0x444000000000010L, true, 0, 0x0L), 4), 332064); - - // gentest-6678 - assertEqual(perft(new Board(0x0L, 0x400001L, 0x48000000000010L, 0x8000000000L, 0x0L, 0x4000000000400L, 0x8000400401L, 0x4c000000000010L, false, 0, 0x0L), 4), 460963); - - // gentest-6679 - assertEqual(perft(new Board(0x0L, 0x400001L, 0x40000000000410L, 0x8000000000L, 0x0L, 0x4000000080000L, 0x8000480001L, 0x44000000000410L, true, 0, 0x0L), 4), 85332); - - // gentest-6680 - assertEqual(perft(new Board(0x0L, 0x2000000400L, 0x40000000000010L, 0x8000000000L, 0x0L, 0x2000000080000L, 0xa000080400L, 0x42000000000010L, false, 0, 0x0L), 4), 353720); - - // gentest-6681 - assertEqual(perft(new Board(0x0L, 0x2000000400L, 0x1000000010L, 0x80000000000000L, 0x0L, 0x200000000080000L, 0x80002000080400L, 0x200001000000010L, true, 0, 0x0L), 4), 335988); - - // gentest-6682 - assertEqual(perft(new Board(0x0L, 0x2000200000L, 0x8000000000000010L, 0x80000000000000L, 0x0L, 0x200000000080000L, 0x80002000280000L, 0x8200000000000010L, false, 0, 0x0L), 4), 282395); - - // gentest-6683 - assertEqual(perft(new Board(0x0L, 0x2000200000L, 0x8000000000040000L, 0x8000000000000L, 0x0L, 0x400000000080000L, 0x8002000280000L, 0x8400000000040000L, true, 0, 0x0L), 4), 186705); - - // gentest-6684 - assertEqual(perft(new Board(0x0L, 0x800000200000L, 0x8000000008000000L, 0x800000000L, 0x0L, 0x400000000080000L, 0x800800280000L, 0x8400000008000000L, false, 0, 0x0L), 4), 224617); - - // gentest-6685 - assertEqual(perft(new Board(0x0L, 0x800000200000L, 0x1000000040L, 0x80000000000L, 0x0L, 0x400000000080000L, 0x880000280000L, 0x400001000000040L, true, 0, 0x0L), 4), 258582); - - // gentest-6686 - assertEqual(perft(new Board(0x0L, 0x20000000200000L, 0x1000000040L, 0x80000000000L, 0x0L, 0x4000004000000L, 0x20080004200000L, 0x4001000000040L, false, 0, 0x0L), 4), 347609); - - // gentest-6687 - assertEqual(perft(new Board(0x0L, 0x20000000200000L, 0x1400000000L, 0x80000000000L, 0x0L, 0x200000000020000L, 0x20080000220000L, 0x200001400000000L, true, 0, 0x0L), 4), 443048); - - // gentest-6688 - assertEqual(perft(new Board(0x0L, 0x800000200000L, 0x40000400000000L, 0x100000000000L, 0x0L, 0x200000000020000L, 0x900000220000L, 0x240000400000000L, false, 0, 0x0L), 4), 426220); - - // gentest-6689 - assertEqual(perft(new Board(0x0L, 0x800000200000L, 0x40000400000000L, 0x10L, 0x0L, 0x1000000020000L, 0x800000220010L, 0x41000400000000L, true, 0, 0x0L), 4), 373685); - - // gentest-6690 - assertEqual(perft(new Board(0x0L, 0x800008000000L, 0x40000400000000L, 0x80L, 0x0L, 0x100000000020000L, 0x800008020080L, 0x140000400000000L, false, 0, 0x0L), 4), 214612); - - // gentest-6691 - assertEqual(perft(new Board(0x0L, 0x20000000000000L, 0x200008000000L, 0x80L, 0x0L, 0x100000000020000L, 0x20000000020080L, 0x100200008000000L, true, 0, 0x0L), 4), 224562); - - // gentest-6692 - assertEqual(perft(new Board(0x0L, 0x1000000000L, 0x1200000000000L, 0x800000000000L, 0x0L, 0x100000000020000L, 0x801000020000L, 0x101200000000000L, false, 0, 0x0L), 4), 172263); - - // gentest-6693 - assertEqual(perft(new Board(0x0L, 0x1000000000L, 0x80002000L, 0x800000000000L, 0x0L, 0x100000004000000L, 0x801004000000L, 0x100000080002000L, true, 0, 0x0L), 4), 130815); - - // gentest-6694 - assertEqual(perft(new Board(0x0L, 0x1000000000L, 0x80002000L, 0x20000000000L, 0x0L, 0x200000000080000L, 0x21000080000L, 0x200000080002000L, false, 0, 0x0L), 4), 39459); - - // gentest-6695 - assertEqual(perft(new Board(0x0L, 0x1000000000L, 0x20080000000L, 0x0L, 0x0L, 0x400000000000400L, 0x1000000400L, 0x400020080000000L, true, 0, 0x0L), 4), 85917); - - // gentest-6696 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20080000000L, 0x0L, 0x0L, 0x8000000000800L, 0x800L, 0x8020080000000L, false, 0, 0x0L), 4), 18626); - - // gentest-6697 - assertEqual(perft(new Board(0x0L, 0x0L, 0x4400000000L, 0x0L, 0x0L, 0x8000000000008L, 0x8L, 0x8004400000000L, true, 0, 0x0L), 4), 10474); - - // gentest-6698 - assertEqual(perft(new Board(0x0L, 0x0L, 0x4000100000L, 0x0L, 0x0L, 0x8000000000020L, 0x20L, 0x8004000100000L, false, 0, 0x0L), 4), 8749); - - // gentest-6699 - assertEqual(perft(new Board(0x0L, 0x0L, 0x4020000000L, 0x0L, 0x0L, 0x1000000000001000L, 0x1000L, 0x1000004020000000L, true, 0, 0x0L), 4), 11520); - - // gentest-6700 - assertEqual(perft(new Board(0x0L, 0x0L, 0x4020000000L, 0x0L, 0x0L, 0x2000000010000000L, 0x10000000L, 0x2000004020000000L, false, 0, 0x0L), 4), 11560); - - // gentest-6701 - assertEqual(perft(new Board(0x0L, 0x0L, 0x4004000000000L, 0x0L, 0x0L, 0x2000000800000000L, 0x800000000L, 0x2004004000000000L, true, 0, 0x0L), 4), 16832); - - // gentest-6702 - assertEqual(perft(new Board(0x0L, 0x0L, 0x4004000000000L, 0x0L, 0x0L, 0x4000000000080000L, 0x80000L, 0x4004004000000000L, false, 0, 0x0L), 4), 19123); - - // gentest-6703 - assertEqual(perft(new Board(0x0L, 0x0L, 0x4002000000L, 0x0L, 0x0L, 0x4000000004000000L, 0x4000000L, 0x4000004002000000L, true, 0, 0x0L), 4), 15655); - - // gentest-6704 - assertEqual(perft(new Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x0L, 0x4000000002000000L, 0x2000000L, 0x4000000020000000L, false, 0, 0x0L), 4), 11117); - - // gentest-6705 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6706 - assertEqual(perft(new Board(0xfe00015000af00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x5000afffL, 0xfffe000100000000L, false, 0, 0x8100000000000081L), 4), 407898); - - // gentest-6707 - assertEqual(perft(new Board(0xbe40015000af00L, 0x200800000800002L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x5080afbfL, 0xbfbec00100000000L, true, 0, 0x8100000000000081L), 4), 381806); - - // gentest-6708 - assertEqual(perft(new Board(0xae50015800a700L, 0x200800000800002L, 0x2400000000004004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x5880e79fL, 0xbfaed00100000000L, false, 0, 0x8100000000000081L), 4), 1046681); - - // gentest-6709 - assertEqual(perft(new Board(0xae50015c00a300L, 0x200800000800002L, 0x400001000004004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x5c80e39fL, 0x9faed01100000000L, true, 0, 0x8100000000000081L), 4), 1367780); - - // gentest-6710 - assertEqual(perft(new Board(0xae50015c00a300L, 0x200800000800002L, 0x440000000004004L, 0x8100000000000011L, 0x800000000000008L, 0x1000000000000800L, 0x5c80eb1fL, 0x9feed00100000000L, false, 0, 0x8100000000000000L), 4), 1064479); - - // gentest-6711 - assertEqual(perft(new Board(0xaa10455c208300L, 0x200800000800002L, 0x440000000004004L, 0x8100000000000011L, 0x800000000000008L, 0x1000000000000800L, 0x5ca0cb1fL, 0x9fea904500000000L, true, 0, 0x8100000000000000L), 4), 817512); - - // gentest-6712 - assertEqual(perft(new Board(0xaa10554c208300L, 0x200002000800002L, 0x440000000004004L, 0x8100000000000041L, 0x800000000000008L, 0x1000000000000800L, 0x104ca0cb4fL, 0x9fea106500000000L, false, 0, 0x8100000000000000L), 4), 961184); - - // gentest-6713 - assertEqual(perft(new Board(0xaa10650c208300L, 0x1000800002L, 0x440000000004004L, 0x8100000000000041L, 0x800000000000008L, 0x1000000000000800L, 0x200ca0cb4fL, 0x9dea105500000000L, true, 0, 0x8100000000000000L), 4), 981359); - - // gentest-6714 - assertEqual(perft(new Board(0xaa106508208300L, 0x1000800002L, 0x440000000004004L, 0x8100000000000011L, 0x800000000000008L, 0x1000000000000800L, 0x2400a0cb1fL, 0x9dea105108000000L, false, 0, 0x8100000000000000L), 4), 855714); - - // gentest-6715 - assertEqual(perft(new Board(0xaa106508208300L, 0x40000800002L, 0x440000000004004L, 0x8000010000000011L, 0x800000000000008L, 0x1000000000001000L, 0x2400a0d31fL, 0x9cea154108000000L, true, 0, 0x8000000000000000L), 4), 1201831); - - // gentest-6716 - assertEqual(perft(new Board(0xaa007508208300L, 0x40000840000L, 0x440000000004004L, 0x8000010000000011L, 0x800000000020000L, 0x1000000000001000L, 0x2400a6d315L, 0x9cea055108000000L, false, 0, 0x8000000000000000L), 4), 1545229); - - // gentest-6717 - assertEqual(perft(new Board(0xaa007508208300L, 0x40000840000L, 0x400800000004004L, 0x2000010000000011L, 0x800000200000000L, 0x1000000000001000L, 0x2600a4d315L, 0x3caa855108000000L, true, 0, 0x0L), 4), 1001678); - - // gentest-6718 - assertEqual(perft(new Board(0xaa003509208200L, 0x40000840000L, 0x400804000004000L, 0x2000010000000011L, 0x200200000000L, 0x1000000000001000L, 0x6601a4d211L, 0x34aaa51108000000L, false, 0, 0x0L), 4), 1557583); - - // gentest-6719 - assertEqual(perft(new Board(0xaa002519208200L, 0x40020040000L, 0x400804000004000L, 0x2000010000000011L, 0x80200000000L, 0x1000000000001000L, 0x662124d211L, 0x34aa8d0118000000L, true, 0, 0x0L), 4), 2000986); - - // gentest-6720 - assertEqual(perft(new Board(0xaa002509308200L, 0x40020000800L, 0x400804000004000L, 0x2000010000000011L, 0x80200000000L, 0x1000000000001000L, 0x662120da11L, 0x34aa8d0108100000L, false, 0, 0x0L), 4), 1530476); - - // gentest-6721 - assertEqual(perft(new Board(0xaa002509308200L, 0x40020000800L, 0x400004000004000L, 0x2000010000000005L, 0x1200000000L, 0x1000000000001000L, 0x262120da05L, 0x34aa055108100000L, true, 0, 0x0L), 4), 2559865); - - // gentest-6722 - assertEqual(perft(new Board(0xaa002409308200L, 0x440000000800L, 0x400004000004000L, 0x2001000000000005L, 0x1100000000L, 0x1000000000001000L, 0x40250120da05L, 0x34ab045008100000L, false, 0, 0x0L), 4), 2641284); - - // gentest-6723 - assertEqual(perft(new Board(0xa800260b308000L, 0x440000000800L, 0x410000000004000L, 0x2001000000000005L, 0x1100000000L, 0x1000000000001000L, 0x40250320d805L, 0x34b9041208100000L, true, 41, 0x0L), 4), 2597219); - - // gentest-6724 - assertEqual(perft(new Board(0xa800260a300000L, 0x440000000800L, 0x410000000004000L, 0x2001000000000011L, 0x100008000L, 0x1000000000001000L, 0x402702205811L, 0x34b9040008108000L, false, 0, 0x0L), 4), 2161646); - - // gentest-6725 - assertEqual(perft(new Board(0xa800260a200800L, 0x200400000000000L, 0x410000000004000L, 0x2001000000000005L, 0x100008000L, 0x1000000000001000L, 0x402702205005L, 0x36b9000008008800L, true, 0, 0x0L), 4), 1960924); - - // gentest-6726 - assertEqual(perft(new Board(0xa008260a200800L, 0x200400000000000L, 0x410000000004000L, 0x2001000001000004L, 0x100008000L, 0x1000000000001000L, 0x402703205004L, 0x36b1080008008800L, false, 0, 0x0L), 4), 1679147); - - // gentest-6727 - assertEqual(perft(new Board(0x20882602280800L, 0x200400000000000L, 0x410000000004000L, 0x2001000001000004L, 0x4000000008000L, 0x1000000000001000L, 0x4402603205004L, 0x3631880000088800L, true, 0, 0x0L), 4), 304560); - - // gentest-6728 - assertEqual(perft(new Board(0x20882602280800L, 0x200001000000000L, 0x410000000004000L, 0x4001000001000004L, 0x4000000008000L, 0x1000000000002000L, 0x4003603206004L, 0x5631880000088800L, false, 0, 0x0L), 4), 2333106); - - // gentest-6729 - assertEqual(perft(new Board(0x20882602280800L, 0x200001000000000L, 0x10010000004000L, 0x1000000410004L, 0x4000000008000L, 0x1000000000002000L, 0x4003602216004L, 0x1231890000488800L, true, 0, 0x0L), 4), 1894958); - - // gentest-6730 - assertEqual(perft(new Board(0x20882602280000L, 0x200001000000000L, 0x10010000004000L, 0x1000100440000L, 0x4000000008008L, 0x1000000000002000L, 0x4003702246000L, 0x1231890000488008L, false, 0, 0x0L), 4), 1367973); - - // gentest-6731 - assertEqual(perft(new Board(0x882602280000L, 0x220000000000000L, 0x10010000004000L, 0x1000100440000L, 0x4000000001080L, 0x1000000000002000L, 0x24002702246000L, 0x1211890000481080L, true, 0, 0x0L), 4), 48964); - - // gentest-6732 - assertEqual(perft(new Board(0x882202280000L, 0x220000000000000L, 0x800010000004000L, 0x1000100040000L, 0x4000000001080L, 0x1000000000400000L, 0x24082302644000L, 0x1a01810000081080L, false, 0, 0x0L), 4), 1457248); - - // gentest-6733 - assertEqual(perft(new Board(0x882202280000L, 0x220000000000000L, 0x800010000000020L, 0x1000100040000L, 0x4200000000080L, 0x1000000000400000L, 0x24082302640020L, 0x1a01a10000080080L, true, 0, 0x0L), 4), 1243087); - - // gentest-6734 - assertEqual(perft(new Board(0x9a002280000L, 0x220000000000000L, 0x20L, 0x1000100040000L, 0x800200000000080L, 0x1000000000400000L, 0x820092102640020L, 0x1201208000080080L, false, 0, 0x0L), 4), 49028); - - // gentest-6735 - assertEqual(perft(new Board(0x9a002280000L, 0x220000000000000L, 0x20L, 0x1000100040000L, 0x400000000000080L, 0x1000000020000000L, 0x20092122240020L, 0x1601008000080080L, true, 0, 0x0L), 4), 997266); - - // gentest-6736 - assertEqual(perft(new Board(0x8a002280000L, 0x8200000000000000L, 0x20L, 0x10100040000L, 0x400000000000080L, 0x1000001000000000L, 0x8000083102240020L, 0x1600018000080080L, false, 0, 0x0L), 4), 580826); - - // gentest-6737 - assertEqual(perft(new Board(0x8a002280000L, 0x8200000000000000L, 0x1000L, 0x40100040000L, 0x400000000000080L, 0x800001000000000L, 0x8000083102241000L, 0xe00048000080080L, true, 0, 0x0L), 4), 842437); - - // gentest-6738 - assertEqual(perft(new Board(0x8a002280000L, 0x220000000000000L, 0x1000L, 0x40104000000L, 0x400000000000020L, 0x800001000000000L, 0x20083106201000L, 0xe00048000080020L, false, 0, 0x0L), 4), 62626); - - // gentest-6739 - assertEqual(perft(new Board(0x8a002280000L, 0x220000000000000L, 0x1000L, 0x1040004000000L, 0x400000000000004L, 0x1000001000000000L, 0x21083006201000L, 0x1600048000080004L, true, 0, 0x0L), 4), 1122603); - - // gentest-6740 - assertEqual(perft(new Board(0x8a022080000L, 0x220000000000000L, 0x1000L, 0x1040004000000L, 0x800000000000004L, 0x1000000800000000L, 0x21082826001000L, 0x1a00048000080004L, false, 0, 0x0L), 4), 1095850); - - // gentest-6741 - assertEqual(perft(new Board(0x8a022000000L, 0x220000000000000L, 0x10L, 0x40004000100L, 0x800000000000004L, 0x1000000800000000L, 0x20082826000100L, 0x1a00048000000014L, true, 0, 0x0L), 4), 1090847); - - // gentest-6742 - assertEqual(perft(new Board(0x8a002000000L, 0x200004000000000L, 0x10L, 0x40004000100L, 0x800000020000000L, 0x1000100000000000L, 0x186006000100L, 0x1a00048020000010L, false, 0, 0x0L), 4), 845793); - - // gentest-6743 - assertEqual(perft(new Board(0x8a002000000L, 0x200004000000000L, 0x10L, 0x40004000400L, 0x4000000000800L, 0x1000100000000000L, 0x186006000400L, 0x1204048000000810L, true, 0, 0x0L), 4), 723161); - - // gentest-6744 - assertEqual(perft(new Board(0x8a002000000L, 0x220000000000000L, 0x10L, 0x40000000400L, 0x4000000000000L, 0x1000100000000000L, 0x20182002000400L, 0x1204048000000010L, false, 0, 0x0L), 4), 223018); - - // gentest-6745 - assertEqual(perft(new Board(0x8a002000000L, 0x200000000000000L, 0x10L, 0x40000000400L, 0x8000000000000L, 0x20000800000000L, 0x82802000400L, 0x228048000000010L, true, 0, 0x0L), 4), 248550); - - // gentest-6746 - assertEqual(perft(new Board(0x8a002000000L, 0x200000000000000L, 0x10L, 0x40000002000L, 0x8000000000000L, 0x2000000800000000L, 0x82802002000L, 0x2208048000000010L, false, 0, 0x0L), 4), 195662); - - // gentest-6747 - assertEqual(perft(new Board(0x8a000000000L, 0x200000000000000L, 0x2000000L, 0x40000000200L, 0x1000000000000L, 0x2000000800000000L, 0x82800000200L, 0x2201048002000000L, true, 0, 0x0L), 4), 352764); - - // gentest-6748 - assertEqual(perft(new Board(0xa000000000L, 0x200000000000000L, 0x2000000L, 0x80000020000L, 0x1000000000000L, 0x2000001000000000L, 0x3000020000L, 0x2201088002000000L, false, 0, 0x0L), 4), 292460); - - // gentest-6749 - assertEqual(perft(new Board(0xa000000000L, 0x200000000000000L, 0x10000L, 0x80000200000L, 0x8000000000000L, 0x2000001000000000L, 0x3000200000L, 0x2208088000010000L, true, 0, 0x0L), 4), 223360); - - // gentest-6750 - assertEqual(perft(new Board(0xa000000000L, 0x200000000000000L, 0x0L, 0x80000800000L, 0x8000000000000L, 0x20001000000000L, 0x3000800000L, 0x228088000000000L, false, 0, 0x0L), 4), 135202); - - // gentest-6751 - assertEqual(perft(new Board(0xa000000000L, 0x40000000000L, 0x0L, 0x8008000L, 0x8000000000000L, 0x20001000000000L, 0x3000008000L, 0x28048008000000L, true, 0, 0x0L), 4), 0); - - // gentest-6752 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - - // gentest-6753 - assertEqual(perft(new Board(0xdf200010806f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x10806fffL, 0xffdf200000000000L, false, 0, 0x8100000000000081L), 4), 334578); - - // gentest-6754 - assertEqual(perft(new Board(0xdf200010806f00L, 0x4200000000000042L, 0x2400000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x14806fdfL, 0xffdf200000000000L, true, 0, 0x81L), 4), 373672); - - // gentest-6755 - assertEqual(perft(new Board(0x9f204010a04f00L, 0x4200000000001002L, 0x2400000004000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x14a05f9fL, 0xff9f204000000000L, false, 0, 0x81L), 4), 416595); - - // gentest-6756 - assertEqual(perft(new Board(0x9b046010a04f00L, 0x4200000000001002L, 0x2400000800000004L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0x810a05f9fL, 0xff9b046000000000L, true, 0, 0x81L), 4), 532304); - - // gentest-6757 - assertEqual(perft(new Board(0x9b046011a04e00L, 0x200200000001002L, 0x2400000800000004L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x811a0de1fL, 0xbf9b246000000000L, false, 0, 0x1L), 4), 666910); - - // gentest-6758 - assertEqual(perft(new Board(0x9b042011a04e00L, 0x200200000001002L, 0x2400100000000004L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x10001180de1fL, 0xbf9b242000200000L, true, 0, 0x1L), 4), 700225); - - // gentest-6759 - assertEqual(perft(new Board(0x9b042011844a00L, 0x200200000001002L, 0x2400000004000004L, 0x8100000000008001L, 0x800000000000008L, 0x1000000000000010L, 0x15849a1fL, 0xbf9b242000004000L, false, 0, 0x1L), 4), 642878); - - // gentest-6760 - assertEqual(perft(new Board(0x9b040011844a00L, 0x200008000001002L, 0x2400000004000004L, 0x8100000000008001L, 0x800000000000400L, 0x1000000000000010L, 0x5849e17L, 0xbf9b048010004000L, true, 0, 0x1L), 4), 605586); - - // gentest-6761 - assertEqual(perft(new Board(0x9b0400018c4a00L, 0x200008000001002L, 0x2400000000000004L, 0x8100000000008001L, 0x800000000020000L, 0x1000000000000010L, 0x1869a17L, 0xbf9b048000084000L, false, 0, 0x1L), 4), 447638); - - // gentest-6762 - assertEqual(perft(new Board(0x9b0400010c0a00L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, 0x800000000020000L, 0x1000000000002000L, 0x106ba07L, 0xbf9b048000880000L, true, 0, 0x0L), 4), 115747); - - // gentest-6763 - assertEqual(perft(new Board(0x9b0400010c0a00L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, 0x100020000L, 0x1000000000004000L, 0x106da07L, 0xb79b048100880000L, false, 0, 0x0L), 4), 752154); - - // gentest-6764 - assertEqual(perft(new Board(0x9b0400010c0a00L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, 0x200010000L, 0x800000000004000L, 0x105da07L, 0xaf9b048200880000L, true, 0, 0x0L), 4), 547406); - - // gentest-6765 - assertEqual(perft(new Board(0x8b1400010e0800L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, 0x200000100L, 0x800000000004000L, 0x106d907L, 0xaf8b148200880000L, false, 0, 0x0L), 4), 573157); - - // gentest-6766 - assertEqual(perft(new Board(0x8b1400010e0800L, 0x200008000811000L, 0x410000000000004L, 0x8100000000008001L, 0x100000100L, 0x800000000004000L, 0x107d905L, 0x8f9b148100880000L, true, 0, 0x0L), 4), 756915); - - // gentest-6767 - assertEqual(perft(new Board(0x8b1400010e0800L, 0x200008000c10000L, 0x410000000000004L, 0x8100000000008001L, 0x4000000002L, 0x800000000004000L, 0x147c807L, 0x8f9b14c000880000L, false, 0, 0x0L), 4), 716538); - - // gentest-6768 - assertEqual(perft(new Board(0x891402010e0800L, 0x200008000c10000L, 0x410000000000004L, 0x8100000000008100L, 0x400000000002L, 0x800000000004000L, 0x147c906L, 0x8f99548200880000L, true, 0, 0x0L), 4), 838025); - - // gentest-6769 - assertEqual(perft(new Board(0x891400050a0800L, 0x200008200c00000L, 0x12000000000004L, 0x8100000000008100L, 0x400000000002L, 0x800000000004000L, 0x20542c906L, 0x8b9b548000880000L, false, 0, 0x0L), 4), 995729); - - // gentest-6770 - assertEqual(perft(new Board(0x891404010a0800L, 0x200008200800000L, 0x12000000000004L, 0x2100000000008100L, 0x400002L, 0x800000000004000L, 0x60102c906L, 0x2b9b148000c80000L, true, 0, 0x0L), 4), 46360); - - // gentest-6771 - assertEqual(perft(new Board(0x891404010a0800L, 0x200008200800000L, 0x410000000000004L, 0x2100000000008200L, 0x400002L, 0x800000000000080L, 0x601028a86L, 0x2f99148000c80000L, false, 0, 0x0L), 4), 653072); - - // gentest-6772 - assertEqual(perft(new Board(0x891404010a0800L, 0x200008000840000L, 0x400080000000004L, 0x2100000000008200L, 0x40000002L, 0x800000000000080L, 0x401068a86L, 0x2f891c8040880000L, true, 0, 0x0L), 4), 837906); - - // gentest-6773 - assertEqual(perft(new Board(0x88140503080800L, 0x200008000840000L, 0x400080000000004L, 0x2100000000008200L, 0x40000100L, 0x800000000000080L, 0x403048b84L, 0x2f881c8140880000L, false, 0, 0x0L), 4), 1103806); - - // gentest-6774 - assertEqual(perft(new Board(0x88040103080800L, 0x200008000840000L, 0x400000400000004L, 0x2100000000008200L, 0x100000400000L, 0x800000000000080L, 0x100003048a84L, 0x2f88048500c80000L, true, 0, 0x0L), 4), 2694444); - - // gentest-6775 - assertEqual(perft(new Board(0x88040103080800L, 0x200008000840000L, 0x400000400000004L, 0x2100000000008200L, 0x4000100000000000L, 0x800000000000080L, 0x100003048a84L, 0x6f88048500880000L, false, 0, 0x0L), 4), 2107257); - - // gentest-6776 - assertEqual(perft(new Board(0x88040103080800L, 0x200000040840000L, 0x400000400000004L, 0x2100000000008200L, 0x4000001000000000L, 0x800000000000080L, 0x1003048a84L, 0x6f88040540880000L, true, 0, 0x0L), 4), 2335481); - - // gentest-6777 - assertEqual(perft(new Board(0x88040103080800L, 0x200000840800000L, 0x400000400000004L, 0x2100000000008200L, 0x400010000000L, 0x800000000000080L, 0x813008a84L, 0x2f88440540880000L, false, 0, 0x0L), 4), 2437669); - - // gentest-6778 - assertEqual(perft(new Board(0x88040103080800L, 0x200000040840000L, 0x2000400000004L, 0x1100000000008200L, 0x400010000000L, 0x800000000000080L, 0x13048a84L, 0x1b8a440540880000L, true, 0, 0x0L), 4), 2622716); - - // gentest-6779 - assertEqual(perft(new Board(0x80040903080800L, 0x200000040840000L, 0x2000400000004L, 0x1100000000008200L, 0x401000000000L, 0x800000000004000L, 0x100304ca04L, 0x1b82440d40880000L, false, 0, 0x0L), 4), 2181893); - - // gentest-6780 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100000000008200L, 0x401000000000L, 0x800000000004000L, 0x140104ca04L, 0x8b82440940080040L, true, 0, 0x0L), 4), 1430784); - - // gentest-6781 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100000000008200L, 0x1004000000000000L, 0x800000000000080L, 0x4000401048a84L, 0x9b82040940080040L, false, 0, 0x0L), 4), 18254); - - // gentest-6782 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100020000008000L, 0x100000L, 0x4000000000080L, 0x20401048884L, 0x8386040940180040L, true, 0, 0x0L), 4), 760941); - - // gentest-6783 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100000000008000L, 0x100000L, 0x8000000000080L, 0x100000401048884L, 0x828a040940180040L, false, 0, 0x0L), 4), 688447); - - // gentest-6784 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000040040040L, 0x100000000000004L, 0x8000000000800000L, 0x4000000000L, 0x8000000000080L, 0x401840884L, 0x8388044940080040L, true, 0, 0x0L), 4), 457705); - - // gentest-6785 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000000048040L, 0x100000000000004L, 0xa000000000000000L, 0x4000000000L, 0x8000000000080L, 0x2000000401040884L, 0x8388044900088040L, false, 0, 0x0L), 4), 430517); - - // gentest-6786 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000000008042L, 0x100000000000004L, 0xa000000000000000L, 0x20L, 0x8000000000080L, 0x2000000401000886L, 0x8388040900088060L, true, 0, 0x0L), 4), 183045); - - // gentest-6787 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8400000000000000L, 0x2000000000L, 0x8000000000040L, 0x400000401000846L, 0x8388042900088000L, false, 0, 0x0L), 4), 123602); - - // gentest-6788 - assertEqual(perft(new Board(0x80040d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8400000000000000L, 0x400000L, 0x8000000000080L, 0x400000401000886L, 0x8388040900488000L, true, 0, 0x0L), 4), 123777); - - // gentest-6789 - assertEqual(perft(new Board(0x80000d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8000010000000000L, 0x80000000000L, 0x8000000000080L, 0x10401000886L, 0x8388080900088000L, false, 0, 0x0L), 4), 213237); - - // gentest-6790 - assertEqual(perft(new Board(0x80000d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8000010000000000L, 0x100000000000L, 0x400000000004000L, 0x10401004806L, 0x8780100900088000L, true, 0, 0x0L), 4), 286272); - - // gentest-6791 - assertEqual(perft(new Board(0x80000d01080800L, 0x40000008400L, 0x100000000000004L, 0x8000010000000000L, 0x100000000000L, 0x400000000004000L, 0x10401004c04L, 0x8580140900088000L, false, 0, 0x0L), 4), 378186); - - // gentest-6792 - assertEqual(perft(new Board(0x80000c01080800L, 0x40000008400L, 0x100000000000004L, 0x1000000100000000L, 0x100000000000L, 0x400000000004000L, 0x501004c04L, 0x1580140800088000L, true, 0, 0x0L), 4), 385117); - - // gentest-6793 - assertEqual(perft(new Board(0x80000c01080800L, 0x40000008010L, 0x100000000000004L, 0x2000000100000000L, 0x100000000000L, 0x400000000400000L, 0x501400814L, 0x2580140800088000L, false, 0, 0x0L), 4), 280857); - - // gentest-6794 - assertEqual(perft(new Board(0x80000c01080800L, 0x200000000008400L, 0x100000000000004L, 0x2000000100000000L, 0x1000000000L, 0x400000000400000L, 0x501400c04L, 0x2780001800088000L, true, 0, 0x0L), 4), 82158); - - // gentest-6795 - assertEqual(perft(new Board(0x80000c01080800L, 0x200000000008400L, 0x100000000000004L, 0x120000000L, 0x1000000000L, 0x400000000800000L, 0x501800c04L, 0x780001820088000L, false, 0, 0x0L), 4), 430258); - - // gentest-6796 - assertEqual(perft(new Board(0x80000c01080800L, 0x8000000018000L, 0x100000000000004L, 0x108000000L, 0x1000000000L, 0x400000000800000L, 0x501810804L, 0x588001808088000L, true, 0, 0x0L), 4), 182829); - - // gentest-6797 - assertEqual(perft(new Board(0x80040801080800L, 0x8000004008000L, 0x100000000000004L, 0x108000000L, 0x80000000000L, 0x400000000800000L, 0x40105800804L, 0x588080808088000L, false, 0, 0x0L), 4), 280044); - - // gentest-6798 - assertEqual(perft(new Board(0x80040801080800L, 0x404008000L, 0x100000000000004L, 0x208000000L, 0x800000000000000L, 0x400000000800000L, 0x40205800804L, 0xd80000c08088000L, true, 0, 0x0L), 4), 402262); - - // gentest-6799 - assertEqual(perft(new Board(0x80040900080800L, 0x444000000L, 0x100000000000004L, 0x200000008000000L, 0x800000000000000L, 0x400000000800000L, 0x200040104800804L, 0xd80000c48080000L, false, 0, 0x0L), 4), 17985); - - // gentest-6800 - assertEqual(perft(new Board(0x80040900080800L, 0x8000044000000L, 0x100000000000200L, 0x8000000L, 0x800000000000000L, 0x200000000800000L, 0x40104800a00L, 0xb88000848080000L, true, 0, 0x0L), 4), 238998); - } - - public static void batch17() { - // gentest-6801 - assertEqual(perft(new Board(0x80040900080800L, 0x8800004000000L, 0x100000000000040L, 0x0L, 0x800000000000000L, 0x200000000800000L, 0x40104800840L, 0xb88800800080000L, false, 0, 0x0L), 4), 204871); - - // gentest-6802 - assertEqual(perft(new Board(0x80000900080800L, 0x28000000100000L, 0x40000000040L, 0x0L, 0x800000000000000L, 0x200000000800000L, 0x100900840L, 0xaa8040800080000L, true, 0, 0x0L), 4), 235185); - - // gentest-6803 - assertEqual(perft(new Board(0x80000900080800L, 0x20001000100000L, 0x40000000040L, 0x0L, 0x800000000000000L, 0x200000000400000L, 0x100500840L, 0xaa0041800080000L, false, 0, 0x0L), 4), 301797); - - // gentest-6804 - assertEqual(perft(new Board(0x80000900080800L, 0x20003000000000L, 0x40000000040L, 0x0L, 0x20000000000L, 0x100000000400000L, 0x2100400840L, 0x1a0061800080000L, true, 0, 0x0L), 4), 427832); - - // gentest-6805 - assertEqual(perft(new Board(0x80000900080800L, 0x4020000040000000L, 0x40000000040L, 0x0L, 0x20000000000L, 0x100000000400000L, 0x4000000100400840L, 0x1a0060840080000L, false, 0, 0x0L), 4), 305985); - - // gentest-6806 - assertEqual(perft(new Board(0x80000900080000L, 0x4020000040000000L, 0x40000000040L, 0x0L, 0x800L, 0x100000000800000L, 0x4000000100800040L, 0x1a0040840080800L, true, 0, 0x0L), 4), 264268); - - // gentest-6807 - assertEqual(perft(new Board(0x80010800080000L, 0x4020000040000000L, 0x40000008000L, 0x0L, 0x200L, 0x100000000800000L, 0x4000010000808000L, 0x1a0040840080200L, false, 0, 0x0L), 4), 302419); - - // gentest-6808 - assertEqual(perft(new Board(0x80010800080000L, 0x4020000040000000L, 0x4040000000000L, 0x0L, 0x400000000L, 0x100000000800000L, 0x4004010000800000L, 0x1a0040c40080000L, true, 0, 0x0L), 4), 370361); - - // gentest-6809 - assertEqual(perft(new Board(0x80010800080000L, 0x4020000000008000L, 0x10040000000000L, 0x0L, 0x400000000L, 0x100000000800000L, 0x4010010000800000L, 0x1a0040c00088000L, false, 0, 0x0L), 4), 226282); - - // gentest-6810 - assertEqual(perft(new Board(0x80010800080000L, 0x4020000000000020L, 0x40080000000L, 0x0L, 0x80000000000L, 0x100000000800000L, 0x4000010080800000L, 0x1a00c0800080020L, true, 0, 0x0L), 4), 199924); - - // gentest-6811 - assertEqual(perft(new Board(0x80010800080000L, 0x20002000100000L, 0x40080000000L, 0x0L, 0x80000000000L, 0x100000000800000L, 0x12080800000L, 0x1a00c0800180000L, false, 0, 0x0L), 4), 304764); - - // gentest-6812 - assertEqual(perft(new Board(0x80010800080000L, 0x20002000000020L, 0x40000002000L, 0x0L, 0x100000000000L, 0x100000000800000L, 0x12000802000L, 0x1a0140800080020L, true, 0, 0x0L), 4), 211282); - - // gentest-6813 - assertEqual(perft(new Board(0x80010800080000L, 0x20002000000020L, 0xc0000000000L, 0x0L, 0x1000L, 0x100000000800000L, 0x92000800000L, 0x1a0040800081020L, false, 0, 0x0L), 4), 346120); - - // gentest-6814 - assertEqual(perft(new Board(0x80010800080000L, 0x20002000000020L, 0x2000000001000000L, 0x0L, 0x200L, 0x100000000800000L, 0x2000012000800000L, 0x1a0000801080220L, true, 0, 0x0L), 4), 497488); - - // gentest-6815 - assertEqual(perft(new Board(0x80010800080000L, 0x20002000000800L, 0x80001000000L, 0x0L, 0x200L, 0x100000000004000L, 0x92000004000L, 0x1a0000801080a00L, false, 0, 0x0L), 4), 640260); - - // gentest-6816 - assertEqual(perft(new Board(0x80010800080000L, 0x40008000800L, 0x80001000000L, 0x0L, 0x200L, 0x100000000004000L, 0x90008004000L, 0x180040801080a00L, true, 0, 0x0L), 4), 653712); - - // gentest-6817 - assertEqual(perft(new Board(0x81000800080000L, 0x40000001800L, 0x80001000000L, 0x0L, 0x2000000000000L, 0x100000000004000L, 0x1080000005000L, 0x182040801080800L, false, 0, 0x0L), 4), 603657); - - // gentest-6818 - assertEqual(perft(new Board(0x81000800080000L, 0x40000000060L, 0x80000020000L, 0x0L, 0x2000000000000L, 0x100000000004000L, 0x1080000004040L, 0x1820408000a0020L, true, 0, 0x0L), 4), 351979); - - // gentest-6819 - assertEqual(perft(new Board(0x1800800080000L, 0x40000000060L, 0x80020000L, 0x0L, 0x2000000000000L, 0x100000000004000L, 0x1000080004040L, 0x1028408000a0020L, false, 0, 0x0L), 4), 231820); - - // gentest-6820 - assertEqual(perft(new Board(0x1800800080000L, 0x40000000060L, 0x800000001000000L, 0x0L, 0x2000000000000L, 0x100000000004000L, 0x801000000004040L, 0x102840801080020L, true, 0, 0x0L), 4), 256412); - - // gentest-6821 - assertEqual(perft(new Board(0x1800800080000L, 0x40000001020L, 0x800000000000008L, 0x0L, 0x2000000000000L, 0x100000000200000L, 0x801000000201000L, 0x102840800080028L, false, 0, 0x0L), 4), 162012); - - // gentest-6822 - assertEqual(perft(new Board(0x1800800080000L, 0x40000009000L, 0x800000000000008L, 0x0L, 0x20000L, 0x100000040000000L, 0x801000040001000L, 0x1008408000a8008L, true, 0, 0x0L), 4), 88040); - - // gentest-6823 - assertEqual(perft(new Board(0x800800080000L, 0x1000000009000L, 0x800000000000008L, 0x0L, 0x20000L, 0x100000000004000L, 0x800000000005000L, 0x1018008000a8008L, false, 0, 0x0L), 4), 237258); - - // gentest-6824 - assertEqual(perft(new Board(0x800800080000L, 0x400000008008000L, 0x800000000000008L, 0x0L, 0x20000000000L, 0x100000000004000L, 0x800000008004000L, 0x500820800088008L, true, 0, 0x0L), 4), 418451); - - // gentest-6825 - assertEqual(perft(new Board(0x800800080000L, 0x400000000008400L, 0x800000000000008L, 0x0L, 0x0L, 0x100000000000040L, 0x800000000000440L, 0x500800800088008L, false, 0, 0x0L), 4), 86948); - - // gentest-6826 - assertEqual(perft(new Board(0x800800080000L, 0x20000008001L, 0x800000001000000L, 0x0L, 0x0L, 0x100000000000040L, 0x800000000000041L, 0x100820801088000L, true, 0, 0x0L), 4), 56944); - - // gentest-6827 - assertEqual(perft(new Board(0x800800080000L, 0x20000008001L, 0x44000000000L, 0x0L, 0x0L, 0x100000000002000L, 0x4000002001L, 0x100860800088000L, false, 0, 0x0L), 4), 80434); - - // gentest-6828 - assertEqual(perft(new Board(0x4800080000L, 0x20000008400L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000002000L, 0x2400L, 0x1100024800088000L, true, 0, 0x0L), 4), 43234); - - // gentest-6829 - assertEqual(perft(new Board(0x4800080000L, 0x4018000L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000000010L, 0x10010L, 0x1100004804088000L, false, 0, 0x0L), 4), 21675); - - // gentest-6830 - assertEqual(perft(new Board(0x4800080000L, 0x20000210000L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000000800L, 0x10800L, 0x1100024800280000L, true, 0, 0x0L), 4), 18764); - - // gentest-6831 - assertEqual(perft(new Board(0x4800080000L, 0x204200000L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000000008L, 0x200000008L, 0x1100004804280000L, false, 0, 0x0L), 4), 26987); - - // gentest-6832 - assertEqual(perft(new Board(0x4800080000L, 0x4001004000000L, 0x1000000000000000L, 0x0L, 0x0L, 0x200000000000008L, 0x4000000000008L, 0x1200005804080000L, true, 0, 0x0L), 4), 32599); - - // gentest-6833 - assertEqual(perft(new Board(0x4800080000L, 0x1004010000L, 0x400000000000L, 0x0L, 0x0L, 0x200000000000008L, 0x10008L, 0x200405804080000L, false, 0, 0x0L), 4), 25483); - - // gentest-6834 - assertEqual(perft(new Board(0x4800080000L, 0x1000110000L, 0x20000000000000L, 0x0L, 0x0L, 0x200000000000800L, 0x10800L, 0x220005800180000L, true, 0, 0x0L), 4), 35919); - - // gentest-6835 - assertEqual(perft(new Board(0x4800000000L, 0x40000010000L, 0x20000000000000L, 0x0L, 0x0L, 0x200000000080000L, 0x90000L, 0x220044800000000L, false, 0, 0x0L), 4), 28545); - - // gentest-6836 - assertEqual(perft(new Board(0x4800000000L, 0x800000000000002L, 0x20000000000000L, 0x0L, 0x0L, 0x4000000080000L, 0x80002L, 0x824004800000000L, true, 0, 0x0L), 4), 25573); - - // gentest-6837 - assertEqual(perft(new Board(0x4800000000L, 0x800000000000800L, 0x20000000000000L, 0x0L, 0x0L, 0x200000008000000L, 0x8000800L, 0xa20004800000000L, false, 0, 0x0L), 4), 22668); - - // gentest-6838 - assertEqual(perft(new Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, 0x8100000000000081L), 4), 197281); - } -} diff --git a/src/main/java/game/Piece.java b/src/main/java/game/Piece.java deleted file mode 100644 index 40f740b..0000000 --- a/src/main/java/game/Piece.java +++ /dev/null @@ -1,11 +0,0 @@ -package org.lichess.compression.game; - -public class Piece { - public final boolean white; - public final Role role; - - public Piece(boolean white, Role role) { - this.white = white; - this.role = role; - } -} diff --git a/src/main/java/game/Role.java b/src/main/java/game/Role.java deleted file mode 100644 index 2ec6257..0000000 --- a/src/main/java/game/Role.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.lichess.compression.game; - -public enum Role { - PAWN(0, ""), - KNIGHT(1, "N"), - BISHOP(2, "B"), - ROOK(3, "R"), - QUEEN(4, "Q"), - KING(5, "K"); - - public final int index; - public final String symbol; - - Role(int index, String symbol) { - this.index = index; - this.symbol = symbol; - } -} diff --git a/src/main/java/game/Square.java b/src/main/java/game/Square.java deleted file mode 100644 index b3e9e61..0000000 --- a/src/main/java/game/Square.java +++ /dev/null @@ -1,41 +0,0 @@ -package org.lichess.compression.game; - -public class Square { - public static final int A1 = 0; - public static final int C1 = 2; - public static final int D1 = 3; - public static final int F1 = 5; - public static final int G1 = 6; - public static final int H1 = 7; - public static final int A8 = 56; - public static final int H8 = 63; - - public static int square(int file, int rank) { - return file ^ (rank << 3); - } - - public static int file(int square) { - return square & 7; - } - - public static int rank(int square) { - return square >>> 3; - } - - public static int mirror(int square) { - return square ^ 0x38; - } - - public static int combine(int a, int b) { - return square(file(a), rank(b)); - } - - public static int distance(int a, int b) { - return Math.max(Math.abs(file(a) - file(b)), - Math.abs(rank(a) - rank(b))); - } - - public static boolean aligned(int a, int b, int c) { - return Bitboard.contains(Bitboard.RAYS[a][b], c); - } -} diff --git a/src/main/java/game/ZobristHash.java b/src/main/java/game/ZobristHash.java deleted file mode 100644 index 8bed14b..0000000 --- a/src/main/java/game/ZobristHash.java +++ /dev/null @@ -1,177 +0,0 @@ -package org.lichess.compression.game; - -class ZobristHash { - public static int hashBoard(Board board) { - return hashPieces(board) ^ hashCastling(board) ^ hashTurn(board) ^ hashEnPassant(board); - } - - public static int hashPieces(Board board) { - int hash = 0; - long occupied = board.occupied; - while (occupied != 0) { - int sq = Bitboard.lsb(occupied); - hash ^= hashPiece(sq, board.whiteAt(sq), board.roleAt(sq)); - occupied &= occupied - 1L; - } - return hash; - } - - public static int hashPiece(int square, boolean color, Role role) { - int index = role.index * 2 + (color ? 1 : 0); - return POLYGLOT[64 * index + square]; - } - - public static int hashCastling(Board board) { - int hash = 0; - long cr = board.castlingRights; - if (Bitboard.contains(cr, Square.H1)) hash ^= POLYGLOT[768]; - if (Bitboard.contains(cr, Square.A1)) hash ^= POLYGLOT[768 + 1]; - if (Bitboard.contains(cr, Square.H8)) hash ^= POLYGLOT[768 + 2]; - if (Bitboard.contains(cr, Square.A8)) hash ^= POLYGLOT[768 + 3]; - return hash; - } - - public static int hashTurn(Board board) { - return board.turn ? POLYGLOT[780] : 0; - } - - public static int hashEnPassant(Board board) { - return board.hasLegalEnPassant() ? POLYGLOT[772 + Square.file(board.epSquare)] : 0; - } - - // The upper 24 bits of polyglot compatible pseudo random masks for - // Zobrist hashing. - public static final int POLYGLOT[] = { - 0x9d3924, 0x2af739, 0x44db01, 0x9c15f7, 0x758344, 0x3290ac, - 0x0fbbad, 0xe83a90, 0x0d7e76, 0x1a0838, 0x9605d5, 0xd021ff, - 0x40bdf1, 0x011355, 0x5db483, 0x239f8b, 0x05d1a1, 0x679f84, - 0x7449bb, 0x7d11cd, 0x82c770, 0xf3218f, 0x331478, 0x4bb38d, - 0xaa649c, 0x8dbd98, 0x87d207, 0x19f3c7, 0xb4ab30, 0x7b0500, - 0xc9452c, 0x24aa6c, 0x4c9f34, 0x14a68f, 0xa71b9b, 0x03488b, - 0x637b2b, 0x09d1bc, 0x357566, 0x735e2b, 0x187270, 0x1fcbac, - 0xd310a7, 0xbf983f, 0x9f74d1, 0x51ebdc, 0x5c82c5, 0xfcf7fe, - 0x3253a7, 0x8c74c3, 0xb9bc6c, 0x7ef48f, 0x11d505, 0x6568fc, - 0x4de0b0, 0x96d693, 0x42e240, 0x6d2bdc, 0x42880b, 0x5f0f4a, - 0x39f890, 0x93c5b5, 0x63dc35, 0xec16ca, 0x5355f9, 0x07fb9f, - 0x509341, 0x7bcbc3, 0x19fc8a, 0x637a77, 0x8249a4, 0x79ad69, - 0x14acba, 0xf145b6, 0xdabf2a, 0x24c3c9, 0xbb6e29, 0x0ce26c, - 0xa49cd1, 0xe99d66, 0x27e6ad, 0x8535f0, 0x54b3f4, 0x72b12c, - 0xee954d, 0x9a85ac, 0x70ac4c, 0xf9b89d, 0x87b3e2, 0xa366e5, - 0xae4a93, 0x1920c0, 0x87bf02, 0x092237, 0xff07f6, 0x8de8dc, - 0x9c1633, 0xb3f22c, 0x390e5f, 0x5bfea5, 0x1e1032, 0x9a74ac, - 0x4f80f7, 0x6304d0, 0x2171e6, 0x5b9b63, 0x506aac, 0x1881af, - 0x650308, 0xdfd395, 0xef927d, 0x7b32f7, 0xb9fd76, 0x05a7e8, - 0xb5889c, 0x4a750a, 0xcf464c, 0xf53863, 0x3c79a0, 0xede6c8, - 0x799e81, 0x86536b, 0x97d737, 0xa24663, 0x043fca, 0x920e44, - 0x70eb09, 0x73a192, 0x56436c, 0xefac4b, 0xbb2157, 0x45f200, - 0x930f80, 0xff6712, 0xae623f, 0xdd2c5b, 0x7eed12, 0x22fe54, - 0xc91800, 0x808bd6, 0xdec468, 0x1bede3, 0x435396, 0xaa969b, - 0xa87832, 0x65942c, 0xded2d6, 0x21f085, 0xb41593, 0x91b859, - 0x10cff3, 0x28aed1, 0xc5cc1d, 0x5648f6, 0x2d2550, 0x9bc5a3, - 0xef2f05, 0xaf2042, 0x480412, 0xaef3af, 0x19afe5, 0x525938, - 0xf4f076, 0x113796, 0xbce5d2, 0x9da424, 0x066f70, 0x4dc4de, - 0x51039a, 0xc07a3f, 0xb46ee9, 0xb3819a, 0x21a007, 0x2df16f, - 0x763c4a, 0xf793c4, 0xd7288e, 0xde336a, 0x0bf692, 0x2c604a, - 0x4850e7, 0xcfc447, 0xb05ca3, 0x9ae182, 0xa4fc4b, 0xe75517, - 0x69b97d, 0xf9b5b7, 0xfc6a82, 0x9c684c, 0x8ec97d, 0x6703df, - 0xc547f5, 0x78e376, 0xfe9a44, 0x08bd35, 0x9315e5, 0x94061b, - 0xdf1d9f, 0x3bba57, 0xd2b7ad, 0xf7a255, 0xd7f4f2, 0xd95be8, - 0x336f52, 0xa74049, 0xa2f61b, 0x4f2a5c, 0x87d380, 0x16b9f7, - 0x7ba248, 0xf3a678, 0x39b0bf, 0xfcaf55, 0x18fcf6, 0x4c0563, - 0x40e087, 0x8cffa9, 0x68ca39, 0x7a1ee9, 0x9d1d60, 0x3810e3, - 0x32095b, 0x35cab6, 0xa90b24, 0x77a225, 0x513e5e, 0x4361c0, - 0xd941ac, 0x528f7c, 0x52ab92, 0x9d1dfa, 0x722ff1, 0x1d1260, - 0x7a249a, 0x04208f, 0x5a110c, 0x0cd9a4, 0x56fd23, 0x284c84, - 0x04feab, 0x742e1e, 0x9a9632, 0x881b82, 0x506e67, 0xb0183d, - 0x0ed9b9, 0x5e11e8, 0xf67864, 0x1b85d4, 0xdab9fe, 0x0d151d, - 0xa865a5, 0x93c425, 0x99e7af, 0x48cbff, 0x7f9b6a, 0x58627e, - 0x2cd16e, 0xd363ef, 0x0ce2a3, 0x1a804a, 0x907f30, 0x501f65, - 0x37624a, 0x957baf, 0x3a6c27, 0xd49503, 0x088e04, 0xf943ae, - 0x6c3b8e, 0x364f6f, 0xd60f6d, 0x56963b, 0x16f50e, 0xef1955, - 0x565601, 0xecb539, 0xbac7a9, 0xb344c4, 0x65d349, 0xb4b81b, - 0xb42206, 0x071582, 0x7a13f1, 0xbc4097, 0x59b978, 0x99170a, - 0x6f4233, 0x325928, 0xd0e436, 0x565c31, 0x30f561, 0xd873db, - 0x7bd94e, 0xc7d9f1, 0x947ae0, 0xc8c938, 0x3a9bf5, 0xd9a11f, - 0x0fd220, 0xb3f256, 0xb03031, 0x35dd37, 0xe9f608, 0xebfafa, - 0x9255ab, 0xb9ab4c, 0x693501, 0xc62c58, 0xcd454f, 0xbbe83f, - 0xdc842b, 0xba8914, 0xa3bc94, 0xe9f676, 0x09c7e5, 0x852f54, - 0x8107fc, 0x098954, 0x23b70e, 0xc330de, 0x4715ed, 0xa8d7e4, - 0x0572b9, 0xb57d2e, 0xe8d9ec, 0x2fe4b1, 0x11317b, 0x7fbf21, - 0x1725ca, 0x964e91, 0x3e2b8b, 0xbe7444, 0xf85b2b, 0x49353f, - 0x1dd01a, 0x1fca8a, 0xfc7c95, 0x18a6a9, 0xcccb70, 0x3bdbb9, - 0xaa70b5, 0xe94c39, 0xb7a0b1, 0xd4dba8, 0x2e18bc, 0x2de096, - 0xb9c11d, 0x64972d, 0x94628d, 0xdbc0d2, 0xd2733c, 0x7e75d9, - 0x6ced19, 0x97fcaa, 0x7b7749, 0x8547ed, 0x79999c, 0xcffe19, - 0x829626, 0x92fae2, 0x63e22c, 0xc678b6, 0x587388, 0x0981dc, - 0x9f6578, 0x9ff38f, 0xe479ee, 0xe7f28e, 0x56c074, 0x5544f7, - 0x7b3f01, 0x121536, 0x7f5126, 0x7a7695, 0x3d5774, 0x8a1b08, - 0x7b4a38, 0x950113, 0x4da897, 0x3bc36e, 0x5d0a12, 0x7f9d1a, - 0xda3a36, 0xdcdd7d, 0x368333, 0xce6834, 0xab9090, 0x43954b, - 0xb438c2, 0x10dcd7, 0xdbc27a, 0x9b3cdb, 0xb67b78, 0xbfced1, - 0xa9119b, 0x1fff7a, 0xac12fb, 0xaf08da, 0x1b0cab, 0xb559eb, - 0xc37b45, 0xc3a9dc, 0xf3b8b6, 0x9fc477, 0x67378d, 0x6dd856, - 0xa319ce, 0x073973, 0x8a8e84, 0xe1925c, 0x74c04b, 0x4dda48, - 0x9d266d, 0x7440fb, 0x133285, 0xd6bf7b, 0x4838d6, 0x1e1523, - 0x8f8419, 0x72c883, 0xd7a023, 0x94ebc8, 0x9fc10d, 0xde68a2, - 0xa44cfe, 0x9d1d84, 0x51d2b1, 0x2fd7e4, 0x65ca5b, 0xdd69a0, - 0x604d51, 0x73aa8a, 0x1a8c1e, 0xaac40a, 0x764dbe, 0x1e99b9, - 0x2c5e9d, 0x3a938f, 0x26e6db, 0x469356, 0xc8763c, 0x3f6c6a, - 0x7f7cc3, 0x9bfb22, 0x89039d, 0x8fe88b, 0xa09e8c, 0xfa7e39, - 0xd6b6d0, 0xdfea21, 0xb67c1f, 0xca1e37, 0x1cfc8b, 0xd18d85, - 0x4ed0fe, 0xe4dbf0, 0x1761f9, 0x53898e, 0x734de8, 0x2680b1, - 0x298af2, 0x7983ee, 0x66c1a2, 0x9e17e4, 0xedb454, 0x50b704, - 0x4cc317, 0x66b483, 0x219b97, 0x261e4e, 0x1fe2cc, 0xd7504d, - 0xb9571f, 0x1ddc03, 0xcf3f46, 0xf4f5d0, 0x38b652, 0x36f60e, - 0xeb3593, 0x9c4cd6, 0xaf0c31, 0x258e5a, 0x8b889d, 0xf4d145, - 0xd4347f, 0xe699ed, 0x2472f6, 0xc2a1e7, 0xab4f64, 0x637675, - 0xa59e0b, 0x116d00, 0x2cf9c8, 0x0b090a, 0xabeedd, 0x58efc1, - 0xc6e57a, 0x2eab8c, 0x14a195, 0x7c0828, 0xd74bbe, 0x804456, - 0xebe9ea, 0x03219a, 0x49787f, 0xa1e930, 0x5b45e5, 0xb49c3b, - 0xd4490a, 0x12a8f2, 0x001f83, 0x1877b5, 0xa2853b, 0x993e1d, - 0xb35980, 0x252f59, 0xd23c8e, 0x1bda04, 0x21e0bd, 0x3b097a, - 0x8d14de, 0xf95cff, 0x387170, 0xca672b, 0x64c8e5, 0x241260, - 0x106c09, 0x7fba19, 0x7884d9, 0x0647df, 0x63573f, 0x4fc8e9, - 0x1db956, 0xb8d912, 0xa2ebee, 0xd9f1f3, 0xefed53, 0x2e6d02, - 0xa9aa4d, 0xb64be8, 0x70cb6a, 0x98f076, 0xbf8447, 0x94c325, - 0x3e003e, 0xb925a6, 0x61bdd1, 0xbf8d51, 0x240ab5, 0xfc8761, - 0xef02cd, 0xa1082c, 0x8215e5, 0xd39bb9, 0x273825, 0x61cf4f, - 0x1b6bac, 0x758f45, 0x959f58, 0xb063e9, 0x60e8ed, 0x7b6497, - 0xfd080d, 0x8c90fd, 0x106f72, 0x797603, 0xa4ec01, 0x733ea7, - 0xb4d8f7, 0x9e21f4, 0x9d765e, 0xd30c08, 0x5d9433, 0x1a4e48, - 0x6ffe73, 0xddf957, 0x64d0e2, 0x08dd9b, 0x087e79, 0xe328e2, - 0x1c2559, 0x720bf5, 0xb0774d, 0x443f64, 0x4112cf, 0xd813f2, - 0x660d32, 0x59ac2c, 0xe84696, 0x93b633, 0xc0c0f5, 0xcaf21e, - 0x572777, 0x506c11, 0xd83cc2, 0x4a29c6, 0xed2df2, 0xb5635c, - 0x22af00, 0x52e762, 0x9aeba3, 0x944f6d, 0x6c47be, 0x6ad047, - 0xa5b1cf, 0x7c45d8, 0x5092ef, 0x9338e6, 0x455a4b, 0x6b02e6, - 0x6b17b2, 0xd1e0cc, 0xde0c89, 0x50065e, 0x9c1169, 0x78edef, - 0x6dc93d, 0xee97f4, 0x32ab0e, 0x3a6853, 0x31865c, 0x67fef9, - 0x1f2b1d, 0xb69e38, 0xaa9119, 0xf43c73, 0xfb4a3d, 0x3550c2, - 0x371f77, 0x6bfa9a, 0xcd04f3, 0xe32735, 0x9f9150, 0x049a7f, - 0xfcb6be, 0x08de8a, 0x8f9887, 0xb5b407, 0x230e34, 0x43ed7f, - 0x3a88a0, 0x21874b, 0x1bdea1, 0x53c065, 0xe34a1d, 0xd6b04d, - 0x5e9027, 0x2c046f, 0xb10bb4, 0x3fa9dd, 0x0e09b8, 0x10e8b3, - 0x9eedec, 0xd4c718, 0x81536d, 0x91b534, 0xec8177, 0x190e71, - 0xb592bf, 0x89c350, 0xac042e, 0xb49b52, 0xfb152f, 0x3e666e, - 0x3b544e, 0xe805a1, 0x24b33c, 0xe74733, 0x0a804d, 0x57e330, - 0x4ae7d6, 0x2d8d54, 0xd1e649, 0x8a328a, 0x07a3ae, 0x84547d, - 0x990a98, 0x1a4ff1, 0xf6f7fd, 0x30c05b, 0x8d2636, 0x46c9fe, - 0xccec0a, 0x4e9d28, 0x19ebb0, 0x4659d2, 0x963ef2, 0x74f851, - 0x5a0f54, 0x037270, 0xc7f6aa, 0x352787, 0x9853ea, 0xabbdcd, - 0xcf05da, 0x49cad4, 0x7a4c10, 0xd9e92a, 0x13ae97, 0x730499, - 0x4e4b70, 0xff5772, 0x55b634, 0xb86222, 0xcac09a, 0xdaf8e9, - 0xb5fdfc, 0x310cb3, 0xe87fbb, 0x2102ae, 0xf8549e, 0x07a69a, - 0xc4c118, 0xf9f489, 0x1af3db, 0xf5b4b0, 0x962ace, 0x046e3e, - 0xf05d12, 0x964781, 0x9c2ed4, 0x522e23, 0x177e00, 0x2bc60a, - 0x222bbf, 0x486289, 0x7dc778, 0x8af387, 0x1fab64, 0xe4d942, - 0x9da058, 0x24c0e3, 0x233003, 0xd586bd, 0x5e5637, 0x7eba72, - 0x0a56a5, 0xd79476, 0x9e4c12, 0x17efee, 0x1d95b0, 0x93cbe0, - 0x65fa4f, 0xd5f9e8, 0xc2b5a0, 0x593002, 0xce2f86, 0x7ca972, - 0x278533, 0xc61bb3, 0x150f36, 0x9f6a41, 0x64a53d, 0x142de4, - 0x0c3352, 0x0a9c32, 0xe6c421, 0x71f1ce, 0xf1bcc3, 0xe728e8, - 0x96fbf8, 0x81a154, 0x5fa786, 0x56986e, 0x917f1d, 0xd20d8c, - 0x31d71d, 0xf165b5, 0xa57e63, 0x1ef6e6, 0x70cc73, 0xe21a6b, - 0x003a93, 0x1c99de, 0xcf3145, 0xd0e442, 0x77c621, 0x67a34d, - 0xf8d626, - }; -} diff --git a/src/main/scala/BitOps.scala b/src/main/scala/BitOps.scala new file mode 100644 index 0000000..5e0bbf4 --- /dev/null +++ b/src/main/scala/BitOps.scala @@ -0,0 +1,102 @@ +package org.lichess.compression + +object BitOps: + + def writeSigned(values: Array[Int], writer: BitOps.Writer): Unit = + values.foreach(n => writeSigned(n, writer)) + + def writeSigned(n: Int, writer: BitOps.Writer): Unit = + // zigzag encode + writeUnsigned((n << 1) ^ (n >> 31), writer) + + def writeUnsigned(n: Int, writer: BitOps.Writer): Unit = + if (n & ~0x1f) == 0 then writer.writeBits(n, 6) + else + writer.writeBits(n | 0x20, 6) + var remaining = n >>> 5 + while (remaining & ~0x07) != 0 do + writer.writeBits(remaining | 0x08, 4) + remaining >>>= 3 + // While loop terminated, so 4th bit is 0 + writer.writeBits(remaining, 4) + + def readUnsigned(reader: BitOps.Reader): Int = + var n = reader.readBits(6) + if n > 0x1f then + n &= 0x1f + var curShift = 5 + var curVal = 0 + while + curVal = reader.readBits(4) + curVal > 0x07 + do + n |= (curVal & 0x07) << curShift + curShift += 3 + n |= curVal << curShift + n + + def readSigned(reader: BitOps.Reader): Int = + val n = readUnsigned(reader) + (n >>> 1) ^ -(n & 1) // zigzag decode + + def readSigned(reader: BitOps.Reader, numMoves: Int): Array[Int] = + Array.tabulate(numMoves) { _ => + val n = readUnsigned(reader) + (n >>> 1) ^ -(n & 1) // zigzag decode + } + + class Reader(bytes: Array[Byte]): + private val BitMasks = BitOps.getBitMasks + private val bb = java.nio.ByteBuffer.wrap(bytes) + private var numRemainingBits = 0 + private var pendingBits = 0 + + private def readNext(): Unit = + if bb.remaining >= 4 then + pendingBits = bb.getInt + numRemainingBits = 32 + else + numRemainingBits = bb.remaining * 8 + pendingBits = (bb.get & 0xff) << (numRemainingBits - 8) + var s = numRemainingBits - 16 + while s >= 0 do + pendingBits |= (bb.get & 0xff) << s + s -= 8 + + def readBits(numReqBits: Int): Int = + if numRemainingBits >= numReqBits then + numRemainingBits -= numReqBits + (pendingBits >>> numRemainingBits) & BitMasks(numReqBits) + else + val res = pendingBits & BitMasks(numRemainingBits) + val neededBits = numReqBits - numRemainingBits + readNext() + (res << neededBits) | readBits(neededBits) + + class Writer: + private val BitMasks = BitOps.getBitMasks + private val buffer = collection.mutable.ArrayBuffer[Int]() + private var numRemainingBits = 32 + private var pendingBits = 0 + + def writeBits(data: Int, numBits: Int): Unit = + val maskedData = data & BitMasks(numBits) + numRemainingBits -= numBits + if numRemainingBits >= 0 then pendingBits |= maskedData << numRemainingBits + else + buffer.append(pendingBits | (maskedData >>> -numRemainingBits)) + numRemainingBits += 32 + pendingBits = maskedData << numRemainingBits + + def toArray(): Array[Byte] = + val numPendingBytes = (39 - numRemainingBits) >> 3 + val bb = java.nio.ByteBuffer.allocate(4 * buffer.size + numPendingBytes) + buffer.foreach(bb.putInt) + if numPendingBytes == 4 then bb.putInt(pendingBits) + else for i <- 0 until numPendingBytes do bb.put((pendingBits >>> (24 - i * 8)).toByte) + bb.array() + + private def getBitMasks: Array[Int] = + Array.tabulate(32)(i => (1 << i) - 1) + +end BitOps diff --git a/src/main/scala/clock/Encoder.scala b/src/main/scala/clock/Encoder.scala new file mode 100644 index 0000000..ac21e4b --- /dev/null +++ b/src/main/scala/clock/Encoder.scala @@ -0,0 +1,38 @@ +package org.lichess.compression.clock + +import java.util.Arrays +import org.lichess.compression.BitOps + +object Encoder: + + def encode(centis: Array[Int], startTime: Int): Array[Byte] = + if centis.isEmpty then return Array.emptyByteArray + + val encoded = Arrays.copyOf(centis, centis.length) + val truncatedStart = LowBitTruncator.truncate(startTime) + + LowBitTruncator.truncate(encoded) + LinearEstimator.encode(encoded, truncatedStart) + EndTimeEstimator.encode(encoded, truncatedStart) + + val writer = BitOps.Writer() + BitOps.writeUnsigned(encoded.length - 1, writer) + BitOps.writeSigned(encoded, writer) + LowBitTruncator.writeDigits(centis, writer) + + writer.toArray() + + def decode(bytes: Array[Byte], startTime: Int): Array[Int] = + if bytes.isEmpty then return Array.emptyIntArray + + val reader = BitOps.Reader(bytes) + val truncatedStart = LowBitTruncator.truncate(startTime) + + val numMoves = BitOps.readUnsigned(reader) + 1 + val decoded = BitOps.readSigned(reader, numMoves) + + EndTimeEstimator.decode(decoded, truncatedStart) + LinearEstimator.decode(decoded, truncatedStart) + LowBitTruncator.decode(decoded, reader) + + decoded diff --git a/src/main/scala/clock/EndTimeEstimator.scala b/src/main/scala/clock/EndTimeEstimator.scala new file mode 100644 index 0000000..bbc53b8 --- /dev/null +++ b/src/main/scala/clock/EndTimeEstimator.scala @@ -0,0 +1,11 @@ +package org.lichess.compression.clock + +object EndTimeEstimator: + + def encode(vals: Array[Int], startTime: Int): Unit = + val maxIdx = vals.length - 1 + if maxIdx < 32 then vals(maxIdx) -= startTime - ((startTime * maxIdx) >>> 5) + + def decode(vals: Array[Int], startTime: Int): Unit = + val maxIdx = vals.length - 1 + if maxIdx < 32 then vals(maxIdx) += startTime - ((startTime * maxIdx) >>> 5) diff --git a/src/main/scala/clock/LinearEstimator.scala b/src/main/scala/clock/LinearEstimator.scala new file mode 100644 index 0000000..5335e73 --- /dev/null +++ b/src/main/scala/clock/LinearEstimator.scala @@ -0,0 +1,31 @@ +package org.lichess.compression.clock + +object LinearEstimator: + + def encode(dest: Array[Int], startTime: Int): Unit = + val maxIdx = dest.length - 1 + encode(dest, -1, startTime, maxIdx, dest(maxIdx)) + + def decode(dest: Array[Int], startTime: Int): Unit = + val maxIdx = dest.length - 1 + decode(dest, -1, startTime, maxIdx, dest(maxIdx)) + + private def encode(dest: Array[Int], startIdx: Int, start: Int, endIdx: Int, end: Int): Unit = + val midIdx = (startIdx + endIdx) >> 1 + if startIdx == midIdx then return + + val mid = dest(midIdx) + dest(midIdx) = mid - ((start + end) >> 1) + + encode(dest, startIdx, start, midIdx, mid) + encode(dest, midIdx, mid, endIdx, end) + + private def decode(dest: Array[Int], startIdx: Int, start: Int, endIdx: Int, end: Int): Unit = + val midIdx = (startIdx + endIdx) >> 1 + if startIdx == midIdx then return + + dest(midIdx) += (start + end) >> 1 + val mid = dest(midIdx) + + decode(dest, startIdx, start, midIdx, mid) + decode(dest, midIdx, mid, endIdx, end) diff --git a/src/main/scala/clock/LowBitTruncator.scala b/src/main/scala/clock/LowBitTruncator.scala new file mode 100644 index 0000000..3304dcc --- /dev/null +++ b/src/main/scala/clock/LowBitTruncator.scala @@ -0,0 +1,28 @@ +package org.lichess.compression.clock + +import org.lichess.compression.BitOps + +object LowBitTruncator: + private val CENTI_CUTOFF = 1000 + + def truncate(centis: Array[Int]): Unit = + centis.indices.foreach(i => centis(i) >>= 3) + + def truncate(centi: Int): Int = + centi >> 3 + + def writeDigits(centis: Array[Int], writer: BitOps.Writer): Unit = + val maxIdx = centis.length - 1 + centis.indices.init.foreach { i => + if centis(i) < CENTI_CUTOFF then writer.writeBits(centis(i), 3) + } + writer.writeBits(centis(maxIdx), 3) + + def decode(trunced: Array[Int], reader: BitOps.Reader): Unit = + val maxIdx = trunced.length - 1 + trunced.indices.foreach { i => + val rounded = trunced(i) << 3 + trunced(i) = + if rounded < CENTI_CUTOFF || i == maxIdx then rounded | reader.readBits(3) + else rounded | 3 + } diff --git a/src/main/scala/game/Bitboard.scala b/src/main/scala/game/Bitboard.scala new file mode 100644 index 0000000..77134e4 --- /dev/null +++ b/src/main/scala/game/Bitboard.scala @@ -0,0 +1,120 @@ +package org.lichess.compression.game + +import scala.annotation.tailrec +import scala.collection.mutable.HashSet + +object Bitboard: + val ALL: Long = -1L + + val RANKS: Array[Long] = Array.tabulate(8)(i => 0xffL << (i * 8)) + val FILES: Array[Long] = Array.tabulate(8)(i => 0x0101010101010101L << i) + + private val KNIGHT_DELTAS = Array(17, 15, 10, 6, -17, -15, -10, -6) + private val BISHOP_DELTAS = Array(7, -7, 9, -9) + private val ROOK_DELTAS = Array(1, -1, 8, -8) + private val KING_DELTAS = Array(1, 7, 8, 9, -1, -7, -8, -9) + private val WHITE_PAWN_DELTAS = Array(7, 9) + private val BLACK_PAWN_DELTAS = Array(-7, -9) + + val KNIGHT_ATTACKS: Array[Long] = Array.ofDim(64) + val KING_ATTACKS: Array[Long] = Array.ofDim(64) + val WHITE_PAWN_ATTACKS: Array[Long] = Array.ofDim(64) + val BLACK_PAWN_ATTACKS: Array[Long] = Array.ofDim(64) + + val BETWEEN: Array[Array[Long]] = Array.ofDim(64, 64) + val RAYS: Array[Array[Long]] = Array.ofDim(64, 64) + + private val ATTACKS: Array[Long] = Array.ofDim(88772) + + def slidingAttacks(square: Int, occupied: Long, deltas: Array[Int]): Long = + @tailrec + def attackLoop(deltaIndex: Int, acc: Long): Long = + if deltaIndex >= deltas.length then acc + else + @tailrec + def deltaLoop(sq: Int, tempAcc: Long): Long = + val newSq = sq + deltas(deltaIndex) + if newSq < 0 || newSq >= 64 || Square.distance(newSq, sq) > 2 then + attackLoop(deltaIndex + 1, tempAcc) + else + val newAcc = tempAcc | (1L << newSq) + if (Bitboard.contains(occupied, newSq)) attackLoop(deltaIndex + 1, newAcc) + else deltaLoop(newSq, newAcc) + deltaLoop(square, acc) + attackLoop(0, 0L) + + private def initMagics(square: Int, magic: Magic, shift: Int, deltas: Array[Int]): Unit = + @tailrec + def updateAttacks(subset: Long): Unit = + val attack = slidingAttacks(square, subset, deltas) + val idx = ((magic.factor * subset) >>> (64 - shift)).toInt + magic.offset + assert(ATTACKS(idx) == 0 || ATTACKS(idx) == attack) + ATTACKS(idx) = attack + val nextSubset = (subset - magic.mask) & magic.mask + if (nextSubset != 0) updateAttacks(nextSubset) + + updateAttacks(0L) + + for i <- 0 until 64 + do + KNIGHT_ATTACKS(i) = slidingAttacks(i, Bitboard.ALL, KNIGHT_DELTAS) + KING_ATTACKS(i) = slidingAttacks(i, Bitboard.ALL, KING_DELTAS) + WHITE_PAWN_ATTACKS(i) = slidingAttacks(i, Bitboard.ALL, WHITE_PAWN_DELTAS) + BLACK_PAWN_ATTACKS(i) = slidingAttacks(i, Bitboard.ALL, BLACK_PAWN_DELTAS) + + initMagics(i, Magic.ROOK(i), 12, ROOK_DELTAS) + initMagics(i, Magic.BISHOP(i), 9, BISHOP_DELTAS) + + for + a <- 0 until 64 + b <- 0 until 64 + do + if contains(slidingAttacks(a, 0, ROOK_DELTAS), b) then + BETWEEN(a)(b) = slidingAttacks(a, 1L << b, ROOK_DELTAS) & + slidingAttacks(b, 1L << a, ROOK_DELTAS) + RAYS(a)(b) = (1L << a) | (1L << b) | + slidingAttacks(a, 0, ROOK_DELTAS) & + slidingAttacks(b, 0, ROOK_DELTAS) + else if contains(slidingAttacks(a, 0, BISHOP_DELTAS), b) then + BETWEEN(a)(b) = slidingAttacks(a, 1L << b, BISHOP_DELTAS) & + slidingAttacks(b, 1L << a, BISHOP_DELTAS) + RAYS(a)(b) = (1L << a) | (1L << b) | + slidingAttacks(a, 0, BISHOP_DELTAS) & + slidingAttacks(b, 0, BISHOP_DELTAS) + + def bishopAttacks(square: Int, occupied: Long): Long = + val magic = Magic.BISHOP(square) + ATTACKS(((magic.factor * (occupied & magic.mask)) >>> (64 - 9)).toInt + magic.offset) + + def rookAttacks(square: Int, occupied: Long): Long = + val magic = Magic.ROOK(square) + ATTACKS(((magic.factor * (occupied & magic.mask)) >>> (64 - 12)).toInt + magic.offset) + + def queenAttacks(square: Int, occupied: Long): Long = + bishopAttacks(square, occupied) ^ rookAttacks(square, occupied) + + def pawnAttacks(white: Boolean, square: Int): Long = + if white then WHITE_PAWN_ATTACKS(square) else BLACK_PAWN_ATTACKS(square) + + def lsb(b: Long): Int = + assert(b != 0) + java.lang.Long.numberOfTrailingZeros(b) + + def msb(b: Long): Int = + assert(b != 0) + 63 - java.lang.Long.numberOfLeadingZeros(b) + + def moreThanOne(b: Long): Boolean = + (b & (b - 1L)) != 0 + + def contains(b: Long, sq: Int): Boolean = + (b & (1L << sq)) != 0 + + def squareSet(b: Long): Set[Int] = + var remaining = b + val set = HashSet[Int]() + while remaining != 0 do + val sq = lsb(remaining) + set.add(sq) + remaining &= remaining - 1L + set.toSet diff --git a/src/main/scala/game/Board.scala b/src/main/scala/game/Board.scala new file mode 100644 index 0000000..5ca3b2f --- /dev/null +++ b/src/main/scala/game/Board.scala @@ -0,0 +1,334 @@ +package org.lichess.compression.game + +import scala.collection.mutable.HashMap +import scala.util.control.Breaks.{ break, breakable } + +final class Board( + var pawns: Long = 0xff00000000ff00L, + var knights: Long = 0x4200000000000042L, + var bishops: Long = 0x2400000000000024L, + var rooks: Long = 0x8100000000000081L, + var queens: Long = 0x800000000000008L, + var kings: Long = 0x1000000000000010L, + var white: Long = 0xffffL, + var black: Long = 0xffff000000000000L, + var turn: Boolean = true, + var epSquare: Int = 0, + var castlingRights: Long = 0x8100000000000081L +): + var occupied = white | black + var incrementalHash: Int = ZobristHash.hashPieces(this) ^ ZobristHash.hashTurn(this) + + def copy(): Board = + val board = + Board(pawns, knights, bishops, rooks, queens, kings, white, black, turn, epSquare, castlingRights) + board.occupied = occupied + board.incrementalHash = incrementalHash + board + + private def isOccupied(square: Int): Boolean = + Bitboard.contains(this.occupied, square) + + private def discard(square: Int): Unit = + if isOccupied(square) then + val mask = 1L << square + val role = roleAt(square) + role match + case Role.PAWN => this.pawns ^= mask + case Role.KNIGHT => this.knights ^= mask + case Role.BISHOP => this.bishops ^= mask + case Role.ROOK => this.rooks ^= mask + case Role.QUEEN => this.queens ^= mask + case Role.KING => this.kings ^= mask + val color = whiteAt(square) + if color then this.white ^= mask else this.black ^= mask + + this.occupied ^= mask + this.incrementalHash ^= ZobristHash.hashPiece(square, color, role) + + private def put(square: Int, color: Boolean, role: Role): Unit = + discard(square) + val mask = 1L << square + role match + case Role.PAWN => this.pawns ^= mask + case Role.KNIGHT => this.knights ^= mask + case Role.BISHOP => this.bishops ^= mask + case Role.ROOK => this.rooks ^= mask + case Role.QUEEN => this.queens ^= mask + case Role.KING => this.kings ^= mask + + if color then this.white ^= mask else this.black ^= mask + + this.occupied ^= mask + this.incrementalHash ^= ZobristHash.hashPiece(square, color, role) + + def roleAt(square: Int): Role = + if Bitboard.contains(this.pawns, square) then Role.PAWN + else if Bitboard.contains(this.knights, square) then Role.KNIGHT + else if Bitboard.contains(this.bishops, square) then Role.BISHOP + else if Bitboard.contains(this.rooks, square) then Role.ROOK + else if Bitboard.contains(this.queens, square) then Role.QUEEN + else if Bitboard.contains(this.kings, square) then Role.KING + else null + + def whiteAt(square: Int): Boolean = + Bitboard.contains(this.white, square) + + def zobristHash(): Int = + this.incrementalHash ^ ZobristHash.hashCastling(this) ^ ZobristHash.hashEnPassant(this) + + def pieceMap(): Map[Int, Piece] = + val map = HashMap[Int, Piece]() + var occupied = this.occupied + while occupied != 0 do + val sq = Bitboard.lsb(occupied) + map.put(sq, Piece(whiteAt(sq), roleAt(sq))) + occupied &= occupied - 1L + map.toMap + + def play(move: Move): Unit = + this.epSquare = 0 + move.`type` match + case Move.NORMAL => + if move.role == Role.PAWN && Math.abs(move.from - move.to) == 16 then + val theirPawns = them() & this.pawns + if theirPawns != 0 then + val sq = move.from + (if this.turn then 8 else -8) + if (Bitboard.pawnAttacks(this.turn, sq) & theirPawns) != 0 then this.epSquare = sq + + if this.castlingRights != 0 then + if move.role == Role.KING then this.castlingRights &= Bitboard.RANKS(if this.turn then 7 else 0) + else if move.role == Role.ROOK then this.castlingRights &= ~(1L << move.from) + + if move.capture then this.castlingRights &= ~(1L << move.to) + + discard(move.from) + put(move.to, this.turn, if move.promotion != null then move.promotion else move.role) + + case Move.CASTLING => + this.castlingRights &= Bitboard.RANKS(if this.turn then 7 else 0) + val rookTo = Square.combine(if move.to < move.from then Square.D1 else Square.F1, move.to) + val kingTo = Square.combine(if move.to < move.from then Square.C1 else Square.G1, move.from) + discard(move.from) + discard(move.to) + put(rookTo, this.turn, Role.ROOK) + put(kingTo, this.turn, Role.KING) + + case Move.EN_PASSANT => + discard(Square.combine(move.to, move.from)) + discard(move.from) + put(move.to, this.turn, Role.PAWN) + + this.turn = !this.turn + this.incrementalHash ^= ZobristHash.POLYGLOT(780) + + def us(): Long = + byColor(this.turn) + + def them(): Long = + byColor(!this.turn) + + def byColor(white: Boolean): Long = + if white then this.white else this.black + + private def getKing(white: Boolean): Int = + Bitboard.lsb(this.kings & byColor(white)) + + private def sliderBlockers(king: Int): Long = + val snipers = them() & ( + Bitboard.rookAttacks(king, 0) & (this.rooks ^ this.queens) | + Bitboard.bishopAttacks(king, 0) & (this.bishops ^ this.queens) + ) + + var blockers = 0L + var remainingSnipers = snipers + while remainingSnipers != 0 do + val sniper = Bitboard.lsb(remainingSnipers) + val between = Bitboard.BETWEEN(king)(sniper) & this.occupied + if !Bitboard.moreThanOne(between) then blockers |= between + remainingSnipers &= remainingSnipers - 1L + blockers + + def isCheck(): Boolean = + attacksTo(getKing(this.turn), !this.turn) != 0 + + private def attacksTo(sq: Int, attacker: Boolean): Long = + attacksTo(sq, attacker, this.occupied) + + private def attacksTo(sq: Int, attacker: Boolean, occupied: Long): Long = + byColor(attacker) & ( + Bitboard.rookAttacks(sq, occupied) & (this.rooks ^ this.queens) | + Bitboard.bishopAttacks(sq, occupied) & (this.bishops ^ this.queens) | + Bitboard.KNIGHT_ATTACKS(sq) & this.knights | + Bitboard.KING_ATTACKS(sq) & this.kings | + Bitboard.pawnAttacks(!attacker, sq) & this.pawns + ) + + def legalMoves(moves: MoveList): Unit = + moves.clear() + if this.epSquare != 0 then genEnPassant(moves) + + val king = getKing(this.turn) + val checkers = attacksTo(king, !this.turn) + if checkers == 0 then + val target = ~us() + genNonKing(target, moves) + genSafeKing(king, target, moves) + genCastling(king, moves) + else genEvasions(king, checkers, moves) + + val blockers = sliderBlockers(king) + + if blockers != 0 || this.epSquare != 0 then moves.retain(m => isSafe(king, m, blockers)) + + def hasLegalEnPassant(): Boolean = + if this.epSquare == 0 then false + else + val moves = MoveList(2) + genEnPassant(moves) + + val king = getKing(this.turn) + val blockers = sliderBlockers(king) + moves.anyMatch(m => isSafe(king, m, blockers)) + + private def genNonKing(mask: Long, moves: MoveList): Unit = + genPawn(mask, moves) + + var knights = us() & this.knights + while knights != 0 do + val from = Bitboard.lsb(knights) + var targets = Bitboard.KNIGHT_ATTACKS(from) & mask + while targets != 0 do + val to = Bitboard.lsb(targets) + moves.pushNormal(this, Role.KNIGHT, from, isOccupied(to), to) + targets &= targets - 1L + knights &= knights - 1L + + var bishops = us() & this.bishops + while bishops != 0 do + val from = Bitboard.lsb(bishops) + var targets = Bitboard.bishopAttacks(from, this.occupied) & mask + while targets != 0 do + val to = Bitboard.lsb(targets) + moves.pushNormal(this, Role.BISHOP, from, isOccupied(to), to) + targets &= targets - 1L + bishops &= bishops - 1L + + var rooks = us() & this.rooks + while rooks != 0 do + val from = Bitboard.lsb(rooks) + var targets = Bitboard.rookAttacks(from, this.occupied) & mask + while targets != 0 do + val to = Bitboard.lsb(targets) + moves.pushNormal(this, Role.ROOK, from, isOccupied(to), to) + targets &= targets - 1L + rooks &= rooks - 1L + + var queens = us() & this.queens + while queens != 0 do + val from = Bitboard.lsb(queens) + var targets = Bitboard.queenAttacks(from, this.occupied) & mask + while targets != 0 do + val to = Bitboard.lsb(targets) + moves.pushNormal(this, Role.QUEEN, from, isOccupied(to), to) + targets &= targets - 1L + queens &= queens - 1L + + private def genSafeKing(king: Int, mask: Long, moves: MoveList): Unit = + var targets = Bitboard.KING_ATTACKS(king) & mask + while targets != 0 do + val to = Bitboard.lsb(targets) + if attacksTo(to, !this.turn) == 0 then moves.pushNormal(this, Role.KING, king, isOccupied(to), to) + targets &= targets - 1L + + private def genEvasions(king: Int, checkers: Long, moves: MoveList): Unit = + var sliders = checkers & (this.bishops ^ this.rooks ^ this.queens) + var attacked = 0L + while sliders != 0 do + val slider = Bitboard.lsb(sliders) + attacked |= Bitboard.RAYS(king)(slider) ^ (1L << slider) + sliders &= sliders - 1L + + genSafeKing(king, ~us() & ~attacked, moves) + + if checkers != 0 && !Bitboard.moreThanOne(checkers) then + val checker = Bitboard.lsb(checkers) + val target = Bitboard.BETWEEN(king)(checker) | checkers + genNonKing(target, moves) + + private def genPawn(mask: Long, moves: MoveList): Unit = + var capturers = us() & this.pawns + while capturers != 0 do + val from = Bitboard.lsb(capturers) + var targets = Bitboard.pawnAttacks(this.turn, from) & them() & mask + while targets != 0 do + val to = Bitboard.lsb(targets) + addPawnMoves(from, true, to, moves) + targets &= targets - 1L + capturers &= capturers - 1L + + var singleMoves = + ~this.occupied & (if this.turn then (this.white & this.pawns) << 8 else (this.black & this.pawns) >>> 8) + var doubleMoves = + ~this.occupied & (if this.turn then singleMoves << 8 else singleMoves >>> 8) & Bitboard.RANKS( + if this.turn then 3 else 4 + ) + + singleMoves &= mask + doubleMoves &= mask + + while singleMoves != 0 do + val to = Bitboard.lsb(singleMoves) + val from = to + (if this.turn then -8 else 8) + addPawnMoves(from, false, to, moves) + singleMoves &= singleMoves - 1L + + while doubleMoves != 0 do + val to = Bitboard.lsb(doubleMoves) + val from = to + (if this.turn then -16 else 16) + moves.pushNormal(this, Role.PAWN, from, false, to) + doubleMoves &= doubleMoves - 1L + + private def addPawnMoves(from: Int, capture: Boolean, to: Int, moves: MoveList): Unit = + if Square.rank(to) == (if this.turn then 7 else 0) then + moves.pushPromotion(this, from, capture, to, Role.QUEEN) + moves.pushPromotion(this, from, capture, to, Role.KNIGHT) + moves.pushPromotion(this, from, capture, to, Role.ROOK) + moves.pushPromotion(this, from, capture, to, Role.BISHOP) + else moves.pushNormal(this, Role.PAWN, from, capture, to) + + private def genEnPassant(moves: MoveList): Unit = + var pawns = us() & this.pawns & Bitboard.pawnAttacks(!this.turn, this.epSquare) + while pawns != 0 do + val pawn = Bitboard.lsb(pawns) + moves.pushEnPassant(this, pawn, this.epSquare) + pawns &= pawns - 1L + + private def genCastling(king: Int, moves: MoveList): Unit = + var rooks = this.castlingRights & Bitboard.RANKS(if this.turn then 0 else 7) + while rooks != 0 do + val rook = Bitboard.lsb(rooks) + val path = Bitboard.BETWEEN(king)(rook) + if (path & this.occupied) == 0 then + val kingTo = Square.combine(if rook < king then Square.C1 else Square.G1, king) + var kingPath = Bitboard.BETWEEN(king)(kingTo) | (1L << kingTo) | (1L << king) + breakable: + while kingPath != 0 do + val sq = Bitboard.lsb(kingPath) + if attacksTo(sq, !this.turn, this.occupied ^ (1L << king)) != 0 then break + kingPath &= kingPath - 1L + if kingPath == 0 then moves.pushCastle(this, king, rook) + rooks &= rooks - 1L + + private def isSafe(king: Int, move: Move, blockers: Long): Boolean = + move.`type` match + case Move.NORMAL => + !Bitboard.contains(us() & blockers, move.from) || Square.aligned(move.from, move.to, king) + case Move.EN_PASSANT => + var occupied = this.occupied + occupied ^= (1L << move.from) + occupied ^= (1L << Square.combine(move.to, move.from)) + occupied |= (1L << move.to) + (Bitboard.rookAttacks(king, occupied) & them() & (this.rooks ^ this.queens)) == 0 && + (Bitboard.bishopAttacks(king, occupied) & them() & (this.bishops ^ this.queens)) == 0 + case _ => true diff --git a/src/main/scala/game/Encoder.scala b/src/main/scala/game/Encoder.scala new file mode 100644 index 0000000..5fd5d2d --- /dev/null +++ b/src/main/scala/game/Encoder.scala @@ -0,0 +1,164 @@ +package org.lichess.compression.game + +import java.util.regex.{ Matcher, Pattern } +import org.lichess.compression.BitOps + +object Encoder: + + private val moveList = new ThreadLocal[MoveList]: + override def initialValue(): MoveList = new MoveList() + + private val SAN_RE = + "([NBKRQ])?([a-h])?([1-8])?x?([a-h][1-8])(?:=([NBRQK]))?[\\+#]?".r + + private def charToRole(c: Char): Role = c match + case 'N' => Role.KNIGHT + case 'B' => Role.BISHOP + case 'R' => Role.ROOK + case 'Q' => Role.QUEEN + case 'K' => Role.KING + case _ => throw new IllegalArgumentException() + + def encode(pgnMoves: Array[String]): Array[Byte] = + val writer = new BitOps.Writer() + val board = new Board() + val legals = moveList.get() + + for pgnMove <- pgnMoves do + var role: Role = null + var promotion: Role = null + var from: Long = Bitboard.ALL + var to: Int = 0 + + if pgnMove.startsWith("O-O-O") then + role = Role.KING + from = board.kings + to = Bitboard.lsb(board.rooks & Bitboard.RANKS(if (board.turn) 0 else 7)) + else if pgnMove.startsWith("O-O") then + role = Role.KING + from = board.kings + to = Bitboard.msb(board.rooks & Bitboard.RANKS(if (board.turn) 0 else 7)) + else + SAN_RE.findFirstMatchIn(pgnMove) match + case None => + return null + case Some(matcher) => + val roleStr = matcher.group(1) + role = if (roleStr == null) Role.PAWN else charToRole(roleStr.charAt(0)) + if matcher.group(2) != null then from &= Bitboard.FILES(matcher.group(2).charAt(0) - 'a') + if matcher.group(3) != null then from &= Bitboard.RANKS(matcher.group(3).charAt(0) - '1') + + to = Square.square(matcher.group(4).charAt(0) - 'a', matcher.group(4).charAt(1) - '1') + + if matcher.group(5) != null then promotion = charToRole(matcher.group(5).charAt(0)) + + board.legalMoves(legals) + legals.sort() + var foundMatch = false + for i <- 0 until legals.getSize() do + val legal = legals.get(i) + if legal.role == role && legal.to == to && legal.promotion == promotion && Bitboard.contains( + from, + legal.from + ) + then + if foundMatch then return null + Huffman.write(i, writer) + board.play(legal) + foundMatch = true + + if !foundMatch then return null + + writer.toArray() + end encode + + case class DecodeResult( + pgnMoves: Array[String], + board: Board, + halfMoveClock: Int, + positionHashes: Array[Byte], + lastUci: String + ) + + def decode(input: Array[Byte], plies: Int): DecodeResult = + val reader = BitOps.Reader(input) + val output = Array.ofDim[String](plies) + val board = Board() + val legals = moveList.get() + var lastUci: String = null + var lastZeroingPly = -1 + var lastIrreversiblePly = -1 + val positionHashes = Array.ofDim[Byte](3 * (plies + 1)) + setHash(positionHashes, -1, board.zobristHash()) + + for i <- 0 to plies do + if 0 < i || i < plies then board.legalMoves(legals) + + if 0 < i then if board.isCheck() then output(i - 1) += (if legals.isEmpty then "#" else "+") + + if i < plies then + legals.sort() + val move = legals.get(Huffman.read(reader)) + output(i) = san(move, legals) + board.play(move) + + if move.isZeroing then lastZeroingPly = i + if move.isIrreversible then lastIrreversiblePly = i + setHash(positionHashes, i, board.zobristHash()) + + if i + 1 == plies then lastUci = move.uci() + end for + + DecodeResult( + output, + board, + plies - 1 - lastZeroingPly, + positionHashes.slice(0, 3 * (plies - lastIrreversiblePly)), + lastUci + ) + end decode + + private def san(move: Move, legals: MoveList): String = move.`type` match + case Move.NORMAL | Move.EN_PASSANT => + val builder = new StringBuilder(6) + builder.append(move.role.symbol) + + if move.role != Role.PAWN then + var file = false + var rank = false + var others = 0L + + for i <- 0 until legals.getSize() do + val other = legals.get(i) + if other.role == move.role && other.to == move.to && other.from != move.from then + others |= 1L << other.from + + if others != 0 then + if (others & Bitboard.RANKS(Square.rank(move.from))) != 0 then file = true + if (others & Bitboard.FILES(Square.file(move.from))) != 0 then rank = true + else file = true + + if file then builder.append((Square.file(move.from) + 'a').toChar) + if rank then builder.append((Square.rank(move.from) + '1').toChar) + else if move.capture then builder.append((Square.file(move.from) + 'a').toChar) + + if move.capture then builder.append('x') + + builder.append((Square.file(move.to) + 'a').toChar) + builder.append((Square.rank(move.to) + '1').toChar) + if move.promotion != null then builder.append(s"=${move.promotion.symbol}") + + builder.toString() + + case Move.CASTLING => + if move.from < move.to then "O-O" else "O-O-O" + + case _ => "--" + end san + + private def setHash(buffer: Array[Byte], ply: Int, hash: Int): Unit = + val base = buffer.length - 3 * (ply + 1 + 1) + buffer(base) = (hash >>> 16).toByte + buffer(base + 1) = (hash >>> 8).toByte + buffer(base + 2) = hash.toByte +end Encoder diff --git a/src/main/scala/game/Huffman.scala b/src/main/scala/game/Huffman.scala new file mode 100644 index 0000000..c83e84f --- /dev/null +++ b/src/main/scala/game/Huffman.scala @@ -0,0 +1,291 @@ +package org.lichess.compression.game + +import org.lichess.compression.BitOps + +object Huffman: + def write(value: Int, writer: BitOps.Writer): Unit = + val symbol = CODES(value) + writer.writeBits(symbol.code, symbol.bits) + + def read(reader: BitOps.Reader): Int = + def traverse(node: Node): Node = + if node.zero == null && node.one == null then node + else + val bit = reader.readBits(1) + if bit == 0 then traverse(node.zero) + else traverse(node.one) + traverse(ROOT).leaf + + private case class Symbol(code: Int, bits: Int) + + private class Node(val zero: Node, val one: Node, val leaf: Int): + def this(leaf: Int) = this(null, null, leaf) + def this(zero: Node, one: Node) = this(zero, one, -1) + + private def buildTree(code: Int, bits: Int): Node = + assert(bits <= 32) + (0 to 0xff).find(i => CODES(i).code == code && CODES(i).bits == bits) match + case Some(i) => Node(i) + case None => Node(buildTree(code << 1, bits + 1), buildTree((code << 1) | 1, bits + 1)) + + private def b(s: String): Int = Integer.parseInt(s, 2) + + private val CODES = Array[Symbol]( + Symbol(b("00"), 2), // 0: 225883932 (20.71%) + Symbol(b("100"), 3), // 1: 134956126 (12.37%) + Symbol(b("1101"), 4), // 2: 89041269 (8.16%) + Symbol(b("1010"), 4), // 3: 69386238 (6.36%) + Symbol(b("0101"), 4), // 4: 57040790 (5.23%) + Symbol(b("11101"), 5), // 5: 44974559 (4.12%) + Symbol(b("10111"), 5), // 6: 36547155 (3.35%) + Symbol(b("01110"), 5), // 7: 31624920 (2.90%) + Symbol(b("01100"), 5), // 8: 28432772 (2.61%) + Symbol(b("01000"), 5), // 9: 26540493 (2.43%) + Symbol(b("111101"), 6), // 10: 24484873 (2.24%) + Symbol(b("111001"), 6), // 11: 23058034 (2.11%) + Symbol(b("111100"), 6), // 12: 23535272 (2.16%) + Symbol(b("110011"), 6), // 13: 20482457 (1.88%) + Symbol(b("110010"), 6), // 14: 20450172 (1.87%) + Symbol(b("110000"), 6), // 15: 18316057 (1.68%) + Symbol(b("101101"), 6), // 16: 17214833 (1.58%) + Symbol(b("101100"), 6), // 17: 16964761 (1.56%) + Symbol(b("011111"), 6), // 18: 16530028 (1.52%) + Symbol(b("011011"), 6), // 19: 15369510 (1.41%) + Symbol(b("010011"), 6), // 20: 14178440 (1.30%) + Symbol(b("011010"), 6), // 21: 14275714 (1.31%) + Symbol(b("1111111"), 7), // 22: 13353306 (1.22%) + Symbol(b("1111101"), 7), // 23: 12829602 (1.18%) + Symbol(b("1111110"), 7), // 24: 13102592 (1.20%) + Symbol(b("1111100"), 7), // 25: 11932647 (1.09%) + Symbol(b("1110000"), 7), // 26: 10608657 (0.97%) + Symbol(b("1100011"), 7), // 27: 10142459 (0.93%) + Symbol(b("0111101"), 7), // 28: 8294594 (0.76%) + Symbol(b("0100101"), 7), // 29: 7337490 (0.67%) + Symbol(b("0100100"), 7), // 30: 6337744 (0.58%) + Symbol(b("11100010"), 8), // 31: 5380717 (0.49%) + Symbol(b("11000101"), 8), // 32: 4560556 (0.42%) + Symbol(b("01111001"), 8), // 33: 3913313 (0.36%) + Symbol(b("111000111"), 9), // 34: 3038767 (0.28%) + Symbol(b("110001001"), 9), // 35: 2480514 (0.23%) + Symbol(b("011110001"), 9), // 36: 1951026 (0.18%) + Symbol(b("011110000"), 9), // 37: 1521451 (0.14%) + Symbol(b("1110001100"), 10), // 38: 1183252 (0.11%) + Symbol(b("1100010000"), 10), // 39: 938708 (0.09%) + Symbol(b("11100011010"), 11), // 40: 673339 (0.06%) + Symbol(b("11000100010"), 11), // 41: 513153 (0.05%) + Symbol(b("111000110110"), 12), // 42: 377299 (0.03%) + Symbol(b("110001000110"), 12), // 43: 276996 (0.03%) + Symbol(b("1110001101110"), 13), // 44: 199682 (0.02%) + Symbol(b("1100010001110"), 13), // 45: 144602 (0.01%) + Symbol(b("11100011011110"), 14), // 46: 103313 (0.01%) + Symbol(b("11000100011110"), 14), // 47: 73046 (0.01%) + Symbol(b("111000110111110"), 15), // 48: 52339 (0.00%) + Symbol(b("110001000111110"), 15), // 49: 36779 (0.00%) + Symbol(b("1110001101111110"), 16), // 50: 26341 (0.00%) + Symbol(b("1100010001111110"), 16), // 51: 18719 (0.00%) + Symbol(b("11000100011111111"), 17), // 52: 13225 (0.00%) + Symbol(b("111000110111111111"), 18), // 53: 9392 (0.00%) + Symbol(b("111000110111111101"), 18), // 54: 6945 (0.00%) + Symbol(b("110001000111111100"), 18), // 55: 4893 (0.00%) + Symbol(b("1110001101111111100"), 19), // 56: 3698 (0.00%) + Symbol(b("1100010001111111011"), 19), // 57: 2763 (0.00%) + Symbol(b("11100011011111111011"), 20), // 58: 2114 (0.00%) + Symbol(b("11100011011111110010"), 20), // 59: 1631 (0.00%) + Symbol(b("11100011011111110000"), 20), // 60: 1380 (0.00%) + Symbol(b("111000110111111110101"), 21), // 61: 1090 (0.00%) + Symbol(b("111000110111111100110"), 21), // 62: 887 (0.00%) + Symbol(b("111000110111111100010"), 21), // 63: 715 (0.00%) + Symbol(b("110001000111111101001"), 21), // 64: 590 (0.00%) + Symbol(b("110001000111111101000"), 21), // 65: 549 (0.00%) + Symbol(b("1110001101111111101000"), 22), // 66: 477 (0.00%) + Symbol(b("1110001101111111000110"), 22), // 67: 388 (0.00%) + Symbol(b("1100010001111111010111"), 22), // 68: 351 (0.00%) + Symbol(b("1100010001111111010101"), 22), // 69: 319 (0.00%) + Symbol(b("11100011011111111010011"), 23), // 70: 262 (0.00%) + Symbol(b("11100011011111110011110"), 23), // 71: 236 (0.00%) + Symbol(b("11100011011111110001110"), 23), // 72: 200 (0.00%) + Symbol(b("11100011011111110001111"), 23), // 73: 210 (0.00%) + Symbol(b("11000100011111110101100"), 23), // 74: 153 (0.00%) + Symbol(b("111000110111111100111011"), 24), // 75: 117 (0.00%) + Symbol(b("111000110111111110100100"), 24), // 76: 121 (0.00%) + Symbol(b("111000110111111100111111"), 24), // 77: 121 (0.00%) + Symbol(b("111000110111111100111010"), 24), // 78: 115 (0.00%) + Symbol(b("110001000111111101011011"), 24), // 79: 95 (0.00%) + Symbol(b("110001000111111101010011"), 24), // 80: 75 (0.00%) + Symbol(b("110001000111111101010001"), 24), // 81: 67 (0.00%) + Symbol(b("1110001101111111001110011"), 25), // 82: 55 (0.00%) + Symbol(b("1110001101111111001110001"), 25), // 83: 50 (0.00%) + Symbol(b("1110001101111111001110010"), 25), // 84: 55 (0.00%) + Symbol(b("1100010001111111010100101"), 25), // 85: 33 (0.00%) + Symbol(b("1100010001111111010110100"), 25), // 86: 33 (0.00%) + Symbol(b("1100010001111111010100001"), 25), // 87: 30 (0.00%) + Symbol(b("11100011011111110011111011"), 26), // 88: 32 (0.00%) + Symbol(b("11100011011111110011111001"), 26), // 89: 28 (0.00%) + Symbol(b("11100011011111110011111010"), 26), // 90: 29 (0.00%) + Symbol(b("11100011011111110011111000"), 26), // 91: 27 (0.00%) + Symbol(b("11000100011111110101101011"), 26), // 92: 21 (0.00%) + Symbol(b("111000110111111110100101111"), 27), // 93: 15 (0.00%) + Symbol(b("110001000111111101011010100"), 27), // 94: 9 (0.00%) + Symbol(b("110001000111111101011010101"), 27), // 95: 10 (0.00%) + Symbol(b("111000110111111100111000010"), 27), // 96: 12 (0.00%) + Symbol(b("111000110111111100111000011"), 27), // 97: 12 (0.00%) + Symbol(b("110001000111111101010010011"), 27), // 98: 8 (0.00%) + Symbol(b("1110001101111111101001010011"), 28), // 99: 7 (0.00%) + Symbol(b("1100010001111111010100100101"), 28), // 100: 2 (0.00%) + Symbol(b("1110001101111111001110000011"), 28), // 101: 4 (0.00%) + Symbol(b("1110001101111111001110000010"), 28), // 102: 5 (0.00%) + Symbol(b("1110001101111111001110000000"), 28), // 103: 5 (0.00%) + Symbol(b("11100011011111110011100000010"), 29), // 104 + Symbol(b("11000100011111110101000001001"), 29), // 105: 5 (0.00%) + Symbol(b("11100011011111110011100000011"), 29), // 106: 1 (0.00%) + Symbol(b("11000100011111110101000001000"), 29), // 107: 1 (0.00%) + Symbol(b("11000100011111110101000000011"), 29), // 108 + Symbol(b("110001000111111101010000011110"), 30), // 109: 1 (0.00%) + Symbol(b("111000110111111110100101100110"), 30), // 110: 2 (0.00%) + Symbol(b("111000110111111110100101010111"), 30), // 111: 1 (0.00%) + Symbol(b("110001000111111101010000001101"), 30), // 112: 1 (0.00%) + Symbol(b("111000110111111110100101100010"), 30), // 113 + Symbol(b("110001000111111101010000001000"), 30), // 114 + Symbol(b("110001000111111101010000000101"), 30), // 115: 1 (0.00%) + Symbol(b("110001000111111101010000000000"), 30), // 116 + Symbol(b("110001000111111101010000001010"), 30), // 117 + Symbol(b("110001000111111101010010001101"), 30), // 118 + Symbol(b("110001000111111101010010010011"), 30), // 119 + Symbol(b("110001000111111101010010010010"), 30), // 120 + Symbol(b("110001000111111101010010010001"), 30), // 121 + Symbol(b("110001000111111101010010010000"), 30), // 122 + Symbol(b("110001000111111101010010001011"), 30), // 123 + Symbol(b("110001000111111101010010001010"), 30), // 124 + Symbol(b("110001000111111101010010001001"), 30), // 125 + Symbol(b("110001000111111101010010001000"), 30), // 126 + Symbol(b("110001000111111101010010000111"), 30), // 127 + Symbol(b("110001000111111101010010000110"), 30), // 128 + Symbol(b("110001000111111101010010000011"), 30), // 129 + Symbol(b("110001000111111101010010000010"), 30), // 130 + Symbol(b("110001000111111101010000011011"), 30), // 131 + Symbol(b("110001000111111101010000011010"), 30), // 132 + Symbol(b("110001000111111101010000011001"), 30), // 133 + Symbol(b("110001000111111101010000011000"), 30), // 134 + Symbol(b("110001000111111101010000010101"), 30), // 135 + Symbol(b("110001000111111101010000010100"), 30), // 136 + Symbol(b("110001000111111101010010000101"), 30), // 137 + Symbol(b("110001000111111101010010000100"), 30), // 138 + Symbol(b("110001000111111101010000011111"), 30), // 139 + Symbol(b("110001000111111101010000011101"), 30), // 140 + Symbol(b("110001000111111101010000011100"), 30), // 141 + Symbol(b("110001000111111101010010000001"), 30), // 142 + Symbol(b("110001000111111101010010000000"), 30), // 143 + Symbol(b("110001000111111101010000001111"), 30), // 144 + Symbol(b("110001000111111101010000001110"), 30), // 145 + Symbol(b("110001000111111101010000001100"), 30), // 146 + Symbol(b("110001000111111101010000010111"), 30), // 147 + Symbol(b("110001000111111101010000010110"), 30), // 148 + Symbol(b("110001000111111101010000001001"), 30), // 149 + Symbol(b("110001000111111101010000000100"), 30), // 150 + Symbol(b("110001000111111101010000000011"), 30), // 151 + Symbol(b("110001000111111101010000000010"), 30), // 152 + Symbol(b("110001000111111101010000000001"), 30), // 153 + Symbol(b("110001000111111101010000001011"), 30), // 154 + Symbol(b("110001000111111101010010001111"), 30), // 155 + Symbol(b("110001000111111101010010001110"), 30), // 156 + Symbol(b("110001000111111101010010001100"), 30), // 157 + Symbol(b("1110001101111111101001010111101"), 31), // 158 + Symbol(b("1110001101111111101001010111111"), 31), // 159 + Symbol(b("1110001101111111101001010100010"), 31), // 160 + Symbol(b("1110001101111111101001011011111"), 31), // 161 + Symbol(b("1110001101111111101001010100100"), 31), // 162 + Symbol(b("1110001101111111101001010111001"), 31), // 163 + Symbol(b("1110001101111111101001011011010"), 31), // 164 + Symbol(b("1110001101111111101001011010010"), 31), // 165 + Symbol(b("1110001101111111101001011010000"), 31), // 166 + Symbol(b("1110001101111111101001010111010"), 31), // 167 + Symbol(b("1110001101111111101001010001011"), 31), // 168 + Symbol(b("1110001101111111101001010001010"), 31), // 169 + Symbol(b("1110001101111111101001010001001"), 31), // 170 + Symbol(b("1110001101111111101001010001000"), 31), // 171 + Symbol(b("1110001101111111101001010000111"), 31), // 172 + Symbol(b("1110001101111111101001010000110"), 31), // 173 + Symbol(b("1110001101111111101001010000101"), 31), // 174 + Symbol(b("1110001101111111101001010000100"), 31), // 175 + Symbol(b("1110001101111111101001011010111"), 31), // 176 + Symbol(b("1110001101111111101001011010110"), 31), // 177 + Symbol(b("1110001101111111101001011010101"), 31), // 178 + Symbol(b("1110001101111111101001011010100"), 31), // 179 + Symbol(b("1110001101111111101001010110111"), 31), // 180 + Symbol(b("1110001101111111101001010110110"), 31), // 181 + Symbol(b("1110001101111111101001010010101"), 31), // 182 + Symbol(b("1110001101111111101001010010100"), 31), // 183 + Symbol(b("1110001101111111101001010110101"), 31), // 184 + Symbol(b("1110001101111111101001010110100"), 31), // 185 + Symbol(b("1110001101111111101001010010111"), 31), // 186 + Symbol(b("1110001101111111101001010010110"), 31), // 187 + Symbol(b("1110001101111111101001010110001"), 31), // 188 + Symbol(b("1110001101111111101001010110000"), 31), // 189 + Symbol(b("1110001101111111101001010010011"), 31), // 190 + Symbol(b("1110001101111111101001010010010"), 31), // 191 + Symbol(b("1110001101111111101001011101101"), 31), // 192 + Symbol(b("1110001101111111101001011101100"), 31), // 193 + Symbol(b("1110001101111111101001011101011"), 31), // 194 + Symbol(b("1110001101111111101001011101010"), 31), // 195 + Symbol(b("1110001101111111101001011100111"), 31), // 196 + Symbol(b("1110001101111111101001011100110"), 31), // 197 + Symbol(b("1110001101111111101001010010001"), 31), // 198 + Symbol(b("1110001101111111101001010010000"), 31), // 199 + Symbol(b("1110001101111111101001011100011"), 31), // 200 + Symbol(b("1110001101111111101001011100010"), 31), // 201 + Symbol(b("1110001101111111101001011100001"), 31), // 202 + Symbol(b("1110001101111111101001011100000"), 31), // 203 + Symbol(b("1110001101111111101001011101001"), 31), // 204 + Symbol(b("1110001101111111101001011101000"), 31), // 205 + Symbol(b("1110001101111111101001010001111"), 31), // 206 + Symbol(b("1110001101111111101001010001110"), 31), // 207 + Symbol(b("1110001101111111101001010000011"), 31), // 208 + Symbol(b("1110001101111111101001010000010"), 31), // 209 + Symbol(b("1110001101111111101001010001101"), 31), // 210 + Symbol(b("1110001101111111101001010001100"), 31), // 211 + Symbol(b("1110001101111111101001011001111"), 31), // 212 + Symbol(b("1110001101111111101001011001110"), 31), // 213 + Symbol(b("1110001101111111101001010000001"), 31), // 214 + Symbol(b("1110001101111111101001010000000"), 31), // 215 + Symbol(b("1110001101111111101001011011001"), 31), // 216 + Symbol(b("1110001101111111101001011011000"), 31), // 217 + Symbol(b("1110001101111111101001011100101"), 31), // 218 + Symbol(b("1110001101111111101001011100100"), 31), // 219 + Symbol(b("1110001101111111101001010101101"), 31), // 220 + Symbol(b("1110001101111111101001010101100"), 31), // 221 + Symbol(b("1110001101111111101001010110011"), 31), // 222 + Symbol(b("1110001101111111101001010110010"), 31), // 223 + Symbol(b("1110001101111111101001010101001"), 31), // 224 + Symbol(b("1110001101111111101001010101000"), 31), // 225 + Symbol(b("1110001101111111101001011101111"), 31), // 226 + Symbol(b("1110001101111111101001011101110"), 31), // 227 + Symbol(b("1110001101111111101001011001011"), 31), // 228 + Symbol(b("1110001101111111101001011001010"), 31), // 229 + Symbol(b("1110001101111111101001011000011"), 31), // 230 + Symbol(b("1110001101111111101001011000010"), 31), // 231 + Symbol(b("1110001101111111101001010101011"), 31), // 232 + Symbol(b("1110001101111111101001010101010"), 31), // 233 + Symbol(b("1110001101111111101001011001001"), 31), // 234 + Symbol(b("1110001101111111101001011001000"), 31), // 235 + Symbol(b("1110001101111111101001011000111"), 31), // 236 + Symbol(b("1110001101111111101001011000110"), 31), // 237 + Symbol(b("1110001101111111101001011000001"), 31), // 238 + Symbol(b("1110001101111111101001011000000"), 31), // 239 + Symbol(b("1110001101111111101001010111100"), 31), // 240 + Symbol(b("1110001101111111101001010100111"), 31), // 241 + Symbol(b("1110001101111111101001010100110"), 31), // 242 + Symbol(b("1110001101111111101001010111110"), 31), // 243 + Symbol(b("1110001101111111101001010100011"), 31), // 244 + Symbol(b("1110001101111111101001010100001"), 31), // 245 + Symbol(b("1110001101111111101001010100000"), 31), // 246 + Symbol(b("1110001101111111101001011011110"), 31), // 247 + Symbol(b("1110001101111111101001010100101"), 31), // 248 + Symbol(b("1110001101111111101001011011101"), 31), // 249 + Symbol(b("1110001101111111101001011011100"), 31), // 250 + Symbol(b("1110001101111111101001010111000"), 31), // 251 + Symbol(b("1110001101111111101001011011011"), 31), // 252 + Symbol(b("1110001101111111101001011010001"), 31), // 253 + Symbol(b("1110001101111111101001011010011"), 31), // 254 + Symbol(b("1110001101111111101001010111011"), 31) // 255 + ) + private val ROOT = buildTree(0, 0) diff --git a/src/main/scala/game/Magic.scala b/src/main/scala/game/Magic.scala new file mode 100644 index 0000000..b8b9dec --- /dev/null +++ b/src/main/scala/game/Magic.scala @@ -0,0 +1,138 @@ +package org.lichess.compression.game + +case class Magic(mask: Long, factor: Long, offset: Int) + +object Magic: + val ROOK: Array[Magic] = Array( + Magic(0x000101010101017eL, 0x00280077ffebfffeL, 26304), + Magic(0x000202020202027cL, 0x2004010201097fffL, 35520), + Magic(0x000404040404047aL, 0x0010020010053fffL, 38592), + Magic(0x0008080808080876L, 0x0040040008004002L, 8026), + Magic(0x001010101010106eL, 0x7fd00441ffffd003L, 22196), + Magic(0x002020202020205eL, 0x4020008887dffffeL, 80870), + Magic(0x004040404040403eL, 0x004000888847ffffL, 76747), + Magic(0x008080808080807eL, 0x006800fbff75fffdL, 30400), + Magic(0x0001010101017e00L, 0x000028010113ffffL, 11115), + Magic(0x0002020202027c00L, 0x0020040201fcffffL, 18205), + Magic(0x0004040404047a00L, 0x007fe80042ffffe8L, 53577), + Magic(0x0008080808087600L, 0x00001800217fffe8L, 62724), + Magic(0x0010101010106e00L, 0x00001800073fffe8L, 34282), + Magic(0x0020202020205e00L, 0x00001800e05fffe8L, 29196), + Magic(0x0040404040403e00L, 0x00001800602fffe8L, 23806), + Magic(0x0080808080807e00L, 0x000030002fffffa0L, 49481), + Magic(0x00010101017e0100L, 0x00300018010bffffL, 2410), + Magic(0x00020202027c0200L, 0x0003000c0085fffbL, 36498), + Magic(0x00040404047a0400L, 0x0004000802010008L, 24478), + Magic(0x0008080808760800L, 0x0004002020020004L, 10074), + Magic(0x00101010106e1000L, 0x0001002002002001L, 79315), + Magic(0x00202020205e2000L, 0x0001001000801040L, 51779), + Magic(0x00404040403e4000L, 0x0000004040008001L, 13586), + Magic(0x00808080807e8000L, 0x0000006800cdfff4L, 19323), + Magic(0x000101017e010100L, 0x0040200010080010L, 70612), + Magic(0x000202027c020200L, 0x0000080010040010L, 83652), + Magic(0x000404047a040400L, 0x0004010008020008L, 63110), + Magic(0x0008080876080800L, 0x0000040020200200L, 34496), + Magic(0x001010106e101000L, 0x0002008010100100L, 84966), + Magic(0x002020205e202000L, 0x0000008020010020L, 54341), + Magic(0x004040403e404000L, 0x0000008020200040L, 60421), + Magic(0x008080807e808000L, 0x0000820020004020L, 86402), + Magic(0x0001017e01010100L, 0x00fffd1800300030L, 50245), + Magic(0x0002027c02020200L, 0x007fff7fbfd40020L, 76622), + Magic(0x0004047a04040400L, 0x003fffbd00180018L, 84676), + Magic(0x0008087608080800L, 0x001fffde80180018L, 78757), + Magic(0x0010106e10101000L, 0x000fffe0bfe80018L, 37346), + Magic(0x0020205e20202000L, 0x0001000080202001L, 370), + Magic(0x0040403e40404000L, 0x0003fffbff980180L, 42182), + Magic(0x0080807e80808000L, 0x0001fffdff9000e0L, 45385), + Magic(0x00017e0101010100L, 0x00fffefeebffd800L, 61659), + Magic(0x00027c0202020200L, 0x007ffff7ffc01400L, 12790), + Magic(0x00047a0404040400L, 0x003fffbfe4ffe800L, 16762), + Magic(0x0008760808080800L, 0x001ffff01fc03000L, 0), + Magic(0x00106e1010101000L, 0x000fffe7f8bfe800L, 38380), + Magic(0x00205e2020202000L, 0x0007ffdfdf3ff808L, 11098), + Magic(0x00403e4040404000L, 0x0003fff85fffa804L, 21803), + Magic(0x00807e8080808000L, 0x0001fffd75ffa802L, 39189), + Magic(0x007e010101010100L, 0x00ffffd7ffebffd8L, 58628), + Magic(0x007c020202020200L, 0x007fff75ff7fbfd8L, 44116), + Magic(0x007a040404040400L, 0x003fff863fbf7fd8L, 78357), + Magic(0x0076080808080800L, 0x001fffbfdfd7ffd8L, 44481), + Magic(0x006e101010101000L, 0x000ffff810280028L, 64134), + Magic(0x005e202020202000L, 0x0007ffd7f7feffd8L, 41759), + Magic(0x003e404040404000L, 0x0003fffc0c480048L, 1394), + Magic(0x007e808080808000L, 0x0001ffffafd7ffd8L, 40910), + Magic(0x7e01010101010100L, 0x00ffffe4ffdfa3baL, 66516), + Magic(0x7c02020202020200L, 0x007fffef7ff3d3daL, 3897), + Magic(0x7a04040404040400L, 0x003fffbfdfeff7faL, 3930), + Magic(0x7608080808080800L, 0x001fffeff7fbfc22L, 72934), + Magic(0x6e10101010101000L, 0x0000020408001001L, 72662), + Magic(0x5e20202020202000L, 0x0007fffeffff77fdL, 56325), + Magic(0x3e40404040404000L, 0x0003ffffbf7dfeecL, 66501), + Magic(0x7e80808080808000L, 0x0001ffff9dffa333L, 14826) + ) + + val BISHOP: Array[Magic] = Array( + Magic(0x0040201008040200L, 0x007fbfbfbfbfbfffL, 5378), + Magic(0x0000402010080400L, 0x0000a060401007fcL, 4093), + Magic(0x0000004020100a00L, 0x0001004008020000L, 4314), + Magic(0x0000000040221400L, 0x0000806004000000L, 6587), + Magic(0x0000000002442800L, 0x0000100400000000L, 6491), + Magic(0x0000000204085000L, 0x000021c100b20000L, 6330), + Magic(0x0000020408102000L, 0x0000040041008000L, 5609), + Magic(0x0002040810204000L, 0x00000fb0203fff80L, 22236), + Magic(0x0020100804020000L, 0x0000040100401004L, 6106), + Magic(0x0040201008040000L, 0x0000020080200802L, 5625), + Magic(0x00004020100a0000L, 0x0000004010202000L, 16785), + Magic(0x0000004022140000L, 0x0000008060040000L, 16817), + Magic(0x0000000244280000L, 0x0000004402000000L, 6842), + Magic(0x0000020408500000L, 0x0000000801008000L, 7003), + Magic(0x0002040810200000L, 0x000007efe0bfff80L, 4197), + Magic(0x0004081020400000L, 0x0000000820820020L, 7356), + Magic(0x0010080402000200L, 0x0000400080808080L, 4602), + Magic(0x0020100804000400L, 0x00021f0100400808L, 4538), + Magic(0x004020100a000a00L, 0x00018000c06f3fffL, 29531), + Magic(0x0000402214001400L, 0x0000258200801000L, 45393), + Magic(0x0000024428002800L, 0x0000240080840000L, 12420), + Magic(0x0002040850005000L, 0x000018000c03fff8L, 15763), + Magic(0x0004081020002000L, 0x00000a5840208020L, 5050), + Magic(0x0008102040004000L, 0x0000020008208020L, 4346), + Magic(0x0008040200020400L, 0x0000804000810100L, 6074), + Magic(0x0010080400040800L, 0x0001011900802008L, 7866), + Magic(0x0020100a000a1000L, 0x0000804000810100L, 32139), + Magic(0x0040221400142200L, 0x000100403c0403ffL, 57673), + Magic(0x0002442800284400L, 0x00078402a8802000L, 55365), + Magic(0x0004085000500800L, 0x0000101000804400L, 15818), + Magic(0x0008102000201000L, 0x0000080800104100L, 5562), + Magic(0x0010204000402000L, 0x00004004c0082008L, 6390), + Magic(0x0004020002040800L, 0x0001010120008020L, 7930), + Magic(0x0008040004081000L, 0x000080809a004010L, 13329), + Magic(0x00100a000a102000L, 0x0007fefe08810010L, 7170), + Magic(0x0022140014224000L, 0x0003ff0f833fc080L, 27267), + Magic(0x0044280028440200L, 0x007fe08019003042L, 53787), + Magic(0x0008500050080400L, 0x003fffefea003000L, 5097), + Magic(0x0010200020100800L, 0x0000101010002080L, 6643), + Magic(0x0020400040201000L, 0x0000802005080804L, 6138), + Magic(0x0002000204081000L, 0x0000808080a80040L, 7418), + Magic(0x0004000408102000L, 0x0000104100200040L, 7898), + Magic(0x000a000a10204000L, 0x0003ffdf7f833fc0L, 42012), + Magic(0x0014001422400000L, 0x0000008840450020L, 57350), + Magic(0x0028002844020000L, 0x00007ffc80180030L, 22813), + Magic(0x0050005008040200L, 0x007fffdd80140028L, 56693), + Magic(0x0020002010080400L, 0x00020080200a0004L, 5818), + Magic(0x0040004020100800L, 0x0000101010100020L, 7098), + Magic(0x0000020408102000L, 0x0007ffdfc1805000L, 4451), + Magic(0x0000040810204000L, 0x0003ffefe0c02200L, 4709), + Magic(0x00000a1020400000L, 0x0000000820806000L, 4794), + Magic(0x0000142240000000L, 0x0000000008403000L, 13364), + Magic(0x0000284402000000L, 0x0000000100202000L, 4570), + Magic(0x0000500804020000L, 0x0000004040802000L, 4282), + Magic(0x0000201008040200L, 0x0004010040100400L, 14964), + Magic(0x0000402010080400L, 0x00006020601803f4L, 4026), + Magic(0x0002040810204000L, 0x0003ffdfdfc28048L, 4826), + Magic(0x0004081020400000L, 0x0000000820820020L, 7354), + Magic(0x000a102040000000L, 0x0000000008208060L, 4848), + Magic(0x0014224000000000L, 0x0000000000808020L, 15946), + Magic(0x0028440200000000L, 0x0000000001002020L, 14932), + Magic(0x0050080402000000L, 0x0000000401002008L, 16588), + Magic(0x0020100804020000L, 0x0000004040404040L, 6905), + Magic(0x0040201008040200L, 0x007fff9fdf7ff813L, 16076) + ) diff --git a/src/main/scala/game/Move.scala b/src/main/scala/game/Move.scala new file mode 100644 index 0000000..e9c4b5f --- /dev/null +++ b/src/main/scala/game/Move.scala @@ -0,0 +1,80 @@ +package org.lichess.compression.game + +final case class Move( + var `type`: Int = 0, + var role: Role = null, + var from: Int = 0, + var capture: Boolean = false, + var to: Int = 0, + var promotion: Role = null, + var score: Int = 0 +): + + def set( + board: Board, + `type`: Int, + role: Role, + from: Int, + capture: Boolean, + to: Int, + promotion: Role + ): Unit = + this.`type` = `type` + this.role = role + this.from = from + this.capture = capture + this.to = to + this.promotion = promotion + val defendingPawns = Bitboard.pawnAttacks(board.turn, to) & board.pawns & board.them() + val moveValue = pieceValue(board, role, to) - pieceValue(board, role, from) + + this.score = (if promotion == null then 0 else promotion.index << 26) + + (if capture then 1 << 25 else 0) + + ((if defendingPawns == 0 then 6 else 5 - role.index) << 22) + + (512 + moveValue << 12) + + (to << 6) + + from + + def uci(): String = + val toSquare = + if `type` == Move.CASTLING then Square.combine(if to < from then Square.C1 else Square.G1, from) else to + val builder = new StringBuilder(if this.promotion == null then 4 else 5) + builder.append((Square.file(from) + 'a').toChar) + builder.append((Square.rank(from) + '1').toChar) + builder.append((Square.file(toSquare) + 'a').toChar) + builder.append((Square.rank(toSquare) + '1').toChar) + if this.promotion != null then builder.append(this.promotion.symbol.toLowerCase) + builder.toString + + def isZeroing: Boolean = capture || role == Role.PAWN + + def isIrreversible: Boolean = isZeroing || `type` == Move.CASTLING + + private def pieceValue(board: Board, role: Role, square: Int): Int = + Move.PSQT(role.index)(if board.turn then Square.mirror(square) else square) + +object Move: + val NORMAL = 0 + val EN_PASSANT = 1 + val CASTLING = 2 + + private val PSQT: Array[Array[Int]] = Array( + Array(0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50, 50, 50, 50, 50, 50, 10, 10, 20, 30, 30, 20, 10, 10, 5, 5, 10, + 25, 25, 10, 5, 5, 0, 0, 0, 20, 21, 0, 0, 0, 5, -5, -10, 0, 0, -10, -5, 5, 5, 10, 10, -31, -31, 10, 10, + 5, 0, 0, 0, 0, 0, 0, 0, 0), + Array(-50, -40, -30, -30, -30, -30, -40, -50, -40, -20, 0, 0, 0, 0, -20, -40, -30, 0, 10, 15, 15, 10, 0, + -30, -30, 5, 15, 20, 20, 15, 5, -30, -30, 0, 15, 20, 20, 15, 0, -30, -30, 5, 10, 15, 15, 11, 5, -30, + -40, -20, 0, 5, 5, 0, -20, -40, -50, -40, -30, -30, -30, -30, -40, -50), + Array(-20, -10, -10, -10, -10, -10, -10, -20, -10, 0, 0, 0, 0, 0, 0, -10, -10, 0, 5, 10, 10, 5, 0, -10, + -10, 5, 5, 10, 10, 5, 5, -10, -10, 0, 10, 10, 10, 10, 0, -10, -10, 10, 10, 10, 10, 10, 10, -10, -10, 5, + 0, 0, 0, 0, 5, -10, -20, -10, -10, -10, -10, -10, -10, -20), + Array(0, 0, 0, 0, 0, 0, 0, 0, 5, 10, 10, 10, 10, 10, 10, 5, -5, 0, 0, 0, 0, 0, 0, -5, -5, 0, 0, 0, 0, 0, + 0, -5, -5, 0, 0, 0, 0, 0, 0, -5, -5, 0, 0, 0, 0, 0, 0, -5, -5, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 5, 5, 0, + 0, 0), + Array(-20, -10, -10, -5, -5, -10, -10, -20, -10, 0, 0, 0, 0, 0, 0, -10, -10, 0, 5, 5, 5, 5, 0, -10, -5, 0, + 5, 5, 5, 5, 0, -5, 0, 0, 5, 5, 5, 5, 0, -5, -10, 5, 5, 5, 5, 5, 0, -10, -10, 0, 5, 0, 0, 0, 0, -10, -20, + -10, -10, -5, -5, -10, -10, -20), + Array(-30, -40, -40, -50, -50, -40, -40, -30, -30, -40, -40, -50, -50, -40, -40, -30, -30, -40, -40, -50, + -50, -40, -40, -30, -30, -40, -40, -50, -50, -40, -40, -30, -20, -30, -30, -40, -40, -30, -30, -20, -10, + -20, -20, -20, -20, -20, -20, -10, 20, 20, 0, 0, 0, 0, 20, 20, 0, 30, 10, 0, 0, 10, 30, 0) + ) diff --git a/src/main/scala/game/MoveList.scala b/src/main/scala/game/MoveList.scala new file mode 100644 index 0000000..9c91b3a --- /dev/null +++ b/src/main/scala/game/MoveList.scala @@ -0,0 +1,61 @@ +package org.lichess.compression.game + +import scala.collection.mutable.ArrayBuffer + +final class MoveList(capacity: Int = 256): + private val buffer = Array.tabulate(capacity)(_ => Move()) + private val comparator = java.util.Comparator.comparingInt[Move](_.score).reversed() + + private var size = 0 + + def clear(): Unit = size = 0 + + def getSize(): Int = size + + def get(i: Int): Move = + require(i < size) + buffer(i) + + def isEmpty: Boolean = size == 0 + + def pushNormal(board: Board, role: Role, from: Int, capture: Boolean, to: Int): Unit = + buffer(size).set(board, Move.NORMAL, role, from, capture, to, null) + size += 1 + + def pushPromotion(board: Board, from: Int, capture: Boolean, to: Int, promotion: Role): Unit = + buffer(size).set(board, Move.NORMAL, Role.PAWN, from, capture, to, promotion) + size += 1 + + def pushCastle(board: Board, king: Int, rook: Int): Unit = + buffer(size).set(board, Move.CASTLING, Role.KING, king, false, rook, null) + size += 1 + + def pushEnPassant(board: Board, capturer: Int, to: Int): Unit = + buffer(size).set(board, Move.EN_PASSANT, Role.PAWN, capturer, true, to, null) + size += 1 + + def sort(): Unit = + java.util.Arrays.sort[Move](buffer, 0, size, comparator) + + def anyMatch(predicate: Move => Boolean): Boolean = buffer.take(size).exists(predicate) + + def retain(predicate: Move => Boolean): Unit = + var i = 0 + while i < size do + if !predicate(buffer(i)) then swapRemove(i) + else i += 1 + + private def swapRemove(i: Int): Unit = + require(i < size) + size -= 1 + val tmp = buffer(i) + buffer(i) = buffer(size) + buffer(size) = tmp + + def pretty(): String = + val builder = new StringBuilder() + for i <- 0 until size do + val m = buffer(i) + builder.append(s"${m.uci()} ") + // builder.append(s"${m.role} ${m.from} ${m.to} ${m.capture} ${m.promotion.getOrElse("")}") + builder.toString() diff --git a/src/main/scala/game/ZobristHash.scala b/src/main/scala/game/ZobristHash.scala new file mode 100644 index 0000000..7151524 --- /dev/null +++ b/src/main/scala/game/ZobristHash.scala @@ -0,0 +1,116 @@ +package org.lichess.compression.game + +object ZobristHash: + def hashBoard(board: Board): Int = + hashPieces(board) ^ hashCastling(board) ^ hashTurn(board) ^ hashEnPassant(board) + + def hashPieces(board: Board): Int = + var hash = 0 + var occupied = board.occupied + while (occupied != 0) + val sq = Bitboard.lsb(occupied) + hash ^= hashPiece(sq, board.whiteAt(sq), board.roleAt(sq)) + occupied &= occupied - 1L + hash + + def hashPiece(square: Int, color: Boolean, role: Role): Int = + val index = role.index * 2 + (if (color) 1 else 0) + POLYGLOT(64 * index + square) + + def hashCastling(board: Board): Int = + var hash = 0 + val cr = board.castlingRights + if (Bitboard.contains(cr, Square.H1)) hash ^= POLYGLOT(768) + if (Bitboard.contains(cr, Square.A1)) hash ^= POLYGLOT(768 + 1) + if (Bitboard.contains(cr, Square.H8)) hash ^= POLYGLOT(768 + 2) + if (Bitboard.contains(cr, Square.A8)) hash ^= POLYGLOT(768 + 3) + hash + + def hashTurn(board: Board): Int = + if (board.turn) POLYGLOT(780) else 0 + + def hashEnPassant(board: Board): Int = + if (board.hasLegalEnPassant()) POLYGLOT(772 + Square.file(board.epSquare)) else 0 + + val POLYGLOT: Array[Int] = Array( + 0x9d3924, 0x2af739, 0x44db01, 0x9c15f7, 0x758344, 0x3290ac, 0x0fbbad, 0xe83a90, 0x0d7e76, 0x1a0838, + 0x9605d5, 0xd021ff, 0x40bdf1, 0x011355, 0x5db483, 0x239f8b, 0x05d1a1, 0x679f84, 0x7449bb, 0x7d11cd, + 0x82c770, 0xf3218f, 0x331478, 0x4bb38d, 0xaa649c, 0x8dbd98, 0x87d207, 0x19f3c7, 0xb4ab30, 0x7b0500, + 0xc9452c, 0x24aa6c, 0x4c9f34, 0x14a68f, 0xa71b9b, 0x03488b, 0x637b2b, 0x09d1bc, 0x357566, 0x735e2b, + 0x187270, 0x1fcbac, 0xd310a7, 0xbf983f, 0x9f74d1, 0x51ebdc, 0x5c82c5, 0xfcf7fe, 0x3253a7, 0x8c74c3, + 0xb9bc6c, 0x7ef48f, 0x11d505, 0x6568fc, 0x4de0b0, 0x96d693, 0x42e240, 0x6d2bdc, 0x42880b, 0x5f0f4a, + 0x39f890, 0x93c5b5, 0x63dc35, 0xec16ca, 0x5355f9, 0x07fb9f, 0x509341, 0x7bcbc3, 0x19fc8a, 0x637a77, + 0x8249a4, 0x79ad69, 0x14acba, 0xf145b6, 0xdabf2a, 0x24c3c9, 0xbb6e29, 0x0ce26c, 0xa49cd1, 0xe99d66, + 0x27e6ad, 0x8535f0, 0x54b3f4, 0x72b12c, 0xee954d, 0x9a85ac, 0x70ac4c, 0xf9b89d, 0x87b3e2, 0xa366e5, + 0xae4a93, 0x1920c0, 0x87bf02, 0x092237, 0xff07f6, 0x8de8dc, 0x9c1633, 0xb3f22c, 0x390e5f, 0x5bfea5, + 0x1e1032, 0x9a74ac, 0x4f80f7, 0x6304d0, 0x2171e6, 0x5b9b63, 0x506aac, 0x1881af, 0x650308, 0xdfd395, + 0xef927d, 0x7b32f7, 0xb9fd76, 0x05a7e8, 0xb5889c, 0x4a750a, 0xcf464c, 0xf53863, 0x3c79a0, 0xede6c8, + 0x799e81, 0x86536b, 0x97d737, 0xa24663, 0x043fca, 0x920e44, 0x70eb09, 0x73a192, 0x56436c, 0xefac4b, + 0xbb2157, 0x45f200, 0x930f80, 0xff6712, 0xae623f, 0xdd2c5b, 0x7eed12, 0x22fe54, 0xc91800, 0x808bd6, + 0xdec468, 0x1bede3, 0x435396, 0xaa969b, 0xa87832, 0x65942c, 0xded2d6, 0x21f085, 0xb41593, 0x91b859, + 0x10cff3, 0x28aed1, 0xc5cc1d, 0x5648f6, 0x2d2550, 0x9bc5a3, 0xef2f05, 0xaf2042, 0x480412, 0xaef3af, + 0x19afe5, 0x525938, 0xf4f076, 0x113796, 0xbce5d2, 0x9da424, 0x066f70, 0x4dc4de, 0x51039a, 0xc07a3f, + 0xb46ee9, 0xb3819a, 0x21a007, 0x2df16f, 0x763c4a, 0xf793c4, 0xd7288e, 0xde336a, 0x0bf692, 0x2c604a, + 0x4850e7, 0xcfc447, 0xb05ca3, 0x9ae182, 0xa4fc4b, 0xe75517, 0x69b97d, 0xf9b5b7, 0xfc6a82, 0x9c684c, + 0x8ec97d, 0x6703df, 0xc547f5, 0x78e376, 0xfe9a44, 0x08bd35, 0x9315e5, 0x94061b, 0xdf1d9f, 0x3bba57, + 0xd2b7ad, 0xf7a255, 0xd7f4f2, 0xd95be8, 0x336f52, 0xa74049, 0xa2f61b, 0x4f2a5c, 0x87d380, 0x16b9f7, + 0x7ba248, 0xf3a678, 0x39b0bf, 0xfcaf55, 0x18fcf6, 0x4c0563, 0x40e087, 0x8cffa9, 0x68ca39, 0x7a1ee9, + 0x9d1d60, 0x3810e3, 0x32095b, 0x35cab6, 0xa90b24, 0x77a225, 0x513e5e, 0x4361c0, 0xd941ac, 0x528f7c, + 0x52ab92, 0x9d1dfa, 0x722ff1, 0x1d1260, 0x7a249a, 0x04208f, 0x5a110c, 0x0cd9a4, 0x56fd23, 0x284c84, + 0x04feab, 0x742e1e, 0x9a9632, 0x881b82, 0x506e67, 0xb0183d, 0x0ed9b9, 0x5e11e8, 0xf67864, 0x1b85d4, + 0xdab9fe, 0x0d151d, 0xa865a5, 0x93c425, 0x99e7af, 0x48cbff, 0x7f9b6a, 0x58627e, 0x2cd16e, 0xd363ef, + 0x0ce2a3, 0x1a804a, 0x907f30, 0x501f65, 0x37624a, 0x957baf, 0x3a6c27, 0xd49503, 0x088e04, 0xf943ae, + 0x6c3b8e, 0x364f6f, 0xd60f6d, 0x56963b, 0x16f50e, 0xef1955, 0x565601, 0xecb539, 0xbac7a9, 0xb344c4, + 0x65d349, 0xb4b81b, 0xb42206, 0x071582, 0x7a13f1, 0xbc4097, 0x59b978, 0x99170a, 0x6f4233, 0x325928, + 0xd0e436, 0x565c31, 0x30f561, 0xd873db, 0x7bd94e, 0xc7d9f1, 0x947ae0, 0xc8c938, 0x3a9bf5, 0xd9a11f, + 0x0fd220, 0xb3f256, 0xb03031, 0x35dd37, 0xe9f608, 0xebfafa, 0x9255ab, 0xb9ab4c, 0x693501, 0xc62c58, + 0xcd454f, 0xbbe83f, 0xdc842b, 0xba8914, 0xa3bc94, 0xe9f676, 0x09c7e5, 0x852f54, 0x8107fc, 0x098954, + 0x23b70e, 0xc330de, 0x4715ed, 0xa8d7e4, 0x0572b9, 0xb57d2e, 0xe8d9ec, 0x2fe4b1, 0x11317b, 0x7fbf21, + 0x1725ca, 0x964e91, 0x3e2b8b, 0xbe7444, 0xf85b2b, 0x49353f, 0x1dd01a, 0x1fca8a, 0xfc7c95, 0x18a6a9, + 0xcccb70, 0x3bdbb9, 0xaa70b5, 0xe94c39, 0xb7a0b1, 0xd4dba8, 0x2e18bc, 0x2de096, 0xb9c11d, 0x64972d, + 0x94628d, 0xdbc0d2, 0xd2733c, 0x7e75d9, 0x6ced19, 0x97fcaa, 0x7b7749, 0x8547ed, 0x79999c, 0xcffe19, + 0x829626, 0x92fae2, 0x63e22c, 0xc678b6, 0x587388, 0x0981dc, 0x9f6578, 0x9ff38f, 0xe479ee, 0xe7f28e, + 0x56c074, 0x5544f7, 0x7b3f01, 0x121536, 0x7f5126, 0x7a7695, 0x3d5774, 0x8a1b08, 0x7b4a38, 0x950113, + 0x4da897, 0x3bc36e, 0x5d0a12, 0x7f9d1a, 0xda3a36, 0xdcdd7d, 0x368333, 0xce6834, 0xab9090, 0x43954b, + 0xb438c2, 0x10dcd7, 0xdbc27a, 0x9b3cdb, 0xb67b78, 0xbfced1, 0xa9119b, 0x1fff7a, 0xac12fb, 0xaf08da, + 0x1b0cab, 0xb559eb, 0xc37b45, 0xc3a9dc, 0xf3b8b6, 0x9fc477, 0x67378d, 0x6dd856, 0xa319ce, 0x073973, + 0x8a8e84, 0xe1925c, 0x74c04b, 0x4dda48, 0x9d266d, 0x7440fb, 0x133285, 0xd6bf7b, 0x4838d6, 0x1e1523, + 0x8f8419, 0x72c883, 0xd7a023, 0x94ebc8, 0x9fc10d, 0xde68a2, 0xa44cfe, 0x9d1d84, 0x51d2b1, 0x2fd7e4, + 0x65ca5b, 0xdd69a0, 0x604d51, 0x73aa8a, 0x1a8c1e, 0xaac40a, 0x764dbe, 0x1e99b9, 0x2c5e9d, 0x3a938f, + 0x26e6db, 0x469356, 0xc8763c, 0x3f6c6a, 0x7f7cc3, 0x9bfb22, 0x89039d, 0x8fe88b, 0xa09e8c, 0xfa7e39, + 0xd6b6d0, 0xdfea21, 0xb67c1f, 0xca1e37, 0x1cfc8b, 0xd18d85, 0x4ed0fe, 0xe4dbf0, 0x1761f9, 0x53898e, + 0x734de8, 0x2680b1, 0x298af2, 0x7983ee, 0x66c1a2, 0x9e17e4, 0xedb454, 0x50b704, 0x4cc317, 0x66b483, + 0x219b97, 0x261e4e, 0x1fe2cc, 0xd7504d, 0xb9571f, 0x1ddc03, 0xcf3f46, 0xf4f5d0, 0x38b652, 0x36f60e, + 0xeb3593, 0x9c4cd6, 0xaf0c31, 0x258e5a, 0x8b889d, 0xf4d145, 0xd4347f, 0xe699ed, 0x2472f6, 0xc2a1e7, + 0xab4f64, 0x637675, 0xa59e0b, 0x116d00, 0x2cf9c8, 0x0b090a, 0xabeedd, 0x58efc1, 0xc6e57a, 0x2eab8c, + 0x14a195, 0x7c0828, 0xd74bbe, 0x804456, 0xebe9ea, 0x03219a, 0x49787f, 0xa1e930, 0x5b45e5, 0xb49c3b, + 0xd4490a, 0x12a8f2, 0x001f83, 0x1877b5, 0xa2853b, 0x993e1d, 0xb35980, 0x252f59, 0xd23c8e, 0x1bda04, + 0x21e0bd, 0x3b097a, 0x8d14de, 0xf95cff, 0x387170, 0xca672b, 0x64c8e5, 0x241260, 0x106c09, 0x7fba19, + 0x7884d9, 0x0647df, 0x63573f, 0x4fc8e9, 0x1db956, 0xb8d912, 0xa2ebee, 0xd9f1f3, 0xefed53, 0x2e6d02, + 0xa9aa4d, 0xb64be8, 0x70cb6a, 0x98f076, 0xbf8447, 0x94c325, 0x3e003e, 0xb925a6, 0x61bdd1, 0xbf8d51, + 0x240ab5, 0xfc8761, 0xef02cd, 0xa1082c, 0x8215e5, 0xd39bb9, 0x273825, 0x61cf4f, 0x1b6bac, 0x758f45, + 0x959f58, 0xb063e9, 0x60e8ed, 0x7b6497, 0xfd080d, 0x8c90fd, 0x106f72, 0x797603, 0xa4ec01, 0x733ea7, + 0xb4d8f7, 0x9e21f4, 0x9d765e, 0xd30c08, 0x5d9433, 0x1a4e48, 0x6ffe73, 0xddf957, 0x64d0e2, 0x08dd9b, + 0x087e79, 0xe328e2, 0x1c2559, 0x720bf5, 0xb0774d, 0x443f64, 0x4112cf, 0xd813f2, 0x660d32, 0x59ac2c, + 0xe84696, 0x93b633, 0xc0c0f5, 0xcaf21e, 0x572777, 0x506c11, 0xd83cc2, 0x4a29c6, 0xed2df2, 0xb5635c, + 0x22af00, 0x52e762, 0x9aeba3, 0x944f6d, 0x6c47be, 0x6ad047, 0xa5b1cf, 0x7c45d8, 0x5092ef, 0x9338e6, + 0x455a4b, 0x6b02e6, 0x6b17b2, 0xd1e0cc, 0xde0c89, 0x50065e, 0x9c1169, 0x78edef, 0x6dc93d, 0xee97f4, + 0x32ab0e, 0x3a6853, 0x31865c, 0x67fef9, 0x1f2b1d, 0xb69e38, 0xaa9119, 0xf43c73, 0xfb4a3d, 0x3550c2, + 0x371f77, 0x6bfa9a, 0xcd04f3, 0xe32735, 0x9f9150, 0x049a7f, 0xfcb6be, 0x08de8a, 0x8f9887, 0xb5b407, + 0x230e34, 0x43ed7f, 0x3a88a0, 0x21874b, 0x1bdea1, 0x53c065, 0xe34a1d, 0xd6b04d, 0x5e9027, 0x2c046f, + 0xb10bb4, 0x3fa9dd, 0x0e09b8, 0x10e8b3, 0x9eedec, 0xd4c718, 0x81536d, 0x91b534, 0xec8177, 0x190e71, + 0xb592bf, 0x89c350, 0xac042e, 0xb49b52, 0xfb152f, 0x3e666e, 0x3b544e, 0xe805a1, 0x24b33c, 0xe74733, + 0x0a804d, 0x57e330, 0x4ae7d6, 0x2d8d54, 0xd1e649, 0x8a328a, 0x07a3ae, 0x84547d, 0x990a98, 0x1a4ff1, + 0xf6f7fd, 0x30c05b, 0x8d2636, 0x46c9fe, 0xccec0a, 0x4e9d28, 0x19ebb0, 0x4659d2, 0x963ef2, 0x74f851, + 0x5a0f54, 0x037270, 0xc7f6aa, 0x352787, 0x9853ea, 0xabbdcd, 0xcf05da, 0x49cad4, 0x7a4c10, 0xd9e92a, + 0x13ae97, 0x730499, 0x4e4b70, 0xff5772, 0x55b634, 0xb86222, 0xcac09a, 0xdaf8e9, 0xb5fdfc, 0x310cb3, + 0xe87fbb, 0x2102ae, 0xf8549e, 0x07a69a, 0xc4c118, 0xf9f489, 0x1af3db, 0xf5b4b0, 0x962ace, 0x046e3e, + 0xf05d12, 0x964781, 0x9c2ed4, 0x522e23, 0x177e00, 0x2bc60a, 0x222bbf, 0x486289, 0x7dc778, 0x8af387, + 0x1fab64, 0xe4d942, 0x9da058, 0x24c0e3, 0x233003, 0xd586bd, 0x5e5637, 0x7eba72, 0x0a56a5, 0xd79476, + 0x9e4c12, 0x17efee, 0x1d95b0, 0x93cbe0, 0x65fa4f, 0xd5f9e8, 0xc2b5a0, 0x593002, 0xce2f86, 0x7ca972, + 0x278533, 0xc61bb3, 0x150f36, 0x9f6a41, 0x64a53d, 0x142de4, 0x0c3352, 0x0a9c32, 0xe6c421, 0x71f1ce, + 0xf1bcc3, 0xe728e8, 0x96fbf8, 0x81a154, 0x5fa786, 0x56986e, 0x917f1d, 0xd20d8c, 0x31d71d, 0xf165b5, + 0xa57e63, 0x1ef6e6, 0x70cc73, 0xe21a6b, 0x003a93, 0x1c99de, 0xcf3145, 0xd0e442, 0x77c621, 0x67a34d, + 0xf8d626 + ) +end ZobristHash diff --git a/src/main/scala/game/model.scala b/src/main/scala/game/model.scala new file mode 100644 index 0000000..b908d5f --- /dev/null +++ b/src/main/scala/game/model.scala @@ -0,0 +1,35 @@ +package org.lichess.compression.game + +case class Piece(white: Boolean, role: Role) + +enum Role(val index: Int, val symbol: String): + case PAWN extends Role(0, "") + case KNIGHT extends Role(1, "N") + case BISHOP extends Role(2, "B") + case ROOK extends Role(3, "R") + case QUEEN extends Role(4, "Q") + case KING extends Role(5, "K") + +object Square: + val A1 = 0 + val C1 = 2 + val D1 = 3 + val F1 = 5 + val G1 = 6 + val H1 = 7 + val A8 = 56 + val H8 = 63 + + def square(file: Int, rank: Int): Int = file ^ (rank << 3) + + def file(square: Int): Int = square & 7 + + def rank(square: Int): Int = square >>> 3 + + def mirror(square: Int): Int = square ^ 0x38 + + def combine(a: Int, b: Int): Int = square(file(a), rank(b)) + + def distance(a: Int, b: Int): Int = Math.max(Math.abs(file(a) - file(b)), Math.abs(rank(a) - rank(b))) + + def aligned(a: Int, b: Int, c: Int): Boolean = Bitboard.contains(Bitboard.RAYS(a)(b), c) diff --git a/src/test/scala/HuffmanPgnTest.scala b/src/test/scala/HuffmanPgnTest.scala index 0033442..1529414 100644 --- a/src/test/scala/HuffmanPgnTest.scala +++ b/src/test/scala/HuffmanPgnTest.scala @@ -13,43 +13,50 @@ class HuffmanPgnTest extends Specification: "game compression" should: "compress and decompress" in: forall(fixtures) { pgn => + // val pgn = "e4" val pgnMoves = pgn.split(" ") - val encoded = Encoder.encode(pgnMoves) - val decoded = Encoder.decode(encoded, pgnMoves.size) + val encoded = Encoder.encode(pgnMoves) + val decoded = Encoder.decode(encoded, pgnMoves.size) pgnMoves must_== decoded.pgnMoves } "stable format" in: forall(v1 zip fixtures) { case (encoded, pgn) => val pgnMoves = pgn.split(" ") - val decoded = Encoder.decode(base64ToBytes(encoded), pgnMoves.size) + val decoded = Encoder.decode(base64ToBytes(encoded), pgnMoves.size) pgnMoves must_== decoded.pgnMoves } "least surprise" in: - val n = 22 + val n = 22 val decoded = Encoder.decode(Array.fill(n)(0.toByte), n) - decoded.pgnMoves.mkString(" ") must_== "e4 e5 Nf3 Nf6 Nxe5 Nxe4 Nxf7 Kxf7 d4 Nxf2 Kxf2 d5 Nc3 Nc6 Nxd5 Qxd5 Kg1 Nxd4 Qxd4 Qxd4+ Be3 Qxe3#" + decoded.pgnMoves.mkString( + " " + ) must_== "e4 e5 Nf3 Nf6 Nxe5 Nxe4 Nxf7 Kxf7 d4 Nxf2 Kxf2 d5 Nc3 Nc6 Nxd5 Qxd5 Kg1 Nxd4 Qxd4 Qxd4+ Be3 Qxe3#" "unmoved rooks" in: import scala.jdk.CollectionConverters.* val pgnMoves = "d4 h5 c4 Rh6 Nf3 Rh8".split(" ") - val encoded = Encoder.encode(pgnMoves) + val encoded = Encoder.encode(pgnMoves) val d1 = Encoder.decode(encoded, 0) - Bitboard.squareSet(d1.board.castlingRights).asScala must_== Set(0, 7, 56, 63) + Bitboard.squareSet(d1.board.castlingRights) must_== Set(0, 7, 56, 63) val d2 = Encoder.decode(encoded, pgnMoves.size) - Bitboard.squareSet(d2.board.castlingRights).asScala must_== Set(0, 7, 56) + Bitboard.squareSet(d2.board.castlingRights) must_== Set(0, 7, 56) "half-move clock" in: - val pgnMoves = "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 d6 O-O Be7 d4 exd4 Nxd4 Bd7 Bg5 O-O Nxc6 bxc6 Bd3 h6 Bh4 Ne8 Bxe7 Qxe7 Qf3 Nf6 Rfe1 Rfe8".split(" ") + val pgnMoves = + "e4 e5 Nf3 Nc6 Nc3 Nf6 Bb5 d6 O-O Be7 d4 exd4 Nxd4 Bd7 Bg5 O-O Nxc6 bxc6 Bd3 h6 Bh4 Ne8 Bxe7 Qxe7 Qf3 Nf6 Rfe1 Rfe8" + .split(" ") val encoded = Encoder.encode(pgnMoves) - val halfMoveClocks = List(0, 0, 0, 1, 2, 3, 4, 5, 0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 1, 0, 1, 2, 0, 0, 1, 2, 3, 4) + val halfMoveClocks = + List(0, 0, 0, 1, 2, 3, 4, 5, 0, 1, 2, 0, 0, 0, 1, 2, 3, 0, 0, 1, 0, 1, 2, 0, 0, 1, 2, 3, 4) (0 to pgnMoves.size).map(Encoder.decode(encoded, _).halfMoveClock) must_== halfMoveClocks "last uci" in: - val pgnMoves = "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O Bc5 e5 d5 exf6 dxc4 Re1+ Be6 Ng5 Qxf6 Nxe6 Qxe6".split(" ") + val pgnMoves = + "e4 e5 Nf3 Nc6 Bc4 Nf6 d4 exd4 O-O Bc5 e5 d5 exf6 dxc4 Re1+ Be6 Ng5 Qxf6 Nxe6 Qxe6".split(" ") val encoded = Encoder.encode(pgnMoves) val empty = Encoder.decode(encoded, 0) @@ -60,7 +67,7 @@ class HuffmanPgnTest extends Specification: "position hash 1. e4 d5 2. e5 f5 3. Ke2 Kf7" in: val pgnMoves = "e4 d5 e5 f5 Ke2 Kf7".split(" ") - val encoded = Encoder.encode(pgnMoves) + val encoded = Encoder.encode(pgnMoves) // initial position val d0 = Encoder.decode(encoded, 0) @@ -92,7 +99,7 @@ class HuffmanPgnTest extends Specification: "position hash 1. a4 b5 2. h4 b4 3. c4 bxc3 4. Ra3" in: val pgnMoves = "a4 b5 h4 b4 c4 bxc3 Ra3".split(" ") - val encoded = Encoder.encode(pgnMoves) + val encoded = Encoder.encode(pgnMoves) // 1. a4 b5 2. h4 b4 3. c4 val d5 = Encoder.decode(encoded, 5) @@ -104,41 +111,51 @@ class HuffmanPgnTest extends Specification: "position hash threefold" in: // https://lichess.org/V0m3eSGN - val pgnMoves = "Nf3 d5 d4 c5 dxc5 e6 c4 Bxc5 Nc3 Nf6 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Qxd5 exd5 Be2 Nc6 a3 Bf5 b4 Bb6 Bb2 Rfd8 Rd1 Rac8 O-O Ne7 Nd4 Bg6 Rc1 Rxc1 Rxc1 Nf5 Bf3 Kf8 Nb3 Nxe3 Bd4 Nc2 Bxb6 axb6 Bd1 Re8 Bxc2 Bxc2 Nd4 Bd3 f3 Bc4 Kf2 Re5 g4 g6 Rc3 Ke7 Re3 Kf6 h4 Rxe3 Kxe3 Ke5 f4+ Kd6 g5 Ke7 Nf3 Ke6 Nd4+ Ke7 Nf3 Ke6 Nd4+ Ke7".split(" ") + val pgnMoves = + "Nf3 d5 d4 c5 dxc5 e6 c4 Bxc5 Nc3 Nf6 e3 O-O cxd5 Nxd5 Nxd5 Qxd5 Qxd5 exd5 Be2 Nc6 a3 Bf5 b4 Bb6 Bb2 Rfd8 Rd1 Rac8 O-O Ne7 Nd4 Bg6 Rc1 Rxc1 Rxc1 Nf5 Bf3 Kf8 Nb3 Nxe3 Bd4 Nc2 Bxb6 axb6 Bd1 Re8 Bxc2 Bxc2 Nd4 Bd3 f3 Bc4 Kf2 Re5 g4 g6 Rc3 Ke7 Re3 Kf6 h4 Rxe3 Kxe3 Ke5 f4+ Kd6 g5 Ke7 Nf3 Ke6 Nd4+ Ke7 Nf3 Ke6 Nd4+ Ke7" + .split(" ") val encoded = Encoder.encode(pgnMoves) val decoded = Encoder.decode(encoded, pgnMoves.size) val threefold = "966379" - val ncheck = "65afff" - val ke6 = "1bc865" - val nf3 = "e804e3" - val g5 = "ef8a0b" - decoded.positionHashes must_== hexToBytes(threefold + ncheck + ke6 + nf3 + threefold + ncheck + ke6 + nf3 + threefold + g5) + val ncheck = "65afff" + val ke6 = "1bc865" + val nf3 = "e804e3" + val g5 = "ef8a0b" + decoded.positionHashes must_== hexToBytes( + threefold + ncheck + ke6 + nf3 + threefold + ncheck + ke6 + nf3 + threefold + g5 + ) "position hash compat" in: // https://lichess.org/DoqH1EQP - val pgnMoves = "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nc6 Nc3 g6 Be3 Bg7 Bc4 Nf6 f3 O-O Qd2 Nd7 O-O-O a5 g4 Nce5 Be2 a4 a3 Nb6 h4 Nbc4 Bxc4 Nxc4 Qf2 Qb6 b3 Nxe3 Qxe3 e5 Nf5 Qxe3+ Nxe3 axb3 cxb3 Rxa3 Kb2 Ra6 h5 h6 hxg6 fxg6 Ned5 Rxf3 Ne7+ Kf7 Nxc8 Ke6 Nxd6 Rf2+ Kb1 Rxd6 Nd5 Rc6 Rc1 Rxc1+ Rxc1 Re2 Rc7 Rxe4 Nb6 Bf8 Rxb7 Rb4 Rb8 Rxb3+ Kc2 Rb5 Rxf8 Rxb6 Rg8 Kf6 Rf8+ Kg5 Rh8 Rd6 Re8 Kxg4 Rxe5 g5 Re3 Kf5".split(" ") + val pgnMoves = + "e4 c5 Nf3 d6 d4 cxd4 Nxd4 Nc6 Nc3 g6 Be3 Bg7 Bc4 Nf6 f3 O-O Qd2 Nd7 O-O-O a5 g4 Nce5 Be2 a4 a3 Nb6 h4 Nbc4 Bxc4 Nxc4 Qf2 Qb6 b3 Nxe3 Qxe3 e5 Nf5 Qxe3+ Nxe3 axb3 cxb3 Rxa3 Kb2 Ra6 h5 h6 hxg6 fxg6 Ned5 Rxf3 Ne7+ Kf7 Nxc8 Ke6 Nxd6 Rf2+ Kb1 Rxd6 Nd5 Rc6 Rc1 Rxc1+ Rxc1 Re2 Rc7 Rxe4 Nb6 Bf8 Rxb7 Rb4 Rb8 Rxb3+ Kc2 Rb5 Rxf8 Rxb6 Rg8 Kf6 Rf8+ Kg5 Rh8 Rd6 Re8 Kxg4 Rxe5 g5 Re3 Kf5" + .split(" ") val encoded = Encoder.encode(pgnMoves) val decoded = Encoder.decode(encoded, pgnMoves.size) decoded.positionHashes must_== base64ToBytes("oB9I1h1e6YDy") "work with all black legal moves in YycayYfM" in: // Exclude compression as cause of issues with https://lichess.org/YycayYfM - val prefix = "e4 c6 Nf3 d5 exd5 cxd5 d4 Nc6 c3 Nf6 Bf4 Bg4 Be2 e6 Nbd2 Bd6 Bxd6 Qxd6 O-O O-O Re1 a6 Ne5 Bxe2 Qxe2 Nd7 Nxd7 Qxd7 a4 Rab8 Nf3 b5 axb5 axb5 Ne5 Nxe5 Qxe5 b4 c4 dxc4 Rac1 Rbc8 Qa5 Qb7 Re2 c3 bxc3 bxc3 Rec2 Qe4 Qe5 Qxe5 dxe5 Rc5 f4 Rfc8 Kf2 f6 exf6 gxf6 Ke3" - val legals = "Kh8 Kf8 Kg7 Kf7 Rf8 Re8 Rd8 Rb8 Ra8 R8c7 R8c6 R5c7 R5c6 Rh5 Rg5 Rf5 Re5+ Rd5 Rb5 Ra5 Rc4 h6 f5 e5 h5".split(" ") + val prefix = + "e4 c6 Nf3 d5 exd5 cxd5 d4 Nc6 c3 Nf6 Bf4 Bg4 Be2 e6 Nbd2 Bd6 Bxd6 Qxd6 O-O O-O Re1 a6 Ne5 Bxe2 Qxe2 Nd7 Nxd7 Qxd7 a4 Rab8 Nf3 b5 axb5 axb5 Ne5 Nxe5 Qxe5 b4 c4 dxc4 Rac1 Rbc8 Qa5 Qb7 Re2 c3 bxc3 bxc3 Rec2 Qe4 Qe5 Qxe5 dxe5 Rc5 f4 Rfc8 Kf2 f6 exf6 gxf6 Ke3" + val legals = + "Kh8 Kf8 Kg7 Kf7 Rf8 Re8 Rd8 Rb8 Ra8 R8c7 R8c6 R5c7 R5c6 Rh5 Rg5 Rf5 Re5+ Rd5 Rb5 Ra5 Rc4 h6 f5 e5 h5" + .split(" ") forall(legals) { legal => val pgnMoves = (prefix + " " + legal).split(" ") - val encoded = Encoder.encode(pgnMoves) - val decoded = Encoder.decode(encoded, pgnMoves.size) + val encoded = Encoder.encode(pgnMoves) + val decoded = Encoder.decode(encoded, pgnMoves.size) pgnMoves must_== decoded.pgnMoves } "work with CwdQG2Es" in: // Exclude compression as cause of https://github.com/ornicar/lila/issues/5594 - val prefix = "c4 e5 g3 h5 Nc3 h4 Bg2 Nf6 d3 Bb4 Bd2 d6 Nf3 h3 Bf1 Nc6 e3 Bg4 Be2 d5 Nxd5 Nxd5 cxd5 Qxd5 Bxb4 Nxb4 Qa4+ c6 Qxb4 Bxf3 Bxf3 Qxf3 Rg1 O-O-O Qe4 Qf6 O-O-O Rd5 f4 Rhd8 Rgf1 Qe6 Kb1 f5 Qc4 e4 d4 Kb8 Rc1 Qe7 Rg1 Qd7 Qc2 Re8 Qe2 Ra5 g4 g6 gxf5 gxf5 Qh5 Rd8 Qh6 c5 Rg7 Qa4 a3 Qb3 Qf6 Rc8 Qd6+ Ka8" + val prefix = + "c4 e5 g3 h5 Nc3 h4 Bg2 Nf6 d3 Bb4 Bd2 d6 Nf3 h3 Bf1 Nc6 e3 Bg4 Be2 d5 Nxd5 Nxd5 cxd5 Qxd5 Bxb4 Nxb4 Qa4+ c6 Qxb4 Bxf3 Bxf3 Qxf3 Rg1 O-O-O Qe4 Qf6 O-O-O Rd5 f4 Rhd8 Rgf1 Qe6 Kb1 f5 Qc4 e4 d4 Kb8 Rc1 Qe7 Rg1 Qd7 Qc2 Re8 Qe2 Ra5 g4 g6 gxf5 gxf5 Qh5 Rd8 Qh6 c5 Rg7 Qa4 a3 Qb3 Qf6 Rc8 Qd6+ Ka8" val pgnMoves = s"$prefix Rxc5 Raxc5".split(" ") - val encoded = Encoder.encode(pgnMoves) - val decoded = Encoder.decode(encoded, pgnMoves.size) + val encoded = Encoder.encode(pgnMoves) + val decoded = Encoder.decode(encoded, pgnMoves.size) pgnMoves must_== decoded.pgnMoves "pass perft test" in: @@ -167,7 +184,7 @@ class HuffmanPgnTest extends Specification: PerftTest.batch15(); PerftTest.batch16(); - */ + */ PerftTest.batch17(); diff --git a/src/test/scala/PerftTest.scala b/src/test/scala/PerftTest.scala new file mode 100644 index 0000000..93cb85b --- /dev/null +++ b/src/test/scala/PerftTest.scala @@ -0,0 +1,69023 @@ +package org.lichess.compression.game + +//import org.specs2.mutable.* + +object PerftTest: + def perft(board: Board, depth: Int): Long = + // Counts the number of paths in the tree of legal moves. Useful for + // testing performance and comparing to well known numbers. + if depth >= 1 then + val moves = MoveList() + board.legalMoves(moves) + if depth == 1 then moves.getSize().toLong + else + (0 until moves.getSize()).foldLeft(0L) { (sum, i) => + val move = moves.get(i) + val child: Board = board.copy() + child.play(move) + sum + perft(child, depth - 1) + } + else 1 + + private def assertEqual(lhs: Long, rhs: Long): Unit = + if (lhs != rhs) throw RuntimeException("perft test failed") + + // Particularly tricky test positions from: + // https://chessprogramming.wikispaces.com/Perft+Results + + def trickyBatch(): Unit = + // (2) Kiwipete by Peter McKenzie + // r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - + var board = Board(0x2d50081280e700L, 0x221000040000L, 0x40010000001800L, 0x8100000000000081L, + 0x10000000200000L, 0x1000000000000010L, 0x181024ff91L, 0x917d730002800000L, true, 0, + 0x8100000000000081L); + assertEqual(perft(board, 1), 48); + assertEqual(perft(board, 2), 2039); + assertEqual(perft(board, 3), 97862); + + // (3) 8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - - + board = Board(0x4080220005000L, 0x0L, 0x0L, 0x8002000000L, 0x0L, 0x180000000L, 0x302005000L, + 0x40880a0000000L, true, 0, 0x0L); + assertEqual(perft(board, 1), 14); + assertEqual(perft(board, 2), 191); + assertEqual(perft(board, 3), 2812); + assertEqual(perft(board, 4), 43238); + + // (4) Mirrored + // r2q1rk1/pP1p2pp/Q4n2/bbp1p3/Np6/1B3NBn/pPPP1PPP/R3K2R b KQ - + board = Board(0xcb00140200ef00L, 0x200001a00000L, 0x300420000L, 0x2100000000000081L, 0x800010000000000L, + 0x4000000000000010L, 0x201000162ee91L, 0x69c9201702800100L, false, 0, 0x81L); + assertEqual(perft(board, 1), 6); + assertEqual(perft(board, 2), 264); + assertEqual(perft(board, 3), 9467); + + // (5) http://www.talkchess.com/forum/viewtopic.php?t=42463 + // rnbq1k1r/pp1Pbppp/2p5/8/2B5/8/PPP1NnPP/RNBQK2R w KQ - + board = Board(0xeb04000000c700L, 0x200000000003002L, 0x410000004000004L, 0x8100000000000081L, + 0x800000000000008L, 0x2000000000000010L, 0x800000400d79fL, 0xaff3040000002000L, true, 0, 0x81L); + assertEqual(perft(board, 1), 44); + assertEqual(perft(board, 2), 1486); + assertEqual(perft(board, 3), 62379); + + // (6) By Steven Edwards + // r4rk1/1pp1qppp/p1np1n2/2b1p1B1/2B1P1b1/P1NP1N2/1PP1QPPP/R4RK1 w - - + board = Board(0xe609101009e600L, 0x240000240000L, 0x4444000000L, 0x2100000000000021L, 0x10000000001000L, + 0x4000000000000040L, 0x40142df661L, 0x61f62d1440000000L, true, 0, 0x0L); + assertEqual(perft(board, 1), 46); + assertEqual(perft(board, 2), 2079); + assertEqual(perft(board, 3), 89890); + + // Test cases generated from: + // https://marcelk.net/rookie/nostalgia/v3/perft-random.epd + + def batch0(): Unit = + // gentest-1 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2 + assertEqual( + perft( + Board(0xfb04004004bb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4004bbffL, 0xfffb040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 274234 + ); + + // gentest-3 + assertEqual( + perft( + Board(0xf30c004004bb00L, 0x4200000000000042L, 0x2400000000004004L, 0x8100000000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x4004fbdfL, 0xf7f70c0000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 579004 + ); + + // gentest-4 + assertEqual( + perft( + Board(0xf10e004004bb00L, 0x4200000000000042L, 0x2400000010000004L, 0x8100000000000081L, + 0x4000000000400L, 0x1000000000000010L, 0x5004bfd7L, 0xf7f50e0000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 699777 + ); + + // gentest-5 + assertEqual( + perft( + Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000000050000004L, 0x8100000000000081L, + 0x4000000000400L, 0x1000000000000010L, 0x10843fd7L, 0xf3758e0040000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 701084 + ); + + // gentest-6 + assertEqual( + perft( + Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000000840000004L, 0x8100000000000081L, + 0x800400000000000L, 0x1000000000000010L, 0x400800843bd7L, 0xfb718e0040000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 872551 + ); + + // gentest-7 + assertEqual( + perft( + Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000000840000004L, 0x8100000000000081L, + 0x800000000080000L, 0x400000000000010L, 0x8008c3bd7L, 0xef718e0040000000L, true, 0, 0x81L), + 4 + ), + 891412 + ); + + // gentest-8 + assertEqual( + perft( + Board(0x718e0000843b00L, 0x4200000000000042L, 0x2000002000004004L, 0x8100000000000081L, + 0x800000000080000L, 0x400000000000010L, 0x8c7bd7L, 0xef718e2000000000L, false, 0, 0x81L), + 4 + ), + 832461 + ); + + // gentest-9 + assertEqual( + perft( + Board(0x718c0202843900L, 0x4200000000000042L, 0x2000002000004004L, 0x8100000000000081L, + 0x800000000080000L, 0x8000000000010L, 0x28c79d7L, 0xeb798c2200000000L, true, 0, 0x81L), + 4 + ), + 715605 + ); + + // gentest-10 + assertEqual( + perft( + Board(0x708d0202843900L, 0x4200000000200002L, 0x2000002000004004L, 0x8100000000000081L, + 0x800000000000400L, 0x8000000000010L, 0x2a47d97L, 0xeb788d2200000000L, false, 0, 0x81L), + 4 + ), + 781431 + ); + + // gentest-11 + assertEqual( + perft( + Board(0x708c0302843900L, 0x4200000000200002L, 0x2000000010004004L, 0x8100000000000081L, + 0x800000000080000L, 0x8000000000010L, 0x2ac7997L, 0xeb788c0310000000L, true, 0, 0x81L), + 4 + ), + 784949 + ); + + // gentest-12 + assertEqual( + perft( + Board(0x30cc0302843900L, 0x4200000080000002L, 0x2000000010000024L, 0x8100000000000081L, + 0x800000000080000L, 0x8000000000010L, 0x828c39b7L, 0xeb38cc0310000000L, false, 0, 0x81L), + 4 + ), + 743330 + ); + + // gentest-13 + assertEqual( + perft( + Board(0x30c40302843900L, 0x4200000080000002L, 0x20000000000000a4L, 0x8100000000000001L, + 0x800080000000000L, 0x400000000000010L, 0x80082843937L, 0xef30c40300000080L, true, 0, 0x1L), + 4 + ), + 807330 + ); + + // gentest-14 + assertEqual( + perft( + Board(0x30c403029c2100L, 0x4200000080000002L, 0x20000000000000a4L, 0x8100000000000001L, + 0x4080000000000L, 0x400000000000010L, 0x800829c2137L, 0xe734c40300000080L, false, 0, 0x1L), + 4 + ), + 960905 + ); + + // gentest-15 + assertEqual( + perft( + Board(0x308403029c2100L, 0x4200400000000002L, 0x2000000000200024L, 0x8100000000000001L, + 0x4080000000000L, 0x2000000000010L, 0x4800029c2137L, 0xe336840300200000L, true, 0, 0x1L), + 4 + ), + 1259372 + ); + + // gentest-16 + assertEqual( + perft( + Board(0x10c403009c2100L, 0x4200000000010000L, 0x2000000000200024L, 0x8100000000000001L, + 0x4080000000000L, 0x2000000000010L, 0x801009d2135L, 0xe316c40200200000L, false, 0, 0x1L), + 4 + ), + 924296 + ); + + // gentest-17 + assertEqual( + perft( + Board(0x10c403009c2100L, 0x200200000000002L, 0x2000000010000024L, 0x8100000000000001L, + 0x4080000000000L, 0x2000000000010L, 0x801009c2137L, 0xa316e40210000000L, true, 0, 0x1L), + 4 + ), + 1342725 + ); + + // gentest-18 + assertEqual( + perft( + Board(0x10c403009c2100L, 0x200200000000002L, 0x2000002000000024L, 0x8100000000000001L, + 0x4000080000000L, 0x2000000000010L, 0x1809c2137L, 0xa316e42200000000L, false, 0, 0x1L), + 4 + ), + 1463588 + ); + + // gentest-19 + assertEqual( + perft( + Board(0x10c403009c2100L, 0x210000000002L, 0x2000002000000024L, 0x8100000000000001L, 0x20400000L, + 0x2000000000010L, 0x1209c2137L, 0xa112e52200400000L, true, 0, 0x1L), + 4 + ), + 1909468 + ); + + // gentest-20 + assertEqual( + perft( + Board(0x10c403009c2100L, 0x210000000002L, 0x2000002000000024L, 0x4100000000000001L, 0x800400000L, + 0x2000000000010L, 0x9009c2137L, 0x6112e52200400000L, false, 0, 0x1L), + 4 + ), + 2271390 + ); + + // gentest-21 + assertEqual( + perft( + Board(0x10c403019c2000L, 0x200400000002L, 0x2000000040000024L, 0x4100000000000001L, 0x800400000L, + 0x2000000000010L, 0x9019c2037L, 0x6112e40640400000L, true, 0, 0x1L), + 4 + ), + 2903019 + ); + + // gentest-22 + assertEqual( + perft( + Board(0x10c403019c2000L, 0x200400000002L, 0x2000000040000024L, 0x4100000000000001L, 0x800400000L, + 0x10000000010L, 0x9019c2037L, 0x6110e50640400000L, false, 0, 0x1L), + 4 + ), + 2567078 + ); + + // gentest-23 + assertEqual( + perft( + Board(0xc413019c2000L, 0x200400000002L, 0x2000000000001024L, 0x4100000000000001L, 0x404000L, + 0x10000000010L, 0x1019c6037L, 0x6100e51600401000L, true, 0, 0x1L), + 4 + ), + 1095789 + ); + + // gentest-24 + assertEqual( + perft( + Board(0xc011009c2000L, 0x200400000002L, 0x2000000000001024L, 0x4100000000000001L, 0x40000400000L, + 0x200000010L, 0x401009c2037L, 0x6100e01600401000L, false, 0, 0x1L), + 4 + ), + 16244 + ); + + // gentest-25 + assertEqual( + perft( + Board(0xc011009c2000L, 0x200400000002L, 0x2000000000005004L, 0x4100000000000001L, 0x400000L, + 0x80000000010L, 0x1009c6017L, 0x6100e81400401000L, true, 0, 0x1L), + 4 + ), + 1218982 + ); + + // gentest-26 + assertEqual( + perft( + Board(0xc011409c0000L, 0xc00000002L, 0x2000000000005004L, 0x4100000000000001L, 0x0L, 0x80000000010L, + 0x1409c4017L, 0x6100c81c00001000L, false, 0, 0x1L), + 4 + ), + 756910 + ); + + // gentest-27 + assertEqual( + perft( + Board(0xc011409c0000L, 0x810000002L, 0x2000000000005004L, 0x140000000010000L, 0x0L, 0x80000000010L, + 0x1409d4016L, 0x2140c81810001000L, true, 0, 0x0L), + 4 + ), + 631901 + ); + + // gentest-28 + assertEqual( + perft( + Board(0xc011409c0000L, 0x810000800L, 0x2000000000201004L, 0x110000000010000L, 0x0L, 0x80000000010L, + 0x140bd0814L, 0x2110c81810001000L, false, 0, 0x0L), + 4 + ), + 751251 + ); + + // gentest-29 + assertEqual( + perft( + Board(0xc011409c0000L, 0x4000000400800L, 0x2000000000201200L, 0x110000000010000L, 0x0L, + 0x80000000010L, 0x140bd0a10L, 0x2114c81000401000L, true, 0, 0x0L), + 4 + ), + 697477 + ); + + // gentest-30 + assertEqual( + perft( + Board(0xc011409c0000L, 0x4000000400800L, 0x2100000000001200L, 0x10000000000001L, 0x0L, + 0x8000000000010L, 0x1000001409c0a11L, 0x201cc01000401000L, false, 0, 0x0L), + 4 + ), + 660957 + ); + + // gentest-31 + assertEqual( + perft( + Board(0xc011409c0000L, 0x1000000000400800L, 0x40000010001200L, 0x10000000000001L, 0x0L, + 0x8000000000010L, 0x1509c0a11L, 0x1058c01000401000L, true, 0, 0x0L), + 4 + ), + 483244 + ); + + // gentest-32 + assertEqual( + perft( + Board(0xc011409c0000L, 0x1000000000400800L, 0x140000000001200L, 0x10000000000100L, 0x0L, + 0x80000000010L, 0x1000001409c0b10L, 0x1050c81000401000L, false, 0, 0x0L), + 4 + ), + 489620 + ); + + // gentest-33 + assertEqual( + perft( + Board(0xc011409c0000L, 0x1000000010000800L, 0x140000000001001L, 0x100000000100L, 0x0L, 0x80000000010L, + 0x1000001409c0911L, 0x1040d81010001000L, true, 0, 0x0L), + 4 + ), + 281677 + ); + + // gentest-34 + assertEqual( + perft( + Board(0xc011409c0000L, 0x1000000000000020L, 0x40000010001001L, 0x100000000100L, 0x0L, 0x400000010L, + 0x1509c0131L, 0x1040d01400001000L, false, 0, 0x0L), + 4 + ), + 337049 + ); + + // gentest-35 + assertEqual( + perft( + Board(0x8051409c0000L, 0x1000000000008000L, 0x40000010001001L, 0x10000000100L, 0x0L, 0x400000010L, + 0x1509c8111L, 0x1040815400001000L, true, 0, 0x0L), + 4 + ), + 314612 + ); + + // gentest-36 + assertEqual( + perft( + Board(0x8051409c0000L, 0x80000008000L, 0x40400000001001L, 0x10000000200L, 0x0L, 0x400000010L, + 0x4001409c8211L, 0x40895400001000L, false, 0, 0x0L), + 4 + ), + 415723 + ); + + // gentest-37 + assertEqual( + perft( + Board(0xd1409c0000L, 0x400000000008000L, 0xc0000000001001L, 0x10000000200L, 0x0L, 0x400000010L, + 0x800001409c8211L, 0x44001d400001000L, true, 0, 0x0L), + 4 + ), + 412224 + ); + + // gentest-38 + assertEqual( + perft( + Board(0xd1c01c0000L, 0x1000000008000L, 0xc0000000001001L, 0x10002000000L, 0x0L, 0x400000010L, + 0x800001c21c8011L, 0x4101d400001000L, false, 0, 0x0L), + 4 + ), + 439782 + ); + + // gentest-39 + assertEqual( + perft( + Board(0xd1801c0000L, 0x1000000000020L, 0x80200040000001L, 0x10002000000L, 0x0L, 0x400000010L, + 0x800001821c0031L, 0x121d440000000L, true, 0, 0x0L), + 4 + ), + 362146 + ); + + // gentest-40 + assertEqual( + perft( + Board(0xd1801c0000L, 0x1000000000020L, 0x80200040000001L, 0x2010000000000L, 0x0L, 0x40000000010L, + 0x820001801c0031L, 0x125d040000000L, false, 0, 0x0L), + 4 + ), + 318916 + ); + + // gentest-41 + assertEqual( + perft( + Board(0xd188140000L, 0x400000000000020L, 0x80200000001001L, 0x2010000000000L, 0x0L, 0x40000000010L, + 0x82000188140031L, 0x40025d000001000L, true, 0, 0x0L), + 4 + ), + 509994 + ); + + // gentest-42 + assertEqual( + perft( + Board(0xd188140000L, 0x400000000000020L, 0x90000000001001L, 0x8010000000000L, 0x0L, 0x40000000800L, + 0x88000188140821L, 0x41005d000001000L, false, 0, 0x0L), + 4 + ), + 442872 + ); + + // gentest-43 + assertEqual( + perft( + Board(0x9188140000L, 0x400000000000020L, 0x80080000001001L, 0x8010000000000L, 0x0L, 0x40000000004L, + 0x88000108140025L, 0x4000d9080001000L, true, 0, 0x0L), + 4 + ), + 392378 + ); + + // gentest-44 + assertEqual( + perft( + Board(0x9188140000L, 0x400000000000020L, 0x80000080003L, 0x8010000000000L, 0x0L, 0x40000000200L, + 0x8000108140223L, 0x4000d9080080000L, false, 0, 0x0L), + 4 + ), + 355398 + ); + + // gentest-45 + assertEqual( + perft( + Board(0x9188140000L, 0x20000000020L, 0x80000080003L, 0x2010000000000L, 0x0L, 0x200000200L, + 0x2000108140223L, 0xb9280080000L, true, 0, 0x0L), + 4 + ), + 327247 + ); + + // gentest-46 + assertEqual( + perft( + Board(0x9188140000L, 0x20000000020L, 0x80000080003L, 0x4000010000000000L, 0x0L, 0x4000200L, + 0x4000000108140223L, 0xb9084080000L, false, 0, 0x0L), + 4 + ), + 386325 + ); + + // gentest-47 + assertEqual( + perft( + Board(0x9188140000L, 0x20000000020L, 0x2000000000001003L, 0x10040000000L, 0x0L, 0x4000200L, + 0x148140223L, 0x2000039084001000L, true, 0, 0x0L), + 4 + ), + 322047 + ); + + // gentest-48 + assertEqual( + perft( + Board(0x19c0140000L, 0x20000000020L, 0x2000000010001001L, 0x10000000000L, 0x0L, 0x4000200L, + 0x910140221L, 0x20000310c4001000L, false, 0, 0x0L), + 4 + ), + 143529 + ); + + // gentest-49 + assertEqual( + perft( + Board(0x11c0140000L, 0x800000020L, 0x800000001401L, 0x10000000000L, 0x0L, 0x4000200L, 0x100140621L, + 0x8118c4001000L, true, 0, 0x0L), + 4 + ), + 187436 + ); + + // gentest-50 + assertEqual( + perft( + Board(0x11c0140000L, 0x800400000L, 0x800000001401L, 0x200000000000L, 0x0L, 0x4000100L, 0x100540501L, + 0xa018c4001000L, false, 0, 0x0L), + 4 + ), + 348692 + ); + + // gentest-51 + assertEqual( + perft( + Board(0x11c0140000L, 0x2400000L, 0x800000001401L, 0x20000000000L, 0x0L, 0x4010000L, 0x100550401L, + 0x8210c6001000L, true, 0, 0x0L), + 4 + ), + 287677 + ); + + // gentest-52 + assertEqual( + perft( + Board(0x11c0140000L, 0x8002000000L, 0x800000081001L, 0x10000000000L, 0x0L, 0x4010000L, 0x81001d0001L, + 0x8110c6001000L, false, 0, 0x0L), + 4 + ), + 29157 + ); + + // gentest-53 + assertEqual( + perft( + Board(0x11c0140000L, 0x2400000L, 0x802000000001L, 0x10000000000L, 0x0L, 0x4010000L, 0x100550001L, + 0x8130c6000000L, true, 0, 0x0L), + 4 + ), + 108753 + ); + + // gentest-54 + assertEqual( + perft( + Board(0x11c0140000L, 0x2000080L, 0x800010000200L, 0x10000000000L, 0x0L, 0x4010000L, 0x100150280L, + 0x8110d6000000L, false, 0, 0x0L), + 4 + ), + 74867 + ); + + // gentest-55 + assertEqual( + perft( + Board(0x11c0140000L, 0x2002000L, 0x40002000000200L, 0x10000000000L, 0x0L, 0x4010000L, 0x100152200L, + 0x400130c6000000L, true, 0, 0x0L), + 4 + ), + 108745 + ); + + // gentest-56 + assertEqual( + perft( + Board(0x1180140000L, 0x42000000L, 0x40002000000001L, 0x400000000000L, 0x0L, 0x4010000L, 0x140150001L, + 0x40403086000000L, false, 0, 0x0L), + 4 + ), + 109696 + ); + + // gentest-57 + assertEqual( + perft( + Board(0x1180140000L, 0x42000000L, 0x40000000000202L, 0x800000000000L, 0x0L, 0x4010000L, 0x140150200L, + 0x40801086000002L, true, 0, 0x0L), + 4 + ), + 85445 + ); + + // gentest-58 + assertEqual( + perft( + Board(0x1180140000L, 0x42000000L, 0x40000000000202L, 0x800000000000L, 0x0L, 0x200010000L, + 0x140150200L, 0x40801282000002L, false, 0, 0x0L), + 4 + ), + 125127 + ); + + // gentest-59 + assertEqual( + perft( + Board(0x1180140000L, 0x200002000000L, 0x40000000000202L, 0x800000000000L, 0x0L, 0x200010000L, + 0x200100150200L, 0x40801282000002L, true, 0, 0x0L), + 4 + ), + 133804 + ); + + // gentest-60 + assertEqual( + perft( + Board(0x1180140000L, 0x2400000L, 0x40000000080200L, 0x800000000000L, 0x0L, 0x200010000L, 0x100550200L, + 0x40801282080000L, false, 0, 0x0L), + 4 + ), + 153820 + ); + + // gentest-61 + assertEqual( + perft( + Board(0x1180140000L, 0x400400L, 0x40000000080200L, 0x200000000000L, 0x0L, 0x200020000L, 0x100560200L, + 0x40201280080400L, true, 0, 0x0L), + 4 + ), + 157837 + ); + + // gentest-62 + assertEqual( + perft( + Board(0x1180140000L, 0x480L, 0x40000000001004L, 0x200000000000L, 0x0L, 0x200020000L, 0x100160084L, + 0x40201280001400L, false, 0, 0x0L), + 4 + ), + 135981 + ); + + // gentest-63 + assertEqual( + perft( + Board(0x1180140000L, 0x480L, 0x2000000000001200L, 0x200000L, 0x0L, 0x200020000L, 0x100160280L, + 0x2000001280201400L, true, 0, 0x0L), + 4 + ), + 90496 + ); + + // gentest-64 + assertEqual( + perft( + Board(0x1180140000L, 0x480L, 0x2000000004000200L, 0x200000L, 0x0L, 0x200000002L, 0x100140282L, + 0x2000001284200400L, false, 0, 0x0L), + 4 + ), + 120416 + ); + + // gentest-65 + assertEqual( + perft( + Board(0x1100940000L, 0x480L, 0x2000000004010000L, 0x400000L, 0x0L, 0x200000002L, 0x100150082L, + 0x2000001204c00400L, true, 0, 0x0L), + 4 + ), + 208386 + ); + + // gentest-66 + assertEqual( + perft( + Board(0x1100940000L, 0x400400L, 0x2020080000000000L, 0x0L, 0x0L, 0x200000002L, 0x80100540002L, + 0x2020001200800400L, false, 0, 0x0L), + 4 + ), + 204499 + ); + + // gentest-67 + assertEqual( + perft( + Board(0x11000840000L, 0x500000L, 0x20080000000000L, 0x0L, 0x0L, 0x200000002L, 0x10000440002L, + 0x20081200900000L, true, 0, 0x0L), + 4 + ), + 99518 + ); + + // gentest-68 + assertEqual( + perft( + Board(0x1000840000L, 0x400400L, 0x120080000000000L, 0x0L, 0x0L, 0x200000002L, 0x100000000440002L, + 0x20081200800400L, false, 0, 0x0L), + 4 + ), + 202322 + ); + + // gentest-69 + assertEqual( + perft( + Board(0x1000840000L, 0x400400L, 0x100010010000L, 0x0L, 0x0L, 0x200000002L, 0x10440002L, + 0x101200810400L, true, 0, 0x0L), + 4 + ), + 198356 + ); + + // gentest-70 + assertEqual( + perft( + Board(0x1000840000L, 0x8000000400L, 0x100000090000L, 0x0L, 0x0L, 0x100000002L, 0x80000c0002L, + 0x101100810400L, false, 0, 0x0L), + 4 + ), + 163093 + ); + + // gentest-71 + assertEqual( + perft( + Board(0x1000048000L, 0x8000000000L, 0x2000010400L, 0x0L, 0x0L, 0x100000002L, 0x8000040402L, + 0x3100018000L, true, 0, 0x0L), + 4 + ), + 70356 + ); + + // gentest-72 + assertEqual( + perft( + Board(0x1000048000L, 0x8000000000L, 0x400000090000L, 0x0L, 0x0L, 0x100000100L, 0x80000c0100L, + 0x401100018000L, false, 0, 0x0L), + 4 + ), + 128257 + ); + + // gentest-73 + assertEqual( + perft( + Board(0x1000048000L, 0x8000000000L, 0x200400000000000L, 0x0L, 0x0L, 0x100000100L, 0x408000040100L, + 0x200001100008000L, true, 0, 0x0L), + 4 + ), + 54477 + ); + + // gentest-74 + assertEqual( + perft( + Board(0x1000048000L, 0x20000000L, 0x1200000000000000L, 0x0L, 0x0L, 0x20000000100L, + 0x1000000020040100L, 0x200021000008000L, false, 0, 0x0L), + 4 + ), + 84303 + ); + + // gentest-75 + assertEqual( + perft( + Board(0x10040000L, 0x20000000L, 0x1200000000000000L, 0x0L, 0x80L, 0x20000020000L, 0x1000000020060000L, + 0x200020010000080L, true, 0, 0x0L), + 4 + ), + 322322 + ); + + // gentest-76 + assertEqual( + perft( + Board(0x14000000L, 0x20000000L, 0x208000000000000L, 0x0L, 0x8000000000000000L, 0x20000020000L, + 0x8000024020000L, 0x8200020010000000L, false, 0, 0x0L), + 4 + ), + 342342 + ); + + // gentest-77 + assertEqual( + perft( + Board(0x14000000L, 0x20000000L, 0x8080000000000L, 0x0L, 0x0L, 0x20000000200L, 0x8000024000200L, + 0xa0010000000L, true, 0, 0x0L), + 4 + ), + 116986 + ); + + // gentest-78 + assertEqual( + perft( + Board(0x14000000L, 0x4000L, 0x8080000000000L, 0x0L, 0x0L, 0x4000000040000L, 0x8000004044000L, + 0x4080010000000L, false, 0, 0x0L), + 4 + ), + 62176 + ); + + // gentest-79 + assertEqual( + perft( + Board(0x14000000L, 0x4000L, 0x800040000000000L, 0x0L, 0x0L, 0x4000000040000L, 0x40004044000L, + 0x804000010000000L, true, 0, 0x0L), + 4 + ), + 40252 + ); + + // gentest-80 + assertEqual( + perft( + Board(0x14000000L, 0x20000000L, 0x800000001000000L, 0x0L, 0x0L, 0x80000040000L, 0x25040000L, + 0x800080010000000L, false, 0, 0x0L), + 4 + ), + 43315 + ); + + // gentest-81 + assertEqual( + perft( + Board(0x410000000L, 0x20000000L, 0x81000000L, 0x0L, 0x0L, 0x4000000040000L, 0x421040000L, + 0x4000090000000L, true, 0, 0x0L), + 4 + ), + 60640 + ); + + // gentest-82 + assertEqual( + perft( + Board(0x410000000L, 0x20000000L, 0x40080000000L, 0x0L, 0x0L, 0x800000004000000L, 0x40424000000L, + 0x800000090000000L, false, 0, 0x0L), + 4 + ), + 47069 + ); + + // gentest-83 + assertEqual( + perft( + Board(0x410000000L, 0x800000000L, 0x40020000000L, 0x0L, 0x0L, 0x800000004000000L, 0x40c04000000L, + 0x800000030000000L, true, 0, 0x0L), + 4 + ), + 54526 + ); + + // gentest-84 + assertEqual( + perft( + Board(0x410000000L, 0x100000L, 0x40000008000L, 0x0L, 0x0L, 0x800000000040000L, 0x40400140000L, + 0x800000010008000L, false, 0, 0x0L), + 4 + ), + 47793 + ); + + // gentest-85 + assertEqual( + perft( + Board(0x410000000L, 0x100000L, 0x1800000000L, 0x0L, 0x0L, 0x800000000040000L, 0xc00140000L, + 0x800001010000000L, true, 0, 0x0L), + 4 + ), + 27716 + ); + + // gentest-86 + assertEqual( + perft( + Board(0x410000000L, 0x100000L, 0x202000000000000L, 0x0L, 0x0L, 0x800000000000800L, 0x2000400100800L, + 0xa00000010000000L, false, 0, 0x0L), + 4 + ), + 48238 + ); + + // gentest-87 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-88 + assertEqual( + perft( + Board(0xfe00010401fa00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x401faffL, 0xfffe000100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 242685 + ); + + // gentest-89 + assertEqual( + perft( + Board(0xfe00010403f800L, 0x4000010000000042L, 0x2400000000000024L, 0x8001000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x403f8ffL, 0xfcff010100000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 204573 + ); + + // gentest-90 + assertEqual( + perft( + Board(0xf6080144833800L, 0x4000010000000042L, 0x2400000000000024L, 0x8001000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x448338ffL, 0xfcf7090100000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 284308 + ); + + // gentest-91 + assertEqual( + perft( + Board(0xd608204d833000L, 0x4000010000000042L, 0x2400000000000024L, 0x8001000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4c8330ffL, 0xfcd7092001000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 493990 + ); + + // gentest-92 + assertEqual( + perft( + Board(0x9608604d932000L, 0x4000010000000042L, 0x2400000000000220L, 0x8001000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4c9322fbL, 0xfc97096001000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 549873 + ); + + // gentest-93 + assertEqual( + perft( + Board(0x1688604d932000L, 0x4000010000000042L, 0x2400000000000220L, 0x8001000000000081L, + 0x8000000001000L, 0x1000000000000010L, 0x4c9332f3L, 0xf41f896001000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 417380 + ); + + // gentest-94 + assertEqual( + perft( + Board(0x16886845932000L, 0x4000000002000042L, 0xa400000000000020L, 0x1000000000081L, 0x8000000001000L, + 0x1000000000000010L, 0x80000008449330f3L, 0x741f886003000000L, false, 0, 0x81L), + 4 + ), + 613681 + ); + + // gentest-95 + assertEqual( + perft( + Board(0x14886a45932000L, 0x4000010000000042L, 0xa400000000000020L, 0x1000000000081L, 0x8000000000100L, + 0x1000000000000010L, 0x80000008449321f3L, 0x741d896201000000L, true, 0, 0x81L), + 4 + ), + 556204 + ); + + // gentest-96 + assertEqual( + perft( + Board(0x14886847932000L, 0x4000010000000042L, 0x2400000000040020L, 0x1000000000081L, 0x8000000000100L, + 0x1000000000000010L, 0x8449721f3L, 0x741d896003000000L, false, 0, 0x81L), + 4 + ), + 532817 + ); + + // gentest-97 + assertEqual( + perft( + Board(0x14886847932000L, 0x4000010000000042L, 0x2400000000040020L, 0x1000000000081L, + 0x800000000000400L, 0x8000000000010L, 0x8449724f3L, 0x6c1d896003000000L, true, 0, 0x81L), + 4 + ), + 495417 + ); + + // gentest-98 + assertEqual( + perft( + Board(0x14886847932000L, 0x4000010000001002L, 0x2400000000040020L, 0x2000000000081L, + 0x800000000000800L, 0x8000000000010L, 0x8449738b3L, 0x6c1e896003000000L, false, 0, 0x81L), + 4 + ), + 465740 + ); + + // gentest-99 + assertEqual( + perft( + Board(0x14886847932000L, 0x210000000042L, 0x2400000000040020L, 0x200000000000081L, 0x800000000000800L, + 0x8000000000010L, 0x8449728f3L, 0x2e1ca96003000000L, true, 0, 0x81L), + 4 + ), + 635387 + ); + + // gentest-100 + assertEqual( + perft( + Board(0x14886847932000L, 0x4000010000000840L, 0x2400000000040020L, 0x200000000000081L, + 0x800000000080000L, 0x8000000000010L, 0x8449f28f1L, 0x6e1c896003000000L, false, 0, 0x81L), + 4 + ), + 568525 + ); + + // gentest-101 + assertEqual( + perft( + Board(0x14886847932000L, 0x210000000840L, 0x2400000000040020L, 0x20000000082L, 0x800000000080000L, + 0x8000000000010L, 0x8449f28f2L, 0x2c1cab6003000000L, true, 0, 0x80L), + 4 + ), + 725952 + ); + + // gentest-102 + assertEqual( + perft( + Board(0x108c6845932000L, 0x210000000840L, 0x2400000002000020L, 0x20000000082L, 0x800000000080000L, + 0x8000000001000L, 0x8469b38e2L, 0x2c18af6001000000L, false, 0, 0x0L), + 4 + ), + 776907 + ); + + // gentest-103 + assertEqual( + perft( + Board(0x100ce845932000L, 0x210000000840L, 0x2400000002000020L, 0x20000008002L, 0x1000000000080000L, + 0x8000000001000L, 0x8469bb862L, 0x34182fe001000000L, true, 0, 0x0L), + 4 + ), + 914591 + ); + + // gentest-104 + assertEqual( + perft( + Board(0x100cc845932000L, 0x210000000840L, 0x2400000002000020L, 0x20000008001L, 0x1000002000000000L, + 0x4000000001000L, 0x284693b861L, 0x34142fc001000000L, false, 0, 0x0L), + 4 + ), + 1698889 + ); + + // gentest-105 + assertEqual( + perft( + Board(0x100cc845932000L, 0x210000000840L, 0x400800002000020L, 0x20000008001L, 0x1000400000000000L, + 0x800000000001000L, 0x40084693b861L, 0x1c10afc001000000L, true, 0, 0x0L), + 4 + ), + 1957673 + ); + + // gentest-106 + assertEqual( + perft( + Board(0x100cc845932000L, 0x200400200800L, 0x400800002000020L, 0x20000008004L, 0x1000400000000000L, + 0x800000000001000L, 0x400846b3b824L, 0x1c10aec401000000L, false, 0, 0x0L), + 4 + ), + 2356499 + ); + + // gentest-107 + assertEqual( + perft( + Board(0x100cc845932000L, 0x4000000200800L, 0x400800002000020L, 0x20000008004L, 0x1000200000000000L, + 0x800000000001000L, 0x200846b3b824L, 0x1c148ec001000000L, true, 0, 0x0L), + 4 + ), + 1846425 + ); + + // gentest-108 + assertEqual( + perft( + Board(0x1008cc45932000L, 0x4000000200800L, 0x400800002000020L, 0x20000008004L, 0x9000000000000000L, + 0x800000000001000L, 0x8000000846b3b824L, 0x1c148ac401000000L, false, 0, 0x0L), + 4 + ), + 1166929 + ); + + // gentest-109 + assertEqual( + perft( + Board(0x1008c847932000L, 0x4000000200800L, 0x400800000000020L, 0x10000004004L, 0x9000000000000000L, + 0x800000000001000L, 0x8000000844b37824L, 0x1c1489c003000000L, true, 0, 0x0L), + 4 + ), + 1086397 + ); + + // gentest-110 + assertEqual( + perft( + Board(0x1008c847932000L, 0x4000000200800L, 0x802000000020L, 0x10000000044L, 0x3000000000000000L, + 0x800000000001000L, 0x2000000844b33864L, 0x181489e003000000L, false, 0, 0x0L), + 4 + ), + 1011703 + ); + + // gentest-111 + assertEqual( + perft( + Board(0x1008c847932000L, 0x100000000000810L, 0x802000000020L, 0x10000000044L, 0x3000000000000000L, + 0x400000000001000L, 0x2000000844933874L, 0x151089e003000000L, true, 0, 0x0L), + 4 + ), + 1077115 + ); + + // gentest-112 + assertEqual( + perft( + Board(0x8c847932000L, 0x100000010000010L, 0x802000000020L, 0x100000044L, 0x1010000000000000L, + 0x400000000001000L, 0x10000854933074L, 0x150088e103000000L, false, 0, 0x0L), + 4 + ), + 1522310 + ); + + // gentest-113 + assertEqual( + perft( + Board(0x8c865930000L, 0x100000010000010L, 0x802000000020L, 0x100000044L, 0x810000000000000L, + 0x400000000001000L, 0x10000874921074L, 0xd0088e101010000L, true, 0, 0x0L), + 4 + ), + 1564035 + ); + + // gentest-114 + assertEqual( + perft( + Board(0x8c867910000L, 0x20400000010L, 0x802000000020L, 0x100000044L, 0x810000000000000L, + 0x400000000001000L, 0x10000c66901074L, 0xc008ae101010000L, false, 0, 0x0L), + 4 + ), + 1829511 + ); + + // gentest-115 + assertEqual( + perft( + Board(0x848e7910000L, 0x120000000010L, 0x802000000020L, 0x200000044L, 0x810000000000000L, + 0x400000000001000L, 0x10100866901074L, 0xc008a6281010000L, true, 0, 0x0L), + 4 + ), + 1063673 + ); + + // gentest-116 + assertEqual( + perft( + Board(0x848e7910000L, 0x120000000010L, 0x802000000020L, 0x200000041L, 0x800000000000000L, + 0x8000000001000L, 0x100866901071L, 0x8088a6281010000L, false, 0, 0x0L), + 4 + ), + 777314 + ); + + // gentest-117 + assertEqual( + perft( + Board(0x848e7900100L, 0x100100000000010L, 0x802000004000L, 0x200000041L, 0x800000000000000L, + 0x8000000001000L, 0x100866905051L, 0x908886281000100L, true, 0, 0x0L), + 4 + ), + 913433 + ); + + // gentest-118 + assertEqual( + perft( + Board(0x848f7800100L, 0x100100000000400L, 0x2000002000004000L, 0x200000041L, 0x800000000000000L, + 0x8000000001000L, 0x100876805441L, 0x2908086281000100L, false, 0, 0x0L), + 4 + ), + 1183963 + ); + + // gentest-119 + assertEqual( + perft( + Board(0x848f7800100L, 0x100000400000400L, 0x802000004000L, 0x200000041L, 0x800000000000000L, + 0x400000000001000L, 0xc76805441L, 0xd00886281000100L, true, 0, 0x0L), + 4 + ), + 1394054 + ); + + // gentest-120 + assertEqual( + perft( + Board(0x848f7800100L, 0x100100000000400L, 0x2000002000004000L, 0x200000048L, 0x800000000000000L, + 0x400000000001000L, 0x100876805448L, 0x2d00086281000100L, false, 0, 0x0L), + 4 + ), + 1463252 + ); + + // gentest-121 + assertEqual( + perft( + Board(0x848f7800100L, 0x4100000000400L, 0x2000002000000080L, 0x200000048L, 0x200000000000L, + 0x400000000001000L, 0x1008768014c8L, 0x2404286281000100L, true, 0, 0x0L), + 4 + ), + 2271336 + ); + + // gentest-122 + assertEqual( + perft( + Board(0x848f7800100L, 0x804000000000400L, 0x2000002000000080L, 0x200000000000048L, 0x200000000000L, + 0x400000000002000L, 0x8000008768024c8L, 0x2604286081000100L, false, 0, 0x0L), + 4 + ), + 1746961 + ); + + // gentest-123 + assertEqual( + perft( + Board(0x848f5800100L, 0x804000000010000L, 0x2000002000000080L, 0x2000048L, 0x1000000000L, + 0x400000000002000L, 0x8000008748120c8L, 0x2404087083000100L, true, 0, 0x0L), + 4 + ), + 1688989 + ); + + // gentest-124 + assertEqual( + perft( + Board(0x848e5800100L, 0x804000000000400L, 0x2000002000000080L, 0x2000840L, 0x10000000L, + 0x400000000002000L, 0x800000864802cc0L, 0x2404086093000100L, false, 0, 0x0L), + 4 + ), + 1477788 + ); + + // gentest-125 + assertEqual( + perft( + Board(0x848e5800100L, 0x1800000000000400L, 0x2000002000000080L, 0x2000840L, 0x0L, 0x400000000100000L, + 0x800000864900cc0L, 0x3400086083000100L, true, 0, 0x0L), + 4 + ), + 1055159 + ); + + // gentest-126 + assertEqual( + perft( + Board(0x848e5800000L, 0x1000000002000400L, 0x2000002000000081L, 0x840L, 0x0L, 0x400000000100000L, + 0x866900cc0L, 0x3400086081000001L, false, 0, 0x0L), + 4 + ), + 677190 + ); + + // gentest-127 + assertEqual( + perft( + Board(0x848e5800000L, 0x1000000000080400L, 0x2000003000000080L, 0x840L, 0x0L, 0x200000000100000L, + 0x864980cc0L, 0x3200087081000000L, true, 0, 0x0L), + 4 + ), + 799546 + ); + + // gentest-128 + assertEqual( + perft( + Board(0x848e5800000L, 0x1000000000002010L, 0x2400001000000080L, 0x840L, 0x0L, 0x200000000100000L, + 0x8649028d0L, 0x3600085081000000L, false, 0, 0x0L), + 4 + ), + 415339 + ); + + // gentest-129 + assertEqual( + perft( + Board(0x868c5800000L, 0x1000000000002010L, 0x2400800000000080L, 0x840L, 0x0L, 0x200000000100000L, + 0x28449028d0L, 0x3600884081000000L, true, 0, 0x0L), + 4 + ), + 192816 + ); + + // gentest-130 + assertEqual( + perft( + Board(0x868c5800000L, 0x200000002010L, 0x2400800010000000L, 0x440L, 0x0L, 0x200000000100000L, + 0x2854902450L, 0x2600a84081000000L, false, 0, 0x0L), + 4 + ), + 255650 + ); + + // gentest-131 + assertEqual( + perft( + Board(0x868c5800000L, 0x4000000000002010L, 0x2400800000080000L, 0x440L, 0x0L, 0x2000000100000L, + 0x2844982450L, 0x6402884081000000L, true, 0, 0x0L), + 4 + ), + 157288 + ); + + // gentest-132 + assertEqual( + perft( + Board(0x868c5800000L, 0x4000000000002010L, 0x2440000000000002L, 0x1040L, 0x0L, 0x2000000100000L, + 0x2844903052L, 0x6442084081000000L, false, 0, 0x0L), + 4 + ), + 317430 + ); + + // gentest-133 + assertEqual( + perft( + Board(0x868c5800000L, 0x4000000000000018L, 0x2440000000000002L, 0x1040L, 0x0L, 0x2000000100000L, + 0x284490105aL, 0x6442084081000000L, true, 0, 0x0L), + 4 + ), + 385647 + ); + + // gentest-134 + assertEqual( + perft( + Board(0x868c4810000L, 0x4000000000000018L, 0x2440000000000002L, 0x1040L, 0x0L, 0x2000000100000L, + 0x284490105aL, 0x6442084080010000L, false, 0, 0x0L), + 4 + ), + 388284 + ); + + // gentest-135 + assertEqual( + perft( + Board(0x868c4810000L, 0x4000000000000018L, 0x450000000000002L, 0x2040L, 0x0L, 0x100000000100000L, + 0x284490205aL, 0x4550084080010000L, true, 0, 0x0L), + 4 + ), + 442218 + ); + + // gentest-136 + assertEqual( + perft( + Board(0x868c4810000L, 0x4000000000040010L, 0x50100000000002L, 0x20000040L, 0x0L, 0x100000000100000L, + 0x2864940052L, 0x4150184080010000L, false, 0, 0x0L), + 4 + ), + 420458 + ); + + // gentest-137 + assertEqual( + perft( + Board(0x868c4810000L, 0x4000000000240000L, 0x10101000000002L, 0x20000040L, 0x0L, 0x100000000100000L, + 0x2864b40042L, 0x4110185080010000L, true, 0, 0x0L), + 4 + ), + 494428 + ); + + // gentest-138 + assertEqual( + perft( + Board(0x86cc0810000L, 0x4000000000240000L, 0x10101000000002L, 0x8000040L, 0x0L, 0x2000000100000L, + 0x2c48b40042L, 0x4012185080010000L, false, 0, 0x0L), + 4 + ), + 801728 + ); + + // gentest-139 + assertEqual( + perft( + Board(0x6cc0810000L, 0x4000000000200008L, 0x800101000000002L, 0x8000040L, 0x0L, 0x2000000100000L, + 0x2848b0004aL, 0x4802105480010000L, true, 0, 0x0L), + 4 + ), + 1007127 + ); + + // gentest-140 + assertEqual( + perft( + Board(0x6440810000L, 0x4000000080000008L, 0x800001800000002L, 0x4000040L, 0x0L, 0x2000000100000L, + 0x20c490004aL, 0x4802005c00010000L, false, 0, 0x0L), + 4 + ), + 1024337 + ); + + // gentest-141 + assertEqual( + perft( + Board(0x24c0810000L, 0x4000000000000008L, 0x1900000002L, 0x4004000L, 0x0L, 0x2000000100000L, + 0x204490400aL, 0x4002001d80010000L, true, 0, 0x0L), + 4 + ), + 1018724 + ); + + // gentest-142 + assertEqual( + perft( + Board(0x24c0810000L, 0x4000000000000008L, 0x21800000002L, 0xc000000L, 0x0L, 0x2000000100000L, + 0x204c90000aL, 0x4002021c80010000L, false, 0, 0x0L), + 4 + ), + 626245 + ); + + // gentest-143 + assertEqual( + perft( + Board(0x24c0810000L, 0x4000000000000008L, 0x21000000102L, 0x9000000L, 0x0L, 0x200000000100000L, + 0x204990000aL, 0x4200021480010100L, true, 0, 0x0L), + 4 + ), + 578656 + ); + + // gentest-144 + assertEqual( + perft( + Board(0x24c0810000L, 0x4000000000000008L, 0x1001000080100L, 0x9000000L, 0x0L, 0x200000000100000L, + 0x2049980008L, 0x4201001480010100L, false, 0, 0x0L), + 4 + ), + 461885 + ); + + // gentest-145 + assertEqual( + perft( + Board(0x20c8810000L, 0x4000000000000008L, 0x1001000080100L, 0x1000000L, 0x0L, 0x4000000001000L, + 0x2041881008L, 0x4005001088010100L, true, 0, 0x0L), + 4 + ), + 360665 + ); + + // gentest-146 + assertEqual( + perft( + Board(0x2000c8800000L, 0x4000000000000008L, 0x1001000080100L, 0x10000L, 0x0L, 0x2000000001000L, + 0x200040891008L, 0x4003001088000100L, false, 0, 0x0L), + 4 + ), + 424101 + ); + + // gentest-147 + assertEqual( + perft( + Board(0x2000c8800000L, 0x4000000000002000L, 0x1000000480100L, 0x10000L, 0x0L, 0x100000000001000L, + 0x200040893000L, 0x4101000088400100L, true, 0, 0x0L), + 4 + ), + 226618 + ); + + // gentest-148 + assertEqual( + perft( + Board(0x2000c8800000L, 0x4000000000002000L, 0x1000000400102L, 0x200000L, 0x0L, 0x200000000001000L, + 0x200040a03002L, 0x4201000088400100L, false, 0, 0x0L), + 4 + ), + 281430 + ); + + // gentest-149 + assertEqual( + perft( + Board(0x2000c8800000L, 0x4000000000002000L, 0x1000820000002L, 0x400000L, 0x0L, 0x200000000001000L, + 0x200040c03002L, 0x42010008a8000000L, true, 0, 0x0L), + 4 + ), + 487323 + ); + + // gentest-150 + assertEqual( + perft( + Board(0x2000c8800000L, 0x10000010000000L, 0x1000820000002L, 0x400000L, 0x0L, 0x200000000080000L, + 0x200050c80002L, 0x2110008a8000000L, false, 0, 0x0L), + 4 + ), + 261280 + ); + + // gentest-151 + assertEqual( + perft( + Board(0x200048c00000L, 0x10000400000000L, 0x1000820000002L, 0x0L, 0x0L, 0x400000000080000L, + 0x200440880002L, 0x411000828400000L, true, 0, 0x0L), + 4 + ), + 228853 + ); + + // gentest-152 + assertEqual( + perft( + Board(0x200048800000L, 0x10000000400000L, 0xc20000002L, 0x0L, 0x0L, 0x400000000080000L, + 0x200040c80002L, 0x410000c28000000L, false, 0, 0x0L), + 4 + ), + 252394 + ); + + // gentest-153 + assertEqual( + perft( + Board(0x200048800000L, 0x10000000001000L, 0x4802000002L, 0x0L, 0x0L, 0x400000000080000L, + 0x200040881002L, 0x41000480a000000L, true, 0, 0x0L), + 4 + ), + 204517 + ); + + // gentest-154 + assertEqual( + perft( + Board(0x100000c8000000L, 0x1000L, 0x4c00000002L, 0x0L, 0x0L, 0x400000000080000L, 0x100000c0081002L, + 0x400004c08000000L, false, 0, 0x0L), + 4 + ), + 187665 + ); + + // gentest-155 + assertEqual( + perft( + Board(0x100000c8000000L, 0x1000L, 0x4000014100L, 0x0L, 0x0L, 0x400000000080000L, 0x100000c0081100L, + 0x400004008014000L, true, 0, 0x0L), + 4 + ), + 253977 + ); + + // gentest-156 + assertEqual( + perft( + Board(0xc8000000L, 0x1000L, 0x800000004014000L, 0x1000000000000000L, 0x0L, 0x400000000080000L, + 0x10000000c4081000L, 0xc00000008014000L, false, 0, 0x0L), + 4 + ), + 268014 + ); + + // gentest-157 + assertEqual( + perft( + Board(0xc8000000L, 0x1000L, 0x2800010000004000L, 0x1000000000000000L, 0x0L, 0x200000000080000L, + 0x10000100c0081000L, 0x2a00000008004000L, true, 0, 0x0L), + 4 + ), + 222543 + ); + + // gentest-158 + assertEqual( + perft( + Board(0xc8000000L, 0x40000L, 0x800010000004000L, 0x2000000000000000L, 0x0L, 0x1000000080000L, + 0x20000100c00c0000L, 0x801000008004000L, false, 0, 0x0L), + 4 + ), + 269977 + ); + + // gentest-159 + assertEqual( + perft( + Board(0xc8000000L, 0x1000000L, 0x4000004000L, 0x2000000000000000L, 0x0L, 0x10000080000L, + 0x20000000c1080000L, 0x14008004000L, true, 0, 0x0L), + 4 + ), + 179032 + ); + + // gentest-160 + assertEqual( + perft( + Board(0xc8000000L, 0x1000000L, 0x20004000L, 0x8000000000L, 0x0L, 0x10000080000L, 0x80c1080000L, + 0x10028004000L, false, 0, 0x0L), + 4 + ), + 126337 + ); + + // gentest-161 + assertEqual( + perft( + Board(0xc8000000L, 0x1000000L, 0x400020L, 0x400000000L, 0x0L, 0x10000080000L, 0x4c1080000L, + 0x10008400020L, true, 0, 0x0L), + 4 + ), + 24579 + ); + + // gentest-162 + assertEqual( + perft( + Board(0xc0000000L, 0x1000000L, 0x80000000020L, 0x400000000L, 0x0L, 0x10000040000L, 0x4c1040000L, + 0x90000000020L, false, 0, 0x0L), + 4 + ), + 110536 + ); + + // gentest-163 + assertEqual( + perft( + Board(0xc0000000L, 0x1000000L, 0x20L, 0x4000000000000L, 0x0L, 0x100040000L, 0x40000c1040000L, + 0x100000020L, true, 0, 0x0L), + 4 + ), + 41007 + ); + + // gentest-164 + assertEqual( + perft( + Board(0xc0000000L, 0x1000000L, 0x10000000000L, 0x80000000000000L, 0x0L, 0x100040000L, + 0x800000c1040000L, 0x10100000000L, false, 0, 0x0L), + 4 + ), + 36864 + ); + + // gentest-165 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80000L, 0x40000000000000L, 0x0L, 0x1040000L, 0x400000c0040000L, 0x1080000L, + true, 0, 0x0L), + 4 + ), + 39090 + ); + + // gentest-166 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80000L, 0x8000000000000L, 0x0L, 0x200000200L, 0x80000c0000200L, + 0x200080000L, false, 0, 0x0L), + 4 + ), + 98651 + ); + + // gentest-167 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80000L, 0x8000000L, 0x0L, 0x200000200L, 0xc8000200L, 0x200080000L, true, 0, + 0x0L), + 4 + ), + 53654 + ); + + // gentest-168 + assertEqual( + perft( + Board(0x4080000000L, 0x0L, 0x4000000L, 0x1000000L, 0x0L, 0x200000200L, 0x4081000200L, 0x204000000L, + false, 0, 0x0L), + 4 + ), + 58314 + ); + + // gentest-169 + assertEqual( + perft( + Board(0x400080000000L, 0x0L, 0x4000000L, 0x0L, 0x0L, 0x2000200L, 0x400080000200L, 0x6000000L, true, 0, + 0x0L), + 4 + ), + 10016 + ); + + // gentest-170 + assertEqual( + perft( + Board(0x400080000000L, 0x0L, 0x4000000L, 0x0L, 0x0L, 0x40008L, 0x400080000008L, 0x4040000L, false, 0, + 0x0L), + 4 + ), + 6579 + ); + + // gentest-171 + assertEqual( + perft( + Board(0x408000000000L, 0x0L, 0x100000000000L, 0x0L, 0x0L, 0x80008L, 0x408000000008L, 0x100000080000L, + true, 0, 0x0L), + 4 + ), + 5458 + ); + + // gentest-172 + assertEqual( + perft( + Board(0x80400000000000L, 0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x80008L, 0x80400000000008L, + 0x20000000080000L, false, 0, 0x0L), + 4 + ), + 15092 + ); + + // gentest-173 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-174 + assertEqual( + perft( + Board(0xdf00200401fa00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x401faffL, 0xffdf002000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 221495 + ); + + // gentest-175 + assertEqual( + perft( + Board(0xdf00002500fa00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x500faffL, 0xbfdf200020000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 307209 + ); + + // gentest-176 + assertEqual( + perft( + Board(0xd700082508f200L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000010080L, + 0x800000000000008L, 0x1000000000000010L, 0x509f2feL, 0xbfd7200820000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 880242 + ); + + // gentest-177 + assertEqual( + perft( + Board(0x87005825887200L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000010080L, + 0x800000000000008L, 0x1000000000000010L, 0x58972feL, 0xbf87205820000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 1166930 + ); + + // gentest-178 + assertEqual( + perft( + Board(0x87005825887200L, 0x200200000000042L, 0x2400000000100020L, 0x8100000000010080L, + 0x800000000000800L, 0x20000000000010L, 0x5997af2L, 0xafa7205820000000L, false, 0, 0x80L), + 4 + ), + 1756740 + ); + + // gentest-179 + assertEqual( + perft( + Board(0x700d825087200L, 0x200200000000042L, 0x2000020000800020L, 0x8100000000010080L, + 0x800000000000800L, 0x20000000000010L, 0x20005097af2L, 0xab2720d820800000L, true, 0, 0x80L), + 4 + ), + 2688254 + ); + + // gentest-180 + assertEqual( + perft( + Board(0x700d8250a7000L, 0x200200000000042L, 0x20002800020L, 0x8100000000000180L, 0x800000000000800L, + 0x20000000000010L, 0x200050a79f2L, 0x8b2720d822800000L, false, 0, 0x80L), + 4 + ), + 2361793 + ); + + // gentest-181 + assertEqual( + perft( + Board(0x700d0210a7000L, 0x200200000000042L, 0x20002800020L, 0x8100000000000180L, 0x800000800L, + 0x20000000000010L, 0x200010a79f2L, 0x832720d822800000L, true, 0, 0x80L), + 4 + ), + 2552421 + ); + + // gentest-182 + assertEqual( + perft( + Board(0x300d0210a7000L, 0x200000000042L, 0x200000002800020L, 0x8100000000000180L, 0x800000800L, + 0x40000000000010L, 0x2000000010a79f2L, 0x814320d822800000L, false, 0, 0x80L), + 4 + ), + 2325605 + ); + + // gentest-183 + assertEqual( + perft( + Board(0x30090610a7000L, 0x200000800002L, 0x200000002000020L, 0x8100000000000180L, 0x100000800L, + 0x40000000000010L, 0x2000000018a79b2L, 0x8143209162000000L, true, 0, 0x80L), + 4 + ), + 1067873 + ); + + // gentest-184 + assertEqual( + perft( + Board(0x30090610a7000L, 0x200000800002L, 0x80002000020L, 0x8100000000000280L, 0x100000800L, + 0x20000000000010L, 0x800018a7ab2L, 0x8123209162000000L, false, 0, 0x80L), + 4 + ), + 1207848 + ); + + // gentest-185 + assertEqual( + perft( + Board(0x30090610a7000L, 0x840002L, 0x80002000020L, 0x8100000000000240L, 0x100000800L, + 0x20000000000010L, 0x800018a7a72L, 0x8123009162040000L, true, 0, 0x0L), + 4 + ), + 1159671 + ); + + // gentest-186 + assertEqual( + perft( + Board(0x30090610a7000L, 0x840002L, 0x402000020L, 0x180000000000240L, 0x100100000L, 0x20000000000010L, + 0x4019a7272L, 0x1a3009162040000L, false, 0, 0x0L), + 4 + ), + 1034200 + ); + + // gentest-187 + assertEqual( + perft( + Board(0x10290610a7000L, 0x840002L, 0x402000020L, 0x180000000000280L, 0x100100000L, 0x200000000010L, + 0x4019a72b2L, 0x181229162040000L, true, 0, 0x0L), + 4 + ), + 1127423 + ); + + // gentest-188 + assertEqual( + perft( + Board(0x10290610a7000L, 0x840002L, 0x10000002000020L, 0x180000000000280L, 0x100100000L, + 0x400000000800L, 0x100000019a7aa2L, 0x181429162040000L, false, 0, 0x0L), + 4 + ), + 1073189 + ); + + // gentest-189 + assertEqual( + perft( + Board(0x10290610a7000L, 0x840002L, 0x2000020L, 0x2080000000000280L, 0x100100000L, 0x200000000800L, + 0x39a7aa2L, 0x2081229160040000L, true, 0, 0x0L), + 4 + ), + 1191780 + ); + + // gentest-190 + assertEqual( + perft( + Board(0x10090611a6000L, 0x840002L, 0x2000020L, 0x2080000000000280L, 0x20100000000L, 0x2000000800L, + 0x200039a6aa2L, 0x208100b160040000L, false, 0, 0x0L), + 4 + ), + 1992851 + ); + + // gentest-191 + assertEqual( + perft( + Board(0x10090611a6000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x20100000000L, 0x2000000400L, + 0x200039a66a2L, 0x202100b160040000L, true, 0, 0x0L), + 4 + ), + 1834477 + ); + + // gentest-192 + assertEqual( + perft( + Board(0x10010e11a6000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x1000000100000000L, + 0x2000000400L, 0x10000000039a66a2L, 0x20210031e0040000L, false, 0, 0x0L), + 4 + ), + 1423025 + ); + + // gentest-193 + assertEqual( + perft( + Board(0x10010c13a4000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x1004000000000000L, + 0x2000000400L, 0x1000000003aa46a2L, 0x20250030c0140000L, true, 0, 0x0L), + 4 + ), + 1153685 + ); + + // gentest-194 + assertEqual( + perft( + Board(0x10010c13a4000L, 0x840002L, 0x2000020L, 0x2020000000000240L, 0xc000000000000L, 0x200000000400L, + 0x8000003aa4662L, 0x20252010c0140000L, false, 0, 0x0L), + 4 + ), + 1189959 + ); + + // gentest-195 + assertEqual( + perft( + Board(0x11c13a4000L, 0x840002L, 0x2000020L, 0x2020000000000280L, 0x9000000000000L, 0x200000000400L, + 0x8000003aa46a2L, 0x20212011c0140000L, true, 0, 0x0L), + 4 + ), + 1370682 + ); + + // gentest-196 + assertEqual( + perft( + Board(0x11c13a4000L, 0x840800L, 0x2000020L, 0x1020000000000280L, 0x1000008000000L, 0x200000000400L, + 0xbaa4ea0L, 0x10212011c0140000L, false, 0, 0x0L), + 4 + ), + 2166254 + ); + + // gentest-197 + assertEqual( + perft( + Board(0x11817a0000L, 0x840800L, 0x2000020L, 0x1020000000000280L, 0x20008000000L, 0x200000000400L, + 0xbca0ea0L, 0x1020221180340000L, true, 0, 0x0L), + 4 + ), + 2157199 + ); + + // gentest-198 + assertEqual( + perft( + Board(0x11817a0000L, 0x840800L, 0x4000L, 0x30000000000280L, 0x20008000000L, 0x200000000400L, + 0x9ca4e80L, 0x30221180340000L, false, 0, 0x0L), + 4 + ), + 2105288 + ); + + // gentest-199 + assertEqual( + perft( + Board(0x11817a0000L, 0x840800L, 0x4000L, 0x88000000000240L, 0x20008000000L, 0x200000000400L, + 0x9ca4e40L, 0x88221180340000L, true, 0, 0x0L), + 4 + ), + 2460084 + ); + + // gentest-200 + assertEqual( + perft( + Board(0x1183780000L, 0x840800L, 0x4000L, 0x880000000000202L, 0x20008000000L, 0x200000000400L, + 0xbc84e02L, 0x880221180340000L, false, 0, 0x0L), + 4 + ), + 3835695 + ); + + // gentest-201 + assertEqual( + perft( + Board(0x1183780000L, 0x40840L, 0x4000L, 0x880000000000202L, 0x10008000000L, 0x200000000400L, + 0xb484e42L, 0x880211180340000L, true, 0, 0x0L), + 4 + ), + 3155675 + ); + + // gentest-202 + assertEqual( + perft( + Board(0x11c3380000L, 0x40840L, 0x4000L, 0x80000008000202L, 0x10000000000L, 0x200000020000L, + 0x430a4a42L, 0x80211188340000L, false, 0, 0x0L), + 4 + ), + 1298865 + ); + + // gentest-203 + assertEqual( + perft( + Board(0x1d3380000L, 0x40840L, 0x4000L, 0x8008000102L, 0x10000000000L, 0x200000020000L, 0x430a4942L, + 0x218198340000L, true, 0, 0x0L), + 4 + ), + 1585324 + ); + + // gentest-204 + assertEqual( + perft( + Board(0x153180000L, 0x80040800L, 0x4000L, 0x4008000102L, 0x10000000000L, 0x200000020000L, 0xc30a4902L, + 0x214118140000L, false, 0, 0x0L), + 4 + ), + 1450959 + ); + + // gentest-205 + assertEqual( + perft( + Board(0x153081000L, 0x240800L, 0x4000L, 0x4008000102L, 0x1000000000000L, 0x200000020000L, 0x432a4902L, + 0x1204118041000L, true, 0, 0x0L), + 4 + ), + 1979363 + ); + + // gentest-206 + assertEqual( + perft( + Board(0x153081000L, 0x812L, 0x4000L, 0x4008000400L, 0x1000000000000L, 0x200000020000L, 0x430a4c10L, + 0x1204118001002L, false, 0, 0x0L), + 4 + ), + 889038 + ); + + // gentest-207 + assertEqual( + perft( + Board(0x153081000L, 0x200012L, 0x4000L, 0x8800000400L, 0x1000000000000L, 0x200000020000L, 0x432a4410L, + 0x1208910001002L, true, 0, 0x0L), + 4 + ), + 1514645 + ); + + // gentest-208 + assertEqual( + perft( + Board(0x153081000L, 0x850L, 0x4000L, 0x8800000400L, 0x1000000000000L, 0x200000040000L, 0x430c4450L, + 0x1208910001800L, false, 0, 0x0L), + 4 + ), + 823315 + ); + + // gentest-209 + assertEqual( + perft( + Board(0x153081000L, 0x850L, 0x800000L, 0x8008400L, 0x1000000000000L, 0x200000040000L, 0x438c0450L, + 0x1200118009800L, true, 0, 0x0L), + 4 + ), + 366670 + ); + + // gentest-210 + assertEqual( + perft( + Board(0x153081000L, 0x200040L, 0x800000L, 0x8008400L, 0x400000000L, 0x200000000800L, 0x43a80c40L, + 0x200518009000L, false, 0, 0x0L), + 4 + ), + 566531 + ); + + // gentest-211 + assertEqual( + perft( + Board(0x153081000L, 0x1000000040L, 0x0L, 0x8008000400L, 0x400000000L, 0x200000000800L, 0x1043080c40L, + 0x208518001000L, true, 0, 0x0L), + 4 + ), + 753644 + ); + + // gentest-212 + assertEqual( + perft( + Board(0x153081000L, 0x5000000000L, 0x0L, 0x8000480L, 0x400000000L, 0x200000000800L, 0x5043080c00L, + 0x200518001080L, false, 0, 0x0L), + 4 + ), + 744017 + ); + + // gentest-213 + assertEqual( + perft( + Board(0x53081000L, 0x80001000000000L, 0x0L, 0x8000480L, 0x400000000L, 0x40000000000800L, + 0x80001041080c00L, 0x4000041a001080L, true, 0, 0x0L), + 4 + ), + 656842 + ); + + // gentest-214 + assertEqual( + perft( + Board(0x53081000L, 0x80000000200000L, 0x0L, 0x8040002L, 0x400000000L, 0x40000000000800L, + 0x800000412c0800L, 0x4000041a001002L, false, 0, 0x0L), + 4 + ), + 670900 + ); + + // gentest-215 + assertEqual( + perft( + Board(0x13081000L, 0x80000000200000L, 0x0L, 0x8040002L, 0x4000000000L, 0x40000000000800L, + 0x800000012c0800L, 0x4000401a001002L, true, 0, 0x0L), + 4 + ), + 103116 + ); + + // gentest-216 + assertEqual( + perft( + Board(0x13080000L, 0x4000200000L, 0x0L, 0x8040002L, 0x400000000L, 0x40000000001000L, 0x40012c1000L, + 0x4000041a000002L, false, 0, 0x0L), + 4 + ), + 740651 + ); + + // gentest-217 + assertEqual( + perft( + Board(0x13080000L, 0x4000200000L, 0x0L, 0x800000000040002L, 0x4000000L, 0x40000000002000L, + 0x40012c2000L, 0x840000016000002L, true, 0, 0x0L), + 4 + ), + 988061 + ); + + // gentest-218 + assertEqual( + perft( + Board(0x13080000L, 0x4080000000L, 0x0L, 0x800000000040002L, 0x8000000L, 0x40000000004000L, + 0x40810c4000L, 0x84000001a000002L, false, 0, 0x0L), + 4 + ), + 703958 + ); + + // gentest-219 + assertEqual( + perft( + Board(0x13080000L, 0x100080000000L, 0x0L, 0x800000000040002L, 0x800000000L, 0x20000000004000L, + 0x1000810c4000L, 0x820000812000002L, true, 0, 0x0L), + 4 + ), + 983771 + ); + + // gentest-220 + assertEqual( + perft( + Board(0x110a0000L, 0x500000000000L, 0x0L, 0x800000004000002L, 0x800000000L, 0x20000000004000L, + 0x500005084000L, 0x820000810020002L, false, 0, 0x0L), + 4 + ), + 930928 + ); + + // gentest-221 + assertEqual( + perft( + Board(0x110a0000L, 0x500000000000L, 0x0L, 0x804000002L, 0x4000000000L, 0x20000000008000L, + 0x500005088000L, 0x20004810020002L, true, 0, 0x0L), + 4 + ), + 723494 + ); + + // gentest-222 + assertEqual( + perft( + Board(0x110a0000L, 0x40000020000000L, 0x0L, 0x804000002L, 0x1000000000L, 0x20000000008000L, + 0x40000025088000L, 0x20001810020002L, false, 0, 0x0L), + 4 + ), + 593298 + ); + + // gentest-223 + assertEqual( + perft( + Board(0x110a0000L, 0x20000000L, 0x0L, 0x4000800000002L, 0x40000000000000L, 0x2000000000008000L, + 0x4000021088000L, 0x2040000810020002L, true, 0, 0x0L), + 4 + ), + 580215 + ); + + // gentest-224 + assertEqual( + perft( + Board(0x110a0000L, 0x4000L, 0x0L, 0x10002000000002L, 0x40000000000000L, 0x2000000000008000L, + 0x1000000108c000L, 0x2040002010020002L, false, 0, 0x0L), + 4 + ), + 343776 + ); + + // gentest-225 + assertEqual( + perft( + Board(0x110a0000L, 0x0L, 0x0L, 0x10000080000002L, 0x40000000000000L, 0x2000000000008000L, + 0x10000001088000L, 0x2040000090020002L, true, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-226 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-227 + assertEqual( + perft( + Board(0x7f800080007f00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80807fbfL, 0xff7f800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 213604 + ); + + // gentest-228 + assertEqual( + perft( + Board(0x5e812080007f00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000041L, + 0x800000000000008L, 0x1000000000000010L, 0x80807f7fL, 0xff5e812000000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 165912 + ); + + // gentest-229 + assertEqual( + perft( + Board(0x5a812480047b00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80847bbfL, 0xff5a812400000000L, false, 0, + 0x8100000000000001L), + 4 + ), + 264849 + ); + + // gentest-230 + assertEqual( + perft( + Board(0x4a902580245b00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80a45bbfL, 0xff4a902500000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 482676 + ); + + // gentest-231 + assertEqual( + perft( + Board(0x429825802c5300L, 0x4200000000800800L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80ac5bbdL, 0xff42982500000000L, false, 0, + 0x8100000000000001L), + 4 + ), + 638663 + ); + + // gentest-232 + assertEqual( + perft( + Board(0x429825902c4300L, 0x4000040000800800L, 0x2400000000000024L, 0x8100000000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x90ac4bbdL, 0xf5469c2500000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 1053636 + ); + + // gentest-233 + assertEqual( + perft( + Board(0x429825902c4300L, 0x10040000800800L, 0x2400000000001004L, 0x8100000000000081L, + 0x4000000000008L, 0x1000000000000020L, 0x90ac5badL, 0xb5569c2500000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 930788 + ); + + // gentest-234 + assertEqual( + perft( + Board(0x429824912c4300L, 0x10040020000800L, 0x2400000000001004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000020L, 0xb02c5badL, 0xbd529c2401000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 904102 + ); + + // gentest-235 + assertEqual( + perft( + Board(0x429824902c4300L, 0x10040000800800L, 0x2008000000001004L, 0x8100000000000081L, + 0x800000001000000L, 0x1000000000000020L, 0x91ac5ba5L, 0xb95a9c2400000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1642686 + ); + + // gentest-236 + assertEqual( + perft( + Board(0x29864902c4300L, 0x10040000800800L, 0x2008000000001004L, 0x8100000000000081L, + 0x800000004000000L, 0x20000000000020L, 0x94ac5ba5L, 0xa93a9c6400000000L, true, 0, 0x0L), + 4 + ), + 1883115 + ); + + // gentest-237 + assertEqual( + perft( + Board(0x29864902c4300L, 0x10040020000800L, 0x200800000000000cL, 0x8100000000000081L, 0x20004000000L, + 0x20000000000020L, 0xb42c4badL, 0xa13a9e6400000000L, false, 0, 0x0L), + 4 + ), + 2963978 + ); + + // gentest-238 + assertEqual( + perft( + Board(0x29864902c4300L, 0x40820020000L, 0x200800000000000cL, 0x8100000000000081L, 0x20004000000L, + 0x1000000000000020L, 0xb42e43adL, 0xb10a9e6c00000000L, true, 0, 0x0L), + 4 + ), + 2979618 + ); + + // gentest-239 + assertEqual( + perft( + Board(0x29864902d4200L, 0x40002021000L, 0x200800000000000cL, 0x8100000000000081L, 0x20004000000L, + 0x1000000000000020L, 0x942f52adL, 0xb10a9e6402000000L, false, 0, 0x0L), + 4 + ), + 2469594 + ); + + // gentest-240 + assertEqual( + perft( + Board(0x29864902d4200L, 0x200000102001000L, 0x200800000000000cL, 0x8800000000000081L, 0x20004000000L, + 0x1000000000000020L, 0x1942d52adL, 0xba0a9a6402000000L, true, 0, 0x0L), + 4 + ), + 1827435 + ); + + // gentest-241 + assertEqual( + perft( + Board(0x29844902d4200L, 0x210000002001000L, 0x200800000000000cL, 0x8800000000000081L, 0x20004000000L, + 0x1000000000000020L, 0x100000842d52adL, 0xba0a9a4412000000L, false, 0, 0x0L), + 4 + ), + 2304898 + ); + + // gentest-242 + assertEqual( + perft( + Board(0x29844902d4200L, 0x210000002001000L, 0x200800000000000cL, 0x4800000000000081L, 0x100020000L, + 0x1000000000000020L, 0x100000802f52adL, 0x7a0a984512000000L, true, 0, 0x0L), + 4 + ), + 2472800 + ); + + // gentest-243 + assertEqual( + perft( + Board(0x9846900d4200L, 0x210000002001000L, 0x200800000000000cL, 0x4800000000000081L, 0x104000000L, + 0x1000000000000020L, 0x100000940d52adL, 0x7a08984702000000L, false, 0, 0x0L), + 4 + ), + 1749150 + ); + + // gentest-244 + assertEqual( + perft( + Board(0x9846900d4200L, 0x210020000001000L, 0x200800000000000cL, 0x4800000000000082L, 0x104000000L, + 0x1000000000000020L, 0x100000940d52aeL, 0x7a089a4700000000L, true, 0, 0x0L), + 4 + ), + 1707683 + ); + + // gentest-245 + assertEqual( + perft( + Board(0x9846900f4000L, 0x210020000001000L, 0x200800000000000cL, 0x4800000000000082L, 0x1000001000000L, + 0x1000000000000020L, 0x100000910f50aeL, 0x7a099a4600000000L, false, 0, 0x0L), + 4 + ), + 1414056 + ); + + // gentest-246 + assertEqual( + perft( + Board(0x9846900f4000L, 0x200060000001000L, 0x200800000000000cL, 0x800400000000082L, 0x2000001000000L, + 0x1000000000000020L, 0x400910f50aeL, 0x3a0ada4600000000L, true, 0, 0x0L), + 4 + ), + 1557524 + ); + + // gentest-247 + assertEqual( + perft( + Board(0x9846900f4000L, 0x200040004001000L, 0x200800000000000cL, 0x800400000000082L, 0x2000000100000L, + 0x1000000000000020L, 0x400901f50aeL, 0x3a0ad84604000000L, false, 0, 0x0L), + 4 + ), + 1458071 + ); + + // gentest-248 + assertEqual( + perft( + Board(0x1806900f4000L, 0x200040004001000L, 0x200800000000000cL, 0x800800000000082L, 0x2000000000000L, + 0x1000000000000020L, 0x400100f50aeL, 0x3a0a980684000000L, true, 0, 0x0L), + 4 + ), + 1187713 + ); + + // gentest-249 + assertEqual( + perft( + Board(0x1806900e4000L, 0x200040000011000L, 0x200800000000000cL, 0x800800000000082L, 0x2000000000000L, + 0x1000000000000020L, 0x400100e50aeL, 0x3a0a980680010000L, false, 0, 0x0L), + 4 + ), + 903728 + ); + + // gentest-250 + assertEqual( + perft( + Board(0x1806800e4000L, 0x1000011000L, 0x200800000000000cL, 0x800800000000082L, 0x2000000000000L, + 0x1000000000000020L, 0xe50aeL, 0x380a981680010000L, true, 0, 0x0L), + 4 + ), + 1026466 + ); + + // gentest-251 + assertEqual( + perft( + Board(0x1806840a4000L, 0x40011000L, 0x200800000000000cL, 0x800800000000042L, 0x2000000000000L, + 0x1000000000000020L, 0x40a506eL, 0x380a9806c0010000L, false, 0, 0x0L), + 4 + ), + 565643 + ); + + // gentest-252 + assertEqual( + perft( + Board(0x1806800a4000L, 0x44001000L, 0x48000000100008L, 0x800800000000042L, 0x2000000000000L, + 0x1000000000000020L, 0x1a506aL, 0x184a9806c4000000L, true, 0, 0x0L), + 4 + ), + 1168595 + ); + + // gentest-253 + assertEqual( + perft( + Board(0x100e84084000L, 0x40001000L, 0x48000001100000L, 0x800800000000042L, 0x2000000000000L, + 0x1000000000000020L, 0x5185062L, 0x184a900ec0000000L, false, 0, 0x0L), + 4 + ), + 1333706 + ); + + // gentest-254 + assertEqual( + perft( + Board(0x1a86084000L, 0x40001000L, 0x48000001100000L, 0x800800000000040L, 0x2000000000000L, + 0x1000000000000020L, 0x5185060L, 0x184a801ac2000000L, true, 0, 0x0L), + 4 + ), + 1023884 + ); + + // gentest-255 + assertEqual( + perft( + Board(0x1e82084000L, 0x40001000L, 0x40100001100000L, 0x800800000000080L, 0x2000000000000L, + 0x1000000000000020L, 0x4011850a0L, 0x1842901ac2000000L, false, 0, 0x0L), + 4 + ), + 1030120 + ); + + // gentest-256 + assertEqual( + perft( + Board(0x1e82084000L, 0x40001000L, 0x40100001000040L, 0x8800000000080L, 0x20000000000L, + 0x1000000000000020L, 0x4010850e0L, 0x1048921ac2000000L, true, 0, 0x0L), + 4 + ), + 697548 + ); + + // gentest-257 + assertEqual( + perft( + Board(0x1e8a004000L, 0x40001000L, 0x40100001000040L, 0x800800000800000L, 0x20000000000L, + 0x1000000000000020L, 0x409805060L, 0x1840921ac2000000L, false, 0, 0x0L), + 4 + ), + 848525 + ); + + // gentest-258 + assertEqual( + perft( + Board(0x1e0a004000L, 0x40001000L, 0x40100001000040L, 0x1800080000000L, 0x20000000000L, + 0x1000000000000020L, 0x489005060L, 0x1041921a42000000L, true, 0, 0x0L), + 4 + ), + 902369 + ); + + // gentest-259 + assertEqual( + perft( + Board(0x41a0a004000L, 0x40001000L, 0x40100001000040L, 0x1800000008000L, 0x20000000000L, + 0x800000000000020L, 0x4000900d060L, 0x841921a42000000L, false, 0, 0x0L), + 4 + ), + 678556 + ); + + // gentest-260 + assertEqual( + perft( + Board(0x41a0a004000L, 0x40040000L, 0x40002001000040L, 0x1800000008000L, 0x400000000L, + 0x800000000000020L, 0x4000904c060L, 0x841803e42000000L, true, 0, 0x0L), + 4 + ), + 1367656 + ); + + // gentest-261 + assertEqual( + perft( + Board(0x41a0a004000L, 0x440000000L, 0x40002001000040L, 0x1800000008000L, 0x2000000000000000L, + 0x800000000000020L, 0x4040900c060L, 0x2841803a42000000L, false, 0, 0x0L), + 4 + ), + 884926 + ); + + // gentest-262 + assertEqual( + perft( + Board(0x41a0a004000L, 0x50000000L, 0x40002001000040L, 0x20800000008000L, 0x10000000000000L, + 0x800000000000020L, 0x4001900c060L, 0x870803a42000000L, true, 0, 0x0L), + 4 + ), + 935521 + ); + + // gentest-263 + assertEqual( + perft( + Board(0x4001a0a004000L, 0x80040000000L, 0x40002001000040L, 0x20800000008000L, 0x10000000000000L, + 0x400000000000020L, 0x408000900c060L, 0x470803a42000000L, false, 0, 0x0L), + 4 + ), + 67484 + ); + + // gentest-264 + assertEqual( + perft( + Board(0x4001a0a004000L, 0x40000000L, 0x40002001002000L, 0x20080000008000L, 0x2000000000000000L, + 0x400000000000020L, 0x400000900e020L, 0x2460083a42000000L, true, 0, 0x0L), + 4 + ), + 690173 + ); + + // gentest-265 + assertEqual( + perft( + Board(0x4001a0a004000L, 0x40000000L, 0x40002000002008L, 0x20040000008000L, 0x2000000000000000L, + 0x400000000000010L, 0x400000800e018L, 0x2460043a42000000L, false, 0, 0x0L), + 4 + ), + 988428 + ); + + // gentest-266 + assertEqual( + perft( + Board(0x4001a0a004000L, 0x8000L, 0x48000040002000L, 0x20040000000000L, 0x2000000000000000L, + 0x400000000000010L, 0x4000048006010L, 0x2468041a02008000L, true, 0, 0x0L), + 4 + ), + 405980 + ); + + // gentest-267 + assertEqual( + perft( + Board(0x4001a02004000L, 0x8000L, 0x40100000802000L, 0x20040000000000L, 0x2000000000000000L, + 0x400000000000010L, 0x4001000806010L, 0x2460140a02008000L, false, 0, 0x0L), + 4 + ), + 362345 + ); + + // gentest-268 + assertEqual( + perft( + Board(0x4001a02004000L, 0x8000L, 0x40120000800000L, 0x24000000L, 0x2000000000000000L, + 0x400000000000010L, 0x4021000804010L, 0x2440100a26008000L, true, 0, 0x0L), + 4 + ), + 348811 + ); + + // gentest-269 + assertEqual( + perft( + Board(0x4001a02004000L, 0x8000L, 0x40100000900000L, 0x30000000L, 0x2000000000000000L, + 0x400000000001000L, 0x4001000905000L, 0x2440100a32008000L, false, 0, 0x0L), + 4 + ), + 156664 + ); + + // gentest-270 + assertEqual( + perft( + Board(0x4001a02004000L, 0x20L, 0x40100000900000L, 0x30000000L, 0x8000000000000000L, + 0x400000000000010L, 0x4001000904010L, 0x8440100a32000020L, true, 0, 0x0L), + 4 + ), + 83063 + ); + + // gentest-271 + assertEqual( + perft( + Board(0x4001a02004000L, 0x20L, 0x40100000001000L, 0x20100000L, 0x8000000000000000L, + 0x400000000000010L, 0x4001000005010L, 0x8440100a22100020L, false, 0, 0x0L), + 4 + ), + 89503 + ); + + // gentest-272 + assertEqual( + perft( + Board(0x4001a42000000L, 0x20L, 0x40100000001000L, 0x2000100000L, 0x80L, 0x400000000000010L, + 0x4001040001010L, 0x440102a021000a0L, true, 0, 0x0L), + 4 + ), + 33059 + ); + + // gentest-273 + assertEqual( + perft( + Board(0x4003a02000000L, 0x20L, 0x40100000000000L, 0x1000L, 0x80L, 0x400000000000008L, + 0x4003000000008L, 0x440100a020010a0L, false, 0, 0x0L), + 4 + ), + 22408 + ); + + // gentest-274 + assertEqual( + perft( + Board(0x4101a02000000L, 0x20L, 0x40000000000000L, 0x200000L, 0x80L, 0x400000000000008L, + 0x4101000000008L, 0x440000a022000a0L, true, 0, 0x0L), + 4 + ), + 28484 + ); + + // gentest-275 + assertEqual( + perft( + Board(0x14001a02000000L, 0x20L, 0x40000000000000L, 0x20000000L, 0x80L, 0x400000000001000L, + 0x14001000001000L, 0x440000a220000a0L, false, 0, 0x0L), + 4 + ), + 57305 + ); + + // gentest-276 + assertEqual( + perft( + Board(0x14001a02000000L, 0x800L, 0x40000000000000L, 0x20000000L, 0x80L, 0x8000000080000L, + 0x14001000080000L, 0x48000a22000880L, true, 0, 0x0L), + 4 + ), + 143831 + ); + + // gentest-277 + assertEqual( + perft( + Board(0x10001a02000000L, 0x800L, 0x40000040000000L, 0x20000000L, 0x80L, 0x4000000080000L, + 0x10001040080000L, 0x44000a22000880L, false, 0, 0x0L), + 4 + ), + 387368 + ); + + // gentest-278 + assertEqual( + perft( + Board(0x10001a02000000L, 0x800L, 0x2000002000000000L, 0x20000000L, 0x80L, 0x20000080000L, + 0x10003000080000L, 0x2000020a22000880L, true, 0, 0x0L), + 4 + ), + 606454 + ); + + // gentest-279 + assertEqual( + perft( + Board(0x120a000000L, 0x100000000800L, 0x2000000000L, 0x20000000L, 0x80L, 0x20000080000L, + 0x103000080000L, 0x2022a000880L, false, 0, 0x0L), + 4 + ), + 269972 + ); + + // gentest-280 + assertEqual( + perft( + Board(0x120a000000L, 0x100000000800L, 0x40000000L, 0x200000L, 0x80L, 0x20000080000L, 0x101040080000L, + 0x2020a200880L, true, 0, 0x0L), + 4 + ), + 84596 + ); + + // gentest-281 + assertEqual( + perft( + Board(0x120a000000L, 0x100000000800L, 0x1000L, 0x0L, 0x8000000000L, 0x20000080000L, 0x101000081000L, + 0x2820a000800L, false, 0, 0x0L), + 4 + ), + 130810 + ); + + // gentest-282 + assertEqual( + perft( + Board(0x20a000000L, 0x400000800L, 0x1000L, 0x0L, 0x200000000000000L, 0x20000080000L, 0x400081000L, + 0x20002020a000800L, true, 0, 0x0L), + 4 + ), + 141931 + ); + + // gentest-283 + assertEqual( + perft( + Board(0x20a000000L, 0x400000800L, 0x8000000000L, 0x0L, 0x1000000000L, 0x20000000400L, 0x8400000400L, + 0x2120a000800L, false, 0, 0x0L), + 4 + ), + 255150 + ); + + // gentest-284 + assertEqual( + perft( + Board(0x20a000000L, 0x400000020L, 0x1000L, 0x0L, 0x800000000L, 0x20000000400L, 0x400001400L, + 0x20a0a000020L, true, 0, 0x0L), + 4 + ), + 257475 + ); + + // gentest-285 + assertEqual( + perft( + Board(0x20a000000L, 0x400000020L, 0x200000L, 0x0L, 0x40000000000L, 0x20000000008L, 0x400200008L, + 0x6020a000020L, false, 0, 0x0L), + 4 + ), + 193250 + ); + + // gentest-286 + assertEqual( + perft( + Board(0x20a000000L, 0x20L, 0x200000L, 0x0L, 0x400000000L, 0x4000000001000L, 0x201000L, + 0x400060a000020L, true, 0, 0x0L), + 4 + ), + 118591 + ); + + // gentest-287 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x40000000000L, 0x0L, 0x400000000L, 0x4000000000020L, 0x40000000020L, + 0x4000608020000L, false, 0, 0x0L), + 4 + ), + 84262 + ); + + // gentest-288 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x2000000000000L, 0x0L, 0x400000000L, 0x100000000020L, 0x2000000000020L, + 0x100608020000L, true, 0, 0x0L), + 4 + ), + 105537 + ); + + // gentest-289 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x40000000000L, 0x0L, 0x20000000000L, 0x100000000010L, 0x40000000010L, + 0x120208020000L, false, 0, 0x0L), + 4 + ), + 67662 + ); + + // gentest-290 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x40000000000L, 0x0L, 0x20000000000L, 0x100000001000L, 0x40000001000L, + 0x120208020000L, true, 0, 0x0L), + 4 + ), + 91405 + ); + + // gentest-291 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x2000000000000L, 0x0L, 0x40000000000L, 0x100000000008L, 0x2000000000008L, + 0x140208020000L, false, 0, 0x0L), + 4 + ), + 53185 + ); + + // gentest-292 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x2000000000000L, 0x0L, 0x800000000L, 0x1000001000L, 0x2000000001000L, + 0x1a08020000L, true, 0, 0x0L), + 4 + ), + 54943 + ); + + // gentest-293 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x4000L, 0x0L, 0x0L, 0x1000000020L, 0x4020L, 0x1208020000L, false, 0, 0x0L), + 4 + ), + 11946 + ); + + // gentest-294 + assertEqual( + perft( + Board(0x208020000L, 0x0L, 0x4000L, 0x0L, 0x0L, 0x2000002000L, 0x6000L, 0x2208020000L, true, 0, 0x0L), + 4 + ), + 18301 + ); + + // gentest-295 + assertEqual( + perft( + Board(0xa020000L, 0x0L, 0x40000000000L, 0x0L, 0x0L, 0x2000000040L, 0x40000000040L, 0x200a020000L, + false, 0, 0x0L), + 4 + ), + 18073 + ); + + // gentest-296 + assertEqual( + perft( + Board(0xa020000L, 0x0L, 0x4000L, 0x0L, 0x0L, 0x20000000000040L, 0x4040L, 0x2000000a020000L, true, 0, + 0x0L), + 4 + ), + 14461 + ); + + // gentest-297 + assertEqual( + perft( + Board(0xa020000L, 0x0L, 0x20L, 0x0L, 0x0L, 0x100000000080L, 0xa0L, 0x10000a020000L, false, 0, 0x0L), + 4 + ), + 9837 + ); + + // gentest-298 + assertEqual( + perft( + Board(0xa000000L, 0x0L, 0x4002L, 0x0L, 0x0L, 0x100000000080L, 0x4080L, 0x10000a000002L, true, 0, + 0x0L), + 4 + ), + 22649 + ); + + // gentest-299 + assertEqual( + perft( + Board(0xa000000L, 0x0L, 0x800000002L, 0x0L, 0x0L, 0x1000008000L, 0x800008000L, 0x100a000002L, false, + 0, 0x0L), + 4 + ), + 45501 + ); + + // gentest-300 + assertEqual( + perft( + Board(0xa000000L, 0x0L, 0x100010000000L, 0x0L, 0x0L, 0x1000008000L, 0x10008000L, 0x10100a000000L, + true, 0, 0x0L), + 4 + ), + 60566 + ); + + // gentest-301 + assertEqual( + perft( + Board(0xa000000L, 0x0L, 0x2000000002L, 0x0L, 0x0L, 0x1000000080L, 0x82L, 0x300a000000L, false, 0, + 0x0L), + 4 + ), + 21809 + ); + + // gentest-302 + assertEqual( + perft( + Board(0xa000000L, 0x0L, 0x402000000000L, 0x0L, 0x0L, 0x800000080L, 0x2000000080L, 0x40080a000000L, + true, 0, 0x0L), + 4 + ), + 25908 + ); + + // gentest-303 + assertEqual( + perft( + Board(0xa000000L, 0x0L, 0x8000000000L, 0x0L, 0x0L, 0x100000000080L, 0x8000000080L, 0x10000a000000L, + false, 0, 0x0L), + 4 + ), + 8933 + ); + + // gentest-304 + assertEqual( + perft( + Board(0x2080000L, 0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x1000000080L, 0x20000000000080L, + 0x1002080000L, true, 0, 0x0L), + 4 + ), + 10020 + ); + + // gentest-305 + assertEqual( + perft( + Board(0xa0000L, 0x0L, 0x200000000L, 0x0L, 0x0L, 0x1000000080L, 0x200000080L, 0x10000a0000L, false, 0, + 0x0L), + 4 + ), + 10553 + ); + + // gentest-306 + assertEqual( + perft( + Board(0xa0000L, 0x0L, 0x4000000L, 0x0L, 0x0L, 0x20000080L, 0x4000080L, 0x200a0000L, true, 0, 0x0L), + 4 + ), + 10014 + ); + + // gentest-307 + assertEqual( + perft( + Board(0xa0000L, 0x0L, 0x4000000000000000L, 0x0L, 0x0L, 0x40004000L, 0x4000000000004000L, 0x400a0000L, + false, 0, 0x0L), + 4 + ), + 8957 + ); + + // gentest-308 + assertEqual( + perft( + Board(0xa0000L, 0x0L, 0x4000000000000000L, 0x0L, 0x0L, 0x80200000L, 0x4000000000200000L, 0x800a0000L, + true, 0, 0x0L), + 4 + ), + 5198 + ); + + // gentest-309 + assertEqual( + perft( + Board(0x80000L, 0x0L, 0x20000L, 0x0L, 0x0L, 0x4000400000L, 0x420000L, 0x4000080000L, false, 0, 0x0L), + 4 + ), + 9412 + ); + + // gentest-310 + assertEqual( + perft( + Board(0x0L, 0x8L, 0x20000000000000L, 0x0L, 0x0L, 0x4000400000L, 0x20000000400000L, 0x4000000008L, + true, 0, 0x0L), + 4 + ), + 15421 + ); + + // gentest-311 + assertEqual( + perft( + Board(0x0L, 0x8L, 0x100L, 0x0L, 0x0L, 0x800000400000L, 0x400100L, 0x800000000008L, false, 0, 0x0L), + 4 + ), + 15779 + ); + + // gentest-312 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-313 + assertEqual( + perft( + Board(0xf7000840209f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40209fffL, 0xfff7000800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 338556 + ); + + // gentest-314 + assertEqual( + perft( + Board(0xe5001a40229d00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40229dffL, 0xffe5001a00000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 654393 + ); + + // gentest-315 + assertEqual( + perft( + Board(0xe5001a40239c00L, 0x4000040000000042L, 0x2400000000004004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4023dcdfL, 0xfde5041a00000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 624373 + ); + + // gentest-316 + assertEqual( + perft( + Board(0xe5001248239c00L, 0x4000040000000042L, 0x2000002000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40239cffL, 0xf9e5043208000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 671745 + ); + + // gentest-317 + assertEqual( + perft( + Board(0xe50002d8231c00L, 0x4000040000040040L, 0x2000002000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xc0271cfdL, 0xf9e5042218000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1002742 + ); + + // gentest-318 + assertEqual( + perft( + Board(0xe50002d9221c00L, 0x840000040040L, 0x2000002000000024L, 0x8100000000000081L, 0x4000000008L, + 0x1000000000000010L, 0xc1261cfdL, 0xb1e5846218000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1307169 + ); + + // gentest-319 + assertEqual( + perft( + Board(0xe50002d9221c00L, 0x840000040040L, 0x2000002000000024L, 0x4100000000800001L, 0x4000000008L, + 0x1000000000002000L, 0xc1a63c6dL, 0x71e5846218000000L, false, 0, 0x100000000000000L), + 4 + ), + 1305153 + ); + + // gentest-320 + assertEqual( + perft( + Board(0xe50002d9221c00L, 0x800800000040040L, 0x2400000000000220L, 0x4100000000800001L, 0x4000000008L, + 0x1000000000002000L, 0xc1a63e69L, 0x7de5804218000000L, true, 0, 0x100000000000000L), + 4 + ), + 1631657 + ); + + // gentest-321 + assertEqual( + perft( + Board(0xe50002d9221c00L, 0x800800000040040L, 0x400000002010020L, 0x4100000000800001L, 0x4000000002L, + 0x1000000000002000L, 0xc1a73c63L, 0x5de580421a000000L, false, 0, 0x100000000000000L), + 4 + ), + 1710636 + ); + + // gentest-322 + assertEqual( + perft( + Board(0xe50002d9221c00L, 0x800800000040040L, 0x400000002010020L, 0x8100000000800001L, 0x8000000100L, + 0x1000000000002000L, 0xc1a73d61L, 0x9de580821a000000L, true, 0, 0x100000000000000L), + 4 + ), + 1580613 + ); + + // gentest-323 + assertEqual( + perft( + Board(0xe50002d8221c00L, 0x800800800000040L, 0x400000002010020L, 0x8100000000800001L, 0x8000000100L, + 0x8000000002000L, 0xac0a33d61L, 0x8ded80801a000000L, false, 0, 0x0L), + 4 + ), + 1580965 + ); + + // gentest-324 + assertEqual( + perft( + Board(0xe50002d8221c00L, 0x800800800000040L, 0x400000002010020L, 0x8100000000800010L, 0x20000100L, + 0x8000000002000L, 0xac0a33d70L, 0x8ded80003a000000L, true, 0, 0x0L), + 4 + ), + 1433971 + ); + + // gentest-325 + assertEqual( + perft( + Board(0xe5004298221c00L, 0x800820000000040L, 0x400000002010020L, 0x8100000000800010L, 0x20000100L, + 0x80000002000L, 0x24280a33d70L, 0x8de588003a000000L, false, 0, 0x0L), + 4 + ), + 1185296 + ); + + // gentest-326 + assertEqual( + perft( + Board(0xc4402398221c00L, 0x800820000000040L, 0x400000002010020L, 0x8100000000800010L, 0x20000100L, + 0x80000002000L, 0x420280a33d70L, 0x8dc488213a000000L, true, 0, 0x0L), + 4 + ), + 878297 + ); + + // gentest-327 + assertEqual( + perft( + Board(0xc4402398221c00L, 0x800820000000040L, 0x2000002010020L, 0x8100000000800008L, 0x20000002L, + 0x80000002000L, 0x420280a33c6aL, 0x89c688213a000000L, false, 0, 0x0L), + 4 + ), + 851149 + ); + + // gentest-328 + assertEqual( + perft( + Board(0xc4402398221c00L, 0x800820000000040L, 0x2000002010020L, 0x8100000000800010L, 0x20000002L, + 0x80000002000L, 0x420280a33c72L, 0x89c688213a000000L, true, 0, 0x0L), + 4 + ), + 875724 + ); + + // gentest-329 + assertEqual( + perft( + Board(0xc4402398221c00L, 0x800820000000040L, 0x2000002014000L, 0x8100000000800010L, 0x400002L, + 0x80000000020L, 0x420280a35c72L, 0x89c688211a400000L, false, 0, 0x0L), + 4 + ), + 1200334 + ); + + // gentest-330 + assertEqual( + perft( + Board(0xc4402398221c00L, 0xc00000040000040L, 0x2000002014000L, 0x8100000000800010L, 0x400002L, + 0x8000000000020L, 0x400400280a35c72L, 0x89ce00215a400000L, true, 0, 0x0L), + 4 + ), + 1604160 + ); + + // gentest-331 + assertEqual( + perft( + Board(0xc44023982a1400L, 0x800020040000040L, 0x2000002014000L, 0x8100000000800010L, 0x400002L, + 0x10000000000020L, 0x420280ab5472L, 0x89d600215a400000L, false, 0, 0x0L), + 4 + ), + 1445881 + ); + + // gentest-332 + assertEqual( + perft( + Board(0xc44023882a1400L, 0x20020040000040L, 0x2000002014000L, 0x8100000000800010L, 0x400200L, + 0x10000000000020L, 0x4202808b5670L, 0x81f600214a600000L, true, 0, 0x0L), + 4 + ), + 2263658 + ); + + // gentest-333 + assertEqual( + perft( + Board(0xc44023882a1400L, 0x20000840000040L, 0x2000002014000L, 0x8100000000800010L, 0x400001L, + 0x8000000000020L, 0x400a808b5471L, 0x81ee00214a600000L, false, 0, 0x0L), + 4 + ), + 3419587 + ); + + // gentest-334 + assertEqual( + perft( + Board(0xc44023882a1400L, 0x800000840000040L, 0x2000002004004L, 0x8100000000800010L, 0x20000001L, + 0x8000000000020L, 0x400a808a5475L, 0x89ce00216a200000L, true, 0, 0x0L), + 4 + ), + 2740662 + ); + + // gentest-335 + assertEqual( + perft( + Board(0xc04023982a0400L, 0x804000040000040L, 0x2000000004014L, 0x8100000000800000L, 0x20000001L, + 0x8000000000020L, 0x44002908a4465L, 0x89ca002168200010L, false, 20, 0x0L), + 4 + ), + 2468318 + ); + + // gentest-336 + assertEqual( + perft( + Board(0xc04023980a4400L, 0x804000000000040L, 0x2000000100010L, 0x8100000000800000L, 0x20000001L, + 0x8000000000020L, 0x44002909a0461L, 0x89ca002128004010L, true, 0, 0x0L), + 4 + ), + 165481 + ); + + // gentest-337 + assertEqual( + perft( + Board(0xc04023980a4400L, 0x804000000000040L, 0x2000000100000L, 0x2100000000200000L, 0x20000001L, + 0x8000000000010L, 0x44002903a0451L, 0x29ca002128004000L, false, 0, 0x0L), + 4 + ), + 1901192 + ); + + // gentest-338 + assertEqual( + perft( + Board(0xc04023980a4400L, 0x804000000000040L, 0x2000000100000L, 0x2100000000200000L, 0x1800000L, + 0x8000000000010L, 0x44002913a0450L, 0x29ca002108804000L, true, 0, 0x0L), + 4 + ), + 1415044 + ); + + // gentest-339 + assertEqual( + perft( + Board(0xc04023900a4400L, 0x804000000001000L, 0x400000000100000L, 0x2100000000200000L, 0x8800000L, + 0x8000000000010L, 0x44002983a1410L, 0x2dc8002100804000L, false, 0, 0x0L), + 4 + ), + 101758 + ); + + // gentest-340 + assertEqual( + perft( + Board(0x404023900a4400L, 0x800000000001000L, 0x400000000100000L, 0x2100000000200000L, 0x800001L, + 0x4000000000010L, 0x2903a1411L, 0x2d44402100804000L, true, 0, 0x0L), + 4 + ), + 1648415 + ); + + // gentest-341 + assertEqual( + perft( + Board(0x404023900a0400L, 0x800000000001040L, 0x400000000002000L, 0x2100000000800000L, 0x1L, + 0x4000000000010L, 0x2908a3411L, 0x2d44402100000040L, false, 0, 0x0L), + 4 + ), + 1002897 + ); + + // gentest-342 + assertEqual( + perft( + Board(0x404023900a0400L, 0x40000001040L, 0x400000008000000L, 0x2100000000800000L, 0x1L, + 0x8000000000010L, 0x2988a1411L, 0x2548442100000040L, true, 0, 0x0L), + 4 + ), + 1412942 + ); + + // gentest-343 + assertEqual( + perft( + Board(0x404023900a0400L, 0x40000001040L, 0x400000008000000L, 0x900000000400000L, 0x1000000L, + 0x8000000000010L, 0x2994a1410L, 0xd48442100000040L, false, 0, 0x0L), + 4 + ), + 1027974 + ); + + // gentest-344 + assertEqual( + perft( + Board(0x404023900a0400L, 0x8001040L, 0x400000000000000L, 0x900000000400000L, 0x2000000L, + 0x4000000000010L, 0x2924a1410L, 0xd44402108000040L, true, 0, 0x0L), + 4 + ), + 750360 + ); + + // gentest-345 + assertEqual( + perft( + Board(0x40402198020400L, 0x200001040L, 0x400000000000000L, 0x900004000000000L, 0x2000000L, + 0x4000000000010L, 0x409a021410L, 0xd44402300000040L, false, 0, 0x0L), + 4 + ), + 845722 + ); + + // gentest-346 + assertEqual( + perft( + Board(0x40402198020400L, 0x200001040L, 0x400000000000000L, 0x1100004000000000L, 0x4000000L, + 0x2000000000010L, 0x409c021410L, 0x1542402300000040L, true, 0, 0x0L), + 4 + ), + 712577 + ); + + // gentest-347 + assertEqual( + perft( + Board(0x40400198020400L, 0x200001040L, 0x0L, 0x900002000000000L, 0x400000000000000L, 0x2000000000010L, + 0x400002098021410L, 0x942400300000040L, false, 0, 0x0L), + 4 + ), + 117042 + ); + + // gentest-348 + assertEqual( + perft( + Board(0x40400198020000L, 0x41040L, 0x0L, 0x900002000000000L, 0x0L, 0x400000000000010L, 0x2098021010L, + 0xd40400100040040L, true, 0, 0x0L), + 4 + ), + 405444 + ); + + // gentest-349 + assertEqual( + perft( + Board(0x4040009a000000L, 0x1048L, 0x0L, 0x900000100000000L, 0x0L, 0x400000000000010L, 0x19a001010L, + 0xd40400000000048L, false, 0, 0x0L), + 4 + ), + 307219 + ); + + // gentest-350 + assertEqual( + perft( + Board(0x4040801a000000L, 0x1048L, 0x0L, 0x800000100000000L, 0x0L, 0x400000000000010L, 0x801a001010L, + 0xc40400100000048L, true, 0, 0x0L), + 4 + ), + 183278 + ); + + // gentest-351 + assertEqual( + perft( + Board(0x4040801a000000L, 0x48L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000800L, 0x801a000840L, + 0x2440400100000008L, false, 0, 0x0L), + 4 + ), + 209109 + ); + + // gentest-352 + assertEqual( + perft( + Board(0x4000d00a000000L, 0x40040L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000800L, 0x900a000840L, + 0x2440004100040000L, true, 0, 0x0L), + 4 + ), + 200017 + ); + + // gentest-353 + assertEqual( + perft( + Board(0x4010c00a000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000800L, + 0x10800a800800L, 0x2440004100000100L, false, 0, 0x0L), + 4 + ), + 165001 + ); + + // gentest-354 + assertEqual( + perft( + Board(0x4010804a000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x200000000080000L, + 0x10800a880000L, 0x2240000140000100L, true, 0, 0x0L), + 4 + ), + 211370 + ); + + // gentest-355 + assertEqual( + perft( + Board(0x40108842000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x400000000000400L, + 0x108802800400L, 0x2440000140000100L, false, 0, 0x0L), + 4 + ), + 153995 + ); + + // gentest-356 + assertEqual( + perft( + Board(0x40108842000000L, 0x800100L, 0x0L, 0x2000000100000000L, 0x0L, 0x2000000000200L, + 0x108802800200L, 0x2042000140000100L, true, 0, 0x0L), + 4 + ), + 183104 + ); + + // gentest-357 + assertEqual( + perft( + Board(0x10c842000000L, 0x10000100L, 0x0L, 0x2000000100000000L, 0x0L, 0x2000000000200L, + 0x108812000200L, 0x2002004140000100L, false, 0, 0x0L), + 4 + ), + 222436 + ); + + // gentest-358 + assertEqual( + perft( + Board(0x10ca40000000L, 0x10000100L, 0x0L, 0x2000010000000000L, 0x0L, 0x400000000000200L, + 0x108a10000200L, 0x2400014040000100L, true, 0, 0x0L), + 4 + ), + 166016 + ); + + // gentest-359 + assertEqual( + perft( + Board(0x1000ca40000000L, 0x400000100L, 0x0L, 0x10000200000L, 0x0L, 0x400000000000200L, + 0x10008e00000200L, 0x400014040200100L, false, 0, 0x0L), + 4 + ), + 250268 + ); + + // gentest-360 + assertEqual( + perft( + Board(0xca40000000L, 0x1000000400000100L, 0x0L, 0x10000200000L, 0x0L, 0x400000000000200L, + 0x1000008e00000200L, 0x400014040200100L, true, 0, 0x0L), + 4 + ), + 245377 + ); + + // gentest-361 + assertEqual( + perft( + Board(0xca00400000L, 0x1002000000000100L, 0x0L, 0x10000200000L, 0x0L, 0x400000000000001L, + 0x1002008a00000001L, 0x400014000600100L, false, 0, 0x0L), + 4 + ), + 124304 + ); + + // gentest-362 + assertEqual( + perft( + Board(0xca00400000L, 0x1800000000040000L, 0x0L, 0x1000000200000L, 0x0L, 0x400000000000001L, + 0x1800008a00000001L, 0x401004000640000L, true, 0, 0x0L), + 4 + ), + 15018 + ); + + // gentest-363 + assertEqual( + perft( + Board(0xca00400000L, 0x1800000000040000L, 0x0L, 0x1000000100000L, 0x0L, 0x400000000000400L, + 0x1800008a00000400L, 0x401004000540000L, false, 0, 0x0L), + 4 + ), + 237605 + ); + + // gentest-364 + assertEqual( + perft( + Board(0x804200400000L, 0x1800000800000000L, 0x0L, 0x20000000100000L, 0x0L, 0x400000000000400L, + 0x1800800200000400L, 0x420004800500000L, true, 0, 0x0L), + 4 + ), + 231451 + ); + + // gentest-365 + assertEqual( + perft( + Board(0x804200400000L, 0x400000800000000L, 0x0L, 0x20000000100000L, 0x0L, 0x800000000000400L, + 0x400800200000400L, 0x820004800500000L, false, 0, 0x0L), + 4 + ), + 141087 + ); + + // gentest-366 + assertEqual( + perft( + Board(0x804200400000L, 0x400000800000000L, 0x0L, 0x10000000000010L, 0x0L, 0x800000000000200L, + 0x400800200000200L, 0x810004800400010L, true, 0, 0x0L), + 4 + ), + 118116 + ); + + // gentest-367 + assertEqual( + perft( + Board(0x804200400000L, 0x1000800000000L, 0x0L, 0x8000000000010L, 0x0L, 0x800000000010000L, + 0x1800200010000L, 0x808004800400010L, false, 0, 0x0L), + 4 + ), + 68491 + ); + + // gentest-368 + assertEqual( + perft( + Board(0x804200400000L, 0x40800000000L, 0x0L, 0x20000000000010L, 0x0L, 0x1000000000010000L, + 0x840200010000L, 0x1020004800400010L, true, 0, 0x0L), + 4 + ), + 226773 + ); + + // gentest-369 + assertEqual( + perft( + Board(0x4200400000L, 0x40800000000L, 0x0L, 0x8020100000000000L, 0x0L, 0x1000000000010000L, + 0x8000040200010000L, 0x1020104800400000L, false, 0, 0x0L), + 4 + ), + 30786 + ); + + // gentest-370 + assertEqual( + perft( + Board(0x4200004000L, 0x40800000000L, 0x0L, 0x4020100000000000L, 0x0L, 0x8000000010000L, + 0x4000040200010000L, 0x28104800004000L, true, 0, 0x0L), + 4 + ), + 498458 + ); + + // gentest-371 + assertEqual( + perft( + Board(0x240004000L, 0x10000800000000L, 0x0L, 0x4020100000000000L, 0x0L, 0x8000000000200L, + 0x4010000200000200L, 0x28100840004000L, false, 0, 0x0L), + 4 + ), + 604944 + ); + + // gentest-372 + assertEqual( + perft( + Board(0x240004000L, 0x10000800000000L, 0x0L, 0x820100000000000L, 0x0L, 0x20000000200L, + 0x810000200000200L, 0x20120840004000L, true, 0, 0x0L), + 4 + ), + 530768 + ); + + // gentest-373 + assertEqual( + perft( + Board(0x240004000L, 0x10000800000000L, 0x0L, 0x820040000000000L, 0x0L, 0x20000020000L, + 0x810000200020000L, 0x20060840004000L, false, 0, 0x0L), + 4 + ), + 527481 + ); + + // gentest-374 + assertEqual( + perft( + Board(0x240000000L, 0x10000800000040L, 0x0L, 0x200c0000000000L, 0x0L, 0x1000000020000L, + 0x10080200020000L, 0x21040840000040L, true, 0, 0x0L), + 4 + ), + 334167 + ); + + // gentest-375 + assertEqual( + perft( + Board(0x240000000L, 0x800000040L, 0x0L, 0x20080000000000L, 0x0L, 0x1000001000000L, 0xa01000000L, + 0x21080040000040L, false, 0, 0x0L), + 4 + ), + 116524 + ); + + // gentest-376 + assertEqual( + perft( + Board(0x240000000L, 0x10000000000040L, 0x0L, 0x8200000000000L, 0x0L, 0x1000001000000L, + 0x10000201000000L, 0x9200040000040L, true, 0, 0x0L), + 4 + ), + 79975 + ); + + // gentest-377 + assertEqual( + perft( + Board(0x240000000L, 0x10000000000040L, 0x0L, 0x800200000000000L, 0x0L, 0x1000000040000L, + 0x10000200040000L, 0x801200040000040L, false, 0, 0x0L), + 4 + ), + 130245 + ); + + // gentest-378 + assertEqual( + perft( + Board(0x240000000L, 0x2000000040L, 0x0L, 0x2000000000080000L, 0x0L, 0x1000000040000L, 0x2200040000L, + 0x2001000040080040L, true, 0, 0x0L), + 4 + ), + 52164 + ); + + // gentest-379 + assertEqual( + perft( + Board(0x240000000L, 0x40000000000040L, 0x0L, 0x100000000080000L, 0x0L, 0x1000000000400L, + 0x40000200000400L, 0x101000040080040L, false, 0, 0x0L), + 4 + ), + 60472 + ); + + // gentest-380 + assertEqual( + perft( + Board(0x240000000L, 0x40000000000040L, 0x0L, 0x200080000000000L, 0x0L, 0x1000000000002L, + 0x40000200000002L, 0x201080040000040L, true, 0, 0x0L), + 4 + ), + 75567 + ); + + // gentest-381 + assertEqual( + perft( + Board(0x240000000L, 0x800000000000040L, 0x0L, 0x200000800000000L, 0x0L, 0x1000000000002L, + 0x800000200000002L, 0x201000840000040L, false, 0, 0x0L), + 4 + ), + 44352 + ); + + // gentest-382 + assertEqual( + perft( + Board(0x240000000L, 0x40L, 0x0L, 0x200000000000008L, 0x0L, 0x1000000000001L, 0x200000001L, + 0x201000040000048L, true, 0, 0x0L), + 4 + ), + 7794 + ); + + // gentest-383 + assertEqual( + perft( + Board(0x240000000L, 0x40L, 0x0L, 0x200000000000001L, 0x0L, 0x1000000040000L, 0x200040000L, + 0x201000040000041L, false, 0, 0x0L), + 4 + ), + 33228 + ); + + // gentest-384 + assertEqual( + perft( + Board(0x240000000L, 0x40L, 0x0L, 0x100000000001L, 0x0L, 0x1000004000000L, 0x204000000L, + 0x1100040000041L, true, 0, 0x0L), + 4 + ), + 37234 + ); + + // gentest-385 + assertEqual( + perft( + Board(0x20040000000L, 0x40L, 0x0L, 0x1000000000000001L, 0x0L, 0x1000000080000L, 0x20000080000L, + 0x1001000040000041L, false, 0, 0x0L), + 4 + ), + 5233 + ); + + // gentest-386 + assertEqual( + perft( + Board(0x20040000000L, 0x40L, 0x0L, 0x1001000000000000L, 0x0L, 0x100000000000400L, 0x20000000400L, + 0x1101000040000040L, true, 0, 0x0L), + 4 + ), + 43734 + ); + + // gentest-387 + assertEqual( + perft( + Board(0x20040000000L, 0x800000L, 0x0L, 0x1001000000000000L, 0x0L, 0x100000000000400L, 0x20000000400L, + 0x1101000040800000L, false, 0, 0x0L), + 4 + ), + 47817 + ); + + // gentest-388 + assertEqual( + perft( + Board(0x20040000000L, 0x800000L, 0x0L, 0x1000000800000000L, 0x0L, 0x100000000080000L, 0x20000080000L, + 0x1100000840800000L, true, 0, 0x0L), + 4 + ), + 16090 + ); + + // gentest-389 + assertEqual( + perft( + Board(0x20040000000L, 0x800000L, 0x0L, 0x1000000100000000L, 0x0L, 0x100000002000000L, 0x20002000000L, + 0x1100000140800000L, false, 0, 0x0L), + 4 + ), + 25673 + ); + + // gentest-390 + assertEqual( + perft( + Board(0x20040000000L, 0x800000L, 0x0L, 0x100000000000000L, 0x0L, 0x2000100000000L, 0x20100000000L, + 0x102000040800000L, true, 0, 0x0L), + 4 + ), + 4558 + ); + + // gentest-391 + assertEqual( + perft( + Board(0x20040000000L, 0x800000L, 0x0L, 0x2000000000000000L, 0x0L, 0x2000001000000L, 0x20001000000L, + 0x2002000040800000L, false, 0, 0x0L), + 4 + ), + 15008 + ); + + // gentest-392 + assertEqual( + perft( + Board(0x2000040000000L, 0x800000L, 0x0L, 0x2000000000000000L, 0x0L, 0x20001000000L, 0x2000001000000L, + 0x2000020040800000L, true, 0, 0x0L), + 4 + ), + 24270 + ); + + // gentest-393 + assertEqual( + perft( + Board(0x40000000L, 0x800000L, 0x0L, 0x200000000000000L, 0x0L, 0x20002000000L, 0x2000000L, + 0x200020040800000L, false, 0, 0x0L), + 4 + ), + 10276 + ); + + // gentest-394 + assertEqual( + perft( + Board(0x40000000L, 0x4000000000L, 0x0L, 0x8000000000000000L, 0x0L, 0x20004000000L, 0x4000000L, + 0x8000024040000000L, true, 0, 0x0L), + 4 + ), + 27110 + ); + + // gentest-395 + assertEqual( + perft( + Board(0x40000000L, 0x4000000000L, 0x0L, 0x8000000000000000L, 0x0L, 0x2080000000000L, 0x80000000000L, + 0x8002004040000000L, false, 0, 0x0L), + 4 + ), + 16684 + ); + + // gentest-396 + assertEqual( + perft( + Board(0x40000000L, 0x4000000000L, 0x0L, 0x8000L, 0x0L, 0x108000000000000L, 0x8000000000000L, + 0x100004040008000L, true, 0, 0x0L), + 4 + ), + 17800 + ); + + // gentest-397 + assertEqual( + perft( + Board(0x40000000L, 0x4000000000L, 0x0L, 0x1000L, 0x0L, 0x900000000000000L, 0x800000000000000L, + 0x100004040001000L, false, 0, 0x0L), + 4 + ), + 7499 + ); + + // gentest-398 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-399 + assertEqual( + perft( + Board(0xfe01000002fd00L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2fffbL, 0xfffe010000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 294596 + ); + + // gentest-400 + assertEqual( + perft( + Board(0xea05100102fc00L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x102fefbL, 0xffea051000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 621649 + ); + + def batch1(): Unit = + // gentest-401 + assertEqual( + perft( + Board(0xea05100152ac00L, 0x200200000000042L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x152aefbL, 0xbfea251000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1095857 + ); + + // gentest-402 + assertEqual( + perft( + Board(0xea05104112ac00L, 0x200200000000042L, 0x2400000000000220L, 0x8100000000000081L, 0x200000008L, + 0x1000000000000010L, 0x4112aefbL, 0xb7ea251200000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1281512 + ); + + // gentest-403 + assertEqual( + perft( + Board(0xea05104110ac00L, 0x200200000001002L, 0x2400000000040020L, 0x8100000000000081L, 0x20008L, + 0x1000000000000010L, 0x4114bcbbL, 0xb7ea251000020000L, false, 0, 0x8100000000000081L), + 4 + ), + 1102194 + ); + + // gentest-404 + assertEqual( + perft( + Board(0xea051061108c00L, 0x200200000001002L, 0x400020000040020L, 0x8100000000000081L, 0x20008L, + 0x1000000000000010L, 0x61149cbbL, 0x97ea271000020000L, true, 0, 0x8100000000000081L), + 4 + ), + 1264174 + ); + + // gentest-405 + assertEqual( + perft( + Board(0xea051061108c00L, 0x200200000000042L, 0x400020000040020L, 0x8100000000000081L, 0x21000L, + 0x2000000000000010L, 0x61149cf3L, 0xa7ea271000020000L, false, 0, 0x81L), + 4 + ), + 1530762 + ); + + // gentest-406 + assertEqual( + perft( + Board(0x6a855021108c00L, 0x200200000000042L, 0x400000400040020L, 0x8100000000000081L, 0x21000L, + 0x2000000000000010L, 0x4021149cf3L, 0xa76aa51400020000L, true, 0, 0x81L), + 4 + ), + 2293549 + ); + + // gentest-407 + assertEqual( + perft( + Board(0x6a847201108c00L, 0x200200000000042L, 0x400000400040020L, 0x8100000000000081L, 0x20000L, + 0x2000000000000010L, 0x6001148cf3L, 0xa76aa41600020000L, false, 0, 0x81L), + 4 + ), + 1681259 + ); + + // gentest-408 + assertEqual( + perft( + Board(0x2ac45201108c00L, 0x200200000000042L, 0x400000400040020L, 0x180000000000081L, 0x20000L, + 0x2000000000000010L, 0x404001148cf3L, 0x27aaa41600020000L, true, 0, 0x81L), + 4 + ), + 1884769 + ); + + // gentest-409 + assertEqual( + perft( + Board(0xaaa41201108c00L, 0x200000000000042L, 0x401000000040020L, 0x100000000000081L, 0x20000L, + 0x2000000000000010L, 0x80200001148cf3L, 0x272b841200020000L, false, 0, 0x81L), + 4 + ), + 534014 + ); + + // gentest-410 + assertEqual( + perft( + Board(0xaaa40003108c00L, 0x10000000042L, 0x401001000000020L, 0x100000000000081L, 0x20000L, + 0x2000000000000010L, 0x80201001108cf3L, 0x252b850002020000L, true, 0, 0x81L), + 4 + ), + 835636 + ); + + // gentest-411 + assertEqual( + perft( + Board(0x2aa40003108c00L, 0x10000000042L, 0x401080000000020L, 0x100000000000081L, 0x8000000000020000L, + 0x1000000000000010L, 0x8000280001108cf3L, 0x152b850002020000L, false, 0, 0x81L), + 4 + ), + 0 + ); + + // gentest-412 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-413 + assertEqual( + perft( + Board(0xef10001020cf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1020cfffL, 0xffef100000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 586355 + ); + + // gentest-414 + assertEqual( + perft( + Board(0x6e90011020cf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x1020efefL, 0xff6e900100000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 726774 + ); + + // gentest-415 + assertEqual( + perft( + Board(0x6e10811220cd00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000001000L, 0x1000000000002000L, 0x1220fde7L, 0xff6e108100000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 807478 + ); + + // gentest-416 + assertEqual( + perft( + Board(0xe50a11220cd00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x1220edefL, 0xff0e50a100000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 1107158 + ); + + // gentest-417 + assertEqual( + perft( + Board(0xe50a31820c500L, 0x4200000000000042L, 0x400000400000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x21820e5efL, 0xdf0e50a500000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1279346 + ); + + // gentest-418 + assertEqual( + perft( + Board(0xe50a31820c500L, 0x200800000000042L, 0x400020000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000400000L, 0x21860c5efL, 0x9f0ed2a100000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 885259 + ); + + // gentest-419 + assertEqual( + perft( + Board(0xe50a31820c500L, 0x200800000000042L, 0x400020000000024L, 0x8100000000000081L, + 0x800000000001000L, 0x20000000400000L, 0x21860d5e7L, 0x8f2ed2a100000000L, false, 0, 0x0L), + 4 + ), + 999959 + ); + + // gentest-420 + assertEqual( + perft( + Board(0xe10e31820c500L, 0x200800000000042L, 0x400020000000220L, 0x2100000000000081L, + 0x800000000001000L, 0x20000000400000L, 0x21860d7e3L, 0x2f2e92e100000000L, true, 0, 0x0L), + 4 + ), + 664118 + ); + + // gentest-421 + assertEqual( + perft( + Board(0xe10e31920c400L, 0x200800000000840L, 0x400020000000220L, 0x2100000000000081L, + 0x10000000001000L, 0x20000000400000L, 0x21960dee1L, 0x273e92e100000000L, false, 0, 0x0L), + 4 + ), + 885742 + ); + + // gentest-422 + assertEqual( + perft( + Board(0xe10639920c400L, 0x200000040000840L, 0x400020000000220L, 0x2100000000000081L, + 0x10000000001000L, 0x20000000800000L, 0x219a0dee1L, 0x273e1261c0000000L, true, 0, 0x0L), + 4 + ), + 878056 + ); + + // gentest-423 + assertEqual( + perft( + Board(0xe10639920c400L, 0x200000040000840L, 0x400020000000220L, 0x900000000000082L, 0x10000000080000L, + 0x20000000800000L, 0x219a8cee2L, 0xf3e1261c0000000L, false, 0, 0x0L), + 4 + ), + 971596 + ); + + // gentest-424 + assertEqual( + perft( + Board(0xe10439920c400L, 0x200000040000840L, 0x400020000000220L, 0x900000000000082L, 0x10000000020000L, + 0x200000800000L, 0x209a2cee2L, 0xf1e3241d0000000L, true, 0, 0x0L), + 4 + ), + 1021059 + ); + + // gentest-425 + assertEqual( + perft( + Board(0xe10439920c400L, 0x200000040000840L, 0x400020000041000L, 0x900000000000082L, 0x10000000020000L, + 0x40000000800000L, 0x209a6dcc2L, 0xf5e1241d0000000L, false, 0, 0x0L), + 4 + ), + 1395850 + ); + + // gentest-426 + assertEqual( + perft( + Board(0xe10439920c400L, 0x200000000100840L, 0x400020000041000L, 0x900000000000280L, 0x200000020000L, + 0x40000000800000L, 0x209a6dec0L, 0xf4e324190100000L, true, 0, 0x0L), + 4 + ), + 985905 + ); + + // gentest-427 + assertEqual( + perft( + Board(0xe104399608400L, 0x10000100840L, 0x400020000040020L, 0x900000000000280L, 0x200000020000L, + 0x40000000800000L, 0x209e68ee0L, 0xd4e334190100000L, false, 0, 0x0L), + 4 + ), + 1173998 + ); + + // gentest-428 + assertEqual( + perft( + Board(0xe104391608400L, 0x10000100840L, 0x400020000040020L, 0x4100000000000280L, 0x8010000L, + 0x40000000800000L, 0x201e58ee0L, 0x454e134198100000L, true, 0, 0x0L), + 4 + ), + 1022796 + ); + + // gentest-429 + assertEqual( + perft( + Board(0xe104391608400L, 0x10000100042L, 0x400020000040020L, 0x2100000000000280L, 0x8000100L, + 0x40000000800000L, 0x201e487e2L, 0x254e134198100000L, false, 0, 0x0L), + 4 + ), + 1133069 + ); + + // gentest-430 + assertEqual( + perft( + Board(0xa045391608400L, 0x10000100042L, 0x400020000040020L, 0x2100000000000280L, 0x8000001L, + 0x40000000800000L, 0x201e486e3L, 0x254a075198100000L, true, 0, 0x0L), + 4 + ), + 1327163 + ); + + // gentest-431 + assertEqual( + perft( + Board(0xa045381608400L, 0x10000100042L, 0x400020004040000L, 0x2100000000000180L, 0x8000001L, + 0x40000000800000L, 0x205c485c3L, 0x254a075188300000L, false, 0, 0x0L), + 4 + ), + 1328245 + ); + + // gentest-432 + assertEqual( + perft( + Board(0xa005381608400L, 0x10000100042L, 0x400020004040000L, 0x2100000000000180L, 0x80000000200L, + 0x40000000800000L, 0x5c487c2L, 0x254a0b5380300000L, true, 0, 0x0L), + 4 + ), + 2206800 + ); + + // gentest-433 + assertEqual( + perft( + Board(0xa005185608400L, 0x10000100042L, 0x400020002000000L, 0x2100000000000081L, 0x80000000200L, + 0x40000000800000L, 0x3c086c3L, 0x254a0b5184300000L, false, 0, 0x0L), + 4 + ), + 1447371 + ); + + // gentest-434 + assertEqual( + perft( + Board(0xa005085608400L, 0x10000100042L, 0x400020100000000L, 0x2100000000000081L, 0x200000200L, + 0x40000000800000L, 0x101c086c3L, 0x254a035284300000L, true, 0, 0x0L), + 4 + ), + 1262752 + ); + + // gentest-435 + assertEqual( + perft( + Board(0xa005085408400L, 0x10000300002L, 0x400020100000000L, 0x4100000000000081L, 0x208000000L, + 0x40000000800000L, 0x109e08483L, 0x454a035284100000L, false, 0, 0x0L), + 4 + ), + 2673665 + ); + + // gentest-436 + assertEqual( + perft( + Board(0x2005885408400L, 0x10000100802L, 0x400020100000000L, 0x4100000000000081L, 0x208000000L, + 0x8000000000800000L, 0x109c08c83L, 0xc502035a84100000L, true, 0, 0x0L), + 4 + ), + 90540 + ); + + // gentest-437 + assertEqual( + perft( + Board(0x2005885408400L, 0x10000100802L, 0x400000500000000L, 0x4100000000000021L, 0x240000000L, + 0x8000000000800000L, 0x141c08c23L, 0xc502015e84100000L, false, 0, 0x0L), + 4 + ), + 1868162 + ); + + // gentest-438 + assertEqual( + perft( + Board(0x2005885408400L, 0x10000204002L, 0x400000500000000L, 0x4200000000000021L, 0x240000000L, + 0x8000000000800000L, 0x141e08423L, 0xc602015e84004000L, true, 0, 0x0L), + 4 + ), + 1804816 + ); + + // gentest-439 + assertEqual( + perft( + Board(0x2005805408400L, 0x10080004002L, 0x2500000000L, 0x4200000020000001L, 0x240000000L, + 0x8000000000800000L, 0x1e1c08403L, 0xc202017e04004000L, false, 0, 0x0L), + 4 + ), + 2127541 + ); + + // gentest-440 + assertEqual( + perft( + Board(0x2005805408400L, 0x10080004002L, 0x140000040L, 0x4200000010000001L, 0x200000000L, + 0x8000000000800000L, 0x191c08403L, 0xc202015a44004040L, true, 0, 0x0L), + 4 + ), + 145880 + ); + + // gentest-441 + assertEqual( + perft( + Board(0x2005805408400L, 0x10080004002L, 0x100000040L, 0x4200000000100001L, 0x200L, + 0x8000000040000000L, 0x1c1508403L, 0xc202015804004240L, false, 0, 0x0L), + 4 + ), + 1268638 + ); + + // gentest-442 + assertEqual( + perft( + Board(0x2005801428000L, 0x10080004002L, 0x100000040L, 0x4200000000000001L, 0x400L, + 0x8000000040000000L, 0x1c1408003L, 0xc202015800024440L, true, 0, 0x0L), + 4 + ), + 837242 + ); + + // gentest-443 + assertEqual( + perft( + Board(0x2005801428000L, 0x10000004002L, 0x2000040L, 0x4100000000000001L, 0x400L, 0x8000000040000000L, + 0x4340c003L, 0xc102015800020440L, false, 0, 0x0L), + 4 + ), + 1076950 + ); + + // gentest-444 + assertEqual( + perft( + Board(0x2005801428000L, 0x10000004002L, 0x2000040L, 0x4100000000000001L, 0x8000000000L, + 0x8000000000800000L, 0x3c0c003L, 0xc10201d800020040L, true, 0, 0x0L), + 4 + ), + 29691 + ); + + // gentest-445 + assertEqual( + perft( + Board(0x2005801428000L, 0x10080000002L, 0x10000000000040L, 0x4100000000000001L, 0x200000L, + 0x8000000000800000L, 0x10000081c08003L, 0xc102015800220040L, false, 0, 0x0L), + 4 + ), + 667974 + ); + + // gentest-446 + assertEqual( + perft( + Board(0x2001801428000L, 0x10080000002L, 0x4400000000L, 0x4001000000000001L, 0x200000L, + 0x8000000000800000L, 0x4081c08003L, 0xc003011c00220000L, true, 0, 0x0L), + 4 + ), + 578135 + ); + + // gentest-447 + assertEqual( + perft( + Board(0x2001801428000L, 0x10080000002L, 0x10000400000000L, 0x4001000000000001L, 0x0L, + 0x8000000000004000L, 0x1000008140c003L, 0xc003011c00020000L, false, 0, 0x0L), + 4 + ), + 415486 + ); + + // gentest-448 + assertEqual( + perft( + Board(0x2001801428000L, 0x10080000002L, 0x10000400000000L, 0x1000000012000L, 0x0L, + 0x8000000000004000L, 0x1000008141c002L, 0x8003011c00022000L, true, 0, 0x0L), + 4 + ), + 46619 + ); + + // gentest-449 + assertEqual( + perft( + Board(0x2001801428000L, 0x10080000002L, 0x10000400000000L, 0x1000020000001L, 0x0L, + 0x8000000000800000L, 0x10000081c08003L, 0x8003011c20020000L, false, 0, 0x0L), + 4 + ), + 401858 + ); + + // gentest-450 + assertEqual( + perft( + Board(0x2001801428000L, 0x10080000002L, 0x200400000000L, 0x1000020000001L, 0x0L, 0x4000000000800000L, + 0x200081c08003L, 0x4003011c20020000L, true, 0, 0x0L), + 4 + ), + 429517 + ); + + // gentest-451 + assertEqual( + perft( + Board(0x2001900428000L, 0x10000004002L, 0x200400000000L, 0x1002000000001L, 0x0L, 0x4000000000800000L, + 0x200100c0c003L, 0x4003013c00020000L, false, 0, 0x0L), + 4 + ), + 358440 + ); + + // gentest-452 + assertEqual( + perft( + Board(0x2001900428000L, 0x10000004002L, 0x200400000000L, 0x1800000000001L, 0x0L, 0x4000000040000000L, + 0x20014040c003L, 0x4003811c00020000L, true, 0, 0x0L), + 4 + ), + 481170 + ); + + // gentest-453 + assertEqual( + perft( + Board(0x2001900428000L, 0x10000000012L, 0x220000000000L, 0x1800000000001L, 0x0L, 0x4000004000000000L, + 0x204100408013L, 0x4003831800020000L, false, 0, 0x0L), + 4 + ), + 314442 + ); + + // gentest-454 + assertEqual( + perft( + Board(0x2001900408200L, 0x400000810L, 0x220000000000L, 0x1800000000001L, 0x0L, 0x4000004000000000L, + 0x204100408811L, 0x4003821c00000200L, true, 0, 0x0L), + 4 + ), + 819564 + ); + + // gentest-455 + assertEqual( + perft( + Board(0x2011800408200L, 0x400000810L, 0x220000000000L, 0x1800100000000L, 0x0L, 0x2000004000000000L, + 0x214100408810L, 0x2003821c00000200L, false, 0, 0x0L), + 4 + ), + 557140 + ); + + // gentest-456 + assertEqual( + perft( + Board(0x2011800408200L, 0x20012L, 0x200000002000L, 0x1800100000000L, 0x0L, 0x2000004000000000L, + 0x214100408012L, 0x2003801800022200L, true, 0, 0x0L), + 4 + ), + 583930 + ); + + // gentest-457 + assertEqual( + perft( + Board(0x2011800408200L, 0xa0002L, 0x800000000000040L, 0x1800100000000L, 0x0L, 0x2000004000000000L, + 0x800014100488002L, 0x2003801800020240L, false, 0, 0x0L), + 4 + ), + 855487 + ); + + // gentest-458 + assertEqual( + perft( + Board(0x2011800408200L, 0x13L, 0x800000000000040L, 0x1000100800000L, 0x0L, 0x2000004000000000L, + 0x800014100408012L, 0x2003001800800241L, true, 0, 0x0L), + 4 + ), + 401456 + ); + + // gentest-459 + assertEqual( + perft( + Board(0x2001800408200L, 0x13L, 0x4000000000040L, 0x10001800000L, 0x0L, 0x2000004000000000L, + 0x4004001408012L, 0x2002011800800241L, false, 0, 0x0L), + 4 + ), + 769341 + ); + + // gentest-460 + assertEqual( + perft( + Board(0x1a00408200L, 0x24002L, 0x4000000000040L, 0x10001800000L, 0x0L, 0x2000004000000000L, + 0x400400140c002L, 0x2000011a00820240L, true, 0, 0x0L), + 4 + ), + 933062 + ); + + // gentest-461 + assertEqual( + perft( + Board(0x1a00408200L, 0x24002L, 0x4000000000040L, 0x400100800000L, 0x0L, 0x2000002000000000L, + 0x400210040c002L, 0x2000401a00820240L, false, 0, 0x0L), + 4 + ), + 689748 + ); + + // gentest-462 + assertEqual( + perft( + Board(0x1a00400200L, 0x24002L, 0x4000000000040L, 0xc00000010000L, 0x0L, 0x2000002000000000L, + 0x4002000414002L, 0x2000c01a00020240L, true, 0, 0x0L), + 4 + ), + 622484 + ); + + // gentest-463 + assertEqual( + perft( + Board(0x1a00400200L, 0x20020002L, 0x200000000000040L, 0x40800000010000L, 0x0L, 0x2000002000000000L, + 0x200002020410002L, 0x2040801a00020240L, false, 0, 0x0L), + 4 + ), + 950815 + ); + + // gentest-464 + assertEqual( + perft( + Board(0x1a00400200L, 0x10004002L, 0x200000000000040L, 0x40800000010000L, 0x0L, 0x2000002000000000L, + 0x200002000414002L, 0x2040801a10000240L, true, 0, 0x0L), + 4 + ), + 941251 + ); + + // gentest-465 + assertEqual( + perft( + Board(0x1a00400200L, 0x10004800L, 0x200000000000040L, 0x8040000000000100L, 0x0L, 0x2000002000000000L, + 0x200002000404900L, 0xa040001a10000240L, false, 0, 0x0L), + 4 + ), + 1010455 + ); + + // gentest-466 + assertEqual( + perft( + Board(0x1a00400200L, 0x10004000L, 0x200000000000040L, 0x40008000000100L, 0x0L, 0x2000002000000000L, + 0x200002010404100L, 0x2040009a00000240L, true, 0, 0x0L), + 4 + ), + 83244 + ); + + // gentest-467 + assertEqual( + perft( + Board(0x1a00400200L, 0x4000004000L, 0x200000000000040L, 0x40000000000180L, 0x0L, 0x2000000040000000L, + 0x200004040404100L, 0x2040001a000002c0L, false, 0, 0x0L), + 4 + ), + 464595 + ); + + // gentest-468 + assertEqual( + perft( + Board(0x1a00400200L, 0x4000004000L, 0x200020000000000L, 0x4000000010080L, 0x0L, 0x2000000040000000L, + 0x200004040414000L, 0x2004021a00000280L, true, 0, 0x0L), + 4 + ), + 997991 + ); + + // gentest-469 + assertEqual( + perft( + Board(0x1a00400200L, 0x4000100000L, 0x200020000000000L, 0x4000000010080L, 0x0L, 0x10000000200000L, + 0x200004000710000L, 0x14021a00000280L, false, 0, 0x0L), + 4 + ), + 1202493 + ); + + // gentest-470 + assertEqual( + perft( + Board(0x1a00400200L, 0x900000L, 0x200020000000000L, 0x400000000010080L, 0x0L, 0x10000000200000L, + 0x200000000f10000L, 0x410021a00000280L, true, 0, 0x0L), + 4 + ), + 1227470 + ); + + // gentest-471 + assertEqual( + perft( + Board(0xa40000200L, 0x900000L, 0x800001000000000L, 0x400000000010080L, 0x0L, 0x10000000200000L, + 0x1040b10000L, 0xc10000a00000280L, false, 0, 0x0L), + 4 + ), + 1182713 + ); + + // gentest-472 + assertEqual( + perft( + Board(0xa40000200L, 0x800008L, 0x800001000000000L, 0x404000000010000L, 0x0L, 0x10000000200000L, + 0x1040a10008L, 0xc14000a00000200L, true, 0, 0x0L), + 4 + ), + 645794 + ); + + // gentest-473 + assertEqual( + perft( + Board(0xa40000200L, 0x840000L, 0x800000000400000L, 0x104000000010000L, 0x0L, 0x10000000200000L, + 0x40e50000L, 0x914000a00000200L, false, 0, 0x0L), + 4 + ), + 724771 + ); + + // gentest-474 + assertEqual( + perft( + Board(0x248000200L, 0x40040L, 0x800000000400000L, 0x104000000010000L, 0x0L, 0x20000000200000L, + 0x40650040L, 0x924000208000200L, true, 0, 0x0L), + 4 + ), + 1122931 + ); + + // gentest-475 + assertEqual( + perft( + Board(0x248000200L, 0x40040L, 0x800000000400000L, 0x101000000010000L, 0x0L, 0x20000020000000L, + 0x60450040L, 0x921000208000200L, false, 0, 0x0L), + 4 + ), + 640016 + ); + + // gentest-476 + assertEqual( + perft( + Board(0x248000200L, 0x240000L, 0x800000000400000L, 0x401000000010000L, 0x0L, 0x400020000000L, + 0x60650000L, 0xc01400208000200L, true, 0, 0x0L), + 4 + ), + 944594 + ); + + // gentest-477 + assertEqual( + perft( + Board(0x248000000L, 0x240000L, 0x800000000400000L, 0x401000000010002L, 0x0L, 0x400020000000L, + 0x60650000L, 0xc01400208000002L, false, 0, 0x0L), + 4 + ), + 1228059 + ); + + // gentest-478 + assertEqual( + perft( + Board(0x248000000L, 0x1000040000L, 0x800000000400000L, 0x500000000010002L, 0x0L, 0x200020000000L, + 0x1060450000L, 0xd00200208000002L, true, 0, 0x0L), + 4 + ), + 625979 + ); + + // gentest-479 + assertEqual( + perft( + Board(0x248000000L, 0x4040000L, 0x800000000400000L, 0x500000000020002L, 0x0L, 0x40000020000000L, + 0x64460000L, 0xd40000208000002L, false, 0, 0x0L), + 4 + ), + 1220378 + ); + + // gentest-480 + assertEqual( + perft( + Board(0x248000000L, 0x4040000L, 0x200000400000L, 0x500000000020002L, 0x0L, 0x40000000200000L, + 0x44660000L, 0x540200208000002L, true, 0, 0x0L), + 4 + ), + 1988941 + ); + + // gentest-481 + assertEqual( + perft( + Board(0x248000000L, 0x4040000L, 0x200080000000L, 0x500000000020002L, 0x0L, 0x800000002000L, + 0xc4062000L, 0x500a00208000002L, false, 0, 0x0L), + 4 + ), + 1103781 + ); + + // gentest-482 + assertEqual( + perft( + Board(0x248000000L, 0x40200L, 0x200080000000L, 0x400000100020008L, 0x0L, 0x800000002000L, 0xc0062200L, + 0x400a00308000008L, true, 0, 0x0L), + 4 + ), + 723373 + ); + + // gentest-483 + assertEqual( + perft( + Board(0x248000000L, 0x4000002L, 0x200080000000L, 0x400000100020010L, 0x0L, 0x800000002000L, + 0xc4022002L, 0x400a00308000010L, false, 0, 0x0L), + 4 + ), + 1156641 + ); + + // gentest-484 + assertEqual( + perft( + Board(0x248000000L, 0x4000002L, 0x200000400000L, 0x400000000020081L, 0x0L, 0x800000002000L, + 0x44422002L, 0x400a00208000081L, true, 0, 0x0L), + 4 + ), + 1290524 + ); + + // gentest-485 + assertEqual( + perft( + Board(0x248000000L, 0x4000002L, 0x200000400000L, 0x100000000020081L, 0x0L, 0x800000002000L, + 0x44422002L, 0x100a00208000081L, false, 0, 0x0L), + 4 + ), + 1250103 + ); + + // gentest-486 + assertEqual( + perft( + Board(0x248000000L, 0x4000000L, 0x200000400000L, 0x100000000020002L, 0x0L, 0x800000000020L, + 0x44420020L, 0x100a00208000002L, true, 0, 0x0L), + 4 + ), + 140147 + ); + + // gentest-487 + assertEqual( + perft( + Board(0x248000000L, 0x4000000L, 0x200000400000L, 0x100000000020002L, 0x0L, 0x80000000002000L, + 0x44422000L, 0x180200208000002L, false, 0, 0x0L), + 4 + ), + 840135 + ); + + // gentest-488 + assertEqual( + perft( + Board(0x248000000L, 0x800L, 0x200000400000L, 0x20108L, 0x0L, 0x80000000002000L, 0x40422800L, + 0x80200208000108L, true, 0, 0x0L), + 4 + ), + 401420 + ); + + // gentest-489 + assertEqual( + perft( + Board(0x248000000L, 0x800L, 0x201000000000L, 0x100000000020008L, 0x0L, 0x80000000002000L, + 0x1040022800L, 0x180200208000008L, false, 0, 0x0L), + 4 + ), + 795144 + ); + + // gentest-490 + assertEqual( + perft( + Board(0x48000000L, 0x800L, 0x201000000000L, 0x200200008L, 0x0L, 0x80000000002000L, 0x1240002800L, + 0x80200008200008L, true, 0, 0x0L), + 4 + ), + 67966 + ); + + // gentest-491 + assertEqual( + perft( + Board(0x48000000L, 0x800L, 0x201000000000L, 0x100200001L, 0x0L, 0x80000000004000L, 0x1140004800L, + 0x80200008200001L, false, 0, 0x0L), + 4 + ), + 704821 + ); + + // gentest-492 + assertEqual( + perft( + Board(0x40080000L, 0x800L, 0x1080000000L, 0x200101L, 0x0L, 0x80000000004000L, 0x1040004900L, + 0x80000080280001L, true, 0, 0x0L), + 4 + ), + 611079 + ); + + // gentest-493 + assertEqual( + perft( + Board(0x40080000L, 0x800L, 0x80400000L, 0x100L, 0x0L, 0x80000000200000L, 0x40600800L, + 0x80000080080100L, false, 0, 0x0L), + 4 + ), + 148900 + ); + + // gentest-494 + assertEqual( + perft( + Board(0x40080000L, 0x20000L, 0x80400000L, 0x100L, 0x0L, 0x20000000200000L, 0x40620000L, + 0x20000080080100L, true, 0, 0x0L), + 4 + ), + 239797 + ); + + // gentest-495 + assertEqual( + perft( + Board(0x40080000L, 0x100000000L, 0x80400000L, 0x0L, 0x0L, 0x20000000002000L, 0x140402000L, + 0x20000080080000L, false, 0, 0x0L), + 4 + ), + 41627 + ); + + // gentest-496 + assertEqual( + perft( + Board(0x40080000L, 0x2000000000000L, 0x80400000L, 0x0L, 0x0L, 0x400000002000L, 0x2000040402000L, + 0x400080080000L, true, 0, 0x0L), + 4 + ), + 25265 + ); + + // gentest-497 + assertEqual( + perft( + Board(0x40080000L, 0x2000000000000L, 0x80400000L, 0x0L, 0x0L, 0x800000100000L, 0x2000040500000L, + 0x800080080000L, false, 0, 0x0L), + 4 + ), + 36294 + ); + + // gentest-498 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-499 + assertEqual( + perft( + Board(0xfb00040009f600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x9f6ffL, 0xfffb000400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 352927 + ); + + // gentest-500 + assertEqual( + perft( + Board(0xb900460009f600L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x29f6bfL, 0xffb9004600000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 490486 + ); + + // gentest-501 + assertEqual( + perft( + Board(0xb900460009f600L, 0x200200000000802L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2009febbL, 0xbfb9204600000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 600908 + ); + + // gentest-502 + assertEqual( + perft( + Board(0xb90006200bf400L, 0x200200000000802L, 0x2400000000000020L, 0x8100000000000081L, 0x20000000008L, + 0x1000000000000010L, 0xbfcbbL, 0xb7b9220620000000L, true, 0, 0x8100000000000081L), + 4 + ), + 430332 + ); + + // gentest-503 + assertEqual( + perft( + Board(0xb90006220df000L, 0x200200000000802L, 0x2000010000000020L, 0x8100000000000081L, 0x20000000008L, + 0x1000000000000010L, 0x20df8bbL, 0xb3b9230620000000L, false, 0, 0x8100000000000081L), + 4 + ), + 411320 + ); + + // gentest-504 + assertEqual( + perft( + Board(0x390086220df000L, 0x4200000000000802L, 0x2000010000000020L, 0x8100000000000081L, + 0x20000000004L, 0x1000000000000010L, 0x20df8b7L, 0xf339038620000000L, true, 0, 0x8100000000000081L), + 4 + ), + 444924 + ); + + // gentest-505 + assertEqual( + perft( + Board(0x192086a20d7000L, 0x4200000000200002L, 0x2000010000000020L, 0x8100000000000081L, + 0x20000000004L, 0x1000000000000010L, 0x822d70b7L, 0xf319238620000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 457760 + ); + + // gentest-506 + assertEqual( + perft( + Board(0x112886a20d7000L, 0x4000040000200002L, 0x2000010000000020L, 0x8100000000000081L, + 0x20000000004L, 0x1000000000000800L, 0x822d78a7L, 0xf1112f8620000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 630780 + ); + + // gentest-507 + assertEqual( + perft( + Board(0x112886a20d7000L, 0x4000040000200002L, 0x810000000020L, 0x8100000000008001L, 0x20000000004L, + 0x1000000000000008L, 0x822df02fL, 0xd111af8620000000L, false, 0, 0x8100000000000000L), + 4 + ), + 674056 + ); + + // gentest-508 + assertEqual( + perft( + Board(0x112886e20d3000L, 0x4800000000200002L, 0x810000000020L, 0x8100000000008001L, 0x40000000004L, + 0x1000000000000008L, 0xc22db02fL, 0xd911ad8620000000L, true, 0, 0x8100000000000000L), + 4 + ), + 784614 + ); + + // gentest-509 + assertEqual( + perft( + Board(0x112886e20d3000L, 0x4800000000000002L, 0x14000800000L, 0x8100000000008001L, 0x40000000004L, + 0x1000000000000008L, 0xc28db00fL, 0xd9112dc620000000L, false, 0, 0x8100000000000000L), + 4 + ), + 612529 + ); + + // gentest-510 + assertEqual( + perft( + Board(0x112886e30c3000L, 0x4800000000000002L, 0x14000800000L, 0x8100000000008001L, 0x40000000004L, + 0x1000000000000008L, 0xc38cb00fL, 0xd9112dc620000000L, true, 0, 0x8100000000000000L), + 4 + ), + 879811 + ); + + // gentest-511 + assertEqual( + perft( + Board(0x1128c4630c3000L, 0x4800000000000800L, 0x10000800000L, 0x8100000000008001L, 0x40000000004L, + 0x1000000000000008L, 0x40428cb80dL, 0xd9112d8421000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1265833 + ); + + // gentest-512 + assertEqual( + perft( + Board(0x1128c4630c3000L, 0x4800000000200000L, 0x400000000800000L, 0x8100000000008001L, 0x20000000004L, + 0x1000000000000008L, 0x4042acb00dL, 0xdd112a8421000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1509358 + ); + + // gentest-513 + assertEqual( + perft( + Board(0x1128c467083000L, 0x4800000008000000L, 0x400000000800000L, 0x100800000008001L, 0x20000000004L, + 0x1000000000000008L, 0x404e88b00dL, 0x5d11aa8421000000L, false, 0, 0x100000000000000L), + 4 + ), + 1679934 + ); + + // gentest-514 + assertEqual( + perft( + Board(0x128d467083000L, 0x4800000008000000L, 0x400000000000020L, 0x100800000008001L, 0x10000000004L, + 0x1000000000000008L, 0x404e08b02dL, 0x5d01a99421000000L, true, 0, 0x100000000000000L), + 4 + ), + 1676557 + ); + + // gentest-515 + assertEqual( + perft( + Board(0x188b467083000L, 0x4800000008000000L, 0x400000000000020L, 0x100000000800001L, 0x10000000004L, + 0x1000000000000008L, 0x80004e88302dL, 0x5d0109b421000000L, false, 0, 0x100000000000000L), + 4 + ), + 1407813 + ); + + // gentest-516 + assertEqual( + perft( + Board(0x188b467083000L, 0x4800000008000000L, 0x40000000020L, 0x100000000800001L, 0x10000000004L, + 0x1000000000000400L, 0x80004e883425L, 0x59010db421000000L, true, 0, 0x100000000000000L), + 4 + ), + 1816796 + ); + + // gentest-517 + assertEqual( + perft( + Board(0x188b467083000L, 0x4000100008000000L, 0x40000000020L, 0x100000000800004L, 0x10000000200L, + 0x1000000000000400L, 0x80004e883624L, 0x51011db421000000L, false, 0, 0x100000000000000L), + 4 + ), + 2074049 + ); + + // gentest-518 + assertEqual( + perft( + Board(0x188b467083000L, 0x4000100008000000L, 0x8000000000020L, 0x100000000800004L, 0x10000010000L, + 0x10000000000400L, 0x80004e893424L, 0x411919b421000000L, true, 0, 0x0L), + 4 + ), + 1748549 + ); + + // gentest-519 + assertEqual( + perft( + Board(0x18834e7083000L, 0x4000100000020000L, 0x8000000000020L, 0x100000000800001L, 0x10000010000L, + 0x10000000000400L, 0x8000468b3421L, 0x41191934a1000000L, false, 0, 0x0L), + 4 + ), + 1400040 + ); + + // gentest-520 + assertEqual( + perft( + Board(0x18834e7083000L, 0x4004000000000800L, 0x8000000000020L, 0x2000000000800001L, 0x10000010000L, + 0x10000000000400L, 0x800046893c21L, 0x601d0934a1000000L, true, 0, 0x0L), + 4 + ), + 1619451 + ); + + // gentest-521 + assertEqual( + perft( + Board(0x18834e5083000L, 0x4004000000000800L, 0x40000000020L, 0x2000000000100001L, 0x10000010000L, + 0x10000000000400L, 0x800444193c21L, 0x60150d30a1000000L, false, 0, 0x0L), + 4 + ), + 1830415 + ); + + // gentest-522 + assertEqual( + perft( + Board(0x18834e5083000L, 0x4000100010000000L, 0x100000000000020L, 0x2000000000100001L, 0x10000010000L, + 0x10000000000400L, 0x800454193421L, 0x61111930a1000000L, true, 0, 0x0L), + 4 + ), + 1598746 + ); + + // gentest-523 + assertEqual( + perft( + Board(0x18034e5083000L, 0x4000084000000000L, 0x100000000000020L, 0x2000000000100001L, 0x10000010000L, + 0x10000000000008L, 0x880444193029L, 0x61110170a1000000L, false, 0, 0x0L), + 4 + ), + 1470793 + ); + + // gentest-524 + assertEqual( + perft( + Board(0x18034e5083000L, 0x4000080000200000L, 0x100000000000020L, 0x2000000000100001L, 0x40000010000L, + 0x10000000000004L, 0x880444193025L, 0x61110430a1200000L, true, 0, 0x0L), + 4 + ), + 1077938 + ); + + // gentest-525 + assertEqual( + perft( + Board(0x18014e5282000L, 0x4000080000000000L, 0x100000000000020L, 0x2000000000100001L, 0x40000010000L, + 0x10000000000200L, 0x880404392221L, 0x61110410e1000000L, false, 0, 0x0L), + 4 + ), + 984666 + ); + + // gentest-526 + assertEqual( + perft( + Board(0x18014a5682000L, 0x4000080000000000L, 0x100000000000020L, 0x2000000000100001L, 0x40000020000L, + 0x8000000000200L, 0x8804043a2221L, 0x61090410a1400000L, true, 0, 0x0L), + 4 + ), + 1658139 + ); + + // gentest-527 + assertEqual( + perft( + Board(0x18014a5682000L, 0x4000080000000000L, 0x100000000000020L, 0x400000000100010L, 0x40000000008L, + 0x8000000000200L, 0x880404382238L, 0x45090410a1400000L, false, 0, 0x0L), + 4 + ), + 800872 + ); + + // gentest-528 + assertEqual( + perft( + Board(0x18014ad602000L, 0x4000080000000000L, 0x100000000000020L, 0x400000000100010L, 0x40000000008L, + 0x8000000000200L, 0x88040c302238L, 0x45090410a1400000L, true, 0, 0x0L), + 4 + ), + 1332829 + ); + + // gentest-529 + assertEqual( + perft( + Board(0x10014ad602000L, 0x800010000000L, 0x100000000004000L, 0x400000000100010L, 0x40000000008L, + 0x8000000000200L, 0x41c306218L, 0x5098410a1400000L, false, 0, 0x0L), + 4 + ), + 1399507 + ); + + // gentest-530 + assertEqual( + perft( + Board(0x10014ad602000L, 0x800010000000L, 0x40000004000L, 0x400000000101000L, 0x800000008L, + 0x8000000000200L, 0x41c307208L, 0x4098418a1400000L, true, 0, 0x0L), + 4 + ), + 1484687 + ); + + // gentest-531 + assertEqual( + perft( + Board(0x10014ac602000L, 0x800010000000L, 0x40000800000L, 0x400000000101000L, 0x801000000L, + 0x4000000000200L, 0x41db03200L, 0x4058418a0400000L, false, 0, 0x0L), + 4 + ), + 1936628 + ); + + // gentest-532 + assertEqual( + perft( + Board(0x10014ac600000L, 0x4000000010000000L, 0x40000800000L, 0x8000000000101000L, 0x801000000L, + 0x4000000000200L, 0x41df01200L, 0xc0050418a0000000L, true, 0, 0x0L), + 4 + ), + 1851755 + ); + + // gentest-533 + assertEqual( + perft( + Board(0x10014ac600000L, 0x4000080000000000L, 0x40000800000L, 0x8000000000101000L, 0x10000100L, + 0x4000000000200L, 0x8040cf01300L, 0xc0050410b0000000L, false, 0, 0x0L), + 4 + ), + 1475983 + ); + + // gentest-534 + assertEqual( + perft( + Board(0x15ac600000L, 0x4000080000000000L, 0x8000200000000L, 0x8000000000101000L, 0x10000100L, + 0x4000000000200L, 0x808040c701300L, 0xc0040013b0000000L, true, 0, 0x0L), + 4 + ), + 1633892 + ); + + // gentest-535 + assertEqual( + perft( + Board(0x14ac600000L, 0x4000080000000000L, 0x200000000L, 0x8000000000011000L, 0x110000000L, + 0x8000000000200L, 0x8050c611200L, 0xc0080012b0000000L, false, 0, 0x0L), + 4 + ), + 1484959 + ); + + // gentest-536 + assertEqual( + perft( + Board(0x14ac600000L, 0x880000000000L, 0x200000000L, 0x800000000001001L, 0x110000000L, + 0x8000000000200L, 0x8050c601201L, 0x8088012b0000000L, true, 0, 0x0L), + 4 + ), + 2381671 + ); + + // gentest-537 + assertEqual( + perft( + Board(0x14ac600000L, 0x880000000000L, 0x0L, 0x800000000001001L, 0x100000200000000L, 0x8000000000200L, + 0x8060c601201L, 0x9088010a0000000L, false, 0, 0x0L), + 4 + ), + 229959 + ); + + // gentest-538 + assertEqual( + perft( + Board(0x14ac600000L, 0x880000000000L, 0x0L, 0x100000000001001L, 0x40200000000L, 0x8000000010000L, + 0x8060c611001L, 0x1088410a0000000L, true, 0, 0x0L), + 4 + ), + 190288 + ); + + // gentest-539 + assertEqual( + perft( + Board(0x14ac600000L, 0x20080000000000L, 0x0L, 0x100000010000001L, 0x40001000000L, 0x8000000010000L, + 0x8041d610001L, 0x1280410a0000000L, false, 0, 0x0L), + 4 + ), + 637847 + ); + + // gentest-540 + assertEqual( + perft( + Board(0x1c84600000L, 0x20080000000000L, 0x0L, 0x100000010000001L, 0x40001000000L, 0x4000000010000L, + 0x80c15210001L, 0x124041080400000L, true, 0, 0x0L), + 4 + ), + 722822 + ); + + // gentest-541 + assertEqual( + perft( + Board(0x1c84600000L, 0x20080000000000L, 0x0L, 0x4000000040000040L, 0x40001000000L, 0x4000000010000L, + 0x80c45210040L, 0x4024041080400000L, false, 0, 0x0L), + 4 + ), + 1197005 + ); + + // gentest-542 + assertEqual( + perft( + Board(0x1c84600000L, 0x20080000000000L, 0x0L, 0x4000000040000040L, 0x8000100000000L, + 0x200000000010000L, 0x80d44210040L, 0x4228001080400000L, true, 0, 0x0L), + 4 + ), + 1128050 + ); + + // gentest-543 + assertEqual( + perft( + Board(0x1c04e00000L, 0x20080000000000L, 0x0L, 0x4000000020000040L, 0x8000100000000L, + 0x200000002000000L, 0x80d26200040L, 0x4228001000c00000L, false, 0, 0x0L), + 4 + ), + 1038527 + ); + + // gentest-544 + assertEqual( + perft( + Board(0x1c04e00000L, 0x22000000000000L, 0x0L, 0x4020000040L, 0x1000100000000L, 0x200000002000000L, + 0x2000d26200040L, 0x221005000c00000L, true, 0, 0x0L), + 4 + ), + 524984 + ); + + // gentest-545 + assertEqual( + perft( + Board(0x1c04e00000L, 0x20080000000000L, 0x0L, 0x8020000040L, 0x1000200000000L, 0x200000002000000L, + 0x80e26200040L, 0x221009000c00000L, false, 0, 0x0L), + 4 + ), + 77806 + ); + + // gentest-546 + assertEqual( + perft( + Board(0x1c04e00000L, 0x20002000000000L, 0x0L, 0x4020000040L, 0x20200000000L, 0x200000002000000L, + 0x2e26200040L, 0x220025000c00000L, true, 0, 0x0L), + 4 + ), + 368728 + ); + + // gentest-547 + assertEqual( + perft( + Board(0x1c04e00000L, 0x880000000000L, 0x0L, 0x4020000008L, 0x20200000000L, 0x200000002000000L, + 0x80e26200008L, 0x200825000c00000L, false, 0, 0x0L), + 4 + ), + 318541 + ); + + // gentest-548 + assertEqual( + perft( + Board(0x1c04e00000L, 0x880000000000L, 0x0L, 0x4020000004L, 0x20200000000L, 0x200000002000000L, + 0x80e26200004L, 0x200825000c00000L, true, 0, 0x0L), + 4 + ), + 317762 + ); + + // gentest-549 + assertEqual( + perft( + Board(0xc14e00000L, 0x1000800000000000L, 0x0L, 0x4080000004L, 0x20200000000L, 0x200000002000000L, + 0x1000000e86200004L, 0x200824010c00000L, false, 0, 0x0L), + 4 + ), + 405817 + ); + + // gentest-550 + assertEqual( + perft( + Board(0xc14e00000L, 0x800000000000L, 0x0L, 0x4080000004L, 0x20200000000L, 0x4000002000000L, + 0xe86200004L, 0x4824010c00000L, true, 0, 0x0L), + 4 + ), + 489546 + ); + + // gentest-551 + assertEqual( + perft( + Board(0xc14e00000L, 0x800000000000L, 0x0L, 0x4080000040L, 0x200000000L, 0x4000000010000L, + 0xc84210040L, 0x4804210c00000L, false, 0, 0x0L), + 4 + ), + 389992 + ); + + // gentest-552 + assertEqual( + perft( + Board(0xc14e00000L, 0x0L, 0x0L, 0x800040000040L, 0x10000000000L, 0x4000000010000L, 0x800c04210040L, + 0x4010050c00000L, true, 0, 0x0L), + 4 + ), + 72095 + ); + + // gentest-553 + assertEqual( + perft( + Board(0xc10e00000L, 0x0L, 0x0L, 0x800040000040L, 0x4000000L, 0x4000000010000L, 0x800c00210040L, + 0x4000054c00000L, false, 0, 0x0L), + 4 + ), + 315221 + ); + + // gentest-554 + assertEqual( + perft( + Board(0xc10e00000L, 0x0L, 0x0L, 0x800080000040L, 0x80000L, 0x4000001000000L, 0x800c01200040L, + 0x4000090c80000L, true, 0, 0x0L), + 4 + ), + 333002 + ); + + // gentest-555 + assertEqual( + perft( + Board(0xc10e00000L, 0x0L, 0x0L, 0x800080004000L, 0x10000000000L, 0x4000000020000L, 0x800c00224000L, + 0x4010090c00000L, false, 0, 0x0L), + 4 + ), + 450219 + ); + + // gentest-556 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x800080000000L, 0x200000000000L, 0x4000000040000L, 0x800c00240000L, + 0x4200090404000L, true, 0, 0x0L), + 4 + ), + 108187 + ); + + // gentest-557 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x2000800000L, 0x0L, 0x4000000040000L, 0x2c00240000L, + 0x4000010c04000L, false, 0, 0x0L), + 4 + ), + 101623 + ); + + // gentest-558 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x200002000000000L, 0x0L, 0x4000000020000L, 0x2c00220000L, + 0x204000010404000L, true, 0, 0x0L), + 4 + ), + 38907 + ); + + // gentest-559 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x200004000000000L, 0x0L, 0x800000000040000L, 0x4c00240000L, + 0xa00000010404000L, false, 0, 0x0L), + 4 + ), + 97160 + ); + + // gentest-560 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x4000002000L, 0x0L, 0x800000004000000L, 0x4c04200000L, + 0x800000010406000L, true, 0, 0x0L), + 4 + ), + 84434 + ); + + // gentest-561 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x40000000002000L, 0x0L, 0x8000004000000L, 0x40000c04200000L, + 0x8000010406000L, false, 0, 0x0L), + 4 + ), + 17198 + ); + + // gentest-562 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x40000000001000L, 0x0L, 0x400000002000000L, 0x40000c02200000L, + 0x400000010405000L, true, 0, 0x0L), + 4 + ), + 109499 + ); + + // gentest-563 + assertEqual( + perft( + Board(0xc10604000L, 0x0L, 0x0L, 0x100000001000L, 0x0L, 0x8000002000000L, 0x100c02200000L, + 0x8000010405000L, false, 0, 0x0L), + 4 + ), + 100882 + ); + + // gentest-564 + assertEqual( + perft( + Board(0xc10404000L, 0x0L, 0x0L, 0x1000200000L, 0x0L, 0x8000002000000L, 0x1c02000000L, + 0x8000010604000L, true, 0, 0x0L), + 4 + ), + 60162 + ); + + // gentest-565 + assertEqual( + perft( + Board(0xc10404000L, 0x0L, 0x0L, 0x1000200000L, 0x0L, 0x10000002000000L, 0x1c02000000L, + 0x10000010604000L, false, 0, 0x0L), + 4 + ), + 16510 + ); + + // gentest-566 + assertEqual( + perft( + Board(0xc10404000L, 0x0L, 0x0L, 0x1000000000002000L, 0x0L, 0x20000002000000L, 0x1000000c02000000L, + 0x20000010406000L, true, 0, 0x0L), + 4 + ), + 116104 + ); + + // gentest-567 + assertEqual( + perft( + Board(0xc10404000L, 0x0L, 0x0L, 0x8000000000200000L, 0x0L, 0x20000002000000L, 0x8000000c02000000L, + 0x20000010604000L, false, 0, 0x0L), + 4 + ), + 128697 + ); + + // gentest-568 + assertEqual( + perft( + Board(0xc10400000L, 0x0L, 0x0L, 0x8000000000200000L, 0x40L, 0x400001000000L, 0x8000000c01000000L, + 0x400010600040L, true, 0, 0x0L), + 4 + ), + 251525 + ); + + // gentest-569 + assertEqual( + perft( + Board(0xc10400000L, 0x0L, 0x0L, 0x4000000000000020L, 0x40L, 0x400001000000L, 0x4000000c01000000L, + 0x400010400060L, false, 0, 0x0L), + 4 + ), + 39585 + ); + + // gentest-570 + assertEqual( + perft( + Board(0xc10400000L, 0x0L, 0x0L, 0x4000000000000004L, 0x40L, 0x20000002000000L, 0x4000000c02000000L, + 0x20000010400044L, true, 0, 0x0L), + 4 + ), + 162599 + ); + + // gentest-571 + assertEqual( + perft( + Board(0xc10400000L, 0x0L, 0x0L, 0x400000000004L, 0x100000L, 0x20000002000000L, 0x400c02000000L, + 0x20000010500004L, false, 0, 0x0L), + 4 + ), + 152924 + ); + + // gentest-572 + assertEqual( + perft( + Board(0xc10400000L, 0x0L, 0x0L, 0x400000000004L, 0x800L, 0x20000200000000L, 0x400e00000000L, + 0x20000010400804L, true, 0, 0x0L), + 4 + ), + 251768 + ); + + // gentest-573 + assertEqual( + perft( + Board(0xc10400000L, 0x0L, 0x0L, 0x100000000004L, 0x0L, 0x20000002000000L, 0x100c02000000L, + 0x20000010400004L, false, 0, 0x0L), + 4 + ), + 70169 + ); + + // gentest-574 + assertEqual( + perft( + Board(0xc10400000L, 0x0L, 0x0L, 0x100000000010L, 0x0L, 0x20000100000000L, 0x100d00000000L, + 0x20000010400010L, true, 0, 0x0L), + 4 + ), + 61735 + ); + + // gentest-575 + assertEqual( + perft( + Board(0xc00500000L, 0x0L, 0x0L, 0x800000000010L, 0x0L, 0x20000002000000L, 0x800c02000000L, + 0x20000000500010L, false, 0, 0x0L), + 4 + ), + 92733 + ); + + // gentest-576 + assertEqual( + perft( + Board(0xc00401000L, 0x0L, 0x0L, 0x8010L, 0x0L, 0x40000002000000L, 0xc02008000L, 0x40000000401010L, + true, 0, 0x0L), + 4 + ), + 73129 + ); + + // gentest-577 + assertEqual( + perft( + Board(0x80400401000L, 0x0L, 0x0L, 0x80000010L, 0x0L, 0x2000000002000000L, 0x80482000000L, + 0x2000000000401010L, false, 0, 0x0L), + 4 + ), + 64660 + ); + + // gentest-578 + assertEqual( + perft( + Board(0x80400401000L, 0x0L, 0x0L, 0x80800000L, 0x0L, 0x2000000000020000L, 0x80480020000L, + 0x2000000000c01000L, true, 0, 0x0L), + 4 + ), + 83131 + ); + + // gentest-579 + assertEqual( + perft( + Board(0x8000400401000L, 0x0L, 0x0L, 0x8002000000L, 0x0L, 0x2000000000020000L, 0x8000402020000L, + 0x2000008000401000L, false, 0, 0x0L), + 4 + ), + 196892 + ); + + // gentest-580 + assertEqual( + perft( + Board(0x8000400400000L, 0x0L, 0x10L, 0x8040000000L, 0x0L, 0x10000000020000L, 0x8000440020000L, + 0x10008000400010L, true, 0, 0x0L), + 4 + ), + 198348 + ); + + // gentest-581 + assertEqual( + perft( + Board(0x8000400400000L, 0x0L, 0x10L, 0x8000000000L, 0x0L, 0x800000000020000L, 0x8008400020000L, + 0x800000000400010L, false, 0, 0x0L), + 4 + ), + 35972 + ); + + // gentest-582 + assertEqual( + perft( + Board(0x8000400000000L, 0x0L, 0x50L, 0x80000000L, 0x0L, 0x800000000020000L, 0x8000480020000L, + 0x800000000000050L, true, 0, 0x0L), + 4 + ), + 84820 + ); + + // gentest-583 + assertEqual( + perft( + Board(0x400000000L, 0x0L, 0x50L, 0x2000000L, 0x800000000000000L, 0x10000000020000L, + 0x800000402020000L, 0x10000000000050L, false, 0, 0x0L), + 4 + ), + 38271 + ); + + // gentest-584 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-585 + assertEqual( + perft( + Board(0xbf40000400fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000400L, 0x1000000000000010L, 0x400fff7L, 0xffbf400000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 407090 + ); + + // gentest-586 + assertEqual( + perft( + Board(0x3dc0020400fb00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000400L, 0x1000000000000010L, 0x401fff5L, 0xff3dc00200000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 419743 + ); + + // gentest-587 + assertEqual( + perft( + Board(0x35c8060000fb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000400L, 0x1000000000000010L, 0x40400fff5L, 0xff35c80200000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 909494 + ); + + // gentest-588 + assertEqual( + perft( + Board(0x35c8060010eb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x1000000000000400L, 0x8000000000010L, 0x40410eff5L, 0xf73dc80200000000L, true, 0, 0x81L), + 4 + ), + 673655 + ); + + // gentest-589 + assertEqual( + perft( + Board(0x3489060010eb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x1000400000000000L, 0x8000000000010L, 0x40040410ebf5L, 0xf73c890200000000L, false, 0, 0x81L), + 4 + ), + 750848 + ); + + // gentest-590 + assertEqual( + perft( + Board(0x1489260010eb00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x40400000000000L, 0x8000000000010L, 0x4000040410ebf5L, 0xe71cc92200000000L, true, 0, 0x81L), + 4 + ), + 1101005 + ); + + // gentest-591 + assertEqual( + perft( + Board(0x14092600906b00L, 0x4200000004000040L, 0x2400000000000024L, 0x8100000000000081L, + 0xc00000000000L, 0x100000000010L, 0x800404906bf5L, 0xe714592200000000L, false, 0, 0x81L), + 4 + ), + 775616 + ); + + // gentest-592 + assertEqual( + perft( + Board(0x14012e00906b00L, 0x4200000000010040L, 0x440000000000024L, 0x8100000000000081L, + 0xc00000000000L, 0x100000000010L, 0x800400916bf5L, 0xc754512a00000000L, true, 0, 0x81L), + 4 + ), + 896972 + ); + + // gentest-593 + assertEqual( + perft( + Board(0x14012e10806b00L, 0x4200000000010040L, 0x400000000040024L, 0x8100000000000081L, + 0x400020000000L, 0x100000000010L, 0x430816bf5L, 0xc714512a00040000L, false, 0, 0x81L), + 4 + ), + 1790569 + ); + + // gentest-594 + assertEqual( + perft( + Board(0x14012e10806300L, 0x4200000000010040L, 0x400000000000824L, 0x8100000000000081L, 0x4040000000L, + 0x100000000010L, 0x4508163f5L, 0xc714116a00000800L, true, 0, 0x81L), + 4 + ), + 118738 + ); + + // gentest-595 + assertEqual( + perft( + Board(0x14002f10c02300L, 0x4200000000010040L, 0x400000000000824L, 0x8100000000000081L, 0x4040000000L, + 0x100000001000L, 0x450c133e5L, 0xc714106b00000800L, false, 0, 0x0L), + 4 + ), + 1083773 + ); + + // gentest-596 + assertEqual( + perft( + Board(0x1400271ac02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000010000000081L, 0x4040000000L, + 0x100000001000L, 0x452c131e5L, 0xc614116308000800L, true, 0, 0x0L), + 4 + ), + 924987 + ); + + // gentest-597 + assertEqual( + perft( + Board(0x1400271ac02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000010000000082L, 0x4040000000L, + 0x20000000200000L, 0x452e121e6L, 0xc634016308000800L, false, 0, 0x0L), + 4 + ), + 1531221 + ); + + // gentest-598 + assertEqual( + perft( + Board(0x1400271ac02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000100000008002L, 0x4040000000L, + 0x400000200000L, 0x452e1a166L, 0xc614506308000800L, true, 0, 0x0L), + 4 + ), + 902176 + ); + + // gentest-599 + assertEqual( + perft( + Board(0x14012618c02100L, 0x4200000000010040L, 0x400000000000824L, 0x8000040000008002L, 0x4040000000L, + 0x400000200000L, 0x10450e1a166L, 0xc614446208000800L, false, 0, 0x0L), + 4 + ), + 1091367 + ); + + // gentest-600 + assertEqual( + perft( + Board(0x14012618c02100L, 0x4200000000010040L, 0x400000100080004L, 0x8000200000008002L, 0x4040000000L, + 0x400000200000L, 0x10450e9a146L, 0xc614606308000000L, true, 0, 0x0L), + 4 + ), + 1159999 + ); + + // gentest-601 + assertEqual( + perft( + Board(0x15002618c02100L, 0x4200000000010040L, 0x100100180000L, 0x8000200000008002L, 0x4040000000L, + 0x400000200000L, 0x1000450f9a142L, 0xc214706308000000L, false, 0, 0x0L), + 4 + ), + 1725479 + ); + + // gentest-602 + assertEqual( + perft( + Board(0x15002690403100L, 0x4200000000010040L, 0x100100080000L, 0x8000200000008002L, 0x4040000000L, + 0x400000200000L, 0x10004d069a142L, 0xc214706300001000L, true, 0, 0x0L), + 4 + ), + 1586826 + ); + + // gentest-603 + assertEqual( + perft( + Board(0x15003680403100L, 0x4200000000010040L, 0x100100080000L, 0x8000200000008001L, 0x4040000000L, + 0x40000000200000L, 0x10014c069a141L, 0xc254306300001000L, false, 0, 0x0L), + 4 + ), + 2366746 + ); + + // gentest-604 + assertEqual( + perft( + Board(0x15003680403100L, 0x4000010000010040L, 0x100100080000L, 0x8000200000000081L, 0x4040000000L, + 0x800000200000L, 0x10014c06921c1L, 0xc014b16300001000L, true, 0, 0x0L), + 4 + ), + 1766663 + ); + + // gentest-605 + assertEqual( + perft( + Board(0x150016c0403100L, 0x4000010000010040L, 0x100100000400L, 0x8000200000000081L, 0x4000000000L, + 0x800000004000L, 0x10014804165c1L, 0xc014b14340001000L, false, 0, 0x0L), + 4 + ), + 1630260 + ); + + // gentest-606 + assertEqual( + perft( + Board(0x140016c0403100L, 0x4000010000010040L, 0x100002100000400L, 0xa000000000000081L, 0x4000000000L, + 0x800000004000L, 0x1000014804165c1L, 0xe014816340001000L, true, 0, 0x0L), + 4 + ), + 1892584 + ); + + // gentest-607 + assertEqual( + perft( + Board(0x140016c0403100L, 0x4000010000010040L, 0x2110000002L, 0x8200000000000081L, 0x4000000000L, + 0x800000004000L, 0x14904161c3L, 0xc214816340001000L, false, 0, 0x0L), + 4 + ), + 1024405 + ); + + // gentest-608 + assertEqual( + perft( + Board(0x140012c0403100L, 0x4000000400010040L, 0x2012080000L, 0x8200000000000081L, 0x4000000000L, + 0x800000004000L, 0x10904961c1L, 0xc214806642001000L, true, 0, 0x0L), + 4 + ), + 1973950 + ); + + // gentest-609 + assertEqual( + perft( + Board(0x140012c0403100L, 0x4000010000000440L, 0x2012080000L, 0x8200000000000090L, 0x4000000000L, + 0x800000004000L, 0x10904865d0L, 0xc214816242001000L, false, 0, 0x0L), + 4 + ), + 1566387 + ); + + // gentest-610 + assertEqual( + perft( + Board(0x140012c0402100L, 0x4000010000001400L, 0x100012080000L, 0x8200000000000090L, 0x800L, + 0x800000004000L, 0x1090487590L, 0xc214910242000800L, true, 0, 0x0L), + 4 + ), + 2066184 + ); + + // gentest-611 + assertEqual( + perft( + Board(0x140012c0402100L, 0x4000010000000440L, 0x80100002080000L, 0x8000020000000090L, 0x800L, + 0x800000004000L, 0x800010804865d0L, 0xc014930242000800L, false, 0, 0x0L), + 4 + ), + 1408784 + ); + + // gentest-612 + assertEqual( + perft( + Board(0x140012c0402100L, 0x4000010000000040L, 0x80100002080000L, 0x8000020000000082L, 0x40000000000L, + 0x800000004000L, 0x800010804861c2L, 0xc014970242000000L, true, 0, 0x0L), + 4 + ), + 235680 + ); + + // gentest-613 + assertEqual( + perft( + Board(0x140012c0402100L, 0x4000010000000040L, 0x80100002000020L, 0x8000020000000082L, 0x4000000L, + 0x800000008000L, 0x8000108040a1e2L, 0xc014930246000000L, false, 0, 0x0L), + 4 + ), + 1120504 + ); + + // gentest-614 + assertEqual( + perft( + Board(0x140010c0402000L, 0x4000010000000040L, 0x88000202000000L, 0x8000020000000082L, 0x100L, + 0x800000008000L, 0x8000128040a0c2L, 0xc01c830042000100L, true, 0, 0x0L), + 4 + ), + 1536493 + ); + + // gentest-615 + assertEqual( + perft( + Board(0x140010c0402000L, 0x4000000000000040L, 0x88010002000000L, 0x8000020000000088L, 0x10000L, + 0x800000008000L, 0x8001108040a0c8L, 0xc01c820042010000L, false, 0, 0x0L), + 4 + ), + 1651559 + ); + + // gentest-616 + assertEqual( + perft( + Board(0x100014c0402000L, 0x4000000000000040L, 0x8010000080800L, 0x8000020000000088L, 0x10000L, + 0x800000008000L, 0x1108048a0c8L, 0xc018820440010800L, true, 0, 0x0L), + 4 + ), + 1588037 + ); + + // gentest-617 + assertEqual( + perft( + Board(0x100014c0402000L, 0x4000000000000040L, 0x408000000080800L, 0x80000200000000a0L, + 0x1000000000000L, 0x800000008000L, 0x40000108048a0e0L, 0xc019820440000800L, false, 0, 0x0L), + 4 + ), + 1263011 + ); + + // gentest-618 + assertEqual( + perft( + Board(0x100014c0402000L, 0x4000000000000040L, 0x400400200000800L, 0x82000000000000a0L, + 0x1000000000000L, 0x800000008000L, 0x40040108040a0e0L, 0xc211800640000800L, true, 0, 0x0L), + 4 + ), + 1170122 + ); + + // gentest-619 + assertEqual( + perft( + Board(0x100014c0402000L, 0x4000000000000040L, 0x400200000800L, 0x8400000000000081L, 0x1000000000000L, + 0x800000008000L, 0x40108040a0c1L, 0xc411800640000800L, false, 0, 0x0L), + 4 + ), + 1188864 + ); + + // gentest-620 + assertEqual( + perft( + Board(0x100014e0400000L, 0x4000000000000040L, 0x400200100000L, 0x8400000000000081L, 0x10000000000L, + 0x800000008000L, 0x4010a04080c1L, 0xc410810640100000L, true, 0, 0x0L), + 4 + ), + 1003013 + ); + + // gentest-621 + assertEqual( + perft( + Board(0x100014e0400000L, 0x4000000000000040L, 0x210100000L, 0x8400000000000082L, 0x10000000000L, + 0x40000000008000L, 0x10b04080c2L, 0xc450010640100000L, false, 0, 0x0L), + 4 + ), + 1424338 + ); + + // gentest-622 + assertEqual( + perft( + Board(0x100014e0400000L, 0x4000000000000040L, 0x210100000L, 0x8400000000000280L, 0x100000000000000L, + 0x40000000008000L, 0x10b04082c0L, 0xc550000640100000L, true, 0, 0x0L), + 4 + ), + 1413398 + ); + + // gentest-623 + assertEqual( + perft( + Board(0x100014e0400000L, 0x4000000000000040L, 0x10180000L, 0x8400000000000180L, 0x100000000000000L, + 0x40000000004000L, 0x10b04041c0L, 0xc550000440180000L, false, 0, 0x0L), + 4 + ), + 1052959 + ); + + // gentest-624 + assertEqual( + perft( + Board(0x100014e0400000L, 0x4000000000000040L, 0x10180000L, 0x8400000000000081L, 0x2000000000000L, + 0x20000000004000L, 0x10b04040c1L, 0xc432000440180000L, true, 0, 0x0L), + 4 + ), + 1151941 + ); + + // gentest-625 + assertEqual( + perft( + Board(0x100014e0400000L, 0x4000000000000040L, 0x10180000L, 0xa000010000000080L, 0x2000000000000L, + 0x20000000004000L, 0x110b04040c0L, 0xe032000440180000L, false, 0, 0x0L), + 4 + ), + 1129389 + ); + + // gentest-626 + assertEqual( + perft( + Board(0x100014e0400000L, 0x200000000040L, 0x10180000L, 0x8400000001000080L, 0x2000000000000L, + 0x20000000004000L, 0x10b14040c0L, 0x8432200440180000L, true, 0, 0x0L), + 4 + ), + 1601708 + ); + + // gentest-627 + assertEqual( + perft( + Board(0x102004e0400000L, 0x40L, 0x400000180000L, 0x8400000001000080L, 0x20000000000L, + 0x20000000004000L, 0x6000a14040c0L, 0x8430020440180000L, false, 0, 0x0L), + 4 + ), + 171569 + ); + + // gentest-628 + assertEqual( + perft( + Board(0x102004e0400000L, 0x200000L, 0x10000100000L, 0x8400000001000080L, 0x20000000000L, + 0x400000004000L, 0x2000a1604080L, 0x8410430440100000L, true, 0, 0x0L), + 4 + ), + 1823581 + ); + + // gentest-629 + assertEqual( + perft( + Board(0x102004e0400000L, 0x800000L, 0x10000100000L, 0x8400000001000080L, 0x2L, 0x400000004000L, + 0x2000a1c04080L, 0x8410410440100002L, false, 0, 0x0L), + 4 + ), + 1213332 + ); + + // gentest-630 + assertEqual( + perft( + Board(0x102024c0400000L, 0x800000L, 0x10000100000L, 0x9000000001000080L, 0x2L, 0x800000004000L, + 0x202081c04080L, 0x9010810440100002L, true, 0, 0x0L), + 4 + ), + 1132776 + ); + + // gentest-631 + assertEqual( + perft( + Board(0x10202480c00000L, 0x0L, 0x10000100000L, 0x9000000000000180L, 0x2L, 0x800000008000L, + 0x202080408180L, 0x9010810400900002L, false, 0, 0x0L), + 4 + ), + 879131 + ); + + // gentest-632 + assertEqual( + perft( + Board(0x10202480c00000L, 0x0L, 0x10000000000L, 0x9000000000000140L, 0x20000L, 0x800000008000L, + 0x202080408140L, 0x9010810400820000L, true, 0, 0x0L), + 4 + ), + 1017732 + ); + + // gentest-633 + assertEqual( + perft( + Board(0x10202480c00000L, 0x0L, 0x10000000000L, 0x9000000020000040L, 0x200000000L, 0x800000008000L, + 0x2020a0408040L, 0x9010810600800000L, false, 0, 0x0L), + 4 + ), + 540242 + ); + + // gentest-634 + assertEqual( + perft( + Board(0x10202480c00000L, 0x0L, 0x400000000000000L, 0x9000000020000010L, 0x1000L, 0x800000008000L, + 0x2020a0408010L, 0x9410800400801000L, true, 0, 0x0L), + 4 + ), + 116716 + ); + + // gentest-635 + assertEqual( + perft( + Board(0x202480c00000L, 0x0L, 0x400000000000000L, 0x8810000020000000L, 0x0L, 0x800000008000L, + 0x102020a0408000L, 0x8c00800400800000L, false, 0, 0x0L), + 4 + ), + 310283 + ); + + // gentest-636 + assertEqual( + perft( + Board(0x202480c00000L, 0x0L, 0x400000000000000L, 0x8040000020000002L, 0x0L, 0x800000008000L, + 0x402020a0408000L, 0x8400800400800002L, true, 0, 0x0L), + 4 + ), + 301555 + ); + + // gentest-637 + assertEqual( + perft( + Board(0x202480c00000L, 0x0L, 0x400000000000000L, 0x8001000004000001L, 0x0L, 0x800000008000L, + 0x1202084408000L, 0x8400800400800001L, false, 0, 0x0L), + 4 + ), + 343882 + ); + + // gentest-638 + assertEqual( + perft( + Board(0x202480c00000L, 0x0L, 0x20000L, 0x8001000000000401L, 0x0L, 0x800000008000L, 0x1202080408400L, + 0x8000800400820001L, true, 0, 0x0L), + 4 + ), + 580549 + ); + + // gentest-639 + assertEqual( + perft( + Board(0x202480c00000L, 0x0L, 0x20000L, 0x200010000000005L, 0x0L, 0x800000008000L, 0x212080408004L, + 0x200800400820001L, false, 0, 0x0L), + 4 + ), + 529164 + ); + + // gentest-640 + assertEqual( + perft( + Board(0x202480c00000L, 0x0L, 0x20000L, 0x200010006000000L, 0x0L, 0x800000008000L, 0x212084408000L, + 0x200800402820000L, true, 0, 0x0L), + 4 + ), + 414173 + ); + + // gentest-641 + assertEqual( + perft( + Board(0x202480c00000L, 0x0L, 0x20000L, 0x20006000001L, 0x0L, 0x800000000080L, 0x202084400081L, + 0x820402820000L, false, 0, 0x0L), + 4 + ), + 263895 + ); + + // gentest-642 + assertEqual( + perft( + Board(0x202480408000L, 0x0L, 0x20000L, 0x20210000001L, 0x0L, 0x800000000080L, 0x202090400081L, + 0x820600028000L, true, 0, 0x0L), + 4 + ), + 410826 + ); + + // gentest-643 + assertEqual( + perft( + Board(0x20002480408000L, 0x0L, 0x20000L, 0x2100200000001L, 0x0L, 0x800000000080L, 0x20102080400081L, + 0x2800600028000L, false, 0, 0x0L), + 4 + ), + 75293 + ); + + // gentest-644 + assertEqual( + perft( + Board(0x2000a400408000L, 0x0L, 0x100000000000L, 0x2000200000001L, 0x0L, 0x80000000000080L, + 0x2000a000400081L, 0x82100600008000L, true, 0, 0x0L), + 4 + ), + 277220 + ); + + // gentest-645 + assertEqual( + perft( + Board(0xa400408000L, 0x0L, 0x100000000000L, 0x2002000000010200L, 0x0L, 0x80000000000080L, + 0x200000a000410080L, 0x82100400008200L, false, 0, 0x0L), + 4 + ), + 508390 + ); + + // gentest-646 + assertEqual( + perft( + Board(0xa400408000L, 0x0L, 0x100000000000L, 0x200000002010100L, 0x0L, 0x80000000000080L, + 0x20000a000410080L, 0x80100402008100L, true, 0, 0x0L), + 4 + ), + 499386 + ); + + // gentest-647 + assertEqual( + perft( + Board(0xa440008000L, 0x0L, 0x100000000000L, 0x200010000000300L, 0x0L, 0x80000000000080L, + 0x20001a040000080L, 0x80100400008300L, false, 0, 0x0L), + 4 + ), + 345849 + ); + + // gentest-648 + assertEqual( + perft( + Board(0xa440008000L, 0x0L, 0x400000000000000L, 0x4000010000010200L, 0x0L, 0x80000000000080L, + 0x400001a040000080L, 0x480000400018200L, true, 0, 0x0L), + 4 + ), + 313582 + ); + + // gentest-649 + assertEqual( + perft( + Board(0xe400008000L, 0x0L, 0x400000000000000L, 0x4100000000014000L, 0x0L, 0x80000000000080L, + 0x410000e000000080L, 0x48000040001c000L, false, 0, 0x0L), + 4 + ), + 219413 + ); + + // gentest-650 + assertEqual( + perft( + Board(0xe400008000L, 0x0L, 0x400000000000000L, 0x2100000000004001L, 0x0L, 0x80000000000080L, + 0x210000e000000080L, 0x48000040000c001L, true, 0, 0x0L), + 4 + ), + 15507 + ); + + // gentest-651 + assertEqual( + perft( + Board(0xe400008000L, 0x0L, 0x400000000000000L, 0x2000000000000040L, 0x0L, 0x80000000000080L, + 0x200000e0000000c0L, 0x480000400008000L, false, 0, 0x0L), + 4 + ), + 30796 + ); + + // gentest-652 + assertEqual( + perft( + Board(0xe400000000L, 0x0L, 0x8000000000000L, 0x2000000000000000L, 0x0L, 0x80000000000040L, + 0x200000e000000040L, 0x88000400000000L, true, 0, 0x0L), + 4 + ), + 20076 + ); + + // gentest-653 + assertEqual( + perft( + Board(0xe400000000L, 0x0L, 0x8000000000000L, 0x20000000000000L, 0x0L, 0x8000000000004000L, + 0x2000e000004000L, 0x8008000400000000L, false, 0, 0x0L), + 4 + ), + 24740 + ); + + // gentest-654 + assertEqual( + perft( + Board(0xe400000000L, 0x0L, 0x1000000L, 0x20000000000000L, 0x0L, 0x8000000000002000L, + 0x2000e000002000L, 0x8000000401000000L, true, 0, 0x0L), + 4 + ), + 28902 + ); + + // gentest-655 + assertEqual( + perft( + Board(0x40a400000000L, 0x0L, 0x400L, 0x20000000000000L, 0x0L, 0x8000000000200000L, 0x2040a000200000L, + 0x8000000400000400L, false, 0, 0x0L), + 4 + ), + 22130 + ); + + // gentest-656 + assertEqual( + perft( + Board(0x40a400000000L, 0x0L, 0x80000L, 0x1000000000000L, 0x0L, 0x8000000000200000L, 0x140a000200000L, + 0x8000000400080000L, true, 0, 0x0L), + 4 + ), + 42845 + ); + + // gentest-657 + assertEqual( + perft( + Board(0x608400000000L, 0x0L, 0x20L, 0x1000000000000L, 0x0L, 0x8000000010000000L, 0x1608010000000L, + 0x8000000400000020L, false, 0, 0x0L), + 4 + ), + 26060 + ); + + // gentest-658 + assertEqual( + perft( + Board(0x608400000000L, 0x0L, 0x10000000000L, 0x1000000000000L, 0x0L, 0x8000002000000000L, + 0x160a000000000L, 0x8000010400000000L, true, 0, 0x0L), + 4 + ), + 19191 + ); + + // gentest-659 + assertEqual( + perft( + Board(0x608400000000L, 0x0L, 0x400000000000000L, 0x1000000000000L, 0x0L, 0x8000000020000000L, + 0x1608020000000L, 0x8400000400000000L, false, 0, 0x0L), + 4 + ), + 36352 + ); + + // gentest-660 + assertEqual( + perft( + Board(0x608400000000L, 0x0L, 0x400000000000000L, 0x20000000000000L, 0x0L, 0x8000000020000000L, + 0x20608020000000L, 0x8400000400000000L, true, 0, 0x0L), + 4 + ), + 16295 + ); + + // gentest-661 + assertEqual( + perft( + Board(0x608400000000L, 0x0L, 0x8000000000000L, 0x200000000000000L, 0x0L, 0x8000000020000000L, + 0x200608020000000L, 0x8008000400000000L, false, 0, 0x0L), + 4 + ), + 3519 + ); + + // gentest-662 + assertEqual( + perft( + Board(0x608400000000L, 0x0L, 0x400000000000000L, 0x200000000000000L, 0x0L, 0x4000000000200000L, + 0x200608000200000L, 0x4400000400000000L, true, 0, 0x0L), + 4 + ), + 16797 + ); + + // gentest-663 + assertEqual( + perft( + Board(0x608004000000L, 0x0L, 0x400000000000000L, 0x1L, 0x0L, 0x4000000000200000L, 0x608000200001L, + 0x4400000004000000L, false, 0, 0x0L), + 4 + ), + 38487 + ); + + // gentest-664 + assertEqual( + perft( + Board(0x608004000000L, 0x0L, 0x80L, 0x1L, 0x0L, 0x4000000040000000L, 0x608040000001L, + 0x4000000004000080L, true, 0, 0x0L), + 4 + ), + 43843 + ); + + // gentest-665 + assertEqual( + perft( + Board(0x608004000000L, 0x0L, 0x80L, 0x8L, 0x0L, 0x8000000000800000L, 0x608000800008L, + 0x8000000004000080L, false, 0, 0x0L), + 4 + ), + 30745 + ); + + // gentest-666 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-667 + assertEqual( + perft( + Board(0xfb04000002fd00L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2fffbL, 0xfffb040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 361756 + ); + + // gentest-668 + assertEqual( + perft( + Board(0xd304280402f900L, 0x4200000000000042L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x402fbfbL, 0xffd3042800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 611204 + ); + + // gentest-669 + assertEqual( + perft( + Board(0x5304a80600f900L, 0x4200000000800002L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x680fbbbL, 0xff5304a800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 743804 + ); + + // gentest-670 + assertEqual( + perft( + Board(0x5300a80700f800L, 0x4200000000800002L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x580fabbL, 0xff5300a802000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 776716 + ); + + // gentest-671 + assertEqual( + perft( + Board(0x300a80700f800L, 0x4200000000800002L, 0x2400001000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x100580f8bbL, 0xff0300a802000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1365627 + ); + + // gentest-672 + assertEqual( + perft( + Board(0x102a80700f800L, 0x4000000000800002L, 0x2600000000000020L, 0x8100000000000081L, 0x80000008L, + 0x1000000000000010L, 0x20000000580f8bbL, 0xf50102a882000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1007791 + ); + + // gentest-673 + assertEqual( + perft( + Board(0x102a84700b800L, 0x4000000000800002L, 0x2202000000000020L, 0x8100000000000081L, 0x80020000L, + 0x1000000000000010L, 0x20000004582b8b3L, 0xf10302a882000000L, false, 0, 0x8100000000000081L), + 4 + ), + 1538359 + ); + + // gentest-674 + assertEqual( + perft( + Board(0x102a00f00b800L, 0x4000000000800002L, 0x2202000000000020L, 0x8100000000000081L, + 0x200000020000L, 0x1000000000000010L, 0x20000800582b8b3L, 0xf10322200a000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1913479 + ); + + // gentest-675 + assertEqual( + perft( + Board(0x102a00f00b800L, 0x4000000000800002L, 0x2000080800000020L, 0x8100000000000081L, + 0x200000040000L, 0x1000000000000010L, 0x8800584b8b3L, 0xf10122280a000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 2455013 + ); + + // gentest-676 + assertEqual( + perft( + Board(0x102a00f00b800L, 0x10000000000042L, 0x2000080800000020L, 0x8100000000000081L, 0x200000040000L, + 0x800000000000010L, 0x8800504b8f3L, 0xa91122280a000000L, true, 0, 0x81L), + 4 + ), + 2238341 + ); + + // gentest-677 + assertEqual( + perft( + Board(0x102a00f00b800L, 0x10000000200002L, 0x6000080000004000L, 0x8100000000000081L, 0x200000040000L, + 0x800000000000010L, 0x8800524f893L, 0xe91122200a000000L, false, 0, 0x81L), + 4 + ), + 2010203 + ); + + // gentest-678 + assertEqual( + perft( + Board(0x2a10f00b800L, 0x200002L, 0x6010000000004000L, 0x8100000000000081L, 0x200000040000L, + 0x8000000000010L, 0x1000800524f893L, 0xe10822210a000000L, true, 0, 0x81L), + 4 + ), + 1941947 + ); + + // gentest-679 + assertEqual( + perft( + Board(0x2a11f00a800L, 0x200002L, 0x6010000000004000L, 0x8000010000000081L, 0x200000080000L, + 0x8000000000010L, 0x1000801528e893L, 0xe00823210a000000L, false, 0, 0x81L), + 4 + ), + 1511211 + ); + + // gentest-680 + assertEqual( + perft( + Board(0x2a11f00a800L, 0x200002L, 0x2000100000004000L, 0x8000010000000081L, 0x200000020000L, + 0x10000000000010L, 0x801522e893L, 0xa01033210a000000L, true, 0, 0x81L), + 4 + ), + 1044616 + ); + + // gentest-681 + assertEqual( + perft( + Board(0x2211f00a800L, 0x400000000002L, 0x2000100000004000L, 0x18000000081L, 0x200000020000L, + 0x10000000000010L, 0x40001502e893L, 0x201033a10a000000L, false, 0, 0x81L), + 4 + ), + 286832 + ); + + // gentest-682 + assertEqual( + perft( + Board(0x2211f802800L, 0x400000000002L, 0x2000100000004000L, 0x18000000081L, 0x200000020000L, + 0x400000010L, 0x400015826893L, 0x200033a50a000000L, true, 0, 0x81L), + 4 + ), + 1365571 + ); + + // gentest-683 + assertEqual( + perft( + Board(0x2211fa00800L, 0x400000000002L, 0x2000100000000020L, 0x80010000000081L, 0x200000020000L, + 0x400000010L, 0x400015a208b3L, 0x208033250a000000L, false, 0, 0x81L), + 4 + ), + 1333688 + ); + + // gentest-684 + assertEqual( + perft( + Board(0x2211fa00800L, 0x8000000000000002L, 0x2400000000000020L, 0x80010000000081L, 0x4000020000L, + 0x400000010L, 0x8000000015a208b3L, 0x248003650a000000L, true, 0, 0x81L), + 4 + ), + 1133362 + ); + + // gentest-685 + assertEqual( + perft( + Board(0x2211fa00800L, 0x400000000002L, 0x400080000000020L, 0x80010000000081L, 0x4000020000L, + 0x400001000L, 0x400015a218a3L, 0x4800b650a000000L, false, 0, 0x0L), + 4 + ), + 1339193 + ); + + // gentest-686 + assertEqual( + perft( + Board(0x2211fa00800L, 0x400000000002L, 0x400080000000020L, 0x40010000000081L, 0x480000L, 0x400001000L, + 0x400015a818a3L, 0x4400b250a400000L, true, 0, 0x0L), + 4 + ), + 724429 + ); + + // gentest-687 + assertEqual( + perft( + Board(0x2211f800800L, 0x400000000002L, 0x400080000000020L, 0x40010000000041L, 0x280000L, 0x400000010L, + 0x400015880873L, 0x4400b250a200000L, false, 0, 0x0L), + 4 + ), + 941740 + ); + + // gentest-688 + assertEqual( + perft( + Board(0x2211f800800L, 0x400000000002L, 0x400001000000020L, 0x41000000010040L, 0x280000L, 0x400000010L, + 0x400015890872L, 0x44102350a200000L, true, 0, 0x0L), + 4 + ), + 1331284 + ); + + // gentest-689 + assertEqual( + perft( + Board(0x2211f800800L, 0x400000000002L, 0x400001000080000L, 0x40010000010040L, 0x220000L, 0x400000010L, + 0x4000158b0852L, 0x44003350a200000L, false, 0, 0x0L), + 4 + ), + 836880 + ); + + // gentest-690 + assertEqual( + perft( + Board(0x2211f800800L, 0x400000000002L, 0x400001000080000L, 0x40014000010000L, 0x20080L, + 0x80000000010L, 0x4040158b0812L, 0x4400b310a000080L, true, 0, 0x0L), + 4 + ), + 124471 + ); + + // gentest-691 + assertEqual( + perft( + Board(0x2211f800800L, 0x20000002L, 0x400001000080000L, 0x40014000010000L, 0x20080L, 0x40000001000L, + 0x40358b1802L, 0x44007310a000080L, false, 0, 0x0L), + 4 + ), + 831921 + ); + + // gentest-692 + assertEqual( + perft( + Board(0x2211f800800L, 0x20000002L, 0x8001000080000L, 0x40014000010000L, 0x404L, 0x40000001000L, + 0x4035891c02L, 0x4807310a000004L, true, 0, 0x0L), + 4 + ), + 906323 + ); + + // gentest-693 + assertEqual( + perft( + Board(0x2211f800800L, 0x400000000002L, 0x8000020080000L, 0x40014000010000L, 0x40004L, 0x40000001000L, + 0x4040158d1802L, 0x4807212a000004L, false, 0, 0x0L), + 4 + ), + 1037122 + ); + + // gentest-694 + assertEqual( + perft( + Board(0x22117840800L, 0x400000000002L, 0x8000020080000L, 0x40014000010000L, 0x0L, 0x40000000020L, + 0x404015890822L, 0x48072122040000L, true, 0, 0x0L), + 4 + ), + 631726 + ); + + // gentest-695 + assertEqual( + perft( + Board(0x22117800800L, 0x400000000002L, 0x208000000080000L, 0x40010000044000L, 0x0L, 0x40000000020L, + 0x4000158c4822L, 0x248072102000000L, false, 0, 0x0L), + 4 + ), + 501921 + ); + + // gentest-696 + assertEqual( + perft( + Board(0x22117800800L, 0x400000000002L, 0x220000000080000L, 0x40010000440000L, 0x0L, 0x40000000020L, + 0x400015cc0822L, 0x260072102000000L, true, 0, 0x0L), + 4 + ), + 546153 + ); + + // gentest-697 + assertEqual( + perft( + Board(0x22117800800L, 0x400000000002L, 0x220000000080000L, 0x4000010000440000L, 0x0L, 0x40000000010L, + 0x400015cc0812L, 0x4220072102000000L, false, 0, 0x0L), + 4 + ), + 630254 + ); + + // gentest-698 + assertEqual( + perft( + Board(0x23107800800L, 0x2L, 0x220000000080000L, 0x410000440000L, 0x0L, 0x400000010L, 0x1005cc0812L, + 0x220432502000000L, true, 0, 0x0L), + 4 + ), + 398930 + ); + + // gentest-699 + assertEqual( + perft( + Board(0x23107800800L, 0x2L, 0x220000010000000L, 0x100400000040040L, 0x0L, 0x400000010L, 0x1015840852L, + 0x320422502000000L, false, 0, 0x0L), + 4 + ), + 809039 + ); + + // gentest-700 + assertEqual( + perft( + Board(0x21117800800L, 0x2L, 0x220000000000000L, 0x100100000040040L, 0x0L, 0x400000008L, 0x100584084aL, + 0x320120512000000L, true, 0, 0x0L), + 4 + ), + 380530 + ); + + // gentest-701 + assertEqual( + perft( + Board(0x21117800800L, 0x2L, 0x220000000000000L, 0x100040000204000L, 0x0L, 0x400000008L, 0x1005a0480aL, + 0x320060512000000L, false, 0, 0x0L), + 4 + ), + 594908 + ); + + // gentest-702 + assertEqual( + perft( + Board(0x21117800800L, 0x2L, 0x220000000000000L, 0x100040000004000L, 0x0L, 0x80008L, 0x100580480aL, + 0x320060112080000L, true, 0, 0x0L), + 4 + ), + 186885 + ); + + // gentest-703 + assertEqual( + perft( + Board(0x21513800800L, 0x2L, 0x200000800000000L, 0x4100040000000000L, 0x0L, 0x80008L, + 0x400000140180080aL, 0x300060912080000L, false, 0, 0x0L), + 4 + ), + 241871 + ); + + // gentest-704 + assertEqual( + perft( + Board(0x21513800800L, 0x2L, 0x4200000000000000L, 0x100040000004000L, 0x0L, 0x80008L, 0x140180480aL, + 0x4300060112080000L, true, 0, 0x0L), + 4 + ), + 187709 + ); + + // gentest-705 + assertEqual( + perft( + Board(0x21513800800L, 0x10000L, 0x4200000000000000L, 0x104000000008000L, 0x0L, 0x80008L, + 0x1401818808L, 0x4304020112080000L, false, 0, 0x0L), + 4 + ), + 131423 + ); + + // gentest-706 + assertEqual( + perft( + Board(0x21503900800L, 0x200000000L, 0x4200000000000000L, 0x101000000008000L, 0x0L, 0x80008L, + 0x1601808808L, 0x4301020102180000L, true, 0, 0x0L), + 4 + ), + 170907 + ); + + // gentest-707 + assertEqual( + perft( + Board(0x21501920800L, 0x4000000L, 0x4200000000000000L, 0x101000000008000L, 0x0L, 0x80008L, + 0x1405808808L, 0x43010201001a0000L, false, 0, 0x0L), + 4 + ), + 159754 + ); + + // gentest-708 + assertEqual( + perft( + Board(0x1581120800L, 0x4000000L, 0x280000000000000L, 0x101000000008000L, 0x0L, 0x80008L, + 0x1085008808L, 0x3810005001a0000L, true, 0, 0x0L), + 4 + ), + 112040 + ); + + // gentest-709 + assertEqual( + perft( + Board(0x1581120800L, 0x4000000L, 0x280000000000000L, 0x101000000008000L, 0x0L, 0x8000008L, + 0x1085008808L, 0x381000508120000L, false, 0, 0x0L), + 4 + ), + 171137 + ); + + // gentest-710 + assertEqual( + perft( + Board(0x1581120800L, 0x4000000L, 0x84000000000000L, 0x140000000002000L, 0x0L, 0x8000008L, + 0x1085002808L, 0x1c4000508120000L, true, 0, 0x0L), + 4 + ), + 556785 + ); + + // gentest-711 + assertEqual( + perft( + Board(0x1481120800L, 0x4000000L, 0x4002000000000L, 0x140000000002000L, 0x0L, 0x8000008L, + 0x1085002808L, 0x144002408120000L, false, 0, 0x0L), + 4 + ), + 710752 + ); + + // gentest-712 + assertEqual( + perft( + Board(0x1481120800L, 0x4000000L, 0x4000010000000L, 0x140000000000020L, 0x0L, 0x80008L, 0x1085000828L, + 0x1440004101a0000L, true, 0, 0x0L), + 4 + ), + 663724 + ); + + // gentest-713 + assertEqual( + perft( + Board(0x1481100a00L, 0x20000000000L, 0x4000010000000L, 0x140002000000000L, 0x0L, 0x80008L, + 0x23081000808L, 0x144000410180200L, false, 0, 0x0L), + 4 + ), + 488211 + ); + + // gentest-714 + assertEqual( + perft( + Board(0x100481100a00L, 0x20000000000L, 0x4000010000000L, 0x140002000000000L, 0x0L, 0x80008L, + 0x122081000808L, 0x144000410180200L, true, 0, 0x0L), + 4 + ), + 716501 + ); + + // gentest-715 + assertEqual( + perft( + Board(0x100481100a00L, 0x20000000000L, 0x4000010000000L, 0x140000000001000L, 0x0L, 0x8000008L, + 0x120081001808L, 0x144000418100200L, false, 0, 0x0L), + 4 + ), + 522561 + ); + + // gentest-716 + assertEqual( + perft( + Board(0x108401100a00L, 0x20000000000L, 0x4000800000000L, 0x41000000001000L, 0x0L, 0x8000008L, + 0x128001001808L, 0x45000c08100200L, true, 0, 0x0L), + 4 + ), + 463155 + ); + + // gentest-717 + assertEqual( + perft( + Board(0x108500100a00L, 0x8000000000000L, 0x1800000000L, 0x41000000001000L, 0x0L, 0x8000008L, + 0x8108100001808L, 0x41001c08100200L, false, 0, 0x0L), + 4 + ), + 485603 + ); + + // gentest-718 + assertEqual( + perft( + Board(0x108104100a00L, 0x8000000000000L, 0x1800000000L, 0x81000000004000L, 0x0L, 0x8000008L, + 0x8108100004808L, 0x8100180c100200L, true, 0, 0x0L), + 4 + ), + 650532 + ); + + // gentest-719 + assertEqual( + perft( + Board(0x108104180200L, 0x8000000000000L, 0x41000000000L, 0x81000000001000L, 0x0L, 0x8000008L, + 0x8108100081008L, 0x8104100c100200L, false, 0, 0x0L), + 4 + ), + 534017 + ); + + // gentest-720 + assertEqual( + perft( + Board(0x108004180200L, 0x8000000000000L, 0x41000000000L, 0x40000100000800L, 0x0L, 0x8000008L, + 0x8108000080808L, 0x4004110c100200L, true, 0, 0x0L), + 4 + ), + 621807 + ); + + // gentest-721 + assertEqual( + perft( + Board(0x108004180200L, 0x8000000000000L, 0x41000000000L, 0x4000000100000800L, 0x0L, 0x8000008L, + 0x8108000080808L, 0x400004110c100200L, false, 0, 0x0L), + 4 + ), + 663557 + ); + + // gentest-722 + assertEqual( + perft( + Board(0x108004180200L, 0x8000000000000L, 0x41000000000L, 0x40000100000800L, 0x0L, 0x8000010L, + 0x8108000080810L, 0x4004110c100200L, true, 0, 0x0L), + 4 + ), + 677830 + ); + + // gentest-723 + assertEqual( + perft( + Board(0x10008004180000L, 0x8000000000000L, 0x41000000000L, 0x40000100000800L, 0x2L, 0x8001000L, + 0x18008000081800L, 0x4004110c100002L, false, 0, 0x0L), + 4 + ), + 732001 + ); + + // gentest-724 + assertEqual( + perft( + Board(0x10008004180000L, 0x8000000000000L, 0x200040000000000L, 0x40000100000800L, 0x0L, 0x8000010L, + 0x18008000080810L, 0x24004010c100000L, true, 0, 0x0L), + 4 + ), + 943368 + ); + + // gentest-725 + assertEqual( + perft( + Board(0x10008004001000L, 0x1000000000L, 0x200040000000000L, 0x40000100000800L, 0x0L, 0x8000010L, + 0x10009004000810L, 0x240040108001000L, false, 0, 0x0L), + 4 + ), + 93562 + ); + + // gentest-726 + assertEqual( + perft( + Board(0x10008004001000L, 0x0L, 0x200040000000000L, 0x400100000800L, 0x0L, 0x1000002000L, + 0x10008004002800L, 0x200441100001000L, true, 0, 0x0L), + 4 + ), + 510503 + ); + + // gentest-727 + assertEqual( + perft( + Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x2400100000000L, 0x0L, 0x1000002000L, + 0x12008004002000L, 0x1200401100001000L, false, 0, 0x0L), + 4 + ), + 411283 + ); + + // gentest-728 + assertEqual( + perft( + Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x40000001000002L, 0x0L, 0x1000002000L, + 0x10008004002002L, 0x1240001001001000L, true, 0, 0x0L), + 4 + ), + 430917 + ); + + // gentest-729 + assertEqual( + perft( + Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x40000000010400L, 0x0L, 0x1000002000L, + 0x10008004002400L, 0x1240001000011000L, false, 0, 0x0L), + 4 + ), + 225320 + ); + + // gentest-730 + assertEqual( + perft( + Board(0x10008004001000L, 0x0L, 0x200400000000000L, 0x40000000010400L, 0x0L, 0x10000010L, + 0x10008004000410L, 0x240400010011000L, true, 0, 0x0L), + 4 + ), + 249515 + ); + + // gentest-731 + assertEqual( + perft( + Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x40000000010800L, 0x0L, 0x10002000L, + 0x10008004002800L, 0x1240000010011000L, false, 0, 0x0L), + 4 + ), + 331202 + ); + + // gentest-732 + assertEqual( + perft( + Board(0x10008004001000L, 0x0L, 0x1200000000000000L, 0x400000010000L, 0x0L, 0x8002000L, + 0x10008004002000L, 0x1200400008011000L, true, 0, 0x0L), + 4 + ), + 57202 + ); + + // gentest-733 + assertEqual( + perft( + Board(0x8400001000L, 0x0L, 0x220000000000000L, 0x400000010000L, 0x1000000000000000L, 0x8002000L, + 0x1000008400002000L, 0x220400008011000L, false, 0, 0x0L), + 4 + ), + 666227 + ); + + // gentest-734 + assertEqual( + perft( + Board(0x8400001000L, 0x0L, 0x220000000000000L, 0x10010000L, 0x1000000000000000L, 0x8004000L, + 0x1000008400004000L, 0x220000018011000L, true, 0, 0x0L), + 4 + ), + 450064 + ); + + // gentest-735 + assertEqual( + perft( + Board(0x8000001000L, 0x0L, 0x220000000000000L, 0x10010000L, 0x4000000000000L, 0x400004000L, + 0x4008000004000L, 0x220000410011000L, false, 0, 0x0L), + 4 + ), + 68691 + ); + + // gentest-736 + assertEqual( + perft( + Board(0x8000001000L, 0x0L, 0x220000000000000L, 0x20010000L, 0x8000L, 0x800004000L, 0x800000c000L, + 0x220000820011000L, true, 0, 0x0L), + 4 + ), + 212940 + ); + + // gentest-737 + assertEqual( + perft( + Board(0x8000001000L, 0x0L, 0x1200000000000000L, 0x10000L, 0x8000000L, 0x800004000L, 0x8008004000L, + 0x1200000800011000L, false, 0, 0x0L), + 4 + ), + 35998 + ); + + // gentest-738 + assertEqual( + perft( + Board(0x800000001000L, 0x0L, 0x1000000000400000L, 0x10000L, 0x0L, 0x8004000L, 0x800000004000L, + 0x1000000008411000L, true, 0, 0x0L), + 4 + ), + 23341 + ); + + // gentest-739 + assertEqual( + perft( + Board(0x800000001000L, 0x0L, 0x1000000000400000L, 0x200000L, 0x0L, 0x8000080L, 0x800000000080L, + 0x1000000008601000L, false, 0, 0x0L), + 4 + ), + 18544 + ); + + // gentest-740 + assertEqual( + perft( + Board(0x800000001000L, 0x0L, 0x1004000000000000L, 0x20000000L, 0x0L, 0x8004000L, 0x800000004000L, + 0x1004000028001000L, true, 0, 0x0L), + 4 + ), + 33632 + ); + + // gentest-741 + assertEqual( + perft( + Board(0x80000000000000L, 0x10L, 0x1004000000000000L, 0x20000000L, 0x0L, 0x8008000L, 0x80000000008000L, + 0x1004000028000010L, false, 0, 0x0L), + 4 + ), + 48020 + ); + + // gentest-742 + assertEqual( + perft( + Board(0x80000000000000L, 0x10L, 0x1004000000000000L, 0x2000L, 0x0L, 0x1000000040L, 0x80000000000040L, + 0x1004001000002010L, true, 0, 0x0L), + 4 + ), + 32729 + ); + + // gentest-743 + assertEqual( + perft( + Board(0x0L, 0x10L, 0x24000000000000L, 0x400000000002000L, 0x0L, 0x1000000040L, 0x400000000000040L, + 0x24001000002010L, false, 0, 0x0L), + 4 + ), + 159834 + ); + + // gentest-744 + assertEqual( + perft( + Board(0x0L, 0x10L, 0x2000000000L, 0x4000000002000L, 0x0L, 0x1000000040L, 0x4000000000040L, + 0x3000002010L, true, 0, 0x0L), + 4 + ), + 161706 + ); + + // gentest-745 + assertEqual( + perft( + Board(0x0L, 0x10L, 0x2000000000L, 0x400000000002000L, 0x0L, 0x100000000080L, 0x400000000000080L, + 0x102000002010L, false, 0, 0x0L), + 4 + ), + 137131 + ); + + // gentest-746 + assertEqual( + perft( + Board(0x0L, 0x10L, 0x2000000000L, 0x2000L, 0x0L, 0x40000000080L, 0x80L, 0x42000002010L, true, 0, + 0x0L), + 4 + ), + 1905 + ); + + // gentest-747 + assertEqual( + perft( + Board(0x0L, 0x10L, 0x2000000000L, 0x0L, 0x0L, 0x800002000L, 0x2000L, 0x2800000010L, false, 0, 0x0L), + 4 + ), + 12275 + ); + + // gentest-748 + assertEqual( + perft(Board(0x0L, 0x10L, 0x2L, 0x0L, 0x0L, 0x400000020L, 0x20L, 0x400000012L, true, 0, 0x0L), 4), + 6792 + ); + + // gentest-749 + assertEqual( + perft(Board(0x0L, 0x10L, 0x2L, 0x0L, 0x0L, 0x8002000L, 0x2000L, 0x8000012L, false, 0, 0x0L), 4), + 7835 + ); + + // gentest-750 + assertEqual( + perft(Board(0x0L, 0x10L, 0x400L, 0x0L, 0x0L, 0x800000040L, 0x40L, 0x800000410L, true, 0, 0x0L), 4), + 6072 + ); + + // gentest-751 + assertEqual( + perft( + Board(0x0L, 0x10L, 0x10000000L, 0x0L, 0x0L, 0x800400000L, 0x400000L, 0x810000010L, false, 0, 0x0L), + 4 + ), + 10487 + ); + + // gentest-752 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-753 + assertEqual( + perft( + Board(0xff00000900f600L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x900f6ffL, 0xbfff800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 390277 + ); + + // gentest-754 + assertEqual( + perft( + Board(0xef00101900e600L, 0x200002000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1900e6ffL, 0xbfef003000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1729845 + ); + + // gentest-755 + assertEqual( + perft( + Board(0xef00101900e600L, 0x200000000100042L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000001000L, 0x1000000000000010L, 0x3900f6f3L, 0xbfef001000100000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1592016 + ); + + // gentest-756 + assertEqual( + perft( + Board(0xef00101900e600L, 0x200000000000062L, 0x2400000020000000L, 0x4100000000000081L, + 0x800000000080000L, 0x1000000000000010L, 0x3908e6d3L, 0x7fef001000000020L, true, 0, + 0x100000000000081L), + 4 + ), + 1904130 + ); + + // gentest-757 + assertEqual( + perft( + Board(0xe708101900e600L, 0x200000000000062L, 0x2400000000000800L, 0x4100000000000081L, + 0x800000000080000L, 0x1000000000000010L, 0x1908eed3L, 0x7fe7081000000020L, false, 0, + 0x100000000000081L), + 4 + ), + 2081723 + ); + + // gentest-758 + assertEqual( + perft( + Board(0xe508121900e600L, 0x10000000042L, 0x2400000000000800L, 0x4100000000000081L, 0x800000000080000L, + 0x1000000000000020L, 0x1908eee3L, 0x7de5091200000000L, true, 0, 0x100000000000000L), + 4 + ), + 1630302 + ); + + // gentest-759 + assertEqual( + perft( + Board(0xe508121900e600L, 0x10000040040L, 0x2400004000000000L, 0x4100000000000081L, 0x80080000L, + 0x1000000000000020L, 0x40190ce6e1L, 0x75e5091280000000L, false, 0, 0x100000000000000L), + 4 + ), + 2173716 + ); + + // gentest-760 + assertEqual( + perft( + Board(0xe5081019006600L, 0x10200000040L, 0x2400004000000000L, 0x4100000000000001L, 0x80080L, + 0x1000000000000020L, 0x4219086661L, 0x75e5091000000080L, true, 0, 0x100000000000000L), + 4 + ), + 1487011 + ); + + // gentest-761 + assertEqual( + perft( + Board(0xe5081019006600L, 0x10200000040L, 0x410004000000000L, 0x4100000000000001L, 0x80000080L, + 0x1000000000000020L, 0x4299006661L, 0x55f5091000000080L, false, 0, 0x100000000000000L), + 4 + ), + 1490246 + ); + + // gentest-762 + assertEqual( + perft( + Board(0xe5081019006600L, 0x10200000040L, 0x410004000000000L, 0x4100000000000001L, 0x8080L, + 0x1000000000000020L, 0x421900e661L, 0x55f5091000000080L, true, 0, 0x100000000000000L), + 4 + ), + 1463119 + ); + + // gentest-763 + assertEqual( + perft( + Board(0xc5281011046200L, 0x10200000040L, 0x410004000000000L, 0x4100000000000001L, 0x8080L, + 0x1000000000000020L, 0x521104e261L, 0x55d5290000000080L, false, 0, 0x100000000000000L), + 4 + ), + 1176938 + ); + + // gentest-764 + assertEqual( + perft( + Board(0xc5281011046200L, 0x10200000040L, 0x800004040000000L, 0x4100000000000004L, 0x8080L, + 0x1000000000000020L, 0x521104e264L, 0x59c5290040000080L, true, 0, 0x100000000000000L), + 4 + ), + 1103649 + ); + + // gentest-765 + assertEqual( + perft( + Board(0xc5081011442200L, 0x10200000040L, 0xc00200000000000L, 0x4100000000000004L, 0x8080L, + 0x1000000000000020L, 0x20121144a264L, 0x5dc5090000000080L, false, 0, 0x100000000000000L), + 4 + ), + 845727 + ); + + // gentest-766 + assertEqual( + perft( + Board(0xc5081011442200L, 0x10200000040L, 0x400200000000000L, 0x4100000000000004L, 0x800080L, + 0x10000000000020L, 0x1211c42264L, 0x45d5290000000080L, true, 0, 0x0L), + 4 + ), + 1076320 + ); + + // gentest-767 + assertEqual( + perft( + Board(0xc5081110442200L, 0x10200000040L, 0x400000080000000L, 0x4100000000000004L, 0x100000000080L, + 0x10000000000020L, 0x101310442264L, 0x45d5090080000080L, false, 0, 0x0L), + 4 + ), + 81989 + ); + + // gentest-768 + assertEqual( + perft( + Board(0xc5081110442200L, 0x10200000040L, 0x400200000000000L, 0x4100000000000004L, 0x80L, + 0x2000000000000020L, 0x1310442264L, 0x65c5290000000080L, true, 0, 0x0L), + 4 + ), + 526835 + ); + + // gentest-769 + assertEqual( + perft( + Board(0xc5001110442200L, 0x90000000040L, 0x400200000000000L, 0x4100000000000004L, 0x4000L, + 0x2000000000000010L, 0x81110442254L, 0x65c5210000004000L, false, 0, 0x0L), + 4 + ), + 525365 + ); + + // gentest-770 + assertEqual( + perft( + Board(0xc5001110442200L, 0x90000000040L, 0x300000000000L, 0x4200000000000008L, 0x4000L, + 0x2000000000000010L, 0x81110442258L, 0x62c5310000004000L, true, 0, 0x0L), + 4 + ), + 1148563 + ); + + // gentest-771 + assertEqual( + perft( + Board(0xc5001110442200L, 0x12000000040L, 0x300000000000L, 0x4200000000000002L, 0x8000L, + 0x2000000000000010L, 0x3110442252L, 0x62c5310000008000L, false, 0, 0x0L), + 4 + ), + 915715 + ); + + // gentest-772 + assertEqual( + perft( + Board(0xc5001110442200L, 0x12000000040L, 0x104000000000L, 0x4200000000000001L, 0x8000L, + 0x20000000000010L, 0x3110442251L, 0x42e5114000008000L, true, 0, 0x0L), + 4 + ), + 1251801 + ); + + // gentest-773 + assertEqual( + perft( + Board(0xc5001110640200L, 0x12000000040L, 0x104000000000L, 0x4100000000010000L, 0x8000L, + 0x20000000000010L, 0x3110650250L, 0x41e5114000008000L, false, 0, 0x0L), + 4 + ), + 731549 + ); + + // gentest-774 + assertEqual( + perft( + Board(0xc5001110640200L, 0x12000000040L, 0x104000000000L, 0x300000000000001L, 0x4000L, + 0x20000000000010L, 0x3110640251L, 0x3e5114000004000L, true, 0, 0x0L), + 4 + ), + 813221 + ); + + // gentest-775 + assertEqual( + perft( + Board(0xc5001110660000L, 0x12000001000L, 0x104000000000L, 0x900000000000001L, 0x4000L, + 0x20000000000010L, 0x3110661011L, 0x9e5114000004000L, false, 0, 0x0L), + 4 + ), + 742625 + ); + + // gentest-776 + assertEqual( + perft( + Board(0x45801110660000L, 0x12000001000L, 0x104000000000L, 0x1100000000000002L, 0x4000L, + 0x20000000000010L, 0x3110661012L, 0x1165914000004000L, true, 0, 0x0L), + 4 + ), + 573582 + ); + + // gentest-777 + assertEqual( + perft( + Board(0x45801110660000L, 0x12000001000L, 0x104000000000L, 0x300000000000002L, 0x4000L, + 0x20000000000400L, 0x3110661402L, 0x365914000004000L, false, 0, 0x0L), + 4 + ), + 826913 + ); + + // gentest-778 + assertEqual( + perft( + Board(0x45801114620000L, 0x12000001000L, 0x100000100000L, 0x100000200000002L, 0x4000L, + 0x20000000000400L, 0x3114621402L, 0x165910200104000L, true, 0, 0x0L), + 4 + ), + 1200208 + ); + + // gentest-779 + assertEqual( + perft( + Board(0x45801154220000L, 0x12000001000L, 0x100000100000L, 0x4000000200000002L, 0x4000L, + 0x20000000080000L, 0x31542a1002L, 0x4065910200104000L, false, 0, 0x0L), + 4 + ), + 1459426 + ); + + // gentest-780 + assertEqual( + perft( + Board(0x45801154220000L, 0x12000001000L, 0x100000100000L, 0x200000200000200L, 0x8000L, + 0x20000000080000L, 0x31542a1200L, 0x265910200108000L, true, 0, 0x0L), + 4 + ), + 1312957 + ); + + // gentest-781 + assertEqual( + perft( + Board(0x45801154220000L, 0x10000401000L, 0x100008000000L, 0x200000200000200L, 0x8000L, + 0x20000000000400L, 0x1154621600L, 0x265910208008000L, false, 0, 0x0L), + 4 + ), + 756019 + ); + + // gentest-782 + assertEqual( + perft( + Board(0x45805110220000L, 0x10000401000L, 0xc000000L, 0x800000200000200L, 0x8000L, 0x20000000000400L, + 0x5110621600L, 0x86581020c008000L, true, 0, 0x0L), + 4 + ), + 664806 + ); + + // gentest-783 + assertEqual( + perft( + Board(0x45904110220000L, 0x10000401000L, 0xc000000L, 0x800000400000002L, 0x8000L, 0x20000000000400L, + 0x104110621402L, 0x86581040c008000L, false, 0, 0x0L), + 4 + ), + 116813 + ); + + // gentest-784 + assertEqual( + perft( + Board(0x45904110220000L, 0x10000401000L, 0xc000000L, 0x800000200000004L, 0x8000L, 0x400000000400L, + 0x104110621404L, 0x845c1020c008000L, true, 0, 0x0L), + 4 + ), + 1126348 + ); + + // gentest-785 + assertEqual( + perft( + Board(0x45904110220000L, 0x10000401000L, 0xc000000L, 0x800000200000004L, 0x8000000000L, + 0x400000000400L, 0x104110621404L, 0x845c1820c000000L, false, 0, 0x0L), + 4 + ), + 1261196 + ); + + // gentest-786 + assertEqual( + perft( + Board(0x45904110220000L, 0x10000401000L, 0x8080000L, 0x800000200000004L, 0x40000000L, 0x400000000800L, + 0x104110621804L, 0x845c10248080000L, true, 0, 0x0L), + 4 + ), + 2029965 + ); + + // gentest-787 + assertEqual( + perft( + Board(0x45905100220000L, 0x10000401000L, 0x8080000L, 0x800000400000004L, 0x40000000L, 0x400000000008L, + 0x10510062100cL, 0x845c10448080000L, false, 0, 0x0L), + 4 + ), + 982370 + ); + + // gentest-788 + assertEqual( + perft( + Board(0x45904140020000L, 0x10000401000L, 0x80000080000L, 0x800000400000004L, 0x0L, 0x400000000008L, + 0x10414042100cL, 0x845c90400080000L, true, 0, 0x0L), + 4 + ), + 528837 + ); + + // gentest-789 + assertEqual( + perft( + Board(0x45904140020000L, 0x10000001080L, 0x82000000000L, 0x800000404000000L, 0x0L, 0x400000000008L, + 0x104144021088L, 0x845c92400000000L, false, 0, 0x0L), + 4 + ), + 395355 + ); + + // gentest-790 + assertEqual( + perft( + Board(0x45904140020000L, 0x10000001080L, 0x2008000000L, 0x800000404000000L, 0x0L, 0x400000000004L, + 0x104144021084L, 0x845c12408000000L, true, 0, 0x0L), + 4 + ), + 299385 + ); + + // gentest-791 + assertEqual( + perft( + Board(0x45900140020000L, 0x10000001080L, 0x2008000000L, 0x800040004000000L, 0x0L, 0x400000000800L, + 0x900144021880L, 0x845452008000000L, false, 0, 0x0L), + 4 + ), + 563613 + ); + + // gentest-792 + assertEqual( + perft( + Board(0x45900140020000L, 0x400400080L, 0x8080000L, 0x800040004000000L, 0x0L, 0x400000000800L, + 0x900144420880L, 0x845440408080000L, true, 0, 0x0L), + 4 + ), + 787111 + ); + + // gentest-793 + assertEqual( + perft( + Board(0x45904100020000L, 0x400402000L, 0x8080000L, 0x200040004000000L, 0x0L, 0x400000000800L, + 0x904104422800L, 0x245440408080000L, false, 0, 0x0L), + 4 + ), + 1045754 + ); + + // gentest-794 + assertEqual( + perft( + Board(0xc5104100020000L, 0x400402000L, 0x8080000L, 0x200040004000000L, 0x0L, 0x400000000800L, + 0x80104104422800L, 0x245440408080000L, true, 0, 0x0L), + 4 + ), + 1114960 + ); + + // gentest-795 + assertEqual( + perft( + Board(0x45104100020000L, 0x1480000L, 0x8000000008000000L, 0x200040004000000L, 0x0L, 0x400000000800L, + 0x80001041044a0800L, 0x245440009000000L, false, 0, 0x0L), + 4 + ), + 955027 + ); + + // gentest-796 + assertEqual( + perft( + Board(0x45104100020000L, 0x1480000L, 0x8000000000000200L, 0x400040002000000L, 0x0L, 0x400000000800L, + 0x80001041024a0800L, 0x445440001000200L, true, 0, 0x0L), + 4 + ), + 682484 + ); + + // gentest-797 + assertEqual( + perft( + Board(0x45104100020000L, 0x1080080L, 0x8000000000000200L, 0x2002040000000000L, 0x0L, 0x400000000800L, + 0x80021041000a0880L, 0x2045440001000200L, false, 0, 0x0L), + 4 + ), + 627496 + ); + + // gentest-798 + assertEqual( + perft( + Board(0x44100100020000L, 0x1080080L, 0x8000000000000200L, 0x1001040000000000L, 0x0L, 0x4000000800L, + 0x80011001000a0880L, 0x1044044001000200L, true, 0, 0x0L), + 4 + ), + 577005 + ); + + // gentest-799 + assertEqual( + perft( + Board(0x4510000020000L, 0x1000090L, 0x8000000000000200L, 0x1001040000000000L, 0x0L, 0x4000000800L, + 0x8001110000020890L, 0x1004444001000200L, false, 0, 0x0L), + 4 + ), + 439712 + ); + + // gentest-800 + assertEqual( + perft( + Board(0x4510000020000L, 0x20000000090L, 0x8000000000000200L, 0x1001040000000000L, 0x0L, 0x40000008L, + 0x8001110000020098L, 0x1004460040000200L, true, 0, 0x0L), + 4 + ), + 442552 + ); + + def batch2(): Unit = + // gentest-801 + assertEqual( + perft( + Board(0x4510000020000L, 0x20000080080L, 0x1000000200L, 0x1001000400000000L, 0x0L, 0x40000008L, + 0x11110000a0088L, 0x1004420440000200L, false, 0, 0x0L), + 4 + ), + 895695 + ); + + // gentest-802 + assertEqual( + perft( + Board(0x4510000020000L, 0x20000080080L, 0x1000000001L, 0x2001000400000000L, 0x0L, 0x40000010L, + 0x11110000a0090L, 0x2004420440000001L, true, 0, 0x0L), + 4 + ), + 993462 + ); + + // gentest-803 + assertEqual( + perft( + Board(0x4510000020000L, 0x20000080080L, 0x8000000000000001L, 0x2001000000040000L, 0x0L, 0x40001000L, + 0x80011100000a1080L, 0x2004420040040001L, false, 0, 0x0L), + 4 + ), + 627264 + ); + + // gentest-804 + assertEqual( + perft( + Board(0x4510000020000L, 0x20000082000L, 0x8000000000000001L, 0x1000000040000L, 0x0L, 0x2000001000L, + 0x80011100000a3000L, 0x4422000040001L, true, 0, 0x0L), + 4 + ), + 323289 + ); + + // gentest-805 + assertEqual( + perft( + Board(0x4510000020000L, 0x20000082000L, 0x40001L, 0x1000004000000L, 0x0L, 0x2000100000L, + 0x11100001e2000L, 0x4422004000001L, false, 0, 0x0L), + 4 + ), + 364371 + ); + + // gentest-806 + assertEqual( + perft( + Board(0x4510000020000L, 0x100000000082000L, 0x801L, 0x1000002000000L, 0x0L, 0x2000100000L, + 0x11100001a2800L, 0x104402002000001L, true, 0, 0x0L), + 4 + ), + 275169 + ); + + // gentest-807 + assertEqual( + perft( + Board(0x550000020000L, 0x100000000002004L, 0x40001L, 0x1000002000000L, 0x0L, 0x2000100000L, + 0x1110000162004L, 0x100442002000001L, false, 0, 0x0L), + 4 + ), + 337483 + ); + + // gentest-808 + assertEqual( + perft( + Board(0x154000020000L, 0x4000000002004L, 0x40001L, 0x1000002000000L, 0x0L, 0x2000001000L, + 0x1110000063004L, 0x4046002000001L, true, 0, 0x0L), + 4 + ), + 495482 + ); + + // gentest-809 + assertEqual( + perft( + Board(0x154000020000L, 0x1000000000000084L, 0x40001L, 0x1000002000000L, 0x0L, 0x2000000800L, + 0x1110000060884L, 0x1000046002000001L, false, 0, 0x0L), + 4 + ), + 392706 + ); + + // gentest-810 + assertEqual( + perft( + Board(0x154000020000L, 0x1000000000080080L, 0x40001L, 0x1000004000000L, 0x0L, 0x2000000800L, + 0x11100000e0880L, 0x1000046004000001L, true, 0, 0x0L), + 4 + ), + 474259 + ); + + // gentest-811 + assertEqual( + perft( + Board(0x154000020000L, 0x1000000000000480L, 0x40001L, 0x1000010000000L, 0x0L, 0x2000000800L, + 0x1110000060c80L, 0x1000046010000001L, false, 0, 0x0L), + 4 + ), + 375337 + ); + + // gentest-812 + assertEqual( + perft( + Board(0x54000020000L, 0x1000000000400400L, 0x40001L, 0x1000001000000L, 0x0L, 0x100000000800L, + 0x1010000460c00L, 0x1000144001000001L, true, 0, 0x0L), + 4 + ), + 485800 + ); + + // gentest-813 + assertEqual( + perft( + Board(0x54000020000L, 0x1000000000000420L, 0x40001L, 0x1000001000000L, 0x0L, 0x2000001000L, + 0x1010000061420L, 0x1000046001000001L, false, 0, 0x0L), + 4 + ), + 548022 + ); + + // gentest-814 + assertEqual( + perft( + Board(0x54000020000L, 0x1000000000000420L, 0x40001L, 0x80000001000000L, 0x0L, 0x2000001000L, + 0x80010000061420L, 0x1000046001000001L, true, 0, 0x0L), + 4 + ), + 781489 + ); + + // gentest-815 + assertEqual( + perft( + Board(0x54000020000L, 0x1000000000400400L, 0x40001L, 0x20008000L, 0x0L, 0x2000001000L, 0x10000469400L, + 0x1000046020000001L, false, 0, 0x0L), + 4 + ), + 86862 + ); + + // gentest-816 + assertEqual( + perft( + Board(0x54000020000L, 0x80000400400L, 0x801L, 0x20008000L, 0x0L, 0x100000001000L, 0x10000429c00L, + 0x1c4020000001L, true, 0, 0x0L), + 4 + ), + 1080330 + ); + + // gentest-817 + assertEqual( + perft( + Board(0x54002000000L, 0x80000400400L, 0x1000000800L, 0x8020000000L, 0x0L, 0x100000001000L, + 0x18002401c00L, 0x1c5020000000L, false, 0, 0x0L), + 4 + ), + 872153 + ); + + // gentest-818 + assertEqual( + perft( + Board(0x54002000000L, 0x2000000410000L, 0x1000000800L, 0x8000002000L, 0x0L, 0x100000001000L, + 0x18002411800L, 0x2145000002000L, true, 0, 0x0L), + 4 + ), + 129359 + ); + + // gentest-819 + assertEqual( + perft( + Board(0x54002000000L, 0x2000000400400L, 0x1000000800L, 0x8000002000L, 0x0L, 0x20000000000008L, + 0x18002400c08L, 0x22045000002000L, false, 0, 0x0L), + 4 + ), + 831422 + ); + + // gentest-820 + assertEqual( + perft( + Board(0x54002000000L, 0x2000000400400L, 0x8000000000000800L, 0x2000L, 0x0L, 0x2000000000000008L, + 0x10002400c08L, 0xa002044000002000L, true, 0, 0x0L), + 4 + ), + 336313 + ); + + // gentest-821 + assertEqual( + perft( + Board(0x54002000000L, 0x2000000010020L, 0x200000000800L, 0x2000L, 0x0L, 0x2000000000000008L, + 0x10002010828L, 0x2002244000002000L, false, 0, 0x0L), + 4 + ), + 272058 + ); + + // gentest-822 + assertEqual( + perft( + Board(0x54002000000L, 0x800000000010020L, 0x8000000000000800L, 0x2000L, 0x0L, 0x2000000000000004L, + 0x10002010824L, 0xa800044000002000L, true, 0, 0x0L), + 4 + ), + 217778 + ); + + // gentest-823 + assertEqual( + perft( + Board(0x54200000000L, 0x800000000010020L, 0x40800L, 0x2000L, 0x0L, 0x2000000000000008L, + 0x10200010828L, 0x2800044000042000L, false, 0, 0x0L), + 4 + ), + 295741 + ); + + // gentest-824 + assertEqual( + perft( + Board(0x54200000000L, 0x800000000010020L, 0x40000002000000L, 0x2000L, 0x0L, 0x20000000000008L, + 0x10202010028L, 0x860044000002000L, true, 0, 0x0L), + 4 + ), + 357128 + ); + + // gentest-825 + assertEqual( + perft( + Board(0x74000000000L, 0x800000000010020L, 0x50000000000000L, 0x200000000000L, 0x0L, 0x20000000000008L, + 0x10030000010028L, 0x860244000000000L, false, 0, 0x0L), + 4 + ), + 193649 + ); + + // gentest-826 + assertEqual( + perft( + Board(0x74000000000L, 0x800000000010020L, 0x10000000000200L, 0x80000000000L, 0x0L, 0x20000000001000L, + 0x10030000011020L, 0x8200c4000000200L, true, 0, 0x0L), + 4 + ), + 283609 + ); + + // gentest-827 + assertEqual( + perft( + Board(0x74000000000L, 0x800000000410000L, 0x10000000000200L, 0x8000000L, 0x0L, 0x20000000000010L, + 0x10030000410010L, 0x820044008000200L, false, 0, 0x0L), + 4 + ), + 305189 + ); + + // gentest-828 + assertEqual( + perft( + Board(0x74000000000L, 0x800000000410000L, 0x10000000000200L, 0x1000000L, 0x0L, 0x40000000002000L, + 0x10030000412000L, 0x840044001000200L, true, 0, 0x0L), + 4 + ), + 386364 + ); + + // gentest-829 + assertEqual( + perft( + Board(0x74000000000L, 0x800008000010000L, 0x200400000000L, 0x1000000L, 0x0L, 0x40000000002000L, + 0x38400012000L, 0x840244001000000L, false, 0, 0x0L), + 4 + ), + 79514 + ); + + // gentest-830 + assertEqual( + perft( + Board(0x74000000000L, 0x800008000010000L, 0x10200000000000L, 0x4000000L, 0x0L, 0x20000000002000L, + 0x10038000012000L, 0x820244004000000L, true, 0, 0x0L), + 4 + ), + 351284 + ); + + // gentest-831 + assertEqual( + perft( + Board(0x74000000000L, 0x800008200000000L, 0x10200000000000L, 0x400000000L, 0x0L, 0x20000000000040L, + 0x10038200000040L, 0x820244400000000L, false, 0, 0x0L), + 4 + ), + 245958 + ); + + // gentest-832 + assertEqual( + perft( + Board(0x74000000000L, 0x801008000000000L, 0x10200000000000L, 0x800000L, 0x0L, 0x20000000000040L, + 0x11038000000040L, 0x820244000800000L, true, 0, 0x0L), + 4 + ), + 228750 + ); + + // gentest-833 + assertEqual( + perft( + Board(0x74000000000L, 0x801000000001000L, 0x10200000000000L, 0x20000L, 0x0L, 0x20000000000040L, + 0x11030000001040L, 0x820244000020000L, false, 0, 0x0L), + 4 + ), + 313040 + ); + + // gentest-834 + assertEqual( + perft( + Board(0x74000000000L, 0x801000000040000L, 0x10200000000000L, 0x200000000L, 0x0L, 0x1000000000000040L, + 0x11030000040040L, 0x1800244200000000L, true, 0, 0x0L), + 4 + ), + 267416 + ); + + // gentest-835 + assertEqual( + perft( + Board(0x74000000000L, 0x801000000001000L, 0x10200000000000L, 0x2000000000L, 0x0L, 0x1000000000000080L, + 0x11030000001080L, 0x1800246000000000L, false, 0, 0x0L), + 4 + ), + 231027 + ); + + // gentest-836 + assertEqual( + perft( + Board(0x74000000000L, 0x21000000001000L, 0x280000000000L, 0x200000L, 0x0L, 0x1000000000000080L, + 0x10b0000001080L, 0x1020244000200000L, true, 0, 0x0L), + 4 + ), + 396185 + ); + + // gentest-837 + assertEqual( + perft( + Board(0x74000000000L, 0x21000000400000L, 0x200000010000L, 0x200000L, 0x0L, 0x800000000000080L, + 0x1030000410080L, 0x820244000200000L, false, 0, 0x0L), + 4 + ), + 205955 + ); + + // gentest-838 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-839 + assertEqual( + perft( + Board(0xfe00010400fb00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x480fbbfL, 0xfffe000100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 264284 + ); + + // gentest-840 + assertEqual( + perft( + Board(0xde20010400fb00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400fbffL, 0xfdde240100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 279425 + ); + + // gentest-841 + assertEqual( + perft( + Board(0xde00210c10e300L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xc10e3ffL, 0xfdde042100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 594770 + ); + + // gentest-842 + assertEqual( + perft( + Board(0x9c42210d10e200L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xd10e2ffL, 0xfd9c462100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 644780 + ); + + // gentest-843 + assertEqual( + perft( + Board(0x9c42210d10e200L, 0x4000040000000042L, 0x2000010000080800L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xd18eadbL, 0xf99c472100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1063746 + ); + + // gentest-844 + assertEqual( + perft( + Board(0x9c42210530c200L, 0x4000000008000042L, 0x2002000000080800L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x538cadbL, 0xf99e422108000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1139047 + ); + + // gentest-845 + assertEqual( + perft( + Board(0x9c42211520c200L, 0x4000000008000042L, 0x2800000080800L, 0x8100000000000081L, + 0x800000000020000L, 0x1000000000000010L, 0x152acad3L, 0xd99ec22108000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1488363 + ); + + // gentest-846 + assertEqual( + perft( + Board(0x9c42211520c200L, 0x200008000042L, 0x2002000000080800L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1528cadbL, 0xb99e622108000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1586816 + ); + + // gentest-847 + assertEqual( + perft( + Board(0x9c42211520c200L, 0x200008800002L, 0x2002000000180000L, 0x8200000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x15b8c29bL, 0xba9e622108000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 1857193 + ); + + // gentest-848 + assertEqual( + perft( + Board(0x9442291520c200L, 0x200008800002L, 0x2002000000180000L, 0x4200000000000081L, + 0x800000000000008L, 0x1000000000000800L, 0x15b8ca8bL, 0x7a96622908000000L, true, 0, 0x0L), + 4 + ), + 2071481 + ); + + // gentest-849 + assertEqual( + perft( + Board(0x9442190520c200L, 0x200008800002L, 0x2000042000100000L, 0x4200000000000081L, + 0x800000000000008L, 0x1000000000000800L, 0x3005b0ca8bL, 0x7a94660908000000L, false, 0, 0x0L), + 4 + ), + 1888807 + ); + + // gentest-850 + assertEqual( + perft( + Board(0x9442190520c200L, 0x4018000002L, 0x2100002000100000L, 0x4200000000000081L, 0x800000000000008L, + 0x1000000000000800L, 0x700530ca8bL, 0x7b94420918000000L, true, 0, 0x0L), + 4 + ), + 248065 + ); + + // gentest-851 + assertEqual( + perft( + Board(0x9442190520c200L, 0x18000002L, 0x100802000100000L, 0x4200000000000081L, 0x800000000000008L, + 0x1000000000040000L, 0x301534c28bL, 0x5b94c20908000000L, false, 0, 0x0L), + 4 + ), + 2161223 + ); + + // gentest-852 + assertEqual( + perft( + Board(0x9442190520c200L, 0x18000002L, 0x8840000100000L, 0x4200000000000081L, 0x800000000000008L, + 0x2000000000040000L, 0x800101534c28bL, 0x6a94c60908000000L, true, 0, 0x0L), + 4 + ), + 2231378 + ); + + // gentest-853 + assertEqual( + perft( + Board(0x9442190522c000L, 0x18000002L, 0x40140000100000L, 0x4200000000000081L, 0x800000000000008L, + 0x2000000000040000L, 0x10101536c08bL, 0x6ad4460908000000L, false, 0, 0x0L), + 4 + ), + 2254043 + ); + + // gentest-854 + assertEqual( + perft( + Board(0x9442110522c000L, 0x10000402L, 0x42000800100000L, 0x4200000000000081L, 0x800000000000008L, + 0x2000000000040000L, 0x181536c08bL, 0x6ad6420100000400L, true, 0, 0x0L), + 4 + ), + 2134230 + ); + + // gentest-855 + assertEqual( + perft( + Board(0x9442110522c000L, 0x10000402L, 0x42100020000000L, 0x4200000000000081L, 0x80000000008L, + 0x2000000000040000L, 0x10103526c08bL, 0x62d64a0100000400L, false, 0, 0x0L), + 4 + ), + 2506103 + ); + + // gentest-856 + assertEqual( + perft( + Board(0x94421105a24000L, 0x10000402L, 0x2300020000000L, 0x4200000000000081L, 0x8000000000008L, + 0x2000000000040000L, 0x101035a6408bL, 0x629e620100000400L, true, 0, 0x0L), + 4 + ), + 3381653 + ); + + // gentest-857 + assertEqual( + perft( + Board(0x94421105a24000L, 0x10000002L, 0x2300020000000L, 0x4100000000000081L, 0x8000000000010L, + 0x2000000000000400L, 0x101035a24493L, 0x619e620100000000L, false, 0, 0x0L), + 4 + ), + 2946452 + ); + + // gentest-858 + assertEqual( + perft( + Board(0x94421501a24000L, 0x10000002L, 0x2300020000000L, 0x4100000000000081L, 0x800000000000010L, + 0x1000000000000400L, 0x101431a24493L, 0x5996620100000000L, true, 0, 0x0L), + 4 + ), + 2233879 + ); + + // gentest-859 + assertEqual( + perft( + Board(0x94421501a24000L, 0x10040000L, 0x2300020000000L, 0x4100000000000081L, 0x10L, + 0x1000000000000800L, 0x101431a64891L, 0x5196620100000000L, false, 0, 0x0L), + 4 + ), + 1637698 + ); + + // gentest-860 + assertEqual( + perft( + Board(0x94401701a24000L, 0x10040000L, 0x4002200020000000L, 0x8100000000000081L, 0x10L, + 0x1000000000000800L, 0x4000001431a64891L, 0x9196600300000000L, true, 0, 0x0L), + 4 + ), + 1456522 + ); + + // gentest-861 + assertEqual( + perft( + Board(0x94401701a24000L, 0x10040000L, 0x4002200020000000L, 0x8400000000000048L, 0x10L, + 0x1000000000000800L, 0x4000001431a64858L, 0x9496600300000000L, false, 0, 0x0L), + 4 + ), + 851494 + ); + + // gentest-862 + assertEqual( + perft( + Board(0x84501701a24000L, 0x40000L, 0x4000200030000000L, 0x8400000000000048L, 0x100000L, + 0x1000000000000800L, 0x4000001421b64848L, 0x9484700310000000L, true, 0, 0x0L), + 4 + ), + 976763 + ); + + // gentest-863 + assertEqual( + perft( + Board(0x84501701a24000L, 0x40000L, 0x4000200020000000L, 0x8400000000080040L, 0x100000L, + 0x1000000000001000L, 0x4000001421be5040L, 0x9484700300000000L, false, 0, 0x0L), + 4 + ), + 599779 + ); + + // gentest-864 + assertEqual( + perft( + Board(0x4509701a24000L, 0x40000L, 0x4000204000000000L, 0x8800000000080040L, 0x100000L, + 0x1000000000001000L, 0x4000005401be5040L, 0x9804708300000000L, true, 0, 0x0L), + 4 + ), + 861677 + ); + + // gentest-865 + assertEqual( + perft( + Board(0x4509701a24000L, 0x40000L, 0x4000204000000000L, 0x8000000000080040L, 0x8000000L, + 0x1000000000002000L, 0x4000005409ae6040L, 0x9004708300000000L, false, 0, 0x0L), + 4 + ), + 447828 + ); + + // gentest-866 + assertEqual( + perft( + Board(0x549701a24000L, 0x40000L, 0x4000204000000000L, 0x80000000080040L, 0x8000000L, + 0x1000000000100000L, 0x4000005409be4040L, 0x1080748300000000L, true, 0, 0x0L), + 4 + ), + 595169 + ); + + // gentest-867 + assertEqual( + perft( + Board(0x549703a04000L, 0x2L, 0x4000204000000000L, 0x800000080040L, 0x8000000L, 0x1000000000100000L, + 0x400000540bb84042L, 0x1000f48300000000L, false, 0, 0x0L), + 4 + ), + 271719 + ); + + // gentest-868 + assertEqual( + perft( + Board(0x549703a04000L, 0x2L, 0x4000204000000000L, 0x1000000080040L, 0x80000000000L, + 0x1000000000100000L, 0x4000085403b84042L, 0x1001748300000000L, true, 0, 0x0L), + 4 + ), + 432380 + ); + + // gentest-869 + assertEqual( + perft( + Board(0x549703a04000L, 0x2L, 0x4000004000000000L, 0x1000000080040L, 0x800000000000000L, + 0x1000000000100000L, 0x4800005403b84042L, 0x1001548300000000L, false, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-870 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-871 + assertEqual( + perft( + Board(0xff00001200ed00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1200edffL, 0xfdff040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 504493 + ); + + // gentest-872 + assertEqual( + perft( + Board(0xaf50001200ed00L, 0x4000040000000042L, 0x2400000000080004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1208eddfL, 0xfdaf540000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 986600 + ); + + // gentest-873 + assertEqual( + perft( + Board(0xad50025200ad00L, 0x4000040000800002L, 0x2400000000080004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x5288ad9fL, 0xfdad540200000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 754184 + ); + + // gentest-874 + assertEqual( + perft( + Board(0xa5500a5000ad00L, 0x4000004002000002L, 0x2400000000080004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x405008ad9fL, 0xfda5500a02000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1055955 + ); + + // gentest-875 + assertEqual( + perft( + Board(0xa5500ad0002900L, 0x4000004000000402L, 0x2400000000080004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000001000L, 0x40d008398fL, 0xfda5500a00000400L, false, 0, + 0x8100000000000000L), + 4 + ), + 1303940 + ); + + // gentest-876 + assertEqual( + perft( + Board(0xa5500ad0002900L, 0x10000000010400L, 0x2400000000080004L, 0x8100000000000081L, 0x4000000008L, + 0x1000000000001000L, 0xd009398dL, 0xb5b5504a00000400L, true, 0, 0x8100000000000000L), + 4 + ), + 924900 + ); + + // gentest-877 + assertEqual( + perft( + Board(0xa5500ad0002900L, 0x4000000000010000L, 0x2400000000080004L, 0x8100000000000021L, 0x4000000400L, + 0x1000000000001000L, 0xd0093d25L, 0xf5a5504a00000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1238842 + ); + + // gentest-878 + assertEqual( + perft( + Board(0xa5500ad0002900L, 0x4000000000010000L, 0x2000010000080004L, 0x8100000000000041L, 0x1000000400L, + 0x1000000000001000L, 0xd0093d45L, 0xf1a5511a00000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1562977 + ); + + // gentest-879 + assertEqual( + perft( + Board(0xa5500ad0200900L, 0x4000000000010000L, 0x2000010000080004L, 0x8100000000000009L, 0x20000400L, + 0x1000000000001000L, 0xd0291d0dL, 0xf1a5510a20000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1092681 + ); + + // gentest-880 + assertEqual( + perft( + Board(0xa5500ad0200900L, 0x4000000000010000L, 0x810004000004L, 0x8100000000000009L, 0x20000400L, + 0x800000000001000L, 0xd4211d0dL, 0xc9a5d10a20000000L, true, 0, 0x0L), + 4 + ), + 922972 + ); + + // gentest-881 + assertEqual( + perft( + Board(0xa5500ad0200900L, 0x4000000000010000L, 0x810004000004L, 0x8100000000000009L, 0x1000000002L, + 0x800000000002000L, 0xd421290fL, 0xc9a5d11a00000000L, false, 0, 0x0L), + 4 + ), + 1198266 + ); + + // gentest-882 + assertEqual( + perft( + Board(0xa5500ad0200900L, 0x4000000000010000L, 0x2800004000004L, 0x8400000000000081L, 0x1000000002L, + 0x800000000002000L, 0xd4212987L, 0xcca7d01a00000000L, true, 0, 0x0L), + 4 + ), + 1529770 + ); + + // gentest-883 + assertEqual( + perft( + Board(0xa5500ad0200900L, 0x4000000000010000L, 0x2800000080004L, 0x8400000000008001L, 0x20000002L, + 0x800000000002000L, 0xd029a907L, 0xcca7d00a20000000L, false, 0, 0x0L), + 4 + ), + 793217 + ); + + // gentest-884 + assertEqual( + perft( + Board(0xa55008d0200900L, 0x4000000200000000L, 0x2800000080004L, 0x8400000000008001L, 0x20000002L, + 0x10000000002000L, 0x2d028a907L, 0xc4b7d00820000000L, true, 0, 0x0L), + 4 + ), + 1190580 + ); + + // gentest-885 + assertEqual( + perft( + Board(0xa0518850200900L, 0x4004000000000000L, 0x2800000080004L, 0x8400000000008001L, 0x20000002L, + 0x10000000002000L, 0x400805028a907L, 0xc4b2d10820000000L, false, 0, 0x0L), + 4 + ), + 1437122 + ); + + // gentest-886 + assertEqual( + perft( + Board(0xa0518054200900L, 0x4004000000000000L, 0x840000000004L, 0x8400000000008001L, 0x20000002L, + 0x10000000002000L, 0x400805020a907L, 0xc4b0d50024000000L, true, 0, 0x0L), + 4 + ), + 1554006 + ); + + // gentest-887 + assertEqual( + perft( + Board(0xa0508054200900L, 0x4000010000000000L, 0x800001010000L, 0x8400000000008001L, 0x20000002L, + 0x10000000002000L, 0x1805021a903L, 0xc4b0d00025000000L, false, 0, 0x0L), + 4 + ), + 293895 + ); + + // gentest-888 + assertEqual( + perft( + Board(0xa0508054200900L, 0x4000010000000000L, 0x800001010000L, 0x8400000000008001L, 0x22000000L, + 0x8000000002000L, 0x1805221a901L, 0xc4a8d00025000000L, true, 0, 0x0L), + 4 + ), + 1838047 + ); + + // gentest-889 + assertEqual( + perft( + Board(0xa0508054200900L, 0x4000010000000000L, 0x800001010000L, 0x8000040000008001L, 0x20000200L, + 0x8000000002000L, 0x1805021ab01L, 0xc0a8d40025000000L, false, 0, 0x0L), + 4 + ), + 2038434 + ); + + // gentest-890 + assertEqual( + perft( + Board(0xa0508054200900L, 0x4000010000000000L, 0x800000010400L, 0x400008001L, 0x8000000020000000L, + 0x8000000002000L, 0x800001805021a901L, 0x40a8d00424000400L, true, 0, 0x0L), + 4 + ), + 2159564 + ); + + // gentest-891 + assertEqual( + perft( + Board(0xa0508054200900L, 0x4000010000000000L, 0x800000010400L, 0x800008001L, 0x8000000020000000L, + 0x8000000002000L, 0x800001805021a901L, 0x40a8d00824000400L, false, 0, 0x0L), + 4 + ), + 2365262 + ); + + // gentest-892 + assertEqual( + perft( + Board(0x80708054200900L, 0x4200000000000000L, 0x800000010400L, 0x800008001L, 0x8000000020000000L, + 0x400000000002000L, 0x820000805021a901L, 0x4480f00824000400L, true, 0, 0x0L), + 4 + ), + 1888637 + ); + + // gentest-893 + assertEqual( + perft( + Board(0x80708054200900L, 0x4200000000000000L, 0x800001000004L, 0x800008080L, 0x8000000020000000L, + 0x400000000002000L, 0x820000805020a984L, 0x4480f00825000000L, false, 0, 0x0L), + 4 + ), + 1204805 + ); + + // gentest-894 + assertEqual( + perft( + Board(0x8070805c200100L, 0x4200000000000000L, 0x800000020004L, 0x800008080L, 0x8000001000000000L, + 0x400000000002000L, 0x820000805820a184L, 0x4480f01804020000L, true, 0, 0x0L), + 4 + ), + 1306811 + ); + + // gentest-895 + assertEqual( + perft( + Board(0x8070805c200100L, 0x4200000000000000L, 0x800000020004L, 0x800000280L, 0x8000000020000000L, + 0x400000000000010L, 0x8200008058200394L, 0x4480f00824020000L, false, 0, 0x0L), + 4 + ), + 1419154 + ); + + // gentest-896 + assertEqual( + perft( + Board(0x80609054200100L, 0x4200000000000000L, 0x800000020004L, 0xa80L, 0x8000000020000000L, + 0x400000000000010L, 0x8200009050200394L, 0x4480e00024020800L, true, 0, 0x0L), + 4 + ), + 758890 + ); + + // gentest-897 + assertEqual( + perft( + Board(0x80708054200000L, 0x4200000000000000L, 0x800000000104L, 0x882L, 0x8000000020000000L, + 0x400000000000010L, 0x8200108050200096L, 0x4480e00024000900L, false, 0, 0x0L), + 4 + ), + 835835 + ); + + // gentest-898 + assertEqual( + perft( + Board(0x80708054000000L, 0x4200000000000000L, 0x800000000104L, 0x842L, 0x8000000000004000L, + 0x400000000000010L, 0x8200108050000056L, 0x4480e00004004900L, true, 0, 0x0L), + 4 + ), + 604921 + ); + + // gentest-899 + assertEqual( + perft( + Board(0x8070c014000000L, 0x4200000000000000L, 0x800000000104L, 0x842L, 0x40000000200000L, + 0x400000000000010L, 0x24010c010000056L, 0x4480e00004200900L, false, 0, 0x0L), + 4 + ), + 1116594 + ); + + // gentest-900 + assertEqual( + perft( + Board(0x8070c010040000L, 0x210000000000000L, 0x104L, 0x842L, 0x800000200000L, 0x400000000000010L, + 0x20090c010000056L, 0x490600000240900L, true, 0, 0x0L), + 4 + ), + 870486 + ); + + // gentest-901 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-902 + assertEqual( + perft( + Board(0x7f00800011ee00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x11eeffL, 0xff7f008000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 420571 + ); + + // gentest-903 + assertEqual( + perft( + Board(0x730c800011ee00L, 0x4200000000000042L, 0x2400000200000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x20011eedfL, 0xff730c8000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 788727 + ); + + // gentest-904 + assertEqual( + perft( + Board(0x730c804011ae00L, 0x4200000000000042L, 0x2400000001000004L, 0x8100000000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x4111aedfL, 0xf7770c8000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 546835 + ); + + // gentest-905 + assertEqual( + perft( + Board(0x71048a0011ae00L, 0x4200000000000042L, 0x2400000001000004L, 0x8100000000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x800111aedfL, 0xf775040a00000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 860387 + ); + + // gentest-906 + assertEqual( + perft( + Board(0x71008e20118e00L, 0x4200000000000042L, 0x2400000000020004L, 0x8100000000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x8020138edfL, 0xf775000e00000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 910152 + ); + + // gentest-907 + assertEqual( + perft( + Board(0x61009e20118e00L, 0x4200000000000042L, 0x2000000040020004L, 0x8100000000000081L, + 0x4000000001000L, 0x1000000000000010L, 0x8020139ed7L, 0xf365001e40000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1574750 + ); + + // gentest-908 + assertEqual( + perft( + Board(0x61009628118600L, 0x4008000000000042L, 0x2000000840000004L, 0x8100000000000081L, + 0x4000000001000L, 0x1000000000000010L, 0x88281196d7L, 0xf16d001640000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 3085274 + ); + + // gentest-909 + assertEqual( + perft( + Board(0x4000b728158200L, 0x4008000000000042L, 0x2000000840000004L, 0x8100000000000081L, + 0x4000000001000L, 0x1000000000000010L, 0x88281592d7L, 0xf14c003740000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 2613497 + ); + + // gentest-910 + assertEqual( + perft( + Board(0x4000b728158200L, 0x4008000000000042L, 0x2002000040000004L, 0x8100000000000081L, + 0x4000000002000L, 0x10000000000010L, 0x200802815a2d7L, 0xe15c003740000000L, false, 0, 0x81L), + 4 + ), + 2016071 + ); + + // gentest-911 + assertEqual( + perft( + Board(0x4000b639058200L, 0x4000200000000042L, 0x2002000040000004L, 0x8100000000000081L, + 0x4000000002000L, 0x10000000000010L, 0x200803805a2d7L, 0xe154203641000000L, true, 0, 0x81L), + 4 + ), + 2159399 + ); + + // gentest-912 + assertEqual( + perft( + Board(0x4000b639058200L, 0x4000200000000042L, 0x2000010040000004L, 0x180000000000081L, + 0x4000000200000L, 0x10000000000010L, 0x180382582d7L, 0x61d4203641000000L, false, 0, 0x81L), + 4 + ), + 1999837 + ); + + // gentest-913 + assertEqual( + perft( + Board(0x4000a23d058200L, 0x4000200000001002L, 0x2000010040000004L, 0x180000000000081L, + 0x4000000200000L, 0x10000000000010L, 0x18030259297L, 0x61d420224d000000L, true, 0, 0x81L), + 4 + ), + 1937881 + ); + + // gentest-914 + assertEqual( + perft( + Board(0x4000a23d058200L, 0x4000200000001002L, 0x2000010040000004L, 0x180000000000081L, 0x40000800000L, + 0x10000000000010L, 0x18030859297L, 0x61d024224d000000L, false, 0, 0x81L), + 4 + ), + 1684462 + ); + + // gentest-915 + assertEqual( + perft( + Board(0x4000a23d058200L, 0x4000200000000002L, 0x2000010000001004L, 0x180000000000081L, + 0x1000000000100000L, 0x10000000000010L, 0x18030158297L, 0x71d020220d001000L, true, 0, 0x81L), + 4 + ), + 1145504 + ); + + // gentest-916 + assertEqual( + perft( + Board(0x400022bd050200L, 0x4000200000000002L, 0x2000010000001004L, 0x100008000000081L, + 0x1000000000100000L, 0x10000000000010L, 0x100b0150297L, 0x715020a20d001000L, false, 0, 0x81L), + 4 + ), + 1191891 + ); + + // gentest-917 + assertEqual( + perft( + Board(0x4022bd050200L, 0x4000200000000002L, 0x2000010000001800L, 0x1008000000081L, + 0x1000000000100000L, 0x10000000000010L, 0x100b0150a93L, 0x701160a20d001000L, true, 0, 0x81L), + 4 + ), + 942258 + ); + + // gentest-918 + assertEqual( + perft( + Board(0x4020bd050200L, 0x4000200000000002L, 0x2000000200001800L, 0x1008000008001L, 0x20000000100000L, + 0x10000000000010L, 0x2b0158a13L, 0x603160a00d001000L, false, 0, 0x1L), + 4 + ), + 1143719 + ); + + // gentest-919 + assertEqual( + perft( + Board(0x4020b5050200L, 0x4000200000000002L, 0x2000000200001800L, 0x100008000008001L, + 0x80000008000000L, 0x10000000000010L, 0x2b8058a13L, 0x619060a005001000L, true, 0, 0x1L), + 4 + ), + 783225 + ); + + // gentest-920 + assertEqual( + perft( + Board(0x4020b5050200L, 0x4000200000000002L, 0x2000000200001800L, 0x100008000008001L, + 0x480000000000000L, 0x800000000000010L, 0x4000002b0058a13L, 0x698060a005001000L, false, 0, 0x1L), + 4 + ), + 58257 + ); + + // gentest-921 + assertEqual( + perft( + Board(0x4020b5040200L, 0x4000200000000002L, 0x200111000L, 0x400008000008001L, 0x80000000000000L, + 0x800000000000010L, 0x2b0148213L, 0x4c8060a005011000L, true, 0, 0x1L), + 4 + ), + 1318644 + ); + + // gentest-922 + assertEqual( + perft( + Board(0x4020b1040200L, 0x4000200000000002L, 0x2000000004100000L, 0x400008000001001L, + 0x80000000000000L, 0x800000000000010L, 0xb4141213L, 0x6c8060a001000000L, false, 0, 0x1L), + 4 + ), + 1709325 + ); + + // gentest-923 + assertEqual( + perft( + Board(0x4020b3040000L, 0x4000200000000002L, 0x80004100000L, 0x100008000001001L, 0x80000000000000L, + 0x800000000000010L, 0xb6141013L, 0x498068a001000000L, true, 0, 0x1L), + 4 + ), + 1886876 + ); + + // gentest-924 + assertEqual( + perft( + Board(0x4020b3040000L, 0x4000200000000002L, 0x10010000100000L, 0x100008000001100L, 0x80000000000000L, + 0x800000000000010L, 0x100b2141112L, 0x499060a001000000L, false, 0, 0x0L), + 4 + ), + 923566 + ); + + // gentest-925 + assertEqual( + perft( + Board(0x4020b3040000L, 0x4000200000000002L, 0x10030000000000L, 0x100008000001100L, 0x800000000000L, + 0x1000000000000010L, 0x300b2041112L, 0x5110e0a001000000L, true, 0, 0x0L), + 4 + ), + 1140855 + ); + + // gentest-926 + assertEqual( + perft( + Board(0x4020b3040000L, 0x4000200000000002L, 0x2000010000100000L, 0x100008000001100L, 0x800000000000L, + 0x1000000000000008L, 0x100b214110aL, 0x7100e0a001000000L, false, 0, 0x0L), + 4 + ), + 1129379 + ); + + // gentest-927 + assertEqual( + perft( + Board(0x4020b3040000L, 0x4000200000000002L, 0x2001000000000000L, 0x18000001100L, 0x800000000000L, + 0x800000000000008L, 0x10000b204110aL, 0x6800e1a001000000L, true, 0, 0x0L), + 4 + ), + 912105 + ); + + // gentest-928 + assertEqual( + perft( + Board(0x4020b3040000L, 0x4000200000000800L, 0x240000000000000L, 0x18000001100L, 0x800000000000L, + 0x800000000000008L, 0x2000000b2041908L, 0x4840e1a001000000L, false, 0, 0x0L), + 4 + ), + 632491 + ); + + // gentest-929 + assertEqual( + perft( + Board(0x4020a3040000L, 0x4000000014000000L, 0x240000000000000L, 0x48000001100L, 0x800000000000L, + 0x800000000000008L, 0x2000000a6041108L, 0x4840c4a011000000L, true, 0, 0x0L), + 4 + ), + 986616 + ); + + // gentest-930 + assertEqual( + perft( + Board(0x4020a3040000L, 0x4000000004400000L, 0x240000000000000L, 0x49000000200L, 0x800000000000L, + 0x800000000000008L, 0x2000010a6040208L, 0x4840c4a001400000L, false, 0, 0x0L), + 4 + ), + 856910 + ); + + // gentest-931 + assertEqual( + perft( + Board(0x402083040000L, 0x4000000004400000L, 0x240000000000000L, 0x4009000000002L, 0x20000000L, + 0x800000000000008L, 0x20000108604000aL, 0x484440a021400000L, true, 0, 0x0L), + 4 + ), + 1145512 + ); + + // gentest-932 + assertEqual( + perft( + Board(0x402083040000L, 0x4000000004400000L, 0x240000000000000L, 0x4008800000004L, 0x80000000000L, + 0x800000000000008L, 0x20000088604000cL, 0x484448a001400000L, false, 0, 0x0L), + 4 + ), + 613078 + ); + + // gentest-933 + assertEqual( + perft( + Board(0x402083040000L, 0x4000000100000080L, 0x8200000000000000L, 0x4008800000004L, 0x80000000000L, + 0x800000000000008L, 0x20000098204000cL, 0xc80448a001000080L, true, 0, 0x0L), + 4 + ), + 381715 + ); + + // gentest-934 + assertEqual( + perft( + Board(0x402083040000L, 0x4000000100000080L, 0x8200000000000000L, 0x4088000000004L, 0x0L, + 0x10000000001000L, 0x200080182041004L, 0xc01440a001000080L, false, 0, 0x0L), + 4 + ), + 849952 + ); + + // gentest-935 + assertEqual( + perft( + Board(0x402083040000L, 0x4000000100400000L, 0x8200000000000000L, 0xc8000000004L, 0x0L, + 0x10000000200000L, 0x200080182240004L, 0xc01044a001400000L, true, 0, 0x0L), + 4 + ), + 756848 + ); + + // gentest-936 + assertEqual( + perft( + Board(0x402083040000L, 0x4000000004400000L, 0x240000000000000L, 0x800048000000004L, 0x0L, + 0x10000000200000L, 0xa00000086240004L, 0x405044a001400000L, false, 0, 0x0L), + 4 + ), + 1384200 + ); + + // gentest-937 + assertEqual( + perft( + Board(0x402083040000L, 0x200004001000L, 0x240000000000000L, 0x48000080004L, 0x0L, 0x10000000200000L, + 0x2000000862c0004L, 0x5064a001001000L, true, 0, 0x0L), + 4 + ), + 1338700 + ); + + // gentest-938 + assertEqual( + perft( + Board(0x402083040000L, 0x200000101000L, 0x240000000000000L, 0x8048000000004L, 0x0L, 0x100000200000L, + 0x208000082340004L, 0x4074a001001000L, false, 0, 0x0L), + 4 + ), + 1372259 + ); + + // gentest-939 + assertEqual( + perft( + Board(0x402083040000L, 0x4000101000L, 0x240000000000000L, 0x20048000000004L, 0x0L, 0x100000200000L, + 0x220000082340004L, 0x4054e001001000L, true, 0, 0x0L), + 4 + ), + 137632 + ); + + // gentest-940 + assertEqual( + perft( + Board(0x402083040000L, 0x4000001400L, 0x200200000000000L, 0x20048000000004L, 0x0L, 0x100000002000L, + 0x220000082042404L, 0x74e001001000L, false, 0, 0x0L), + 4 + ), + 1080890 + ); + + // gentest-941 + assertEqual( + perft( + Board(0x402083040000L, 0x80000000000400L, 0x200200000000000L, 0x20048000000004L, 0x0L, + 0x100000000040L, 0x220000082040444L, 0x8074a001000000L, true, 0, 0x0L), + 4 + ), + 608485 + ); + + // gentest-942 + assertEqual( + perft( + Board(0x402082050000L, 0x80000000000400L, 0x4200000000000L, 0x2000048000000004L, 0x0L, + 0x100000000040L, 0x2004000082040444L, 0x8074a000010000L, false, 0, 0x0L), + 4 + ), + 688129 + ); + + // gentest-943 + assertEqual( + perft( + Board(0x4000a2050000L, 0x80000000000400L, 0x804000000000000L, 0x4000048000000004L, 0x0L, + 0x100000000040L, 0x4004000082040444L, 0x880548020010000L, true, 0, 0x0L), + 4 + ), + 744728 + ); + + // gentest-944 + assertEqual( + perft( + Board(0x4002a0050000L, 0x80000000000400L, 0x200100000000L, 0x4000048000000004L, 0x0L, 0x100000000040L, + 0x4000000380040444L, 0x80748020010000L, false, 0, 0x0L), + 4 + ), + 1058997 + ); + + // gentest-945 + assertEqual( + perft( + Board(0x4002a0050000L, 0x80000000000400L, 0x200100000000L, 0x200008000000004L, 0x0L, 0x100000000040L, + 0x380040444L, 0x280708020010000L, true, 0, 0x0L), + 4 + ), + 582348 + ); + + // gentest-946 + assertEqual( + perft( + Board(0x4002a4010000L, 0x80000000000010L, 0x200100000000L, 0x2008000000004L, 0x0L, 0x100000000040L, + 0x384000054L, 0x82708020010000L, false, 0, 0x0L), + 4 + ), + 646579 + ); + + // gentest-947 + assertEqual( + perft( + Board(0x42a4010000L, 0x80000000000010L, 0x8000020000000000L, 0x2008000000004L, 0x0L, 0x100000000040L, + 0x20284000054L, 0x808210c020010000L, true, 0, 0x0L), + 4 + ), + 479734 + ); + + // gentest-948 + assertEqual( + perft( + Board(0x42a4010000L, 0x80000000000010L, 0x8000000000000000L, 0x4008000000008L, 0x0L, 0x100000000040L, + 0x284000058L, 0x808410c020010000L, false, 0, 0x0L), + 4 + ), + 377699 + ); + + // gentest-949 + assertEqual( + perft( + Board(0x4284210000L, 0x80000000000010L, 0x1000000000L, 0x4008000000004L, 0x0L, 0x100000000040L, + 0x284000054L, 0x8410d000210000L, true, 0, 0x0L), + 4 + ), + 266372 + ); + + // gentest-950 + assertEqual( + perft( + Board(0x4284010000L, 0x80000000000010L, 0x1000000000L, 0x8008000200000L, 0x0L, 0x100000000040L, + 0x284200050L, 0x8810d000010000L, false, 0, 0x0L), + 4 + ), + 512675 + ); + + // gentest-951 + assertEqual( + perft( + Board(0x4284010000L, 0x80000000000010L, 0x80000000000L, 0x8208000000000L, 0x0L, 0x10000000000040L, + 0x200284000050L, 0x9808c000010000L, true, 0, 0x0L), + 4 + ), + 220699 + ); + + // gentest-952 + assertEqual( + perft( + Board(0x4204010000L, 0x80000000000010L, 0x80000000000L, 0x8200000800000L, 0x0L, 0x10000000004000L, + 0x204204004010L, 0x98080000810000L, false, 0, 0x0L), + 4 + ), + 319050 + ); + + // gentest-953 + assertEqual( + perft( + Board(0x4204010000L, 0x80000000000010L, 0x400000000L, 0x800000000802000L, 0x0L, 0x10000000004000L, + 0x4204006010L, 0x890000400810000L, true, 0, 0x0L), + 4 + ), + 422575 + ); + + // gentest-954 + assertEqual( + perft( + Board(0x4204010000L, 0x80000080000000L, 0x1000000000000L, 0x800000000802000L, 0x0L, 0x10000000004000L, + 0x4284006000L, 0x891000000810000L, false, 0, 0x0L), + 4 + ), + 376906 + ); + + // gentest-955 + assertEqual( + perft( + Board(0x4204010000L, 0x200080000000L, 0x1000000000000L, 0x2008800000L, 0x0L, 0x10000000004000L, + 0x6284004000L, 0x11200008810000L, true, 0, 0x0L), + 4 + ), + 302133 + ); + + // gentest-956 + assertEqual( + perft( + Board(0x4204010000L, 0x200080000000L, 0x1000000000000L, 0x8208000L, 0x0L, 0x10000000000040L, + 0x4284200040L, 0x11200008018000L, false, 0, 0x0L), + 4 + ), + 320688 + ); + + // gentest-957 + assertEqual( + perft( + Board(0x4600010000L, 0x4000000080000000L, 0x1000000000000L, 0x20208000L, 0x0L, 0x10000000000040L, + 0x4680200040L, 0x4011000020018000L, true, 0, 0x0L), + 4 + ), + 208161 + ); + + // gentest-958 + assertEqual( + perft( + Board(0x24400010000L, 0x4000000080000000L, 0x1000000000000L, 0x20200100L, 0x0L, 0x10000000000020L, + 0x24480200020L, 0x4011000020010100L, false, 0, 0x0L), + 4 + ), + 155903 + ); + + // gentest-959 + assertEqual( + perft( + Board(0x400400010000L, 0x4000000080000000L, 0x20000000000L, 0x200100L, 0x0L, 0x10000000000020L, + 0x400480000020L, 0x4010020000210100L, true, 0, 0x0L), + 4 + ), + 16923 + ); + + // gentest-960 + assertEqual( + perft( + Board(0x440000010000L, 0x4000000080000000L, 0x100000000L, 0x200100L, 0x0L, 0x10000000000040L, + 0x440080000040L, 0x4010000100210100L, false, 0, 0x0L), + 4 + ), + 44474 + ); + + // gentest-961 + assertEqual( + perft( + Board(0x440000010000L, 0x4000000080000000L, 0x10L, 0x200200L, 0x0L, 0x10000000000080L, + 0x440080000080L, 0x4010000000210210L, true, 0, 0x0L), + 4 + ), + 52222 + ); + + // gentest-962 + assertEqual( + perft( + Board(0x4400000010000L, 0x4000000000200000L, 0x10L, 0x200L, 0x0L, 0x80000000080L, 0x4400000200080L, + 0x4000080000010210L, false, 0, 0x0L), + 4 + ), + 170429 + ); + + // gentest-963 + assertEqual( + perft( + Board(0x400000010000L, 0x4400000000200000L, 0x100000000L, 0x200L, 0x0L, 0x4000000000080L, + 0x400400000200080L, 0x4004000100010200L, true, 0, 0x0L), + 4 + ), + 125909 + ); + + // gentest-964 + assertEqual( + perft( + Board(0x400000010000L, 0x4010000000008000L, 0x100000000L, 0x4000L, 0x0L, 0x4000000000080L, + 0x10400000008080L, 0x4004000100014000L, false, 0, 0x0L), + 4 + ), + 65824 + ); + + // gentest-965 + assertEqual( + perft( + Board(0x400000010000L, 0x4010000000008000L, 0x100000000L, 0x100000L, 0x0L, 0x4000000000040L, + 0x10400000008040L, 0x4004000100110000L, true, 0, 0x0L), + 4 + ), + 112618 + ); + + // gentest-966 + assertEqual( + perft( + Board(0x400000010000L, 0x4010000000008000L, 0x100000000L, 0x0L, 0x0L, 0x4000000400000L, + 0x10400000408000L, 0x4004000100010000L, false, 0, 0x0L), + 4 + ), + 53299 + ); + + // gentest-967 + assertEqual( + perft( + Board(0x400000010000L, 0x10008000200000L, 0x100000000L, 0x0L, 0x0L, 0x4000000400000L, + 0x10400000600000L, 0x4008100010000L, true, 0, 0x0L), + 4 + ), + 28564 + ); + + // gentest-968 + assertEqual( + perft( + Board(0x400000010000L, 0x10009000000000L, 0x100000000L, 0x0L, 0x0L, 0x200000000008000L, + 0x10401000008000L, 0x200008100010000L, false, 0, 0x0L), + 4 + ), + 66521 + ); + + // gentest-969 + assertEqual( + perft( + Board(0x400000000100L, 0x10009000000000L, 0x2000000L, 0x0L, 0x0L, 0x200000000000080L, + 0x10401000000080L, 0x200008002000100L, true, 0, 0x0L), + 4 + ), + 81048 + ); + + // gentest-970 + assertEqual( + perft( + Board(0x400000000000L, 0x10008000000040L, 0x2000000L, 0x0L, 0x1L, 0x200000000000080L, + 0x104000000000c0L, 0x200008002000001L, false, 0, 0x0L), + 4 + ), + 98381 + ); + + // gentest-971 + assertEqual( + perft( + Board(0x400000000000L, 0x4000008000000040L, 0x400000000L, 0x0L, 0x1000000000L, 0x200000000000080L, + 0x40004000000000c0L, 0x200009400000000L, true, 0, 0x0L), + 4 + ), + 118429 + ); + + // gentest-972 + assertEqual( + perft( + Board(0x400000000000L, 0x10008000800000L, 0x400000000L, 0x0L, 0x40000000000000L, 0x200000000000080L, + 0x10400000800080L, 0x240008400000000L, false, 0, 0x0L), + 4 + ), + 114605 + ); + + // gentest-973 + assertEqual( + perft( + Board(0x400000000000L, 0x8000002000L, 0x10000000000000L, 0x0L, 0x40000L, 0x200000000000080L, + 0x400000002080L, 0x210008000040000L, true, 0, 0x0L), + 4 + ), + 129047 + ); + + // gentest-974 + assertEqual( + perft( + Board(0x400000000000L, 0x8000080000L, 0x10000000000000L, 0x0L, 0x8000000000000000L, + 0x200000000008000L, 0x400000088000L, 0x8210008000000000L, false, 0, 0x0L), + 4 + ), + 111965 + ); + + // gentest-975 + assertEqual( + perft( + Board(0x400000000000L, 0x8000000200L, 0x10000000000000L, 0x0L, 0x40000L, 0x200000000008000L, + 0x400000008200L, 0x210008000040000L, true, 0, 0x0L), + 4 + ), + 104699 + ); + + // gentest-976 + assertEqual( + perft( + Board(0x400000000000L, 0x8100000000L, 0x10000000000000L, 0x0L, 0x200000L, 0x200000000008000L, + 0x400100008000L, 0x210008000200000L, false, 0, 0x0L), + 4 + ), + 61268 + ); + + // gentest-977 + assertEqual( + perft( + Board(0x400000000000L, 0x48000000000L, 0x10000000000000L, 0x0L, 0x800000000L, 0x400000000008000L, + 0x440000008000L, 0x410008800000000L, true, 0, 0x0L), + 4 + ), + 117291 + ); + + // gentest-978 + assertEqual( + perft( + Board(0x40000000000000L, 0x9000000000L, 0x10000000000000L, 0x0L, 0x2000000000L, 0x400000000008000L, + 0x40001000008000L, 0x41000a000000000L, false, 0, 0x0L), + 4 + ), + 189922 + ); + + // gentest-979 + assertEqual( + perft( + Board(0x0L, 0x9000000000L, 0x4010000000000000L, 0x0L, 0x20000000000000L, 0x400000000008000L, + 0x4000001000008000L, 0x430008000000000L, true, 0, 0x0L), + 4 + ), + 182221 + ); + + // gentest-980 + assertEqual( + perft( + Board(0x0L, 0x8000002000L, 0x4010000000000000L, 0x0L, 0x1000000000000000L, 0x400000000008000L, + 0x400000000000a000L, 0x1410008000000000L, false, 0, 0x0L), + 4 + ), + 200078 + ); + + // gentest-981 + assertEqual( + perft( + Board(0x0L, 0x8000002000L, 0x84000000L, 0x0L, 0x200000000L, 0x400000000008000L, 0x400a000L, + 0x400008280000000L, true, 0, 0x0L), + 4 + ), + 354795 + ); + + // gentest-982 + assertEqual( + perft( + Board(0x0L, 0x200000002000L, 0x40080000000L, 0x0L, 0x0L, 0x400000000008000L, 0x4000000a000L, + 0x400200080000000L, false, 0, 0x0L), + 4 + ), + 61542 + ); + + // gentest-983 + assertEqual( + perft( + Board(0x0L, 0x2000L, 0x40080000000L, 0x0L, 0x0L, 0x400000000004000L, 0x40000004000L, + 0x400000080002000L, true, 0, 0x0L), + 4 + ), + 34848 + ); + + // gentest-984 + assertEqual( + perft( + Board(0x0L, 0x80000L, 0x81000000L, 0x0L, 0x0L, 0x400000000000020L, 0x1000020L, 0x400000080080000L, + false, 0, 0x0L), + 4 + ), + 37066 + ); + + // gentest-985 + assertEqual( + perft( + Board(0x0L, 0x80000L, 0x80000400L, 0x0L, 0x0L, 0x100000000000020L, 0x420L, 0x100000080080000L, true, + 0, 0x0L), + 4 + ), + 23130 + ); + + // gentest-986 + assertEqual( + perft( + Board(0x0L, 0x20000000L, 0x400080000000L, 0x0L, 0x0L, 0x100000000000040L, 0x400000000040L, + 0x1000000a0000000L, false, 0, 0x0L), + 4 + ), + 35738 + ); + + // gentest-987 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-988 + assertEqual( + perft( + Board(0xfd020080017e00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80017effL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 219822 + ); + + // gentest-989 + assertEqual( + perft( + Board(0xf9068000017e00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x8000017effL, 0xbff9260000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 244919 + ); + + // gentest-990 + assertEqual( + perft( + Board(0xf9068000097600L, 0x200200000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x80000d76fdL, 0xb7fd260000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 788005 + ); + + // gentest-991 + assertEqual( + perft( + Board(0x79868000097600L, 0x200200000040040L, 0x2400000000000024L, 0x180000000008001L, + 0x4000000000008L, 0x1000000000000010L, 0x80000df67dL, 0x37fda60000000000L, true, 0, + 0x100000000000001L), + 4 + ), + 702291 + ); + + // gentest-992 + assertEqual( + perft( + Board(0x79868800017600L, 0x200200000040040L, 0x2400000000000024L, 0x180000000008001L, 0x20000008L, + 0x1000000000000010L, 0x880005f67dL, 0x37f9a60020000000L, false, 0, 0x100000000000001L), + 4 + ), + 1162500 + ); + + // gentest-993 + assertEqual( + perft( + Board(0x39c28800017600L, 0x200200000040040L, 0x2400000000000024L, 0x180000000000081L, 0x20000008L, + 0x1000000000000010L, 0x80000576fdL, 0x37b9e20820000000L, true, 0, 0x100000000000001L), + 4 + ), + 1237879 + ); + + // gentest-994 + assertEqual( + perft( + Board(0x29c29800017600L, 0x200200000040040L, 0x2400000000000820L, 0x180000080000001L, 0x20000008L, + 0x1000000000000010L, 0x8080057e79L, 0x37a9e21820000000L, false, 0, 0x100000000000001L), + 4 + ), + 1515114 + ); + + // gentest-995 + assertEqual( + perft( + Board(0x29c09a00017600L, 0x200000010040040L, 0x2400000000000820L, 0x180000000000081L, 0x20000008L, + 0x1000000000000010L, 0x8000057ef9L, 0x37a9c01a30000000L, true, 0, 0x100000000000001L), + 4 + ), + 1225510 + ); + + // gentest-996 + assertEqual( + perft( + Board(0x9c0ba00017600L, 0x200000400000040L, 0x2400000000000820L, 0x180000000000081L, 0x20000008L, + 0x1000000000000010L, 0x8400017ef9L, 0x3789c03a20000000L, false, 0, 0x100000000000001L), + 4 + ), + 1487719 + ); + + // gentest-997 + assertEqual( + perft( + Board(0x980fa00017600L, 0x200000400000040L, 0x2400000000000820L, 0x180000000000081L, 0x4000004L, + 0x1000000000000010L, 0x8400017ef5L, 0x3789807a04000000L, true, 0, 0x100000000000001L), + 4 + ), + 1466876 + ); + + // gentest-998 + assertEqual( + perft( + Board(0x980fa00017600L, 0x110000000040L, 0x2400000000000820L, 0x180000000000081L, 0x4000002L, + 0x1000000000000010L, 0x108000017ef3L, 0x3589817a04000000L, false, 0, 0x100000000000001L), + 4 + ), + 1626177 + ); + + // gentest-999 + assertEqual( + perft( + Board(0x980fa00116600L, 0x100002000040L, 0x2400000000000820L, 0x180000000000081L, 0x10000002L, + 0x1000000000000010L, 0x108000116ef3L, 0x3589807a12000000L, true, 0, 0x100000000000001L), + 4 + ), + 1330569 + ); + + // gentest-1000 + assertEqual( + perft( + Board(0x980fa00114600L, 0x100002000040L, 0x2400000000000820L, 0x180000000800001L, 0x2L, + 0x1000000000000010L, 0x108000914e73L, 0x3589807a02000000L, false, 0, 0x100000000000001L), + 4 + ), + 781301 + ); + + // gentest-1001 + assertEqual( + perft( + Board(0x980fa02114400L, 0x110000000040L, 0x2400000000000820L, 0x120000000800001L, 0x2L, + 0x1000000000000010L, 0x108002914c73L, 0x3529817a00000000L, true, 0, 0x100000000000001L), + 4 + ), + 617206 + ); + + // gentest-1002 + assertEqual( + perft( + Board(0x980f800114400L, 0x110000000040L, 0x400000202000800L, 0x120000000800001L, 0x20000L, + 0x1000000000000010L, 0x108200934c51L, 0x1529817802000000L, false, 0, 0x100000000000001L), + 4 + ), + 1165958 + ); + + // gentest-1003 + assertEqual( + perft( + Board(0x980d820114400L, 0x800010000000040L, 0x2400000200000800L, 0x120000000800001L, 0x20000L, + 0x1000000000000010L, 0x800008200934c51L, 0x3529815820000000L, true, 0, 0x100000000000001L), + 4 + ), + 1269315 + ); + + // gentest-1004 + assertEqual( + perft( + Board(0x980d820114400L, 0x800010000000040L, 0x400000202040000L, 0x120000000800001L, 0x100L, + 0x1000000000000010L, 0x800008200954551L, 0x1529815822000000L, false, 0, 0x100000000000001L), + 4 + ), + 1071124 + ); + + // gentest-1005 + assertEqual( + perft( + Board(0x980d820114400L, 0x800010000000040L, 0x400080208000000L, 0x120000000800001L, 0x100L, + 0x1000000000000010L, 0x800008208914551L, 0x1529895820000000L, true, 0, 0x100000000000001L), + 4 + ), + 1362333 + ); + + // gentest-1006 + assertEqual( + perft( + Board(0x980d820114400L, 0x20010000000040L, 0x40008000c000000L, 0x140000000800001L, 0x100L, + 0x1000000000000010L, 0x2000800c914551L, 0x1549895820000000L, false, 0, 0x100000000000001L), + 4 + ), + 1138857 + ); + + // gentest-1007 + assertEqual( + perft( + Board(0x980d820014400L, 0x20000200000040L, 0x40008000c000000L, 0x140000000800001L, 0x100L, + 0x1000000000000010L, 0x2000802c814551L, 0x1549885a00000000L, true, 0, 0x100000000000001L), + 4 + ), + 1837308 + ); + + // gentest-1008 + assertEqual( + perft( + Board(0x980d820014400L, 0x20000200000040L, 0x40008000c000000L, 0x140000000400004L, 0x100L, + 0x10000000000010L, 0x2000802c414554L, 0x559885a00000000L, false, 0, 0x0L), + 4 + ), + 1713599 + ); + + // gentest-1009 + assertEqual( + perft( + Board(0x980d820014400L, 0x20000200000040L, 0x9000c000000L, 0x240000000400002L, 0x100L, + 0x10000000000010L, 0x2000802c414552L, 0x259895a00000000L, true, 0, 0x0L), + 4 + ), + 2731013 + ); + + // gentest-1010 + assertEqual( + perft( + Board(0x980c820014400L, 0x20000200000040L, 0x91004000000L, 0x42000000400002L, 0x100L, + 0x10000000001000L, 0x20009024415542L, 0x5b894a00000000L, false, 0, 0x0L), + 4 + ), + 1309651 + ); + + // gentest-1011 + assertEqual( + perft( + Board(0x980c820014400L, 0x20000000040040L, 0x4011004000000L, 0x42000000400002L, 0x100L, + 0x10000000000010L, 0x20009024414552L, 0x5f814800040000L, true, 0, 0x0L), + 4 + ), + 2057058 + ); + + // gentest-1012 + assertEqual( + perft( + Board(0x980e800014400L, 0x20000000040040L, 0x4090004000000L, 0x40000002400002L, 0x100L, + 0x10000000000010L, 0x2008a004414552L, 0x5d814802040000L, false, 0, 0x0L), + 4 + ), + 215081 + ); + + // gentest-1013 + assertEqual( + perft( + Board(0x980a840014400L, 0x20000000040040L, 0x90004000000L, 0x40000002400002L, 0x100L, + 0x10000000000800L, 0x2000a004414d42L, 0x59890842040000L, true, 0, 0x0L), + 4 + ), + 1725768 + ); + + // gentest-1014 + assertEqual( + perft( + Board(0x980a840014400L, 0x20000000040040L, 0x90004000000L, 0x40000000400208L, 0x100L, + 0x10000000000010L, 0x2000a004414558L, 0x59890840040200L, false, 0, 0x0L), + 4 + ), + 1760394 + ); + + // gentest-1015 + assertEqual( + perft( + Board(0x980a840014400L, 0x20000200000040L, 0x10002001000L, 0x40000000400208L, 0x100L, + 0x10000000000010L, 0x2000a000415558L, 0x59810a42000200L, true, 0, 0x0L), + 4 + ), + 172559 + ); + + // gentest-1016 + assertEqual( + perft( + Board(0x980a048014400L, 0x800000200000040L, 0x10002001000L, 0x40000000400208L, 0x100L, + 0x10000000000020L, 0x80000a000415568L, 0x5981024a000200L, false, 0, 0x0L), + 4 + ), + 1170425 + ); + + // gentest-1017 + assertEqual( + perft( + Board(0x980a048014400L, 0x800000000040040L, 0x10006000000L, 0x40000000400208L, 0x100L, + 0x1000000000000020L, 0x80000a004414568L, 0x104981004a040200L, true, 0, 0x0L), + 4 + ), + 1106298 + ); + + // gentest-1018 + assertEqual( + perft( + Board(0x188a048014400L, 0x800000000040040L, 0x10006000000L, 0x40000000480200L, 0x100L, + 0x1000000000000010L, 0x80000a004494550L, 0x104189004a040200L, false, 0, 0x0L), + 4 + ), + 705251 + ); + + // gentest-1019 + assertEqual( + perft( + Board(0x188a048014400L, 0x800000000000040L, 0x10006000000L, 0x40000000400a00L, 0x100L, + 0x1000000000000010L, 0x80000a004414d10L, 0x104189004a000240L, true, 0, 0x0L), + 4 + ), + 778681 + ); + + // gentest-1020 + assertEqual( + perft( + Board(0x188a049004400L, 0x800000000001000L, 0x10006000000L, 0x40000000800a00L, 0x100L, + 0x1000000000000010L, 0x80000a005804d10L, 0x104189004a001200L, false, 0, 0x0L), + 4 + ), + 1184184 + ); + + // gentest-1021 + assertEqual( + perft( + Board(0x188a009404400L, 0x800000000000000L, 0x10002001000L, 0x2000000800a00L, 0x100L, + 0x1000000000000010L, 0x80000a001805d10L, 0x100389000a400200L, true, 0, 0x0L), + 4 + ), + 557635 + ); + + // gentest-1022 + assertEqual( + perft( + Board(0x188a009404400L, 0x800000000000000L, 0x10006000000L, 0x20000000800800L, 0x200L, + 0x1000000000000010L, 0x80000a005804e10L, 0x102189000a400000L, false, 0, 0x0L), + 4 + ), + 525862 + ); + + // gentest-1023 + assertEqual( + perft( + Board(0x188a009404400L, 0x0L, 0x10006000000L, 0x2000000800800L, 0x200L, 0x800000000000008L, + 0xa005804e08L, 0x80389000a400000L, true, 0, 0x0L), + 4 + ), + 583895 + ); + + // gentest-1024 + assertEqual( + perft( + Board(0x188a100484400L, 0x0L, 0x10006000000L, 0x2000000800800L, 0x40000000000000L, 0x800000000000008L, + 0x4000a104804c08L, 0x803890002480000L, false, 0, 0x0L), + 4 + ), + 436325 + ); + + // gentest-1025 + assertEqual( + perft( + Board(0x188a100484400L, 0x0L, 0x110002000000L, 0x80000000800800L, 0x0L, 0x800000000000008L, + 0x10a100804c08L, 0x881890002480000L, true, 0, 0x0L), + 4 + ), + 208336 + ); + + // gentest-1026 + assertEqual( + perft( + Board(0x188a104484000L, 0x0L, 0x10002000000L, 0x8000000800800L, 0x0L, 0x800000000000008L, + 0xa104804808L, 0x809890002480000L, false, 0, 0x0L), + 4 + ), + 95559 + ); + + // gentest-1027 + assertEqual( + perft( + Board(0x89a104484000L, 0x0L, 0x202000000L, 0x8000000800800L, 0x0L, 0x800000000000010L, 0xa104804810L, + 0x808890202480000L, true, 0, 0x0L), + 4 + ), + 44435 + ); + + // gentest-1028 + assertEqual( + perft( + Board(0x89a104084000L, 0x0L, 0x202000000L, 0x2000000400800L, 0x0L, 0x800000000002000L, 0xa104406800L, + 0x802890202080000L, false, 0, 0x0L), + 4 + ), + 276570 + ); + + // gentest-1029 + assertEqual( + perft( + Board(0xa98100084000L, 0x0L, 0x6000000L, 0x80000000400800L, 0x0L, 0x800000000002000L, 0x208100406800L, + 0x880890006080000L, true, 0, 0x0L), + 4 + ), + 251924 + ); + + // gentest-1030 + assertEqual( + perft( + Board(0xa98100084000L, 0x0L, 0x4000000002000000L, 0xc0000000000800L, 0x0L, 0x800000000000020L, + 0x40208100004820L, 0x4880890002080000L, false, 0, 0x0L), + 4 + ), + 151357 + ); + + // gentest-1031 + assertEqual( + perft( + Board(0xa98100084000L, 0x0L, 0x2020000L, 0x4080000000000800L, 0x0L, 0x8000000000020L, + 0x4000208100004820L, 0x888900020a0000L, true, 0, 0x0L), + 4 + ), + 275076 + ); + + // gentest-1032 + assertEqual( + perft( + Board(0xa18900480000L, 0x0L, 0x2020000L, 0x1080000000000800L, 0x0L, 0x8000000000020L, + 0x1000208100400820L, 0x888108020a0000L, false, 0, 0x0L), + 4 + ), + 321393 + ); + + // gentest-1033 + assertEqual( + perft( + Board(0xa18900480000L, 0x0L, 0x2020000L, 0x40001000000800L, 0x0L, 0x80000000020L, 0x209100400820L, + 0x408908020a0000L, true, 0, 0x0L), + 4 + ), + 395549 + ); + + // gentest-1034 + assertEqual( + perft( + Board(0xa18900480000L, 0x0L, 0x2020000L, 0x40000040000800L, 0x0L, 0x100000000020L, 0x208140400820L, + 0x409108020a0000L, false, 0, 0x0L), + 4 + ), + 431368 + ); + + // gentest-1035 + assertEqual( + perft( + Board(0xa18108480000L, 0x0L, 0x2020000L, 0x40000040000800L, 0x0L, 0x80000000010L, 0x208140400810L, + 0x4089000a0a0000L, true, 0, 0x0L), + 4 + ), + 108360 + ); + + // gentest-1036 + assertEqual( + perft( + Board(0xa18100480000L, 0x0L, 0x2020000L, 0x40000040000800L, 0x0L, 0x1000000010L, 0x208140400810L, + 0x408110020a0000L, false, 0, 0x0L), + 4 + ), + 220679 + ); + + // gentest-1037 + assertEqual( + perft( + Board(0x40818100480000L, 0x0L, 0x2000000000020000L, 0x40000800L, 0x0L, 0x1000000010L, + 0x40008140400810L, 0x20008110000a0000L, true, 0, 0x0L), + 4 + ), + 207961 + ); + + // gentest-1038 + assertEqual( + perft( + Board(0x40818100480000L, 0x0L, 0x80000020000L, 0x20000008L, 0x0L, 0x1000000010L, 0x40008120400018L, + 0x8910000a0000L, false, 0, 0x0L), + 4 + ), + 198643 + ); + + // gentest-1039 + assertEqual( + perft( + Board(0x40818100480000L, 0x0L, 0x80000020000L, 0x20000001L, 0x0L, 0x1000000010L, 0x40008120400011L, + 0x8910000a0000L, true, 0, 0x0L), + 4 + ), + 235832 + ); + + // gentest-1040 + assertEqual( + perft( + Board(0x40818140000800L, 0x0L, 0x80000020000L, 0x20000001L, 0x0L, 0x1000001000L, 0x40008160001001L, + 0x891000020800L, false, 0, 0x0L), + 4 + ), + 349567 + ); + + // gentest-1041 + assertEqual( + perft( + Board(0x40818140000000L, 0x0L, 0x20080000000000L, 0x20000001L, 0x8L, 0x1000002000L, 0x40008160002001L, + 0x20891000000008L, true, 0, 0x0L), + 4 + ), + 464632 + ); + + // gentest-1042 + assertEqual( + perft( + Board(0x818140000000L, 0x0L, 0x20080000000000L, 0x20000001L, 0x2000000000000008L, 0x100000002000L, + 0x2000008160002001L, 0x20990000000008L, false, 0, 0x0L), + 4 + ), + 582569 + ); + + // gentest-1043 + assertEqual( + perft( + Board(0x818100000000L, 0x0L, 0x20080000000000L, 0x20000020L, 0x2000004000000000L, 0x100000002000L, + 0x2000008120002020L, 0x20994000000000L, true, 0, 0x0L), + 4 + ), + 731427 + ); + + // gentest-1044 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x88000000000L, 0x20000020L, 0x2000004000000000L, 0x100000002000L, + 0x2000000120002020L, 0x99c000000000L, false, 0, 0x0L), + 4 + ), + 770634 + ); + + // gentest-1045 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x88000000000L, 0x20000020L, 0x2040000000000000L, 0x100000000040L, + 0x2000000120000060L, 0x40998000000000L, true, 0, 0x0L), + 4 + ), + 127501 + ); + + // gentest-1046 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x80000001000L, 0x20000004L, 0x40000000000000L, 0x100000000040L, + 0x40000120000044L, 0x990000001000L, false, 0, 0x0L), + 4 + ), + 598054 + ); + + // gentest-1047 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x80000001000L, 0x20000010L, 0x40000000000000L, 0x100000000040L, + 0x40000120000050L, 0x990000001000L, true, 0, 0x0L), + 4 + ), + 245109 + ); + + // gentest-1048 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x200000000001000L, 0x200000000010L, 0x40000L, 0x100000000040L, + 0x200100040050L, 0x200910000001000L, false, 0, 0x0L), + 4 + ), + 67581 + ); + + // gentest-1049 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x80000001000L, 0x200000000008L, 0x40000L, 0x8000000000040L, + 0x200100040048L, 0x8890000001000L, true, 0, 0x0L), + 4 + ), + 351441 + ); + + // gentest-1050 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x1000L, 0x80020000000L, 0x40000L, 0x10000000000040L, 0x80120040040L, + 0x10810000001000L, false, 0, 0x0L), + 4 + ), + 263528 + ); + + // gentest-1051 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x200000L, 0x80020000000L, 0x40000L, 0x1000000000000080L, 0x80120040080L, + 0x1000810000200000L, true, 0, 0x0L), + 4 + ), + 13424 + ); + + // gentest-1052 + assertEqual( + perft( + Board(0x810100000000L, 0x0L, 0x40000000L, 0x82000000000L, 0x40000L, 0x1000000000008000L, + 0x82100048000L, 0x1000810040000000L, false, 0, 0x0L), + 4 + ), + 164648 + ); + + // gentest-1053 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1054 + assertEqual( + perft( + Board(0xff00000010ef00L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000040000000L, 0x1000000000000010L, 0x4010eff7L, 0xfdff010000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 780737 + ); + + // gentest-1055 + assertEqual( + perft( + Board(0xff00000010ef00L, 0x4000000400000042L, 0x2400000000000024L, 0x8200000000000081L, + 0x800000000800000L, 0x1000000000000010L, 0x90eff7L, 0xfeff000400000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 650517 + ); + + // gentest-1056 + assertEqual( + perft( + Board(0xff00000010ef00L, 0x4000000000000042L, 0x2400000000080004L, 0x8200000000000081L, + 0x800000000400000L, 0x1000000000000010L, 0x58efd7L, 0xfeff000000000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 594607 + ); + + // gentest-1057 + assertEqual( + perft( + Board(0xcf10200010ef00L, 0x4000000000000042L, 0x2400000000000024L, 0x8200000000000081L, + 0x800000000400000L, 0x1000000000000010L, 0x50eff7L, 0xfecf102000000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 1021334 + ); + + // gentest-1058 + assertEqual( + perft( + Board(0xcf10200814e300L, 0x4000000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000400000L, 0x1000000000000010L, 0x854e3f7L, 0xfdcf102000000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 1048519 + ); + + // gentest-1059 + assertEqual( + perft( + Board(0xce112088146300L, 0x4000000000000042L, 0x2400000000000024L, 0x8200000000000081L, + 0x800000000400000L, 0x1000000000000010L, 0x885463f7L, 0xfece112000000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 1003011 + ); + + // gentest-1060 + assertEqual( + perft( + Board(0xce013088166100L, 0x4000000000000042L, 0x2400000200000004L, 0x8200000000000081L, + 0x800000000400000L, 0x1000000000000010L, 0x2885661d7L, 0xfece013000000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 1141722 + ); + + // gentest-1061 + assertEqual( + perft( + Board(0xca053088166100L, 0x200000000042L, 0x2400000200000004L, 0x8200000000000081L, + 0x800000000400000L, 0x1000000000000800L, 0x2885669c7L, 0xbeca253000000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 1338114 + ); + + // gentest-1062 + assertEqual( + perft( + Board(0x8a0510a8166100L, 0x200000000042L, 0x2400000200010000L, 0x8200000000000081L, + 0x840000000000000L, 0x1000000000000800L, 0x400002881769c3L, 0xbe8a251020000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 1448061 + ); + + // gentest-1063 + assertEqual( + perft( + Board(0x8a0510a8166100L, 0x200000000042L, 0x400000200010000L, 0x8200000000000081L, 0x40000100000000L, + 0x1000000000080000L, 0x400002881e61c3L, 0x968a251120010000L, true, 0, 0x8000000000000000L), + 4 + ), + 1132105 + ); + + // gentest-1064 + assertEqual( + perft( + Board(0x8a0510a8364100L, 0x200000000042L, 0x2400000200000000L, 0x8200000000000081L, 0x40000100000000L, + 0x1000000000000800L, 0x400002883649c3L, 0xb68a251120000000L, false, 0, 0x8000000000000000L), + 4 + ), + 1259538 + ); + + // gentest-1065 + assertEqual( + perft( + Board(0xa0590a0364100L, 0x200000000042L, 0x400080200000000L, 0x8200000000000081L, 0x40000100000000L, + 0x1000000000000800L, 0x400012803649c3L, 0x960a2d8120000000L, true, 0, 0x8000000000000000L), + 4 + ), + 1059681 + ); + + // gentest-1066 + assertEqual( + perft( + Board(0xa0190a0364100L, 0x200000000042L, 0x4000c0000000000L, 0x8200000000000081L, 0x20000100000000L, + 0x800000000000800L, 0x200410803649c3L, 0x8e0a298120000000L, false, 0, 0x0L), + 4 + ), + 1306666 + ); + + // gentest-1067 + assertEqual( + perft( + Board(0xa0190a0364100L, 0x800000042L, 0x4000c0000000000L, 0x8200000000000081L, 0x80000200000000L, + 0x800000000000800L, 0x800410803649c3L, 0x8e0a098a20000000L, true, 0, 0x0L), + 4 + ), + 1282383 + ); + + // gentest-1068 + assertEqual( + perft( + Board(0xa0190a0660100L, 0x100042L, 0x4000c0000000000L, 0x8200000000000081L, 0x400200000000L, + 0x800000000000800L, 0x4410806609c3L, 0x8e0a098220100000L, false, 0, 0x0L), + 4 + ), + 1484450 + ); + + // gentest-1069 + assertEqual( + perft( + Board(0x20590a0260100L, 0x40000042L, 0x400080000000000L, 0x8200000000000081L, 0x400200000000L, + 0x800000000000800L, 0x4010802609c3L, 0x8e020d8260000000L, true, 0, 0x0L), + 4 + ), + 1027346 + ); + + // gentest-1070 + assertEqual( + perft( + Board(0x20590a1260000L, 0x40000042L, 0x400080000000000L, 0x4200000000000081L, 0x80000200000000L, + 0x800000000000800L, 0x800010812608c3L, 0x4e020d8260000000L, false, 0, 0x0L), + 4 + ), + 1143772 + ); + + // gentest-1071 + assertEqual( + perft( + Board(0x20194a1260000L, 0x40000042L, 0x400080000000000L, 0x4200000000000081L, 0x22000000000L, + 0x800000000000800L, 0x30812608c3L, 0x4e020b8460000000L, true, 0, 0x0L), + 4 + ), + 883996 + ); + + // gentest-1072 + assertEqual( + perft( + Board(0x20194a1260000L, 0x40001002L, 0x400080000000000L, 0x4100000000000081L, 0x20020000000000L, + 0x800000000000800L, 0x20001081261883L, 0x4d020b8460000000L, false, 0, 0x0L), + 4 + ), + 1415704 + ); + + // gentest-1073 + assertEqual( + perft( + Board(0x20194a1260000L, 0x40001002L, 0x400080000000000L, 0x4100000000000081L, 0x200100000000L, + 0x8000000000800L, 0x201081261883L, 0x450a098560000000L, true, 0, 0x0L), + 4 + ), + 938435 + ); + + // gentest-1074 + assertEqual( + perft( + Board(0x20194a1260000L, 0x40001002L, 0x2400000000000000L, 0x4100000000000009L, 0x200100000000L, + 0x8000000080000L, 0x2010812e100bL, 0x650a018560000000L, false, 0, 0x0L), + 4 + ), + 626388 + ); + + // gentest-1075 + assertEqual( + perft( + Board(0x20194a0260000L, 0x40001002L, 0x400080000000000L, 0x4100000000000005L, 0x200001000000L, + 0x8000000080000L, 0x2010802e1007L, 0x450a098461000000L, true, 0, 0x0L), + 4 + ), + 975145 + ); + + // gentest-1076 + assertEqual( + perft( + Board(0x20194a0260000L, 0x40001002L, 0x400080000000000L, 0x4100000001000008L, 0x200000000000L, + 0x40000080000L, 0x2010812e100aL, 0x45020d8460000000L, false, 0, 0x0L), + 4 + ), + 1015782 + ); + + // gentest-1077 + assertEqual( + perft( + Board(0x20194a0260000L, 0x40001002L, 0x82000000000L, 0x100004001000008L, 0x200000000000L, + 0x40004000000L, 0x20108526100aL, 0x1020de460000000L, true, 0, 0x0L), + 4 + ), + 1103266 + ); + + // gentest-1078 + assertEqual( + perft( + Board(0x20194a0260000L, 0x40001002L, 0x2000000000L, 0x2000084001000000L, 0x200000000000L, + 0x40004000000L, 0x281085261002L, 0x200205e460000000L, false, 0, 0x0L), + 4 + ), + 38374 + ); + + // gentest-1079 + assertEqual( + perft( + Board(0x20194e0060000L, 0x1002L, 0x2000000000L, 0x2040080001000000L, 0x200000000000L, + 0x4000004000000L, 0x2810c5061002L, 0x204601a420000000L, true, 0, 0x0L), + 4 + ), + 1153904 + ); + + // gentest-1080 + assertEqual( + perft( + Board(0x20194e0060000L, 0x1002L, 0x2000000000L, 0x2000000001080000L, 0x20000000000000L, + 0x4000004000000L, 0x200010c50e1002L, 0x200601a420000000L, false, 0, 0x0L), + 4 + ), + 168011 + ); + + // gentest-1081 + assertEqual( + perft( + Board(0x20194e0060000L, 0x1002L, 0x8000000000000L, 0x20000001080000L, 0x10000000000000L, + 0x4000004000000L, 0x100010c50e1002L, 0x2e018420000000L, true, 0, 0x0L), + 4 + ), + 308249 + ); + + // gentest-1082 + assertEqual( + perft( + Board(0x196e0060000L, 0x1002L, 0x8000000000000L, 0x20000001080000L, 0x2000000000000000L, + 0x4000800000000L, 0x20000018c10e1002L, 0x2c018620000000L, false, 0, 0x0L), + 4 + ), + 518222 + ); + + // gentest-1083 + assertEqual( + perft( + Board(0x116e0060000L, 0x1002L, 0x8000000000000L, 0x80000000080001L, 0x2000000000000000L, + 0x4000800000000L, 0x20000018800e1003L, 0x8c010660000000L, true, 0, 0x0L), + 4 + ), + 446219 + ); + + // gentest-1084 + assertEqual( + perft( + Board(0x112e4060000L, 0x1002L, 0x8000000000000L, 0x80000000080001L, 0x200000000000L, 0x4000800000000L, + 0x2018800e1003L, 0x8c010264000000L, false, 0, 0x0L), + 4 + ), + 562240 + ); + + // gentest-1085 + assertEqual( + perft( + Board(0x112c4260000L, 0x1002L, 0x8000000000000L, 0x800000080001L, 0x100000000000L, 0x4000800000000L, + 0x1018800e1003L, 0xc810244200000L, true, 0, 0x0L), + 4 + ), + 495296 + ); + + // gentest-1086 + assertEqual( + perft( + Board(0x112c4060000L, 0x6L, 0x8000000000000L, 0x800000200001L, 0x100000000000L, 0x400000800000000L, + 0x101880260007L, 0x408810244000000L, false, 0, 0x0L), + 4 + ), + 374110 + ); + + // gentest-1087 + assertEqual( + perft( + Board(0x1284260000L, 0x6L, 0x8000000000000L, 0x800000000001L, 0x10000000000L, 0x800000800000000L, + 0x11880060007L, 0x808800204200000L, true, 0, 0x0L), + 4 + ), + 321941 + ); + + // gentest-1088 + assertEqual( + perft( + Board(0x1284260000L, 0x6L, 0x40000000L, 0x800100000000L, 0x10000000000L, 0x800000800000000L, + 0x11980060006L, 0x800800244200000L, false, 0, 0x0L), + 4 + ), + 330210 + ); + + // gentest-1089 + assertEqual( + perft( + Board(0x1280260000L, 0x804L, 0x40000000L, 0x800100000000L, 0x10000000000L, 0x10000800000000L, + 0x11980040804L, 0x10800240220000L, true, 0, 0x0L), + 4 + ), + 419043 + ); + + // gentest-1090 + assertEqual( + perft( + Board(0x1280260000L, 0x80800L, 0x40000000L, 0x100000000L, 0x80000000000L, 0x10000800000000L, + 0x819800c0800L, 0x10000240220000L, false, 0, 0x0L), + 4 + ), + 33424 + ); + + // gentest-1091 + assertEqual( + perft( + Board(0x1280260000L, 0x80800L, 0x8000000000000L, 0x100000000L, 0x4000000000000L, 0x1000000800000000L, + 0x40019800c0800L, 0x1008000200220000L, true, 0, 0x0L), + 4 + ), + 158715 + ); + + // gentest-1092 + assertEqual( + perft( + Board(0x1280260000L, 0x2000800L, 0x0L, 0x100000000L, 0x0L, 0x8000800000000L, 0x1982040800L, + 0x8000200220000L, false, 0, 0x0L), + 4 + ), + 37988 + ); + + // gentest-1093 + assertEqual( + perft( + Board(0x1280240200L, 0x2000800L, 0x0L, 0x100L, 0x0L, 0x10000800000000L, 0x1882040900L, + 0x10000200200200L, true, 0, 0x0L), + 4 + ), + 72089 + ); + + // gentest-1094 + assertEqual( + perft( + Board(0x1280240000L, 0x10004000000L, 0x0L, 0x102L, 0x0L, 0x10000800000000L, 0x11884040100L, + 0x10000200200002L, false, 0, 0x0L), + 4 + ), + 201440 + ); + + // gentest-1095 + assertEqual( + perft( + Board(0x1280240000L, 0x10004000000L, 0x0L, 0x10100L, 0x0L, 0x10000800000000L, 0x11884050000L, + 0x10000200200100L, true, 0, 0x0L), + 4 + ), + 103441 + ); + + // gentest-1096 + assertEqual( + perft( + Board(0x1280240000L, 0x200000004000000L, 0x0L, 0x10200L, 0x0L, 0x10040000000000L, 0x200041084050000L, + 0x10000200200200L, false, 0, 0x0L), + 4 + ), + 159567 + ); + + // gentest-1097 + assertEqual( + perft( + Board(0x1280240000L, 0x200000004000000L, 0x0L, 0x1000200L, 0x0L, 0x10040000000000L, + 0x200041085040000L, 0x10000200200200L, true, 0, 0x0L), + 4 + ), + 161121 + ); + + // gentest-1098 + assertEqual( + perft( + Board(0x1280240000L, 0x200002000000000L, 0x0L, 0x1000800L, 0x0L, 0x10040000000000L, + 0x200043081040000L, 0x10000200200800L, false, 0, 0x0L), + 4 + ), + 72687 + ); + + // gentest-1099 + assertEqual( + perft( + Board(0x1280240000L, 0x200002000000000L, 0x0L, 0x8000001000000L, 0x0L, 0x100400000000L, + 0x200003481040000L, 0x8100200200000L, true, 0, 0x0L), + 4 + ), + 184205 + ); + + // gentest-1100 + assertEqual( + perft( + Board(0x1280240000L, 0x10010000000000L, 0x0L, 0x800000001000000L, 0x0L, 0x100400000000L, + 0x10011481040000L, 0x800100200200000L, false, 0, 0x0L), + 4 + ), + 174743 + ); + + // gentest-1101 + assertEqual( + perft( + Board(0x1280240000L, 0x10010000000000L, 0x0L, 0x100000020000000L, 0x0L, 0x8000400000000L, + 0x100114a0040000L, 0x108000200200000L, true, 0, 0x0L), + 4 + ), + 124569 + ); + + // gentest-1102 + assertEqual( + perft( + Board(0x1284200000L, 0x14000000000000L, 0x0L, 0x1000000020000000L, 0x0L, 0x8000400000000L, + 0x140014a4000000L, 0x1008000200200000L, false, 0, 0x0L), + 4 + ), + 122255 + ); + + // gentest-1103 + assertEqual( + perft( + Board(0x1284200000L, 0x10010000000000L, 0x0L, 0x100000020000000L, 0x0L, 0x8000400000000L, + 0x100114a4000000L, 0x108000200200000L, true, 0, 0x0L), + 4 + ), + 113294 + ); + + // gentest-1104 + assertEqual( + perft( + Board(0x1084200000L, 0x10000002000000L, 0x0L, 0x100000010000000L, 0x0L, 0x8000400000000L, + 0x10001492000000L, 0x108000004200000L, false, 0, 0x0L), + 4 + ), + 196947 + ); + + // gentest-1105 + assertEqual( + perft( + Board(0x1084200000L, 0x400000002000000L, 0x0L, 0x1000010000000L, 0x0L, 0x800000400000000L, + 0x400001492000000L, 0x801000004200000L, true, 0, 0x0L), + 4 + ), + 166007 + ); + + // gentest-1106 + assertEqual( + perft( + Board(0x1084200000L, 0x2000000L, 0x0L, 0x1000040000000L, 0x0L, 0x400000008000000L, 0x10ca000000L, + 0x401000004200000L, false, 0, 0x0L), + 4 + ), + 174332 + ); + + // gentest-1107 + assertEqual( + perft( + Board(0x1084200000L, 0x2000000L, 0x0L, 0x40000000000100L, 0x0L, 0x800000008000000L, 0x4000108a000000L, + 0x800000004200100L, true, 0, 0x0L), + 4 + ), + 167038 + ); + + // gentest-1108 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x101L, 0x0L, 0x800000008000000L, 0x108a000001L, + 0x800000000240100L, false, 0, 0x0L), + 4 + ), + 193765 + ); + + // gentest-1109 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x2001L, 0x0L, 0x1000000004000000L, 0x1086000001L, + 0x1000000000242000L, true, 0, 0x0L), + 4 + ), + 146620 + ); + + // gentest-1110 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x4100L, 0x0L, 0x1000000200000000L, 0x1282000100L, + 0x1000000000244000L, false, 0, 0x0L), + 4 + ), + 211279 + ); + + // gentest-1111 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x3000L, 0x0L, 0x20000200000000L, 0x1282001000L, + 0x20000000242000L, true, 0, 0x0L), + 4 + ), + 92121 + ); + + // gentest-1112 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x10002000L, 0x0L, 0x2000000200000000L, 0x1292000000L, + 0x2000000000242000L, false, 0, 0x0L), + 4 + ), + 98227 + ); + + // gentest-1113 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x8000020L, 0x0L, 0x4000000200000000L, 0x128a000000L, + 0x4000000000240020L, true, 0, 0x0L), + 4 + ), + 131557 + ); + + // gentest-1114 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x8000040L, 0x0L, 0x4000000100000000L, 0x118a000000L, + 0x4000000000240040L, false, 0, 0x0L), + 4 + ), + 166745 + ); + + // gentest-1115 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x8000080L, 0x0L, 0x20000200000000L, 0x128a000000L, + 0x20000000240080L, true, 0, 0x0L), + 4 + ), + 181877 + ); + + // gentest-1116 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x20000080L, 0x0L, 0x1000000400000000L, 0x14a2000000L, + 0x1000000000240080L, false, 0, 0x0L), + 4 + ), + 122540 + ); + + // gentest-1117 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x2000001000L, 0x0L, 0x1000000400000000L, 0x3482000000L, + 0x1000000000241000L, true, 0, 0x0L), + 4 + ), + 100961 + ); + + // gentest-1118 + assertEqual( + perft( + Board(0x1080240000L, 0x2000000L, 0x0L, 0x20001000L, 0x0L, 0x800040000000000L, 0x410a2000000L, + 0x800000000241000L, false, 0, 0x0L), + 4 + ), + 105615 + ); + + // gentest-1119 + assertEqual( + perft( + Board(0x1080200400L, 0x2000000L, 0x0L, 0x20100000L, 0x0L, 0x800020000000000L, 0x210a2000000L, + 0x800000000300400L, true, 0, 0x0L), + 4 + ), + 132510 + ); + + // gentest-1120 + assertEqual( + perft( + Board(0x1080200400L, 0x2000000L, 0x0L, 0x8100000L, 0x0L, 0x401000000000000L, 0x100108a000000L, + 0x400000000300400L, false, 0, 0x0L), + 4 + ), + 85009 + ); + + // gentest-1121 + assertEqual( + perft( + Board(0x80200000L, 0x2000000L, 0x4L, 0x1000080000L, 0x0L, 0x401000000000000L, 0x1000082080000L, + 0x400001000200004L, true, 0, 0x0L), + 4 + ), + 161052 + ); + + // gentest-1122 + assertEqual( + perft( + Board(0x80200000L, 0x40000000000L, 0x4L, 0x8000010000000L, 0x0L, 0x401000000000000L, 0x9040080000000L, + 0x400000010200004L, false, 0, 0x0L), + 4 + ), + 178874 + ); + + // gentest-1123 + assertEqual( + perft( + Board(0x80200000L, 0x40000000000L, 0x4L, 0x10000000001000L, 0x0L, 0x401000000000000L, + 0x11040080000000L, 0x400000000201004L, true, 0, 0x0L), + 4 + ), + 151000 + ); + + // gentest-1124 + assertEqual( + perft( + Board(0x80200000L, 0x40000000000L, 0x4L, 0x10000000000800L, 0x0L, 0x401000000000000L, + 0x11040080000000L, 0x400000000200804L, false, 0, 0x0L), + 4 + ), + 132545 + ); + + // gentest-1125 + assertEqual( + perft( + Board(0x80200000L, 0x40000000000L, 0x200L, 0x8000000002000L, 0x0L, 0x401000000000000L, + 0x9040080000000L, 0x400000000202200L, true, 0, 0x0L), + 4 + ), + 112707 + ); + + // gentest-1126 + assertEqual( + perft( + Board(0x80200000L, 0x40000000000L, 0x200L, 0x8000000008000L, 0x0L, 0x401000000000000L, + 0x9040080000000L, 0x400000000208200L, false, 0, 0x0L), + 4 + ), + 149623 + ); + + // gentest-1127 + assertEqual( + perft( + Board(0x80200000L, 0x40000000000L, 0x1000000000L, 0x8000L, 0x0L, 0xa000000000000L, 0x2040080000000L, + 0x8001000208000L, true, 0, 0x0L), + 4 + ), + 84714 + ); + + // gentest-1128 + assertEqual( + perft( + Board(0x80200000L, 0x2000000L, 0x8000000L, 0x8000L, 0x0L, 0x8010000000000L, 0x10082000000L, + 0x8000008208000L, false, 0, 0x0L), + 4 + ), + 82950 + ); + + // gentest-1129 + assertEqual( + perft( + Board(0x80200000L, 0x40000000000L, 0x20000000000L, 0x1000L, 0x0L, 0x8010000000000L, 0x50080000000L, + 0x8020000201000L, true, 0, 0x0L), + 4 + ), + 71949 + ); + + // gentest-1130 + assertEqual( + perft( + Board(0x80200000L, 0x4000000L, 0x20000000000L, 0x800L, 0x0L, 0x8010000000000L, 0x10084000000L, + 0x8020000200800L, false, 0, 0x0L), + 4 + ), + 77526 + ); + + // gentest-1131 + assertEqual( + perft( + Board(0x80200000L, 0x1000000000L, 0x8000000L, 0x800L, 0x0L, 0x110000000000L, 0x11080000000L, + 0x100008200800L, true, 0, 0x0L), + 4 + ), + 101687 + ); + + // gentest-1132 + assertEqual( + perft( + Board(0x8000200000L, 0x1000000000L, 0x8000000L, 0x800L, 0x0L, 0x80200000000L, 0x9200000000L, + 0x80008200800L, false, 0, 0x0L), + 4 + ), + 89069 + ); + + // gentest-1133 + assertEqual( + perft( + Board(0x8000002000L, 0x400000000000L, 0x40L, 0x800L, 0x0L, 0x80200000000L, 0x408200000000L, + 0x80000002840L, true, 0, 0x0L), + 4 + ), + 52168 + ); + + // gentest-1134 + assertEqual( + perft( + Board(0x8000002000L, 0x20000000L, 0x40L, 0x80000L, 0x0L, 0xa0000000000L, 0x28020000000L, + 0x80000082040L, false, 0, 0x0L), + 4 + ), + 48436 + ); + + // gentest-1135 + assertEqual( + perft( + Board(0x8000002000L, 0x4000L, 0x40L, 0x10000000L, 0x0L, 0xa0000000000L, 0x28000004000L, + 0x80010002040L, true, 0, 0x0L), + 4 + ), + 53041 + ); + + // gentest-1136 + assertEqual( + perft( + Board(0x800000002000L, 0x4000L, 0x40L, 0x10000000000000L, 0x0L, 0x80200000000L, 0x800200004000L, + 0x10080000002040L, false, 0, 0x0L), + 4 + ), + 54004 + ); + + // gentest-1137 + assertEqual( + perft( + Board(0x800000002000L, 0x10L, 0x40L, 0x1000000000000000L, 0x0L, 0x80200000000L, 0x800200000010L, + 0x1000080000002040L, true, 0, 0x0L), + 4 + ), + 79958 + ); + + // gentest-1138 + assertEqual( + perft( + Board(0x800000002000L, 0x80000L, 0x40L, 0x1000000000000000L, 0x0L, 0x110000000000L, 0x810000080000L, + 0x1000100000002040L, false, 0, 0x0L), + 4 + ), + 61043 + ); + + // gentest-1139 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1140 + assertEqual( + perft( + Board(0xfd02004400bb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4400bbffL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 282565 + ); + + // gentest-1141 + assertEqual( + perft( + Board(0xf803044410ab00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4410abffL, 0xfff8030400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 286279 + ); + + // gentest-1142 + assertEqual( + perft( + Board(0xf80304c6102900L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xc61029ffL, 0xfdf8070400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 596607 + ); + + // gentest-1143 + assertEqual( + perft( + Board(0xe80314c6102900L, 0x4000040000000042L, 0x410000000000024L, 0x8100000000000081L, + 0x800000001000000L, 0x1000000000000010L, 0xc71029f7L, 0xddf8071400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 917769 + ); + + // gentest-1144 + assertEqual( + perft( + Board(0xe8039446102900L, 0x240000000042L, 0x410000000000024L, 0x8100000000000081L, 0x800000001000000L, + 0x1000000000000008L, 0x80471029efL, 0x9df8271400000000L, false, 0, 0x8100000000000000L), + 4 + ), + 972211 + ); + + // gentest-1145 + assertEqual( + perft( + Board(0xe8039446300900L, 0x240000000042L, 0x410000000000024L, 0x8002000000000081L, 0x800000001000000L, + 0x1000000000000008L, 0x80473009efL, 0x9cfa271400000000L, true, 0, 0x8000000000000000L), + 4 + ), + 858773 + ); + + // gentest-1146 + assertEqual( + perft( + Board(0xe8039404300900L, 0x40040000042L, 0x410000000000024L, 0x8002000000000081L, 0x800000100000000L, + 0x1000000000000008L, 0x85043009efL, 0x9cfa071040000000L, false, 0, 0x8000000000000000L), + 4 + ), + 1108358 + ); + + // gentest-1147 + assertEqual( + perft( + Board(0xe8039424100900L, 0x40000008042L, 0x2400000000000024L, 0x8002000000000081L, 0x800000100000000L, + 0x1000000000000008L, 0x85241009efL, 0xbcea071000008000L, true, 0, 0x8000000000000000L), + 4 + ), + 1127707 + ); + + // gentest-1148 + assertEqual( + perft( + Board(0xe803b404100900L, 0x40000008042L, 0x2400000000000024L, 0x8002000000000081L, 0x200100000000L, + 0x1000000000001000L, 0xa5041019e7L, 0xb4ea271000008000L, false, 0, 0x8000000000000000L), + 4 + ), + 999796 + ); + + // gentest-1149 + assertEqual( + perft( + Board(0xe803b404100900L, 0x40000000062L, 0x2400000000000004L, 0x8001000000000081L, 0x200100000000L, + 0x1000000000002000L, 0xa5041029c7L, 0xb4e9271000000020L, true, 0, 0x8000000000000000L), + 4 + ), + 1162455 + ); + + // gentest-1150 + assertEqual( + perft( + Board(0xe00bb414000900L, 0x40000010060L, 0x2400000000000004L, 0x8001000000000081L, 0x200100000000L, + 0x1000000000002000L, 0xa5140129c5L, 0xb4e12f1000000020L, false, 0, 0x8000000000000000L), + 4 + ), + 1099873 + ); + + // gentest-1151 + assertEqual( + perft( + Board(0xe009b614000900L, 0x40000010060L, 0x2400000000000004L, 0x8001000000000081L, 0x180000000L, + 0x1000000000200000L, 0xa5142109c5L, 0xb4e10d1280000020L, true, 0, 0x8000000000000000L), + 4 + ), + 987483 + ); + + // gentest-1152 + assertEqual( + perft( + Board(0xe001be14000900L, 0x40000010060L, 0x2400000000000004L, 0x8001000080000001L, 0x1000000L, + 0x1000000000200000L, 0xa495210945L, 0xb4e1051a00000020L, false, 0, 0x8000000000000000L), + 4 + ), + 999247 + ); + + // gentest-1153 + assertEqual( + perft( + Board(0xc021bc14000900L, 0x40000010060L, 0x2400000000000200L, 0x8001000080000001L, 0x1000000L, + 0x1000000000200000L, 0xa491210b41L, 0xb4c1251804000020L, true, 0, 0x8000000000000000L), + 4 + ), + 1165214 + ); + + // gentest-1154 + assertEqual( + perft( + Board(0xc021bc14000900L, 0x40000010060L, 0x2002000008000000L, 0x8001000040000001L, 0x1000000L, + 0x1000000000200000L, 0xa459210941L, 0xb0c3251804000020L, false, 0, 0x8000000000000000L), + 4 + ), + 643467 + ); + + // gentest-1155 + assertEqual( + perft( + Board(0x8061bc14000900L, 0x40000010060L, 0x12000008000000L, 0x8001000040000008L, 0x1000000L, + 0x1000000000200000L, 0xa459210948L, 0x9093651804000020L, true, 0, 0x8000000000000000L), + 4 + ), + 1020037 + ); + + // gentest-1156 + assertEqual( + perft( + Board(0x8061bc14000900L, 0x40000010060L, 0x12000008000000L, 0x4001000040000008L, 0x1000000L, + 0x1000000000001000L, 0xa459011948L, 0x5093651804000020L, false, 0, 0x0L), + 4 + ), + 1061448 + ); + + // gentest-1157 + assertEqual( + perft( + Board(0x8061bc14000900L, 0x40000010060L, 0x12000000002000L, 0x41000040000008L, 0x1000000L, + 0x800000000001000L, 0xa451013948L, 0x8d3651804000020L, true, 0, 0x0L), + 4 + ), + 1089533 + ); + + // gentest-1158 + assertEqual( + perft( + Board(0x8061bc14000900L, 0x40000010040L, 0x410000000002000L, 0x41000000400008L, 0x1000000L, + 0x800000000000020L, 0xa411412968L, 0xcd1651804000000L, false, 0, 0x0L), + 4 + ), + 1326572 + ); + + // gentest-1159 + assertEqual( + perft( + Board(0x8061bc14000900L, 0x40000010040L, 0x2400000000002000L, 0x11000000020008L, 0x1000000L, + 0x800000000000020L, 0xa411032968L, 0x2c91651804000000L, true, 0, 0x0L), + 4 + ), + 1797989 + ); + + // gentest-1160 + assertEqual( + perft( + Board(0x8061bc14000900L, 0x40000010040L, 0x2400000080000000L, 0x1001000000080008L, 0x1000000L, + 0x800000000000020L, 0xa491090968L, 0x3c81651804000000L, false, 0, 0x0L), + 4 + ), + 1646818 + ); + + // gentest-1161 + assertEqual( + perft( + Board(0xe1bc14000900L, 0x40000210000L, 0x2400000080000000L, 0x1008000000080008L, 0x1000000L, + 0x800000000000020L, 0xa491290928L, 0x3c08e51804000000L, true, 0, 0x0L), + 4 + ), + 1315395 + ); + + // gentest-1162 + assertEqual( + perft( + Board(0xe1bc14000900L, 0x40000210000L, 0x2400000080000000L, 0x1020000000020002L, 0x1000000L, + 0x800000000000020L, 0xa491230922L, 0x3c20e51804000000L, false, 0, 0x0L), + 4 + ), + 1989603 + ); + + // gentest-1163 + assertEqual( + perft( + Board(0xe0b414000900L, 0x40000210000L, 0x2400000080000000L, 0x1020000000020002L, 0x10000000000L, + 0x8000000000020L, 0x1a480230922L, 0x3428e41014000000L, true, 0, 0x0L), + 4 + ), + 1267239 + ); + + // gentest-1164 + assertEqual( + perft( + Board(0xe0b414000900L, 0x2210000L, 0x2400004000000000L, 0x1020000000020002L, 0x10000000000L, + 0x8000000000010L, 0x1e400230912L, 0x3428e01016000000L, false, 0, 0x0L), + 4 + ), + 1113820 + ); + + // gentest-1165 + assertEqual( + perft( + Board(0xe09414000900L, 0x10000210000L, 0x2400004000000000L, 0x1010000000020002L, 0x0L, + 0x8000000000010L, 0x40c400230912L, 0x3418a11014000000L, true, 0, 0x0L), + 4 + ), + 495964 + ); + + // gentest-1166 + assertEqual( + perft( + Board(0xc09414000900L, 0x10000210000L, 0x2400200000000000L, 0x1080000200000002L, 0x0L, + 0x8000000000010L, 0x608600210912L, 0x3488811014000000L, false, 0, 0x0L), + 4 + ), + 628858 + ); + + // gentest-1167 + assertEqual( + perft( + Board(0xc09414000900L, 0x4000000210000L, 0x2400200000000000L, 0x90000200000200L, 0x0L, + 0x8000000000010L, 0x608600210b10L, 0x249c801014000000L, true, 0, 0x0L), + 4 + ), + 549018 + ); + + // gentest-1168 + assertEqual( + perft( + Board(0x80808414000900L, 0x4000000210000L, 0x2400001000000000L, 0x1000000200000200L, 0x0L, + 0x8000000000010L, 0x80009600210b10L, 0x340c800014000000L, false, 0, 0x0L), + 4 + ), + 705175 + ); + + // gentest-1169 + assertEqual( + perft( + Board(0x80808414000900L, 0x4000000210000L, 0x2400001000000000L, 0x1000000000020200L, 0x0L, + 0x8000000000010L, 0x80009400230b10L, 0x340c800014000000L, true, 0, 0x0L), + 4 + ), + 747027 + ); + + // gentest-1170 + assertEqual( + perft( + Board(0x80808410000900L, 0x100004008000L, 0x2400001000000000L, 0x1000000000020200L, 0x0L, + 0x8000000000010L, 0x80009404028b10L, 0x3408900010000000L, false, 0, 0x0L), + 4 + ), + 692037 + ); + + // gentest-1171 + assertEqual( + perft( + Board(0x80808410000900L, 0x100004008000L, 0x600001000000000L, 0x1000000000000200L, 0x0L, + 0x8000000000010L, 0x80009404008b10L, 0x1608900010000000L, true, 0, 0x0L), + 4 + ), + 721107 + ); + + // gentest-1172 + assertEqual( + perft( + Board(0x80808410010800L, 0x100004008000L, 0x600000008000000L, 0x10000000000200L, 0x0L, + 0x8000000000010L, 0x8000840c018a10L, 0x618900010000000L, false, 0, 0x0L), + 4 + ), + 701429 + ); + + // gentest-1173 + assertEqual( + perft( + Board(0x808410010800L, 0x4028000L, 0x8600000000000000L, 0x10000000000200L, 0x0L, 0x8000000000010L, + 0x8000008404018a10L, 0x618800010020000L, true, 0, 0x0L), + 4 + ), + 396433 + ); + + // gentest-1174 + assertEqual( + perft( + Board(0x808410010800L, 0x100028000L, 0x8401000000000000L, 0x10000000000100L, 0x0L, 0x8000000000010L, + 0x8000008500018910L, 0x419800010020000L, false, 0, 0x0L), + 4 + ), + 292273 + ); + + // gentest-1175 + assertEqual( + perft( + Board(0x808410010800L, 0x2000000008001L, 0x8401000000000000L, 0x80000000000100L, 0x0L, + 0x8000000000010L, 0x8002008400018910L, 0x489800010000001L, true, 0, 0x0L), + 4 + ), + 167383 + ); + + // gentest-1176 + assertEqual( + perft( + Board(0x808410010800L, 0x2000000028000L, 0x401000000040000L, 0x80000000000100L, 0x0L, + 0x8000000000020L, 0x2008400058920L, 0x489800010020000L, false, 0, 0x0L), + 4 + ), + 236670 + ); + + // gentest-1177 + assertEqual( + perft( + Board(0x808410010800L, 0x28000L, 0x3000100000000L, 0x80000000000100L, 0x0L, 0x400000000000020L, + 0x8500018920L, 0x483800010020000L, true, 0, 0x0L), + 4 + ), + 187738 + ); + + // gentest-1178 + assertEqual( + perft( + Board(0x808410010800L, 0x28000L, 0x3000100000000L, 0x80000000000001L, 0x0L, 0x200000000001000L, + 0x8500019801L, 0x283800010020000L, false, 0, 0x0L), + 4 + ), + 231591 + ); + + // gentest-1179 + assertEqual( + perft( + Board(0x808410010000L, 0x8800L, 0x101000100000000L, 0x80000000000040L, 0x0L, 0x200000000001000L, + 0x8500019040L, 0x381800010000800L, true, 0, 0x0L), + 4 + ), + 296004 + ); + + // gentest-1180 + assertEqual( + perft( + Board(0x808410010000L, 0x8000L, 0x101000000040000L, 0x40000000000040L, 0x0L, 0x200000000000800L, + 0x8400058840L, 0x341800010000000L, false, 0, 0x0L), + 4 + ), + 335369 + ); + + // gentest-1181 + assertEqual( + perft( + Board(0x808410010000L, 0x8000L, 0x101000002000000L, 0x40L, 0x0L, 0x200000000000800L, 0x8402018800L, + 0x301800010000040L, true, 0, 0x0L), + 4 + ), + 67616 + ); + + // gentest-1182 + assertEqual( + perft( + Board(0x808410010000L, 0x8000L, 0x101000100000000L, 0x40000000L, 0x0L, 0x200000000000008L, + 0x8500018008L, 0x301800050000000L, false, 0, 0x0L), + 4 + ), + 83541 + ); + + // gentest-1183 + assertEqual( + perft( + Board(0x808410010000L, 0x8000L, 0x1040000000010L, 0x40L, 0x0L, 0x200000000000008L, 0x8400018018L, + 0x201840010000040L, true, 0, 0x0L), + 4 + ), + 57578 + ); + + // gentest-1184 + assertEqual( + perft( + Board(0x808410010000L, 0x8000L, 0x101000000000010L, 0x40L, 0x0L, 0x200000000100000L, 0x8400118010L, + 0x301800010000040L, false, 0, 0x0L), + 4 + ), + 69089 + ); + + // gentest-1185 + assertEqual( + perft( + Board(0x808410010000L, 0x8000L, 0x101000000000000L, 0x20L, 0x0L, 0x200000008000000L, 0x8408018000L, + 0x301800010000020L, true, 0, 0x0L), + 4 + ), + 32415 + ); + + // gentest-1186 + assertEqual( + perft( + Board(0x808411000000L, 0x8000L, 0x101000000000000L, 0x2000000000000000L, 0x0L, 0x200000000040000L, + 0x8401048000L, 0x2301800010000000L, false, 0, 0x0L), + 4 + ), + 57743 + ); + + // gentest-1187 + assertEqual( + perft( + Board(0x808411000000L, 0x40000000L, 0x101000000000000L, 0x200000000000L, 0x0L, 0x400000000040000L, + 0x8441040000L, 0x501a00010000000L, true, 0, 0x0L), + 4 + ), + 112905 + ); + + // gentest-1188 + assertEqual( + perft( + Board(0x48011000000L, 0x800000000000L, 0x101000000000000L, 0x100000000000L, 0x0L, 0x400000000040000L, + 0x848001040000L, 0x501100010000000L, false, 0, 0x0L), + 4 + ), + 61533 + ); + + // gentest-1189 + assertEqual( + perft( + Board(0x48011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, + 0x800000002000000L, 0x848003000000L, 0x911000010000000L, true, 0, 0x0L), + 4 + ), + 54337 + ); + + // gentest-1190 + assertEqual( + perft( + Board(0x4008011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, + 0x8000000010000L, 0x4808001010000L, 0x119000010000000L, false, 0, 0x0L), + 4 + ), + 86936 + ); + + // gentest-1191 + assertEqual( + perft( + Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x4000000000200L, + 0x808001000200L, 0x115000010000000L, true, 0, 0x0L), + 4 + ), + 98282 + ); + + // gentest-1192 + assertEqual( + perft( + Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x20000000400L, + 0x20008001000400L, 0x111020010000000L, false, 0, 0x0L), + 4 + ), + 64680 + ); + + // gentest-1193 + assertEqual( + perft( + Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x20000000400L, + 0x808001000400L, 0x111020010000000L, true, 0, 0x0L), + 4 + ), + 56318 + ); + + // gentest-1194 + assertEqual( + perft( + Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x8000000000000L, 0x0L, 0x20000040000L, + 0x808001040000L, 0x109020010000000L, false, 0, 0x0L), + 4 + ), + 55122 + ); + + // gentest-1195 + assertEqual( + perft( + Board(0x8011000000L, 0x800000000000L, 0x101000000000000L, 0x10000000000000L, 0x0L, 0x20000000800L, + 0x808001000800L, 0x111020010000000L, true, 0, 0x0L), + 4 + ), + 52261 + ); + + // gentest-1196 + assertEqual( + perft( + Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x1000000000L, 0x0L, 0x20000001000L, + 0x20008001001000L, 0x101021010000000L, false, 0, 0x0L), + 4 + ), + 67131 + ); + + // gentest-1197 + assertEqual( + perft( + Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x80000L, 0x0L, 0x20000100000L, + 0x20008001100000L, 0x101020010080000L, true, 0, 0x0L), + 4 + ), + 19204 + ); + + // gentest-1198 + assertEqual( + perft( + Board(0x8011000000L, 0x20000000000000L, 0x101000000000000L, 0x80000L, 0x0L, 0x400002000L, + 0x20008001002000L, 0x101000410080000L, false, 0, 0x0L), + 4 + ), + 74859 + ); + + // gentest-1199 + assertEqual( + perft( + Board(0x8011000000L, 0x800000000000000L, 0x300000000000000L, 0x80000L, 0x0L, 0x20000002000L, + 0x800008001002000L, 0x300020010080000L, true, 0, 0x0L), + 4 + ), + 83660 + ); + + // gentest-1200 + assertEqual( + perft( + Board(0x8011000000L, 0x2000000000000000L, 0x300000000000000L, 0x10000L, 0x0L, 0x20000002000L, + 0x2000008001002000L, 0x300020010010000L, false, 0, 0x0L), + 4 + ), + 67148 + ); + + def batch3(): Unit = + // gentest-1201 + assertEqual( + perft( + Board(0x8001100000L, 0x2000000000000000L, 0x100000020000000L, 0x10000L, 0x0L, 0x20000000040L, + 0x2000008001000040L, 0x100020020110000L, true, 0, 0x0L), + 4 + ), + 32103 + ); + + // gentest-1202 + assertEqual( + perft( + Board(0x800001100000L, 0x2000000000000000L, 0x100000020000000L, 0x10000L, 0x0L, 0x2000000004000L, + 0x2000800001004000L, 0x102000020110000L, false, 0, 0x0L), + 4 + ), + 38143 + ); + + // gentest-1203 + assertEqual( + perft( + Board(0x800100001000L, 0x2000000000000000L, 0x100000020000000L, 0x80000L, 0x0L, 0x2000000004000L, + 0x2000800100004000L, 0x102000020081000L, true, 0, 0x0L), + 4 + ), + 71175 + ); + + // gentest-1204 + assertEqual( + perft( + Board(0x800100001000L, 0x100000000000L, 0x100000020000000L, 0x80000L, 0x0L, 0x1000000002000L, + 0x900100002000L, 0x101000020081000L, false, 0, 0x0L), + 4 + ), + 166012 + ); + + // gentest-1205 + assertEqual( + perft( + Board(0x800100001000L, 0x400000000L, 0x40020000000L, 0x10000L, 0x0L, 0x1000000002000L, + 0x800500002000L, 0x1040020011000L, true, 0, 0x0L), + 4 + ), + 182597 + ); + + // gentest-1206 + assertEqual( + perft( + Board(0x800100001000L, 0x8000000L, 0x220000000L, 0x10000L, 0x0L, 0x1000000002000L, 0x800108002000L, + 0x1000220011000L, false, 0, 0x0L), + 4 + ), + 147301 + ); + + // gentest-1207 + assertEqual( + perft( + Board(0x800000001000L, 0x200000L, 0x220000000L, 0x100000000L, 0x0L, 0x100000000002000L, + 0x800000202000L, 0x100000320001000L, true, 0, 0x0L), + 4 + ), + 113619 + ); + + // gentest-1208 + assertEqual( + perft( + Board(0x800000001000L, 0x8000L, 0x200100000L, 0x100000000L, 0x0L, 0x100000000000010L, 0x800000008010L, + 0x100000300101000L, false, 0, 0x0L), + 4 + ), + 23064 + ); + + // gentest-1209 + assertEqual( + perft( + Board(0x800000001000L, 0x20L, 0x20200000000L, 0x10000L, 0x0L, 0x100000000000010L, 0x800000000030L, + 0x100020200011000L, true, 0, 0x0L), + 4 + ), + 43455 + ); + + // gentest-1210 + assertEqual( + perft( + Board(0x800000001000L, 0x10000000L, 0x20200000000L, 0x100000000L, 0x0L, 0x100000000000010L, + 0x800010000010L, 0x100020300001000L, false, 0, 0x0L), + 4 + ), + 57585 + ); + + // gentest-1211 + assertEqual( + perft( + Board(0x800000001000L, 0x10000000L, 0x30000000000L, 0x10000L, 0x0L, 0x100000000000800L, + 0x800010000800L, 0x100030000011000L, true, 0, 0x0L), + 4 + ), + 104632 + ); + + // gentest-1212 + assertEqual( + perft( + Board(0x80000000001000L, 0x4000000000L, 0x1010000000000L, 0x10000L, 0x0L, 0x100000000000800L, + 0x80004000000800L, 0x101010000011000L, false, 0, 0x0L), + 4 + ), + 94615 + ); + + // gentest-1213 + assertEqual( + perft( + Board(0x80000000001000L, 0x100000000000L, 0x3000000000000L, 0x10000L, 0x0L, 0x100000000000800L, + 0x80100000000800L, 0x103000000011000L, true, 0, 0x0L), + 4 + ), + 148843 + ); + + // gentest-1214 + assertEqual( + perft( + Board(0x1000L, 0x100000000000L, 0x2000000042000L, 0x10000L, 0x0L, 0x100000000000800L, 0x100000040800L, + 0x102000000013000L, false, 0, 0x0L), + 4 + ), + 283639 + ); + + // gentest-1215 + assertEqual( + perft( + Board(0x1000L, 0x4000000000000L, 0x2000008040000L, 0x10000L, 0x0L, 0x200000000000800L, + 0x4000000040800L, 0x202000008011000L, true, 0, 0x0L), + 4 + ), + 260578 + ); + + // gentest-1216 + assertEqual( + perft( + Board(0x1000L, 0x4000000000000L, 0x200000a000000L, 0x400000L, 0x0L, 0x200000000000010L, + 0x4000002000010L, 0x202000008401000L, false, 0, 0x0L), + 4 + ), + 277288 + ); + + // gentest-1217 + assertEqual( + perft( + Board(0x1000L, 0x4000000000000L, 0x2080000000001L, 0x400000L, 0x0L, 0x200000000000010L, + 0x4080000000010L, 0x202000000401001L, true, 0, 0x0L), + 4 + ), + 154705 + ); + + // gentest-1218 + assertEqual( + perft( + Board(0x0L, 0x4000000000000L, 0x2002000000000001L, 0x4000000000L, 0x0L, 0x200000000001000L, + 0x2004000000001000L, 0x202004000000001L, false, 0, 0x0L), + 4 + ), + 299638 + ); + + // gentest-1219 + assertEqual( + perft( + Board(0x0L, 0x4000000000000L, 0x2000040000000001L, 0x400000L, 0x0L, 0x200000000002000L, + 0x2004000000002000L, 0x200040000400001L, true, 0, 0x0L), + 4 + ), + 269265 + ); + + // gentest-1220 + assertEqual( + perft( + Board(0x0L, 0x4000000000000L, 0x40000010001L, 0x100000L, 0x0L, 0x200000000002000L, 0x4000000012000L, + 0x200040000100001L, false, 0, 0x0L), + 4 + ), + 259327 + ); + + // gentest-1221 + assertEqual( + perft( + Board(0x0L, 0x1000000000000000L, 0x40000010001L, 0x8000000000L, 0x0L, 0x200000000002000L, + 0x1000000000012000L, 0x200048000000001L, true, 0, 0x0L), + 4 + ), + 286191 + ); + + // gentest-1222 + assertEqual( + perft( + Board(0x0L, 0x1000000000000000L, 0x40400000001L, 0x8000000000L, 0x0L, 0x400000000000010L, + 0x1000000400000010L, 0x400048000000001L, false, 0, 0x0L), + 4 + ), + 315549 + ); + + // gentest-1223 + assertEqual( + perft( + Board(0x0L, 0x1000000000000000L, 0x40040400000000L, 0x80L, 0x0L, 0x400000000001000L, + 0x1000000400001000L, 0x440040000000080L, true, 0, 0x0L), + 4 + ), + 343615 + ); + + // gentest-1224 + assertEqual( + perft( + Board(0x0L, 0x80000000000L, 0x40040400000000L, 0x80000000000000L, 0x0L, 0x400000000080000L, + 0x80400080000L, 0x4c0040000000000L, false, 0, 0x0L), + 4 + ), + 44825 + ); + + // gentest-1225 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1226 + assertEqual( + perft( + Board(0xfe00010800f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x800fff7L, 0xfffe000100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 452342 + ); + + // gentest-1227 + assertEqual( + perft( + Board(0xfe000108807700L, 0x200200000000042L, 0x2400000000000024L, 0x8000010000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x8807ff7L, 0xbefe210100000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 609289 + ); + + // gentest-1228 + assertEqual( + perft( + Board(0xfc00030c807300L, 0x200200000000042L, 0x2400000000000024L, 0x8000010000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xc8073ffL, 0xbefc210300000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 704688 + ); + + // gentest-1229 + assertEqual( + perft( + Board(0xf4000b0c807300L, 0x200200000000042L, 0x2400004000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400c8073fbL, 0xbff4200b00000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 1100571 + ); + + // gentest-1230 + assertEqual( + perft( + Board(0xf4000b0ca05300L, 0x200200000000042L, 0x2002004000000020L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x400ca05bf3L, 0xbbf6200b00000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 920978 + ); + + // gentest-1231 + assertEqual( + perft( + Board(0xe4001b0ca05300L, 0x200008000000042L, 0x2002000020000020L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x2ca05bf3L, 0xbbe6009b00000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 1564987 + ); + + // gentest-1232 + assertEqual( + perft( + Board(0xe4001b0ca25100L, 0x200008000000042L, 0x2002000020000020L, 0x8000010000000081L, + 0x800000000000004L, 0x1000000000000010L, 0x2ca251f7L, 0xbae6019b00000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 1978598 + ); + + // gentest-1233 + assertEqual( + perft( + Board(0xe400020da25100L, 0x200008000000042L, 0x2002001000000020L, 0x8000010000000081L, + 0x800000000000004L, 0x1000000000000010L, 0x1008a251f7L, 0xbae6018205000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 2719707 + ); + + // gentest-1234 + assertEqual( + perft( + Board(0xe000020da25100L, 0x200008000000042L, 0x2006000000000020L, 0x8000010000000081L, 0x80000004L, + 0x1000000000000008L, 0x4000008a251efL, 0xb2e2018285000000L, false, 0, 0x8000000000000000L), + 4 + ), + 2662389 + ); + + // gentest-1235 + assertEqual( + perft( + Board(0xa040020fa05100L, 0x200008000000042L, 0x2006000000000020L, 0x4000010000000081L, 0x80000004L, + 0x1000000000000008L, 0x400000aa051efL, 0x72a2418285000000L, true, 0, 0x0L), + 4 + ), + 1944381 + ); + + // gentest-1236 + assertEqual( + perft( + Board(0xa040020fa05100L, 0x200000020000042L, 0x2006000000000020L, 0x4000010000000081L, + 0x800080000000L, 0x1000000000000004L, 0x480000aa051e7L, 0x72a24102a5000000L, false, 0, 0x0L), + 4 + ), + 1793519 + ); + + // gentest-1237 + assertEqual( + perft( + Board(0x8010420fa05100L, 0x200000020000042L, 0x2006000000000020L, 0x4000010000000081L, 0x80000000L, + 0x1000000000000004L, 0x400000aa051e7L, 0x72821142a5000000L, true, 0, 0x0L), + 4 + ), + 869683 + ); + + // gentest-1238 + assertEqual( + perft( + Board(0x8010420fa05100L, 0x200000020000042L, 0x2002020000000020L, 0x4000080000008001L, 0x80000000L, + 0x1000000000000004L, 0x2000aa0d167L, 0x72821842a5000000L, false, 0, 0x0L), + 4 + ), + 695762 + ); + + // gentest-1239 + assertEqual( + perft( + Board(0xd20fa15000L, 0x200000020000042L, 0x2002020000000020L, 0x4000080000008001L, 0x80000000L, + 0x1000000000000004L, 0x2000aa1d067L, 0x720208d2a5000000L, true, 0, 0x0L), + 4 + ), + 721861 + ); + + // gentest-1240 + assertEqual( + perft( + Board(0xd20f611000L, 0x200000020000042L, 0x2002000400000020L, 0x4000080000008001L, 0x800000L, + 0x1000000000000004L, 0x40a619067L, 0x720208d225800000L, false, 0, 0x0L), + 4 + ), + 1307118 + ); + + // gentest-1241 + assertEqual( + perft( + Board(0xd20f611000L, 0x8100000800002L, 0x2002000400000020L, 0x4000080000008001L, 0x0L, + 0x1000000000000004L, 0x40ae19027L, 0x700a18d205000000L, true, 0, 0x0L), + 4 + ), + 777942 + ); + + // gentest-1242 + assertEqual( + perft( + Board(0xd20f611000L, 0x8100000002002L, 0x2002020000000020L, 0x4000000800008001L, 0x0L, + 0x1000000000000004L, 0x2000a61b027L, 0x700a10da05000000L, false, 0, 0x0L), + 4 + ), + 958150 + ); + + // gentest-1243 + assertEqual( + perft( + Board(0xc20d710000L, 0x8100000002002L, 0x2020002000020L, 0x4000000800008001L, 0x0L, + 0x1000000000000004L, 0x2000071a027L, 0x500a10ca0f000000L, true, 0, 0x0L), + 4 + ), + 1672700 + ); + + // gentest-1244 + assertEqual( + perft( + Board(0x428d710000L, 0x8100000002800L, 0x2020002000020L, 0x4000000800800001L, 0x0L, + 0x1000000000000004L, 0x20000f12825L, 0x500a104a8f000000L, false, 0, 0x0L), + 4 + ), + 1612858 + ); + + // gentest-1245 + assertEqual( + perft( + Board(0x4285710000L, 0x8100000002800L, 0x12020000000020L, 0x4000000800000081L, 0x0L, + 0x1000000000000004L, 0x200006128a5L, 0x501a104a85100000L, true, 0, 0x0L), + 4 + ), + 2118963 + ); + + // gentest-1246 + assertEqual( + perft( + Board(0x42a5510000L, 0x8100000002800L, 0x20a0000000020L, 0x4000000800000041L, 0x0L, + 0x1000000000000004L, 0x20020412865L, 0x500a184a85100000L, false, 0, 0x0L), + 4 + ), + 2347640 + ); + + // gentest-1247 + assertEqual( + perft( + Board(0x42a5500000L, 0x8100000002800L, 0x60000010020L, 0x4000000800000041L, 0x0L, 0x1000000000000400L, + 0x20020402c61L, 0x5008144a85110000L, true, 0, 0x0L), + 4 + ), + 2593114 + ); + + // gentest-1248 + assertEqual( + perft( + Board(0x42a5500000L, 0x100400202000L, 0x60000010020L, 0x4000000800000041L, 0x0L, 0x1000000000000002L, + 0x20020602063L, 0x5000144e85110000L, false, 0, 0x0L), + 4 + ), + 1961773 + ); + + // gentest-1249 + assertEqual( + perft( + Board(0x4225500000L, 0x100480002000L, 0x100020000010020L, 0x4000001000000041L, 0x0L, + 0x1000000000000002L, 0x200a0402063L, 0x5100105605110000L, true, 0, 0x0L), + 4 + ), + 1381459 + ); + + // gentest-1250 + assertEqual( + perft( + Board(0x4225500000L, 0x40001400002000L, 0x100020000010020L, 0x4000000000000041L, 0x0L, + 0x1000000000000002L, 0x21020402063L, 0x5140004605110000L, false, 0, 0x0L), + 4 + ), + 987735 + ); + + // gentest-1251 + assertEqual( + perft( + Board(0x4027500000L, 0x40001400000000L, 0x20010010020L, 0x4000000000000041L, 0x0L, + 0x1000000000000002L, 0x21020400063L, 0x5040004417110000L, true, 0, 0x0L), + 4 + ), + 74875 + ); + + // gentest-1252 + assertEqual( + perft( + Board(0x4027500000L, 0x3000000000L, 0x410010020L, 0x4000000000000041L, 0x0L, 0x1000000000000100L, + 0x1420400161L, 0x5000006017110000L, false, 0, 0x0L), + 4 + ), + 670288 + ); + + // gentest-1253 + assertEqual( + perft( + Board(0x4027500000L, 0x42000000000L, 0x400004220L, 0x4000000000000041L, 0x0L, 0x1000000000000100L, + 0x40420400161L, 0x5000006007104200L, true, 0, 0x0L), + 4 + ), + 999451 + ); + + // gentest-1254 + assertEqual( + perft( + Board(0x4025500000L, 0x1000080000000L, 0x2004220L, 0x4000000000000041L, 0x0L, 0x1000000000000100L, + 0x1000022400161L, 0x5000004085104200L, false, 0, 0x0L), + 4 + ), + 841331 + ); + + // gentest-1255 + assertEqual( + perft( + Board(0x4025500000L, 0x400002000000000L, 0x100000002000220L, 0x4000000000000041L, 0x0L, + 0x1000000000000100L, 0x400000022400161L, 0x5100006005100200L, true, 0, 0x0L), + 4 + ), + 885454 + ); + + // gentest-1256 + assertEqual( + perft( + Board(0x4025500000L, 0x22000000000L, 0x100000002004001L, 0x4000000000000040L, 0x0L, + 0x1000000000000100L, 0x20022404140L, 0x5100006005100001L, false, 0, 0x0L), + 4 + ), + 1084673 + ); + + // gentest-1257 + assertEqual( + perft( + Board(0x4025500000L, 0x22000000000L, 0x140000002004000L, 0x400000000040L, 0x0L, 0x1000000000000002L, + 0x20022404042L, 0x1140406005100000L, true, 0, 0x0L), + 4 + ), + 1158966 + ); + + // gentest-1258 + assertEqual( + perft( + Board(0x4025500000L, 0x22000000000L, 0x100001002800000L, 0x400000000008L, 0x0L, 0x1000000000000002L, + 0x20022c0000aL, 0x1100407005100000L, false, 0, 0x0L), + 4 + ), + 1650240 + ); + + // gentest-1259 + assertEqual( + perft( + Board(0x4025500000L, 0x400002000000000L, 0x100000002840000L, 0x40000000008L, 0x0L, + 0x1000000000000002L, 0x400000022c0000aL, 0x1100046005140000L, true, 0, 0x0L), + 4 + ), + 933071 + ); + + // gentest-1260 + assertEqual( + perft( + Board(0x4024510000L, 0x400002000000000L, 0x100000000840000L, 0x40000000008L, 0x0L, + 0x1000000000000004L, 0x400000020c4000cL, 0x1100046004110000L, false, 0, 0x0L), + 4 + ), + 632226 + ); + + // gentest-1261 + assertEqual( + perft( + Board(0x24510000L, 0x400000080000000L, 0x8100000000800000L, 0x40000000008L, 0x0L, 0x1000000000000004L, + 0x8400000000c0000cL, 0x11000400a4110000L, true, 0, 0x0L), + 4 + ), + 484521 + ); + + // gentest-1262 + assertEqual( + perft( + Board(0x24100100L, 0x400000080000000L, 0x100001000800000L, 0x40000000008L, 0x0L, 0x1000000000000004L, + 0x40000102080000cL, 0x1100040084100100L, false, 0, 0x0L), + 4 + ), + 502263 + ); + + // gentest-1263 + assertEqual( + perft( + Board(0x24100100L, 0x400000080000000L, 0x100000008800000L, 0x4000000008L, 0x0L, 0x1000000000000004L, + 0x40000002880000cL, 0x1100004084100100L, true, 0, 0x0L), + 4 + ), + 790785 + ); + + // gentest-1264 + assertEqual( + perft( + Board(0x24000100L, 0x20080000000L, 0x100000000900000L, 0x400000008L, 0x0L, 0x1000000000000004L, + 0x2002090000cL, 0x1100000484000100L, false, 0, 0x0L), + 4 + ), + 688367 + ); + + // gentest-1265 + assertEqual( + perft( + Board(0x24000000L, 0x20080000001L, 0x100000000900000L, 0x400000000000008L, 0x0L, 0x1000000000000200L, + 0x20020900208L, 0x1500000084000001L, true, 0, 0x0L), + 4 + ), + 639894 + ); + + // gentest-1266 + assertEqual( + perft( + Board(0x24000000L, 0x20080000001L, 0x8800080L, 0x400000000000010L, 0x0L, 0x1000000000000200L, + 0x20028800210L, 0x1400000084000081L, false, 0, 0x0L), + 4 + ), + 130387 + ); + + // gentest-1267 + assertEqual( + perft( + Board(0x24000000L, 0x20080020000L, 0x1000800080L, 0x400000000000010L, 0x0L, 0x800000000000200L, + 0x21020800210L, 0xc00000084020080L, true, 0, 0x0L), + 4 + ), + 639400 + ); + + // gentest-1268 + assertEqual( + perft( + Board(0x24000000L, 0x81020000L, 0x800080L, 0x4000000000010L, 0x0L, 0x800000000000200L, 0x21800210L, + 0x804000084020080L, false, 0, 0x0L), + 4 + ), + 584667 + ); + + // gentest-1269 + assertEqual( + perft( + Board(0x24000000L, 0x400009000000L, 0x40000080L, 0x4000000000010L, 0x0L, 0x800000000000200L, + 0x61000210L, 0x80440000c000080L, true, 0, 0x0L), + 4 + ), + 878377 + ); + + // gentest-1270 + assertEqual( + perft( + Board(0x2004000000L, 0x400009000000L, 0x40000080L, 0x8000000000008L, 0x0L, 0x800000000000200L, + 0x2041000208L, 0x80840000c000080L, false, 0, 0x0L), + 4 + ), + 647040 + ); + + // gentest-1271 + assertEqual( + perft( + Board(0x2004000000L, 0x440000040000L, 0x40200000L, 0x8000000000008L, 0x0L, 0x800000000000200L, + 0x2040040208L, 0x808440004200000L, true, 0, 0x0L), + 4 + ), + 753183 + ); + + // gentest-1272 + assertEqual( + perft( + Board(0x2004000000L, 0x440000040000L, 0x4000L, 0x8000000000008L, 0x0L, 0x10000000000200L, + 0x2000044208L, 0x18440004000000L, false, 0, 0x0L), + 4 + ), + 612262 + ); + + // gentest-1273 + assertEqual( + perft( + Board(0x2004000000L, 0x800000080040000L, 0x4000L, 0x8000000000008L, 0x0L, 0x10000000000002L, + 0x200004400aL, 0x818000084000000L, true, 0, 0x0L), + 4 + ), + 343513 + ); + + // gentest-1274 + assertEqual( + perft( + Board(0x2004000000L, 0x800000080040000L, 0x4000L, 0x1000000000800L, 0x0L, 0x10000000000004L, + 0x2000044804L, 0x811000084000000L, false, 0, 0x0L), + 4 + ), + 432815 + ); + + // gentest-1275 + assertEqual( + perft( + Board(0x2004000000L, 0x100080040000L, 0x20L, 0x8000000000800L, 0x0L, 0x10000000000004L, 0x2000040824L, + 0x18100084000000L, true, 0, 0x0L), + 4 + ), + 501650 + ); + + // gentest-1276 + assertEqual( + perft( + Board(0x2004000000L, 0x100080040000L, 0x20L, 0x8000000004000L, 0x0L, 0x20000000000002L, 0x2000044022L, + 0x28100084000000L, false, 0, 0x0L), + 4 + ), + 483929 + ); + + // gentest-1277 + assertEqual( + perft( + Board(0x2004000000L, 0x800000080040000L, 0x20L, 0x4800000000L, 0x0L, 0x20000000000002L, 0x6000040022L, + 0x820000884000000L, true, 0, 0x0L), + 4 + ), + 277469 + ); + + // gentest-1278 + assertEqual( + perft( + Board(0x4000000L, 0x800002000040000L, 0x80000L, 0x8800000000L, 0x0L, 0x20000000000002L, 0x80000c0002L, + 0x820002804000000L, false, 0, 0x0L), + 4 + ), + 484580 + ); + + // gentest-1279 + assertEqual( + perft( + Board(0x4000000L, 0x800002000040000L, 0x20L, 0x88000000000L, 0x0L, 0x4000000000000002L, 0x8000040022L, + 0x4800082004000000L, true, 0, 0x0L), + 4 + ), + 377216 + ); + + // gentest-1280 + assertEqual( + perft( + Board(0x4000000L, 0x800002000040000L, 0x20L, 0x800000008000L, 0x0L, 0x4000000000000400L, 0x48420L, + 0x4800802004000000L, false, 0, 0x0L), + 4 + ), + 444384 + ); + + // gentest-1281 + assertEqual( + perft( + Board(0x4000000L, 0x2002000040000L, 0x20L, 0x8000000000008000L, 0x0L, 0x4000000000000004L, 0x48024L, + 0xc002002004000000L, true, 0, 0x0L), + 4 + ), + 357294 + ); + + // gentest-1282 + assertEqual( + perft( + Board(0x4000000L, 0x42000000040000L, 0x20L, 0x8000000000004000L, 0x0L, 0x4000000000000002L, 0x44022L, + 0xc042000004000000L, false, 0, 0x0L), + 4 + ), + 186894 + ); + + // gentest-1283 + assertEqual( + perft( + Board(0x0L, 0x2008000040000L, 0x4000000L, 0x8000000000004000L, 0x0L, 0x2000000000000002L, 0x4044002L, + 0xa002008000000000L, true, 0, 0x0L), + 4 + ), + 276983 + ); + + // gentest-1284 + assertEqual( + perft( + Board(0x0L, 0x2008000040000L, 0x1000L, 0x4000000000000000L, 0x0L, 0x2000000000000002L, 0x41002L, + 0x6002008000000000L, false, 0, 0x0L), + 4 + ), + 161782 + ); + + // gentest-1285 + assertEqual( + perft( + Board(0x0L, 0x40080000040000L, 0x10000000000L, 0x4000000000000000L, 0x0L, 0x2000000000000002L, + 0x10000040002L, 0x6040080000000000L, true, 0, 0x0L), + 4 + ), + 98244 + ); + + // gentest-1286 + assertEqual( + perft( + Board(0x0L, 0x1040000010000000L, 0x10000000000L, 0x4000000000000000L, 0x0L, 0x2000000000000200L, + 0x10010000200L, 0x7040000000000000L, false, 0, 0x0L), + 4 + ), + 71533 + ); + + // gentest-1287 + assertEqual( + perft( + Board(0x0L, 0x300400000000L, 0x10000000000L, 0x4000000000000000L, 0x0L, 0x2000000000000200L, + 0x10400000200L, 0x6000300000000000L, true, 0, 0x0L), + 4 + ), + 263997 + ); + + // gentest-1288 + assertEqual( + perft( + Board(0x0L, 0x808200000000000L, 0x200000000L, 0x4000000000000000L, 0x0L, 0x2000000000000200L, + 0x8000200000200L, 0x6800200000000000L, false, 0, 0x0L), + 4 + ), + 39236 + ); + + // gentest-1289 + assertEqual( + perft( + Board(0x0L, 0x20200400000000L, 0x200000000L, 0x4000000000000000L, 0x0L, 0x10000000000200L, + 0x600000200L, 0x4030200000000000L, true, 0, 0x0L), + 4 + ), + 453756 + ); + + // gentest-1290 + assertEqual( + perft( + Board(0x0L, 0x380000000000L, 0x1000L, 0x4000000000000000L, 0x0L, 0x10000000000200L, 0x100000001200L, + 0x4010280000000000L, false, 0, 0x0L), + 4 + ), + 456587 + ); + + // gentest-1291 + assertEqual( + perft( + Board(0x0L, 0x20300000000000L, 0x8L, 0x4000000000000000L, 0x0L, 0x8000000000200L, 0x100000000208L, + 0x4028200000000000L, true, 0, 0x0L), + 4 + ), + 334185 + ); + + // gentest-1292 + assertEqual( + perft( + Board(0x0L, 0x2020200000000000L, 0x400L, 0x4000000000000000L, 0x0L, 0x400000000000200L, + 0x2000000000000600L, 0x4420200000000000L, false, 0, 0x0L), + 4 + ), + 219203 + ); + + // gentest-1293 + assertEqual( + perft( + Board(0x0L, 0x1020000000000000L, 0x400L, 0x2000000000000000L, 0x0L, 0x400000000010000L, 0x10400L, + 0x3420000000000000L, true, 0, 0x0L), + 4 + ), + 59505 + ); + + // gentest-1294 + assertEqual( + perft( + Board(0x0L, 0x1020000000000000L, 0x400000000000L, 0x2000000000000000L, 0x0L, 0x4000001000000L, + 0x400001000000L, 0x3024000000000000L, false, 0, 0x0L), + 4 + ), + 68596 + ); + + // gentest-1295 + assertEqual( + perft( + Board(0x0L, 0x1000800000000000L, 0x8000000000L, 0x2000000000000000L, 0x0L, 0x800000001000000L, + 0x8001000000L, 0x3800800000000000L, true, 0, 0x0L), + 4 + ), + 61791 + ); + + // gentest-1296 + assertEqual( + perft( + Board(0x0L, 0x1000800000000000L, 0x8000000000L, 0x2000000000000000L, 0x0L, 0x400000002000000L, + 0x8002000000L, 0x3400800000000000L, false, 0, 0x0L), + 4 + ), + 86562 + ); + + // gentest-1297 + assertEqual( + perft( + Board(0x0L, 0x1000000040000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000002000000L, 0x2000000L, + 0x5400000040000000L, true, 0, 0x0L), + 4 + ), + 22909 + ); + + // gentest-1298 + assertEqual( + perft( + Board(0x0L, 0x40000040000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000002000000L, 0x2000000L, + 0x4440000040000000L, false, 0, 0x0L), + 4 + ), + 20343 + ); + + // gentest-1299 + assertEqual( + perft( + Board(0x0L, 0x40000004000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000200000000L, 0x200000000L, + 0x4440000004000000L, true, 0, 0x0L), + 4 + ), + 11659 + ); + + // gentest-1300 + assertEqual( + perft( + Board(0x0L, 0x40020000000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000200000000L, 0x200000000L, + 0x4440020000000000L, false, 0, 0x0L), + 4 + ), + 9690 + ); + + // gentest-1301 + assertEqual( + perft( + Board(0x0L, 0x40020000000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x400000004000000L, 0x4000000L, + 0x4440020000000000L, true, 0, 0x0L), + 4 + ), + 16685 + ); + + // gentest-1302 + assertEqual( + perft( + Board(0x0L, 0x40000000000000L, 0x0L, 0x8000000000000000L, 0x0L, 0x400020000000000L, 0x20000000000L, + 0x8440000000000000L, false, 0, 0x0L), + 4 + ), + 9589 + ); + + // gentest-1303 + assertEqual( + perft( + Board(0x0L, 0x2000000000L, 0x0L, 0x800000L, 0x0L, 0x400000200000000L, 0x200000000L, + 0x400002000800000L, true, 0, 0x0L), + 4 + ), + 23975 + ); + + // gentest-1304 + assertEqual( + perft( + Board(0x0L, 0x80000000000L, 0x0L, 0x800000L, 0x0L, 0x400010000000000L, 0x10000000000L, + 0x400080000800000L, false, 0, 0x0L), + 4 + ), + 6924 + ); + + // gentest-1305 + assertEqual( + perft( + Board(0x0L, 0x20000000000000L, 0x0L, 0x200000L, 0x0L, 0x400000100000000L, 0x100000000L, + 0x420000000200000L, true, 0, 0x0L), + 4 + ), + 12632 + ); + + // gentest-1306 + assertEqual( + perft( + Board(0x0L, 0x20000000000000L, 0x0L, 0x80000L, 0x0L, 0x400000004000000L, 0x4000000L, + 0x420000000080000L, false, 0, 0x0L), + 4 + ), + 13954 + ); + + // gentest-1307 + assertEqual( + perft( + Board(0x0L, 0x8000000000000000L, 0x0L, 0x800000L, 0x0L, 0x400000002000000L, 0x2000000L, + 0x8400000000800000L, true, 0, 0x0L), + 4 + ), + 11082 + ); + + // gentest-1308 + assertEqual( + perft( + Board(0x0L, 0x8000000000000000L, 0x0L, 0x80L, 0x0L, 0x400000004000000L, 0x4000000L, + 0x8400000000000080L, false, 0, 0x0L), + 4 + ), + 20305 + ); + + // gentest-1309 + assertEqual( + perft( + Board(0x0L, 0x8000000000000000L, 0x0L, 0x40L, 0x0L, 0x400000200000000L, 0x200000000L, + 0x8400000000000040L, true, 0, 0x0L), + 4 + ), + 18458 + ); + + // gentest-1310 + assertEqual( + perft( + Board(0x0L, 0x20000000000000L, 0x0L, 0x40L, 0x0L, 0x400000200000000L, 0x200000000L, + 0x420000000000040L, false, 0, 0x0L), + 4 + ), + 20962 + ); + + // gentest-1311 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1312 + assertEqual( + perft( + Board(0xff00001004eb00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1004ebffL, 0xbfff200000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 501702 + ); + + // gentest-1313 + assertEqual( + perft( + Board(0xbf40001004eb00L, 0x240000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000001000L, 0x1004fbefL, 0xbdbf640000000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 432079 + ); + + // gentest-1314 + assertEqual( + perft( + Board(0xbf0040100ce300L, 0x240000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000200000L, 0x102ce3efL, 0xbdbf244000000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 472741 + ); + + // gentest-1315 + assertEqual( + perft( + Board(0xbf0040100ce300L, 0x40000400042L, 0x2400000020000020L, 0x8100000000000081L, 0x800000000000008L, + 0x1000000000200000L, 0x302ce3ebL, 0xbdbf044000400000L, true, 0, 0x8100000000000000L), + 4 + ), + 813248 + ); + + // gentest-1316 + assertEqual( + perft( + Board(0xbf0000100ce300L, 0x400000000c2L, 0x2400004000000020L, 0x8100000000000001L, 0x800000000000008L, + 0x1000000000200000L, 0x40102ce36bL, 0xbdbf040000000080L, false, 0, 0x8100000000000000L), + 4 + ), + 599565 + ); + + // gentest-1317 + assertEqual( + perft( + Board(0xb700081408e300L, 0x400000000c2L, 0x2400004000000020L, 0x8100000000000001L, 0x80000000008L, + 0x1000000000200000L, 0x401428e36bL, 0xb5b70c0800000080L, true, 0, 0x8100000000000000L), + 4 + ), + 2059860 + ); + + // gentest-1318 + assertEqual( + perft( + Board(0x97002894086300L, 0x400000008c0L, 0x2400004000000020L, 0x8100000000000001L, 0x80000000008L, + 0x1000000000200000L, 0x4094286b69L, 0xb5970c2800000080L, false, 0, 0x8100000000000000L), + 4 + ), + 1537442 + ); + + // gentest-1319 + assertEqual( + perft( + Board(0x97002884084300L, 0x40000002840L, 0x2400004000000020L, 0x8100000000000001L, 0x800000000000008L, + 0x1000000000200000L, 0x6084284b69L, 0xbd97040800002000L, true, 0, 0x8100000000000000L), + 4 + ), + 1280062 + ); + + // gentest-1320 + assertEqual( + perft( + Board(0x96012884084300L, 0x40000022040L, 0x2400004000001000L, 0x8100000000000001L, 0x800000000000008L, + 0x1000000000200000L, 0x60842a5349L, 0xbd96050800002000L, false, 0, 0x8100000000000000L), + 4 + ), + 1202592 + ); + + // gentest-1321 + assertEqual( + perft( + Board(0x9601a00c084300L, 0x40000022040L, 0x2400004000001000L, 0x8100000000000001L, 0x8000000000008L, + 0x1000000000200000L, 0xe0042a5349L, 0xb59e050008002000L, true, 0, 0x8100000000000000L), + 4 + ), + 940278 + ); + + // gentest-1322 + assertEqual( + perft( + Board(0x9601a00c084300L, 0x40000022040L, 0x2400000000401000L, 0x8001000000000001L, 0x8000000000008L, + 0x1000000000200000L, 0xa0046a5349L, 0xb49f050008002000L, false, 0, 0x8000000000000000L), + 4 + ), + 619339 + ); + + // gentest-1323 + assertEqual( + perft( + Board(0x9401820c084300L, 0x40000022040L, 0x2400000020001000L, 0x8001000000000001L, 0x2000000008L, + 0x1000000000200000L, 0x80242a5349L, 0xb495052208002000L, true, 0, 0x8000000000000000L), + 4 + ), + 969675 + ); + + // gentest-1324 + assertEqual( + perft( + Board(0x8411c20c080300L, 0x40000022040L, 0x2400000020001000L, 0x8001000000000001L, 0x2000000008L, + 0x1000000000200000L, 0xc0242a1349L, 0xb485152208002000L, false, 0, 0x8000000000000000L), + 4 + ), + 992882 + ); + + // gentest-1325 + assertEqual( + perft( + Board(0x8411c20c080300L, 0x40000022040L, 0x2400000020001000L, 0x8001000000000001L, 0x2000000008L, + 0x1000000000400000L, 0xc0244a1349L, 0xb485152208002000L, true, 0, 0x8000000000000000L), + 4 + ), + 2035873 + ); + + // gentest-1326 + assertEqual( + perft( + Board(0x8411c20c090200L, 0x40000022040L, 0x2400000000001000L, 0x8001000000000001L, 0x8L, + 0x1000000020000000L, 0xc0240b1249L, 0xb485150208002000L, false, 0, 0x8000000000000000L), + 4 + ), + 624682 + ); + + // gentest-1327 + assertEqual( + perft( + Board(0x8411c20c010200L, 0x400000a0040L, 0x2400000000001000L, 0x8001000000000001L, 0x2L, + 0x10000020000000L, 0xc024031243L, 0xa495150208080000L, true, 0, 0x0L), + 4 + ), + 129823 + ); + + // gentest-1328 + assertEqual( + perft( + Board(0x8411c20c010200L, 0x40000020040L, 0x2400000000001000L, 0x8001000000000001L, 0x80000L, + 0x80000200000L, 0xc0042b1241L, 0xa4851d0208000000L, false, 0, 0x0L), + 4 + ), + 579260 + ); + + // gentest-1329 + assertEqual( + perft( + Board(0x8401d20c010200L, 0x40000020040L, 0x2400000000001000L, 0x8001000000000001L, 0x400000000000L, + 0x8000000200000L, 0x40c004231241L, 0xa48d051208000000L, true, 0, 0x0L), + 4 + ), + 614526 + ); + + // gentest-1330 + assertEqual( + perft( + Board(0x8401d20c010200L, 0x100020040L, 0x2400000000000020L, 0x8001000000000100L, 0x400000000000L, + 0x8000000200000L, 0x40c004230360L, 0xa48d011308000000L, false, 0, 0x0L), + 4 + ), + 625638 + ); + + // gentest-1331 + assertEqual( + perft( + Board(0x8001d60c010200L, 0x100020040L, 0x2400000000001000L, 0x8002000000000100L, 0x400000000000L, + 0x8000000200000L, 0x40c004231340L, 0xa48a011708000000L, true, 0, 0x0L), + 4 + ), + 400053 + ); + + // gentest-1332 + assertEqual( + perft( + Board(0x8001d60c010200L, 0x100020040L, 0x410000000001000L, 0x8002000000000100L, 0x40000000000L, + 0x8000000200000L, 0x4c004231340L, 0x849a011708000000L, false, 0, 0x0L), + 4 + ), + 44044 + ); + + // gentest-1333 + assertEqual( + perft( + Board(0x8001d60c010200L, 0x100020040L, 0x10000040001000L, 0x8002000000000100L, 0x10000000L, + 0x800000000200000L, 0xc014231340L, 0x8892011748000000L, true, 0, 0x0L), + 4 + ), + 140614 + ); + + // gentest-1334 + assertEqual( + perft( + Board(0x8001d60c010200L, 0x100020040L, 0x200000001000L, 0x8002000000000100L, 0x800000L, + 0x800000000200000L, 0xc004a31340L, 0x8882211708000000L, false, 0, 0x0L), + 4 + ), + 547396 + ); + + // gentest-1335 + assertEqual( + perft( + Board(0x8001960c010200L, 0x100020040L, 0x4000001000L, 0x8002000000000100L, 0x4000L, 0x4000000200000L, + 0x8004235340L, 0x8086015708000000L, true, 0, 0x0L), + 4 + ), + 732594 + ); + + // gentest-1336 + assertEqual( + perft( + Board(0x8081160c010200L, 0x100020040L, 0x4000001000L, 0x8002000000000100L, 0x80L, 0x800000000200000L, + 0x8000042313c0L, 0x8882015708000000L, false, 0, 0x0L), + 4 + ), + 481420 + ); + + // gentest-1337 + assertEqual( + perft( + Board(0x8081160c010200L, 0x100000041L, 0x20001000L, 0x1002000000000100L, 0x80L, 0x800000000200000L, + 0x8000042113c1L, 0x1882011728000000L, true, 0, 0x0L), + 4 + ), + 380839 + ); + + // gentest-1338 + assertEqual( + perft( + Board(0x8081160c010200L, 0x100000041L, 0x100020L, 0x1002000000000100L, 0x80L, 0x800000010000000L, + 0x8000140103e1L, 0x1882011708100000L, false, 0, 0x0L), + 4 + ), + 516546 + ); + + // gentest-1339 + assertEqual( + perft( + Board(0x8081160c010200L, 0x100000041L, 0x100020L, 0x1040000000000100L, 0x80L, 0x800000000200000L, + 0x8000042103e1L, 0x18c0011708100000L, true, 0, 0x0L), + 4 + ), + 473317 + ); + + // gentest-1340 + assertEqual( + perft( + Board(0x8081160c010200L, 0x100001001L, 0x100020L, 0x1010000000000100L, 0x80L, 0x800000040000000L, + 0x8000440113a1L, 0x1890011708100000L, false, 0, 0x0L), + 4 + ), + 656277 + ); + + // gentest-1341 + assertEqual( + perft( + Board(0x8081160c010200L, 0x100001001L, 0x2020L, 0x1008000000000100L, 0x800000L, 0x800000040000000L, + 0x800044811321L, 0x1888011708002000L, true, 0, 0x0L), + 4 + ), + 626986 + ); + + // gentest-1342 + assertEqual( + perft( + Board(0x8081160e010000L, 0x100001001L, 0x60L, 0x1008000000000400L, 0x800000L, 0x800000040000000L, + 0x800046811421L, 0x1888011708000040L, false, 0, 0x0L), + 4 + ), + 747156 + ); + + // gentest-1343 + assertEqual( + perft( + Board(0x8081160a010000L, 0x4001001L, 0x60L, 0x2008000000000400L, 0x800000L, 0x800004000000000L, + 0x804002811421L, 0x288801160c000040L, true, 0, 0x0L), + 4 + ), + 1210914 + ); + + // gentest-1344 + assertEqual( + perft( + Board(0x80811602010000L, 0xc000001L, 0x60L, 0x2008000000000100L, 0x800000L, 0x10004000000000L, + 0x80400a810121L, 0x2098011604000040L, false, 0, 0x0L), + 4 + ), + 1891827 + ); + + // gentest-1345 + assertEqual( + perft( + Board(0x80811602010000L, 0x4000001L, 0x8000020L, 0x2008000000000100L, 0x4000L, 0x1000004000000000L, + 0x804002014121L, 0x308801160c000000L, true, 0, 0x0L), + 4 + ), + 1107225 + ); + + // gentest-1346 + assertEqual( + perft( + Board(0x80801702010000L, 0x4000001L, 0x8000020L, 0x2008000000004000L, 0x80L, 0x1000004000000000L, + 0x8040020140a1L, 0x308800170c000000L, false, 0, 0x0L), + 4 + ), + 818571 + ); + + // gentest-1347 + assertEqual( + perft( + Board(0x80800712010000L, 0x4000001L, 0x8000020L, 0x2010000000004000L, 0x80L, 0x1000000040000000L, + 0x8000420140a1L, 0x309000071c000000L, true, 0, 0x0L), + 4 + ), + 1046851 + ); + + // gentest-1348 + assertEqual( + perft( + Board(0x80800712010000L, 0x4000001L, 0x40020L, 0x2010000000000800L, 0x80L, 0x1000000000400000L, + 0x8000024108a1L, 0x3090000714040000L, false, 0, 0x0L), + 4 + ), + 1330219 + ); + + // gentest-1349 + assertEqual( + perft( + Board(0x80800712010000L, 0x4000001L, 0x40020L, 0x2000000040000800L, 0x80L, 0x1000000000008000L, + 0x8000020188a1L, 0x3080000754040000L, true, 0, 0x0L), + 4 + ), + 961970 + ); + + // gentest-1350 + assertEqual( + perft( + Board(0x80800712010000L, 0x4000400L, 0x40020L, 0x20000840000000L, 0x80L, 0x1000000000008000L, + 0x8008020184a0L, 0x10a0000754040000L, false, 0, 0x0L), + 4 + ), + 1252930 + ); + + // gentest-1351 + assertEqual( + perft( + Board(0x80800712010000L, 0x4000400L, 0x40020L, 0x20008800000000L, 0x80L, 0x1000000000800000L, + 0x8008028104a0L, 0x10a0008714040000L, true, 0, 0x0L), + 4 + ), + 175507 + ); + + // gentest-1352 + assertEqual( + perft( + Board(0x80800702010000L, 0x4000400L, 0x40020L, 0x208800000000L, 0x10000000L, 0x1000000000400000L, + 0x800812410420L, 0x1080208704040000L, false, 0, 0x0L), + 4 + ), + 274078 + ); + + // gentest-1353 + assertEqual( + perft( + Board(0x800702010000L, 0x100400L, 0x40020L, 0x208800000000L, 0x80000000000000L, 0x2000000000400000L, + 0x80800802410420L, 0x2000208700140000L, true, 0, 0x0L), + 4 + ), + 1312103 + ); + + // gentest-1354 + assertEqual( + perft( + Board(0x800602010000L, 0x100400L, 0x840000L, 0x288000000000L, 0x80000000000000L, 0x2000000000400000L, + 0x80880000c10400L, 0x2000208602140000L, false, 0, 0x0L), + 4 + ), + 1014830 + ); + + // gentest-1355 + assertEqual( + perft( + Board(0x800602010000L, 0x4400L, 0x840000L, 0x8a000000000L, 0x4000000000000L, 0x2000000000400000L, + 0x4880000c10400L, 0x200000a602044000L, true, 0, 0x0L), + 4 + ), + 887331 + ); + + // gentest-1356 + assertEqual( + perft( + Board(0x800600030000L, 0x4400L, 0x840000L, 0x8a000000000L, 0x10000000000000L, 0x2000000000400000L, + 0x10880000c10400L, 0x200000a600064000L, false, 0, 0x0L), + 4 + ), + 62588 + ); + + // gentest-1357 + assertEqual( + perft( + Board(0x800600030000L, 0x4400L, 0x840000L, 0x2000088000000000L, 0x1000000000L, 0x4000000000400000L, + 0x881000c10400L, 0x6000008600064000L, true, 0, 0x0L), + 4 + ), + 1664295 + ); + + // gentest-1358 + assertEqual( + perft( + Board(0x800200030000L, 0x8004000L, 0x840000L, 0x2000008000000000L, 0x1000000000L, 0x4000000000400000L, + 0x801008c10000L, 0x6000008200064000L, false, 0, 0x0L), + 4 + ), + 987775 + ); + + // gentest-1359 + assertEqual( + perft( + Board(0x200030000L, 0x8004000L, 0x840000L, 0x2000080000000000L, 0x10000000L, 0x4000000000400000L, + 0x18c10000L, 0x6000080200064000L, true, 0, 0x0L), + 4 + ), + 1530710 + ); + + // gentest-1360 + assertEqual( + perft( + Board(0x200030000L, 0x8000000L, 0x100000040000L, 0x2000080000000000L, 0x10000000L, + 0x8000000000004000L, 0x100018014000L, 0xa000080200060000L, false, 0, 0x0L), + 4 + ), + 1266527 + ); + + // gentest-1361 + assertEqual( + perft( + Board(0x200030000L, 0x8000000L, 0x100000000200L, 0x2000080000000000L, 0x80000000L, 0x40000000004000L, + 0x100088014000L, 0x2040080200020200L, true, 0, 0x0L), + 4 + ), + 953873 + ); + + // gentest-1362 + assertEqual( + perft( + Board(0x300020000L, 0x8000000L, 0x100000000200L, 0x280000000000L, 0x80000000L, 0x40000000004000L, + 0x100188004000L, 0x40280200020200L, false, 0, 0x0L), + 4 + ), + 712596 + ); + + // gentest-1363 + assertEqual( + perft( + Board(0x300020000L, 0x8000000L, 0x100000000200L, 0x240000000000L, 0x400000L, 0x2000000000004000L, + 0x100108404000L, 0x2000240200020200L, true, 0, 0x0L), + 4 + ), + 996194 + ); + + // gentest-1364 + assertEqual( + perft( + Board(0x300020000L, 0x8000000L, 0x100000000200L, 0x240000000000L, 0x4000000000L, 0x10000000800000L, + 0x104108800000L, 0x10240200020200L, false, 0, 0x0L), + 4 + ), + 659156 + ); + + // gentest-1365 + assertEqual( + perft( + Board(0x300020000L, 0x8000000L, 0x200L, 0x300000000000L, 0x8000000000L, 0x800000000800000L, + 0x8108800000L, 0x800300200020200L, true, 0, 0x0L), + 4 + ), + 558041 + ); + + // gentest-1366 + assertEqual( + perft( + Board(0x300020000L, 0x40000000000L, 0x200L, 0x200000001000L, 0x800000000000L, 0x800000000800000L, + 0x840100800000L, 0x800200200021200L, false, 0, 0x0L), + 4 + ), + 78127 + ); + + // gentest-1367 + assertEqual( + perft( + Board(0x300020000L, 0x40000000000L, 0x200L, 0x20000000001000L, 0x80000000L, 0x4000000800000L, + 0x40180800000L, 0x24000200021200L, true, 0, 0x0L), + 4 + ), + 659384 + ); + + // gentest-1368 + assertEqual( + perft( + Board(0x300020000L, 0x10000000000000L, 0x200L, 0x20000000001000L, 0x800000000000000L, + 0x2000000800000L, 0x810000100800000L, 0x22000200021200L, false, 0, 0x0L), + 4 + ), + 450571 + ); + + // gentest-1369 + assertEqual( + perft( + Board(0x300020000L, 0x10000000000000L, 0x200L, 0x20000010000000L, 0x80000000000L, 0x2000000800000L, + 0x10080100800000L, 0x22000210020200L, true, 0, 0x0L), + 4 + ), + 694880 + ); + + // gentest-1370 + assertEqual( + perft( + Board(0x10200020000L, 0x10000000000000L, 0x200L, 0x2010000000L, 0x100000000000L, 0x2000000800000L, + 0x10110000800000L, 0x2002210020200L, false, 0, 0x0L), + 4 + ), + 68646 + ); + + // gentest-1371 + assertEqual( + perft( + Board(0x10200020000L, 0x10000000000000L, 0x200L, 0x410000000L, 0x80000000000L, 0x100000000800000L, + 0x10090000800000L, 0x100000610020200L, true, 0, 0x0L), + 4 + ), + 686469 + ); + + // gentest-1372 + assertEqual( + perft( + Board(0x10200020000L, 0x400000000000000L, 0x200L, 0x410000000L, 0x0L, 0x200000000800000L, + 0x400010000800000L, 0x200000610020200L, false, 0, 0x0L), + 4 + ), + 83602 + ); + + // gentest-1373 + assertEqual( + perft( + Board(0x10200020000L, 0x80000000000L, 0x4L, 0x4000010000000L, 0x0L, 0x200000000800000L, + 0x90000800000L, 0x204000210020004L, true, 0, 0x0L), + 4 + ), + 138298 + ); + + // gentest-1374 + assertEqual( + perft( + Board(0x10200020000L, 0x2000000000L, 0x4L, 0x40010000000L, 0x0L, 0x200000000004000L, 0x12000004000L, + 0x200040210020004L, false, 0, 0x0L), + 4 + ), + 266361 + ); + + // gentest-1375 + assertEqual( + perft( + Board(0x10200020000L, 0x40000000000000L, 0x4000000000L, 0x20010000000L, 0x0L, 0x200000000004000L, + 0x40010000004000L, 0x200024210020000L, true, 0, 0x0L), + 4 + ), + 146431 + ); + + // gentest-1376 + assertEqual( + perft( + Board(0x10200020000L, 0x40000000000000L, 0x20000000L, 0x20010000000L, 0x0L, 0x200000000000040L, + 0x40010000000040L, 0x200020230020000L, false, 0, 0x0L), + 4 + ), + 84440 + ); + + // gentest-1377 + assertEqual( + perft( + Board(0x10200020000L, 0x40000000000000L, 0x8000L, 0x20004000000L, 0x0L, 0x200000000004000L, + 0x40010000004000L, 0x200020204028000L, true, 0, 0x0L), + 4 + ), + 96213 + ); + + // gentest-1378 + assertEqual( + perft( + Board(0x10200020000L, 0x400000L, 0x8000L, 0x40004000000L, 0x0L, 0x200000000004000L, 0x10000404000L, + 0x200040204028000L, false, 0, 0x0L), + 4 + ), + 100487 + ); + + // gentest-1379 + assertEqual( + perft( + Board(0x10200020000L, 0x1000L, 0x8000L, 0x40000000400L, 0x0L, 0x4000000004000L, 0x10000005000L, + 0x4040200028400L, true, 0, 0x0L), + 4 + ), + 58613 + ); + + // gentest-1380 + assertEqual( + perft( + Board(0x10200020000L, 0x400000L, 0x8000L, 0x400000000400L, 0x0L, 0x4000000000080L, 0x10000400080L, + 0x4400200028400L, false, 0, 0x0L), + 4 + ), + 52272 + ); + + // gentest-1381 + assertEqual( + perft( + Board(0x1000200000200L, 0x0L, 0x8000L, 0x400400L, 0x0L, 0x4000000000080L, 0x1000000000080L, + 0x4000200408600L, true, 0, 0x0L), + 4 + ), + 34172 + ); + + // gentest-1382 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1383 + assertEqual( + perft( + Board(0xbf40040000fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40000fbffL, 0xffbf400000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 248473 + ); + + // gentest-1384 + assertEqual( + perft( + Board(0xbe40054000bb00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x44000bbffL, 0xbfbec00100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 270161 + ); + + // gentest-1385 + assertEqual( + perft( + Board(0xbc42014000bb00L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2004020bbbfL, 0xbfbcc00100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 398168 + ); + + // gentest-1386 + assertEqual( + perft( + Board(0x9866014000bb00L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000400L, 0x1000000000000010L, 0x2004020bfb7L, 0xbf98e40100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 613437 + ); + + // gentest-1387 + assertEqual( + perft( + Board(0x9862014200b900L, 0x200800000200002L, 0x2002000000000024L, 0x8100000000000081L, + 0x800040000000000L, 0x1000000000000010L, 0x6004220b9b7L, 0xbb9ae00100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 871466 + ); + + // gentest-1388 + assertEqual( + perft( + Board(0x9842610200b900L, 0x200800000200002L, 0x2000010000000024L, 0x8100000000000081L, + 0x800040000000000L, 0x1000000000000010L, 0x6400220b9b7L, 0xbb98c12100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 861183 + ); + + // gentest-1389 + assertEqual( + perft( + Board(0x9842618a003100L, 0x200800000200002L, 0x2002000000000024L, 0x8100000000000081L, + 0x800040000000000L, 0x1000000000000010L, 0x6408a2031b7L, 0xbb9ac02100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 892418 + ); + + // gentest-1390 + assertEqual( + perft( + Board(0x8852219a002100L, 0x200800000200002L, 0x2002000000000024L, 0x8100000000000081L, 0x44000000000L, + 0x1000000000000010L, 0x6009a2021b7L, 0xb38ad06100000000L, true, 0, 0x8100000000000081L), + 4 + ), + 2476476 + ); + + // gentest-1391 + assertEqual( + perft( + Board(0x8852211a002100L, 0x200800000200002L, 0x42000000000024L, 0x8100000000000081L, 0x44000000000L, + 0x1000000000000010L, 0x46001a2021b7L, 0x93ca906100000000L, false, 0, 0x8100000000000081L), + 4 + ), + 3344835 + ); + + // gentest-1392 + assertEqual( + perft( + Board(0x88522912002100L, 0x200800000200002L, 0x42000000000024L, 0x8001000000000081L, 0x40000400000L, + 0x1000000000000010L, 0x4608122021b7L, 0x92cb902100400000L, true, 0, 0x8000000000000081L), + 4 + ), + 5060975 + ); + + // gentest-1393 + assertEqual( + perft( + Board(0x885a2013002100L, 0x200800000200002L, 0x42000000000024L, 0x8001000000000081L, 0x40000400000L, + 0x1000000000001000L, 0x4e00122031a7L, 0x92cb902001400000L, false, 0, 0x8000000000000000L), + 4 + ), + 3181227 + ); + + // gentest-1394 + assertEqual( + perft( + Board(0x85a2013400100L, 0x200800000200002L, 0x42000000000024L, 0x81000000000081L, 0x40000000000L, + 0x1000000000001000L, 0xe00126011a7L, 0x12cbd02001000000L, true, 0, 0x0L), + 4 + ), + 1861996 + ); + + // gentest-1395 + assertEqual( + perft( + Board(0x85a2013400100L, 0x810000200002L, 0x42000020000020L, 0x81000000000041L, 0x40000000000L, + 0x1000000000001000L, 0xe0032601163L, 0x10cbd12001000000L, false, 0, 0x0L), + 4 + ), + 1415562 + ); + + // gentest-1396 + assertEqual( + perft( + Board(0x85a2003400100L, 0x10040200002L, 0x2000020000021L, 0x81000000000040L, 0x40000000000L, + 0x1000000000001000L, 0xe2022601162L, 0x108b510041000001L, true, 0, 0x0L), + 4 + ), + 2398184 + ); + + // gentest-1397 + assertEqual( + perft( + Board(0x85a2003400100L, 0x10040200002L, 0x400000020000021L, 0x81000000000040L, 0x0L, + 0x1000000000080000L, 0xa2022680162L, 0x1489510041000001L, false, 0, 0x0L), + 4 + ), + 1244777 + ); + + // gentest-1398 + assertEqual( + perft( + Board(0x84a2003400100L, 0x4000040200002L, 0x400000020000021L, 0x81000000000080L, 0x0L, + 0x1000000000080000L, 0xa00226801a2L, 0x148d402041000001L, true, 0, 0x0L), + 4 + ), + 1587268 + ); + + // gentest-1399 + assertEqual( + perft( + Board(0x80a6003410000L, 0x4001040000002L, 0x400000020000021L, 0x81000000000080L, 0x0L, + 0x1000000000080000L, 0xa10224900a2L, 0x148d006041000001L, false, 0, 0x0L), + 4 + ), + 908552 + ); + + // gentest-1400 + assertEqual( + perft( + Board(0x80a6003410000L, 0x4801000000002L, 0x400000000100021L, 0x1000000008080L, 0x0L, + 0x1000000000080000L, 0xa10025900a2L, 0x140d806001008001L, true, 0, 0x0L), + 4 + ), + 833139 + ); + + // gentest-1401 + assertEqual( + perft( + Board(0x80a4023410000L, 0x4801000000800L, 0x400000000104001L, 0x1000000008080L, 0x0L, + 0x1000000000080000L, 0xa1002594880L, 0x140d804021008001L, false, 0, 0x0L), + 4 + ), + 1533662 + ); + + // gentest-1402 + assertEqual( + perft( + Board(0xa4023410000L, 0xc000040000800L, 0x400000000104001L, 0x1000000008080L, 0x0L, 0x20000000080000L, + 0x80a0002594880L, 0x425004061008001L, true, 0, 0x0L), + 4 + ), + 2353206 + ); + + // gentest-1403 + assertEqual( + perft( + Board(0xa4221410000L, 0xc000040000800L, 0x440000000104000L, 0x1000000008080L, 0x0L, 0x20000010000000L, + 0x80a0210514880L, 0x465004061008000L, false, 0, 0x0L), + 4 + ), + 1642322 + ); + + // gentest-1404 + assertEqual( + perft( + Board(0xa4221410000L, 0xc000000100800L, 0x440000000800000L, 0x1000000008080L, 0x0L, + 0x4000000010000000L, 0x80a0210c10880L, 0x4445004021108000L, true, 0, 0x0L), + 4 + ), + 1440992 + ); + + // gentest-1405 + assertEqual( + perft( + Board(0xa4221410000L, 0xc000000100800L, 0x400001000004000L, 0x1000000008080L, 0x0L, + 0x4000000000080000L, 0x80a0200494880L, 0x4405005021108000L, false, 0, 0x0L), + 4 + ), + 2019427 + ); + + // gentest-1406 + assertEqual( + perft( + Board(0xa4221410000L, 0xc000800000800L, 0x400001000000000L, 0x1000000004020L, 0x0L, + 0x4000000000080000L, 0x80a0200490820L, 0x4405005821004000L, true, 0, 0x0L), + 4 + ), + 1119312 + ); + + // gentest-1407 + assertEqual( + perft( + Board(0xa4221410000L, 0xc000900000000L, 0x400000000040000L, 0x1000000004020L, 0x0L, + 0x4000000000080000L, 0x80a0300490020L, 0x4405004821044000L, false, 0, 0x0L), + 4 + ), + 1123101 + ); + + // gentest-1408 + assertEqual( + perft( + Board(0xa4221410000L, 0x4200900000000L, 0x400000000040000L, 0x1000000000420L, 0x0L, 0x40000000080000L, + 0x2a0300490020L, 0x445004821040400L, true, 0, 0x0L), + 4 + ), + 1641134 + ); + + // gentest-1409 + assertEqual( + perft( + Board(0xa4221410000L, 0x4000940000000L, 0x400000000000800L, 0x1000000000420L, 0x0L, 0x40000010000000L, + 0xa0350410020L, 0x445004821000c00L, false, 0, 0x0L), + 4 + ), + 1201455 + ); + + // gentest-1410 + assertEqual( + perft( + Board(0x84221010000L, 0x20940000000L, 0x400000000000800L, 0x1000000000420L, 0x0L, 0x40000010000000L, + 0x80370010020L, 0x441024801000c00L, true, 0, 0x0L), + 4 + ), + 1223913 + ); + + // gentest-1411 + assertEqual( + perft( + Board(0x86201010000L, 0x20940000000L, 0x400000000000010L, 0x1000000000404L, 0x0L, 0x40000010000000L, + 0x82350010004L, 0x441024801000410L, false, 0, 0x0L), + 4 + ), + 879086 + ); + + // gentest-1412 + assertEqual( + perft( + Board(0x86201010000L, 0x10020100002000L, 0x400000000000010L, 0x1000000000404L, 0x0L, + 0x20000010000000L, 0x82310012004L, 0x431024001000410L, true, 0, 0x0L), + 4 + ), + 752939 + ); + + // gentest-1413 + assertEqual( + perft( + Board(0x86201010000L, 0x4000020100002000L, 0x400000000000010L, 0x1000000000404L, 0x0L, + 0x20000000100000L, 0x82300112004L, 0x4421024001000410L, false, 0, 0x0L), + 4 + ), + 568056 + ); + + // gentest-1414 + assertEqual( + perft( + Board(0x86201010000L, 0x4000020140000000L, 0x400000000000010L, 0x1000000000204L, 0x0L, + 0x2000000000100000L, 0x82340110004L, 0x6401024001000210L, true, 0, 0x0L), + 4 + ), + 869157 + ); + + // gentest-1415 + assertEqual( + perft( + Board(0x82241010000L, 0x4000220000020000L, 0x400000000000010L, 0x1000000000204L, 0x0L, + 0x2000000000100000L, 0x282200130004L, 0x6401020041000210L, false, 0, 0x0L), + 4 + ), + 903418 + ); + + // gentest-1416 + assertEqual( + perft( + Board(0x82241010000L, 0x4000220000020000L, 0x400000000000010L, 0x400040200L, 0x0L, + 0x2000000000100000L, 0x282200170000L, 0x6400020441000210L, true, 0, 0x0L), + 4 + ), + 604727 + ); + + // gentest-1417 + assertEqual( + perft( + Board(0x82241010000L, 0x4008020400000000L, 0x400000000000010L, 0x40200L, 0x0L, 0x20000000100000L, + 0x8082600150000L, 0x4420020041000210L, false, 0, 0x0L), + 4 + ), + 298523 + ); + + // gentest-1418 + assertEqual( + perft( + Board(0x82241010000L, 0x8220400000000L, 0x400000000000010L, 0x40100L, 0x0L, 0x20000000080000L, + 0x80826000d0000L, 0x420220041000110L, true, 0, 0x0L), + 4 + ), + 307925 + ); + + // gentest-1419 + assertEqual( + perft( + Board(0x82241010000L, 0x220010000000L, 0x8000000000010L, 0x40100L, 0x0L, 0x20000000080000L, + 0xa22100d0000L, 0x28200041000110L, false, 0, 0x0L), + 4 + ), + 402622 + ); + + // gentest-1420 + assertEqual( + perft( + Board(0x82041010000L, 0x220010000000L, 0x200000010L, 0x40100L, 0x0L, 0x40000000100000L, + 0xa2010150000L, 0x40200241000110L, true, 0, 0x0L), + 4 + ), + 548411 + ); + + // gentest-1421 + assertEqual( + perft( + Board(0x82041010000L, 0x8000014000000L, 0x200000010L, 0x500L, 0x0L, 0x40000000100000L, 0x82014110400L, + 0x48000241000110L, false, 0, 0x0L), + 4 + ), + 378166 + ); + + // gentest-1422 + assertEqual( + perft( + Board(0x82041010000L, 0x200010000800L, 0x4000010L, 0x500L, 0x0L, 0x40000000100000L, 0x82010110c00L, + 0x40200045000110L, true, 0, 0x0L), + 4 + ), + 352809 + ); + + // gentest-1423 + assertEqual( + perft( + Board(0x82041010000L, 0x4000000010000800L, 0x10L, 0x4000100L, 0x0L, 0x40000000080000L, 0x82014090800L, + 0x4040000041000110L, false, 0, 0x0L), + 4 + ), + 187467 + ); + + // gentest-1424 + assertEqual( + perft( + Board(0x82041010000L, 0x4000000010000020L, 0x80000000L, 0x4000100L, 0x0L, 0x2000000000080000L, + 0x82014090020L, 0x60000000c1000100L, true, 0, 0x0L), + 4 + ), + 271652 + ); + + // gentest-1425 + assertEqual( + perft( + Board(0x82041010000L, 0x4000000000440000L, 0x80000000L, 0x4002000L, 0x0L, 0x2000000000080000L, + 0x820044d0000L, 0x60000000c1002000L, false, 0, 0x0L), + 4 + ), + 307334 + ); + + // gentest-1426 + assertEqual( + perft( + Board(0x82041010000L, 0x4000000200400000L, 0x80000000L, 0x4000020L, 0x0L, 0x1000000000080000L, + 0x82204490000L, 0x50000000c1000020L, true, 0, 0x0L), + 4 + ), + 340154 + ); + + // gentest-1427 + assertEqual( + perft( + Board(0x82041010000L, 0x4001000000001000L, 0x10000000000000L, 0x4000020L, 0x0L, 0x1000000000080000L, + 0x1082004091000L, 0x5010000041000020L, false, 0, 0x0L), + 4 + ), + 379813 + ); + + // gentest-1428 + assertEqual( + perft( + Board(0x82041010000L, 0x4001000000400000L, 0x20000000L, 0x4000020L, 0x0L, 0x1000000000080000L, + 0x1082004490000L, 0x5000000061000020L, true, 0, 0x0L), + 4 + ), + 308860 + ); + + // gentest-1429 + assertEqual( + perft( + Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x24L, 0x0L, 0x1000000000080000L, + 0x42000490004L, 0x5000080041000020L, false, 0, 0x0L), + 4 + ), + 440166 + ); + + // gentest-1430 + assertEqual( + perft( + Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x420L, 0x0L, 0x1000000000080000L, + 0x42000490400L, 0x5000080041000020L, true, 0, 0x0L), + 4 + ), + 593062 + ); + + // gentest-1431 + assertEqual( + perft( + Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x4002L, 0x0L, 0x1000000004000000L, + 0x42004414000L, 0x5000080041000002L, false, 0, 0x0L), + 4 + ), + 489926 + ); + + // gentest-1432 + assertEqual( + perft( + Board(0x2041010000L, 0x4000040000400000L, 0x80000000000L, 0x2200L, 0x0L, 0x1000000004000000L, + 0x42004410200L, 0x5000080041002000L, true, 0, 0x0L), + 4 + ), + 500671 + ); + + // gentest-1433 + assertEqual( + perft( + Board(0x2041010000L, 0x4000040000000020L, 0x2000000L, 0x2200L, 0x0L, 0x1000000200000000L, + 0x42200010220L, 0x5000000043002000L, false, 0, 0x0L), + 4 + ), + 382246 + ); + + // gentest-1434 + assertEqual( + perft( + Board(0x2042010000L, 0x4000040000000020L, 0x0L, 0x200L, 0x0L, 0x1000000200000000L, 0x42202000020L, + 0x5000000040010200L, true, 0, 0x0L), + 4 + ), + 103664 + ); + + // gentest-1435 + assertEqual( + perft( + Board(0x2042010000L, 0x4000000000020020L, 0x0L, 0x2000L, 0x0L, 0x1000000200000000L, 0x2202020020L, + 0x5000000040012000L, false, 0, 0x0L), + 4 + ), + 116770 + ); + + // gentest-1436 + assertEqual( + perft( + Board(0x2042010000L, 0x4000000000020020L, 0x0L, 0x200000L, 0x0L, 0x2000040000000000L, 0x42002020020L, + 0x6000000040210000L, true, 0, 0x0L), + 4 + ), + 121231 + ); + + // gentest-1437 + assertEqual( + perft( + Board(0x2042010000L, 0x4000000000020020L, 0x0L, 0x40000L, 0x0L, 0x2800000000000000L, + 0x800002002020020L, 0x6000000040050000L, false, 0, 0x0L), + 4 + ), + 58300 + ); + + // gentest-1438 + assertEqual( + perft( + Board(0x42000100L, 0x200000020020L, 0x0L, 0x40000L, 0x0L, 0x2800000000000000L, 0x800000002020020L, + 0x2000200040040100L, true, 0, 0x0L), + 4 + ), + 85879 + ); + + // gentest-1439 + assertEqual( + perft( + Board(0x42000100L, 0x10000420L, 0x0L, 0x40000L, 0x0L, 0x2800000000000000L, 0x800000002000420L, + 0x2000000050040100L, false, 0, 0x0L), + 4 + ), + 97437 + ); + + // gentest-1440 + assertEqual( + perft( + Board(0x42000000L, 0x10000021L, 0x0L, 0x400000L, 0x0L, 0x2800000000000000L, 0x800000002000021L, + 0x2000000050400000L, true, 0, 0x0L), + 4 + ), + 41659 + ); + + // gentest-1441 + assertEqual( + perft( + Board(0x42000000L, 0x10100020L, 0x0L, 0x200000L, 0x0L, 0x2800000000000000L, 0x800000002100020L, + 0x2000000050200000L, false, 0, 0x0L), + 4 + ), + 86502 + ); + + // gentest-1442 + assertEqual( + perft( + Board(0x42000000L, 0x10100020L, 0x0L, 0x400000L, 0x0L, 0x440000000000000L, 0x400000002100020L, + 0x40000050400000L, true, 0, 0x0L), + 4 + ), + 106590 + ); + + // gentest-1443 + assertEqual( + perft( + Board(0x2000000L, 0x50008000L, 0x0L, 0x400000L, 0x0L, 0x400400000000000L, 0x400000042008000L, + 0x400010400000L, false, 0, 0x0L), + 4 + ), + 82537 + ); + + // gentest-1444 + assertEqual( + perft( + Board(0x2000000L, 0x40008800L, 0x0L, 0x400000L, 0x0L, 0x82000000000000L, 0x2000042008000L, + 0x80000000400800L, true, 0, 0x0L), + 4 + ), + 96787 + ); + + // gentest-1445 + assertEqual( + perft( + Board(0x200000000L, 0x40200000L, 0x0L, 0x400000L, 0x0L, 0x82000000000000L, 0x2000240000000L, + 0x80000000600000L, false, 0, 0x0L), + 4 + ), + 54115 + ); + + // gentest-1446 + assertEqual( + perft( + Board(0x200000000L, 0x200000200000L, 0x0L, 0x40000000L, 0x0L, 0x8002000000000000L, 0x2200200000000L, + 0x8000000040200000L, true, 0, 0x0L), + 4 + ), + 106972 + ); + + // gentest-1447 + assertEqual( + perft( + Board(0x200000000L, 0x80000000200000L, 0x0L, 0x1000000L, 0x0L, 0x8200000000000000L, + 0x280000200000000L, 0x8000000001200000L, false, 0, 0x0L), + 4 + ), + 36973 + ); + + // gentest-1448 + assertEqual( + perft( + Board(0x200000000L, 0x200000200000L, 0x0L, 0x400000000000000L, 0x0L, 0x8200000000000000L, + 0x200200200000000L, 0x8400000000200000L, true, 0, 0x0L), + 4 + ), + 12350 + ); + + // gentest-1449 + assertEqual( + perft( + Board(0x200000000L, 0x200000200000L, 0x0L, 0x0L, 0x0L, 0x8000040000000000L, 0x240200000000L, + 0x8000000000200000L, false, 0, 0x0L), + 4 + ), + 12793 + ); + + // gentest-1450 + assertEqual( + perft( + Board(0x200000000L, 0x200000080000L, 0x0L, 0x0L, 0x0L, 0x8002000000000000L, 0x2200200000000L, + 0x8000000000080000L, true, 0, 0x0L), + 4 + ), + 20198 + ); + + // gentest-1451 + assertEqual( + perft( + Board(0x200000000L, 0xc00000000L, 0x0L, 0x0L, 0x0L, 0x8100000000000000L, 0x100000a00000000L, + 0x8000000400000000L, false, 0, 0x0L), + 4 + ), + 13198 + ); + + // gentest-1452 + assertEqual( + perft( + Board(0x200000000L, 0x420000000L, 0x0L, 0x0L, 0x0L, 0x8100000000000000L, 0x100000220000000L, + 0x8000000400000000L, true, 0, 0x0L), + 4 + ), + 10982 + ); + + // gentest-1453 + assertEqual( + perft( + Board(0x200000000L, 0x1400000L, 0x0L, 0x0L, 0x0L, 0x8100000000000000L, 0x100000200400000L, + 0x8000000001000000L, false, 0, 0x0L), + 4 + ), + 5753 + ); + + // gentest-1454 + assertEqual( + perft( + Board(0x200000000L, 0x20000400000L, 0x0L, 0x0L, 0x0L, 0x81000000000000L, 0x1000200400000L, + 0x80020000000000L, true, 0, 0x0L), + 4 + ), + 9748 + ); + + // gentest-1455 + assertEqual( + perft( + Board(0x200000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x800100000000L, 0x300400000L, 0x800000000000L, + false, 0, 0x0L), + 4 + ), + 3066 + ); + + // gentest-1456 + assertEqual( + perft( + Board(0x200000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x180000000L, 0x300001000L, 0x80000000L, true, 0, + 0x0L), + 4 + ), + 3080 + ); + + // gentest-1457 + assertEqual( + perft( + Board(0x200000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x20040000000L, 0x20200400000L, 0x40000000L, false, + 0, 0x0L), + 4 + ), + 4646 + ); + + // gentest-1458 + assertEqual( + perft( + Board(0x200000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x400004000L, 0x600400000L, 0x4000L, true, 0, 0x0L), + 4 + ), + 5446 + ); + + // gentest-1459 + assertEqual( + perft( + Board(0x200000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x2800000L, 0x202001000L, 0x800000L, false, 0, 0x0L), + 4 + ), + 3801 + ); + + // gentest-1460 + assertEqual( + perft( + Board(0x200000000L, 0x40000L, 0x0L, 0x0L, 0x0L, 0x2800000L, 0x202040000L, 0x800000L, true, 0, 0x0L), + 4 + ), + 5679 + ); + + // gentest-1461 + assertEqual( + perft( + Board(0x200000000L, 0x40000L, 0x0L, 0x0L, 0x0L, 0x10000004000L, 0x10200040000L, 0x4000L, false, 0, + 0x0L), + 4 + ), + 5915 + ); + + // gentest-1462 + assertEqual( + perft( + Board(0x200000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x10000004000L, 0x10200001000L, 0x4000L, true, 0, + 0x0L), + 4 + ), + 3933 + ); + + // gentest-1463 + assertEqual( + perft( + Board(0x200000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000000040L, 0x1000200000000L, 0x40L, false, 0, + 0x0L), + 4 + ), + 1044 + ); + + // gentest-1464 + assertEqual( + perft( + Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x1000000800000L, 0x1020000000000L, 0x800000L, true, 0, + 0x0L), + 4 + ), + 1004 + ); + + // gentest-1465 + assertEqual( + perft( + Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x100000080000000L, 0x100020000000000L, 0x80000000L, + false, 0, 0x0L), + 4 + ), + 816 + ); + + // gentest-1466 + assertEqual( + perft( + Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x200400000000000L, 0x200020000000000L, 0x400000000000L, + true, 0, 0x0L), + 4 + ), + 1845 + ); + + // gentest-1467 + assertEqual( + perft( + Board(0x20000000000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x2200000000000L, 0x2020000000000L, 0x200000000000L, + false, 0, 0x0L), + 4 + ), + 2487 + ); + + // gentest-1468 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1469 + assertEqual( + perft( + Board(0xfe00010800f700L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x820f7bfL, 0xfffe000100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 447202 + ); + + // gentest-1470 + assertEqual( + perft( + Board(0xde00210802f500L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x822f5bfL, 0xbfde802100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 454114 + ); + + // gentest-1471 + assertEqual( + perft( + Board(0xdc02210902f400L, 0x200800000200800L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x922fcbdL, 0xbfdc822100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 290752 + ); + + // gentest-1472 + assertEqual( + perft( + Board(0xd00e2189027400L, 0x200800000200800L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x89227cbdL, 0xbfd08e2100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 381462 + ); + + // gentest-1473 + assertEqual( + perft( + Board(0xd00e2189126400L, 0x200804000000800L, 0x2008000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4089126cbdL, 0xbbd88e2100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 532969 + ); + + // gentest-1474 + assertEqual( + perft( + Board(0xd00e218d126000L, 0x200804000000800L, 0x2008000000000024L, 0x8000010000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x408d1268bdL, 0xb2dc8f2100000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 504508 + ); + + // gentest-1475 + assertEqual( + perft( + Board(0xd00e812d126000L, 0x200804000000800L, 0x2008000000000024L, 0x8000010000000081L, + 0x4000000001000L, 0x1000000000000010L, 0xc00d1278b5L, 0xb2dc8f0120000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 654616 + ); + + // gentest-1476 + assertEqual( + perft( + Board(0xd00e812d126000L, 0x200004040200000L, 0x2008000000000024L, 0x8000010000000081L, + 0x800000000001000L, 0x1000000000000010L, 0xc00d3270b5L, 0xbad80f0160000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 688515 + ); + + // gentest-1477 + assertEqual( + perft( + Board(0xd00e812d522000L, 0x200004040200000L, 0x2008000000000024L, 0x8000010000000081L, + 0x400000000000400L, 0x1000000000000010L, 0xc00d7224b5L, 0xb6d80f0160000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 1218947 + ); + + // gentest-1478 + assertEqual( + perft( + Board(0x504a852d522000L, 0x200004040200000L, 0x2008000000000024L, 0x8000010000000081L, + 0x400000000000000L, 0x1000000000000010L, 0xc00d7220b5L, 0xb6584b0560000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 1249721 + ); + + // gentest-1479 + assertEqual( + perft( + Board(0x504a852d522000L, 0x200004040200000L, 0x2008000000800004L, 0x8000010000000081L, + 0x2000000000000L, 0x1000000000000008L, 0xc00df2208dL, 0xb25a4b0560000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 1405190 + ); + + // gentest-1480 + assertEqual( + perft( + Board(0x500a852d522000L, 0x200004040200000L, 0x2000040000800800L, 0x8000010000000081L, + 0x2000000000000L, 0x1000000000000008L, 0x400df22889L, 0xb2520f8560000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 1379748 + ); + + // gentest-1481 + assertEqual( + perft( + Board(0x500a842c522000L, 0x200004040200000L, 0x2000000101800000L, 0x8000010000010080L, + 0x2000000000000L, 0x1000000000000008L, 0x410cf32088L, 0xb2520b8461000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 1674969 + ); + + // gentest-1482 + assertEqual( + perft( + Board(0x500a842c522000L, 0x200004040200000L, 0x2000000101800000L, 0x8000010000010080L, + 0x1000000000000L, 0x1000000000001000L, 0x410cf33080L, 0xb2510b8461000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 1641968 + ); + + // gentest-1483 + assertEqual( + perft( + Board(0x500a842c522000L, 0x200004040000800L, 0x2008000000840000L, 0x8000010000010080L, + 0x1000000000000L, 0x1000000000001000L, 0x400cd73880L, 0xb2590b8460000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 1763826 + ); + + // gentest-1484 + assertEqual( + perft( + Board(0x500a842c522000L, 0x44040000800L, 0x2008000000800001L, 0x8000010000010080L, 0x100000000000000L, + 0x1000000000001000L, 0x400cd33881L, 0xb1580f8460000000L, true, 0, 0x8000000000000000L), + 4 + ), + 1929090 + ); + + // gentest-1485 + assertEqual( + perft( + Board(0x500a842e502000L, 0x4140000800L, 0x2008000000800001L, 0x8000010000010010L, 0x100000000000000L, + 0x1000000000001000L, 0x400ed13811L, 0xb1580b8560000000L, false, 0, 0x8000000000000000L), + 4 + ), + 2488661 + ); + + // gentest-1486 + assertEqual( + perft( + Board(0x500a843e402000L, 0x4140000800L, 0x2008000000800001L, 0x8000010000010010L, 0x100000000000000L, + 0x400000000001000L, 0x401ec13811L, 0xa5580b8560000000L, true, 0, 0x0L), + 4 + ), + 2125838 + ); + + // gentest-1487 + assertEqual( + perft( + Board(0x500a843e402000L, 0x20000140020000L, 0x2008000000800001L, 0x8000010000010010L, + 0x2000000000000L, 0x400000000001000L, 0x2000001ec33011L, 0xa45a0b8560000000L, false, 0, 0x0L), + 4 + ), + 1935896 + ); + + // gentest-1488 + assertEqual( + perft( + Board(0x400a903e402000L, 0x20000140020000L, 0x2008000000800001L, 0x8000010000010004L, + 0x2000000000000L, 0x400000000001000L, 0x2000001cc33005L, 0xa44a0b9162000000L, true, 0, 0x0L), + 4 + ), + 1686494 + ); + + // gentest-1489 + assertEqual( + perft( + Board(0x400a903e402000L, 0x20000140020000L, 0x2008000000840000L, 0x8100000000010020L, + 0x2000000000000L, 0x400000000001000L, 0x2000001cc73020L, 0xa54a0a9162000000L, false, 0, 0x0L), + 4 + ), + 2141267 + ); + + // gentest-1490 + assertEqual( + perft( + Board(0x400a903e600000L, 0x20000140020000L, 0x2000000200840000L, 0x8100000000010020L, + 0x2000000000000L, 0x200000000001000L, 0x2000001ce71020L, 0xa3420a9362000000L, true, 0, 0x0L), + 4 + ), + 2274193 + ); + + // gentest-1491 + assertEqual( + perft( + Board(0x400a903e600000L, 0x8000000140020000L, 0x2000000200840000L, 0x100000000010080L, 0x10000000000L, + 0x200000000001000L, 0x800000001ce71080L, 0x23400b9362000000L, false, 0, 0x0L), + 4 + ), + 1250740 + ); + + // gentest-1492 + assertEqual( + perft( + Board(0x400a903a600000L, 0x8000000044000800L, 0x2000000200840000L, 0x100000000010080L, + 0x1000000000000L, 0x200000000001000L, 0x8000000018e51880L, 0x23410a9266000000L, true, 0, 0x0L), + 4 + ), + 1365208 + ); + + // gentest-1493 + assertEqual( + perft( + Board(0x400a903a600000L, 0x8000800004000800L, 0x2000000200840000L, 0x100000000000108L, + 0x1000000000000L, 0x200000000001000L, 0x8000000018e41908L, 0x23418a9226000000L, false, 0, 0x0L), + 4 + ), + 1353738 + ); + + // gentest-1494 + assertEqual( + perft( + Board(0xad832600000L, 0xc000000004000800L, 0x2000000200840000L, 0x100000000000108L, 0x1000000000000L, + 0x200000000001000L, 0x8000000810e41908L, 0x63010ad226000000L, true, 0, 0x0L), + 4 + ), + 1513183 + ); + + // gentest-1495 + assertEqual( + perft( + Board(0xad832600000L, 0x8000200004000800L, 0x2000000200840000L, 0x100000000000420L, 0x1000000000000L, + 0x200000000001000L, 0x8000000810e41c20L, 0x23012ad226000000L, false, 0, 0x0L), + 4 + ), + 1358023 + ); + + // gentest-1496 + assertEqual( + perft( + Board(0xad822600000L, 0x8000200010000000L, 0x2000000200840000L, 0x100000000000420L, 0x1000000000000L, + 0x200000000002000L, 0x8000000800e42420L, 0x23012ad232000000L, true, 0, 0x0L), + 4 + ), + 218118 + ); + + // gentest-1497 + assertEqual( + perft( + Board(0xad822600000L, 0x8000200010000000L, 0x2000000200840000L, 0x100000000000440L, 0x1000000000000L, + 0x4000000000010L, 0x8000000800e40450L, 0x21052ad232000000L, false, 0, 0x0L), + 4 + ), + 1314619 + ); + + // gentest-1498 + assertEqual( + perft( + Board(0xa58a2600000L, 0xc000000010000000L, 0x2400000200040000L, 0x100000000000440L, 0x1000000000000L, + 0x4000000000010L, 0x8400000800640450L, 0x61050a52b2000000L, true, 0, 0x0L), + 4 + ), + 1113465 + ); + + // gentest-1499 + assertEqual( + perft( + Board(0xa58a0600000L, 0xc000000010000000L, 0x2400000300000000L, 0x100000000000440L, 0x1000000000000L, + 0x800000000000010L, 0x8400000900600450L, 0x69010a52b0000000L, false, 0, 0x0L), + 4 + ), + 1493013 + ); + + // gentest-1500 + assertEqual( + perft( + Board(0xa58a0600000L, 0xc000000010000000L, 0x2400000104000000L, 0x200000000004400L, 0x1000000000000L, + 0x800000000000010L, 0x8400000900604410L, 0x6a010a50b4000000L, true, 0, 0x0L), + 4 + ), + 1359242 + ); + + // gentest-1501 + assertEqual( + perft( + Board(0x858a0600000L, 0xc000000000002000L, 0x2000020044000000L, 0x200000000004400L, 0x1000000000000L, + 0x800000000000010L, 0x8000020840604410L, 0x6a010850a4002000L, false, 0, 0x0L), + 4 + ), + 147271 + ); + + // gentest-1502 + assertEqual( + perft( + Board(0x858a0200000L, 0xc000000000002000L, 0x2000000044000000L, 0x200000000004400L, 0x200000000L, + 0x800000000000010L, 0x80000008c0204410L, 0x6a00085224002000L, true, 0, 0x0L), + 4 + ), + 841270 + ); + + // gentest-1503 + assertEqual( + perft( + Board(0x858a0200000L, 0xc000000000080000L, 0x2000000040000000L, 0x200000004004000L, 0x200000000L, + 0x800000000001000L, 0x80000008c4205000L, 0x6a00085220080000L, false, 0, 0x0L), + 4 + ), + 790205 + ); + + // gentest-1504 + assertEqual( + perft( + Board(0x818a0200000L, 0xc000000000080000L, 0x40000040000000L, 0x200000010004000L, 0x200000000L, + 0x800000000001000L, 0x8000000850205000L, 0x4a400812a0080000L, true, 0, 0x0L), + 4 + ), + 593510 + ); + + // gentest-1505 + assertEqual( + perft( + Board(0x818a0200000L, 0xc000000000080000L, 0x40002000000000L, 0x400000001004000L, 0x200000000L, + 0x800000000001000L, 0x8000002801205000L, 0x4c400812a0080000L, false, 0, 0x0L), + 4 + ), + 1296356 + ); + + // gentest-1506 + assertEqual( + perft( + Board(0x818a0200000L, 0xc000000000080000L, 0x40002000000000L, 0x200000001400000L, 0x400000000L, + 0x800000000001000L, 0x8000002801601000L, 0x4a400814a0080000L, true, 0, 0x0L), + 4 + ), + 1673161 + ); + + // gentest-1507 + assertEqual( + perft( + Board(0x81880200000L, 0xc000000000080000L, 0x80800000000000L, 0x200000020400000L, 0x400000000L, + 0x800000000001000L, 0x8080000820601000L, 0x4a00881480080000L, false, 0, 0x0L), + 4 + ), + 1226096 + ); + + // gentest-1508 + assertEqual( + perft( + Board(0x81880200000L, 0xc000000000000004L, 0x80800000000000L, 0x200000020400000L, 0x2000L, + 0x800000000000008L, 0x8080000820600008L, 0x4a00881080002004L, true, 0, 0x0L), + 4 + ), + 1004259 + ); + + // gentest-1509 + assertEqual( + perft( + Board(0x81880200000L, 0xc000000000000004L, 0x80800000000000L, 0x200000042000000L, 0x8000L, + 0x800000000000008L, 0x8080000842200008L, 0x4a00881080008004L, false, 0, 0x0L), + 4 + ), + 1026450 + ); + + // gentest-1510 + assertEqual( + perft( + Board(0x81800a00000L, 0xc000000000000004L, 0x80004000000000L, 0x200000050000000L, 0x8000L, + 0x800000000000008L, 0x8080000850200008L, 0x4a00085000808004L, true, 0, 0x0L), + 4 + ), + 673669 + ); + + // gentest-1511 + assertEqual( + perft( + Board(0x81800a00000L, 0xc000000000000004L, 0x80004000000000L, 0xa0020000L, 0x8000L, + 0x800000000000008L, 0x80800008a0200008L, 0x4800085000828004L, false, 0, 0x0L), + 4 + ), + 642039 + ); + + // gentest-1512 + assertEqual( + perft( + Board(0x80810a00000L, 0xc000000000000004L, 0x404000000000L, 0x80020000L, 0x20000000L, + 0x800000000000008L, 0x8000400880200008L, 0x4800084030820004L, true, 0, 0x0L), + 4 + ), + 334742 + ); + + // gentest-1513 + assertEqual( + perft( + Board(0x80810a00000L, 0xc000000000000004L, 0x404000000000L, 0x80000200L, 0x20000000L, + 0x800000000000008L, 0x8000400880200008L, 0x4800084030800204L, false, 0, 0x0L), + 4 + ), + 350968 + ); + + // gentest-1514 + assertEqual( + perft( + Board(0x80830800000L, 0xc000000000000004L, 0x404000000000L, 0x80001000L, 0x200000000000L, + 0x800000000000008L, 0x80004008a0000008L, 0x4800284010801004L, true, 0, 0x0L), + 4 + ), + 270247 + ); + + // gentest-1515 + assertEqual( + perft( + Board(0x80830800000L, 0x4000400000000004L, 0x6000000000L, 0x80001000L, 0x2000000000000000L, + 0x800000000000008L, 0x4028a0000008L, 0x6800084010801004L, false, 0, 0x0L), + 4 + ), + 310503 + ); + + // gentest-1516 + assertEqual( + perft( + Board(0x80830800000L, 0xc00000000004L, 0x8004000000000L, 0x80002000L, 0x2000000000000000L, + 0x800000000000008L, 0x84008a0000008L, 0x2800884010802004L, true, 0, 0x0L), + 4 + ), + 472353 + ); + + // gentest-1517 + assertEqual( + perft( + Board(0x82810800000L, 0xc00000000004L, 0x8004000000000L, 0xa0000000L, 0x2000000000000000L, + 0x800000000000010L, 0x8402880000010L, 0x2800884030800004L, false, 0, 0x0L), + 4 + ), + 271697 + ); + + // gentest-1518 + assertEqual( + perft( + Board(0x82810008000L, 0x801000000004L, 0x8004000000000L, 0xa0000000L, 0x2000000000000000L, + 0x10000000000010L, 0x8003880000010L, 0x2010884030008004L, true, 0, 0x0L), + 4 + ), + 419254 + ); + + // gentest-1519 + assertEqual( + perft( + Board(0x82810008000L, 0x8800000000004L, 0x104000000000L, 0xa0000000L, 0x4000000000000000L, + 0x10000000000010L, 0x8102880000010L, 0x4010884030008004L, false, 0, 0x0L), + 4 + ), + 271798 + ); + + // gentest-1520 + assertEqual( + perft( + Board(0x82810000000L, 0x2000000040000084L, 0x104000000000L, 0xa0000000L, 0x4000000000000000L, + 0x10000000000010L, 0x2000102880000010L, 0x4010084070000084L, true, 0, 0x0L), + 4 + ), + 236547 + ); + + // gentest-1521 + assertEqual( + perft( + Board(0x82810000000L, 0x2000000040000084L, 0x8004000000000L, 0x80000000L, 0x4000000000000000L, + 0x10000000000020L, 0x2008002880000020L, 0x4010084050000084L, false, 0, 0x0L), + 4 + ), + 326121 + ); + + // gentest-1522 + assertEqual( + perft( + Board(0x82010000000L, 0x2000000040001080L, 0x44000000000L, 0x80000000L, 0x800000000L, + 0x10000000000020L, 0x2000042080000020L, 0x10084850001080L, true, 0, 0x0L), + 4 + ), + 588925 + ); + + // gentest-1523 + assertEqual( + perft( + Board(0x80010000000L, 0x2000000040000080L, 0x240000000000L, 0x80000000L, 0x800000000L, + 0x10000000001000L, 0x2000040080001000L, 0x10280850000080L, false, 0, 0x0L), + 4 + ), + 437881 + ); + + // gentest-1524 + assertEqual( + perft( + Board(0x80010000000L, 0x2000002040000000L, 0x240000000000L, 0x80000000L, 0x800000000L, + 0x10000000000010L, 0x2000040080000010L, 0x10282850000000L, true, 0, 0x0L), + 4 + ), + 510272 + ); + + // gentest-1525 + assertEqual( + perft( + Board(0x80010000000L, 0x80002000008000L, 0x240000000000L, 0x800000000000L, 0x800000000L, + 0x10000000000010L, 0x80840000000010L, 0x10282810008000L, false, 0, 0x0L), + 4 + ), + 366328 + ); + + // gentest-1526 + assertEqual( + perft( + Board(0x80010000000L, 0x80800000008000L, 0x240000000000L, 0x0L, 0x8000000L, 0x10000000001000L, + 0x80040000001000L, 0x10a80018008000L, true, 0, 0x0L), + 4 + ), + 153235 + ); + + // gentest-1527 + assertEqual( + perft( + Board(0x80010000000L, 0xa00000200000L, 0x200000000L, 0x0L, 0x8000000L, 0x10000000001000L, + 0x200200001000L, 0x10880018200000L, false, 0, 0x0L), + 4 + ), + 198568 + ); + + // gentest-1528 + assertEqual( + perft( + Board(0x80010000000L, 0xa04000000000L, 0x200000000L, 0x0L, 0x200L, 0x10000000000008L, 0x200200000008L, + 0x10884010000200L, true, 0, 0x0L), + 4 + ), + 249063 + ); + + // gentest-1529 + assertEqual( + perft( + Board(0x80010000000L, 0x4000804000000000L, 0x4000000L, 0x0L, 0x200L, 0x100000000008L, + 0x4000000004000008L, 0x984010000200L, false, 0, 0x0L), + 4 + ), + 18966 + ); + + // gentest-1530 + assertEqual( + perft( + Board(0x80010000000L, 0x4020004000000000L, 0x200000000L, 0x0L, 0x200L, 0x2000000008L, + 0x4000000200000008L, 0x20086010000200L, true, 0, 0x0L), + 4 + ), + 117054 + ); + + // gentest-1531 + assertEqual( + perft( + Board(0x80010000000L, 0x20204000000000L, 0x8000000000000L, 0x0L, 0x200L, 0x1000000008L, + 0x8200000000008L, 0x20085010000200L, false, 0, 0x0L), + 4 + ), + 170383 + ); + + // gentest-1532 + assertEqual( + perft( + Board(0x80010000000L, 0x20204000000000L, 0x40000000000L, 0x0L, 0x20000L, 0x1000000008L, + 0x240000000008L, 0x20085010020000L, true, 0, 0x0L), + 4 + ), + 61492 + ); + + // gentest-1533 + assertEqual( + perft( + Board(0x80000000000L, 0x20204000000000L, 0x10000000L, 0x0L, 0x1000000L, 0x1000001000L, + 0x200010001000L, 0x20085001000000L, false, 0, 0x0L), + 4 + ), + 322063 + ); + + // gentest-1534 + assertEqual( + perft( + Board(0x80000000000L, 0x8000204000000000L, 0x2000000000000L, 0x0L, 0x1L, 0x1000001000L, + 0x2200000001000L, 0x8000085000000001L, true, 0, 0x0L), + 4 + ), + 258452 + ); + + // gentest-1535 + assertEqual( + perft( + Board(0x80000000000L, 0x8000004010000000L, 0x2000000000000L, 0x0L, 0x4L, 0x1000080000L, + 0x2000010080000L, 0x8000085000000004L, false, 0, 0x0L), + 4 + ), + 138766 + ); + + // gentest-1536 + assertEqual( + perft( + Board(0x80000000000L, 0x8000004000000000L, 0x2000000000000L, 0x0L, 0x4L, 0x1000080000L, + 0x2004000080000L, 0x8000081000000004L, true, 0, 0x0L), + 4 + ), + 106690 + ); + + // gentest-1537 + assertEqual( + perft( + Board(0x80000000000L, 0x8000004000000000L, 0x800000000L, 0x0L, 0x4000000000000L, 0x1000080000L, + 0x4800080000L, 0x8004081000000000L, false, 0, 0x0L), + 4 + ), + 169804 + ); + + // gentest-1538 + assertEqual( + perft( + Board(0x80000000000L, 0x20004000000000L, 0x800000000L, 0x0L, 0x0L, 0x1000000400L, 0x4800000400L, + 0x20081000000000L, true, 0, 0x0L), + 4 + ), + 42778 + ); + + // gentest-1539 + assertEqual( + perft( + Board(0x80000000000L, 0x20004000000000L, 0x80L, 0x0L, 0x0L, 0x2000080000L, 0x4000080080L, + 0x20082000000000L, false, 0, 0x0L), + 4 + ), + 39194 + ); + + // gentest-1540 + assertEqual( + perft( + Board(0x80000000000L, 0x4000000000L, 0x80L, 0x0L, 0x0L, 0x48000000L, 0x8000080L, 0x84040000000L, true, + 0, 0x0L), + 4 + ), + 20492 + ); + + // gentest-1541 + assertEqual( + perft( + Board(0x80000000000L, 0x800000L, 0x2000000000000L, 0x0L, 0x0L, 0x48000000L, 0x2000008000000L, + 0x80040800000L, false, 0, 0x0L), + 4 + ), + 21058 + ); + + // gentest-1542 + assertEqual( + perft( + Board(0x80000000000L, 0x40L, 0x200000L, 0x0L, 0x0L, 0x28000000L, 0x8200000L, 0x80020000040L, true, 0, + 0x0L), + 4 + ), + 13480 + ); + + // gentest-1543 + assertEqual( + perft( + Board(0x80000000000L, 0x200000L, 0x0L, 0x0L, 0x0L, 0x22000000L, 0x2000000L, 0x80020200000L, false, 0, + 0x0L), + 4 + ), + 9133 + ); + + // gentest-1544 + assertEqual( + perft( + Board(0x80000000000L, 0x8000000L, 0x0L, 0x0L, 0x0L, 0x1100000000L, 0x100000000L, 0x81008000000L, true, + 0, 0x0L), + 4 + ), + 4194 + ); + + // gentest-1545 + assertEqual( + perft( + Board(0x800000000L, 0x8000000L, 0x0L, 0x0L, 0x0L, 0x1400000000L, 0x400000000L, 0x1808000000L, false, + 0, 0x0L), + 4 + ), + 4091 + ); + + // gentest-1546 + assertEqual( + perft( + Board(0x8000000L, 0x200000L, 0x0L, 0x0L, 0x0L, 0x1002000000L, 0x2000000L, 0x1008200000L, true, 0, + 0x0L), + 4 + ), + 7439 + ); + + // gentest-1547 + assertEqual( + perft( + Board(0x80000L, 0x200000L, 0x0L, 0x0L, 0x0L, 0x21000000000L, 0x20000000000L, 0x1000280000L, false, 0, + 0x0L), + 4 + ), + 10664 + ); + + // gentest-1548 + assertEqual( + perft( + Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x2000008000000L, 0x2000000000000L, 0x8080040L, true, 0, + 0x0L), + 4 + ), + 5444 + ); + + // gentest-1549 + assertEqual( + perft( + Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x2000000040000L, 0x2000000000000L, 0xc0040L, false, 0, + 0x0L), + 4 + ), + 5930 + ); + + // gentest-1550 + assertEqual( + perft( + Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x400000001000000L, 0x400000000000000L, 0x1080040L, true, 0, + 0x0L), + 4 + ), + 3275 + ); + + // gentest-1551 + assertEqual( + perft( + Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x20000010000L, 0x20000000000L, 0x90040L, false, 0, 0x0L), + 4 + ), + 4544 + ); + + // gentest-1552 + assertEqual( + perft( + Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x4000000010000L, 0x4000000000000L, 0x90040L, true, 0, 0x0L), + 4 + ), + 5403 + ); + + // gentest-1553 + assertEqual( + perft( + Board(0x80000L, 0x40L, 0x0L, 0x0L, 0x0L, 0x1000000020000L, 0x1000000000000L, 0xa0040L, false, 0, + 0x0L), + 4 + ), + 3927 + ); + + // gentest-1554 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1555 + assertEqual( + perft( + Board(0xbf40000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffbf400000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 216714 + ); + + // gentest-1556 + assertEqual( + perft( + Board(0xbf40000400fb00L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400fbffL, 0xbdbfc40000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 294303 + ); + + // gentest-1557 + assertEqual( + perft( + Board(0xbf40000c00f300L, 0x801000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000080000L, 0x1000000000000010L, 0xc08f3f7L, 0xbdbfc01000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 753041 + ); + + // gentest-1558 + assertEqual( + perft( + Board(0xbd40020c00f300L, 0x801000000042L, 0x2400000000000024L, 0x4100000000000081L, + 0x800002000000000L, 0x1000000000000010L, 0x200c00f3f7L, 0x7dbdc01200000000L, true, 0, + 0x100000000000081L), + 4 + ), + 987897 + ); + + // gentest-1559 + assertEqual( + perft( + Board(0xbd40020c00f300L, 0x801000010040L, 0x2400000000000024L, 0x140000000000081L, 0x800000040000000L, + 0x1000000000000010L, 0x4c01f3f5L, 0x3dfdc01200000000L, false, 0, 0x100000000000081L), + 4 + ), + 693880 + ); + + // gentest-1560 + assertEqual( + perft( + Board(0xb845020c02f100L, 0x801000010040L, 0x2400000000000024L, 0x140000000000081L, 0x800000040000000L, + 0x1000000000000010L, 0x4c03f1f5L, 0x3df8c51200000000L, true, 0, 0x100000000000081L), + 4 + ), + 751949 + ); + + // gentest-1561 + assertEqual( + perft( + Board(0xb845021c02e100L, 0x801000010040L, 0x2400000000000024L, 0x140000000000081L, 0x20000200000L, + 0x1000000000000010L, 0x1c23e1f5L, 0x35f8c71200000000L, false, 0, 0x100000000000081L), + 4 + ), + 1126311 + ); + + // gentest-1562 + assertEqual( + perft( + Board(0x9864031c02e100L, 0x801000011000L, 0x2400000000000024L, 0x140000000000081L, 0x20000200000L, + 0x1000000000000010L, 0x1c23f1b5L, 0x35d8e61300000000L, true, 0, 0x100000000000081L), + 4 + ), + 1492591 + ); + + // gentest-1563 + assertEqual( + perft( + Board(0x98640b1402e100L, 0x800000011000L, 0x2400000000000024L, 0x140000000000081L, 0x20040000000L, + 0x1000000000000010L, 0x85403f1b5L, 0x35d8e60300000000L, false, 0, 0x100000000000081L), + 4 + ), + 1492710 + ); + + // gentest-1564 + assertEqual( + perft( + Board(0x90640b1402e100L, 0x800000011000L, 0x2400000000000024L, 0x140000000000081L, 0x1000000000000L, + 0x8000000000010L, 0x81403f1b5L, 0x25d9e40300000000L, true, 0, 0x81L), + 4 + ), + 818289 + ); + + // gentest-1565 + assertEqual( + perft( + Board(0x90640b1400e100L, 0x800000011000L, 0x2400000000000024L, 0x140000000000081L, 0x1000000000000L, + 0x1000000000000010L, 0x91401f1b5L, 0x35d1e40200000000L, false, 0, 0x81L), + 4 + ), + 1046510 + ); + + // gentest-1566 + assertEqual( + perft( + Board(0x90640b1400e100L, 0x800000011000L, 0x2400000000000220L, 0x140000000000081L, 0x20000000000L, + 0x1000000000000010L, 0x91401f3b1L, 0x35d0e60200000000L, true, 0, 0x81L), + 4 + ), + 1546903 + ); + + // gentest-1567 + assertEqual( + perft( + Board(0x90440b1400e100L, 0x800000011000L, 0x2400004000000020L, 0x140000000000081L, 0x1000000000000L, + 0x1000000000000010L, 0x491401f1b1L, 0x35d1c40200000000L, false, 0, 0x81L), + 4 + ), + 1278011 + ); + + // gentest-1568 + assertEqual( + perft( + Board(0x90440b1400e100L, 0x800000010004L, 0x2400004000000020L, 0x41000000000081L, 0x8000000L, + 0x1000000000000010L, 0x491401e1b5L, 0x34d1c40208000000L, true, 0, 0x81L), + 4 + ), + 1433399 + ); + + // gentest-1569 + assertEqual( + perft( + Board(0x9044091640a100L, 0x800000010004L, 0x2400200000000020L, 0x41000000000081L, 0x8000000L, + 0x1000000000000010L, 0x20091441a1b5L, 0x34d1c4000a000000L, false, 0, 0x81L), + 4 + ), + 1310436 + ); + + // gentest-1570 + assertEqual( + perft( + Board(0x9044091440a100L, 0x800000010004L, 0x2400000008000020L, 0x41000000000081L, 0x0L, + 0x1000000000000010L, 0x91c41a0b5L, 0x34d1c40000000100L, true, 0, 0x81L), + 4 + ), + 920124 + ); + + // gentest-1571 + assertEqual( + perft( + Board(0x9044190440a100L, 0x800000010004L, 0x2400000008004000L, 0x42000000000081L, 0x0L, + 0x1000000000000010L, 0x190c41e095L, 0x34d2c40000000100L, false, 0, 0x81L), + 4 + ), + 967837 + ); + + // gentest-1572 + assertEqual( + perft( + Board(0x9044190440a100L, 0x4000000000000004L, 0x2400000008004000L, 0x40000200000081L, 0x0L, + 0x1000000000000010L, 0x190c40e095L, 0x74d0440200000100L, true, 0, 0x81L), + 4 + ), + 876472 + ); + + // gentest-1573 + assertEqual( + perft( + Board(0x9044190440a100L, 0x4000000000000004L, 0x2400020000004000L, 0x40000200000081L, 0x0L, + 0x8000000001000L, 0x2190440f085L, 0x64d8440200000100L, false, 0, 0x0L), + 4 + ), + 467170 + ); + + // gentest-1574 + assertEqual( + perft( + Board(0x9044190440a100L, 0x200000000004L, 0x2400020000800000L, 0x40000200000081L, 0x0L, + 0x1000000000001000L, 0x21904c0b085L, 0x34d0640200000100L, true, 0, 0x0L), + 4 + ), + 1131467 + ); + + // gentest-1575 + assertEqual( + perft( + Board(0x9044190440a100L, 0x200000020000L, 0x2002020000800000L, 0x40000200000088L, 0x0L, + 0x1000000000001000L, 0x21904c2b088L, 0x30d2640200000100L, false, 0, 0x0L), + 4 + ), + 1409082 + ); + + // gentest-1576 + assertEqual( + perft( + Board(0x9045180440a100L, 0x200000020000L, 0x2002020000800000L, 0x20000002000088L, 0x0L, + 0x1000000000001000L, 0x31804c2b088L, 0x30b2640002000100L, true, 0, 0x0L), + 4 + ), + 1619841 + ); + + // gentest-1577 + assertEqual( + perft( + Board(0x9045180440a100L, 0x8000000020000L, 0x2002020000000000L, 0x20000002080080L, 0x0L, + 0x1000000000001000L, 0x318044ab080L, 0x30ba440002000100L, false, 0, 0x0L), + 4 + ), + 1479331 + ); + + // gentest-1578 + assertEqual( + perft( + Board(0x1045980440a100L, 0x8000000020000L, 0x2400020000000000L, 0x20000002080080L, 0x0L, + 0x1000000000000008L, 0x318044aa088L, 0x3438448002000100L, true, 0, 0x0L), + 4 + ), + 1172250 + ); + + // gentest-1579 + assertEqual( + perft( + Board(0x1045980440a100L, 0x8000000020000L, 0x2400000100000000L, 0x200002080080L, 0x0L, + 0x1000000000000004L, 0x119044aa084L, 0x3418648002000100L, false, 0, 0x0L), + 4 + ), + 919098 + ); + + // gentest-1580 + assertEqual( + perft( + Board(0x10419c0440a000L, 0x8000000020001L, 0x2400000100000000L, 0x200002000088L, 0x0L, + 0x1000000000000004L, 0x1190442a08cL, 0x3418608402000001L, true, 0, 0x0L), + 4 + ), + 668104 + ); + + // gentest-1581 + assertEqual( + perft( + Board(0x1041980440a000L, 0x8000000000001L, 0x2400000100000000L, 0x22000088L, 0x0L, + 0x1000000000000004L, 0x801190440a08cL, 0x3410408022000001L, false, 0, 0x0L), + 4 + ), + 581884 + ); + + // gentest-1582 + assertEqual( + perft( + Board(0x1041980440a000L, 0x8000000000001L, 0x2400000100000000L, 0x48020080L, 0x0L, + 0x1000000000000004L, 0x801190c40a084L, 0x3410408040020001L, true, 0, 0x0L), + 4 + ), + 735386 + ); + + // gentest-1583 + assertEqual( + perft( + Board(0x1041980440a000L, 0x8000000000001L, 0x2404000000000000L, 0x4000020880L, 0x0L, + 0x1000000000000004L, 0xc01180440a884L, 0x341040c000020001L, false, 0, 0x0L), + 4 + ), + 592040 + ); + + // gentest-1584 + assertEqual( + perft( + Board(0x1041980400a000L, 0x200000000000001L, 0x2404000000000000L, 0x4000400880L, 0x0L, + 0x1000000000000004L, 0x20401180400a884L, 0x341040c000400001L, true, 0, 0x0L), + 4 + ), + 576202 + ); + + // gentest-1585 + assertEqual( + perft( + Board(0x5198a4000000L, 0x200000000000001L, 0x2404000000000000L, 0x4000400880L, 0x0L, + 0x1000000000000004L, 0x2040118a4000884L, 0x340050c000400001L, false, 0, 0x0L), + 4 + ), + 626710 + ); + + // gentest-1586 + assertEqual( + perft( + Board(0x5188a4000000L, 0x200000000000001L, 0x2404000000000000L, 0x1000005080L, 0x0L, + 0x1000000000000004L, 0x2040108a4001084L, 0x3400509000004001L, true, 0, 0x0L), + 4 + ), + 803147 + ); + + // gentest-1587 + assertEqual( + perft( + Board(0x5188a4000000L, 0x200000000000001L, 0x440000400000000L, 0x1000005080L, 0x0L, + 0x1000000000000004L, 0x200010ca4001084L, 0x1440509000004001L, false, 0, 0x0L), + 4 + ), + 771057 + ); + + // gentest-1588 + assertEqual( + perft( + Board(0x51a884000000L, 0x200000000000001L, 0x48000400000000L, 0x5000001080L, 0x0L, + 0x1000000000000004L, 0x200012c84001084L, 0x104850d000000001L, true, 0, 0x0L), + 4 + ), + 956656 + ); + + // gentest-1589 + assertEqual( + perft( + Board(0x51a884000000L, 0x200000000000001L, 0x48000008000000L, 0x5000009000L, 0x0L, 0x800000000000004L, + 0x20001288c009004L, 0x84850d000000001L, false, 0, 0x0L), + 4 + ), + 869978 + ); + + // gentest-1590 + assertEqual( + perft( + Board(0x518884000000L, 0x200000000000001L, 0x40000208000000L, 0x3000009000L, 0x0L, 0x800000000000800L, + 0x20001088c009800L, 0x84050b200000001L, true, 0, 0x0L), + 4 + ), + 728337 + ); + + // gentest-1591 + assertEqual( + perft( + Board(0x518c80000000L, 0x200000000000001L, 0x40000208000000L, 0x1010008020L, 0x0L, 0x800000000000800L, + 0x200010c98008800L, 0x840509200000021L, false, 0, 0x0L), + 4 + ), + 770433 + ); + + // gentest-1592 + assertEqual( + perft( + Board(0x518c80000000L, 0x200000000000001L, 0x40000208000000L, 0x1040008020L, 0x0L, 0x800000000000800L, + 0x200010cc8008800L, 0x840509200000021L, true, 0, 0x0L), + 4 + ), + 870896 + ); + + // gentest-1593 + assertEqual( + perft( + Board(0x518c80000000L, 0x200000000000001L, 0x40000000001040L, 0x1020008020L, 0x0L, 0x800000000000800L, + 0x200010ca0008840L, 0x840509000001021L, false, 0, 0x0L), + 4 + ), + 574148 + ); + + // gentest-1594 + assertEqual( + perft( + Board(0x518c80000000L, 0x200000000000400L, 0x40000000101000L, 0x1020008004L, 0x0L, 0x800000000000800L, + 0x200010ca0108800L, 0x840509000001404L, true, 0, 0x0L), + 4 + ), + 878484 + ); + + // gentest-1595 + assertEqual( + perft( + Board(0x518c80000000L, 0x200000000000400L, 0x40000020001000L, 0x1001008002L, 0x0L, 0x800000000000800L, + 0x200010ca1008800L, 0x840509000001402L, false, 0, 0x0L), + 4 + ), + 1026730 + ); + + // gentest-1596 + assertEqual( + perft( + Board(0x1508c80000000L, 0x200000000000400L, 0x40000020001000L, 0x41008002L, 0x0L, 0x800000000000800L, + 0x201000ca1008800L, 0x840508040001402L, true, 0, 0x0L), + 4 + ), + 1840204 + ); + + // gentest-1597 + assertEqual( + perft( + Board(0x5508880000000L, 0x200000000000400L, 0x40000020001000L, 0x4001008002L, 0x0L, + 0x800000000000800L, 0x2050008a1008800L, 0x84050c000001402L, false, 0, 0x0L), + 4 + ), + 145113 + ); + + // gentest-1598 + assertEqual( + perft( + Board(0x5508880000000L, 0x40000000400L, 0x40000020080000L, 0x4001008002L, 0x0L, 0x400000000000800L, + 0x50408a1008800L, 0x44050c000080402L, true, 0, 0x0L), + 4 + ), + 1720360 + ); + + // gentest-1599 + assertEqual( + perft( + Board(0x5508880000000L, 0x200000000000400L, 0x40000020080000L, 0x4001002020L, 0x0L, + 0x400000000000800L, 0x2050008a1002800L, 0x44050c000080420L, false, 0, 0x0L), + 4 + ), + 1231918 + ); + + // gentest-1600 + assertEqual( + perft( + Board(0x5508880000000L, 0x40000000400L, 0x8000000020080000L, 0x4001002020L, 0x0L, 0x400000000000800L, + 0x50408a1002800L, 0x840050c000080420L, true, 0, 0x0L), + 4 + ), + 1266129 + ); + + def batch4(): Unit = + // gentest-1601 + assertEqual( + perft( + Board(0x5508880000000L, 0x40000000400L, 0x8000000000480000L, 0x4001002000L, 0x0L, 0x400000000000008L, + 0x5040881402008L, 0x840050c000080400L, false, 0, 0x0L), + 4 + ), + 1112932 + ); + + // gentest-1602 + assertEqual( + perft( + Board(0x5508880000000L, 0x40000000010L, 0x8000000004400000L, 0x4001004000L, 0x0L, 0x400000000000008L, + 0x5040881404008L, 0x840050c004000010L, true, 0, 0x0L), + 4 + ), + 826733 + ); + + // gentest-1603 + assertEqual( + perft( + Board(0x5508880000000L, 0x40000000010L, 0x8000000000400100L, 0x4004000200L, 0x0L, 0x400000000000008L, + 0x5040884400208L, 0x840050c000000110L, false, 0, 0x0L), + 4 + ), + 709443 + ); + + // gentest-1604 + assertEqual( + perft( + Board(0x5508080000000L, 0x40000000010L, 0x8000000000400000L, 0x804020000L, 0x0L, 0x400000000000008L, + 0x5040084420008L, 0x8400508800000010L, true, 0, 0x0L), + 4 + ), + 109621 + ); + + // gentest-1605 + assertEqual( + perft( + Board(0x4508080000000L, 0x8000010L, 0x8000000000400000L, 0x4004020000L, 0x100000000000000L, + 0x400000000000008L, 0x10400008c420008L, 0x840050c000000010L, false, 0, 0x0L), + 4 + ), + 56768 + ); + + // gentest-1606 + assertEqual( + perft( + Board(0x4508080000000L, 0x8000010L, 0x8000000000400000L, 0x4004020000L, 0x40000000000L, + 0x400000000000008L, 0x404008c420008L, 0x840050c000000010L, true, 0, 0x0L), + 4 + ), + 601422 + ); + + // gentest-1607 + assertEqual( + perft( + Board(0x4409080000000L, 0x8000010L, 0x8000000000400000L, 0x4004020000L, 0x40000000000L, + 0x400000000000008L, 0x404008c420008L, 0x840040d000000010L, false, 0, 0x0L), + 4 + ), + 319284 + ); + + // gentest-1608 + assertEqual( + perft( + Board(0x4408088000000L, 0x200000L, 0x8000000000400000L, 0x4000020400L, 0x40000000000L, + 0x400000000000008L, 0x4040080420408L, 0x840040c008200000L, true, 0, 0x0L), + 4 + ), + 584433 + ); + + // gentest-1609 + assertEqual( + perft( + Board(0x4408088000000L, 0x200000L, 0x200000400000L, 0x4000060000L, 0x10000000L, 0x400000000000008L, + 0x4000090460008L, 0x40060c008200000L, false, 0, 0x0L), + 4 + ), + 815067 + ); + + // gentest-1610 + assertEqual( + perft( + Board(0x4408088000000L, 0x800L, 0x200000400000L, 0x4200040000L, 0x10000000L, 0x8000000000008L, + 0x4000290440008L, 0x860c008000800L, true, 0, 0x0L), + 4 + ), + 1093864 + ); + + // gentest-1611 + assertEqual( + perft( + Board(0x4408088000000L, 0x20000L, 0x200000400000L, 0x4400040000L, 0x10000000L, 0x8000000000008L, + 0x4000490440008L, 0x860c008020000L, false, 0, 0x0L), + 4 + ), + 691515 + ); + + // gentest-1612 + assertEqual( + perft( + Board(0x4408088000000L, 0x10000000000L, 0x200000400000L, 0x4000000004L, 0x10000000L, 0x8000000000008L, + 0x400009040000cL, 0x861c008000000L, true, 0, 0x0L), + 4 + ), + 514113 + ); + + // gentest-1613 + assertEqual( + perft( + Board(0x4008088000000L, 0x10000000000L, 0x200000400000L, 0x200000004L, 0x800000000000L, + 0x8000000000008L, 0x480008040000cL, 0x8218208000000L, false, 0, 0x0L), + 4 + ), + 743706 + ); + + // gentest-1614 + assertEqual( + perft( + Board(0x4008088000000L, 0x10000000000L, 0x800000000400000L, 0x6L, 0x8000000000000000L, + 0x8000000000008L, 0x800400008040000cL, 0x808018008000002L, true, 0, 0x0L), + 4 + ), + 247000 + ); + + // gentest-1615 + assertEqual( + perft( + Board(0x4008088000000L, 0x10000000000L, 0x800000000002000L, 0x200000400000000L, 0x8000000000000000L, + 0x8000000000008L, 0x8004000480002008L, 0xa08018008000000L, false, 0, 0x0L), + 4 + ), + 573146 + ); + + // gentest-1616 + assertEqual( + perft( + Board(0x8088000000L, 0x804000000000000L, 0x2000L, 0x402000000L, 0x8000000000000000L, 0x8000000000008L, + 0x8800000480002008L, 0xc00800a000000L, true, 0, 0x0L), + 4 + ), + 333989 + ); + + // gentest-1617 + assertEqual( + perft( + Board(0x8080000000L, 0x804000000000000L, 0x8000000L, 0x60000L, 0x8000000000000000L, 0x8000000000008L, + 0x8800000088040008L, 0xc008000020000L, false, 0, 0x0L), + 4 + ), + 400883 + ); + + // gentest-1618 + assertEqual( + perft( + Board(0x8080000000L, 0x800010000000000L, 0x8000000L, 0x204000000L, 0x8000000000000000L, + 0x8000000000008L, 0x880000008c000008L, 0x8018200000000L, true, 0, 0x0L), + 4 + ), + 378844 + ); + + // gentest-1619 + assertEqual( + perft( + Board(0x8080000000L, 0x800010000000000L, 0x8000000L, 0x2000000040000L, 0x1000000000L, + 0x8000000000008L, 0x800001088040008L, 0xa018000000000L, false, 0, 0x0L), + 4 + ), + 370565 + ); + + // gentest-1620 + assertEqual( + perft( + Board(0x8080000000L, 0x800010000000000L, 0x100000L, 0x40000040000L, 0x1000000000L, 0x8000000000008L, + 0x800001080140008L, 0x8058000000000L, true, 0, 0x0L), + 4 + ), + 409940 + ); + + // gentest-1621 + assertEqual( + perft( + Board(0x8080000000L, 0x804000000000000L, 0x100000L, 0x40000080000L, 0x1000000000L, 0x8000000000800L, + 0x800001080180800L, 0xc048000000000L, false, 0, 0x0L), + 4 + ), + 73773 + ); + + // gentest-1622 + assertEqual( + perft( + Board(0x8080000000L, 0x800000800000000L, 0x100000L, 0x80000080000L, 0x400000000L, 0x8000000000800L, + 0x800000480180800L, 0x8088800000000L, true, 0, 0x0L), + 4 + ), + 263921 + ); + + // gentest-1623 + assertEqual( + perft( + Board(0x8080000000L, 0x800000800000000L, 0x100000L, 0x80000080000L, 0x200000000L, 0x400000000000400L, + 0x800000280180400L, 0x400088800000000L, false, 0, 0x0L), + 4 + ), + 506864 + ); + + // gentest-1624 + assertEqual( + perft( + Board(0x8080000000L, 0x2000800000000L, 0x100000L, 0x280000L, 0x200000000L, 0x400000000000400L, + 0x2000280180400L, 0x400008800200000L, true, 0, 0x0L), + 4 + ), + 447796 + ); + + // gentest-1625 + assertEqual( + perft( + Board(0x8080000000L, 0x800000800000000L, 0x100000L, 0x20000000080000L, 0x200000000L, + 0x400000000020000L, 0x8000002801a0000L, 0x420008800000000L, false, 0, 0x0L), + 4 + ), + 631251 + ); + + // gentest-1626 + assertEqual( + perft( + Board(0x8080000000L, 0x804000000000000L, 0x100000L, 0x2000000000080000L, 0x40000000000L, + 0x400000000020000L, 0x8000400801a0000L, 0x2404008000000000L, true, 0, 0x0L), + 4 + ), + 407444 + ); + + // gentest-1627 + assertEqual( + perft( + Board(0x8080000000L, 0x800100000000000L, 0x20000000L, 0x2000000000080000L, 0x1000000000000000L, + 0x400000000020000L, 0x18000000a00a0000L, 0x2400108000000000L, false, 0, 0x0L), + 4 + ), + 277690 + ); + + // gentest-1628 + assertEqual( + perft( + Board(0x8080000000L, 0x800000000000000L, 0x0L, 0x20080000L, 0x1000000000L, 0x400000000020000L, + 0x10800a0000L, 0xc00008020000000L, true, 0, 0x0L), + 4 + ), + 382016 + ); + + // gentest-1629 + assertEqual( + perft( + Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x20200000L, 0x1000000000L, 0x400000000000400L, + 0x1080200400L, 0x402008020000000L, false, 0, 0x0L), + 4 + ), + 425290 + ); + + // gentest-1630 + assertEqual( + perft( + Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x2200000L, 0x1000000000L, 0x800000000000200L, + 0x1080200200L, 0x802008002000000L, true, 0, 0x0L), + 4 + ), + 60989 + ); + + // gentest-1631 + assertEqual( + perft( + Board(0x8080000000L, 0x400000000L, 0x0L, 0x2400000L, 0x1000000000L, 0x800000000000004L, 0x1080400004L, + 0x800008402000000L, false, 0, 0x0L), + 4 + ), + 450321 + ); + + // gentest-1632 + assertEqual( + perft( + Board(0x8080000000L, 0x400000000L, 0x0L, 0x420000L, 0x4000000000L, 0x1000000000000004L, 0x4080400004L, + 0x1000008400020000L, true, 0, 0x0L), + 4 + ), + 224525 + ); + + // gentest-1633 + assertEqual( + perft( + Board(0x8080000000L, 0x400000000L, 0x0L, 0x420000L, 0x2000000000L, 0x10000000000004L, 0x2080400004L, + 0x10008400020000L, false, 0, 0x0L), + 4 + ), + 427572 + ); + + // gentest-1634 + assertEqual( + perft( + Board(0x8080000000L, 0x400000000L, 0x0L, 0x500000L, 0x80000000000000L, 0x2000000000000004L, + 0x80000080400004L, 0x2000008400100000L, true, 0, 0x0L), + 4 + ), + 221460 + ); + + // gentest-1635 + assertEqual( + perft( + Board(0x8080000000L, 0x8000000000000L, 0x0L, 0x500000L, 0x20000000000000L, 0x2000000000000800L, + 0x20000080400800L, 0x2008008000100000L, false, 0, 0x0L), + 4 + ), + 4279 + ); + + // gentest-1636 + assertEqual( + perft( + Board(0x8080000000L, 0x400000000L, 0x0L, 0x100000L, 0x0L, 0x20000000000800L, 0x80100800L, + 0x20008400000000L, true, 0, 0x0L), + 4 + ), + 53017 + ); + + // gentest-1637 + assertEqual( + perft( + Board(0x8080000000L, 0x400000000L, 0x0L, 0x20000L, 0x0L, 0x200000000800L, 0x80020800L, + 0x208400000000L, false, 0, 0x0L), + 4 + ), + 63665 + ); + + // gentest-1638 + assertEqual( + perft( + Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x2L, 0x0L, 0x1000000800L, 0x80000802L, 0x2009000000000L, + true, 0, 0x0L), + 4 + ), + 41364 + ); + + // gentest-1639 + assertEqual( + perft( + Board(0x8080000000L, 0x2000000000000L, 0x0L, 0x2L, 0x0L, 0x2000000004L, 0x80000006L, 0x200a000000000L, + false, 0, 0x0L), + 4 + ), + 21948 + ); + + // gentest-1640 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1641 + assertEqual( + perft( + Board(0xff00000800f700L, 0x4000040000000042L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2800f7fbL, 0xfdff040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 532558 + ); + + // gentest-1642 + assertEqual( + perft( + Board(0xe708101800e700L, 0x4000040000000042L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x3800e7fbL, 0xfde70c1000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1847613 + ); + + // gentest-1643 + assertEqual( + perft( + Board(0xe708101840a700L, 0x4000040000000042L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000001000L, 0x3840b7ebL, 0xedef0c1000000000L, false, 0, 0x0L), + 4 + ), + 1036367 + ); + + // gentest-1644 + assertEqual( + perft( + Board(0x670880b8402700L, 0x4000040000000042L, 0x2400000000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000001000L, 0x984037ebL, 0xed6f0c8020000000L, true, 0, 0x0L), + 4 + ), + 764370 + ); + + // gentest-1645 + assertEqual( + perft( + Board(0x670880b8600700L, 0x4000001000010040L, 0x2400000000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000001000L, 0x986117e9L, 0xed6f089020000000L, false, 0, 0x0L), + 4 + ), + 820131 + ); + + // gentest-1646 + assertEqual( + perft( + Board(0x2708c0b8640300L, 0x4000000040010040L, 0x2400000000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000001000L, 0x986513e9L, 0xed2f08c060000000L, true, 0, 0x0L), + 4 + ), + 914777 + ); + + // gentest-1647 + assertEqual( + perft( + Board(0x2708c0b8640300L, 0x4000000040010040L, 0x2400000000000020L, 0x180000000800004L, + 0x800000000000008L, 0x8000000001000L, 0x98e5136cL, 0x6daf08c060000000L, false, 0, 0x0L), + 4 + ), + 864286 + ); + + // gentest-1648 + assertEqual( + perft( + Board(0x2708c8b0640300L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, + 0x1000000000000008L, 0x8000000001000L, 0x890e5136cL, 0x55af88c060000000L, true, 0, 0x0L), + 4 + ), + 653206 + ); + + // gentest-1649 + assertEqual( + perft( + Board(0x2708c8b0640300L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, + 0x8000100000000000L, 0x8000000001000L, 0x8000000890e51364L, 0x45af98c060000000L, false, 0, 0x0L), + 4 + ), + 892116 + ); + + // gentest-1650 + assertEqual( + perft( + Board(0x728c0b0660100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, + 0x8000000800000000L, 0x8000000001000L, 0x8000000090e71164L, 0x458fa8c860000000L, true, 0, 0x0L), + 4 + ), + 752791 + ); + + // gentest-1651 + assertEqual( + perft( + Board(0x728c0b0660100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800004L, 0x400800000000L, + 0x40000001000L, 0x400090e71164L, 0x4587acc860000000L, false, 0, 0x0L), + 4 + ), + 1125940 + ); + + // gentest-1652 + assertEqual( + perft( + Board(0x728c0b0660100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800002L, 0x400400000000L, + 0x20000001000L, 0x400090e71162L, 0x4587aac460000000L, true, 0, 0x0L), + 4 + ), + 1338685 + ); + + // gentest-1653 + assertEqual( + perft( + Board(0x728c0b0620100L, 0x4000000040010040L, 0x400800000000020L, 0x180000000800010L, 0x2000040000L, + 0x20000001000L, 0x2090e31170L, 0x4587aac060040000L, false, 0, 0x0L), + 4 + ), + 1003922 + ); + + // gentest-1654 + assertEqual( + perft( + Board(0x728c0b0620100L, 0x10000040010040L, 0x400800000004000L, 0x180000000800010L, 0x2000000200L, + 0x20000001000L, 0x2090e35150L, 0x597aac060000200L, true, 0, 0x0L), + 4 + ), + 167517 + ); + + // gentest-1655 + assertEqual( + perft( + Board(0x728d0a0620100L, 0x10000040010040L, 0x400800000004000L, 0x120000000800010L, 0x2000000200L, + 0x20000080000L, 0x3080eb4150L, 0x537aac060000200L, false, 0, 0x0L), + 4 + ), + 1577379 + ); + + // gentest-1656 + assertEqual( + perft( + Board(0x62990a0620100L, 0x10000040010040L, 0x400800000004000L, 0x140000000800010L, 0x4000000200L, + 0x20000080000L, 0x5080eb4150L, 0x556ab8060000200L, true, 0, 0x0L), + 4 + ), + 1693697 + ); + + // gentest-1657 + assertEqual( + perft( + Board(0x62990a2600100L, 0x400040010040L, 0x400800000004000L, 0x140000000000090L, 0x4000000200L, + 0x20000080000L, 0x50826941d0L, 0x546eb8060000200L, false, 0, 0x0L), + 4 + ), + 1328473 + ); + + // gentest-1658 + assertEqual( + perft( + Board(0x62990a2600100L, 0x8000000040010040L, 0x400004000000020L, 0x140000000000090L, 0x200L, + 0x20000080000L, 0x10826901f0L, 0x85462bc060000200L, true, 0, 0x0L), + 4 + ), + 1094209 + ); + + // gentest-1659 + assertEqual( + perft( + Board(0x62990a2600100L, 0x8000000000110040L, 0x400004000000020L, 0x140000000000084L, 0x200L, + 0x20000080000L, 0x10826901e4L, 0x85462bc020100200L, false, 0, 0x0L), + 4 + ), + 1290097 + ); + + // gentest-1660 + assertEqual( + perft( + Board(0x62990a2600100L, 0x20000000110040L, 0x400004000000020L, 0x140000000000480L, 0x0L, + 0x20000080000L, 0x10826905e0L, 0x5662bc020100000L, true, 0, 0x0L), + 4 + ), + 1018632 + ); + + // gentest-1661 + assertEqual( + perft( + Board(0x62990a2600100L, 0x20000000011400L, 0x400004000000020L, 0x140000000800000L, 0x0L, + 0x20000080000L, 0x1082e91120L, 0x5662bc020000400L, false, 0, 0x0L), + 4 + ), + 463014 + ); + + // gentest-1662 + assertEqual( + perft( + Board(0x62992a0600100L, 0x20000000011010L, 0x4000800020L, 0x140000000000000L, 0x0L, 0x20000080000L, + 0x1280691120L, 0x1662bc020800010L, true, 0, 0x0L), + 4 + ), + 140774 + ); + + // gentest-1663 + assertEqual( + perft( + Board(0x62992a0600100L, 0x20000000010050L, 0x4000000020L, 0x140000000000000L, 0x0L, 0x20000040000L, + 0x1280650140L, 0x1662bc020000030L, false, 0, 0x0L), + 4 + ), + 390034 + ); + + // gentest-1664 + assertEqual( + perft( + Board(0x609a2a0600100L, 0x1000010050L, 0x4000000020L, 0x140000000000000L, 0x0L, 0x20000040000L, + 0x80280650140L, 0x14603f020000030L, true, 0, 0x0L), + 4 + ), + 464014 + ); + + // gentest-1665 + assertEqual( + perft( + Board(0xe01a2a0600100L, 0x1000010050L, 0x4000000020L, 0x180000000000000L, 0x0L, 0x20002000000L, + 0x8000282610140L, 0x18603f020000030L, false, 0, 0x0L), + 4 + ), + 364639 + ); + + // gentest-1666 + assertEqual( + perft( + Board(0xe01e220600100L, 0x1000010050L, 0x20L, 0x21000000000000L, 0x0L, 0x20002000000L, + 0x8004202610140L, 0x2703b020000030L, true, 0, 0x0L), + 4 + ), + 202471 + ); + + // gentest-1667 + assertEqual( + perft( + Board(0xe01e220610000L, 0x1000000052L, 0x800000L, 0x21000000000000L, 0x0L, 0x20002000000L, + 0x8004202610042L, 0x2703b020800010L, false, 0, 0x0L), + 4 + ), + 152966 + ); + + // gentest-1668 + assertEqual( + perft( + Board(0xe41a220610000L, 0x40000000052L, 0x800000L, 0x41000000000000L, 0x0L, 0x20002000000L, + 0x8400202610042L, 0x4707a020800010L, true, 0, 0x0L), + 4 + ), + 50333 + ); + + // gentest-1669 + assertEqual( + perft( + Board(0x640a220610000L, 0x40000000052L, 0x800000L, 0x841000000000000L, 0x0L, 0x20000040000L, + 0x800400000650042L, 0x4706a220800010L, false, 0, 0x0L), + 4 + ), + 421426 + ); + + // gentest-1670 + assertEqual( + perft( + Board(0x640a220610000L, 0x8000052L, 0x800000L, 0x6001000000000000L, 0x0L, 0x20000040000L, + 0x2000400000650042L, 0x400702a228800010L, true, 0, 0x0L), + 4 + ), + 333675 + ); + + // gentest-1671 + assertEqual( + perft( + Board(0x640a220210000L, 0x40000000052L, 0x800000L, 0x4001000000000000L, 0x0L, 0x20000040000L, + 0x4000400020250042L, 0x706a200800010L, false, 0, 0x0L), + 4 + ), + 157077 + ); + + // gentest-1672 + assertEqual( + perft( + Board(0x640a220210000L, 0x152L, 0x800000L, 0x4001000000000000L, 0x0L, 0x20000000800L, + 0x4000400020210842L, 0x702a200800110L, true, 0, 0x0L), + 4 + ), + 155066 + ); + + // gentest-1673 + assertEqual( + perft( + Board(0x640a220210000L, 0x152L, 0x800000L, 0x40000001000000L, 0x0L, 0x20000000008L, 0x4040002021004aL, + 0x602a201800110L, false, 0, 0x0L), + 4 + ), + 157026 + ); + + // gentest-1674 + assertEqual( + perft( + Board(0x640a220000000L, 0x950L, 0x800000L, 0x40000000200000L, 0x0L, 0x20000000008L, 0x40400020000848L, + 0x602a200a00110L, true, 0, 0x0L), + 4 + ), + 174492 + ); + + // gentest-1675 + assertEqual( + perft( + Board(0x640a220000000L, 0x2000052L, 0x800000L, 0x20000000200000L, 0x0L, 0x20000000008L, + 0x2040002000004aL, 0x602a202a00010L, false, 0, 0x0L), + 4 + ), + 251721 + ); + + // gentest-1676 + assertEqual( + perft( + Board(0x640a220000000L, 0x800000042L, 0x800000L, 0x20000000010000L, 0x0L, 0x20000000010L, + 0x20400020000052L, 0x602aa00810000L, true, 0, 0x0L), + 4 + ), + 269851 + ); + + // gentest-1677 + assertEqual( + perft( + Board(0x640a220000000L, 0x800000042L, 0x800000L, 0x80000010000L, 0x0L, 0x400000010L, 0x480020000052L, + 0x600ae00810000L, false, 0, 0x0L), + 4 + ), + 291640 + ); + + // gentest-1678 + assertEqual( + perft( + Board(0x640a220000000L, 0x100042L, 0x40000000L, 0x10000010000L, 0x0L, 0x400000010L, 0x410020000052L, + 0x600a640110000L, true, 0, 0x0L), + 4 + ), + 207292 + ); + + // gentest-1679 + assertEqual( + perft( + Board(0x640a220000000L, 0x800402L, 0x40000000L, 0x10000010000L, 0x0L, 0x400000020L, 0x410020800022L, + 0x600a640010400L, false, 0, 0x0L), + 4 + ), + 241839 + ); + + // gentest-1680 + assertEqual( + perft( + Board(0x442a220000000L, 0x800402L, 0x40000000L, 0x10000000000L, 0x0L, 0x400004000L, 0x400020804002L, + 0x403a640000400L, true, 0, 0x0L), + 4 + ), + 97718 + ); + + // gentest-1681 + assertEqual( + perft( + Board(0x442a220000000L, 0x4000000402L, 0x1000L, 0x10000000000L, 0x0L, 0x400002000L, 0x404020002002L, + 0x403a600001400L, false, 0, 0x0L), + 4 + ), + 140045 + ); + + // gentest-1682 + assertEqual( + perft( + Board(0x442a220000000L, 0x4000100800L, 0x80000L, 0x10000000000L, 0x0L, 0x400002000L, 0x404020002800L, + 0x403a600180000L, true, 0, 0x0L), + 4 + ), + 151819 + ); + + // gentest-1683 + assertEqual( + perft( + Board(0x442a220000000L, 0x4000100800L, 0x2L, 0x10000000000L, 0x0L, 0x400002000L, 0x404020002800L, + 0x403a600100002L, false, 0, 0x0L), + 4 + ), + 166524 + ); + + // gentest-1684 + assertEqual( + perft( + Board(0x442a220000000L, 0x100800L, 0x10000000L, 0x10000000000L, 0x0L, 0x400002000L, 0x400020002800L, + 0x403a610100000L, true, 0, 0x0L), + 4 + ), + 92495 + ); + + // gentest-1685 + assertEqual( + perft( + Board(0x442a220000000L, 0x100800L, 0x10000000L, 0x100L, 0x0L, 0x400800000L, 0x400020800800L, + 0x402a610100100L, false, 0, 0x0L), + 4 + ), + 87344 + ); + + // gentest-1686 + assertEqual( + perft( + Board(0x442a220000000L, 0x120000L, 0x10000000L, 0x100000000L, 0x0L, 0x2800000L, 0x400020820000L, + 0x402a312100000L, true, 0, 0x0L), + 4 + ), + 82278 + ); + + // gentest-1687 + assertEqual( + perft( + Board(0x44222a0000000L, 0x100001L, 0x10000000L, 0x100000000L, 0x0L, 0x2008000L, 0x400020008001L, + 0x4022392100000L, false, 0, 0x0L), + 4 + ), + 26138 + ); + + // gentest-1688 + assertEqual( + perft( + Board(0x44222a0000000L, 0x4000000L, 0x10000000L, 0x1L, 0x0L, 0x2800000L, 0x400020800000L, + 0x4022296000001L, true, 0, 0x0L), + 4 + ), + 17802 + ); + + // gentest-1689 + assertEqual( + perft( + Board(0x40222a0000000L, 0x4000000000000800L, 0x10000000L, 0x1L, 0x0L, 0x2800000L, 0x4000000020800000L, + 0x4022292000801L, false, 0, 0x0L), + 4 + ), + 41937 + ); + + // gentest-1690 + assertEqual( + perft( + Board(0x40222a0000000L, 0x200000020000L, 0x2000000000000L, 0x1L, 0x0L, 0x2800000L, 0x200020800000L, + 0x6022282020001L, true, 0, 0x0L), + 4 + ), + 76771 + ); + + // gentest-1691 + assertEqual( + perft( + Board(0x40222a0000000L, 0x120000L, 0x2000000000000L, 0x1L, 0x0L, 0x810000L, 0x20900000L, + 0x6022280030001L, false, 0, 0x0L), + 4 + ), + 52265 + ); + + // gentest-1692 + assertEqual( + perft( + Board(0x40222a0000000L, 0x120000L, 0x0L, 0x1L, 0x0L, 0x2004000L, 0x20104000L, 0x4022282020001L, true, + 0, 0x0L), + 4 + ), + 58772 + ); + + // gentest-1693 + assertEqual( + perft( + Board(0x40222a0000000L, 0x120000L, 0x0L, 0x1L, 0x0L, 0x44000L, 0x20104000L, 0x4022280060001L, false, + 0, 0x0L), + 4 + ), + 74771 + ); + + // gentest-1694 + assertEqual( + perft( + Board(0x40222a0000000L, 0x820L, 0x0L, 0x10000L, 0x0L, 0x44000L, 0x20004020L, 0x4022280050800L, true, + 0, 0x0L), + 4 + ), + 42095 + ); + + // gentest-1695 + assertEqual( + perft( + Board(0x40222a0000000L, 0x200020L, 0x0L, 0x10000L, 0x0L, 0x840000L, 0x20800020L, 0x4022280250000L, + false, 0, 0x0L), + 4 + ), + 21816 + ); + + // gentest-1696 + assertEqual( + perft( + Board(0x40222a0000000L, 0x208000L, 0x0L, 0x1L, 0x0L, 0x840000L, 0x20808000L, 0x4022280240001L, true, + 0, 0x0L), + 4 + ), + 20837 + ); + + // gentest-1697 + assertEqual( + perft( + Board(0x40222a0000000L, 0x800000200000L, 0x0L, 0x8L, 0x0L, 0x840000L, 0x800020800000L, + 0x4022280240008L, false, 0, 0x0L), + 4 + ), + 32236 + ); + + // gentest-1698 + assertEqual( + perft( + Board(0x4022220000000L, 0x801000000000L, 0x0L, 0x800000000000000L, 0x0L, 0x80040000L, 0x8000a0000000L, + 0x804023200040000L, true, 0, 0x0L), + 4 + ), + 72169 + ); + + // gentest-1699 + assertEqual( + perft( + Board(0x4022220000000L, 0x801000000000L, 0x0L, 0x4000000000000000L, 0x0L, 0x80040000L, + 0x8000a0000000L, 0x4004023200040000L, false, 0, 0x0L), + 4 + ), + 48880 + ); + + // gentest-1700 + assertEqual( + perft( + Board(0x4022220000000L, 0x4000040000000000L, 0x0L, 0x0L, 0x0L, 0x88000000L, 0x40000000a0000000L, + 0x4062208000000L, true, 0, 0x0L), + 4 + ), + 12510 + ); + + // gentest-1701 + assertEqual( + perft( + Board(0x4022220000000L, 0x240000000000L, 0x0L, 0x0L, 0x0L, 0x4400000000L, 0x204020000000L, + 0x4062600000000L, false, 0, 0x0L), + 4 + ), + 20988 + ); + + // gentest-1702 + assertEqual( + perft( + Board(0x4020022000000L, 0x200200000000000L, 0x0L, 0x0L, 0x0L, 0x2400000000L, 0x202020000000L, + 0x204020402000000L, true, 0, 0x0L), + 4 + ), + 18272 + ); + + // gentest-1703 + assertEqual( + perft( + Board(0x4020022000000L, 0x200200000000000L, 0x0L, 0x0L, 0x0L, 0x4200000L, 0x200020200000L, + 0x204020006000000L, false, 0, 0x0L), + 4 + ), + 33500 + ); + + // gentest-1704 + assertEqual( + perft( + Board(0x20422000000L, 0x10010000000L, 0x0L, 0x0L, 0x0L, 0x4200000L, 0x30200000L, 0x30406000000L, true, + 0, 0x0L), + 4 + ), + 17389 + ); + + // gentest-1705 + assertEqual( + perft( + Board(0x20422000000L, 0x14000000000L, 0x0L, 0x0L, 0x0L, 0x800001000L, 0x4020001000L, 0x30c02000000L, + false, 0, 0x0L), + 4 + ), + 17226 + ); + + // gentest-1706 + assertEqual( + perft( + Board(0x20422000000L, 0x20010000000000L, 0x0L, 0x0L, 0x0L, 0x4000000001000L, 0x20000020001000L, + 0x4030402000000L, true, 0, 0x0L), + 4 + ), + 18958 + ); + + // gentest-1707 + assertEqual( + perft( + Board(0x20026000000L, 0x14000000000L, 0x0L, 0x0L, 0x0L, 0x4000000000008L, 0x4020000008L, + 0x4030006000000L, false, 0, 0x0L), + 4 + ), + 19693 + ); + + // gentest-1708 + assertEqual( + perft( + Board(0x20024020000L, 0x200004000000000L, 0x0L, 0x0L, 0x0L, 0x4000000000800L, 0x4020000800L, + 0x204020004020000L, true, 0, 0x0L), + 4 + ), + 20833 + ); + + // gentest-1709 + assertEqual( + perft( + Board(0x20024020000L, 0x200004000000000L, 0x0L, 0x0L, 0x0L, 0x8000002000000L, 0x4022000000L, + 0x208020004020000L, false, 0, 0x0L), + 4 + ), + 15574 + ); + + // gentest-1710 + assertEqual( + perft( + Board(0x20020060000L, 0x200100000000000L, 0x0L, 0x0L, 0x0L, 0x80002000000L, 0x100022000000L, + 0x2000a0000060000L, true, 0, 0x0L), + 4 + ), + 18981 + ); + + // gentest-1711 + assertEqual( + perft( + Board(0x20020000000L, 0x110000000000L, 0x0L, 0x0L, 0x0L, 0x80000040000L, 0x100020040000L, + 0xb0000000000L, false, 0, 0x0L), + 4 + ), + 18636 + ); + + // gentest-1712 + assertEqual( + perft( + Board(0x20020000000L, 0x1000100000000000L, 0x0L, 0x0L, 0x0L, 0x80000000400L, 0x100020000400L, + 0x10000a0000000000L, true, 0, 0x0L), + 4 + ), + 22063 + ); + + // gentest-1713 + assertEqual( + perft( + Board(0x20020000000L, 0x40100000000000L, 0x0L, 0x0L, 0x0L, 0x80000040000L, 0x100020040000L, + 0x400a0000000000L, false, 0, 0x0L), + 4 + ), + 18537 + ); + + // gentest-1714 + assertEqual( + perft( + Board(0x20020000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x10040000L, 0x40000020040000L, + 0x20010000000L, true, 0, 0x0L), + 4 + ), + 4912 + ); + + // gentest-1715 + assertEqual( + perft( + Board(0x20000000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x20000008L, 0x40000000000008L, + 0x20020000000L, false, 0, 0x0L), + 4 + ), + 5068 + ); + + // gentest-1716 + assertEqual( + perft( + Board(0x20000000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x20000400L, 0x40000000000400L, + 0x20020000000L, true, 0, 0x0L), + 4 + ), + 7624 + ); + + // gentest-1717 + assertEqual( + perft( + Board(0x200000000L, 0x40000000000000L, 0x0L, 0x0L, 0x0L, 0x20001000L, 0x40000000001000L, 0x220000000L, + false, 0, 0x0L), + 4 + ), + 4550 + ); + + // gentest-1718 + assertEqual( + perft( + Board(0x200000000L, 0x100000000000L, 0x0L, 0x0L, 0x0L, 0x800001000L, 0x100000001000L, 0xa00000000L, + true, 0, 0x0L), + 4 + ), + 9597 + ); + + // gentest-1719 + assertEqual( + perft( + Board(0x200000000L, 0x100000000000L, 0x0L, 0x0L, 0x0L, 0x4001000L, 0x100000001000L, 0x204000000L, + false, 0, 0x0L), + 4 + ), + 6993 + ); + + // gentest-1720 + assertEqual( + perft( + Board(0x200000000L, 0x4000000000000L, 0x0L, 0x0L, 0x0L, 0x41000L, 0x4000000001000L, 0x200040000L, + true, 0, 0x0L), + 4 + ), + 7043 + ); + + // gentest-1721 + assertEqual( + perft( + Board(0x200000000L, 0x4000000000000L, 0x0L, 0x0L, 0x0L, 0x21000L, 0x4000000001000L, 0x200020000L, + false, 0, 0x0L), + 4 + ), + 9426 + ); + + // gentest-1722 + assertEqual( + perft( + Board(0x200000000L, 0x800000000L, 0x0L, 0x0L, 0x0L, 0x4001000L, 0x800001000L, 0x204000000L, true, 0, + 0x0L), + 4 + ), + 7180 + ); + + // gentest-1723 + assertEqual( + perft( + Board(0x200000000L, 0x800000000L, 0x0L, 0x0L, 0x0L, 0x21000L, 0x800001000L, 0x200020000L, false, 0, + 0x0L), + 4 + ), + 8773 + ); + + // gentest-1724 + assertEqual( + perft( + Board(0x2000000L, 0x800000000L, 0x0L, 0x0L, 0x0L, 0x1080000L, 0x800080000L, 0x3000000L, true, 0, + 0x0L), + 4 + ), + 4490 + ); + + // gentest-1725 + assertEqual( + perft( + Board(0x2000000L, 0x40000L, 0x0L, 0x0L, 0x0L, 0x200100000L, 0x140000L, 0x202000000L, false, 0, 0x0L), + 4 + ), + 8172 + ); + + // gentest-1726 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1727 + assertEqual( + perft( + Board(0xef100008807700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x88077ffL, 0xffef100000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 654281 + ); + + // gentest-1728 + assertEqual( + perft( + Board(0xe7180008807700L, 0x4200000000040040L, 0x400000002000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x88477fdL, 0xdfe7180002000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 576820 + ); + + // gentest-1729 + assertEqual( + perft( + Board(0xe71800c8003700L, 0x4200000000040040L, 0x400000002000024L, 0x8100000000000081L, + 0x800000000000008L, 0x10000000000010L, 0xc80437fdL, 0xcff7180002000000L, false, 0, 0x81L), + 4 + ), + 634738 + ); + + // gentest-1730 + assertEqual( + perft( + Board(0xe51802c8003700L, 0x4200000000840000L, 0x8000002000024L, 0x8100000000000081L, + 0x800000000000008L, 0x10000000000010L, 0xc88437bdL, 0xcbfd180202000000L, true, 0, 0x81L), + 4 + ), + 530445 + ); + + // gentest-1731 + assertEqual( + perft( + Board(0xe5184288003700L, 0x4000040020040000L, 0x8000002000024L, 0x8100000000000081L, + 0x800000000000008L, 0x10000000000010L, 0x40a80437bdL, 0xc9fd1c0202000000L, false, 0, 0x81L), + 4 + ), + 630054 + ); + + // gentest-1732 + assertEqual( + perft( + Board(0xe5184288003700L, 0x4000040020040000L, 0x8000100000024L, 0x8200000000008001L, + 0x800000000000008L, 0x10000000000010L, 0x40a804b73dL, 0xcafd1c0300000000L, true, 0, 0x1L), + 4 + ), + 594631 + ); + + // gentest-1733 + assertEqual( + perft( + Board(0xe5184288102700L, 0x4000040020040000L, 0x8000100000024L, 0x8100000000008001L, + 0x800000000000800L, 0x10000000000010L, 0x40a814af35L, 0xc9fd1c0300000000L, false, 0, 0x1L), + 4 + ), + 1081824 + ); + + // gentest-1734 + assertEqual( + perft( + Board(0xe5004a88102700L, 0x4000040000040000L, 0x8000100000024L, 0x8100000000008001L, + 0x800000000000800L, 0x10000000000010L, 0x408814af35L, 0xc9fd040b00000000L, true, 0, 0x1L), + 4 + ), + 947889 + ); + + // gentest-1735 + assertEqual( + perft( + Board(0xe5004a88102700L, 0x4000040000000008L, 0x8000104000004L, 0x8100000000008001L, + 0x2000000000000800L, 0x10000000000010L, 0x408c10af1dL, 0xe1fd040b00000000L, false, 0, 0x1L), + 4 + ), + 902629 + ); + + // gentest-1736 + assertEqual( + perft( + Board(0x65804a88102700L, 0x4000040000000008L, 0x100820004L, 0x8100000000008001L, 0x2000000000000800L, + 0x10000000000010L, 0x408812af1dL, 0xe175840b00800000L, true, 0, 0x1L), + 4 + ), + 674094 + ); + + // gentest-1737 + assertEqual( + perft( + Board(0x65804a8c102300L, 0x4000040000000008L, 0x20000820004L, 0x8100000000008001L, + 0x2000000100000000L, 0x10000000000010L, 0x418c12a31dL, 0xe175860a00800000L, false, 0, 0x1L), + 4 + ), + 1284082 + ); + + // gentest-1738 + assertEqual( + perft( + Board(0x25c04a8d102200L, 0x4000000002000008L, 0x20000820004L, 0x8100000000008001L, + 0x2000000100000000L, 0x10000000000010L, 0x418d12a21dL, 0xe135c20a02800000L, true, 0, 0x1L), + 4 + ), + 1007776 + ); + + // gentest-1739 + assertEqual( + perft( + Board(0x25c04a8d102200L, 0x4000000002000008L, 0x820004L, 0x8100000000008001L, 0x40020000000000L, + 0x10000000000800L, 0x2408d12aa0dL, 0xc175c00a02800000L, false, 0, 0x0L), + 4 + ), + 1548791 + ); + + // gentest-1740 + assertEqual( + perft( + Board(0x24c14a8d102200L, 0x4000000002000008L, 0x820004L, 0x8200000000008001L, 0x40020000000000L, + 0x10000000001000L, 0x2408d12b20dL, 0xc274c10a02800000L, true, 0, 0x0L), + 4 + ), + 1395628 + ); + + // gentest-1741 + assertEqual( + perft( + Board(0x24c14a8d102200L, 0x4000000002000008L, 0x800104L, 0x8200000000008001L, 0x220000000000L, + 0x10000000000010L, 0x2408d10a31dL, 0xc234e10a02800000L, false, 0, 0x0L), + 4 + ), + 1480083 + ); + + // gentest-1742 + assertEqual( + perft( + Board(0x24c14a8d122000L, 0x4000000002000008L, 0x124L, 0x8000020000008001L, 0x200000000000L, + 0x10000000000010L, 0x408d12a11dL, 0xc034e30a02000020L, true, 0, 0x0L), + 4 + ), + 729025 + ); + + // gentest-1743 + assertEqual( + perft( + Board(0x24c14aa9120000L, 0x4000000002000008L, 0x124L, 0x8000020000008001L, 0x200000000000L, + 0x800000000000010L, 0x42a912811dL, 0xc824e30802000020L, false, 0, 0x0L), + 4 + ), + 845787 + ); + + // gentest-1744 + assertEqual( + perft( + Board(0x24c14aa9120000L, 0x4000000002000008L, 0x26L, 0x8000100000008001L, 0x200000000000L, + 0x1000000000000010L, 0x42a912801fL, 0xd024f10802000020L, true, 0, 0x0L), + 4 + ), + 1373036 + ); + + // gentest-1745 + assertEqual( + perft( + Board(0x24c14aa9120000L, 0x4000000002000008L, 0x26L, 0x8000100000008001L, 0x10000000000000L, + 0x1000000000000010L, 0x42a912801fL, 0xd034d10802000020L, false, 0, 0x0L), + 4 + ), + 1233688 + ); + + // gentest-1746 + assertEqual( + perft( + Board(0x24c10aa9120000L, 0x4000000002000008L, 0x26L, 0x8000100000001001L, 0x8000000000L, + 0x1000000000000010L, 0x2a912101fL, 0xd024d18802000020L, true, 0, 0x0L), + 4 + ), + 992157 + ); + + // gentest-1747 + assertEqual( + perft( + Board(0x24c10aa9120000L, 0x4000000002000008L, 0x80006L, 0x8000100000001001L, 0x8000000000L, + 0x1000000000000010L, 0x2a912101fL, 0xd024d18802080000L, false, 0, 0x0L), + 4 + ), + 854150 + ); + + // gentest-1748 + assertEqual( + perft( + Board(0x4c12aa9120000L, 0x4000000002000008L, 0x80006L, 0x8000020000001001L, 0x8000000000L, + 0x1000000000000800L, 0x2a912180fL, 0xd004c3a802080000L, true, 0, 0x0L), + 4 + ), + 449344 + ); + + // gentest-1749 + assertEqual( + perft( + Board(0x4c12ba8120000L, 0x4000000002000008L, 0x80202L, 0x8000020000001001L, 0x8000000000L, + 0x2000000000000800L, 0x3a8121a0bL, 0xe004c3a802080000L, false, 0, 0x0L), + 4 + ), + 458391 + ); + + // gentest-1750 + assertEqual( + perft( + Board(0x4816ba8120000L, 0x4000000002000008L, 0x80202L, 0x8000040000001100L, 0x8000000000L, + 0x2000000000000800L, 0x3a8121b0aL, 0xe00485e802080000L, true, 0, 0x0L), + 4 + ), + 605152 + ); + + // gentest-1751 + assertEqual( + perft( + Board(0x48169a8120000L, 0x4000000002000008L, 0x80006L, 0x8000040000001100L, 0x8000000000L, + 0x1000000000000800L, 0x101a812190eL, 0xd00484e802080000L, false, 0, 0x0L), + 4 + ), + 604281 + ); + + // gentest-1752 + assertEqual( + perft( + Board(0x48169a8120000L, 0x4000000002000008L, 0x80006L, 0x80040000001001L, 0x8000000000L, + 0x10000000000800L, 0x101a812180fL, 0x409484e802080000L, true, 0, 0x0L), + 4 + ), + 713914 + ); + + // gentest-1753 + assertEqual( + perft( + Board(0x48169b8020000L, 0x4000000002000008L, 0x26L, 0x80040000000011L, 0x8000000000L, + 0x10000000000800L, 0x101b802081fL, 0x409484e802000020L, false, 0, 0x0L), + 4 + ), + 922744 + ); + + // gentest-1754 + assertEqual( + perft( + Board(0x48169b8020000L, 0x4000000002000008L, 0x800104L, 0x80080000000011L, 0x8000000000L, + 0x10000000000800L, 0x101b802091dL, 0x409488e802800000L, true, 0, 0x0L), + 4 + ), + 666709 + ); + + // gentest-1755 + assertEqual( + perft( + Board(0x4816998020000L, 0x4000000002000000L, 0x800104L, 0x80080000000011L, 0x8L, 0x10000000100000L, + 0x14198120115L, 0x4094882802800008L, false, 0, 0x0L), + 4 + ), + 476606 + ); + + // gentest-1756 + assertEqual( + perft( + Board(0x4816998020000L, 0x4000000002000000L, 0x800104L, 0x88000000000041L, 0x20L, 0x10000000100000L, + 0x14198120145L, 0x409c802802800020L, true, 0, 0x0L), + 4 + ), + 405499 + ); + + // gentest-1757 + assertEqual( + perft( + Board(0x4814998020000L, 0x4000000002000000L, 0x810100L, 0x88000000000042L, 0x20L, 0x10000000100000L, + 0x14188130142L, 0x409c800812800020L, false, 0, 0x0L), + 4 + ), + 408389 + ); + + // gentest-1758 + assertEqual( + perft( + Board(0x4c10998020000L, 0x4000000002000000L, 0x40010100L, 0x88000000000042L, 0x20L, 0x80000100000L, + 0x410188130142L, 0x408c880852000020L, true, 0, 0x0L), + 4 + ), + 434865 + ); + + // gentest-1759 + assertEqual( + perft( + Board(0x4c10998020000L, 0x4000000002000000L, 0x40000300L, 0xa0000000000041L, 0x20L, 0x80000100000L, + 0x410188120341L, 0x40a4880852000020L, false, 0, 0x0L), + 4 + ), + 706272 + ); + + // gentest-1760 + assertEqual( + perft( + Board(0x4c10998020000L, 0x4000000002000000L, 0x40000300L, 0x8040000000000060L, 0x0L, 0x80000100000L, + 0x410188120360L, 0xc044880852000000L, true, 0, 0x0L), + 4 + ), + 485736 + ); + + // gentest-1761 + assertEqual( + perft( + Board(0x4c10998020000L, 0x4000000000080000L, 0x40000300L, 0x8040000000200004L, 0x0L, 0x80000100000L, + 0x410188320304L, 0xc044880850080000L, false, 0, 0x0L), + 4 + ), + 682567 + ); + + // gentest-1762 + assertEqual( + perft( + Board(0x4c10998020000L, 0x200000080000L, 0x40000300L, 0x140000000200020L, 0x0L, 0x80000100000L, + 0x410188320320L, 0x144a80850080000L, true, 0, 0x0L), + 4 + ), + 897191 + ); + + // gentest-1763 + assertEqual( + perft( + Board(0x4c10998020000L, 0x200000080000L, 0x40000202L, 0x140000000202000L, 0x0L, 0x100000100000L, + 0x410188322202L, 0x144b00850080000L, false, 0, 0x0L), + 4 + ), + 804004 + ); + + // gentest-1764 + assertEqual( + perft( + Board(0x44810998020000L, 0x200000080000L, 0x40000202L, 0x110000000202000L, 0x0L, 0x100000100000L, + 0x40010188322202L, 0x114b00850080000L, true, 0, 0x0L), + 4 + ), + 824121 + ); + + // gentest-1765 + assertEqual( + perft( + Board(0x44818918020000L, 0x200000080000L, 0x40000202L, 0x108000000802000L, 0x0L, 0x100000100000L, + 0x40018108922202L, 0x10cb00850080000L, false, 0, 0x0L), + 4 + ), + 995004 + ); + + // gentest-1766 + assertEqual( + perft( + Board(0x45808918020000L, 0x80000000080000L, 0x20aL, 0x108000000802000L, 0x0L, 0x100000100000L, + 0x41008108922202L, 0x18c900810080008L, true, 0, 0x0L), + 4 + ), + 912833 + ); + + // gentest-1767 + assertEqual( + perft( + Board(0x45808918020000L, 0x80000000000000L, 0x608L, 0x208000000802000L, 0x0L, 0x100000100000L, + 0x41008108922600L, 0x28c900810000008L, false, 0, 0x0L), + 4 + ), + 989857 + ); + + // gentest-1768 + assertEqual( + perft( + Board(0x1848918020000L, 0x4080000000000000L, 0x200600L, 0x208000000802000L, 0x0L, 0x100000100000L, + 0x4001008108922600L, 0x288940810200000L, true, 0, 0x0L), + 4 + ), + 946021 + ); + + // gentest-1769 + assertEqual( + perft( + Board(0x1848918020000L, 0x90000000000000L, 0x200600L, 0xa000080002000L, 0x0L, 0x100000100000L, + 0x11008188122600L, 0x8a940810200000L, false, 0, 0x0L), + 4 + ), + 688953 + ); + + // gentest-1770 + assertEqual( + perft( + Board(0x848918020000L, 0x10004000000000L, 0x200600L, 0x9000000802000L, 0x0L, 0x100000100000L, + 0x10008108922600L, 0x9944810200000L, true, 0, 0x0L), + 4 + ), + 510048 + ); + + // gentest-1771 + assertEqual( + perft( + Board(0x840918020000L, 0x4000004000000000L, 0x8000000600L, 0x900000000a000L, 0x0L, 0x100000100000L, + 0x400000010812a600L, 0x994c810000000L, false, 0, 0x0L), + 4 + ), + 610211 + ); + + // gentest-1772 + assertEqual( + perft( + Board(0x840918020000L, 0x4000004000000000L, 0x20000000000401L, 0x80100000000a000L, 0x0L, + 0x100000100000L, 0x400000010812a401L, 0x821944810000000L, true, 0, 0x0L), + 4 + ), + 545356 + ); + + // gentest-1773 + assertEqual( + perft( + Board(0x840918020000L, 0x4000004000000000L, 0x20000000000401L, 0x201000000009000L, 0x0L, + 0x100020000000L, 0x4000000128029401L, 0x221944810000000L, false, 0, 0x0L), + 4 + ), + 577067 + ); + + // gentest-1774 + assertEqual( + perft( + Board(0x840918020000L, 0x4000000000L, 0x20000000000401L, 0x208000000009000L, 0x0L, 0x200020000000L, + 0x128029401L, 0x228a44810000000L, true, 0, 0x0L), + 4 + ), + 580039 + ); + + // gentest-1775 + assertEqual( + perft( + Board(0x800d18020000L, 0x4000000000L, 0x20000200000001L, 0x208000000009000L, 0x0L, 0x200020000000L, + 0x328029001L, 0x228a04c10000000L, false, 0, 0x0L), + 4 + ), + 839657 + ); + + // gentest-1776 + assertEqual( + perft( + Board(0x800d18020000L, 0x4000000000L, 0x20000200000001L, 0xa00000000008200L, 0x0L, 0x40000020000000L, + 0x328028201L, 0xa60804c10000000L, true, 0, 0x0L), + 4 + ), + 970075 + ); + + // gentest-1777 + assertEqual( + perft( + Board(0x800d18020000L, 0x4000000000L, 0x20040000000001L, 0x20800000000c000L, 0x0L, 0x40000020000000L, + 0x4012802c001L, 0x268804c10000000L, false, 0, 0x0L), + 4 + ), + 921206 + ); + + // gentest-1778 + assertEqual( + perft( + Board(0x800d08120000L, 0x4000000000L, 0x20040000000001L, 0x208000080004000L, 0x0L, 0x200020000000L, + 0x401a8024001L, 0x228a04c00100000L, true, 0, 0x0L), + 4 + ), + 926743 + ); + + // gentest-1779 + assertEqual( + perft( + Board(0x800d08120000L, 0x4000000000L, 0x20040000040000L, 0x8008000080002000L, 0x0L, 0x200020000000L, + 0x401a8062000L, 0x8028a04c00100000L, false, 0, 0x0L), + 4 + ), + 856608 + ); + + // gentest-1780 + assertEqual( + perft( + Board(0x800d08120000L, 0x4000000000L, 0x20040002000000L, 0x8001000080002000L, 0x0L, 0x200020000000L, + 0x401aa022000L, 0x8021a04c00100000L, true, 0, 0x0L), + 4 + ), + 889851 + ); + + // gentest-1781 + assertEqual( + perft( + Board(0x800c08120000L, 0x4000000000L, 0x20040002000000L, 0x8000000100001080L, 0x0L, 0x200020000000L, + 0x4002a021080L, 0x8020a04d00100000L, false, 0, 0x0L), + 4 + ), + 1378356 + ); + + // gentest-1782 + assertEqual( + perft( + Board(0x800c08120000L, 0x200000L, 0x4000040000000010L, 0x8000000100001080L, 0x0L, 0x200020000000L, + 0x40028021090L, 0xc000a00d00300000L, true, 0, 0x0L), + 4 + ), + 846637 + ); + + // gentest-1783 + assertEqual( + perft( + Board(0x800c00120000L, 0x40L, 0x4000040000000010L, 0x8000000100001080L, 0x0L, 0x200040000000L, + 0x40440021090L, 0xc000a00900100040L, false, 0, 0x0L), + 4 + ), + 470795 + ); + + // gentest-1784 + assertEqual( + perft( + Board(0x800408120000L, 0x40L, 0x4000040080000000L, 0x8000000100001080L, 0x0L, 0x20000040000000L, + 0x404c0021080L, 0xc020800108100040L, true, 0, 0x0L), + 4 + ), + 446327 + ); + + // gentest-1785 + assertEqual( + perft( + Board(0x800408120000L, 0x1000L, 0x4000040080000000L, 0x8000000100800100L, 0x0L, 0x20000040000000L, + 0x404c0820100L, 0xc020800108101000L, false, 0, 0x0L), + 4 + ), + 509657 + ); + + // gentest-1786 + assertEqual( + perft( + Board(0x800408120000L, 0x20000000L, 0x4000040080000000L, 0x8000010200800000L, 0x0L, 0x20000040000000L, + 0x504c0820000L, 0xc020800228100000L, true, 0, 0x0L), + 4 + ), + 568291 + ); + + // gentest-1787 + assertEqual( + perft( + Board(0x8004001a0000L, 0x20000000L, 0x4000040000000010L, 0x8000000200800001L, 0x0L, 0x20000040000000L, + 0x40440820011L, 0xc020800220180000L, false, 0, 0x0L), + 4 + ), + 832707 + ); + + // gentest-1788 + assertEqual( + perft( + Board(0x8000001a0000L, 0x100000000000L, 0x4000040000040000L, 0x8000000400800001L, 0x0L, + 0x20000040000000L, 0x40040860001L, 0xc020900400180000L, true, 0, 0x0L), + 4 + ), + 1091664 + ); + + // gentest-1789 + assertEqual( + perft( + Board(0x8000001a0000L, 0x4000000000000L, 0xc000000000000080L, 0x400800001L, 0x0L, 0x20000040000000L, + 0x8000000040820081L, 0x4024800400180000L, false, 0, 0x0L), + 4 + ), + 767702 + ); + + // gentest-1790 + assertEqual( + perft( + Board(0x8000000a1000L, 0x4000000000000L, 0xc000000000200000L, 0x840001L, 0x0L, 0x20000040000000L, + 0x8000000040a20001L, 0x40248000000c1000L, true, 0, 0x0L), + 4 + ), + 789802 + ); + + // gentest-1791 + assertEqual( + perft( + Board(0x800000081000L, 0x4000000000000L, 0x4000240000000000L, 0x820001L, 0x0L, 0x20000040000000L, + 0x240040800001L, 0x40248000000a1000L, false, 0, 0x0L), + 4 + ), + 1230923 + ); + + // gentest-1792 + assertEqual( + perft( + Board(0x800000081000L, 0x4000000000000L, 0x80240000000000L, 0x200000000000081L, 0x0L, + 0x20000040000000L, 0x240040000081L, 0x2a4800000081000L, true, 0, 0x0L), + 4 + ), + 2132580 + ); + + // gentest-1793 + assertEqual( + perft( + Board(0x800000081000L, 0x4000000000000L, 0x80041000000000L, 0x200000000000009L, 0x0L, + 0x10000040000000L, 0x41040000009L, 0x294800000081000L, false, 0, 0x0L), + 4 + ), + 1736488 + ); + + // gentest-1794 + assertEqual( + perft( + Board(0x800000080000L, 0x10000000000L, 0x82001000000000L, 0x200000000000009L, 0x0L, 0x10000040000000L, + 0x2001040000001L, 0x290810000080008L, true, 0, 0x0L), + 4 + ), + 1004452 + ); + + // gentest-1795 + assertEqual( + perft( + Board(0x800000080000L, 0x10000000000L, 0x180000000040000L, 0x2000000000000009L, 0x0L, + 0x10000040000000L, 0x100000040040001L, 0x2090810000080008L, false, 0, 0x0L), + 4 + ), + 876272 + ); + + // gentest-1796 + assertEqual( + perft( + Board(0x80000L, 0x10000000000L, 0x180000000040000L, 0x4000000000000009L, 0x0L, 0x10008000000000L, + 0x100008000040001L, 0x4090010000080008L, true, 0, 0x0L), + 4 + ), + 758115 + ); + + // gentest-1797 + assertEqual( + perft( + Board(0x80000L, 0x10000000000L, 0x80000000200000L, 0x4000000000000009L, 0x0L, 0x208000000000L, + 0x8000200001L, 0x4080210000080008L, false, 0, 0x0L), + 4 + ), + 418415 + ); + + // gentest-1798 + assertEqual( + perft( + Board(0x800L, 0x10000000000L, 0x80000000200000L, 0x4000000000000009L, 0x0L, 0x40004000000000L, + 0x4000200001L, 0x40c0010000000808L, true, 0, 0x0L), + 4 + ), + 377649 + ); + + // gentest-1799 + assertEqual( + perft( + Board(0x800L, 0x10000000000L, 0x200400L, 0x4000000000000008L, 0x0L, 0x40000040000000L, 0x40200008L, + 0x4040010000000c00L, false, 0, 0x0L), + 4 + ), + 268630 + ); + + // gentest-1800 + assertEqual( + perft( + Board(0x800L, 0x10000000000L, 0x800000400L, 0x4000000000000008L, 0x0L, 0x80000040000000L, + 0x840000008L, 0x4080010000000c00L, true, 0, 0x0L), + 4 + ), + 88396 + ); + + // gentest-1801 + assertEqual( + perft( + Board(0x800L, 0x10000000000L, 0x2000000000002L, 0x4000000000000008L, 0x0L, 0x80000000800000L, + 0x2000000800008L, 0x4080010000000802L, false, 0, 0x0L), + 4 + ), + 265788 + ); + + // gentest-1802 + assertEqual( + perft( + Board(0x800L, 0x400000000L, 0x100000000000400L, 0x4000000000000008L, 0x0L, 0x80000000800000L, + 0x100000000800008L, 0x4080000400000c00L, true, 0, 0x0L), + 4 + ), + 358166 + ); + + // gentest-1803 + assertEqual( + perft( + Board(0x800L, 0x8000000000000L, 0x100000000000400L, 0x4200000000000000L, 0x0L, 0x80000000800000L, + 0x300000000800000L, 0x4088000000000c00L, false, 0, 0x0L), + 4 + ), + 420811 + ); + + // gentest-1804 + assertEqual( + perft( + Board(0x800L, 0x20000000000L, 0x4400L, 0x4200000000000000L, 0x0L, 0x800000800000L, 0x200000000804000L, + 0x4000820000000c00L, true, 0, 0x0L), + 4 + ), + 359830 + ); + + // gentest-1805 + assertEqual( + perft( + Board(0x800L, 0x20000000000L, 0x4002L, 0x4040000000000000L, 0x0L, 0x800000800000L, 0x40000000804000L, + 0x4000820000000802L, false, 0, 0x0L), + 4 + ), + 353522 + ); + + // gentest-1806 + assertEqual( + perft( + Board(0x0L, 0x1000000L, 0x4002L, 0x4020000000000000L, 0x8L, 0x800000800000L, 0x20000000804000L, + 0x400080000100000aL, true, 0, 0x0L), + 4 + ), + 761303 + ); + + // gentest-1807 + assertEqual( + perft( + Board(0x0L, 0x1000000L, 0x4002L, 0x4004000000000000L, 0x800000000L, 0x800080000000L, 0x4000080004000L, + 0x4000800801000002L, false, 0, 0x0L), + 4 + ), + 734321 + ); + + // gentest-1808 + assertEqual( + perft( + Board(0x0L, 0x1000000L, 0x4002L, 0x8000000000000004L, 0x2000000000000L, 0x800080000000L, 0x80004004L, + 0x8002800001000002L, true, 0, 0x0L), + 4 + ), + 738935 + ); + + // gentest-1809 + assertEqual( + perft( + Board(0x0L, 0x1000000L, 0x800002L, 0x8000000000000004L, 0x10000000L, 0x800000400000L, 0xc00004L, + 0x8000800011000002L, false, 0, 0x0L), + 4 + ), + 635736 + ); + + // gentest-1810 + assertEqual( + perft( + Board(0x0L, 0x1000000L, 0x420L, 0x80000000000004L, 0x10000000L, 0x800000400000L, 0x400024L, + 0x80800011000400L, true, 0, 0x0L), + 4 + ), + 411182 + ); + + // gentest-1811 + assertEqual( + perft( + Board(0x0L, 0x1000000L, 0x80002L, 0x80000004000000L, 0x10000000L, 0x800000400000L, 0x4480000L, + 0x80800011000002L, false, 0, 0x0L), + 4 + ), + 483640 + ); + + // gentest-1812 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1813 + assertEqual( + perft( + Board(0xdf00200002fd00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x6fdfdL, 0xffdf002000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 258319 + ); + + // gentest-1814 + assertEqual( + perft( + Board(0x9f40200102fc00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x20000000000010L, 0x106fcfdL, 0xefbf402000000000L, true, 0, 0x81L), + 4 + ), + 400297 + ); + + // gentest-1815 + assertEqual( + perft( + Board(0x9740280308f400L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x20000000000010L, 0x30cf4fdL, 0xefb7402800000000L, false, 0, 0x81L), + 4 + ), + 782053 + ); + + // gentest-1816 + assertEqual( + perft( + Board(0x93402c83087400L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x40000000000010L, 0x830c74fdL, 0xefd3402c00000000L, true, 0, 0x81L), + 4 + ), + 798633 + ); + + // gentest-1817 + assertEqual( + perft( + Board(0x93402c83087400L, 0x4200000000040040L, 0x2400000020000020L, 0x8100000000000081L, 0x100000008L, + 0x40000000000010L, 0xa30c74f9L, 0xe7d3402d00000000L, false, 0, 0x81L), + 4 + ), + 989802 + ); + + // gentest-1818 + assertEqual( + perft( + Board(0x93402481087400L, 0x200800800000040L, 0x2400000020000020L, 0x8100000000000081L, 0x2000008L, + 0x40000000000010L, 0x8a10874f9L, 0xa7d3c02402000000L, true, 0, 0x81L), + 4 + ), + 163040 + ); + + // gentest-1819 + assertEqual( + perft( + Board(0x934024810c7000L, 0x200800800000040L, 0x2400000020000020L, 0x8100000000000081L, 0x20002L, + 0x40000000000010L, 0x8a10c70f3L, 0xa7d3c02400020000L, false, 0, 0x81L), + 4 + ), + 1334908 + ); + + // gentest-1820 + assertEqual( + perft( + Board(0x934024810c7000L, 0x840800000040L, 0x2400000020000020L, 0x8100000000000081L, 0x8L, + 0x40000000000010L, 0x8a10c70f9L, 0xa5d3c42400000000L, true, 0, 0x81L), + 4 + ), + 826627 + ); + + // gentest-1821 + assertEqual( + perft( + Board(0x835024810c7000L, 0x4840000000040L, 0x2400000020000020L, 0x8100000000000084L, 0x8L, + 0x40000000000010L, 0x40000a10c70fcL, 0xa5c3d42400000000L, false, 0, 0x80L), + 4 + ), + 675018 + ); + + // gentest-1822 + assertEqual( + perft( + Board(0x835020850c7000L, 0x4840000000040L, 0x2400000020000020L, 0x8100000000000082L, 0x8L, + 0x200000000010L, 0x40000a10c70faL, 0xa583f42004000000L, true, 0, 0x80L), + 4 + ), + 1173935 + ); + + // gentest-1823 + assertEqual( + perft( + Board(0x835020850c7000L, 0x840000100040L, 0x2400000020000020L, 0x8100000000000082L, 0x8L, + 0x20000000000010L, 0xa11c70faL, 0xa5a3d42004000000L, false, 0, 0x80L), + 4 + ), + 1188154 + ); + + // gentest-1824 + assertEqual( + perft( + Board(0x835020850c7000L, 0x200800000900000L, 0x2400000020000020L, 0x4100000000000082L, 0x8L, + 0x20000000000010L, 0xa19c70baL, 0x67a3d02004000000L, true, 0, 0x80L), + 4 + ), + 788779 + ); + + // gentest-1825 + assertEqual( + perft( + Board(0x831060c50c3000L, 0x200800000900000L, 0x2400000020000020L, 0x4100000000000081L, 0x8L, + 0x20000000000010L, 0xe19c30b9L, 0x67a3906004000000L, false, 0, 0x80L), + 4 + ), + 941568 + ); + + // gentest-1826 + assertEqual( + perft( + Board(0x831060c5043000L, 0x220000000900000L, 0x2400000020000020L, 0x4100000000000081L, 0x8L, + 0x200000000010L, 0xe59430b9L, 0x67a3306000000000L, true, 0, 0x80L), + 4 + ), + 1093528 + ); + + // gentest-1827 + assertEqual( + perft( + Board(0x831060c5043000L, 0x200001000900000L, 0x2400000020000020L, 0x4100000000000082L, 0x8000000L, + 0x200000000010L, 0xed9430b2L, 0x6783307000000000L, false, 0, 0x80L), + 4 + ), + 1229299 + ); + + // gentest-1828 + assertEqual( + perft( + Board(0x831020c5043000L, 0x200001000900000L, 0x2400000000008020L, 0x4100000000000082L, 0x8000000L, + 0x400000000010L, 0x4d94b0b2L, 0x6783503080000000L, true, 0, 0x80L), + 4 + ), + 1557019 + ); + + // gentest-1829 + assertEqual( + perft( + Board(0x831020e5041000L, 0x200005000100000L, 0x400800000008020L, 0x4100000000000082L, 0x8000000L, + 0x400000000010L, 0x406d1490b2L, 0x4783d03080000000L, false, 0, 0x80L), + 4 + ), + 1189135 + ); + + // gentest-1830 + assertEqual( + perft( + Board(0x831020e5041000L, 0x200005000100000L, 0x400800000008020L, 0x4100000000000082L, 0x8000000L, + 0x400000000008L, 0x406d1490aaL, 0x4783d03080000000L, true, 0, 0x0L), + 4 + ), + 1192987 + ); + + // gentest-1831 + assertEqual( + perft( + Board(0x821025e1041000L, 0x200001010100000L, 0x400800000008020L, 0x4100000000000082L, 0x8000000L, + 0x400000000008L, 0x4791490aaL, 0x4782d03180000000L, false, 0, 0x0L), + 4 + ), + 1406837 + ); + + // gentest-1832 + assertEqual( + perft( + Board(0x821005f1041000L, 0x200001000100000L, 0x400800000008020L, 0x900000000000082L, 0x8000000L, + 0x400000000010L, 0x4691490b2L, 0xf82d01190000000L, true, 0, 0x0L), + 4 + ), + 1150629 + ); + + // gentest-1833 + assertEqual( + perft( + Board(0x821005f1041000L, 0x200001000100000L, 0x400800000008020L, 0x2100000000000088L, 0x2000000L, + 0x400000000010L, 0x4631490b8L, 0x2782d01190000000L, false, 0, 0x0L), + 4 + ), + 1096086 + ); + + // gentest-1834 + assertEqual( + perft( + Board(0x801205f1041000L, 0x200001000004000L, 0x400800000008020L, 0x2100000000000088L, 0x2000000L, + 0x20000000000010L, 0x46304d0b8L, 0x27a0921190000000L, true, 0, 0x0L), + 4 + ), + 1059622 + ); + + // gentest-1835 + assertEqual( + perft( + Board(0x801205b1041000L, 0x200001000004000L, 0x400004000008020L, 0x2100000000000088L, 0x200L, + 0x20000000000010L, 0x42104d2b8L, 0x27a0125190000000L, false, 0, 0x0L), + 4 + ), + 1280402 + ); + + // gentest-1836 + assertEqual( + perft( + Board(0x801205b5001000L, 0x200001000004000L, 0x2004000008020L, 0x2100000000000088L, 0x200L, + 0x4000000000000010L, 0x42500d2b8L, 0x6382125190000000L, true, 0, 0x0L), + 4 + ), + 1619147 + ); + + // gentest-1837 + assertEqual( + perft( + Board(0x801205b5001000L, 0x200000000204000L, 0x2004000000060L, 0x2100000000000088L, 0x200L, + 0x4000000000002000L, 0x4250072e8L, 0x6382124190200000L, false, 0, 0x0L), + 4 + ), + 1659619 + ); + + // gentest-1838 + assertEqual( + perft( + Board(0x801205b5001000L, 0x200000000300000L, 0x2004000000060L, 0x20010000000088L, 0x200L, + 0x4000000000002000L, 0x4251032e8L, 0x42a2134190200000L, true, 0, 0x0L), + 4 + ), + 1902199 + ); + + // gentest-1839 + assertEqual( + perft( + Board(0x801601b5001000L, 0x200002000200000L, 0x2004000000060L, 0x10010000000088L, 0x200L, + 0x4000000000002000L, 0x420250032e8L, 0x4292134190200000L, false, 0, 0x0L), + 4 + ), + 1738773 + ); + + // gentest-1840 + assertEqual( + perft( + Board(0x801601b5001000L, 0x200002000200000L, 0x2200000000060L, 0x1000010000000090L, 0x200L, + 0x4000000000002000L, 0x420250032f0L, 0x5282330190200000L, true, 0, 0x0L), + 4 + ), + 1685283 + ); + + // gentest-1841 + assertEqual( + perft( + Board(0x801201b5001000L, 0x200002000200000L, 0x240000000060L, 0x1000010000000090L, + 0x2000000000000000L, 0x4000000000002000L, 0x20000020250030f0L, 0x5280370190200000L, false, 0, 0x0L), + 4 + ), + 38073 + ); + + // gentest-1842 + assertEqual( + perft( + Board(0x801201b5001000L, 0x200002000200000L, 0x40000000260L, 0x1000010000000084L, 0x0L, + 0x2000000000002000L, 0x20250030e4L, 0x3280170190200200L, true, 0, 0x0L), + 4 + ), + 748529 + ); + + // gentest-1843 + assertEqual( + perft( + Board(0x801201b5001000L, 0x200002000000040L, 0x40000004200L, 0x1000010000000088L, 0x0L, + 0x2000000000002000L, 0x2025007088L, 0x3280170190000240L, false, 0, 0x0L), + 4 + ), + 1029368 + ); + + // gentest-1844 + assertEqual( + perft( + Board(0x9201b5001000L, 0x200002000000040L, 0x40000004001L, 0x1000090000000080L, 0x0L, + 0x2000000000002000L, 0x82025007080L, 0x3200970190000041L, true, 0, 0x0L), + 4 + ), + 734280 + ); + + // gentest-1845 + assertEqual( + perft( + Board(0x9201b5001000L, 0x200002000000040L, 0x40000004001L, 0x1001000800000080L, 0x0L, + 0x2000000000002000L, 0x2825007080L, 0x3201960190000041L, false, 0, 0x0L), + 4 + ), + 1299413 + ); + + // gentest-1846 + assertEqual( + perft( + Board(0x8211b5001000L, 0x200002000000040L, 0x8000000004001L, 0x1001000800000080L, 0x0L, + 0x2000000000000010L, 0x2825005090L, 0x3209821190000041L, true, 0, 0x0L), + 4 + ), + 907124 + ); + + // gentest-1847 + assertEqual( + perft( + Board(0x8201b5001000L, 0x200000000400040L, 0x8000000004001L, 0x1001000800000080L, 0x0L, + 0x2000000000000020L, 0x8054050a0L, 0x32098201b0000041L, false, 0, 0x0L), + 4 + ), + 1116063 + ); + + // gentest-1848 + assertEqual( + perft( + Board(0x8201b4001000L, 0x200000000400040L, 0x1004001L, 0x401000800000080L, 0x0L, 0x2000000000002000L, + 0x804407080L, 0x26018201b1000041L, true, 0, 0x0L), + 4 + ), + 1516041 + ); + + // gentest-1849 + assertEqual( + perft( + Board(0x8201b4001000L, 0x200000000400040L, 0x1004001L, 0x480000000000090L, 0x0L, 0x2000000000002000L, + 0x4407090L, 0x26808201b1000041L, false, 0, 0x0L), + 4 + ), + 853896 + ); + + // gentest-1850 + assertEqual( + perft( + Board(0x8201b4001000L, 0x200000000400040L, 0x1004001L, 0x4020000000000a0L, 0x0L, 0x2000000000002000L, + 0x44070a0L, 0x26028201b1000041L, true, 0, 0x0L), + 4 + ), + 757102 + ); + + // gentest-1851 + assertEqual( + perft( + Board(0x8201a4100000L, 0x200000010000040L, 0x9004000L, 0x4020000000000a0L, 0x0L, 0x2000000000002000L, + 0x141060a0L, 0x26028201a9000040L, false, 0, 0x0L), + 4 + ), + 1005208 + ); + + // gentest-1852 + assertEqual( + perft( + Board(0x8201a4100000L, 0x200000000000840L, 0x9004000L, 0x4800000000000a0L, 0x0L, 0x4000000000002000L, + 0x41068a0L, 0x46808201a9000040L, true, 0, 0x0L), + 4 + ), + 1083347 + ); + + // gentest-1853 + assertEqual( + perft( + Board(0x8205a0100000L, 0x200000000000042L, 0x40008004000L, 0x4800000000000a0L, 0x0L, + 0x4000000000002000L, 0x4001060a2L, 0x46808601a8000040L, false, 0, 0x0L), + 4 + ), + 822792 + ); + + // gentest-1854 + assertEqual( + perft( + Board(0x820580300000L, 0x200000000000002L, 0x40008004000L, 0x2080000000000060L, 0x0L, + 0x4000000000002000L, 0x400106062L, 0x6280860188200000L, true, 0, 0x0L), + 4 + ), + 246300 + ); + + // gentest-1855 + assertEqual( + perft( + Board(0x820580300000L, 0x200000000000002L, 0x8000008000080L, 0x2080000000000048L, 0x0L, + 0x4000000000002000L, 0x4001020caL, 0x6288820188200000L, false, 0, 0x0L), + 4 + ), + 97145 + ); + + // gentest-1856 + assertEqual( + perft( + Board(0x820580300000L, 0x200000000000002L, 0x48000000000080L, 0x880080000000040L, 0x0L, + 0x4000000000002000L, 0x804001020c2L, 0x4ac8820180200000L, true, 0, 0x0L), + 4 + ), + 624577 + ); + + // gentest-1857 + assertEqual( + perft( + Board(0x820580300000L, 0x200000000010000L, 0x440000000000080L, 0x880200000000040L, 0x0L, + 0x4000000000002000L, 0x2004001120c0L, 0x4ec0820180200000L, false, 0, 0x0L), + 4 + ), + 675743 + ); + + // gentest-1858 + assertEqual( + perft( + Board(0x800580300000L, 0x200000000010000L, 0x48000000000080L, 0x880400000000040L, 0x0L, + 0x4000000000002000L, 0x4000001120c0L, 0x4ac8800580200000L, true, 0, 0x0L), + 4 + ), + 525798 + ); + + // gentest-1859 + assertEqual( + perft( + Board(0x800184300000L, 0x200000000000400L, 0x48000000000080L, 0x880400000000020L, 0x0L, + 0x4000000000002000L, 0x4000001024a0L, 0x4ac8800184200000L, false, 0, 0x0L), + 4 + ), + 476704 + ); + + // gentest-1860 + assertEqual( + perft( + Board(0x800184300000L, 0x200000000000400L, 0x40040000000080L, 0x8800004000000020L, 0x0L, + 0x4000000000002000L, 0x40001024a0L, 0xca40840184200000L, true, 0, 0x0L), + 4 + ), + 669506 + ); + + // gentest-1861 + assertEqual( + perft( + Board(0x800184300000L, 0x200000000000400L, 0x40000040080L, 0x8800000200000020L, 0x0L, + 0x4000000000000040L, 0x2001004e0L, 0xca00840184240000L, false, 0, 0x0L), + 4 + ), + 1015965 + ); + + // gentest-1862 + assertEqual( + perft( + Board(0x800184300000L, 0x200000000000010L, 0x100001000000080L, 0x8800000200000020L, 0x0L, + 0x4000000000000040L, 0x2001000f0L, 0xcb00801184200000L, true, 0, 0x0L), + 4 + ), + 586578 + ); + + // gentest-1863 + assertEqual( + perft( + Board(0x800184300000L, 0x8000000080000L, 0x100001000000080L, 0x8800000200002000L, 0x0L, + 0x4000000000000040L, 0x2001820c0L, 0xc908801184200000L, false, 0, 0x0L), + 4 + ), + 1088044 + ); + + // gentest-1864 + assertEqual( + perft( + Board(0x800085300000L, 0x8000002000000L, 0x100001000000080L, 0x8800000200002000L, 0x0L, + 0x40000000000040L, 0x2021020c0L, 0x8948801085200000L, true, 0, 0x0L), + 4 + ), + 951969 + ); + + // gentest-1865 + assertEqual( + perft( + Board(0x800085100000L, 0x8000002000000L, 0x100000000208000L, 0x8800000200002000L, 0x0L, + 0x40000000000020L, 0x202302020L, 0x8948800085008000L, false, 0, 0x0L), + 4 + ), + 1671493 + ); + + // gentest-1866 + assertEqual( + perft( + Board(0x800085100000L, 0x8000002000000L, 0x800208000L, 0x880000200000200L, 0x0L, 0x40000000000020L, + 0x202300220L, 0x8c8800885008000L, true, 0, 0x0L), + 4 + ), + 1486060 + ); + + // gentest-1867 + assertEqual( + perft( + Board(0x800085100000L, 0x2000000000000100L, 0x800208000L, 0x880000200000800L, 0x0L, 0x40000000000020L, + 0x200300920L, 0x28c0800885008000L, false, 0, 0x0L), + 4 + ), + 1538584 + ); + + // gentest-1868 + assertEqual( + perft( + Board(0x800085100000L, 0x2000000000000100L, 0x800600000L, 0x88000200000800L, 0x0L, 0x40000000001000L, + 0x200301900L, 0x20c8800885400000L, true, 0, 0x0L), + 4 + ), + 954383 + ); + + // gentest-1869 + assertEqual( + perft( + Board(0x8085100000L, 0x2000000000000004L, 0x600000L, 0x88000800000800L, 0x0L, 0x40000000001000L, + 0x800301804L, 0x20c8008085400000L, false, 0, 0x0L), + 4 + ), + 730339 + ); + + // gentest-1870 + assertEqual( + perft( + Board(0x8085100000L, 0x2000000000000004L, 0x200200L, 0x88000800000100L, 0x0L, 0x40000000001000L, + 0x800301104L, 0x20c8008085000200L, true, 0, 0x0L), + 4 + ), + 704887 + ); + + // gentest-1871 + assertEqual( + perft( + Board(0x8085100000L, 0x2000000000000004L, 0x200200L, 0x84000800000001L, 0x0L, 0x40000000002000L, + 0x800302005L, 0x20c4008085000200L, false, 0, 0x0L), + 4 + ), + 961060 + ); + + // gentest-1872 + assertEqual( + perft( + Board(0x8081180000L, 0x2000000000000000L, 0x200200L, 0x84000800000001L, 0x0L, 0x4000000000002000L, + 0x800302001L, 0x6084008081080200L, true, 0, 0x0L), + 4 + ), + 1234447 + ); + + // gentest-1873 + assertEqual( + perft( + Board(0x8081180000L, 0x2000000000000000L, 0x200200L, 0x480000200000001L, 0x0L, 0x4000000000002000L, + 0x200302001L, 0x6480008081080200L, false, 0, 0x0L), + 4 + ), + 1646132 + ); + + // gentest-1874 + assertEqual( + perft( + Board(0x8081180000L, 0x100000000000L, 0x200001L, 0x480000200000000L, 0x0L, 0x4000000000000040L, + 0x200300040L, 0x4480108081080001L, true, 0, 0x0L), + 4 + ), + 1245268 + ); + + // gentest-1875 + assertEqual( + perft( + Board(0x8081180000L, 0x4000000000L, 0x40000000001L, 0x480000200000000L, 0x0L, 0x4000000000000040L, + 0x40200100040L, 0x448000c081080001L, false, 0, 0x0L), + 4 + ), + 751905 + ); + + // gentest-1876 + assertEqual( + perft( + Board(0x8081180000L, 0x4000000000L, 0x40000000001L, 0x400800000000002L, 0x0L, 0x80000000000040L, + 0x40000100042L, 0x48080c081080001L, true, 0, 0x0L), + 4 + ), + 802392 + ); + + // gentest-1877 + assertEqual( + perft( + Board(0x8080180000L, 0x4000000000L, 0x200000001L, 0x400400000000002L, 0x0L, 0x80000000000040L, + 0x200100042L, 0x48040c080080001L, false, 0, 0x0L), + 4 + ), + 555002 + ); + + // gentest-1878 + assertEqual( + perft( + Board(0x8080180000L, 0x4000000000L, 0x40000000001L, 0x100000000002L, 0x0L, 0x80000000000040L, + 0x40000100042L, 0x8010c080080001L, true, 0, 0x0L), + 4 + ), + 512340 + ); + + // gentest-1879 + assertEqual( + perft( + Board(0x8080180000L, 0x4000000000L, 0x10000000001L, 0x2L, 0x0L, 0x80000000000040L, 0x10000100042L, + 0x8000c080080001L, false, 0, 0x0L), + 4 + ), + 152733 + ); + + // gentest-1880 + assertEqual( + perft( + Board(0x8080180000L, 0x100000000000L, 0x200000001L, 0x2L, 0x0L, 0x800000000040L, 0x200100042L, + 0x908080080001L, true, 0, 0x0L), + 4 + ), + 186714 + ); + + // gentest-1881 + assertEqual( + perft( + Board(0x8080100000L, 0x100000000000L, 0x80000L, 0x200L, 0x0L, 0x800000000040L, 0x180240L, + 0x908080000000L, false, 0, 0x0L), + 4 + ), + 84727 + ); + + // gentest-1882 + assertEqual( + perft( + Board(0x8080100000L, 0x20000000000000L, 0x2L, 0x200L, 0x0L, 0x800000000040L, 0x100242L, + 0x20808080000000L, true, 0, 0x0L), + 4 + ), + 46793 + ); + + // gentest-1883 + assertEqual( + perft( + Board(0x8080100000L, 0x4000000000L, 0x2L, 0x4000000000000L, 0x0L, 0x800000000040L, 0x4000000100042L, + 0x80c080000000L, false, 0, 0x0L), + 4 + ), + 25179 + ); + + // gentest-1884 + assertEqual( + perft( + Board(0x8080100000L, 0x800000L, 0x2L, 0x4000000000000L, 0x0L, 0x4000008000L, 0x4000000108002L, + 0xc080800000L, true, 0, 0x0L), + 4 + ), + 24735 + ); + + // gentest-1885 + assertEqual( + perft( + Board(0x8080100000L, 0x40L, 0x2L, 0x20000000L, 0x0L, 0x4000008000L, 0x20108002L, 0xc080000040L, false, + 0, 0x0L), + 4 + ), + 13085 + ); + + // gentest-1886 + assertEqual( + perft( + Board(0x8080100000L, 0x800000L, 0x2L, 0x2000L, 0x0L, 0x800000008000L, 0x10a002L, 0x808080800000L, + true, 0, 0x0L), + 4 + ), + 22492 + ); + + // gentest-1887 + assertEqual( + perft( + Board(0x8090000000L, 0x4000000000L, 0x2L, 0x400L, 0x0L, 0x800000008000L, 0x10008402L, 0x80c080000000L, + false, 0, 0x0L), + 4 + ), + 32215 + ); + + // gentest-1888 + assertEqual( + perft( + Board(0x8090000000L, 0x200000L, 0x2L, 0x400L, 0x0L, 0x80000000004000L, 0x10004402L, 0x80008080200000L, + true, 0, 0x0L), + 4 + ), + 43101 + ); + + // gentest-1889 + assertEqual( + perft( + Board(0x9080000000L, 0x200000L, 0x2L, 0x4000000000000L, 0x0L, 0x800000004000L, 0x4001000004002L, + 0x808080200000L, false, 0, 0x0L), + 4 + ), + 35954 + ); + + // gentest-1890 + assertEqual( + perft( + Board(0x108080000000L, 0x10000000L, 0x2L, 0x4000000000000L, 0x0L, 0x800000004000L, 0x4100000004002L, + 0x808090000000L, true, 0, 0x0L), + 4 + ), + 57264 + ); + + // gentest-1891 + assertEqual( + perft( + Board(0x108080000000L, 0x10000000L, 0x400L, 0x40000000000L, 0x0L, 0x80000000004000L, 0x140000004400L, + 0x80008090000000L, false, 0, 0x0L), + 4 + ), + 26840 + ); + + // gentest-1892 + assertEqual( + perft( + Board(0x108000008000L, 0x10000000L, 0x400L, 0x40000000000L, 0x0L, 0x80000000000040L, 0x140000000440L, + 0x80008010008000L, true, 0, 0x0L), + 4 + ), + 6391 + ); + + // gentest-1893 + assertEqual( + perft( + Board(0x108000000000L, 0x10000000L, 0x400L, 0x40000000000L, 0x80L, 0x80000000001000L, 0x140000001400L, + 0x80008010000080L, false, 0, 0x0L), + 4 + ), + 73706 + ); + + // gentest-1894 + assertEqual( + perft( + Board(0x100080000000L, 0x10000000L, 0x400L, 0x40000000000L, 0x200000L, 0x80000000000010L, + 0x140000000410L, 0x80000090200000L, true, 0, 0x0L), + 4 + ), + 127758 + ); + + // gentest-1895 + assertEqual( + perft( + Board(0x100080000000L, 0x10000000L, 0x8L, 0x80000000000L, 0x0L, 0x80000000000010L, 0x180000000018L, + 0x80000090000000L, false, 0, 0x0L), + 4 + ), + 69212 + ); + + // gentest-1896 + assertEqual( + perft( + Board(0x100080000000L, 0x1000000000000000L, 0x8000000000L, 0x0L, 0x0L, 0x80000000000010L, + 0x108000000010L, 0x1080000080000000L, true, 0, 0x0L), + 4 + ), + 14328 + ); + + // gentest-1897 + assertEqual( + perft( + Board(0x100080000000L, 0x1000000000000000L, 0x8L, 0x0L, 0x0L, 0x40000000002000L, 0x100000002008L, + 0x1040000080000000L, false, 0, 0x0L), + 4 + ), + 25314 + ); + + // gentest-1898 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1899 + assertEqual( + perft( + Board(0xbf00400010ef00L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x30efbfL, 0xffbf004000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 394621 + ); + + // gentest-1900 + assertEqual( + perft( + Board(0x3f00c00810e700L, 0x200800000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x830e7bfL, 0xbf3f80c000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 554289 + ); + + // gentest-1901 + assertEqual( + perft( + Board(0x3f00c00910e600L, 0x200000040200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x930eeb7L, 0xbf3f00c040000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 772961 + ); + + // gentest-1902 + assertEqual( + perft( + Board(0x1e21c00910e600L, 0x200000040200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000080000L, 0x1000000000000010L, 0x938e6b7L, 0xbf1e21c040000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 861031 + ); + + // gentest-1903 + assertEqual( + perft( + Board(0x1e01e00d10e200L, 0x200000040000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000080000L, 0x1000000000000010L, 0xd18e2f7L, 0xbf1e01e040000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 741199 + ); + + // gentest-1904 + assertEqual( + perft( + Board(0x1c03e00d10e200L, 0x200000040040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000080000L, 0x20000000000010L, 0xd1ce2f5L, 0xaf3c03e040000000L, true, 0, 0x81L), + 4 + ), + 1177972 + ); + + // gentest-1905 + assertEqual( + perft( + Board(0x1c03e00d10e200L, 0x200000040000140L, 0x2400000000000024L, 0x8100000000000081L, + 0x1000000000000002L, 0x20000000000010L, 0xd10e3f7L, 0xb73c03e040000000L, false, 0, 0x81L), + 4 + ), + 672715 + ); + + // gentest-1906 + assertEqual( + perft( + Board(0x1c03e00d10e200L, 0x200000000080140L, 0x2400000000000024L, 0x8100000000000081L, + 0x1000000000000400L, 0x20000000000010L, 0xd10e7f5L, 0xb73c03e000080000L, true, 0, 0x81L), + 4 + ), + 135716 + ); + + // gentest-1907 + assertEqual( + perft( + Board(0x1c03e00d10e200L, 0x200000000000144L, 0x2400000000000020L, 0x8100000000000081L, + 0x1000000000000002L, 0x20000000000008L, 0xd10e3ebL, 0xb73c03e000000004L, false, 0, 0x0L), + 4 + ), + 731446 + ); + + // gentest-1908 + assertEqual( + perft( + Board(0x1c01e20d10e200L, 0x200000000000144L, 0x2400000000000020L, 0x8100000000000081L, + 0x1000000000000002L, 0x4000000000000400L, 0xd10e7e3L, 0xf71c01e200000004L, true, 0, 0x0L), + 4 + ), + 677806 + ); + + // gentest-1909 + assertEqual( + perft( + Board(0x1c01e00d10e200L, 0x200000020000104L, 0x2400000000000020L, 0x8100000000000081L, + 0x1000000000000002L, 0x4000000000000400L, 0x2910e7a3L, 0xf71c01e004000004L, false, 0, 0x0L), + 4 + ), + 681754 + ); + + // gentest-1910 + assertEqual( + perft( + Board(0x1801a44d10e200L, 0x200000020000100L, 0x2400000000000020L, 0x8100000000000081L, + 0x1000000000000004L, 0x4000000000000400L, 0x2910e7a5L, 0xf71801a444000000L, true, 0, 0x0L), + 4 + ), + 562837 + ); + + // gentest-1911 + assertEqual( + perft( + Board(0x1801a44d12e000L, 0x200000000001100L, 0x2002000000000020L, 0x8100000000000081L, + 0x1000000000000004L, 0x4000000000000400L, 0x912f5a5L, 0xf31a01a444000000L, false, 0, 0x0L), + 4 + ), + 772979 + ); + + // gentest-1912 + assertEqual( + perft( + Board(0x1801a40d52e000L, 0x200000000001100L, 0x2002000000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x4000000000000400L, 0x912f5a9L, 0xeb1a01a404400000L, true, 0, 0x0L), + 4 + ), + 1024057 + ); + + // gentest-1913 + assertEqual( + perft( + Board(0x1801a40952e000L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x4000000000000004L, 0x914f0adL, 0xeb1a01a400420000L, false, 0, 0x0L), + 4 + ), + 886375 + ); + + // gentest-1914 + assertEqual( + perft( + Board(0x1801a40950e200L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, + 0x4000000000010L, 0x4000000000000004L, 0x914f0b5L, 0xe31e01a400400200L, true, 0, 0x0L), + 4 + ), + 228659 + ); + + // gentest-1915 + assertEqual( + perft( + Board(0x1801a409506200L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, + 0x4000000000010L, 0x40000000000400L, 0x95474b1L, 0xa35e01a400000200L, false, 0, 0x0L), + 4 + ), + 1816208 + ); + + // gentest-1916 + assertEqual( + perft( + Board(0x1009a409506200L, 0x200000000041000L, 0x2002000000000020L, 0x8100000000000081L, + 0x4000000000010L, 0x20000000020000L, 0x95670b1L, 0xa33609a400000200L, true, 0, 0x0L), + 4 + ), + 1748763 + ); + + // gentest-1917 + assertEqual( + perft( + Board(0x1009a409506000L, 0x200000000001008L, 0x2002000000000020L, 0x8100000000000083L, + 0x4000000000010L, 0x20000000000400L, 0x95074b9L, 0xa33609a400000002L, false, 0, 0x0L), + 4 + ), + 1302119 + ); + + // gentest-1918 + assertEqual( + perft( + Board(0x1009a409506000L, 0x200000000001008L, 0x2002000000000020L, 0x8100000000008201L, + 0x4000000000010L, 0x20000000000400L, 0x950f439L, 0xa33609a400000200L, true, 0, 0x0L), + 4 + ), + 201430 + ); + + // gentest-1919 + assertEqual( + perft( + Board(0x1009a409506000L, 0x200000000001008L, 0x2002000000000020L, 0x8100000000008001L, + 0x400000000000010L, 0x20000000000100L, 0x950f139L, 0xa73209a400000000L, false, 0, 0x0L), + 4 + ), + 804716 + ); + + // gentest-1920 + assertEqual( + perft( + Board(0x10098429506000L, 0x200000000001008L, 0x2002000000000020L, 0x180000000000081L, + 0x400000000000010L, 0x20000000000100L, 0x95071b9L, 0x27b2098420000000L, true, 0, 0x0L), + 4 + ), + 1169937 + ); + + // gentest-1921 + assertEqual( + perft( + Board(0x10098409506000L, 0x8000020000008L, 0x2002000000000020L, 0x180000000000081L, + 0x400000000000800L, 0x20000000000100L, 0x295069a9L, 0x25ba098400000000L, false, 0, 0x0L), + 4 + ), + 1605409 + ); + + // gentest-1922 + assertEqual( + perft( + Board(0x10098508506000L, 0x8000020000008L, 0x2002000000000020L, 0x180000000000081L, 0x800000800L, + 0x20000000000100L, 0x1285069a9L, 0x21ba098c00000000L, true, 0, 0x0L), + 4 + ), + 200833 + ); + + // gentest-1923 + assertEqual( + perft( + Board(0x10098500506000L, 0x8000000800008L, 0x2002000000000020L, 0x180000000000081L, 0x8000800L, + 0x20000000000002L, 0x100d068abL, 0x21ba098408000000L, false, 0, 0x0L), + 4 + ), + 1870035 + ); + + // gentest-1924 + assertEqual( + perft( + Board(0x10098500506000L, 0x8000000800008L, 0x42000000000020L, 0x180000000000081L, 0x40010L, + 0x20000000000002L, 0x100d060bbL, 0x1fa098400040000L, true, 0, 0x0L), + 4 + ), + 1200408 + ); + + // gentest-1925 + assertEqual( + perft( + Board(0x10098540106000L, 0x8000000800008L, 0x42000000000020L, 0x180000000000081L, 0x10L, + 0x20000000000400L, 0x1409064b9L, 0x1fa098400000000L, false, 0, 0x0L), + 4 + ), + 1613253 + ); + + // gentest-1926 + assertEqual( + perft( + Board(0x100905c0106000L, 0x8000000800008L, 0x42000000000020L, 0x880000000000081L, 0x10L, + 0x20000000000004L, 0x1409060bdL, 0x8fa090480000000L, true, 0, 0x0L), + 4 + ), + 1191898 + ); + + // gentest-1927 + assertEqual( + perft( + Board(0x100905c0106000L, 0x8000000800008L, 0x40000210000000L, 0x880000001000080L, 0x10L, + 0x20000000000004L, 0x34190609cL, 0x8f8090490000000L, false, 0, 0x0L), + 4 + ), + 2059136 + ); + + // gentest-1928 + assertEqual( + perft( + Board(0x100905c0106000L, 0x8000000800008L, 0x210040000L, 0x800800001000080L, 0x40L, 0x20000000000004L, + 0x3419060ccL, 0x838890490040000L, true, 0, 0x0L), + 4 + ), + 1456218 + ); + + // gentest-1929 + assertEqual( + perft( + Board(0x100905c0106000L, 0x8000000800008L, 0x10040100L, 0x800100001000080L, 0x40L, 0x20000000000004L, + 0x1419061ccL, 0x838190490040000L, false, 0, 0x0L), + 4 + ), + 880096 + ); + + // gentest-1930 + assertEqual( + perft( + Board(0x100905c0106000L, 0x8000000800008L, 0x12000002L, 0x800400001000080L, 0x40L, 0x20000000000004L, + 0x1419060ceL, 0x838490492000000L, true, 0, 0x0L), + 4 + ), + 762827 + ); + + // gentest-1931 + assertEqual( + perft( + Board(0x100905c0304000L, 0x8000000800008L, 0x802000100L, 0x800400001000080L, 0x40L, 0x20000000000004L, + 0x141b041ccL, 0x838490c82000000L, false, 0, 0x0L), + 4 + ), + 770692 + ); + + // gentest-1932 + assertEqual( + perft( + Board(0x915c0304000L, 0x8000000800008L, 0x800000900L, 0x800400001000080L, 0x2000L, 0x20000000000004L, + 0x141b0618cL, 0x828491c80000800L, true, 0, 0x0L), + 4 + ), + 186164 + ); + + // gentest-1933 + assertEqual( + perft( + Board(0x91580304000L, 0x8000020000008L, 0x800000100L, 0x800000041000080L, 0x2000L, 0x20000000000800L, + 0x121306988L, 0x828091cc0000000L, false, 0, 0x0L), + 4 + ), + 1489768 + ); + + // gentest-1934 + assertEqual( + perft( + Board(0x91580304000L, 0x8000000800008L, 0x800000100L, 0x800000001400080L, 0x2000L, 0x20000000000800L, + 0x101b06988L, 0x828091c80400000L, true, 0, 0x0L), + 4 + ), + 1098748 + ); + + // gentest-1935 + assertEqual( + perft( + Board(0x91590204000L, 0x8000000800008L, 0x100000000100L, 0x800000001000080L, 0x400000L, + 0x20000000000800L, 0x111e04988L, 0x828191480000000L, false, 0, 0x0L), + 4 + ), + 676360 + ); + + // gentest-1936 + assertEqual( + perft( + Board(0x915b0004000L, 0x8000000800008L, 0x800000100L, 0x400000001000080L, 0x400000L, + 0x20000000000800L, 0x131c04988L, 0x428091c80000000L, true, 0, 0x0L), + 4 + ), + 965759 + ); + + // gentest-1937 + assertEqual( + perft( + Board(0x915b0004000L, 0x8000000800008L, 0x20100L, 0x400000002000080L, 0x400000L, 0x20000000080000L, + 0x132c84188L, 0x428091480020000L, false, 0, 0x0L), + 4 + ), + 799309 + ); + + // gentest-1938 + assertEqual( + perft( + Board(0x915b0004000L, 0x200000800008L, 0x20100L, 0x400000002000080L, 0x400000L, 0x1000000000040000L, + 0x132c44188L, 0x1400291480020000L, true, 0, 0x0L), + 4 + ), + 1000165 + ); + + // gentest-1939 + assertEqual( + perft( + Board(0x915b0004000L, 0x200000800008L, 0x20000000000100L, 0x400000001000080L, 0x200000L, + 0x1000000000040000L, 0x131a44188L, 0x1420291480000000L, false, 0, 0x0L), + 4 + ), + 810603 + ); + + // gentest-1940 + assertEqual( + perft( + Board(0x911b4004000L, 0x4000000000800008L, 0x20000000000100L, 0x400000001000040L, 0x200000L, + 0x1000000000040000L, 0x131a44148L, 0x5420091084000000L, true, 0, 0x0L), + 4 + ), + 383953 + ); + + // gentest-1941 + assertEqual( + perft( + Board(0x911b4004000L, 0x4000000000800008L, 0x20000000000100L, 0x400000002000040L, 0x1000L, + 0x800000000040000L, 0x132845148L, 0x4c20091084000000L, false, 0, 0x0L), + 4 + ), + 574544 + ); + + // gentest-1942 + assertEqual( + perft( + Board(0x91194004000L, 0x4000000000800008L, 0x20000000000100L, 0x1000002000040L, 0x1000L, + 0x800000000040000L, 0x1112845148L, 0x4821090084000000L, true, 0, 0x0L), + 4 + ), + 658945 + ); + + // gentest-1943 + assertEqual( + perft( + Board(0x91194004000L, 0x4000000000800008L, 0x20000000000100L, 0x1000200000040L, 0x10L, + 0x8000000040000L, 0x1310844158L, 0x4029090084000000L, false, 0, 0x0L), + 4 + ), + 544998 + ); + + // gentest-1944 + assertEqual( + perft( + Board(0x91194004000L, 0x4000000000800008L, 0x20000000000100L, 0x1000000000040L, 0x10L, 0x200000800L, + 0x1110804958L, 0x4021090284000000L, true, 0, 0x0L), + 4 + ), + 310186 + ); + + // gentest-1945 + assertEqual( + perft( + Board(0x91194004000L, 0x4000000000800008L, 0x20000000020000L, 0x100000000000040L, 0x2000L, + 0x200000800L, 0x1110826848L, 0x4120090284000000L, false, 0, 0x0L), + 4 + ), + 521133 + ); + + // gentest-1946 + assertEqual( + perft( + Board(0x11994004000L, 0x4000000000800008L, 0x20000000020000L, 0x100000000000040L, 0x0L, 0x400000800L, + 0x1110824848L, 0x4120010c84000000L, true, 0, 0x0L), + 4 + ), + 261972 + ); + + // gentest-1947 + assertEqual( + perft( + Board(0x11984004000L, 0x200000800008L, 0x20000000000400L, 0x100000000000040L, 0x0L, 0x400000800L, + 0x1900804c48L, 0x120210484000000L, false, 0, 0x0L), + 4 + ), + 469907 + ); + + // gentest-1948 + assertEqual( + perft( + Board(0x110984004000L, 0x200000800008L, 0x20000000000400L, 0x1000000000000040L, 0x0L, 0x400000800L, + 0x100900804c48L, 0x1020210484000000L, true, 0, 0x0L), + 4 + ), + 491554 + ); + + // gentest-1949 + assertEqual( + perft( + Board(0x110984004000L, 0x200000800008L, 0x20002000000000L, 0x400000000000040L, 0x0L, 0x400000004L, + 0x10290080404cL, 0x420210484000000L, false, 0, 0x0L), + 4 + ), + 493391 + ); + + // gentest-1950 + assertEqual( + perft( + Board(0x110980044000L, 0x200000800008L, 0xa000000000L, 0x400000000000040L, 0x0L, 0x400000002L, + 0x10290080404aL, 0x400218480040000L, true, 0, 0x0L), + 4 + ), + 472154 + ); + + // gentest-1951 + assertEqual( + perft( + Board(0x110980044000L, 0x200000800008L, 0x20000000080000L, 0x400000000000040L, 0x0L, 0x400000100L, + 0x100900884148L, 0x420210480040000L, false, 0, 0x0L), + 4 + ), + 581765 + ); + + // gentest-1952 + assertEqual( + perft( + Board(0x110980044000L, 0x200000800008L, 0x4000000000080000L, 0x40000000040L, 0x0L, 0x400010000L, + 0x100900894048L, 0x4000250480040000L, true, 0, 0x0L), + 4 + ), + 323150 + ); + + // gentest-1953 + assertEqual( + perft( + Board(0x150180044000L, 0x8000000800008L, 0x4000000000001000L, 0x40L, 0x0L, 0x400010000L, + 0x140100815048L, 0x4008010480040000L, false, 0, 0x0L), + 4 + ), + 137526 + ); + + // gentest-1954 + assertEqual( + perft( + Board(0x150180044000L, 0x204000000008L, 0x80000000001000L, 0x40L, 0x0L, 0x400010000L, 0x144100015048L, + 0x80210480040000L, true, 0, 0x0L), + 4 + ), + 267894 + ); + + // gentest-1955 + assertEqual( + perft( + Board(0x140180044000L, 0xc000000008L, 0x80010000000000L, 0x40L, 0x0L, 0x400010000L, 0x154100014048L, + 0x80008480040000L, false, 0, 0x0L), + 4 + ), + 208742 + ); + + // gentest-1956 + assertEqual( + perft( + Board(0x140180044000L, 0x204000000008L, 0x80000000000000L, 0x40L, 0x0L, 0x200010000L, 0x144100014048L, + 0x80200280040000L, true, 0, 0x0L), + 4 + ), + 154853 + ); + + // gentest-1957 + assertEqual( + perft( + Board(0x4100180044000L, 0x204000100000L, 0x80000000000000L, 0x40L, 0x0L, 0x400010000L, + 0x4104100114040L, 0x80200480040000L, false, 0, 0x0L), + 4 + ), + 325756 + ); + + // gentest-1958 + assertEqual( + perft( + Board(0x4100180004000L, 0x4000004000000400L, 0x80000000000000L, 0x40L, 0x0L, 0x400010000L, + 0x4104100014440L, 0x4080000480000000L, true, 0, 0x0L), + 4 + ), + 159456 + ); + + // gentest-1959 + assertEqual( + perft( + Board(0x100180004000L, 0x4400004000000400L, 0x80000L, 0x40L, 0x0L, 0x400020000L, 0x400104100024440L, + 0x4000000480080000L, false, 0, 0x0L), + 4 + ), + 213215 + ); + + // gentest-1960 + assertEqual( + perft( + Board(0x100100804000L, 0x4400004000100000L, 0x2000000000L, 0x40L, 0x0L, 0x400020000L, + 0x400104100124040L, 0x4000002400800000L, true, 0, 0x0L), + 4 + ), + 235246 + ); + + // gentest-1961 + assertEqual( + perft( + Board(0x100100804000L, 0x4400000810000000L, 0x80000000000000L, 0x40L, 0x0L, 0x400020000L, + 0x400100910024040L, 0x4080000400800000L, false, 0, 0x0L), + 4 + ), + 68395 + ); + + // gentest-1962 + assertEqual( + perft( + Board(0x100100804000L, 0x4400000000000000L, 0x10000000L, 0x10L, 0x0L, 0x800020000L, + 0x400100100024010L, 0x4000000810800000L, true, 0, 0x0L), + 4 + ), + 154030 + ); + + // gentest-1963 + assertEqual( + perft( + Board(0x100140800000L, 0x4400000000000000L, 0x4000L, 0x10L, 0x0L, 0x800020000L, 0x400100140020010L, + 0x4000000800804000L, false, 0, 0x0L), + 4 + ), + 81059 + ); + + // gentest-1964 + assertEqual( + perft( + Board(0x100140800000L, 0x4400000000000000L, 0x4000L, 0x10L, 0x0L, 0x800000200L, 0x400100140000210L, + 0x4000000800804000L, true, 0, 0x0L), + 4 + ), + 98365 + ); + + // gentest-1965 + assertEqual( + perft( + Board(0x100140800000L, 0x4400000000000000L, 0x4000L, 0x40L, 0x0L, 0x4000002L, 0x400100140000042L, + 0x4000000004804000L, false, 0, 0x0L), + 4 + ), + 112447 + ); + + // gentest-1966 + assertEqual( + perft( + Board(0x100140800000L, 0x4400000000000000L, 0x100000000000000L, 0x20L, 0x0L, 0x8000002L, + 0x400100140000022L, 0x4100000008800000L, true, 0, 0x0L), + 4 + ), + 153496 + ); + + // gentest-1967 + assertEqual( + perft( + Board(0x100140800000L, 0x4400000000000000L, 0x100000000000000L, 0x20000000L, 0x0L, 0x400000002L, + 0x400100160000002L, 0x4100000400800000L, false, 0, 0x0L), + 4 + ), + 101212 + ); + + // gentest-1968 + assertEqual( + perft( + Board(0x100140800000L, 0x4001000000000000L, 0x200000L, 0x20000000L, 0x0L, 0x80000000002L, + 0x1100160000002L, 0x4000080000a00000L, true, 0, 0x0L), + 4 + ), + 118872 + ); + + // gentest-1969 + assertEqual( + perft( + Board(0x100140800000L, 0x4001000000000000L, 0x1000L, 0x20000000000000L, 0x0L, 0x80000000002L, + 0x21100140000002L, 0x4000080000801000L, false, 0, 0x0L), + 4 + ), + 114917 + ); + + // gentest-1970 + assertEqual( + perft( + Board(0x100140800000L, 0x11000000000000L, 0x10000000000L, 0x80000000000000L, 0x0L, 0x80000000002L, + 0x81100140000002L, 0x10090000800000L, true, 0, 0x0L), + 4 + ), + 88510 + ); + + // gentest-1971 + assertEqual( + perft( + Board(0x100140800000L, 0x42000000000L, 0x10000000000L, 0x80000000000000L, 0x0L, 0x80000000001L, + 0x80140140000001L, 0x92000800000L, false, 0, 0x0L), + 4 + ), + 173692 + ); + + // gentest-1972 + assertEqual( + perft( + Board(0x100140800000L, 0x40008000000L, 0x80000L, 0x8000000000L, 0x0L, 0x80000000001L, 0x148140000001L, + 0x80008880000L, true, 0, 0x0L), + 4 + ), + 197730 + ); + + // gentest-1973 + assertEqual( + perft( + Board(0x100140800000L, 0x10000008000000L, 0x80000L, 0x0L, 0x0L, 0x800000001L, 0x10100140000001L, + 0x808880000L, false, 0, 0x0L), + 4 + ), + 13515 + ); + + // gentest-1974 + assertEqual( + perft( + Board(0x100140800000L, 0x4000002000000000L, 0x80000L, 0x0L, 0x0L, 0x10000001L, 0x4000100140000001L, + 0x2010880000L, true, 0, 0x0L), + 4 + ), + 33394 + ); + + // gentest-1975 + assertEqual( + perft( + Board(0x100140800000L, 0x4000000000400000L, 0x80000L, 0x0L, 0x0L, 0x10000001L, 0x4000100140000001L, + 0x10c80000L, false, 0, 0x0L), + 4 + ), + 29974 + ); + + // gentest-1976 + assertEqual( + perft( + Board(0x100140800000L, 0x4000002000000000L, 0x80000L, 0x0L, 0x0L, 0x800000100L, 0x4000100140000100L, + 0x2800880000L, true, 0, 0x0L), + 4 + ), + 51628 + ); + + // gentest-1977 + assertEqual( + perft( + Board(0x104100800000L, 0x4010000000000000L, 0x80000L, 0x0L, 0x0L, 0x800000200L, 0x4000104100000200L, + 0x10000800880000L, false, 0, 0x0L), + 4 + ), + 59710 + ); + + // gentest-1978 + assertEqual( + perft( + Board(0x104100800000L, 0x10002000000000L, 0x80000L, 0x0L, 0x0L, 0x10000200L, 0x10104100000200L, + 0x2010880000L, true, 0, 0x0L), + 4 + ), + 74224 + ); + + // gentest-1979 + assertEqual( + perft( + Board(0x104100800000L, 0x800800000000L, 0x80000L, 0x0L, 0x0L, 0x10010000L, 0x104900010000L, + 0x800010880000L, false, 0, 0x0L), + 4 + ), + 71175 + ); + + // gentest-1980 + assertEqual( + perft( + Board(0x500100800000L, 0x10000800000000L, 0x80000L, 0x0L, 0x0L, 0x10010000L, 0x500900010000L, + 0x10000010880000L, true, 0, 0x0L), + 4 + ), + 66613 + ); + + // gentest-1981 + assertEqual( + perft( + Board(0x500100800000L, 0x10000800000000L, 0x80000L, 0x0L, 0x0L, 0x240000L, 0x500900040000L, + 0x10000000a80000L, false, 0, 0x0L), + 4 + ), + 97759 + ); + + // gentest-1982 + assertEqual( + perft( + Board(0x500100800000L, 0x10000800000000L, 0x400L, 0x0L, 0x0L, 0x8200000L, 0x500908000000L, + 0x10000000a00400L, true, 0, 0x0L), + 4 + ), + 70760 + ); + + // gentest-1983 + assertEqual( + perft( + Board(0x500100800000L, 0x1010000000000000L, 0x400L, 0x0L, 0x0L, 0x8004000L, 0x1000500108000000L, + 0x10000000804400L, false, 0, 0x0L), + 4 + ), + 58748 + ); + + // gentest-1984 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-1985 + assertEqual( + perft( + Board(0xff00002400db00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2400dbffL, 0xbfff800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 239086 + ); + + // gentest-1986 + assertEqual( + perft( + Board(0xf700082408d300L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2408d3ffL, 0xfff7000800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 615738 + ); + + // gentest-1987 + assertEqual( + perft( + Board(0xf5020824885300L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x248953fdL, 0xfff5020800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 586034 + ); + + // gentest-1988 + assertEqual( + perft( + Board(0xf4030824885300L, 0x4200000200000040L, 0x2000100000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2248853fdL, 0xfbf4130800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 573207 + ); + + // gentest-1989 + assertEqual( + perft( + Board(0xf4030864881300L, 0x4201000000000040L, 0x2000100000000024L, 0x8100000000000081L, + 0x400000000000008L, 0x1000000000000010L, 0x10000648813fdL, 0xf7f4130800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 486705 + ); + + // gentest-1990 + assertEqual( + perft( + Board(0xf4030864881300L, 0x201800000000040L, 0x2000100000000024L, 0x8100000000000081L, + 0x400000000020000L, 0x800000000000010L, 0x10000648a13f5L, 0xaff4930800000000L, true, 0, 0x81L), + 4 + ), + 528517 + ); + + // gentest-1991 + assertEqual( + perft( + Board(0xf4030864881300L, 0x201800000200000L, 0x2000100000000024L, 0x8100000000000081L, + 0x2000000010000L, 0x800000000000010L, 0x1000064a913b5L, 0xabf6930800000000L, false, 0, 0x81L), + 4 + ), + 920485 + ); + + // gentest-1992 + assertEqual( + perft( + Board(0xd4032824881300L, 0x201800000200000L, 0x2000100000000024L, 0x8100000000000081L, + 0x2000000010000L, 0x8000000000010L, 0x1002024a913b5L, 0xa3de930800000000L, true, 0, 0x81L), + 4 + ), + 675114 + ); + + // gentest-1993 + assertEqual( + perft( + Board(0xd402282c801300L, 0x201800000200000L, 0x2000100000000024L, 0x8100000000000081L, + 0x400010000000000L, 0x8000000000010L, 0x101202ca013b5L, 0xa7dc920800000000L, false, 0, 0x81L), + 4 + ), + 675207 + ); + + // gentest-1994 + assertEqual( + perft( + Board(0xd402282c801300L, 0x201000040000800L, 0x2000100000000024L, 0x8100000000000081L, + 0x1000010000000000L, 0x8000000000010L, 0x101202c801bb5L, 0xb3dc120840000000L, true, 0, 0x81L), + 4 + ), + 636665 + ); + + // gentest-1995 + assertEqual( + perft( + Board(0xd402202c900300L, 0x201000040000800L, 0x2000100000000024L, 0x8100000000000041L, + 0x1000010000000000L, 0x8000000000010L, 0x1012028900b75L, 0xb3dc120044000000L, false, 0, 0x1L), + 4 + ), + 1119593 + ); + + // gentest-1996 + assertEqual( + perft( + Board(0xd402202c900300L, 0x201001000000800L, 0x2000000800001004L, 0x8100000000000041L, + 0x1000010000000000L, 0x8000000000010L, 0x1012028901b55L, 0xb3dc021804000000L, true, 0, 0x1L), + 4 + ), + 1916981 + ); + + // gentest-1997 + assertEqual( + perft( + Board(0xd402202c900300L, 0x201000000000800L, 0x2000000800080004L, 0x8100000000000081L, + 0x1000010000000000L, 0x8000000000010L, 0x1012028980b95L, 0xb3dc020804000000L, false, 0, 0x1L), + 4 + ), + 1276238 + ); + + // gentest-1998 + assertEqual( + perft( + Board(0x5402a02c900300L, 0x201000000000800L, 0x2020000000080004L, 0x8100000000000082L, + 0x1000010000000000L, 0x8000000000010L, 0x1012028980b96L, 0xb37c028004000000L, true, 0, 0x0L), + 4 + ), + 740911 + ); + + // gentest-1999 + assertEqual( + perft( + Board(0x5402a03c800300L, 0x201000000000800L, 0x2020000000080004L, 0x4100000000000022L, + 0x1000010000000000L, 0x8000000000010L, 0x1012038880b36L, 0x737c028004000000L, false, 0, 0x0L), + 4 + ), + 514359 + ); + + // gentest-2000 + assertEqual( + perft( + Board(0x4412a038840300L, 0x201000000200000L, 0x2020000000080004L, 0x4100000000000022L, + 0x1000010000000000L, 0x8000000000010L, 0x1012038a80336L, 0x736c128000040000L, true, 0, 0x0L), + 4 + ), + 896892 + ); + + def batch5(): Unit = + // gentest-2001 + assertEqual( + perft( + Board(0x412e038840300L, 0x201000000200000L, 0x2020000001000004L, 0x4100000000000022L, + 0x1000010000000000L, 0x8000000000010L, 0x1012039a00336L, 0x732c12c000040000L, false, 0, 0x0L), + 4 + ), + 275475 + ); + + // gentest-2002 + assertEqual( + perft( + Board(0x16e038840300L, 0x201000000008000L, 0x2020000001000004L, 0x140000000000022L, + 0x1000010000000000L, 0x8000000000010L, 0x1012039808336L, 0x336816c000040000L, true, 0, 0x0L), + 4 + ), + 967481 + ); + + // gentest-2003 + assertEqual( + perft( + Board(0x16e038840300L, 0x201000000008000L, 0x2020000000000404L, 0x180000000000022L, + 0x1000010000000000L, 0x8000000001000L, 0x1012038809726L, 0x33a816c000040000L, false, 0, 0x0L), + 4 + ), + 1516657 + ); + + // gentest-2004 + assertEqual( + perft( + Board(0x16e038840300L, 0x201000000008000L, 0x2020000000000404L, 0x180000000000022L, + 0x1002000000000000L, 0x800000000001000L, 0x3002038809726L, 0x3ba016c000040000L, true, 0, 0x0L), + 4 + ), + 1064359 + ); + + // gentest-2005 + assertEqual( + perft( + Board(0x16e038840300L, 0x201000000200000L, 0x202000000000000cL, 0x180000000000022L, 0xa000000000000L, + 0x800000000001000L, 0x3002038a0132eL, 0x2ba816c000040000L, false, 0, 0x0L), + 4 + ), + 1830664 + ); + + // gentest-2006 + assertEqual( + perft( + Board(0x16e038810600L, 0x201000000200000L, 0x600000000000000cL, 0x180000000000022L, 0xa000000000000L, + 0x800000000001000L, 0x3002038a1122eL, 0x6b8816c000000400L, true, 0, 0x0L), + 4 + ), + 1952238 + ); + + // gentest-2007 + assertEqual( + perft( + Board(0x12c038810600L, 0x201000000200000L, 0x600000000000000cL, 0x140000000000022L, 0x8040000000000L, + 0x800000000001000L, 0x1140038a1122eL, 0x6b4802c000000400L, false, 0, 0x0L), + 4 + ), + 2573261 + ); + + // gentest-2008 + assertEqual( + perft( + Board(0x2c038810600L, 0x600000000200000L, 0x400000000200000cL, 0x140000000000022L, 0x140000000000L, + 0x800000000001000L, 0x400040038a1122eL, 0x4b4012c002000400L, true, 0, 0x0L), + 4 + ), + 4398943 + ); + + // gentest-2009 + assertEqual( + perft( + Board(0x2c038810600L, 0x408000000200000L, 0x4000000002100008L, 0x140000000000022L, 0x100001000000L, + 0x800000000001000L, 0x400000039b1122aL, 0x494812c002000400L, false, 0, 0x0L), + 4 + ), + 5070327 + ); + + // gentest-2010 + assertEqual( + perft( + Board(0x2c038810200L, 0x600000000200000L, 0x400000000210000aL, 0x140000000000020L, 0x100001000000L, + 0x800000000002000L, 0x400000039b12228L, 0x4b4012c002000002L, true, 0, 0x0L), + 4 + ), + 4186042 + ); + + // gentest-2011 + assertEqual( + perft( + Board(0x2c038810200L, 0x600000000200000L, 0x8000000210000aL, 0x140000000000080L, 0x100001000000L, + 0x800000000004000L, 0x400000039b14288L, 0xbc012c002000002L, false, 0, 0x0L), + 4 + ), + 5113041 + ); + + // gentest-2012 + assertEqual( + perft( + Board(0x2c038810200L, 0x600000000200000L, 0x90000000002108L, 0x140000000000080L, 0x100001000000L, + 0x800000000004000L, 0x400000039a16288L, 0xbd012c000000100L, true, 0, 0x0L), + 4 + ), + 3753578 + ); + + // gentest-2013 + assertEqual( + perft( + Board(0x2c078010200L, 0x600000000200000L, 0x90000000100108L, 0x140000000000080L, 0x1000000L, + 0x800000000004000L, 0x400000079314288L, 0xbd002c000000100L, false, 0, 0x0L), + 4 + ), + 2500779 + ); + + // gentest-2014 + assertEqual( + perft( + Board(0x2c078030000L, 0x600000000200000L, 0x80000002100108L, 0x140000000000080L, 0x1000000L, + 0x4000000004000L, 0x400000079334088L, 0x3c402c002000100L, true, 0, 0x0L), + 4 + ), + 1860461 + ); + + // gentest-2015 + assertEqual( + perft( + Board(0x240f8030000L, 0x600000000200000L, 0x80000002100108L, 0x140000000000080L, 0x200000000L, + 0x4000000008000L, 0x400000278338088L, 0x3c4024082000100L, false, 0, 0x0L), + 4 + ), + 1799741 + ); + + // gentest-2016 + assertEqual( + perft( + Board(0x240f8030000L, 0x600000000200000L, 0x80000002100108L, 0x110000000000080L, 0x2000000000L, + 0x800000000008000L, 0x400002078338088L, 0xb90024082000100L, true, 0, 0x0L), + 4 + ), + 1544295 + ); + + // gentest-2017 + assertEqual( + perft( + Board(0x200f8030000L, 0x600004000000000L, 0x80000002100108L, 0x120000000000080L, 0x800000000L, + 0x800000000008000L, 0x400004878138088L, 0xba0020082000100L, false, 0, 0x0L), + 4 + ), + 255304 + ); + + // gentest-2018 + assertEqual( + perft( + Board(0x200f8030000L, 0x220000000000000L, 0x80000000100118L, 0x100000000000080L, 0x800000000L, + 0x400000000008000L, 0x20000878138088L, 0x780020080000110L, true, 0, 0x0L), + 4 + ), + 515573 + ); + + // gentest-2019 + assertEqual( + perft( + Board(0x200f8030000L, 0x220000000000000L, 0x80000000002118L, 0x1000000000080L, 0x4000000000L, + 0x400000000008000L, 0x2000407803a088L, 0x681020080000110L, false, 0, 0x0L), + 4 + ), + 1026348 + ); + + // gentest-2020 + assertEqual( + perft( + Board(0x200f8030000L, 0x810000000000L, 0x80000000002118L, 0x1000000000080L, 0x4000000000L, + 0x4000000008000L, 0x80407803a088L, 0x85030080000110L, true, 0, 0x0L), + 4 + ), + 591438 + ); + + // gentest-2021 + assertEqual( + perft( + Board(0x200f9020000L, 0x810000000000L, 0x4000000000002108L, 0x1000000000010L, 0x4000000000L, + 0x4000000008000L, 0x80407902a018L, 0x4005030080000100L, false, 0, 0x0L), + 4 + ), + 601367 + ); + + // gentest-2022 + assertEqual( + perft( + Board(0x20079820000L, 0x810000000000L, 0x4000000000002108L, 0x1000000000010L, 0x40000000000000L, + 0x80000008000L, 0x4080007902a018L, 0x40010b0000800100L, true, 0, 0x0L), + 4 + ), + 444961 + ); + + // gentest-2023 + assertEqual( + perft( + Board(0x21069020000L, 0x810000000000L, 0x4000000000002108L, 0x4000000000010L, 0x40000000000000L, + 0x80000800000L, 0x40801069822018L, 0x40040b0000000100L, false, 0, 0x0L), + 4 + ), + 73503 + ); + + // gentest-2024 + assertEqual( + perft( + Board(0x21069020000L, 0x810000000000L, 0x4000000000002108L, 0x4000000000010L, 0x0L, 0x10000000800000L, + 0x801069822018L, 0x4014030000000100L, true, 0, 0x0L), + 4 + ), + 417263 + ); + + // gentest-2025 + assertEqual( + perft( + Board(0x21069020000L, 0x810000000000L, 0x4000000000400108L, 0x2000000000020L, 0x0L, 0x10000000800000L, + 0x801069c20028L, 0x4012030000000100L, false, 0, 0x0L), + 4 + ), + 284891 + ); + + // gentest-2026 + assertEqual( + perft( + Board(0x21069000000L, 0x810000000000L, 0x20000000420400L, 0x2000000000020L, 0x0L, 0x10000000800000L, + 0x801069c00420L, 0x32030000020000L, true, 0, 0x0L), + 4 + ), + 597568 + ); + + // gentest-2027 + assertEqual( + perft( + Board(0x23049000000L, 0x810000000000L, 0x20000000420400L, 0x1000000200000L, 0x0L, 0x10000000800000L, + 0x803049e00400L, 0x31030000020000L, false, 0, 0x0L), + 4 + ), + 470287 + ); + + // gentest-2028 + assertEqual( + perft( + Board(0x23049000000L, 0x810000000000L, 0x20000000400500L, 0x1000000002000L, 0x0L, 0x10000000800000L, + 0x803049c02400L, 0x31030000000100L, true, 0, 0x0L), + 4 + ), + 358904 + ); + + // gentest-2029 + assertEqual( + perft( + Board(0x23148000000L, 0x810000000000L, 0x20000000400500L, 0x1000000000020L, 0x0L, 0x2000000000800000L, + 0x803148c00420L, 0x2021030000000100L, false, 0, 0x0L), + 4 + ), + 687865 + ); + + // gentest-2030 + assertEqual( + perft( + Board(0x23940000000L, 0x810000000000L, 0x4000000000400500L, 0x1000000000020L, 0x0L, 0x10000000800000L, + 0x803940c00420L, 0x4011030000000100L, true, 0, 0x0L), + 4 + ), + 386150 + ); + + // gentest-2031 + assertEqual( + perft( + Board(0x23940000000L, 0x810000000000L, 0x4000000000400500L, 0x8000000000080L, 0x0L, 0x10000000800000L, + 0x803940c00480L, 0x4018030000000100L, false, 0, 0x0L), + 4 + ), + 413438 + ); + + // gentest-2032 + assertEqual( + perft( + Board(0x23940000000L, 0x800002000000L, 0x4000000000400500L, 0x2000000000040L, 0x0L, 0x10000000800000L, + 0x803940c00440L, 0x4012020002000100L, true, 0, 0x0L), + 4 + ), + 391718 + ); + + // gentest-2033 + assertEqual( + perft( + Board(0x23940000000L, 0x800002000000L, 0x4000000001400002L, 0x2000000000020L, 0x0L, 0x10000000800000L, + 0x803941c00020L, 0x4012020002000002L, false, 0, 0x0L), + 4 + ), + 482185 + ); + + // gentest-2034 + assertEqual( + perft( + Board(0x23140000000L, 0x800800000000L, 0x4008000010400000L, 0x2000000000020L, 0x0L, 0x10000000800000L, + 0x8803140c00020L, 0x4012020810000000L, true, 0, 0x0L), + 4 + ), + 454097 + ); + + // gentest-2035 + assertEqual( + perft( + Board(0x23140000000L, 0x800000100000L, 0x4008000010000010L, 0x2000000000020L, 0x0L, 0x10000080000000L, + 0x88031c0000030L, 0x4012020010100000L, false, 0, 0x0L), + 4 + ), + 610325 + ); + + // gentest-2036 + assertEqual( + perft( + Board(0x122140000000L, 0x800000000400L, 0x4008000000004010L, 0x2000000000020L, 0x0L, + 0x10000080000000L, 0x89021c0000030L, 0x4012020000004400L, true, 0, 0x0L), + 4 + ), + 329426 + ); + + // gentest-2037 + assertEqual( + perft( + Board(0x122140000000L, 0x800000000400L, 0x4008000000800010L, 0x2000000000040L, 0x0L, + 0x10008000000000L, 0x890a140000050L, 0x4012020000800400L, false, 0, 0x0L), + 4 + ), + 227321 + ); + + // gentest-2038 + assertEqual( + perft( + Board(0x122140000000L, 0x800000010000L, 0x4008000000000030L, 0x2000000400000L, 0x0L, + 0x10008000000000L, 0x890a140400010L, 0x4012020000010020L, true, 0, 0x0L), + 4 + ), + 331186 + ); + + // gentest-2039 + assertEqual( + perft( + Board(0x122140000000L, 0x800000010000L, 0x4000040000000030L, 0x4000000000040L, 0x0L, + 0x10008000000000L, 0x94a140000050L, 0x4014020000010020L, false, 0, 0x0L), + 4 + ), + 460687 + ); + + // gentest-2040 + assertEqual( + perft( + Board(0x122140000000L, 0x800000010000L, 0x80040000004010L, 0x4000000000080L, 0x0L, 0x10008000000000L, + 0x94a140000090L, 0x94020000014000L, true, 0, 0x0L), + 4 + ), + 461486 + ); + + // gentest-2041 + assertEqual( + perft( + Board(0x122140000000L, 0x800000010000L, 0x82000000004010L, 0x80000400L, 0x0L, 0x10008000000000L, + 0x290a1c0000010L, 0x90020000014400L, false, 0, 0x0L), + 4 + ), + 460079 + ); + + // gentest-2042 + assertEqual( + perft( + Board(0x102340000000L, 0x800000010000L, 0x80040000004010L, 0x80000200L, 0x0L, 0x10008000000000L, + 0x94a1c0000010L, 0x90000200014200L, true, 0, 0x0L), + 4 + ), + 286212 + ); + + // gentest-2043 + assertEqual( + perft( + Board(0x102340000000L, 0x800000010000L, 0x80040002004000L, 0x8200L, 0x0L, 0x208000000000L, + 0x94a142008000L, 0x80200200014200L, false, 0, 0x0L), + 4 + ), + 337897 + ); + + // gentest-2044 + assertEqual( + perft( + Board(0x102340000000L, 0x800000010000L, 0x80040012000000L, 0x80008000L, 0x0L, 0x208000000000L, + 0x94a1c2000000L, 0x80200210018000L, true, 0, 0x0L), + 4 + ), + 221246 + ); + + // gentest-2045 + assertEqual( + perft( + Board(0x102340000000L, 0x4000000000010000L, 0x40012000000L, 0x8000L, 0x0L, 0x208000000000L, + 0x400014a142008000L, 0x200210010000L, false, 0, 0x0L), + 4 + ), + 32722 + ); + + // gentest-2046 + assertEqual( + perft( + Board(0x110240000000L, 0x4000000000010000L, 0x42002000000L, 0x8000L, 0x0L, 0x40008000000000L, + 0x4000158042008000L, 0x40002200010000L, true, 0, 0x0L), + 4 + ), + 222463 + ); + + // gentest-2047 + assertEqual( + perft( + Board(0x112200000000L, 0x4000000000000002L, 0x12000000L, 0x8000L, 0x0L, 0x40008000000000L, + 0x400011a012008000L, 0x40000200000002L, false, 0, 0x0L), + 4 + ), + 52174 + ); + + // gentest-2048 + assertEqual( + perft( + Board(0x112200000000L, 0x10000L, 0x12000000L, 0x800000L, 0x0L, 0x4000008000000000L, 0x11a012800000L, + 0x4000000200010000L, true, 0, 0x0L), + 4 + ), + 53603 + ); + + // gentest-2049 + assertEqual( + perft( + Board(0x112200000000L, 0x4000000L, 0x80010000000L, 0x400000L, 0x0L, 0x4000008000000000L, + 0x19a010400000L, 0x4000000204000000L, false, 0, 0x0L), + 4 + ), + 28998 + ); + + // gentest-2050 + assertEqual( + perft( + Board(0x112200000000L, 0x200L, 0x80000000080L, 0x400000L, 0x0L, 0x80008000000000L, 0x19a000400080L, + 0x80000200000200L, true, 0, 0x0L), + 4 + ), + 62510 + ); + + // gentest-2051 + assertEqual( + perft( + Board(0x112200000000L, 0x200L, 0x1000080000000000L, 0x400000L, 0x0L, 0x8000008000000000L, + 0x100019a000400000L, 0x8000000200000200L, false, 0, 0x0L), + 4 + ), + 51134 + ); + + // gentest-2052 + assertEqual( + perft( + Board(0x112200000000L, 0x400000000L, 0x1000080000000000L, 0x400000000000L, 0x0L, 0x8000008000000000L, + 0x100059a000000000L, 0x8000000600000000L, true, 0, 0x0L), + 4 + ), + 60000 + ); + + // gentest-2053 + assertEqual( + perft( + Board(0x102200000000L, 0x10000000000L, 0x1000080000000000L, 0x400000000000L, 0x0L, + 0x8000008000000000L, 0x100058a000000000L, 0x8000010200000000L, false, 0, 0x0L), + 4 + ), + 30524 + ); + + // gentest-2054 + assertEqual( + perft( + Board(0x102200000000L, 0x20000L, 0x1000000000008000L, 0x400000000000L, 0x0L, 0x8000008000000000L, + 0x100050a000008000L, 0x8000000200020000L, true, 0, 0x0L), + 4 + ), + 35260 + ); + + // gentest-2055 + assertEqual( + perft( + Board(0x102200000000L, 0x4L, 0x1000001000000000L, 0x400000000000L, 0x0L, 0x8000008000000000L, + 0x100050b000000000L, 0x8000000200000004L, false, 0, 0x0L), + 4 + ), + 4690 + ); + + // gentest-2056 + assertEqual( + perft( + Board(0x102200000000L, 0x4L, 0x1000001000000000L, 0x200000000000L, 0x0L, 0x4000008000000000L, + 0x100030b000000000L, 0x4000000200000004L, true, 0, 0x0L), + 4 + ), + 31710 + ); + + // gentest-2057 + assertEqual( + perft( + Board(0x102200000000L, 0x4L, 0x24000000000000L, 0x200000000000L, 0x0L, 0x80008000000000L, + 0x2430a000000000L, 0x80000200000004L, false, 0, 0x0L), + 4 + ), + 18017 + ); + + // gentest-2058 + assertEqual( + perft( + Board(0x102002000000L, 0x4L, 0x24000000000000L, 0x800000000000L, 0x0L, 0x40008000000000L, + 0x2490a000000000L, 0x40000002000004L, true, 0, 0x0L), + 4 + ), + 17067 + ); + + // gentest-2059 + assertEqual( + perft( + Board(0x102002000000L, 0x4L, 0x20080000000000L, 0x800000000000L, 0x0L, 0x2000000080000000L, + 0x20982080000000L, 0x2000000002000004L, false, 0, 0x0L), + 4 + ), + 3549 + ); + + // gentest-2060 + assertEqual( + perft( + Board(0x102002000000L, 0x80000L, 0x20080000000000L, 0x800000000000L, 0x0L, 0x40008000000000L, + 0x2098a000000000L, 0x40000002080000L, true, 0, 0x0L), + 4 + ), + 23407 + ); + + // gentest-2061 + assertEqual( + perft( + Board(0x102002000000L, 0x400000000L, 0x220000000000000L, 0x800000000000L, 0x0L, 0x40004000000000L, + 0x220906000000000L, 0x40000402000000L, false, 0, 0x0L), + 4 + ), + 38608 + ); + + // gentest-2062 + assertEqual( + perft( + Board(0x102002000000L, 0x4L, 0x20000020000000L, 0x800000000000L, 0x0L, 0x40004000000000L, + 0x20906020000000L, 0x40000002000004L, true, 0, 0x0L), + 4 + ), + 25013 + ); + + // gentest-2063 + assertEqual( + perft( + Board(0x10002002000000L, 0x4L, 0x20000020000000L, 0x800000000000L, 0x0L, 0x2000000080000000L, + 0x308020a0000000L, 0x2000000002000004L, false, 0, 0x0L), + 4 + ), + 24181 + ); + + // gentest-2064 + assertEqual( + perft( + Board(0x2002000000L, 0x80000L, 0x100020000000L, 0x800000000000L, 0x0L, 0x10000080000000L, + 0x9020a0000000L, 0x10000002080000L, true, 0, 0x0L), + 4 + ), + 84142 + ); + + // gentest-2065 + assertEqual( + perft( + Board(0x2002000000L, 0x1000000000L, 0x100020000000L, 0x800000000000L, 0x0L, 0x10008000000000L, + 0x90a020000000L, 0x10001002000000L, false, 0, 0x0L), + 4 + ), + 80659 + ); + + // gentest-2066 + assertEqual( + perft( + Board(0x2000020000L, 0x40000000000L, 0x100000000004L, 0x800000000000L, 0x0L, 0x10008000000000L, + 0x90a000000004L, 0x10040000020000L, true, 0, 0x0L), + 4 + ), + 56313 + ); + + // gentest-2067 + assertEqual( + perft( + Board(0x2000020000L, 0x1000000000000L, 0x20000000100000L, 0x800000000000L, 0x0L, 0x10008000000000L, + 0x2080a000100000L, 0x11000000020000L, false, 0, 0x0L), + 4 + ), + 59955 + ); + + // gentest-2068 + assertEqual( + perft( + Board(0x2000020000L, 0x1000000000L, 0x20000000100000L, 0x800000000000L, 0x0L, 0x10000080000000L, + 0x20802080100000L, 0x10001000020000L, true, 0, 0x0L), + 4 + ), + 120796 + ); + + // gentest-2069 + assertEqual( + perft( + Board(0x2000000200L, 0x1000000000L, 0x4001000000000000L, 0x800000000000L, 0x0L, 0x10000080000000L, + 0x4001802080000000L, 0x10001000000200L, false, 0, 0x0L), + 4 + ), + 169786 + ); + + // gentest-2070 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2071 + assertEqual( + perft( + Board(0xff00002000df00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x2000ffefL, 0xbfff800000000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 245210 + ); + + // gentest-2072 + assertEqual( + perft( + Board(0xaf50002000df00L, 0x200800000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x2080ffafL, 0xbfafd00000000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 482203 + ); + + // gentest-2073 + assertEqual( + perft( + Board(0xaf500062009d00L, 0x200800000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x10000000000008L, 0x1000000000002000L, 0x6280bdafL, 0xb7bfd00000000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 466232 + ); + + // gentest-2074 + assertEqual( + perft( + Board(0xa7580062009d00L, 0x200800000800002L, 0x2400000000010020L, 0x4100000000000081L, + 0x10000000000008L, 0x1000000000002000L, 0x6281bdabL, 0x77b7d80000000000L, true, 0, + 0x100000000000000L), + 4 + ), + 440761 + ); + + // gentest-2075 + assertEqual( + perft( + Board(0xa758204a009500L, 0x8800000800002L, 0x2400000000010020L, 0x4100000000000081L, + 0x10000000000008L, 0x1000000000002000L, 0x204a81b5abL, 0x75bfd80000000000L, false, 0, + 0x100000000000000L), + 4 + ), + 608308 + ); + + // gentest-2076 + assertEqual( + perft( + Board(0xa758004a009500L, 0x48000000800002L, 0x2400000000010020L, 0x4100000000000081L, + 0x10000000000004L, 0x1000000000002000L, 0x4a81b5a7L, 0x75ff580000000000L, true, 0, + 0x100000000000000L), + 4 + ), + 596516 + ); + + // gentest-2077 + assertEqual( + perft( + Board(0xa758004a009500L, 0x48004000000002L, 0x2400000000010020L, 0x8100000000000081L, + 0x10000000100000L, 0x1000000000002000L, 0x404a11b5a3L, 0xb5ff580000000000L, false, 0, + 0x100000000000000L), + 4 + ), + 811256 + ); + + // gentest-2078 + assertEqual( + perft( + Board(0xa35c004a009500L, 0x48004000040000L, 0x2400000000010020L, 0x8100000000000081L, + 0x10000000100000L, 0x800000000002000L, 0x404a15b5a1L, 0xadfb5c0000000000L, true, 0, 0x0L), + 4 + ), + 1045184 + ); + + // gentest-2079 + assertEqual( + perft( + Board(0xa35c004a009500L, 0x8008010040000L, 0x2400000000010020L, 0x8100000000000082L, + 0x10000000100000L, 0x800000000002000L, 0x5a15b5a2L, 0xadbb5c8000000000L, false, 0, 0x0L), + 4 + ), + 1329748 + ); + + // gentest-2080 + assertEqual( + perft( + Board(0x23dc004a009500L, 0x8000020040800L, 0x2400000000010020L, 0x8100000000000082L, + 0x10000000100000L, 0x800000000002000L, 0x4a15bda2L, 0xad3bdc0020000000L, true, 0, 0x0L), + 4 + ), + 1369731 + ); + + // gentest-2081 + assertEqual( + perft( + Board(0x23d80648009500L, 0x8000020040800L, 0x2400000000010020L, 0x8100000000000082L, + 0x10000000100000L, 0x800000000000010L, 0x248159db2L, 0xad3bd80420000000L, false, 0, 0x0L), + 4 + ), + 1298288 + ); + + // gentest-2082 + assertEqual( + perft( + Board(0x22d80748801500L, 0x20020040800L, 0x2400000000010020L, 0x8100000000000082L, 0x10000000100000L, + 0x800000000000010L, 0x248951db2L, 0xad32da0520000000L, true, 0, 0x0L), + 4 + ), + 1492559 + ); + + // gentest-2083 + assertEqual( + perft( + Board(0x22d80748801500L, 0x20020040800L, 0x2400000000010020L, 0x8000010000000088L, 0x10000000200000L, + 0x800000000000010L, 0x248a51db8L, 0xac32db0520000000L, false, 0, 0x0L), + 4 + ), + 1408524 + ); + + // gentest-2084 + assertEqual( + perft( + Board(0x22c817c8001500L, 0x20020040800L, 0x2400000000010020L, 0x8100000000000088L, 0x10000000200000L, + 0x800000000000010L, 0x2c8251db8L, 0xad32ca1520000000L, true, 0, 0x0L), + 4 + ), + 2263188 + ); + + // gentest-2085 + assertEqual( + perft( + Board(0x22c83788001500L, 0x20020040800L, 0x2000000000000220L, 0x8100000000000088L, 0x10000000200000L, + 0x800000000000010L, 0x2288241fb8L, 0xa932ca1520000000L, false, 0, 0x0L), + 4 + ), + 2380512 + ); + + // gentest-2086 + assertEqual( + perft( + Board(0x22c83788001500L, 0x20000040800L, 0x2000000000000220L, 0x4001000000000088L, 0x10000020000000L, + 0x800000000000010L, 0x22a8041fb8L, 0x6833ca1500000000L, true, 0, 0x0L), + 4 + ), + 1664908 + ); + + // gentest-2087 + assertEqual( + perft( + Board(0x22c83708011400L, 0x20000040800L, 0x2000000000000220L, 0x4001000080000008L, 0x20000000L, + 0x800000000000010L, 0x22a8051e38L, 0x6823ca1500000000L, false, 0, 0x0L), + 4 + ), + 1270739 + ); + + // gentest-2088 + assertEqual( + perft( + Board(0x22c82728011400L, 0x20000040800L, 0x2000000000000220L, 0x41008000000008L, 0x0L, + 0x800000000000010L, 0xa208051e38L, 0x2863ca0520000000L, true, 0, 0x0L), + 4 + ), + 578964 + ); + + // gentest-2089 + assertEqual( + perft( + Board(0x22c02f28011400L, 0x20004040000L, 0x2000000000000220L, 0x41008000000002L, 0x0L, + 0x800000000000010L, 0xa20c051632L, 0x2863c20d20000000L, false, 0, 0x0L), + 4 + ), + 595724 + ); + + // gentest-2090 + assertEqual( + perft( + Board(0x22c02f28011400L, 0x20004040000L, 0x2000000000000021L, 0x4001008000000002L, 0x0L, + 0x1000000000000010L, 0xa20c051433L, 0x7023c20d20000000L, true, 0, 0x0L), + 4 + ), + 614621 + ); + + // gentest-2091 + assertEqual( + perft( + Board(0x22006f20011400L, 0x20004040000L, 0x2000000000000021L, 0x4001800000000002L, 0x0L, + 0x1000000000000010L, 0x802604051433L, 0x7023024920000000L, false, 0, 0x0L), + 4 + ), + 859943 + ); + + // gentest-2092 + assertEqual( + perft( + Board(0x22006f20011400L, 0x400000000140000L, 0x10000000000021L, 0x4001800000000002L, 0x0L, + 0x1000000000000010L, 0x802600151433L, 0x5433004920000000L, true, 0, 0x0L), + 4 + ), + 749768 + ); + + // gentest-2093 + assertEqual( + perft( + Board(0x22204f20011400L, 0x400000000140000L, 0x80000000021L, 0x4001800000000004L, 0x0L, + 0x1000000000000010L, 0xa00600151435L, 0x5423084920000000L, false, 0, 0x0L), + 4 + ), + 524216 + ); + + // gentest-2094 + assertEqual( + perft( + Board(0x22204f20011400L, 0x400000000140000L, 0x4000000000021L, 0x4100000080000004L, 0x0L, + 0x1000000000000010L, 0x200680151435L, 0x5526004920000000L, true, 0, 0x0L), + 4 + ), + 635878 + ); + + // gentest-2095 + assertEqual( + perft( + Board(0x20244b20011400L, 0x400000000140000L, 0x4000000000220L, 0x4100000080000004L, 0x0L, + 0x1000000000000010L, 0x200280151634L, 0x5524044920000000L, false, 0, 0x0L), + 4 + ), + 745578 + ); + + // gentest-2096 + assertEqual( + perft( + Board(0x20244308111400L, 0x400000000040000L, 0x4000000000220L, 0xc100000000000004L, 0x0L, + 0x1000000000000010L, 0x8000200200051634L, 0x5524044108100000L, true, 0, 0x0L), + 4 + ), + 352468 + ); + + // gentest-2097 + assertEqual( + perft( + Board(0x20244308111400L, 0x400000000000100L, 0x1000000220L, 0x4100000080000004L, 0x0L, + 0x1000000000000010L, 0x200280011734L, 0x5520045108100000L, false, 0, 0x0L), + 4 + ), + 458078 + ); + + // gentest-2098 + assertEqual( + perft( + Board(0x20240289151000L, 0x400000000000100L, 0x1000000220L, 0x4100000000000004L, 0x0L, + 0x1000000000000010L, 0x200200051334L, 0x5520041089100000L, true, 0, 0x0L), + 4 + ), + 178707 + ); + + // gentest-2099 + assertEqual( + perft( + Board(0x20240289151000L, 0x400000000000100L, 0x1000000280L, 0x4100000000000004L, 0x0L, + 0x8000000000010L, 0x200200051394L, 0x4528041089100000L, false, 0, 0x0L), + 4 + ), + 329478 + ); + + // gentest-2100 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2101 + assertEqual( + perft( + Board(0xbf00480000f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80000f7ffL, 0xffbf004000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 369350 + ); + + // gentest-2102 + assertEqual( + perft( + Board(0x9f00680000f700L, 0x4200000000040040L, 0x400800000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80004f7fdL, 0xdf9f806000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 319039 + ); + + // gentest-2103 + assertEqual( + perft( + Board(0x8f00780001f600L, 0x4200000000040040L, 0x400800000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x80005fef5L, 0xdf8f807000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 450755 + ); + + // gentest-2104 + assertEqual( + perft( + Board(0x89027c0001f600L, 0x4200000000000042L, 0x400800000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x80001fef7L, 0xdf89827400000000L, true, 42, + 0x8100000000000081L), + 4 + ), + 476024 + ); + + // gentest-2105 + assertEqual( + perft( + Board(0x89027c4001b600L, 0x4000010000000042L, 0x400800000000024L, 0x8100000000000081L, + 0x800000100000000L, 0x1000000000000010L, 0x94001b6f7L, 0xdd89837400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 584660 + ); + + // gentest-2106 + assertEqual( + perft( + Board(0x89003d4001b600L, 0x4000010000000042L, 0x400800000000024L, 0x8100000000000081L, + 0x800000000000000L, 0x1000000000000010L, 0x280001b6f7L, 0xdd89811540000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 517533 + ); + + // gentest-2107 + assertEqual( + perft( + Board(0x89003d4104b200L, 0x4000010000000042L, 0x400800000000024L, 0x8200000000000081L, + 0x800000000000000L, 0x1000000000000010L, 0x280104b2f7L, 0xde89811540000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 599525 + ); + + // gentest-2108 + assertEqual( + perft( + Board(0x81281d4104b200L, 0x4000010000000042L, 0x400800000000024L, 0x8000000000020081L, + 0x800000000000000L, 0x1000000000000010L, 0x20080104b2f7L, 0xdc81891540020000L, true, 0, + 0x8000000000000081L), + 4 + ), + 569488 + ); + + // gentest-2109 + assertEqual( + perft( + Board(0x81281d4104b200L, 0x4000010000000042L, 0x8800000000024L, 0x8000000000030080L, + 0x800000000000000L, 0x1000000000000010L, 0x20080105b2f6L, 0xd889891540020000L, false, 0, + 0x8000000000000080L), + 4 + ), + 690708 + ); + + // gentest-2110 + assertEqual( + perft( + Board(0x81281d4104b200L, 0x4000010000000840L, 0x440000000000024L, 0x8000000000030080L, + 0x800000000000000L, 0x1000000000000010L, 0x20080105baf4L, 0xdcc1091540020000L, true, 0, + 0x8000000000000080L), + 4 + ), + 564894 + ); + + // gentest-2111 + assertEqual( + perft( + Board(0x81081d4500b200L, 0x4000010000000840L, 0x440000000004004L, 0x8000000000030080L, + 0x200000000000L, 0x1000000000000010L, 0x80501fad4L, 0xd4c1291540020000L, false, 0, + 0x8000000000000080L), + 4 + ), + 1089112 + ); + + // gentest-2112 + assertEqual( + perft( + Board(0x80091d45209200L, 0x4200000000000840L, 0x440000000004004L, 0x8000000000030080L, + 0x200000000000L, 0x1000000000000010L, 0x80521dad4L, 0xd6c0291540020000L, true, 0, + 0x8000000000000080L), + 4 + ), + 631131 + ); + + // gentest-2113 + assertEqual( + perft( + Board(0x80090d55209200L, 0x4200000000002800L, 0x440000000004004L, 0x8000000000030080L, + 0x200000000000L, 0x1000000000000010L, 0x80521fa94L, 0xd6c0290550020000L, false, 0, + 0x8000000000000080L), + 4 + ), + 1396715 + ); + + // gentest-2114 + assertEqual( + perft( + Board(0x80090d45209000L, 0x4200000010002000L, 0x440000000004004L, 0x8000000000010480L, + 0x200000000000L, 0x1000000000000010L, 0x81521f094L, 0xd6c0290540000400L, true, 0, + 0x8000000000000080L), + 4 + ), + 1784793 + ); + + // gentest-2115 + assertEqual( + perft( + Board(0x80010d45209000L, 0x4200080000002000L, 0x440000000004004L, 0x8000000000010440L, + 0x200000000000L, 0x2000000000000010L, 0x8080521f054L, 0xe6c0210540000400L, false, 0, 0x0L), + 4 + ), + 1698679 + ); + + // gentest-2116 + assertEqual( + perft( + Board(0x80010d45308000L, 0x4200080000002000L, 0x400000008004004L, 0x8000000000010440L, 0x1L, + 0x2000000000000010L, 0x8080531e054L, 0xe680010548000401L, true, 0, 0x0L), + 4 + ), + 1022724 + ); + + // gentest-2117 + assertEqual( + perft( + Board(0x80010d41308000L, 0x4200080000002000L, 0x400000008000024L, 0x8000000004080040L, 0x1L, + 0x2000000000000010L, 0x8080138a074L, 0xe68001054c000001L, false, 0, 0x0L), + 4 + ), + 1119115 + ); + + // gentest-2118 + assertEqual( + perft( + Board(0x80010d41308000L, 0x4408000000002000L, 0x8000024L, 0x8000000004080040L, 0x200L, + 0x2000000000000010L, 0x40000080138a074L, 0xe08801054c000200L, true, 0, 0x0L), + 4 + ), + 1275937 + ); + + // gentest-2119 + assertEqual( + perft( + Board(0x80010d41308000L, 0x4008000200002000L, 0x8000024L, 0x80000000000c0040L, 0x200L, + 0x2000000000000010L, 0xa0138a074L, 0xe088010548040200L, false, 0, 0x0L), + 4 + ), + 1164215 + ); + + // gentest-2120 + assertEqual( + perft( + Board(0x80010d41008000L, 0x4000001200002000L, 0x100024L, 0x80000000000c0040L, 0x200L, + 0x2000000000000010L, 0xa4108a074L, 0xe080011500140200L, true, 0, 0x0L), + 4 + ), + 1238723 + ); + + // gentest-2121 + assertEqual( + perft( + Board(0x80010d41008000L, 0x4000001200002000L, 0x824L, 0x80000000000c0080L, 0x200L, + 0x2000000000001000L, 0xa4108b0a4L, 0xe080011500040a00L, false, 0, 0x0L), + 4 + ), + 814896 + ); + + // gentest-2122 + assertEqual( + perft( + Board(0x80010d41008000L, 0x4000001200002000L, 0x4004L, 0x80000000000c0080L, 0x200L, 0x40000000001000L, + 0xa4108f080L, 0xc0c0011500040204L, true, 0, 0x0L), + 4 + ), + 164412 + ); + + // gentest-2123 + assertEqual( + perft( + Board(0x80010d41008000L, 0x201200800000L, 0x4004L, 0x80000000000c0080L, 0x200L, 0x40000000000008L, + 0xa4188c088L, 0x80c0211500040204L, false, 0, 0x0L), + 4 + ), + 1413829 + ); + + // gentest-2124 + assertEqual( + perft( + Board(0x80010d41008000L, 0x200204800000L, 0x10000004L, 0x80000000000c0080L, 0x2L, 0x40000000000008L, + 0xa51888088L, 0x80c0210504040006L, true, 0, 0x0L), + 4 + ), + 1357320 + ); + + // gentest-2125 + assertEqual( + perft( + Board(0x80014d01008000L, 0x200204002000L, 0x10000004L, 0x8000000000090080L, 0x2L, 0x40000000000008L, + 0x4a1108a088L, 0x80c0210504010006L, false, 0, 0x0L), + 4 + ), + 1235222 + ); + + // gentest-2126 + assertEqual( + perft( + Board(0x80014d01008000L, 0x200204002000L, 0x80004L, 0x400000000010080L, 0x0L, 0x40000000000008L, + 0x4a0108a088L, 0x4c0210504010004L, true, 0, 0x0L), + 4 + ), + 1248532 + ); + + // gentest-2127 + assertEqual( + perft( + Board(0x80014d01800000L, 0x20000c002000L, 0x80004L, 0x400000000020080L, 0x0L, 0x40000000000008L, + 0x4809882088L, 0x4c0210504020004L, false, 0, 0x0L), + 4 + ), + 1499634 + ); + + // gentest-2128 + assertEqual( + perft( + Board(0x80014d01800000L, 0x200008002800L, 0x400000000004L, 0x400000200000080L, 0x0L, + 0x40000000000008L, 0x404809802088L, 0x4c0210700000804L, true, 0, 0x0L), + 4 + ), + 1202770 + ); + + // gentest-2129 + assertEqual( + perft( + Board(0x80014d01800000L, 0x200008002800L, 0x400000000004L, 0x400000200000020L, 0x0L, + 0x4000000000000010L, 0x404809802030L, 0x4480210700000804L, false, 0, 0x0L), + 4 + ), + 915410 + ); + + // gentest-2130 + assertEqual( + perft( + Board(0x14d01800000L, 0x200008002800L, 0x80000000000200L, 0x400000200000020L, 0x0L, 0x20000000000010L, + 0x80004809802030L, 0x420210700000a00L, true, 0, 0x0L), + 4 + ), + 901042 + ); + + // gentest-2131 + assertEqual( + perft( + Board(0x14d01800000L, 0x20000c040000L, 0x80000000000200L, 0x400000200000020L, 0x0L, 0x20000000000010L, + 0x80004809840030L, 0x420210704000200L, false, 0, 0x0L), + 4 + ), + 875512 + ); + + // gentest-2132 + assertEqual( + perft( + Board(0x14d01800000L, 0x200004041000L, 0x80000000000200L, 0x4000200000020L, 0x0L, 0x1000000000000010L, + 0x80004801841030L, 0x1004210704000200L, true, 0, 0x0L), + 4 + ), + 1034595 + ); + + // gentest-2133 + assertEqual( + perft( + Board(0x14d01800000L, 0x200000041800L, 0x80000000000200L, 0x4000200000020L, 0x0L, 0x1000000000000010L, + 0x80004801841030L, 0x1004210700000a00L, false, 0, 0x0L), + 4 + ), + 1084586 + ); + + // gentest-2134 + assertEqual( + perft( + Board(0x14d01800000L, 0x10460000L, 0x80000000000200L, 0x4000200000020L, 0x0L, 0x1000000000000010L, + 0x80004801c40030L, 0x1004010710020200L, true, 0, 0x0L), + 4 + ), + 778833 + ); + + // gentest-2135 + assertEqual( + perft( + Board(0x94501800000L, 0x210420000L, 0x80000000000200L, 0x1000000000020L, 0x0L, 0x1000000000000010L, + 0x80084201c00030L, 0x1001010510020200L, false, 0, 0x0L), + 4 + ), + 631753 + ); + + // gentest-2136 + assertEqual( + perft( + Board(0x90501800000L, 0x4000410800L, 0x80000000000200L, 0x1000000000020L, 0x0L, 0x1000000000000010L, + 0x80080001c10030L, 0x1001014500000a00L, true, 0, 0x0L), + 4 + ), + 702236 + ); + + // gentest-2137 + assertEqual( + perft( + Board(0x90501800000L, 0x4000010082L, 0x400000000200L, 0x1000000000020L, 0x0L, 0x1000000000000010L, + 0x4800018100b0L, 0x1001014500000202L, false, 0, 0x0L), + 4 + ), + 63219 + ); + + // gentest-2138 + assertEqual( + perft( + Board(0x90501800000L, 0x20000000010082L, 0x400000000200L, 0x10000000002000L, 0x0L, + 0x1000000000000010L, 0x480001812090L, 0x1030010500000202L, true, 0, 0x0L), + 4 + ), + 67245 + ); + + // gentest-2139 + assertEqual( + perft( + Board(0x90501800000L, 0x10082L, 0x20200000000000L, 0x10000000002000L, 0x0L, 0x1000000000000020L, + 0x200800018120a0L, 0x1010210500000002L, false, 0, 0x0L), + 4 + ), + 78336 + ); + + // gentest-2140 + assertEqual( + perft( + Board(0x8010501800000L, 0x10082L, 0x200000000000L, 0x20000000002000L, 0x0L, 0x2000000000000020L, + 0x80000018120a0L, 0x2020210500000002L, true, 0, 0x0L), + 4 + ), + 190530 + ); + + // gentest-2141 + assertEqual( + perft( + Board(0x10501800000L, 0x2000000050080L, 0x200000000000L, 0x20000000002000L, 0x0L, 0x2000000000000020L, + 0x20000018120a0L, 0x2020210500040000L, false, 0, 0x0L), + 4 + ), + 320677 + ); + + // gentest-2142 + assertEqual( + perft( + Board(0x10581000000L, 0x2000020010080L, 0x200000000000L, 0x20000000002000L, 0x0L, 0x2000000000000020L, + 0x20000810120a0L, 0x2020210520000000L, true, 0, 0x0L), + 4 + ), + 400317 + ); + + // gentest-2143 + assertEqual( + perft( + Board(0x10501000000L, 0x2008000010080L, 0x200000000000L, 0x20000000200000L, 0x0L, 0x2000000000000020L, + 0x20000012100a0L, 0x2020218500000000L, false, 0, 0x0L), + 4 + ), + 246524 + ); + + // gentest-2144 + assertEqual( + perft( + Board(0x10501000000L, 0x2000000410080L, 0x200000000000L, 0x4000000200000L, 0x0L, 0x2000000000001000L, + 0x2000001211080L, 0x2004210500400000L, true, 0, 0x0L), + 4 + ), + 77964 + ); + + // gentest-2145 + assertEqual( + perft( + Board(0x10501000000L, 0x80010010080L, 0x200000000000L, 0x4000000200000L, 0x0L, 0x2000000000100000L, + 0x80001310080L, 0x2004210510000000L, false, 0, 0x0L), + 4 + ), + 240078 + ); + + // gentest-2146 + assertEqual( + perft( + Board(0x10501000000L, 0x400000000050080L, 0x200000000000L, 0x4000000200000L, 0x0L, + 0x4000000000100000L, 0x400000001310080L, 0x4004210500040000L, true, 0, 0x0L), + 4 + ), + 322627 + ); + + // gentest-2147 + assertEqual( + perft( + Board(0x10501000000L, 0x400000000010082L, 0x200000000000L, 0x4000000200000L, 0x0L, + 0x4000000000100000L, 0x400000001310080L, 0x4004210500000002L, false, 0, 0x0L), + 4 + ), + 311019 + ); + + // gentest-2148 + assertEqual( + perft( + Board(0x10501000000L, 0x400000000010082L, 0x8000000000000000L, 0x4000000000020L, 0x0L, + 0x40000000100000L, 0x4000000011100a0L, 0x8044010500000002L, true, 0, 0x0L), + 4 + ), + 189775 + ); + + // gentest-2149 + assertEqual( + perft( + Board(0x10501000000L, 0x400000000010082L, 0x8000000000000000L, 0x2004000000000000L, 0x0L, + 0x400000100000L, 0x2400000001110080L, 0x8004410500000002L, false, 0, 0x0L), + 4 + ), + 331380 + ); + + // gentest-2150 + assertEqual( + perft( + Board(0x10105000000L, 0x400000000010082L, 0x0L, 0x8002000000000000L, 0x0L, 0x400000100000L, + 0x8400000001110080L, 0x2410104000002L, true, 0, 0x0L), + 4 + ), + 233687 + ); + + // gentest-2151 + assertEqual( + perft( + Board(0x10105000000L, 0x400000200400002L, 0x0L, 0x8000000000000000L, 0x0L, 0x400000100000L, + 0x8400000201500000L, 0x410104000002L, false, 0, 0x0L), + 4 + ), + 78602 + ); + + // gentest-2152 + assertEqual( + perft( + Board(0x10105000000L, 0x400000200440000L, 0x0L, 0x8000000000000000L, 0x0L, 0x40000008000000L, + 0x8400000209400000L, 0x40010104040000L, true, 0, 0x0L), + 4 + ), + 97722 + ); + + // gentest-2153 + assertEqual( + perft( + Board(0x10105000000L, 0x400000000450000L, 0x0L, 0x8000000000000000L, 0x0L, 0x20000400000000L, + 0x8400000401410000L, 0x20010104040000L, false, 0, 0x0L), + 4 + ), + 92282 + ); + + // gentest-2154 + assertEqual( + perft( + Board(0x10101040000L, 0x400000000410008L, 0x0L, 0x8000000000000000L, 0x0L, 0x20040000000000L, + 0x8400040001410000L, 0x20010100040008L, true, 0, 0x0L), + 4 + ), + 74609 + ); + + // gentest-2155 + assertEqual( + perft( + Board(0x10101000400L, 0x400008000010008L, 0x0L, 0x1000000000000000L, 0x0L, 0x20040000000000L, + 0x1400048001010000L, 0x20010100000408L, false, 0, 0x0L), + 4 + ), + 72398 + ); + + // gentest-2156 + assertEqual( + perft( + Board(0x10101000000L, 0x400008000110000L, 0x0L, 0x1000000000000004L, 0x0L, 0x20020000000000L, + 0x1400028001010000L, 0x20010100100004L, true, 0, 0x0L), + 4 + ), + 224581 + ); + + // gentest-2157 + assertEqual( + perft( + Board(0x10101000000L, 0x400200000010020L, 0x0L, 0x2000000000000004L, 0x0L, 0x20020000000000L, + 0x2400220001010000L, 0x20010100000024L, false, 0, 0x0L), + 4 + ), + 35034 + ); + + // gentest-2158 + assertEqual( + perft( + Board(0x10101000000L, 0x400200000010800L, 0x0L, 0x2000000000000004L, 0x0L, 0x2100000000000L, + 0x2402200001010000L, 0x110100000804L, true, 0, 0x0L), + 4 + ), + 287056 + ); + + // gentest-2159 + assertEqual( + perft( + Board(0x10101000000L, 0x400000040010800L, 0x0L, 0x8000000000000080L, 0x0L, 0x2100000000000L, + 0x8402000041010000L, 0x110100000880L, false, 0, 0x0L), + 4 + ), + 383097 + ); + + // gentest-2160 + assertEqual( + perft( + Board(0x10101000000L, 0x400000250000000L, 0x0L, 0x8000000000000008L, 0x0L, 0x2100000000000L, + 0x8402000241000000L, 0x110110000008L, true, 0, 0x0L), + 4 + ), + 513017 + ); + + // gentest-2161 + assertEqual( + perft( + Board(0x10101000000L, 0x80210002000L, 0x0L, 0x8000000000000020L, 0x0L, 0x2100000000000L, + 0x8002080201002000L, 0x110110000020L, false, 0, 0x0L), + 4 + ), + 516331 + ); + + // gentest-2162 + assertEqual( + perft( + Board(0x10101000000L, 0x80210002000L, 0x0L, 0x8000000000L, 0x0L, 0x2100000000000L, 0x2080201002000L, + 0x118110000000L, true, 0, 0x0L), + 4 + ), + 279530 + ); + + // gentest-2163 + assertEqual( + perft( + Board(0x10101000000L, 0x80200000008L, 0x0L, 0x8000000000L, 0x0L, 0x140000000000L, 0x40201000008L, + 0x198100000000L, false, 0, 0x0L), + 4 + ), + 88268 + ); + + // gentest-2164 + assertEqual( + perft( + Board(0x10101000000L, 0x1080000000008L, 0x0L, 0x8000000000L, 0x0L, 0x4000040000000000L, + 0x1040001000008L, 0x4000098100000000L, true, 0, 0x0L), + 4 + ), + 70294 + ); + + // gentest-2165 + assertEqual( + perft( + Board(0x10101000000L, 0x1000000000008L, 0x0L, 0x2000000000L, 0x0L, 0x4004000000000000L, + 0x5000001000008L, 0x4000012100000000L, false, 0, 0x0L), + 4 + ), + 55338 + ); + + // gentest-2166 + assertEqual( + perft( + Board(0x10101000000L, 0x1000000000008L, 0x0L, 0x20L, 0x0L, 0x4400000000000000L, 0x401000001000008L, + 0x4000010100000020L, true, 0, 0x0L), + 4 + ), + 39099 + ); + + // gentest-2167 + assertEqual( + perft( + Board(0x10101000000L, 0x40000002000L, 0x0L, 0x20L, 0x0L, 0x2400000000000000L, 0x400040001002000L, + 0x2000010100000020L, false, 0, 0x0L), + 4 + ), + 51490 + ); + + // gentest-2168 + assertEqual( + perft( + Board(0x10101000000L, 0x40000002000L, 0x0L, 0x4L, 0x0L, 0x24000000000000L, 0x4040001002000L, + 0x20010100000004L, true, 0, 0x0L), + 4 + ), + 62833 + ); + + // gentest-2169 + assertEqual( + perft( + Board(0x10101000000L, 0x40000000200L, 0x0L, 0x1L, 0x0L, 0x24000000000000L, 0x4040001000200L, + 0x20010100000001L, false, 0, 0x0L), + 4 + ), + 74388 + ); + + // gentest-2170 + assertEqual( + perft( + Board(0x10101000000L, 0x40000000200L, 0x0L, 0x10L, 0x0L, 0x220000000000000L, 0x200040001000200L, + 0x20010100000010L, true, 0, 0x0L), + 4 + ), + 75912 + ); + + // gentest-2171 + assertEqual( + perft( + Board(0x10101000000L, 0x40000000800L, 0x0L, 0x10L, 0x0L, 0x1200000000000000L, 0x200040001000800L, + 0x1000010100000010L, false, 0, 0x0L), + 4 + ), + 68703 + ); + + // gentest-2172 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000000800L, 0x0L, 0x10L, 0x0L, 0x1200000000000000L, 0x210000001000800L, + 0x1000010100000010L, true, 0, 0x0L), + 4 + ), + 70733 + ); + + // gentest-2173 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000000800L, 0x0L, 0x4L, 0x0L, 0x1200000000000000L, 0x210000001000800L, + 0x1000010100000004L, false, 0, 0x0L), + 4 + ), + 64826 + ); + + // gentest-2174 + assertEqual( + perft( + Board(0x10101000000L, 0x10000004000000L, 0x0L, 0x4L, 0x0L, 0x220000000000000L, 0x210000005000000L, + 0x20010100000004L, true, 0, 0x0L), + 4 + ), + 81777 + ); + + // gentest-2175 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000000200L, 0x0L, 0x80L, 0x0L, 0x22000000000000L, 0x12000001000200L, + 0x20010100000080L, false, 0, 0x0L), + 4 + ), + 87303 + ); + + // gentest-2176 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000000200L, 0x0L, 0x1000000000L, 0x0L, 0x21000000000000L, + 0x11000001000200L, 0x20011100000000L, true, 0, 0x0L), + 4 + ), + 59501 + ); + + // gentest-2177 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000000200L, 0x0L, 0x1000000000L, 0x0L, 0x1001000000000000L, + 0x11000001000200L, 0x1000011100000000L, false, 0, 0x0L), + 4 + ), + 47612 + ); + + // gentest-2178 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000000008L, 0x0L, 0x200000000000L, 0x0L, 0x1001000000000000L, + 0x11000001000008L, 0x1000210100000000L, true, 0, 0x0L), + 4 + ), + 47450 + ); + + // gentest-2179 + assertEqual( + perft( + Board(0x10101000000L, 0x10000010000000L, 0x0L, 0x40000000000L, 0x0L, 0x1001000000000000L, + 0x11000011000000L, 0x1000050100000000L, false, 0, 0x0L), + 4 + ), + 70053 + ); + + // gentest-2180 + assertEqual( + perft( + Board(0x10101000000L, 0x4000000010000000L, 0x0L, 0x800000000000L, 0x0L, 0x9000000000000L, + 0x4001000011000000L, 0x8810100000000L, true, 0, 0x0L), + 4 + ), + 42872 + ); + + // gentest-2181 + assertEqual( + perft( + Board(0x10101000000L, 0x4000000010000000L, 0x0L, 0x800000000000L, 0x0L, 0x801000000000000L, + 0x4001000011000000L, 0x800810100000000L, false, 0, 0x0L), + 4 + ), + 47870 + ); + + // gentest-2182 + assertEqual( + perft( + Board(0x10101000000L, 0x10000010000000L, 0x0L, 0x800000000000L, 0x0L, 0x9000000000000L, + 0x11000011000000L, 0x8810100000000L, true, 0, 0x0L), + 4 + ), + 70708 + ); + + // gentest-2183 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000020000L, 0x0L, 0x800000000000L, 0x0L, 0x1001000000000000L, + 0x11000001020000L, 0x1000810100000000L, false, 0, 0x0L), + 4 + ), + 67167 + ); + + // gentest-2184 + assertEqual( + perft( + Board(0x10101000000L, 0x10000000000001L, 0x0L, 0x80000000L, 0x0L, 0x1001000000000000L, + 0x11000001000001L, 0x1000010180000000L, true, 0, 0x0L), + 4 + ), + 51916 + ); + + // gentest-2185 + assertEqual( + perft( + Board(0x10100000000L, 0x800000000001L, 0x0L, 0x1000000L, 0x0L, 0x1001000000000000L, 0x1800000000001L, + 0x1000010101000000L, false, 0, 0x0L), + 4 + ), + 28218 + ); + + // gentest-2186 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2187 + assertEqual( + perft( + Board(0xfb04000010ef00L, 0x4200000000001002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10ffbfL, 0xfffb040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 290439 + ); + + // gentest-2188 + assertEqual( + perft( + Board(0xf906000010ef00L, 0x200200008000002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x810efbfL, 0xbff9260000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 614446 + ); + + // gentest-2189 + assertEqual( + perft( + Board(0xe916000118e600L, 0x200200008000002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x918e6bfL, 0xbfe9360000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 914323 + ); + + // gentest-2190 + assertEqual( + perft( + Board(0x6996010018e600L, 0x200200008000002L, 0x410000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10818e6bfL, 0x9f79b60000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1157191 + ); + + // gentest-2191 + assertEqual( + perft( + Board(0x6916810218e400L, 0x200200008000002L, 0x410000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10a18e4bfL, 0x9f79368000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1106461 + ); + + // gentest-2192 + assertEqual( + perft( + Board(0x291641a218c400L, 0x200200008000002L, 0x410000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x12a18c4bfL, 0x9f39364080000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1257007 + ); + + // gentest-2193 + assertEqual( + perft( + Board(0x291245a218c400L, 0x200200008000002L, 0x410000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000800L, 0x12a18ceabL, 0x9f39324480000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1398440 + ); + + // gentest-2194 + assertEqual( + perft( + Board(0x291245a218c400L, 0x200000008000002L, 0x2400000000000220L, 0x8100000000000081L, + 0x800008000000000L, 0x1000000000000800L, 0x812a18cea3L, 0xbf29124480000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 1503236 + ); + + // gentest-2195 + assertEqual( + perft( + Board(0x281344a218c400L, 0x200002000000002L, 0x2400000000000220L, 0x8100000000000081L, + 0x800008000000000L, 0x1000000000000800L, 0x2a02218cea3L, 0xbf28114480000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1457642 + ); + + // gentest-2196 + assertEqual( + perft( + Board(0x281344a218c400L, 0x200002000000002L, 0x440000000010020L, 0x8100000000000081L, + 0x10008000000000L, 0x1000000000000800L, 0x2a02219cca3L, 0x9778114480000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 1245972 + ); + + // gentest-2197 + assertEqual( + perft( + Board(0x281245a218c400L, 0x200002000000002L, 0x440000000010020L, 0x8100000000000081L, + 0x10400000000000L, 0x1000000000000800L, 0x42202219cca3L, 0x9778104580000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1664982 + ); + + // gentest-2198 + assertEqual( + perft( + Board(0x2812452a90c400L, 0x200002000000002L, 0x440000000010020L, 0x4100000000000081L, + 0x10400000000000L, 0x1000000000000800L, 0x42202a11cca3L, 0x5778104500800000L, true, 0, + 0x100000000000000L), + 4 + ), + 1689056 + ); + + // gentest-2199 + assertEqual( + perft( + Board(0x2812453a80c400L, 0x200080000000002L, 0x440000000010020L, 0x4100000000000081L, + 0x10400000000000L, 0x800000000000800L, 0x4a003a01cca3L, 0x4f78104500800000L, false, 0, 0x0L), + 4 + ), + 1824142 + ); + + // gentest-2200 + assertEqual( + perft( + Board(0x2802553e80c000L, 0x200080000000002L, 0x42000000010020L, 0x4100000000000081L, + 0x10400000000000L, 0x800000000000800L, 0x4a003e01c8a3L, 0x4b7a005500800000L, true, 0, 0x0L), + 4 + ), + 1593982 + ); + + // gentest-2201 + assertEqual( + perft( + Board(0x802553e80c000L, 0x200080000000002L, 0x40010000010020L, 0x4100000000000081L, 0x30000000000000L, + 0x800000000000010L, 0x200a003e01c0b3L, 0x4b58015500800000L, false, 0, 0x0L), + 4 + ), + 1138342 + ); + + // gentest-2202 + assertEqual( + perft( + Board(0x802553e80c000L, 0x600000000000002L, 0x2000010000010020L, 0x4100000000000081L, + 0x30000000000000L, 0x800000000000010L, 0x42002003e01c0b3L, 0x6b18015500800000L, true, 0, 0x0L), + 4 + ), + 1119801 + ); + + // gentest-2203 + assertEqual( + perft( + Board(0x802553e80c000L, 0x600000000000002L, 0x2002000000000024L, 0x4100000000000081L, + 0x10000000000000L, 0x800000000000010L, 0x41002003e00c0b7L, 0x6b0a005500800000L, false, 0, 0x0L), + 4 + ), + 70239 + ); + + // gentest-2204 + assertEqual( + perft( + Board(0x802513e80c000L, 0x200000000000800L, 0x2002000000000024L, 0x4100000000000081L, + 0x10000000000000L, 0x400000000000010L, 0x1002003600c8b5L, 0x670a005108800000L, true, 0, 0x0L), + 4 + ), + 664102 + ); + + // gentest-2205 + assertEqual( + perft( + Board(0x802513e80c000L, 0x200000000000800L, 0x42000000000024L, 0x4100000000000082L, + 0x1000000000000000L, 0x400000000000010L, 0x100002003600c8b6L, 0x474a005108800000L, false, 0, 0x0L), + 4 + ), + 14247 + ); + + // gentest-2206 + assertEqual( + perft( + Board(0x802533c80c000L, 0x200000000000800L, 0x42000000000024L, 0x8100000000000082L, 0x0L, + 0x400000000000010L, 0x2023400c8b6L, 0x874a005108800000L, true, 0, 0x0L), + 4 + ), + 364465 + ); + + // gentest-2207 + assertEqual( + perft( + Board(0x802533cc08000L, 0x200000000000800L, 0x42000000010020L, 0x100008000000082L, 0x0L, + 0x400000000000010L, 0x202344188b2L, 0x74a00d108800000L, false, 0, 0x0L), + 4 + ), + 467547 + ); + + // gentest-2208 + assertEqual( + perft( + Board(0xa533c408000L, 0x200000000000800L, 0x42000000810000L, 0x100008000000082L, 0x0L, + 0x800000000000010L, 0x20234c18892L, 0xb4208d108000000L, true, 0, 0x0L), + 4 + ), + 775604 + ); + + // gentest-2209 + assertEqual( + perft( + Board(0xa137c408000L, 0x200000000020000L, 0x42000000014000L, 0x100008000000082L, 0x0L, + 0x800000000000010L, 0x2023443c092L, 0xb42089148000000L, false, 0, 0x0L), + 4 + ), + 839048 + ); + + // gentest-2210 + assertEqual( + perft( + Board(0xa137c408000L, 0x200000000020000L, 0x42000000014000L, 0x100002000000082L, 0x0L, + 0x10000000000800L, 0x2023443c882L, 0x352083148000000L, true, 0, 0x0L), + 4 + ), + 1060512 + ); + + // gentest-2211 + assertEqual( + perft( + Board(0xa1374408000L, 0x10008000000L, 0x42000000014000L, 0x100002000000280L, 0x0L, 0x10000000000800L, + 0x2023c41ca80L, 0x152093140000000L, false, 0, 0x0L), + 4 + ), + 1639588 + ); + + // gentest-2212 + assertEqual( + perft( + Board(0xa1374408000L, 0x10008000000L, 0x42000000014000L, 0x1002000000280L, 0x0L, 0x200000100000L, + 0x2023c51c280L, 0x43293140000000L, true, 0, 0x0L), + 4 + ), + 809924 + ); + + // gentest-2213 + assertEqual( + perft( + Board(0xa1354408000L, 0x200000000020000L, 0x42000000014000L, 0x1002000000280L, 0x0L, 0x200000100000L, + 0x2121453c280L, 0x243282140000000L, false, 0, 0x0L), + 4 + ), + 287802 + ); + + // gentest-2214 + assertEqual( + perft( + Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x1002000000280L, 0x0L, 0x400000100000L, + 0x1002021452c280L, 0x243403140000000L, true, 0, 0x0L), + 4 + ), + 1175188 + ); + + // gentest-2215 + assertEqual( + perft( + Board(0x21354408000L, 0x200000000020000L, 0x12800000004000L, 0x1002000000082L, 0x0L, 0x400000080000L, + 0x100202144ac082L, 0x203c03140000000L, false, 0, 0x0L), + 4 + ), + 1241163 + ); + + // gentest-2216 + assertEqual( + perft( + Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x10000000002a0L, 0x0L, 0x400000080000L, + 0x100202144ac280L, 0x243401140000020L, true, 0, 0x0L), + 4 + ), + 1185826 + ); + + // gentest-2217 + assertEqual( + perft( + Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x1000000200280L, 0x0L, 0x400000000800L, + 0x1002021442ca80L, 0x243401140200000L, false, 0, 0x0L), + 4 + ), + 1131339 + ); + + // gentest-2218 + assertEqual( + perft( + Board(0x21354408000L, 0x200000000020000L, 0x52000000004000L, 0x1000000200280L, 0x0L, 0x400000000010L, + 0x1002021442c290L, 0x243401140200000L, true, 0, 0x0L), + 4 + ), + 1054513 + ); + + // gentest-2219 + assertEqual( + perft( + Board(0x21354408000L, 0x200000000020000L, 0x842000000004000L, 0x1000000100280L, 0x0L, 0x400000000020L, + 0x80002021442c2a0L, 0x243401140100000L, false, 0, 0x0L), + 4 + ), + 535070 + ); + + // gentest-2220 + assertEqual( + perft( + Board(0x21354408000L, 0x200000000020000L, 0x2404000000004000L, 0x1000000100280L, 0x0L, + 0x400000000020L, 0x402021442c2a0L, 0x2601401140100000L, true, 0, 0x0L), + 4 + ), + 811453 + ); + + // gentest-2221 + assertEqual( + perft( + Board(0x20354408000L, 0x200000000020000L, 0x2400001000004000L, 0x1000000000290L, 0x0L, + 0x400000002000L, 0x2121442e280L, 0x2601400140000010L, false, 0, 0x0L), + 4 + ), + 1351160 + ); + + // gentest-2222 + assertEqual( + perft( + Board(0x20354408000L, 0x10000020000L, 0x2004002000004000L, 0x1000000000290L, 0x0L, 0x400000002000L, + 0x402021442e280L, 0x2001412140000010L, true, 0, 0x0L), + 4 + ), + 1105756 + ); + + // gentest-2223 + assertEqual( + perft( + Board(0x21344408000L, 0x10000020000L, 0x2004002000004000L, 0x100000000008aL, 0x0L, 0x400000002000L, + 0x402120442e082L, 0x2001412140000008L, false, 0, 0x0L), + 4 + ), + 1654153 + ); + + // gentest-2224 + assertEqual( + perft( + Board(0x21344408000L, 0x10000020000L, 0x2004000010080000L, 0x100000000008aL, 0x0L, 0x4000002000L, + 0x402121442a082L, 0x2001014140080008L, true, 0, 0x0L), + 4 + ), + 1007345 + ); + + // gentest-2225 + assertEqual( + perft( + Board(0x21344408000L, 0x10000020000L, 0x2004000000084000L, 0x1000000000882L, 0x0L, 0x4000100000L, + 0x402120452c082L, 0x2001014140080800L, false, 0, 0x0L), + 4 + ), + 1380827 + ); + + // gentest-2226 + assertEqual( + perft( + Board(0x21244408000L, 0x10100000000L, 0x2004000000084000L, 0x1000000000282L, 0x0L, 0x400000100000L, + 0x402130450c082L, 0x2001410040080200L, true, 0, 0x0L), + 4 + ), + 1531420 + ); + + // gentest-2227 + assertEqual( + perft( + Board(0x21244408000L, 0x10100000000L, 0x2004000000280000L, 0x1000000002090L, 0x0L, 0x400000100000L, + 0x4021304708090L, 0x2001410040082000L, false, 0, 0x0L), + 4 + ), + 1288429 + ); + + // gentest-2228 + assertEqual( + perft( + Board(0x21244408000L, 0x10100000000L, 0x2200000000200020L, 0x1000000000490L, 0x0L, 0x400000100000L, + 0x200021304708090L, 0x2001410040000420L, true, 0, 0x0L), + 4 + ), + 1355264 + ); + + // gentest-2229 + assertEqual( + perft( + Board(0x212c4400000L, 0x10000020000L, 0x2200000000280000L, 0x1000000000490L, 0x0L, 0x400000100000L, + 0x200021284720090L, 0x2001410040080400L, false, 0, 0x0L), + 4 + ), + 1773162 + ); + + // gentest-2230 + assertEqual( + perft( + Board(0x212c0400000L, 0x10000020000L, 0x2200000800080000L, 0x5000000000090L, 0x0L, 0x400000100000L, + 0x200021a80520090L, 0x2005410040080000L, true, 0, 0x0L), + 4 + ), + 1710380 + ); + + // gentest-2231 + assertEqual( + perft( + Board(0x212c0400000L, 0x10400000000L, 0x2200000000080000L, 0x21000000000090L, 0x0L, 0x400000100000L, + 0x200021680500090L, 0x2021410040080000L, false, 0, 0x0L), + 4 + ), + 1064834 + ); + + // gentest-2232 + assertEqual( + perft( + Board(0x210c0400000L, 0x8010000000000L, 0x210000200000000L, 0x21000000000090L, 0x0L, 0x400000100000L, + 0x208021080500090L, 0x31410240000000L, true, 0, 0x0L), + 4 + ), + 702369 + ); + + // gentest-2233 + assertEqual( + perft( + Board(0x210c0400000L, 0x8010000000000L, 0x210000200000000L, 0x22000000008010L, 0x0L, 0x400008000000L, + 0x208021088408010L, 0x32410240000000L, false, 0, 0x0L), + 4 + ), + 1120300 + ); + + // gentest-2234 + assertEqual( + perft( + Board(0x210c0400000L, 0x8010000000000L, 0x200200200000000L, 0x82000000000410L, 0x0L, 0x400008000000L, + 0x208021088400410L, 0x82610240000000L, true, 0, 0x0L), + 4 + ), + 1207441 + ); + + // gentest-2235 + assertEqual( + perft( + Board(0x210c0400000L, 0x2000010000000000L, 0x200200200000000L, 0x82040000000010L, 0x0L, + 0x40000008000000L, 0x2200061088400010L, 0xc2210240000000L, false, 0, 0x0L), + 4 + ), + 831180 + ); + + // gentest-2236 + assertEqual( + perft( + Board(0x29040400000L, 0x2000010000000000L, 0x200200000001000L, 0x82040000000010L, 0x0L, + 0x40000008000000L, 0x2200069008400010L, 0xc2210040001000L, true, 0, 0x0L), + 4 + ), + 642425 + ); + + // gentest-2237 + assertEqual( + perft( + Board(0x29040400000L, 0x80010000000000L, 0x200000001000L, 0x200000400000010L, 0x0L, 0x40000008000000L, + 0x80029408400010L, 0x240210040001000L, false, 0, 0x0L), + 4 + ), + 492102 + ); + + // gentest-2238 + assertEqual( + perft( + Board(0x29040400000L, 0x2000010000000000L, 0x200000001000L, 0x10000400000010L, 0x0L, + 0x40000008000000L, 0x2000029408400010L, 0x50210040001000L, true, 0, 0x0L), + 4 + ), + 444307 + ); + + // gentest-2239 + assertEqual( + perft( + Board(0x821040400000L, 0x110000000000L, 0x200000001000L, 0x10000400000010L, 0x0L, 0x8000000008000000L, + 0x921408400010L, 0x8010210040001000L, false, 0, 0x0L), + 4 + ), + 495857 + ); + + // gentest-2240 + assertEqual( + perft( + Board(0x821040400000L, 0x800000400000000L, 0x200000001000L, 0x20000000000010L, 0x0L, + 0x8000000008000000L, 0x800821008400010L, 0x8020200440001000L, true, 0, 0x0L), + 4 + ), + 285569 + ); + + // gentest-2241 + assertEqual( + perft( + Board(0x801040400000L, 0x800000400000000L, 0x200200000001000L, 0x10000000000010L, 0x0L, + 0x8000000008000000L, 0xa00801008400010L, 0x8010200440001000L, false, 0, 0x0L), + 4 + ), + 340453 + ); + + // gentest-2242 + assertEqual( + perft( + Board(0xa00040400000L, 0x800000400000000L, 0x200000200000000L, 0x4000000000010L, 0x0L, + 0x8000000008000000L, 0xa00a00008400010L, 0x8004000640000000L, true, 0, 0x0L), + 4 + ), + 360132 + ); + + // gentest-2243 + assertEqual( + perft( + Board(0x20800040400000L, 0x800000400000000L, 0x1000200000000L, 0x40000000010L, 0x0L, + 0x8000000008000000L, 0x821800008400010L, 0x8000040640000000L, false, 0, 0x0L), + 4 + ), + 347098 + ); + + // gentest-2244 + assertEqual( + perft( + Board(0x20800040400000L, 0x800010000000000L, 0x1000200000000L, 0x84L, 0x0L, 0x8000000008000000L, + 0x821800008400080L, 0x8000010240000004L, true, 0, 0x0L), + 4 + ), + 294812 + ); + + // gentest-2245 + assertEqual( + perft( + Board(0x800040400000L, 0x800010000000000L, 0x2001000200000000L, 0x48000L, 0x0L, 0x8000000008000000L, + 0x2801800008408000L, 0x8000010240040000L, false, 0, 0x0L), + 4 + ), + 437053 + ); + + // gentest-2246 + assertEqual( + perft( + Board(0x80000040400000L, 0x802000000000000L, 0x2001000200000000L, 0x48000L, 0x0L, 0x8000000008000000L, + 0x2881000008408000L, 0x8002000240040000L, true, 0, 0x0L), + 4 + ), + 428570 + ); + + // gentest-2247 + assertEqual( + perft( + Board(0x80000040400000L, 0x802000000000000L, 0x1800000080000L, 0x8000040000L, 0x0L, + 0x8000000008000000L, 0x881808008400000L, 0x80020000400c0000L, false, 0, 0x0L), + 4 + ), + 403066 + ); + + // gentest-2248 + assertEqual( + perft( + Board(0x40400000L, 0x802000000000000L, 0x81800000000000L, 0x4000000000080L, 0x0L, 0x8000000008000000L, + 0x801800008400080L, 0x8086000040000000L, true, 0, 0x0L), + 4 + ), + 300199 + ); + + // gentest-2249 + assertEqual( + perft( + Board(0x40400000L, 0x802000000000000L, 0x4010800000000000L, 0x4000000000080L, 0x0L, + 0x8000000008000000L, 0x810800008400080L, 0xc006000040000000L, false, 0, 0x0L), + 4 + ), + 325925 + ); + + // gentest-2250 + assertEqual( + perft( + Board(0x40400000L, 0x802000000000000L, 0x4000000000100000L, 0x10000000000080L, 0x0L, + 0x40000008000000L, 0x800000008500080L, 0x4052000040000000L, true, 0, 0x0L), + 4 + ), + 296537 + ); + + // gentest-2251 + assertEqual( + perft( + Board(0x40400000L, 0x802000000000000L, 0x80000000100000L, 0x10000000000080L, 0x0L, 0x40000004000000L, + 0x800000004500080L, 0xd2000040000000L, false, 0, 0x0L), + 4 + ), + 369040 + ); + + // gentest-2252 + assertEqual( + perft( + Board(0x40400000L, 0x802000000000000L, 0x800000000002L, 0x10000000000080L, 0x0L, 0x8000000004000000L, + 0x800800004400080L, 0x8012000040000002L, true, 0, 0x0L), + 4 + ), + 220935 + ); + + // gentest-2253 + assertEqual( + perft( + Board(0x40400000L, 0x800080000000000L, 0x800000000002L, 0x10000000000080L, 0x0L, 0x8000040000000000L, + 0x800840000400080L, 0x8010080040000002L, false, 0, 0x0L), + 4 + ), + 330141 + ); + + // gentest-2254 + assertEqual( + perft( + Board(0x40400000L, 0xc00000000000000L, 0x20000002L, 0x10000000000080L, 0x0L, 0x40040000000000L, + 0x800040020400080L, 0x450000040000002L, true, 0, 0x0L), + 4 + ), + 361727 + ); + + // gentest-2255 + assertEqual( + perft( + Board(0x40400000L, 0x420000000000000L, 0x30000000L, 0x10000000000080L, 0x0L, 0x40000400000000L, + 0x20000420400080L, 0x450000050000000L, false, 0, 0x0L), + 4 + ), + 650628 + ); + + // gentest-2256 + assertEqual( + perft( + Board(0x40400000L, 0x420000000000000L, 0x30000000L, 0x100000000800000L, 0x0L, 0x40000400000000L, + 0x20000420c00000L, 0x540000050000000L, true, 0, 0x0L), + 4 + ), + 438621 + ); + + // gentest-2257 + assertEqual( + perft( + Board(0x40400000L, 0x400004000000000L, 0x800010000000L, 0x100000000800000L, 0x0L, 0x400400000000L, + 0x804400c00000L, 0x500400050000000L, false, 0, 0x0L), + 4 + ), + 172136 + ); + + // gentest-2258 + assertEqual( + perft( + Board(0x40400000L, 0x400004000000000L, 0x800000000400L, 0x800100L, 0x0L, 0x400200000000L, + 0x804200c00000L, 0x400400040000500L, true, 0, 0x0L), + 4 + ), + 131301 + ); + + // gentest-2259 + assertEqual( + perft( + Board(0x40400000L, 0x400100000000000L, 0x800001000000L, 0x800100L, 0x0L, 0x410000000000L, + 0x910000c00000L, 0x400400041000100L, false, 0, 0x0L), + 4 + ), + 165398 + ); + + // gentest-2260 + assertEqual( + perft( + Board(0x40400000L, 0x400100000000000L, 0x800000020000L, 0x810000L, 0x0L, 0x400200000000L, + 0x900200c00000L, 0x400400040030000L, true, 0, 0x0L), + 4 + ), + 210860 + ); + + // gentest-2261 + assertEqual( + perft( + Board(0x40400000L, 0x400000000080000L, 0x800000020000L, 0x1800000L, 0x0L, 0x400200000000L, + 0x800200c80000L, 0x400400041020000L, false, 0, 0x0L), + 4 + ), + 270332 + ); + + // gentest-2262 + assertEqual( + perft( + Board(0x40400000L, 0x400000400000000L, 0x800000000400L, 0x800001L, 0x0L, 0x400200000000L, + 0x800600c00000L, 0x400400040000401L, true, 0, 0x0L), + 4 + ), + 330661 + ); + + // gentest-2263 + assertEqual( + perft( + Board(0x40400000L, 0x400000400000000L, 0x2000000000000400L, 0x800008L, 0x0L, 0x400004000000L, + 0x2000000404c00000L, 0x400400040000408L, false, 0, 0x0L), + 4 + ), + 299537 + ); + + // gentest-2264 + assertEqual( + perft( + Board(0xc00000L, 0x20400000000L, 0x2000000000000400L, 0x8L, 0x0L, 0x400002000000L, + 0x2000000402400000L, 0x420000800408L, true, 0, 0x0L), + 4 + ), + 262369 + ); + + // gentest-2265 + assertEqual( + perft( + Board(0xc00000L, 0x8000000040000L, 0x2000000000000400L, 0x8L, 0x0L, 0x400002000000L, + 0x2000000002440000L, 0x8400000800408L, false, 0, 0x0L), + 4 + ), + 263223 + ); + + // gentest-2266 + assertEqual( + perft( + Board(0xc00000L, 0x8000000040000L, 0x2000000000000400L, 0x8L, 0x0L, 0x400001000000L, + 0x2000000001440000L, 0x8400000800408L, true, 0, 0x0L), + 4 + ), + 65182 + ); + + // gentest-2267 + assertEqual( + perft( + Board(0xc00000L, 0x8000800000000L, 0x2000000000000400L, 0x80000000000L, 0x0L, 0x400200000000L, + 0x2000000a00400000L, 0x8480000800400L, false, 0, 0x0L), + 4 + ), + 145326 + ); + + // gentest-2268 + assertEqual( + perft( + Board(0xc00000L, 0x8000800000000L, 0x2000002000000000L, 0x10000000000L, 0x0L, 0x400100000000L, + 0x2000000900400000L, 0x8412000800000L, true, 0, 0x0L), + 4 + ), + 31139 + ); + + // gentest-2269 + assertEqual( + perft( + Board(0xc00000L, 0x8000800000000L, 0x400000400L, 0x0L, 0x0L, 0x410000000000L, 0x10c00400000L, + 0x8400000800400L, false, 0, 0x0L), + 4 + ), + 172553 + ); + + // gentest-2270 + assertEqual( + perft( + Board(0xc00000L, 0x200800000000L, 0x400000400L, 0x0L, 0x0L, 0x20000200000000L, 0xe00400000L, + 0x20200000800400L, true, 0, 0x0L), + 4 + ), + 270616 + ); + + // gentest-2271 + assertEqual( + perft( + Board(0xc00000L, 0x200800000000L, 0x480000000000L, 0x0L, 0x0L, 0x20000001000000L, 0x80801400000L, + 0x20600000800000L, false, 0, 0x0L), + 4 + ), + 164127 + ); + + // gentest-2272 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2273 + assertEqual( + perft( + Board(0xfd02000a00f500L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xa00f5ffL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 410437 + ); + + // gentest-2274 + assertEqual( + perft( + Board(0xe51a000a00f500L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000800L, 0xa00fdefL, 0xffe51a0000000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 590254 + ); + + // gentest-2275 + assertEqual( + perft( + Board(0xc53a008b007400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000800L, 0x8b007cefL, 0xffc53a0000000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 542851 + ); + + // gentest-2276 + assertEqual( + perft( + Board(0xc13a04ab005400L, 0x210000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000800L, 0xab005cefL, 0xbfd13a0400000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 685987 + ); + + // gentest-2277 + assertEqual( + perft( + Board(0x413ac4ab001400L, 0x210000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000800L, 0x40ab001cefL, 0xbf513a8400000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 711215 + ); + + // gentest-2278 + assertEqual( + perft( + Board(0x411ac4ab001400L, 0x200000800000042L, 0x2400000000000024L, 0x8100000000800001L, + 0x800000000000008L, 0x1000000000000800L, 0xab801c6fL, 0xbf411acc00000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 1164017 + ); + + // gentest-2279 + assertEqual( + perft( + Board(0x411ac6a9001400L, 0x200000800000042L, 0x2400000000000024L, 0x8100000000010001L, + 0x800000000000008L, 0x20000000000800L, 0x2a9011c6fL, 0xaf611acc00000000L, false, 0, 0x0L), + 4 + ), + 955645 + ); + + // gentest-2280 + assertEqual( + perft( + Board(0x411ac6a9001400L, 0x8000002000042L, 0x2400000000000024L, 0x8100000000800001L, + 0x800000000000008L, 0x20000000000800L, 0x2a9801c6fL, 0xad691ac402000000L, true, 0, 0x0L), + 4 + ), + 1135849 + ); + + // gentest-2281 + assertEqual( + perft( + Board(0x411ac6a9001400L, 0x8000002000042L, 0x2400000000100020L, 0x100800000800001L, + 0x800000000000008L, 0x20000000040000L, 0x2a994146bL, 0x2d699ac402000000L, false, 0, 0x0L), + 4 + ), + 868968 + ); + + // gentest-2282 + assertEqual( + perft( + Board(0x411ac6a9001400L, 0x8000000000046L, 0x2400000000100020L, 0x100800000800001L, + 0x800000000000008L, 0x20000004000000L, 0x2ad90146bL, 0x2d699ac400000004L, true, 0, 0x0L), + 4 + ), + 726519 + ); + + // gentest-2283 + assertEqual( + perft( + Board(0x411ad6a1001400L, 0x46L, 0x2400000000002020L, 0x100800000800001L, 0x800000000000008L, + 0x20000004000000L, 0x12a580346bL, 0x2d619ac400000004L, false, 0, 0x0L), + 4 + ), + 1143051 + ); + + // gentest-2284 + assertEqual( + perft( + Board(0x411ad6a1001400L, 0x46L, 0x2400000000006000L, 0x8100000000800001L, 0x800000000000008L, + 0x4000000004000000L, 0x12a580744bL, 0xed411ac400000004L, true, 0, 0x0L), + 4 + ), + 1338103 + ); + + // gentest-2285 + assertEqual( + perft( + Board(0x411a96a1001400L, 0x46L, 0x2400000000006000L, 0x100804000000001L, 0x800000000000008L, + 0x4000000004000000L, 0x52a500744bL, 0x6d419a8400000004L, false, 0, 0x0L), + 4 + ), + 1196993 + ); + + // gentest-2286 + assertEqual( + perft( + Board(0x411a96a1001400L, 0x46L, 0x2008000000404000L, 0x100804000000001L, 0x4000000000008L, + 0x4000000004000000L, 0x52a540544bL, 0x614d9a8400000004L, true, 0, 0x0L), + 4 + ), + 1223635 + ); + + // gentest-2287 + assertEqual( + perft( + Board(0x11a96a1001400L, 0x46L, 0x2008000000404000L, 0x100800000000001L, 0x4000000080000L, + 0x40000004000000L, 0x12a5485443L, 0x214d9a8400000004L, false, 0, 0x0L), + 4 + ), + 1078491 + ); + + // gentest-2288 + assertEqual( + perft( + Board(0x11296a1001400L, 0x46L, 0x2008000000404000L, 0x400800000000001L, 0x4000000000800L, + 0x40000004000000L, 0x2a5405c43L, 0x244d929400000004L, true, 0, 0x0L), + 4 + ), + 1265706 + ); + + // gentest-2289 + assertEqual( + perft( + Board(0x11296a1001400L, 0x46L, 0x2008000800008000L, 0x400800000000001L, 0x4000000000800L, + 0x200004000000L, 0xaa5009c43L, 0x240db29400000004L, false, 0, 0x0L), + 4 + ), + 907444 + ); + + // gentest-2290 + assertEqual( + perft( + Board(0x11296a1001400L, 0x46L, 0x200a000000008000L, 0x100800000000001L, 0x4000000000800L, + 0x40000004000000L, 0x20002a5009c43L, 0x214d929400000004L, true, 0, 0x0L), + 4 + ), + 1221717 + ); + + // gentest-2291 + assertEqual( + perft( + Board(0x11296a1001400L, 0x200006L, 0x2008000010008000L, 0x180000000000001L, 0x4000000000800L, + 0x40000004000000L, 0x2b5209c03L, 0x21cd129400000004L, false, 0, 0x0L), + 4 + ), + 1145212 + ); + + // gentest-2292 + assertEqual( + perft( + Board(0x1396a1001400L, 0x200006L, 0x2008000010008000L, 0x8100000000000001L, 0x4000800000000L, + 0x40000004000000L, 0xab5209403L, 0xa14c139400000004L, true, 0, 0x0L), + 4 + ), + 1172284 + ); + + // gentest-2293 + assertEqual( + perft( + Board(0x1396a1001400L, 0x200804L, 0x2008000000088000L, 0x4100000000000001L, 0x4000800000000L, + 0x40000004000000L, 0xaa5289c01L, 0x614c139400000004L, false, 0, 0x0L), + 4 + ), + 1175527 + ); + + // gentest-2294 + assertEqual( + perft( + Board(0x1396a1001400L, 0x200804L, 0x2400000000088000L, 0x4000000000000001L, 0x300000000000000L, + 0x40000004000000L, 0x1000002a5289c01L, 0x6640139400000004L, true, 0, 0x0L), + 4 + ), + 568621 + ); + + // gentest-2295 + assertEqual( + perft( + Board(0x139681001400L, 0x814L, 0x410000000088000L, 0x4000000000000001L, 0x300000000000000L, + 0x40000004000000L, 0x100001285089c11L, 0x4650138400000004L, false, 0, 0x0L), + 4 + ), + 830250 + ); + + // gentest-2296 + assertEqual( + perft( + Board(0x139681001400L, 0x24800L, 0x410000000088000L, 0x2000000000000001L, 0x300000000000000L, + 0x40000004000000L, 0x10000128508dc01L, 0x2650138400020000L, true, 0, 0x0L), + 4 + ), + 1536203 + ); + + // gentest-2297 + assertEqual( + perft( + Board(0x139681001400L, 0x24800L, 0x410000010008000L, 0x2000000000000008L, 0x101000000000000L, + 0x40000004000000L, 0x10000129500dc08L, 0x2451138400020000L, false, 0, 0x0L), + 4 + ), + 1387642 + ); + + // gentest-2298 + assertEqual( + perft( + Board(0x139681001400L, 0x24020L, 0x410000010008000L, 0x8L, 0x101000000000000L, 0x40000004000000L, + 0x10000129500d420L, 0x451138400020008L, true, 0, 0x0L), + 4 + ), + 974333 + ); + + // gentest-2299 + assertEqual( + perft( + Board(0x139681001400L, 0x24020L, 0x410000010008000L, 0x4L, 0x201000000000000L, 0x40000000080000L, + 0x20000129108d420L, 0x451138400020004L, false, 0, 0x0L), + 4 + ), + 829657 + ); + + // gentest-2300 + assertEqual( + perft( + Board(0x139681001000L, 0x24020L, 0x410000010008000L, 0x4L, 0x101000000000000L, 0x40000000080000L, + 0x10000129108d020L, 0x451138400020004L, true, 0, 0x0L), + 4 + ), + 675675 + ); + + // gentest-2301 + assertEqual( + perft( + Board(0x139780100000L, 0x24020L, 0x18000010008000L, 0x4L, 0x101000000000000L, 0x40000000080000L, + 0x10000139018c020L, 0x59138400020004L, false, 0, 0x0L), + 4 + ), + 569640 + ); + + // gentest-2302 + assertEqual( + perft( + Board(0x139780100000L, 0x8004020L, 0x18000030000000L, 0x10L, 0x101000000000000L, 0x40000000080000L, + 0x1000013b0184020L, 0x59138408000010L, true, 0, 0x0L), + 4 + ), + 774598 + ); + + // gentest-2303 + assertEqual( + perft( + Board(0x139780100000L, 0x2000000030L, 0x18800010000000L, 0x0L, 0x101000000000000L, 0x40000000080000L, + 0x100801390180030L, 0x5913a400000000L, false, 0, 0x0L), + 4 + ), + 111912 + ); + + // gentest-2304 + assertEqual( + perft( + Board(0x139780100000L, 0x800000000030L, 0x1010000010000000L, 0x0L, 0x1000000000000L, + 0x40000000080000L, 0x1001390180030L, 0x1050938400000000L, true, 0, 0x0L), + 4 + ), + 273653 + ); + + // gentest-2305 + assertEqual( + perft( + Board(0x139780100000L, 0x20000000000030L, 0x1000000010000000L, 0x0L, 0x10000000000000L, + 0x40000000000800L, 0x10001390100830L, 0x1060138400000000L, false, 0, 0x0L), + 4 + ), + 144956 + ); + + // gentest-2306 + assertEqual( + perft( + Board(0x139780100000L, 0x20000000000030L, 0x8000010000000L, 0x0L, 0x10000000000000L, + 0x8000000000001000L, 0x10001390101030L, 0x8028138400000000L, true, 0, 0x0L), + 4 + ), + 195936 + ); + + // gentest-2307 + assertEqual( + perft( + Board(0x139384100000L, 0x20000000000810L, 0x10000000L, 0x0L, 0x8000000000000L, 0x8000000000001000L, + 0x8001390101810L, 0x8020138004000000L, false, 0, 0x0L), + 4 + ), + 154929 + ); + + // gentest-2308 + assertEqual( + perft( + Board(0x139380140000L, 0x800000000810L, 0x10000000L, 0x0L, 0x80000000000L, 0x8000000000001000L, + 0x81390101810L, 0x8000938000040000L, true, 0, 0x0L), + 4 + ), + 175344 + ); + + // gentest-2309 + assertEqual( + perft( + Board(0x129380140000L, 0x800000000810L, 0x80L, 0x0L, 0x10000L, 0x8000000000001000L, 0x1180111890L, + 0x8000928200040000L, false, 0, 0x0L), + 4 + ), + 156793 + ); + + // gentest-2310 + assertEqual( + perft( + Board(0x129380100000L, 0x800000000010L, 0x100000000000008L, 0x0L, 0x10000L, 0x8000000000001000L, + 0x100001180111010L, 0x8000928200000008L, true, 0, 0x0L), + 4 + ), + 27575 + ); + + // gentest-2311 + assertEqual( + perft( + Board(0x109380100000L, 0x800000000010L, 0x100000000000008L, 0x0L, 0x10000L, 0x8000000000000040L, + 0x100001080110050L, 0x8000908300000008L, false, 0, 0x0L), + 4 + ), + 196308 + ); + + // gentest-2312 + assertEqual( + perft( + Board(0x109380100000L, 0x20000000000010L, 0x100000000000400L, 0x0L, 0x10000L, 0x8000000000002000L, + 0x100001080112010L, 0x8020108300000400L, true, 0, 0x0L), + 4 + ), + 290336 + ); + + // gentest-2313 + assertEqual( + perft( + Board(0x109380100000L, 0x20000000080000L, 0x2400000000000L, 0x0L, 0x10000L, 0x8000000000002000L, + 0x2001080192000L, 0x8020508300000000L, false, 0, 0x0L), + 4 + ), + 248315 + ); + + // gentest-2314 + assertEqual( + perft( + Board(0x109281100000L, 0x20000000080000L, 0x2400000000000L, 0x0L, 0x10000L, 0x80000000000010L, + 0x2001080190010L, 0xa0508201000000L, true, 0, 0x0L), + 4 + ), + 235513 + ); + + // gentest-2315 + assertEqual( + perft( + Board(0x109281100000L, 0x800000000000004L, 0x2400000000000L, 0x0L, 0x10000L, 0x80000000000800L, + 0x2001080110804L, 0x880508201000000L, false, 0, 0x0L), + 4 + ), + 185174 + ); + + // gentest-2316 + assertEqual( + perft( + Board(0x109281100000L, 0x800000000000004L, 0x2400000000000L, 0x0L, 0x10000L, 0x80000000000010L, + 0x2001080110014L, 0x880508201000000L, true, 0, 0x0L), + 4 + ), + 205984 + ); + + // gentest-2317 + assertEqual( + perft( + Board(0x109280100000L, 0x800000000000004L, 0x400000000080L, 0x0L, 0x1000000L, 0x4000000000000010L, + 0x1081100094L, 0x4800508200000000L, false, 0, 0x0L), + 4 + ), + 284583 + ); + + // gentest-2318 + assertEqual( + perft( + Board(0x109082100000L, 0x800000000000004L, 0x400000000080L, 0x0L, 0x1000000L, 0x20000000001000L, + 0x1081101084L, 0x820508002000000L, true, 0, 0x0L), + 4 + ), + 165367 + ); + + // gentest-2319 + assertEqual( + perft( + Board(0x109092000000L, 0x800000000000004L, 0x400000000080L, 0x0L, 0x1000000L, 0x4000000000000800L, + 0x1091000884L, 0x4800508002000000L, false, 0, 0x0L), + 4 + ), + 129817 + ); + + // gentest-2320 + assertEqual( + perft( + Board(0x109092000000L, 0x800000000000004L, 0x1000000000004000L, 0x0L, 0x1000000L, 0x20000000000800L, + 0x1091004804L, 0x1820108002000000L, true, 0, 0x0L), + 4 + ), + 112894 + ); + + // gentest-2321 + assertEqual( + perft( + Board(0x109092000000L, 0x800000000000100L, 0x1000000000004000L, 0x0L, 0x1000000L, 0x400000100000L, + 0x1091104100L, 0x1800508002000000L, false, 0, 0x0L), + 4 + ), + 110903 + ); + + // gentest-2322 + assertEqual( + perft( + Board(0x109092000000L, 0x800000000000100L, 0x20000000004000L, 0x0L, 0x1000000L, 0x80000000001000L, + 0x1091005100L, 0x8a0108002000000L, true, 0, 0x0L), + 4 + ), + 89225 + ); + + // gentest-2323 + assertEqual( + perft( + Board(0x109092000000L, 0x800000000000004L, 0x20000000200000L, 0x0L, 0x1000000L, 0x400000001000L, + 0x1091201004L, 0x820508002000000L, false, 0, 0x0L), + 4 + ), + 67132 + ); + + // gentest-2324 + assertEqual( + perft( + Board(0x109092000000L, 0x800000000000004L, 0x4000000000200000L, 0x0L, 0x1000000000000000L, + 0x80000000001000L, 0x1000001090201004L, 0x4880108002000000L, true, 0, 0x0L), + 4 + ), + 41125 + ); + + // gentest-2325 + assertEqual( + perft( + Board(0x109092000000L, 0x800000000000004L, 0x4000000040000000L, 0x0L, 0x1000000000000000L, + 0x800000000008L, 0x10000010d000000cL, 0x4800908002000000L, false, 0, 0x0L), + 4 + ), + 54886 + ); + + // gentest-2326 + assertEqual( + perft( + Board(0x109092000000L, 0x4L, 0x80000040000000L, 0x0L, 0x20000000000000L, 0x800000000008L, + 0x200010d000000cL, 0x80908002000000L, true, 0, 0x0L), + 4 + ), + 32984 + ); + + // gentest-2327 + assertEqual( + perft( + Board(0x109092000000L, 0x4L, 0x80002000000000L, 0x0L, 0x0L, 0x40000000000008L, 0x309000000cL, + 0xc0108002000000L, false, 0, 0x0L), + 4 + ), + 14075 + ); + + // gentest-2328 + assertEqual( + perft( + Board(0x109092000000L, 0x1000L, 0x402000000000L, 0x0L, 0x0L, 0x2000000000000008L, 0x3090001008L, + 0x2000508002000000L, true, 0, 0x0L), + 4 + ), + 21909 + ); + + // gentest-2329 + assertEqual( + perft( + Board(0x109092000000L, 0x40L, 0x402000000000L, 0x0L, 0x0L, 0x10000000000400L, 0x3090000440L, + 0x10508002000000L, false, 0, 0x0L), + 4 + ), + 19313 + ); + + // gentest-2330 + assertEqual( + perft( + Board(0x109090020000L, 0x40L, 0x20002000000000L, 0x0L, 0x0L, 0x10000000000800L, 0x3090000840L, + 0x30108000020000L, true, 0, 0x0L), + 4 + ), + 18785 + ); + + // gentest-2331 + assertEqual( + perft( + Board(0x109090000200L, 0x40L, 0x20002000000000L, 0x0L, 0x0L, 0x10000000040000L, 0x3090040040L, + 0x30108000000200L, false, 0, 0x0L), + 4 + ), + 30911 + ); + + // gentest-2332 + assertEqual( + perft( + Board(0x109090000200L, 0x40L, 0x400000000000L, 0x0L, 0x0L, 0x8000000040000L, 0x401090040040L, + 0x8108000000200L, true, 0, 0x0L), + 4 + ), + 20107 + ); + + // gentest-2333 + assertEqual( + perft( + Board(0x109090000200L, 0x200000L, 0x400000000000L, 0x0L, 0x0L, 0x40000020000L, 0x401090220000L, + 0x148000000200L, false, 0, 0x0L), + 4 + ), + 22617 + ); + + // gentest-2334 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x400000000000L, 0x0L, 0x2L, 0x4000000020000L, 0x401090028000L, + 0x4108000000002L, true, 0, 0x0L), + 4 + ), + 19828 + ); + + // gentest-2335 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x400000000000L, 0x0L, 0x0L, 0x4000000000200L, 0x401090008200L, + 0x4108000000000L, false, 0, 0x0L), + 4 + ), + 10223 + ); + + // gentest-2336 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x1000000000000000L, 0x0L, 0x0L, 0x10000000200L, 0x1000001090008200L, + 0x118000000000L, true, 0, 0x0L), + 4 + ), + 7230 + ); + + // gentest-2337 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x1000000000001L, 0x8001090008001L, + 0x1108000000000L, false, 0, 0x0L), + 4 + ), + 3998 + ); + + // gentest-2338 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x1000000000002L, 0x8001090008002L, + 0x1108000000000L, true, 0, 0x0L), + 4 + ), + 4997 + ); + + // gentest-2339 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x200000000020000L, 0x8001090028000L, + 0x200108000000000L, false, 0, 0x0L), + 4 + ), + 5361 + ); + + // gentest-2340 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x200000000010000L, 0x8001090018000L, + 0x200108000000000L, true, 0, 0x0L), + 4 + ), + 4346 + ); + + // gentest-2341 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x8000000000000L, 0x0L, 0x0L, 0x100000100000000L, 0x8001190008000L, + 0x100108000000000L, false, 0, 0x0L), + 4 + ), + 2171 + ); + + // gentest-2342 + assertEqual( + perft( + Board(0x109090000000L, 0x8000L, 0x40000000000L, 0x0L, 0x0L, 0x200000100000000L, 0x41190008000L, + 0x200108000000000L, true, 0, 0x0L), + 4 + ), + 2717 + ); + + // gentest-2343 + assertEqual( + perft( + Board(0x109090000000L, 0x20L, 0x40000000000L, 0x0L, 0x0L, 0x1000200000000L, 0x41290000020L, + 0x1108000000000L, false, 0, 0x0L), + 4 + ), + 782 + ); + + // gentest-2344 + assertEqual( + perft( + Board(0x109090000000L, 0x20L, 0x40000000000L, 0x0L, 0x0L, 0x1000001000000L, 0x41091000020L, + 0x1108000000000L, true, 0, 0x0L), + 4 + ), + 2824 + ); + + // gentest-2345 + assertEqual( + perft( + Board(0x109090000000L, 0x20L, 0x200000000L, 0x0L, 0x0L, 0x200000002000000L, 0x1292000020L, + 0x200108000000000L, false, 0, 0x0L), + 4 + ), + 7798 + ); + + // gentest-2346 + assertEqual( + perft( + Board(0x109090000000L, 0x20L, 0x10000000000L, 0x0L, 0x0L, 0x200000002000000L, 0x11092000020L, + 0x200108000000000L, true, 0, 0x0L), + 4 + ), + 4489 + ); + + // gentest-2347 + assertEqual( + perft( + Board(0x109090000000L, 0x800L, 0x10000000000L, 0x0L, 0x0L, 0x1000400000000L, 0x11490000800L, + 0x1108000000000L, false, 0, 0x0L), + 4 + ), + 2134 + ); + + // gentest-2348 + assertEqual( + perft( + Board(0x109090000000L, 0x800L, 0x4000000L, 0x0L, 0x0L, 0x2000400000000L, 0x1494000800L, + 0x2108000000000L, true, 0, 0x0L), + 4 + ), + 6633 + ); + + // gentest-2349 + assertEqual( + perft( + Board(0x109090000000L, 0x200000L, 0x4000000L, 0x0L, 0x0L, 0x400000002000000L, 0x1096200000L, + 0x400108000000000L, false, 0, 0x0L), + 4 + ), + 12689 + ); + + // gentest-2350 + assertEqual( + perft( + Board(0x109090000000L, 0x200000L, 0x80000L, 0x0L, 0x0L, 0x400000002000000L, 0x1092280000L, + 0x400108000000000L, true, 0, 0x0L), + 4 + ), + 11113 + ); + + // gentest-2351 + assertEqual( + perft( + Board(0x109090000000L, 0x200000L, 0x400L, 0x0L, 0x0L, 0x4000000020000L, 0x1090220400L, + 0x4108000000000L, false, 0, 0x0L), + 4 + ), + 10558 + ); + + // gentest-2352 + assertEqual( + perft( + Board(0x109090000000L, 0x200000L, 0x400L, 0x0L, 0x0L, 0x10001000000L, 0x1091200400L, 0x118000000000L, + true, 0, 0x0L), + 4 + ), + 3590 + ); + + // gentest-2353 + assertEqual( + perft( + Board(0x109090000000L, 0x200000000L, 0x400L, 0x0L, 0x0L, 0x20001000000L, 0x1291000400L, + 0x128000000000L, false, 0, 0x0L), + 4 + ), + 3073 + ); + + // gentest-2354 + assertEqual( + perft( + Board(0x109090000000L, 0x200000000L, 0x20000L, 0x0L, 0x0L, 0x40001000000L, 0x1291020000L, + 0x148000000000L, true, 0, 0x0L), + 4 + ), + 4544 + ); + + // gentest-2355 + assertEqual( + perft( + Board(0x109090000000L, 0x80000000000L, 0x4000000L, 0x0L, 0x0L, 0x20001000000L, 0x81095000000L, + 0x128000000000L, false, 0, 0x0L), + 4 + ), + 5536 + ); + + // gentest-2356 + assertEqual( + perft( + Board(0x109090000000L, 0x80000000000L, 0x80000L, 0x0L, 0x0L, 0x40001000000L, 0x81091080000L, + 0x148000000000L, true, 0, 0x0L), + 4 + ), + 5629 + ); + + // gentest-2357 + assertEqual( + perft( + Board(0x109090000000L, 0x80000000000L, 0x4000L, 0x0L, 0x0L, 0x20001000000L, 0x81091004000L, + 0x128000000000L, false, 0, 0x0L), + 4 + ), + 4335 + ); + + // gentest-2358 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2359 + assertEqual( + perft( + Board(0xfe00010800f700L, 0x4200000000000840L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x800fffdL, 0xfffe000100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 286109 + ); + + // gentest-2360 + assertEqual( + perft( + Board(0xfc02010800f700L, 0x4200000000000840L, 0x2400000000000024L, 0x8000010000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x800fffeL, 0xfefc030100000000L, true, 0, + 0x8000000000000080L), + 4 + ), + 245032 + ); + + // gentest-2361 + assertEqual( + perft( + Board(0xfc02011800e700L, 0x200800000200800L, 0x2400000000000024L, 0x8000010000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x1820efbeL, 0xbefc830100000000L, false, 0, + 0x8000000000000080L), + 4 + ), + 362660 + ); + + // gentest-2362 + assertEqual( + perft( + Board(0xfc02001900e700L, 0x200800000200800L, 0x2400000004000004L, 0x8100000000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x1c20ef9eL, 0xbffc820001000000L, true, 0, + 0x8000000000000080L), + 4 + ), + 558141 + ); + + // gentest-2363 + assertEqual( + perft( + Board(0xfc02001a01e500L, 0x200800000200800L, 0x2400000004000004L, 0x8100000000000082L, + 0x800000000001000L, 0x1000000000000010L, 0x1e20fd96L, 0xbffc820000010000L, false, 0, + 0x8000000000000080L), + 4 + ), + 704424 + ); + + // gentest-2364 + assertEqual( + perft( + Board(0xdc02201a01e500L, 0x200000040200800L, 0x2400000004000004L, 0x8100000000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x1e20ed9eL, 0xbfdc022040010000L, true, 0, + 0x8000000000000080L), + 4 + ), + 917880 + ); + + // gentest-2365 + assertEqual( + perft( + Board(0xdc02201a01e500L, 0x200000040200800L, 0x2400000000020200L, 0x8000000001000082L, + 0x800000000000008L, 0x1000000000000010L, 0x1a22ef9aL, 0xbedc022041010000L, false, 0, + 0x8000000000000080L), + 4 + ), + 1011540 + ); + + // gentest-2366 + assertEqual( + perft( + Board(0xd806300a016500L, 0x200000000208800L, 0x2400000000020200L, 0x8000000001000082L, + 0x800000000000008L, 0x1000000000000010L, 0x100a226f9aL, 0xbed8062001018000L, true, 0, + 0x8000000000000080L), + 4 + ), + 577406 + ); + + // gentest-2367 + assertEqual( + perft( + Board(0xd802340a016500L, 0x200000000208800L, 0x2400000000060000L, 0x8000000001000084L, + 0x800000000000008L, 0x1000000000000010L, 0x100a266d9cL, 0xbed8022401018000L, false, 0, + 0x8000000000000080L), + 4 + ), + 602092 + ); + + // gentest-2368 + assertEqual( + perft( + Board(0xd800360a016500L, 0x200000000208800L, 0x2002000000020200L, 0x8000000001000084L, + 0x800000000000008L, 0x1000000000000010L, 0x100a226f9cL, 0xbada002601018000L, true, 0, + 0x8000000000000080L), + 4 + ), + 1083554 + ); + + // gentest-2369 + assertEqual( + perft( + Board(0xd800360a412500L, 0x200000004208000L, 0x2002000000020200L, 0x8000000001000084L, + 0x800000000000008L, 0x20000000000010L, 0x100e62279cL, 0xaafa002601018000L, false, 0, 0x80L), + 4 + ), + 1150678 + ); + + // gentest-2370 + assertEqual( + perft( + Board(0xd0003e0a412500L, 0x200000044200000L, 0x2002000000020200L, 0x8000000001000044L, + 0x800000000000008L, 0x20000000000010L, 0x100e62275cL, 0xaaf2002e41010000L, true, 0, 0x0L), + 4 + ), + 1170099 + ); + + // gentest-2371 + assertEqual( + perft( + Board(0xd0003e08402500L, 0x200000040010800L, 0x2002000000020200L, 0x8000000002000044L, + 0x800000000000008L, 0x20000000000010L, 0x1008432f5cL, 0xaaf2002e42000000L, false, 0, 0x0L), + 4 + ), + 1127701 + ); + + // gentest-2372 + assertEqual( + perft( + Board(0xd0001e28402500L, 0x200000040010800L, 0x2002000001000200L, 0x4000000002000044L, + 0x800000000000008L, 0x20000000000010L, 0x1009412f5cL, 0x6af2000e62000000L, true, 0, 0x0L), + 4 + ), + 1191489 + ); + + // gentest-2373 + assertEqual( + perft( + Board(0xd0001c28402500L, 0x200000244000000L, 0x2002000001000200L, 0x4000000000020044L, + 0x800000000000008L, 0x20000000000010L, 0x120d40275cL, 0x6af2000c60020000L, false, 0, 0x0L), + 4 + ), + 1846973 + ); + + // gentest-2374 + assertEqual( + perft( + Board(0xd0001c28402500L, 0x201000044000000L, 0x2002000001000200L, 0x4000000000020044L, + 0x800000000000008L, 0x20000000000010L, 0x100100d40275cL, 0x6af2000c60020000L, true, 0, 0x0L), + 4 + ), + 1909764 + ); + + // gentest-2375 + assertEqual( + perft( + Board(0xd0001c29402400L, 0x201000044000000L, 0x3002000000000200L, 0x4000000000020044L, + 0x800000000000008L, 0x100000000010L, 0x100100100d40265cL, 0x6ad2100c60020000L, false, 0, 0x0L), + 4 + ), + 1782699 + ); + + // gentest-2376 + assertEqual( + perft( + Board(0xd0001c29402400L, 0x201080040000000L, 0x3002000000000200L, 0x4000000000020044L, + 0x800000000000008L, 0x100000000010L, 0x100108100940265cL, 0x6ad2100c60020000L, true, 0, 0x0L), + 4 + ), + 1849913 + ); + + // gentest-2377 + assertEqual( + perft( + Board(0x50009c29402400L, 0x2000c0040000000L, 0x3002000000010000L, 0x4000000000020044L, + 0x800000000000008L, 0x100000000010L, 0x10000c100941245cL, 0x6a52108c60020000L, false, 0, 0x0L), + 4 + ), + 1956603 + ); + + // gentest-2378 + assertEqual( + perft( + Board(0x50009c29402400L, 0x2002c0000000000L, 0x2022000000010000L, 0x4000000000020044L, + 0x800000000000008L, 0x8000000000010L, 0x200c100941245cL, 0x6a5a208c20020000L, true, 0, 0x0L), + 4 + ), + 2156016 + ); + + // gentest-2379 + assertEqual( + perft( + Board(0x50009c29402000L, 0x1200240000000000L, 0x2022000000010000L, 0x4000000000040044L, + 0x800000000000008L, 0x8000000000010L, 0x102004100941205cL, 0x6a5a208c20040000L, false, 0, 0x0L), + 4 + ), + 1797192 + ); + + // gentest-2380 + assertEqual( + perft( + Board(0x50009c09600000L, 0x1200040000000000L, 0x2022000000010000L, 0x4000000000040044L, + 0x800000000000008L, 0x8000000000010L, 0x2004100921005cL, 0x7a5a008c00440000L, true, 0, 0x0L), + 4 + ), + 1005045 + ); + + // gentest-2381 + assertEqual( + perft( + Board(0x50009809600000L, 0x1200000000000000L, 0x2022000400000000L, 0x4000000000040440L, + 0x800000000000008L, 0x40000000010L, 0x20001409200458L, 0x7a52048800440000L, false, 0, 0x0L), + 4 + ), + 1061272 + ); + + // gentest-2382 + assertEqual( + perft( + Board(0x50009809600000L, 0x1200000000000000L, 0x2100400400000000L, 0x4000000000040440L, + 0x4000000000008L, 0x40000000010L, 0x401409200458L, 0x7354048800440000L, true, 0, 0x0L), + 4 + ), + 1022634 + ); + + // gentest-2383 + assertEqual( + perft( + Board(0x50009809204000L, 0x1200000000000000L, 0x2100420000000000L, 0x4000000000040440L, + 0x4000000000001L, 0x40000000010L, 0x421009200451L, 0x7354048800044000L, false, 0, 0x0L), + 4 + ), + 634539 + ); + + // gentest-2384 + assertEqual( + perft( + Board(0x50009809204000L, 0x1008000000000000L, 0x2100420000000000L, 0x4000000000000440L, + 0x4000000000100L, 0x40000000010L, 0x421009200150L, 0x715c048800004400L, true, 0, 0x0L), + 4 + ), + 537978 + ); + + // gentest-2385 + assertEqual( + perft( + Board(0x50009809204000L, 0x1008000000000000L, 0x2120000000000000L, 0x4000000000000040L, + 0x4000000000400L, 0x20000000010L, 0x20001009200450L, 0x715c028800004000L, false, 0, 0x0L), + 4 + ), + 727613 + ); + + // gentest-2386 + assertEqual( + perft( + Board(0x50008809004000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000040L, + 0x4000000000400L, 0x20000000800L, 0x20000009000c40L, 0x7154028800204000L, true, 0, 0x0L), + 4 + ), + 173258 + ); + + // gentest-2387 + assertEqual( + perft( + Board(0x50008809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000040L, + 0x2000000004000L, 0x20000080000L, 0x20000009084040L, 0x7152028800200000L, false, 0, 0x0L), + 4 + ), + 809651 + ); + + // gentest-2388 + assertEqual( + perft( + Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000040L, + 0x10000004000L, 0x20000040000L, 0x20000009044040L, 0x7140138800200000L, true, 0, 0x0L), + 4 + ), + 1136179 + ); + + // gentest-2389 + assertEqual( + perft( + Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000004000L, + 0x10000400000L, 0x1000000040000L, 0x20000009444000L, 0x7141118800200000L, false, 0, 0x0L), + 4 + ), + 997382 + ); + + // gentest-2390 + assertEqual( + perft( + Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000004000L, + 0x20000400000L, 0x1000000020000L, 0x20000009424000L, 0x7141128800200000L, true, 0, 0x0L), + 4 + ), + 117817 + ); + + // gentest-2391 + assertEqual( + perft( + Board(0x40108809000000L, 0x1000000000200000L, 0x2120000000000000L, 0x4000000000000200L, 0x400000L, + 0x1000000000100L, 0x20000009400300L, 0x7141108800200000L, false, 0, 0x0L), + 4 + ), + 813569 + ); + + // gentest-2392 + assertEqual( + perft( + Board(0x40008809000000L, 0x1000000000200000L, 0x100100400000000L, 0x4000000000000200L, 0x400000L, + 0x1000000000100L, 0x100009400300L, 0x5141008c00200000L, true, 0, 0x0L), + 4 + ), + 1021759 + ); + + // gentest-2393 + assertEqual( + perft( + Board(0x40008809000000L, 0x1000000000200000L, 0x2100100000000000L, 0x4000000000000200L, 0x800L, + 0x1000000000100L, 0x100009000b00L, 0x7141008800200000L, false, 0, 0x0L), + 4 + ), + 672612 + ); + + // gentest-2394 + assertEqual( + perft( + Board(0x40008809000000L, 0x1000000000200000L, 0x140000010000L, 0x4000000000000200L, 0x8000L, + 0x1000000000100L, 0x100009008300L, 0x5041048800210000L, true, 0, 0x0L), + 4 + ), + 1170120 + ); + + // gentest-2395 + assertEqual( + perft( + Board(0x40008809000000L, 0x1000000000000010L, 0x40000810000L, 0x4000000000000002L, 0x8000L, + 0x1000000000100L, 0x9808102L, 0x5041048800010010L, false, 0, 0x0L), + 4 + ), + 833284 + ); + + // gentest-2396 + assertEqual( + perft( + Board(0xc809000000L, 0x1000000000000010L, 0x108000000010000L, 0x4000000000000002L, 0x8000L, + 0x1000000000100L, 0x8000009008102L, 0x510100c800010010L, true, 0, 0x0L), + 4 + ), + 804208 + ); + + // gentest-2397 + assertEqual( + perft( + Board(0xc809000000L, 0x1000000000000010L, 0x108000000000000L, 0x4000000000000000L, 0x8000L, + 0x2000000010000L, 0x8000009018000L, 0x510200c800000010L, false, 0, 0x0L), + 4 + ), + 239912 + ); + + // gentest-2398 + assertEqual( + perft( + Board(0x4889000000L, 0x1000000000000400L, 0x108000000000000L, 0x4000000000000000L, 0x8000L, + 0x2000000000200L, 0x8000009008200L, 0x5102004880000400L, true, 0, 0x0L), + 4 + ), + 290132 + ); + + // gentest-2399 + assertEqual( + perft( + Board(0x4889000000L, 0x80000000400L, 0x108000000000000L, 0x4000000000000000L, 0x4L, 0x2000000000200L, + 0x8000009000204L, 0x4102084880000400L, false, 0, 0x0L), + 4 + ), + 508790 + ); + + // gentest-2400 + assertEqual( + perft( + Board(0x4889000000L, 0x2000000000L, 0x108000000000000L, 0x1000000000000000L, 0x400L, 0x2000000000200L, + 0x8000009000600L, 0x1102006880000000L, true, 0, 0x0L), + 4 + ), + 390970 + ); + + def batch6(): Unit = + // gentest-2401 + assertEqual( + perft( + Board(0x8c9000000L, 0x2000000000L, 0x108000000000000L, 0x1000000000000000L, 0x40000L, + 0x2000000000200L, 0x8000009040200L, 0x11020028c0000000L, false, 0, 0x0L), + 4 + ), + 447494 + ); + + // gentest-2402 + assertEqual( + perft( + Board(0x8c9000000L, 0x400000L, 0x100000200000000L, 0x100000000000L, 0x40000L, 0x2000000000200L, + 0x209040200L, 0x1021008c0400000L, true, 0, 0x0L), + 4 + ), + 416404 + ); + + // gentest-2403 + assertEqual( + perft( + Board(0x8c9000000L, 0x400000L, 0x100000200000000L, 0x10L, 0x20000L, 0x2000000000200L, 0x209020200L, + 0x1020008c0400010L, false, 0, 0x0L), + 4 + ), + 280167 + ); + + // gentest-2404 + assertEqual( + perft( + Board(0x8c9000000L, 0x2000000000L, 0x100000000001000L, 0x10L, 0x20000L, 0x400000000000200L, + 0x9021200L, 0x5000028c0000010L, true, 0, 0x0L), + 4 + ), + 317104 + ); + + // gentest-2405 + assertEqual( + perft( + Board(0x8c1000000L, 0x8000000L, 0x100000000001000L, 0x10L, 0x40000L, 0x400000000000200L, 0x1041200L, + 0x5000008c8000010L, false, 0, 0x0L), + 4 + ), + 105085 + ); + + // gentest-2406 + assertEqual( + perft( + Board(0x8c1000000L, 0x8000000L, 0x40000200000L, 0x1000L, 0x40000L, 0x400000000000200L, 0x1240200L, + 0x4000408c8001000L, true, 0, 0x0L), + 4 + ), + 102750 + ); + + // gentest-2407 + assertEqual( + perft( + Board(0xc1000000L, 0x8000000L, 0x40800000000L, 0x1000L, 0x40000L, 0x4000000000004L, 0x801040004L, + 0x40400c8001000L, false, 0, 0x0L), + 4 + ), + 653453 + ); + + // gentest-2408 + assertEqual( + perft( + Board(0xc0000000L, 0x8000000L, 0x40800000000L, 0x100000000L, 0x40000L, 0x4000000000004L, 0x800040004L, + 0x40401c8000000L, true, 0, 0x0L), + 4 + ), + 698430 + ); + + // gentest-2409 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x40000000100L, 0x100000000L, 0x8000000L, 0x20000000004L, 0x8000104L, + 0x601c0000000L, false, 0, 0x0L), + 4 + ), + 106162 + ); + + // gentest-2410 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x40000000000L, 0x100L, 0x80000000000L, 0x200000004L, 0x80000000004L, + 0x402c0000100L, true, 0, 0x0L), + 4 + ), + 254555 + ); + + // gentest-2411 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x100L, 0x400000000000000L, 0x200000004L, + 0x400000000000004L, 0x20002c0000100L, false, 0, 0x0L), + 4 + ), + 230622 + ); + + // gentest-2412 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80L, 0x100L, 0x2000000000000L, 0x400000004L, 0x2000000000004L, + 0x4c0000180L, true, 0, 0x0L), + 4 + ), + 175501 + ); + + // gentest-2413 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80L, 0x2000L, 0x10000000000L, 0x400000002L, 0x10000000002L, 0x4c0002080L, + false, 0, 0x0L), + 4 + ), + 197432 + ); + + // gentest-2414 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x2000L, 0x1000000000000L, 0x800000002L, 0x1000000000002L, + 0x20008c0002000L, true, 0, 0x0L), + 4 + ), + 95487 + ); + + // gentest-2415 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x2000L, 0x40000L, 0x40000000002L, 0x40002L, + 0x20400c0002000L, false, 0, 0x0L), + 4 + ), + 56357 + ); + + // gentest-2416 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x2000L, 0x0L, 0x40000000002L, 0x2L, 0x20400c0002000L, + true, 0, 0x0L), + 4 + ), + 2892 + ); + + // gentest-2417 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x800L, 0x0L, 0x40000000002L, 0x2L, 0x20400c0000800L, + false, 0, 0x0L), + 4 + ), + 5835 + ); + + // gentest-2418 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80L, 0x800L, 0x0L, 0x20000000004L, 0x4L, 0x200c0000880L, true, 0, 0x0L), + 4 + ), + 4681 + ); + + // gentest-2419 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80L, 0x8L, 0x0L, 0x20000000100L, 0x100L, 0x200c0000088L, false, 0, 0x0L), + 4 + ), + 14920 + ); + + // gentest-2420 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x80L, 0x1L, 0x0L, 0x20000020000L, 0x20000L, 0x200c0000081L, true, 0, 0x0L), + 4 + ), + 20956 + ); + + // gentest-2421 + assertEqual( + perft( + Board(0xc0000000L, 0x0L, 0x2000000000000L, 0x1L, 0x0L, 0x20000040000L, 0x40000L, 0x20200c0000001L, + false, 0, 0x0L), + 4 + ), + 33631 + ); + + // gentest-2422 + assertEqual( + perft( + Board(0x40800000L, 0x0L, 0x2000000000000L, 0x4L, 0x0L, 0x20008000000L, 0x8000000L, 0x2020040800004L, + true, 0, 0x0L), + 4 + ), + 15063 + ); + + // gentest-2423 + assertEqual( + perft( + Board(0x40800000L, 0x0L, 0x100000000000000L, 0x4L, 0x0L, 0x20008000000L, 0x8000000L, + 0x100020040800004L, false, 0, 0x0L), + 4 + ), + 15940 + ); + + // gentest-2424 + assertEqual( + perft( + Board(0x40800000L, 0x0L, 0x100000000000000L, 0x800000000000L, 0x0L, 0x20010000000L, 0x10000000L, + 0x100820040800000L, true, 0, 0x0L), + 4 + ), + 20833 + ); + + // gentest-2425 + assertEqual( + perft( + Board(0x40800000L, 0x0L, 0x40000000000L, 0x800000000000L, 0x0L, 0x20000400000L, 0x400000L, + 0x860040800000L, false, 0, 0x0L), + 4 + ), + 13010 + ); + + // gentest-2426 + assertEqual( + perft( + Board(0x40008000L, 0x0L, 0x100000000000000L, 0x800000000000L, 0x0L, 0x20020000000L, 0x20000000L, + 0x100820040008000L, true, 0, 0x0L), + 4 + ), + 22699 + ); + + // gentest-2427 + assertEqual( + perft( + Board(0x40008000L, 0x0L, 0x100000000000000L, 0x800000000000L, 0x0L, 0x108000000L, 0x8000000L, + 0x100800140008000L, false, 0, 0x0L), + 4 + ), + 22085 + ); + + // gentest-2428 + assertEqual( + perft( + Board(0x40008000L, 0x0L, 0x10000000L, 0x10000000000L, 0x0L, 0x104000000L, 0x4000000L, 0x10150008000L, + true, 0, 0x0L), + 4 + ), + 15305 + ); + + // gentest-2429 + assertEqual( + perft( + Board(0x40008000L, 0x0L, 0x10000000L, 0x20000000000L, 0x0L, 0x104000000L, 0x4000000L, 0x20150008000L, + false, 0, 0x0L), + 4 + ), + 16111 + ); + + // gentest-2430 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x10000000L, 0x800000000080L, 0x0L, 0x100020000L, 0x20000L, 0x800150000080L, + true, 0, 0x0L), + 4 + ), + 29208 + ); + + // gentest-2431 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x10000000L, 0x800000000002L, 0x0L, 0x108000000L, 0x8000000L, + 0x800150000002L, false, 0, 0x0L), + 4 + ), + 40565 + ); + + // gentest-2432 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x10000000L, 0x8000000000000002L, 0x0L, 0x20004000000L, 0x4000000L, + 0x8000020050000002L, true, 0, 0x0L), + 4 + ), + 16108 + ); + + // gentest-2433 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x800000000000002L, 0x0L, 0x20010000000L, 0x10000000L, + 0x800020040000002L, false, 0, 0x0L), + 4 + ), + 26923 + ); + + // gentest-2434 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x1000000000000002L, 0x0L, 0x208000000L, 0x8000000L, + 0x1000000240000002L, true, 0, 0x0L), + 4 + ), + 11349 + ); + + // gentest-2435 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x1000000002000000L, 0x0L, 0x80200000000L, 0x80000000000L, + 0x1000000242000000L, false, 0, 0x0L), + 4 + ), + 11228 + ); + + // gentest-2436 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x1400000000000000L, 0x0L, 0xa00000000L, 0x800000000L, + 0x1400000240000000L, true, 0, 0x0L), + 4 + ), + 4039 + ); + + // gentest-2437 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x1400000000000000L, 0x0L, 0x40004000000L, 0x4000000L, + 0x1400040040000000L, false, 0, 0x0L), + 4 + ), + 13249 + ); + + // gentest-2438 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x8800000000000000L, 0x0L, 0x40008000000L, 0x8000000L, + 0x8800040040000000L, true, 0, 0x0L), + 4 + ), + 21442 + ); + + // gentest-2439 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x8800000000000000L, 0x0L, 0x20000001000L, 0x1000L, + 0x8800020040000000L, false, 0, 0x0L), + 4 + ), + 19687 + ); + + // gentest-2440 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x800000000800000L, 0x0L, 0x400002000L, 0x2000L, 0x800000440800000L, + true, 0, 0x0L), + 4 + ), + 22613 + ); + + // gentest-2441 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x800008000000000L, 0x0L, 0x400002000L, 0x2000L, 0x800008440000000L, + false, 0, 0x0L), + 4 + ), + 27501 + ); + + // gentest-2442 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x800800000L, 0x0L, 0x400000040L, 0x40L, 0xc40800000L, true, 0, 0x0L), + 4 + ), + 13649 + ); + + // gentest-2443 + assertEqual( + perft( + Board(0x40000000L, 0x0L, 0x0L, 0x80000800000L, 0x0L, 0x400000040L, 0x40L, 0x80440800000L, false, 0, + 0x0L), + 4 + ), + 15240 + ); + + // gentest-2444 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2445 + assertEqual( + perft( + Board(0xfe00012400db00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2400dbffL, 0xfffe000100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 264710 + ); + + // gentest-2446 + assertEqual( + perft( + Board(0xfa00052400db00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x20000000008L, 0x1000000000002000L, 0x2400fbefL, 0xf7fa020500000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 630906 + ); + + // gentest-2447 + assertEqual( + perft( + Board(0xfa00052500da00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x20000000008L, + 0x1000000000000010L, 0x2500daffL, 0xb7fa220500000000L, false, 0, 0x8100000000000000L), + 4 + ), + 418219 + ); + + // gentest-2448 + assertEqual( + perft( + Board(0xf2000d25009a00L, 0x200200000000042L, 0x2000000040000024L, 0x8100000000000081L, 0x20000000008L, + 0x1000000000000010L, 0x25009affL, 0xb3f2220d40000000L, true, 0, 0x8100000000000000L), + 4 + ), + 739981 + ); + + // gentest-2449 + assertEqual( + perft( + Board(0xf2000d25108a00L, 0x240000000042L, 0x2000000040000024L, 0x8100000000000081L, 0x20000200000L, + 0x1000000000000010L, 0x25308af7L, 0xb1f2260d40000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1573356 + ); + + // gentest-2450 + assertEqual( + perft( + Board(0xf2000d25108a00L, 0x8008000042L, 0x2000000000000024L, 0x8100000000000081L, 0x20040000000L, + 0x1000000000000010L, 0x65108af7L, 0xb1f2028d08000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1711230 + ); + + // gentest-2451 + assertEqual( + perft( + Board(0xf2000525108800L, 0x8008000042L, 0x2000000000000024L, 0x8100000000000081L, 0x800000200L, + 0x1000000000000010L, 0x8251088f7L, 0xb1f2008508000200L, false, 0, 0x8100000000000000L), + 4 + ), + 1369674 + ); + + // gentest-2452 + assertEqual( + perft( + Board(0xf0040525108800L, 0x8008000042L, 0x2000000000000024L, 0x8100000000000081L, 0x100L, + 0x1000000000000010L, 0x251088f7L, 0xb1f0048508000100L, true, 0, 0x8100000000000000L), + 4 + ), + 452555 + ); + + // gentest-2453 + assertEqual( + perft( + Board(0xf0040524108800L, 0x8008800002L, 0x2000000000000024L, 0x8100000000010080L, 0x1000000L, + 0x1000000000000010L, 0x249188b6L, 0xb1f0048509000000L, false, 0, 0x8100000000000000L), + 4 + ), + 446916 + ); + + // gentest-2454 + assertEqual( + perft( + Board(0xd0240534008800L, 0x8008800002L, 0x2000000000000024L, 0x8200000000010080L, 0x1000000L, + 0x1000000000000010L, 0x348188b6L, 0xb2d0248509000000L, true, 0, 0x8000000000000000L), + 4 + ), + 607956 + ); + + // gentest-2455 + assertEqual( + perft( + Board(0xd0240534008800L, 0xa000800002L, 0x2000000000000024L, 0x8200000000000180L, 0x1000000L, + 0x1000000000001000L, 0x348099a6L, 0xb2d024a501000000L, false, 0, 0x8000000000000000L), + 4 + ), + 459128 + ); + + // gentest-2456 + assertEqual( + perft( + Board(0xd0240534008800L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000180L, 0x40000L, + 0x1000000000001000L, 0x3400b9a6L, 0xb2d024a500040000L, true, 0, 0x8000000000000000L), + 4 + ), + 924631 + ); + + // gentest-2457 + assertEqual( + perft( + Board(0xd024053c008000L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000180L, 0x400000L, + 0x1000000000000800L, 0x3c00a9a6L, 0xb2d024a500400000L, false, 0, 0x8000000000000000L), + 4 + ), + 1176891 + ); + + // gentest-2458 + assertEqual( + perft( + Board(0xd024053c008000L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000480L, 0x80000000L, + 0x8000000000800L, 0x3c00aca6L, 0xa2d824a580000000L, true, 0, 0x0L), + 4 + ), + 931638 + ); + + // gentest-2459 + assertEqual( + perft( + Board(0xd024152c008000L, 0xa000002002L, 0x2000000000000024L, 0x8200000000000480L, 0x80000000L, + 0x1000000000001000L, 0x102c00b4a6L, 0xb2d024a580000000L, false, 0, 0x0L), + 4 + ), + 763846 + ); + + // gentest-2460 + assertEqual( + perft( + Board(0xd024152c008000L, 0x8000102002L, 0x2000000000000220L, 0x8000020000000480L, 0x80000000L, + 0x1000000000001000L, 0x102c00b6a2L, 0xb0d0268580100000L, true, 0, 0x0L), + 4 + ), + 952525 + ); + + // gentest-2461 + assertEqual( + perft( + Board(0xd024350c008000L, 0x8000900002L, 0x2000000000000020L, 0x8000000000000680L, 0x80000000L, + 0x1000000000001000L, 0x300c8094a2L, 0xb0d0248580100200L, false, 0, 0x0L), + 4 + ), + 462933 + ); + + // gentest-2462 + assertEqual( + perft( + Board(0xd024310c008000L, 0x8000900002L, 0x2000000000000020L, 0x8000000000000640L, 0x10000000L, + 0x1000000000001000L, 0x3004809462L, 0xb0d0248118100200L, true, 0, 0x0L), + 4 + ), + 607431 + ); + + // gentest-2463 + assertEqual( + perft( + Board(0xd024310c008000L, 0x8000844000L, 0x2000000000000020L, 0x8000000000000640L, 0x10000000L, + 0x1000000000002000L, 0x300484a460L, 0xb0d0248118004200L, false, 0, 0x0L), + 4 + ), + 549916 + ); + + // gentest-2464 + assertEqual( + perft( + Board(0xc034310c008000L, 0x8000840000L, 0x2004000L, 0x8000000000000640L, 0x10000000L, + 0x1000000000002000L, 0x300484e440L, 0x90c034811a000200L, true, 0, 0x0L), + 4 + ), + 1026170 + ); + + // gentest-2465 + assertEqual( + perft( + Board(0xc034310c008000L, 0x8000840000L, 0x802000000L, 0x8000000000000640L, 0x0L, 0x1000000000002000L, + 0x380484a440L, 0x90c034810a000200L, false, 0, 0x0L), + 4 + ), + 1144379 + ); + + // gentest-2466 + assertEqual( + perft( + Board(0xc0342104088000L, 0x8000840000L, 0x802000000L, 0x8000000000000442L, 0x0L, 0x1000000000002000L, + 0x20280484a440L, 0x90c0148102080002L, true, 0, 0x0L), + 4 + ), + 1392454 + ); + + // gentest-2467 + assertEqual( + perft( + Board(0xc0042104088000L, 0x200000840000L, 0x802000000L, 0x8000000000000442L, 0x0L, + 0x1000000000002000L, 0x280484a440L, 0x90c0240102080002L, false, 0, 0x0L), + 4 + ), + 1254312 + ); + + // gentest-2468 + assertEqual( + perft( + Board(0xc0002904008800L, 0x200010800000L, 0x2000000L, 0x8000000000000442L, 0x0L, 0x1000000000002000L, + 0x201480a440L, 0x90c0200902000802L, true, 0, 0x0L), + 4 + ), + 1109396 + ); + + // gentest-2469 + assertEqual( + perft( + Board(0x80002904008800L, 0x200010800000L, 0x10000L, 0x8040000000000402L, 0x0L, 0x1000000000100000L, + 0x40002014908400L, 0x9080200900010802L, false, 0, 0x0L), + 4 + ), + 1443831 + ); + + // gentest-2470 + assertEqual( + perft( + Board(0x80002904008800L, 0x200010800000L, 0x4L, 0x8040000000000480L, 0x0L, 0x1000000000080000L, + 0x40002014888400L, 0x9080200900000884L, true, 0, 0x0L), + 4 + ), + 652712 + ); + + // gentest-2471 + assertEqual( + perft( + Board(0x80002904008800L, 0x200010800000L, 0x4L, 0x8004000000000480L, 0x0L, 0x800000000080000L, + 0x4002014888400L, 0x8880200900000884L, false, 0, 0x0L), + 4 + ), + 586949 + ); + + // gentest-2472 + assertEqual( + perft( + Board(0x80002904008000L, 0x40800800L, 0x4L, 0x8004000000000480L, 0x8L, 0x800000000080000L, + 0x4002004888c00L, 0x888000094000008cL, true, 0, 0x0L), + 4 + ), + 364803 + ); + + // gentest-2473 + assertEqual( + perft( + Board(0x80002904008000L, 0x40a00000L, 0x4L, 0x8020000000000480L, 0x10L, 0x800000000080000L, + 0x20002004a88400L, 0x8880000940000094L, false, 0, 0x0L), + 4 + ), + 1022295 + ); + + // gentest-2474 + assertEqual( + perft( + Board(0x80002d00008000L, 0x40a00000L, 0x100000L, 0x8020000000000440L, 0x10L, 0x800000000080000L, + 0x20002400a88400L, 0x8880000940100050L, true, 0, 0x0L), + 4 + ), + 1004052 + ); + + // gentest-2475 + assertEqual( + perft( + Board(0x2c01008000L, 0x40a00000L, 0x100000L, 0x8080000000000440L, 0x10L, 0x800000000080000L, + 0x80002400a88400L, 0x8800000841100050L, false, 0, 0x0L), + 4 + ), + 1058374 + ); + + // gentest-2476 + assertEqual( + perft( + Board(0x2c01008000L, 0x40a00000L, 0x800L, 0x8080000000000040L, 0x0L, 0x800000000080000L, + 0x80002400a88000L, 0x8800000841000840L, true, 0, 0x0L), + 4 + ), + 610082 + ); + + // gentest-2477 + assertEqual( + perft( + Board(0x2c01008000L, 0x804000200000L, 0x800L, 0x8002000000000040L, 0x0L, 0x800000000080000L, + 0x2006400288000L, 0x8800800801000840L, false, 0, 0x0L), + 4 + ), + 789737 + ); + + // gentest-2478 + assertEqual( + perft( + Board(0x2c01008000L, 0x804000200000L, 0x10L, 0x8020000000400000L, 0x0L, 0x800000000080000L, + 0x20006400288000L, 0x8800800801400010L, true, 0, 0x0L), + 4 + ), + 231860 + ); + + // gentest-2479 + assertEqual( + perft( + Board(0x2c00018000L, 0x804000200000L, 0x10L, 0x8002000000400000L, 0x0L, 0x800000000080000L, + 0x2006400288000L, 0x8800800800410010L, false, 0, 0x0L), + 4 + ), + 370725 + ); + + // gentest-2480 + assertEqual( + perft( + Board(0x42800008000L, 0x804000200001L, 0x10L, 0x8002000000400000L, 0x0L, 0x800000000080000L, + 0x2046000288000L, 0x8800800800400011L, true, 0, 0x0L), + 4 + ), + 315489 + ); + + // gentest-2481 + assertEqual( + perft( + Board(0x42800400000L, 0x804000200400L, 0x10L, 0x8002000000000000L, 0x0L, 0x800000000001000L, + 0x2046000601000L, 0x8800800800000410L, false, 0, 0x0L), + 4 + ), + 386591 + ); + + // gentest-2482 + assertEqual( + perft( + Board(0x42800400000L, 0x804000201000L, 0x10L, 0x8002000000000000L, 0x0L, 0x800000000000008L, + 0x2046000600008L, 0x8800800800001010L, true, 0, 0x0L), + 4 + ), + 372298 + ); + + // gentest-2483 + assertEqual( + perft( + Board(0x42800400000L, 0x804000201000L, 0x2000000L, 0x8040000000000000L, 0x0L, 0x800000000000008L, + 0x40046000600008L, 0x8800800802001000L, false, 0, 0x0L), + 4 + ), + 360618 + ); + + // gentest-2484 + assertEqual( + perft( + Board(0x42800400000L, 0x804000000804L, 0x2000000L, 0x1040000000000000L, 0x0L, 0x800000000000008L, + 0x40046000400808L, 0x1800800802000004L, true, 0, 0x0L), + 4 + ), + 355322 + ); + + // gentest-2485 + assertEqual( + perft( + Board(0x42800400000L, 0x900000000804L, 0x2000000000000000L, 0x1002000000000000L, 0x0L, + 0x800000000000008L, 0x2142000400808L, 0x3800800800000004L, false, 0, 0x0L), + 4 + ), + 32233 + ); + + // gentest-2486 + assertEqual( + perft( + Board(0x42800400000L, 0x800000001800L, 0x2000000000000000L, 0x2100000000000L, 0x0L, + 0x800000000000400L, 0x2042000400c00L, 0x2800900800001000L, true, 0, 0x0L), + 4 + ), + 455252 + ); + + // gentest-2487 + assertEqual( + perft( + Board(0x42800000000L, 0x800000400800L, 0x2000000000000000L, 0x2100000000000L, 0x0L, + 0x800000000000400L, 0x2042000000c00L, 0x2800900800400000L, false, 0, 0x0L), + 4 + ), + 529034 + ); + + // gentest-2488 + assertEqual( + perft( + Board(0x42800000000L, 0x800000400800L, 0x2000000000000000L, 0x1001000000000L, 0x0L, + 0x800000000000400L, 0x1042000000c00L, 0x2800801800400000L, true, 0, 0x0L), + 4 + ), + 460574 + ); + + // gentest-2489 + assertEqual( + perft( + Board(0x42800000000L, 0x800000600000L, 0x2000000000000000L, 0x1008000000000000L, 0x0L, + 0x800000000000400L, 0x8042000200400L, 0x3800800800400000L, false, 0, 0x0L), + 4 + ), + 16128 + ); + + // gentest-2490 + assertEqual( + perft( + Board(0x42800000000L, 0x4000000008400000L, 0x2000000000000000L, 0x1008000000000000L, 0x0L, + 0x400000000000400L, 0x8042008000400L, 0x7400000800400000L, true, 0, 0x0L), + 4 + ), + 301401 + ); + + // gentest-2491 + assertEqual( + perft( + Board(0x42800000000L, 0x4000000008000020L, 0x2000000000000000L, 0x1008000000000000L, 0x0L, + 0x400000000000400L, 0x8042008000400L, 0x7400000800000020L, false, 0, 0x0L), + 4 + ), + 231286 + ); + + // gentest-2492 + assertEqual( + perft( + Board(0x42800000000L, 0x10000008000020L, 0x80000000000L, 0x1008000000000000L, 0x0L, + 0x400000000000008L, 0x8042008000008L, 0x1410080800000020L, true, 0, 0x0L), + 4 + ), + 145013 + ); + + // gentest-2493 + assertEqual( + perft( + Board(0x2800000000L, 0x140000000020L, 0x80000000000L, 0x1002000000000000L, 0x0L, 0x400000000000008L, + 0x2102000000008L, 0x14000c0800000020L, false, 0, 0x0L), + 4 + ), + 453615 + ); + + // gentest-2494 + assertEqual( + perft( + Board(0x2800000000L, 0x140000000020L, 0x1000000000L, 0x4020000000000000L, 0x0L, 0x400000000000008L, + 0x20102000000008L, 0x4400041800000020L, true, 0, 0x0L), + 4 + ), + 451588 + ); + + // gentest-2495 + assertEqual( + perft( + Board(0x2800000000L, 0x40040000000020L, 0x1000000000L, 0x4000000000000000L, 0x0L, 0x8000000000008L, + 0x40002000000008L, 0x4008041800000020L, false, 0, 0x0L), + 4 + ), + 87498 + ); + + // gentest-2496 + assertEqual( + perft( + Board(0x2800000000L, 0x40040000008000L, 0x1000000000L, 0x4000000000000000L, 0x0L, 0x800000000000010L, + 0x40002000000010L, 0x4800041800008000L, true, 0, 0x0L), + 4 + ), + 56320 + ); + + // gentest-2497 + assertEqual( + perft( + Board(0x200800000000L, 0x40040000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x800000000000008L, + 0x40200000000008L, 0x4800040800408000L, false, 0, 0x0L), + 4 + ), + 60069 + ); + + // gentest-2498 + assertEqual( + perft( + Board(0x200800000000L, 0x140000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x2000000000008L, + 0x300000000008L, 0x4002040800408000L, true, 0, 0x0L), + 4 + ), + 170635 + ); + + // gentest-2499 + assertEqual( + perft( + Board(0x20000008000000L, 0x44000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x2000000000008L, + 0x20004000000008L, 0x4002040008408000L, false, 0, 0x0L), + 4 + ), + 290678 + ); + + // gentest-2500 + assertEqual( + perft( + Board(0x8000000L, 0x2000044000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x100000000000008L, + 0x2000004000000008L, 0x4100040008408000L, true, 0, 0x0L), + 4 + ), + 156938 + ); + + // gentest-2501 + assertEqual( + perft( + Board(0x8000000L, 0x20000c0000008000L, 0x400000L, 0x4000000000000000L, 0x0L, 0x2000000000008L, + 0x2000080000000008L, 0x4002040008408000L, false, 0, 0x0L), + 4 + ), + 40819 + ); + + // gentest-2502 + assertEqual( + perft( + Board(0x8000000L, 0x2020040000000020L, 0x400000L, 0x4000000000000000L, 0x0L, 0x20000000008L, + 0x2020000000000008L, 0x4000060008400020L, true, 0, 0x0L), + 4 + ), + 166510 + ); + + // gentest-2503 + assertEqual( + perft( + Board(0x8000000L, 0x808040000000020L, 0x400000L, 0x4000000000000000L, 0x0L, 0x4000000000008L, + 0x808000000000008L, 0x4004040008400020L, false, 0, 0x0L), + 4 + ), + 135054 + ); + + // gentest-2504 + assertEqual( + perft( + Board(0x8000000L, 0x808040000000020L, 0x80000000000L, 0x4000000000000000L, 0x0L, 0x4000000000004L, + 0x808000000000004L, 0x40040c0008000020L, true, 0, 0x0L), + 4 + ), + 194109 + ); + + // gentest-2505 + assertEqual( + perft( + Board(0x8000000L, 0x2800040000000020L, 0x80000000000L, 0x400000000000L, 0x0L, 0x4000000000002L, + 0x2800000000000002L, 0x44c0008000020L, false, 0, 0x0L), + 4 + ), + 152426 + ); + + // gentest-2506 + assertEqual( + perft( + Board(0x8000000L, 0x2020040000000800L, 0x80000000000L, 0x40000000000000L, 0x0L, 0x4000000000002L, + 0x2020000000000002L, 0x440c0008000800L, true, 0, 0x0L), + 4 + ), + 74905 + ); + + // gentest-2507 + assertEqual( + perft( + Board(0x8000000L, 0x2000080100000800L, 0x0L, 0x40000000000000L, 0x0L, 0x4000000000100L, + 0x2000080000000100L, 0x44000108000800L, false, 0, 0x0L), + 4 + ), + 121904 + ); + + // gentest-2508 + assertEqual( + perft( + Board(0x8000000L, 0x80c0000000800L, 0x0L, 0x20000000000000L, 0x0L, 0x4000000000100L, 0x8080000000100L, + 0x24040008000800L, true, 0, 0x0L), + 4 + ), + 158463 + ); + + // gentest-2509 + assertEqual( + perft( + Board(0x8000000L, 0x10020010000800L, 0x0L, 0x20000000000000L, 0x0L, 0x4000000000100L, 0x20010000100L, + 0x34000008000800L, false, 0, 0x0L), + 4 + ), + 177427 + ); + + // gentest-2510 + assertEqual( + perft( + Board(0x8000000L, 0x420000000800L, 0x0L, 0x80000000000000L, 0x0L, 0x4000000000100L, 0x20000000900L, + 0x84400008000000L, true, 0, 0x0L), + 4 + ), + 130145 + ); + + // gentest-2511 + assertEqual( + perft( + Board(0x8000000L, 0x420000000020L, 0x0L, 0x80L, 0x0L, 0x4000000000001L, 0x20000000021L, + 0x4400008000080L, false, 0, 0x0L), + 4 + ), + 49471 + ); + + // gentest-2512 + assertEqual( + perft( + Board(0x80000L, 0x1004000020L, 0x0L, 0x80L, 0x0L, 0x4000000000001L, 0x4000021L, 0x4001000080080L, + true, 0, 0x0L), + 4 + ), + 62982 + ); + + // gentest-2513 + assertEqual( + perft( + Board(0x80000L, 0x1000100020L, 0x0L, 0x80L, 0x0L, 0x800000000000002L, 0x100022L, 0x800001000080080L, + false, 0, 0x0L), + 4 + ), + 73453 + ); + + // gentest-2514 + assertEqual( + perft( + Board(0x80000L, 0x1000004020L, 0x0L, 0x80L, 0x0L, 0x1000000000000002L, 0x4022L, 0x1000001000080080L, + true, 0, 0x0L), + 4 + ), + 42592 + ); + + // gentest-2515 + assertEqual( + perft( + Board(0x80000L, 0x1000004800L, 0x0L, 0x800000L, 0x0L, 0x1000000000000200L, 0x4a00L, + 0x1000001000880000L, false, 0, 0x0L), + 4 + ), + 122486 + ); + + // gentest-2516 + assertEqual( + perft( + Board(0x80000L, 0x40000004800L, 0x0L, 0x8000000000000000L, 0x0L, 0x1000000000020000L, 0x24800L, + 0x9000040000080000L, true, 0, 0x0L), + 4 + ), + 113911 + ); + + // gentest-2517 + assertEqual( + perft( + Board(0x80000L, 0x10000000404000L, 0x0L, 0x8000000000000000L, 0x0L, 0x1000000000020000L, 0x424000L, + 0x9010000000080000L, false, 0, 0x0L), + 4 + ), + 114490 + ); + + // gentest-2518 + assertEqual( + perft( + Board(0x80000L, 0x10000080400000L, 0x0L, 0x0L, 0x0L, 0x800000000020000L, 0x80420000L, + 0x810000000080000L, true, 0, 0x0L), + 4 + ), + 36928 + ); + + // gentest-2519 + assertEqual( + perft( + Board(0x80000L, 0xa000200000L, 0x0L, 0x0L, 0x0L, 0x800000000020000L, 0x8000220000L, + 0x800002000080000L, false, 0, 0x0L), + 4 + ), + 56744 + ); + + // gentest-2520 + assertEqual( + perft( + Board(0x80000L, 0x408000200000L, 0x0L, 0x0L, 0x0L, 0x800000000040000L, 0x8000240000L, + 0x800400000080000L, true, 0, 0x0L), + 4 + ), + 44607 + ); + + // gentest-2521 + assertEqual( + perft( + Board(0x0L, 0x408000200000L, 0x0L, 0x0L, 0x0L, 0x400000000080000L, 0x8000280000L, 0x400400000000000L, + false, 0, 0x0L), + 4 + ), + 37679 + ); + + // gentest-2522 + assertEqual( + perft( + Board(0x0L, 0x4000008000200000L, 0x0L, 0x0L, 0x0L, 0x400000000001000L, 0x8000201000L, + 0x4400000000000000L, true, 0, 0x0L), + 4 + ), + 26347 + ); + + // gentest-2523 + assertEqual( + perft( + Board(0x0L, 0xa00000000800L, 0x0L, 0x0L, 0x0L, 0x400000000001000L, 0x200000001800L, + 0x400800000000000L, false, 0, 0x0L), + 4 + ), + 29733 + ); + + // gentest-2524 + assertEqual( + perft( + Board(0x0L, 0xa00000000800L, 0x0L, 0x0L, 0x0L, 0x400000000000008L, 0x200000000808L, + 0x400800000000000L, true, 0, 0x0L), + 4 + ), + 24871 + ); + + // gentest-2525 + assertEqual( + perft( + Board(0x0L, 0x4000000000100800L, 0x0L, 0x0L, 0x0L, 0x400000000000008L, 0x100808L, 0x4400000000000000L, + false, 0, 0x0L), + 4 + ), + 22923 + ); + + // gentest-2526 + assertEqual( + perft( + Board(0x0L, 0x4000000000004800L, 0x0L, 0x0L, 0x0L, 0x400000000000008L, 0x4808L, 0x4400000000000000L, + true, 0, 0x0L), + 4 + ), + 16947 + ); + + // gentest-2527 + assertEqual( + perft( + Board(0x0L, 0x4000000000024000L, 0x0L, 0x0L, 0x0L, 0x800000000000010L, 0x24010L, 0x4800000000000000L, + false, 0, 0x0L), + 4 + ), + 16559 + ); + + // gentest-2528 + assertEqual( + perft( + Board(0x0L, 0x4000000000024000L, 0x0L, 0x0L, 0x0L, 0x20000000000008L, 0x24008L, 0x4020000000000000L, + true, 0, 0x0L), + 4 + ), + 22240 + ); + + // gentest-2529 + assertEqual( + perft( + Board(0x0L, 0x4000000080000001L, 0x0L, 0x0L, 0x0L, 0x40000000000008L, 0x80000009L, + 0x4040000000000000L, false, 0, 0x0L), + 4 + ), + 10980 + ); + + // gentest-2530 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2531 + assertEqual( + perft( + Board(0x7f8000000af500L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xaf5ffL, 0xff7f800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 316231 + ); + + // gentest-2532 + assertEqual( + perft( + Board(0x3b8400000af500L, 0x4200000000000042L, 0x2400004000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40000af5fbL, 0xff3b840000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 398912 + ); + + // gentest-2533 + assertEqual( + perft( + Board(0x3b0440000af500L, 0x4200000000000840L, 0x2400000000000020L, 0x8100000000000081L, + 0x800000000000004L, 0x1000000000000010L, 0xafdf5L, 0xff3b044000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 508223 + ); + + // gentest-2534 + assertEqual( + perft( + Board(0x3b0440000a7500L, 0x4200000000000042L, 0x440000000000020L, 0x100000000008081L, + 0x800000000000004L, 0x1000000000000010L, 0xa75f7L, 0x5f7b044000008000L, true, 0, + 0x100000000000081L), + 4 + ), + 899836 + ); + + // gentest-2535 + assertEqual( + perft( + Board(0x3b0440000a7500L, 0x4200000000010040L, 0x440000000000020L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0xb7df1L, 0xdf7b044000000000L, false, 0, + 0x100000000000081L), + 4 + ), + 1289227 + ); + + // gentest-2536 + assertEqual( + perft( + Board(0x390442000a7500L, 0x4200000000010040L, 0x42000000000020L, 0x8100000000000081L, + 0x800000100000000L, 0x1000000000000010L, 0x1000b75f1L, 0xdb7b044200000000L, true, 0, + 0x100000000000081L), + 4 + ), + 1483418 + ); + + // gentest-2537 + assertEqual( + perft( + Board(0x310c42100a6500L, 0x4200000000010040L, 0x42000000000020L, 0x8100000000000081L, + 0x800000000040000L, 0x1000000000000010L, 0x100f65f1L, 0xdb730c4200000000L, false, 0, + 0x100000000000081L), + 4 + ), + 1680279 + ); + + // gentest-2538 + assertEqual( + perft( + Board(0x310c42100a6500L, 0x4200000000011000L, 0x10008000020L, 0x8100000000000081L, 0x800000000040000L, + 0x1000000000000010L, 0x100f75b1L, 0xdb310d4208000000L, true, 0, 0x100000000000081L), + 4 + ), + 1375354 + ); + + // gentest-2539 + assertEqual( + perft( + Board(0x310c42100a4500L, 0x4200000000011000L, 0x10000002020L, 0x8100000000000088L, 0x800000002000000L, + 0x1000000000000004L, 0x120b55acL, 0xdb310d4200002000L, false, 0, 0x100000000000000L), + 4 + ), + 1408223 + ); + + // gentest-2540 + assertEqual( + perft( + Board(0x310c42100a4500L, 0x4200000004001000L, 0x2000000000030L, 0x8100000000000088L, + 0x800000002000000L, 0x1000000000000004L, 0x160a55acL, 0xdb330c4200000010L, true, 0, + 0x100000000000000L), + 4 + ), + 1852247 + ); + + // gentest-2541 + assertEqual( + perft( + Board(0x310c42100a4500L, 0x4200000004001000L, 0x400000000000030L, 0x8100000000000088L, + 0x800000000000040L, 0x1000000000000004L, 0x140a55ecL, 0xdf310c4200000010L, false, 0, + 0x100000000000000L), + 4 + ), + 2112863 + ); + + // gentest-2542 + assertEqual( + perft( + Board(0x310c42110a4400L, 0x4200000004001000L, 0x400000000000030L, 0x180000000000088L, 0x20000000040L, + 0x1000000000000004L, 0x150a54ecL, 0x57b10e4200000010L, true, 0, 0x100000000000000L), + 4 + ), + 2572000 + ); + + // gentest-2543 + assertEqual( + perft( + Board(0x310c02510a4400L, 0x4200000000101000L, 0x400000000000030L, 0x180000000000880L, 0x20000000040L, + 0x1000000000000004L, 0x111a5ce4L, 0x57b10e0240000010L, false, 0, 0x100000000000000L), + 4 + ), + 1461557 + ); + + // gentest-2544 + assertEqual( + perft( + Board(0x310c12410a4400L, 0x4200000000101000L, 0x10000000030L, 0x180000000000880L, 0x20000000040L, + 0x1000000000000004L, 0x10011a5ce4L, 0x53b10f0240000010L, true, 0, 0x100000000000000L), + 4 + ), + 1136985 + ); + + // gentest-2545 + assertEqual( + perft( + Board(0x211c1243084400L, 0x4200000000101000L, 0x10000000030L, 0x180000000000800L, 0x20000000040L, + 0x1000000000000004L, 0x80001003185c64L, 0x53211f0240000010L, false, 0, 0x100000000000000L), + 4 + ), + 782460 + ); + + // gentest-2546 + assertEqual( + perft( + Board(0x11c3342084400L, 0x4200000000101000L, 0x400000000000030L, 0x180000000000800L, 0x20000000040L, + 0x1000000000000004L, 0x80001102185c64L, 0x57011e2240000010L, true, 0, 0x100000000000000L), + 4 + ), + 962993 + ); + + // gentest-2547 + assertEqual( + perft( + Board(0x11d3242084400L, 0x210000800001000L, 0x400000000000030L, 0x180000000000800L, 0x20000000040L, + 0x1000000000000004L, 0x80011802085c64L, 0x17111e2240000010L, false, 0, 0x100000000000000L), + 4 + ), + 984312 + ); + + // gentest-2548 + assertEqual( + perft( + Board(0x11d3242084400L, 0x200000800001000L, 0x400000000400020L, 0x140000000000800L, 0x20000000040L, + 0x1000000000000004L, 0x40011002085c64L, 0x17011e2a40400000L, true, 0, 0x100000000000000L), + 4 + ), + 794231 + ); + + // gentest-2549 + assertEqual( + perft( + Board(0x11d1242084400L, 0x200000800001000L, 0x400000000400020L, 0x100000000000800L, 0x20000008000L, + 0x1000000000000004L, 0x1100208dc24L, 0x17011e0a40400000L, false, 0, 0x100000000000000L), + 4 + ), + 540121 + ); + + // gentest-2550 + assertEqual( + perft( + Board(0x11d12420c4000L, 0x200000020001000L, 0x400000000400020L, 0x100000000000800L, 0x400008000L, + 0x1000000000000004L, 0x110020cd824L, 0x17011c0660400000L, true, 0, 0x100000000000000L), + 4 + ), + 499594 + ); + + // gentest-2551 + assertEqual( + perft( + Board(0x11d1a42044000L, 0x200000020001000L, 0x2000000400020L, 0x100000000000800L, 0x400008000L, + 0x1000000000000004L, 0x1180204d824L, 0x13031c0660400000L, false, 0, 0x100000000000000L), + 4 + ), + 660460 + ); + + // gentest-2552 + assertEqual( + perft( + Board(0x11d1a42044000L, 0x200000000000000L, 0x2000000003000L, 0x100000000000800L, 0x400008000L, + 0x1000000000000004L, 0x1180204d804L, 0x13031c0640002000L, true, 0, 0x100000000000000L), + 4 + ), + 661699 + ); + + // gentest-2553 + assertEqual( + perft( + Board(0x11c1a42044000L, 0x200000000000000L, 0x3000L, 0x100000000000800L, 0x400008000L, + 0x8000000000004L, 0x10000180204d804L, 0x2091c0640002000L, false, 0, 0x0L), + 4 + ), + 632994 + ); + + // gentest-2554 + assertEqual( + perft( + Board(0x11c1a42044000L, 0x200000000000000L, 0x3000L, 0x100000000000800L, 0x8000000400000000L, + 0x4000000000004L, 0x8100001802045804L, 0x2051c0640002000L, true, 0, 0x0L), + 4 + ), + 648095 + ); + + // gentest-2555 + assertEqual( + perft( + Board(0x11c0a42044000L, 0x200000000000000L, 0x8001000L, 0x100000000000800L, 0x8000000400000000L, + 0x4000000000400L, 0x8100080802045c00L, 0x205140648000000L, false, 0, 0x0L), + 4 + ), + 162891 + ); + + // gentest-2556 + assertEqual( + perft( + Board(0x1140242044000L, 0x200000000000000L, 0x400001000L, 0x100000000000800L, 0x8000080000000000L, + 0x4000000000400L, 0x8100100002045c00L, 0x2050c0640000000L, true, 0, 0x0L), + 4 + ), + 794114 + ); + + // gentest-2557 + assertEqual( + perft( + Board(0x1140242044000L, 0x10000000000L, 0x400001000L, 0x400000000000800L, 0x880000000000L, + 0x4000000000400L, 0x400900002045c00L, 0x50d0640000000L, false, 0, 0x0L), + 4 + ), + 117449 + ); + + // gentest-2558 + assertEqual( + perft( + Board(0x1140242044000L, 0x10000000000L, 0x400001000L, 0x400000000000800L, 0x4200000000000L, + 0x20000000400L, 0x400300002045c00L, 0x5070640000000L, true, 0, 0x0L), + 4 + ), + 1223299 + ); + + // gentest-2559 + assertEqual( + perft( + Board(0x1100042044000L, 0x10000000000L, 0x40000000040L, 0x400000000000800L, 0x4200000000000L, + 0x20000000400L, 0x400340002044c00L, 0x5030040000040L, false, 0, 0x0L), + 4 + ), + 1266843 + ); + + // gentest-2560 + assertEqual( + perft( + Board(0x1100042044000L, 0x10000000000L, 0x40000008000L, 0x100000000000800L, 0x800200000000000L, + 0x20000000400L, 0x100340002044c00L, 0x801030040008000L, true, 0, 0x0L), + 4 + ), + 1358764 + ); + + // gentest-2561 + assertEqual( + perft( + Board(0x1100042004000L, 0x0L, 0x40000008000L, 0x100000000080000L, 0x800200000000000L, 0x20000000400L, + 0x100340002084400L, 0x801020040008000L, false, 0, 0x0L), + 4 + ), + 1710905 + ); + + // gentest-2562 + assertEqual( + perft( + Board(0x1100042004000L, 0x0L, 0x40020000000L, 0x100000000080000L, 0x880000000000L, 0x20000000400L, + 0x100940002084400L, 0x10a0060000000L, true, 0, 0x0L), + 4 + ), + 1551325 + ); + + // gentest-2563 + assertEqual( + perft( + Board(0x1100042004000L, 0x0L, 0x40020000000L, 0x8000000000000800L, 0x800800000000L, 0x20000000400L, + 0x8000940002004c00L, 0x1020860000000L, false, 0, 0x0L), + 4 + ), + 1370480 + ); + + // gentest-2564 + assertEqual( + perft( + Board(0x100142004000L, 0x0L, 0x40020000000L, 0x8000000000000000L, 0x800000000800L, 0x20000020000L, + 0x8000940002024000L, 0x20160000800L, true, 0, 0x0L), + 4 + ), + 962135 + ); + + // gentest-2565 + assertEqual( + perft( + Board(0x100142004000L, 0x0L, 0x40000400000L, 0x200000000000000L, 0x800000000800L, 0x20000010000L, + 0x200940002014000L, 0x20140400800L, false, 0, 0x0L), + 4 + ), + 142526 + ); + + // gentest-2566 + assertEqual( + perft( + Board(0x100042004000L, 0x0L, 0x40000400000L, 0x200000000000000L, 0x40000000000800L, 0x10000010000L, + 0x240140000014000L, 0x10042400800L, true, 0, 0x0L), + 4 + ), + 77687 + ); + + // gentest-2567 + assertEqual( + perft( + Board(0x100040004000L, 0x0L, 0x2000000400000L, 0x2000000L, 0x48000000000000L, 0x10000010000L, + 0x42100002014000L, 0x8010040400000L, false, 0, 0x0L), + 4 + ), + 94163 + ); + + // gentest-2568 + assertEqual( + perft( + Board(0x100040004000L, 0x0L, 0x2000000400000L, 0x2000000L, 0x1000000000040000L, 0x1000000010000L, + 0x2100002054000L, 0x1001000040400000L, true, 0, 0x0L), + 4 + ), + 892567 + ); + + // gentest-2569 + assertEqual( + perft( + Board(0x100040004000L, 0x0L, 0x800002000L, 0x2000000L, 0x1000000000000010L, 0x1000000010000L, + 0x100802014010L, 0x1001000040002000L, false, 0, 0x0L), + 4 + ), + 809570 + ); + + // gentest-2570 + assertEqual( + perft( + Board(0x100040004000L, 0x0L, 0x880000000L, 0x2000000L, 0x1000000000100000L, 0x10000010000L, + 0x100802114000L, 0x10000100c0000000L, true, 0, 0x0L), + 4 + ), + 833232 + ); + + // gentest-2571 + assertEqual( + perft( + Board(0x100040004000L, 0x0L, 0x40000000010L, 0x2000000L, 0x1000000000020000L, 0x10000010000L, + 0x140002034000L, 0x1000010040000010L, false, 0, 0x0L), + 4 + ), + 579238 + ); + + // gentest-2572 + assertEqual( + perft( + Board(0x100040004000L, 0x0L, 0x40000000010L, 0x20000000L, 0x2000000000020000L, 0x1000000010000L, + 0x140020034000L, 0x2001000040000010L, true, 0, 0x0L), + 4 + ), + 137139 + ); + + // gentest-2573 + assertEqual( + perft( + Board(0x100040004000L, 0x0L, 0x40000040000L, 0x200000L, 0x20000L, 0x1000000010000L, 0x140000234000L, + 0x1000040040000L, false, 0, 0x0L), + 4 + ), + 181861 + ); + + // gentest-2574 + assertEqual( + perft( + Board(0x100000204000L, 0x0L, 0x40040000000000L, 0x0L, 0x20000L, 0x1000000000100L, 0x140000024100L, + 0x41000000200000L, true, 0, 0x0L), + 4 + ), + 116555 + ); + + // gentest-2575 + assertEqual( + perft( + Board(0x100000204000L, 0x0L, 0x40040000000000L, 0x0L, 0x10000L, 0x20000020000L, 0x140000034000L, + 0x40020000200000L, false, 0, 0x0L), + 4 + ), + 152651 + ); + + // gentest-2576 + assertEqual( + perft( + Board(0x100000204000L, 0x0L, 0x40000000001L, 0x0L, 0x1000000L, 0x20000020000L, 0x140001024000L, + 0x20000200001L, true, 0, 0x0L), + 4 + ), + 117560 + ); + + // gentest-2577 + assertEqual( + perft( + Board(0x100000204000L, 0x0L, 0x1010000000L, 0x0L, 0x1000000L, 0x20000020000L, 0x100011024000L, + 0x21000200000L, false, 0, 0x0L), + 4 + ), + 234358 + ); + + // gentest-2578 + assertEqual( + perft( + Board(0x100000204000L, 0x0L, 0x1010000000L, 0x0L, 0x100L, 0x20000020000L, 0x100010024100L, + 0x21000200000L, true, 0, 0x0L), + 4 + ), + 238025 + ); + + // gentest-2579 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x4000000200000L, 0x0L, 0x1000000000000L, 0x20000020000L, + 0x1100000224000L, 0x4020000000000L, false, 0, 0x0L), + 4 + ), + 12741 + ); + + // gentest-2580 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x200000000200000L, 0x0L, 0x8000000L, 0x200020000L, 0x100008224000L, + 0x200000200000000L, true, 0, 0x0L), + 4 + ), + 114804 + ); + + // gentest-2581 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x200000040000000L, 0x0L, 0x4000000L, 0x20000020000L, 0x100044024000L, + 0x200020000000000L, false, 0, 0x0L), + 4 + ), + 98469 + ); + + // gentest-2582 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x60000000L, 0x0L, 0x4000000L, 0x1000000000200L, 0x100044004200L, + 0x1000020000000L, true, 0, 0x0L), + 4 + ), + 143145 + ); + + // gentest-2583 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x40000004L, 0x0L, 0x40000L, 0x1000000000002L, 0x100040044002L, + 0x1000000000004L, false, 0, 0x0L), + 4 + ), + 138151 + ); + + // gentest-2584 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x20040000000L, 0x0L, 0x40000L, 0x1000000000400L, 0x100040044400L, + 0x1020000000000L, true, 0, 0x0L), + 4 + ), + 134554 + ); + + // gentest-2585 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x8200000L, 0x0L, 0x800L, 0x1000000000400L, 0x100000204c00L, + 0x1000008000000L, false, 0, 0x0L), + 4 + ), + 196825 + ); + + // gentest-2586 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x100000000000040L, 0x0L, 0x800L, 0x1000000000400L, 0x100100000004c00L, + 0x1000000000040L, true, 0, 0x0L), + 4 + ), + 89161 + ); + + // gentest-2587 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x202000L, 0x0L, 0x100000000L, 0x1000000000400L, 0x100100204400L, + 0x1000000002000L, false, 0, 0x0L), + 4 + ), + 13307 + ); + + // gentest-2588 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x8000002000L, 0x0L, 0x100000000L, 0x400000000000400L, 0x108100004400L, + 0x400000000002000L, true, 0, 0x0L), + 4 + ), + 134780 + ); + + // gentest-2589 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x8000002000L, 0x0L, 0x80000L, 0x200000000000400L, 0x108000084400L, + 0x200000000002000L, false, 0, 0x0L), + 4 + ), + 220826 + ); + + // gentest-2590 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x1008000000000L, 0x0L, 0x800000L, 0x4000000000400L, 0x108000804400L, + 0x5000000000000L, true, 0, 0x0L), + 4 + ), + 128396 + ); + + // gentest-2591 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x20040000000L, 0x0L, 0x800000L, 0x4000000000008L, 0x100040804008L, + 0x4020000000000L, false, 0, 0x0L), + 4 + ), + 110424 + ); + + // gentest-2592 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x3000L, 0x0L, 0x800000L, 0x4000000000008L, 0x100000805008L, + 0x4000000002000L, true, 0, 0x0L), + 4 + ), + 151205 + ); + + // gentest-2593 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x8000000000000000L, 0x4000000000008L, + 0x8000100000005008L, 0x5000000000000L, false, 0, 0x0L), + 4 + ), + 129619 + ); + + // gentest-2594 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x1L, 0x4000000000008L, 0x100000005009L, + 0x5000000000000L, true, 0, 0x0L), + 4 + ), + 108925 + ); + + // gentest-2595 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x2000000000000000L, 0x800000000000008L, + 0x2000100000005008L, 0x801000000000000L, false, 0, 0x0L), + 4 + ), + 10896 + ); + + // gentest-2596 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x1000000001000L, 0x0L, 0x4000000000000000L, 0x40000000008L, + 0x4000100000005008L, 0x1040000000000L, true, 0, 0x0L), + 4 + ), + 101389 + ); + + // gentest-2597 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x1000000000020L, 0x0L, 0x400000000000L, 0x2000000000008L, + 0x500000004028L, 0x3000000000000L, false, 0, 0x0L), + 4 + ), + 127685 + ); + + // gentest-2598 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x8000020L, 0x0L, 0x2000000000L, 0x100000000000008L, 0x102000004028L, + 0x100000008000000L, true, 0, 0x0L), + 4 + ), + 156576 + ); + + // gentest-2599 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x400000020L, 0x0L, 0x2000000000L, 0x100000000080000L, 0x102000084020L, + 0x100000400000000L, false, 0, 0x0L), + 4 + ), + 122141 + ); + + // gentest-2600 + assertEqual( + perft( + Board(0x100000004000L, 0x0L, 0x80000000020L, 0x0L, 0x200000000000L, 0x2000000080000L, 0x300000084020L, + 0x2080000000000L, true, 0, 0x0L), + 4 + ), + 192073 + ); + + // gentest-2601 + assertEqual( + perft( + Board(0x10000000004000L, 0x0L, 0x80000000020L, 0x0L, 0x20000000L, 0x40000080000L, 0x10000020084020L, + 0xc0000000000L, false, 0, 0x0L), + 4 + ), + 192453 + ); + + // gentest-2602 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x200000000000020L, 0x0L, 0x1000000020000000L, 0x2000000080000L, + 0x1000000020084020L, 0x202000000000000L, true, 0, 0x0L), + 4 + ), + 172814 + ); + + // gentest-2603 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x80000000020L, 0x0L, 0x200008000L, 0x2000000080000L, 0x20008c020L, + 0x2080000000000L, false, 0, 0x0L), + 4 + ), + 66088 + ); + + // gentest-2604 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x200000000000020L, 0x0L, 0x4000008000L, 0x100000000080000L, 0x400008c020L, + 0x300000000000000L, true, 0, 0x0L), + 4 + ), + 129773 + ); + + // gentest-2605 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x200000000000020L, 0x0L, 0x40008000L, 0x1000008000000L, 0x4800c020L, + 0x201000000000000L, false, 0, 0x0L), + 4 + ), + 129604 + ); + + // gentest-2606 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x80000000020L, 0x0L, 0x40008000L, 0x1000000080000L, 0x4008c020L, + 0x1080000000000L, true, 0, 0x0L), + 4 + ), + 251338 + ); + + // gentest-2607 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x1000000020L, 0x0L, 0x800000200000L, 0x1000000080000L, 0x800000284020L, + 0x1001000000000L, false, 0, 0x0L), + 4 + ), + 278978 + ); + + // gentest-2608 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x100000020L, 0x0L, 0x8000000000200000L, 0x1000000080000L, 0x8000000000284020L, + 0x1000100000000L, true, 0, 0x0L), + 4 + ), + 140199 + ); + + // gentest-2609 + assertEqual( + perft( + Board(0x4000L, 0x0L, 0x800000000000020L, 0x0L, 0xa00000L, 0x1000000080000L, 0xa84020L, + 0x801000000000000L, false, 0, 0x0L), + 4 + ), + 157237 + ); + + // gentest-2610 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x400020L, 0x0L, 0xa00000L, 0x1000000080000L, 0xa80020L, 0x1000000400000L, true, 0, + 0x0L), + 4 + ), + 179368 + ); + + // gentest-2611 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20L, 0x0L, 0x804000L, 0x20000080000L, 0x884020L, 0x20000000000L, false, 0, 0x0L), + 4 + ), + 46892 + ); + + // gentest-2612 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20L, 0x0L, 0x8000000004000L, 0x20000080000L, 0x8000000084020L, 0x20000000000L, + true, 0, 0x0L), + 4 + ), + 16927 + ); + + // gentest-2613 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20L, 0x0L, 0x8000010000000L, 0x400080000L, 0x8000010080020L, 0x400000000L, false, + 0, 0x0L), + 4 + ), + 7321 + ); + + // gentest-2614 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20L, 0x0L, 0x1008000000000000L, 0x400080000L, 0x1008000000080020L, 0x400000000L, + true, 0, 0x0L), + 4 + ), + 11111 + ); + + // gentest-2615 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x800000L, 0x0L, 0x1020000000000000L, 0x20000080000L, 0x1020000000880000L, + 0x20000000000L, false, 0, 0x0L), + 4 + ), + 22906 + ); + + // gentest-2616 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2617 + assertEqual( + perft( + Board(0xef10000402f900L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x402f9ffL, 0xffef100000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 437655 + ); + + // gentest-2618 + assertEqual( + perft( + Board(0x6f90001402e900L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x200000000008L, 0x1000000000000010L, 0x1402e9ffL, 0xf76fb00000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1011835 + ); + + // gentest-2619 + assertEqual( + perft( + Board(0x6f90001d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x80000008L, + 0x1000000000000010L, 0x1d02e0ffL, 0xf76f900080000000L, false, 0, 0x8100000000000081L), + 4 + ), + 1468477 + ); + + // gentest-2620 + assertEqual( + perft( + Board(0x6f90001d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x400008L, + 0x10000000000800L, 0x1d02e8efL, 0xe77f900000400000L, true, 0, 0x0L), + 4 + ), + 1032281 + ); + + // gentest-2621 + assertEqual( + perft( + Board(0x4f90201d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x600000L, + 0x10000000000800L, 0x1d23e8e6L, 0xe75f902000400000L, false, 0, 0x0L), + 4 + ), + 1240556 + ); + + // gentest-2622 + assertEqual( + perft( + Board(0xdd0221d02e000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x400000L, + 0x10000000000800L, 0x1d43e8e6L, 0xe71dd02200000000L, true, 0, 0x0L), + 4 + ), + 912456 + ); + + // gentest-2623 + assertEqual( + perft( + Board(0x5d02a1f00e000L, 0x4200000000000042L, 0x2400000000080004L, 0x8100000000010080L, 0x400000L, + 0x10000000000800L, 0x1f49e8c6L, 0xe715d02a00000000L, false, 0, 0x0L), + 4 + ), + 1125496 + ); + + // gentest-2624 + assertEqual( + perft( + Board(0x5d02a1f00e000L, 0x4200000000000042L, 0x2000010000080004L, 0x8100000000010080L, 0x80000000000L, + 0x200000000800L, 0x8001f09e8c6L, 0xe305f12a00000000L, true, 0, 0x0L), + 4 + ), + 855744 + ); + + // gentest-2625 + assertEqual( + perft( + Board(0x5d02a1f00e000L, 0x4008000000000042L, 0x2000010000000404L, 0x8100000000010080L, 0x80000000000L, + 0x200000000008L, 0x8001f01e4ceL, 0xe10df12a00000000L, false, 0, 0x0L), + 4 + ), + 1726615 + ); + + // gentest-2626 + assertEqual( + perft( + Board(0x1d82a1f00e000L, 0x4200000000000042L, 0x2000010000080004L, 0x8100000000010080L, 0x0L, + 0x200000000008L, 0x1f09e0ceL, 0xe301f92a00000000L, true, 0, 0x0L), + 4 + ), + 499254 + ); + + // gentest-2627 + assertEqual( + perft( + Board(0x1d8221f00e000L, 0x4200000000000042L, 0x2000010000080800L, 0x8100000000010080L, 0x0L, + 0x200000000008L, 0x1b09e8caL, 0xe301f92204000000L, false, 0, 0x0L), + 4 + ), + 468347 + ); + + // gentest-2628 + assertEqual( + perft( + Board(0x1d8201b08e000L, 0x4200000000001002L, 0x2000010000000800L, 0x8100000000010080L, 0x0L, + 0x200000000008L, 0x1a01f88aL, 0xe301f92001080000L, true, 0, 0x0L), + 4 + ), + 449141 + ); + + // gentest-2629 + assertEqual( + perft( + Board(0x198601b08e000L, 0x4200000000001002L, 0x2000010000000010L, 0x8100000000010080L, 0x0L, + 0x200000000004L, 0x1a01f096L, 0xe301b96001080000L, false, 0, 0x0L), + 4 + ), + 399581 + ); + + // gentest-2630 + assertEqual( + perft( + Board(0x198681300e800L, 0x4200000000001002L, 0x2000000200000010L, 0x8100000000010080L, 0x0L, + 0x200000000004L, 0x81201f096L, 0xe301b86201000800L, true, 0, 0x0L), + 4 + ), + 176385 + ); + + // gentest-2631 + assertEqual( + perft( + Board(0x99681300e000L, 0x4200000000001002L, 0x2000000200000010L, 0x8100000000080080L, 0x0L, + 0x200000000800L, 0x81208f892L, 0xe300b96201000000L, false, 0, 0x0L), + 4 + ), + 619077 + ); + + // gentest-2632 + assertEqual( + perft( + Board(0x99681300e000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000080080L, 0x0L, + 0x200000000400L, 0x81208f492L, 0x4390b96201000000L, true, 0, 0x0L), + 4 + ), + 753764 + ); + + // gentest-2633 + assertEqual( + perft( + Board(0x996892412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000080080L, 0x0L, + 0x200000000400L, 0x892483492L, 0x4390b96200010000L, false, 0, 0x0L), + 4 + ), + 726111 + ); + + // gentest-2634 + assertEqual( + perft( + Board(0x9821d2412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000080080L, 0x0L, + 0x200000000400L, 0x100092483492L, 0x4390a82340010000L, true, 0, 0x0L), + 4 + ), + 793128 + ); + + // gentest-2635 + assertEqual( + perft( + Board(0x9821d2412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000040080L, 0x0L, + 0x40000000020000L, 0x100092463092L, 0x43d0882340010000L, false, 0, 0x0L), + 4 + ), + 758757 + ); + + // gentest-2636 + assertEqual( + perft( + Board(0x9800f3412000L, 0x4200000000001002L, 0x10000200000010L, 0x180000000040080L, 0x0L, + 0x40000000000400L, 0x100092443492L, 0x43d0880261010000L, true, 0, 0x0L), + 4 + ), + 646112 + ); + + // gentest-2637 + assertEqual( + perft( + Board(0x9800f3412000L, 0x4200000000000006L, 0x1010000000000800L, 0x180000000040080L, 0x0L, + 0x40000000000400L, 0x100092442c86L, 0x53d0880061010000L, false, 0, 0x0L), + 4 + ), + 767455 + ); + + // gentest-2638 + assertEqual( + perft( + Board(0x9800f3012000L, 0x4200000000000006L, 0x1010000000000800L, 0x8100000000040080L, 0x0L, + 0x2000000000000400L, 0x1000b2042c86L, 0xf310880041010000L, true, 0, 0x0L), + 4 + ), + 578528 + ); + + // gentest-2639 + assertEqual( + perft( + Board(0x9800f3012000L, 0x200200000000006L, 0x1010000000000800L, 0x8100040000000080L, 0x0L, + 0x2000000000000400L, 0x1400b2002c86L, 0xb310a80041010000L, false, 0, 0x0L), + 4 + ), + 665380 + ); + + // gentest-2640 + assertEqual( + perft( + Board(0x9800f3012000L, 0x200200000000006L, 0x1010000000000800L, 0x8500000000000080L, 0x0L, + 0x80000000000400L, 0x4001000b2002c86L, 0x9390a80041010000L, true, 0, 0x0L), + 4 + ), + 785564 + ); + + // gentest-2641 + assertEqual( + perft( + Board(0x9800b3412000L, 0x200200000000006L, 0x1010000000000800L, 0x8100040000008000L, 0x0L, + 0x80000000000400L, 0x1400b200ac06L, 0x9390a80001410000L, false, 0, 0x0L), + 4 + ), + 767289 + ); + + // gentest-2642 + assertEqual( + perft( + Board(0x1880b3412000L, 0x4200000000000006L, 0x1010000000000800L, 0x8100020000008000L, 0x0L, + 0x80000000000400L, 0x1200b200ac06L, 0xd390088001410000L, true, 0, 0x0L), + 4 + ), + 477933 + ); + + // gentest-2643 + assertEqual( + perft( + Board(0x1880b3410000L, 0x4200000000080002L, 0x10000200000800L, 0x8100020000008000L, 0x0L, + 0x80000000000400L, 0x1200b2488c02L, 0xc390088201010000L, false, 0, 0x0L), + 4 + ), + 515951 + ); + + // gentest-2644 + assertEqual( + perft( + Board(0x1880b3410000L, 0x2008000000c0000L, 0x18000000000800L, 0x8100020000008000L, 0x0L, + 0x80000000000400L, 0x1200b24c8c00L, 0x8398888001010000L, true, 0, 0x0L), + 4 + ), + 1046443 + ); + + // gentest-2645 + assertEqual( + perft( + Board(0x1880f3010000L, 0x4200001000040000L, 0x18000000000800L, 0x8100020000008000L, 0x0L, + 0x80000000000400L, 0x1210f2048c00L, 0xc398088001010000L, false, 0, 0x0L), + 4 + ), + 761219 + ); + + // gentest-2646 + assertEqual( + perft( + Board(0x1880f3010000L, 0x200201000040000L, 0x410000000000800L, 0x8100020000008000L, 0x0L, + 0x80000000000002L, 0x1210f2048802L, 0x8790288001010000L, true, 0, 0x0L), + 4 + ), + 988565 + ); + + // gentest-2647 + assertEqual( + perft( + Board(0x1880a3010000L, 0x200001010040000L, 0x410000000000800L, 0x8100020000000080L, 0x0L, + 0x80000000000002L, 0x1290a2040882L, 0x8790080011010000L, false, 0, 0x0L), + 4 + ), + 1241435 + ); + + // gentest-2648 + assertEqual( + perft( + Board(0x1880a3010000L, 0x200001010040000L, 0x410000000000004L, 0x180020000000080L, 0x0L, + 0x40000000000002L, 0x1290a2040086L, 0x7d0080011010000L, true, 0, 0x0L), + 4 + ), + 1153122 + ); + + // gentest-2649 + assertEqual( + perft( + Board(0x1882a1010000L, 0x1010040000L, 0xc00000000000004L, 0x380000000000080L, 0x0L, 0x40000000000002L, + 0x2001092a0040086L, 0xdc0080011010000L, false, 0, 0x0L), + 4 + ), + 1049715 + ); + + // gentest-2650 + assertEqual( + perft( + Board(0x1882a1000100L, 0x1810000000L, 0x404000000000004L, 0x380000000000080L, 0x0L, 0x40000000000002L, + 0x200109aa0000086L, 0x5c4080011000100L, true, 0, 0x0L), + 4 + ), + 115424 + ); + + // gentest-2651 + assertEqual( + perft( + Board(0x882a1000000L, 0x1810000000L, 0x4100000000004L, 0x380000000000080L, 0x0L, 0x40000000000002L, + 0x200009aa0000086L, 0x1c4180011000000L, false, 0, 0x0L), + 4 + ), + 1097133 + ); + + // gentest-2652 + assertEqual( + perft( + Board(0x802a1000000L, 0x1800040000L, 0x4100000000004L, 0x300008000000080L, 0x0L, 0x40000000000400L, + 0x200001aa0000484L, 0x144188001040000L, true, 0, 0x0L), + 4 + ), + 1678048 + ); + + // gentest-2653 + assertEqual( + perft( + Board(0x12a1000000L, 0x800040000L, 0x4100000000004L, 0x300008000200000L, 0x0L, 0x40000000000400L, + 0x200000aa0200404L, 0x144109001040000L, false, 0, 0x0L), + 4 + ), + 1343056 + ); + + // gentest-2654 + assertEqual( + perft( + Board(0x12a1000000L, 0x800040000L, 0x100002000004L, 0x300008000000020L, 0x0L, 0x40000000000400L, + 0x200000aa0000424L, 0x140109003040000L, true, 0, 0x0L), + 4 + ), + 1282534 + ); + + // gentest-2655 + assertEqual( + perft( + Board(0x12a1000000L, 0x10000000040000L, 0x100002000004L, 0x100008000000020L, 0x0L, 0x20000000000400L, + 0x1100002a0000424L, 0x20109003040000L, false, 0, 0x0L), + 4 + ), + 993938 + ); + + // gentest-2656 + assertEqual( + perft( + Board(0x12a1000000L, 0x10000000040000L, 0x8000002000800L, 0x100002000000020L, 0x0L, 0x20000000000400L, + 0x1100002a0000c20L, 0x28003003040000L, true, 0, 0x0L), + 4 + ), + 956619 + ); + + // gentest-2657 + assertEqual( + perft( + Board(0x1281000000L, 0x10000010000000L, 0x8000002000800L, 0x2100000020L, 0x0L, 0x20000000000400L, + 0x10001380000c20L, 0x28002013000000L, false, 0, 0x0L), + 4 + ), + 1033684 + ); + + // gentest-2658 + assertEqual( + perft( + Board(0x1281000000L, 0x10000000L, 0x8000100000800L, 0x2000000020L, 0x0L, 0x10000000000002L, + 0x1280000822L, 0x18002111000000L, true, 0, 0x0L), + 4 + ), + 603337 + ); + + // gentest-2659 + assertEqual( + perft( + Board(0x1281000000L, 0x10000000L, 0x1000000100040000L, 0x2000000020L, 0x0L, 0x10000000000200L, + 0x1280040220L, 0x1010002111000000L, false, 0, 0x0L), + 4 + ), + 552943 + ); + + // gentest-2660 + assertEqual( + perft( + Board(0x1281000000L, 0x400000L, 0x1000000000000010L, 0x2000000020L, 0x0L, 0x10000000000200L, + 0x1280000220L, 0x1010002001400010L, true, 0, 0x0L), + 4 + ), + 219506 + ); + + // gentest-2661 + assertEqual( + perft( + Board(0x100281000000L, 0x400000L, 0x1000000100000000L, 0x2000000000L, 0x0L, 0x10000000000200L, + 0x102280000200L, 0x1010000101400000L, false, 0, 0x0L), + 4 + ), + 161871 + ); + + // gentest-2662 + assertEqual( + perft( + Board(0x100280010000L, 0x400000L, 0x1800000000000000L, 0x20L, 0x0L, 0x10000000000200L, + 0x100280000220L, 0x1810000000410000L, true, 0, 0x0L), + 4 + ), + 51714 + ); + + // gentest-2663 + assertEqual( + perft( + Board(0x100280010000L, 0x400000L, 0x1000020000000000L, 0x2L, 0x0L, 0x10000000000001L, 0x100280000003L, + 0x1010020000410000L, false, 0, 0x0L), + 4 + ), + 102211 + ); + + // gentest-2664 + assertEqual( + perft( + Board(0x100280010000L, 0x400000L, 0x20020000000000L, 0x10L, 0x0L, 0x10000000000001L, 0x100280000011L, + 0x30020000410000L, true, 0, 0x0L), + 4 + ), + 113175 + ); + + // gentest-2665 + assertEqual( + perft( + Board(0x20000280010000L, 0x400000L, 0x100000L, 0x1000L, 0x0L, 0x10000000000001L, 0x20000280001001L, + 0x10000000510000L, false, 0, 0x0L), + 4 + ), + 68203 + ); + + // gentest-2666 + assertEqual( + perft( + Board(0x20000280010000L, 0x400000L, 0x100000L, 0x1000L, 0x0L, 0x10000000000100L, 0x20000280001100L, + 0x10000000510000L, true, 0, 0x0L), + 4 + ), + 91832 + ); + + // gentest-2667 + assertEqual( + perft( + Board(0x20000280010000L, 0x400000L, 0x0L, 0x100000L, 0x0L, 0x800000000020000L, 0x20000280120000L, + 0x800000000410000L, false, 0, 0x0L), + 4 + ), + 51092 + ); + + // gentest-2668 + assertEqual( + perft( + Board(0x280010000L, 0x2000000000002000L, 0x0L, 0x100000L, 0x0L, 0x800000000020000L, + 0x2000000280120000L, 0x800000000012000L, true, 0, 0x0L), + 4 + ), + 47414 + ); + + // gentest-2669 + assertEqual( + perft( + Board(0x280010000L, 0x2000000000002000L, 0x0L, 0x1000L, 0x0L, 0x4000000020000L, 0x2000000280021000L, + 0x4000000012000L, false, 0, 0x0L), + 4 + ), + 84345 + ); + + // gentest-2670 + assertEqual( + perft( + Board(0x280000100L, 0x2000000000002000L, 0x0L, 0x100000L, 0x0L, 0x200000000020000L, + 0x2000000280120000L, 0x200000000002100L, true, 0, 0x0L), + 4 + ), + 117673 + ); + + // gentest-2671 + assertEqual( + perft( + Board(0x280000100L, 0x2000000000002000L, 0x0L, 0x400000L, 0x0L, 0x1000000040000L, 0x2000000280440000L, + 0x1000000002100L, false, 0, 0x0L), + 4 + ), + 75022 + ); + + // gentest-2672 + assertEqual( + perft( + Board(0x280000000L, 0x2000000000002000L, 0x40000000000000L, 0x400000L, 0x0L, 0x1000002000000L, + 0x2000000282400000L, 0x41000000002000L, true, 0, 0x0L), + 4 + ), + 149891 + ); + + // gentest-2673 + assertEqual( + perft( + Board(0x280000000L, 0x2000000040000000L, 0x40000000000000L, 0x200000000000L, 0x0L, 0x1000002000000L, + 0x2000200282000000L, 0x41000040000000L, false, 0, 0x0L), + 4 + ), + 81399 + ); + + // gentest-2674 + assertEqual( + perft( + Board(0x280000000L, 0x2000000040000000L, 0x40000000000000L, 0x2000000000L, 0x0L, 0x1000002000000L, + 0x2000002282000000L, 0x41000040000000L, true, 0, 0x0L), + 4 + ), + 134298 + ); + + // gentest-2675 + assertEqual( + perft( + Board(0x280000000L, 0x80000040000000L, 0x200000000000L, 0x2000000000L, 0x0L, 0x1000004000000L, + 0x80002284000000L, 0x1200040000000L, false, 0, 0x0L), + 4 + ), + 133365 + ); + + // gentest-2676 + assertEqual( + perft( + Board(0x280000000L, 0x80000040000000L, 0x40000L, 0x2000000000L, 0x0L, 0x20000020000L, + 0x80002280020000L, 0x20040040000L, true, 0, 0x0L), + 4 + ), + 165417 + ); + + // gentest-2677 + assertEqual( + perft( + Board(0x80000000L, 0x80000040000000L, 0x40000L, 0x200000L, 0x0L, 0x200000100L, 0x80000080200100L, + 0x240040000L, false, 0, 0x0L), + 4 + ), + 198499 + ); + + // gentest-2678 + assertEqual( + perft( + Board(0x80000000L, 0x80000040000000L, 0x10L, 0x20L, 0x0L, 0x2000100L, 0x80000080000120L, 0x42000010L, + true, 0, 0x0L), + 4 + ), + 80551 + ); + + // gentest-2679 + assertEqual( + perft( + Board(0x80000000L, 0x80000000008000L, 0x10L, 0x80000L, 0x0L, 0x2000100L, 0x80000080080100L, + 0x2008010L, false, 0, 0x0L), + 4 + ), + 78057 + ); + + // gentest-2680 + assertEqual( + perft( + Board(0x0L, 0x80000000200000L, 0x80000000L, 0x8000000000000L, 0x0L, 0x2000100L, 0x88000000000100L, + 0x82200000L, true, 0, 0x0L), + 4 + ), + 111068 + ); + + // gentest-2681 + assertEqual( + perft( + Board(0x0L, 0x80001000000000L, 0x80000000L, 0x100000L, 0x0L, 0x2000100L, 0x80000000100100L, + 0x1082000000L, false, 0, 0x0L), + 4 + ), + 118126 + ); + + // gentest-2682 + assertEqual( + perft( + Board(0x0L, 0x5000000000L, 0x80000000L, 0x100000L, 0x0L, 0x2000100L, 0x4000100100L, 0x1082000000L, + true, 0, 0x0L), + 4 + ), + 103819 + ); + + // gentest-2683 + assertEqual( + perft( + Board(0x0L, 0x5000000000L, 0x80000000L, 0x40000L, 0x0L, 0x1000100L, 0x4000040100L, 0x1081000000L, + false, 0, 0x0L), + 4 + ), + 100493 + ); + + // gentest-2684 + assertEqual( + perft( + Board(0x0L, 0x8000000000000L, 0x4000000000L, 0x20000L, 0x0L, 0x1000100L, 0x20100L, 0x8004001000000L, + true, 0, 0x0L), + 4 + ), + 60824 + ); + + // gentest-2685 + assertEqual( + perft( + Board(0x0L, 0x200000000000L, 0x4000000000L, 0x400000000000000L, 0x0L, 0x1000100L, 0x400000000000100L, + 0x204001000000L, false, 0, 0x0L), + 4 + ), + 75248 + ); + + // gentest-2686 + assertEqual( + perft( + Board(0x0L, 0x2000000000000000L, 0x4000000000L, 0x4000000000000000L, 0x0L, 0x1000100L, + 0x4000000000000100L, 0x2000004001000000L, true, 0, 0x0L), + 4 + ), + 22073 + ); + + // gentest-2687 + assertEqual( + perft( + Board(0x0L, 0x2000000000000000L, 0x20000000L, 0x40L, 0x0L, 0x1000100L, 0x140L, 0x2000000021000000L, + false, 0, 0x0L), + 4 + ), + 74797 + ); + + // gentest-2688 + assertEqual( + perft( + Board(0x0L, 0x400000000000L, 0x800L, 0x40000000000000L, 0x0L, 0x1000100L, 0x40000000000100L, + 0x400001000800L, true, 0, 0x0L), + 4 + ), + 47112 + ); + + // gentest-2689 + assertEqual( + perft( + Board(0x0L, 0x400000000000L, 0x800L, 0x1000000000000L, 0x0L, 0x2000002L, 0x1000000000002L, + 0x400002000800L, false, 0, 0x0L), + 4 + ), + 87471 + ); + + // gentest-2690 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x10L, 0x1000000000000L, 0x0L, 0x2000100L, 0x1000000000100L, 0x82000010L, + true, 0, 0x0L), + 4 + ), + 40006 + ); + + // gentest-2691 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x40000L, 0x400000000L, 0x0L, 0x2000100L, 0x400000100L, 0x82040000L, false, + 0, 0x0L), + 4 + ), + 40805 + ); + + // gentest-2692 + assertEqual( + perft( + Board(0x0L, 0x400000000000L, 0x200L, 0x4000000000L, 0x0L, 0x2000100L, 0x4000000100L, 0x400002000200L, + true, 0, 0x0L), + 4 + ), + 48320 + ); + + // gentest-2693 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x200L, 0x200000000L, 0x0L, 0x2000100L, 0x200000100L, 0x82000200L, false, 0, + 0x0L), + 4 + ), + 7985 + ); + + // gentest-2694 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x4L, 0x200000000000000L, 0x0L, 0x40100L, 0x200000000000100L, 0x80040004L, + true, 0, 0x0L), + 4 + ), + 53202 + ); + + // gentest-2695 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x4L, 0x200000L, 0x0L, 0x4000100L, 0x200100L, 0x84000004L, false, 0, 0x0L), + 4 + ), + 61721 + ); + + // gentest-2696 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x4L, 0x20000000000000L, 0x0L, 0x2000100L, 0x20000000000100L, 0x82000004L, + true, 0, 0x0L), + 4 + ), + 58506 + ); + + // gentest-2697 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x4L, 0x10000000L, 0x0L, 0x200000100L, 0x10000100L, 0x280000004L, false, 0, + 0x0L), + 4 + ), + 75982 + ); + + // gentest-2698 + assertEqual( + perft( + Board(0x0L, 0x200000L, 0x200L, 0x100000000000L, 0x0L, 0x200000100L, 0x100000000100L, 0x200200200L, + true, 0, 0x0L), + 4 + ), + 100412 + ); + + // gentest-2699 + assertEqual( + perft( + Board(0x0L, 0x200000L, 0x8000000L, 0x80000000000L, 0x0L, 0x200020000L, 0x80000020000L, 0x208200000L, + false, 0, 0x0L), + 4 + ), + 100906 + ); + + // gentest-2700 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x40L, 0x8000000L, 0x0L, 0x200020000L, 0x8020000L, 0x280000040L, true, 0, + 0x0L), + 4 + ), + 71642 + ); + + // gentest-2701 + assertEqual( + perft( + Board(0x0L, 0x80000000L, 0x400000000L, 0x1000000000L, 0x0L, 0x200020000L, 0x1000020000L, 0x680000000L, + false, 0, 0x0L), + 4 + ), + 37187 + ); + + // gentest-2702 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2703 + assertEqual( + perft( + Board(0xff00000800f700L, 0x4000040000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x804f7fdL, 0xfdff040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 463750 + ); + + // gentest-2704 + assertEqual( + perft( + Board(0xef10000800f700L, 0x840000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x804fff5L, 0xbdef940000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 931780 + ); + + // gentest-2705 + assertEqual( + perft( + Board(0xaf10400840b700L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x840bff7L, 0xbdaf944000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 811180 + ); + + // gentest-2706 + assertEqual( + perft( + Board(0xad00520840b700L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000080000L, 0x1000000000000010L, 0x848b7f7L, 0xbdad845200000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1508602 + ); + + // gentest-2707 + assertEqual( + perft( + Board(0xad00120840b700L, 0x840000000042L, 0x2000014000000020L, 0x8100000000000081L, + 0x800000004000000L, 0x1000000000000010L, 0x400c40b7f3L, 0xb9ad851200000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1613865 + ); + + // gentest-2708 + assertEqual( + perft( + Board(0xad00120840b700L, 0x800100000042L, 0x2000014000000020L, 0x8100000000000081L, + 0x200000004000000L, 0x1000000000000008L, 0x400c40b7ebL, 0xb3ad811300000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 1611221 + ); + + // gentest-2709 + assertEqual( + perft( + Board(0xad00121840a700L, 0x800100000042L, 0x40014000000020L, 0x8100000000000081L, 0x200000800000000L, + 0x1000000000000008L, 0x481840a7ebL, 0x93ed811300000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1460883 + ); + + // gentest-2710 + assertEqual( + perft( + Board(0xa508121841a600L, 0x800100000042L, 0x40014000000020L, 0x8100000000000081L, 0x400000800000000L, + 0x1000000000000008L, 0x481841a6ebL, 0x95e5891300000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1594947 + ); + + // gentest-2711 + assertEqual( + perft( + Board(0xa508121841a600L, 0x800000820002L, 0x40010000100020L, 0x8100000000000081L, 0x400000800000000L, + 0x1000000000000008L, 0x818d1a6abL, 0x95e5891200020000L, false, 0, 0x8100000000000000L), + 4 + ), + 1475021 + ); + + // gentest-2712 + assertEqual( + perft( + Board(0xa508121841a600L, 0x800000800003L, 0x40010000100020L, 0x2100000000000080L, 0x400000004000000L, + 0x1000000000000008L, 0x1cd1a6aaL, 0x35e5891200000001L, true, 0, 0x100000000000000L), + 4 + ), + 1224115 + ); + + // gentest-2713 + assertEqual( + perft( + Board(0xa508131840a600L, 0x800000800003L, 0x40010000100020L, 0x2100000000000080L, 0x400000004000000L, + 0x8000000000008L, 0x11cd0a6aaL, 0x25ed891200000001L, false, 0, 0x0L), + 4 + ), + 1205150 + ); + + // gentest-2714 + assertEqual( + perft( + Board(0xa508131840a600L, 0x800000800003L, 0x42000000101000L, 0x8100000000000080L, 0x400000004000000L, + 0x8000000000008L, 0x11cd0b68aL, 0x85ef881200000001L, true, 0, 0x0L), + 4 + ), + 1642806 + ); + + // gentest-2715 + assertEqual( + perft( + Board(0xa509101c40a600L, 0x800000800003L, 0x42000000001800L, 0x8100000000000080L, 0x400000000000000L, + 0x8000000000008L, 0x10018c0be8aL, 0x85ef881004000001L, false, 0, 0x0L), + 4 + ), + 1168704 + ); + + // gentest-2716 + assertEqual( + perft( + Board(0xa10d101c40a600L, 0x800000000043L, 0x42000000001800L, 0x8100000000000080L, 0x1000000000000000L, + 0x8000000000008L, 0x1001840becaL, 0x91eb8c1004000001L, true, 0, 0x0L), + 4 + ), + 966136 + ); + + // gentest-2717 + assertEqual( + perft( + Board(0x812d101c40a600L, 0x800000000043L, 0x42004000001000L, 0x8100000000000080L, 0x1000000000000000L, + 0x8000000000008L, 0x1401840b6caL, 0x91cbac1004000001L, false, 0, 0x0L), + 4 + ), + 1139126 + ); + + // gentest-2718 + assertEqual( + perft( + Board(0x8125181c42a200L, 0x800000000042L, 0x42004000001000L, 0x8100000000000080L, 0x1000000000000000L, + 0x8000000000008L, 0x1401842b2caL, 0x91cba41804000000L, true, 0, 0x0L), + 4 + ), + 1122231 + ); + + // gentest-2719 + assertEqual( + perft( + Board(0x8125181a40a200L, 0x40000042L, 0x42004004000000L, 0x8100000000000080L, 0x1000000000000000L, + 0x8000000000008L, 0x1401e40a2caL, 0x91cb241840000000L, false, 0, 0x0L), + 4 + ), + 1350369 + ); + + // gentest-2720 + assertEqual( + perft( + Board(0x8125181a408200L, 0x2042L, 0x42004004000000L, 0x8100000000000080L, 0x400000000000000L, + 0x8000000001000L, 0x1401e4092c2L, 0x85cb241800002000L, true, 0, 0x0L), + 4 + ), + 1047648 + ); + + // gentest-2721 + assertEqual( + perft( + Board(0x8105181a408200L, 0x2840L, 0x42200004000000L, 0x8100000000000080L, 0x200000000000000L, + 0x8000000001000L, 0x21001e409ac0L, 0x83cb041800002000L, false, 0, 0x0L), + 4 + ), + 974420 + ); + + // gentest-2722 + assertEqual( + perft( + Board(0x8105181a408200L, 0x202800L, 0x42200004000000L, 0x8100000000000080L, 0x2000000000000000L, + 0x8000000001000L, 0x21001e609a80L, 0xa1cb041800002000L, true, 0, 0x0L), + 4 + ), + 1783230 + ); + + // gentest-2723 + assertEqual( + perft( + Board(0x185180a408200L, 0x202800L, 0x42004004000000L, 0x8100000000000080L, 0x2000000000000000L, + 0x8000000001000L, 0x1480e609a80L, 0xa14b841000002000L, false, 0, 0x0L), + 4 + ), + 1922793 + ); + + // gentest-2724 + assertEqual( + perft( + Board(0x185080a408200L, 0x2800L, 0x2005004000000L, 0x8100000000000080L, 0x20000000L, 0x8000000001000L, + 0x1480e409a80L, 0x810b841020002000L, true, 0, 0x0L), + 4 + ), + 2033933 + ); + + // gentest-2725 + assertEqual( + perft( + Board(0x1810c0a408200L, 0x2002L, 0x2005004000000L, 0x8100000000000080L, 0x20000000L, 0x8000000000010L, + 0x1480e408292L, 0x810b801420002000L, false, 0, 0x0L), + 4 + ), + 1729359 + ); + + // gentest-2726 + assertEqual( + perft( + Board(0x1810c0a408200L, 0x2002L, 0x2005004000000L, 0x1100000000000020L, 0x40000000L, 0x8000000000010L, + 0x1480e408232L, 0x110b801440002000L, true, 0, 0x0L), + 4 + ), + 1639240 + ); + + // gentest-2727 + assertEqual( + perft( + Board(0x1010c02408200L, 0x10000002L, 0x2801004000000L, 0x1100000000000020L, 0x40000000L, + 0x8000000000010L, 0x810c06408232L, 0x110b001050000000L, false, 0, 0x0L), + 4 + ), + 1849276 + ); + + // gentest-2728 + assertEqual( + perft( + Board(0x1010c02408200L, 0x10000002L, 0x40041004000000L, 0x1100000000000020L, 0x4000000000L, + 0x8000000000010L, 0x40010c06408232L, 0x1109045010000000L, true, 0, 0x0L), + 4 + ), + 1836575 + ); + + // gentest-2729 + assertEqual( + perft( + Board(0x1010c02408200L, 0x10000002L, 0x40041001000000L, 0x1100000000000020L, 0x2000000000L, + 0x8000000000010L, 0x40010c03408232L, 0x1109043010000000L, false, 0, 0x0L), + 4 + ), + 1445924 + ); + + // gentest-2730 + assertEqual( + perft( + Board(0x1010e00408200L, 0x40002L, 0x40041001000000L, 0x900000000000020L, 0x2000000000L, + 0x8000000000010L, 0x40010e01408232L, 0x909043000040000L, true, 0, 0x0L), + 4 + ), + 1382400 + ); + + // gentest-2731 + assertEqual( + perft( + Board(0x1010e00408200L, 0x40002L, 0x40041001000000L, 0x920000000000000L, 0x4000000000L, + 0x8000000000010L, 0x60010e01408212L, 0x909045000040000L, false, 0, 0x0L), + 4 + ), + 108139 + ); + + // gentest-2732 + assertEqual( + perft( + Board(0x1050c00408200L, 0x40002L, 0x40001001000000L, 0xa20000000000000L, 0x4000000000L, + 0x1000000000000010L, 0x60050c01408212L, 0x1a01005000040000L, true, 0, 0x0L), + 4 + ), + 1371846 + ); + + // gentest-2733 + assertEqual( + perft( + Board(0x1050c00408200L, 0x200010000L, 0x8000001001000000L, 0xa20000000000000L, 0x4000000000L, + 0x1000000000000010L, 0x8020050c01418210L, 0x1a01005200000000L, false, 0, 0x0L), + 4 + ), + 1188671 + ); + + // gentest-2734 + assertEqual( + perft( + Board(0x1050c00408200L, 0x200010000L, 0x8000000021000000L, 0xa20000000000000L, 0x4L, + 0x1000000000001000L, 0x8020050c01419200L, 0x1a01000220000004L, true, 0, 0x0L), + 4 + ), + 998825 + ); + + // gentest-2735 + assertEqual( + perft( + Board(0x1050c00408200L, 0x10000L, 0x8004000001000000L, 0xa00000200000000L, 0x4L, 0x1000000000001000L, + 0x8000050e01419200L, 0x1a05000000000004L, false, 0, 0x0L), + 4 + ), + 588536 + ); + + // gentest-2736 + assertEqual( + perft( + Board(0x1050400408200L, 0x10000L, 0x8004000001000000L, 0x102000800000000L, 0x4L, 0x1000000000001000L, + 0x8002050401419200L, 0x1105000800000004L, true, 0, 0x0L), + 4 + ), + 968017 + ); + + // gentest-2737 + assertEqual( + perft( + Board(0x1050400408200L, 0x4000000L, 0x8004000001000000L, 0x102000800000000L, 0x4L, 0x10000000200000L, + 0x8002050405608200L, 0x115000800000004L, false, 0, 0x0L), + 4 + ), + 971092 + ); + + // gentest-2738 + assertEqual( + perft( + Board(0x1050400408200L, 0x4000000L, 0x8004000001000000L, 0x100028000000000L, 0x4L, + 0x2000000000200000L, 0x8000070405608200L, 0x2105008000000004L, true, 0, 0x0L), + 4 + ), + 1145789 + ); + + // gentest-2739 + assertEqual( + perft( + Board(0x1050400408200L, 0x4000000L, 0x4000000040008L, 0x1000028000000000L, 0x4L, 0x2000000000200000L, + 0x70404648208L, 0x3005008000000004L, false, 0, 0x0L), + 4 + ), + 1347835 + ); + + // gentest-2740 + assertEqual( + perft( + Board(0x1050400008200L, 0x4000000L, 0x40000000400008L, 0x1000028000000000L, 0x4L, 0x4000000000200000L, + 0x40070404208208L, 0x5001008000400004L, true, 0, 0x0L), + 4 + ), + 1671742 + ); + + // gentest-2741 + assertEqual( + perft( + Board(0x1050400400200L, 0x4000000L, 0x1000000008L, 0x800028000000000L, 0x4L, 0x4000000000200000L, + 0x71404600208L, 0x4801008000000004L, false, 0, 0x0L), + 4 + ), + 953378 + ); + + // gentest-2742 + assertEqual( + perft( + Board(0x1050400400200L, 0x0L, 0x1000000400L, 0x800028000000000L, 0x800000000L, 0x4000000000200000L, + 0x71400600600L, 0x4801008800000000L, true, 0, 0x0L), + 4 + ), + 188532 + ); + + // gentest-2743 + assertEqual( + perft( + Board(0x1050400400200L, 0x0L, 0x400L, 0x800028000000000L, 0x1000000000L, 0x4000000000002000L, + 0x70400402600L, 0x4801009000000000L, false, 0, 0x0L), + 4 + ), + 618697 + ); + + // gentest-2744 + assertEqual( + perft( + Board(0x1050400400200L, 0x0L, 0x1000000L, 0x200028000000000L, 0x100000L, 0x4000000000002000L, + 0x70401402200L, 0x4201008000100000L, true, 0, 0x0L), + 4 + ), + 57008 + ); + + // gentest-2745 + assertEqual( + perft( + Board(0x1050400400200L, 0x0L, 0x400L, 0x200020800000000L, 0x0L, 0x4000000000100000L, 0x70400500600L, + 0x4201000800000000L, false, 0, 0x0L), + 4 + ), + 227079 + ); + + // gentest-2746 + assertEqual( + perft( + Board(0x1050400400200L, 0x0L, 0x400L, 0x1000021000000000L, 0x0L, 0x4000000000200000L, 0x70400600600L, + 0x5001001000000000L, true, 0, 0x0L), + 4 + ), + 200110 + ); + + // gentest-2747 + assertEqual( + perft( + Board(0x1050400400200L, 0x0L, 0x80000L, 0x200001002000000L, 0x0L, 0x4000000000200000L, 0x50402680200L, + 0x4201001000000000L, false, 0, 0x0L), + 4 + ), + 340940 + ); + + // gentest-2748 + assertEqual( + perft( + Board(0x1050400400200L, 0x0L, 0x80000L, 0x2000002002000000L, 0x0L, 0x4000000040000000L, + 0x50442480200L, 0x6001002000000000L, true, 0, 0x0L), + 4 + ), + 199401 + ); + + // gentest-2749 + assertEqual( + perft( + Board(0x1050440000200L, 0x0L, 0x80000L, 0x2000002002000000L, 0x0L, 0x80000080000000L, 0x504c2080200L, + 0x2081002000000000L, false, 0, 0x0L), + 4 + ), + 127275 + ); + + // gentest-2750 + assertEqual( + perft( + Board(0x1050400000200L, 0x0L, 0x1000L, 0x2042000000L, 0x0L, 0x80000080000000L, 0x50482001200L, + 0x81002040000000L, true, 0, 0x0L), + 4 + ), + 29672 + ); + + // gentest-2751 + assertEqual( + perft( + Board(0x1050400000200L, 0x0L, 0x1000L, 0x2002400000L, 0x0L, 0x80000080000000L, 0x50482001200L, + 0x81002000400000L, false, 0, 0x0L), + 4 + ), + 297475 + ); + + // gentest-2752 + assertEqual( + perft( + Board(0x1050400000200L, 0x0L, 0x1000L, 0x200004000002000L, 0x0L, 0x80000080000000L, + 0x200050480001200L, 0x81004000002000L, true, 0, 0x0L), + 4 + ), + 258561 + ); + + // gentest-2753 + assertEqual( + perft( + Board(0x1050400000200L, 0x0L, 0x40000000L, 0x4000004020000000L, 0x0L, 0x80000080000000L, + 0x40000504c0000200L, 0x81004020000000L, false, 0, 0x0L), + 4 + ), + 133544 + ); + + // gentest-2754 + assertEqual( + perft( + Board(0x1050400020000L, 0x0L, 0x40000000L, 0x4000001000002000L, 0x0L, 0x80000080000000L, + 0x40000504c0020000L, 0x81001000002000L, true, 0, 0x0L), + 4 + ), + 270700 + ); + + // gentest-2755 + assertEqual( + perft( + Board(0x1050400020000L, 0x0L, 0x20L, 0x4000003000000000L, 0x0L, 0x80000080000000L, + 0x4000050480020020L, 0x81003000000000L, false, 0, 0x0L), + 4 + ), + 166739 + ); + + // gentest-2756 + assertEqual( + perft( + Board(0x5010400020000L, 0x0L, 0x20L, 0x4000000010200000L, 0x0L, 0x80000080000000L, + 0x4004010480020020L, 0x81000010200000L, true, 0, 0x0L), + 4 + ), + 38834 + ); + + // gentest-2757 + assertEqual( + perft( + Board(0x5010400020000L, 0x0L, 0x0L, 0x50000020L, 0x0L, 0x80000000400000L, 0x4010440420000L, + 0x81000010000020L, false, 0, 0x0L), + 4 + ), + 214299 + ); + + // gentest-2758 + assertEqual( + perft( + Board(0x1010400020000L, 0x0L, 0x0L, 0x2000000041000000L, 0x400000000000000L, 0x80000000400000L, + 0x400010440420000L, 0x2081000001000000L, true, 0, 0x0L), + 4 + ), + 287143 + ); + + // gentest-2759 + assertEqual( + perft( + Board(0x1010400020000L, 0x0L, 0x0L, 0x9200000L, 0x400000000000000L, 0x80000000008000L, + 0x400010408028000L, 0x81000001200000L, false, 0, 0x0L), + 4 + ), + 402362 + ); + + // gentest-2760 + assertEqual( + perft( + Board(0x1010400020000L, 0x0L, 0x0L, 0x20000000000801L, 0x400000000000000L, 0x80000000008000L, + 0x400010400028800L, 0xa1000000000001L, true, 0, 0x0L), + 4 + ), + 482519 + ); + + // gentest-2761 + assertEqual( + perft( + Board(0x1010400020000L, 0x0L, 0x0L, 0x6001L, 0x4000000000000000L, 0x80000000008000L, + 0x400001040002c000L, 0x81000000002001L, false, 0, 0x0L), + 4 + ), + 10023 + ); + + // gentest-2762 + assertEqual( + perft( + Board(0x1010400020000L, 0x0L, 0x0L, 0x4201L, 0x20000000000000L, 0x800000008000L, 0x2001040002c000L, + 0x1800000000201L, true, 0, 0x0L), + 4 + ), + 188859 + ); + + // gentest-2763 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2764 + assertEqual( + perft( + Board(0x7f00800000bf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x800000bfffL, 0xff7f000000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 242735 + ); + + // gentest-2765 + assertEqual( + perft( + Board(0x7f000004003b00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000008081L, + 0x800000000000008L, 0x1000000000000010L, 0x4003bffL, 0x7f7f000000008000L, true, 0, + 0x100000000000081L), + 4 + ), + 376773 + ); + + // gentest-2766 + assertEqual( + perft( + Board(0x7b040004003b00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000800001L, + 0x800000000000008L, 0x1000000000000010L, 0x4803b7fL, 0x7f7b040000000000L, false, 0, + 0x100000000000001L), + 4 + ), + 424005 + ); + + // gentest-2767 + assertEqual( + perft( + Board(0x5b042005003a00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000800001L, + 0x800000000000008L, 0x20000000000010L, 0x5803a7fL, 0x6f7b042000000000L, true, 0, 0x1L), + 4 + ), + 546322 + ); + + // gentest-2768 + assertEqual( + perft( + Board(0x59062005003a00L, 0x4200000000000042L, 0x2400000000000024L, 0x100000000020100L, + 0x800000000000008L, 0x20000000000010L, 0x5023b7eL, 0x6f79062000000000L, false, 0, 0x0L), + 4 + ), + 388565 + ); + + // gentest-2769 + assertEqual( + perft( + Board(0x49162005003a00L, 0x4200000000000042L, 0x2000010000000024L, 0x100000000200100L, + 0x800000000000008L, 0x20000000000010L, 0x5203b7eL, 0x6b69172000000000L, true, 0, 0x0L), + 4 + ), + 652399 + ); + + // gentest-2770 + assertEqual( + perft( + Board(0x49162001003a00L, 0x4200000000000042L, 0x2000000004800004L, 0x100000000210000L, + 0x800000000000008L, 0x20000000000010L, 0x1a13a5eL, 0x6b69162004000000L, false, 0, 0x0L), + 4 + ), + 995227 + ); + + // gentest-2771 + assertEqual( + perft( + Board(0x49162003003800L, 0x200200000000042L, 0x2000000004800004L, 0x100000000210000L, + 0x800000000000008L, 0x400000000010L, 0x3a1385eL, 0x2b49762004000000L, true, 0, 0x0L), + 4 + ), + 901958 + ); + + // gentest-2772 + assertEqual( + perft( + Board(0x49162003003800L, 0x200200000000042L, 0x2000000800800004L, 0x100000008200000L, + 0x800000000000008L, 0x400000000010L, 0xba0385eL, 0x2b49762800000000L, false, 0, 0x0L), + 4 + ), + 961303 + ); + + // gentest-2773 + assertEqual( + perft( + Board(0x49162001102800L, 0x200008000000042L, 0x802800004L, 0x100000008200000L, 0x800000000000008L, + 0x400000000010L, 0x9b0285eL, 0xb4956a802000000L, true, 0, 0x0L), + 4 + ), + 915565 + ); + + // gentest-2774 + assertEqual( + perft( + Board(0x49162001102800L, 0x200008000010040L, 0x2a00004L, 0x100000020000000L, 0x800000000000008L, + 0x400000000010L, 0x2191285cL, 0xb4956a002200000L, false, 0, 0x0L), + 4 + ), + 1044830 + ); + + // gentest-2775 + assertEqual( + perft( + Board(0x49162001102000L, 0x200008000010040L, 0xa00004L, 0x100000020000000L, 0x800000000000008L, + 0x800000000800L, 0x2191284cL, 0xb4996a000200000L, true, 0, 0x0L), + 4 + ), + 1030768 + ); + + // gentest-2776 + assertEqual( + perft( + Board(0x49162001102000L, 0x200008000010040L, 0x204004L, 0x100000002000000L, 0x200000000008L, + 0x800000000800L, 0x311684cL, 0x349b6a000200000L, false, 0, 0x0L), + 4 + ), + 1156448 + ); + + // gentest-2777 + assertEqual( + perft( + Board(0x49162001102000L, 0x200000020010040L, 0x204004L, 0x100000008000000L, 0x200000000008L, + 0x400000000800L, 0x911684cL, 0x349762020200000L, true, 0, 0x0L), + 4 + ), + 1105618 + ); + + // gentest-2778 + assertEqual( + perft( + Board(0x49162001102000L, 0x200000020010040L, 0x204004L, 0x100001000000000L, 0x10000000000008L, + 0x400000000800L, 0x100111684cL, 0x359562020200000L, false, 0, 0x0L), + 4 + ), + 1124521 + ); + + // gentest-2779 + assertEqual( + perft( + Board(0x9562021002000L, 0x200000000010040L, 0x204004L, 0x100001000000000L, 0x10000000000008L, + 0x800000000800L, 0x102101684cL, 0x319d62000200000L, true, 0, 0x0L), + 4 + ), + 978251 + ); + + // gentest-2780 + assertEqual( + perft( + Board(0x9562021002000L, 0x200000000010040L, 0x204004L, 0x100001000000000L, 0x20000000080000L, + 0x800000000800L, 0x1021096844L, 0x329d62000200000L, false, 0, 0x0L), + 4 + ), + 1178757 + ); + + // gentest-2781 + assertEqual( + perft( + Board(0x9562021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x20000000080000L, + 0x80000000000800L, 0x221092844L, 0x3a9562000004000L, true, 0, 0x0L), + 4 + ), + 1027527 + ); + + // gentest-2782 + assertEqual( + perft( + Board(0x9562021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x40000000001000L, + 0x80000000000400L, 0x221013444L, 0x3c9562000004000L, false, 0, 0x0L), + 4 + ), + 983932 + ); + + // gentest-2783 + assertEqual( + perft( + Board(0x9166021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x40000000001000L, + 0x8000000000000800L, 0x221013844L, 0x8349166000004000L, true, 0, 0x0L), + 4 + ), + 1016100 + ); + + // gentest-2784 + assertEqual( + perft( + Board(0x9166021002000L, 0x200000000010040L, 0x4004L, 0x100000200000000L, 0x40000000100000L, + 0x80000000000800L, 0x221112844L, 0x3c9166000004000L, false, 0, 0x0L), + 4 + ), + 1266046 + ); + + // gentest-2785 + assertEqual( + perft( + Board(0x8166121002000L, 0x200000000000440L, 0x4004L, 0x100000200000000L, 0x40000000100000L, + 0x8000000000000800L, 0x221102c44L, 0x8348166100004000L, true, 0, 0x0L), + 4 + ), + 1235949 + ); + + // gentest-2786 + assertEqual( + perft( + Board(0x8166121002000L, 0x200000000200400L, 0x4004L, 0x100000200000000L, 0x80001L, + 0x8000000000000800L, 0x221282c04L, 0x8308166100004001L, false, 0, 0x0L), + 4 + ), + 1041797 + ); + + // gentest-2787 + assertEqual( + perft( + Board(0x8166121002000L, 0x200000000200400L, 0x4004L, 0x100000200000000L, 0x10000800000000L, + 0x8000000000000800L, 0xa21202c04L, 0x8318166100004000L, true, 0, 0x0L), + 4 + ), + 1219673 + ); + + // gentest-2788 + assertEqual( + perft( + Board(0x8166121200000L, 0x200000000000440L, 0x4004L, 0x100000200000000L, 0x80000800000000L, + 0x8000000000000800L, 0xa21200c44L, 0x8388166100004000L, false, 0, 0x0L), + 4 + ), + 917875 + ); + + // gentest-2789 + assertEqual( + perft( + Board(0x1e6121200000L, 0x200000000000440L, 0x14000L, 0x100000200000000L, 0x80000800000000L, + 0x4000000000000800L, 0xa21210c40L, 0x43801e6100004000L, true, 0, 0x0L), + 4 + ), + 1433914 + ); + + // gentest-2790 + assertEqual( + perft( + Board(0x166921200000L, 0x200000000000041L, 0x14000L, 0x100000200000000L, 0x80000000080000L, + 0x4000000000000800L, 0x221290841L, 0x4380166900004000L, false, 0, 0x0L), + 4 + ), + 1383526 + ); + + // gentest-2791 + assertEqual( + perft( + Board(0x126b21000000L, 0x200000000000041L, 0x80000200000L, 0x100000000000000L, 0x80000000080000L, + 0x4000000000000800L, 0x80021080841L, 0x4380126b00200000L, true, 0, 0x0L), + 4 + ), + 1369685 + ); + + // gentest-2792 + assertEqual( + perft( + Board(0x126b21000000L, 0x200000000000440L, 0x80000200000L, 0x100000000000000L, 0x4000000080000L, + 0x4000000000100000L, 0x80021180440L, 0x4304126b00200000L, false, 0, 0x0L), + 4 + ), + 1203798 + ); + + // gentest-2793 + assertEqual( + perft( + Board(0x126b21000000L, 0x40000000440L, 0x1000004000L, 0x100000000000000L, 0x4000000080000L, + 0x4000000000100000L, 0x1021180440L, 0x4104166b00004000L, true, 0, 0x0L), + 4 + ), + 1642789 + ); + + // gentest-2794 + assertEqual( + perft( + Board(0x122b61000000L, 0x40000100040L, 0x1000004000L, 0x100000000000000L, 0x4000000080000L, + 0x4000000000002000L, 0x1021182040L, 0x4104162b40004000L, false, 0, 0x0L), + 4 + ), + 1937559 + ); + + // gentest-2795 + assertEqual( + perft( + Board(0x122361000000L, 0x40800000040L, 0x1000800000L, 0x400000000000000L, 0x4000000080000L, + 0x4000000000002000L, 0x1821082040L, 0x4404162340800000L, true, 0, 0x0L), + 4 + ), + 1465541 + ); + + // gentest-2796 + assertEqual( + perft( + Board(0x122361000000L, 0x10000800000040L, 0x40000000800000L, 0x400000000000000L, 0x4000000040000L, + 0x4000000000002000L, 0x40000821042040L, 0x4414122340800000L, false, 0, 0x0L), + 4 + ), + 1081428 + ); + + // gentest-2797 + assertEqual( + perft( + Board(0x122163000000L, 0x10000800000040L, 0x800000L, 0x400000000000000L, 0x4000000000000L, + 0x40000000002000L, 0x4000821002040L, 0x450122142800000L, true, 0, 0x0L), + 4 + ), + 410720 + ); + + // gentest-2798 + assertEqual( + perft( + Board(0x122163000000L, 0x10000800001000L, 0x800000L, 0x100000000000000L, 0x400000000000000L, + 0x40000000002000L, 0x400000821003000L, 0x150122142800000L, false, 0, 0x0L), + 4 + ), + 322516 + ); + + // gentest-2799 + assertEqual( + perft( + Board(0x122163000000L, 0x10000800001000L, 0x800000L, 0x100000000000000L, 0x40000000000L, + 0x80000000002000L, 0x40821003000L, 0x190122142800000L, true, 0, 0x0L), + 4 + ), + 456216 + ); + + // gentest-2800 + assertEqual( + perft( + Board(0x102163000000L, 0x10020008000000L, 0x800000L, 0x1000000000000L, 0x40000000000L, + 0x80000000002000L, 0x60029002000L, 0x91102142800000L, false, 0, 0x0L), + 4 + ), + 421679 + ); + + def batch7(): Unit = + // gentest-2801 + assertEqual( + perft( + Board(0x102163000000L, 0x10000808000000L, 0x800000L, 0x1000000000000L, 0x40000000000L, + 0x80000000002000L, 0x40829002000L, 0x91102142800000L, true, 0, 0x0L), + 4 + ), + 419996 + ); + + // gentest-2802 + assertEqual( + perft( + Board(0x102161000000L, 0x40002000400L, 0x800000L, 0x1000000000000L, 0x0L, 0x80000000002000L, + 0x23002400L, 0x81142140800000L, false, 0, 0x0L), + 4 + ), + 118310 + ); + + // gentest-2803 + assertEqual( + perft( + Board(0x102161000000L, 0x40000000400L, 0x800000L, 0x2000000000000L, 0x0L, 0x80000000002000L, + 0x40021002400L, 0x82102140800000L, true, 0, 0x0L), + 4 + ), + 130507 + ); + + // gentest-2804 + assertEqual( + perft( + Board(0x102161000000L, 0x40002000000L, 0x800000L, 0x2000000000000L, 0x0L, 0x400000000010L, + 0x40023000010L, 0x2502140800000L, false, 0, 0x0L), + 4 + ), + 101975 + ); + + // gentest-2805 + assertEqual( + perft( + Board(0x102161000000L, 0x10000002000000L, 0x20L, 0x2000000000000L, 0x0L, 0x20000000000010L, + 0x10000023000010L, 0x22102140000020L, true, 0, 0x0L), + 4 + ), + 119238 + ); + + // gentest-2806 + assertEqual( + perft( + Board(0x102161000000L, 0x400000000000100L, 0x20L, 0x8000000000000L, 0x0L, 0x20000000000010L, + 0x400000021000110L, 0x28102140000020L, false, 0, 0x0L), + 4 + ), + 59645 + ); + + // gentest-2807 + assertEqual( + perft( + Board(0x102161000000L, 0x400000002000000L, 0x80000L, 0x8000000000000L, 0x0L, 0x400000000010L, + 0x400000023000010L, 0x8502140080000L, true, 0, 0x0L), + 4 + ), + 99645 + ); + + // gentest-2808 + assertEqual( + perft( + Board(0x102161000000L, 0x80000080000L, 0x0L, 0x4000000000000L, 0x0L, 0x400000000010L, 0x80021080010L, + 0x4502140000000L, false, 0, 0x0L), + 4 + ), + 115700 + ); + + // gentest-2809 + assertEqual( + perft( + Board(0x102161000000L, 0x80400000000L, 0x0L, 0x10000000000000L, 0x0L, 0x80000000000010L, + 0x80421000010L, 0x90102140000000L, true, 0, 0x0L), + 4 + ), + 71580 + ); + + // gentest-2810 + assertEqual( + perft( + Board(0x2161000000L, 0x180000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x800000000800L, 0x180021000800L, + 0x10802140000000L, false, 0, 0x0L), + 4 + ), + 69065 + ); + + // gentest-2811 + assertEqual( + perft( + Board(0x2161000000L, 0x180000000000L, 0x0L, 0x4000000000000L, 0x0L, 0x800000040000L, 0x180021040000L, + 0x4802140000000L, true, 0, 0x0L), + 4 + ), + 30910 + ); + + // gentest-2812 + assertEqual( + perft( + Board(0x2161000000L, 0x180000000000L, 0x0L, 0x40000000000000L, 0x0L, 0x800000040000L, 0x180021040000L, + 0x40802140000000L, false, 0, 0x0L), + 4 + ), + 67550 + ); + + // gentest-2813 + assertEqual( + perft( + Board(0x2161000000L, 0x20100000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x80000000040000L, + 0x20100021040000L, 0x90002140000000L, true, 0, 0x0L), + 4 + ), + 50060 + ); + + // gentest-2814 + assertEqual( + perft( + Board(0x2121400000L, 0x180000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x80000004000000L, + 0x180025000000L, 0x90002100400000L, false, 0, 0x0L), + 4 + ), + 62282 + ); + + // gentest-2815 + assertEqual( + perft( + Board(0x2121400000L, 0x100200000000L, 0x0L, 0x1000000000000L, 0x0L, 0x800004000000L, 0x100225000000L, + 0x1802100400000L, true, 0, 0x0L), + 4 + ), + 51626 + ); + + // gentest-2816 + assertEqual( + perft( + Board(0x2121400000L, 0x4100000000000L, 0x0L, 0x20000000000000L, 0x0L, 0x800800000000L, + 0x4100821000000L, 0x20802100400000L, false, 0, 0x0L), + 4 + ), + 28522 + ); + + // gentest-2817 + assertEqual( + perft( + Board(0x2121400000L, 0x4100000000000L, 0x0L, 0x8000000000000L, 0x0L, 0x800004000000L, + 0x4100025000000L, 0x8802100400000L, true, 0, 0x0L), + 4 + ), + 54174 + ); + + // gentest-2818 + assertEqual( + perft( + Board(0x2121004000L, 0x4100000000000L, 0x0L, 0x8000000000000L, 0x0L, 0x800004000000L, + 0x4100025000000L, 0x8802100004000L, false, 0, 0x0L), + 4 + ), + 77626 + ); + + // gentest-2819 + assertEqual( + perft( + Board(0x2121000000L, 0x1000100000000000L, 0x2000L, 0x8000000000000L, 0x0L, 0x800004000000L, + 0x1000100025000000L, 0x8802100002000L, true, 0, 0x0L), + 4 + ), + 96019 + ); + + // gentest-2820 + assertEqual( + perft( + Board(0x2121000000L, 0x1000100000000000L, 0x2000L, 0x800000000L, 0x0L, 0x800004000000L, + 0x1000100025000000L, 0x802900002000L, false, 0, 0x0L), + 4 + ), + 73697 + ); + + // gentest-2821 + assertEqual( + perft( + Board(0x2121000000L, 0x1000100000000000L, 0x20000000000L, 0x800000000L, 0x0L, 0x8000040000L, + 0x1000100021040000L, 0x2a900000000L, true, 0, 0x0L), + 4 + ), + 66194 + ); + + // gentest-2822 + assertEqual( + perft( + Board(0x2121000000L, 0x1000100000000000L, 0x20000000000L, 0x1000000000L, 0x0L, 0x8000000001L, + 0x1000100021000001L, 0x2b100000000L, false, 0, 0x0L), + 4 + ), + 55232 + ); + + // gentest-2823 + assertEqual( + perft( + Board(0x2121000000L, 0x1800000000000000L, 0x20000000000L, 0x1000L, 0x0L, 0x40000001L, + 0x1800000021000001L, 0x22140001000L, true, 0, 0x0L), + 4 + ), + 55365 + ); + + // gentest-2824 + assertEqual( + perft( + Board(0x2121000000L, 0x1000800000000000L, 0x20000000000L, 0x1000L, 0x0L, 0x200001L, + 0x1000800021000001L, 0x22100201000L, false, 0, 0x0L), + 4 + ), + 64447 + ); + + // gentest-2825 + assertEqual( + perft( + Board(0x2121000000L, 0x800000000000L, 0x400000000L, 0x1000000000000000L, 0x0L, 0x200002L, + 0x800021000002L, 0x1000002500200000L, true, 0, 0x0L), + 4 + ), + 72498 + ); + + // gentest-2826 + assertEqual( + perft( + Board(0x2121000000L, 0x800000000000L, 0x100000L, 0x1000000000000000L, 0x0L, 0x200002L, + 0x800021000002L, 0x1000002100300000L, false, 0, 0x0L), + 4 + ), + 50270 + ); + + // gentest-2827 + assertEqual( + perft( + Board(0x121000000L, 0x2000000000L, 0x8000000L, 0x10000000000000L, 0x0L, 0x200002L, 0x2021000002L, + 0x10000108200000L, true, 0, 0x0L), + 4 + ), + 81362 + ); + + // gentest-2828 + assertEqual( + perft( + Board(0x121000000L, 0x4000L, 0x8000000L, 0x10000000000000L, 0x0L, 0x100002L, 0x21004002L, + 0x10000108100000L, false, 0, 0x0L), + 4 + ), + 8885 + ); + + // gentest-2829 + assertEqual( + perft( + Board(0x2101000000L, 0x4000L, 0x1000000000000L, 0x10000000000000L, 0x0L, 0x2002L, 0x2001004002L, + 0x11000100002000L, true, 0, 0x0L), + 4 + ), + 54788 + ); + + // gentest-2830 + assertEqual( + perft( + Board(0x2101000000L, 0x80000000L, 0x1000000000000L, 0x10000000000000L, 0x0L, 0x420L, 0x2081000400L, + 0x11000100000020L, false, 0, 0x0L), + 4 + ), + 58698 + ); + + // gentest-2831 + assertEqual( + perft( + Board(0x2101000000L, 0x80000000L, 0x1000000000000L, 0x10000000L, 0x0L, 0x42L, 0x2081000002L, + 0x1000110000040L, true, 0, 0x0L), + 4 + ), + 41054 + ); + + // gentest-2832 + assertEqual( + perft( + Board(0x2101000000L, 0x2000000000000000L, 0x1000000000000L, 0x1000L, 0x0L, 0x42L, 0x2000002001000002L, + 0x1000100001040L, false, 0, 0x0L), + 4 + ), + 37638 + ); + + // gentest-2833 + assertEqual( + perft( + Board(0x2101000000L, 0x100000000000L, 0x400000000L, 0x10000000000000L, 0x0L, 0x42L, 0x102001000002L, + 0x10000500000040L, true, 0, 0x0L), + 4 + ), + 94214 + ); + + // gentest-2834 + assertEqual( + perft( + Board(0x2101000000L, 0x4000000000000L, 0x400000000L, 0x20000000000000L, 0x0L, 0x440L, + 0x4002001000400L, 0x20000500000040L, false, 0, 0x0L), + 4 + ), + 94274 + ); + + // gentest-2835 + assertEqual( + perft( + Board(0x2101000000L, 0x4000000000000L, 0x400000000L, 0x40000000000000L, 0x0L, 0x48000L, + 0x4002001040000L, 0x40000500008000L, true, 0, 0x0L), + 4 + ), + 118139 + ); + + // gentest-2836 + assertEqual( + perft( + Board(0x2101000000L, 0x100000000000L, 0x400000000L, 0x1000000000000L, 0x0L, 0x8800L, 0x102001000800L, + 0x1000500008000L, false, 0, 0x0L), + 4 + ), + 107330 + ); + + // gentest-2837 + assertEqual( + perft( + Board(0x2101000000L, 0x100000000000L, 0x2000000L, 0x1000000000000L, 0x0L, 0x1040L, 0x102001001000L, + 0x1000102000040L, true, 0, 0x0L), + 4 + ), + 61142 + ); + + // gentest-2838 + assertEqual( + perft( + Board(0x2101000000L, 0x40000000000000L, 0x2000000L, 0x1000000000000L, 0x0L, 0x84000L, + 0x40002001080000L, 0x1000102004000L, false, 0, 0x0L), + 4 + ), + 52958 + ); + + // gentest-2839 + assertEqual( + perft( + Board(0x2101000000L, 0x40000000000000L, 0x2000000L, 0x8000000000000L, 0x0L, 0x5000L, + 0x40002001001000L, 0x8000102004000L, true, 0, 0x0L), + 4 + ), + 24138 + ); + + // gentest-2840 + assertEqual( + perft( + Board(0x2101000000L, 0x1000000000000000L, 0x2000000L, 0x8000000L, 0x0L, 0x104000L, + 0x1000002001100000L, 0x10a004000L, false, 0, 0x0L), + 4 + ), + 35700 + ); + + // gentest-2841 + assertEqual( + perft( + Board(0x200101000000L, 0x1000000000000000L, 0x2000000L, 0x80000L, 0x0L, 0x104000L, + 0x1000200001100000L, 0x102084000L, true, 0, 0x0L), + 4 + ), + 17554 + ); + + // gentest-2842 + assertEqual( + perft( + Board(0x200101000000L, 0x1000000000000000L, 0x2000000L, 0x40000L, 0x0L, 0x1000004000L, + 0x1000201001000000L, 0x102044000L, false, 0, 0x0L), + 4 + ), + 62451 + ); + + // gentest-2843 + assertEqual( + perft( + Board(0x200101000000L, 0x1000000000000000L, 0x2000000L, 0x800000L, 0x0L, 0x800000020L, + 0x1000200801000000L, 0x102800020L, true, 0, 0x0L), + 4 + ), + 67109 + ); + + // gentest-2844 + assertEqual( + perft( + Board(0x200101000000L, 0x80000000000L, 0x2000000L, 0x10000L, 0x0L, 0x8000020L, 0x280009000000L, + 0x102010020L, false, 0, 0x0L), + 4 + ), + 54165 + ); + + // gentest-2845 + assertEqual( + perft( + Board(0x200101000000L, 0x2000000000L, 0x2000000L, 0x200000L, 0x0L, 0x8000010L, 0x202009000000L, + 0x102200010L, true, 0, 0x0L), + 4 + ), + 63492 + ); + + // gentest-2846 + assertEqual( + perft( + Board(0x200101000000L, 0x40000000L, 0x2000000L, 0x200000L, 0x0L, 0x8000800L, 0x200049000000L, + 0x102200800L, false, 0, 0x0L), + 4 + ), + 43601 + ); + + // gentest-2847 + assertEqual( + perft( + Board(0x101000000L, 0x40000000L, 0x2000000000000000L, 0x200000000000L, 0x0L, 0x1000000800L, + 0x1041000000L, 0x2000200100000800L, true, 0, 0x0L), + 4 + ), + 42312 + ); + + // gentest-2848 + assertEqual( + perft( + Board(0x101000000L, 0x200000000000L, 0x40000000000000L, 0x0L, 0x0L, 0x100000000800L, 0x300001000000L, + 0x40000100000800L, false, 0, 0x0L), + 4 + ), + 24918 + ); + + // gentest-2849 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2850 + assertEqual( + perft( + Board(0xff00200000df00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x200000dfffL, 0xbfff200000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 220261 + ); + + // gentest-2851 + assertEqual( + perft( + Board(0xbb40240800d700L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x200800d7ffL, 0xbfbb600400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 652632 + ); + + // gentest-2852 + assertEqual( + perft( + Board(0xbb08640000d700L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x8200000d7ffL, 0xbfbb204400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 484097 + ); + + // gentest-2853 + assertEqual( + perft( + Board(0xbb08640000d700L, 0x200000800000042L, 0x440000000000820L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x8200000dffbL, 0x9ffb004c00000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 884800 + ); + + // gentest-2854 + assertEqual( + perft( + Board(0xbb086440049300L, 0x200000800000042L, 0x440000000000820L, 0x8100000000000081L, 0x20000000008L, + 0x1000000000000010L, 0x82040049bfbL, 0x97fb024c00000000L, false, 0, 0x8100000000000081L), + 4 + ), + 935668 + ); + + // gentest-2855 + assertEqual( + perft( + Board(0xab087440009300L, 0x200000800040040L, 0x400000000000820L, 0x8100000000000081L, 0x20000000008L, + 0x1000000000000010L, 0x82040049bf9L, 0x97ab025c00000000L, true, 44, 0x8100000000000081L), + 4 + ), + 912423 + ); + + // gentest-2856 + assertEqual( + perft( + Board(0xab087440801300L, 0x40800040040L, 0x400000000000820L, 0x8100000000000081L, 0x20000020000L, + 0x1000000000000010L, 0x82040861bf1L, 0x95ab065c00000000L, false, 0, 0x8100000000000081L), + 4 + ), + 1224307 + ); + + // gentest-2857 + assertEqual( + perft( + Board(0xab086450801300L, 0x40800000040L, 0x400000000000820L, 0x8100000000000081L, 0x4000000020000L, + 0x1000000000000010L, 0x82840821bf1L, 0x95af044410000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1163424 + ); + + // gentest-2858 + assertEqual( + perft( + Board(0x2b08e450801300L, 0x40800000040L, 0x400000000040020L, 0x8100000000000081L, 0x4000000020000L, + 0x1000000000002000L, 0x828408633e1L, 0x952f04c410000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1275842 + ); + + // gentest-2859 + assertEqual( + perft( + Board(0x2b08e450801300L, 0x40800000040L, 0x400000000000030L, 0x8100000000000081L, 0x4000000020000L, + 0x1000000000002000L, 0x828408233f1L, 0x952f04c410000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1220459 + ); + + // gentest-2860 + assertEqual( + perft( + Board(0x2b08e450801300L, 0x40002000040L, 0x400000000004010L, 0x8100000000000081L, 0x200000000020000L, + 0x1000000000002000L, 0x820428273d1L, 0x972b04c410000000L, false, 0, 0x8100000000000000L), + 4 + ), + 746925 + ); + + // gentest-2861 + assertEqual( + perft( + Board(0x2b08e450801300L, 0x400002000040L, 0x400000000004010L, 0x8100000000000081L, 0x200000000010000L, + 0x1000000000002000L, 0x820428173d1L, 0x972b40c410000000L, true, 0, 0x8100000000000000L), + 4 + ), + 650803 + ); + + // gentest-2862 + assertEqual( + perft( + Board(0x2b08e450801300L, 0x400800200000L, 0x400000000004010L, 0x8100000000000081L, 0x200000000010000L, + 0x800000000002000L, 0x82840a17391L, 0x8f2b40c410000000L, false, 0, 0x0L), + 4 + ), + 1022801 + ); + + // gentest-2863 + assertEqual( + perft( + Board(0x2b08a450801300L, 0x4880000000L, 0x400000000004010L, 0x2100000000000081L, 0x200000000010000L, + 0x800000000002000L, 0x86840817391L, 0x2f2b008490000000L, true, 0, 0x0L), + 4 + ), + 649338 + ); + + // gentest-2864 + assertEqual( + perft( + Board(0x2b08a450801300L, 0x24080000000L, 0x400000000000030L, 0x4100000000000081L, 0x200000000010000L, + 0x800000000002000L, 0xa60408133b1L, 0x4f2b008490000000L, false, 0, 0x0L), + 4 + ), + 622373 + ); + + // gentest-2865 + assertEqual( + perft( + Board(0x2b08a450801300L, 0x24000004000L, 0x400000000000030L, 0x4100000000000081L, 0x200000000040000L, + 0x1000000000002000L, 0xa60408433b1L, 0x572b008410004000L, true, 0, 0x0L), + 4 + ), + 869973 + ); + + // gentest-2866 + assertEqual( + perft( + Board(0x2b0824d0811200L, 0x24000004000L, 0x400000000000820L, 0x4100000000000081L, 0x200000000040000L, + 0x1000000000002000L, 0xa6040853aa1L, 0x572b000490004000L, false, 0, 0x0L), + 4 + ), + 605029 + ); + + // gentest-2867 + assertEqual( + perft( + Board(0x2b0820d0811200L, 0x24000004000L, 0x400000000000820L, 0x4100000000000081L, 0x200000400000000L, + 0x1000000000002000L, 0xa6440813aa1L, 0x572b000090004000L, true, 0, 0x0L), + 4 + ), + 610455 + ); + + // gentest-2868 + assertEqual( + perft( + Board(0x30820d0811200L, 0x28000000100000L, 0x400000000000820L, 0x4100000000000081L, + 0x200000400000000L, 0x1000000000002000L, 0x28082440813aa1L, 0x5703000090100000L, false, 0, 0x0L), + 4 + ), + 1004628 + ); + + // gentest-2869 + assertEqual( + perft( + Board(0x2082190811200L, 0x28000000000000L, 0x400000000000820L, 0x100000040000081L, 0x200000000100000L, + 0x1000000000002000L, 0x28082000913aa1L, 0x17020001d0000000L, true, 0, 0x0L), + 4 + ), + 639299 + ); + + // gentest-2870 + assertEqual( + perft( + Board(0x82390811200L, 0x2020000000000000L, 0x400000000004800L, 0x100000040000081L, 0x200000000100000L, + 0x1000000000002000L, 0x2020082000917a81L, 0x17000003d0000000L, false, 0, 0x0L), + 4 + ), + 1263295 + ); + + // gentest-2871 + assertEqual( + perft( + Board(0x80390811200L, 0x2020000000000000L, 0x2000004800L, 0x100000040000005L, 0x4000000100000L, + 0x1000000000002000L, 0x2020080000917a05L, 0x11040023d0000000L, true, 0, 0x0L), + 4 + ), + 2923058 + ); + + // gentest-2872 + assertEqual( + perft( + Board(0x80380811200L, 0x2020000000000000L, 0x8000010000800L, 0x100000040000041L, 0x4000000100000L, + 0x1000000000002000L, 0x2020080010913a41L, 0x110c0003c0000000L, false, 0, 0x0L), + 4 + ), + 3040888 + ); + + // gentest-2873 + assertEqual( + perft( + Board(0x80380811200L, 0x28000000000000L, 0x10000800L, 0x100000040000041L, 0x100000L, + 0x1000000000002000L, 0x28080010813a41L, 0x11000003c0100000L, true, 0, 0x0L), + 4 + ), + 124599 + ); + + // gentest-2874 + assertEqual( + perft( + Board(0x80380811200L, 0x220000000000000L, 0x10000800L, 0x100000000000041L, 0x0L, 0x1000000000100000L, + 0x220080010911a01L, 0x1100000380000040L, false, 0, 0x0L), + 4 + ), + 527748 + ); + + // gentest-2875 + assertEqual( + perft( + Board(0x80380811200L, 0x220000000000000L, 0x10000800L, 0x100000000000041L, 0x0L, 0x40000008000000L, + 0x220080018811a01L, 0x140000380000040L, true, 0, 0x0L), + 4 + ), + 813428 + ); + + // gentest-2876 + assertEqual( + perft( + Board(0x803c0011200L, 0xa00000000000000L, 0x10000800L, 0x100000000000001L, 0x0L, 0x40000008000000L, + 0xa00080058011a01L, 0x140000380000000L, false, 0, 0x0L), + 4 + ), + 219949 + ); + + // gentest-2877 + assertEqual( + perft( + Board(0x803c0011200L, 0x200000000000000L, 0x10000800L, 0x100000000000001L, 0x0L, 0x20000008000000L, + 0x200080058011a01L, 0x120000380000000L, true, 0, 0x0L), + 4 + ), + 258684 + ); + + // gentest-2878 + assertEqual( + perft( + Board(0x803c0011200L, 0x200000000000000L, 0x100800000000000L, 0x1L, 0x0L, 0x100008000000L, + 0x300880048011201L, 0x100380000000L, false, 0, 0x0L), + 4 + ), + 50388 + ); + + // gentest-2879 + assertEqual( + perft( + Board(0x1c2011200L, 0x200000000000000L, 0x140000000000000L, 0x1L, 0x0L, 0x80008000000L, + 0x340000048011201L, 0x80182000000L, true, 0, 0x0L), + 4 + ), + 51094 + ); + + // gentest-2880 + assertEqual( + perft( + Board(0x1c2011200L, 0x8000000000000L, 0x140000000000000L, 0x20L, 0x0L, 0x10000008000000L, + 0x148000048011220L, 0x10000182000000L, false, 0, 0x0L), + 4 + ), + 124041 + ); + + // gentest-2881 + assertEqual( + perft( + Board(0x142811200L, 0x8000000000000L, 0x140000000000000L, 0x200000L, 0x0L, 0x80008000000L, + 0x148000048211200L, 0x80102800000L, true, 0, 0x0L), + 4 + ), + 74138 + ); + + // gentest-2882 + assertEqual( + perft( + Board(0x4102811200L, 0x8000000000000L, 0x140000000000000L, 0x20000000L, 0x0L, 0x4000008000000L, + 0x148004028011200L, 0x4000102800000L, false, 0, 0x0L), + 4 + ), + 95673 + ); + + // gentest-2883 + assertEqual( + perft( + Board(0x4102811200L, 0x8000000000000L, 0x100800000000000L, 0x20000000L, 0x0L, 0x4000008000000L, + 0x108804028011200L, 0x4000102800000L, true, 0, 0x0L), + 4 + ), + 83465 + ); + + // gentest-2884 + assertEqual( + perft( + Board(0x5102810200L, 0x0L, 0x100800000000000L, 0x20000000L, 0x0L, 0x8000008000000L, + 0x100805028010200L, 0x8000102800000L, false, 0, 0x0L), + 4 + ), + 72731 + ); + + // gentest-2885 + assertEqual( + perft( + Board(0x5003810200L, 0x0L, 0x800800000000L, 0x20000000L, 0x0L, 0x800000008000000L, 0x805828010200L, + 0x800000003800000L, true, 0, 0x0L), + 4 + ), + 59322 + ); + + // gentest-2886 + assertEqual( + perft( + Board(0x5003810200L, 0x0L, 0x800000200000L, 0x20000000L, 0x0L, 0x1000000400000000L, 0x805420210200L, + 0x1000000003800000L, false, 0, 0x0L), + 4 + ), + 45045 + ); + + // gentest-2887 + assertEqual( + perft( + Board(0x5003810200L, 0x0L, 0x800000200000L, 0x4000000L, 0x0L, 0x20000400000000L, 0x805404210200L, + 0x20000003800000L, true, 0, 0x0L), + 4 + ), + 49951 + ); + + // gentest-2888 + assertEqual( + perft( + Board(0x5003810200L, 0x0L, 0x808000000000L, 0x4L, 0x0L, 0x100400000000L, 0x80d400010204L, + 0x100003800000L, false, 0, 0x0L), + 4 + ), + 39526 + ); + + // gentest-2889 + assertEqual( + perft( + Board(0x5003018200L, 0x0L, 0x1000800000000000L, 0x4L, 0x0L, 0x2400000000L, 0x1000805400010204L, + 0x2003008000L, true, 0, 0x0L), + 4 + ), + 101743 + ); + + // gentest-2890 + assertEqual( + perft( + Board(0x5003038000L, 0x0L, 0x1000800000000000L, 0x4L, 0x0L, 0x14000000L, 0x1000805004030004L, + 0x13008000L, false, 0, 0x0L), + 4 + ), + 86554 + ); + + // gentest-2891 + assertEqual( + perft( + Board(0x5003030000L, 0x0L, 0x1000800000000000L, 0x1L, 0x80000000L, 0x14000000L, 0x1000805004030001L, + 0x93000000L, true, 0, 0x0L), + 4 + ), + 160641 + ); + + // gentest-2892 + assertEqual( + perft( + Board(0x5001030000L, 0x0L, 0x1000800000000000L, 0x40L, 0x800000L, 0x12000000L, 0x1000805002030040L, + 0x11800000L, false, 0, 0x0L), + 4 + ), + 323989 + ); + + // gentest-2893 + assertEqual( + perft( + Board(0x5001030000L, 0x0L, 0x800000000000L, 0x400000L, 0x1000000000000000L, 0x12000000L, + 0x805002430000L, 0x1000000011000000L, true, 0, 0x0L), + 4 + ), + 109149 + ); + + // gentest-2894 + assertEqual( + perft( + Board(0x5000030000L, 0x0L, 0x800000000000L, 0x8000000000000L, 0x1000000000000000L, 0x12000000L, + 0x8805002010000L, 0x1000000010020000L, false, 0, 0x0L), + 4 + ), + 172783 + ); + + // gentest-2895 + assertEqual( + perft( + Board(0x5000030000L, 0x0L, 0x800000000000L, 0x8000000000000L, 0x100000000000000L, 0x2004000000L, + 0x8805004010000L, 0x100002000020000L, true, 0, 0x0L), + 4 + ), + 251614 + ); + + // gentest-2896 + assertEqual( + perft( + Board(0x5000030000L, 0x0L, 0x800000000000L, 0x1000000000000L, 0x100000000000000L, 0x28000000L, + 0x1805008010000L, 0x100000020020000L, false, 0, 0x0L), + 4 + ), + 108858 + ); + + // gentest-2897 + assertEqual( + perft( + Board(0x5000030000L, 0x0L, 0x800000000000L, 0x100000000L, 0x100000000000000L, 0x28000000L, + 0x805108010000L, 0x100000020020000L, true, 0, 0x0L), + 4 + ), + 97778 + ); + + // gentest-2898 + assertEqual( + perft( + Board(0x5000030000L, 0x0L, 0x800000000000L, 0x100000000L, 0x200000L, 0x80020000000L, 0x885100010000L, + 0x20220000L, false, 0, 0x0L), + 4 + ), + 130289 + ); + + // gentest-2899 + assertEqual( + perft( + Board(0x5000010200L, 0x0L, 0x800000000000L, 0x100000000L, 0x10000000L, 0x420000000L, 0x805500010000L, + 0x30000200L, true, 0, 0x0L), + 4 + ), + 129748 + ); + + // gentest-2900 + assertEqual( + perft( + Board(0x5001000000L, 0x0L, 0x40000000000002L, 0x100000000L, 0x10000000L, 0x420000000L, + 0x40005501000000L, 0x30000002L, false, 0, 0x0L), + 4 + ), + 141380 + ); + + // gentest-2901 + assertEqual( + perft( + Board(0x5001000000L, 0x0L, 0x40000000080000L, 0x100000000L, 0x1000L, 0x20020000000L, + 0x40025101000000L, 0x20081000L, true, 0, 0x0L), + 4 + ), + 282625 + ); + + // gentest-2902 + assertEqual( + perft( + Board(0x5001000000L, 0x0L, 0x40000000080000L, 0x400L, 0x10000000L, 0x20020000000L, 0x40025001000400L, + 0x30080000L, false, 0, 0x0L), + 4 + ), + 358703 + ); + + // gentest-2903 + assertEqual( + perft( + Board(0x1001000000L, 0x0L, 0x40000000001000L, 0x2000L, 0x10000000L, 0x24000000000L, 0x40021001002000L, + 0x4010001000L, true, 0, 0x0L), + 4 + ), + 285473 + ); + + // gentest-2904 + assertEqual( + perft( + Board(0x1001000000L, 0x0L, 0x800200000000L, 0x2000L, 0x10000000L, 0x24000000000L, 0x821001002000L, + 0x4210000000L, false, 0, 0x0L), + 4 + ), + 96066 + ); + + // gentest-2905 + assertEqual( + perft( + Board(0x1001000000L, 0x0L, 0x10020000000L, 0x2000L, 0x10000000L, 0x20040000000L, 0x21021002000L, + 0x10050000000L, true, 0, 0x0L), + 4 + ), + 405393 + ); + + // gentest-2906 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x10000000004L, 0x8000L, 0x1000000000L, 0x20040000000L, 0x20001008004L, + 0x11040000000L, false, 0, 0x0L), + 4 + ), + 395737 + ); + + // gentest-2907 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x80004L, 0x80000000000000L, 0x4000000000L, 0x20040000000L, 0x80020001000004L, + 0x4040080000L, true, 0, 0x0L), + 4 + ), + 448417 + ); + + // gentest-2908 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x2000000800L, 0x80000000000000L, 0x4000000000L, 0x4000040000000L, + 0x84000001000800L, 0x6040000000L, false, 0, 0x0L), + 4 + ), + 254564 + ); + + // gentest-2909 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x404000000000L, 0x80000000000000L, 0x800000000000L, 0x4000040000000L, + 0x84004001000000L, 0xc00040000000L, true, 0, 0x0L), + 4 + ), + 293691 + ); + + // gentest-2910 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x400080000000L, 0x80000000000000L, 0x4000000000L, 0x200000040000000L, + 0x280000081000000L, 0x404040000000L, false, 0, 0x0L), + 4 + ), + 280088 + ); + + // gentest-2911 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x400080000000L, 0x1000000000000L, 0x2000000000L, 0x200000000200000L, + 0x201000081000000L, 0x402000200000L, true, 0, 0x0L), + 4 + ), + 329278 + ); + + // gentest-2912 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x10400000000000L, 0x1000000000000L, 0x2000000000L, 0x4000000004000L, + 0x15000001000000L, 0x402000004000L, false, 0, 0x0L), + 4 + ), + 334545 + ); + + // gentest-2913 + assertEqual( + perft( + Board(0x1000000L, 0x0L, 0x10000010000000L, 0x1000000000000L, 0x200000000000L, 0x400000000004000L, + 0x411000001000000L, 0x200010004000L, true, 0, 0x0L), + 4 + ), + 453171 + ); + + // gentest-2914 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x80000080000L, 0x1000000000000L, 0x200000000000L, 0x400000000004000L, + 0x401080100000000L, 0x200000084000L, false, 0, 0x0L), + 4 + ), + 505821 + ); + + // gentest-2915 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x10000008000L, 0x1000000000000L, 0x400000000000L, 0x400000000004000L, + 0x401000100008000L, 0x410000004000L, true, 0, 0x0L), + 4 + ), + 73905 + ); + + // gentest-2916 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x10000000000L, 0x100000000000000L, 0x400000000000L, 0x8000000008000L, + 0x108000100000000L, 0x410000008000L, false, 0, 0x0L), + 4 + ), + 119345 + ); + + // gentest-2917 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x4000000L, 0x1000000000000L, 0x400L, 0x8000000008000L, 0x9000100000000L, + 0x4008400L, true, 0, 0x0L), + 4 + ), + 148521 + ); + + // gentest-2918 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x4000000L, 0x1000000000000000L, 0x2L, 0x8000000008000L, + 0x1008000100000000L, 0x4008002L, false, 0, 0x0L), + 4 + ), + 295296 + ); + + // gentest-2919 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x4000000L, 0x2000000000000000L, 0x20000000000L, 0x8000000008000L, + 0x2008000100000000L, 0x20004008000L, true, 0, 0x0L), + 4 + ), + 254153 + ); + + // gentest-2920 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x4000000L, 0x20000000L, 0x40000000000L, 0x800000000008000L, + 0x800000120000000L, 0x40004008000L, false, 0, 0x0L), + 4 + ), + 185228 + ); + + // gentest-2921 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x100000000000L, 0x2000000000000000L, 0x40000000000L, 0x800000000000080L, + 0x2800000100000000L, 0x140000000080L, true, 0, 0x0L), + 4 + ), + 111433 + ); + + // gentest-2922 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x100000000000L, 0x4000000000000L, 0x0L, 0x800000000000080L, + 0x804000100000000L, 0x100000000080L, false, 0, 0x0L), + 4 + ), + 45994 + ); + + // gentest-2923 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x1000000000000000L, 0x400000000L, 0x0L, 0x800000000000080L, + 0x800000500000000L, 0x1000000000000080L, true, 0, 0x0L), + 4 + ), + 25948 + ); + + // gentest-2924 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x1000000L, 0x400000000000000L, 0x0L, 0x800000000000080L, + 0xc00010000000000L, 0x1000080L, false, 0, 0x0L), + 4 + ), + 20942 + ); + + // gentest-2925 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x1000000000000000L, 0x4000000000000L, 0x0L, 0x800000000004000L, + 0x804010000000000L, 0x1000000000004000L, true, 0, 0x0L), + 4 + ), + 45432 + ); + + // gentest-2926 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x1000000000000000L, 0x4000000000000L, 0x0L, 0x200000000000080L, + 0x204010000000000L, 0x1000000000000080L, false, 0, 0x0L), + 4 + ), + 31913 + ); + + // gentest-2927 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x1000000000000000L, 0x4000000000000L, 0x0L, 0x400000000000020L, + 0x404010000000000L, 0x1000000000000020L, true, 0, 0x0L), + 4 + ), + 33729 + ); + + // gentest-2928 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x8000000000L, 0x20000000000000L, 0x0L, 0x800000000000020L, + 0x820010000000000L, 0x8000000020L, false, 0, 0x0L), + 4 + ), + 16980 + ); + + // gentest-2929 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x400000000000L, 0x200000L, 0x0L, 0x800000000000010L, 0x800010000200000L, + 0x400000000010L, true, 0, 0x0L), + 4 + ), + 46526 + ); + + // gentest-2930 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x80000000000000L, 0x20000L, 0x0L, 0x8000000000010L, 0x8010000020000L, + 0x80000000000010L, false, 0, 0x0L), + 4 + ), + 61913 + ); + + // gentest-2931 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x80000000000000L, 0x200L, 0x0L, 0x8000000000010L, 0x8010000000200L, + 0x80000000000010L, true, 0, 0x0L), + 4 + ), + 48954 + ); + + // gentest-2932 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x2L, 0x800L, 0x0L, 0x100000000010L, 0x110000000800L, 0x12L, false, 0, + 0x0L), + 4 + ), + 26592 + ); + + // gentest-2933 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x400L, 0x1000L, 0x0L, 0x100000000020L, 0x110000001000L, 0x420L, true, 0, + 0x0L), + 4 + ), + 29872 + ); + + // gentest-2934 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x400L, 0x8000L, 0x0L, 0x80000000010L, 0x90000008000L, 0x410L, false, 0, + 0x0L), + 4 + ), + 52621 + ); + + // gentest-2935 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-2936 + assertEqual( + perft( + Board(0xef00102001de00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2001deffL, 0xffef001000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 399908 + ); + + // gentest-2937 + assertEqual( + perft( + Board(0xeb04103001ce00L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x3001ceffL, 0xfdeb051000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 885371 + ); + + // gentest-2938 + assertEqual( + perft( + Board(0xeb04103001ce00L, 0x4000010000000042L, 0x2400000000001004L, 0x8100000000000081L, + 0x200000000008L, 0x1000000000000020L, 0x3001deefL, 0xf5eb251000000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 803782 + ); + + // gentest-2939 + assertEqual( + perft( + Board(0xeb04103100ce00L, 0x4000010000000042L, 0x400000000011004L, 0x8200000000000081L, + 0x200000000008L, 0x1000000000000020L, 0x3100deefL, 0xd6eb251000010000L, true, 0, + 0x8000000000000000L), + 4 + ), + 993496 + ); + + // gentest-2940 + assertEqual( + perft( + Board(0xeb041031804e00L, 0x4000010000000042L, 0x400000004010004L, 0x8200000000000081L, + 0x200000000008L, 0x800000000000020L, 0x35804eefL, 0xceeb251000010000L, false, 0, 0x0L), + 4 + ), + 1327868 + ); + + // gentest-2941 + assertEqual( + perft( + Board(0xeb041031844a00L, 0x4000010000000042L, 0x410000004000004L, 0x8200000000000081L, 0x80000000008L, + 0x800000000000020L, 0x35844aefL, 0xcefb0d1000000000L, true, 0, 0x0L), + 4 + ), + 1323568 + ); + + // gentest-2942 + assertEqual( + perft( + Board(0xeb043011844a00L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, + 0x88000000000L, 0x800000000000020L, 0xa015844ae7L, 0xeeeb0d1000000000L, false, 0, 0x0L), + 4 + ), + 1136579 + ); + + // gentest-2943 + assertEqual( + perft( + Board(0xeb0034118c4200L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, + 0x48000000000L, 0x800000000000020L, 0xa0158c42e7L, 0xeeeb051400000000L, true, 0, 0x0L), + 4 + ), + 1262150 + ); + + // gentest-2944 + assertEqual( + perft( + Board(0xeb0014118c4200L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, + 0x208000000000L, 0x800000000000010L, 0x80158c42d7L, 0xeeeb211400000000L, false, 0, 0x0L), + 4 + ), + 1292844 + ); + + // gentest-2945 + assertEqual( + perft( + Board(0x638814118c4200L, 0x4000010000000042L, 0x2400000004000004L, 0x8200000000000081L, + 0x208000000000L, 0x800000000000800L, 0x80158c4ac7L, 0xee63a91400000000L, true, 0, 0x0L), + 4 + ), + 1062454 + ); + + // gentest-2946 + assertEqual( + perft( + Board(0x638814518c0200L, 0x4000000000000042L, 0x2008010000000004L, 0x8200000000000081L, + 0x208000000000L, 0x800000000000800L, 0x180518c0ac7L, 0xea6ba81400000000L, false, 0, 0x0L), + 4 + ), + 791347 + ); + + // gentest-2947 + assertEqual( + perft( + Board(0x63801c518c0200L, 0x4000000000001002L, 0x2008010000000004L, 0x8200000000000081L, + 0x10008000000000L, 0x800000000000800L, 0x180518c1a87L, 0xea7b801c00000000L, true, 0, 0x0L), + 4 + ), + 1119516 + ); + + // gentest-2948 + assertEqual( + perft( + Board(0x638014d10c0200L, 0x4000000000000042L, 0x2008010000000004L, 0x8200000000000081L, + 0x10008000000000L, 0x800000000000800L, 0x180c10c0ac7L, 0xea7b801410000000L, false, 0, 0x0L), + 4 + ), + 806522 + ); + + // gentest-2949 + assertEqual( + perft( + Board(0x638014910c0200L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, + 0x10008000000000L, 0x800000000000800L, 0x180810d0ac6L, 0xe973801450000000L, true, 0, 0x0L), + 4 + ), + 900148 + ); + + // gentest-2950 + assertEqual( + perft( + Board(0x238056910c0000L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, + 0x10008000000000L, 0x800000000000800L, 0x182810d08c6L, 0xe933805450000000L, false, 0, 0x0L), + 4 + ), + 696377 + ); + + // gentest-2951 + assertEqual( + perft( + Board(0x238056811c0000L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, + 0x108000000000L, 0x800000000000010L, 0x182810d00d6L, 0xe923905440100000L, true, 0, 0x0L), + 4 + ), + 1039444 + ); + + // gentest-2952 + assertEqual( + perft( + Board(0x3a01685180000L, 0x4000000000000042L, 0x2000010040000004L, 0x8100000000010080L, + 0x104000000000L, 0x800000000000010L, 0x142850900d6L, 0xe903b01440100000L, false, 0, 0x0L), + 4 + ), + 1329144 + ); + + // gentest-2953 + assertEqual( + perft( + Board(0x3a01685080000L, 0x4000000000000042L, 0x2000010040100000L, 0x180000000010080L, + 0x400004000000000L, 0x800000000000010L, 0x142851900d2L, 0x6d83a01440000000L, true, 0, 0x0L), + 4 + ), + 1406059 + ); + + // gentest-2954 + assertEqual( + perft( + Board(0x3a01685080000L, 0x4000000000000042L, 0x2000010000300000L, 0x180000000040080L, + 0x400008000000000L, 0x800000000000010L, 0x182851c00d2L, 0x6d83a01400200000L, false, 0, 0x0L), + 4 + ), + 1495619 + ); + + // gentest-2955 + assertEqual( + perft( + Board(0x3a01685000000L, 0x4000000000000042L, 0x2000010000200004L, 0x180000000040080L, 0x8000080000L, + 0x800000000000010L, 0x182850400d6L, 0x6983a01400280000L, true, 0, 0x0L), + 4 + ), + 1512471 + ); + + // gentest-2956 + assertEqual( + perft( + Board(0x1a01685000000L, 0x4000000000000840L, 0x2002000000200004L, 0x180000000040080L, 0x8000000000L, + 0x800000000000010L, 0x20082850408d4L, 0x6981a01400200000L, false, 0, 0x0L), + 4 + ), + 1256456 + ); + + // gentest-2957 + assertEqual( + perft( + Board(0x1a01685000000L, 0x4000000000200040L, 0x2002000000000004L, 0x180000000040080L, 0x8000000000L, + 0x800000000000010L, 0x20082852400d4L, 0x6981a01400000000L, true, 0, 0x0L), + 4 + ), + 667804 + ); + + // gentest-2958 + assertEqual( + perft( + Board(0x1a21485000000L, 0x4000000000200040L, 0x2002000000000004L, 0x180000000040080L, 0x0L, + 0x1000000000000010L, 0x20200852400d4L, 0x7181a01400000000L, false, 0, 0x0L), + 4 + ), + 657090 + ); + + // gentest-2959 + assertEqual( + perft( + Board(0x1a29405000000L, 0x4000000000200040L, 0x2002000000000004L, 0x110000000040080L, 0x0L, + 0x1000000000000010L, 0x20280052400d4L, 0x7111a01400000000L, true, 0, 0x0L), + 4 + ), + 487689 + ); + + // gentest-2960 + assertEqual( + perft( + Board(0x1229405000000L, 0x4000000000200040L, 0x2000840000000000L, 0x104000000040080L, 0x0L, + 0x1000000000000010L, 0x8680052400d0L, 0x7105201400000000L, false, 0, 0x0L), + 4 + ), + 142138 + ); + + // gentest-2961 + assertEqual( + perft( + Board(0x1229504000000L, 0x4000000000200040L, 0x2000840000000000L, 0x104000000040080L, 0x0L, + 0x400000000000010L, 0x8681042400d0L, 0x6505201400000000L, true, 0, 0x0L), + 4 + ), + 575088 + ); + + // gentest-2962 + assertEqual( + perft( + Board(0x1229504000000L, 0x4000000000201000L, 0x2100800000000000L, 0x20000000040080L, 0x0L, + 0x400000000000010L, 0x100828104241090L, 0x6421201400000000L, false, 0, 0x0L), + 4 + ), + 553133 + ); + + // gentest-2963 + assertEqual( + perft( + Board(0x1229504000000L, 0x800020200000L, 0x2100000000000000L, 0x20000000040080L, 0x0L, + 0x8000000000010L, 0x100028124240090L, 0x2029a01400000000L, true, 0, 0x0L), + 4 + ), + 446645 + ); + + // gentest-2964 + assertEqual( + perft( + Board(0x1229504000000L, 0x804020000000L, 0x2100000000000000L, 0x20000000010080L, 0x0L, + 0x400000000000010L, 0x10002c124010090L, 0x2421a01400000000L, false, 0, 0x0L), + 4 + ), + 696792 + ); + + // gentest-2965 + assertEqual( + perft( + Board(0x102d504000000L, 0x2020000000L, 0x2000000000200000L, 0x20000000010080L, 0x0L, + 0x400000000000010L, 0x28124210090L, 0x2421007400000000L, true, 0, 0x0L), + 4 + ), + 868137 + ); + + // gentest-2966 + assertEqual( + perft( + Board(0x102d504000000L, 0x2000004000L, 0x2000000000200000L, 0x20000000810000L, 0x0L, + 0x800000000000010L, 0x28104a14010L, 0x2821007400000000L, false, 0, 0x0L), + 4 + ), + 646646 + ); + + // gentest-2967 + assertEqual( + perft( + Board(0x102d504000000L, 0x80000004000L, 0x2000000040000000L, 0x80000000810000L, 0x0L, + 0x800000000000010L, 0x28144814010L, 0x2881085400000000L, true, 0, 0x0L), + 4 + ), + 718518 + ); + + // gentest-2968 + assertEqual( + perft( + Board(0x102d504000000L, 0x80000004000L, 0x2000000040000000L, 0x10000000210000L, 0x0L, + 0x800000000000010L, 0x28144214010L, 0x2811085400000000L, false, 0, 0x0L), + 4 + ), + 558481 + ); + + // gentest-2969 + assertEqual( + perft( + Board(0x102d504000000L, 0x2000000004000L, 0x2000100000000000L, 0x40000000210000L, 0x0L, + 0x800000000000010L, 0x128104214010L, 0x2843005400000000L, true, 0, 0x0L), + 4 + ), + 399215 + ); + + // gentest-2970 + assertEqual( + perft( + Board(0x102d504000000L, 0x2000800000000L, 0x2000100000000000L, 0x8000000210000L, 0x0L, + 0x800000000000010L, 0x128904210010L, 0x280b005400000000L, false, 0, 0x0L), + 4 + ), + 519655 + ); + + // gentest-2971 + assertEqual( + perft( + Board(0x102d504000000L, 0x1000000800000000L, 0x2000100000000000L, 0x8000000010020L, 0x0L, + 0x800000000000010L, 0x128904010030L, 0x3809005400000000L, true, 0, 0x0L), + 4 + ), + 636298 + ); + + // gentest-2972 + assertEqual( + perft( + Board(0x102d504000000L, 0x1000000002000000L, 0x2000100000000000L, 0x40000000400020L, 0x0L, + 0x800000000000010L, 0x128106400030L, 0x3841005400000000L, false, 0, 0x0L), + 4 + ), + 589382 + ); + + // gentest-2973 + assertEqual( + perft( + Board(0x103c414000000L, 0x1000000002000000L, 0x2000100000000000L, 0x20000000400020L, 0x0L, + 0x800000000000010L, 0x138006400030L, 0x3821004410000000L, true, 0, 0x0L), + 4 + ), + 606653 + ); + + // gentest-2974 + assertEqual( + perft( + Board(0x103c414000000L, 0x1000000002000000L, 0x2000100000000000L, 0x40002000020000L, 0x0L, + 0x800000000000010L, 0x13a006020010L, 0x3841004410000000L, false, 0, 0x0L), + 4 + ), + 445667 + ); + + // gentest-2975 + assertEqual( + perft( + Board(0x1038454000000L, 0x1000000002000000L, 0x100000000000L, 0x2002000000020000L, 0x0L, + 0x800000000000010L, 0x2000138006020010L, 0x1803000450000000L, true, 0, 0x0L), + 4 + ), + 246709 + ); + + // gentest-2976 + assertEqual( + perft( + Board(0x38454000000L, 0x1000000002000000L, 0x2000000000L, 0x22000000020000L, 0x0L, 0x800000000000010L, + 0x2001a006020010L, 0x1802020450000000L, false, 0, 0x0L), + 4 + ), + 235031 + ); + + // gentest-2977 + assertEqual( + perft( + Board(0x38454000000L, 0x1000000002000000L, 0x80000000000000L, 0x420000000020000L, 0x0L, + 0x800000000000010L, 0xa0018006020010L, 0x1c00020450000000L, true, 0, 0x0L), + 4 + ), + 208224 + ); + + // gentest-2978 + assertEqual( + perft( + Board(0x38454000000L, 0x1000000002000000L, 0x80000000000000L, 0x5000000080000L, 0x0L, + 0x800000000000010L, 0x81018006080010L, 0x1804020450000000L, false, 0, 0x0L), + 4 + ), + 58519 + ); + + // gentest-2979 + assertEqual( + perft( + Board(0x38454000000L, 0x80002000000L, 0x80000000000000L, 0x1040000080000L, 0x0L, 0x800000000000008L, + 0x81018006080008L, 0x8000e0450000000L, true, 0, 0x0L), + 4 + ), + 121984 + ); + + // gentest-2980 + assertEqual( + perft( + Board(0x38404400000L, 0x80000000400L, 0x10000000L, 0x1040000080000L, 0x0L, 0x800000000000008L, + 0x1018014080408L, 0x8000e0400400000L, false, 0, 0x0L), + 4 + ), + 85507 + ); + + // gentest-2981 + assertEqual( + perft( + Board(0x38404400000L, 0x80008000000L, 0x10000000L, 0x1000000080000L, 0x0L, 0x800000000000008L, + 0x1801c080008L, 0x8010a0400400000L, true, 0, 0x0L), + 4 + ), + 396727 + ); + + // gentest-2982 + assertEqual( + perft( + Board(0x38404400000L, 0x80000200000L, 0x80L, 0x1000000080000L, 0x0L, 0x8000000000008L, 0x18004280088L, + 0x90a0400400000L, false, 0, 0x0L), + 4 + ), + 130649 + ); + + // gentest-2983 + assertEqual( + perft( + Board(0x38404400000L, 0x80000200000L, 0x4000L, 0x100000000080000L, 0x0L, 0x4000000000008L, + 0x18004284008L, 0x1040a0400400000L, true, 0, 0x0L), + 4 + ), + 295823 + ); + + // gentest-2984 + assertEqual( + perft( + Board(0x38404400000L, 0x20000000200000L, 0x4000L, 0x100000800000000L, 0x0L, 0x4000000001000L, + 0x18804205000L, 0x124020400400000L, false, 0, 0x0L), + 4 + ), + 237741 + ); + + // gentest-2985 + assertEqual( + perft( + Board(0x38404400000L, 0x400000000040L, 0x4000L, 0x100000800000000L, 0x0L, 0x4000000001000L, + 0x18804005040L, 0x104420400400000L, true, 0, 0x0L), + 4 + ), + 209660 + ); + + // gentest-2986 + assertEqual( + perft( + Board(0x38404400000L, 0x400000000040L, 0x4000L, 0x1000004000000000L, 0x0L, 0x4000000000008L, + 0x1c004004048L, 0x1004420400400000L, false, 0, 0x0L), + 4 + ), + 327669 + ); + + // gentest-2987 + assertEqual( + perft( + Board(0x430404400000L, 0x40L, 0x4000L, 0x4010000000L, 0x0L, 0x200000000000008L, 0x414004004048L, + 0x200020410400000L, true, 0, 0x0L), + 4 + ), + 97076 + ); + + // gentest-2988 + assertEqual( + perft( + Board(0x430004400000L, 0x40L, 0x40000000000L, 0x1000000400000000L, 0x0L, 0x200000000000008L, + 0x450404000048L, 0x1200020000400000L, false, 0, 0x0L), + 4 + ), + 154529 + ); + + // gentest-2989 + assertEqual( + perft( + Board(0x430004400000L, 0x40L, 0x4000L, 0x40000400000000L, 0x0L, 0x200000000000008L, 0x410404004048L, + 0x240020000400000L, true, 0, 0x0L), + 4 + ), + 115471 + ); + + // gentest-2990 + assertEqual( + perft( + Board(0x430004400000L, 0x40L, 0x10000000L, 0x8000800000000L, 0x0L, 0x200000000000008L, + 0x410814000048L, 0x208020000400000L, false, 0, 0x0L), + 4 + ), + 164130 + ); + + // gentest-2991 + assertEqual( + perft( + Board(0x30004400000L, 0x200000L, 0x10000000L, 0x400800000000L, 0x0L, 0x200000000000008L, + 0x10814200008L, 0x200420000400000L, true, 0, 0x0L), + 4 + ), + 200985 + ); + + // gentest-2992 + assertEqual( + perft( + Board(0x1020004400000L, 0x200000L, 0x10000000L, 0x400800000000L, 0x0L, 0x100000000000004L, + 0x1000814200004L, 0x100420000400000L, false, 0, 0x0L), + 4 + ), + 136456 + ); + + // gentest-2993 + assertEqual( + perft( + Board(0x20004400000L, 0x200000L, 0x10000000L, 0x408000000000L, 0x0L, 0x10000000004L, 0x8014200004L, + 0x430000400000L, true, 0, 0x0L), + 4 + ), + 199320 + ); + + // gentest-2994 + assertEqual( + perft( + Board(0x204400000L, 0x200000L, 0x80000000000000L, 0x8000000000L, 0x0L, 0x10000000004L, + 0x80008004200004L, 0x10200400000L, false, 0, 0x0L), + 4 + ), + 51435 + ); + + // gentest-2995 + assertEqual( + perft( + Board(0x204004000L, 0x10L, 0x80000000000000L, 0x8000000000L, 0x0L, 0x100000004L, 0x80008004000014L, + 0x300004000L, true, 0, 0x0L), + 4 + ), + 69444 + ); + + // gentest-2996 + assertEqual( + perft( + Board(0x204004000L, 0x10L, 0x4000000000000000L, 0x8000000000000000L, 0x0L, 0x20000000004L, + 0xc000000004000014L, 0x20200004000L, false, 0, 0x0L), + 4 + ), + 78822 + ); + + // gentest-2997 + assertEqual( + perft( + Board(0x204000000L, 0x200010L, 0x4000000000000000L, 0x80000000000000L, 0x0L, 0x20000000004L, + 0x4080000004000014L, 0x20200200000L, true, 0, 0x0L), + 4 + ), + 110096 + ); + + // gentest-2998 + assertEqual( + perft( + Board(0x204000000L, 0x200010L, 0x4000000000000000L, 0x1000000000000L, 0x0L, 0x10000000004L, + 0x4001000004000014L, 0x10200200000L, false, 0, 0x0L), + 4 + ), + 12036 + ); + + // gentest-2999 + assertEqual( + perft( + Board(0x6000000L, 0x200010L, 0x4000000000000000L, 0x0L, 0x0L, 0x1000000000002L, 0x4000000004000012L, + 0x1000002200000L, true, 0, 0x0L), + 4 + ), + 30709 + ); + + // gentest-3000 + assertEqual( + perft( + Board(0x402000000L, 0x8080000L, 0x4000000000000000L, 0x0L, 0x0L, 0x1000000000002L, + 0x4000000400080002L, 0x100000a000000L, false, 0, 0x0L), + 4 + ), + 50250 + ); + + // gentest-3001 + assertEqual( + perft( + Board(0x402000000L, 0x101000000000L, 0x4000000000000000L, 0x0L, 0x0L, 0x100000000000002L, + 0x4000001400000002L, 0x100100002000000L, true, 0, 0x0L), + 4 + ), + 34669 + ); + + // gentest-3002 + assertEqual( + perft( + Board(0x400020000L, 0x10100000000000L, 0x4000000000000000L, 0x0L, 0x0L, 0x100000000000002L, + 0x4010000400000002L, 0x100100000020000L, false, 0, 0x0L), + 4 + ), + 25057 + ); + + // gentest-3003 + assertEqual( + perft( + Board(0x400020000L, 0x10040000000000L, 0x4000000L, 0x0L, 0x0L, 0x100000000000002L, 0x10000404000002L, + 0x100040000020000L, true, 0, 0x0L), + 4 + ), + 33255 + ); + + // gentest-3004 + assertEqual( + perft( + Board(0x400020000L, 0x210000000000000L, 0x4000000L, 0x0L, 0x0L, 0x100000000000002L, 0x10000404000002L, + 0x300000000020000L, false, 0, 0x0L), + 4 + ), + 16730 + ); + + // gentest-3005 + assertEqual( + perft( + Board(0x400020000L, 0x200400000000000L, 0x4000000L, 0x0L, 0x0L, 0x100000000000002L, 0x400404000002L, + 0x300000000020000L, true, 0, 0x0L), + 4 + ), + 16276 + ); + + // gentest-3006 + assertEqual( + perft( + Board(0x400000000L, 0x410000000000L, 0x20000L, 0x0L, 0x0L, 0x100000000000200L, 0x400400020200L, + 0x100010000000000L, false, 0, 0x0L), + 4 + ), + 25592 + ); + + // gentest-3007 + assertEqual( + perft( + Board(0x400000000L, 0x410000000000L, 0x8L, 0x0L, 0x0L, 0x400000000000200L, 0x400400000208L, + 0x400010000000000L, true, 0, 0x0L), + 4 + ), + 31673 + ); + + // gentest-3008 + assertEqual( + perft( + Board(0x400000000L, 0x8000010000000000L, 0x8000000000L, 0x0L, 0x0L, 0x8000000000200L, + 0x8000008400000200L, 0x8010000000000L, false, 0, 0x0L), + 4 + ), + 27029 + ); + + // gentest-3009 + assertEqual( + perft( + Board(0x400000000L, 0x8000000000000100L, 0x20000000000000L, 0x0L, 0x0L, 0x8000000000200L, + 0x8020000400000200L, 0x8000000000100L, true, 0, 0x0L), + 4 + ), + 16697 + ); + + // gentest-3010 + assertEqual( + perft( + Board(0x400000000L, 0x8000000000000000L, 0x100L, 0x0L, 0x0L, 0x4000000000002L, 0x8000000400000102L, + 0x4000000000000L, false, 0, 0x0L), + 4 + ), + 6532 + ); + + // gentest-3011 + assertEqual( + perft( + Board(0x400000000L, 0x8000000000000000L, 0x100000000000L, 0x0L, 0x0L, 0x1000000000000002L, + 0x8000100400000002L, 0x1000000000000000L, true, 0, 0x0L), + 4 + ), + 4417 + ); + + // gentest-3012 + assertEqual( + perft( + Board(0x400000000L, 0x80000000000L, 0x100000000000L, 0x0L, 0x0L, 0x10000000000002L, 0x180400000002L, + 0x10000000000000L, false, 0, 0x0L), + 4 + ), + 6576 + ); + + // gentest-3013 + assertEqual( + perft( + Board(0x400000000L, 0x80000000000L, 0x40000000L, 0x0L, 0x0L, 0x10000000000002L, 0x80440000002L, + 0x10000000000000L, true, 0, 0x0L), + 4 + ), + 8531 + ); + + // gentest-3014 + assertEqual( + perft( + Board(0x400000000L, 0x200000000L, 0x40000000L, 0x0L, 0x0L, 0x800000000000001L, 0x640000001L, + 0x800000000000000L, false, 0, 0x0L), + 4 + ), + 3339 + ); + + // gentest-3015 + assertEqual( + perft( + Board(0x400000000L, 0x200000000L, 0x40000000L, 0x0L, 0x0L, 0x2000000000000002L, 0x640000002L, + 0x2000000000000000L, true, 0, 0x0L), + 4 + ), + 11498 + ); + + // gentest-3016 + assertEqual( + perft( + Board(0x400000000L, 0x4000000000000L, 0x8000000000000L, 0x0L, 0x0L, 0x20000000000002L, + 0xc000400000002L, 0x20000000000000L, false, 0, 0x0L), + 4 + ), + 13789 + ); + + // gentest-3017 + assertEqual( + perft( + Board(0x400000000L, 0x4000000000000L, 0x8000000000000L, 0x0L, 0x0L, 0x40000000000100L, + 0xc000400000100L, 0x40000000000000L, true, 0, 0x0L), + 4 + ), + 15149 + ); + + // gentest-3018 + assertEqual( + perft( + Board(0x400000000L, 0x1000000000000000L, 0x1000000L, 0x0L, 0x0L, 0x8000000000000100L, + 0x1000000401000100L, 0x8000000000000000L, false, 0, 0x0L), + 4 + ), + 2245 + ); + + // gentest-3019 + assertEqual( + perft( + Board(0x400000000L, 0x200000000000L, 0x1000000L, 0x0L, 0x0L, 0x8000000000000100L, 0x200401000100L, + 0x8000000000000000L, true, 0, 0x0L), + 4 + ), + 3467 + ); + + // gentest-3020 + assertEqual( + perft( + Board(0x400000000L, 0x10000000L, 0x1000000L, 0x0L, 0x0L, 0x40000000000200L, 0x411000200L, + 0x40000000000000L, false, 0, 0x0L), + 4 + ), + 16262 + ); + + // gentest-3021 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3022 + assertEqual( + perft( + Board(0xfd02000004fb00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x5fbfdL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 281870 + ); + + // gentest-3023 + assertEqual( + perft( + Board(0xd52a0080047b00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80057bfdL, 0xffd52a0000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 421449 + ); + + // gentest-3024 + assertEqual( + perft( + Board(0xd52a0080146b00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000800001L, + 0x800000000000008L, 0x8000000000010L, 0x80956b7dL, 0xefdd2a0000000000L, false, 0, 0x1L), + 4 + ), + 574252 + ); + + // gentest-3025 + assertEqual( + perft( + Board(0xc42a1180146b00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000000010L, 0x80156bfdL, 0xefcc2a1100000000L, true, 0, 0x1L), + 4 + ), + 697557 + ); + + // gentest-3026 + assertEqual( + perft( + Board(0x442a9188146300L, 0x4200000200000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000000010L, 0x2881463fdL, 0xef4c2a9100000000L, false, 0, 0x1L), + 4 + ), + 944902 + ); + + // gentest-3027 + assertEqual( + perft( + Board(0x442a9089146300L, 0x200800200000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000200000L, 0x8000000000010L, 0x2883463f5L, 0xaf4caa9001000000L, true, 0, 0x1L), + 4 + ), + 1024011 + ); + + // gentest-3028 + assertEqual( + perft( + Board(0x442a9089166100L, 0x810200000040L, 0x2400000000000024L, 0x8100000000000082L, + 0x800000000200000L, 0x8000000000010L, 0x2883661f6L, 0xad4cab9001000000L, false, 0, 0x0L), + 4 + ), + 1277431 + ); + + // gentest-3029 + assertEqual( + perft( + Board(0x442a9088166100L, 0x810200001000L, 0x2400000000000024L, 0x8100000000000082L, + 0x800000000200000L, 0x100000000010L, 0x2883471b6L, 0xad44bb9000020000L, true, 0, 0x0L), + 4 + ), + 992244 + ); + + // gentest-3030 + assertEqual( + perft( + Board(0x402a9488166100L, 0x810000011000L, 0x2400000000000024L, 0x8000000000000082L, + 0x900000000000000L, 0x100000000010L, 0x1000000881571b6L, 0xac40bb9400020000L, false, 0, 0x0L), + 4 + ), + 1110407 + ); + + // gentest-3031 + assertEqual( + perft( + Board(0x402a8488166100L, 0x40011000L, 0x2400000000000024L, 0x8000000000000082L, 0x800010000000000L, + 0x100000000010L, 0x100801571b6L, 0xac403a8448020000L, true, 0, 0x0L), + 4 + ), + 1031772 + ); + + // gentest-3032 + assertEqual( + perft( + Board(0x402a8488066100L, 0x510000L, 0x2400000000000024L, 0x8000000000000082L, 0x900000000000000L, + 0x100000000010L, 0x1000000804561b6L, 0xac403a8408120000L, false, 0, 0x0L), + 4 + ), + 1449489 + ); + + // gentest-3033 + assertEqual( + perft( + Board(0x402a8488066100L, 0x410400L, 0x2400000000000024L, 0x80000000000042L, 0x900000000000000L, + 0x100000000010L, 0x100000080456176L, 0x2cc03a8408020400L, true, 0, 0x0L), + 4 + ), + 118677 + ); + + // gentest-3034 + assertEqual( + perft( + Board(0x402a8488046300L, 0x410000L, 0x2400000000000024L, 0x80000000000042L, 0x900000000000000L, + 0x100000000010L, 0x100000080456176L, 0x2cc03a8408000200L, false, 0, 0x0L), + 4 + ), + 881898 + ); + + // gentest-3035 + assertEqual( + perft( + Board(0x402a8488046300L, 0x410000L, 0x2400000000000024L, 0x800000000042L, 0x800000010000000L, + 0x20000000000010L, 0x90456176L, 0x2c60aa8408000200L, true, 0, 0x0L), + 4 + ), + 1229633 + ); + + // gentest-3036 + assertEqual( + perft( + Board(0x402a0488046300L, 0x8000010000L, 0x2400000000000024L, 0x800000000042L, 0x800002000000000L, + 0x10000000000010L, 0xa080056176L, 0x2c50aa0408000200L, false, 0, 0x0L), + 4 + ), + 1042258 + ); + + // gentest-3037 + assertEqual( + perft( + Board(0x620c88046300L, 0x8000000400L, 0x2400000000000024L, 0x800000000042L, 0x800002000000000L, + 0x10000000000010L, 0xa080046576L, 0x2c10e20c08000200L, true, 0, 0x0L), + 4 + ), + 1316696 + ); + + // gentest-3038 + assertEqual( + perft( + Board(0x620c88046300L, 0x8000000400L, 0x2400000000001004L, 0x800000000042L, 0x800001000000000L, + 0x80000000010L, 0x9080047556L, 0x2c00ea0c08000200L, false, 0, 0x0L), + 4 + ), + 205245 + ); + + // gentest-3039 + assertEqual( + perft( + Board(0x620c88056200L, 0x8000000400L, 0x2008000000001004L, 0x800000000042L, 0x800001000000000L, + 0x40000000010L, 0x9080057456L, 0x2808e60c08000200L, true, 0, 0x0L), + 4 + ), + 1755453 + ); + + // gentest-3040 + assertEqual( + perft( + Board(0x620c88056000L, 0x8000000400L, 0x2008010000000000L, 0x800000000046L, 0x800001000000000L, + 0x40000000800L, 0x19080056c42L, 0x2808e60c08000004L, false, 0, 0x0L), + 4 + ), + 2013647 + ); + + // gentest-3041 + assertEqual( + perft( + Board(0x420c88056000L, 0x200000000400L, 0x3000010000000000L, 0x80000000000046L, 0x800001000000000L, + 0x40000000800L, 0x211080056c42L, 0x3880460c08000004L, true, 0, 0x0L), + 4 + ), + 2817390 + ); + + // gentest-3042 + assertEqual( + perft( + Board(0x420c88056000L, 0x80000000000400L, 0x2020000004000000L, 0x46L, 0x800001000000000L, + 0x40000000800L, 0x80001084056c42L, 0x2820460c08000004L, false, 0, 0x0L), + 4 + ), + 1854380 + ); + + // gentest-3043 + assertEqual( + perft( + Board(0x400c88056000L, 0x80000000000400L, 0x2020000004000000L, 0x44L, 0x200001000000000L, + 0x20000000800L, 0x80001084056c40L, 0x2220420c08000004L, true, 0, 0x0L), + 4 + ), + 1941375 + ); + + // gentest-3044 + assertEqual( + perft( + Board(0x400c88452000L, 0x80000000000400L, 0x2020000004000000L, 0x44L, 0x2008000000000L, + 0x20000000800L, 0x80008084452c40L, 0x2022420c08000004L, false, 0, 0x0L), + 4 + ), + 1276940 + ); + + // gentest-3045 + assertEqual( + perft( + Board(0x400488452000L, 0x80000000000400L, 0x2020000004000000L, 0x44L, 0x2000800000000L, + 0x20000000800L, 0x80000884452c40L, 0x2022420408000004L, true, 0, 0x0L), + 4 + ), + 1712575 + ); + + // gentest-3046 + assertEqual( + perft( + Board(0x4488452000L, 0x80000000000400L, 0x2020000004000000L, 0x14L, 0x2080000000000L, 0x20000000800L, + 0x80080084452c10L, 0x2022024408000004L, false, 0, 0x0L), + 4 + ), + 318006 + ); + + // gentest-3047 + assertEqual( + perft( + Board(0x4488452000L, 0x80000000000400L, 0x2020000004000000L, 0x84L, 0x10080000000000L, + 0x1000000000800L, 0x80080084452c80L, 0x2031004408000004L, true, 0, 0x0L), + 4 + ), + 2112861 + ); + + // gentest-3048 + assertEqual( + perft( + Board(0x4488452000L, 0x80000000000400L, 0x2000000804000000L, 0x84L, 0x10000000000000L, + 0x1000000000800L, 0x90000084452c80L, 0x2001004c08000004L, false, 0, 0x0L), + 4 + ), + 235732 + ); + + // gentest-3049 + assertEqual( + perft( + Board(0xc408452000L, 0x80000000000400L, 0x2000000804000000L, 0x88L, 0x10000000000000L, + 0x200000000000800L, 0x90008004452c80L, 0x2200004c08000008L, true, 0, 0x0L), + 4 + ), + 52188 + ); + + // gentest-3050 + assertEqual( + perft( + Board(0x8408452000L, 0x4000000400L, 0x2000100004000000L, 0x88L, 0x10000000000000L, 0x200000000001000L, + 0x1000c004453480L, 0x2200100408000008L, false, 0, 0x0L), + 4 + ), + 828232 + ); + + // gentest-3051 + assertEqual( + perft( + Board(0x8408452000L, 0x4000000400L, 0x2000000004000000L, 0x82L, 0x10000000000000L, 0x200000000200000L, + 0x1000c000652480L, 0x220000040c000002L, true, 0, 0x0L), + 4 + ), + 1148562 + ); + + // gentest-3052 + assertEqual( + perft( + Board(0x8408452000L, 0x4000000400L, 0x2000000004000000L, 0x8002L, 0x800000000000000L, + 0x1000000200000L, 0x80000c00065a400L, 0x200100040c000002L, false, 0, 0x0L), + 4 + ), + 989698 + ); + + // gentest-3053 + assertEqual( + perft( + Board(0x8408452000L, 0x4000000400L, 0x2000000004000000L, 0x8200L, 0x10000000000000L, + 0x100000000200000L, 0x1000c00065a400L, 0x210000040c000200L, true, 0, 0x0L), + 4 + ), + 800379 + ); + + // gentest-3054 + assertEqual( + perft( + Board(0x8408452000L, 0x4000000400L, 0x2000000800000000L, 0x8200L, 0x100000L, 0x100000020000000L, + 0xc02055a400L, 0x2100000c08000200L, false, 0, 0x0L), + 4 + ), + 1003136 + ); + + // gentest-3055 + assertEqual( + perft( + Board(0x8400552000L, 0x4000000400L, 0x2000000010000000L, 0x4200L, 0x0L, 0x100000020000000L, + 0xc020456400L, 0x2100000410100200L, true, 0, 0x0L), + 4 + ), + 402290 + ); + + // gentest-3056 + assertEqual( + perft( + Board(0x8004552000L, 0x800000000400L, 0x2000000010000000L, 0x4200L, 0x0L, 0x100000020000000L, + 0x808020456400L, 0x2100000014100200L, false, 0, 0x0L), + 4 + ), + 325256 + ); + + // gentest-3057 + assertEqual( + perft( + Board(0x8044152000L, 0x800000000400L, 0x200010000000L, 0x4200L, 0x0L, 0x100000020000000L, + 0x808060056400L, 0x100200014100200L, true, 0, 0x0L), + 4 + ), + 339525 + ); + + // gentest-3058 + assertEqual( + perft( + Board(0xc004152000L, 0x800008000000L, 0x200010000000L, 0x24000L, 0x0L, 0x100000020000000L, + 0x80c028056000L, 0x100200014120000L, false, 0, 0x0L), + 4 + ), + 511507 + ); + + // gentest-3059 + assertEqual( + perft( + Board(0xc004142000L, 0x800008000000L, 0x200010000000L, 0x4001L, 0x0L, 0x100000040000000L, + 0x80c048046000L, 0x100200014100001L, true, 0, 0x0L), + 4 + ), + 583524 + ); + + // gentest-3060 + assertEqual( + perft( + Board(0x208004142000L, 0x802000000000L, 0x10000000L, 0x4004L, 0x0L, 0x100000040000000L, + 0xa0a040046000L, 0x100000014100004L, false, 0, 0x0L), + 4 + ), + 211604 + ); + + // gentest-3061 + assertEqual( + perft( + Board(0x208004142000L, 0x800008000000L, 0x10000000L, 0x5000L, 0x0L, 0x100000040000000L, + 0xa08048046000L, 0x100000014101000L, true, 0, 0x0L), + 4 + ), + 206449 + ); + + // gentest-3062 + assertEqual( + perft( + Board(0x208004142000L, 0x800008000000L, 0x10000000L, 0x4200L, 0x0L, 0x100000080000000L, + 0xa08088046000L, 0x100000014100200L, false, 0, 0x0L), + 4 + ), + 488541 + ); + + // gentest-3063 + assertEqual( + perft( + Board(0x208004142000L, 0x800008000000L, 0x80000000000000L, 0x4000000000000200L, 0x0L, + 0x2000080000000L, 0x4000a08088042000L, 0x82000004100200L, true, 0, 0x0L), + 4 + ), + 467914 + ); + + // gentest-3064 + assertEqual( + perft( + Board(0x208004042000L, 0x802000000000L, 0x80000000000000L, 0x2000000000000200L, 0x0L, + 0x2000080000000L, 0x2000a0a080040000L, 0x82000004002200L, false, 0, 0x0L), + 4 + ), + 219086 + ); + + // gentest-3065 + assertEqual( + perft( + Board(0x208004040000L, 0x802000000000L, 0x80000000000000L, 0x800000000000204L, 0x0L, 0x2000080000000L, + 0x800a0a080040000L, 0x82000004000204L, true, 0, 0x0L), + 4 + ), + 531682 + ); + + // gentest-3066 + assertEqual( + perft( + Board(0x208004040000L, 0x10800000000000L, 0x80000000000000L, 0x400000200000004L, 0x0L, + 0x2000080000000L, 0x410a08080040000L, 0x82000204000004L, false, 0, 0x0L), + 4 + ), + 439894 + ); + + // gentest-3067 + assertEqual( + perft( + Board(0x200004040000L, 0x10800000000000L, 0x80000000000000L, 0x400004000000004L, 0x0L, + 0x2000040000000L, 0x410a00040040000L, 0x82004004000004L, true, 0, 0x0L), + 4 + ), + 90615 + ); + + // gentest-3068 + assertEqual( + perft( + Board(0x200004040000L, 0x10800000000000L, 0x80000000000000L, 0x200004000000400L, 0x0L, + 0x2000020000000L, 0x210a00020040000L, 0x82004004000400L, false, 0, 0x0L), + 4 + ), + 55759 + ); + + // gentest-3069 + assertEqual( + perft( + Board(0x200004040000L, 0x10800000000000L, 0x80000000000000L, 0x8000004000000800L, 0x0L, + 0x10020000000L, 0x8010a00020040000L, 0x80014004000800L, true, 0, 0x0L), + 4 + ), + 483611 + ); + + // gentest-3070 + assertEqual( + perft( + Board(0x200004040000L, 0x800002000000L, 0x80000000000000L, 0x8000008000000800L, 0x0L, 0x10020000000L, + 0x8000a00022040000L, 0x80018004000800L, false, 0, 0x0L), + 4 + ), + 78314 + ); + + // gentest-3071 + assertEqual( + perft( + Board(0x200004040000L, 0x800002000000L, 0x80000L, 0x2000008000000800L, 0x0L, 0x2000020000000L, + 0x2000a00022040000L, 0x2008004080800L, true, 0, 0x0L), + 4 + ), + 412188 + ); + + // gentest-3072 + assertEqual( + perft( + Board(0x200004040000L, 0x2000080000L, 0x0L, 0xa000000000000800L, 0x0L, 0x2000020000000L, + 0x20002020200c0000L, 0x8002000004000800L, false, 0, 0x0L), + 4 + ), + 394096 + ); + + // gentest-3073 + assertEqual( + perft( + Board(0x200004040000L, 0x80000080000L, 0x0L, 0xa000000000008000L, 0x0L, 0x40020000000L, + 0x20002800200c0000L, 0x8000040004008000L, true, 0, 0x0L), + 4 + ), + 464582 + ); + + // gentest-3074 + assertEqual( + perft( + Board(0x200004040000L, 0x20000000000010L, 0x0L, 0xa000800000000000L, 0x0L, 0x40020000000L, + 0x2020200020040010L, 0x8000840004000000L, false, 0, 0x0L), + 4 + ), + 153428 + ); + + // gentest-3075 + assertEqual( + perft( + Board(0x200004040000L, 0x20000000000010L, 0x0L, 0xa000800000000000L, 0x0L, 0x1000000400000L, + 0x2020200000440010L, 0x8001800004000000L, true, 0, 0x0L), + 4 + ), + 101606 + ); + + // gentest-3076 + assertEqual( + perft( + Board(0x200004040000L, 0x20000000000010L, 0x0L, 0x400800000000000L, 0x0L, 0x1000000200000L, + 0x20200000240010L, 0x401800004000000L, false, 0, 0x0L), + 4 + ), + 134122 + ); + + // gentest-3077 + assertEqual( + perft( + Board(0x200004040000L, 0x20000000000010L, 0x0L, 0x440000000000000L, 0x0L, 0x1000010000000L, + 0x20200010040010L, 0x441000004000000L, true, 0, 0x0L), + 4 + ), + 165221 + ); + + // gentest-3078 + assertEqual( + perft( + Board(0x200004040000L, 0x20000000004000L, 0x0L, 0x440000000000000L, 0x0L, 0x100000008000000L, + 0x20200008044000L, 0x540000004000000L, false, 0, 0x0L), + 4 + ), + 80510 + ); + + // gentest-3079 + assertEqual( + perft( + Board(0x200004040000L, 0x20000000000010L, 0x0L, 0x4004000000000L, 0x0L, 0x100000008000000L, + 0x20200008040010L, 0x104004004000000L, true, 0, 0x0L), + 4 + ), + 87408 + ); + + // gentest-3080 + assertEqual( + perft( + Board(0x200004040000L, 0x4000000000000010L, 0x0L, 0x44000000000L, 0x0L, 0x100000008000000L, + 0x4000200008040010L, 0x100044004000000L, false, 0, 0x0L), + 4 + ), + 60445 + ); + + // gentest-3081 + assertEqual( + perft( + Board(0x4040000L, 0x800000000010L, 0x0L, 0x200000004000L, 0x0L, 0x100000008000000L, 0x800008040010L, + 0x100200004004000L, true, 0, 0x0L), + 4 + ), + 141406 + ); + + // gentest-3082 + assertEqual( + perft( + Board(0x4040000L, 0x40200000L, 0x0L, 0x100000004000L, 0x0L, 0x100000008000000L, 0x48240000L, + 0x100100004004000L, false, 0, 0x0L), + 4 + ), + 152158 + ); + + // gentest-3083 + assertEqual( + perft( + Board(0x4040000L, 0x200000L, 0x0L, 0x104000L, 0x0L, 0x100000008000000L, 0x8240000L, + 0x100000004104000L, true, 0, 0x0L), + 4 + ), + 68578 + ); + + // gentest-3084 + assertEqual( + perft( + Board(0x4040000L, 0x1000L, 0x0L, 0x100000L, 0x0L, 0x100000008000000L, 0x8041000L, 0x100000004100000L, + false, 0, 0x0L), + 4 + ), + 13554 + ); + + // gentest-3085 + assertEqual( + perft( + Board(0x4040000L, 0x1000L, 0x0L, 0x80000000L, 0x0L, 0x100000800000000L, 0x800041000L, + 0x100000084000000L, true, 0, 0x0L), + 4 + ), + 22573 + ); + + // gentest-3086 + assertEqual( + perft( + Board(0x4040000L, 0x1000L, 0x0L, 0x80000000000000L, 0x0L, 0x100000008000000L, 0x8041000L, + 0x180000004000000L, false, 0, 0x0L), + 4 + ), + 25505 + ); + + // gentest-3087 + assertEqual( + perft( + Board(0x4040000L, 0x40L, 0x0L, 0x10000000000000L, 0x0L, 0x100000008000000L, 0x8040040L, + 0x110000004000000L, true, 0, 0x0L), + 4 + ), + 14118 + ); + + // gentest-3088 + assertEqual( + perft( + Board(0x4040000L, 0x4L, 0x0L, 0x100000L, 0x0L, 0x100000008000000L, 0x8040004L, 0x100000004100000L, + false, 0, 0x0L), + 4 + ), + 14729 + ); + + // gentest-3089 + assertEqual( + perft( + Board(0x4040000L, 0x80000L, 0x0L, 0x80000000000000L, 0x0L, 0x100000008000000L, 0x80c0000L, + 0x180000004000000L, true, 0, 0x0L), + 4 + ), + 46150 + ); + + // gentest-3090 + assertEqual( + perft( + Board(0x4040000L, 0x80000L, 0x0L, 0x4000000000000L, 0x0L, 0x100000020000000L, 0x200c0000L, + 0x104000004000000L, false, 0, 0x0L), + 4 + ), + 35316 + ); + + // gentest-3091 + assertEqual( + perft( + Board(0x4040000L, 0x4L, 0x0L, 0x1000000000000L, 0x0L, 0x100000020000000L, 0x20040004L, + 0x101000004000000L, true, 0, 0x0L), + 4 + ), + 29839 + ); + + // gentest-3092 + assertEqual( + perft( + Board(0x4040000L, 0x80000L, 0x0L, 0x2000000000000L, 0x0L, 0x100002000000000L, 0x20000c0000L, + 0x102000004000000L, false, 0, 0x0L), + 4 + ), + 46617 + ); + + // gentest-3093 + assertEqual( + perft( + Board(0x4040000L, 0x80000L, 0x0L, 0x4000000000000000L, 0x0L, 0x100004000000000L, 0x40000c0000L, + 0x4100000004000000L, true, 0, 0x0L), + 4 + ), + 17816 + ); + + // gentest-3094 + assertEqual( + perft( + Board(0x4040000L, 0x10L, 0x0L, 0x400000000000L, 0x0L, 0x100000020000000L, 0x20040010L, + 0x100400004000000L, false, 0, 0x0L), + 4 + ), + 26347 + ); + + // gentest-3095 + assertEqual( + perft( + Board(0x4040000L, 0x10L, 0x0L, 0x400000L, 0x0L, 0x100001000000000L, 0x1000040010L, 0x100000004400000L, + true, 0, 0x0L), + 4 + ), + 27517 + ); + + // gentest-3096 + assertEqual( + perft( + Board(0x4040000L, 0x200L, 0x0L, 0x800000L, 0x0L, 0x100001000000000L, 0x1000040200L, + 0x100000004800000L, false, 0, 0x0L), + 4 + ), + 25275 + ); + + // gentest-3097 + assertEqual( + perft( + Board(0x4040000L, 0x200L, 0x0L, 0x10000000000000L, 0x0L, 0x100000008000000L, 0x8040200L, + 0x110000004000000L, true, 0, 0x0L), + 4 + ), + 17357 + ); + + // gentest-3098 + assertEqual( + perft( + Board(0x40000L, 0x4000000L, 0x0L, 0x10000000L, 0x0L, 0x100000800000000L, 0x804040000L, + 0x100000010000000L, false, 0, 0x0L), + 4 + ), + 26421 + ); + + // gentest-3099 + assertEqual( + perft( + Board(0x40000L, 0x80000000000L, 0x0L, 0x1000L, 0x0L, 0x100000800000000L, 0x80800040000L, + 0x100000000001000L, true, 0, 0x0L), + 4 + ), + 39067 + ); + + // gentest-3100 + assertEqual( + perft( + Board(0x40000L, 0x1000000000L, 0x0L, 0x10000000000000L, 0x0L, 0x100000800000000L, 0x1800040000L, + 0x110000000000000L, false, 0, 0x0L), + 4 + ), + 33287 + ); + + // gentest-3101 + assertEqual( + perft( + Board(0x40000L, 0x0L, 0x0L, 0x8000000000L, 0x0L, 0x100080000000000L, 0x80000040000L, + 0x100008000000000L, true, 0, 0x0L), + 4 + ), + 10961 + ); + + // gentest-3102 + assertEqual( + perft( + Board(0x40000L, 0x0L, 0x0L, 0x80L, 0x0L, 0x100100000000000L, 0x100000040000L, 0x100000000000080L, + false, 0, 0x0L), + 4 + ), + 17362 + ); + + // gentest-3103 + assertEqual( + perft( + Board(0x40000L, 0x0L, 0x0L, 0x8000000000L, 0x0L, 0x100002000000000L, 0x2000040000L, + 0x100008000000000L, true, 0, 0x0L), + 4 + ), + 10680 + ); + + // gentest-3104 + assertEqual( + perft( + Board(0x4000000L, 0x0L, 0x0L, 0x800000000L, 0x0L, 0x100000040000000L, 0x44000000L, 0x100000800000000L, + false, 0, 0x0L), + 4 + ), + 12627 + ); + + // gentest-3105 + assertEqual( + perft( + Board(0x4000000L, 0x0L, 0x0L, 0x2000000000000L, 0x0L, 0x100008000000000L, 0x8004000000L, + 0x102000000000000L, true, 0, 0x0L), + 4 + ), + 9734 + ); + + // gentest-3106 + assertEqual( + perft( + Board(0x4000000L, 0x0L, 0x0L, 0x2000000000000L, 0x0L, 0x1000040000000L, 0x44000000L, 0x3000000000000L, + false, 0, 0x0L), + 4 + ), + 16354 + ); + + // gentest-3107 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3108 + assertEqual( + perft( + Board(0xdf002000827d00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x827dffL, 0xffdf002000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 198366 + ); + + // gentest-3109 + assertEqual( + perft( + Board(0xd7002840823d00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40823dffL, 0xffd7002800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 348037 + ); + + // gentest-3110 + assertEqual( + perft( + Board(0xd5022843803c00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x43803cffL, 0xffd5022800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 402435 + ); + + // gentest-3111 + assertEqual( + perft( + Board(0xc5122843a01c00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x200000000008L, 0x1000000000000010L, 0x43a01cffL, 0xf7c5322800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 746156 + ); + + // gentest-3112 + assertEqual( + perft( + Board(0xc5122843a01c00L, 0x4200000000000042L, 0x2400000000014000L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x43a15cdbL, 0xffc5122800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 544797 + ); + + // gentest-3113 + assertEqual( + perft( + Board(0xc0122d47a01800L, 0x4200000000000042L, 0x2400000000014000L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x47a158dbL, 0xffc0122d00000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 687211 + ); + + // gentest-3114 + assertEqual( + perft( + Board(0xc0132c45a01800L, 0x4200000000000042L, 0x2400000000014000L, 0x8100000000000081L, + 0x800000000000008L, 0x10000000000010L, 0x10045a158dbL, 0xefd0122c00000000L, false, 0, 0x81L), + 4 + ), + 533878 + ); + + // gentest-3115 + assertEqual( + perft( + Board(0xc0132445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8100000000000081L, + 0x800000000000008L, 0x80000000010L, 0x10041a558d9L, 0xefc01a2404000000L, true, 0, 0x81L), + 4 + ), + 815131 + ); + + // gentest-3116 + assertEqual( + perft( + Board(0xc0132445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8100000000000081L, + 0x1000000000020000L, 0x80000002000L, 0x10041a778c1L, 0xf7c01a2404000000L, false, 0, 0x0L), + 4 + ), + 1734554 + ); + + // gentest-3117 + assertEqual( + perft( + Board(0xc0122445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8100000000000081L, + 0x1000000000020000L, 0x80000100000L, 0x41b758c1L, 0xf7c01a2404000000L, true, 0, 0x0L), + 4 + ), + 1321505 + ); + + // gentest-3118 + assertEqual( + perft( + Board(0xc0122445a01800L, 0x4200000000040040L, 0x2400000000014000L, 0x8000000100000081L, + 0x1000000002000000L, 0x80000002000L, 0x43a578c1L, 0xf6c01a2504000000L, false, 0, 0x0L), + 4 + ), + 1594520 + ); + + // gentest-3119 + assertEqual( + perft( + Board(0xc0122445a01800L, 0x4200000010000040L, 0x2000010000014000L, 0x8000000100000081L, + 0x1000000002000000L, 0x10000000002000L, 0x53a178c1L, 0xf2d0132504000000L, true, 0, 0x0L), + 4 + ), + 1215286 + ); + + // gentest-3120 + assertEqual( + perft( + Board(0x80522445a01800L, 0x4200000010000040L, 0x2000010000014000L, 0x8000000100000081L, + 0x1000000000020000L, 0x10000000100000L, 0x51b358c1L, 0xf290532504000000L, false, 0, 0x0L), + 4 + ), + 1152480 + ); + + // gentest-3121 + assertEqual( + perft( + Board(0x80522445a01800L, 0x4200000010000040L, 0x2000010000014000L, 0x8000000100000088L, + 0x400000000020000L, 0x8000000100000L, 0x51b358c8L, 0xe688532504000000L, true, 0, 0x0L), + 4 + ), + 1057110 + ); + + // gentest-3122 + assertEqual( + perft( + Board(0x80522445a01800L, 0x4200000010000040L, 0x810000014000L, 0x80000001000000a0L, + 0x400000000020000L, 0x8000000002000L, 0x51a378e0L, 0xc688d32504000000L, false, 0, 0x0L), + 4 + ), + 1192914 + ); + + // gentest-3123 + assertEqual( + perft( + Board(0x80520055a01800L, 0x4200000000000040L, 0x10420004000L, 0x80000001000000a0L, 0x400000000020000L, + 0x8000000002000L, 0x441a278e0L, 0xc688530134000000L, true, 0, 0x0L), + 4 + ), + 1448864 + ); + + // gentest-3124 + assertEqual( + perft( + Board(0x80520041a41800L, 0x4200000000000040L, 0x10420004000L, 0x80000001000000a0L, 0x400000010000000L, + 0x8000000002000L, 0x451a078e0L, 0xc688530120040000L, false, 0, 0x0L), + 4 + ), + 1519577 + ); + + // gentest-3125 + assertEqual( + perft( + Board(0x80520041a41800L, 0x4200000000000040L, 0x822004000L, 0x80000001000000a0L, 0x400000010000000L, + 0x8000000002000L, 0x53a078e0L, 0xc688520920040000L, true, 0, 0x0L), + 4 + ), + 1803452 + ); + + // gentest-3126 + assertEqual( + perft( + Board(0x80520041a01800L, 0x4200000000000040L, 0x822004000L, 0x80000001000000a0L, 0x400000000040000L, + 0x8000000002000L, 0x43a470e0L, 0xc688520920000800L, false, 0, 0x0L), + 4 + ), + 2032584 + ); + + // gentest-3127 + assertEqual( + perft( + Board(0x80520041801800L, 0x4200000000000040L, 0x2000000020204000L, 0x81000000000000a0L, + 0x400000000040000L, 0x8000000002000L, 0x20000000418470e0L, 0xc788520020200800L, true, 0, 0x0L), + 4 + ), + 2499457 + ); + + // gentest-3128 + assertEqual( + perft( + Board(0x80520041801000L, 0x4200000000000040L, 0x2000000020204000L, 0x81000000000000a8L, + 0x400000000040000L, 0x8000000002000L, 0x20000000418470e0L, 0xc788520020200008L, false, 0, 0x0L), + 4 + ), + 3104258 + ); + + // gentest-3129 + assertEqual( + perft( + Board(0x80520041801000L, 0x4200000000000040L, 0x40000000004800L, 0x81000000000000a8L, + 0x400000000040000L, 0x8000000002000L, 0x400000418430e0L, 0xc788520000004808L, true, 0, 0x0L), + 4 + ), + 2226215 + ); + + // gentest-3130 + assertEqual( + perft( + Board(0x80520041801000L, 0x210000000000040L, 0x8004800L, 0x81000000000000a8L, 0x400000000000004L, + 0x8000000002000L, 0x498030e4L, 0x8798520000004808L, false, 0, 0x0L), + 4 + ), + 2420572 + ); + + // gentest-3131 + assertEqual( + perft( + Board(0x80520041801000L, 0x210000000000040L, 0x8004800L, 0x81000000000000a8L, 0x40000L, + 0x1000000000002000L, 0x498030e0L, 0x9390520000044808L, true, 0, 0x0L), + 4 + ), + 1024402 + ); + + // gentest-3132 + assertEqual( + perft( + Board(0x80520041900000L, 0x210000000000040L, 0x4800L, 0x8100000000008028L, 0x8000000L, + 0x1000000000002000L, 0x4190a060L, 0x9390520008004808L, false, 0, 0x0L), + 4 + ), + 569813 + ); + + // gentest-3133 + assertEqual( + perft( + Board(0x80520041900000L, 0x210000000000040L, 0x4800L, 0x4100000000008018L, 0x800000000000000L, + 0x1000000000002000L, 0x4190a050L, 0x5b90520000004808L, true, 0, 0x0L), + 4 + ), + 423337 + ); + + // gentest-3134 + assertEqual( + perft( + Board(0x80520051800000L, 0x210000000000040L, 0x4800L, 0x4100000000009002L, 0x800000000000000L, + 0x1000000000002000L, 0x5180b040L, 0x5b90520000004802L, false, 0, 0x0L), + 4 + ), + 451256 + ); + + // gentest-3135 + assertEqual( + perft( + Board(0x80124051800000L, 0x10040000000040L, 0x4800L, 0x4100000000008012L, 0x800000000000000L, + 0x1000000000002000L, 0x5180a050L, 0x5990164000004802L, true, 0, 0x0L), + 4 + ), + 717581 + ); + + // gentest-3136 + assertEqual( + perft( + Board(0x80124051800000L, 0x10040000000040L, 0x4000L, 0x4100000000008802L, 0x80000L, + 0x1000000000002000L, 0x5180a840L, 0x5190164000084002L, false, 0, 0x0L), + 4 + ), + 792288 + ); + + // gentest-3137 + assertEqual( + perft( + Board(0x80124051800000L, 0x42000200000L, 0x4000L, 0x4100000000008802L, 0x0L, 0x1000000000002000L, + 0x51a0a800L, 0x5180166000004002L, true, 0, 0x0L), + 4 + ), + 1311047 + ); + + // gentest-3138 + assertEqual( + perft( + Board(0x80126041800000L, 0x800000000200000L, 0x4000L, 0x4100000000008802L, 0x0L, 0x1000000000001000L, + 0x2041a09800L, 0x5980124000004002L, false, 0, 0x0L), + 4 + ), + 698174 + ); + + // gentest-3139 + assertEqual( + perft( + Board(0x80126041800000L, 0x800000000000000L, 0x200000L, 0x2100000000008202L, 0x0L, + 0x1000000000001000L, 0x2041809200L, 0x3980124000200002L, true, 0, 0x0L), + 4 + ), + 153188 + ); + + // gentest-3140 + assertEqual( + perft( + Board(0x80126041800000L, 0x800000000000000L, 0x200000L, 0x2100000000004202L, 0x0L, 0x10000000000800L, + 0x2041804a00L, 0x2990124000200002L, false, 0, 0x0L), + 4 + ), + 641547 + ); + + // gentest-3141 + assertEqual( + perft( + Board(0x80026041800000L, 0x800000000000000L, 0x1000L, 0x2100000000000202L, 0x0L, 0x10000000000800L, + 0x41800a00L, 0x2990026000001002L, true, 0, 0x0L), + 4 + ), + 352301 + ); + + // gentest-3142 + assertEqual( + perft( + Board(0x80026041800000L, 0x100000000000L, 0x1000L, 0x2100000000000002L, 0x0L, 0x10000000100000L, + 0x41900002L, 0x2190126000001000L, false, 0, 0x0L), + 4 + ), + 476612 + ); + + // gentest-3143 + assertEqual( + perft( + Board(0x80026041800000L, 0x100000000000L, 0x1000L, 0x8001000000000080L, 0x0L, 0x10000000100000L, + 0x41900080L, 0x8091126000001000L, true, 0, 0x0L), + 4 + ), + 345665 + ); + + // gentest-3144 + assertEqual( + perft( + Board(0x80006241800000L, 0x100000000000L, 0x0L, 0x8001000000008000L, 0x0L, 0x10000000001000L, + 0x41809000L, 0x8091106200000000L, false, 0, 0x0L), + 4 + ), + 244014 + ); + + // gentest-3145 + assertEqual( + perft( + Board(0x800062c0000000L, 0x100000000000L, 0x0L, 0x100000001008000L, 0x0L, 0x10000000001000L, + 0xc0009000L, 0x190106201000000L, true, 0, 0x0L), + 4 + ), + 373735 + ); + + // gentest-3146 + assertEqual( + perft( + Board(0x800062c0000000L, 0x100000000000L, 0x0L, 0x100000001800000L, 0x0L, 0x1000000000200000L, + 0xc0a00000L, 0x1180106201000000L, false, 0, 0x0L), + 4 + ), + 162314 + ); + + // gentest-3147 + assertEqual( + perft( + Board(0x800062c0000000L, 0x400000000L, 0x0L, 0x100000004008000L, 0x0L, 0x1000000000200000L, + 0xc0208000L, 0x1180006604000000L, true, 0, 0x0L), + 4 + ), + 322512 + ); + + // gentest-3148 + assertEqual( + perft( + Board(0x800062c0000000L, 0x400000000L, 0x0L, 0x100000010100000L, 0x0L, 0x1000000000200000L, + 0xc0300000L, 0x1180006610000000L, false, 0, 0x0L), + 4 + ), + 194169 + ); + + // gentest-3149 + assertEqual( + perft( + Board(0x800062c0000000L, 0x80000L, 0x0L, 0x100000010001000L, 0x0L, 0x8000000200000L, 0xc0201000L, + 0x188006210080000L, true, 0, 0x0L), + 4 + ), + 403128 + ); + + // gentest-3150 + assertEqual( + perft( + Board(0x80006280000000L, 0x80000L, 0x0L, 0x110000010L, 0x0L, 0x8000000200000L, 0x2080200010L, + 0x88004310080000L, false, 0, 0x0L), + 4 + ), + 335827 + ); + + // gentest-3151 + assertEqual( + perft( + Board(0x80006280000000L, 0x400000000L, 0x0L, 0x100001020L, 0x0L, 0x8000000200000L, 0x2080200020L, + 0x88004700001000L, true, 0, 0x0L), + 4 + ), + 252258 + ); + + // gentest-3152 + assertEqual( + perft( + Board(0xa04280000000L, 0x400000000L, 0x0L, 0x100003000L, 0x0L, 0x8000000200000L, 0x200080202000L, + 0x8804700001000L, false, 0, 0x0L), + 4 + ), + 181638 + ); + + // gentest-3153 + assertEqual( + perft( + Board(0xa04280000000L, 0x10000000000L, 0x0L, 0x100002400L, 0x0L, 0x8000000004000L, 0x200080006000L, + 0x8814300000400L, true, 0, 0x0L), + 4 + ), + 139712 + ); + + // gentest-3154 + assertEqual( + perft( + Board(0xa04280000000L, 0x10000000000L, 0x0L, 0x2401L, 0x0L, 0x8000000004000L, 0x200080006000L, + 0x8814200000401L, false, 0, 0x0L), + 4 + ), + 177984 + ); + + // gentest-3155 + assertEqual( + perft( + Board(0xa002c0000000L, 0x10000000000L, 0x0L, 0xc01L, 0x0L, 0x100000004000L, 0x200080004800L, + 0x910240000401L, true, 0, 0x0L), + 4 + ), + 70726 + ); + + // gentest-3156 + assertEqual( + perft( + Board(0xa002c0000000L, 0x10000000000L, 0x0L, 0x100002400L, 0x0L, 0x100000000040L, 0x200080002040L, + 0x910340000400L, false, 0, 0x0L), + 4 + ), + 147308 + ); + + // gentest-3157 + assertEqual( + perft( + Board(0xa002c0000000L, 0x2000000L, 0x0L, 0x500000200L, 0x0L, 0x100000000040L, 0x200080000240L, + 0x900742000000L, true, 0, 0x0L), + 4 + ), + 253881 + ); + + // gentest-3158 + assertEqual( + perft( + Board(0xa002c0000000L, 0x400L, 0x0L, 0x500000080L, 0x0L, 0x100000000040L, 0x2000800000c0L, + 0x900740000400L, false, 0, 0x0L), + 4 + ), + 96887 + ); + + // gentest-3159 + assertEqual( + perft( + Board(0x8002c0000000L, 0x400L, 0x0L, 0x4100000080L, 0x0L, 0x200000002000L, 0x80002080L, + 0xa04340000400L, true, 0, 0x0L), + 4 + ), + 190295 + ); + + // gentest-3160 + assertEqual( + perft( + Board(0x8002c0000000L, 0x400L, 0x0L, 0x4000000100008000L, 0x0L, 0x200000001000L, 0x80009000L, + 0x4000a00340000400L, false, 0, 0x0L), + 4 + ), + 114875 + ); + + // gentest-3161 + assertEqual( + perft( + Board(0x8002c0000000L, 0x400L, 0x0L, 0x800000100800000L, 0x0L, 0x100000001000L, 0x80801000L, + 0x800900340000400L, true, 0, 0x0L), + 4 + ), + 186396 + ); + + // gentest-3162 + assertEqual( + perft( + Board(0x808240000000L, 0x400L, 0x0L, 0x108040000L, 0x0L, 0x100000001000L, 0x8000041000L, + 0x900348000400L, false, 0, 0x0L), + 4 + ), + 200987 + ); + + // gentest-3163 + assertEqual( + perft( + Board(0x808240000000L, 0x10000L, 0x0L, 0x900040000L, 0x0L, 0x100000100000L, 0x8000140000L, + 0x900b40010000L, true, 0, 0x0L), + 4 + ), + 134308 + ); + + // gentest-3164 + assertEqual( + perft( + Board(0x800240000000L, 0x10000L, 0x0L, 0x2000008100000000L, 0x0L, 0x100000100000L, + 0x2000000000100000L, 0x908340010000L, false, 0, 0x0L), + 4 + ), + 147999 + ); + + // gentest-3165 + assertEqual( + perft( + Board(0x800240000000L, 0x10000L, 0x0L, 0x8000008001000000L, 0x0L, 0x10000000100000L, + 0x8000000000100000L, 0x10808241010000L, true, 0, 0x0L), + 4 + ), + 113035 + ); + + // gentest-3166 + assertEqual( + perft( + Board(0x240000000L, 0x10000L, 0x0L, 0x804001000000L, 0x0L, 0x10000000080000L, 0x800000080000L, + 0x10004241010000L, false, 0, 0x0L), + 4 + ), + 176745 + ); + + // gentest-3167 + assertEqual( + perft( + Board(0x240000000L, 0x4000000L, 0x0L, 0x4080000001L, 0x0L, 0x10000000080000L, 0x80080000L, + 0x10004244000001L, true, 0, 0x0L), + 4 + ), + 223030 + ); + + // gentest-3168 + assertEqual( + perft( + Board(0x240000000L, 0x4000000L, 0x0L, 0x4000800001L, 0x0L, 0x80008000000L, 0x8800000L, 0x84244000001L, + false, 0, 0x0L), + 4 + ), + 255584 + ); + + // gentest-3169 + assertEqual( + perft( + Board(0x240000000L, 0x4000000L, 0x0L, 0x400001200000L, 0x0L, 0x80008000000L, 0x8200000L, + 0x480245000000L, true, 0, 0x0L), + 4 + ), + 160404 + ); + + // gentest-3170 + assertEqual( + perft( + Board(0x240000000L, 0x4000000L, 0x0L, 0x400000200100L, 0x0L, 0x80008000000L, 0x8200000L, + 0x480244000100L, false, 0, 0x0L), + 4 + ), + 249894 + ); + + // gentest-3171 + assertEqual( + perft( + Board(0x240000000L, 0x4000000L, 0x0L, 0x2000400000004000L, 0x0L, 0x80008000000L, 0x2000000008000000L, + 0x480244004000L, true, 0, 0x0L), + 4 + ), + 180903 + ); + + // gentest-3172 + assertEqual( + perft( + Board(0x240000000L, 0x4000000L, 0x0L, 0x100004000004000L, 0x0L, 0x80000040000L, 0x100000000040000L, + 0x84244004000L, false, 0, 0x0L), + 4 + ), + 233149 + ); + + // gentest-3173 + assertEqual( + perft( + Board(0x240000000L, 0x20000000000L, 0x0L, 0x4100000100L, 0x0L, 0x80000040000L, 0x100040000L, + 0xa4240000100L, true, 0, 0x0L), + 4 + ), + 132802 + ); + + // gentest-3174 + assertEqual( + perft( + Board(0x240000000L, 0x20000000000L, 0x0L, 0x1004000004000L, 0x0L, 0x80000020000L, 0x1000000020000L, + 0xa4240004000L, false, 0, 0x0L), + 4 + ), + 185397 + ); + + // gentest-3175 + assertEqual( + perft( + Board(0x240000000L, 0x800000000L, 0x0L, 0x100004000004000L, 0x0L, 0x400020000L, 0x100000000020000L, + 0x4e40004000L, true, 0, 0x0L), + 4 + ), + 135946 + ); + + // gentest-3176 + assertEqual( + perft( + Board(0x240000000L, 0x800000000L, 0x0L, 0x4000000050L, 0x0L, 0x400020000L, 0x20010L, 0x4e40000040L, + false, 0, 0x0L), + 4 + ), + 155583 + ); + + // gentest-3177 + assertEqual( + perft( + Board(0x240000000L, 0x800000000L, 0x0L, 0x4000000000000044L, 0x0L, 0x8020000L, 0x20004L, + 0x4000000a48000040L, true, 0, 0x0L), + 4 + ), + 203343 + ); + + // gentest-3178 + assertEqual( + perft( + Board(0x240000000L, 0x800000000L, 0x0L, 0x40000000000044L, 0x0L, 0x8000001L, 0x5L, 0x40000a48000040L, + false, 0, 0x0L), + 4 + ), + 72974 + ); + + // gentest-3179 + assertEqual( + perft( + Board(0x240000000L, 0x100000L, 0x0L, 0x40000000000060L, 0x0L, 0x10000001L, 0x21L, 0x40000250100040L, + true, 0, 0x0L), + 4 + ), + 64038 + ); + + // gentest-3180 + assertEqual( + perft( + Board(0x240000000L, 0x100000L, 0x0L, 0x1000000000040L, 0x0L, 0x10000002L, 0x42L, 0x1000250100000L, + false, 0, 0x0L), + 4 + ), + 93462 + ); + + // gentest-3181 + assertEqual( + perft( + Board(0x200400000L, 0x4000L, 0x0L, 0x1000000000008L, 0x0L, 0x10000002L, 0xaL, 0x1000210404000L, true, + 0, 0x0L), + 4 + ), + 105431 + ); + + // gentest-3182 + assertEqual( + perft( + Board(0x200400000L, 0x4000L, 0x0L, 0x80000000000020L, 0x0L, 0x10000200L, 0x220L, 0x80000210404000L, + false, 0, 0x0L), + 4 + ), + 190062 + ); + + // gentest-3183 + assertEqual( + perft( + Board(0x200400000L, 0x4000L, 0x0L, 0x80000000000020L, 0x0L, 0x400000002L, 0x22L, 0x80000600404000L, + true, 0, 0x0L), + 4 + ), + 142322 + ); + + // gentest-3184 + assertEqual( + perft( + Board(0x200400000L, 0x4000L, 0x0L, 0x108000L, 0x0L, 0x400000002L, 0x100002L, 0x60040c000L, false, 0, + 0x0L), + 4 + ), + 92909 + ); + + // gentest-3185 + assertEqual( + perft( + Board(0x200400000L, 0x100000L, 0x0L, 0x8000000000000000L, 0x0L, 0x400000001L, 0x1L, + 0x8000000600500000L, true, 0, 0x0L), + 4 + ), + 13558 + ); + + // gentest-3186 + assertEqual( + perft( + Board(0x200400000L, 0x100000L, 0x0L, 0x800000L, 0x0L, 0x400000002L, 0x2L, 0x600d00000L, false, 0, + 0x0L), + 4 + ), + 10290 + ); + + // gentest-3187 + assertEqual( + perft( + Board(0x200400000L, 0x100000L, 0x0L, 0x8000000000L, 0x0L, 0x20000000100L, 0x100L, 0x28200500000L, + true, 0, 0x0L), + 4 + ), + 17630 + ); + + // gentest-3188 + assertEqual( + perft( + Board(0x200400000L, 0x100000L, 0x0L, 0x8000L, 0x0L, 0x20000010000L, 0x10000L, 0x20200508000L, false, + 0, 0x0L), + 4 + ), + 8544 + ); + + // gentest-3189 + assertEqual( + perft( + Board(0x200400000L, 0x100000L, 0x0L, 0x2000L, 0x0L, 0x20002000000L, 0x2000000L, 0x20200502000L, true, + 0, 0x0L), + 4 + ), + 8304 + ); + + // gentest-3190 + assertEqual( + perft( + Board(0x200400000L, 0x100000L, 0x0L, 0x1000L, 0x0L, 0x20000010000L, 0x10000L, 0x20200501000L, false, + 0, 0x0L), + 4 + ), + 4210 + ); + + // gentest-3191 + assertEqual( + perft( + Board(0x400000L, 0x800000000L, 0x0L, 0x1000L, 0x0L, 0x20002000000L, 0x2000000L, 0x20800401000L, true, + 0, 0x0L), + 4 + ), + 10232 + ); + + // gentest-3192 + assertEqual( + perft( + Board(0x400000L, 0x2000000L, 0x0L, 0x1000L, 0x0L, 0x20000020000L, 0x20000L, 0x20002401000L, false, 0, + 0x0L), + 4 + ), + 12769 + ); + + // gentest-3193 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3194 + assertEqual( + perft( + Board(0xfb000404807b00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4807bffL, 0xfffb000400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 229003 + ); + + // gentest-3195 + assertEqual( + perft( + Board(0xf3000c04817a00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4817affL, 0xfdf3040c00000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 510637 + ); + + // gentest-3196 + assertEqual( + perft( + Board(0xf300041c816a00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000020000L, 0x1000000000000010L, 0x14836af7L, 0xfdf3040408000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 888903 + ); + + // gentest-3197 + assertEqual( + perft( + Board(0xf300041c816a00L, 0x4000040000000042L, 0x2000100000000024L, 0x8200000000000081L, + 0x800020000000000L, 0x1000000000000010L, 0x20014816af7L, 0xfaf3140408000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 792849 + ); + + // gentest-3198 + assertEqual( + perft( + Board(0xf202041cc92200L, 0x4000040000000042L, 0x2000100000000024L, 0x8200000000000081L, + 0x800000000000000L, 0x1000000000000010L, 0x14c922f7L, 0xfaf2160408000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 487367 + ); + + // gentest-3199 + assertEqual( + perft( + Board(0xf202041cc92200L, 0x4000040000000840L, 0x2008000000000024L, 0x8200000000000081L, + 0x800000000000000L, 0x1000000000000010L, 0x14c92af5L, 0xfafa060408000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 269333 + ); + + // gentest-3200 + assertEqual( + perft( + Board(0x7202841ce90200L, 0x4000040000020040L, 0x2008000000000024L, 0x8200000000000081L, + 0x800000000000000L, 0x1000000000000010L, 0x14eb02f5L, 0xfa7a068408000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 426538 + ); + + def batch8(): Unit = + // gentest-3201 + assertEqual( + perft( + Board(0x7202841ce90200L, 0x240000020040L, 0x2400000000000024L, 0x8200000000000081L, + 0x800000000000000L, 0x1000000000001000L, 0x14eb12e5L, 0xbe72268408000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 485646 + ); + + // gentest-3202 + assertEqual( + perft( + Board(0x7202948c690200L, 0x240000020040L, 0x2400000000000024L, 0x8200000000000081L, 0x8000000000000L, + 0x1000000000001000L, 0x10846b12e5L, 0xb67a268408000000L, false, 0, 0x8000000000000000L), + 4 + ), + 494015 + ); + + // gentest-3203 + assertEqual( + perft( + Board(0x3252848c690200L, 0x240000020040L, 0x440000000000024L, 0x8200000000000081L, 0x8000000000000L, + 0x1000000000001000L, 0x1000846b12e5L, 0x967a668408000000L, true, 0, 0x8000000000000000L), + 4 + ), + 472305 + ); + + // gentest-3204 + assertEqual( + perft( + Board(0x3252848c690200L, 0x240000020040L, 0x440000000100020L, 0x2200000000000081L, 0x8000000000000L, + 0x4000000000000008L, 0x1000847b02e9L, 0x667a668408000000L, false, 0, 0x0L), + 4 + ), + 727414 + ); + + // gentest-3205 + assertEqual( + perft( + Board(0x3252848c690200L, 0x1200000021000L, 0x440000000100020L, 0x2200000000000081L, 0x80000000000L, + 0x4000000000000008L, 0x1000847b12a9L, 0x66736a8408000000L, true, 0, 0x0L), + 4 + ), + 983237 + ); + + // gentest-3206 + assertEqual( + perft( + Board(0x3252848c690200L, 0x1200020000800L, 0x440000000100020L, 0x2200000000000081L, 0x8000000000000L, + 0x4000000000000008L, 0x1000a4790aa9L, 0x667b628408000000L, false, 0, 0x0L), + 4 + ), + 674002 + ); + + // gentest-3207 + assertEqual( + perft( + Board(0x3242848c690200L, 0x1200020000800L, 0x440000000101000L, 0x2200000000000081L, 0x8000000000000L, + 0x4000000000000008L, 0xa4791a89L, 0x667b628408000000L, true, 0, 0x0L), + 4 + ), + 817022 + ); + + // gentest-3208 + assertEqual( + perft( + Board(0x3242848d680200L, 0x1200020000800L, 0x440000000101000L, 0x2200000000000180L, + 0x800000000000000L, 0x4000000000000008L, 0xa5781b88L, 0x6e73628408000000L, false, 0, 0x0L), + 4 + ), + 724536 + ); + + // gentest-3209 + assertEqual( + perft( + Board(0x32428485680200L, 0x1200020000800L, 0x8800008001000L, 0x2200000000000180L, 0x800000000000000L, + 0x4000000000000008L, 0xad681b88L, 0x6a3be28400000000L, true, 0, 0x0L), + 4 + ), + 1150681 + ); + + // gentest-3210 + assertEqual( + perft( + Board(0x32428485680200L, 0x1200020000800L, 0x802008001000L, 0x2200000000000084L, 0x800000000000000L, + 0x4000000000000008L, 0xad681a8cL, 0x6a33e2a400000000L, false, 0, 0x0L), + 4 + ), + 1438454 + ); + + // gentest-3211 + assertEqual( + perft( + Board(0x32428485680200L, 0x1200020000800L, 0x40002008001000L, 0x2200000000000014L, 0x4000000000000L, + 0x4000000000000008L, 0xad681a1cL, 0x627762a400000000L, true, 0, 0x0L), + 4 + ), + 1346038 + ); + + // gentest-3212 + assertEqual( + perft( + Board(0x32428487680000L, 0x1200000000800L, 0x40002008001000L, 0x2200000000000012L, 0x20000000L, + 0x4000000000000008L, 0x8f68181aL, 0x627362a420000000L, false, 0, 0x0L), + 4 + ), + 1391741 + ); + + // gentest-3213 + assertEqual( + perft( + Board(0x32428483680000L, 0x1200010000000L, 0x40002000001000L, 0x2200000000000012L, 0x4000000L, + 0x4000000000000008L, 0x9368101aL, 0x627362a404000000L, true, 0, 0x0L), + 4 + ), + 892739 + ); + + // gentest-3214 + assertEqual( + perft( + Board(0x32428483680000L, 0x401200000000000L, 0x40002000001000L, 0x2200000000000012L, 0x200000000L, + 0x4000000000000008L, 0x40000008368101aL, 0x627362a600000000L, false, 0, 0x0L), + 4 + ), + 579465 + ); + + // gentest-3215 + assertEqual( + perft( + Board(0x12628483680000L, 0x1080800000000L, 0x40002000001000L, 0x2200000000000012L, 0x200000000L, + 0x4000000000000008L, 0x8008368101aL, 0x625362ae00000000L, true, 0, 0x0L), + 4 + ), + 903575 + ); + + // gentest-3216 + assertEqual( + perft( + Board(0x12628483680000L, 0x1001000800000000L, 0x40000000801000L, 0x2200000000020010L, 0x200000000L, + 0x4000000000000008L, 0x10000000836a1018L, 0x6253628e00800000L, false, 0, 0x0L), + 4 + ), + 604652 + ); + + // gentest-3217 + assertEqual( + perft( + Board(0x12628483680000L, 0x1000800000000L, 0x2000000000801000L, 0x1200000000000210L, 0x200000000L, + 0x4000000000000008L, 0x83681218L, 0x7213628e00800000L, true, 0, 0x0L), + 4 + ), + 481141 + ); + + // gentest-3218 + assertEqual( + perft( + Board(0x12628582680000L, 0x1000800000000L, 0x2000000000801000L, 0x1200000000000210L, 0x200000000L, + 0x40000000000004L, 0x182681214L, 0x3253628e00800000L, false, 0, 0x0L), + 4 + ), + 653338 + ); + + // gentest-3219 + assertEqual( + perft( + Board(0x12628582680000L, 0x1000000100000L, 0x2000000000801000L, 0x1200000000000220L, 0x200000000L, + 0x4000000000000004L, 0x182681224L, 0x7213628600900000L, true, 0, 0x0L), + 4 + ), + 690430 + ); + + // gentest-3220 + assertEqual( + perft( + Board(0x126285a2480000L, 0x1000000100000L, 0x2000000000801000L, 0x1200000000000220L, 0x40000000000L, + 0x4000000000000800L, 0x1a2481a20L, 0x7213668400900000L, false, 0, 0x0L), + 4 + ), + 1492193 + ); + + // gentest-3221 + assertEqual( + perft( + Board(0x126284a2480000L, 0x1000000100000L, 0x2000000000801000L, 0x1200000000000220L, 0x4000L, + 0x4000000000000800L, 0x200a2481a20L, 0x7213608400904000L, true, 0, 0x0L), + 4 + ), + 897176 + ); + + // gentest-3222 + assertEqual( + perft( + Board(0x126284a2480000L, 0x1000040000000L, 0x2000000000801000L, 0x1200000000000201L, 0x4000L, + 0x4000000000000800L, 0x200a2481a01L, 0x7213608440804000L, false, 0, 0x0L), + 4 + ), + 887761 + ); + + // gentest-3223 + assertEqual( + perft( + Board(0x126284a2480000L, 0x1800000000000L, 0x2000000000801000L, 0x1200000001000200L, 0x20L, + 0x4000000000000800L, 0x200a3481a00L, 0x7213e08400800020L, true, 0, 0x0L), + 4 + ), + 807762 + ); + + // gentest-3224 + assertEqual( + perft( + Board(0x126286e0080000L, 0x1800000000000L, 0x2000000000801000L, 0xa00000001000200L, 0x20L, + 0x4000000000000800L, 0x202e1081a00L, 0x6a13e08400800020L, false, 0, 0x0L), + 4 + ), + 800863 + ); + + // gentest-3225 + assertEqual( + perft( + Board(0x126286a0080000L, 0x1800000000000L, 0x2000000000200000L, 0xa00000001000200L, 0x20L, + 0x4000000000000800L, 0x202a1080a00L, 0x6a13e08400200020L, true, 0, 0x0L), + 4 + ), + 709036 + ); + + // gentest-3226 + assertEqual( + perft( + Board(0x126286a8000000L, 0x840000000000L, 0x2000000000200000L, 0xa00000001000100L, 0x20L, + 0x4000000000000800L, 0x202a9000900L, 0x6a12e48400200020L, false, 0, 0x0L), + 4 + ), + 543036 + ); + + // gentest-3227 + assertEqual( + perft( + Board(0x126286a8000000L, 0x840000000000L, 0x2000000000000008L, 0xa00000001010000L, 0x1L, + 0x4000000000000800L, 0x202a9010800L, 0x6a12e48400000009L, true, 0, 0x0L), + 4 + ), + 658495 + ); + + // gentest-3228 + assertEqual( + perft( + Board(0x126286a8000000L, 0x800002000000L, 0x2000000000000008L, 0xa00000000020001L, 0x0L, + 0x4000000000000800L, 0x202a8020801L, 0x6a12e08402000008L, false, 0, 0x0L), + 4 + ), + 671269 + ); + + // gentest-3229 + assertEqual( + perft( + Board(0x126286a8000000L, 0x800002000000L, 0x2000000000200000L, 0xa00000000000001L, 0x0L, + 0x80000000000800L, 0x202a8000801L, 0x2a92e08402200000L, true, 0, 0x0L), + 4 + ), + 401411 + ); + + // gentest-3230 + assertEqual( + perft( + Board(0x126286a8000000L, 0x4000000002000000L, 0x2000000000200000L, 0xa00010000000000L, 0x0L, + 0x80000000000800L, 0x302a8000800L, 0x6a92608402200000L, false, 0, 0x0L), + 4 + ), + 216321 + ); + + // gentest-3231 + assertEqual( + perft( + Board(0x126286a8000000L, 0x4000000002000000L, 0x2000000800000000L, 0xa00000000000100L, 0x0L, + 0x80000000000800L, 0x202a8000900L, 0x6a92608c02000000L, true, 0, 0x0L), + 4 + ), + 309114 + ); + + // gentest-3232 + assertEqual( + perft( + Board(0x126286a0000000L, 0x4000000002000000L, 0x2000000800000000L, 0x600000000000100L, 0x0L, + 0x80000000000010L, 0x206a0000110L, 0x6692608802000000L, false, 0, 0x0L), + 4 + ), + 290674 + ); + + // gentest-3233 + assertEqual( + perft( + Board(0x27282a0000000L, 0x4000000002000000L, 0xc00000000L, 0x600000000000100L, 0x0L, + 0x80000000001000L, 0x202a0001100L, 0x4682708c02000000L, true, 0, 0x0L), + 4 + ), + 270014 + ); + + // gentest-3234 + assertEqual( + perft( + Board(0x252a2a0000000L, 0x4000000002000000L, 0xc00000000L, 0x600000000002000L, 0x0L, + 0x80000000000008L, 0x202a0002008L, 0x468250ac02000000L, false, 0, 0x0L), + 4 + ), + 181833 + ); + + // gentest-3235 + assertEqual( + perft( + Board(0x252a2a0000000L, 0x4000000002000000L, 0x400000080L, 0x600000000000200L, 0x0L, + 0x80000000000008L, 0x202a0000208L, 0x468250a402000080L, true, 0, 0x0L), + 4 + ), + 193453 + ); + + // gentest-3236 + assertEqual( + perft( + Board(0x252a2a0000000L, 0x4000040000000000L, 0x400000080L, 0x600000000020000L, 0x0L, + 0x80000000000400L, 0x202a0020400L, 0x468254a400000080L, false, 0, 0x0L), + 4 + ), + 277457 + ); + + // gentest-3237 + assertEqual( + perft( + Board(0x256a0a0000000L, 0x4000000000000000L, 0x2080L, 0x500000000020000L, 0x0L, 0x80000000000400L, + 0x600a0020400L, 0x458250a000002080L, true, 0, 0x0L), + 4 + ), + 396562 + ); + + // gentest-3238 + assertEqual( + perft( + Board(0x256a0a0000000L, 0x4000000000000000L, 0x400080L, 0x500000001000000L, 0x0L, 0x80000000000400L, + 0x600a1000400L, 0x458250a000400080L, false, 0, 0x0L), + 4 + ), + 303305 + ); + + // gentest-3239 + assertEqual( + perft( + Board(0x652a0a0000000L, 0x10000000000000L, 0x400080L, 0x500000001000000L, 0x0L, 0x8000000000000400L, + 0x40200a1000400L, 0x851250a000400080L, true, 0, 0x0L), + 4 + ), + 295666 + ); + + // gentest-3240 + assertEqual( + perft( + Board(0x252a0a0000000L, 0x10000000000000L, 0x400080L, 0x104000000000100L, 0x0L, 0x8000000000000800L, + 0x200a0000900L, 0x811650a000400080L, false, 0, 0x0L), + 4 + ), + 232909 + ); + + // gentest-3241 + assertEqual( + perft( + Board(0x252a0a0000000L, 0x10000000000000L, 0x400080L, 0x4010000000100L, 0x0L, 0x8000000000000008L, + 0x200a0000108L, 0x801651a000400080L, true, 0, 0x0L), + 4 + ), + 204027 + ); + + // gentest-3242 + assertEqual( + perft( + Board(0x252a0a0000000L, 0x10000000000000L, 0x600000L, 0x4010001000000L, 0x0L, 0x8000000000000800L, + 0x200a1000800L, 0x801651a000600000L, false, 0, 0x0L), + 4 + ), + 167327 + ); + + // gentest-3243 + assertEqual( + perft( + Board(0x252a080000000L, 0x10000000000000L, 0x20200000L, 0x5000000000100L, 0x0L, 0x8000000000000800L, + 0x20080000900L, 0x801750a020200000L, true, 0, 0x0L), + 4 + ), + 45698 + ); + + // gentest-3244 + assertEqual( + perft( + Board(0x252a080000000L, 0x800000000L, 0x20200000L, 0x5000100000000L, 0x0L, 0x8000000000000010L, + 0x20180000010L, 0x800750a820200000L, false, 0, 0x0L), + 4 + ), + 257050 + ); + + // gentest-3245 + assertEqual( + perft( + Board(0x252a080000000L, 0x800000000L, 0x20004000L, 0x1000400040000L, 0x0L, 0x8000000000000010L, + 0x20480000010L, 0x800350a820044000L, true, 0, 0x0L), + 4 + ), + 232781 + ); + + // gentest-3246 + assertEqual( + perft( + Board(0x252a080000000L, 0x800000000L, 0x20004000L, 0x1040000040000L, 0x0L, 0x40000000001000L, + 0x60080001000L, 0x4350a820044000L, false, 0, 0x0L), + 4 + ), + 272382 + ); + + // gentest-3247 + assertEqual( + perft( + Board(0x252a080000000L, 0x200000000000L, 0x4800L, 0x1000004040000L, 0x0L, 0x40000000001000L, + 0x20084001000L, 0x4370a000044800L, true, 0, 0x0L), + 4 + ), + 385762 + ); + + // gentest-3248 + assertEqual( + perft( + Board(0x350a080000000L, 0x200000000000L, 0x4800L, 0x20040000L, 0x0L, 0x8000000000001000L, + 0x10000a0001000L, 0x800270a000044800L, false, 0, 0x0L), + 4 + ), + 336528 + ); + + // gentest-3249 + assertEqual( + perft( + Board(0x150a280000000L, 0x200000000000L, 0x800000800L, 0x40020L, 0x0L, 0x8000000000001000L, + 0x1000080001020L, 0x800070aa00040800L, true, 0, 0x0L), + 4 + ), + 397564 + ); + + // gentest-3250 + assertEqual( + perft( + Board(0x1508280000000L, 0x200000000000L, 0x800000800L, 0x2000040000L, 0x0L, 0x40000000000020L, + 0x1002080000020L, 0x40708a00040800L, false, 0, 0x0L), + 4 + ), + 436687 + ); + + // gentest-3251 + assertEqual( + perft( + Board(0x1508280000000L, 0x200000000000L, 0x10L, 0x800400000L, 0x0L, 0x40000000000020L, + 0x1000880000020L, 0x40708200400010L, true, 0, 0x0L), + 4 + ), + 285162 + ); + + // gentest-3252 + assertEqual( + perft( + Board(0x1508280000000L, 0x8000000000000L, 0x10L, 0x20400000L, 0x0L, 0x40000000000020L, + 0x10000a0000020L, 0x48508200400010L, false, 0, 0x0L), + 4 + ), + 262136 + ); + + // gentest-3253 + assertEqual( + perft( + Board(0x1508082000000L, 0x8000000000000L, 0x10L, 0x802000L, 0x0L, 0x40000000000020L, 0x1000080002020L, + 0x48508002800010L, true, 0, 0x0L), + 4 + ), + 277818 + ); + + // gentest-3254 + assertEqual( + perft( + Board(0x508082000000L, 0x8000000000000L, 0x40080L, 0x802000L, 0x0L, 0x40000000000020L, 0x800020a0L, + 0x48508002840000L, false, 0, 0x0L), + 4 + ), + 319690 + ); + + // gentest-3255 + assertEqual( + perft( + Board(0x508082000000L, 0x2000000000000000L, 0x40080L, 0x800400L, 0x0L, 0x80000000000020L, 0x800004a0L, + 0x2080508002840000L, true, 0, 0x0L), + 4 + ), + 223628 + ); + + // gentest-3256 + assertEqual( + perft( + Board(0x508082000000L, 0x2000000000000000L, 0x90L, 0x800200L, 0x0L, 0x80000000000020L, 0x800002a0L, + 0x2080508002800010L, false, 0, 0x0L), + 4 + ), + 190447 + ); + + // gentest-3257 + assertEqual( + perft( + Board(0x508080000000L, 0x2000000000000000L, 0x2000080L, 0x80000L, 0x0L, 0x80000000000020L, + 0x800000a0L, 0x2080508002080000L, true, 0, 0x0L), + 4 + ), + 94483 + ); + + // gentest-3258 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x3000000L, 0x80000L, 0x0L, 0x80000000000020L, + 0x81000020L, 0x2080409002080000L, false, 0, 0x0L), + 4 + ), + 95874 + ); + + // gentest-3259 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x1000000100000000L, 0x80000L, 0x0L, 0x80000000000020L, + 0x1000000080000020L, 0x2080409100080000L, true, 0, 0x0L), + 4 + ), + 74404 + ); + + // gentest-3260 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x40100000000L, 0x8L, 0x0L, 0x80000000001000L, + 0x40080001000L, 0x2080409100000008L, false, 0, 0x0L), + 4 + ), + 129116 + ); + + // gentest-3261 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x1000010L, 0x8L, 0x0L, 0x8000000000001000L, 0x81001000L, + 0xa000409000000018L, true, 0, 0x0L), + 4 + ), + 65038 + ); + + // gentest-3262 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x1000010L, 0x4L, 0x0L, 0x8000000000100000L, 0x81100000L, + 0xa000409000000014L, false, 0, 0x0L), + 4 + ), + 71768 + ); + + // gentest-3263 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x40000000010L, 0x10000000L, 0x0L, 0x8000000000100000L, + 0x40080100000L, 0xa000409010000010L, true, 0, 0x0L), + 4 + ), + 16841 + ); + + // gentest-3264 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x40000000800L, 0x10000000L, 0x0L, 0x8000000000002000L, + 0x40080002000L, 0xa000409010000800L, false, 0, 0x0L), + 4 + ), + 105470 + ); + + // gentest-3265 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x44000000000L, 0x10L, 0x0L, 0x8000000000004000L, + 0x40080004000L, 0xa00040d000000010L, true, 0, 0x0L), + 4 + ), + 122187 + ); + + // gentest-3266 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x40100000L, 0x10L, 0x0L, 0x8000000000004000L, + 0xc0004000L, 0xa000409000100010L, false, 0, 0x0L), + 4 + ), + 99847 + ); + + // gentest-3267 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x60000000L, 0x4L, 0x0L, 0x8000000000200000L, 0xc0200000L, + 0xa000409020000004L, true, 0, 0x0L), + 4 + ), + 84698 + ); + + // gentest-3268 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x100020000000L, 0x10L, 0x0L, 0x8000000000200000L, + 0x100080200000L, 0xa000409020000010L, false, 0, 0x0L), + 4 + ), + 77299 + ); + + // gentest-3269 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x100020000000L, 0x200000L, 0x0L, 0x8000000000002000L, + 0x100080002000L, 0xa000409020200000L, true, 0, 0x0L), + 4 + ), + 31046 + ); + + // gentest-3270 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x8000000400000L, 0x0L, 0x0L, 0x8000000000200000L, + 0x8000080200000L, 0xa000409000400000L, false, 0, 0x0L), + 4 + ), + 26624 + ); + + // gentest-3271 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x40000100000L, 0x0L, 0x0L, 0x8000000000200000L, + 0x40080200000L, 0xa000409000100000L, true, 0, 0x0L), + 4 + ), + 49162 + ); + + // gentest-3272 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x400000000000040L, 0x0L, 0x0L, 0x8000000000200000L, + 0x400000080200000L, 0xa000409000000040L, false, 0, 0x0L), + 4 + ), + 28078 + ); + + // gentest-3273 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x8000000000010L, 0x0L, 0x0L, 0x8000000000200000L, + 0x8000080200000L, 0xa000409000000010L, true, 0, 0x0L), + 4 + ), + 36938 + ); + + // gentest-3274 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x40002000000L, 0x0L, 0x0L, 0x8000000000004000L, + 0x40080004000L, 0xa000409002000000L, false, 0, 0x0L), + 4 + ), + 65349 + ); + + // gentest-3275 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x40000010000L, 0x0L, 0x0L, 0x8000000000008000L, + 0x40080008000L, 0xa000409000010000L, true, 0, 0x0L), + 4 + ), + 47479 + ); + + // gentest-3276 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x100080000000000L, 0x0L, 0x0L, 0x8000000000008000L, + 0x100000080008000L, 0xa000489000000000L, false, 0, 0x0L), + 4 + ), + 30948 + ); + + // gentest-3277 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x2080000000000L, 0x0L, 0x0L, 0x8000000000008000L, + 0x2000080008000L, 0xa000489000000000L, true, 0, 0x0L), + 4 + ), + 38699 + ); + + // gentest-3278 + assertEqual( + perft( + Board(0x409080000000L, 0x2000000000000000L, 0x10020L, 0x0L, 0x0L, 0x8000000000008000L, 0x80008020L, + 0xa000409000010000L, false, 0, 0x0L), + 4 + ), + 31435 + ); + + // gentest-3279 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3280 + assertEqual( + perft( + Board(0xef00104000bf00L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4080bfdfL, 0xffef001000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 361797 + ); + + // gentest-3281 + assertEqual( + perft( + Board(0xed02104100be00L, 0x200200000000042L, 0x2400000000800004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4180bedfL, 0xbfed221000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 398902 + ); + + // gentest-3282 + assertEqual( + perft( + Board(0xed02104900b600L, 0x240000000042L, 0x2400000000800004L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x4980b7deL, 0xbded261000000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 868546 + ); + + // gentest-3283 + assertEqual( + perft( + Board(0xed02004900b600L, 0x200002000042L, 0x2400004000800000L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x404180b7daL, 0xbded22000a000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 843889 + ); + + // gentest-3284 + assertEqual( + perft( + Board(0xe902044900b600L, 0x200002000042L, 0x2400000020800000L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000800L, 0x6180bfcaL, 0xbde922040a000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 777164 + ); + + // gentest-3285 + assertEqual( + perft( + Board(0xe900064900b600L, 0x200002000042L, 0x2400000020000020L, 0x8100000000000180L, 0x4000000000008L, + 0x1000000000000800L, 0x6100bfeaL, 0xb5ed20060a000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1331750 + ); + + // gentest-3286 + assertEqual( + perft( + Board(0xe900460900b200L, 0x200000000042L, 0x2400000020000020L, 0x8100000000000180L, 0x4000000000008L, + 0x1000000000000400L, 0x402100b7eaL, 0xb5ed200608000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1321476 + ); + + // gentest-3287 + assertEqual( + perft( + Board(0xe108460900b200L, 0x200000000042L, 0x2400000000000024L, 0x8100000000000180L, 0x1000000008L, + 0x1000000000000400L, 0x400100b7eeL, 0xb5e1281608000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1399722 + ); + + // gentest-3288 + assertEqual( + perft( + Board(0xe1084609009200L, 0x200000000042L, 0x2400000000000024L, 0x8100000000010080L, 0x20000008L, + 0x1000000000000400L, 0x40010196eeL, 0xb5e1280628000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1536287 + ); + + // gentest-3289 + assertEqual( + perft( + Board(0xe1084619008200L, 0x200000000042L, 0x2000000000800004L, 0x8100000000010080L, 0x28L, + 0x1000000000000400L, 0x40110186ceL, 0xb1e1280608800020L, true, 0, 0x8100000000000000L), + 4 + ), + 1743727 + ); + + // gentest-3290 + assertEqual( + perft( + Board(0xe1084619008200L, 0x200000000840L, 0x2000000000800004L, 0x8800000000010080L, 0x8000000020L, + 0x1000000000000400L, 0xc011018ec4L, 0xb8e1280608800020L, false, 0, 0x8000000000000000L), + 4 + ), + 1516709 + ); + + // gentest-3291 + assertEqual( + perft( + Board(0x21484619008200L, 0x200000000840L, 0x2000000000800004L, 0x8800000000010080L, 0x80000000004000L, + 0x1000000000000400L, 0x80004011018ec4L, 0xb821680608804000L, true, 0, 0x8000000000000000L), + 4 + ), + 1428249 + ); + + // gentest-3292 + assertEqual( + perft( + Board(0x21484619008200L, 0x200000000002L, 0x2000000000800004L, 0x8800000000200080L, 0x80000000000040L, + 0x1000000000000400L, 0x80004011208686L, 0xb821680608800040L, false, 0, 0x8000000000000000L), + 4 + ), + 1792782 + ); + + // gentest-3293 + assertEqual( + perft( + Board(0x21484619008200L, 0x200000000800L, 0x800000800004L, 0x8800000000200080L, 0x80000000100000L, + 0x1000000000000400L, 0x80004011208e84L, 0x9821e80608900000L, true, 0, 0x8000000000000000L), + 4 + ), + 1450461 + ); + + // gentest-3294 + assertEqual( + perft( + Board(0x21484609008200L, 0x200010000000L, 0x800000800004L, 0x8800000000200080L, 0x40000000000000L, + 0x1000000000000400L, 0x40004011208684L, 0x9821e80608800000L, false, 0, 0x8000000000000000L), + 4 + ), + 1561118 + ); + + // gentest-3295 + assertEqual( + perft( + Board(0x21484609008200L, 0x40800L, 0x800000800004L, 0x8800000000200080L, 0x40000000000000L, + 0x1000000000000400L, 0x40004001208e84L, 0x9821c80608840000L, true, 0, 0x8000000000000000L), + 4 + ), + 1032776 + ); + + // gentest-3296 + assertEqual( + perft( + Board(0x21484609008200L, 0x40020L, 0x800000800004L, 0x8800000000080080L, 0x40000000000000L, + 0x8000000000400L, 0x400040010886a4L, 0x8829c80608840000L, false, 0, 0x0L), + 4 + ), + 1341951 + ); + + // gentest-3297 + assertEqual( + perft( + Board(0x21484609008200L, 0x440000L, 0x800000800004L, 0x8100000000080080L, 0x40000000000000L, + 0x400000000000400L, 0x40004001488684L, 0x8521c80608840000L, true, 0, 0x0L), + 4 + ), + 1332516 + ); + + // gentest-3298 + assertEqual( + perft( + Board(0x21484601008200L, 0x2000000002L, 0x800000800004L, 0x8100000008000080L, 0x40000000000000L, + 0x400000000000400L, 0x40006009008684L, 0x8521c80600800002L, false, 0, 0x0L), + 4 + ), + 1181520 + ); + + // gentest-3299 + assertEqual( + perft( + Board(0x20096601008200L, 0x2L, 0x800000800004L, 0x8100000008000020L, 0x40000000000000L, + 0x400000000000400L, 0x40004009008624L, 0x8520892600800002L, true, 0, 0x0L), + 4 + ), + 1118099 + ); + + // gentest-3300 + assertEqual( + perft( + Board(0x20096700008200L, 0x10000L, 0x800000800004L, 0x8100000008000020L, 0x40000000000000L, + 0x400000000000800L, 0x40004108008a24L, 0x8520892600810000L, false, 0, 0x0L), + 4 + ), + 697950 + ); + + // gentest-3301 + assertEqual( + perft( + Board(0x20096700008200L, 0x10000L, 0x800000800004L, 0x8800000008000020L, 0x1000000000L, + 0x4000000000800L, 0x5108008a24L, 0x8824892600810000L, true, 0, 0x0L), + 4 + ), + 1336107 + ); + + // gentest-3302 + assertEqual( + perft( + Board(0x20096700008200L, 0x10000L, 0x800000800004L, 0x8800000008200000L, 0x1000000000L, + 0x400000000001000L, 0x5108209204L, 0x8c20892600810000L, false, 0, 0x0L), + 4 + ), + 1441105 + ); + + // gentest-3303 + assertEqual( + perft( + Board(0x20096700008200L, 0x0L, 0x800000800004L, 0x8800000008010000L, 0x1000000000L, + 0x100000000001000L, 0x5108019204L, 0x8920892600800000L, true, 0, 0x0L), + 4 + ), + 1265450 + ); + + // gentest-3304 + assertEqual( + perft( + Board(0x20096700008200L, 0x0L, 0x2000000000800004L, 0x8800000008010000L, 0x200000000000L, + 0x100000000080000L, 0x204108098204L, 0xa920092600800000L, false, 0, 0x0L), + 4 + ), + 619053 + ); + + // gentest-3305 + assertEqual( + perft( + Board(0x96700008200L, 0x0L, 0x2000000000800004L, 0x8000000008011000L, 0x20000000000000L, + 0x100000000080000L, 0x20004108098204L, 0xa100092600801000L, true, 0, 0x0L), + 4 + ), + 941519 + ); + + // gentest-3306 + assertEqual( + perft( + Board(0x96700008200L, 0x0L, 0x2000000000800004L, 0x8000000002011000L, 0x400000000000L, + 0x200000000080000L, 0x404102098204L, 0xa200092600801000L, false, 0, 0x0L), + 4 + ), + 782913 + ); + + // gentest-3307 + assertEqual( + perft( + Board(0x96700008200L, 0x0L, 0x10000000800004L, 0x800010011000L, 0x400000000000L, 0x200000000080000L, + 0x404110098204L, 0x210892600801000L, true, 0, 0x0L), + 4 + ), + 906071 + ); + + // gentest-3308 + assertEqual( + perft( + Board(0x96700008200L, 0x0L, 0x10000000800004L, 0x80000001011000L, 0x800000000000L, 0x200000000080000L, + 0x804101098204L, 0x290092600801000L, false, 0, 0x0L), + 4 + ), + 690564 + ); + + // gentest-3309 + assertEqual( + perft( + Board(0x96700000200L, 0x0L, 0x10000000800004L, 0x80000008018000L, 0x800000000000L, 0x200000000080000L, + 0x804108090204L, 0x290092600808000L, true, 0, 0x0L), + 4 + ), + 684652 + ); + + // gentest-3310 + assertEqual( + perft( + Board(0x96700000200L, 0x0L, 0x10000020800000L, 0x80000008008001L, 0x800000000000L, 0x4000000080000L, + 0x804128080201L, 0x94092600808000L, false, 0, 0x0L), + 4 + ), + 815062 + ); + + // gentest-3311 + assertEqual( + perft( + Board(0x96700000200L, 0x0L, 0x800000020800000L, 0x80000008008100L, 0x800000000000L, + 0x200000000080000L, 0x804128080300L, 0xa80092600808000L, true, 0, 0x0L), + 4 + ), + 854153 + ); + + // gentest-3312 + assertEqual( + perft( + Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x80000008008100L, 0x100000000000L, 0x200000000080000L, + 0x104128080300L, 0x284012600808000L, false, 0, 0x0L), + 4 + ), + 984986 + ); + + // gentest-3313 + assertEqual( + perft( + Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x2000000008008100L, 0x10000000L, 0x200000000080000L, + 0x4138080300L, 0x2204012600808000L, true, 0, 0x0L), + 4 + ), + 743536 + ); + + // gentest-3314 + assertEqual( + perft( + Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x800000008008100L, 0x40L, 0x200000000080000L, + 0x4128080340L, 0xa04012600808000L, false, 0, 0x0L), + 4 + ), + 690585 + ); + + // gentest-3315 + assertEqual( + perft( + Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x800000800000104L, 0x40L, 0x200000000080000L, + 0x4920080340L, 0xa04012600800004L, true, 0, 0x0L), + 4 + ), + 773540 + ); + + // gentest-3316 + assertEqual( + perft( + Board(0x16700000200L, 0x0L, 0x4000020800000L, 0x800000800000104L, 0x800L, 0x400000000080000L, + 0x4920080b00L, 0xc04012600800004L, false, 0, 0x0L), + 4 + ), + 631463 + ); + + // gentest-3317 + assertEqual( + perft( + Board(0x16700000200L, 0x0L, 0x20000104000L, 0x800000800000104L, 0x800L, 0x400000000080000L, + 0x4900180b00L, 0xc00032600004004L, true, 0, 0x0L), + 4 + ), + 612825 + ); + + // gentest-3318 + assertEqual( + perft( + Board(0x16700000200L, 0x0L, 0x20000900000L, 0x800000800010004L, 0x800L, 0x400000000001000L, + 0x4900111a00L, 0xc00032600800004L, false, 0, 0x0L), + 4 + ), + 779389 + ); + + // gentest-3319 + assertEqual( + perft( + Board(0x412700000200L, 0x0L, 0x20000900000L, 0x800000800050000L, 0x800L, 0x2000000001000L, + 0x400900111a00L, 0x802032600840000L, true, 0, 0x0L), + 4 + ), + 1132976 + ); + + // gentest-3320 + assertEqual( + perft( + Board(0x412700020000L, 0x0L, 0x20020800000L, 0x400000800050000L, 0x800L, 0x2000000001000L, + 0x400920031800L, 0x402032600840000L, false, 0, 0x0L), + 4 + ), + 878771 + ); + + // gentest-3321 + assertEqual( + perft( + Board(0x412700020000L, 0x0L, 0x4000020800000L, 0x400000804010000L, 0x800L, 0x2000000000010L, + 0x400920030810L, 0x406012604800000L, true, 0, 0x0L), + 4 + ), + 1260034 + ); + + // gentest-3322 + assertEqual( + perft( + Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x4000000804010000L, 0x800000000000L, 0x2000000000010L, + 0xc80900030010L, 0x4006012604800000L, false, 0, 0x0L), + 4 + ), + 1197581 + ); + + // gentest-3323 + assertEqual( + perft( + Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x100000820010000L, 0x80000000000000L, + 0x2000000000010L, 0x80480900030010L, 0x106012620800000L, true, 0, 0x0L), + 4 + ), + 704787 + ); + + // gentest-3324 + assertEqual( + perft( + Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x100000018010000L, 0x80000000000000L, + 0x2000000000800L, 0x80480108030800L, 0x106012610800000L, false, 0, 0x0L), + 4 + ), + 989580 + ); + + // gentest-3325 + assertEqual( + perft( + Board(0x412700020000L, 0x0L, 0x4080000800000L, 0x300000008010000L, 0x20000000000000L, + 0x2000000000800L, 0x20480108030800L, 0x306012600800000L, true, 0, 0x0L), + 4 + ), + 568192 + ); + + // gentest-3326 + assertEqual( + perft( + Board(0x412702000000L, 0x0L, 0x4000000808000L, 0x201000008010000L, 0x20000000000000L, + 0x2000000000800L, 0x2040010a018800L, 0x207012600800000L, false, 0, 0x0L), + 4 + ), + 798703 + ); + + // gentest-3327 + assertEqual( + perft( + Board(0x41230a000000L, 0x0L, 0x808000L, 0x201000000010000L, 0x4000000000000L, 0x100000000000800L, + 0x4400102018800L, 0x301012208800000L, true, 0, 0x0L), + 4 + ), + 441583 + ); + + // gentest-3328 + assertEqual( + perft( + Board(0x41230a000000L, 0x0L, 0x808000L, 0x3000000000100L, 0x20000000000L, 0x100000000000800L, + 0x420102008900L, 0x103012208800000L, false, 0, 0x0L), + 4 + ), + 178865 + ); + + // gentest-3329 + assertEqual( + perft( + Board(0x41230a000000L, 0x0L, 0x808000L, 0x84000000000100L, 0x400000000L, 0x100000000000800L, + 0x400502008900L, 0x184012208800000L, true, 0, 0x0L), + 4 + ), + 545480 + ); + + // gentest-3330 + assertEqual( + perft( + Board(0x41230a000000L, 0x0L, 0x80000800000L, 0xc0000000000100L, 0x400000000L, 0x100000000080000L, + 0x480502080100L, 0x1c0012208800000L, false, 0, 0x0L), + 4 + ), + 392916 + ); + + // gentest-3331 + assertEqual( + perft( + Board(0x41030a000000L, 0x0L, 0x80000800000L, 0x2800000000100L, 0x2000000000L, 0x100000000080000L, + 0x482102080100L, 0x102810208800000L, true, 0, 0x0L), + 4 + ), + 623385 + ); + + // gentest-3332 + assertEqual( + perft( + Board(0x1030a000000L, 0x0L, 0x80000800000L, 0x2400000000100L, 0x40000000000L, 0x100000000080000L, + 0xc0102080100L, 0x102410208800000L, false, 0, 0x0L), + 4 + ), + 426489 + ); + + // gentest-3333 + assertEqual( + perft( + Board(0x1030a000000L, 0x0L, 0x80000800000L, 0x2000000000801L, 0x40000000000L, 0x100000000080000L, + 0xc0102080001L, 0x102010208800800L, true, 0, 0x0L), + 4 + ), + 14945 + ); + + // gentest-3334 + assertEqual( + perft( + Board(0x10302080000L, 0x0L, 0x80000800000L, 0x2000000000001L, 0x20000000000L, 0x100000000000800L, + 0xa0102000801L, 0x102010200880000L, false, 0, 0x0L), + 4 + ), + 300914 + ); + + // gentest-3335 + assertEqual( + perft( + Board(0x10302080000L, 0x0L, 0x10100000000000L, 0x20000000000001L, 0x20000000000L, 0x100000000000800L, + 0x10020102000801L, 0x120110200080000L, true, 0, 0x0L), + 4 + ), + 409423 + ); + + // gentest-3336 + assertEqual( + perft( + Board(0x10302080000L, 0x0L, 0x10100000000000L, 0x20000000000001L, 0x400000000L, 0x2000000000004L, + 0x10000502000005L, 0x22110200080000L, false, 0, 0x0L), + 4 + ), + 360926 + ); + + // gentest-3337 + assertEqual( + perft( + Board(0x10102080000L, 0x0L, 0x10000004000000L, 0x20000000000001L, 0x200000000L, 0x400000000000004L, + 0x10000302000005L, 0x420010004080000L, true, 0, 0x0L), + 4 + ), + 195908 + ); + + // gentest-3338 + assertEqual( + perft( + Board(0x10102080000L, 0x0L, 0x10100000000000L, 0x20000000000001L, 0x80000000000000L, + 0x400000000000004L, 0x90000102000005L, 0x420110000080000L, false, 0, 0x0L), + 4 + ), + 367431 + ); + + // gentest-3339 + assertEqual( + perft( + Board(0x10100080000L, 0x0L, 0x10100000000000L, 0x2000001L, 0x40000000000000L, 0x400000000000004L, + 0x50000100000005L, 0x400110002080000L, true, 0, 0x0L), + 4 + ), + 483641 + ); + + // gentest-3340 + assertEqual( + perft( + Board(0x10100080000L, 0x0L, 0x30000000000000L, 0x2000002L, 0x1L, 0x400000000000004L, + 0x10000100000007L, 0x420010002080000L, false, 0, 0x0L), + 4 + ), + 357782 + ); + + // gentest-3341 + assertEqual( + perft( + Board(0x10100080000L, 0x0L, 0x20004000000000L, 0x200000002L, 0x1L, 0x400000000000004L, 0x4100000007L, + 0x420010200080000L, true, 0, 0x0L), + 4 + ), + 312247 + ); + + // gentest-3342 + assertEqual( + perft( + Board(0x10100080000L, 0x0L, 0x1000004000000000L, 0x200000002L, 0x4000000000000L, 0x400000000000004L, + 0x4004100000006L, 0x1400010200080000L, false, 0, 0x0L), + 4 + ), + 5397 + ); + + // gentest-3343 + assertEqual( + perft( + Board(0x10100080000L, 0x0L, 0x1000004000000000L, 0x200000002L, 0x0L, 0x2000000000008L, 0x410000000aL, + 0x1002010200080000L, true, 0, 0x0L), + 4 + ), + 92348 + ); + + // gentest-3344 + assertEqual( + perft( + Board(0x10100000800L, 0x0L, 0x1000000000100000L, 0x202000000L, 0x0L, 0x2000000000008L, 0x102100008L, + 0x1002010200000800L, false, 0, 0x0L), + 4 + ), + 97339 + ); + + // gentest-3345 + assertEqual( + perft( + Board(0x10100000800L, 0x0L, 0x40000002000L, 0x202000000L, 0x0L, 0x100000000000008L, 0x102002008L, + 0x100050200000800L, true, 0, 0x0L), + 4 + ), + 233630 + ); + + // gentest-3346 + assertEqual( + perft( + Board(0x10000000800L, 0x0L, 0x40000002000L, 0x104000000L, 0x0L, 0x100000000001000L, 0x4003000L, + 0x100050100000800L, false, 0, 0x0L), + 4 + ), + 326388 + ); + + // gentest-3347 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x40000002000L, 0x800000004L, 0x8L, 0x100000000001000L, 0x3004L, + 0x100050800000008L, true, 0, 0x0L), + 4 + ), + 26589 + ); + + // gentest-3348 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x40000000010L, 0x8L, 0x0L, 0x100000000001000L, 0x1010L, + 0x100050000000008L, false, 0, 0x0L), + 4 + ), + 61353 + ); + + // gentest-3349 + assertEqual( + perft( + Board(0x10000000000L, 0x0L, 0x40000000000L, 0x1000000000L, 0x0L, 0x100000000002000L, 0x2000L, + 0x100051000000000L, true, 0, 0x0L), + 4 + ), + 8658 + ); + + // gentest-3350 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x40000000000L, 0x1000000000L, 0x0L, 0x100000000008000L, 0x8000L, + 0x100041100000000L, false, 0, 0x0L), + 4 + ), + 9521 + ); + + // gentest-3351 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x1000000000000000L, 0x1000000000L, 0x0L, 0x2000000400000L, 0x400000L, + 0x1002001100000000L, true, 0, 0x0L), + 4 + ), + 29994 + ); + + // gentest-3352 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x1000000L, 0x1000000000L, 0x0L, 0x2000000400000L, 0x400000L, + 0x2001101000000L, false, 0, 0x0L), + 4 + ), + 27440 + ); + + // gentest-3353 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x20000L, 0x1000000000L, 0x0L, 0x400000000800000L, 0x800000L, + 0x400001100020000L, true, 0, 0x0L), + 4 + ), + 21380 + ); + + // gentest-3354 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x800000000L, 0x1000000000L, 0x0L, 0x400000000000040L, 0x40L, + 0x400001900000000L, false, 0, 0x0L), + 4 + ), + 9987 + ); + + // gentest-3355 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x20000000000000L, 0x10000000000000L, 0x0L, 0x400000000002000L, 0x2000L, + 0x430000100000000L, true, 0, 0x0L), + 4 + ), + 19454 + ); + + // gentest-3356 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x20000000000000L, 0x10000000000000L, 0x0L, 0x2000000000020L, 0x20L, + 0x32000100000000L, false, 0, 0x0L), + 4 + ), + 13192 + ); + + // gentest-3357 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x400000000000L, 0x10000000000000L, 0x0L, 0x10000000040L, 0x40L, + 0x10410100000000L, true, 0, 0x0L), + 4 + ), + 17889 + ); + + // gentest-3358 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x400000000000L, 0x10000000000000L, 0x0L, 0x1000000000040L, 0x40L, + 0x11400100000000L, false, 0, 0x0L), + 4 + ), + 16293 + ); + + // gentest-3359 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x400000000000L, 0x1000000000000000L, 0x0L, 0x100000000000020L, 0x20L, + 0x1100400100000000L, true, 0, 0x0L), + 4 + ), + 11047 + ); + + // gentest-3360 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x400000000000L, 0x1000000000000000L, 0x0L, 0x2000000000020L, 0x20L, + 0x1002400100000000L, false, 0, 0x0L), + 4 + ), + 17351 + ); + + // gentest-3361 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x80000000000000L, 0x1000000000000000L, 0x0L, 0x2000000000040L, 0x40L, + 0x1082000100000000L, true, 0, 0x0L), + 4 + ), + 20013 + ); + + // gentest-3362 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x80000000000000L, 0x1000L, 0x0L, 0x2000000800000L, 0x800000L, + 0x82000100001000L, false, 0, 0x0L), + 4 + ), + 15282 + ); + + // gentest-3363 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x80000000000000L, 0x400L, 0x0L, 0x2000080000000L, 0x80000000L, + 0x82000100000400L, true, 0, 0x0L), + 4 + ), + 19220 + ); + + // gentest-3364 + assertEqual( + perft( + Board(0x100000000L, 0x0L, 0x80000000000000L, 0x400L, 0x0L, 0x400000000400000L, 0x400000L, + 0x480000100000400L, false, 0, 0x0L), + 4 + ), + 16411 + ); + + // gentest-3365 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3366 + assertEqual( + perft( + Board(0xfd02000800f700L, 0x4200000000000042L, 0x2400000000100020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x810f7fbL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 367754 + ); + + // gentest-3367 + assertEqual( + perft( + Board(0x6d82100800f700L, 0x4200000000040040L, 0x2400000000100020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x814f7f9L, 0xff6d821000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 923031 + ); + + // gentest-3368 + assertEqual( + perft( + Board(0x6d82104800b700L, 0x4200000000040040L, 0x400000002000820L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4804bff9L, 0xdf6d821002000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 992552 + ); + + // gentest-3369 + assertEqual( + perft( + Board(0x6d820068009700L, 0x4200000000040040L, 0x10002000820L, 0x8100000000000081L, 0x800000000000008L, + 0x1000000000000010L, 0x60049ff9L, 0xdb6d83000a000000L, true, 0, 0x8100000000000081L), + 4 + ), + 802938 + ); + + // gentest-3370 + assertEqual( + perft( + Board(0x6d820068009700L, 0x4200000000040040L, 0x10002100020L, 0x8100000000000084L, 0x4000000008L, + 0x1000000000000010L, 0x601497fcL, 0xd36d83400a000000L, false, 0, 0x8100000000000080L), + 4 + ), + 1008569 + ); + + // gentest-3371 + assertEqual( + perft( + Board(0x6d82006a009500L, 0x4200000000040040L, 0x410000000100020L, 0x8100000000000084L, 0x4000000008L, + 0x1000000000000010L, 0x621495fcL, 0xd77d824008000000L, true, 0, 0x8100000000000080L), + 4 + ), + 1020256 + ); + + // gentest-3372 + assertEqual( + perft( + Board(0x6c82016a009500L, 0x4200000001000040L, 0x410000000100020L, 0x8100000000000084L, 0x4000080000L, + 0x1000000000000010L, 0x631895f4L, 0xd77c824108000000L, false, 0, 0x8100000000000080L), + 4 + ), + 1930284 + ); + + // gentest-3373 + assertEqual( + perft( + Board(0x6c82016a009500L, 0x4200000001000040L, 0x410000000100020L, 0x8100000000000084L, + 0x200200000000L, 0x1000000000000010L, 0x2631095f4L, 0xd77ca20108000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 1463855 + ); + + // gentest-3374 + assertEqual( + perft( + Board(0x6c82016a009500L, 0x4200000001000040L, 0x410000000100020L, 0x8100000000000084L, 0x2200000000L, + 0x1000000000000010L, 0x2631095f4L, 0xd77c822108000000L, false, 0, 0x8100000000000080L), + 4 + ), + 2013697 + ); + + // gentest-3375 + assertEqual( + perft( + Board(0x4ca2016a801500L, 0x4200000001000040L, 0x400000400100020L, 0x8100000000000084L, 0x2200000000L, + 0x1000000000000010L, 0x2639015f4L, 0xd74ca22508000000L, true, 0, 0x8100000000000080L), + 4 + ), + 1273346 + ); + + // gentest-3376 + assertEqual( + perft( + Board(0x4ca0016a801100L, 0x4200020000000040L, 0x400000400100020L, 0x8100000000000084L, 0x4000400L, + 0x1000000000000010L, 0x200669011f4L, 0xd74ca00508000400L, false, 0, 0x8100000000000080L), + 4 + ), + 1762950 + ); + + // gentest-3377 + assertEqual( + perft( + Board(0xce0412a801100L, 0x4200020000000040L, 0x400000400100020L, 0x8001000000000084L, 0x4000400L, + 0x1000000000000010L, 0x240269011f4L, 0xd60de00508000400L, true, 0, 0x8000000000000080L), + 4 + ), + 1743435 + ); + + // gentest-3378 + assertEqual( + perft( + Board(0xc60412a801100L, 0x4300000000000040L, 0x400000400100020L, 0x8001000000000084L, 0x20400L, + 0x1000000000000010L, 0x1000000229211f4L, 0xd60d604508000400L, false, 0, 0x8000000000000080L), + 4 + ), + 1620303 + ); + + // gentest-3379 + assertEqual( + perft( + Board(0xc604328801100L, 0x4300000000000040L, 0x400000400100020L, 0x8001000000000084L, 0x20800L, + 0x10000000000010L, 0x1000002209211f4L, 0xc61d604508000800L, true, 0, 0x80L), + 4 + ), + 123251 + ); + + // gentest-3380 + assertEqual( + perft( + Board(0xc604328801100L, 0x4300000000000040L, 0x400000400000820L, 0x8001000000000084L, 0x200000L, + 0x80000000010L, 0x100000220a019f4L, 0xc60d684508000000L, false, 0, 0x80L), + 4 + ), + 921004 + ); + + // gentest-3381 + assertEqual( + perft( + Board(0x8604328801100L, 0x4004040000000040L, 0x400000400000820L, 0x1800000000084L, 0x200000L, + 0x80000000010L, 0x4000220a019f4L, 0x4409ec4508000000L, true, 0, 0x80L), + 4 + ), + 1091601 + ); + + // gentest-3382 + assertEqual( + perft( + Board(0x8604329801000L, 0x4004040000000040L, 0x400000400000820L, 0x1800000040080L, 0x200000L, + 0x10000000000010L, 0x4000221a418f0L, 0x4419e44508000000L, false, 0, 0x80L), + 4 + ), + 1114122 + ); + + // gentest-3383 + assertEqual( + perft( + Board(0x8406329801000L, 0x4004040000000040L, 0x400000400000820L, 0x81000000040080L, 0x400000L, + 0x10000000000010L, 0x4000221c418f0L, 0x4499446508000000L, true, 0, 0x80L), + 4 + ), + 1226960 + ); + + // gentest-3384 + assertEqual( + perft( + Board(0x8406329801000L, 0x4000040800000040L, 0x400000400000820L, 0x81000000000480L, 0x400000L, + 0x80000000010L, 0xa21c01cf0L, 0x44894c6508000000L, false, 0, 0x80L), + 4 + ), + 1321764 + ); + + // gentest-3385 + assertEqual( + perft( + Board(0x8402329801000L, 0x10040800000040L, 0x400020000000820L, 0x81000000000480L, 0x4000000000L, + 0x80000000010L, 0x4a21801cf0L, 0x4994e2108000000L, true, 0, 0x80L), + 4 + ), + 723318 + ); + + // gentest-3386 + assertEqual( + perft( + Board(0x84023a9001000L, 0x10060000000040L, 0x400000000000820L, 0x81000000000480L, 0x4000000000L, + 0x100000000010L, 0x242a1001cf0L, 0x499542108000000L, false, 0, 0x80L), + 4 + ), + 726827 + ); + + // gentest-3387 + assertEqual( + perft( + Board(0x402ba9001000L, 0x10060000000040L, 0x400000000000820L, 0x82000000000480L, 0x8000000000L, + 0x100000000010L, 0x282a1001cf0L, 0x492542908000000L, true, 0, 0x80L), + 4 + ), + 584179 + ); + + // gentest-3388 + assertEqual( + perft( + Board(0x402ba9001000L, 0x10020002000040L, 0x400000000000820L, 0x2000000000480L, 0x8000000000000000L, + 0x100000000010L, 0x80000202a1001cf0L, 0x41250290a000000L, false, 0, 0x80L), + 4 + ), + 399109 + ); + + // gentest-3389 + assertEqual( + perft( + Board(0x402ba1081000L, 0x10020002000040L, 0x400000000000820L, 0x200000000000084L, 0x8000000000000000L, + 0x100000000010L, 0x80000202a10018f4L, 0x610502902080000L, true, 0, 0x80L), + 4 + ), + 493664 + ); + + // gentest-3390 + assertEqual( + perft( + Board(0x402ba1081000L, 0x4000020002000040L, 0x400000000000820L, 0x200000000800004L, + 0x800000000000000L, 0x100000000010L, 0x8000202a1801874L, 0x4600502902080000L, false, 0, 0x0L), + 4 + ), + 432452 + ); + + // gentest-3391 + assertEqual( + perft( + Board(0x402ba1081000L, 0x860000000040L, 0x400000000000820L, 0x200000000800004L, 0x800000000000000L, + 0x100000000008L, 0x8000202a180186cL, 0x600d42900080000L, true, 0, 0x0L), + 4 + ), + 453420 + ); + + // gentest-3392 + assertEqual( + perft( + Board(0x402ba1081000L, 0x860000000040L, 0x400000000000820L, 0x200000000100004L, 0x1000000000000000L, + 0x20000000000008L, 0x10000202a110186cL, 0x620c42900080000L, false, 0, 0x0L), + 4 + ), + 61465 + ); + + // gentest-3393 + assertEqual( + perft( + Board(0x402ba1081000L, 0x820000000040L, 0x400000000000820L, 0x200000000100004L, 0x40000000000L, + 0x20000000000008L, 0x602a110186cL, 0x620c02900080000L, true, 0, 0x0L), + 4 + ), + 389578 + ); + + // gentest-3394 + assertEqual( + perft( + Board(0x402ba1081000L, 0x20040800000L, 0x400000000000820L, 0x200000000100004L, 0x40000000000L, + 0x20000000000010L, 0x602a1901834L, 0x620402940080000L, false, 0, 0x0L), + 4 + ), + 630068 + ); + + // gentest-3395 + assertEqual( + perft( + Board(0x402ba1081000L, 0x20040002000L, 0x2000000000820L, 0x200000000100004L, 0x40000000000L, + 0x4000000000000010L, 0x602a1103834L, 0x4202402940080000L, true, 0, 0x0L), + 4 + ), + 953063 + ); + + // gentest-3396 + assertEqual( + perft( + Board(0x402aa3081000L, 0x20040002000L, 0x2000000004000L, 0x200000000100004L, 0x40000000000L, + 0x4000000000000010L, 0x602a1107014L, 0x4202402842080000L, false, 0, 0x0L), + 4 + ), + 1330913 + ); + + // gentest-3397 + assertEqual( + perft( + Board(0x402aa3081000L, 0x20040002000L, 0x2000000004000L, 0x100004L, 0x1000000000000000L, + 0x40000000000010L, 0x10000202a1107014L, 0x42402842080000L, true, 0, 0x0L), + 4 + ), + 656844 + ); + + // gentest-3398 + assertEqual( + perft( + Board(0x402aa3081000L, 0x20040002000L, 0x2000000004000L, 0x400000000100000L, 0x8000000000000L, + 0x4000000000000010L, 0x4080202a1107010L, 0x4002402842080000L, false, 0, 0x0L), + 4 + ), + 24756 + ); + + // gentest-3399 + assertEqual( + perft( + Board(0x402aa3081000L, 0x20040002000L, 0x400000000004000L, 0x100000L, 0x800000000000000L, + 0x40000000000010L, 0x8000202a1107010L, 0x440402842080000L, true, 0, 0x0L), + 4 + ), + 391915 + ); + + // gentest-3400 + assertEqual( + perft( + Board(0x402aa3080000L, 0x20040002000L, 0x100000004000L, 0x1000L, 0x800000000000000L, + 0x40000000000010L, 0x8000202a1087010L, 0x40502842000000L, false, 0, 0x0L), + 4 + ), + 410357 + ); + + // gentest-3401 + assertEqual( + perft( + Board(0x402aa3080000L, 0x21000000080L, 0x8000000004000L, 0x1000L, 0x800000000000000L, + 0x40000000000010L, 0x8000202a1085090L, 0x48403802000000L, true, 0, 0x0L), + 4 + ), + 332911 + ); + + // gentest-3402 + assertEqual( + perft( + Board(0x402aa3080000L, 0x21000000080L, 0x8000000004000L, 0x1000L, 0x8000000000000000L, + 0x200000000010L, 0x80000202a1085090L, 0x8603802000000L, false, 0, 0x0L), + 4 + ), + 51501 + ); + + // gentest-3403 + assertEqual( + perft( + Board(0x402aa3080000L, 0x20004000080L, 0x8000000004000L, 0x2000L, 0x8000000000000000L, + 0x100000000010L, 0x80000202a1086090L, 0x8502806000000L, true, 0, 0x0L), + 4 + ), + 347722 + ); + + // gentest-3404 + assertEqual( + perft( + Board(0x402aa3080000L, 0x20004000080L, 0x8000000800000L, 0x2000L, 0x8000000000000000L, 0x80000000020L, + 0x80000202a18820a0L, 0x8482806000000L, false, 0, 0x0L), + 4 + ), + 391437 + ); + + // gentest-3405 + assertEqual( + perft( + Board(0x6aa10a0000L, 0x20004000080L, 0x8000000800000L, 0x200000L, 0x8000000000000000L, 0x80000000020L, + 0x80000202a1a800a0L, 0x8086804020000L, true, 0, 0x0L), + 4 + ), + 392314 + ); + + // gentest-3406 + assertEqual( + perft( + Board(0x4aa10a0000L, 0x21000000080L, 0x8002000000000L, 0x200000L, 0x0L, 0x80000000020L, + 0x222a12800a0L, 0x8085800020000L, false, 0, 0x0L), + 4 + ), + 296980 + ); + + // gentest-3407 + assertEqual( + perft( + Board(0x8a210a0000L, 0x21000000080L, 0x8002000000000L, 0x200000L, 0x0L, 0x10000000000020L, + 0x2a2012800a0L, 0x18001820020000L, true, 0, 0x0L), + 4 + ), + 264430 + ); + + // gentest-3408 + assertEqual( + perft( + Board(0x8a210a0000L, 0x21000000080L, 0x100040000000L, 0x200000L, 0x0L, 0x10000000004000L, + 0x28241284080L, 0x10101820020000L, false, 0, 0x0L), + 4 + ), + 237137 + ); + + // gentest-3409 + assertEqual( + perft( + Board(0x8b200a0000L, 0x20020000000080L, 0x100040000000L, 0x200000L, 0x0L, 0x200000004000L, + 0x28340284080L, 0x20300820020000L, true, 0, 0x0L), + 4 + ), + 149104 + ); + + // gentest-3410 + assertEqual( + perft( + Board(0x8b200a0000L, 0x120000000000080L, 0x100040000000L, 0x400000L, 0x0L, 0x10000000004000L, + 0x100008340484080L, 0x30100820020000L, false, 0, 0x0L), + 4 + ), + 169255 + ); + + // gentest-3411 + assertEqual( + perft( + Board(0x8b200a0000L, 0x24000000000080L, 0x40000000L, 0x400000L, 0x0L, 0x80000004000L, + 0x4008300484080L, 0x20080860020000L, true, 0, 0x0L), + 4 + ), + 130441 + ); + + // gentest-3412 + assertEqual( + perft( + Board(0x289200a0000L, 0x8000100000000080L, 0x40000000L, 0x400000L, 0x0L, 0x80000004000L, + 0x128100484080L, 0x8000080860020000L, false, 0, 0x0L), + 4 + ), + 113593 + ); + + // gentest-3413 + assertEqual( + perft( + Board(0x281280a0000L, 0x8000100000000080L, 0x8L, 0x400000L, 0x0L, 0x80000000040L, 0x1281004800c0L, + 0x8000080028020008L, true, 0, 0x0L), + 4 + ), + 126614 + ); + + // gentest-3414 + assertEqual( + perft( + Board(0x38028080200L, 0x8000100000000080L, 0x8L, 0x40000000L, 0x0L, 0x80000000040L, 0x1380400800c0L, + 0x8000080028000208L, false, 0, 0x0L), + 4 + ), + 192696 + ); + + // gentest-3415 + assertEqual( + perft( + Board(0x430028080000L, 0x100000000080L, 0x8L, 0x40000002L, 0x0L, 0x80000000040L, 0x5300400800c0L, + 0x8002800000aL, true, 0, 0x0L), + 4 + ), + 142844 + ); + + // gentest-3416 + assertEqual( + perft( + Board(0x430028080000L, 0x100000002000L, 0x8L, 0x80000001L, 0x0L, 0x80000000040L, 0x530080082040L, + 0x80028000009L, false, 0, 0x0L), + 4 + ), + 187264 + ); + + // gentest-3417 + assertEqual( + perft( + Board(0x430008080000L, 0x20002000L, 0x200000L, 0x80000001L, 0x0L, 0x1000000040L, 0x4300a0082040L, + 0x1008200001L, true, 0, 0x0L), + 4 + ), + 21185 + ); + + // gentest-3418 + assertEqual( + perft( + Board(0x430008080000L, 0x20000008L, 0x200000L, 0x18000L, 0x0L, 0x1000000040L, 0x430020088048L, + 0x1008210000L, false, 0, 0x0L), + 4 + ), + 339492 + ); + + // gentest-3419 + assertEqual( + perft( + Board(0x430008080000L, 0x8L, 0x200000L, 0x8000000000020000L, 0x0L, 0x20000040L, 0x8000430000080048L, + 0x28220000L, true, 0, 0x0L), + 4 + ), + 249873 + ); + + // gentest-3420 + assertEqual( + perft( + Board(0x1420008080000L, 0x8L, 0x200000L, 0x8000000002000000L, 0x0L, 0x20008000L, 0x8001420000088008L, + 0x2a200000L, false, 0, 0x0L), + 4 + ), + 242155 + ); + + // gentest-3421 + assertEqual( + perft( + Board(0x1420008080000L, 0x8L, 0x800000000L, 0x8000000000000200L, 0x0L, 0x20800000L, + 0x8001420000880008L, 0x828000200L, true, 0, 0x0L), + 4 + ), + 268833 + ); + + // gentest-3422 + assertEqual( + perft( + Board(0x40020008080000L, 0x8L, 0x800000000L, 0x8000000000020000L, 0x100000000000000L, 0x20800000L, + 0x8140020000880008L, 0x828020000L, false, 0, 0x0L), + 4 + ), + 467335 + ); + + // gentest-3423 + assertEqual( + perft( + Board(0x40020008080000L, 0x8L, 0x800000000L, 0x8000000200000000L, 0x1L, 0x2000800000L, + 0x8040020000880009L, 0x2a08000000L, true, 0, 0x0L), + 4 + ), + 602145 + ); + + // gentest-3424 + assertEqual( + perft( + Board(0x40020008080000L, 0x8L, 0x800000000L, 0x100000004L, 0x1L, 0x2000800000L, 0x4002000088000dL, + 0x2908000000L, false, 0, 0x0L), + 4 + ), + 549421 + ); + + // gentest-3425 + assertEqual( + perft( + Board(0x42000008080000L, 0x8L, 0x800000000L, 0x1000004L, 0x1L, 0x200000800000L, 0x4200000088000dL, + 0x200809000000L, true, 0, 0x0L), + 4 + ), + 613386 + ); + + // gentest-3426 + assertEqual( + perft( + Board(0x40000008080000L, 0x200000000000008L, 0x800000000L, 0x100000002L, 0x1L, 0x200000800000L, + 0x24000000088000bL, 0x200908000000L, false, 0, 0x0L), + 4 + ), + 627645 + ); + + // gentest-3427 + assertEqual( + perft( + Board(0x40000008080000L, 0x200000000000200L, 0x800000000L, 0x1000002L, 0x1L, 0x400000800000L, + 0x240000000880203L, 0x400809000000L, true, 0, 0x0L), + 4 + ), + 337036 + ); + + // gentest-3428 + assertEqual( + perft( + Board(0x40000008080000L, 0x200000004000000L, 0x800000000L, 0x100000002L, 0x1L, 0x400040000000L, + 0x240000044080003L, 0x400908000000L, false, 0, 0x0L), + 4 + ), + 722533 + ); + + // gentest-3429 + assertEqual( + perft( + Board(0x8080000L, 0x200000004000000L, 0x2000000000000L, 0x100000002L, 0x4000000000000001L, + 0x200040000000L, 0x4200000044080003L, 0x2200108000000L, true, 0, 0x0L), + 4 + ), + 543802 + ); + + // gentest-3430 + assertEqual( + perft( + Board(0x8080000L, 0x200020000000000L, 0x40000000000L, 0x100000002L, 0x4000000000000100L, + 0x200040000000L, 0x4200020040080102L, 0x240108000000L, false, 0, 0x0L), + 4 + ), + 985148 + ); + + // gentest-3431 + assertEqual( + perft( + Board(0x8080000L, 0x200020000000000L, 0x10000000L, 0x2000000002L, 0x4000000000002000L, + 0x200040000000L, 0x4200020040082002L, 0x202018000000L, true, 0, 0x0L), + 4 + ), + 437178 + ); + + // gentest-3432 + assertEqual( + perft( + Board(0x8080000L, 0x200020000000000L, 0x10000000L, 0x20000002L, 0x4000000000001000L, 0x200000800000L, + 0x4200020000881002L, 0x200038000000L, false, 0, 0x0L), + 4 + ), + 614723 + ); + + // gentest-3433 + assertEqual( + perft( + Board(0x8080000L, 0x200000800000000L, 0x10000000L, 0x20000002L, 0x4000000000001000L, 0x80000800000L, + 0x4200000800881002L, 0x80038000000L, true, 0, 0x0L), + 4 + ), + 782180 + ); + + // gentest-3434 + assertEqual( + perft( + Board(0x8080000L, 0x200000000040000L, 0x10000000L, 0x20000002L, 0x100000001000L, 0x400800000L, + 0x2001000008c1002L, 0x438000000L, false, 0, 0x0L), + 4 + ), + 820135 + ); + + // gentest-3435 + assertEqual( + perft( + Board(0x8080000L, 0x200000000040000L, 0x10000000L, 0x20000002L, 0x100000001000L, 0x400400000L, + 0x2001000004c1002L, 0x438000000L, true, 0, 0x0L), + 4 + ), + 808558 + ); + + // gentest-3436 + assertEqual( + perft( + Board(0x10040000L, 0x200000000000000L, 0x0L, 0x2L, 0x100000001000L, 0x420000000L, 0x200100030001002L, + 0x400040000L, false, 0, 0x0L), + 4 + ), + 21417 + ); + + // gentest-3437 + assertEqual( + perft( + Board(0x10000400L, 0x200000000000000L, 0x0L, 0x2L, 0x1000L, 0x80020000000L, 0x200000030001002L, + 0x80000000400L, true, 0, 0x0L), + 4 + ), + 108879 + ); + + // gentest-3438 + assertEqual( + perft( + Board(0x10000000L, 0x200000000000004L, 0x0L, 0x1000000000L, 0x1000L, 0x80020000000L, + 0x200001030001000L, 0x80000000004L, false, 0, 0x0L), + 4 + ), + 27148 + ); + + // gentest-3439 + assertEqual( + perft( + Board(0x10000000L, 0x200000008000000L, 0x0L, 0x1000000000L, 0x1000L, 0x84000000000L, + 0x200005010001000L, 0x80008000000L, true, 0, 0x0L), + 4 + ), + 77484 + ); + + // gentest-3440 + assertEqual( + perft( + Board(0x10000000L, 0x200040000000000L, 0x0L, 0x1000000000L, 0x200000L, 0x88000000000L, + 0x200009010200000L, 0xc0000000000L, false, 0, 0x0L), + 4 + ), + 79879 + ); + + // gentest-3441 + assertEqual( + perft( + Board(0x10000000L, 0x200000000000000L, 0x0L, 0x1000000000L, 0x20000000L, 0x8008000000000L, + 0x9030000000L, 0x208000000000000L, true, 0, 0x0L), + 4 + ), + 37583 + ); + + // gentest-3442 + assertEqual( + perft( + Board(0x10000000L, 0x200000000000000L, 0x0L, 0x10000000000000L, 0x2000000000000000L, + 0x400008000000000L, 0x2010008010000000L, 0x600000000000000L, false, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-3443 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3444 + assertEqual( + perft( + Board(0xf700080220dd00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x220ddffL, 0xfff7000800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 359803 + ); + + // gentest-3445 + assertEqual( + perft( + Board(0xe700181220cd00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1220cdffL, 0xfde7041800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1032315 + ); + + // gentest-3446 + assertEqual( + perft( + Board(0xe700101a28c500L, 0x4000040000000042L, 0x2400000200000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x21228c5dfL, 0xfde7041008000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 837429 + ); + + // gentest-3447 + assertEqual( + perft( + Board(0xe700101a28c500L, 0x4000040000000042L, 0x2400000200000004L, 0x8100000000000081L, 0x800000800L, + 0x10000000000010L, 0x21228cdd7L, 0xe5f7041808000000L, true, 0, 0x81L), + 4 + ), + 1292477 + ); + + // gentest-3448 + assertEqual( + perft( + Board(0xe700101a28c500L, 0x4000040000800002L, 0x2000002200000004L, 0x8100000000000081L, 0x800001000L, + 0x10000000000010L, 0x212a8d597L, 0xe1f7043808000000L, false, 0, 0x81L), + 4 + ), + 2244498 + ); + + // gentest-3449 + assertEqual( + perft( + Board(0xa700105a28c500L, 0x4000040000800002L, 0x2000002200000004L, 0x8100000000000081L, 0x800001000L, + 0x10000000000020L, 0x212a8d5a7L, 0xe1b7043848000000L, true, 0, 0x0L), + 4 + ), + 1995877 + ); + + // gentest-3450 + assertEqual( + perft( + Board(0xa700105a28c500L, 0x4000040000800800L, 0x2000002200000004L, 0x8100000000000041L, 0x800001000L, + 0x100000000020L, 0x212a8dd65L, 0xe1a7143848000000L, false, 0, 0x0L), + 4 + ), + 1355850 + ); + + // gentest-3451 + assertEqual( + perft( + Board(0xa700007828c500L, 0x4000000002000800L, 0x2000002200000004L, 0x8100000000000041L, 0x800001000L, + 0x100000000020L, 0x21028dd65L, 0xe1a710286a000000L, true, 0, 0x0L), + 4 + ), + 1446904 + ); + + // gentest-3452 + assertEqual( + perft( + Board(0xa700007828c500L, 0x4000000002020000L, 0x2000400200000004L, 0x8100000000000081L, 0x800001000L, + 0x100000000020L, 0x2102ad5a5L, 0xe1a750086a000000L, false, 0, 0x0L), + 4 + ), + 2398388 + ); + + // gentest-3453 + assertEqual( + perft( + Board(0xa700007828c500L, 0x4000000002020000L, 0x1000400400000004L, 0x8100000000000081L, 0x8000001000L, + 0x100000000020L, 0x10000000102ad5a5L, 0xc1a750846a000000L, true, 0, 0x0L), + 4 + ), + 1529900 + ); + + // gentest-3454 + assertEqual( + perft( + Board(0xa7000078688500L, 0x4000000002000800L, 0x1000400400000004L, 0x8100000000000081L, + 0x800000001000L, 0x100000000020L, 0x1000000010689da5L, 0xc1a7d0046a000000L, false, 0, 0x0L), + 4 + ), + 1275659 + ); + + // gentest-3455 + assertEqual( + perft( + Board(0xa7000078688500L, 0x4000000002000800L, 0x1000400400000004L, 0x8008000000000041L, + 0x800000001000L, 0x100000000020L, 0x1000000010689d65L, 0xc0afd0046a000000L, true, 0, 0x0L), + 4 + ), + 1008188 + ); + + // gentest-3456 + assertEqual( + perft( + Board(0xa7000078e80500L, 0x4000000002000002L, 0x1000400400000004L, 0x8008000000000041L, + 0x800000001000L, 0x1000000020L, 0x1000000010e81567L, 0xc0afc0146a000000L, false, 0, 0x0L), + 4 + ), + 1218777 + ); + + // gentest-3457 + assertEqual( + perft( + Board(0xa5020078e80500L, 0x4000000002000002L, 0x3000400000000004L, 0x8008000000000041L, + 0x800000100000L, 0x1000000020L, 0x1000000010f80567L, 0xe0adc2106a000000L, true, 0, 0x0L), + 4 + ), + 949095 + ); + + // gentest-3458 + assertEqual( + perft( + Board(0xa5020078e80500L, 0x4000040000000002L, 0x3000400000000004L, 0x8008000000000041L, + 0x800000040000L, 0x1000000020L, 0x1000000010ec0567L, 0xe0adc61068000000L, false, 0, 0x0L), + 4 + ), + 1149342 + ); + + // gentest-3459 + assertEqual( + perft( + Board(0xa5020038e80500L, 0x4200000000000002L, 0x3000400000000004L, 0x8008000000000041L, + 0x800000040000L, 0x1000002000L, 0x1000000010cc2547L, 0xe2adc21028200000L, true, 0, 0x0L), + 4 + ), + 905244 + ); + + // gentest-3460 + assertEqual( + perft( + Board(0xa5020078880500L, 0x4200000000000002L, 0x3000400000000004L, 0x8008000000000041L, 0x80040000L, + 0x1000200000L, 0x1000000050ac0547L, 0xe2ad4210a8000000L, false, 0, 0x0L), + 4 + ), + 1262476 + ); + + // gentest-3461 + assertEqual( + perft( + Board(0xa1020458880500L, 0x4200000000000002L, 0x3000400020000000L, 0x8008000000000041L, 0x80040000L, + 0x200000200000L, 0x1000000070ac0543L, 0xe2a9620488000000L, true, 0, 0x0L), + 4 + ), + 1175640 + ); + + // gentest-3462 + assertEqual( + perft( + Board(0x81020458880500L, 0x4200000000000002L, 0x20c00020000000L, 0x8008000000000005L, 0x80040000L, + 0x200000200000L, 0x20000070ac0507L, 0xc289e20488000000L, false, 0, 0x0L), + 4 + ), + 1105403 + ); + + // gentest-3463 + assertEqual( + perft( + Board(0x81020458880500L, 0x4200000000000002L, 0x20809000000000L, 0x8008000000000005L, 0x80040000L, + 0x4000200000L, 0x20001050ac0507L, 0xc28982c488000000L, true, 0, 0x0L), + 4 + ), + 774631 + ); + + // gentest-3464 + assertEqual( + perft( + Board(0x81020458080500L, 0x4200000000000002L, 0x20808000008000L, 0x8008000000000005L, 0x840000L, + 0x4000001000L, 0x200000500c9507L, 0xc28982c408800000L, false, 0, 0x0L), + 4 + ), + 944766 + ); + + // gentest-3465 + assertEqual( + perft( + Board(0x80020558080500L, 0x4200000000000002L, 0x20808000008000L, 0x8008000000000005L, 0x80000200L, + 0x4000001000L, 0x20000050089707L, 0xc28882c588000000L, true, 0, 0x0L), + 4 + ), + 1062213 + ); + + // gentest-3466 + assertEqual( + perft( + Board(0x80000758080500L, 0x4200000000000002L, 0x808800008000L, 0x8008000000000005L, 0x80000200L, + 0x4000000800L, 0x850088f07L, 0xc28880c788000000L, false, 0, 0x0L), + 4 + ), + 821000 + ); + + // gentest-3467 + assertEqual( + perft( + Board(0x80000758080500L, 0x4200000000000002L, 0x2000008000008000L, 0x8000000800000005L, 0x80020000L, + 0x4000000800L, 0x500a8d07L, 0xe28000cf88000000L, true, 0, 0x0L), + 4 + ), + 877889 + ); + + // gentest-3468 + assertEqual( + perft( + Board(0x80000718080500L, 0x4200000000000002L, 0x2000008000008000L, 0x8000000000000041L, 0x840000000L, + 0x4000000800L, 0x810088d43L, 0xe28000c748000000L, false, 0, 0x0L), + 4 + ), + 135952 + ); + + // gentest-3469 + assertEqual( + perft( + Board(0x80000718080500L, 0x200800000000002L, 0x2000008000008000L, 0x8000000040000001L, 0x800000000L, + 0x200000000800L, 0x850088d03L, 0xa280a08708000000L, true, 0, 0x0L), + 4 + ), + 430931 + ); + + // gentest-3470 + assertEqual( + perft( + Board(0x80000718080500L, 0x200800000000002L, 0x2000008000008000L, 0x8000000040000001L, 0x80000000000L, + 0x10000000001000L, 0x80050089503L, 0xa290808708000000L, false, 0, 0x0L), + 4 + ), + 36645 + ); + + // gentest-3471 + assertEqual( + perft( + Board(0x80000719080400L, 0x200000040000002L, 0x2000008000008000L, 0x8000000000000001L, 0x80000000000L, + 0x20000000001000L, 0x80011089403L, 0xa2a0008748000000L, true, 0, 0x0L), + 4 + ), + 382583 + ); + + // gentest-3472 + assertEqual( + perft( + Board(0x80000719080400L, 0x200000000100002L, 0x2000008000008000L, 0x8000000000000001L, + 0x800000000000L, 0x20000000002000L, 0x80001108a403L, 0xa2a0008708100000L, false, 0, 0x0L), + 4 + ), + 609077 + ); + + // gentest-3473 + assertEqual( + perft( + Board(0x80000719080400L, 0x200000800000002L, 0x2004008000000000L, 0x8000000000000001L, + 0x800000000000L, 0x4000000000002000L, 0x4800011082403L, 0xe280008f08000000L, true, 0, 0x0L), + 4 + ), + 759718 + ); + + // gentest-3474 + assertEqual( + perft( + Board(0x80000719080400L, 0x200000800000800L, 0x2004400000000000L, 0x8000000000000001L, 0x0L, + 0x4000000000002000L, 0x4000011082c01L, 0xe280400f08000000L, false, 0, 0x0L), + 4 + ), + 739398 + ); + + // gentest-3475 + assertEqual( + perft( + Board(0x80000719080400L, 0x200000002000800L, 0x4480000000000L, 0x8000000000000008L, 0x0L, + 0x4000000000002000L, 0x4000011082c08L, 0xc28048070a000000L, true, 0, 0x0L), + 4 + ), + 526586 + ); + + // gentest-3476 + assertEqual( + perft( + Board(0x8000071d080000L, 0x200040000000002L, 0x4480000000000L, 0x8000000000000008L, 0x0L, + 0x4000000000002000L, 0x400001508200aL, 0xc2804c0708000000L, false, 18, 0x0L), + 4 + ), + 375145 + ); + + // gentest-3477 + assertEqual( + perft( + Board(0x8000061d080000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000008L, 0x0L, + 0x4000000000002000L, 0x11508200aL, 0xc088481608000000L, true, 0, 0x0L), + 4 + ), + 386183 + ); + + // gentest-3478 + assertEqual( + perft( + Board(0x8000061d080000L, 0x2000001000000002L, 0x480100000000L, 0x8000000000000010L, 0x0L, + 0x4000000000400000L, 0x115480012L, 0xe080481608000000L, false, 0, 0x0L), + 4 + ), + 226734 + ); + + // gentest-3479 + assertEqual( + perft( + Board(0x8000041f080000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000004L, 0x0L, + 0x4000000000400000L, 0x115480006L, 0xc08848140a000000L, true, 0, 0x0L), + 4 + ), + 235283 + ); + + // gentest-3480 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000040L, 0x0L, + 0x4000000000800000L, 0x115880042L, 0xc088481408020000L, false, 0, 0x0L), + 4 + ), + 244120 + ); + + // gentest-3481 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x8001000000002L, 0x480100000000L, 0x8000000000000040L, 0x0L, + 0x40000000004000L, 0x115084042L, 0x80c8481408020000L, true, 0, 0x0L), + 4 + ), + 466744 + ); + + // gentest-3482 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x8001000040000L, 0x480100000000L, 0x2000000000000002L, 0x0L, + 0x40000000004000L, 0x1150c4002L, 0x20c8481408020000L, false, 0, 0x0L), + 4 + ), + 769904 + ); + + // gentest-3483 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x8001800000000L, 0x1000080100000000L, 0x20000002L, 0x0L, 0x40000000004000L, + 0x915084002L, 0x10c8081428020000L, true, 0, 0x0L), + 4 + ), + 963437 + ); + + // gentest-3484 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x200001800000000L, 0x1000080000040000L, 0x20000002L, 0x0L, + 0x40000000800000L, 0x8158c0002L, 0x12c0081428020000L, false, 0, 0x0L), + 4 + ), + 934306 + ); + + // gentest-3485 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x200001800000000L, 0xc0000040000L, 0x2000000020L, 0x0L, 0x40000000800000L, + 0x8158c0020L, 0x2c00c3408020000L, true, 0, 0x0L), + 4 + ), + 1048628 + ); + + // gentest-3486 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x230000000000000L, 0xc0000040000L, 0x2000000010L, 0x0L, 0x40000000800000L, + 0x100000158c0010L, 0x2e00c2408020000L, false, 0, 0x0L), + 4 + ), + 741819 + ); + + // gentest-3487 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x220002000000000L, 0x40000048000L, 0x10L, 0x0L, 0x2000000000800000L, + 0x20158c0010L, 0x22a0040408028000L, true, 0, 0x0L), + 4 + ), + 569247 + ); + + // gentest-3488 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x200080080000000L, 0x40000048000L, 0x10L, 0x0L, 0x2000000040000000L, + 0xd50c0010L, 0x22800c0408028000L, false, 0, 0x0L), + 4 + ), + 502412 + ); + + // gentest-3489 + assertEqual( + perft( + Board(0x8000041d0a0000L, 0x200080080000000L, 0x40120000000L, 0x10L, 0x0L, 0x2000000040000000L, + 0x1d5080010L, 0x22800c0428020000L, true, 0, 0x0L), + 4 + ), + 558272 + ); + + // gentest-3490 + assertEqual( + perft( + Board(0x41d0a0000L, 0x200080080000000L, 0x40120000000L, 0x100000L, 0x0L, 0x2000008000000000L, + 0x8195180000L, 0x22000c0428020000L, false, 0, 0x0L), + 4 + ), + 318116 + ); + + // gentest-3491 + assertEqual( + perft( + Board(0x41d0a0000L, 0x200080080000000L, 0x100000100100000L, 0x0L, 0x0L, 0x2000000040000000L, + 0x1d5080000L, 0x2300080408120000L, true, 0, 0x0L), + 4 + ), + 184146 + ); + + // gentest-3492 + assertEqual( + perft( + Board(0x51c0a0000L, 0x600000080000000L, 0x100020000100000L, 0x0L, 0x0L, 0x2000000040000000L, + 0x201d4080000L, 0x2700000408120000L, false, 0, 0x0L), + 4 + ), + 122126 + ); + + // gentest-3493 + assertEqual( + perft( + Board(0x51c0a0000L, 0x600000080000000L, 0x100020000000040L, 0x0L, 0x0L, 0x1000000000800000L, + 0x20194880000L, 0x1700000408020040L, true, 0, 0x0L), + 4 + ), + 74577 + ); + + // gentest-3494 + assertEqual( + perft( + Board(0x51c0a0000L, 0x600000080000000L, 0x802000000000040L, 0x0L, 0x0L, 0x1000000040000000L, + 0x8000001d4080000L, 0x1602000408020040L, false, 0, 0x0L), + 4 + ), + 122572 + ); + + // gentest-3495 + assertEqual( + perft( + Board(0x51c0a0000L, 0x9000080000000L, 0x2004000000040L, 0x0L, 0x0L, 0x1000000040000000L, + 0x41d4080000L, 0x100b000408020040L, true, 0, 0x0L), + 4 + ), + 162298 + ); + + // gentest-3496 + assertEqual( + perft( + Board(0x51c0a0000L, 0x1200080000000L, 0x2000000000040L, 0x0L, 0x0L, 0x1000000000800000L, 0x194880000L, + 0x1003200408020040L, false, 0, 0x0L), + 4 + ), + 50934 + ); + + // gentest-3497 + assertEqual( + perft( + Board(0x51c080200L, 0x1600000000000L, 0x100000000000040L, 0x0L, 0x0L, 0x1000000000800000L, + 0x400114880000L, 0x1101200408000240L, true, 0, 0x0L), + 4 + ), + 73310 + ); + + // gentest-3498 + assertEqual( + perft( + Board(0x51c080200L, 0x1200020000000L, 0x100000000100000L, 0x0L, 0x0L, 0x1000000000004000L, + 0x134084000L, 0x1101200408100200L, false, 0, 0x0L), + 4 + ), + 122479 + ); + + // gentest-3499 + assertEqual( + perft( + Board(0x1041c080200L, 0x1000020008000L, 0x100000000100000L, 0x0L, 0x0L, 0x1000000000004000L, + 0x10034084000L, 0x1101000408108200L, true, 0, 0x0L), + 4 + ), + 62701 + ); + + // gentest-3500 + assertEqual( + perft( + Board(0x1041c080200L, 0x1000000808000L, 0x100000000000004L, 0x0L, 0x0L, 0x1000000000400000L, + 0x10014c80000L, 0x1101000408008204L, false, 0, 0x0L), + 4 + ), + 50877 + ); + + // gentest-3501 + assertEqual( + perft( + Board(0x1041c080200L, 0x1004000008000L, 0x100000020000000L, 0x0L, 0x0L, 0x800000000400000L, + 0x14014480000L, 0x901000428008200L, true, 0, 0x0L), + 4 + ), + 26800 + ); + + // gentest-3502 + assertEqual( + perft( + Board(0x1041c080200L, 0x21000000008000L, 0x100000020000000L, 0x0L, 0x0L, 0x400000000004000L, + 0x20010014084000L, 0x501000428008200L, false, 0, 0x0L), + 4 + ), + 61437 + ); + + // gentest-3503 + assertEqual( + perft( + Board(0x1041c080200L, 0x21000000008000L, 0x100004000000000L, 0x0L, 0x0L, 0x4000000400000L, + 0x20010014480000L, 0x105004408008200L, true, 0, 0x0L), + 4 + ), + 82862 + ); + + // gentest-3504 + assertEqual( + perft( + Board(0x1041c080200L, 0x801000000008000L, 0x100000080000000L, 0x0L, 0x0L, 0x4000020000000L, + 0x800010034080000L, 0x105000488008200L, false, 0, 0x0L), + 4 + ), + 37626 + ); + + // gentest-3505 + assertEqual( + perft( + Board(0x1041c080200L, 0x1000000008000L, 0x2000080000000L, 0x0L, 0x0L, 0x4000020000000L, + 0x10034080000L, 0x7000488008200L, true, 0, 0x0L), + 4 + ), + 14375 + ); + + // gentest-3506 + assertEqual( + perft( + Board(0x1041c080200L, 0x1000040000000L, 0x2000080000000L, 0x0L, 0x0L, 0x4000020000000L, + 0x10034080000L, 0x70004c8000200L, false, 0, 0x0L), + 4 + ), + 28508 + ); + + // gentest-3507 + assertEqual( + perft( + Board(0x200041c080200L, 0x40040000000L, 0x80000000L, 0x0L, 0x0L, 0x80020000000L, 0x2000034080000L, + 0xc04c8000200L, true, 0, 0x0L), + 4 + ), + 29835 + ); + + // gentest-3508 + assertEqual( + perft( + Board(0x41c080000L, 0x40040000000L, 0x80000002L, 0x200000000000000L, 0x0L, 0x82000000000L, + 0x200002014080000L, 0xc04c8000002L, false, 0, 0x0L), + 4 + ), + 117605 + ); + + // gentest-3509 + assertEqual( + perft( + Board(0x41c080000L, 0x200000040000000L, 0x80000002L, 0x0L, 0x0L, 0x440000000000L, 0x400014080000L, + 0x2000404c8000002L, true, 0, 0x0L), + 4 + ), + 16901 + ); + + // gentest-3510 + assertEqual( + perft( + Board(0x41c080000L, 0x200001000000000L, 0x80000002L, 0x0L, 0x0L, 0x4000040000000000L, + 0x4000000014080000L, 0x200041488000002L, false, 0, 0x0L), + 4 + ), + 11658 + ); + + // gentest-3511 + assertEqual( + perft( + Board(0x41c080000L, 0x208000000000000L, 0x80000002L, 0x0L, 0x0L, 0x8000020000000000L, + 0x8000000014080000L, 0x208020488000002L, true, 0, 0x0L), + 4 + ), + 9416 + ); + + // gentest-3512 + assertEqual( + perft( + Board(0x140c080000L, 0x208000000000000L, 0x800000000000002L, 0x0L, 0x0L, 0x4000020000000000L, + 0x4000001004080000L, 0xa08020408000002L, false, 0, 0x0L), + 4 + ), + 9912 + ); + + // gentest-3513 + assertEqual( + perft( + Board(0x10040c000000L, 0x200001000000000L, 0x800000000080000L, 0x0L, 0x0L, 0x4000020000000000L, + 0x4000100004000000L, 0xa00021408080000L, true, 0, 0x0L), + 4 + ), + 17170 + ); + + // gentest-3514 + assertEqual( + perft( + Board(0x10040c000000L, 0x200001000000000L, 0x800000000000020L, 0x0L, 0x0L, 0x40020000000000L, + 0x40100004000000L, 0xa00021408000020L, false, 0, 0x0L), + 4 + ), + 27537 + ); + + // gentest-3515 + assertEqual( + perft( + Board(0x1000040c000000L, 0x220000000000000L, 0x800000000000020L, 0x0L, 0x0L, 0x44000000000000L, + 0x50000004000000L, 0xa24000408000020L, true, 0, 0x0L), + 4 + ), + 56382 + ); + + // gentest-3516 + assertEqual( + perft( + Board(0x40c000000L, 0x220000000000000L, 0x4000000000020L, 0x0L, 0x0L, 0x40040000000000L, + 0x44000004000000L, 0x220040408000020L, false, 0, 0x0L), + 4 + ), + 50780 + ); + + // gentest-3517 + assertEqual( + perft( + Board(0x40c000000L, 0x200000000000000L, 0x800000000000020L, 0x0L, 0x0L, 0x48000000000000L, + 0x840000004000000L, 0x208000408000020L, true, 0, 0x0L), + 4 + ), + 36785 + ); + + // gentest-3518 + assertEqual( + perft( + Board(0x408000000L, 0x200000000000000L, 0x84000000L, 0x0L, 0x0L, 0x2008000000000000L, + 0x2000000080000000L, 0x20800040c000000L, false, 0, 0x0L), + 4 + ), + 31671 + ); + + // gentest-3519 + assertEqual( + perft( + Board(0x408000000L, 0x200000000000000L, 0x84000000L, 0x0L, 0x0L, 0x1000040000000000L, + 0x1000000080000000L, 0x20004040c000000L, true, 0, 0x0L), + 4 + ), + 34591 + ); + + // gentest-3520 + assertEqual( + perft( + Board(0x408000000L, 0x200000000000000L, 0x100000000010L, 0x0L, 0x0L, 0x800040000000000L, + 0x800000000000010L, 0x200140408000000L, false, 0, 0x0L), + 4 + ), + 32774 + ); + + // gentest-3521 + assertEqual( + perft( + Board(0x400080000L, 0x200000000000000L, 0x84000000L, 0x0L, 0x0L, 0x800040000000000L, + 0x800000080000000L, 0x200040404080000L, true, 0, 0x0L), + 4 + ), + 22988 + ); + + // gentest-3522 + assertEqual( + perft( + Board(0x400000800L, 0x200000000000000L, 0x10000004000000L, 0x0L, 0x0L, 0x400040000000000L, + 0x410000000000000L, 0x200040404000800L, false, 0, 0x0L), + 4 + ), + 32486 + ); + + // gentest-3523 + assertEqual( + perft( + Board(0x400000800L, 0x200000000000000L, 0x18000000000000L, 0x0L, 0x0L, 0x800040000000000L, + 0x810000000000000L, 0x208040400000800L, true, 0, 0x0L), + 4 + ), + 18767 + ); + + // gentest-3524 + assertEqual( + perft( + Board(0x400000800L, 0x200000000000000L, 0x8200000000000L, 0x0L, 0x0L, 0x800000200000000L, + 0x800200000000000L, 0x208000600000800L, false, 0, 0x0L), + 4 + ), + 60522 + ); + + // gentest-3525 + assertEqual( + perft( + Board(0x400000000L, 0x200000000000000L, 0x8000000000200L, 0x0L, 0x8000000L, 0x800000200000000L, + 0x800000000000200L, 0x208000608000000L, true, 0, 0x0L), + 4 + ), + 59735 + ); + + // gentest-3526 + assertEqual( + perft( + Board(0x400000000L, 0x200000000000000L, 0x8200000000000L, 0x0L, 0x40L, 0x10000200000000L, + 0x10200000000000L, 0x208000600000040L, false, 0, 0x0L), + 4 + ), + 171151 + ); + + // gentest-3527 + assertEqual( + perft( + Board(0x400000000L, 0x200000000000000L, 0x8000000000001L, 0x0L, 0x40L, 0x10000200000000L, + 0x10000000000001L, 0x208000600000040L, true, 0, 0x0L), + 4 + ), + 161292 + ); + + // gentest-3528 + assertEqual( + perft( + Board(0x400000000L, 0x200000000000000L, 0x100000000001L, 0x0L, 0x40L, 0x1000000200000000L, + 0x1000000000000001L, 0x200100600000040L, false, 0, 0x0L), + 4 + ), + 145769 + ); + + // gentest-3529 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3530 + assertEqual( + perft( + Board(0xfe010000807f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x80ff7fL, 0xfffe010000000000L, false, 0, + 0x8100000000000001L), + 4 + ), + 165962 + ); + + // gentest-3531 + assertEqual( + perft( + Board(0xf6010840803f00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x4080bf7fL, 0xbff6210800000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 362982 + ); + + // gentest-3532 + assertEqual( + perft( + Board(0xf6000942883500L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x4288b57fL, 0xbff6200900000000L, false, 0, + 0x8100000000000001L), + 4 + ), + 803592 + ); + + // gentest-3533 + assertEqual( + perft( + Board(0xf6000942883500L, 0x240000000042L, 0x2008000000000220L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x4288b77bL, 0xb9fe240900000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 835411 + ); + + // gentest-3534 + assertEqual( + perft( + Board(0xf600014a982500L, 0x240000000042L, 0x2008000000004200L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x4298e75bL, 0xb9fe240108000000L, false, 0, + 0x8100000000000001L), + 4 + ), + 1187320 + ); + + // gentest-3535 + assertEqual( + perft( + Board(0x7600814a982500L, 0x240000000042L, 0x2008000000014000L, 0x8000010000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x4299e55bL, 0xb87e258108000000L, true, 0, + 0x8000000000000001L), + 4 + ), + 1085160 + ); + + // gentest-3536 + assertEqual( + perft( + Board(0x3640814ab80500L, 0x240000000840L, 0x2008000000014000L, 0x8000010000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x42b9cd59L, 0xb83e658108000000L, false, 0, + 0x8000000000000001L), + 4 + ), + 1018012 + ); + + // gentest-3537 + assertEqual( + perft( + Board(0x3440030ab80500L, 0x48000000840L, 0x2008000000014000L, 0x8000010000008001L, 0x800000000000008L, + 0x1000000000000010L, 0x2b9cd59L, 0xb83c458308000000L, true, 0, 0x8000000000000001L), + 4 + ), + 772298 + ); + + // gentest-3538 + assertEqual( + perft( + Board(0x3440030eb80100L, 0x48000000840L, 0x2000100000014000L, 0x8000010000008002L, 0x800000000000008L, + 0x1000000000000010L, 0x6b9c95aL, 0xb834558308000000L, false, 0, 0x8000000000000000L), + 4 + ), + 1138903 + ); + + // gentest-3539 + assertEqual( + perft( + Board(0x3440030eb80100L, 0x48000000840L, 0x2000100000004200L, 0x4000010000008002L, 0x80000000008L, + 0x1000000000000010L, 0x6b8cb5aL, 0x70345d8308000000L, true, 0, 0x0L), + 4 + ), + 1610030 + ); + + // gentest-3540 + assertEqual( + perft( + Board(0x3440030eb80100L, 0x48000000840L, 0x2000100000014000L, 0x4100000000008002L, 0x80000000008L, + 0x1000000000000020L, 0x6b9c96aL, 0x71345c8308000000L, false, 0, 0x0L), + 4 + ), + 1331778 + ); + + // gentest-3541 + assertEqual( + perft( + Board(0x3440030eb80100L, 0x40020000840L, 0x2000100000014000L, 0x4100000000008002L, 0x80000000008L, + 0x8000000000010L, 0x6b9c95aL, 0x613c5c0328000000L, true, 0, 0x0L), + 4 + ), + 1178760 + ); + + // gentest-3542 + assertEqual( + perft( + Board(0x3440030eb80100L, 0x40020000840L, 0x2000100000014000L, 0x4100000000000082L, 0x80001000000L, + 0x800000000000010L, 0x7b949d2L, 0x69345c0328000000L, false, 0, 0x0L), + 4 + ), + 1220750 + ); + + // gentest-3543 + assertEqual( + perft( + Board(0x1440230db80100L, 0x40020000840L, 0x2000100000014000L, 0x4100000000000082L, 0x80000000000L, + 0x800000000000010L, 0x204b949d2L, 0x69145c2129000000L, true, 0, 0x0L), + 4 + ), + 803846 + ); + + // gentest-3544 + assertEqual( + perft( + Board(0x1440232da80100L, 0x40000000840L, 0x2000100000014000L, 0x4100000000000082L, 0x400000000L, + 0x800000000002000L, 0x224a969c2L, 0x6914542509000000L, false, 0, 0x0L), + 4 + ), + 571531 + ); + + // gentest-3545 + assertEqual( + perft( + Board(0x1440232da80100L, 0x40000000840L, 0x2000100000014000L, 0x1400000000000a0L, 0x400000000L, + 0x8000000002000L, 0x224a969e0L, 0x215c542509000000L, true, 0, 0x0L), + 4 + ), + 401365 + ); + + // gentest-3546 + assertEqual( + perft( + Board(0x1444212da80100L, 0x840L, 0x2000100000014000L, 0x1400000000000a0L, 0x400000000L, + 0x80000000010L, 0x40024a949f0L, 0x2154582509000000L, false, 0, 0x0L), + 4 + ), + 82325 + ); + + // gentest-3547 + assertEqual( + perft( + Board(0x1404612da80100L, 0x42L, 0x2000100000014000L, 0x10400000000000a0L, 0x400000000L, + 0x80000000010L, 0x40024a941f2L, 0x3054186509000000L, true, 0, 0x0L), + 4 + ), + 111469 + ); + + // gentest-3548 + assertEqual( + perft( + Board(0x1400612da80100L, 0x42L, 0x2000100000004200L, 0x10400000000000a0L, 0x400000000L, + 0x40000001000L, 0x24a853e2L, 0x3054146509000000L, false, 0, 0x0L), + 4 + ), + 366507 + ); + + // gentest-3549 + assertEqual( + perft( + Board(0x1400612da80100L, 0x42L, 0x2000100000004200L, 0x10004000000000a0L, 0x400000000L, + 0x2000000000800L, 0x24a84be2L, 0x3016506509000000L, true, 0, 0x0L), + 4 + ), + 600857 + ); + + // gentest-3550 + assertEqual( + perft( + Board(0x1400612da80100L, 0x40040L, 0x2008000000004200L, 0x10004000000000a0L, 0x400000000L, + 0x2000000000400L, 0x24ac47e0L, 0x301e406509000000L, false, 0, 0x0L), + 4 + ), + 1047997 + ); + + // gentest-3551 + assertEqual( + perft( + Board(0x1400612da80100L, 0x40040L, 0x2008000000004200L, 0x1000400000002080L, 0x400000000L, + 0x800000000000400L, 0x24ac67c0L, 0x381c406509000000L, true, 0, 0x0L), + 4 + ), + 563913 + ); + + // gentest-3552 + assertEqual( + perft( + Board(0x1400612da80100L, 0x200000040L, 0x2000100000004200L, 0x1000400000002080L, 0x400000000L, + 0x800000000000004L, 0x224a863c4L, 0x3814506509000000L, false, 0, 0x0L), + 4 + ), + 461581 + ); + + // gentest-3553 + assertEqual( + perft( + Board(0x1400610da80100L, 0x200000040L, 0x2000100000004200L, 0x1000800000002080L, 0x2000000L, + 0x800000000000004L, 0x4204a863c4L, 0x381490210b000000L, true, 0, 0x0L), + 4 + ), + 552853 + ); + + // gentest-3554 + assertEqual( + perft( + Board(0x1400610da80100L, 0x200000040L, 0x2000100000000220L, 0x9000000000002080L, 0x2000000L, + 0x800000000000400L, 0x4204a827e0L, 0xb81410210b000000L, false, 0, 0x0L), + 4 + ), + 492324 + ); + + // gentest-3555 + assertEqual( + perft( + Board(0x1400610d280100L, 0x200000040L, 0x6000000000000220L, 0x1000000080002080L, 0x2000000L, + 0x800000000000400L, 0x42042827e0L, 0x781400218b000000L, true, 0, 0x0L), + 4 + ), + 941483 + ); + + // gentest-3556 + assertEqual( + perft( + Board(0x1400610d290000L, 0x200000040L, 0x6000000000000220L, 0x1000000080004080L, 0x10L, + 0x800000000000400L, 0x42042946e0L, 0x7814002189000010L, false, 0, 0x0L), + 4 + ), + 706491 + ); + + // gentest-3557 + assertEqual( + perft( + Board(0x400710d290000L, 0x200000040L, 0x4010000000000220L, 0x1000000080400080L, 0x10L, + 0x800000000000400L, 0x42046906e0L, 0x5814003189000010L, true, 0, 0x0L), + 4 + ), + 764488 + ); + + // gentest-3558 + assertEqual( + perft( + Board(0x4007105290000L, 0x200000040L, 0x4000200000000021L, 0x1000000080400080L, 0x10L, + 0x800000000000400L, 0x42046904e1L, 0x5804203181000010L, false, 0, 0x0L), + 4 + ), + 943709 + ); + + // gentest-3559 + assertEqual( + perft( + Board(0x4007105290000L, 0x200000040L, 0x4000200000000021L, 0x10008080400000L, 0x10L, + 0x800000000000400L, 0x4284690461L, 0x481420b101000010L, true, 0, 0x0L), + 4 + ), + 1155917 + ); + + // gentest-3560 + assertEqual( + perft( + Board(0x400610d290000L, 0x200000040L, 0x4000200000000021L, 0x10008040000000L, 0x10L, + 0x800000000000400L, 0x4244290461L, 0x481420a109000010L, false, 0, 0x0L), + 4 + ), + 961461 + ); + + // gentest-3561 + assertEqual( + perft( + Board(0x400210d290000L, 0x80000000040L, 0x4000004000000001L, 0x10008040000000L, 0x20L, + 0x800000000000400L, 0x80044290441L, 0x481400e109000020L, true, 0, 0x0L), + 4 + ), + 733631 + ); + + // gentest-3562 + assertEqual( + perft( + Board(0x400210d290000L, 0x80000000040L, 0x4000004000040000L, 0x10008040000000L, 0x4000L, + 0x800000000000008L, 0x800442d0048L, 0x481400e109004000L, false, 0, 0x0L), + 4 + ), + 1060424 + ); + + // gentest-3563 + assertEqual( + perft( + Board(0x400210d290000L, 0x80000000040L, 0x4000004000040000L, 0x8040000080000000L, 0x4000L, + 0x800000000000008L, 0x800842d0048L, 0xc844006109004000L, true, 0, 0x0L), + 4 + ), + 1113783 + ); + + // gentest-3564 + assertEqual( + perft( + Board(0x400012d290000L, 0x80000000040L, 0x4000004002000000L, 0x8040000000000080L, 0x4000L, + 0x800000000000008L, 0x800062900c8L, 0xc844004129004000L, false, 0, 0x0L), + 4 + ), + 592923 + ); + + // gentest-3565 + assertEqual( + perft( + Board(0x400012d290000L, 0x80000000040L, 0x4000004002000000L, 0x40400000000080L, 0x4000L, + 0x800000000000010L, 0x800062900d0L, 0x4844404129004000L, true, 0, 0x0L), + 4 + ), + 472257 + ); + + // gentest-3566 + assertEqual( + perft( + Board(0x400012d290000L, 0x2000000800000L, 0x4000004002000000L, 0x40400000000080L, 0x4000L, + 0x1000000000000010L, 0x2000006a90090L, 0x5044404129004000L, false, 0, 0x0L), + 4 + ), + 398832 + ); + + // gentest-3567 + assertEqual( + perft( + Board(0x400002d090000L, 0x2000000800000L, 0x4000004100000000L, 0x40080000000080L, 0x200000L, + 0x1000000000000010L, 0x2000104890090L, 0x5044084029200000L, true, 0, 0x0L), + 4 + ), + 538646 + ); + + // gentest-3568 + assertEqual( + perft( + Board(0x2d090000L, 0x2000000800000L, 0x4004004000000000L, 0x40080000000080L, 0x0L, + 0x1000000000001000L, 0x6000004891080L, 0x5040084029000000L, false, 0, 0x0L), + 4 + ), + 609930 + ); + + // gentest-3569 + assertEqual( + perft( + Board(0x2d090000L, 0x2000000000040L, 0x4200800000000L, 0x40080000000080L, 0x0L, 0x1000000000001000L, + 0x60000040910c0L, 0x1040280829000000L, true, 0, 0x0L), + 4 + ), + 667823 + ); + + // gentest-3570 + assertEqual( + perft( + Board(0x2d090000L, 0x2000000000040L, 0x800000900000000L, 0x8040080000000000L, 0x0L, + 0x1000000000001000L, 0x8002000104091040L, 0x1840080829000000L, false, 0, 0x0L), + 4 + ), + 117784 + ); + + // gentest-3571 + assertEqual( + perft( + Board(0x2d090000L, 0x2000000200000L, 0x800000900000000L, 0x8000080000000040L, 0x0L, 0x10000000001000L, + 0x8002000104291000L, 0x810080829000040L, true, 0, 0x0L), + 4 + ), + 962307 + ); + + // gentest-3572 + assertEqual( + perft( + Board(0x29090000L, 0x2000080000000L, 0x800000104000000L, 0x8000080000000040L, 0x0L, 0x10000000002000L, + 0x8002000180092000L, 0x81008002d000040L, false, 0, 0x0L), + 4 + ), + 683300 + ); + + // gentest-3573 + assertEqual( + perft( + Board(0x29090000L, 0x2000080000000L, 0x800000004000000L, 0x8000100000000040L, 0x0L, 0x8000000002000L, + 0x8802000080092000L, 0x810002d000040L, true, 0, 0x0L), + 4 + ), + 507971 + ); + + // gentest-3574 + assertEqual( + perft( + Board(0x29090000L, 0x2000000004000L, 0x800000004000000L, 0x800010000040L, 0x0L, 0x8000000002000L, + 0x802800000096000L, 0x800003d000040L, false, 0, 0x0L), + 4 + ), + 487776 + ); + + // gentest-3575 + assertEqual( + perft( + Board(0x29090000L, 0x100004000L, 0x800000004000000L, 0x800000001002L, 0x0L, 0x8000000002000L, + 0x800800100096000L, 0x800002d001002L, true, 0, 0x0L), + 4 + ), + 52422 + ); + + // gentest-3576 + assertEqual( + perft( + Board(0x29090000L, 0x100004000L, 0x4010000000000000L, 0x800000001002L, 0x0L, 0x8000000200000L, + 0x10800100294000L, 0x4008000029001002L, false, 0, 0x0L), + 4 + ), + 940462 + ); + + // gentest-3577 + assertEqual( + perft( + Board(0x29090000L, 0x100004000L, 0x4000000000000000L, 0x100000001002L, 0x0L, 0x8000000200000L, + 0x100100294000L, 0x4008000029001002L, true, 0, 0x0L), + 4 + ), + 448358 + ); + + // gentest-3578 + assertEqual( + perft( + Board(0x29090000L, 0x100000010L, 0x4000000000000000L, 0x100000000802L, 0x0L, 0x8000010000000L, + 0x100110090010L, 0x4008000029000802L, false, 0, 0x0L), + 4 + ), + 301069 + ); + + // gentest-3579 + assertEqual( + perft( + Board(0x9090000L, 0x100000010L, 0x4000000000000000L, 0x1100000000800L, 0x0L, 0x8000020000000L, + 0x100120090010L, 0x4009000009000800L, true, 0, 0x0L), + 4 + ), + 323519 + ); + + // gentest-3580 + assertEqual( + perft( + Board(0x9090000L, 0x40000000010L, 0x4000000000000000L, 0x1080000000800L, 0x0L, 0x4000020000000L, + 0xc0020090010L, 0x4005000009000800L, false, 0, 0x0L), + 4 + ), + 328211 + ); + + // gentest-3581 + assertEqual( + perft( + Board(0x1090000L, 0x40000000010L, 0x20000L, 0x1000008000800L, 0x0L, 0x20020000000L, 0x40028090010L, + 0x1020001020800L, true, 0, 0x0L), + 4 + ), + 529960 + ); + + // gentest-3582 + assertEqual( + perft( + Board(0x1090000L, 0x400L, 0x20000L, 0x1000002000800L, 0x0L, 0x40020000000L, 0x22090400L, + 0x1040001020800L, false, 0, 0x0L), + 4 + ), + 305857 + ); + + // gentest-3583 + assertEqual( + perft( + Board(0x1090000L, 0x400L, 0x20000L, 0x1020000008000L, 0x0L, 0x420000000L, 0x20020090400L, + 0x1000401028000L, true, 0, 0x0L), + 4 + ), + 431799 + ); + + // gentest-3584 + assertEqual( + perft( + Board(0x1090000L, 0x2000000L, 0x20000L, 0x8040000008000L, 0x0L, 0x420000000L, 0x40022090000L, + 0x8000401028000L, false, 0, 0x0L), + 4 + ), + 32217 + ); + + // gentest-3585 + assertEqual( + perft( + Board(0x1090000L, 0x2000000L, 0x20000L, 0x1040000008000L, 0x0L, 0x200200000L, 0x40002290000L, + 0x1000201028000L, true, 0, 0x0L), + 4 + ), + 434677 + ); + + // gentest-3586 + assertEqual( + perft( + Board(0x9010000L, 0x2000000L, 0x400L, 0x1000000008004L, 0x0L, 0x200200000L, 0xa210004L, + 0x1000201008400L, false, 0, 0x0L), + 4 + ), + 351222 + ); + + // gentest-3587 + assertEqual( + perft( + Board(0x9010000L, 0x2000000L, 0x8L, 0x2000000008004L, 0x0L, 0x200400000L, 0xa410004L, + 0x2000201008008L, true, 0, 0x0L), + 4 + ), + 251401 + ); + + // gentest-3588 + assertEqual( + perft( + Board(0x9010000L, 0x1000000000L, 0x8L, 0x1000000008004L, 0x0L, 0x200400000L, 0x1008410004L, + 0x1000201008008L, false, 0, 0x0L), + 4 + ), + 375230 + ); + + // gentest-3589 + assertEqual( + perft( + Board(0x9010000L, 0x1000000000L, 0x20000L, 0x1000000000081L, 0x0L, 0x200400000L, 0x1008410001L, + 0x1000201020080L, true, 0, 0x0L), + 4 + ), + 448014 + ); + + // gentest-3590 + assertEqual( + perft( + Board(0x9010000L, 0x400000000L, 0x100L, 0x1000000000081L, 0x0L, 0x200400000L, 0x408410001L, + 0x1000201000180L, false, 0, 0x0L), + 4 + ), + 410826 + ); + + // gentest-3591 + assertEqual( + perft( + Board(0x9010000L, 0x400000000L, 0x100L, 0x1000000000003L, 0x0L, 0x120000000L, 0x428010001L, + 0x1000101000102L, true, 0, 0x0L), + 4 + ), + 253634 + ); + + // gentest-3592 + assertEqual( + perft( + Board(0x8010000L, 0x1000000L, 0x0L, 0x1020000000100L, 0x0L, 0x120000000L, 0x29010100L, + 0x1020100000000L, false, 0, 0x0L), + 4 + ), + 226016 + ); + + // gentest-3593 + assertEqual( + perft( + Board(0x8010000L, 0x1000000L, 0x0L, 0x2010000000100L, 0x0L, 0x100200000L, 0x9210100L, + 0x2010100000000L, true, 0, 0x0L), + 4 + ), + 228141 + ); + + // gentest-3594 + assertEqual( + perft( + Board(0x8010000L, 0x40000L, 0x0L, 0x200010000002000L, 0x0L, 0x100200000L, 0x8252000L, + 0x200010100000000L, false, 0, 0x0L), + 4 + ), + 281379 + ); + + // gentest-3595 + assertEqual( + perft( + Board(0x8010000L, 0x1000000L, 0x0L, 0x200000000002040L, 0x0L, 0x100200000L, 0x9212000L, + 0x200000100000040L, true, 0, 0x0L), + 4 + ), + 260149 + ); + + // gentest-3596 + assertEqual( + perft( + Board(0x8010000L, 0x1000000L, 0x0L, 0x2000000000840L, 0x0L, 0x120000000L, 0x29010800L, + 0x2000100000040L, false, 0, 0x0L), + 4 + ), + 291120 + ); + + // gentest-3597 + assertEqual( + perft( + Board(0x8010000L, 0x1000000L, 0x0L, 0x200000000080040L, 0x0L, 0x120000000L, 0x29090000L, + 0x200000100000040L, true, 0, 0x0L), + 4 + ), + 264438 + ); + + // gentest-3598 + assertEqual( + perft( + Board(0x8010000L, 0x200L, 0x0L, 0x200000000800040L, 0x0L, 0x20020000000L, 0x28810200L, + 0x200020000000040L, false, 0, 0x0L), + 4 + ), + 346341 + ); + + // gentest-3599 + assertEqual( + perft( + Board(0x8010000L, 0x200L, 0x0L, 0x4000000000800008L, 0x0L, 0x20040000000L, 0x48810200L, + 0x4000020000000008L, true, 0, 0x0L), + 4 + ), + 73236 + ); + + // gentest-3600 + assertEqual( + perft( + Board(0x8010000L, 0x8L, 0x0L, 0x4000000000800000L, 0x0L, 0x10000200000L, 0x8a10008L, + 0x4000010000000000L, false, 0, 0x0L), + 4 + ), + 124114 + ); + + def batch9(): Unit = + // gentest-3601 + assertEqual( + perft( + Board(0x8010000L, 0x8L, 0x0L, 0x800000000800000L, 0x0L, 0x1000000100000L, 0x8910008L, + 0x801000000000000L, true, 0, 0x0L), + 4 + ), + 109525 + ); + + // gentest-3602 + assertEqual( + perft( + Board(0x8010000L, 0x40000L, 0x0L, 0x800000000800000L, 0x0L, 0x2000010000000L, 0x18850000L, + 0x802000000000000L, false, 0, 0x0L), + 4 + ), + 173125 + ); + + // gentest-3603 + assertEqual( + perft( + Board(0x8010000L, 0x1000L, 0x0L, 0x400000000800000L, 0x0L, 0x100000010000000L, 0x18811000L, + 0x500000000000000L, true, 0, 0x0L), + 4 + ), + 142993 + ); + + // gentest-3604 + assertEqual( + perft( + Board(0x8010000L, 0x1000L, 0x0L, 0x4800000L, 0x0L, 0x100200000000000L, 0x200008811000L, + 0x100000004000000L, false, 0, 0x0L), + 4 + ), + 117391 + ); + + // gentest-3605 + assertEqual( + perft( + Board(0x8010000L, 0x1000L, 0x0L, 0x4000000000800000L, 0x0L, 0x120000000000000L, 0x20000008811000L, + 0x4100000000000000L, true, 0, 0x0L), + 4 + ), + 111974 + ); + + // gentest-3606 + assertEqual( + perft( + Board(0x8010000L, 0x20000000L, 0x0L, 0x1000000000200000L, 0x0L, 0x120000000000000L, 0x20000028210000L, + 0x1100000000000000L, false, 0, 0x0L), + 4 + ), + 110317 + ); + + // gentest-3607 + assertEqual( + perft( + Board(0x8010000L, 0x20000000L, 0x0L, 0x2000000000200000L, 0x0L, 0x210000000000000L, 0x10000028210000L, + 0x2200000000000000L, true, 0, 0x0L), + 4 + ), + 84689 + ); + + // gentest-3608 + assertEqual( + perft( + Board(0x8010000L, 0x20000000L, 0x0L, 0x20000000002000L, 0x0L, 0x200100000000000L, 0x100028012000L, + 0x220000000000000L, false, 0, 0x0L), + 4 + ), + 104603 + ); + + // gentest-3609 + assertEqual( + perft( + Board(0x8010000L, 0x800000L, 0x0L, 0x80000000002000L, 0x0L, 0x400100000000000L, 0x100008812000L, + 0x480000000000000L, true, 0, 0x0L), + 4 + ), + 110496 + ); + + // gentest-3610 + assertEqual( + perft( + Board(0x8010000L, 0x800000L, 0x0L, 0x80000020000000L, 0x0L, 0x800100000000000L, 0x100028810000L, + 0x880000000000000L, false, 0, 0x0L), + 4 + ), + 66062 + ); + + // gentest-3611 + assertEqual( + perft( + Board(0x8010000L, 0x800000L, 0x0L, 0x80000020000000L, 0x0L, 0x800200000000000L, 0x200028810000L, + 0x880000000000000L, true, 0, 0x0L), + 4 + ), + 74205 + ); + + // gentest-3612 + assertEqual( + perft( + Board(0x8010000L, 0x40L, 0x0L, 0x800020000000L, 0x0L, 0x820000000000000L, 0x20000028010040L, + 0x800800000000000L, false, 0, 0x0L), + 4 + ), + 75113 + ); + + // gentest-3613 + assertEqual( + perft( + Board(0x8010000L, 0x40L, 0x0L, 0x20040000000L, 0x0L, 0x820000000000000L, 0x20000048010040L, + 0x800020000000000L, true, 0, 0x0L), + 4 + ), + 78334 + ); + + // gentest-3614 + assertEqual( + perft( + Board(0x8010000L, 0x40L, 0x0L, 0x20000004000L, 0x0L, 0x1400000000000000L, 0x1000000008014040L, + 0x400020000000000L, false, 0, 0x0L), + 4 + ), + 96479 + ); + + // gentest-3615 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3616 + assertEqual( + perft( + Board(0xdf20004000bf00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4004bffdL, 0xffdf200000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 231308 + ); + + // gentest-3617 + assertEqual( + perft( + Board(0xdf200060009f00L, 0x220000000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x60049ffdL, 0xbfff200000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 292864 + ); + + // gentest-3618 + assertEqual( + perft( + Board(0xdf200060801f00L, 0x200800001000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x61801ffdL, 0xbfdfa00000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 219176 + ); + + // gentest-3619 + assertEqual( + perft( + Board(0xd7002860801f00L, 0x200800001000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x61803fedL, 0xbfd7802800000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 422910 + ); + + // gentest-3620 + assertEqual( + perft( + Board(0xd7002860891600L, 0x4200000001000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x618936edL, 0xffd7002800000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 502451 + ); + + // gentest-3621 + assertEqual( + perft( + Board(0xd300246c891200L, 0x4200000001000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000002000L, 0x658932edL, 0xffd3002408000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 481064 + ); + + // gentest-3622 + assertEqual( + perft( + Board(0xd300242c8b1000L, 0x4200000001000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x80000000008L, 0x1000000000002000L, 0x20258b30edL, 0xf7d3080408000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 664056 + ); + + // gentest-3623 + assertEqual( + perft( + Board(0xd300242e891000L, 0x4000010001000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000008L, 0x1000000000002000L, 0x20278930edL, 0xf5d3810408000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 590210 + ); + + // gentest-3624 + assertEqual( + perft( + Board(0xd102242e891000L, 0x4000010001000040L, 0x2400000000000024L, 0x8100000000008001L, + 0x800000000008L, 0x1000000000000010L, 0x202789907dL, 0xf5d1830408000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 559570 + ); + + // gentest-3625 + assertEqual( + perft( + Board(0xd102242c891000L, 0x4000010001000040L, 0x2400000000000024L, 0x8100000000008001L, + 0x80000000008L, 0x1000000000000010L, 0x242589907dL, 0xf5d10b0008000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 808429 + ); + + // gentest-3626 + assertEqual( + perft( + Board(0xd10a002c891000L, 0x4000010000000240L, 0x2000002000000024L, 0x8100000000008001L, 0x8L, + 0x1000000000000010L, 0x8002489927dL, 0xf1d1032008000000L, false, 0, 0x8100000000000000L), + 4 + ), + 483893 + ); + + // gentest-3627 + assertEqual( + perft( + Board(0xd10a00ac091000L, 0x4004000000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x8L, + 0x1000000000000010L, 0x800a409927dL, 0xf1d5420008000000L, true, 0, 0x8100000000000000L), + 4 + ), + 502281 + ); + + // gentest-3628 + assertEqual( + perft( + Board(0xd10a04a8091000L, 0x4004000000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x1000000L, + 0x20000000000010L, 0x804a1099275L, 0xe1f5420008000000L, false, 0, 0x0L), + 4 + ), + 946787 + ); + + // gentest-3629 + assertEqual( + perft( + Board(0xd10804a8091000L, 0x4200000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x400L, + 0x20000000000010L, 0x800a0099675L, 0xa1f5600408000000L, true, 0, 0x0L), + 4 + ), + 1029013 + ); + + // gentest-3630 + assertEqual( + perft( + Board(0xd10804a0091000L, 0x210000000240L, 0x2000400000000024L, 0x8100000000008001L, 0x8000000L, + 0x20000000000010L, 0x800a8099275L, 0xa1f1610400000000L, false, 0, 0x0L), + 4 + ), + 999607 + ); + + // gentest-3631 + assertEqual( + perft( + Board(0xd10804a0011000L, 0x10000000240L, 0x2000000000080024L, 0x8100000000008001L, 0x200000000000L, + 0x4000000000000010L, 0x2800a0019275L, 0xe1d1010400080000L, true, 0, 0x0L), + 4 + ), + 714319 + ); + + // gentest-3632 + assertEqual( + perft( + Board(0xd10804a0110000L, 0x4000000000048L, 0x2000000000080024L, 0x8100000000008001L, 0x200000000000L, + 0x4000000000000010L, 0x2800a011807dL, 0xe1d5000400080000L, false, 0, 0x0L), + 4 + ), + 1590549 + ); + + // gentest-3633 + assertEqual( + perft( + Board(0xd10800a4110000L, 0x4000000000048L, 0x2000000000000026L, 0x8100000000008001L, 0x8000000L, + 0x4000000000000010L, 0x800a811807dL, 0xe1d5000004000002L, true, 0, 0x0L), + 4 + ), + 1187993 + ); + + // gentest-3634 + assertEqual( + perft( + Board(0xd10800a4110000L, 0x4000000040040L, 0x2000000000000024L, 0x9000000000008002L, 0x8000000L, + 0x4000000000000010L, 0x800a8158076L, 0xf0d5000004000000L, false, 0, 0x0L), + 4 + ), + 1092785 + ); + + // gentest-3635 + assertEqual( + perft( + Board(0x904801a4110000L, 0x4000000040040L, 0x2000000000000024L, 0x9000000000008002L, 0x8000000L, + 0x4000000000001000L, 0x800a8159066L, 0xf094400104000000L, true, 0, 0x0L), + 4 + ), + 828709 + ); + + // gentest-3636 + assertEqual( + perft( + Board(0x804811a4110000L, 0x4000000040040L, 0x2000000000000024L, 0x9000000000008001L, 0x8000000L, + 0x4000000000200000L, 0x800a8358065L, 0xf084401104000000L, false, 0, 0x0L), + 4 + ), + 1245357 + ); + + // gentest-3637 + assertEqual( + perft( + Board(0x4891a4110000L, 0x4000000000048L, 0x2000000000000024L, 0x9000000000008001L, 0x8000000L, + 0x4000000000200000L, 0x800a831806dL, 0xf004409104000000L, true, 0, 0x0L), + 4 + ), + 1122380 + ); + + // gentest-3638 + assertEqual( + perft( + Board(0x84091a4110000L, 0x800000048L, 0x2000000000000024L, 0x9000000000008001L, 0x8000000L, + 0x4000000000002000L, 0x80000a811a06dL, 0xf000409904000000L, false, 0, 0x0L), + 4 + ), + 1771396 + ); + + // gentest-3639 + assertEqual( + perft( + Board(0x84091a4110000L, 0x800000048L, 0x2000000000000024L, 0x9000000000008001L, 0x800L, + 0x4000000000002000L, 0x80000a011a86dL, 0xf000409904000000L, true, 0, 0x0L), + 4 + ), + 1496424 + ); + + // gentest-3640 + assertEqual( + perft( + Board(0x84091a4110000L, 0x48L, 0x2000000000000820L, 0x8000100000008001L, 0x800000000L, + 0x4000000000002000L, 0x80008a011a869L, 0xe000509104000000L, false, 0, 0x0L), + 4 + ), + 768267 + ); + + // gentest-3641 + assertEqual( + perft( + Board(0x84091a0150000L, 0x48L, 0x10000000000820L, 0x8000100000008001L, 0x800000000L, + 0x4000000000000010L, 0x80008a0118879L, 0xc010509100040000L, true, 0, 0x0L), + 4 + ), + 1043995 + ); + + // gentest-3642 + assertEqual( + perft( + Board(0x84091a0150000L, 0x48L, 0x10000000000820L, 0x900000008004L, 0x80000L, 0x4000000000000010L, + 0x80000a019887cL, 0x4010d09100040000L, false, 0, 0x0L), + 4 + ), + 1046369 + ); + + // gentest-3643 + assertEqual( + perft( + Board(0x84091a1100800L, 0x48L, 0x10000000000020L, 0x840000008004L, 0x80000L, 0x4000000000000010L, + 0x80000a118807cL, 0x4010c49100000800L, true, 0, 0x0L), + 4 + ), + 184339 + ); + + // gentest-3644 + assertEqual( + perft( + Board(0x84091b1000800L, 0x48L, 0x10000000000020L, 0x8000040000008004L, 0x80000L, 0x4000000000001000L, + 0x80000b108906cL, 0xc010449100000800L, false, 0, 0x0L), + 4 + ), + 1597028 + ); + + // gentest-3645 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x800000000000020L, 0x8000040000008004L, 0x80000L, 0x20000000001000L, + 0xb108906cL, 0x8820449100000800L, true, 0, 0x0L), + 4 + ), + 1555494 + ); + + // gentest-3646 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x800000000000020L, 0x8000000000008404L, 0x100000L, 0x20000000002000L, + 0xb110a06cL, 0x8820409100000c00L, false, 0, 0x0L), + 4 + ), + 1139932 + ); + + // gentest-3647 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x800000000000020L, 0x2000000000008404L, 0x20000L, 0x10000000002000L, + 0xb102a06cL, 0x2810409100000c00L, true, 0, 0x0L), + 4 + ), + 1012272 + ); + + // gentest-3648 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x800010000000000L, 0x2400000000008004L, 0x200000000L, + 0x10000000002000L, 0x102b100a04cL, 0x2c10409100000800L, false, 0, 0x0L), + 4 + ), + 1027677 + ); + + // gentest-3649 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x4010000000000L, 0x2000000000008404L, 0x20000L, 0x10000000002000L, + 0x100b102a04cL, 0x2014409100000c00L, true, 0, 0x0L), + 4 + ), + 1503730 + ); + + // gentest-3650 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x4010000000000L, 0x2000000000008404L, 0x400000000L, 0x20000000002000L, + 0x104b100a04cL, 0x2024409100000c00L, false, 0, 0x0L), + 4 + ), + 1053994 + ); + + // gentest-3651 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x1010000000000L, 0x2000000000008402L, 0x400000000L, 0x20000000002000L, + 0x104b100a04aL, 0x2021409100000c00L, true, 0, 0x0L), + 4 + ), + 704428 + ); + + // gentest-3652 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x20040000000L, 0x2000000000008402L, 0x400000000L, 0x20000000002000L, + 0x4f100a04aL, 0x2020429100000c00L, false, 0, 0x0L), + 4 + ), + 740594 + ); + + // gentest-3653 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x800000040000000L, 0x2000000000008006L, 0x10000L, 0x20000000002000L, + 0xf101a04aL, 0x2820409100000804L, true, 0, 0x0L), + 4 + ), + 1170976 + ); + + // gentest-3654 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x800000000800000L, 0x2000000000008006L, 0x200L, 0x40000000002000L, + 0xb180a24aL, 0x2840409100000804L, false, 0, 0x0L), + 4 + ), + 978045 + ); + + // gentest-3655 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x4000000800000L, 0x2000000000048002L, 0x2000000000000L, + 0x40000000002000L, 0x20000b180a04aL, 0x2044409100040800L, true, 0, 0x0L), + 4 + ), + 1272067 + ); + + // gentest-3656 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x4100000000000L, 0x200000048002L, 0x20000L, 0x40000000002000L, + 0x1000b102a04aL, 0x44609100040800L, false, 0, 0x0L), + 4 + ), + 871492 + ); + + // gentest-3657 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x820000000000000L, 0x200004008002L, 0x20000L, 0x40000000002000L, + 0x200000b102a04aL, 0x840609104000800L, true, 0, 0x0L), + 4 + ), + 1296496 + ); + + // gentest-3658 + assertEqual( + perft( + Board(0x4091b1000800L, 0x48L, 0x800000000000000L, 0x20000004008002L, 0x100L, 0x40000000001000L, + 0xb100914aL, 0x860409104000800L, false, 0, 0x0L), + 4 + ), + 1238630 + ); + + // gentest-3659 + assertEqual( + perft( + Board(0x4091b1000000L, 0x48L, 0x800000000000000L, 0x2000008008002L, 0x800L, 0x40000000001000L, + 0xb100984aL, 0x842409108000000L, true, 0, 0x0L), + 4 + ), + 1379001 + ); + + // gentest-3660 + assertEqual( + perft( + Board(0x4091b1000000L, 0x100040L, 0x800000000000000L, 0x2080000028000L, 0x800L, 0x40000000001000L, + 0xb1129840L, 0x842489100000000L, false, 0, 0x0L), + 4 + ), + 1886417 + ); + + // gentest-3661 + assertEqual( + perft( + Board(0x4091b1000000L, 0x100040L, 0x800000000000000L, 0x80002024000L, 0x800L, 0x8000000000001000L, + 0xb1125840L, 0x8800489102000000L, true, 0, 0x0L), + 4 + ), + 1289983 + ); + + // gentest-3662 + assertEqual( + perft( + Board(0x4091b1000000L, 0x48L, 0x4000000000L, 0x80002004000L, 0x800L, 0x8000000000001000L, 0xb3005848L, + 0x800048d100000000L, false, 0, 0x0L), + 4 + ), + 653017 + ); + + // gentest-3663 + assertEqual( + perft( + Board(0x4091b1000000L, 0x40040L, 0x800000000000L, 0x200002004000L, 0x800L, 0x8000000000001000L, + 0xb3045840L, 0x8000e09100000000L, true, 0, 0x0L), + 4 + ), + 584194 + ); + + // gentest-3664 + assertEqual( + perft( + Board(0x91b1000000L, 0x40040L, 0x800000000000L, 0x500002000000L, 0x80000000000L, 0x8000000000001000L, + 0x4800b3041040L, 0x8000909100000000L, false, 0, 0x0L), + 4 + ), + 347034 + ); + + // gentest-3665 + assertEqual( + perft( + Board(0x91b1000000L, 0x40040L, 0x800000000000L, 0x4010000002000000L, 0x80000000000L, + 0x80000000001000L, 0x40000800b3041040L, 0x90809100000000L, true, 0, 0x0L), + 4 + ), + 584804 + ); + + // gentest-3666 + assertEqual( + perft( + Board(0x91b1000000L, 0x240000L, 0x800000000000L, 0x4040000002000000L, 0x80000000000L, + 0x80000000002000L, 0x40000800b3242000L, 0xc0809100000000L, false, 0, 0x0L), + 4 + ), + 780875 + ); + + // gentest-3667 + assertEqual( + perft( + Board(0x90b3000000L, 0x800200000L, 0x800000000000L, 0x4002000000000000L, 0x80000000000L, + 0x80000000002000L, 0x40000808b1202000L, 0x82809002000000L, true, 0, 0x0L), + 4 + ), + 496846 + ); + + // gentest-3668 + assertEqual( + perft( + Board(0x9093000000L, 0x800200000L, 0x800000000000L, 0xa00000000000000L, 0x80000000000L, + 0x80000000002000L, 0x800081891202000L, 0x280808002000000L, false, 0, 0x0L), + 4 + ), + 317799 + ); + + // gentest-3669 + assertEqual( + perft( + Board(0x9093000000L, 0x800200000L, 0x20000000L, 0x200000000000000L, 0x80000000000L, 0x40000000002000L, + 0x200081891202000L, 0x40008022000000L, true, 0, 0x0L), + 4 + ), + 147602 + ); + + // gentest-3670 + assertEqual( + perft( + Board(0x9093000000L, 0x800000010L, 0x800L, 0x200000000000000L, 0x80000000000L, 0x40000000004000L, + 0x200081891004010L, 0x40008002000800L, false, 0, 0x0L), + 4 + ), + 174556 + ); + + // gentest-3671 + assertEqual( + perft( + Board(0x9091000000L, 0x2000010L, 0x800000000000L, 0x200000000000000L, 0x80000000000L, + 0x80000000004000L, 0x200081093004010L, 0x80808000000000L, true, 0, 0x0L), + 4 + ), + 124859 + ); + + // gentest-3672 + assertEqual( + perft( + Board(0x9091000000L, 0x2080000L, 0x40000000000000L, 0x2000000000000000L, 0x80000000000L, + 0x80000000004000L, 0x2000081093084000L, 0xc0008000000000L, false, 0, 0x0L), + 4 + ), + 80448 + ); + + // gentest-3673 + assertEqual( + perft( + Board(0x9091000000L, 0x2080000L, 0x2000000000000000L, 0x0L, 0x800000000L, 0x40000000004000L, + 0x1893084000L, 0x2040008000000000L, true, 0, 0x0L), + 4 + ), + 96430 + ); + + // gentest-3674 + assertEqual( + perft( + Board(0x108091000000L, 0x80100L, 0x2000000000000000L, 0x0L, 0x800000000L, 0x80000000004000L, + 0x100891084100L, 0x2080008000000000L, false, 0, 0x0L), + 4 + ), + 167361 + ); + + // gentest-3675 + assertEqual( + perft( + Board(0x108091000000L, 0xc0000L, 0x1000000000L, 0x0L, 0x800000000L, 0x80000000004000L, + 0x1008910c4000L, 0x80009000000000L, true, 0, 0x0L), + 4 + ), + 227077 + ); + + // gentest-3676 + assertEqual( + perft( + Board(0x108091000000L, 0xc0000L, 0x80000000000L, 0x0L, 0x0L, 0x80000000000040L, 0x1000910c0040L, + 0x80088000000000L, false, 0, 0x0L), + 4 + ), + 76844 + ); + + // gentest-3677 + assertEqual( + perft( + Board(0x108091000000L, 0x42000L, 0x10000000000000L, 0x0L, 0x0L, 0x80000000000040L, 0x100091042040L, + 0x90008000000000L, true, 0, 0x0L), + 4 + ), + 51783 + ); + + // gentest-3678 + assertEqual( + perft( + Board(0x108011000000L, 0x800100L, 0x80000000L, 0x0L, 0x0L, 0x80000000000040L, 0x100011800140L, + 0x80008080000000L, false, 0, 0x0L), + 4 + ), + 26036 + ); + + // gentest-3679 + assertEqual( + perft( + Board(0x108011000000L, 0x800100L, 0x400000L, 0x0L, 0x0L, 0x8000000000000020L, 0x100011800120L, + 0x8000008000400000L, true, 0, 0x0L), + 4 + ), + 28685 + ); + + // gentest-3680 + assertEqual( + perft( + Board(0x100091000000L, 0x4000000100L, 0x400000L, 0x0L, 0x0L, 0x8000000000004000L, 0x104011004100L, + 0x8000000080400000L, false, 0, 0x0L), + 4 + ), + 27890 + ); + + // gentest-3681 + assertEqual( + perft( + Board(0x100011800000L, 0x4000000100L, 0x0L, 0x0L, 0x0L, 0x8000000000002000L, 0x104011002100L, + 0x8000000000800000L, true, 0, 0x0L), + 4 + ), + 5035 + ); + + // gentest-3682 + assertEqual( + perft( + Board(0x100011800000L, 0x200100L, 0x0L, 0x0L, 0x0L, 0x40000000000020L, 0x100011200120L, + 0x40000000800000L, false, 0, 0x0L), + 4 + ), + 13893 + ); + + // gentest-3683 + assertEqual( + perft( + Board(0x100011800000L, 0x140L, 0x0L, 0x0L, 0x0L, 0x80000000000020L, 0x100011000160L, + 0x80000000800000L, true, 0, 0x0L), + 4 + ), + 6871 + ); + + // gentest-3684 + assertEqual( + perft( + Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x800000004000L, 0x100011804100L, 0x800000000000L, + false, 0, 0x0L), + 4 + ), + 6000 + ); + + // gentest-3685 + assertEqual( + perft( + Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x4000000000000040L, 0x100011800140L, + 0x4000000000000000L, true, 0, 0x0L), + 4 + ), + 3944 + ); + + // gentest-3686 + assertEqual( + perft( + Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x2000000000000040L, 0x100011800140L, + 0x2000000000000000L, false, 0, 0x0L), + 4 + ), + 4090 + ); + + // gentest-3687 + assertEqual( + perft( + Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x80000000000020L, 0x100011800120L, + 0x80000000000000L, true, 0, 0x0L), + 4 + ), + 5387 + ); + + // gentest-3688 + assertEqual( + perft( + Board(0x100011000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x40000000000020L, 0x100011800120L, + 0x40000000000000L, false, 0, 0x0L), + 4 + ), + 7220 + ); + + // gentest-3689 + assertEqual( + perft( + Board(0x101001000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x80000000000020L, 0x101001800120L, + 0x80000000000000L, true, 0, 0x0L), + 4 + ), + 4663 + ); + + // gentest-3690 + assertEqual( + perft( + Board(0x101100000000L, 0x800100L, 0x0L, 0x0L, 0x0L, 0x4000000000004000L, 0x101100804100L, + 0x4000000000000000L, false, 0, 0x0L), + 4 + ), + 4675 + ); + + // gentest-3691 + assertEqual( + perft( + Board(0x101100000000L, 0x140L, 0x0L, 0x0L, 0x0L, 0x4000000000004000L, 0x101100004140L, + 0x4000000000000000L, true, 0, 0x0L), + 4 + ), + 4229 + ); + + // gentest-3692 + assertEqual( + perft( + Board(0x101100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x40000000004000L, 0x101100084040L, + 0x40000000000000L, false, 0, 0x0L), + 4 + ), + 9174 + ); + + // gentest-3693 + assertEqual( + perft( + Board(0x101100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x400000008000L, 0x101100088040L, 0x400000000000L, + true, 0, 0x0L), + 4 + ), + 7710 + ); + + // gentest-3694 + assertEqual( + perft( + Board(0x10001100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x800000400000L, 0x10001100480040L, + 0x800000000000L, false, 0, 0x0L), + 4 + ), + 12802 + ); + + // gentest-3695 + assertEqual( + perft( + Board(0x10001100000000L, 0x80040L, 0x0L, 0x0L, 0x0L, 0x400000004000L, 0x10001100084040L, + 0x400000000000L, true, 0, 0x0L), + 4 + ), + 16754 + ); + + // gentest-3696 + assertEqual( + perft( + Board(0x1100000000L, 0x280000L, 0x1000000000000000L, 0x0L, 0x0L, 0x40000000004000L, + 0x1000001100284000L, 0x40000000000000L, false, 0, 0x0L), + 4 + ), + 14873 + ); + + // gentest-3697 + assertEqual( + perft( + Board(0x1100000000L, 0x200004L, 0x1000000000000000L, 0x0L, 0x0L, 0x80000000004000L, + 0x1000001100204004L, 0x80000000000000L, true, 0, 0x0L), + 4 + ), + 11627 + ); + + // gentest-3698 + assertEqual( + perft( + Board(0x1100000000L, 0x200004L, 0x40000000000L, 0x0L, 0x0L, 0x4000000000000020L, 0x41100200024L, + 0x4000000000000000L, false, 0, 0x0L), + 4 + ), + 16503 + ); + + // gentest-3699 + assertEqual( + perft( + Board(0x1100000000L, 0x200004L, 0x40000000000L, 0x0L, 0x0L, 0x20000000001000L, 0x41100201004L, + 0x20000000000000L, true, 0, 0x0L), + 4 + ), + 20975 + ); + + // gentest-3700 + assertEqual( + perft( + Board(0x100100000000L, 0x200004L, 0x40000000000L, 0x0L, 0x0L, 0x40000000000020L, 0x140100200024L, + 0x40000000000000L, false, 0, 0x0L), + 4 + ), + 21791 + ); + + // gentest-3701 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3702 + assertEqual( + perft( + Board(0xdf00201020cf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1020cfffL, 0xffdf002000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 349811 + ); + + // gentest-3703 + assertEqual( + perft( + Board(0xdf00300020cf00L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x100020cfffL, 0xbddf842000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 323037 + ); + + // gentest-3704 + assertEqual( + perft( + Board(0xdd023040208f00L, 0x840000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000001000L, 0x1000000000000010L, 0x1040209ff7L, 0xbddd862000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 520659 + ); + + // gentest-3705 + assertEqual( + perft( + Board(0xd5023840208f00L, 0x20040000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000001000L, 0x1000000000000010L, 0x1040249ff5L, 0xbdf5062800000000L, true, 43, + 0x8100000000000081L), + 4 + ), + 987048 + ); + + // gentest-3706 + assertEqual( + perft( + Board(0x95027840208f00L, 0x20040001000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800010000000000L, 0x1000000000000010L, 0x11041208ff5L, 0xbdb5066800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 854886 + ); + + // gentest-3707 + assertEqual( + perft( + Board(0x95027840208f00L, 0x20040001000040L, 0x400800200000004L, 0x8200000000000081L, + 0x800010000000000L, 0x1000000000000010L, 0x11241208fd5L, 0x9eb5866800000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 530115 + ); + + // gentest-3708 + assertEqual( + perft( + Board(0x95027842208d00L, 0x20040001000040L, 0x400800200000004L, 0x8100000000000081L, + 0x800010000000000L, 0x1000000000000008L, 0x11243208dcdL, 0x9db5866800000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 440500 + ); + + // gentest-3709 + assertEqual( + perft( + Board(0x95027842208d00L, 0x20000008000240L, 0x400800200000004L, 0x8100000000000081L, 0x8010000000000L, + 0x1000000000000008L, 0x11242208fcdL, 0x95bd826808000000L, true, 0, 0x8000000000000000L), + 4 + ), + 738958 + ); + + // gentest-3710 + assertEqual( + perft( + Board(0x95027842288500L, 0x20000008000240L, 0x400800200000004L, 0x8100000000000081L, 0x50000000000L, + 0x1000000000000010L, 0x112422887d5L, 0x95b5866808000000L, false, 0, 0x8000000000000000L), + 4 + ), + 743388 + ); + + // gentest-3711 + assertEqual( + perft( + Board(0x95025862288500L, 0x80008000240L, 0x400800200000800L, 0x8100000000000081L, 0x50000000000L, + 0x1000000000000010L, 0x11242288fd1L, 0x95958e4828000000L, true, 0, 0x8000000000000000L), + 4 + ), + 1016399 + ); + + // gentest-3712 + assertEqual( + perft( + Board(0x95025866288100L, 0x80008000240L, 0x400800200000800L, 0x8100000000000082L, 0x50000000000L, + 0x800000000000010L, 0x11246288bd2L, 0x8d958e4828000000L, false, 0, 0x0L), + 4 + ), + 1130632 + ); + + // gentest-3713 + assertEqual( + perft( + Board(0x95025866288100L, 0x80008000240L, 0x400800200000800L, 0x1200000000000084L, 0x50000000000L, + 0x800000000000010L, 0x11246288bd4L, 0x1e958e4828000000L, true, 0, 0x0L), + 4 + ), + 1157201 + ); + + // gentest-3714 + assertEqual( + perft( + Board(0x95025866288100L, 0x80200001200L, 0x400800000100000L, 0x1200000000000084L, 0x50000000000L, + 0x800000000000010L, 0x11046389394L, 0x1e958e4a20000000L, false, 0, 0x0L), + 4 + ), + 1638918 + ); + + // gentest-3715 + assertEqual( + perft( + Board(0x95025862298000L, 0x80200001200L, 0x400800000100000L, 0x2200000000000084L, 0x10004000000L, + 0x800000000000010L, 0x11042399294L, 0x2e958a4a24000000L, true, 0, 0x0L), + 4 + ), + 2302067 + ); + + // gentest-3716 + assertEqual( + perft( + Board(0x95025862298000L, 0x2200001200L, 0x400800400000000L, 0x2200000000000082L, 0x10004000000L, + 0x800000000000010L, 0x11442299292L, 0x2e95826a24000000L, false, 0, 0x0L), + 4 + ), + 1625561 + ); + + // gentest-3717 + assertEqual( + perft( + Board(0x95025862298000L, 0x2200001200L, 0x400800400000000L, 0x2200000000000082L, 0x100100000L, + 0x800000000000010L, 0x1542299292L, 0x2e95826a20100000L, true, 0, 0x0L), + 4 + ), + 923250 + ); + + // gentest-3718 + assertEqual( + perft( + Board(0x95124862298000L, 0x2200001200L, 0x400800400000000L, 0x2200000000000088L, 0x100100000L, + 0x1000000000000010L, 0x100542299298L, 0x3695826a20100000L, false, 0, 0x0L), + 4 + ), + 769020 + ); + + // gentest-3719 + assertEqual( + perft( + Board(0x95124862298000L, 0x2200001200L, 0x400800008000000L, 0x4200000000000088L, 0x100000800L, + 0x1000000000000010L, 0x10014a299298L, 0x5695826a20000800L, true, 0, 0x0L), + 4 + ), + 138537 + ); + + // gentest-3720 + assertEqual( + perft( + Board(0x95124862298000L, 0x2001041000L, 0x400800008000000L, 0x4200000000000088L, 0x100000800L, + 0x1000000000000020L, 0x10014b2990a8L, 0x5695826820040800L, false, 0, 0x0L), + 4 + ), + 1678867 + ); + + // gentest-3721 + assertEqual( + perft( + Board(0x95124862298000L, 0x2001440000L, 0x400800008000000L, 0x4200000000000088L, 0x100001000L, + 0x1000000000000020L, 0x10014b6980a8L, 0x5695826820041000L, true, 0, 0x0L), + 4 + ), + 95781 + ); + + // gentest-3722 + assertEqual( + perft( + Board(0x95124862298000L, 0x1441000L, 0x400800008000000L, 0x4200000000000088L, 0x100000000L, + 0x1000000000000040L, 0x10014b2990c8L, 0x5695824820440000L, false, 0, 0x0L), + 4 + ), + 1040883 + ); + + // gentest-3723 + assertEqual( + perft( + Board(0x95124842298000L, 0x221400000L, 0x440000008000000L, 0x4200000000000088L, 0x100000000L, + 0x1000000000000040L, 0x10016b2980c8L, 0x56d5024a00400000L, true, 0, 0x0L), + 4 + ), + 1213056 + ); + + // gentest-3724 + assertEqual( + perft( + Board(0x95104842298000L, 0x20020440000L, 0x440000008000000L, 0x4200000000000088L, 0x1000000L, + 0x1000000000000040L, 0x12006b2980c8L, 0x56d5004800440000L, false, 0, 0x0L), + 4 + ), + 272720 + ); + + // gentest-3725 + assertEqual( + perft( + Board(0x91104c42298000L, 0x20220400000L, 0x440000000000000L, 0x4200000000000088L, 0x1000000L, + 0x1000000000000040L, 0x401200632980c8L, 0x5691004e00400000L, true, 0, 0x0L), + 4 + ), + 986148 + ); + + // gentest-3726 + assertEqual( + perft( + Board(0x91104442298000L, 0x20a00001000L, 0x440000000000000L, 0x4200000000000088L, 0x1000000L, + 0x1000000000004000L, 0x4012084329c088L, 0x5691004600001000L, false, 0, 0x0L), + 4 + ), + 949864 + ); + + // gentest-3727 + assertEqual( + perft( + Board(0x91104442298000L, 0xa00001000L, 0x400000000000000L, 0x40020000000088L, 0x20000L, + 0x1000000000004000L, 0x1008422bc088L, 0x14d1024600001000L, true, 0, 0x0L), + 4 + ), + 993720 + ); + + // gentest-3728 + assertEqual( + perft( + Board(0x91104442298000L, 0x220040000L, 0x400000000000000L, 0x40020000000088L, 0x20000L, + 0x1000000000002000L, 0x1000422fa088L, 0x14d1024620000000L, false, 0, 0x0L), + 4 + ), + 1213503 + ); + + // gentest-3729 + assertEqual( + perft( + Board(0x90104542298000L, 0x80020040000L, 0x400000000000000L, 0x400200000000a0L, 0x20000L, + 0x1000000000002000L, 0x1000422fa0a0L, 0x14d00a4520000000L, true, 0, 0x0L), + 4 + ), + 1179405 + ); + + // gentest-3730 + assertEqual( + perft( + Board(0x90104143288000L, 0x80020040000L, 0x400000000000000L, 0x400200000000a0L, 0x20000L, + 0x1000000000000010L, 0x1000412e80b0L, 0x14d00a4122000000L, false, 0, 0x0L), + 4 + ), + 577478 + ); + + // gentest-3731 + assertEqual( + perft( + Board(0x90104143208000L, 0x80000080100L, 0x400000000000000L, 0x4200000000a0L, 0x20000L, + 0x1000000000000010L, 0x1000412281b0L, 0x14904a4102080000L, true, 0, 0x0L), + 4 + ), + 91337 + ); + + // gentest-3732 + assertEqual( + perft( + Board(0x1010c103208000L, 0x80000080100L, 0x400000000000000L, 0x4200000000a0L, 0x20000L, + 0x1000000000001000L, 0x1080012291a0L, 0x14104a4102080000L, false, 0, 0x0L), + 4 + ), + 731116 + ); + + // gentest-3733 + assertEqual( + perft( + Board(0x1010c103208000L, 0x80000080100L, 0x8000000000000L, 0x2200000000a0L, 0x400L, + 0x1000000000001000L, 0x1080012095a0L, 0x10182a4102080000L, true, 0, 0x0L), + 4 + ), + 1144893 + ); + + // gentest-3734 + assertEqual( + perft( + Board(0x1010c101208000L, 0x80002080000L, 0x8000000000000L, 0x22000000000a0L, 0x400000000L, + 0x1000000000001000L, 0x1084032090a0L, 0x101a284100080000L, false, 0, 0x0L), + 4 + ), + 1751365 + ); + + // gentest-3735 + assertEqual( + perft( + Board(0x1010c100208000L, 0x80002080000L, 0x1000000L, 0x24000000000a0L, 0x2000L, 0x1000000000001000L, + 0x10800220b0a0L, 0x1012484101080000L, true, 0, 0x0L), + 4 + ), + 1117314 + ); + + // gentest-3736 + assertEqual( + perft( + Board(0x1010c100208000L, 0x80002080000L, 0x8000000000000L, 0x2400000000082L, 0x100000L, + 0x1000000000001000L, 0x108002309082L, 0x101a484100080000L, false, 0, 0x0L), + 4 + ), + 1794836 + ); + + // gentest-3737 + assertEqual( + perft( + Board(0x1010c100208000L, 0x80002000080L, 0x8000000000000L, 0x2400000000002L, 0x10000000L, + 0x1000000000001000L, 0x108012209002L, 0x101a484100000080L, true, 0, 0x0L), + 4 + ), + 1203816 + ); + + // gentest-3738 + assertEqual( + perft( + Board(0x10108140208000L, 0x90000000080L, 0x8000000000000L, 0x2400000000008L, 0x10000000L, + 0x1000000000001000L, 0x118010209008L, 0x101a480140000080L, false, 0, 0x0L), + 4 + ), + 1439409 + ); + + // gentest-3739 + assertEqual( + perft( + Board(0x10108140208000L, 0x400010000000080L, 0x8000000000000L, 0x4400000000008L, 0x100000000000000L, + 0x1000000000001000L, 0x100118000209008L, 0x141c400140000080L, true, 0, 0x0L), + 4 + ), + 595207 + ); + + // gentest-3740 + assertEqual( + perft( + Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x4400000000008L, 0x100000000000000L, + 0x1000000000080000L, 0x100118000280008L, 0x141c400100800080L, false, 0, 0x0L), + 4 + ), + 475811 + ); + + // gentest-3741 + assertEqual( + perft( + Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x400400000008L, 0x10000000L, + 0x1000000000080000L, 0x118010280008L, 0x1418400500800080L, true, 0, 0x0L), + 4 + ), + 1162780 + ); + + // gentest-3742 + assertEqual( + perft( + Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x400000040008L, 0x2000000000000L, + 0x1000000010000000L, 0x2118010200008L, 0x1418400100840080L, false, 0, 0x0L), + 4 + ), + 934810 + ); + + // gentest-3743 + assertEqual( + perft( + Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x400000000408L, 0x2000000L, + 0x2000000010000000L, 0x118012200008L, 0x2418400100800480L, true, 0, 0x0L), + 4 + ), + 1954990 + ); + + // gentest-3744 + assertEqual( + perft( + Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x450L, 0x20000L, 0x2000000010000000L, + 0x118010220010L, 0x24180001008004c0L, false, 0, 0x0L), + 4 + ), + 1217006 + ); + + // gentest-3745 + assertEqual( + perft( + Board(0x10108100a00000L, 0x400010000000080L, 0x8000000000000L, 0x102040L, 0x20000L, + 0x2000000010000000L, 0x118010320000L, 0x24180001008020c0L, true, 0, 0x0L), + 4 + ), + 1148886 + ); + + // gentest-3746 + assertEqual( + perft( + Board(0x10008100a00000L, 0x400010000000080L, 0x100000000000L, 0x102040L, 0x8000L, 0x2000000010000000L, + 0x18010308000L, 0x24101001008020c0L, false, 0, 0x0L), + 4 + ), + 901348 + ); + + // gentest-3747 + assertEqual( + perft( + Board(0x10008100a00000L, 0x400010000000080L, 0x8000000000000L, 0x12002L, 0x8000L, 0x2000000010000000L, + 0x18010218000L, 0x2418000100802082L, true, 0, 0x0L), + 4 + ), + 1157578 + ); + + // gentest-3748 + assertEqual( + perft( + Board(0x10008120800000L, 0x400010000000080L, 0x8000000000000L, 0x10402L, 0x8000L, 0x2000000000100000L, + 0x18020118000L, 0x2418000100800482L, false, 0, 0x0L), + 4 + ), + 1147337 + ); + + // gentest-3749 + assertEqual( + perft( + Board(0x10008120800000L, 0x400010000000080L, 0x8000000000000L, 0x20042L, 0x8000L, 0x2000000000100000L, + 0x18020128000L, 0x24180001008000c2L, true, 0, 0x0L), + 4 + ), + 1333039 + ); + + // gentest-3750 + assertEqual( + perft( + Board(0x1000a100800000L, 0x400010000000080L, 0x100000000000L, 0x20042L, 0x200000000000000L, + 0x2000000000100000L, 0x20001a000120000L, 0x24101001008000c2L, false, 0, 0x0L), + 4 + ), + 1039076 + ); + + // gentest-3751 + assertEqual( + perft( + Board(0x1000a100800000L, 0x400010000000080L, 0x20000000000000L, 0x2000042L, 0x200000000000000L, + 0x4000000000100000L, 0x20001a002100000L, 0x44300001008000c2L, true, 0, 0x0L), + 4 + ), + 1435235 + ); + + // gentest-3752 + assertEqual( + perft( + Board(0x1000a100800000L, 0x400010000000080L, 0x20000000000000L, 0x4202L, 0x200000000000000L, + 0x4000000008000000L, 0x20001a008000200L, 0x4430000100804082L, false, 0, 0x0L), + 4 + ), + 1378035 + ); + + // gentest-3753 + assertEqual( + perft( + Board(0x1000a100800000L, 0x400010000000080L, 0x20000L, 0xa02L, 0x2000000000000L, 0x4000000008000000L, + 0x201a008000200L, 0x4410000100820882L, true, 0, 0x0L), + 4 + ), + 236166 + ); + + // gentest-3754 + assertEqual( + perft( + Board(0x1000a100800000L, 0x30000000080L, 0x20000L, 0xa02L, 0x8000000000000L, 0x4000000400000000L, + 0x801a400000200L, 0x4010020100820882L, false, 0, 0x0L), + 4 + ), + 1129579 + ); + + // gentest-3755 + assertEqual( + perft( + Board(0x1000a100800000L, 0x30000000080L, 0x8L, 0xa02L, 0x800000000000000L, 0x80000400000000L, + 0x80001a400000200L, 0x9002010080088aL, true, 0, 0x0L), + 4 + ), + 901728 + ); + + // gentest-3756 + assertEqual( + perft( + Board(0x10208100800000L, 0x30000000080L, 0x8L, 0x80000000102L, 0x800000000000000L, 0x80000400000000L, + 0x800218400000100L, 0x900a010080008aL, false, 0, 0x0L), + 4 + ), + 753974 + ); + + // gentest-3757 + assertEqual( + perft( + Board(0x10208100800000L, 0x200000004000080L, 0x8L, 0x80000020100L, 0x800000000000000L, + 0x80000400000000L, 0xa00208400000100L, 0x90080104820088L, true, 0, 0x0L), + 4 + ), + 1091535 + ); + + // gentest-3758 + assertEqual( + perft( + Board(0x10208100800000L, 0x200000004000080L, 0x8L, 0x21000L, 0x80000000000L, 0x800400000000L, + 0x200288400001000L, 0x10800104820088L, false, 0, 0x0L), + 4 + ), + 1055956 + ); + + // gentest-3759 + assertEqual( + perft( + Board(0x288100008000L, 0x200000004000080L, 0x8L, 0x21000L, 0x0L, 0x800008000000L, 0x200208008001000L, + 0x880104028088L, true, 0, 0x0L), + 4 + ), + 331718 + ); + + // gentest-3760 + assertEqual( + perft( + Board(0x288100008000L, 0x200000004000080L, 0x8L, 0x1000000000800000L, 0x0L, 0x800008000000L, + 0x1200208008000000L, 0x880104808088L, false, 0, 0x0L), + 4 + ), + 225641 + ); + + // gentest-3761 + assertEqual( + perft( + Board(0x280100008000L, 0x200001000000080L, 0x8L, 0x400008000000000L, 0x0L, 0x800008000000L, + 0x600200008000000L, 0x889100008088L, true, 0, 0x0L), + 4 + ), + 208183 + ); + + // gentest-3762 + assertEqual( + perft( + Board(0x280000008000L, 0x1100000080L, 0x8L, 0x400004000000000L, 0x0L, 0x800008000000L, + 0x400200108000000L, 0x885000008088L, false, 0, 0x0L), + 4 + ), + 346645 + ); + + // gentest-3763 + assertEqual( + perft( + Board(0x280000008000L, 0x140000080L, 0x8L, 0x800000800000000L, 0x0L, 0x800008000000L, + 0x800200108000000L, 0x880840008088L, true, 0, 0x0L), + 4 + ), + 30258 + ); + + // gentest-3764 + assertEqual( + perft( + Board(0x280000008000L, 0x2000040000080L, 0x8L, 0x800001000000000L, 0x0L, 0x800000040000L, + 0x802200000040000L, 0x881040008088L, false, 0, 0x0L), + 4 + ), + 257021 + ); + + // gentest-3765 + assertEqual( + perft( + Board(0x280000008000L, 0x2000040000080L, 0x8L, 0x400000000010000L, 0x0L, 0x800000040000L, + 0x402200000040000L, 0x880040018088L, true, 0, 0x0L), + 4 + ), + 81361 + ); + + // gentest-3766 + assertEqual( + perft( + Board(0x280000008000L, 0x2000040000080L, 0x200000L, 0x8000000000010000L, 0x0L, 0x800002000000L, + 0x8002200002000000L, 0x880040218080L, false, 0, 0x0L), + 4 + ), + 21542 + ); + + // gentest-3767 + assertEqual( + perft( + Board(0x280000008000L, 0x2000040000080L, 0x200000L, 0x810000L, 0x0L, 0x22000000L, 0x2200002800000L, + 0x80060218080L, true, 0, 0x0L), + 4 + ), + 229325 + ); + + // gentest-3768 + assertEqual( + perft( + Board(0x280000008000L, 0x2000040000080L, 0x800000000L, 0x80000000L, 0x0L, 0x20010000L, + 0x2200080010000L, 0x80860008080L, false, 0, 0x0L), + 4 + ), + 113174 + ); + + // gentest-3769 + assertEqual( + perft( + Board(0x280000008000L, 0x2000040000080L, 0x200000000L, 0x800000000000L, 0x0L, 0x20010000L, + 0x2a00000010000L, 0x80260008080L, true, 0, 0x0L), + 4 + ), + 151261 + ); + + // gentest-3770 + assertEqual( + perft( + Board(0x280000008000L, 0x800000040400000L, 0x200000000L, 0x800000000000L, 0x0L, 0x20000200L, + 0x800a00000000200L, 0x80260408000L, false, 0, 0x0L), + 4 + ), + 323052 + ); + + // gentest-3771 + assertEqual( + perft( + Board(0x280000000000L, 0x800000040400000L, 0x8000000000000L, 0x800000L, 0x80L, 0x20000200L, + 0x800200000800200L, 0x8080060400080L, true, 0, 0x0L), + 4 + ), + 430197 + ); + + // gentest-3772 + assertEqual( + perft( + Board(0x280000000000L, 0x800000040000000L, 0x8000000000000L, 0x400000L, 0x4L, 0x20000100L, + 0x800200000400100L, 0x8080060000004L, false, 0, 0x0L), + 4 + ), + 243503 + ); + + // gentest-3773 + assertEqual( + perft( + Board(0x280000000000L, 0x40040000000L, 0x200000000L, 0x400000L, 0x400000000L, 0x20000100L, + 0x240000400100L, 0x80660000000L, true, 0, 0x0L), + 4 + ), + 470114 + ); + + // gentest-3774 + assertEqual( + perft( + Board(0x20080000000000L, 0x10000040000000L, 0x200000000L, 0x400000L, 0x2000000000L, 0x20000100L, + 0x30000000400100L, 0x82260000000L, false, 0, 0x0L), + 4 + ), + 469441 + ); + + // gentest-3775 + assertEqual( + perft( + Board(0x80000000000L, 0x2010000000002000L, 0x80000L, 0x400000L, 0x2000000000L, 0x20000100L, + 0x2010000000400100L, 0x82020082000L, true, 0, 0x0L), + 4 + ), + 397280 + ); + + // gentest-3776 + assertEqual( + perft( + Board(0x80000000000L, 0x2000040000002000L, 0x4000000L, 0x400000L, 0x2000000000L, 0x20010000L, + 0x2000040000410000L, 0x82024002000L, false, 0, 0x0L), + 4 + ), + 782830 + ); + + // gentest-3777 + assertEqual( + perft( + Board(0x80000000000L, 0x2000040000002000L, 0x10000000000L, 0x400000L, 0x100000000L, 0x20000200L, + 0x2000040000400200L, 0x90120002000L, true, 0, 0x0L), + 4 + ), + 596047 + ); + + // gentest-3778 + assertEqual( + perft( + Board(0x80000000000L, 0x80040000000008L, 0x10000000000L, 0x400000L, 0x100000000L, 0x20000004L, + 0x80040000400004L, 0x90120000008L, false, 0, 0x0L), + 4 + ), + 500342 + ); + + // gentest-3779 + assertEqual( + perft( + Board(0x80000000000L, 0x80040000000008L, 0x4000000L, 0x100000L, 0x100000000000000L, 0x20000004L, + 0x80040000100004L, 0x100080024000008L, true, 0, 0x0L), + 4 + ), + 737053 + ); + + // gentest-3780 + assertEqual( + perft( + Board(0x80000000000L, 0x1200000000008L, 0x4000000L, 0x100000L, 0x0L, 0x20000004L, 0x1200000100004L, + 0x80024000008L, false, 0, 0x0L), + 4 + ), + 196105 + ); + + // gentest-3781 + assertEqual( + perft( + Board(0x80000000000L, 0x4001000000000008L, 0x4000000L, 0x100000L, 0x0L, 0x20000004L, + 0x4001000000100004L, 0x80024000008L, true, 0, 0x0L), + 4 + ), + 170699 + ); + + // gentest-3782 + assertEqual( + perft( + Board(0x80000000000L, 0x4001000000000008L, 0x80000L, 0x10L, 0x0L, 0x20000800L, 0x4001000000000810L, + 0x80020080008L, false, 0, 0x0L), + 4 + ), + 155491 + ); + + // gentest-3783 + assertEqual( + perft( + Board(0x80000000000L, 0x4000040000000008L, 0x2000000000L, 0x10L, 0x0L, 0x20000800L, + 0x4000040000000810L, 0x82020000008L, true, 0, 0x0L), + 4 + ), + 186986 + ); + + // gentest-3784 + assertEqual( + perft( + Board(0x80000000000L, 0x4000000008000000L, 0x400000000000000L, 0x8L, 0x0L, 0x20000800L, + 0x4000000008000808L, 0x400080020000000L, false, 0, 0x0L), + 4 + ), + 98343 + ); + + // gentest-3785 + assertEqual( + perft( + Board(0x80000000000L, 0x10000008000000L, 0x100000000000L, 0x8L, 0x0L, 0x20000800L, 0x10000008000808L, + 0x180020000000L, true, 0, 0x0L), + 4 + ), + 141484 + ); + + // gentest-3786 + assertEqual( + perft( + Board(0x80000000000L, 0x40000200000L, 0x20000L, 0x8L, 0x0L, 0x20000800L, 0x40000200808L, + 0x80020020000L, false, 0, 0x0L), + 4 + ), + 141447 + ); + + // gentest-3787 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3788 + assertEqual( + perft( + Board(0xff00000010ef00L, 0x200800000000042L, 0x2400000200000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x20010efdfL, 0xbfff800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 367804 + ); + + // gentest-3789 + assertEqual( + perft( + Board(0xff00000810e700L, 0x40040000042L, 0x2400000200000004L, 0x8100000000000081L, 0x800000000000008L, + 0x1000000000000010L, 0x20810e7dfL, 0xbdff040040000000L, true, 0, 0x8100000000000081L), + 4 + ), + 823395 + ); + + // gentest-3790 + assertEqual( + perft( + Board(0xff00002810c700L, 0x200000040000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2810c7ffL, 0xbfff000040000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 656227 + ); + + // gentest-3791 + assertEqual( + perft( + Board(0xfb04002810c700L, 0x200000040000042L, 0x2400010000000004L, 0x4100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1002810c7dfL, 0x7ffb040040000000L, true, 0, + 0x100000000000081L), + 4 + ), + 708304 + ); + + // gentest-3792 + assertEqual( + perft( + Board(0xf304082c11c200L, 0x200000040000042L, 0x2400010000000004L, 0x4100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1002c11c2dfL, 0x7ff3040840000000L, false, 0, + 0x100000000000081L), + 4 + ), + 897464 + ); + + // gentest-3793 + assertEqual( + perft( + Board(0x73008c2c11c200L, 0x200000040000042L, 0x2400010000000004L, 0x4100000000000081L, + 0x800000000000008L, 0x1000000000001000L, 0x1002c11d2cfL, 0x7f73008c40000000L, true, 0, + 0x100000000000000L), + 4 + ), + 840917 + ); + + // gentest-3794 + assertEqual( + perft( + Board(0x71008c2c11c200L, 0x200000040000042L, 0x2402000000000004L, 0x4100000000000180L, 0x20000000008L, + 0x1000000000001000L, 0x200002c11d3ceL, 0x7771028c40000000L, false, 0, 0x100000000000000L), + 4 + ), + 1658614 + ); + + // gentest-3795 + assertEqual( + perft( + Board(0x71008c2c11c200L, 0x200000040040040L, 0x2002000000000004L, 0x4100000000000180L, 0x40000000008L, + 0x1000000000001000L, 0x2c15d3ccL, 0x7373048c40000000L, true, 0, 0x100000000000000L), + 4 + ), + 1232286 + ); + + // gentest-3796 + assertEqual( + perft( + Board(0x7100842c114200L, 0x200020000008040L, 0x2002000000000004L, 0x4100000000000180L, 0x40000000008L, + 0x1000000000001000L, 0x2002c1153ccL, 0x7373048400008000L, false, 0, 0x100000000000000L), + 4 + ), + 1051159 + ); + + // gentest-3797 + assertEqual( + perft( + Board(0x3140842c114200L, 0x200020000008040L, 0x2002000000000004L, 0x4100000000000180L, 0x200020000L, + 0x1000000000001000L, 0x2002c1353c4L, 0x7333408600008000L, true, 0, 0x100000000000000L), + 4 + ), + 1092321 + ); + + // gentest-3798 + assertEqual( + perft( + Board(0x31408c24114200L, 0x200020000008040L, 0x42000000000004L, 0x4100000000000180L, 0x200000008L, + 0x1000000000001000L, 0x208241153ccL, 0x5373408600008000L, false, 0, 0x100000000000000L), + 4 + ), + 1400907 + ); + + // gentest-3799 + assertEqual( + perft( + Board(0x31408e20114200L, 0x200020000008040L, 0x2800000000004L, 0x4100000000000180L, 0x8L, + 0x2000000000001000L, 0x20a201153ccL, 0x6333c08400008000L, true, 0, 0x0L), + 4 + ), + 691603 + ); + + // gentest-3800 + assertEqual( + perft( + Board(0x30408f20114200L, 0x200020000008040L, 0x2800000000004L, 0x4100000000000180L, 0x800L, + 0x2000000000000010L, 0x20a20114bd4L, 0x6332c08500008000L, false, 0, 0x0L), + 4 + ), + 698466 + ); + + // gentest-3801 + assertEqual( + perft( + Board(0x10608f20114200L, 0x200020000008040L, 0x2800000000004L, 0x8100000000000180L, 0x40000L, + 0x2000000000000010L, 0x20a201543d4L, 0xa312e08500008000L, true, 0, 0x0L), + 4 + ), + 854162 + ); + + // gentest-3802 + assertEqual( + perft( + Board(0x10600fa0114200L, 0x200020000008040L, 0x2800000000004L, 0x8100000000000180L, 0x2000000000L, + 0x2000000000000010L, 0x22a201143d4L, 0xa312e00580008000L, false, 0, 0x0L), + 4 + ), + 921888 + ); + + // gentest-3803 + assertEqual( + perft( + Board(0x10600fa0114200L, 0x60000208000L, 0x2800000000004L, 0x8100000000000180L, 0x2000000000L, + 0x4000000000000010L, 0x22a20314394L, 0xc112e40580008000L, true, 0, 0x0L), + 4 + ), + 1759436 + ); + + // gentest-3804 + assertEqual( + perft( + Board(0x10600fa2114000L, 0x60000208000L, 0x2002000000000004L, 0x8100000000000180L, 0x800000L, + 0x4000000000000010L, 0x20a22b14194L, 0xe112640580008000L, false, 0, 0x0L), + 4 + ), + 1897192 + ); + + // gentest-3805 + assertEqual( + perft( + Board(0x10402fa2114000L, 0x60000208000L, 0x2002000000000004L, 0x100008000000140L, 0x800000L, + 0x4000000000000010L, 0x20a22b14154L, 0x611244a580008000L, true, 0, 0x0L), + 4 + ), + 1620287 + ); + + // gentest-3806 + assertEqual( + perft( + Board(0x10402fa2114000L, 0x400040000208000L, 0x2002000000000004L, 0x180000000000140L, 0x800000L, + 0x4000000000002000L, 0x400000a22b16144L, 0x6192442580008000L, false, 0, 0x0L), + 4 + ), + 1376728 + ); + + // gentest-3807 + assertEqual( + perft( + Board(0x10402fa2114000L, 0x401000008008000L, 0x2002000000000004L, 0x180000000000140L, 0x800000L, + 0x40000000002000L, 0x400000a2a916144L, 0x21d3402580008000L, true, 0, 0x0L), + 4 + ), + 1034598 + ); + + // gentest-3808 + assertEqual( + perft( + Board(0x403fa2114000L, 0x11000008008000L, 0x2002000000000004L, 0x180000000000041L, 0x800000L, + 0x40000000002000L, 0x10000a2a916045L, 0x21c3403580008000L, false, 0, 0x0L), + 4 + ), + 1165579 + ); + + // gentest-3809 + assertEqual( + perft( + Board(0x403fa2114000L, 0x1040008008000L, 0x10010000000004L, 0x180000000000041L, 0x800000L, + 0x40000000002000L, 0x40a2a916045L, 0x1d1413580008000L, true, 0, 0x0L), + 4 + ), + 1811444 + ); + + // gentest-3810 + assertEqual( + perft( + Board(0x402bab104000L, 0x1001000008000L, 0x10010000000004L, 0x180000000000041L, 0x800000L, + 0x40000000002000L, 0x1a23906045L, 0x1d1412188008000L, false, 0, 0x0L), + 4 + ), + 1277983 + ); + + // gentest-3811 + assertEqual( + perft( + Board(0x4029ab104000L, 0x1000004008000L, 0x10000200000004L, 0x480000000000041L, 0x800000L, + 0x40000000002000L, 0x827906045L, 0x4d1402388008000L, true, 0, 0x0L), + 4 + ), + 1653997 + ); + + // gentest-3812 + assertEqual( + perft( + Board(0x4029ab104000L, 0x1000000008000L, 0x10000004010000L, 0x480000000000041L, 0x400000L, + 0x40000000002000L, 0x823516041L, 0x4d140218c008000L, false, 0, 0x0L), + 4 + ), + 1244067 + ); + + // gentest-3813 + assertEqual( + perft( + Board(0x402ba9104000L, 0x1000000008000L, 0x10000004010000L, 0x400008000000041L, 0x400000L, + 0x200000002000L, 0xa21516041L, 0x41160a18c008000L, true, 0, 0x0L), + 4 + ), + 964091 + ); + + // gentest-3814 + assertEqual( + perft( + Board(0x402ba1184000L, 0x1000000008000L, 0x10000004010000L, 0x400008000000048L, 0x400000L, + 0x200000000010L, 0xa21514058L, 0x41160a184088000L, false, 0, 0x0L), + 4 + ), + 597538 + ); + + // gentest-3815 + assertEqual( + perft( + Board(0x4823a1184000L, 0x1000000008000L, 0x4010000L, 0x800008000000048L, 0x400000L, 0x200000000010L, + 0x80221504058L, 0x80160a184098000L, true, 0, 0x0L), + 4 + ), + 445102 + ); + + // gentest-3816 + assertEqual( + perft( + Board(0x4823a1104000L, 0x1000000000000L, 0x4000004L, 0x800008000080040L, 0x8000L, 0x200000000010L, + 0x8022118c050L, 0x80160a184000004L, false, 0, 0x0L), + 4 + ), + 502014 + ); + + // gentest-3817 + assertEqual( + perft( + Board(0x4823e1100000L, 0x1000000000000L, 0x4000004L, 0x280000000080040L, 0x8000L, 0x200000000010L, + 0x80261188050L, 0x281602184000004L, true, 0, 0x0L), + 4 + ), + 1180284 + ); + + // gentest-3818 + assertEqual( + perft( + Board(0x4823e1100000L, 0x1000000000000L, 0x4010000L, 0x280000000000840L, 0x2000L, 0x200000000010L, + 0x80261102850L, 0x281602184010000L, false, 0, 0x0L), + 4 + ), + 1118370 + ); + + // gentest-3819 + assertEqual( + perft( + Board(0x863e1100000L, 0x1000000000000L, 0x4010000L, 0x180000000000820L, 0x2000L, 0x200000000010L, + 0x80261102830L, 0x181206184010000L, true, 0, 0x0L), + 4 + ), + 897945 + ); + + // gentest-3820 + assertEqual( + perft( + Board(0x86361100000L, 0x1000000000000L, 0x20000000010000L, 0x180000008000020L, 0x80000000L, + 0x200000000010L, 0x802e9100030L, 0x1a1206100010000L, false, 0, 0x0L), + 4 + ), + 873463 + ); + + // gentest-3821 + assertEqual( + perft( + Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x480000010000020L, 0x80000000L, + 0x200000000010L, 0x802f1100030L, 0x4a0246100010000L, true, 0, 0x0L), + 4 + ), + 975485 + ); + + // gentest-3822 + assertEqual( + perft( + Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x400008010200000L, 0x80L, 0x200000000010L, + 0x80271300090L, 0x42024e100010000L, false, 0, 0x0L), + 4 + ), + 1107635 + ); + + // gentest-3823 + assertEqual( + perft( + Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x8200000008200000L, 0x80L, 0x200000000010L, + 0x80269300090L, 0x8220246100010000L, true, 0, 0x0L), + 4 + ), + 1582632 + ); + + // gentest-3824 + assertEqual( + perft( + Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x8200000008200000L, 0x80000000L, + 0x40000000002000L, 0x802e9302000L, 0x8260046100010000L, false, 0, 0x0L), + 4 + ), + 1445231 + ); + + // gentest-3825 + assertEqual( + perft( + Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x4000800008200000L, 0x0L, 0x40000000002000L, + 0x80269302000L, 0x4060846100010000L, true, 0, 0x0L), + 4 + ), + 828013 + ); + + // gentest-3826 + assertEqual( + perft( + Board(0x86361100000L, 0x40000000000L, 0x20000000010000L, 0x800800000280000L, 0x0L, 0x40000000400000L, + 0x80261780000L, 0x860846100010000L, false, 0, 0x0L), + 4 + ), + 661557 + ); + + // gentest-3827 + assertEqual( + perft( + Board(0x8006361100000L, 0x40000000000L, 0x20000000010000L, 0x400800000280000L, 0x0L, + 0x4000000000400000L, 0x8000261780000L, 0x4420846100010000L, true, 0, 0x0L), + 4 + ), + 871867 + ); + + // gentest-3828 + assertEqual( + perft( + Board(0x6361100000L, 0x40000000000L, 0x420000000000004L, 0x800000240000L, 0x0L, 0x4000000000400000L, + 0x400000261740000L, 0x4020846100000004L, false, 0, 0x0L), + 4 + ), + 583848 + ); + + // gentest-3829 + assertEqual( + perft( + Board(0x2361100000L, 0x800000000000000L, 0x420000000000004L, 0x800000240000L, 0x0L, + 0x4000000000002000L, 0x400000241342000L, 0x4820802120000004L, true, 0, 0x0L), + 4 + ), + 732044 + ); + + // gentest-3830 + assertEqual( + perft( + Board(0x361100000L, 0x800000000000000L, 0x20002000000004L, 0x220080L, 0x0L, 0x4000000000002000L, + 0x2241322000L, 0x4820000120000084L, false, 0, 0x0L), + 4 + ), + 389679 + ); + + // gentest-3831 + assertEqual( + perft( + Board(0x361100000L, 0x80000000000L, 0x20002000000004L, 0x220080L, 0x0L, 0x4000000000004000L, + 0x2241324000L, 0x4020080120000084L, true, 0, 0x0L), + 4 + ), + 597917 + ); + + // gentest-3832 + assertEqual( + perft( + Board(0x361100000L, 0x80000000000L, 0x20000000000404L, 0x80000000220000L, 0x0L, 0x4000000000002000L, + 0x241322400L, 0x40a0080120000004L, false, 0, 0x0L), + 4 + ), + 471638 + ); + + // gentest-3833 + assertEqual( + perft( + Board(0x361100000L, 0x80000000000L, 0xa0000000000004L, 0xa20000L, 0x0L, 0x8000000000002000L, + 0x80000241322000L, 0x8020080120800004L, true, 0, 0x0L), + 4 + ), + 477524 + ); + + // gentest-3834 + assertEqual( + perft( + Board(0x371000000L, 0x4000000L, 0xa0000000000004L, 0xa20000L, 0x0L, 0x8000000000001000L, + 0x80000251221000L, 0x8020000124800004L, false, 0, 0x0L), + 4 + ), + 406096 + ); + + // gentest-3835 + assertEqual( + perft( + Board(0x371000000L, 0x800L, 0x20002000000004L, 0x800000220000L, 0x0L, 0x8000000000001000L, + 0x2251221000L, 0x8020800120000804L, true, 0, 0x0L), + 4 + ), + 591447 + ); + + // gentest-3836 + assertEqual( + perft( + Board(0x24131000000L, 0x800L, 0x20002000000004L, 0xa20000L, 0x0L, 0x8000000000001000L, 0x26011221000L, + 0x8020000120800804L, false, 0, 0x0L), + 4 + ), + 455545 + ); + + // gentest-3837 + assertEqual( + perft( + Board(0x24131000000L, 0x800L, 0x20400000000004L, 0xa00000L, 0x0L, 0x8000000000001000L, + 0x424011201000L, 0x8020000120800804L, true, 0, 0x0L), + 4 + ), + 245831 + ); + + // gentest-3838 + assertEqual( + perft( + Board(0x24131000000L, 0x800L, 0x20400000000004L, 0x800000L, 0x0L, 0x4000000000000010L, + 0x424011800010L, 0x4020000120000804L, false, 0, 0x0L), + 4 + ), + 139590 + ); + + // gentest-3839 + assertEqual( + perft( + Board(0x24131000000L, 0x8000L, 0x20400000000004L, 0x400000L, 0x0L, 0x4000000000000010L, + 0x424011400010L, 0x4020000120008004L, true, 0, 0x0L), + 4 + ), + 104542 + ); + + // gentest-3840 + assertEqual( + perft( + Board(0x24131000000L, 0x8000L, 0x20400000000004L, 0x20L, 0x0L, 0x40000000000010L, 0x424011000030L, + 0x60000120008004L, false, 0, 0x0L), + 4 + ), + 75097 + ); + + // gentest-3841 + assertEqual( + perft( + Board(0x24131000000L, 0x8000L, 0x400800100000L, 0x200000L, 0x0L, 0x40000000000010L, 0x424011200010L, + 0x40000920108000L, true, 0, 0x0L), + 4 + ), + 134218 + ); + + // gentest-3842 + assertEqual( + perft( + Board(0x24131000000L, 0x8000L, 0x400800000004L, 0x800000L, 0x0L, 0x40000000001000L, 0x424011801000L, + 0x40000920008004L, false, 0, 0x0L), + 4 + ), + 184344 + ); + + // gentest-3843 + assertEqual( + perft( + Board(0x24131000000L, 0x8000L, 0x400800000004L, 0x800000000000L, 0x0L, 0x40000000001000L, + 0xc24011001000L, 0x40000920008004L, true, 0, 0x0L), + 4 + ), + 118499 + ); + + // gentest-3844 + assertEqual( + perft( + Board(0x24131000000L, 0x40000000L, 0x400800000004L, 0x80000000000000L, 0x0L, 0x40000000001000L, + 0x80424011001000L, 0x40000960000004L, false, 0, 0x0L), + 4 + ), + 29787 + ); + + // gentest-3845 + assertEqual( + perft( + Board(0x24131000000L, 0x40000000L, 0x8800000200L, 0x80000000000000L, 0x0L, 0x4000000000001000L, + 0x8002c011001000L, 0x4000000960000200L, true, 0, 0x0L), + 4 + ), + 238423 + ); + + // gentest-3846 + assertEqual( + perft( + Board(0x24131000000L, 0x0L, 0x100100000000200L, 0x80000000000000L, 0x0L, 0x4000000000001000L, + 0x80124011001000L, 0x4100000120000200L, false, 0, 0x0L), + 4 + ), + 20306 + ); + + // gentest-3847 + assertEqual( + perft( + Board(0x24111200000L, 0x0L, 0x100100000000200L, 0x4000000000000L, 0x0L, 0x2000000000001000L, + 0x4124011001000L, 0x2100000100200200L, true, 0, 0x0L), + 4 + ), + 51500 + ); + + // gentest-3848 + assertEqual( + perft( + Board(0x24111200000L, 0x0L, 0x100100008000000L, 0x40000000000000L, 0x0L, 0x2000000000000800L, + 0x40124011000800L, 0x2100000108200000L, false, 0, 0x0L), + 4 + ), + 157818 + ); + + // gentest-3849 + assertEqual( + perft( + Board(0x24111002000L, 0x0L, 0x100003000000000L, 0x40000000000000L, 0x0L, 0x2000000000000800L, + 0x40026011000800L, 0x2100001100002000L, true, 0, 0x0L), + 4 + ), + 202676 + ); + + // gentest-3850 + assertEqual( + perft( + Board(0x24111002000L, 0x0L, 0x180000020000000L, 0x40000000000000L, 0x0L, 0x2000000000000400L, + 0xc0024011000400L, 0x2100000120002000L, false, 0, 0x0L), + 4 + ), + 123897 + ); + + // gentest-3851 + assertEqual( + perft( + Board(0x24111002000L, 0x0L, 0x180000000008000L, 0x10000000000000L, 0x0L, 0x2000000000000400L, + 0x90024011000400L, 0x210000010000a000L, true, 0, 0x0L), + 4 + ), + 117546 + ); + + // gentest-3852 + assertEqual( + perft( + Board(0x24111002000L, 0x0L, 0x180000000400000L, 0x10000000000000L, 0x0L, 0x2000000000000200L, + 0x90024011000200L, 0x2100000100402000L, false, 0, 0x0L), + 4 + ), + 116270 + ); + + // gentest-3853 + assertEqual( + perft( + Board(0x24101002000L, 0x0L, 0x280000000000000L, 0x10000000L, 0x0L, 0x2000000000000200L, + 0x80024011000200L, 0x2200000100002000L, true, 0, 0x0L), + 4 + ), + 121936 + ); + + // gentest-3854 + assertEqual( + perft( + Board(0x24101002000L, 0x0L, 0x280000000000000L, 0x10000000L, 0x0L, 0x40000000000200L, + 0x80024011000200L, 0x240000100002000L, false, 0, 0x0L), + 4 + ), + 131276 + ); + + // gentest-3855 + assertEqual( + perft( + Board(0x24101002000L, 0x0L, 0x80000000400000L, 0x2000000L, 0x0L, 0x40000000000200L, 0x80024003000200L, + 0x40000100402000L, true, 0, 0x0L), + 4 + ), + 150968 + ); + + // gentest-3856 + assertEqual( + perft( + Board(0x24101002000L, 0x0L, 0x2000400000L, 0x8000000L, 0x0L, 0x2000000000000200L, 0x26009000200L, + 0x2000000100402000L, false, 0, 0x0L), + 4 + ), + 243766 + ); + + // gentest-3857 + assertEqual( + perft( + Board(0x24101000000L, 0x0L, 0x2000400000L, 0x820000000L, 0x0L, 0x2000000000000200L, 0x26801000200L, + 0x2000000120400000L, true, 0, 0x0L), + 4 + ), + 349266 + ); + + // gentest-3858 + assertEqual( + perft( + Board(0x24101000000L, 0x0L, 0x2000400000L, 0x20080000L, 0x0L, 0x4000000000000200L, 0x26001080200L, + 0x4000000120400000L, false, 0, 0x0L), + 4 + ), + 271425 + ); + + // gentest-3859 + assertEqual( + perft( + Board(0x24100000000L, 0x0L, 0x2000400000L, 0x1040000L, 0x0L, 0x4000000000000200L, 0x26000040200L, + 0x4000000101400000L, true, 0, 0x0L), + 4 + ), + 322882 + ); + + // gentest-3860 + assertEqual( + perft( + Board(0x24100000000L, 0x0L, 0x100000000000L, 0x10400000L, 0x0L, 0x4000000000000200L, 0x124000400200L, + 0x4000000110000000L, false, 0, 0x0L), + 4 + ), + 56072 + ); + + // gentest-3861 + assertEqual( + perft( + Board(0x24100000000L, 0x0L, 0x100000000000L, 0x80020000L, 0x0L, 0x2000000000000200L, 0x124000020200L, + 0x2000000180000000L, true, 0, 0x0L), + 4 + ), + 189295 + ); + + // gentest-3862 + assertEqual( + perft( + Board(0x24100000000L, 0x0L, 0x800000000L, 0x220000000L, 0x0L, 0x2000000000000200L, 0x24a00000200L, + 0x2000000120000000L, false, 0, 0x0L), + 4 + ), + 153935 + ); + + // gentest-3863 + assertEqual( + perft( + Board(0x24100000000L, 0x0L, 0x4000L, 0x200000008L, 0x0L, 0x2000000000000200L, 0x24200004200L, + 0x2000000100000008L, true, 0, 0x0L), + 4 + ), + 167237 + ); + + // gentest-3864 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x4000L, 0x80200000000L, 0x0L, 0x2000000000010000L, 0x420200014000L, + 0x2000080100000000L, false, 0, 0x0L), + 4 + ), + 152843 + ); + + // gentest-3865 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x10000000L, 0x40200000000L, 0x0L, 0x10000000010000L, 0x420210010000L, + 0x10040100000000L, true, 0, 0x0L), + 4 + ), + 197740 + ); + + // gentest-3866 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x10000000L, 0x40200000000L, 0x0L, 0x2000000000010000L, 0x420210010000L, + 0x2000040100000000L, false, 0, 0x0L), + 4 + ), + 166295 + ); + + // gentest-3867 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x800000000L, 0x200200000000L, 0x0L, 0x40000000010000L, 0x420a00010000L, + 0x40200100000000L, true, 0, 0x0L), + 4 + ), + 160515 + ); + + // gentest-3868 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x100000000000000L, 0x200002000L, 0x0L, 0x40000000020000L, + 0x100420200020000L, 0x40000100002000L, false, 0, 0x0L), + 4 + ), + 150329 + ); + + // gentest-3869 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x100000000000000L, 0x2200000000L, 0x0L, 0x40000000040000L, + 0x100420200040000L, 0x40002100000000L, true, 0, 0x0L), + 4 + ), + 179513 + ); + + // gentest-3870 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x100000000000000L, 0x2000000002L, 0x0L, 0x2000000000040000L, + 0x100420000040002L, 0x2000002100000000L, false, 0, 0x0L), + 4 + ), + 155485 + ); + + // gentest-3871 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x4000L, 0x2000000002L, 0x0L, 0x8000000000040000L, 0x420000044002L, + 0x8000002100000000L, true, 0, 0x0L), + 4 + ), + 157724 + ); + + // gentest-3872 + assertEqual( + perft( + Board(0x420100000000L, 0x0L, 0x4000L, 0x2000000010L, 0x0L, 0x4000000000040000L, 0x420000044010L, + 0x4000002100000000L, false, 0, 0x0L), + 4 + ), + 190611 + ); + + // gentest-3873 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3874 + assertEqual( + perft( + Board(0xff00000804f300L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x804f3ffL, 0xfdff040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 459575 + ); + + // gentest-3875 + assertEqual( + perft( + Board(0xbf00402004d300L, 0x4000000008000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2004d3ffL, 0xfdbf004008000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 619095 + ); + + // gentest-3876 + assertEqual( + perft( + Board(0x3f00c020845300L, 0x4000000008000840L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x20845bfdL, 0xfd3f00c008000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 547442 + ); + + // gentest-3877 + assertEqual( + perft( + Board(0x3d02c020845300L, 0x4000000200000840L, 0x2400000000000024L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x2084db7dL, 0xfd3d02c200000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 468434 + ); + + // gentest-3878 + assertEqual( + perft( + Board(0x3502c830844300L, 0x4000000200000840L, 0x2400000000000024L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000002000L, 0x3084eb6dL, 0xfd3502ca00000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1484216 + ); + + // gentest-3879 + assertEqual( + perft( + Board(0x3106e010844300L, 0x4000000200000840L, 0x2400000000000024L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000002000L, 0x200084eb6dL, 0xfd3106c210000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 1281678 + ); + + // gentest-3880 + assertEqual( + perft( + Board(0x3126c000844300L, 0x4000000210000040L, 0x2400000000000024L, 0x8100000000008001L, 0x80008L, + 0x1000000000002000L, 0x20001084e36dL, 0xf53106c200080000L, false, 0, 0x8100000000000000L), + 4 + ), + 2071968 + ); + + // gentest-3881 + assertEqual( + perft( + Board(0x3126c000844300L, 0x4000000210000040L, 0x40000040000024L, 0x8100000000008001L, 0x280000L, + 0x1000000000002000L, 0x200010a4e365L, 0xd17106c240080000L, true, 0, 0x8100000000000000L), + 4 + ), + 2191094 + ); + + // gentest-3882 + assertEqual( + perft( + Board(0x31268000844300L, 0x4000000200200040L, 0x40000040000024L, 0x8100000000008001L, 0x0L, + 0x1000000000002000L, 0x200000a4e365L, 0xd171068240000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1037624 + ); + + // gentest-3883 + assertEqual( + perft( + Board(0x21368000844300L, 0x4000000200200040L, 0x800044000004L, 0x8100000000008001L, 0x0L, + 0x1000000000002000L, 0x200004a4e345L, 0xd121968240000000L, true, 0, 0x8100000000000000L), + 4 + ), + 893505 + ); + + // gentest-3884 + assertEqual( + perft( + Board(0x21368000844300L, 0x4000000200000840L, 0x800040020004L, 0x8800000000008001L, 0x0L, + 0x400000000002000L, 0x20000086eb45L, 0xcc21968240000000L, false, 0, 0x0L), + 4 + ), + 727605 + ); + + // gentest-3885 + assertEqual( + perft( + Board(0x21368000c40300L, 0x4000000200000840L, 0x80000002000cL, 0x8000000000088001L, 0x0L, + 0x400000000002000L, 0x200000c6ab45L, 0xc421968200080008L, true, 0, 0x0L), + 4 + ), + 796155 + ); + + // gentest-3886 + assertEqual( + perft( + Board(0x21368000c40300L, 0x4000000200000840L, 0x80000002000cL, 0x8000000000200081L, 0x0L, + 0x400000000004000L, 0x200000c64bc5L, 0xc421968200200008L, false, 0, 0x0L), + 4 + ), + 572570 + ); + + // gentest-3887 + assertEqual( + perft( + Board(0x21368000c40300L, 0x4000000200000840L, 0x800000020404L, 0x8000000000208001L, 0x0L, + 0x800000000004000L, 0x200000c6cb45L, 0xc821968200200400L, true, 0, 0x0L), + 4 + ), + 677185 + ); + + // gentest-3888 + assertEqual( + perft( + Board(0x21368000c40300L, 0x4000000210000040L, 0x800004000404L, 0x8000000000208001L, 0x0L, + 0x400000000004000L, 0x200014c4c345L, 0xc421968200200400L, false, 0, 0x0L), + 4 + ), + 1120063 + ); + + // gentest-3889 + assertEqual( + perft( + Board(0x21168000c40300L, 0x200200000040L, 0x800014000004L, 0x8000000000200081L, 0x0L, + 0x400000000004000L, 0x4c443c5L, 0x8421b68210200000L, true, 0, 0x0L), + 4 + ), + 972087 + ); + + // gentest-3890 + assertEqual( + perft( + Board(0x21168000c40300L, 0x200200000040L, 0x802024000000L, 0x8000000000200081L, 0x0L, + 0x400000000004000L, 0x24c443c1L, 0x8421b6a200200000L, false, 0, 0x0L), + 4 + ), + 1605646 + ); + + // gentest-3891 + assertEqual( + perft( + Board(0x21168000440300L, 0x8000200000040L, 0x800024800000L, 0x8000000000200081L, 0x0L, + 0x400000000008000L, 0x244483c1L, 0x8429968200a00000L, true, 0, 0x0L), + 4 + ), + 1367948 + ); + + // gentest-3892 + assertEqual( + perft( + Board(0x21168040040300L, 0x8000200000040L, 0x800004800000L, 0x8000000020000084L, 0x0L, + 0x400000000008000L, 0x440483c4L, 0x8429968220800000L, false, 0, 0x0L), + 4 + ), + 986328 + ); + + // gentest-3893 + assertEqual( + perft( + Board(0x21168040040300L, 0x8000200000040L, 0x800004000000L, 0x8000000020000084L, 0x0L, + 0x400000000800000L, 0x448403c4L, 0x8429968220000000L, true, 0, 0x0L), + 4 + ), + 1020582 + ); + + // gentest-3894 + assertEqual( + perft( + Board(0x21168042040100L, 0x8000200000040L, 0x800000020000L, 0x8000000000002084L, 0x0L, + 0x400000000800000L, 0x428601c4L, 0x8429968200002000L, false, 0, 0x0L), + 4 + ), + 936472 + ); + + // gentest-3895 + assertEqual( + perft( + Board(0x21160002000100L, 0x8000000040040L, 0x800000020000L, 0x8000000000002084L, 0x0L, + 0x400000040000000L, 0x420201c4L, 0x8429960000042000L, true, 0, 0x0L), + 4 + ), + 1470651 + ); + + // gentest-3896 + assertEqual( + perft( + Board(0x21160002000100L, 0x8000000240000L, 0x800000020000L, 0x8000000000002090L, 0x0L, + 0x4000040000000L, 0x42220190L, 0x802d960000042000L, false, 0, 0x0L), + 4 + ), + 2498197 + ); + + // gentest-3897 + assertEqual( + perft( + Board(0x21160002000100L, 0x8000000040800L, 0x800000020000L, 0x8000000000000290L, 0x0L, + 0x2000040000000L, 0x42020990L, 0x802b960000040200L, true, 0, 0x0L), + 4 + ), + 2348712 + ); + + // gentest-3898 + assertEqual( + perft( + Board(0x21120600000100L, 0x8000000040800L, 0x800001000000L, 0x8000000000000290L, 0x0L, + 0x2000040000000L, 0x241000990L, 0x802b920400040200L, false, 0, 0x0L), + 4 + ), + 1483973 + ); + + // gentest-3899 + assertEqual( + perft( + Board(0x20120700000100L, 0x8000000040800L, 0x1100000L, 0x8000000000800210L, 0x0L, 0x2000040000000L, + 0x241800910L, 0x802a120500140200L, true, 0, 0x0L), + 4 + ), + 1715482 + ); + + // gentest-3900 + assertEqual( + perft( + Board(0x20021700000100L, 0x8000000040200L, 0x1100000L, 0x8000000000800010L, 0x0L, 0x2000040000000L, + 0x241800310L, 0x802a021500140000L, false, 0, 0x0L), + 4 + ), + 1049439 + ); + + // gentest-3901 + assertEqual( + perft( + Board(0x20021700000100L, 0x8000000040200L, 0x800001000000L, 0x2000000000800004L, 0x0L, + 0x2000040000000L, 0x241800304L, 0x202a821500040000L, true, 0, 0x0L), + 4 + ), + 830648 + ); + + // gentest-3902 + assertEqual( + perft( + Board(0x20021700000100L, 0x200000000040200L, 0x800001000000L, 0x2000000000100004L, 0x0L, + 0x2000040000000L, 0x241100304L, 0x2222821500040000L, false, 0, 0x0L), + 4 + ), + 665391 + ); + + // gentest-3903 + assertEqual( + perft( + Board(0x20021700000100L, 0x200000000040200L, 0x800001000000L, 0x2000000000400004L, 0x0L, + 0x2000040000000L, 0x241400304L, 0x2222821500040000L, true, 0, 0x0L), + 4 + ), + 668152 + ); + + // gentest-3904 + assertEqual( + perft( + Board(0x20021700000100L, 0x8000000000200L, 0x800001000000L, 0x2000000000440000L, 0x0L, + 0x2000000800000L, 0x201c40300L, 0x202a821500000000L, false, 0, 0x0L), + 4 + ), + 505865 + ); + + // gentest-3905 + assertEqual( + perft( + Board(0x20021700000100L, 0x8000000080000L, 0x800001000000L, 0x2000000000440000L, 0x0L, + 0x2000000800000L, 0x201cc0100L, 0x202a821500000000L, true, 0, 0x0L), + 4 + ), + 545016 + ); + + // gentest-3906 + assertEqual( + perft( + Board(0x20021300000100L, 0x8000400000000L, 0x800001000000L, 0x4000000000400004L, 0x0L, + 0x2000000800000L, 0x601c00104L, 0x402a821100000000L, false, 0, 0x0L), + 4 + ), + 220920 + ); + + // gentest-3907 + assertEqual( + perft( + Board(0x221300000100L, 0x8000400000000L, 0x800001000000L, 0x4000000000040004L, 0x0L, + 0x400000000800000L, 0x601840104L, 0x4408a21100000000L, true, 0, 0x0L), + 4 + ), + 377811 + ); + + // gentest-3908 + assertEqual( + perft( + Board(0x221300000100L, 0x8000400000000L, 0x800001000000L, 0x4000000000040004L, 0x0L, + 0x200000000800000L, 0x601840104L, 0x4208a21100000000L, false, 0, 0x0L), + 4 + ), + 533515 + ); + + // gentest-3909 + assertEqual( + perft( + Board(0x221300000100L, 0x400080000L, 0x800001000000L, 0x4000040004L, 0x0L, 0x200000000800000L, + 0x2018c0104L, 0x200a25500000000L, true, 0, 0x0L), + 4 + ), + 425618 + ); + + // gentest-3910 + assertEqual( + perft( + Board(0x221300000100L, 0x400080000L, 0x2000000001000000L, 0x4000040400L, 0x0L, 0x200000000008000L, + 0x2010c8500L, 0x2200225500000000L, false, 0, 0x0L), + 4 + ), + 369333 + ); + + // gentest-3911 + assertEqual( + perft( + Board(0x221300000100L, 0x10002000L, 0x2000000001000000L, 0x4000000000040400L, 0x0L, + 0x200000000008000L, 0x20104a500L, 0x6200221110000000L, true, 0, 0x0L), + 4 + ), + 409937 + ); + + // gentest-3912 + assertEqual( + perft( + Board(0x23300000100L, 0x10000008L, 0x2000000001000000L, 0x4000040000000400L, 0x0L, 0x200000000008000L, + 0x40201008508L, 0x6200023110000000L, false, 0, 0x0L), + 4 + ), + 446746 + ); + + // gentest-3913 + assertEqual( + perft( + Board(0x23300000100L, 0xaL, 0x2000000001000000L, 0x4000800000000400L, 0x0L, 0x200000000008000L, + 0x800201008508L, 0x6200023100000002L, true, 0, 0x0L), + 4 + ), + 441386 + ); + + // gentest-3914 + assertEqual( + perft( + Board(0x23300000100L, 0xaL, 0x2000000001000000L, 0x140000400000L, 0x0L, 0x200000000008000L, + 0x140201008108L, 0x2200023100400002L, false, 0, 0x0L), + 4 + ), + 399940 + ); + + // gentest-3915 + assertEqual( + perft( + Board(0x23300000100L, 0x2002L, 0x2000000001000000L, 0x4000140000000000L, 0x0L, 0x2000000008000L, + 0x14020100a100L, 0x6002023100000002L, true, 0, 0x0L), + 4 + ), + 356124 + ); + + // gentest-3916 + assertEqual( + perft( + Board(0x23300000100L, 0x80002L, 0x2000000001000000L, 0x8000140000000000L, 0x0L, 0x2000000400000L, + 0x140201480100L, 0xa002023100000002L, false, 0, 0x0L), + 4 + ), + 402693 + ); + + // gentest-3917 + assertEqual( + perft( + Board(0x23300000100L, 0x80002L, 0x401000000L, 0x8400100000000000L, 0x0L, 0x2000000400000L, + 0x400100201480100L, 0x8002023500000002L, true, 0, 0x0L), + 4 + ), + 499418 + ); + + // gentest-3918 + assertEqual( + perft( + Board(0x23300000100L, 0x202L, 0x10008L, 0x8400100000000000L, 0x0L, 0x2000000400000L, + 0x400100200400308L, 0x8002023100010002L, false, 0, 0x0L), + 4 + ), + 512568 + ); + + // gentest-3919 + assertEqual( + perft( + Board(0x23300000100L, 0x202L, 0x10000000000008L, 0x1400800000000000L, 0x0L, 0x2000000400000L, + 0x400800200400308L, 0x1012023100000002L, true, 0, 0x0L), + 4 + ), + 597190 + ); + + // gentest-3920 + assertEqual( + perft( + Board(0x23201000100L, 0x202L, 0x10000000000008L, 0x1420000000000000L, 0x0L, 0x2000000400000L, + 0x420000200400308L, 0x1012023001000002L, false, 0, 0x0L), + 4 + ), + 148510 + ); + + // gentest-3921 + assertEqual( + perft( + Board(0x22211000100L, 0x202L, 0x10000000000008L, 0x420000000000400L, 0x0L, 0x2000000400000L, + 0x20000200400708L, 0x412022011000002L, true, 0, 0x0L), + 4 + ), + 395393 + ); + + // gentest-3922 + assertEqual( + perft( + Board(0x22211000100L, 0x202L, 0x10000000000008L, 0x200200000001000L, 0x0L, 0x2000000400000L, + 0x200200401308L, 0x212022011000002L, false, 0, 0x0L), + 4 + ), + 406927 + ); + + // gentest-3923 + assertEqual( + perft( + Board(0x22210000100L, 0x202L, 0x800000001000000L, 0x200200000001000L, 0x0L, 0x100000000400000L, + 0x200201401300L, 0xb00022010000002L, true, 0, 0x0L), + 4 + ), + 162039 + ); + + // gentest-3924 + assertEqual( + perft( + Board(0x22210000100L, 0x10200L, 0x800000000020000L, 0x200200000000010L, 0x0L, 0x100000000400000L, + 0x200200420310L, 0xb00022010010000L, false, 0, 0x0L), + 4 + ), + 207418 + ); + + // gentest-3925 + assertEqual( + perft( + Board(0x22200100100L, 0x10200L, 0x800000001000000L, 0x200200000000010L, 0x0L, 0x2000000400000L, + 0x200201400310L, 0xa02022000110000L, true, 0, 0x0L), + 4 + ), + 202063 + ); + + // gentest-3926 + assertEqual( + perft( + Board(0x22200100100L, 0x4080000L, 0x800000001000000L, 0x200200000000008L, 0x0L, 0x2000000400000L, + 0x200201480108L, 0xa02022004100000L, false, 0, 0x0L), + 4 + ), + 273676 + ); + + // gentest-3927 + assertEqual( + perft( + Board(0x22200100100L, 0x80800L, 0x800000001000000L, 0x200200000000008L, 0x0L, 0x400000000800000L, + 0x200201880108L, 0xe00022000100800L, true, 0, 0x0L), + 4 + ), + 252118 + ); + + // gentest-3928 + assertEqual( + perft( + Board(0x22200100100L, 0x80800L, 0x10000001000000L, 0x200200000000001L, 0x0L, 0x400000080000000L, + 0x200281080101L, 0x610022000100800L, false, 0, 0x0L), + 4 + ), + 242516 + ); + + // gentest-3929 + assertEqual( + perft( + Board(0x22200100100L, 0x80800L, 0x10400L, 0x200200000000001L, 0x0L, 0x400000080000000L, + 0x200280080501L, 0x600022000110800L, true, 0, 0x0L), + 4 + ), + 375305 + ); + + // gentest-3930 + assertEqual( + perft( + Board(0x22201100000L, 0x810L, 0x600L, 0x200200000000001L, 0x0L, 0x400000080000000L, 0x200281000411L, + 0x600022000100a00L, false, 0, 0x0L), + 4 + ), + 285551 + ); + + // gentest-3931 + assertEqual( + perft( + Board(0x22201100000L, 0x200010L, 0x80200L, 0x2200000000001L, 0x0L, 0x400000080000000L, + 0x200281080011L, 0x402022000300200L, true, 0, 0x0L), + 4 + ), + 69404 + ); + + // gentest-3932 + assertEqual( + perft( + Board(0x22201100000L, 0x200000L, 0x80200L, 0x200200000000001L, 0x0L, 0x400008000000000L, + 0x208201280001L, 0x600022000100200L, false, 0, 0x0L), + 4 + ), + 301904 + ); + + // gentest-3933 + assertEqual( + perft( + Board(0x22201100000L, 0x4000000000L, 0x80001L, 0x200200000000000L, 0x0L, 0x8008000000000L, + 0x20c201080000L, 0x208022000100001L, true, 0, 0x0L), + 4 + ), + 224040 + ); + + // gentest-3934 + assertEqual( + perft( + Board(0x22201100000L, 0x20000000000000L, 0x600L, 0x200200000000000L, 0x0L, 0x8008000000000L, + 0x20208201000400L, 0x208022000100200L, false, 0, 0x0L), + 4 + ), + 217800 + ); + + // gentest-3935 + assertEqual( + perft( + Board(0x22201000000L, 0x20000000000000L, 0x610L, 0x200400000000000L, 0x0L, 0x8008000000000L, + 0x20408201000400L, 0x208022000000210L, true, 0, 0x0L), + 4 + ), + 479345 + ); + + // gentest-3936 + assertEqual( + perft( + Board(0x20201000000L, 0x20000000000000L, 0x100000000210L, 0x200400000000000L, 0x0L, 0x10008000000000L, + 0x20508201000000L, 0x210020000000210L, false, 0, 0x0L), + 4 + ), + 490834 + ); + + // gentest-3937 + assertEqual( + perft( + Board(0x20201000000L, 0x800000000000L, 0x100000000011L, 0x800400000000000L, 0x0L, 0x10008000000000L, + 0xd08201000000L, 0x810020000000011L, true, 0, 0x0L), + 4 + ), + 474644 + ); + + // gentest-3938 + assertEqual( + perft( + Board(0x20201000000L, 0x800000000000L, 0x100000000011L, 0x800000000400000L, 0x0L, 0x2000008000000000L, + 0x908201400000L, 0x2800020000000011L, false, 0, 0x0L), + 4 + ), + 565484 + ); + + // gentest-3939 + assertEqual( + perft( + Board(0x20201000000L, 0x800000000000L, 0x101000000001L, 0x800000000400000L, 0x0L, 0x2000000040000000L, + 0x900241400000L, 0x2800021000000001L, true, 0, 0x0L), + 4 + ), + 511779 + ); + + // gentest-3940 + assertEqual( + perft( + Board(0x20201000000L, 0x800000000000L, 0x101000000001L, 0x40000000000008L, 0x0L, 0x2000000000200000L, + 0x40900201200000L, 0x2000021000000009L, false, 0, 0x0L), + 4 + ), + 682744 + ); + + // gentest-3941 + assertEqual( + perft( + Board(0x20201000000L, 0x800000000000L, 0x100000008001L, 0x40000000000020L, 0x0L, 0x2000000000100000L, + 0x40900201100000L, 0x2000020000008021L, true, 0, 0x0L), + 4 + ), + 559270 + ); + + // gentest-3942 + assertEqual( + perft( + Board(0x20201000000L, 0x800000000000L, 0x100000008001L, 0x4000000000008L, 0x0L, 0x2000000000002000L, + 0x4900201002000L, 0x2000020000008009L, false, 0, 0x0L), + 4 + ), + 508444 + ); + + // gentest-3943 + assertEqual( + perft( + Board(0x20201000000L, 0x20000000000000L, 0x100000008001L, 0x4000800000000L, 0x0L, 0x2000000000002000L, + 0x24100201002000L, 0x2000020800008001L, true, 0, 0x0L), + 4 + ), + 559196 + ); + + // gentest-3944 + assertEqual( + perft( + Board(0x20201000000L, 0x20000000000000L, 0x100000008001L, 0xc000000000000L, 0x0L, 0x2000000000200000L, + 0x24100201200000L, 0x2008020000008001L, false, 0, 0x0L), + 4 + ), + 550557 + ); + + // gentest-3945 + assertEqual( + perft( + Board(0x20201000000L, 0x800000000000L, 0x100000008001L, 0x4000000080000L, 0x0L, 0x2000000000200000L, + 0x4900201200000L, 0x2000020000088001L, true, 0, 0x0L), + 4 + ), + 106557 + ); + + // gentest-3946 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x100000008001L, 0x4000000040000L, 0x0L, 0x2000000040000000L, + 0x4900340000000L, 0x2000020000048001L, false, 0, 0x0L), + 4 + ), + 379059 + ); + + // gentest-3947 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x200100000000200L, 0x40000L, 0x0L, 0x2000000040000000L, + 0x900340040000L, 0x2200020000000200L, true, 0, 0x0L), + 4 + ), + 285285 + ); + + // gentest-3948 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x200000004000004L, 0x200000L, 0x0L, 0x2000000040000000L, + 0x800344200000L, 0x2200020000000004L, false, 0, 0x0L), + 4 + ), + 66120 + ); + + // gentest-3949 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x4000024000000L, 0x2000L, 0x0L, 0x2000000040000000L, + 0x800344002000L, 0x2004020020000000L, true, 0, 0x0L), + 4 + ), + 147386 + ); + + // gentest-3950 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x4000004000004L, 0x4000L, 0x0L, 0x2000000000200000L, + 0x800304204000L, 0x2004020000000004L, false, 0, 0x0L), + 4 + ), + 283863 + ); + + // gentest-3951 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x4200000000020L, 0x4000L, 0x0L, 0x2000000000200000L, + 0x800300204020L, 0x2004220000000000L, true, 0, 0x0L), + 4 + ), + 287941 + ); + + // gentest-3952 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x8004000000000020L, 0x1000L, 0x0L, 0x2000000010000000L, + 0x800310001020L, 0xa004020000000000L, false, 0, 0x0L), + 4 + ), + 174370 + ); + + // gentest-3953 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x8000000000400020L, 0x800L, 0x0L, 0x1000000010000000L, + 0x800310000820L, 0x9000020000400000L, true, 0, 0x0L), + 4 + ), + 293627 + ); + + // gentest-3954 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x8200000000000020L, 0x200L, 0x0L, 0x1000000010000000L, + 0x800310000220L, 0x9200020000000000L, false, 0, 0x0L), + 4 + ), + 224044 + ); + + // gentest-3955 + assertEqual( + perft( + Board(0x20300000000L, 0x800000000000L, 0x8000000020004000L, 0x200L, 0x0L, 0x8000010000000L, + 0x800310004200L, 0x8008020020000000L, true, 0, 0x0L), + 4 + ), + 257631 + ); + + // gentest-3956 + assertEqual( + perft( + Board(0x20300000000L, 0x2000000000L, 0x8000000020000020L, 0x200L, 0x0L, 0x100010000000L, + 0x2310000220L, 0x8000120020000000L, false, 0, 0x0L), + 4 + ), + 283569 + ); + + // gentest-3957 + assertEqual( + perft( + Board(0x20300000000L, 0x2000000000L, 0x8000000004100000L, 0x200L, 0x0L, 0x200010000000L, + 0x2314000200L, 0x8000220000100000L, true, 0, 0x0L), + 4 + ), + 178246 + ); + + // gentest-3958 + assertEqual( + perft( + Board(0x20300000000L, 0x2000000000L, 0x8000000400080000L, 0x2000000L, 0x0L, 0x200010000000L, + 0x2312080000L, 0x8000220400000000L, false, 0, 0x0L), + 4 + ), + 120409 + ); + + // gentest-3959 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-3960 + assertEqual( + perft( + Board(0xff00001800e700L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1800e7ffL, 0xbfff800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 635081 + ); + + // gentest-3961 + assertEqual( + perft( + Board(0xfb04001800e700L, 0x200800000000042L, 0x2400000000000024L, 0x4100000000000081L, + 0x800008000000000L, 0x1000000000000010L, 0x801800e7f7L, 0x7ffb840000000000L, true, 0, + 0x100000000000081L), + 4 + ), + 849866 + ); + + // gentest-3962 + assertEqual( + perft( + Board(0xfb04001800e700L, 0x200800000000042L, 0x2400000000000024L, 0x4100000000000081L, 0x24000000000L, + 0x1000000000000010L, 0x401800e7f7L, 0x77fb860000000000L, false, 0, 0x100000000000081L), + 4 + ), + 1275760 + ); + + // gentest-3963 + assertEqual( + perft( + Board(0xfb04003800c500L, 0x200800000000042L, 0x2400000000000024L, 0x4100000000000081L, 0x4000040000L, + 0x1000000000000010L, 0x403800c5f7L, 0x77fb840000040000L, true, 0, 0x100000000000081L), + 4 + ), + 193007 + ); + + // gentest-3964 + assertEqual( + perft( + Board(0xfb04003800c500L, 0x810000000042L, 0x2400000000000820L, 0x4100000000000081L, 0x4000040000L, + 0x1000000000001000L, 0x403800dde3L, 0x75fb850000040000L, false, 0, 0x100000000000000L), + 4 + ), + 1146374 + ); + + // gentest-3965 + assertEqual( + perft( + Board(0xfb04003800c500L, 0x810000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x4000000010L, + 0x1000000000001000L, 0x403810d5e3L, 0xb5fb850000000010L, true, 0, 0x100000000000000L), + 4 + ), + 82223 + ); + + // gentest-3966 + assertEqual( + perft( + Board(0xfb04003801c400L, 0x810000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x4002000000L, + 0x1000000000080000L, 0x403819c4e3L, 0xb5fb850002000000L, false, 0, 0x100000000000000L), + 4 + ), + 903584 + ); + + // gentest-3967 + assertEqual( + perft( + Board(0xdb24003800c400L, 0x10000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800000010000L, + 0x1000000000080000L, 0x80003818c4e3L, 0xb5db250000010000L, true, 0, 0x100000000000000L), + 4 + ), + 152504 + ); + + // gentest-3968 + assertEqual( + perft( + Board(0xdb24003800c400L, 0x10000000042L, 0x2400000000101000L, 0x8100000000000081L, 0x800001000000L, + 0x1000000000000800L, 0x80003810dcc3L, 0xb5db250001000000L, false, 0, 0x100000000000000L), + 4 + ), + 948284 + ); + + // gentest-3969 + assertEqual( + perft( + Board(0xdb24003800c400L, 0x4000000000042L, 0x2400000000101000L, 0x8100000000000081L, 0x800002000000L, + 0x1000000000000008L, 0x80003810d4cbL, 0xb5df240002000000L, true, 0, 0x100000000000000L), + 4 + ), + 1587760 + ); + + // gentest-3970 + assertEqual( + perft( + Board(0xd924023800c400L, 0x4000000000042L, 0x2400000000100020L, 0x8100000000000081L, 0x800002000000L, + 0x1000000000000004L, 0x80003810c4e7L, 0xb5dd240202000000L, false, 0, 0x100000000000000L), + 4 + ), + 1058260 + ); + + // gentest-3971 + assertEqual( + perft( + Board(0x99a4023800c400L, 0x4000000000042L, 0x2002000000100020L, 0x8100000100000080L, 0x2000000L, + 0x1000000000000004L, 0x13810c4e6L, 0xb19fa40202000000L, true, 0, 0x100000000000000L), + 4 + ), + 885082 + ); + + // gentest-3972 + assertEqual( + perft( + Board(0x99a4023800c400L, 0x4000000000040L, 0x2002000000101000L, 0x8100000100000080L, 0x0L, + 0x1000000000000002L, 0x13810d4c2L, 0xb19fa40200000000L, false, 0, 0x100000000000000L), + 4 + ), + 551317 + ); + + // gentest-3973 + assertEqual( + perft( + Board(0x9924803a00c400L, 0x4000000200000L, 0x2002000000101000L, 0x8100000100000080L, 0x0L, + 0x1000000000000002L, 0x13830d482L, 0xb19f248002000000L, true, 0, 0x100000000000000L), + 4 + ), + 1327820 + ); + + // gentest-3974 + assertEqual( + perft( + Board(0x9924803a00c400L, 0x4001000000000L, 0x2400000000101000L, 0x8100000100000080L, 0x0L, + 0x1000000000000100L, 0x113810d580L, 0xb59d248002000000L, false, 0, 0x100000000000000L), + 4 + ), + 890255 + ); + + // gentest-3975 + assertEqual( + perft( + Board(0x9924803a00c400L, 0x500000000000L, 0x2400000000101000L, 0x4100000100000080L, 0x0L, + 0x1000000000000100L, 0x40013810d580L, 0x7599348002000000L, true, 0, 0x100000000000000L), + 4 + ), + 1532493 + ); + + // gentest-3976 + assertEqual( + perft( + Board(0x9924803a00c400L, 0x500000000000L, 0x2400000000101000L, 0x4200000200000080L, 0x0L, + 0x1000000000000002L, 0x40023810d482L, 0x7699348002000000L, false, 0, 0x0L), + 4 + ), + 1690376 + ); + + // gentest-3977 + assertEqual( + perft( + Board(0x992480ba004400L, 0x4400000000000L, 0x2400000000101000L, 0x4200000200000080L, 0x0L, + 0x800000000000002L, 0x4002b8105482L, 0x6e9d248002000000L, true, 0, 0x0L), + 4 + ), + 1557318 + ); + + // gentest-3978 + assertEqual( + perft( + Board(0x992480ba004400L, 0x410000000000L, 0x2400000000003000L, 0x4202000000000080L, 0x0L, + 0x800000000000002L, 0x24000b8007482L, 0x6e99258002000000L, false, 0, 0x0L), + 4 + ), + 694478 + ); + + // gentest-3979 + assertEqual( + perft( + Board(0x9904a0ba004400L, 0x8000000400000000L, 0x2400000000003000L, 0x4202000000000080L, 0x0L, + 0x800000000000002L, 0x80020000b8007482L, 0x6e9904a402000000L, true, 0, 0x0L), + 4 + ), + 1189630 + ); + + // gentest-3980 + assertEqual( + perft( + Board(0x8904b0ba400400L, 0x8000000400000000L, 0x2400000000001010L, 0x4202000000000080L, 0x0L, + 0x800000000000002L, 0x80020000b8401492L, 0x6e8904b402000000L, false, 0, 0x0L), + 4 + ), + 1189326 + ); + + // gentest-3981 + assertEqual( + perft( + Board(0x810cb0ba400400L, 0x8000000400000000L, 0x2400000000001010L, 0x242000000800000L, 0x0L, + 0x800000000000002L, 0x80020000b8c01412L, 0x2ec10cb402000000L, true, 0, 0x0L), + 4 + ), + 1351782 + ); + + // gentest-3982 + assertEqual( + perft( + Board(0x810cb0aa400400L, 0x8000000400000000L, 0x2008000000003000L, 0x242000000800000L, 0x0L, + 0x800000000000002L, 0x80020020a8c03402L, 0x2ac90c9402000000L, false, 0, 0x0L), + 4 + ), + 1142726 + ); + + // gentest-3983 + assertEqual( + perft( + Board(0x8104b8aa400400L, 0x8002000000000000L, 0x2008000000001040L, 0x240000000800000L, 0x0L, + 0x800000000000002L, 0x80000020a8c01442L, 0x2acb049802000000L, true, 0, 0x0L), + 4 + ), + 592841 + ); + + // gentest-3984 + assertEqual( + perft( + Board(0x8104b8aa440000L, 0x8002000000000000L, 0x8080000009000L, 0x240000000800000L, 0x0L, + 0x800000000000002L, 0x80000020a8c49002L, 0xacb0c9802000000L, false, 0, 0x0L), + 4 + ), + 476999 + ); + + // gentest-3985 + assertEqual( + perft( + Board(0x8000bdea040000L, 0x8002000000000000L, 0x8080000009000L, 0x240000000800000L, 0x0L, + 0x800000000000002L, 0x80000020e8849002L, 0xaca089d02000000L, true, 0, 0x0L), + 4 + ), + 716051 + ); + + // gentest-3986 + assertEqual( + perft( + Board(0x80209dea040000L, 0x8002000000000000L, 0x8080000009000L, 0x200400000800000L, 0x0L, + 0x800000000000400L, 0x80002000e8849400L, 0xa8a489d02000000L, false, 0, 0x0L), + 4 + ), + 746689 + ); + + // gentest-3987 + assertEqual( + perft( + Board(0x80209de8040000L, 0x8002000000000000L, 0x8080000009000L, 0x200004000100000L, 0x0L, + 0x800000000000400L, 0x80002000e8109400L, 0xa8a08dd00040000L, true, 0, 0x0L), + 4 + ), + 704328 + ); + + // gentest-3988 + assertEqual( + perft( + Board(0x80201de8040000L, 0x8002000000000000L, 0x8090000008000L, 0x200004000400000L, 0x0L, + 0x800000000000400L, 0x80002100a8408400L, 0xa8a085d40040000L, false, 0, 0x0L), + 4 + ), + 563987 + ); + + // gentest-3989 + assertEqual( + perft( + Board(0xa00019ec040000L, 0x8002000000000000L, 0x8090000008000L, 0x200004000400000L, 0x0L, + 0x10000000000400L, 0x80200100a8408400L, 0x29a085944040000L, true, 0, 0x0L), + 4 + ), + 654993 + ); + + // gentest-3990 + assertEqual( + perft( + Board(0xa00019ec040000L, 0x8000000000000000L, 0x80c0000008000L, 0x200002000400000L, 0x0L, + 0x10000000000400L, 0x80200400a8408400L, 0x298083944040000L, false, 0, 0x0L), + 4 + ), + 731805 + ); + + // gentest-3991 + assertEqual( + perft( + Board(0xa00019ec040000L, 0x0L, 0xc000200008000L, 0x8000002000400000L, 0x0L, 0x10000000000400L, + 0x200002a8408400L, 0x809c003944040000L, true, 0, 0x0L), + 4 + ), + 558950 + ); + + // gentest-3992 + assertEqual( + perft( + Board(0x800019ec040000L, 0x0L, 0x200c000200008000L, 0x8000002000004000L, 0x0L, 0x20000000000400L, + 0x20000002a800c400L, 0x80ac003944040000L, false, 0, 0x0L), + 4 + ), + 532585 + ); + + // gentest-3993 + assertEqual( + perft( + Board(0x800019ec040000L, 0x0L, 0x2208000200008000L, 0x8000002000000800L, 0x0L, 0x4000000000000400L, + 0x20000002a8008c00L, 0xc288003944040000L, true, 0, 0x0L), + 4 + ), + 388131 + ); + + // gentest-3994 + assertEqual( + perft( + Board(0x8000996c040000L, 0x0L, 0x2208000200008000L, 0x8000004000000800L, 0x0L, 0x4000000000000004L, + 0x2000008228008804L, 0xc288005944040000L, false, 0, 0x0L), + 4 + ), + 401320 + ); + + // gentest-3995 + assertEqual( + perft( + Board(0x8000996c040000L, 0x0L, 0x208000200008000L, 0x8000004000000800L, 0x0L, 0x40000000000008L, + 0x8228008808L, 0x82c8005944040000L, true, 0, 0x0L), + 4 + ), + 408379 + ); + + // gentest-3996 + assertEqual( + perft( + Board(0x8080196c040000L, 0x0L, 0x200040001008000L, 0x8000004000000800L, 0x0L, 0x40000000000008L, + 0x800029008808L, 0x82c0045944040000L, false, 0, 0x0L), + 4 + ), + 64823 + ); + + // gentest-3997 + assertEqual( + perft( + Board(0x8080196c040000L, 0x0L, 0xc0001008000L, 0x8000004000004000L, 0x0L, 0x400000000008L, + 0x80002900c008L, 0x80804c5944040000L, true, 0, 0x0L), + 4 + ), + 411562 + ); + + // gentest-3998 + assertEqual( + perft( + Board(0x80801964040000L, 0x0L, 0x80201000040L, 0x8000004000004000L, 0x0L, 0x400000000008L, + 0x801021004048L, 0x8080484b44040000L, false, 0, 0x0L), + 4 + ), + 511603 + ); + + // gentest-3999 + assertEqual( + perft( + Board(0x80801924440000L, 0x0L, 0xc0001100000L, 0x8000004000004000L, 0x0L, 0x400000000008L, + 0x801021104008L, 0x80804c4904440000L, true, 0, 0x0L), + 4 + ), + 622510 + ); + + // gentest-4000 + assertEqual( + perft( + Board(0x80801924440000L, 0x0L, 0xe0001000000L, 0x1000004000000400L, 0x0L, 0x400000000008L, + 0x821021000408L, 0x10804c4904440000L, false, 0, 0x0L), + 4 + ), + 702782 + ); + + def batch10(): Unit = + // gentest-4001 + assertEqual( + perft( + Board(0x80800924440000L, 0x0L, 0xc0001002000L, 0x9000000400L, 0x0L, 0x400000000008L, 0x800021002408L, + 0x804c9904440000L, true, 0, 0x0L), + 4 + ), + 456739 + ); + + // gentest-4002 + assertEqual( + perft( + Board(0x80800924440000L, 0x0L, 0xc0000020040L, 0x1080000400L, 0x0L, 0x400000000008L, 0x800020020448L, + 0x804c1984440000L, false, 0, 0x0L), + 4 + ), + 609159 + ); + + // gentest-4003 + assertEqual( + perft( + Board(0x80800825400000L, 0x0L, 0xc0000020040L, 0x1080040000L, 0x0L, 0x20000000000008L, + 0x800020060048L, 0xa00c1885400000L, true, 0, 0x0L), + 4 + ), + 776762 + ); + + // gentest-4004 + assertEqual( + perft( + Board(0x80800825400000L, 0x0L, 0xe0000020000L, 0x10000080000400L, 0x0L, 0x20000000000008L, + 0x820020020408L, 0xb00c0885400000L, false, 0, 0x0L), + 4 + ), + 911577 + ); + + // gentest-4005 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40020120000L, 0x10000000008400L, 0x0L, 0x20000000000008L, + 0x800000120408L, 0xb0040825408000L, true, 0, 0x0L), + 4 + ), + 841967 + ); + + // gentest-4006 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40020020800L, 0x10000000009000L, 0x0L, 0x1000000000000008L, + 0x800000021808L, 0x1090040825408000L, false, 0, 0x0L), + 4 + ), + 506835 + ); + + // gentest-4007 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40000000e00L, 0x10000000009000L, 0x0L, 0x1000000000000008L, + 0x800000001c08L, 0x1090040805408200L, true, 0, 0x0L), + 4 + ), + 634324 + ); + + // gentest-4008 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40028000400L, 0x1000000000c000L, 0x0L, 0x1000000000000008L, + 0x800020004408L, 0x109004080d408000L, false, 0, 0x0L), + 4 + ), + 854901 + ); + + // gentest-4009 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40028000400L, 0x10a000L, 0x0L, 0x1000000000000008L, 0x800020002408L, + 0x108004080d508000L, true, 0, 0x0L), + 4 + ), + 714325 + ); + + // gentest-4010 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x440028000000L, 0x10a000L, 0x0L, 0x8000000000800L, 0xc00020002800L, + 0x8804080d508000L, false, 0, 0x0L), + 4 + ), + 610453 + ); + + // gentest-4011 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40028000400L, 0x102080L, 0x0L, 0x800000000000800L, 0x800020002c00L, + 0x88004080d500080L, true, 0, 0x0L), + 4 + ), + 677471 + ); + + // gentest-4012 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x41000000400L, 0x300080L, 0x0L, 0x800000000000800L, 0x800000200c00L, + 0x880041805500080L, false, 0, 0x0L), + 4 + ), + 517849 + ); + + // gentest-4013 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x41000020000L, 0x201080L, 0x0L, 0x1000000000000800L, 0x800000220800L, + 0x1080041805401080L, true, 0, 0x0L), + 4 + ), + 19092 + ); + + // gentest-4014 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40000060000L, 0x20000080L, 0x0L, 0x1000000000001000L, + 0x800020021000L, 0x1080040805440080L, false, 0, 0x0L), + 4 + ), + 327939 + ); + + // gentest-4015 + assertEqual( + perft( + Board(0x80800805400000L, 0x0L, 0x40000060000L, 0x20001000000000L, 0x0L, 0x1000000000001000L, + 0x20800000021000L, 0x1080041805440000L, true, 0, 0x0L), + 4 + ), + 36425 + ); + + // gentest-4016 + assertEqual( + perft( + Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x1001000000000L, 0x0L, 0x1000000000200000L, + 0x1800000200000L, 0x1080041801460000L, false, 0, 0x0L), + 4 + ), + 111822 + ); + + // gentest-4017 + assertEqual( + perft( + Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x100008000000000L, 0x0L, 0x8000000200000L, + 0x100800000200000L, 0x88048801460000L, true, 0, 0x0L), + 4 + ), + 186826 + ); + + // gentest-4018 + assertEqual( + perft( + Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x20000080000000L, 0x0L, 0x8000000200000L, + 0x20800000200000L, 0x88040881460000L, false, 0, 0x0L), + 4 + ), + 31087 + ); + + // gentest-4019 + assertEqual( + perft( + Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x40000002000000L, 0x0L, 0x400000000200000L, + 0x40800000200000L, 0x480040803460000L, true, 0, 0x0L), + 4 + ), + 156807 + ); + + // gentest-4020 + assertEqual( + perft( + Board(0x80800801420000L, 0x0L, 0x40000040000L, 0x200080000000000L, 0x0L, 0x400000000200000L, + 0x880000200000L, 0x680040801460000L, false, 0, 0x0L), + 4 + ), + 105535 + ); + + // gentest-4021 + assertEqual( + perft( + Board(0x80800801420000L, 0x0L, 0x200L, 0x200040000000000L, 0x0L, 0x8000000200000L, 0x840000200000L, + 0x288000801420200L, true, 0, 0x0L), + 4 + ), + 189765 + ); + + // gentest-4022 + assertEqual( + perft( + Board(0x80800801020000L, 0x0L, 0x1L, 0x200000000000004L, 0x0L, 0x8000000400000L, 0x800000400004L, + 0x288000801020001L, false, 0, 0x0L), + 4 + ), + 236309 + ); + + // gentest-4023 + assertEqual( + perft( + Board(0x80800800030000L, 0x0L, 0x1L, 0x204000000000000L, 0x0L, 0x800000000400000L, 0x4800000400000L, + 0xa80000800030001L, true, 0, 0x0L), + 4 + ), + 126158 + ); + + // gentest-4024 + assertEqual( + perft( + Board(0x80800800030000L, 0x0L, 0x8000000000000000L, 0x201000000000000L, 0x0L, 0x800000000400000L, + 0x1800000400000L, 0x8a80000800030000L, false, 0, 0x0L), + 4 + ), + 107214 + ); + + // gentest-4025 + assertEqual( + perft( + Board(0x80800800010200L, 0x0L, 0x8000000000000000L, 0x401000000000000L, 0x0L, 0x800000000004000L, + 0x1800000004000L, 0x8c80000800010200L, true, 0, 0x0L), + 4 + ), + 157631 + ); + + // gentest-4026 + assertEqual( + perft( + Board(0x80800800000200L, 0x0L, 0x40000L, 0x400000001000000L, 0x0L, 0x800000000004000L, + 0x800001004000L, 0xc80000800040200L, false, 0, 0x0L), + 4 + ), + 230041 + ); + + // gentest-4027 + assertEqual( + perft( + Board(0x80800008000200L, 0x0L, 0x800L, 0x400000004000000L, 0x0L, 0x800000000004000L, 0x800004004000L, + 0xc80000008000a00L, true, 0, 0x0L), + 4 + ), + 146504 + ); + + // gentest-4028 + assertEqual( + perft( + Board(0x80800000000200L, 0x0L, 0x800L, 0x400000008000000L, 0x0L, 0x4000000008000L, 0x800008008000L, + 0x484000000000a00L, false, 0, 0x0L), + 4 + ), + 172323 + ); + + // gentest-4029 + assertEqual( + perft( + Board(0x80800000000200L, 0x0L, 0x20000000L, 0x200000008000000L, 0x0L, 0x4000000000080L, + 0x800008000080L, 0x284000020000200L, true, 0, 0x0L), + 4 + ), + 125315 + ); + + // gentest-4030 + assertEqual( + perft( + Board(0x80800000000200L, 0x0L, 0x400000L, 0x200000000010000L, 0x0L, 0x4000000000080L, 0x800000010080L, + 0x284000000400200L, false, 0, 0x0L), + 4 + ), + 152378 + ); + + // gentest-4031 + assertEqual( + perft( + Board(0x80800000000000L, 0x0L, 0x400000L, 0x2200000L, 0x2L, 0x4000000000080L, 0x800000200080L, + 0x84000002400002L, true, 0, 0x0L), + 4 + ), + 33171 + ); + + // gentest-4032 + assertEqual( + perft( + Board(0x80800000000000L, 0x0L, 0x400000L, 0x2040000L, 0x2000000000L, 0x4000000004000L, + 0x800000044000L, 0x84002002400000L, false, 0, 0x0L), + 4 + ), + 70273 + ); + + // gentest-4033 + assertEqual( + perft( + Board(0x80800000000000L, 0x0L, 0x10L, 0x2000004L, 0x2000000000L, 0x2000000004000L, 0x800000004004L, + 0x82002002000010L, true, 0, 0x0L), + 4 + ), + 287906 + ); + + // gentest-4034 + assertEqual( + perft( + Board(0x80800000000000L, 0x0L, 0x10L, 0x2000000L, 0x2000000000L, 0x40000000080L, 0x800000000080L, + 0x80042002000010L, false, 0, 0x0L), + 4 + ), + 18322 + ); + + // gentest-4035 + assertEqual( + perft( + Board(0x80800000000000L, 0x0L, 0x10L, 0x200L, 0x200000L, 0x40000000040L, 0x800000000040L, + 0x80040000200210L, true, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-4036 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4037 + assertEqual( + perft( + Board(0x7f80000048b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x48b7ffL, 0xff7f800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 326113 + ); + + // gentest-4038 + assertEqual( + perft( + Board(0x5ba4000148b600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x148b6ffL, 0xff5ba40000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 348681 + ); + + // gentest-4039 + assertEqual( + perft( + Board(0x4ba410014ab400L, 0x4200000000000042L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x214ab4fbL, 0xff4ba41000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 578559 + ); + + // gentest-4040 + assertEqual( + perft( + Board(0x43ac10014ab400L, 0x4200000000000042L, 0x2400000020000020L, 0x8100000000000180L, + 0x10000000000008L, 0x1000000000000010L, 0x214ab5faL, 0xf753ac1000000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 738264 + ); + + // gentest-4041 + assertEqual( + perft( + Board(0x43ac1100ca3400L, 0x4200000000000042L, 0x2000100020000020L, 0x8100000000000180L, + 0x10000000000008L, 0x1000000000000010L, 0x120ca35faL, 0xf353bc1000000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 782152 + ); + + // gentest-4042 + assertEqual( + perft( + Board(0x41ac1310ca2400L, 0x4200000000000042L, 0x2000000820000020L, 0x8100000000000180L, + 0x10000000000008L, 0x1000000000000010L, 0x130ca25faL, 0xf351ac1a00000000L, true, 41, + 0x8100000000000080L), + 4 + ), + 809788 + ); + + // gentest-4043 + assertEqual( + perft( + Board(0x41ac1310ca2400L, 0x4200000000000840L, 0x2000100020000020L, 0x8100000000000180L, + 0x10000000000001L, 0x1000000000000010L, 0x130ca2df1L, 0xf351bc1200000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 895205 + ); + + // gentest-4044 + assertEqual( + perft( + Board(0x412c9112ca2400L, 0x4200000000000840L, 0x2000100020000020L, 0x8100000001000080L, + 0x10000000000001L, 0x1000000000000010L, 0x131ca2cf1L, 0xf3513c9002000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 994766 + ); + + // gentest-4045 + assertEqual( + perft( + Board(0x412c91924a2400L, 0x4200000000000840L, 0x2000000820000020L, 0x8100000001000080L, + 0x10000000040000L, 0x1000000000000010L, 0x1b14e2cf0L, 0xf3512c9802000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 830044 + ); + + // gentest-4046 + assertEqual( + perft( + Board(0x412c91924a2400L, 0x4200000000000840L, 0x2020800000000020L, 0x8100000001000080L, + 0x10000000040000L, 0x1000000000000010L, 0x8001914e2cf0L, 0xf3712c9002000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 735487 + ); + + // gentest-4047 + assertEqual( + perft( + Board(0x412c91924a2400L, 0x4000010000000042L, 0x2020800000000020L, 0x8100000001000080L, + 0x10000000000001L, 0x1000000000000010L, 0x8001914a24f3L, 0xf1712d9002000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 986483 + ); + + // gentest-4048 + assertEqual( + perft( + Board(0x412c81924a2400L, 0x4000010000000042L, 0x2020000000000020L, 0x200800001000080L, + 0x10001000000000L, 0x1000000000000010L, 0x11914a24f2L, 0x7271ad8002000000L, true, 0, 0x80L), + 4 + ), + 1121380 + ); + + // gentest-4049 + assertEqual( + perft( + Board(0x412c81926a0400L, 0x4000010000000042L, 0x2020000000000020L, 0x8200000001000080L, + 0x10000000000001L, 0x1000000000000010L, 0x1916a04f3L, 0xf2712d8002000000L, false, 0, 0x80L), + 4 + ), + 842800 + ); + + // gentest-4050 + assertEqual( + perft( + Board(0x410c81926a0400L, 0x4000010000000042L, 0x2020000000000020L, 0x8000020001000080L, + 0x10200000000000L, 0x8000000000010L, 0x2001916a04f2L, 0xe0790f8002000000L, true, 0, 0x80L), + 4 + ), + 1228957 + ); + + // gentest-4051 + assertEqual( + perft( + Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000100000000020L, 0x8000020000000180L, + 0x10004000000000L, 0x8000000000010L, 0x41906a05f2L, 0xe0591f8002000000L, false, 0, 0x80L), + 4 + ), + 1368127 + ); + + // gentest-4052 + assertEqual( + perft( + Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000100000000020L, 0x8000020000000180L, + 0x400000040000000L, 0x8000000000010L, 0x1d06a05f2L, 0xe4491f8002000000L, true, 0, 0x80L), + 4 + ), + 866320 + ); + + // gentest-4053 + assertEqual( + perft( + Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000100000800000L, 0x8000020000000180L, + 0x200000040000000L, 0x8000000002000L, 0x1d0ea25c2L, 0xe2491f8002000000L, false, 0, 0x0L), + 4 + ), + 691400 + ); + + // gentest-4054 + assertEqual( + perft( + Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000000000800000L, 0x8002000000000180L, + 0x200100000000000L, 0x800000000002000L, 0x100190ea25c2L, 0xea430d8002000000L, true, 0, 0x0L), + 4 + ), + 639090 + ); + + // gentest-4055 + assertEqual( + perft( + Board(0x410c81926a0400L, 0x4000010000000042L, 0x2000000000800000L, 0x8020000000000081L, + 0x200800000000000L, 0x800000000002000L, 0x800190ea24c3L, 0xea610d8002000000L, false, 0, 0x0L), + 4 + ), + 1024716 + ); + + // gentest-4056 + assertEqual( + perft( + Board(0x14c81926a0400L, 0x4000010000000042L, 0x2000000000800000L, 0x8020000000000081L, + 0x820000000000L, 0x800000000000020L, 0x800190ea04e3L, 0xe8214f8002000000L, true, 0, 0x0L), + 4 + ), + 1314681 + ); + + // gentest-4057 + assertEqual( + perft( + Board(0x14489966a0000L, 0x4000010000000042L, 0x2000000000800000L, 0x8020000000000081L, + 0x820000000000L, 0x800000000000020L, 0x800194ea00e3L, 0xe821478802000000L, false, 0, 0x0L), + 4 + ), + 1596634 + ); + + // gentest-4058 + assertEqual( + perft( + Board(0x14489966a0000L, 0x4000010000000042L, 0x2008000000000000L, 0x8020000000000081L, + 0x820000000000L, 0x800000000000020L, 0x88001946a00e3L, 0xe821478802000000L, true, 0, 0x0L), + 4 + ), + 1818075 + ); + + // gentest-4059 + assertEqual( + perft( + Board(0x144899a620000L, 0x4000010000000042L, 0x2008000000000000L, 0x8080000000000081L, + 0x820000000000L, 0x800000000000020L, 0x88009986200e3L, 0xe881478002000000L, false, 0, 0x0L), + 4 + ), + 973793 + ); + + // gentest-4060 + assertEqual( + perft( + Board(0x104899a620000L, 0x4000010000000042L, 0x8000400000000L, 0x8080000000000081L, 0x400200000000L, + 0x800000000000020L, 0x84009986200e3L, 0xc881058602000000L, true, 0, 0x0L), + 4 + ), + 107406 + ); + + // gentest-4061 + assertEqual( + perft( + Board(0x100899a620000L, 0x4000010000001002L, 0x8000400000000L, 0x8080000000000180L, 0x400200000000L, + 0x800000000000020L, 0x84001986211a2L, 0xc881018e02000000L, false, 0, 0x0L), + 4 + ), + 1415607 + ); + + // gentest-4062 + assertEqual( + perft( + Board(0x100899a620000L, 0x4000010000001002L, 0x400000000L, 0x8000800000000180L, 0x4200000000L, + 0x8000000000020L, 0x41986211a2L, 0xc009818e02000000L, true, 0, 0x0L), + 4 + ), + 1048488 + ); + + // gentest-4063 + assertEqual( + perft( + Board(0x100899a620000L, 0x4000010000001002L, 0x400000000L, 0x8080000001000080L, 0x400200000000L, + 0x8000000000020L, 0x4001996210a2L, 0xc089018e02000000L, false, 0, 0x0L), + 4 + ), + 803926 + ); + + // gentest-4064 + assertEqual( + perft( + Board(0x100899a620000L, 0x4000010000001002L, 0x400000000L, 0x8080000001000080L, 0x800200000000L, + 0x2000000000020L, 0x8001996210a2L, 0xc083018e02000000L, true, 0, 0x0L), + 4 + ), + 886202 + ); + + // gentest-4065 + assertEqual( + perft( + Board(0x10089ba420000L, 0x4000010000001002L, 0x400000000L, 0x8080000001800000L, 0x8800000000000L, + 0x2000000000020L, 0x8001b9c21022L, 0xc08b018c02000000L, false, 0, 0x0L), + 4 + ), + 969539 + ); + + // gentest-4066 + assertEqual( + perft( + Board(0x10089ba420000L, 0x4200000000001800L, 0x400000000L, 0x8080000001800000L, 0x8800000000000L, + 0x4000000000020L, 0x8001b9c21820L, 0xc28d008c02000000L, true, 0, 0x0L), + 4 + ), + 984675 + ); + + // gentest-4067 + assertEqual( + perft( + Board(0x10089ba420000L, 0x4200000000000804L, 0x20000000000L, 0x8080000001800000L, 0x8010000000000L, + 0x4000000000020L, 0x101b9c20824L, 0xc28d028802000000L, false, 0, 0x0L), + 4 + ), + 672552 + ); + + // gentest-4068 + assertEqual( + perft( + Board(0x289ba420000L, 0x4200000000000804L, 0x0L, 0x8080000001800000L, 0x10000000000000L, + 0x4000000000020L, 0x1b9c20824L, 0xc294028802000000L, true, 0, 0x0L), + 4 + ), + 500251 + ); + + // gentest-4069 + assertEqual( + perft( + Board(0x289fa020000L, 0x4200000000000804L, 0x0L, 0x8080000001008000L, 0x80000000000L, + 0x4000000000020L, 0x1f9028824L, 0xc2840a8802000000L, false, 0, 0x0L), + 4 + ), + 726542 + ); + + // gentest-4070 + assertEqual( + perft( + Board(0x8bda020000L, 0x4200000000200004L, 0x0L, 0x8080000001008000L, 0x20000000L, 0x4000000000020L, + 0x1d9228024L, 0xc284008a22000000L, true, 0, 0x0L), + 4 + ), + 746564 + ); + + // gentest-4071 + assertEqual( + perft( + Board(0x8bda020000L, 0x4000040000200004L, 0x0L, 0x8080000001000080L, 0x20000000L, 0x4000000000010L, + 0x1d9220094L, 0xc084048a22000000L, false, 0, 0x0L), + 4 + ), + 753409 + ); + + // gentest-4072 + assertEqual( + perft( + Board(0x8bda020000L, 0x4000041000000004L, 0x0L, 0x8080000001000080L, 0x8000L, 0x2000000000010L, + 0x11d9020094L, 0xc082048a02008000L, true, 0, 0x0L), + 4 + ), + 616069 + ); + + // gentest-4073 + assertEqual( + perft( + Board(0x8bda020000L, 0x4000040000200004L, 0x0L, 0x8008000000000081L, 0x8000L, 0x2000000000010L, + 0x1d8220095L, 0xc00a048a02008000L, false, 0, 0x0L), + 4 + ), + 688345 + ); + + // gentest-4074 + assertEqual( + perft( + Board(0xcb9a020000L, 0x4000040000200004L, 0x0L, 0x8008000000000081L, 0x2L, 0x2000000000010L, + 0x4198220095L, 0xc00a048a02000002L, true, 0, 0x0L), + 4 + ), + 468200 + ); + + // gentest-4075 + assertEqual( + perft( + Board(0xcb9a020000L, 0x4000040000200004L, 0x0L, 0x8008000000000041L, 0x2L, 0x10000001000L, + 0x4198221045L, 0xc008058a02000002L, false, 0, 0x0L), + 4 + ), + 482587 + ); + + // gentest-4076 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000000100200004L, 0x0L, 0x8004000000000041L, 0x2L, 0x10000001000L, + 0x4888221045L, 0xc004018302000002L, true, 0, 0x0L), + 4 + ), + 554804 + ); + + // gentest-4077 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000000100200004L, 0x0L, 0x8004000000010040L, 0x2L, 0x1000000100000L, + 0x4888330044L, 0xc005008302000002L, false, 0, 0x0L), + 4 + ), + 523073 + ); + + // gentest-4078 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000000100200004L, 0x0L, 0x8010000000010080L, 0x2L, 0x100000000100000L, + 0x4888330084L, 0xc110008302000002L, true, 0, 0x0L), + 4 + ), + 78996 + ); + + // gentest-4079 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x8010000000010080L, 0x1L, 0x100000000002000L, + 0x48882b2080L, 0xc110008302000001L, false, 0, 0x0L), + 4 + ), + 606026 + ); + + // gentest-4080 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x8010000000010080L, 0x100000000000L, + 0x100000000004000L, 0x48882b4080L, 0xc110108302000000L, true, 0, 0x0L), + 4 + ), + 1116942 + ); + + // gentest-4081 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x9000000000000081L, 0x100000000000L, + 0x100000000004000L, 0x48882a4081L, 0xd100108302000000L, false, 0, 0x0L), + 4 + ), + 1228577 + ); + + // gentest-4082 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000000100280000L, 0x0L, 0x80100000000000c0L, 0x10000000L, 0x100000000004000L, + 0x48882a40c0L, 0xc110008312000000L, true, 0, 0x0L), + 4 + ), + 709234 + ); + + // gentest-4083 + assertEqual( + perft( + Board(0xca8a020000L, 0x4000001100200000L, 0x0L, 0x80010000000000c0L, 0x10000000L, 0x100000000002000L, + 0x58882220c0L, 0xc101008312000000L, false, 0, 0x0L), + 4 + ), + 651465 + ); + + // gentest-4084 + assertEqual( + perft( + Board(0xca8a020000L, 0x4008000100200000L, 0x0L, 0x80010000000000c0L, 0x800L, 0x100000000002000L, + 0x80048882220c0L, 0xc101008302000800L, true, 0, 0x0L), + 4 + ), + 39745 + ); + + // gentest-4085 + assertEqual( + perft( + Board(0xca8a020000L, 0x4008000100200000L, 0x0L, 0x80010000000000c0L, 0x2000L, 0x100000020000000L, + 0x80048a82200c0L, 0xc101008302002000L, false, 0, 0x0L), + 4 + ), + 339764 + ); + + // gentest-4086 + assertEqual( + perft( + Board(0xca8a020000L, 0x400a000000000000L, 0x0L, 0x80010000000000c0L, 0x200000L, 0x100001000000000L, + 0x80058880200c0L, 0xc103008202200000L, true, 0, 0x0L), + 4 + ), + 377895 + ); + + // gentest-4087 + assertEqual( + perft( + Board(0xca8a020000L, 0x6002000000000000L, 0x0L, 0x80000000000100c0L, 0x200000L, 0x100100000000000L, + 0x20001048880200c0L, 0xc102008202210000L, false, 0, 0x0L), + 4 + ), + 284660 + ); + + // gentest-4088 + assertEqual( + perft( + Board(0xce82020000L, 0x2000800000000000L, 0x0L, 0x80000000000100c0L, 0x200000L, 0x100100000000000L, + 0x2000104c800200c0L, 0x8100808202210000L, true, 0, 0x0L), + 4 + ), + 546558 + ); + + // gentest-4089 + assertEqual( + perft( + Board(0x4ca82020000L, 0x2000800000000000L, 0x0L, 0x8000000000010081L, 0x40000L, 0x100100000000000L, + 0x2000144880020081L, 0x8100808202050000L, false, 0, 0x0L), + 4 + ), + 518428 + ); + + // gentest-4090 + assertEqual( + perft( + Board(0x4ca82020000L, 0x2000800000000000L, 0x0L, 0x40010000000000a0L, 0x40000L, 0x100100000000000L, + 0x20001448800200a0L, 0x4101808202040000L, true, 0, 0x0L), + 4 + ), + 759721 + ); + + // gentest-4091 + assertEqual( + perft( + Board(0x4ca82020000L, 0x2000800000000000L, 0x0L, 0x40010000000000c0L, 0x800000L, 0x100001000000000L, + 0x20000458800200c0L, 0x4101808202800000L, false, 0, 0x0L), + 4 + ), + 467102 + ); + + // gentest-4092 + assertEqual( + perft( + Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x1004000000080L, 0x400000L, 0x100001000000000L, + 0x2000045880020080L, 0x101808202400000L, true, 0, 0x0L), + 4 + ), + 104381 + ); + + // gentest-4093 + assertEqual( + perft( + Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x1000000400080L, 0x8000L, 0x100100000000000L, + 0x2000140880420080L, 0x101808202008000L, false, 0, 0x0L), + 4 + ), + 522883 + ); + + // gentest-4094 + assertEqual( + perft( + Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x1000000400010L, 0x20000000000L, 0x100100000000000L, + 0x2000140880420010L, 0x101828202000000L, true, 0, 0x0L), + 4 + ), + 630763 + ); + + // gentest-4095 + assertEqual( + perft( + Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x15L, 0x20000000000L, 0x100100000000000L, + 0x2000140880020014L, 0x100828202000001L, false, 0, 0x0L), + 4 + ), + 356458 + ); + + // gentest-4096 + assertEqual( + perft( + Board(0x48a82020000L, 0x2000800000000000L, 0x0L, 0x100001004L, 0x40L, 0x100100000000000L, + 0x2000140880021004L, 0x100808302000040L, true, 0, 0x0L), + 4 + ), + 674154 + ); + + // gentest-4097 + assertEqual( + perft( + Board(0x48a82020000L, 0x8800000000000L, 0x0L, 0x100001400L, 0x8L, 0x100100000000000L, + 0x8140880021400L, 0x100808302000008L, false, 0, 0x0L), + 4 + ), + 362819 + ); + + // gentest-4098 + assertEqual( + perft( + Board(0x48a82020000L, 0x4008000000000000L, 0x0L, 0x110000400L, 0x40L, 0x100100000000000L, + 0x8140890020400L, 0x4100008302000040L, true, 0, 0x0L), + 4 + ), + 676758 + ); + + // gentest-4099 + assertEqual( + perft( + Board(0x4008a82020000L, 0x4000200000000000L, 0x0L, 0x110000400L, 0x400000000000L, 0x100100000000000L, + 0x4300890020400L, 0x4100408302000000L, false, 0, 0x0L), + 4 + ), + 350418 + ); + + // gentest-4100 + assertEqual( + perft( + Board(0x4008a82020000L, 0x4000200000000000L, 0x0L, 0x110040000L, 0x400000000000L, 0x100100000000000L, + 0x4300890060000L, 0x4100408302000000L, true, 0, 0x0L), + 4 + ), + 369752 + ); + + // gentest-4101 + assertEqual( + perft( + Board(0x4008a82020000L, 0x4000000040000000L, 0x0L, 0x1100040000L, 0x400000L, 0x100100000000000L, + 0x41018c0060000L, 0x4100008302400000L, false, 0, 0x0L), + 4 + ), + 474529 + ); + + // gentest-4102 + assertEqual( + perft( + Board(0xa82020000L, 0x10000040000000L, 0x0L, 0x8100040000L, 0x4000000000000L, 0x100100000000000L, + 0x1088c0060000L, 0x114000302000000L, true, 0, 0x0L), + 4 + ), + 488217 + ); + + // gentest-4103 + assertEqual( + perft( + Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x8100040000L, 0x20000000000L, 0x100100000000000L, + 0x988080060000L, 0x110020302000000L, false, 0, 0x0L), + 4 + ), + 484906 + ); + + // gentest-4104 + assertEqual( + perft( + Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x4008000000020L, 0x20000000000L, 0x100100000000000L, + 0x4988080020000L, 0x110020202000020L, true, 0, 0x0L), + 4 + ), + 511834 + ); + + // gentest-4105 + assertEqual( + perft( + Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x200008000000020L, 0x20000000000L, 0x1100000000000L, + 0x200988080020000L, 0x11020202000020L, false, 0, 0x0L), + 4 + ), + 433677 + ); + + // gentest-4106 + assertEqual( + perft( + Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x8000008000000001L, 0x40000000000L, 0x1100000000000L, + 0x8000988080020000L, 0x11040202000001L, true, 0, 0x0L), + 4 + ), + 576087 + ); + + // gentest-4107 + assertEqual( + perft( + Board(0x80282020000L, 0x10800000000000L, 0x0L, 0x800000800000001L, 0x4000000L, 0x1100000000000L, + 0x800980880020000L, 0x11000206000001L, false, 0, 0x0L), + 4 + ), + 560729 + ); + + // gentest-4108 + assertEqual( + perft( + Board(0x80282020000L, 0x4010000000000000L, 0x0L, 0x800000800000040L, 0x4000000L, 0x1100000000000L, + 0x4800180880020000L, 0x11000206000040L, true, 0, 0x0L), + 4 + ), + 391759 + ); + + // gentest-4109 + assertEqual( + perft( + Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x800000800000080L, 0x4000000L, 0x1001000000000L, + 0x800281880020000L, 0x11000206000080L, false, 0, 0x0L), + 4 + ), + 470507 + ); + + // gentest-4110 + assertEqual( + perft( + Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x800000000000088L, 0x40000000000L, 0x2001000000000L, + 0x800281080020008L, 0x12040202000080L, true, 0, 0x0L), + 4 + ), + 725203 + ); + + // gentest-4111 + assertEqual( + perft( + Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x2000000008000080L, 0x4000L, 0x2001000000000L, + 0x2000281088020000L, 0x12000202004080L, false, 0, 0x0L), + 4 + ), + 804650 + ); + + // gentest-4112 + assertEqual( + perft( + Board(0x80282020000L, 0x10200000000000L, 0x0L, 0x2000000008000080L, 0x1000L, 0x2000010000000L, + 0x2000280098020000L, 0x12000202001080L, true, 0, 0x0L), + 4 + ), + 28253 + ); + + // gentest-4113 + assertEqual( + perft( + Board(0x80282020000L, 0x600000000000L, 0x0L, 0x2000000008000080L, 0x1000L, 0x2000000400000L, + 0x2000280088420000L, 0x2400202001080L, false, 0, 0x0L), + 4 + ), + 687574 + ); + + // gentest-4114 + assertEqual( + perft( + Board(0x80282020000L, 0x400010000000L, 0x0L, 0x2000000008000080L, 0x200000L, 0x10000400000L, + 0x2000080098420000L, 0x410202200080L, true, 0, 0x0L), + 4 + ), + 19297 + ); + + // gentest-4115 + assertEqual( + perft( + Board(0x80282020000L, 0x400010000000L, 0x0L, 0x280004L, 0x0L, 0x10000400000L, 0x800906a0000L, + 0x410202000004L, false, 0, 0x0L), + 4 + ), + 352297 + ); + + // gentest-4116 + assertEqual( + perft( + Board(0x80282020000L, 0x1010000000L, 0x0L, 0x280001L, 0x0L, 0x10020000000L, 0x800b02a0000L, + 0x11202000001L, true, 0, 0x0L), + 4 + ), + 271258 + ); + + // gentest-4117 + assertEqual( + perft( + Board(0x80282020000L, 0x1000040000L, 0x0L, 0x280001L, 0x0L, 0x24000000000L, 0x840802e0000L, + 0x21202000001L, false, 0, 0x0L), + 4 + ), + 532307 + ); + + // gentest-4118 + assertEqual( + perft( + Board(0x80282020000L, 0x20000000040000L, 0x0L, 0x280001L, 0x0L, 0x10040000000L, 0x800c02e0000L, + 0x20010202000001L, true, 0, 0x0L), + 4 + ), + 310371 + ); + + // gentest-4119 + assertEqual( + perft( + Board(0x80282020000L, 0x20000000000008L, 0x0L, 0x290000L, 0x0L, 0x10020000000L, 0x800a02a0008L, + 0x20010202010000L, false, 0, 0x0L), + 4 + ), + 122005 + ); + + // gentest-4120 + assertEqual( + perft( + Board(0x8202020000L, 0x80000000008L, 0x0L, 0x290000L, 0x0L, 0x20020000000L, 0x80202a0008L, + 0xa0202010000L, true, 0, 0x0L), + 4 + ), + 216179 + ); + + // gentest-4121 + assertEqual( + perft( + Board(0x8202020000L, 0x80000000008L, 0x0L, 0x880001L, 0x0L, 0x20040000000L, 0x80408a0008L, + 0xa0202000001L, false, 0, 0x0L), + 4 + ), + 320238 + ); + + // gentest-4122 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4123 + assertEqual( + perft( + Board(0x7f80400000bf00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400000bfffL, 0xff7f800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 213463 + ); + + // gentest-4124 + assertEqual( + perft( + Board(0x7b04c00008b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400008b7ffL, 0xff7b048000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 341701 + ); + + // gentest-4125 + assertEqual( + perft( + Board(0x7b04c000883700L, 0x200800000000042L, 0x2400000000100020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40009837fbL, 0xbf7b848000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 390995 + ); + + // gentest-4126 + assertEqual( + perft( + Board(0x6a15c000883700L, 0x200800000000042L, 0x2400000000100020L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x4000983ff3L, 0xbf6a958000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 707778 + ); + + // gentest-4127 + assertEqual( + perft( + Board(0x6a15c000893600L, 0x200800000000042L, 0x410000000100020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40009936fbL, 0x9f7a958000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 608495 + ); + + // gentest-4128 + assertEqual( + perft( + Board(0x6a158000893600L, 0x200800000040040L, 0x400200000100020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x9d36f9L, 0x9f6ab58000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 869646 + ); + + // gentest-4129 + assertEqual( + perft( + Board(0x6a148100893600L, 0x200800000000042L, 0x400200000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x8936ffL, 0x9f6ab48100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 590047 + ); + + // gentest-4130 + assertEqual( + perft( + Board(0x62148902893400L, 0x200800000000042L, 0x400200000000024L, 0x180000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x28934ffL, 0x1fe2b48900000000L, true, 0, + 0x100000000000081L), + 4 + ), + 766788 + ); + + // gentest-4131 + assertEqual( + perft( + Board(0x62148983083400L, 0x200800000000042L, 0x400200000000024L, 0x180000000000081L, 0x8000000000008L, + 0x1000000000000010L, 0x830834ffL, 0x17eab48900000000L, false, 0, 0x100000000000081L), + 4 + ), + 779151 + ); + + // gentest-4132 + assertEqual( + perft( + Board(0x62148983083400L, 0x200800000800002L, 0x410000000000024L, 0x180000000000081L, 0x8000000000008L, + 0x800000000000010L, 0x838834bfL, 0xffa948900000000L, true, 0, 0x81L), + 4 + ), + 706508 + ); + + // gentest-4133 + assertEqual( + perft( + Board(0x62148883281400L, 0x200800020000002L, 0x410000000000024L, 0x180000000000081L, 0x8000000000008L, + 0x800000000000010L, 0xa12814bfL, 0xffa948802000000L, false, 0, 0x81L), + 4 + ), + 758588 + ); + + // gentest-4134 + assertEqual( + perft( + Board(0x62140883281400L, 0x818000000002L, 0x410000000000024L, 0x180000000000081L, 0x8000000000008L, + 0x1000000000000010L, 0x80812814bfL, 0x15fa950802000000L, true, 0, 0x81L), + 4 + ), + 850320 + ); + + // gentest-4135 + assertEqual( + perft( + Board(0x60140a832c1000L, 0x818000000002L, 0x410000000800004L, 0x180000000000081L, 0x8000000000008L, + 0x1000000000000010L, 0x8081ac109fL, 0x15f8950a02000000L, false, 0, 0x81L), + 4 + ), + 1522016 + ); + + // gentest-4136 + assertEqual( + perft( + Board(0x20140a832c1000L, 0x810000000002L, 0x410000000800004L, 0x41000000000081L, 0x8000000000008L, + 0x1000000000000010L, 0x81ac109fL, 0x1479950a02000000L, true, 0, 0x81L), + 4 + ), + 1664224 + ); + + // gentest-4137 + assertEqual( + perft( + Board(0x20140a832c1000L, 0x4000010000010000L, 0x410800000800000L, 0x41000000000081L, 0x8000000000008L, + 0x1000000000000010L, 0x800081ad1099L, 0x5479150a02000000L, false, 0, 0x81L), + 4 + ), + 1846766 + ); + + // gentest-4138 + assertEqual( + perft( + Board(0x20140a932c0000L, 0x4000010000010000L, 0x400800400800000L, 0x140000000000081L, + 0x8000000000008L, 0x1000000000000010L, 0x800091ad0099L, 0x5568150e02000000L, true, 0, 0x81L), + 4 + ), + 2514237 + ); + + // gentest-4139 + assertEqual( + perft( + Board(0x20140a832c0000L, 0x4000010000010000L, 0x400000400900000L, 0x140000000000081L, + 0x10000000000008L, 0x1000000000000010L, 0x881bd0099L, 0x5570150602000000L, false, 0, 0x81L), + 4 + ), + 2972410 + ); + + // gentest-4140 + assertEqual( + perft( + Board(0x20041a832c0000L, 0x4000010000010000L, 0x400000400900000L, 0x140000000000084L, 0x4000000008L, + 0x1000000000000010L, 0x881bd009cL, 0x5560055602000000L, true, 0, 0x80L), + 4 + ), + 3233859 + ); + + // gentest-4141 + assertEqual( + perft( + Board(0x20041a832c0000L, 0x4000010000010000L, 0x400000400100000L, 0x41000000000084L, 0x4000000400L, + 0x1000000000000010L, 0x4000008813d0494L, 0x5061055602000000L, false, 0, 0x80L), + 4 + ), + 3458024 + ); + + // gentest-4142 + assertEqual( + perft( + Board(0x20041aa30c0000L, 0x4004000000010000L, 0x400000400100000L, 0x1400000000084L, 0x4000000400L, + 0x1000000000000010L, 0x4000008a11d0494L, 0x5025445602000000L, true, 0, 0x80L), + 4 + ), + 4425251 + ); + + // gentest-4143 + assertEqual( + perft( + Board(0x20041aa10c0000L, 0x4004000000010000L, 0x400000400000000L, 0x1400000000084L, 0x4000004000L, + 0x1000000000000010L, 0x400000ca1094094L, 0x5025445200040000L, false, 0, 0x80L), + 4 + ), + 3779344 + ); + + // gentest-4144 + assertEqual( + perft( + Board(0x241aa10c0000L, 0x4004000000010000L, 0x400000400000000L, 0x1400000000084L, 0x4020L, + 0x1000000000000010L, 0x400000ca10900b4L, 0x5005641200044000L, true, 0, 0x80L), + 4 + ), + 2510256 + ); + + // gentest-4145 + assertEqual( + perft( + Board(0x241aa00c0000L, 0x4004000000000002L, 0x400000400000000L, 0x1400000000084L, 0x800020L, + 0x1000000000000010L, 0x400000ea00800b6L, 0x5005641000840000L, false, 0, 0x80L), + 4 + ), + 2699378 + ); + + // gentest-4146 + assertEqual( + perft( + Board(0x241aa00c0000L, 0x4100000000000002L, 0x2000400000000L, 0x1400000000084L, 0x4020L, + 0x1000000000000010L, 0x2000ea00800b6L, 0x5101641000044000L, true, 0, 0x80L), + 4 + ), + 1957006 + ); + + // gentest-4147 + assertEqual( + perft( + Board(0x201aa00c0000L, 0x4100000000000002L, 0x40008000000L, 0x1400000000084L, 0x4020L, + 0x20000000000010L, 0x40aa80800b6L, 0x4121601000044000L, false, 0, 0x80L), + 4 + ), + 1453359 + ); + + // gentest-4148 + assertEqual( + perft( + Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000008000000L, 0x1400000000084L, 0x800020L, + 0x2000000000000010L, 0x8000aa80800b6L, 0x6101601000840000L, true, 0, 0x80L), + 4 + ), + 1904297 + ); + + // gentest-4149 + assertEqual( + perft( + Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000008000000L, 0x2400000000084L, 0x800400L, + 0x2000000000000010L, 0x8000aa8080496L, 0x6102601000840000L, false, 0, 0x80L), + 4 + ), + 1615546 + ); + + // gentest-4150 + assertEqual( + perft( + Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000008000000L, 0x2400000000084L, 0x440L, + 0x2000000000002000L, 0x8000aa8082486L, 0x6102601000040040L, true, 0, 0x0L), + 4 + ), + 127680 + ); + + // gentest-4151 + assertEqual( + perft( + Board(0x201aa00c0000L, 0x4100000000000002L, 0x8000000L, 0x8404000000080L, 0x400L, 0x2000000000002000L, + 0x4aa8082482L, 0x6108601000040000L, false, 0, 0x0L), + 4 + ), + 1249019 + ); + + // gentest-4152 + assertEqual( + perft( + Board(0x200aa00c0000L, 0x4004000000000002L, 0x8000000L, 0x40401000000080L, 0x400L, + 0x2000000000002000L, 0x1aa8082482L, 0x6044600000040000L, true, 0, 0x0L), + 4 + ), + 817263 + ); + + // gentest-4153 + assertEqual( + perft( + Board(0x1aa00c0000L, 0x4004000000000002L, 0x8000000L, 0x40400000004000L, 0x400L, 0x2000000000002000L, + 0xaa8086402L, 0x6044401000040000L, false, 0, 0x0L), + 4 + ), + 1053898 + ); + + // gentest-4154 + assertEqual( + perft( + Board(0x1aa00c0000L, 0x4004000000000002L, 0x8000000L, 0x40000000404000L, 0x4L, 0x1000000000002000L, + 0xaa8086006L, 0x5044001000440000L, true, 0, 0x0L), + 4 + ), + 943379 + ); + + // gentest-4155 + assertEqual( + perft( + Board(0xaa00c0000L, 0x4004000000000002L, 0x1000000000L, 0x20000000404000L, 0x40L, 0x1000000000002000L, + 0x1aa0086042L, 0x5024000000440000L, false, 0, 0x0L), + 4 + ), + 645533 + ); + + // gentest-4156 + assertEqual( + perft( + Board(0xa800c0000L, 0x4004000000000002L, 0x20000000L, 0x804000L, 0x40L, 0x1000000000002000L, + 0xaa0086042L, 0x5004000000840000L, true, 0, 0x0L), + 4 + ), + 414972 + ); + + // gentest-4157 + assertEqual( + perft( + Board(0xa88040000L, 0x4100000000000002L, 0x8000L, 0x804000L, 0x40L, 0x1000000000002000L, 0xa8800e042L, + 0x5100000000840000L, false, 0, 0x0L), + 4 + ), + 194625 + ); + + // gentest-4158 + assertEqual( + perft( + Board(0xa88040000L, 0x100200000000002L, 0x8000L, 0x400000800000L, 0x40L, 0x800000000002000L, + 0x400a8800a042L, 0x900200000840000L, true, 0, 0x0L), + 4 + ), + 366322 + ); + + // gentest-4159 + assertEqual( + perft( + Board(0xa88040000L, 0x220000000002L, 0x8000L, 0xc00000L, 0x40L, 0x800000000002000L, 0xa8840a042L, + 0x800220000840000L, false, 0, 0x0L), + 4 + ), + 328540 + ); + + // gentest-4160 + assertEqual( + perft( + Board(0xa88040000L, 0x20010000002L, 0x0L, 0x408000L, 0x4000L, 0x800000000002000L, 0xa88406002L, + 0x800020010048000L, true, 0, 0x0L), + 4 + ), + 81529 + ); + + // gentest-4161 + assertEqual( + perft( + Board(0xa88040000L, 0x24000000002L, 0x0L, 0x408000L, 0x4000L, 0x800000000100000L, 0xa88504002L, + 0x800024000048000L, false, 0, 0x0L), + 4 + ), + 321004 + ); + + // gentest-4162 + assertEqual( + perft( + Board(0xa88040000L, 0x100004000000002L, 0x0L, 0x408000L, 0x100L, 0x8000000100000L, 0xa88500102L, + 0x108004000048000L, true, 0, 0x0L), + 4 + ), + 411462 + ); + + // gentest-4163 + assertEqual( + perft( + Board(0xa88040000L, 0x100004000000002L, 0x0L, 0x800000L, 0x400L, 0x8000000100000L, 0xa88900402L, + 0x108004000040000L, false, 0, 0x0L), + 4 + ), + 178335 + ); + + // gentest-4164 + assertEqual( + perft( + Board(0xa88040000L, 0x100000010000002L, 0x0L, 0x800000L, 0x2000000000L, 0x800000000100000L, + 0x2a88900002L, 0x900000010040000L, true, 0, 0x0L), + 4 + ), + 134828 + ); + + // gentest-4165 + assertEqual( + perft( + Board(0xa88000000L, 0x20010000002L, 0x0L, 0x40000L, 0x2000000000L, 0x800000000001000L, 0x2a88041002L, + 0x800020010000000L, false, 0, 0x0L), + 4 + ), + 305392 + ); + + // gentest-4166 + assertEqual( + perft( + Board(0xa88000000L, 0x20400000002L, 0x0L, 0x40000L, 0x2000000000000000L, 0x8000000001000L, + 0x2000000a88041002L, 0x8020400000000L, true, 0, 0x0L), + 4 + ), + 210319 + ); + + // gentest-4167 + assertEqual( + perft( + Board(0xa88000000L, 0x400000000000002L, 0x0L, 0x400000000L, 0x4000000000000000L, 0x8000000001000L, + 0x4000000e88001002L, 0x408000000000000L, false, 0, 0x0L), + 4 + ), + 44317 + ); + + // gentest-4168 + assertEqual( + perft( + Board(0xa88000000L, 0x20000000000002L, 0x0L, 0x4000000L, 0x4000000000000000L, 0x8000000001000L, + 0x4000000a8c001002L, 0x28000000000000L, true, 0, 0x0L), + 4 + ), + 67269 + ); + + // gentest-4169 + assertEqual( + perft( + Board(0xa88000000L, 0x80000000002L, 0x0L, 0x4000000L, 0x4000000000000000L, 0x8000000001000L, + 0x4000000a8c001002L, 0x8080000000000L, false, 0, 0x0L), + 4 + ), + 83462 + ); + + // gentest-4170 + assertEqual( + perft( + Board(0xa88000000L, 0x4000002L, 0x0L, 0x0L, 0x8000000000000000L, 0x10000000001000L, + 0x8000000a88001002L, 0x10000004000000L, true, 0, 0x0L), + 4 + ), + 44503 + ); + + // gentest-4171 + assertEqual( + perft( + Board(0xa88000000L, 0x4000002L, 0x0L, 0x0L, 0x400000000000L, 0x800000000001000L, 0x400a88001002L, + 0x800000004000000L, false, 0, 0x0L), + 4 + ), + 109944 + ); + + // gentest-4172 + assertEqual( + perft( + Board(0xa88000000L, 0x10002L, 0x0L, 0x0L, 0x80000000000L, 0x1000000000001000L, 0x80a88001002L, + 0x1000000000010000L, true, 0, 0x0L), + 4 + ), + 32001 + ); + + // gentest-4173 + assertEqual( + perft( + Board(0xa88000000L, 0x402L, 0x0L, 0x0L, 0x200000000000000L, 0x1000000000001000L, 0x200000a88001002L, + 0x1000000000000400L, false, 0, 0x0L), + 4 + ), + 16385 + ); + + // gentest-4174 + assertEqual( + perft( + Board(0xa88000000L, 0x402L, 0x0L, 0x0L, 0x1000000000000L, 0x200000001000L, 0x1000a88001002L, + 0x200000000400L, true, 0, 0x0L), + 4 + ), + 47193 + ); + + // gentest-4175 + assertEqual( + perft( + Board(0x20888000000L, 0x2000002L, 0x0L, 0x0L, 0x80000000000000L, 0x200000001000L, 0x80020888001002L, + 0x200002000000L, false, 0, 0x0L), + 4 + ), + 25593 + ); + + // gentest-4176 + assertEqual( + perft( + Board(0x20088000000L, 0x800000002L, 0x0L, 0x0L, 0x800000000000L, 0x10000000001000L, 0x820088001002L, + 0x10000800000000L, true, 0, 0x0L), + 4 + ), + 62905 + ); + + // gentest-4177 + assertEqual( + perft( + Board(0x20088000000L, 0x800000002L, 0x0L, 0x0L, 0x4000000000L, 0x80000000020L, 0x24088000022L, + 0x80800000000L, false, 0, 0x0L), + 4 + ), + 78141 + ); + + // gentest-4178 + assertEqual( + perft( + Board(0x20088000000L, 0x800000002L, 0x0L, 0x0L, 0x2000000000L, 0x80000000020L, 0x22088000022L, + 0x80800000000L, true, 0, 0x0L), + 4 + ), + 61122 + ); + + // gentest-4179 + assertEqual( + perft( + Board(0x20088000000L, 0x10000000000800L, 0x0L, 0x0L, 0x400000000000000L, 0x80000000020L, + 0x400020088000820L, 0x10080000000000L, false, 0, 0x0L), + 4 + ), + 39049 + ); + + // gentest-4180 + assertEqual( + perft( + Board(0x20088000000L, 0x4000000000000800L, 0x0L, 0x0L, 0x400000000000000L, 0x10000000004000L, + 0x400020088004800L, 0x4010000000000000L, true, 0, 0x0L), + 4 + ), + 46879 + ); + + // gentest-4181 + assertEqual( + perft( + Board(0x20088000000L, 0x4000000000000800L, 0x0L, 0x0L, 0x4L, 0x20000000004000L, 0x20088004804L, + 0x4020000000000000L, false, 0, 0x0L), + 4 + ), + 98338 + ); + + // gentest-4182 + assertEqual( + perft( + Board(0x20088000000L, 0x400000000000800L, 0x0L, 0x0L, 0x80L, 0x20000000004000L, 0x20088004880L, + 0x420000000000000L, true, 0, 0x0L), + 4 + ), + 78271 + ); + + // gentest-4183 + assertEqual( + perft( + Board(0x20088000000L, 0x400000000000002L, 0x0L, 0x0L, 0x40L, 0x40000000004000L, 0x20088004042L, + 0x440000000000000L, false, 0, 0x0L), + 4 + ), + 58984 + ); + + // gentest-4184 + assertEqual( + perft( + Board(0x88000000L, 0x20000000002L, 0x0L, 0x0L, 0x40L, 0x200000200000L, 0x88200042L, 0x220000000000L, + true, 0, 0x0L), + 4 + ), + 65855 + ); + + // gentest-4185 + assertEqual( + perft( + Board(0x88000000L, 0x8000000010000L, 0x0L, 0x0L, 0x40L, 0x200020000000L, 0xa8010040L, + 0x8200000000000L, false, 0, 0x0L), + 4 + ), + 56501 + ); + + // gentest-4186 + assertEqual( + perft( + Board(0x88000000L, 0x2000000000010000L, 0x0L, 0x0L, 0x40L, 0x20000000200000L, 0x88210040L, + 0x2020000000000000L, true, 0, 0x0L), + 4 + ), + 69366 + ); + + // gentest-4187 + assertEqual( + perft( + Board(0x8008000000L, 0x8000000010000L, 0x0L, 0x0L, 0x40L, 0x20000000100000L, 0x8008110040L, + 0x28000000000000L, false, 0, 0x0L), + 4 + ), + 85394 + ); + + // gentest-4188 + assertEqual( + perft( + Board(0x8008000000L, 0x400010000L, 0x0L, 0x0L, 0x4000000000L, 0x1000000000100000L, 0xc008110000L, + 0x1000000400000000L, true, 0, 0x0L), + 4 + ), + 65940 + ); + + // gentest-4189 + assertEqual( + perft( + Board(0x8008000000L, 0x400010000L, 0x0L, 0x0L, 0x1000000000000000L, 0x8000000100000L, + 0x1000008008110000L, 0x8000400000000L, false, 0, 0x0L), + 4 + ), + 15714 + ); + + // gentest-4190 + assertEqual( + perft( + Board(0x8008000000L, 0x8000000010000L, 0x0L, 0x0L, 0x800000000000000L, 0x80000100000L, + 0x800008008110000L, 0x8080000000000L, true, 0, 0x0L), + 4 + ), + 29695 + ); + + // gentest-4191 + assertEqual( + perft( + Board(0x8008000000L, 0x200000000010000L, 0x0L, 0x0L, 0x0L, 0x80010000000L, 0x8018010000L, + 0x200080000000000L, false, 0, 0x0L), + 4 + ), + 10579 + ); + + // gentest-4192 + assertEqual( + perft( + Board(0x8008000000L, 0x10000000400L, 0x0L, 0x0L, 0x0L, 0x10000010000000L, 0x8018000400L, + 0x10010000000000L, true, 0, 0x0L), + 4 + ), + 20954 + ); + + // gentest-4193 + assertEqual( + perft( + Board(0x8008000000L, 0x200000000000001L, 0x0L, 0x0L, 0x0L, 0x10000000100000L, 0x8008100001L, + 0x210000000000000L, false, 0, 0x0L), + 4 + ), + 14224 + ); + + // gentest-4194 + assertEqual( + perft( + Board(0x8008000000L, 0x1000000001L, 0x0L, 0x0L, 0x0L, 0x10000000001000L, 0x8008001001L, + 0x10001000000000L, true, 0, 0x0L), + 4 + ), + 23747 + ); + + // gentest-4195 + assertEqual( + perft( + Board(0x9000000000L, 0x1L, 0x0L, 0x0L, 0x0L, 0x20000000000020L, 0x9000000021L, 0x20000000000000L, + false, 0, 0x0L), + 4 + ), + 3105 + ); + + // gentest-4196 + assertEqual( + perft( + Board(0x9000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x800000020L, 0x9000020020L, 0x800000000L, true, 0, + 0x0L), + 4 + ), + 5544 + ); + + // gentest-4197 + assertEqual( + perft( + Board(0x9000000000L, 0x10000000L, 0x0L, 0x0L, 0x0L, 0x4000020L, 0x9010000020L, 0x4000000L, false, 0, + 0x0L), + 4 + ), + 7851 + ); + + // gentest-4198 + assertEqual( + perft( + Board(0x9000000000L, 0x800L, 0x0L, 0x0L, 0x0L, 0x8000020L, 0x9000000820L, 0x8000000L, true, 0, 0x0L), + 4 + ), + 5405 + ); + + // gentest-4199 + assertEqual( + perft( + Board(0x9000000000L, 0x800L, 0x0L, 0x0L, 0x0L, 0x800100000L, 0x9000100800L, 0x800000000L, false, 0, + 0x0L), + 4 + ), + 4449 + ); + + // gentest-4200 + assertEqual( + perft( + Board(0x9000000000L, 0x800L, 0x0L, 0x0L, 0x0L, 0x8000020000000L, 0x9020000800L, 0x8000000000000L, + true, 0, 0x0L), + 4 + ), + 8370 + ); + + // gentest-4201 + assertEqual( + perft( + Board(0x9000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x400000000100000L, 0x9000120000L, + 0x400000000000000L, false, 0, 0x0L), + 4 + ), + 7563 + ); + + // gentest-4202 + assertEqual( + perft( + Board(0x9000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x40010000000L, 0x9010020000L, 0x40000000000L, true, + 0, 0x0L), + 4 + ), + 7023 + ); + + // gentest-4203 + assertEqual( + perft( + Board(0x801000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x4000008000000L, 0x801008020000L, + 0x4000000000000L, false, 0, 0x0L), + 4 + ), + 7764 + ); + + // gentest-4204 + assertEqual( + perft( + Board(0x801000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x8000000100000L, 0x801000120000L, + 0x8000000000000L, true, 0, 0x0L), + 4 + ), + 8913 + ); + + // gentest-4205 + assertEqual( + perft( + Board(0x801000000000L, 0x20000L, 0x0L, 0x0L, 0x0L, 0x800000000200000L, 0x801000220000L, + 0x800000000000000L, false, 0, 0x0L), + 4 + ), + 7190 + ); + + // gentest-4206 + assertEqual( + perft( + Board(0x801000000000L, 0x400000000L, 0x0L, 0x0L, 0x0L, 0x800000000200000L, 0x801400200000L, + 0x800000000000000L, true, 0, 0x0L), + 4 + ), + 6240 + ); + + // gentest-4207 + assertEqual( + perft( + Board(0x80001000000000L, 0x8000000000000L, 0x0L, 0x0L, 0x0L, 0x10000000200000L, 0x88001000200000L, + 0x10000000000000L, false, 0, 0x0L), + 4 + ), + 6725 + ); + + // gentest-4208 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4209 + assertEqual( + perft( + Board(0xfd02000100fe00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x180febfL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 239574 + ); + + // gentest-4210 + assertEqual( + perft( + Board(0xf902040100fe00L, 0x4000010000800002L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x180ffbeL, 0xfdf9030400000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 227500 + ); + + // gentest-4211 + assertEqual( + perft( + Board(0xf902040120de00L, 0x210000000042L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x120dffeL, 0xbdf9230400000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 236461 + ); + + // gentest-4212 + assertEqual( + perft( + Board(0x6912842100de00L, 0x210000000042L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x2100dffeL, 0xbd69338400000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 362769 + ); + + // gentest-4213 + assertEqual( + perft( + Board(0x6912800500de00L, 0x210000000042L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x10000100dffeL, 0xbd69238004000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 479246 + ); + + // gentest-4214 + assertEqual( + perft( + Board(0x4912800d00d600L, 0x210000000042L, 0x2400000000000024L, 0x4100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x900d7feL, 0x7d49338004000000L, true, 0, + 0x100000000000080L), + 4 + ), + 632364 + ); + + // gentest-4215 + assertEqual( + perft( + Board(0x4912800d805600L, 0x200400010040L, 0x2400000000000024L, 0x4100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x98157fcL, 0x7d49328404000000L, false, 0, + 0x100000000000080L), + 4 + ), + 630845 + ); + + // gentest-4216 + assertEqual( + perft( + Board(0x4912800f805400L, 0x80000400010040L, 0x2400000000000024L, 0x4200000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0xb8155fcL, 0x7ec9128404000000L, true, 0, 0x80L), + 4 + ), + 787293 + ); + + // gentest-4217 + assertEqual( + perft( + Board(0x4912800bc41400L, 0x80000400000042L, 0x2400000000000024L, 0x4200000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0xbc015feL, 0x7ec9128400040000L, false, 0, 0x80L), + 4 + ), + 719963 + ); + + // gentest-4218 + assertEqual( + perft( + Board(0x4912800bc41400L, 0x80000400000042L, 0x2400000000000024L, 0x4200000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xbc014ffL, 0x7ec9128400040000L, true, 0, 0x80L), + 4 + ), + 709534 + ); + + // gentest-4219 + assertEqual( + perft( + Board(0x491204c9841400L, 0x80000000000042L, 0x2400000000000024L, 0x4200000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4498014ffL, 0x7ec9120080040000L, false, 0, 0x80L), + 4 + ), + 432781 + ); + + // gentest-4220 + assertEqual( + perft( + Board(0x91240c9841400L, 0x80000000000042L, 0x2400000000000024L, 0x4200000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x200498014ffL, 0x7e89104080040000L, true, 0, 0x80L), + 4 + ), + 477632 + ); + + // gentest-4221 + assertEqual( + perft( + Board(0xb1040c9841400L, 0x80000000000042L, 0x2400000000004004L, 0x4200000000000081L, 0x20000000008L, + 0x1000000000000010L, 0x20000498054dfL, 0x7689124080040000L, false, 0, 0x80L), + 4 + ), + 1081636 + ); + + // gentest-4222 + assertEqual( + perft( + Board(0x91040c9841400L, 0x200000000042L, 0x2402000000000004L, 0x4200000000000081L, 0x8L, + 0x1000000000000010L, 0x20000498014dfL, 0x7609304080040000L, true, 0, 0x80L), + 4 + ), + 666515 + ); + + // gentest-4223 + assertEqual( + perft( + Board(0x91040c9841400L, 0x8000000042L, 0x2400010000000004L, 0x4200000000000081L, 0x8L, + 0x1000000000000020L, 0x100498014efL, 0x760910c080040000L, false, 0, 0x0L), + 4 + ), + 688888 + ); + + // gentest-4224 + assertEqual( + perft( + Board(0x91040c9841400L, 0x8000000042L, 0x440010000000004L, 0x4000000002000180L, 0x8L, + 0x1000000000000020L, 0x100498015eeL, 0x544910c082040000L, true, 0, 0x0L), + 4 + ), + 773417 + ); + + // gentest-4225 + assertEqual( + perft( + Board(0x91040c9841400L, 0x8000000042L, 0x440010000000010L, 0x4200000000000180L, 0x8L, + 0x1000000000000020L, 0x100498015faL, 0x564910c080040000L, false, 0, 0x0L), + 4 + ), + 568849 + ); + + // gentest-4226 + assertEqual( + perft( + Board(0x11840c9841400L, 0x200000200002L, 0x440010000000010L, 0x4200000000000180L, 0x8L, + 0x1000000000000020L, 0x10049a015baL, 0x5641384080040000L, true, 0, 0x0L), + 4 + ), + 947558 + ); + + // gentest-4227 + assertEqual( + perft( + Board(0x11840d9840400L, 0x200000200002L, 0x440010000000010L, 0x4000000002010080L, 0x8L, + 0x1000000000000020L, 0x10059a104baL, 0x5441384082040000L, false, 0, 0x0L), + 4 + ), + 1134111 + ); + + // gentest-4228 + assertEqual( + perft( + Board(0x11848d1840400L, 0x200000200002L, 0x440010000000010L, 0x4200000000010080L, 0x8L, + 0x20000000000020L, 0x10851a104baL, 0x4661384080040000L, true, 0, 0x0L), + 4 + ), + 1218263 + ); + + // gentest-4229 + assertEqual( + perft( + Board(0x11859c0840400L, 0x200000200002L, 0x400810000000010L, 0x4200000000010080L, 0x8L, + 0x20000000000020L, 0x11940a104baL, 0x4621b84080040000L, false, 0, 0x0L), + 4 + ), + 1355848 + ); + + // gentest-4230 + assertEqual( + perft( + Board(0x11819c0840400L, 0x204000000002L, 0x400810000000010L, 0x4000000200010080L, 0x8L, + 0x2000000000000020L, 0x159408104baL, 0x6401b80280040000L, true, 0, 0x0L), + 4 + ), + 1097925 + ); + + // gentest-4231 + assertEqual( + perft( + Board(0x11811c0800400L, 0x204000000002L, 0x400810000000010L, 0x4000000800040040L, 0x8L, + 0x2000000000000020L, 0x1514084047aL, 0x6401b80880000000L, false, 0, 0x0L), + 4 + ), + 1109305 + ); + + // gentest-4232 + assertEqual( + perft( + Board(0x11811c0800400L, 0x80004000000002L, 0x400810000002000L, 0x8000000800040040L, 0x8L, + 0x2000000000000020L, 0x1514084246aL, 0xa481980880000000L, true, 0, 0x0L), + 4 + ), + 822524 + ); + + // gentest-4233 + assertEqual( + perft( + Board(0x11811c0800400L, 0x80000000000002L, 0x400810000002000L, 0x8000000800400040L, 0x8L, + 0x1000000000000020L, 0x80011140c0246aL, 0x9401980880000000L, false, 0, 0x0L), + 4 + ), + 1013518 + ); + + // gentest-4234 + assertEqual( + perft( + Board(0x11801c0800400L, 0x80000000010000L, 0x400010020002000L, 0x8000001000400040L, 0x8L, + 0x1000000000000020L, 0x80010140c12468L, 0x94011810a0000000L, true, 0, 0x0L), + 4 + ), + 1204810 + ); + + // gentest-4235 + assertEqual( + perft( + Board(0x11801c0800400L, 0x80000000010000L, 0x400010020002000L, 0x2000001000020040L, 0x8L, + 0x1000000000004000L, 0x80010140836448L, 0x34011810a0000000L, false, 0, 0x0L), + 4 + ), + 2229656 + ); + + // gentest-4236 + assertEqual( + perft( + Board(0x11801c0800400L, 0x80000000010000L, 0x2810000002000L, 0x2000001000020040L, 0x8L, + 0x1000000000000020L, 0x80010140832468L, 0x3003981080000000L, true, 0, 0x0L), + 4 + ), + 1693920 + ); + + // gentest-4237 + assertEqual( + perft( + Board(0x1901c0800400L, 0x80000000010000L, 0x2800000002000L, 0x2000001000020080L, 0x8L, + 0x1000000000000020L, 0x820001408324a8L, 0x3000991080000000L, false, 0, 0x0L), + 4 + ), + 1412622 + ); + + // gentest-4238 + assertEqual( + perft( + Board(0x1901c0800400L, 0x80000000010000L, 0x2800000000000L, 0x600002080L, 0x8L, 0x1000000000000020L, + 0x820003408104a8L, 0x1000990480002000L, true, 0, 0x0L), + 4 + ), + 106838 + ); + + // gentest-4239 + assertEqual( + perft( + Board(0x1901c0840000L, 0x80000000010000L, 0x42000000000000L, 0x600000080L, 0x8L, 0x1000000000002000L, + 0x82000340852088L, 0x1040190480000000L, false, 0, 0x0L), + 4 + ), + 1119902 + ); + + // gentest-4240 + assertEqual( + perft( + Board(0x911c0840000L, 0x80000000010000L, 0x42000000000000L, 0x600000080L, 0x8L, 0x10000000000020L, + 0x820003408500a8L, 0x50091480000000L, true, 0, 0x0L), + 4 + ), + 590814 + ); + + // gentest-4241 + assertEqual( + perft( + Board(0x95180840000L, 0x80000000010000L, 0x42000000000000L, 0x4000000000082L, 0x8L, 0x10000000000020L, + 0x820041008500aaL, 0x54091080000000L, false, 0, 0x0L), + 4 + ), + 560695 + ); + + // gentest-4242 + assertEqual( + perft( + Board(0x95180840000L, 0x80000000010000L, 0x2200000000000L, 0x4000000000082L, 0x800000000L, + 0x8000000000020L, 0x820049008500a2L, 0xc291080000000L, true, 0, 0x0L), + 4 + ), + 419218 + ); + + // gentest-4243 + assertEqual( + perft( + Board(0x95180840000L, 0x80000000010000L, 0x2200000000000L, 0x4000082L, 0x2000000L, 0x8000000000020L, + 0x820041028500a2L, 0x8291084000000L, false, 0, 0x0L), + 4 + ), + 522522 + ); + + // gentest-4244 + assertEqual( + perft( + Board(0x95180840000L, 0x80000000010000L, 0x8002000000000000L, 0x4000082L, 0x2000000L, + 0x1000000000004000L, 0x82004102854082L, 0x9000091084000000L, true, 0, 0x0L), + 4 + ), + 400987 + ); + + // gentest-4245 + assertEqual( + perft( + Board(0x95180840000L, 0x80000000010000L, 0x42000000000000L, 0x4000082L, 0x2000000L, + 0x1000000000001000L, 0x82004102851082L, 0x1040091084000000L, false, 0, 0x0L), + 4 + ), + 664721 + ); + + // gentest-4246 + assertEqual( + perft( + Board(0x95180840000L, 0x80000000010000L, 0x8002000000000000L, 0x400008002L, 0x2000000L, + 0x1000000000001000L, 0x82004102859002L, 0x9000091480000000L, true, 0, 0x0L), + 4 + ), + 501021 + ); + + // gentest-4247 + assertEqual( + perft( + Board(0x95180840000L, 0x80000000010000L, 0x8002000000000000L, 0x40002008000L, 0x4000000L, + 0x1000000000001000L, 0x82004106859000L, 0x90000d1080000000L, false, 0, 0x0L), + 4 + ), + 310561 + ); + + // gentest-4248 + assertEqual( + perft( + Board(0x5980840000L, 0x80000000010000L, 0x2200000000000L, 0x40002008000L, 0x10000000000L, + 0x1000000000001000L, 0x82014102859000L, 0x1000241880000000L, true, 0, 0x0L), + 4 + ), + 561590 + ); + + // gentest-4249 + assertEqual( + perft( + Board(0x4990840000L, 0x80000000010000L, 0x400200000000000L, 0x40001008000L, 0x10000000000L, + 0x1000000000001000L, 0x480014101859000L, 0x1000240890000000L, false, 0, 0x0L), + 4 + ), + 546292 + ); + + // gentest-4250 + assertEqual( + perft( + Board(0x4980900000L, 0x80000200000000L, 0x400200000000000L, 0x1048000L, 0x10000000000L, + 0x1000000000001000L, 0x480014301809000L, 0x1000200880140000L, true, 0, 0x0L), + 4 + ), + 465629 + ); + + // gentest-4251 + assertEqual( + perft( + Board(0x4980900000L, 0x84000000000000L, 0x8400000000000000L, 0x1044000L, 0x10000000000L, + 0x1000000000001000L, 0x484014101805000L, 0x9000000880140000L, false, 0, 0x0L), + 4 + ), + 121112 + ); + + // gentest-4252 + assertEqual( + perft( + Board(0x4980900000L, 0x84000000000000L, 0x400200000000000L, 0x20044000L, 0x10000000000L, + 0x800000000001000L, 0x484014120805000L, 0x800200880140000L, true, 0, 0x0L), + 4 + ), + 583797 + ); + + // gentest-4253 + assertEqual( + perft( + Board(0x4980900000L, 0x84000000000000L, 0x400001000000000L, 0x2044000L, 0x20000000000L, + 0x800000000001000L, 0x484024102805000L, 0x800001880140000L, false, 0, 0x0L), + 4 + ), + 771774 + ); + + // gentest-4254 + assertEqual( + perft( + Board(0x4980900000L, 0x84000000000000L, 0x400000020000000L, 0x2004004L, 0x20000000000L, + 0x800000000080000L, 0x484024102884000L, 0x8000008a0100004L, true, 0, 0x0L), + 4 + ), + 843164 + ); + + // gentest-4255 + assertEqual( + perft( + Board(0x4980900000L, 0x80000200000000L, 0x400000020000000L, 0x2004004L, 0x20000000000L, + 0x1000000000001000L, 0x480024302805000L, 0x10000008a0100004L, false, 0, 0x0L), + 4 + ), + 799906 + ); + + // gentest-4256 + assertEqual( + perft( + Board(0x4980900000L, 0x80000200000000L, 0x400000020000000L, 0x24008L, 0x20000000000L, + 0x1000000000001000L, 0x480024300825000L, 0x10000008a0100008L, true, 0, 0x0L), + 4 + ), + 461387 + ); + + // gentest-4257 + assertEqual( + perft( + Board(0x400980900000L, 0x80000200000000L, 0x400000020000000L, 0x420040L, 0x20000000000L, + 0x1000000000001000L, 0x480420300c21000L, 0x10000008a0100040L, false, 0, 0x0L), + 4 + ), + 468223 + ); + + // gentest-4258 + assertEqual( + perft( + Board(0x400980900000L, 0x80000008000000L, 0x404000000000000L, 0x420002L, 0x20000000000L, + 0x1000000000001000L, 0x480420108c21000L, 0x1004000880100002L, true, 0, 0x0L), + 4 + ), + 513536 + ); + + // gentest-4259 + assertEqual( + perft( + Board(0x410800d00000L, 0x80000008000000L, 0x400000000000000L, 0x20002L, 0x4000000000000L, + 0x1000000000001000L, 0x484410008821000L, 0x1000000800500002L, false, 0, 0x0L), + 4 + ), + 173238 + ); + + // gentest-4260 + assertEqual( + perft( + Board(0x410800d00000L, 0x80000008000000L, 0x400000000000000L, 0x20001L, 0x4000000L, 0x10000000001000L, + 0x48041000c821000L, 0x10000800500001L, true, 0, 0x0L), + 4 + ), + 302162 + ); + + // gentest-4261 + assertEqual( + perft( + Board(0x410800d00000L, 0x80000000200000L, 0x40000000L, 0x20004L, 0x4000000L, 0x10000000001000L, + 0x80410044a21000L, 0x10000800500004L, false, 0, 0x0L), + 4 + ), + 336787 + ); + + // gentest-4262 + assertEqual( + perft( + Board(0x410800d00000L, 0x80000000200000L, 0x40000000L, 0x12L, 0x4000000L, 0x1000000000001000L, + 0x80410044a01002L, 0x1000000800500010L, true, 0, 0x0L), + 4 + ), + 10103 + ); + + // gentest-4263 + assertEqual( + perft( + Board(0x410800d00000L, 0x4000000010L, 0x40000000L, 0x2L, 0x4000000L, 0x10000000001000L, + 0x414044801012L, 0x10000800500000L, false, 0, 0x0L), + 4 + ), + 102620 + ); + + // gentest-4264 + assertEqual( + perft( + Board(0x410800d00000L, 0x4000000010L, 0x40000000L, 0x4L, 0x4000000L, 0x2000000000001000L, + 0x414044801014L, 0x2000000800500000L, true, 0, 0x0L), + 4 + ), + 67155 + ); + + // gentest-4265 + assertEqual( + perft( + Board(0x410800d00000L, 0x80000000000010L, 0x40000000L, 0x4L, 0x8000000L, 0x4000000000001000L, + 0x80410048801014L, 0x4000000800500000L, false, 0, 0x0L), + 4 + ), + 8819 + ); + + // gentest-4266 + assertEqual( + perft( + Board(0x410800900000L, 0x80000000000010L, 0x40000040L, 0x4L, 0x1000000000L, 0x4000000000001000L, + 0x80411040801014L, 0x4000000800100040L, true, 0, 0x0L), + 4 + ), + 42676 + ); + + // gentest-4267 + assertEqual( + perft( + Board(0x410800900000L, 0x80000000000010L, 0x40000040L, 0x4L, 0x0L, 0x8000000000000008L, + 0x8041004080001cL, 0x8000000800100040L, false, 0, 0x0L), + 4 + ), + 27189 + ); + + // gentest-4268 + assertEqual( + perft( + Board(0x410800900000L, 0x80000000000010L, 0x100000000040L, 0x4L, 0x0L, 0x40000000000008L, + 0x8051000080001cL, 0x40000800100040L, true, 0, 0x0L), + 4 + ), + 38593 + ); + + // gentest-4269 + assertEqual( + perft( + Board(0x410800801000L, 0x80000000000010L, 0x100000000040L, 0x40000L, 0x0L, 0x40000000000004L, + 0x80510000840014L, 0x40000800001040L, false, 0, 0x0L), + 4 + ), + 108961 + ); + + // gentest-4270 + assertEqual( + perft( + Board(0x410800801000L, 0x80000000000010L, 0x21000000000000L, 0x40000L, 0x0L, 0x800000000004L, + 0xa0410000840014L, 0x1800800001000L, true, 0, 0x0L), + 4 + ), + 97804 + ); + + // gentest-4271 + assertEqual( + perft( + Board(0x410008801000L, 0x2000000000000010L, 0x21000000000000L, 0x400L, 0x0L, 0x800000000004L, + 0x2020410000800414L, 0x1800008001000L, false, 0, 0x0L), + 4 + ), + 50751 + ); + + // gentest-4272 + assertEqual( + perft( + Board(0x410008801000L, 0x2000000000000010L, 0x21000000000000L, 0x4000000000000L, 0x0L, + 0x800000000004L, 0x2024410000800014L, 0x1800008001000L, true, 0, 0x0L), + 4 + ), + 56914 + ); + + // gentest-4273 + assertEqual( + perft( + Board(0x410088001000L, 0x2000000000000010L, 0x20020000000000L, 0x400L, 0x0L, 0x800000000004L, + 0x2020410080000414L, 0x820008001000L, false, 0, 0x0L), + 4 + ), + 60655 + ); + + // gentest-4274 + assertEqual( + perft( + Board(0x410088001000L, 0x2000000000004000L, 0x20000400000000L, 0x400L, 0x0L, 0x8000000004L, + 0x2020410080004404L, 0x8408001000L, true, 0, 0x0L), + 4 + ), + 96114 + ); + + // gentest-4275 + assertEqual( + perft( + Board(0x410088000000L, 0x8000000004000L, 0x20000400000000L, 0x410L, 0x0L, 0x8000000200L, + 0x28410080004600L, 0x8408000010L, false, 0, 0x0L), + 4 + ), + 333945 + ); + + // gentest-4276 + assertEqual( + perft( + Board(0x410088000000L, 0x8000000004000L, 0x30000000000000L, 0x400000010L, 0x0L, 0x40000200L, + 0x28410480004200L, 0x10000048000010L, true, 0, 0x0L), + 4 + ), + 506028 + ); + + // gentest-4277 + assertEqual( + perft( + Board(0x410088000000L, 0x8000000004000L, 0x30000000000000L, 0x40000000010L, 0x0L, 0x8000000100L, + 0x28450080004100L, 0x10008008000010L, false, 0, 0x0L), + 4 + ), + 382464 + ); + + // gentest-4278 + assertEqual( + perft( + Board(0x410080080000L, 0x8000000004000L, 0x10000000020000L, 0x41000000000L, 0x0L, 0x8000000100L, + 0x8450080024100L, 0x10009000080000L, true, 0, 0x0L), + 4 + ), + 403072 + ); + + // gentest-4279 + assertEqual( + perft( + Board(0x410080080000L, 0x200000000004000L, 0x2000000800000000L, 0x41000000000L, 0x0L, 0x8000000100L, + 0x200450880004100L, 0x2000009000080000L, false, 0, 0x0L), + 4 + ), + 278573 + ); + + // gentest-4280 + assertEqual( + perft( + Board(0x410080080000L, 0x200000000004000L, 0x800000004L, 0x41000000000L, 0x0L, 0x8000000200L, + 0x200450880004200L, 0x9000080004L, true, 0, 0x0L), + 4 + ), + 61898 + ); + + // gentest-4281 + assertEqual( + perft( + Board(0x410080080000L, 0x200000000004000L, 0x800000004L, 0x204000000000L, 0x0L, 0x8000000001L, + 0x200610880004001L, 0xc000080004L, false, 0, 0x0L), + 4 + ), + 199506 + ); + + // gentest-4282 + assertEqual( + perft( + Board(0x410080080000L, 0x200000000004000L, 0x800000004L, 0x204000000000L, 0x0L, 0x8000000100L, + 0x200610880004100L, 0xc000080004L, true, 0, 0x0L), + 4 + ), + 234394 + ); + + // gentest-4283 + assertEqual( + perft( + Board(0x410080080000L, 0x200000000004000L, 0x4000000000000004L, 0x1000000020L, 0x0L, 0x8000000100L, + 0x4200410080004120L, 0x9000080004L, false, 0, 0x0L), + 4 + ), + 356230 + ); + + // gentest-4284 + assertEqual( + perft( + Board(0x410080080000L, 0x200000000000010L, 0x4000000000000004L, 0x8000000000020L, 0x0L, 0x8000000100L, + 0x4200410080000130L, 0x8008000080004L, true, 0, 0x0L), + 4 + ), + 314975 + ); + + // gentest-4285 + assertEqual( + perft( + Board(0x410080080000L, 0x200000000000010L, 0x4000000000000004L, 0x2800000000L, 0x0L, 0x8000000100L, + 0x4200412080000110L, 0x8800080004L, false, 0, 0x0L), + 4 + ), + 68908 + ); + + // gentest-4286 + assertEqual( + perft( + Board(0x10080080000L, 0x200000000000010L, 0x4000000000000004L, 0x2000000400000000L, 0x0L, + 0x400000000100L, 0x6200010080000110L, 0x400400080004L, true, 0, 0x0L), + 4 + ), + 308580 + ); + + // gentest-4287 + assertEqual( + perft( + Board(0x10080080000L, 0x200000000000010L, 0x4004000000L, 0x800000400000000L, 0x0L, 0x400000000100L, + 0xa00010084000110L, 0x404400080000L, false, 0, 0x0L), + 4 + ), + 438089 + ); + + // gentest-4288 + assertEqual( + perft( + Board(0x1000080000800L, 0x200000000000010L, 0x4004000000L, 0x800001000000000L, 0x0L, 0x400000000100L, + 0xa01000084000110L, 0x405000000800L, true, 0, 0x0L), + 4 + ), + 1085532 + ); + + // gentest-4289 + assertEqual( + perft( + Board(0x4000000000L, 0x200000000000010L, 0x100000004000008L, 0x800001000000000L, 0x0L, + 0x400000000100L, 0xb00004004000110L, 0x401000000008L, false, 0, 0x0L), + 4 + ), + 626375 + ); + + // gentest-4290 + assertEqual( + perft( + Board(0x4000000000L, 0x200000000000010L, 0x100000004000008L, 0x3000000000000000L, 0x0L, + 0x400000000100L, 0x2300004004000110L, 0x1000400000000008L, true, 0, 0x0L), + 4 + ), + 484676 + ); + + // gentest-4291 + assertEqual( + perft( + Board(0x4000000000L, 0x200000000000010L, 0x100000004000008L, 0x400000000002000L, 0x0L, + 0x400000000100L, 0x300004004002110L, 0x400400000000008L, false, 0, 0x0L), + 4 + ), + 561035 + ); + + // gentest-4292 + assertEqual( + perft( + Board(0x4000000000L, 0x200000000000010L, 0x10000008L, 0x4002000L, 0x0L, 0x40000000000100L, + 0x200004010002110L, 0x40000004000008L, true, 0, 0x0L), + 4 + ), + 491920 + ); + + // gentest-4293 + assertEqual( + perft( + Board(0x4000000000L, 0x200000000000010L, 0x10000008L, 0x400000400L, 0x0L, 0x40000000000100L, + 0x200004010000510L, 0x40000400000008L, false, 0, 0x0L), + 4 + ), + 387975 + ); + + // gentest-4294 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4295 + assertEqual( + perft( + Board(0xfb000480007f00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80017ffdL, 0xfffb000400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 263160 + ); + + // gentest-4296 + assertEqual( + perft( + Board(0x6b900480027d00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80037dfdL, 0xff6b900400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 397722 + ); + + // gentest-4297 + assertEqual( + perft( + Board(0x6b900084027d00L, 0x4200000000810000L, 0x2400000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x80837dbeL, 0xff6b900004000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 543191 + ); + + // gentest-4298 + assertEqual( + perft( + Board(0x4398a004027d00L, 0x4200000000810000L, 0x2400000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x8000837dbeL, 0xff43982004000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 434395 + ); + + // gentest-4299 + assertEqual( + perft( + Board(0x398e001027c00L, 0x4200000004800000L, 0x2400000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x8005827cbeL, 0xff03986000000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 503452 + ); + + // gentest-4300 + assertEqual( + perft( + Board(0x398e001027c00L, 0x4000040004000040L, 0x2400000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x20000000000010L, 0x8005027cfeL, 0xed239c6000000000L, true, 0, 0x80L), + 4 + ), + 664309 + ); + + // gentest-4301 + assertEqual( + perft( + Board(0x299e001027c00L, 0x4000040000300000L, 0x2400000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x20000000000010L, 0x8001327cbeL, 0xed229d6000000000L, false, 0, 0x80L), + 4 + ), + 668537 + ); + + // gentest-4302 + assertEqual( + perft( + Board(0x289f001027c00L, 0x4000040004200000L, 0x410000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x20000000000010L, 0x8005227cbeL, 0xcd328d7000000000L, true, 0, 0x80L), + 4 + ), + 696711 + ); + + // gentest-4303 + assertEqual( + perft( + Board(0x289f001027c00L, 0x4000040004200000L, 0x410000000000220L, 0x8001000000000042L, + 0x800000000000008L, 0x20000000000010L, 0x8005227e7aL, 0xcc338d7000000000L, false, 0, 0x0L), + 4 + ), + 685600 + ); + + // gentest-4304 + assertEqual( + perft( + Board(0x289f001027c00L, 0x4200000004200000L, 0x2400000008000020L, 0x8001000000000042L, + 0x800000000000008L, 0x20000000000010L, 0x800d227c7aL, 0xee23897000000000L, true, 0, 0x0L), + 4 + ), + 708753 + ); + + // gentest-4305 + assertEqual( + perft( + Board(0x289f041023c00L, 0x4200000100200000L, 0x2400000008000020L, 0x81000000000042L, + 0x800000000000008L, 0x20000000000010L, 0x8149223c7aL, 0x6ea3897000000000L, false, 0, 0x0L), + 4 + ), + 818896 + ); + + // gentest-4306 + assertEqual( + perft( + Board(0x289e041023c00L, 0x4200000108000000L, 0x2400000000000020L, 0x81000000000042L, + 0x1000000000000008L, 0x20000000000010L, 0x8149023c7aL, 0x76a3896000000000L, true, 0, 0x0L), + 4 + ), + 628934 + ); + + // gentest-4307 + assertEqual( + perft( + Board(0x8be041023c00L, 0x4200000100200000L, 0x2400000000000020L, 0x81000000004002L, + 0x1000000000000008L, 0x20000000000010L, 0x8141227c3aL, 0x76a18b6000000000L, false, 0, 0x0L), + 4 + ), + 688752 + ); + + // gentest-4308 + assertEqual( + perft( + Board(0x8be041023c00L, 0x4200000100008000L, 0x2400000000000020L, 0x81000000004002L, + 0x1000000000000008L, 0x20000000000010L, 0x814102fc3aL, 0x76a18b6000000000L, true, 0, 0x0L), + 4 + ), + 539154 + ); + + // gentest-4309 + assertEqual( + perft( + Board(0x8be041221c00L, 0x4200040000008000L, 0x2400000000000020L, 0x90000000004002L, + 0x1000000000000008L, 0x20000000000010L, 0x4804122dc3aL, 0x76b08b6000000000L, false, 0, 0x0L), + 4 + ), + 501386 + ); + + // gentest-4310 + assertEqual( + perft( + Board(0x8be041221c00L, 0x4000040000008000L, 0x2400000000000020L, 0x90000000002002L, + 0x1000000000000008L, 0x40000000000010L, 0x804122bc3aL, 0x74d08f6000000000L, true, 0, 0x0L), + 4 + ), + 385258 + ); + + // gentest-4311 + assertEqual( + perft( + Board(0x8be049221400L, 0x4000040000008000L, 0x2400000000000020L, 0x80000000102004L, + 0x1000000000000008L, 0x40000000000010L, 0x804922b43cL, 0x74c08f6000100000L, false, 0, 0x0L), + 4 + ), + 439747 + ); + + // gentest-4312 + assertEqual( + perft( + Board(0x8bc049221400L, 0x10040000008000L, 0x2400000000000020L, 0x80000000104004L, 0x1000000000000008L, + 0x40000000000010L, 0x800922d43cL, 0x34d08f4040100000L, true, 0, 0x0L), + 4 + ), + 511193 + ); + + // gentest-4313 + assertEqual( + perft( + Board(0x8bc04b201400L, 0x10040000008000L, 0x2000100000000020L, 0x80000000104002L, 0x1000000000000008L, + 0x40000000000010L, 0x800b20d43aL, 0x30d09f4040100000L, false, 0, 0x0L), + 4 + ), + 996859 + ); + + // gentest-4314 + assertEqual( + perft( + Board(0x8bc04b201400L, 0x440000008000L, 0x2000100000000020L, 0x8000000000104002L, 0x1000000000000008L, + 0x40000000000800L, 0x800b20dc2aL, 0xb040df4040100000L, true, 0, 0x0L), + 4 + ), + 1046505 + ); + + // gentest-4315 + assertEqual( + perft( + Board(0x8bc04b201400L, 0x440000008000L, 0x2000100000000020L, 0x8000000010002002L, 0x1000000000000004L, + 0x40000000000800L, 0x800b20bc26L, 0xb040df4050000000L, false, 0, 0x0L), + 4 + ), + 1196476 + ); + + // gentest-4316 + assertEqual( + perft( + Board(0x8bc249200400L, 0x440000008000L, 0x2000100000000020L, 0x8000000000003002L, 0x20000000000004L, + 0x40000000000800L, 0x820920ac26L, 0xa060df4040001000L, true, 0, 0x0L), + 4 + ), + 303223 + ); + + // gentest-4317 + assertEqual( + perft( + Board(0x8bc249200400L, 0x401000008000L, 0x2000100000000020L, 0x8000000000002002L, 0x20000000000004L, + 0x40000000001000L, 0x820920b426L, 0xa060db5040000000L, false, 0, 0x0L), + 4 + ), + 983813 + ); + + // gentest-4318 + assertEqual( + perft( + Board(0x8bc249200400L, 0x401000008000L, 0x2000000004000020L, 0x8000000000002002L, 0x2000000004L, + 0x40000000100000L, 0x820930a426L, 0xa040cb7044000000L, true, 0, 0x0L), + 4 + ), + 1067535 + ); + + // gentest-4319 + assertEqual( + perft( + Board(0x8bc269000400L, 0x401000008000L, 0x2000000004000020L, 0x8000000000022000L, 0x2000000004L, + 0x200000100000L, 0x822912a424L, 0xa000eb7044000000L, false, 0, 0x0L), + 4 + ), + 1123386 + ); + + // gentest-4320 + assertEqual( + perft( + Board(0x8bc249000400L, 0x1020008000L, 0x2000000004080000L, 0x8000000000022000L, 0x4L, 0x200000100000L, + 0x82091aa404L, 0xa000ab5064000000L, true, 0, 0x0L), + 4 + ), + 896565 + ); + + // gentest-4321 + assertEqual( + perft( + Board(0x8bc348000400L, 0x1000008000L, 0x2000000004080000L, 0x8000000020020000L, 0x4L, + 0x40000000100000L, 0x83281a8404L, 0xa0408b5044000000L, false, 0, 0x0L), + 4 + ), + 751129 + ); + + // gentest-4322 + assertEqual( + perft( + Board(0x8bc348000400L, 0x8000000008000L, 0x2000000004080000L, 0x80000020020000L, 0x20L, + 0x40000000100000L, 0x83281a8420L, 0x20c88b4044000000L, true, 0, 0x0L), + 4 + ), + 634880 + ); + + // gentest-4323 + assertEqual( + perft( + Board(0x8bc348000400L, 0x8000000008000L, 0x2000400004000000L, 0x80000000220000L, 0x20L, + 0x4000000000100000L, 0x408308328420L, 0x60888b4044000000L, false, 0, 0x0L), + 4 + ), + 849767 + ); + + // gentest-4324 + assertEqual( + perft( + Board(0x8ac348000400L, 0x8000000008000L, 0x2020400000000000L, 0x80000000220000L, 0x80000L, + 0x4000000000100000L, 0x4081083a8400L, 0x60a88a4240000000L, true, 0, 0x0L), + 4 + ), + 573561 + ); + + // gentest-4325 + assertEqual( + perft( + Board(0x8ac348000400L, 0x400008000L, 0x2020400000000000L, 0x80002000020000L, 0x1000L, + 0x4000000000100000L, 0x40a108129400L, 0x60a08a4640000000L, false, 0, 0x0L), + 4 + ), + 901229 + ); + + // gentest-4326 + assertEqual( + perft( + Board(0x8ac348000400L, 0x10000008000L, 0x60400000000000L, 0x80002000020000L, 0x4000L, + 0x4000000000100000L, 0x40a10812c400L, 0x40e08b4240000000L, true, 0, 0x0L), + 4 + ), + 834091 + ); + + // gentest-4327 + assertEqual( + perft( + Board(0x8ac348000400L, 0x4000000000020L, 0x40400000000000L, 0xa0000000020000L, 0x4000L, + 0x4000000000100000L, 0x20408108124420L, 0x40c48a4240000000L, false, 0, 0x0L), + 4 + ), + 440228 + ); + + // gentest-4328 + assertEqual( + perft( + Board(0x82cb48000400L, 0x4000000000020L, 0x2000400000000000L, 0xa0000000010000L, 0x4000L, + 0x4000000000100000L, 0x20408108114420L, 0x6084824a40000000L, true, 0, 0x0L), + 4 + ), + 514802 + ); + + // gentest-4329 + assertEqual( + perft( + Board(0x82cb48000400L, 0x1000000000400000L, 0x2000400000000000L, 0xa0000000000100L, 0x4000L, + 0x4000000000100000L, 0x20408108504500L, 0x7080824a40000000L, false, 0, 0x0L), + 4 + ), + 461831 + ); + + // gentest-4330 + assertEqual( + perft( + Board(0x80cb48000400L, 0x1000000000000080L, 0x400400000000L, 0xa0000000000100L, 0x4000L, + 0x4000000000100000L, 0x20408008104580L, 0x5080804f40000000L, true, 0, 0x0L), + 4 + ), + 621103 + ); + + // gentest-4331 + assertEqual( + perft( + Board(0x80cb48000400L, 0x1000000000000080L, 0x400400000000L, 0x80200000000100L, 0x4000L, + 0x8000000000002000L, 0x608008006580L, 0x9080804f40000000L, false, 0, 0x0L), + 4 + ), + 686519 + ); + + // gentest-4332 + assertEqual( + perft( + Board(0x80cb48000400L, 0x1000000000400000L, 0x400000010000L, 0x20200000000100L, 0x4000L, + 0x8000000000002000L, 0x608008406500L, 0x9020804b40010000L, true, 0, 0x0L), + 4 + ), + 607185 + ); + + // gentest-4333 + assertEqual( + perft( + Board(0x80cb48000400L, 0x1000000000400000L, 0x20000000000000L, 0x200000010000L, 0x4000L, + 0x40000000002000L, 0x20208008416400L, 0x1040804b40000000L, false, 0, 0x0L), + 4 + ), + 136101 + ); + + // gentest-4334 + assertEqual( + perft( + Board(0x80cb48000400L, 0x1000000000400000L, 0x20000000000000L, 0x200000000001L, 0x4000L, + 0x80000000002000L, 0x20208008406401L, 0x1080804b40000000L, true, 0, 0x0L), + 4 + ), + 128055 + ); + + // gentest-4335 + assertEqual( + perft( + Board(0x80cb48000400L, 0x200000400000L, 0x400000000000L, 0x80000000001L, 0x4000L, 0x80000000002000L, + 0x488008406401L, 0x80a04b40000000L, false, 0, 0x0L), + 4 + ), + 56650 + ); + + // gentest-4336 + assertEqual( + perft( + Board(0x80c94a000400L, 0x200000400000L, 0x400000000000L, 0x80000000001L, 0x800000L, + 0x4000000000002000L, 0x488008c02401L, 0x4000a04942000000L, true, 0, 0x0L), + 4 + ), + 201857 + ); + + // gentest-4337 + assertEqual( + perft( + Board(0x80c94a000400L, 0x200000400000L, 0x0L, 0x80000000001L, 0x8000L, 0x20000000002000L, + 0x8800840a401L, 0x20a04942000000L, false, 0, 0x0L), + 4 + ), + 185949 + ); + + // gentest-4338 + assertEqual( + perft( + Board(0x80c94a000400L, 0x8002000000000L, 0x0L, 0x80000000001L, 0x8000L, 0x1000000000002000L, + 0x8a00800a401L, 0x1008804942000000L, true, 0, 0x0L), + 4 + ), + 201100 + ); + + // gentest-4339 + assertEqual( + perft( + Board(0x80c84b000400L, 0x8002000000000L, 0x0L, 0x80000000001L, 0x80L, 0x1000000000001000L, + 0x8a008001481L, 0x1008804843000000L, false, 0, 0x0L), + 4 + ), + 245256 + ); + + // gentest-4340 + assertEqual( + perft( + Board(0x80c84b000400L, 0x40200000000000L, 0x0L, 0x80000000001L, 0x80L, 0x2000000000001000L, + 0x40088008001481L, 0x2000a04843000000L, true, 0, 0x0L), + 4 + ), + 216797 + ); + + // gentest-4341 + assertEqual( + perft( + Board(0x80c84b000400L, 0x40200000000000L, 0x0L, 0x40000000001L, 0x10L, 0x10000000001000L, + 0x40048008001411L, 0x10a04843000000L, false, 0, 0x0L), + 4 + ), + 212150 + ); + + // gentest-4342 + assertEqual( + perft( + Board(0x80c84b000400L, 0x40200000000000L, 0x0L, 0x80000000001L, 0x10L, 0x4000000000001000L, + 0x40088008001411L, 0x4000a04843000000L, true, 0, 0x0L), + 4 + ), + 208987 + ); + + // gentest-4343 + assertEqual( + perft( + Board(0x80c80b400400L, 0x40200000000000L, 0x0L, 0x80000000001L, 0x40000L, 0x4000000000200000L, + 0x40088008240401L, 0x4000a04803400000L, false, 0, 0x0L), + 4 + ), + 282827 + ); + + // gentest-4344 + assertEqual( + perft( + Board(0x80c80b400400L, 0x200000000000L, 0x0L, 0x80000000040L, 0x40000L, 0x80000000200000L, + 0x88008240440L, 0x80a04803400000L, true, 0, 0x0L), + 4 + ), + 167388 + ); + + // gentest-4345 + assertEqual( + perft( + Board(0x80480b400400L, 0x8000000000L, 0x0L, 0x80000000040L, 0x40000L, 0x80000000200000L, + 0x80008240440L, 0x8080c803400000L, false, 0, 0x0L), + 4 + ), + 131438 + ); + + // gentest-4346 + assertEqual( + perft( + Board(0x80400a410400L, 0x200000000000L, 0x0L, 0x800000040L, 0x40000L, 0x80000000200000L, 0x808240440L, + 0x80a04002410000L, true, 0, 0x0L), + 4 + ), + 266036 + ); + + // gentest-4347 + assertEqual( + perft( + Board(0x80400a400500L, 0x200000000000L, 0x0L, 0x10000040L, 0x40000L, 0x80000000200000L, 0x18240440L, + 0x80a04002400100L, false, 0, 0x0L), + 4 + ), + 445295 + ); + + // gentest-4348 + assertEqual( + perft( + Board(0x80400a400400L, 0x200000020000L, 0x0L, 0x1000000000000040L, 0x40000L, 0x80000000200000L, + 0x1000000008240440L, 0x80a04002420000L, true, 0, 0x0L), + 4 + ), + 401381 + ); + + // gentest-4349 + assertEqual( + perft( + Board(0x800048400400L, 0x200000020000L, 0x0L, 0x1000000000000040L, 0x2000000L, 0x80000000100000L, + 0x100000000a100440L, 0x80a00040420000L, false, 0, 0x0L), + 4 + ), + 360400 + ); + + // gentest-4350 + assertEqual( + perft( + Board(0x800048400400L, 0x1000000000000000L, 0x0L, 0x40L, 0x800L, 0x80000000100000L, 0x8100c40L, + 0x1080800040400000L, true, 0, 0x0L), + 4 + ), + 78757 + ); + + // gentest-4351 + assertEqual( + perft( + Board(0x800048004400L, 0x1000000000000000L, 0x0L, 0x40L, 0x800L, 0x80000000100000L, 0x8100c40L, + 0x1080800040004000L, false, 0, 0x0L), + 4 + ), + 80719 + ); + + // gentest-4352 + assertEqual( + perft( + Board(0x800048004400L, 0x200000000L, 0x0L, 0x40L, 0x800L, 0x80000010000000L, 0x18000c40L, + 0x80800240004000L, true, 0, 0x0L), + 4 + ), + 144809 + ); + + // gentest-4353 + assertEqual( + perft( + Board(0x800048004400L, 0x200000000L, 0x0L, 0x40L, 0x40000L, 0x40000000080000L, 0x80c0440L, + 0x40800240004000L, false, 0, 0x0L), + 4 + ), + 155531 + ); + + // gentest-4354 + assertEqual( + perft( + Board(0x800048000400L, 0x200000040L, 0x0L, 0x2L, 0x40000L, 0x400000080000L, 0x80c0402L, + 0xc00240000040L, true, 0, 0x0L), + 4 + ), + 206933 + ); + + // gentest-4355 + assertEqual( + perft( + Board(0x800840000400L, 0x200800000L, 0x0L, 0x2L, 0x10000L, 0x400000080000L, 0x800090402L, + 0xc00240800000L, false, 0, 0x0L), + 4 + ), + 308786 + ); + + // gentest-4356 + assertEqual( + perft( + Board(0x8840000400L, 0x4200000000L, 0x0L, 0x200L, 0x10000L, 0x400000080000L, 0x800090600L, + 0x40c240000000L, true, 0, 0x0L), + 4 + ), + 232887 + ); + + // gentest-4357 + assertEqual( + perft( + Board(0x8840000400L, 0x100200000000L, 0x0L, 0x200L, 0x800000L, 0x400000000800L, 0x800800e00L, + 0x508240000000L, false, 0, 0x0L), + 4 + ), + 373397 + ); + + // gentest-4358 + assertEqual( + perft( + Board(0x8800800400L, 0x208000000L, 0x0L, 0x200L, 0x0L, 0x400000080000L, 0x800080600L, 0x408208800000L, + true, 0, 0x0L), + 4 + ), + 73560 + ); + + // gentest-4359 + assertEqual( + perft( + Board(0x8800820000L, 0x200000000L, 0x0L, 0x200L, 0x0L, 0x400010000000L, 0x810020200L, 0x408200800000L, + false, 0, 0x0L), + 4 + ), + 42159 + ); + + // gentest-4360 + assertEqual( + perft( + Board(0x8800820000L, 0x200000000L, 0x0L, 0x800L, 0x0L, 0x40000010000000L, 0x810020800L, + 0x40008200800000L, true, 0, 0x0L), + 4 + ), + 61134 + ); + + // gentest-4361 + assertEqual( + perft( + Board(0x88000820000L, 0x200000000L, 0x0L, 0x800L, 0x0L, 0x80001000000000L, 0x81000020800L, + 0x80008200800000L, false, 0, 0x0L), + 4 + ), + 54743 + ); + + // gentest-4362 + assertEqual( + perft( + Board(0x8000820000L, 0x80000000000L, 0x0L, 0x8000L, 0x0L, 0x8000001000000000L, 0x1000028000L, + 0x8000088000800000L, true, 0, 0x0L), + 4 + ), + 34336 + ); + + // gentest-4363 + assertEqual( + perft( + Board(0x8000820000L, 0x80000000000L, 0x0L, 0x8000L, 0x0L, 0x80000000080000L, 0xa8000L, + 0x80088000800000L, false, 0, 0x0L), + 4 + ), + 50185 + ); + + // gentest-4364 + assertEqual( + perft( + Board(0x80820000L, 0x20000000000000L, 0x0L, 0x80L, 0x0L, 0x80000000080000L, 0xa0080L, + 0xa0000080800000L, true, 0, 0x0L), + 4 + ), + 40193 + ); + + // gentest-4365 + assertEqual( + perft( + Board(0x80820000L, 0x4000000000L, 0x0L, 0x8L, 0x0L, 0x80000000000400L, 0x20408L, 0x80004080800000L, + false, 0, 0x0L), + 4 + ), + 45050 + ); + + // gentest-4366 + assertEqual( + perft( + Board(0x80028000L, 0x4000000000L, 0x0L, 0x4L, 0x0L, 0x800000000400L, 0x20404L, 0x804080008000L, true, + 0, 0x0L), + 4 + ), + 58301 + ); + + // gentest-4367 + assertEqual( + perft( + Board(0x80028000L, 0x10000000L, 0x0L, 0x8000000L, 0x0L, 0x800000000400L, 0x8020400L, 0x800090008000L, + false, 0, 0x0L), + 4 + ), + 95261 + ); + + // gentest-4368 + assertEqual( + perft( + Board(0x80028000L, 0x10000000L, 0x0L, 0x1000000L, 0x0L, 0x200000000400L, 0x1020400L, 0x200090008000L, + true, 0, 0x0L), + 4 + ), + 93762 + ); + + // gentest-4369 + assertEqual( + perft( + Board(0x80028000L, 0x10000000L, 0x0L, 0x80L, 0x0L, 0x2000000400L, 0x20480L, 0x2090008000L, false, 0, + 0x0L), + 4 + ), + 59061 + ); + + // gentest-4370 + assertEqual( + perft( + Board(0x2808000L, 0x400000000L, 0x0L, 0x80L, 0x0L, 0x2000000400L, 0x2000480L, 0x2400808000L, true, 0, + 0x0L), + 4 + ), + 67227 + ); + + // gentest-4371 + assertEqual( + perft( + Board(0x400808000L, 0x0L, 0x0L, 0x80L, 0x0L, 0x400000080000L, 0x400080080L, 0x400000808000L, false, 0, + 0x0L), + 4 + ), + 20467 + ); + + // gentest-4372 + assertEqual( + perft( + Board(0x400808000L, 0x0L, 0x0L, 0x80L, 0x0L, 0x8000000008000000L, 0x408000080L, 0x8000000000808000L, + true, 0, 0x0L), + 4 + ), + 12591 + ); + + // gentest-4373 + assertEqual( + perft( + Board(0x400808000L, 0x0L, 0x0L, 0x4L, 0x0L, 0x40000004000000L, 0x404000004L, 0x40000000808000L, false, + 0, 0x0L), + 4 + ), + 40135 + ); + + // gentest-4374 + assertEqual( + perft( + Board(0x400808000L, 0x0L, 0x0L, 0x4L, 0x0L, 0x800800000000L, 0xc00000004L, 0x800000808000L, true, 0, + 0x0L), + 4 + ), + 27183 + ); + + // gentest-4375 + assertEqual( + perft( + Board(0x400800000L, 0x0L, 0x80L, 0x400L, 0x0L, 0x880000000000L, 0x80400000400L, 0x800000800080L, + false, 0, 0x0L), + 4 + ), + 51256 + ); + + // gentest-4376 + assertEqual( + perft( + Board(0x400800000L, 0x0L, 0x80L, 0x2000L, 0x0L, 0x8000080000000000L, 0x80400002000L, + 0x8000000000800080L, true, 0, 0x0L), + 4 + ), + 42742 + ); + + // gentest-4377 + assertEqual( + perft( + Board(0x400800000L, 0x0L, 0x100000000000000L, 0x200000000000L, 0x0L, 0x8004000000000000L, + 0x4200400000000L, 0x8100000000800000L, false, 0, 0x0L), + 4 + ), + 49726 + ); + + // gentest-4378 + assertEqual( + perft( + Board(0x400800000L, 0x0L, 0x2000000000000L, 0x200000000000L, 0x0L, 0x8000020000000000L, + 0x220400000000L, 0x8002000000800000L, true, 0, 0x0L), + 4 + ), + 38522 + ); + + // gentest-4379 + assertEqual( + perft( + Board(0x400800000L, 0x0L, 0x2000000000000L, 0x80000000000L, 0x0L, 0x4000020000000000L, 0xa0400000000L, + 0x4002000000800000L, false, 0, 0x0L), + 4 + ), + 60314 + ); + + // gentest-4380 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4381 + assertEqual( + perft( + Board(0xef00100009f600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x9f6ffL, 0xffef001000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 606139 + ); + + // gentest-4382 + assertEqual( + perft( + Board(0xcb00340009f600L, 0x4200000000000042L, 0x2400004000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400009f6fbL, 0xffcb003400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 670734 + ); + + // gentest-4383 + assertEqual( + perft( + Board(0x8b40340009f600L, 0x4200000004000040L, 0x2400004000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400409f6f9L, 0xff8b403400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 816801 + ); + + // gentest-4384 + assertEqual( + perft( + Board(0x8b40340009f600L, 0x4000040004000040L, 0x2400004000000020L, 0x8100000000000081L, 0x100000800L, + 0x1000000000000010L, 0x400409fef1L, 0xf58b443500000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1285056 + ); + + // gentest-4385 + assertEqual( + perft( + Board(0x8b40240019e600L, 0x4000041000000040L, 0x2400004000000020L, 0x8100000000000081L, 0x1000800L, + 0x1000000000000010L, 0x500019eef1L, 0xf58b442401000000L, false, 0, 0x8100000000000081L), + 4 + ), + 2253448 + ); + + // gentest-4386 + assertEqual( + perft( + Board(0x8a40250019e600L, 0x4000001000000040L, 0x2400000020000020L, 0x8100000000000081L, 0x1000800L, + 0x1000000000000010L, 0x2019eef1L, 0xf58a403501000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1328268 + ); + + // gentest-4387 + assertEqual( + perft( + Board(0x8a40251209e400L, 0x4000001000000040L, 0x2400000020000020L, 0x8100000000000081L, 0x200000800L, + 0x1000000000000010L, 0x3209ecf1L, 0xf58a403700000000L, false, 0, 0x8100000000000081L), + 4 + ), + 1454834 + ); + + // gentest-4388 + assertEqual( + perft( + Board(0x8a40251001e400L, 0x4000000002000040L, 0x2400000020000020L, 0x8100000000000081L, 0x200000800L, + 0x1000000000001000L, 0x3001fce1L, 0xf58a402702000000L, true, 0, 0x8100000000000000L), + 4 + ), + 276805 + ); + + // gentest-4389 + assertEqual( + perft( + Board(0x8a40251401e000L, 0x4000000000200100L, 0x2400000020000020L, 0x8100000000000081L, 0x200000800L, + 0x1000000000001000L, 0x3421f8a1L, 0xf58a402700000100L, false, 0, 0x8100000000000000L), + 4 + ), + 1790696 + ); + + // gentest-4390 + assertEqual( + perft( + Board(0x8a40251001e000L, 0x4000000000200000L, 0x2400000020000020L, 0x8100000000000081L, 0x4000004L, + 0x1000000000001000L, 0x3021f0a5L, 0xf58a402504000000L, true, 0, 0x8100000000000000L), + 4 + ), + 199964 + ); + + // gentest-4391 + assertEqual( + perft( + Board(0x8a40251001e000L, 0x4000000000200000L, 0x2400000020000020L, 0x8100000000000081L, 0x40004L, + 0x1000000000001000L, 0x3021f0a5L, 0xf58a402500040000L, false, 0, 0x8100000000000000L), + 4 + ), + 1396804 + ); + + // gentest-4392 + assertEqual( + perft( + Board(0x8a40310401e000L, 0x4000000000200000L, 0x2400000020000020L, 0x8100000000000081L, + 0x40000000000004L, 0x1000000000001000L, 0x102021f0a5L, 0xf5ca402104000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 902957 + ); + + // gentest-4393 + assertEqual( + perft( + Board(0x8a50210500e000L, 0x200000200000L, 0x2400000020000020L, 0x8100000000000081L, 0x40000000000004L, + 0x1000000000001000L, 0x10002120f0a5L, 0xb5ca602104000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1357703 + ); + + // gentest-4394 + assertEqual( + perft( + Board(0x8852210500e000L, 0x200000200000L, 0x2404000000000020L, 0x8100000000000081L, 0x10000000000004L, + 0x1000000000001000L, 0x410000120f0a5L, 0xb598622104000000L, true, 0, 0x8100000000000000L), + 4 + ), + 1403010 + ); + + // gentest-4395 + assertEqual( + perft( + Board(0x8852210500e000L, 0x10200000L, 0x2404000000000020L, 0x8100000000000081L, 0x10000000000400L, + 0x1000000000001000L, 0x410000120f4a1L, 0xb598422114000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1852766 + ); + + // gentest-4396 + assertEqual( + perft( + Board(0x8852210500e000L, 0x600000L, 0x2404000000000020L, 0x8100000000000081L, 0x4000000100L, + 0x1000000000001000L, 0x410000120f1a1L, 0xb588426104400000L, true, 0, 0x8100000000000000L), + 4 + ), + 195394 + ); + + // gentest-4397 + assertEqual( + perft( + Board(0x88522105406000L, 0x10L, 0x2404000000000020L, 0x8100000000000081L, 0x4000000100L, + 0x10000000001000L, 0x41000014071b1L, 0xa598426104000000L, false, 0, 0x0L), + 4 + ), + 693768 + ); + + // gentest-4398 + assertEqual( + perft( + Board(0x88522101446000L, 0x10L, 0x2404000000000020L, 0x8100000000008001L, 0x20000100L, + 0x10000000001000L, 0x410000140f131L, 0xa598422120040000L, true, 0, 0x0L), + 4 + ), + 837281 + ); + + // gentest-4399 + assertEqual( + perft( + Board(0x88522101446000L, 0x10L, 0x2400001000000020L, 0x8000010000800001L, 0x20000100L, + 0x10000000001000L, 0x101001c07131L, 0xa498432120040000L, false, 0, 0x0L), + 4 + ), + 756153 + ); + + // gentest-4400 + assertEqual( + perft( + Board(0x88502301446000L, 0x10L, 0x2400001000000020L, 0x8000010000800001L, 0x4000100L, + 0x10000000000008L, 0x101001c06139L, 0xa498412304040000L, true, 0, 0x0L), + 4 + ), + 1483880 + ); + + def batch11(): Unit = + // gentest-4401 + assertEqual( + perft( + Board(0x80502b01446000L, 0x10L, 0x2400000020000020L, 0x8000010000800001L, 0x4010000L, + 0x10000000000008L, 0x100021c16039L, 0xa490412b04040000L, false, 0, 0x0L), + 4 + ), + 319581 + ); + + // gentest-4402 + assertEqual( + perft( + Board(0x80502b01446000L, 0x10L, 0x2400000020000020L, 0x8000010000800001L, 0x6000000L, + 0x40000000000008L, 0x100023c06039L, 0xa4c0412b04040000L, true, 0, 0x0L), + 4 + ), + 1533072 + ); + + // gentest-4403 + assertEqual( + perft( + Board(0x80502b01446000L, 0x10L, 0x2400000000000820L, 0x8100000000800100L, 0x6000000L, + 0x40000000000008L, 0x100003c06938L, 0xa5c0402b04040000L, false, 0, 0x0L), + 4 + ), + 1615658 + ); + + // gentest-4404 + assertEqual( + perft( + Board(0x80502b01446000L, 0x10L, 0x400000002000800L, 0x8100008000000100L, 0x20L, 0x40000000000008L, + 0x108001406918L, 0x85c0402b02040020L, true, 0, 0x0L), + 4 + ), + 591238 + ); + + // gentest-4405 + assertEqual( + perft( + Board(0x502b01446000L, 0x10L, 0x400000002000800L, 0x8100000000000100L, 0x20L, 0x200000000008L, + 0x8000100001406918L, 0x500602b02040020L, false, 0, 0x0L), + 4 + ), + 592183 + ); + + // gentest-4406 + assertEqual( + perft( + Board(0x502b01446000L, 0x10L, 0x2000002000800L, 0x8100000000000001L, 0x4000000L, 0x200000000008L, + 0x8000100001406819L, 0x102602b06040000L, true, 0, 0x0L), + 4 + ), + 1220071 + ); + + // gentest-4407 + assertEqual( + perft( + Board(0x502b21444000L, 0x10L, 0x40002000800L, 0x300000000000001L, 0x4000000L, 0x200000000008L, + 0x200100021404819L, 0x100642b06040000L, false, 0, 0x0L), + 4 + ), + 389429 + ); + + // gentest-4408 + assertEqual( + perft( + Board(0x10402b21404400L, 0x10L, 0x40002000800L, 0x201000000000001L, 0x4000000L, 0x200000000008L, + 0x210000021404819L, 0x1642b06000400L, true, 0, 0x0L), + 4 + ), + 55044 + ); + + // gentest-4409 + assertEqual( + perft( + Board(0x402b21404400L, 0x10L, 0x40002000800L, 0x201000000000001L, 0x1000000000020000L, + 0x200000000004L, 0x1200000021404815L, 0x1642b02020400L, false, 0, 0x0L), + 4 + ), + 669484 + ); + + // gentest-4410 + assertEqual( + perft( + Board(0x402b21404400L, 0x10L, 0x2000800L, 0x201000000000001L, 0x40000200000L, 0x10000000000004L, + 0x200040021404815L, 0x11402b02200400L, true, 0, 0x0L), + 4 + ), + 719478 + ); + + // gentest-4411 + assertEqual( + perft( + Board(0x402b21404400L, 0x10L, 0x2100000L, 0x201000000000001L, 0x10000200000L, 0x8000000000004L, + 0x200010021504015L, 0x9402b02200400L, false, 0, 0x0L), + 4 + ), + 679560 + ); + + // gentest-4412 + assertEqual( + perft( + Board(0x402b21404000L, 0x0L, 0x100010L, 0x201000000000001L, 0x10000200000L, 0x10000000000400L, + 0x200010021504401L, 0x11402b00200010L, true, 0, 0x0L), + 4 + ), + 761246 + ); + + // gentest-4413 + assertEqual( + perft( + Board(0x402b21404000L, 0x0L, 0x100010L, 0x200000000000001L, 0x1000000200000L, 0x20000000080000L, + 0x201000021584001L, 0x20402b00200010L, false, 0, 0x0L), + 4 + ), + 33972 + ); + + // gentest-4414 + assertEqual( + perft( + Board(0x402b21404000L, 0x0L, 0x100010L, 0x200000000010000L, 0x1000000001000L, 0x200000080000L, + 0x201000021594000L, 0x602b00001010L, true, 0, 0x0L), + 4 + ), + 14103 + ); + + // gentest-4415 + assertEqual( + perft( + Board(0x402921404000L, 0x0L, 0x100010L, 0x2000000010000L, 0x1000000000000L, 0x200000001000L, + 0x3000020515000L, 0x602901000010L, false, 0, 0x0L), + 4 + ), + 93685 + ); + + // gentest-4416 + assertEqual( + perft( + Board(0x402920424000L, 0x0L, 0x102000L, 0x10000L, 0x1000000000000L, 0x200000001000L, 0x1000020515000L, + 0x602900022000L, true, 0, 0x0L), + 4 + ), + 76951 + ); + + // gentest-4417 + assertEqual( + perft( + Board(0x402920404200L, 0x0L, 0x102000L, 0x1000000L, 0x1000000000000L, 0x200000000020L, + 0x1000021504020L, 0x602900002200L, false, 0, 0x0L), + 4 + ), + 84328 + ); + + // gentest-4418 + assertEqual( + perft( + Board(0x6920404200L, 0x0L, 0x20000000010L, 0x1000000L, 0x1000000000000L, 0x200000000020L, + 0x1020021404020L, 0x206900000210L, true, 0, 0x0L), + 4 + ), + 175491 + ); + + // gentest-4419 + assertEqual( + perft( + Board(0x6920404000L, 0x0L, 0x100012L, 0x1000000L, 0x2000000000000L, 0x200000000020L, 0x2000021504020L, + 0x206900000012L, false, 0, 0x0L), + 4 + ), + 221381 + ); + + // gentest-4420 + assertEqual( + perft( + Board(0x6920404000L, 0x0L, 0x10100010L, 0x1000000L, 0x20000000000L, 0x10000000000020L, 0x20021504020L, + 0x10006910000010L, true, 0, 0x0L), + 4 + ), + 274342 + ); + + // gentest-4421 + assertEqual( + perft( + Board(0x2920404000L, 0x0L, 0x10100010L, 0x1000000L, 0x2000000000000L, 0x10000000000020L, + 0x2000001504020L, 0x10002930000010L, false, 0, 0x0L), + 4 + ), + 113730 + ); + + // gentest-4422 + assertEqual( + perft( + Board(0x2920404000L, 0x0L, 0x200810L, 0x1000000L, 0x2000000000000L, 0x2000000000000020L, + 0x2000001404820L, 0x2000002920200010L, true, 0, 0x0L), + 4 + ), + 201589 + ); + + // gentest-4423 + assertEqual( + perft( + Board(0x2920404000L, 0x0L, 0x202800L, 0x1000000L, 0x200000000000000L, 0x2000000000000020L, + 0x200000001404820L, 0x2000002920202000L, false, 0, 0x0L), + 4 + ), + 67254 + ); + + // gentest-4424 + assertEqual( + perft( + Board(0x2821404000L, 0x0L, 0x202800L, 0x1L, 0x200000000000000L, 0x10000000000020L, 0x200000000404821L, + 0x10002821202000L, true, 0, 0x0L), + 4 + ), + 312435 + ); + + // gentest-4425 + assertEqual( + perft( + Board(0x2801404000L, 0x0L, 0x40002800L, 0x8L, 0x20000000L, 0x10000000000020L, 0x20404828L, + 0x10002841002000L, false, 0, 0x0L), + 4 + ), + 271545 + ); + + // gentest-4426 + assertEqual( + perft( + Board(0x2009404000L, 0x0L, 0x40002004L, 0x8L, 0x20000000L, 0x2000000000000020L, 0x2040402cL, + 0x2000002049002000L, true, 0, 0x0L), + 4 + ), + 99556 + ); + + // gentest-4427 + assertEqual( + perft( + Board(0x2009404000L, 0x0L, 0x40002004L, 0x8L, 0x100000000000000L, 0x40000000000020L, + 0x10000000040402cL, 0x40002049002000L, false, 0, 0x0L), + 4 + ), + 181289 + ); + + // gentest-4428 + assertEqual( + perft( + Board(0x2008414000L, 0x0L, 0x40100004L, 0x8L, 0x100000000000000L, 0x40000000000010L, + 0x10000000040401cL, 0x40002048110000L, true, 0, 0x0L), + 4 + ), + 179271 + ); + + // gentest-4429 + assertEqual( + perft( + Board(0x28414000L, 0x0L, 0x40100004L, 0x8L, 0x4000000000000000L, 0x40000000000010L, + 0x400000000040401cL, 0x40000068110000L, false, 0, 0x0L), + 4 + ), + 24005 + ); + + // gentest-4430 + assertEqual( + perft( + Board(0x28414000L, 0x0L, 0x8000000100004L, 0x80000L, 0x4000000000000000L, 0x200000000010L, + 0x4000000000484014L, 0x8200028110000L, true, 0, 0x0L), + 4 + ), + 264675 + ); + + // gentest-4431 + assertEqual( + perft( + Board(0x28414000L, 0x0L, 0x8000000100004L, 0x8L, 0x0L, 0x100000000010L, 0x40401cL, 0x8100028110000L, + false, 0, 0x0L), + 4 + ), + 57148 + ); + + // gentest-4432 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x8000020010000L, 0x8L, 0x0L, 0x100000000010L, 0x14018L, 0x8100028400000L, + true, 0, 0x0L), + 4 + ), + 93821 + ); + + // gentest-4433 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x8000020010000L, 0x40000000000L, 0x0L, 0x200000000010L, 0x40000014010L, + 0x8200028400000L, false, 0, 0x0L), + 4 + ), + 63629 + ); + + // gentest-4434 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x80000800200L, 0x40000000000L, 0x0L, 0x200000000010L, 0x40000004210L, + 0x280008c00000L, true, 0, 0x0L), + 4 + ), + 118065 + ); + + // gentest-4435 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x80000800200L, 0x40000000000L, 0x0L, 0x20000000000004L, 0x40000004204L, + 0x20080008c00000L, false, 0, 0x0L), + 4 + ), + 159316 + ); + + // gentest-4436 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x80040000200L, 0x20000000000L, 0x0L, 0x4000000000000004L, 0x20000004204L, + 0x4000080048400000L, true, 0, 0x0L), + 4 + ), + 119075 + ); + + // gentest-4437 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x1040010000L, 0x20000000000L, 0x0L, 0x4000000000000002L, 0x20000014002L, + 0x4000001048400000L, false, 0, 0x0L), + 4 + ), + 195748 + ); + + // gentest-4438 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x80001000010000L, 0x20000000000L, 0x0L, 0x4000000000000200L, 0x20000014200L, + 0x4080001008400000L, true, 0, 0x0L), + 4 + ), + 105240 + ); + + // gentest-4439 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x1000010400L, 0x80000000000L, 0x0L, 0x4000000000000004L, 0x80000014004L, + 0x4000001008400400L, false, 0, 0x0L), + 4 + ), + 96522 + ); + + // gentest-4440 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x8000000000010400L, 0x80000000000L, 0x0L, 0x2000000000000200L, + 0x80000014200L, 0xa000000008400400L, true, 0, 0x0L), + 4 + ), + 28522 + ); + + // gentest-4441 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x8000000000010400L, 0x200000000000L, 0x0L, 0x4000000000000100L, + 0x200000014100L, 0xc000000008400400L, false, 0, 0x0L), + 4 + ), + 70473 + ); + + // gentest-4442 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x202000010000L, 0x20000000000000L, 0x0L, 0x4000000000000100L, + 0x20000000014100L, 0x4000202008400000L, true, 0, 0x0L), + 4 + ), + 110572 + ); + + // gentest-4443 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x2480000000L, 0x80000000000000L, 0x0L, 0x4000000000000100L, + 0x80000400004100L, 0x4000002088400000L, false, 0, 0x0L), + 4 + ), + 109291 + ); + + // gentest-4444 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x480200000L, 0x2000000000000L, 0x0L, 0x4000000000000100L, 0x2000400004100L, + 0x4000000088600000L, true, 0, 0x0L), + 4 + ), + 159503 + ); + + // gentest-4445 + assertEqual( + perft( + Board(0x8404000L, 0x0L, 0x12000080000000L, 0x0L, 0x0L, 0x4000000000000100L, 0x10000000004100L, + 0x4002000088400000L, false, 0, 0x0L), + 4 + ), + 41414 + ); + + // gentest-4446 + assertEqual( + perft( + Board(0x484000L, 0x0L, 0x2000010080000000L, 0x0L, 0x0L, 0x4000000000000100L, 0x2000000000004100L, + 0x4000010080480000L, true, 0, 0x0L), + 4 + ), + 27616 + ); + + // gentest-4447 + assertEqual( + perft( + Board(0x484000L, 0x0L, 0x800010000010000L, 0x0L, 0x0L, 0x4000000000000001L, 0x14001L, + 0x4800010000480000L, false, 0, 0x0L), + 4 + ), + 27076 + ); + + // gentest-4448 + assertEqual( + perft( + Board(0x404800L, 0x0L, 0x14000000004L, 0x0L, 0x0L, 0x4000000000000001L, 0x4005L, 0x4000014000400800L, + true, 0, 0x0L), + 4 + ), + 27500 + ); + + // gentest-4449 + assertEqual( + perft( + Board(0x404800L, 0x0L, 0x4000001004L, 0x0L, 0x0L, 0x4000000000000400L, 0x4404L, 0x4000004000401800L, + false, 0, 0x0L), + 4 + ), + 40871 + ); + + // gentest-4450 + assertEqual( + perft( + Board(0x404800L, 0x0L, 0x800000000000024L, 0x0L, 0x0L, 0x4000000000040000L, 0x44004L, + 0x4800000000400820L, true, 0, 0x0L), + 4 + ), + 40246 + ); + + // gentest-4451 + assertEqual( + perft( + Board(0x404800L, 0x0L, 0x800000000001004L, 0x0L, 0x0L, 0x4000000000040000L, 0x44004L, + 0x4800000000401800L, false, 0, 0x0L), + 4 + ), + 52116 + ); + + // gentest-4452 + assertEqual( + perft( + Board(0x404000L, 0x8L, 0x10000000011000L, 0x0L, 0x0L, 0x4000000000040000L, 0x54000L, + 0x4010000000401008L, true, 0, 0x0L), + 4 + ), + 23043 + ); + + // gentest-4453 + assertEqual( + perft( + Board(0x404000L, 0x8L, 0x10008000010000L, 0x0L, 0x0L, 0x4000000010000000L, 0x10014000L, + 0x4010008000400008L, false, 0, 0x0L), + 4 + ), + 60414 + ); + + // gentest-4454 + assertEqual( + perft( + Board(0x404000L, 0x8L, 0x2020000000010000L, 0x0L, 0x0L, 0x4000000020000000L, 0x20014000L, + 0x6020000000400008L, true, 0, 0x0L), + 4 + ), + 75720 + ); + + // gentest-4455 + assertEqual( + perft( + Board(0x404000L, 0x8L, 0x20000408000000L, 0x0L, 0x0L, 0x4000000020000000L, 0x28004000L, + 0x4020000400400008L, false, 0, 0x0L), + 4 + ), + 117707 + ); + + // gentest-4456 + assertEqual( + perft( + Board(0x404000L, 0x8L, 0x21000002000000L, 0x0L, 0x0L, 0x40000020000000L, 0x1000020004000L, + 0x60000002400008L, true, 0, 0x0L), + 4 + ), + 116799 + ); + + // gentest-4457 + assertEqual( + perft( + Board(0x404000L, 0x100000L, 0x21000002000000L, 0x0L, 0x0L, 0x40000020000000L, 0x1000020004000L, + 0x60000002500000L, false, 0, 0x0L), + 4 + ), + 102094 + ); + + // gentest-4458 + assertEqual( + perft( + Board(0x404000L, 0x100000L, 0x1400002000000L, 0x0L, 0x0L, 0x8000000010000000L, 0x1000010004000L, + 0x8000400002500000L, true, 0, 0x0L), + 4 + ), + 26682 + ); + + // gentest-4459 + assertEqual( + perft( + Board(0x404000L, 0x100000L, 0x40000a000000L, 0x0L, 0x0L, 0x80000000200000L, 0x8204000L, + 0x80400002500000L, false, 0, 0x0L), + 4 + ), + 121044 + ); + + // gentest-4460 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x40000a000000L, 0x0L, 0x0L, 0x4000000000004000L, 0x8004000L, + 0x4000400002400000L, true, 0, 0x0L), + 4 + ), + 126170 + ); + + // gentest-4461 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x1000002000002L, 0x0L, 0x0L, 0x4000000000400000L, 0x1000000400000L, + 0x4000000002000002L, false, 0, 0x0L), + 4 + ), + 79493 + ); + + // gentest-4462 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x1080000000002L, 0x0L, 0x0L, 0x4000000020000000L, 0x1000020000000L, + 0x4000080000000002L, true, 0, 0x0L), + 4 + ), + 21777 + ); + + // gentest-4463 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x1000002002L, 0x0L, 0x0L, 0x4000000000200000L, 0x202000L, 0x4000001000000002L, + false, 0, 0x0L), + 4 + ), + 95674 + ); + + // gentest-4464 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x82000002L, 0x0L, 0x0L, 0x4000000000200000L, 0x80200000L, 0x4000000002000002L, + true, 0, 0x0L), + 4 + ), + 77483 + ); + + // gentest-4465 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x80080000002L, 0x0L, 0x0L, 0x4000004000000000L, 0x4080000000L, 0x4000080000000002L, + false, 0, 0x0L), + 4 + ), + 33957 + ); + + // gentest-4466 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4467 + assertEqual( + perft( + Board(0xbf40004800b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4800b7ffL, 0xffbf400000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 418862 + ); + + // gentest-4468 + assertEqual( + perft( + Board(0xbb44004800b700L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x4800bff7L, 0xfdbb450000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 595259 + ); + + // gentest-4469 + assertEqual( + perft( + Board(0xbb440068019600L, 0x4000010000000042L, 0x2400000000000024L, 0x8200000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x68019ef7L, 0xfebb450000000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 435984 + ); + + // gentest-4470 + assertEqual( + perft( + Board(0xbb440078018600L, 0x4000010000000042L, 0x2400000000000024L, 0x8200000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x78018ef7L, 0xfebb450000000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 705986 + ); + + // gentest-4471 + assertEqual( + perft( + Board(0xbb441068018600L, 0x4000010000200002L, 0x2400000000000024L, 0x8200000000000081L, + 0x20000000800L, 0x1000000000000010L, 0x1068218eb7L, 0xf6bb470000000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 975626 + ); + + // gentest-4472 + assertEqual( + perft( + Board(0xbb441068018600L, 0x4000000400200002L, 0x2400000000800004L, 0x8100000000000081L, + 0x20000000800L, 0x1000000000000010L, 0x1068a18e97L, 0xf5bb460400000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 970176 + ); + + // gentest-4473 + assertEqual( + perft( + Board(0xbb441860018600L, 0x800400200002L, 0x2400000000800004L, 0x8100000000000081L, 0x20000000800L, + 0x1000000000000020L, 0x1860a18ea7L, 0xb5bbc60400000000L, false, 0, 0x8000000000000000L), + 4 + ), + 968169 + ); + + // gentest-4474 + assertEqual( + perft( + Board(0xbb441860018600L, 0x800400000012L, 0x2400000000800004L, 0x8200000000000081L, 0x100000800L, + 0x1000000000000020L, 0x1860818eb7L, 0xb6bbc40500000000L, true, 0, 0x8000000000000000L), + 4 + ), + 968066 + ); + + // gentest-4475 + assertEqual( + perft( + Board(0x9b640860058200L, 0x800400000012L, 0x2400000000800004L, 0x8200000000000081L, 0x100000800L, + 0x1000000000000020L, 0x200860858ab7L, 0xb69bc40500000000L, false, 0, 0x8000000000000000L), + 4 + ), + 891707 + ); + + // gentest-4476 + assertEqual( + perft( + Board(0x9b600860058200L, 0x800400000402L, 0x2400000000800004L, 0x8100000000000081L, 0x100000800L, + 0x1000000000000020L, 0x200060858ea7L, 0xb59bc00d00000000L, true, 0, 0x8000000000000000L), + 4 + ), + 897714 + ); + + // gentest-4477 + assertEqual( + perft( + Board(0xbb400860058200L, 0x800001000402L, 0x2400000000800004L, 0x8100000000000081L, 0x100000800L, + 0x1000000000001000L, 0x20000060859e87L, 0xb59bc00901000000L, false, 0, 0x8000000000000000L), + 4 + ), + 73516 + ); + + // gentest-4478 + assertEqual( + perft( + Board(0xba410860058200L, 0x800001000402L, 0x2400000000800004L, 0x8100000000000081L, 0x100000800L, + 0x800000000080000L, 0x200000608d8e87L, 0xad9ac10901000000L, true, 0, 0x0L), + 4 + ), + 454423 + ); + + // gentest-4479 + assertEqual( + perft( + Board(0xba414820058200L, 0x41000402L, 0x2400000000800004L, 0x8100000000000041L, 0x100000800L, + 0x800000000080000L, 0x200040208d8e47L, 0xad9a410941000000L, false, 0, 0x0L), + 4 + ), + 574965 + ); + + // gentest-4480 + assertEqual( + perft( + Board(0xb2494820058200L, 0x41000402L, 0x2400000000800004L, 0x8100000000000041L, 0x4000000100000L, + 0x800000000080000L, 0x200040209d8647L, 0xad96490841000000L, true, 0, 0x0L), + 4 + ), + 1250883 + ); + + // gentest-4481 + assertEqual( + perft( + Board(0xb2494822058000L, 0x1000402L, 0x2400000000800004L, 0x8100000040000001L, 0x20000100000L, + 0x800000000080000L, 0x200040629d8407L, 0xad924b0801000000L, false, 0, 0x0L), + 4 + ), + 609422 + ); + + // gentest-4482 + assertEqual( + perft( + Board(0xb2494822058000L, 0x1000402L, 0x2000000000800004L, 0x8100000040000001L, 0x100400000000L, + 0x800000000080000L, 0x201040628d8407L, 0xa992490c01000000L, true, 0, 0x0L), + 4 + ), + 695622 + ); + + // gentest-4483 + assertEqual( + perft( + Board(0xb2415822058000L, 0x1000402L, 0x2000000000800004L, 0x8100000040000001L, 0x400000000L, + 0x800000000000800L, 0x20004062858c07L, 0xa992411c01000000L, false, 0, 0x0L), + 4 + ), + 471061 + ); + + // gentest-4484 + assertEqual( + perft( + Board(0xb241502a058000L, 0x1000012L, 0x2000000000800004L, 0x8100000040000001L, 0x80000000000L, + 0x800000000000800L, 0x20004062858817L, 0xa992491009000000L, true, 0, 0x0L), + 4 + ), + 504221 + ); + + // gentest-4485 + assertEqual( + perft( + Board(0xb041522a058000L, 0x1004002L, 0x2000000000800004L, 0x8100000000400001L, 0x80000000000L, + 0x800000000000800L, 0x20004022c5c807L, 0xa990491209000000L, false, 0, 0x0L), + 4 + ), + 486485 + ); + + // gentest-4486 + assertEqual( + perft( + Board(0xb0415226098000L, 0x20000004002L, 0x2000000000800004L, 0x8100000000400001L, 0x80000000000L, + 0x800000000000800L, 0x20004026c1c807L, 0xa9904b1200080000L, true, 0, 0x0L), + 4 + ), + 512043 + ); + + // gentest-4487 + assertEqual( + perft( + Board(0xb04152a6090000L, 0x20000004002L, 0x800040000004L, 0x8100000000400001L, 0x80000000000L, + 0x800000000000800L, 0x200040e6414807L, 0x8990cb1200080000L, false, 0, 0x0L), + 4 + ), + 826996 + ); + + // gentest-4488 + assertEqual( + perft( + Board(0x904053a6090000L, 0x20000004002L, 0x2000800040000004L, 0x8100000000400001L, 0x8000000L, + 0x800000000000800L, 0x20000040e6414807L, 0x8990c21308080000L, true, 0, 0x0L), + 4 + ), + 955651 + ); + + // gentest-4489 + assertEqual( + perft( + Board(0x904053a2090000L, 0x20000004002L, 0x2000800040000004L, 0x8100000000400001L, 0x8000000L, + 0x4000000000010L, 0x20000042e2414017L, 0x8194c21108080000L, false, 0, 0x0L), + 4 + ), + 1298309 + ); + + // gentest-4490 + assertEqual( + perft( + Board(0x904053a2090000L, 0x20000000002L, 0x40800040000004L, 0x8100000000400001L, 0x4000L, + 0x4000000000010L, 0x400042e2410017L, 0x8194c21100084000L, true, 0, 0x0L), + 4 + ), + 1646903 + ); + + // gentest-4491 + assertEqual( + perft( + Board(0x904053a2090000L, 0x20000000002L, 0x40802000000004L, 0x8100000000400001L, 0x0L, + 0x4000000002000L, 0x400062a2412007L, 0x8194c21100080000L, false, 0, 0x0L), + 4 + ), + 1219673 + ); + + // gentest-4492 + assertEqual( + perft( + Board(0x805053a2090000L, 0x400000000000002L, 0x2000802000000004L, 0x8100000000400001L, 0x0L, + 0x4000000002000L, 0x20000062a2412007L, 0x8584d01100080000L, true, 0, 0x0L), + 4 + ), + 660294 + ); + + // gentest-4493 + assertEqual( + perft( + Board(0x805053a2090000L, 0x400000000040000L, 0x2000802000000004L, 0x8000010000000041L, 0x0L, + 0x4000000002000L, 0x20000062a2052045L, 0x8484d11100080000L, false, 0, 0x0L), + 4 + ), + 1054736 + ); + + // gentest-4494 + assertEqual( + perft( + Board(0x805053a2090000L, 0x10000000000100L, 0x2000802000000004L, 0x8000040000000041L, 0x0L, + 0x4000000002000L, 0x20000062a2012145L, 0x8094d41100080000L, true, 0, 0x0L), + 4 + ), + 937008 + ); + + // gentest-4495 + assertEqual( + perft( + Board(0x805051a2090000L, 0x10000000000100L, 0x2000802000000004L, 0x8000020000000041L, 0x0L, + 0x4000000400000L, 0x20000060a2410145L, 0x8094d21100080000L, false, 0, 0x0L), + 4 + ), + 800306 + ); + + // gentest-4496 + assertEqual( + perft( + Board(0x809051a2090000L, 0x10000000000100L, 0x2000002000000004L, 0x8000020000000041L, 0x0L, + 0x400000000400000L, 0x20008020a2410145L, 0x8490125100080000L, true, 0, 0x0L), + 4 + ), + 676096 + ); + + // gentest-4497 + assertEqual( + perft( + Board(0x809051a2090000L, 0x800000100L, 0x2000002000000004L, 0x8000020000000011L, 0x0L, + 0x400000000800000L, 0x20008020a2810115L, 0x8480125900080000L, false, 0, 0x0L), + 4 + ), + 855983 + ); + + // gentest-4498 + assertEqual( + perft( + Board(0x809051a0090000L, 0x2040000L, 0x2000002000000004L, 0x8000020000000011L, 0x0L, + 0x200000000800000L, 0x20008020a0850015L, 0x8280125102080000L, true, 0, 0x0L), + 4 + ), + 993324 + ); + + // gentest-4499 + assertEqual( + perft( + Board(0x809040b2080000L, 0x40000L, 0x2000002000000004L, 0x8000020100000010L, 0x0L, 0x200000000800000L, + 0x20008021a2840014L, 0x8280124010080000L, false, 0, 0x0L), + 4 + ), + 629622 + ); + + // gentest-4500 + assertEqual( + perft( + Board(0x809040a0080000L, 0x40000L, 0x2000000010000004L, 0x8000000102000010L, 0x0L, 0x4000000800000L, + 0x20008001b0840014L, 0x8084104002080000L, true, 0, 0x0L), + 4 + ), + 1233007 + ); + + // gentest-4501 + assertEqual( + perft( + Board(0x809040a0080000L, 0x40000L, 0x2000000800000004L, 0x8000000402000010L, 0x0L, 0x8000000800000L, + 0x2000800ca0840014L, 0x8088104002080000L, false, 0, 0x0L), + 4 + ), + 855778 + ); + + // gentest-4502 + assertEqual( + perft( + Board(0x808048a0080000L, 0x40000L, 0x2000000000000004L, 0x8000000418000000L, 0x0L, 0x8000000800000L, + 0x20008004b0840004L, 0x8088004808080000L, true, 0, 0x0L), + 4 + ), + 234954 + ); + + // gentest-4503 + assertEqual( + perft( + Board(0x808048a0080000L, 0x40000L, 0x2000000000000004L, 0x4000001408000000L, 0x0L, 0x8000000004000L, + 0x20008014a0044004L, 0x4088004808080000L, false, 0, 0x0L), + 4 + ), + 339812 + ); + + // gentest-4504 + assertEqual( + perft( + Board(0x8080c028080000L, 0x40000L, 0x2000000000000004L, 0x4000001404000000L, 0x0L, 0x8000000004000L, + 0x2000809420044004L, 0x408800400c080000L, true, 0, 0x0L), + 4 + ), + 335448 + ); + + // gentest-4505 + assertEqual( + perft( + Board(0x80808068080000L, 0x100L, 0x2000000000000004L, 0x4000000404001000L, 0x0L, 0x8000000004000L, + 0x2000808420005104L, 0x408800004c080000L, false, 0, 0x0L), + 4 + ), + 305168 + ); + + // gentest-4506 + assertEqual( + perft( + Board(0x80808068000800L, 0x100L, 0x2000000000000004L, 0x4000000404000400L, 0x0L, 0x800000000004000L, + 0x2000808420004504L, 0x488000004c000800L, true, 0, 0x0L), + 4 + ), + 366528 + ); + + // gentest-4507 + assertEqual( + perft( + Board(0x80808068000800L, 0x100L, 0x2000000000000004L, 0x4004000400L, 0x0L, 0x800000000004000L, + 0x2000808024004504L, 0x880004048000800L, false, 0, 0x0L), + 4 + ), + 360700 + ); + + // gentest-4508 + assertEqual( + perft( + Board(0x80800060080800L, 0x100L, 0x2000000000000004L, 0x8000040400L, 0x0L, 0x800000000004000L, + 0x2000800020044504L, 0x880008040080800L, true, 0, 0x0L), + 4 + ), + 254481 + ); + + // gentest-4509 + assertEqual( + perft( + Board(0x80800060080000L, 0x100L, 0x2000000000000004L, 0x8000040008L, 0x0L, 0x8000000004000L, + 0x200080002004410cL, 0x88008040080000L, false, 0, 0x0L), + 4 + ), + 237876 + ); + + // gentest-4510 + assertEqual( + perft( + Board(0x80800060080000L, 0x100L, 0x2000000000000004L, 0x840008L, 0x0L, 0x8000000400000L, + 0x200080002044010cL, 0x88000040880000L, true, 0, 0x0L), + 4 + ), + 12546 + ); + + // gentest-4511 + assertEqual( + perft( + Board(0x80800060080000L, 0x100L, 0x2000000000010000L, 0x840008L, 0x0L, 0x100000004000L, + 0x2000800020054108L, 0x80100040880000L, false, 0, 0x0L), + 4 + ), + 198007 + ); + + // gentest-4512 + assertEqual( + perft( + Board(0x80800020480000L, 0x100L, 0x40000000010000L, 0x840008L, 0x0L, 0x2000004000L, 0x40800020054108L, + 0x80002000c80000L, true, 0, 0x0L), + 4 + ), + 142515 + ); + + // gentest-4513 + assertEqual( + perft( + Board(0x80800020480000L, 0x2000000L, 0x40000000010000L, 0x820008L, 0x0L, 0x40004000L, + 0x40800022034008L, 0x80000040c80000L, false, 0, 0x0L), + 4 + ), + 98239 + ); + + // gentest-4514 + assertEqual( + perft( + Board(0x80000020400000L, 0x2000000L, 0x40000000010000L, 0xa8000L, 0x0L, 0x40004000L, + 0x400000220b4000L, 0x80000040408000L, true, 0, 0x0L), + 4 + ), + 17927 + ); + + // gentest-4515 + assertEqual( + perft( + Board(0x80000020400000L, 0x2000000L, 0x10001L, 0xa8000L, 0x0L, 0x8000000040L, 0x220b0041L, + 0x80008000408000L, false, 0, 0x0L), + 4 + ), + 174064 + ); + + // gentest-4516 + assertEqual( + perft( + Board(0x80000020400000L, 0x800000000L, 0x10001L, 0x8a0000L, 0x0L, 0x80000040L, 0x8200b0041L, + 0x80000080c00000L, true, 0, 0x0L), + 4 + ), + 76078 + ); + + // gentest-4517 + assertEqual( + perft( + Board(0x80000020400000L, 0x800000000L, 0x10001L, 0x2080080L, 0x0L, 0x80004000L, 0x822094001L, + 0x80000080400080L, false, 0, 0x0L), + 4 + ), + 162878 + ); + + // gentest-4518 + assertEqual( + perft( + Board(0x8020400000L, 0x800000000L, 0x10000L, 0x2000009L, 0x0L, 0x80004000L, 0x822014008L, + 0x8080400001L, true, 0, 0x0L), + 4 + ), + 61409 + ); + + // gentest-4519 + assertEqual( + perft( + Board(0x8020400000L, 0x800000000L, 0x10000L, 0x200000000000808L, 0x0L, 0x80004000L, + 0x200000820014800L, 0x8080400008L, false, 0, 0x0L), + 4 + ), + 102102 + ); + + // gentest-4520 + assertEqual( + perft( + Board(0xa0400000L, 0x800000000L, 0x10000L, 0x20808L, 0x0L, 0x40004000L, 0x820034800L, 0xc0400008L, + true, 0, 0x0L), + 4 + ), + 124778 + ); + + // gentest-4521 + assertEqual( + perft( + Board(0xa0400000L, 0x800000000L, 0x400000000L, 0x22010L, 0x0L, 0x40004000L, 0xc20026000L, 0xc0400010L, + false, 0, 0x0L), + 4 + ), + 288387 + ); + + // gentest-4522 + assertEqual( + perft( + Board(0xa0400000L, 0x800000000L, 0x400000000L, 0x52000L, 0x0L, 0x40004000L, 0xc20016000L, 0xc0440000L, + true, 0, 0x0L), + 4 + ), + 191473 + ); + + // gentest-4523 + assertEqual( + perft( + Board(0x20c00000L, 0x800000000L, 0x20000000000L, 0x52000L, 0x0L, 0x40000020L, 0x20820012020L, + 0x40c40000L, false, 0, 0x0L), + 4 + ), + 263186 + ); + + // gentest-4524 + assertEqual( + perft( + Board(0x20c00000L, 0x200000000000L, 0x20000000000L, 0x92000L, 0x0L, 0x2000000020L, 0x220020012020L, + 0x2000c80000L, true, 0, 0x0L), + 4 + ), + 317823 + ); + + // gentest-4525 + assertEqual( + perft( + Board(0x20804000L, 0x200000000000L, 0x20000000000L, 0x100000000082000L, 0x0L, 0x2000001000L, + 0x100220020003000L, 0x2000884000L, false, 0, 0x0L), + 4 + ), + 372628 + ); + + // gentest-4526 + assertEqual( + perft( + Board(0x20800000L, 0x200000000000L, 0x20000000040L, 0x8000000000012000L, 0x0L, 0x2000001000L, + 0x8000220020003000L, 0x2000810040L, true, 0, 0x0L), + 4 + ), + 379941 + ); + + // gentest-4527 + assertEqual( + perft( + Board(0x20800000L, 0x800000000L, 0x400000040L, 0x8000000000012000L, 0x0L, 0x10001000L, + 0x8000000c20003000L, 0x10810040L, false, 0, 0x0L), + 4 + ), + 304989 + ); + + // gentest-4528 + assertEqual( + perft( + Board(0x20800000L, 0x2000000L, 0x400000040L, 0x8001000000002000L, 0x0L, 0x10001000L, + 0x8000000422003000L, 0x1000010800040L, true, 0, 0x0L), + 4 + ), + 330138 + ); + + // gentest-4529 + assertEqual( + perft( + Board(0x20800000L, 0x2000000L, 0x20000000040L, 0x810000000002000L, 0x0L, 0x10001000L, + 0x800020022003000L, 0x10000010800040L, false, 0, 0x0L), + 4 + ), + 218327 + ); + + // gentest-4530 + assertEqual( + perft( + Board(0x20800000L, 0x2000000L, 0x20000008000L, 0x840000000000020L, 0x0L, 0x10001000L, + 0x800020022001020L, 0x40000010808000L, true, 0, 0x0L), + 4 + ), + 454224 + ); + + // gentest-4531 + assertEqual( + perft( + Board(0x20800000L, 0x2000000L, 0x8008000L, 0x40000000000028L, 0x0L, 0x2000001000L, 0x2a001028L, + 0x40002000808000L, false, 0, 0x0L), + 4 + ), + 413321 + ); + + // gentest-4532 + assertEqual( + perft( + Board(0x20800000L, 0x80000L, 0x8000040L, 0x4000000000028L, 0x0L, 0x2000001000L, 0x28081028L, + 0x4002000800040L, true, 0, 0x0L), + 4 + ), + 444689 + ); + + // gentest-4533 + assertEqual( + perft( + Board(0x20800000L, 0x80000L, 0x8000000L, 0x8000000000048L, 0x0L, 0x2000000020L, 0x28080068L, + 0x8002000800000L, false, 0, 0x0L), + 4 + ), + 238607 + ); + + // gentest-4534 + assertEqual( + perft( + Board(0x20800000L, 0x80000L, 0x8000000L, 0x5000000000000008L, 0x0L, 0x2000000020L, + 0x4000000028080028L, 0x1000002000800000L, true, 0, 0x0L), + 4 + ), + 292521 + ); + + // gentest-4535 + assertEqual( + perft( + Board(0x20800000L, 0x4L, 0x8000000L, 0x3000000000000008L, 0x0L, 0x100000000020L, 0x200000002800002cL, + 0x1000100000800000L, false, 0, 0x0L), + 4 + ), + 135505 + ); + + // gentest-4536 + assertEqual( + perft( + Board(0x2000800000L, 0x4L, 0x8000000L, 0x2000000000100008L, 0x0L, 0x8000000000020L, + 0x200000200800002cL, 0x8000000900000L, true, 0, 0x0L), + 4 + ), + 133082 + ); + + // gentest-4537 + assertEqual( + perft( + Board(0x2000800000L, 0x100L, 0x20000000000L, 0x2000000000100008L, 0x0L, 0x10000000000020L, + 0x2000022000000128L, 0x10000000900000L, false, 0, 0x0L), + 4 + ), + 142200 + ); + + // gentest-4538 + assertEqual( + perft( + Board(0x2000800000L, 0x100L, 0x100000000L, 0x2000040000000008L, 0x0L, 0x10000000000020L, + 0x2000002100000128L, 0x10040000800000L, true, 0, 0x0L), + 4 + ), + 196787 + ); + + // gentest-4539 + assertEqual( + perft( + Board(0x2000800000L, 0x100L, 0x100000000L, 0x200c0000000000L, 0x0L, 0x1000000000000020L, + 0x20082100000120L, 0x1000040000800000L, false, 0, 0x0L), + 4 + ), + 144838 + ); + + // gentest-4540 + assertEqual( + perft( + Board(0x2000800000L, 0x100L, 0x100000000L, 0x100000000800L, 0x0L, 0x20000000000020L, 0x2100000920L, + 0x20100000800000L, true, 0, 0x0L), + 4 + ), + 199164 + ); + + // gentest-4541 + assertEqual( + perft( + Board(0x2000800000L, 0x100L, 0x2000000L, 0x10000000004000L, 0x0L, 0x20000000000020L, 0x2002004120L, + 0x30000000800000L, false, 0, 0x0L), + 4 + ), + 136292 + ); + + // gentest-4542 + assertEqual( + perft( + Board(0x2000800000L, 0x100L, 0x2000000L, 0x84000000000L, 0x0L, 0x20000000000020L, 0x6002000120L, + 0x20080000800000L, true, 0, 0x0L), + 4 + ), + 133520 + ); + + // gentest-4543 + assertEqual( + perft( + Board(0x2000800000L, 0x100L, 0x10L, 0x4000000800000000L, 0x0L, 0x20000000000020L, 0x4000002000000130L, + 0x20000800800000L, false, 0, 0x0L), + 4 + ), + 145038 + ); + + // gentest-4544 + assertEqual( + perft( + Board(0x2000008000L, 0x100L, 0x10L, 0x800000000L, 0x0L, 0x1000000000000020L, 0x2000000130L, + 0x1000000800008000L, true, 0, 0x0L), + 4 + ), + 77639 + ); + + // gentest-4545 + assertEqual( + perft( + Board(0x2000000000L, 0x40000L, 0x10L, 0x800000080L, 0x0L, 0x1000000000002000L, 0x2000042010L, + 0x1000000800000080L, false, 0, 0x0L), + 4 + ), + 142079 + ); + + // gentest-4546 + assertEqual( + perft( + Board(0x200000000000L, 0x40000L, 0x10L, 0x802000000000L, 0x0L, 0x1000000000002000L, 0x200000042010L, + 0x1000802000000000L, true, 0, 0x0L), + 4 + ), + 42589 + ); + + // gentest-4547 + assertEqual( + perft( + Board(0x200000000000L, 0x40000L, 0x10L, 0x800000000000L, 0x0L, 0x1000000020000000L, 0x200020040010L, + 0x1000800000000000L, false, 0, 0x0L), + 4 + ), + 60608 + ); + + // gentest-4548 + assertEqual( + perft( + Board(0x200000000000L, 0x1000L, 0x10L, 0x80000000L, 0x0L, 0x800000020000000L, 0x200020001010L, + 0x800000080000000L, true, 0, 0x0L), + 4 + ), + 28683 + ); + + // gentest-4549 + assertEqual( + perft( + Board(0x200000000000L, 0x400000L, 0x10L, 0x8000000000L, 0x0L, 0x800000000200000L, 0x200000600010L, + 0x800008000000000L, false, 0, 0x0L), + 4 + ), + 90079 + ); + + // gentest-4550 + assertEqual( + perft( + Board(0x200000000000L, 0x400000L, 0x10L, 0x4000000L, 0x0L, 0x800000000002000L, 0x200000402010L, + 0x800000004000000L, true, 0, 0x0L), + 4 + ), + 74825 + ); + + // gentest-4551 + assertEqual( + perft( + Board(0x200000000000L, 0x400000L, 0x4000000000000L, 0x0L, 0x0L, 0x800000000002000L, 0x4200000402000L, + 0x800000000000000L, false, 0, 0x0L), + 4 + ), + 6296 + ); + + // gentest-4552 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4553 + assertEqual( + perft( + Board(0xbf40000048b700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x48b7ffL, 0xffbf400000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 387170 + ); + + // gentest-4554 + assertEqual( + perft( + Board(0xbf00400048b700L, 0x200200000000042L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2048b7fbL, 0xbfbf204000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 547191 + ); + + // gentest-4555 + assertEqual( + perft( + Board(0xaf1040004ab500L, 0x200200000010040L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x204bb5f9L, 0xbfaf304000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 759541 + ); + + // gentest-4556 + assertEqual( + perft( + Board(0xad1240005aa500L, 0x200000040010040L, 0x2400000020000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x205ba5f9L, 0xbfad124040000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1062847 + ); + + // gentest-4557 + assertEqual( + perft( + Board(0xad1240005ea100L, 0x200000040010040L, 0x2400000020000020L, 0x8100000000000081L, + 0x200000000002L, 0x1000000000000010L, 0x205fa1f3L, 0xb7ad324040000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1149535 + ); + + // gentest-4558 + assertEqual( + perft( + Board(0xad1240045a8100L, 0x200000000012040L, 0x2400000020000020L, 0x4100000000000081L, + 0x200000000002L, 0x1000000000000010L, 0x245b81f3L, 0x77ad324000002000L, true, 0, + 0x100000000000081L), + 4 + ), + 1378427 + ); + + // gentest-4559 + assertEqual( + perft( + Board(0xad0240045a8100L, 0x200000000012040L, 0x2400100020000000L, 0x4100000000000081L, + 0x200000000002L, 0x10000000000010L, 0x1000245b81d3L, 0x67bd224000002000L, false, 0, 0x81L), + 4 + ), + 1438385 + ); + + // gentest-4560 + assertEqual( + perft( + Board(0xad0240045a8100L, 0x200000200800040L, 0x2400000020000000L, 0x4100000000000081L, + 0x100000000002L, 0x10000000000010L, 0x2245a81d3L, 0x67bd124000800000L, true, 0, 0x81L), + 4 + ), + 1069129 + ); + + // gentest-4561 + assertEqual( + perft( + Board(0xad0240441a8100L, 0x200000200800040L, 0x2400000020000000L, 0x4100000000000081L, 0x800000008L, + 0x10000000000010L, 0x2641a81d9L, 0x67bd024800800000L, false, 0, 0x81L), + 4 + ), + 1503346 + ); + + // gentest-4562 + assertEqual( + perft( + Board(0xa90240441a8100L, 0x200000200800040L, 0x2404000000000000L, 0x4100000000000081L, 0x800000008L, + 0x1000000000000010L, 0x40002441a81d9L, 0x77a9024800800000L, true, 0, 0x81L), + 4 + ), + 1538701 + ); + + // gentest-4563 + assertEqual( + perft( + Board(0xa90240441a8100L, 0x200000000840040L, 0x400000002400000L, 0x4100000000000081L, 0x800000008L, + 0x1000000000000010L, 0x445e81d9L, 0x57a9024802800000L, false, 0, 0x81L), + 4 + ), + 1406005 + ); + + // gentest-4564 + assertEqual( + perft( + Board(0xa90240441a8100L, 0x200000000840040L, 0x400000002400000L, 0x8100000000000081L, 0x8000008L, + 0x1000000000000800L, 0x445e89c9L, 0x97a902400a800000L, true, 0, 0x0L), + 4 + ), + 1259827 + ); + + // gentest-4565 + assertEqual( + perft( + Board(0xa90240441a8100L, 0x200000000841000L, 0x400000002000010L, 0x8100000000000081L, 0x20000008L, + 0x1000000000000800L, 0x441e9999L, 0x97a9024022800000L, false, 0, 0x0L), + 4 + ), + 884745 + ); + + // gentest-4566 + assertEqual( + perft( + Board(0xa90240441a8100L, 0x200000000841000L, 0x400000400000010L, 0x2100000000000084L, 0x20000008L, + 0x1000000000000800L, 0x441e999cL, 0x37a9024420800000L, true, 0, 0x0L), + 4 + ), + 878659 + ); + + // gentest-4567 + assertEqual( + perft( + Board(0xa90240441a8100L, 0x200000000841000L, 0x400000002000010L, 0x2100000000000440L, 0x20000008L, + 0x1000000000000800L, 0x441e9d58L, 0x37a9024022800000L, false, 0, 0x0L), + 4 + ), + 777247 + ); + + // gentest-4568 + assertEqual( + perft( + Board(0x2902c0441a8100L, 0x200000000841000L, 0x400000400000010L, 0x2100000000000440L, 0x20000002L, + 0x1000000000000800L, 0x441e9d52L, 0x372902c420800000L, true, 0, 0x0L), + 4 + ), + 1293798 + ); + + // gentest-4569 + assertEqual( + perft( + Board(0x2902c0441a8100L, 0x200000000840004L, 0x400000400000010L, 0x4100000000000420L, 0x20000002L, + 0x1000000000000800L, 0x441e8d36L, 0x572902c420800000L, false, 0, 0x0L), + 4 + ), + 1158499 + ); + + // gentest-4570 + assertEqual( + perft( + Board(0x2902c0441a8100L, 0x200000000840004L, 0x400000400000010L, 0x4100000000000220L, 0x20000002L, + 0x40000000000800L, 0x441e8b36L, 0x476902c420800000L, true, 0, 0x0L), + 4 + ), + 1384351 + ); + + // gentest-4571 + assertEqual( + perft( + Board(0x2902c0441a8100L, 0x200000400800004L, 0x400000000000010L, 0x4100000000000220L, 0x1000000002L, + 0x40000000000800L, 0x4441a8b36L, 0x476902d000800000L, false, 0, 0x0L), + 4 + ), + 1315608 + ); + + // gentest-4572 + assertEqual( + perft( + Board(0x290240c41a8100L, 0x10400800004L, 0x400000000000010L, 0x4100000000000420L, 0x1000000002L, + 0x40000000000800L, 0x4441a8d36L, 0x4569035080800000L, true, 0, 0x0L), + 4 + ), + 1174297 + ); + + // gentest-4573 + assertEqual( + perft( + Board(0x290240c41a8100L, 0x10001000044L, 0x400000000000010L, 0x4100000020000400L, 0x1000000002L, + 0x40000000000800L, 0x651a8d16L, 0x4569035080000040L, false, 0, 0x0L), + 4 + ), + 1086203 + ); + + // gentest-4574 + assertEqual( + perft( + Board(0x290040c41a8100L, 0x20002000044L, 0x400000000000010L, 0x4200000020000400L, 0x1000000002L, + 0x40000000000800L, 0x200641a8d16L, 0x4669005082000040L, true, 0, 0x0L), + 4 + ), + 1560464 + ); + + // gentest-4575 + assertEqual( + perft( + Board(0x290000e51a8000L, 0x20002000044L, 0x400000000000010L, 0x4200000000000200L, 0x1000000002L, + 0x40000000000800L, 0x200451a8a16L, 0x46690010a2000040L, false, 0, 0x0L), + 4 + ), + 1172276 + ); + + // gentest-4576 + assertEqual( + perft( + Board(0x280001e51a8000L, 0x20002000044L, 0x400000000002000L, 0x4200000000000200L, 0x1000000000000002L, + 0x40000000000800L, 0x200451aaa06L, 0x56680001a2000040L, true, 0, 0x0L), + 4 + ), + 736776 + ); + + // gentest-4577 + assertEqual( + perft( + Board(0x280001e50a8000L, 0x20002000044L, 0x400000000002000L, 0x4002000000000200L, 0x1000000000000001L, + 0x40000000000800L, 0x200650aaa05L, 0x546a000182000040L, false, 0, 0x0L), + 4 + ), + 671306 + ); + + // gentest-4578 + assertEqual( + perft( + Board(0x280001e58a0000L, 0x20002000044L, 0x400000000002000L, 0x4002000000000200L, 0x11L, + 0x800000000800L, 0x200658a2a05L, 0x442a800182000050L, true, 0, 0x0L), + 4 + ), + 34619 + ); + + // gentest-4579 + assertEqual( + perft( + Board(0x280001e58a0000L, 0x100000002000044L, 0x400000000000010L, 0x4002000000000200L, 0x1L, + 0x400000000800L, 0x1000000658a0a15L, 0x442a400182000040L, false, 0, 0x0L), + 4 + ), + 331191 + ); + + // gentest-4580 + assertEqual( + perft( + Board(0x280001e58a0000L, 0x100000000000444L, 0x400000000000010L, 0x4000000200000100L, 0x1L, + 0x400000000800L, 0x1000000658a0915L, 0x4428400380000440L, true, 0, 0x0L), + 4 + ), + 576080 + ); + + // gentest-4581 + assertEqual( + perft( + Board(0x280001e58a0000L, 0x4000000001050L, 0x400000000000000L, 0x4000000200000100L, 0x1L, + 0x400000000800L, 0x40000658a1901L, 0x4428400380000050L, false, 0, 0x0L), + 4 + ), + 932393 + ); + + // gentest-4582 + assertEqual( + perft( + Board(0x80021e58a0000L, 0x4000000001050L, 0x400000000000000L, 0x4000000200000100L, 0x200L, + 0x80000000000800L, 0x40000658a1b00L, 0x4488002380000050L, true, 0, 0x0L), + 4 + ), + 892621 + ); + + // gentest-4583 + assertEqual( + perft( + Board(0x80021e58a0000L, 0x4000000001050L, 0x400000000000000L, 0x1000000200000001L, 0x400L, + 0x80000000000800L, 0x40000658a1c01L, 0x1488002380000050L, false, 0, 0x0L), + 4 + ), + 1028266 + ); + + // gentest-4584 + assertEqual( + perft( + Board(0x80021e5820000L, 0x4000000080044L, 0x400000000000000L, 0x1200000000000001L, 0x400L, + 0x80000000000800L, 0x4000065820c05L, 0x1688002180080040L, true, 0, 0x0L), + 4 + ), + 735411 + ); + + // gentest-4585 + assertEqual( + perft( + Board(0x80025e1820000L, 0x4000000080044L, 0x400000000000000L, 0x1000000002000002L, 0x400L, + 0x80000000000800L, 0x4000461820c06L, 0x1488002182080040L, false, 0, 0x0L), + 4 + ), + 832680 + ); + + // gentest-4586 + assertEqual( + perft( + Board(0x80025e1820000L, 0x4000000080140L, 0x400000000000000L, 0x2002000000000002L, 0x400L, + 0x80000000000800L, 0x4000461820d02L, 0x248a002180080040L, true, 0, 0x0L), + 4 + ), + 820571 + ); + + // gentest-4587 + assertEqual( + perft( + Board(0x80025e1820000L, 0x10000080140L, 0x400000000000000L, 0x2002000000000002L, 0x4L, + 0x8000000000000800L, 0x10461820906L, 0xa40a002180080040L, false, 0, 0x0L), + 4 + ), + 488836 + ); + + // gentest-4588 + assertEqual( + perft( + Board(0x80421e1820000L, 0x10000080140L, 0x400000000000000L, 0x2002000000000002L, 0x4L, + 0x8000000000000800L, 0x50061820906L, 0xa40a002180080040L, true, 0, 0x0L), + 4 + ), + 651241 + ); + + // gentest-4589 + assertEqual( + perft( + Board(0x80421e1820000L, 0x400002140L, 0x400000000000000L, 0x2002000000000002L, 0x200L, + 0x8000000000000800L, 0x40461820b02L, 0xa40a002180002040L, false, 0, 0x0L), + 4 + ), + 85781 + ); + + // gentest-4590 + assertEqual( + perft( + Board(0xc21e1820000L, 0x400002140L, 0x400000000000000L, 0x2200000000001L, 0x200L, 0x8000000000000800L, + 0x40461820b01L, 0x8402282180002040L, true, 0, 0x0L), + 4 + ), + 791245 + ); + + // gentest-4591 + assertEqual( + perft( + Board(0xc21e1820000L, 0x400002040L, 0x400000000000000L, 0x200002000001L, 0x1000000000L, + 0x8000000000000800L, 0x41461820801L, 0x8400282182002040L, false, 0, 0x0L), + 4 + ), + 903611 + ); + + // gentest-4592 + assertEqual( + perft( + Board(0xc21e1820000L, 0x400202000L, 0x400000000000000L, 0x200000000001L, 0x8000000L, + 0x8000000000000800L, 0x40469820801L, 0x8400282180202000L, true, 0, 0x0L), + 4 + ), + 85186 + ); + + // gentest-4593 + assertEqual( + perft( + Board(0xc21e1820000L, 0x4000082000L, 0x400000000000000L, 0x200000000001L, 0x8000000L, + 0x8000000000000004L, 0x400698a0005L, 0x8400286180002000L, false, 0, 0x0L), + 4 + ), + 419250 + ); + + // gentest-4594 + assertEqual( + perft( + Board(0x429e1820000L, 0x20000000082000L, 0x400000000000000L, 0x200000000001L, 0x20000000000L, + 0x8000000000000004L, 0x600618a0005L, 0x8420202980002000L, true, 0, 0x0L), + 4 + ), + 485957 + ); + + // gentest-4595 + assertEqual( + perft( + Board(0x429e1820000L, 0x20000002002000L, 0x400000000000000L, 0x200000000001L, 0x800000000000000L, + 0x80000000000004L, 0x800040063820005L, 0x4a0202980002000L, false, 0, 0x0L), + 4 + ), + 458188 + ); + + // gentest-4596 + assertEqual( + perft( + Board(0x428e3820000L, 0x20000000002000L, 0x400000000000000L, 0x200000000001L, 0x800000000000000L, + 0x400000000400L, 0x800040061820401L, 0x420602882002000L, true, 0, 0x0L), + 4 + ), + 381711 + ); + + // gentest-4597 + assertEqual( + perft( + Board(0x428e3820000L, 0x20000000000080L, 0x400000000000000L, 0x200000000020L, 0x800000000000000L, + 0x400000000400L, 0x800040061820420L, 0x420602882000080L, false, 0, 0x0L), + 4 + ), + 338316 + ); + + // gentest-4598 + assertEqual( + perft( + Board(0x28e3820000L, 0x40000000080L, 0x400000000000000L, 0x200000000040L, 0x0L, 0x400000000400L, + 0x61820440L, 0x400642882000080L, true, 0, 0x0L), + 4 + ), + 148009 + ); + + // gentest-4599 + assertEqual( + perft( + Board(0x29e2820000L, 0x40000000080L, 0x400000000000000L, 0x200000000010L, 0x0L, 0x800000000400L, + 0x160820410L, 0x400a42882000080L, false, 0, 0x0L), + 4 + ), + 206948 + ); + + // gentest-4600 + assertEqual( + perft( + Board(0x29e2820000L, 0x100000000080L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000400L, + 0x160920400L, 0x400b02882000080L, true, 0, 0x0L), + 4 + ), + 133623 + ); + + // gentest-4601 + assertEqual( + perft( + Board(0x29e2820000L, 0x100000002000L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000800L, + 0x160920800L, 0x400b02882002000L, false, 0, 0x0L), + 4 + ), + 161585 + ); + + // gentest-4602 + assertEqual( + perft( + Board(0x29e2820000L, 0x100000000800L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000008L, + 0x160920008L, 0x400b02882000800L, true, 0, 0x0L), + 4 + ), + 153620 + ); + + // gentest-4603 + assertEqual( + perft( + Board(0x29e2820000L, 0x4000000800L, 0x400000000000000L, 0x200000100000L, 0x0L, 0x800000000004L, + 0x160920004L, 0x400a06882000800L, false, 0, 0x0L), + 4 + ), + 201350 + ); + + // gentest-4604 + assertEqual( + perft( + Board(0x29e2820000L, 0x4000000020L, 0x400000000000000L, 0x10010000000000L, 0x0L, 0x800000000004L, + 0x10000160820004L, 0x400816882000020L, true, 0, 0x0L), + 4 + ), + 171162 + ); + + // gentest-4605 + assertEqual( + perft( + Board(0x29e2820000L, 0x80000000000020L, 0x400000000000000L, 0x1000010000000000L, 0x0L, + 0x800000000008L, 0x1000000160820008L, 0x480812882000020L, false, 0, 0x0L), + 4 + ), + 139597 + ); + + // gentest-4606 + assertEqual( + perft( + Board(0x28e2820000L, 0x2000000000000020L, 0x400000000000000L, 0x1000000100000000L, 0x0L, + 0x800000000004L, 0x1000000060820004L, 0x2400802982000020L, true, 0, 0x0L), + 4 + ), + 125808 + ); + + // gentest-4607 + assertEqual( + perft( + Board(0x68a2820000L, 0x400000000020L, 0x400000000000000L, 0x100100000L, 0x0L, 0x800000000004L, + 0x4020920004L, 0x400c02982000020L, false, 0, 0x0L), + 4 + ), + 14541 + ); + + // gentest-4608 + assertEqual( + perft( + Board(0x60aa820000L, 0x400000000020L, 0x400000000000000L, 0x100100000000L, 0x0L, 0x40000000000004L, + 0x104020820004L, 0x44040218a000020L, true, 0, 0x0L), + 4 + ), + 167967 + ); + + // gentest-4609 + assertEqual( + perft( + Board(0x60aa820000L, 0x400000000020L, 0x400000000000000L, 0x200000010L, 0x0L, 0x40000000000200L, + 0x4020820210L, 0x44040228a000020L, false, 0, 0x0L), + 4 + ), + 155516 + ); + + // gentest-4610 + assertEqual( + perft( + Board(0x608a820000L, 0x20000020L, 0x400000000000000L, 0x20000000002L, 0x0L, 0x40000000000200L, + 0x4000820202L, 0x4400220aa000020L, true, 0, 0x0L), + 4 + ), + 117107 + ); + + // gentest-4611 + assertEqual( + perft( + Board(0x608a820000L, 0x20000020L, 0x10000000000L, 0x20000000008L, 0x0L, 0x40000000000001L, + 0x4000820009L, 0x400320aa000020L, false, 0, 0x0L), + 4 + ), + 149001 + ); + + // gentest-4612 + assertEqual( + perft( + Board(0x608a820000L, 0x20000020L, 0x10000000000L, 0x200000002L, 0x0L, 0x2000000000000001L, + 0x4000820003L, 0x20000122aa000020L, true, 0, 0x0L), + 4 + ), + 60403 + ); + + // gentest-4613 + assertEqual( + perft( + Board(0x608a820000L, 0x800000020L, 0x10000000000L, 0x200000004L, 0x0L, 0x2000000000000100L, + 0x4000820104L, 0x2000012a8a000020L, false, 0, 0x0L), + 4 + ), + 124822 + ); + + // gentest-4614 + assertEqual( + perft( + Board(0x608a820000L, 0x800400000L, 0x10000000000L, 0x500000000L, 0x0L, 0x2000000000000100L, + 0x4400820100L, 0x200001298a400000L, true, 0, 0x0L), + 4 + ), + 30476 + ); + + // gentest-4615 + assertEqual( + perft( + Board(0x608a820000L, 0x800400000L, 0x80000L, 0x100000400L, 0x0L, 0x2000000000000002L, 0x4000820402L, + 0x200000298a480000L, false, 0, 0x0L), + 4 + ), + 67785 + ); + + // gentest-4616 + assertEqual( + perft( + Board(0x608a820000L, 0x4000000400000L, 0x200000000L, 0x104000000L, 0x0L, 0x2000000000000002L, + 0x4004820002L, 0x200400238a400000L, true, 0, 0x0L), + 4 + ), + 149827 + ); + + // gentest-4617 + assertEqual( + perft( + Board(0x608a820000L, 0x4000000400000L, 0x200000000L, 0x104000000L, 0x0L, 0x40000000000002L, + 0x4004820002L, 0x4400238a400000L, false, 0, 0x0L), + 4 + ), + 145448 + ); + + // gentest-4618 + assertEqual( + perft( + Board(0x608a820000L, 0x10000000080L, 0x200000000L, 0x104000000L, 0x0L, 0x40000000000004L, + 0x4004820004L, 0x4001238a000080L, true, 0, 0x0L), + 4 + ), + 105414 + ); + + // gentest-4619 + assertEqual( + perft( + Board(0x608a820000L, 0x10000400000L, 0x200000000L, 0x104000000L, 0x0L, 0x40000000000004L, + 0x4004820004L, 0x4001238a400000L, false, 0, 0x0L), + 4 + ), + 111027 + ); + + // gentest-4620 + assertEqual( + perft( + Board(0x608a820000L, 0x10000400000L, 0x200000000L, 0x100000000L, 0x0L, 0x40000000000200L, + 0x4000820200L, 0x4001238a400000L, true, 0, 0x0L), + 4 + ), + 14810 + ); + + // gentest-4621 + assertEqual( + perft( + Board(0x40208a820000L, 0x10000400000L, 0x20L, 0x100000000L, 0x0L, 0x40000000000002L, 0x400000820002L, + 0x4001218a400020L, false, 0, 0x0L), + 4 + ), + 11882 + ); + + // gentest-4622 + assertEqual( + perft( + Board(0x4000aa820000L, 0x10000400000L, 0x20L, 0x100000000L, 0x0L, 0x8000000000000004L, + 0x400000820004L, 0x80000101aa400020L, true, 0, 0x0L), + 4 + ), + 16882 + ); + + // gentest-4623 + assertEqual( + perft( + Board(0x4000aa820000L, 0x10000400000L, 0x4000000L, 0x100000000L, 0x0L, 0x8000000000000400L, + 0x400000820400L, 0x80000101ae400000L, false, 0, 0x0L), + 4 + ), + 31234 + ); + + // gentest-4624 + assertEqual( + perft( + Board(0x4000aa820000L, 0x10000400000L, 0x20L, 0x100000000L, 0x0L, 0x4000000000000004L, + 0x400000820004L, 0x40000101aa400020L, true, 0, 0x0L), + 4 + ), + 24969 + ); + + // gentest-4625 + assertEqual( + perft( + Board(0x400000aa820000L, 0x18000000000L, 0x20L, 0x100000000L, 0x0L, 0x4000000000000800L, + 0x40000000820800L, 0x40000181aa000020L, false, 0, 0x0L), + 4 + ), + 15659 + ); + + // gentest-4626 + assertEqual( + perft( + Board(0x400000aa820000L, 0x18000000000L, 0x1000L, 0x100000000L, 0x0L, 0x20000000000004L, + 0x40000000820004L, 0x200181aa001000L, true, 0, 0x0L), + 4 + ), + 43281 + ); + + // gentest-4627 + assertEqual( + perft( + Board(0xaa820000L, 0x8400000000L, 0x1000L, 0x4000000100000000L, 0x0L, 0x20000000000800L, + 0x4000000000820800L, 0x200085aa001000L, false, 0, 0x0L), + 4 + ), + 219479 + ); + + // gentest-4628 + assertEqual( + perft( + Board(0xaa820000L, 0x8400000000L, 0x8L, 0x400000100000000L, 0x0L, 0x200000000800L, 0x400000000820800L, + 0x2085aa000008L, true, 0, 0x0L), + 4 + ), + 135687 + ); + + // gentest-4629 + assertEqual( + perft( + Board(0xaa820000L, 0x8400000000L, 0x8L, 0x200000100000000L, 0x0L, 0x100000000004L, 0x200000000820004L, + 0x1085aa000008L, false, 0, 0x0L), + 4 + ), + 172739 + ); + + // gentest-4630 + assertEqual( + perft( + Board(0xa2880000L, 0x8000020000L, 0x8L, 0x300000000L, 0x0L, 0x100000000004L, 0x200800004L, + 0x1081a20a0008L, true, 0, 0x0L), + 4 + ), + 21685 + ); + + // gentest-4631 + assertEqual( + perft( + Board(0xa0880000L, 0x8000020000L, 0x40000000L, 0x102000000L, 0x0L, 0x100000000002L, 0x2800002L, + 0x1081e00a0000L, false, 0, 0x0L), + 4 + ), + 155261 + ); + + // gentest-4632 + assertEqual( + perft( + Board(0xa0880000L, 0x8000000800L, 0x1000L, 0x102000000L, 0x0L, 0x100000000004L, 0x2800004L, + 0x1081a0081800L, true, 0, 0x0L), + 4 + ), + 141957 + ); + + // gentest-4633 + assertEqual( + perft( + Board(0xa0880000L, 0x8000000800L, 0x1000L, 0x1000000100000000L, 0x0L, 0x2000000004L, + 0x1000000000800004L, 0xa1a0081800L, false, 0, 0x0L), + 4 + ), + 126756 + ); + + // gentest-4634 + assertEqual( + perft( + Board(0xa0880000L, 0x40000000000800L, 0x1000L, 0x100000010000L, 0x0L, 0x2000000004L, 0x100000800004L, + 0x400020a0091800L, true, 0, 0x0L), + 4 + ), + 103466 + ); + + // gentest-4635 + assertEqual( + perft( + Board(0xa0880000L, 0x40000000000800L, 0x8L, 0x400000000010000L, 0x0L, 0x2000000004L, + 0x400000000800004L, 0x400020a0090808L, false, 0, 0x0L), + 4 + ), + 165549 + ); + + // gentest-4636 + assertEqual( + perft( + Board(0xa0880000L, 0x40000000000800L, 0x8000000000L, 0x2000000000010000L, 0x0L, 0x100000000004L, + 0x2000000000800004L, 0x401080a0090800L, true, 0, 0x0L), + 4 + ), + 115097 + ); + + // gentest-4637 + assertEqual( + perft( + Board(0xa0880000L, 0x2000000800L, 0x8000000000L, 0x400000000010000L, 0x0L, 0x100000000004L, + 0x400000000800004L, 0x10a0a0090800L, false, 0, 0x0L), + 4 + ), + 209599 + ); + + // gentest-4638 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4639 + assertEqual( + perft( + Board(0xff000002807d00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2807dffL, 0xbfff800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 200647 + ); + + // gentest-4640 + assertEqual( + perft( + Board(0x9f600042803d00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x42803dffL, 0xbf9fe00000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 218491 + ); + + // gentest-4641 + assertEqual( + perft( + Board(0x9f204042803d00L, 0x200800000240000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x42a43dbdL, 0xbf9fa04000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 299815 + ); + + // gentest-4642 + assertEqual( + perft( + Board(0x9f204042902d00L, 0x200800000240000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x42b42dbdL, 0xbf9fa04000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 447156 + ); + + // gentest-4643 + assertEqual( + perft( + Board(0x9f204042912c00L, 0x200801000040000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x20000000000010L, 0x1042952cbdL, 0xafbfa04000000000L, false, 0, 0x81L), + 4 + ), + 118004 + ); + + // gentest-4644 + assertEqual( + perft( + Board(0x9f20400a912400L, 0x200001040040000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x100000000010L, 0x100a9524bdL, 0xaf9f304040000000L, true, 0, 0x81L), + 4 + ), + 925873 + ); + + // gentest-4645 + assertEqual( + perft( + Board(0x9b24401a812400L, 0x2000000400c0000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x100000000010L, 0x1a8d24bdL, 0xaf9b344040000000L, false, 0, 0x81L), + 4 + ), + 745935 + ); + + // gentest-4646 + assertEqual( + perft( + Board(0x9b24401a810400L, 0x200000400042000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x20000000000010L, 0x41a8504bdL, 0xafbb244000002000L, true, 0, 0x81L), + 4 + ), + 1436113 + ); + + // gentest-4647 + assertEqual( + perft( + Board(0x1ba4401a810400L, 0x2000000000c2000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000040000000L, 0x20000000000010L, 0x5a8d04b5L, 0xaf3ba44000002000L, false, 0, 0x81L), + 4 + ), + 1453528 + ); + + // gentest-4648 + assertEqual( + perft( + Board(0x1ba44208810400L, 0x2000000100c0000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000040000000L, 0x400000000010L, 0x2488d04b5L, 0xaf1be44010000000L, true, 0, 0x81L), + 4 + ), + 1321777 + ); + + // gentest-4649 + assertEqual( + perft( + Board(0x1ba44208810400L, 0x2000000100c0000L, 0x2400000000000820L, 0x4100000000000081L, + 0x800000000000040L, 0x400000000010L, 0x2088d0cf1L, 0x6f1be44010000000L, false, 0, 0x81L), + 4 + ), + 1448549 + ); + + // gentest-4650 + assertEqual( + perft( + Board(0x9a65208810400L, 0x200000810080000L, 0x2400000000000820L, 0x4100000000000081L, + 0x800000000000040L, 0x400000000010L, 0xa08890cf1L, 0x6f09e65010000000L, true, 0, 0x81L), + 4 + ), + 1950811 + ); + + // gentest-4651 + assertEqual( + perft( + Board(0x9a65208810400L, 0x200000830000000L, 0x2400000000000820L, 0x8100000000000081L, + 0x800000040000000L, 0x400000000010L, 0xa68810cb1L, 0xaf09e65010000000L, false, 0, 0x81L), + 4 + ), + 268108 + ); + + // gentest-4652 + assertEqual( + perft( + Board(0x9a65208810400L, 0x200000830000000L, 0x400000400000820L, 0x8100000000000081L, + 0x800000080000000L, 0x80000000000010L, 0xaa8810cb1L, 0x8f89a65410000000L, true, 0, 0x81L), + 4 + ), + 2074858 + ); + + // gentest-4653 + assertEqual( + perft( + Board(0x926d208810400L, 0x200000830000000L, 0x400000400000820L, 0x8100000000000084L, + 0x800000080000000L, 0x80000000000010L, 0xaa8810cb4L, 0x8f8926d410000000L, false, 0, 0x80L), + 4 + ), + 1812459 + ); + + // gentest-4654 + assertEqual( + perft( + Board(0x922da08810400L, 0x200000020400000L, 0x400000400000820L, 0x8100000000000084L, + 0x800000000000000L, 0x80000000000010L, 0x228810cb4L, 0x8f8922dc00400000L, true, 0, 0x80L), + 4 + ), + 927652 + ); + + // gentest-4655 + assertEqual( + perft( + Board(0x922da08850000L, 0x200000020400000L, 0x2400000000000820L, 0x8100000000000084L, + 0x800000000000000L, 0x80000000002000L, 0x2288528a4L, 0xaf8922d800400000L, false, 0, 0x0L), + 4 + ), + 832059 + ); + + // gentest-4656 + assertEqual( + perft( + Board(0x922da08850000L, 0x200000020000000L, 0x400000400001800L, 0x8100000000000084L, + 0x800000000000000L, 0x80000000002000L, 0x228853884L, 0x8f8922dc00000000L, true, 0, 0x0L), + 4 + ), + 1181195 + ); + + // gentest-4657 + assertEqual( + perft( + Board(0x9229a48050000L, 0x200000020000000L, 0x400000400001800L, 0x8100000000000084L, + 0x800000000000000L, 0x80000000200000L, 0x268251884L, 0x8f89229c00000000L, false, 0, 0x0L), + 4 + ), + 1022664 + ); + + // gentest-4658 + assertEqual( + perft( + Board(0x9229a48040000L, 0x200000020000000L, 0x400000000011010L, 0x4100000000000084L, + 0x800000000000000L, 0x80000000200000L, 0x268241094L, 0x4f89229800010000L, true, 0, 0x0L), + 4 + ), + 1011499 + ); + + // gentest-4659 + assertEqual( + perft( + Board(0x9229a48040000L, 0x200000000004000L, 0x400000000011010L, 0x4100000000000084L, + 0x800000000000000L, 0x800000400000L, 0x248445094L, 0x4f09a29800010000L, false, 0, 0x0L), + 4 + ), + 708309 + ); + + // gentest-4660 + assertEqual( + perft( + Board(0x9228a48040000L, 0x200000000004000L, 0x410000000003000L, 0x4100000000000084L, + 0x800000000000000L, 0x800000400000L, 0x240447084L, 0x4f19a28808000000L, true, 0, 0x0L), + 4 + ), + 843986 + ); + + // gentest-4661 + assertEqual( + perft( + Board(0x8238a48040000L, 0x200000000004000L, 0x410000000001010L, 0x4100000000000082L, + 0x800000000000000L, 0x800000400000L, 0x240445092L, 0x4f18a38808000000L, false, 0, 0x0L), + 4 + ), + 640150 + ); + + // gentest-4662 + assertEqual( + perft( + Board(0x8238a48040000L, 0x200000080000000L, 0x400000400001010L, 0x8100000000000082L, + 0x800000000000000L, 0x800000400000L, 0x2c0441092L, 0x8f08a38c08000000L, true, 0, 0x0L), + 4 + ), + 629181 + ); + + // gentest-4663 + assertEqual( + perft( + Board(0x8238a48040000L, 0x200000080000000L, 0x400000400003000L, 0x8100000000000042L, + 0x1000000000000000L, 0x800000400000L, 0x2c0443042L, 0x9708a38c08000000L, false, 0, 0x0L), + 4 + ), + 1004922 + ); + + // gentest-4664 + assertEqual( + perft( + Board(0x8238a48040000L, 0x200000080000000L, 0x2400000000003000L, 0x8100000000000022L, 0x100000L, + 0x800000400000L, 0x2c0443022L, 0xa708a38808100000L, true, 0, 0x0L), + 4 + ), + 132640 + ); + + // gentest-4665 + assertEqual( + perft( + Board(0x8238a48040000L, 0x200000080000000L, 0x2400000000202000L, 0x8100000000000022L, 0x0L, + 0x800000004000L, 0x2c0246022L, 0xa708a38808000000L, false, 0, 0x0L), + 4 + ), + 493636 + ); + + // gentest-4666 + assertEqual( + perft( + Board(0x8228b08040000L, 0x200000080000000L, 0x2400000000202000L, 0x8100000000000022L, 0x0L, + 0x80000000004000L, 0x8280246022L, 0xa788220908000000L, true, 0, 0x0L), + 4 + ), + 480500 + ); + + // gentest-4667 + assertEqual( + perft( + Board(0x8228b0a000000L, 0x200000080000000L, 0x400000000202000L, 0x8100000000000006L, 0x0L, + 0x80000000004000L, 0x8282206006L, 0x8788220908000000L, false, 0, 0x0L), + 4 + ), + 412870 + ); + + // gentest-4668 + assertEqual( + perft( + Board(0x8228a0a000000L, 0x200000080000000L, 0x400000000202000L, 0x8000000100000006L, 0x0L, + 0x80000000008000L, 0x828020a006L, 0x868822090a000000L, true, 0, 0x0L), + 4 + ), + 708946 + ); + + // gentest-4669 + assertEqual( + perft( + Board(0xaa0a0a000000L, 0x200000080000000L, 0x400000000600000L, 0x8000000100000006L, 0x0L, + 0x80000000008000L, 0x800280608006L, 0x86802a090a000000L, false, 0, 0x0L), + 4 + ), + 844245 + ); + + // gentest-4670 + assertEqual( + perft( + Board(0xaa0a0a000000L, 0x200000080000000L, 0x400000000600000L, 0x8000000000000042L, 0x0L, + 0x80000000008000L, 0x800280608040L, 0x86802a080a000002L, true, 0, 0x0L), + 4 + ), + 405253 + ); + + // gentest-4671 + assertEqual( + perft( + Board(0xa20a0a000000L, 0x200000080000000L, 0x180000200000L, 0x8000004000000002L, 0x0L, + 0x80000000008000L, 0x884280208000L, 0x828032080a000002L, false, 0, 0x0L), + 4 + ), + 694893 + ); + + // gentest-4672 + assertEqual( + perft( + Board(0xa20a0a000000L, 0x200000080000000L, 0x2020000000200000L, 0x8000004000000008L, 0x0L, + 0x80000000008000L, 0x2000804280208000L, 0x82a022080a000008L, true, 0, 0x0L), + 4 + ), + 403679 + ); + + // gentest-4673 + assertEqual( + perft( + Board(0xa20a0a000000L, 0x200002000000000L, 0x2020000000200000L, 0x8000004000000010L, 0x0L, + 0x80000000004000L, 0x2000806200204000L, 0x82a022080a000010L, false, 0, 0x0L), + 4 + ), + 470872 + ); + + // gentest-4674 + assertEqual( + perft( + Board(0xa20a0a000000L, 0x200002000000000L, 0x2020000000200000L, 0x8000400000000040L, 0x0L, + 0x80000000004000L, 0x2000c02200204000L, 0x82a022080a000040L, true, 0, 0x0L), + 4 + ), + 48990 + ); + + // gentest-4675 + assertEqual( + perft( + Board(0xa20a02080000L, 0x200002000000000L, 0x2020000000200000L, 0x8000400000000000L, 0x0L, + 0x80000000008000L, 0x2000c02200208000L, 0x82a0220802080000L, false, 0, 0x0L), + 4 + ), + 180761 + ); + + // gentest-4676 + assertEqual( + perft( + Board(0xa20a02080000L, 0x8002000000000L, 0x2000100000004000L, 0x8000400000000000L, 0x0L, + 0x80000000008000L, 0x2000c0220000c000L, 0x8088320802080000L, true, 0, 0x0L), + 4 + ), + 174369 + ); + + // gentest-4677 + assertEqual( + perft( + Board(0xa20a000a0000L, 0x8000000100000L, 0x2000100000004000L, 0x8000400000000000L, 0x0L, + 0x80000000000080L, 0x2000c00200104080L, 0x80883208000a0000L, false, 0, 0x0L), + 4 + ), + 174787 + ); + + // gentest-4678 + assertEqual( + perft( + Board(0xa20a000a0000L, 0x8000000100000L, 0x6000000000004000L, 0x8000400000000000L, 0x0L, + 0x80000000008000L, 0x2000c0020010c000L, 0xc0882208000a0000L, true, 0, 0x0L), + 4 + ), + 116615 + ); + + // gentest-4679 + assertEqual( + perft( + Board(0x822a000a0000L, 0x8000040000000L, 0x4000000400004000L, 0x8000400000000000L, 0x0L, + 0x80000000008000L, 0xc0064000c000L, 0xc0880228000a0000L, false, 0, 0x0L), + 4 + ), + 159487 + ); + + // gentest-4680 + assertEqual( + perft( + Board(0x822a000a0000L, 0x440000000L, 0x2020000000004000L, 0x8000400000000000L, 0x0L, + 0x80000000008000L, 0x2000c0024000c000L, 0x80a0022c000a0000L, true, 0, 0x0L), + 4 + ), + 217628 + ); + + // gentest-4681 + assertEqual( + perft( + Board(0x822a000a0000L, 0x440000000L, 0x20080000004000L, 0x4000400000000000L, 0x0L, 0x80000000800000L, + 0xc80240804000L, 0x40a0022c000a0000L, false, 0, 0x0L), + 4 + ), + 396193 + ); + + // gentest-4682 + assertEqual( + perft( + Board(0x822a000a0000L, 0x440000000L, 0x20000000404000L, 0x200400000000000L, 0x0L, 0x80000000800000L, + 0xc00240c04000L, 0x2a0022c000a0000L, true, 0, 0x0L), + 4 + ), + 423759 + ); + + // gentest-4683 + assertEqual( + perft( + Board(0x822a000a0000L, 0x440000000L, 0x20000080004000L, 0x200400000000000L, 0x0L, 0x8000000000800000L, + 0xc002c0804000L, 0x8220022c000a0000L, false, 0, 0x0L), + 4 + ), + 352364 + ); + + // gentest-4684 + assertEqual( + perft( + Board(0x820a40080200L, 0x400000000L, 0x20000080000020L, 0x200400000000000L, 0x0L, 0x8000000000800000L, + 0xc00280800020L, 0x8220020c40080200L, true, 0, 0x0L), + 4 + ), + 75121 + ); + + // gentest-4685 + assertEqual( + perft( + Board(0x820a40080200L, 0x400000000L, 0x1000000080000020L, 0x200200000000000L, 0x0L, + 0x8000000000400000L, 0xa00280400020L, 0x9200020c40080200L, false, 0, 0x0L), + 4 + ), + 294252 + ); + + // gentest-4686 + assertEqual( + perft( + Board(0x820a40080000L, 0x400000000L, 0x20004000000022L, 0x200200000000000L, 0x0L, 0x8000000000400000L, + 0xa04200400020L, 0x8220020c40080002L, true, 0, 0x0L), + 4 + ), + 397279 + ); + + // gentest-4687 + assertEqual( + perft( + Board(0x820a40080000L, 0x400000000L, 0x20004000004400L, 0x200000020000000L, 0x0L, 0x8000000000400000L, + 0x804220404000L, 0x8220020c40080400L, false, 0, 0x0L), + 4 + ), + 489433 + ); + + // gentest-4688 + assertEqual( + perft( + Board(0x820a00080000L, 0x8000000000000L, 0x20004000004400L, 0x1000000020000000L, 0x0L, + 0x8000000040000000L, 0x804260004000L, 0x9028020800080400L, true, 0, 0x0L), + 4 + ), + 482052 + ); + + // gentest-4689 + assertEqual( + perft( + Board(0x820a00080000L, 0x8000000000000L, 0x20004000004400L, 0x90000000L, 0x0L, 0x8000000000400000L, + 0x804280404000L, 0x8028020810080400L, false, 0, 0x0L), + 4 + ), + 516052 + ); + + // gentest-4690 + assertEqual( + perft( + Board(0x820a00000800L, 0x8000000000000L, 0xc000004400L, 0x50000000L, 0x0L, 0x8000000000400000L, + 0x804240404000L, 0x8008028810000c00L, true, 0, 0x0L), + 4 + ), + 435114 + ); + + // gentest-4691 + assertEqual( + perft( + Board(0x820a00000800L, 0x8000000000000L, 0x208000280000L, 0x50000000L, 0x0L, 0x8000000000400000L, + 0xa00240600000L, 0x8008028810080800L, false, 0, 0x0L), + 4 + ), + 33472 + ); + + // gentest-4692 + assertEqual( + perft( + Board(0x820a00000800L, 0x200000000000L, 0x8000280000L, 0x40001000L, 0x0L, 0x8000000080000000L, + 0x8002c0200000L, 0x8000228800081800L, true, 0, 0x0L), + 4 + ), + 450550 + ); + + // gentest-4693 + assertEqual( + perft( + Board(0x820a00000800L, 0x200000000000L, 0xa000200000L, 0x8001000L, 0x0L, 0x8000004000000000L, + 0x804208200000L, 0x800022a800001800L, false, 0, 0x0L), + 4 + ), + 496189 + ); + + // gentest-4694 + assertEqual( + perft( + Board(0x820a00000000L, 0x200000000000L, 0xa000200000L, 0x1800L, 0x0L, 0x8000004000000000L, + 0x804200200800L, 0x800022a800001000L, true, 0, 0x0L), + 4 + ), + 394545 + ); + + // gentest-4695 + assertEqual( + perft( + Board(0x820a00000000L, 0x200000000000L, 0x8008000200000L, 0x1000000000L, 0x0L, 0x8000004000000000L, + 0x805200200000L, 0x8008228800000000L, false, 0, 0x0L), + 4 + ), + 153768 + ); + + // gentest-4696 + assertEqual( + perft( + Board(0x820a00000000L, 0x200000000000L, 0x8008000200000L, 0x1000L, 0x0L, 0x8000004000000000L, + 0x804200201000L, 0x8008228800000000L, true, 0, 0x0L), + 4 + ), + 198690 + ); + + // gentest-4697 + assertEqual( + perft( + Board(0x820200000000L, 0x200000000000L, 0x48800000000L, 0x4000L, 0x0L, 0x8000004000000000L, + 0x804a00004000L, 0x8000268000000000L, false, 0, 0x0L), + 4 + ), + 212693 + ); + + // gentest-4698 + assertEqual( + perft( + Board(0x820200000000L, 0x200000000000L, 0x40800000400L, 0x4000L, 0x0L, 0x8000002000000000L, + 0x802a00004000L, 0x8000260000000400L, true, 0, 0x0L), + 4 + ), + 68481 + ); + + // gentest-4699 + assertEqual( + perft( + Board(0x820000000000L, 0x200000000000L, 0xa00000400L, 0x400000000000L, 0x0L, 0x8000000020000000L, + 0xc00820000000L, 0x8000220200000400L, false, 0, 0x0L), + 4 + ), + 352116 + ); + + // gentest-4700 + assertEqual( + perft( + Board(0x820000000000L, 0x80000000000000L, 0xa10000000L, 0x80000000000L, 0x0L, 0x8000000020000000L, + 0x880820000000L, 0x8080020210000000L, true, 0, 0x0L), + 4 + ), + 204834 + ); + + // gentest-4701 + assertEqual( + perft( + Board(0x800000000000L, 0x80000000000000L, 0x8000810000000L, 0x20000000000L, 0x0L, 0x8000000020000000L, + 0x820820000000L, 0x8088000010000000L, false, 0, 0x0L), + 4 + ), + 274272 + ); + + // gentest-4702 + assertEqual( + perft( + Board(0x800000000000L, 0x80000000000000L, 0x100800000400L, 0x10000000000L, 0x0L, 0x8000000020000000L, + 0x810820000000L, 0x8080100000000400L, true, 0, 0x0L), + 4 + ), + 243451 + ); + + // gentest-4703 + assertEqual( + perft( + Board(0x800000000000L, 0x80000000000000L, 0x2002000000400L, 0x80000000000L, 0x0L, 0x8000000020000000L, + 0x2880020000000L, 0x8080002000000400L, false, 0, 0x0L), + 4 + ), + 207996 + ); + + // gentest-4704 + assertEqual( + perft( + Board(0x800000000000L, 0x4000000000L, 0x2800080000L, 0x80000000000L, 0x0L, 0x8000000020000000L, + 0x880820000000L, 0x8000006000080000L, true, 0, 0x0L), + 4 + ), + 298143 + ); + + // gentest-4705 + assertEqual( + perft( + Board(0x800000000000L, 0x4000000000L, 0x2810000000L, 0x8000000000000L, 0x0L, 0x8000000000400000L, + 0x8800800400000L, 0x8000006010000000L, false, 0, 0x0L), + 4 + ), + 199421 + ); + + // gentest-4706 + assertEqual( + perft( + Board(0x800000000000L, 0x4000000000L, 0x2800200000L, 0x800000000000000L, 0x0L, 0x80000000400000L, + 0x800800800400000L, 0x80006000200000L, true, 0, 0x0L), + 4 + ), + 261448 + ); + + // gentest-4707 + assertEqual( + perft( + Board(0x800000000000L, 0x10000000L, 0x2002000200000L, 0x800000000000000L, 0x0L, 0x80000080000000L, + 0x802800080000000L, 0x80002010200000L, false, 0, 0x0L), + 4 + ), + 200833 + ); + + // gentest-4708 + assertEqual( + perft( + Board(0x800000000000L, 0x10000000L, 0x2012000000000L, 0x800000000L, 0x0L, 0x80000080000000L, + 0x2800880000000L, 0x80012010000000L, true, 0, 0x0L), + 4 + ), + 159937 + ); + + // gentest-4709 + assertEqual( + perft( + Board(0x800000000000L, 0x10000000L, 0x2000200000000L, 0x2000000000L, 0x0L, 0x80000000800000L, + 0x2802000800000L, 0x80000210000000L, false, 0, 0x0L), + 4 + ), + 174463 + ); + + // gentest-4710 + assertEqual( + perft( + Board(0x800000000000L, 0x20L, 0x2000200000000L, 0x800000000L, 0x0L, 0x80000000800000L, + 0x2800800800000L, 0x80000200000020L, true, 0, 0x0L), + 4 + ), + 93158 + ); + + // gentest-4711 + assertEqual( + perft( + Board(0x800000000000L, 0x20L, 0x2040000000000L, 0x4000000000L, 0x0L, 0x80000080000000L, + 0x2804080000000L, 0x80040000000020L, false, 0, 0x0L), + 4 + ), + 108577 + ); + + // gentest-4712 + assertEqual( + perft( + Board(0x800000000000L, 0x20L, 0x2000001000000L, 0x4000000000L, 0x0L, 0x8000008000000000L, + 0x280c000000000L, 0x8000000001000020L, true, 0, 0x0L), + 4 + ), + 77333 + ); + + // gentest-4713 + assertEqual( + perft( + Board(0x800000000000L, 0x20L, 0x100040000000000L, 0x4000000000L, 0x0L, 0x8000400000000000L, + 0x100c04000000000L, 0x8000040000000020L, false, 0, 0x0L), + 4 + ), + 70339 + ); + + // gentest-4714 + assertEqual( + perft( + Board(0x800000000000L, 0x20L, 0x100000000080000L, 0x40L, 0x0L, 0x8000400000000000L, + 0x100c00000000040L, 0x8000000000080020L, true, 0, 0x0L), + 4 + ), + 20098 + ); + + // gentest-4715 + assertEqual( + perft( + Board(0x800000000000L, 0x8000L, 0x80000L, 0x40L, 0x0L, 0x8000400000000000L, 0xc00000080040L, + 0x8000000000008000L, false, 0, 0x0L), + 4 + ), + 12862 + ); + + // gentest-4716 + assertEqual( + perft( + Board(0x800000000000L, 0x200000L, 0x80000L, 0x10L, 0x0L, 0x4000400000000000L, 0xc00000080010L, + 0x4000000000200000L, true, 0, 0x0L), + 4 + ), + 38395 + ); + + // gentest-4717 + assertEqual( + perft( + Board(0x800000000000L, 0x8000000L, 0x200000000L, 0x80L, 0x0L, 0x4000400000000000L, 0xc00200000080L, + 0x4000000008000000L, false, 0, 0x0L), + 4 + ), + 45578 + ); + + // gentest-4718 + assertEqual( + perft( + Board(0x800000000000L, 0x10000000000000L, 0x200000000L, 0x80L, 0x0L, 0x4000002000000000L, + 0x802200000080L, 0x4010000000000000L, true, 0, 0x0L), + 4 + ), + 13716 + ); + + // gentest-4719 + assertEqual( + perft( + Board(0x800000000000L, 0x40000000000L, 0x200000000L, 0x10L, 0x0L, 0x4000100000000000L, + 0x900200000010L, 0x4000040000000000L, false, 0, 0x0L), + 4 + ), + 50947 + ); + + // gentest-4720 + assertEqual( + perft( + Board(0x800000000000L, 0x20000L, 0x200000000L, 0x10L, 0x0L, 0x4000200000000000L, 0xa00200000010L, + 0x4000000000020000L, true, 0, 0x0L), + 4 + ), + 50050 + ); + + // gentest-4721 + assertEqual( + perft( + Board(0x800000000000L, 0x8000000L, 0x8000000000000L, 0x10000000000000L, 0x0L, 0x4000200000000000L, + 0x18a00000000000L, 0x4000000008000000L, false, 0, 0x0L), + 4 + ), + 43044 + ); + + // gentest-4722 + assertEqual( + perft( + Board(0x800000000000L, 0x1000000000000L, 0x8000000000000L, 0x10000000000000L, 0x0L, + 0x4000002000000000L, 0x18802000000000L, 0x4001000000000000L, true, 0, 0x0L), + 4 + ), + 18474 + ); + + // gentest-4723 + assertEqual( + perft( + Board(0x800000000000L, 0x1000000000000L, 0x8000000000000L, 0x10000000000000L, 0x0L, + 0x2000080000000000L, 0x18880000000000L, 0x2001000000000000L, false, 0, 0x0L), + 4 + ), + 8360 + ); + + // gentest-4724 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4725 + assertEqual( + perft( + Board(0xf700082000df00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2000dfffL, 0xfff7000800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 359553 + ); + + // gentest-4726 + assertEqual( + perft( + Board(0xf5020820409f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000000010L, 0x20409fffL, 0xeffd020800000000L, true, 0, 0x81L), + 4 + ), + 302845 + ); + + // gentest-4727 + assertEqual( + perft( + Board(0xf50208b0400f00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x8000000000010L, 0xb0400fffL, 0xaffd220800000000L, false, 0, 0x81L), + 4 + ), + 797284 + ); + + // gentest-4728 + assertEqual( + perft( + Board(0xf50208b0400f00L, 0x200200000000042L, 0x2000000040004004L, 0x8100000000000081L, + 0x800000000000008L, 0x40000000010L, 0xb0404fdfL, 0xabf5260840000000L, true, 0, 0x81L), + 4 + ), + 891122 + ); + + // gentest-4729 + assertEqual( + perft( + Board(0xf50208b4400b00L, 0x200200000800002L, 0x2000000000005004L, 0x8100000000000081L, + 0x800000000000008L, 0x40000000010L, 0xb4c04b9fL, 0xabf5260800001000L, false, 0, 0x81L), + 4 + ), + 1022100 + ); + + // gentest-4730 + assertEqual( + perft( + Board(0xe51208b4400b00L, 0x200200000002002L, 0x2000000000005004L, 0x8100000000000081L, + 0x800000000000008L, 0x2000000000010L, 0xb4406b9fL, 0xabe7320800001000L, true, 0, 0x81L), + 4 + ), + 1614692 + ); + + // gentest-4731 + assertEqual( + perft( + Board(0xe51208b0400b00L, 0x240040000002L, 0x2000000000005004L, 0x8100000000000081L, + 0x800000000000008L, 0x2000000000010L, 0x8f0404b9fL, 0xa9e7360000001000L, false, 0, 0x81L), + 4 + ), + 2311992 + ); + + // gentest-4732 + assertEqual( + perft( + Board(0xe51208b1400a00L, 0x240040000002L, 0x2005004L, 0x8100000000000081L, 0x200000000000008L, + 0x2000000000010L, 0x8f1404a9fL, 0x83e7360002001000L, true, 0, 0x81L), + 4 + ), + 1903821 + ); + + // gentest-4733 + assertEqual( + perft( + Board(0xe50218b1400a00L, 0x240040000002L, 0x2004004L, 0x8100000000000021L, 0x200000000000008L, + 0x2000000001000L, 0x8f1405a2fL, 0x83e7261002000000L, false, 0, 0x0L), + 4 + ), + 1670844 + ); + + // gentest-4734 + assertEqual( + perft( + Board(0xe50218b1400a00L, 0x240000000002L, 0x400004004L, 0x8100000000000021L, 0x1000000000000008L, + 0x2000000001000L, 0x2008b1405a2fL, 0x91e7061400000000L, true, 0, 0x0L), + 4 + ), + 1772284 + ); + + // gentest-4735 + assertEqual( + perft( + Board(0xe50218b1400a00L, 0x200200000000002L, 0x400004004L, 0x8100000000000021L, 0x1000000000000008L, + 0x2000000001000L, 0x2008b1405a2fL, 0x93e7021400000000L, false, 0, 0x0L), + 4 + ), + 1440593 + ); + + // gentest-4736 + assertEqual( + perft( + Board(0x6502b891400a00L, 0x8200000000002L, 0x400004004L, 0x8100000000000021L, 0x1000000000000008L, + 0x2000000001000L, 0x202891405a2fL, 0x916f029400000000L, true, 0, 0x0L), + 4 + ), + 1308456 + ); + + // gentest-4737 + assertEqual( + perft( + Board(0x6502b891400a00L, 0x400000002L, 0x4004L, 0x4100000000000021L, 0x1000000000000008L, + 0x2000000001000L, 0x2c91405a2fL, 0x5167029000000000L, false, 0, 0x0L), + 4 + ), + 71176 + ); + + // gentest-4738 + assertEqual( + perft( + Board(0x6500bc91400a00L, 0x2L, 0x4004L, 0x4100000000002001L, 0x10000000000008L, 0x2000000001000L, + 0x2891407a0fL, 0x4177009400000000L, true, 0, 0x0L), + 4 + ), + 806385 + ); + + // gentest-4739 + assertEqual( + perft( + Board(0x6400bd91400a00L, 0x2L, 0x800004L, 0x4100000000002001L, 0x10000000000400L, 0x2000000001000L, + 0x2891c03e07L, 0x4176009500000000L, false, 0, 0x0L), + 4 + ), + 918323 + ); + + // gentest-4740 + assertEqual( + perft( + Board(0x2440bdd1000a00L, 0x2L, 0x800004L, 0x500000000002001L, 0x10000000000400L, 0x2000000001000L, + 0x28d1803e07L, 0x536409500000000L, true, 0, 0x0L), + 4 + ), + 773135 + ); + + // gentest-4741 + assertEqual( + perft( + Board(0x2440b9d5000200L, 0x2L, 0x800004L, 0x500000000002001L, 0x10000000000400L, 0x2000000001000L, + 0x28d5803607L, 0x536409100000000L, false, 0, 0x0L), + 4 + ), + 1225847 + ); + + // gentest-4742 + assertEqual( + perft( + Board(0x2440b955000200L, 0x2L, 0x800004L, 0x500000000002001L, 0x80000400L, 0x200000000000010L, + 0x2855802617L, 0x724409180000000L, true, 0, 0x0L), + 4 + ), + 507662 + ); + + // gentest-4743 + assertEqual( + perft( + Board(0x2440b955000200L, 0x2L, 0x800004L, 0x900000000002001L, 0x80080000L, 0x200000000001000L, + 0x2855883207L, 0xb24409180000000L, false, 0, 0x0L), + 4 + ), + 938340 + ); + + // gentest-4744 + assertEqual( + perft( + Board(0x460b955000200L, 0x2L, 0x800004L, 0x1100000000000021L, 0x80080000L, 0x200000000001000L, + 0x2855881227L, 0x1304609180000000L, true, 0, 0x0L), + 4 + ), + 708042 + ); + + // gentest-4745 + assertEqual( + perft( + Board(0x460b955000200L, 0x2L, 0x800004L, 0x110000000000041L, 0x80080000L, 0x200000000000800L, + 0x2855880a47L, 0x314609180000000L, false, 0, 0x0L), + 4 + ), + 477677 + ); + + // gentest-4746 + assertEqual( + perft( + Board(0x460b955000200L, 0x2L, 0x800004L, 0x110000000000041L, 0x1020L, 0x200000000000800L, + 0x2855801a47L, 0x314609100000020L, true, 0, 0x0L), + 4 + ), + 579335 + ); + + // gentest-4747 + assertEqual( + perft( + Board(0x460b955000200L, 0x2L, 0x800004L, 0x110000000004001L, 0x20100000L, 0x200000000000800L, + 0x2855904a07L, 0x314609120000000L, false, 0, 0x0L), + 4 + ), + 512707 + ); + + // gentest-4748 + assertEqual( + perft( + Board(0x460b955000200L, 0x40000L, 0x800004L, 0x11000000004001L, 0x20100000L, 0x2000000000800L, + 0x2855944a05L, 0x17609120000000L, true, 0, 0x0L), + 4 + ), + 587292 + ); + + // gentest-4749 + assertEqual( + perft( + Board(0x460b915000200L, 0x100L, 0x800004L, 0x1001000000004001L, 0x20100000L, 0x2000000000800L, + 0xa815904b05L, 0x1007601120000000L, false, 0, 0x0L), + 4 + ), + 806906 + ); + + // gentest-4750 + assertEqual( + perft( + Board(0x460a935000200L, 0x100L, 0x800004L, 0x1001000000004001L, 0x8000L, 0x2000000000800L, + 0xa815804b05L, 0x1007600120008000L, true, 0, 0x0L), + 4 + ), + 385160 + ); + + // gentest-4751 + assertEqual( + perft( + Board(0x460a935020000L, 0x100L, 0x4L, 0x1001000000004001L, 0x800000L, 0x2000000000400L, 0xa815024505L, + 0x1007600120800000L, false, 0, 0x0L), + 4 + ), + 835793 + ); + + // gentest-4752 + assertEqual( + perft( + Board(0x460a915220000L, 0x100L, 0x4L, 0x4001000000004002L, 0x800000L, 0x2000000000400L, 0xa815024506L, + 0x4007600100a00000L, true, 0, 0x0L), + 4 + ), + 888973 + ); + + // gentest-4753 + assertEqual( + perft( + Board(0x4602915220000L, 0x100L, 0x4L, 0x4001000000000042L, 0x40000000L, 0x2000000000400L, + 0x402815020546L, 0x4007200140200000L, false, 0, 0x0L), + 4 + ), + 634585 + ); + + // gentest-4754 + assertEqual( + perft( + Board(0x242915220000L, 0x100L, 0x4L, 0x1400000000042L, 0x40000000L, 0x2000000000008L, 0x281502014eL, + 0x3640140200000L, true, 0, 0x0L), + 4 + ), + 424340 + ); + + // gentest-4755 + assertEqual( + perft( + Board(0x600d15220000L, 0x100L, 0x4L, 0x1000000000082L, 0x40000000L, 0x2000000000008L, 0x40081502018eL, + 0x3200540200000L, false, 0, 0x0L), + 4 + ), + 376429 + ); + + // gentest-4756 + assertEqual( + perft( + Board(0x600d05220000L, 0x2000000L, 0x4L, 0x1000000000082L, 0x80000000L, 0x2000000000008L, + 0x40080702008eL, 0x3200580200000L, true, 0, 0x0L), + 4 + ), + 376826 + ); + + // gentest-4757 + assertEqual( + perft( + Board(0x600d05220000L, 0x2000000L, 0x200L, 0x1000000000082L, 0x8000000L, 0x2000000000010L, + 0x400807020292L, 0x3200508200000L, false, 0, 0x0L), + 4 + ), + 229194 + ); + + // gentest-4758 + assertEqual( + perft( + Board(0x600d05220000L, 0x2000000L, 0x200L, 0x1000000000042L, 0x40000L, 0x20000000010L, + 0x400807020252L, 0x1220500240000L, true, 0, 0x0L), + 4 + ), + 45862 + ); + + // gentest-4759 + assertEqual( + perft( + Board(0x680505220000L, 0x2000000L, 0x200L, 0x10000000042L, 0x40000L, 0x20000000020L, 0x480007020262L, + 0x230500240000L, false, 0, 0x0L), + 4 + ), + 162392 + ); + + // gentest-4760 + assertEqual( + perft( + Board(0x680505220000L, 0x2000000L, 0x4L, 0x10000000042L, 0x40000L, 0x100000000000020L, + 0x480007020066L, 0x100210500240000L, true, 0, 0x0L), + 4 + ), + 265367 + ); + + // gentest-4761 + assertEqual( + perft( + Board(0x680505220000L, 0x100L, 0x20000000L, 0x10000000042L, 0x40000L, 0x200000000000020L, + 0x480025020162L, 0x200210500240000L, false, 0, 0x0L), + 4 + ), + 256880 + ); + + // gentest-4762 + assertEqual( + perft( + Board(0x600505220000L, 0x100L, 0x20000000L, 0x80000000042L, 0x4L, 0x200000000002000L, 0x400025022142L, + 0x200280500200004L, true, 0, 0x0L), + 4 + ), + 264443 + ); + + // gentest-4763 + assertEqual( + perft( + Board(0x600505220000L, 0x100L, 0x0L, 0x80000000005L, 0x20000000L, 0x200000000002000L, 0x400005022105L, + 0x200280520200000L, false, 0, 0x0L), + 4 + ), + 199586 + ); + + // gentest-4764 + assertEqual( + perft( + Board(0x600505020000L, 0x100L, 0x0L, 0x80000000005L, 0x8000000L, 0x200000000200000L, 0x400005220105L, + 0x200280508000000L, true, 0, 0x0L), + 4 + ), + 216424 + ); + + // gentest-4765 + assertEqual( + perft( + Board(0x600505020000L, 0x100L, 0x0L, 0x80000000005L, 0x0L, 0x200000000002000L, 0x400005022105L, + 0x200280500000000L, false, 0, 0x0L), + 4 + ), + 115396 + ); + + // gentest-4766 + assertEqual( + perft( + Board(0x600505020000L, 0x100L, 0x0L, 0x205L, 0x0L, 0x200000000200000L, 0x400005220105L, + 0x200200500000200L, true, 0, 0x0L), + 4 + ), + 82673 + ); + + // gentest-4767 + assertEqual( + perft( + Board(0x600505020000L, 0x100L, 0x0L, 0x2011L, 0x0L, 0x200000040000000L, 0x400045020111L, + 0x200200500002000L, false, 0, 0x0L), + 4 + ), + 135045 + ); + + // gentest-4768 + assertEqual( + perft( + Board(0x600505020000L, 0x100L, 0x0L, 0x3001L, 0x0L, 0x2000040000000L, 0x400045021101L, + 0x2200500002000L, true, 0, 0x0L), + 4 + ), + 164846 + ); + + // gentest-4769 + assertEqual( + perft( + Board(0x600507000000L, 0x100L, 0x0L, 0x3001L, 0x0L, 0x200000000800000L, 0x400007801101L, + 0x200200500002000L, false, 0, 0x0L), + 4 + ), + 133366 + ); + + // gentest-4770 + assertEqual( + perft( + Board(0x600507000000L, 0x100L, 0x0L, 0x1000000001L, 0x0L, 0x200000080000000L, 0x400087000101L, + 0x200201500000000L, true, 0, 0x0L), + 4 + ), + 91788 + ); + + // gentest-4771 + assertEqual( + perft( + Board(0x600505000000L, 0x2000000L, 0x0L, 0x1000000001L, 0x0L, 0x4000080000000L, 0x400187000001L, + 0x4201400000000L, false, 0, 0x0L), + 4 + ), + 112795 + ); + + // gentest-4772 + assertEqual( + perft( + Board(0x610405000000L, 0x2000000L, 0x0L, 0x800000001L, 0x0L, 0x4000080000000L, 0x410087000001L, + 0x4200c00000000L, true, 0, 0x0L), + 4 + ), + 118160 + ); + + // gentest-4773 + assertEqual( + perft( + Board(0x40210405000000L, 0x2000000L, 0x0L, 0x80008L, 0x0L, 0x4000080000000L, 0x40010087000008L, + 0x4200400080000L, false, 0, 0x0L), + 4 + ), + 185468 + ); + + // gentest-4774 + assertEqual( + perft( + Board(0x40210405000000L, 0x2000000L, 0x0L, 0x800001L, 0x0L, 0x4000080000000L, 0x40010087000001L, + 0x4200400800000L, true, 0, 0x0L), + 4 + ), + 9571 + ); + + // gentest-4775 + assertEqual( + perft( + Board(0x210405000000L, 0x2000000L, 0x0L, 0x1L, 0x4000000000000000L, 0x20000800000L, + 0x4000010007800001L, 0x220400000000L, false, 0, 0x0L), + 4 + ), + 31508 + ); + + // gentest-4776 + assertEqual( + perft( + Board(0x210405000000L, 0x2000000L, 0x0L, 0x1L, 0x0L, 0x200000000800000L, 0x10007800001L, + 0x200200400000000L, true, 0, 0x0L), + 4 + ), + 13283 + ); + + // gentest-4777 + assertEqual( + perft( + Board(0x12405000000L, 0x2000000L, 0x0L, 0x1L, 0x0L, 0x200000000800000L, 0x10007800001L, + 0x200002400000000L, false, 0, 0x0L), + 4 + ), + 12683 + ); + + // gentest-4778 + assertEqual( + perft( + Board(0x10425000000L, 0x2000000L, 0x0L, 0x4L, 0x0L, 0x100000000800000L, 0x10007800004L, + 0x100000420000000L, true, 0, 0x0L), + 4 + ), + 6399 + ); + + // gentest-4779 + assertEqual( + perft( + Board(0x10425000000L, 0x2000000L, 0x0L, 0x20L, 0x0L, 0x200000000004000L, 0x10007004020L, + 0x200000420000000L, false, 0, 0x0L), + 4 + ), + 12612 + ); + + // gentest-4780 + assertEqual( + perft( + Board(0x10425000000L, 0x80000L, 0x0L, 0x20L, 0x0L, 0x800000000004000L, 0x10005084020L, + 0x800000420000000L, true, 0, 0x0L), + 4 + ), + 21507 + ); + + // gentest-4781 + assertEqual( + perft( + Board(0x10425000000L, 0x80000L, 0x0L, 0x40L, 0x0L, 0x4000000004000L, 0x10005084040L, 0x4000420000000L, + false, 0, 0x0L), + 4 + ), + 21995 + ); + + // gentest-4782 + assertEqual( + perft( + Board(0x10425000000L, 0x1000000000L, 0x0L, 0x40L, 0x0L, 0x1000000004000L, 0x11005004040L, + 0x1000420000000L, true, 0, 0x0L), + 4 + ), + 8799 + ); + + // gentest-4783 + assertEqual( + perft( + Board(0x10425000000L, 0x200000L, 0x0L, 0x10L, 0x0L, 0x20000004000L, 0x10005204010L, 0x20420000000L, + false, 0, 0x0L), + 4 + ), + 16644 + ); + + // gentest-4784 + assertEqual( + perft( + Board(0x10425000000L, 0x200000L, 0x0L, 0x8L, 0x0L, 0x2004000L, 0x10005204008L, 0x422000000L, true, 0, + 0x0L), + 4 + ), + 23240 + ); + + // gentest-4785 + assertEqual( + perft( + Board(0x10425000000L, 0x200000L, 0x0L, 0x8L, 0x0L, 0x44000L, 0x10005204008L, 0x420040000L, false, 0, + 0x0L), + 4 + ), + 20915 + ); + + // gentest-4786 + assertEqual( + perft( + Board(0x10425000000L, 0x200000L, 0x0L, 0x8000000L, 0x0L, 0x44000L, 0x1000d204000L, 0x420040000L, true, + 0, 0x0L), + 4 + ), + 18948 + ); + + // gentest-4787 + assertEqual( + perft( + Board(0x10425000000L, 0x200000L, 0x0L, 0x10000000L, 0x0L, 0x2008000L, 0x10015208000L, 0x422000000L, + false, 0, 0x0L), + 4 + ), + 12801 + ); + + // gentest-4788 + assertEqual( + perft( + Board(0x10405200000L, 0x4000000000L, 0x0L, 0x10000000L, 0x0L, 0x100008000L, 0x14015008000L, + 0x500200000L, true, 0, 0x0L), + 4 + ), + 13384 + ); + + // gentest-4789 + assertEqual( + perft( + Board(0x10404200000L, 0x800000L, 0x0L, 0x100000000000L, 0x0L, 0x1008000L, 0x110004808000L, + 0x401200000L, false, 0, 0x0L), + 4 + ), + 13855 + ); + + // gentest-4790 + assertEqual( + perft( + Board(0x1000404200000L, 0x800000L, 0x0L, 0x100000000000L, 0x0L, 0x8400L, 0x1100004808000L, + 0x400200400L, true, 0, 0x0L), + 4 + ), + 36867 + ); + + // gentest-4791 + assertEqual( + perft( + Board(0x1000404200000L, 0x4000000000L, 0x0L, 0x100000000000L, 0x0L, 0x400004L, 0x1104004400000L, + 0x400200004L, false, 0, 0x0L), + 4 + ), + 36268 + ); + + // gentest-4792 + assertEqual( + perft( + Board(0x1000404000000L, 0x4000000000L, 0x0L, 0x1000000000L, 0x20L, 0x400004L, 0x1005004400000L, + 0x400000024L, true, 0, 0x0L), + 4 + ), + 166691 + ); + + // gentest-4793 + assertEqual( + perft( + Board(0x404000000L, 0x4000000000L, 0x0L, 0x100000000001000L, 0x20L, 0x400008L, 0x100004004401000L, + 0x400000028L, false, 0, 0x0L), + 4 + ), + 134144 + ); + + // gentest-4794 + assertEqual( + perft( + Board(0x404000000L, 0x4000000000L, 0x0L, 0x100000000004000L, 0x20L, 0x400002L, 0x100004004404000L, + 0x400000022L, true, 0, 0x0L), + 4 + ), + 177278 + ); + + // gentest-4795 + assertEqual( + perft( + Board(0x404000000L, 0x200000L, 0x0L, 0x100000000004000L, 0x20L, 0x80000004L, 0x100000084204000L, + 0x400000024L, false, 0, 0x0L), + 4 + ), + 129056 + ); + + // gentest-4796 + assertEqual( + perft( + Board(0x404000000L, 0x200000L, 0x0L, 0x100000000004000L, 0x400L, 0x8000000004L, 0x100008004204000L, + 0x400000404L, true, 0, 0x0L), + 4 + ), + 377965 + ); + + // gentest-4797 + assertEqual( + perft( + Board(0x404000000L, 0x800L, 0x0L, 0x100004000000000L, 0x80000L, 0x8000000004L, 0x10000c004000800L, + 0x400080004L, false, 0, 0x0L), + 4 + ), + 364433 + ); + + // gentest-4798 + assertEqual( + perft( + Board(0x404000000L, 0x800L, 0x0L, 0x1004000000000L, 0x1000000000000000L, 0x8000000004L, + 0x100c004000800L, 0x1000000400000004L, true, 0, 0x0L), + 4 + ), + 66985 + ); + + // gentest-4799 + assertEqual( + perft( + Board(0x404000000L, 0x800L, 0x0L, 0x1400000000000L, 0x1000000L, 0x4000000004L, 0x1404004000800L, + 0x401000004L, false, 0, 0x0L), + 4 + ), + 325554 + ); + + // gentest-4800 + assertEqual( + perft( + Board(0x404000000L, 0x200000L, 0x0L, 0x1400000000000L, 0x2000000L, 0x4000000008L, 0x1404004200000L, + 0x402000008L, true, 0, 0x0L), + 4 + ), + 369215 + ); + + def batch12(): Unit = + // gentest-4801 + assertEqual( + perft( + Board(0x404000000L, 0x200000L, 0x0L, 0x1400000000000L, 0x10L, 0x4000000008L, 0x1404004200000L, + 0x400000018L, false, 0, 0x0L), + 4 + ), + 252989 + ); + + // gentest-4802 + assertEqual( + perft( + Board(0x404000000L, 0x200000L, 0x0L, 0x10400000000000L, 0x100000L, 0x4000000008L, 0x10404004200000L, + 0x400100008L, true, 0, 0x0L), + 4 + ), + 52211 + ); + + // gentest-4803 + assertEqual( + perft( + Board(0x404000000L, 0x200000L, 0x0L, 0x10400000000000L, 0x4000000000L, 0x800008L, 0x10400004a00000L, + 0x4400000008L, false, 0, 0x0L), + 4 + ), + 207759 + ); + + // gentest-4804 + assertEqual( + perft( + Board(0x404000000L, 0x800L, 0x0L, 0x10400000000000L, 0x1L, 0x800008L, 0x10400004800800L, 0x400000009L, + true, 0, 0x0L), + 4 + ), + 405132 + ); + + // gentest-4805 + assertEqual( + perft( + Board(0x404000000L, 0x800L, 0x0L, 0x10400000000000L, 0x8000000L, 0x2000000008L, 0x10402004000800L, + 0x408000008L, false, 0, 0x0L), + 4 + ), + 297861 + ); + + // gentest-4806 + assertEqual( + perft( + Board(0x404000000L, 0x0L, 0x0L, 0x10010000000000L, 0x40000L, 0x2000000800L, 0x10012004000000L, + 0x400040800L, true, 0, 0x0L), + 4 + ), + 363943 + ); + + // gentest-4807 + assertEqual( + perft( + Board(0x404000000L, 0x0L, 0x0L, 0x20010000000000L, 0x20000L, 0x10000800L, 0x20010014000000L, + 0x400020800L, false, 0, 0x0L), + 4 + ), + 273175 + ); + + // gentest-4808 + assertEqual( + perft( + Board(0x404000000L, 0x0L, 0x0L, 0x10010000000000L, 0x10000L, 0x10040000L, 0x10010014000000L, + 0x400050000L, true, 0, 0x0L), + 4 + ), + 205535 + ); + + // gentest-4809 + assertEqual( + perft( + Board(0x404000000L, 0x0L, 0x0L, 0x10020000000000L, 0x10000L, 0x10000800L, 0x10020014000000L, + 0x400010800L, false, 0, 0x0L), + 4 + ), + 236940 + ); + + // gentest-4810 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4811 + assertEqual( + perft( + Board(0xfd00024000bf00L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4080bfdfL, 0xfffd000200000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 198188 + ); + + // gentest-4812 + assertEqual( + perft( + Board(0xf805024400bb00L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4480bbdfL, 0xfff8050200000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 266477 + ); + + // gentest-4813 + assertEqual( + perft( + Board(0xf805400408b300L, 0x4200000000000042L, 0x2400000000800004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400088b3dfL, 0xfff8050004000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 398946 + ); + + // gentest-4814 + assertEqual( + perft( + Board(0xd825400400b300L, 0x4200000000000042L, 0x2002000000800004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400480b3dfL, 0xfbda250000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 446838 + ); + + // gentest-4815 + assertEqual( + perft( + Board(0xd805000400b300L, 0x4200000000000042L, 0x2002004000800000L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400480b3dbL, 0xfbda050000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 508673 + ); + + // gentest-4816 + assertEqual( + perft( + Board(0xd805000400b300L, 0x200800000000042L, 0x2002004000800000L, 0x8100000000000081L, + 0x4000800000000L, 0x1000000000000010L, 0x480480b3d3L, 0xb3de850000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1149963 + ); + + // gentest-4817 + assertEqual( + perft( + Board(0xd8050004003300L, 0x200800000000042L, 0x2002004000800000L, 0x8100000000000081L, 0x208000L, + 0x1000000000000800L, 0x4004a03bc3L, 0xb3da850000008000L, false, 0, 0x8100000000000000L), + 4 + ), + 1046634 + ); + + // gentest-4818 + assertEqual( + perft( + Board(0xd0050804003300L, 0x200800000000042L, 0x2002004000800000L, 0x8100000000000081L, 0x88000L, + 0x1000000000000800L, 0x4004883bc3L, 0xb3d2850800008000L, true, 0, 0x8100000000000000L), + 4 + ), + 1402699 + ); + + // gentest-4819 + assertEqual( + perft( + Board(0xd005000c003300L, 0x200800000000042L, 0x2002000020800000L, 0x8100000000000081L, 0x10008000L, + 0x1000000000000800L, 0x34803bc3L, 0xb3d2850008008000L, false, 0, 0x8100000000000000L), + 4 + ), + 1072853 + ); + + // gentest-4820 + assertEqual( + perft( + Board(0xd005000c001300L, 0x8800000040040L, 0x2002000020800000L, 0x8100000000000081L, 0x10002000L, + 0x1000000000000800L, 0x34841bc1L, 0xb1da850008002000L, true, 0, 0x8100000000000000L), + 4 + ), + 2697682 + ); + + // gentest-4821 + assertEqual( + perft( + Board(0xc005100e001100L, 0x8800000040040L, 0x2002000020800000L, 0x8100000000000081L, 0x2002L, + 0x1000000000000800L, 0x268419c3L, 0xb1ca851008002000L, false, 0, 0x8100000000000000L), + 4 + ), + 1946565 + ); + + // gentest-4822 + assertEqual( + perft( + Board(0x8045100e001100L, 0x8800800000040L, 0x12000020800000L, 0x8100000000000081L, 0x2002L, + 0x1000000000000800L, 0x8268019c3L, 0x919ac51008002000L, true, 0, 0x8100000000000000L), + 4 + ), + 2495117 + ); + + // gentest-4823 + assertEqual( + perft( + Board(0x8045100e001100L, 0x800000040L, 0x1a800000000000L, 0x8100000000000081L, 0x200002L, + 0x1000000000000800L, 0x88008060019c3L, 0x9192451008200000L, false, 0, 0x8100000000000000L), + 4 + ), + 225469 + ); + + // gentest-4824 + assertEqual( + perft( + Board(0x8005100e001100L, 0x800000040L, 0x1a800000000000L, 0x8100000000000081L, 0x200000L, + 0x400000000800L, 0x88008060019c1L, 0x8192451008200000L, true, 0, 0x0L), + 4 + ), + 2472455 + ); + + // gentest-4825 + assertEqual( + perft( + Board(0x8005100e001100L, 0x800000040L, 0x1a800000000000L, 0x3000000000000a0L, 0x200000L, + 0x400000000008L, 0x88008060011e8L, 0x392451008200000L, false, 0, 0x0L), + 4 + ), + 1986274 + ); + + // gentest-4826 + assertEqual( + perft( + Board(0x80051006081100L, 0x800000040L, 0x1a000000100000L, 0x3000000000000a0L, 0x2000000000L, + 0x400000000008L, 0x80008061011e8L, 0x392453000080000L, true, 0, 0x0L), + 4 + ), + 1968863 + ); + + // gentest-4827 + assertEqual( + perft( + Board(0x80051006081100L, 0x800000040L, 0x2100400000004L, 0x3000000000000a0L, 0x2000000000L, + 0x400000000008L, 0x1008060011ecL, 0x382453400080000L, false, 0, 0x0L), + 4 + ), + 1965753 + ); + + // gentest-4828 + assertEqual( + perft( + Board(0x80051006081100L, 0x4000000000040L, 0x2100400000004L, 0x41000000000000a0L, 0x2000000000L, + 0x400000000008L, 0x41000060011ecL, 0x4182453400080000L, true, 0, 0x0L), + 4 + ), + 2357404 + ); + + // gentest-4829 + assertEqual( + perft( + Board(0x80051006081100L, 0x4000000000040L, 0x2100400000200L, 0x5000000000008020L, 0x2000000000L, + 0x400000000008L, 0x4100006009368L, 0x5082453400080000L, false, 0, 0x0L), + 4 + ), + 2681500 + ); + + // gentest-4830 + assertEqual( + perft( + Board(0x80051006081100L, 0x4000000000040L, 0x2002100000000200L, 0x4200000080000020L, 0x2000000000L, + 0x400000000008L, 0x4100086001368L, 0x6282453000080000L, true, 0, 0x0L), + 4 + ), + 1951699 + ); + + // gentest-4831 + assertEqual( + perft( + Board(0x80051402081100L, 0x4000000000040L, 0x2402000000000200L, 0x4200000080000020L, 0x200000L, + 0x400000000008L, 0x404000482001368L, 0x6282451000280000L, false, 0, 0x0L), + 4 + ), + 1794742 + ); + + // gentest-4832 + assertEqual( + perft( + Board(0x80051402081100L, 0x4000000000040L, 0x412000000000200L, 0x4200000004000020L, 0x20000000L, + 0x400000000008L, 0x404000406001368L, 0x4292451020080000L, true, 0, 0x0L), + 4 + ), + 2371850 + ); + + // gentest-4833 + assertEqual( + perft( + Board(0x851412080100L, 0x4000000000040L, 0x1a000000000200L, 0x4200000004000020L, 0x20000000L, + 0x400000000008L, 0xc000416000368L, 0x4212c51020080000L, false, 0, 0x0L), + 4 + ), + 1783874 + ); + + // gentest-4834 + assertEqual( + perft( + Board(0x851412080100L, 0x4000000000040L, 0x200a000000000200L, 0x4200000004000020L, 0x200000L, + 0x400000000800L, 0xc000416000b60L, 0x6202c51000280000L, true, 0, 0x0L), + 4 + ), + 1411381 + ); + + // gentest-4835 + assertEqual( + perft( + Board(0x850412080100L, 0x4000000000040L, 0x200a200000000000L, 0x4200000004000000L, 0x20L, + 0x400000000800L, 0xc200416000940L, 0x6202c50000080020L, false, 0, 0x0L), + 4 + ), + 878281 + ); + + // gentest-4836 + assertEqual( + perft( + Board(0x850012080100L, 0x4000000000040L, 0xa200400000000L, 0x4200000004000000L, 0x0L, 0x400000000008L, + 0xc200016000148L, 0x4202c50400080000L, true, 0, 0x0L), + 4 + ), + 1157445 + ); + + // gentest-4837 + assertEqual( + perft( + Board(0x850012080100L, 0x4000000000000L, 0x4a000000000040L, 0x4200000000000004L, 0x0L, + 0x400000000008L, 0x4c00001200010cL, 0x4202c50000080040L, false, 0, 0x0L), + 4 + ), + 880228 + ); + + // gentest-4838 + assertEqual( + perft( + Board(0x850012080100L, 0x200000000L, 0x148000000000040L, 0x4200000000000004L, 0x0L, 0x8000000008L, + 0x4800021200010cL, 0x4300858000080040L, true, 0, 0x0L), + 4 + ), + 842845 + ); + + // gentest-4839 + assertEqual( + perft( + Board(0x810412080100L, 0x200000000L, 0x142000000000040L, 0x4200000000000004L, 0x0L, 0x8000000008L, + 0x4200021200010cL, 0x4300818400080040L, false, 0, 0x0L), + 4 + ), + 609009 + ); + + // gentest-4840 + assertEqual( + perft( + Board(0x810016080100L, 0x200000000L, 0x140000800002000L, 0x4200000000000004L, 0x0L, 0x8000000008L, + 0x40000a1200010cL, 0x4300818004082000L, true, 0, 0x0L), + 4 + ), + 975297 + ); + + // gentest-4841 + assertEqual( + perft( + Board(0x810017080000L, 0x200000000L, 0x140000000000040L, 0x4200000000000004L, 0x0L, 0x8000000008L, + 0x14000021300000cL, 0x4200818004080040L, false, 0, 0x0L), + 4 + ), + 576614 + ); + + // gentest-4842 + assertEqual( + perft( + Board(0x810017080000L, 0x200000000L, 0x2101000000000000L, 0x1200000000000004L, 0x0L, 0x8000000008L, + 0x210000021300000cL, 0x1201818004080000L, true, 0, 0x0L), + 4 + ), + 398370 + ); + + // gentest-4843 + assertEqual( + perft( + Board(0x810116080000L, 0x8000000L, 0x2101000000000000L, 0x1200000000000004L, 0x0L, 0x400000000008L, + 0x210000011a00000cL, 0x1201c10004080000L, false, 0, 0x0L), + 4 + ), + 392478 + ); + + // gentest-4844 + assertEqual( + perft( + Board(0x810116080000L, 0x100000000000L, 0x2100020000000000L, 0x210000000000004L, 0x0L, + 0x400000000008L, 0x210010011200000cL, 0x210c30004080000L, true, 0, 0x0L), + 4 + ), + 461411 + ); + + // gentest-4845 + assertEqual( + perft( + Board(0x810116080000L, 0x100000000000L, 0x2000000808000000L, 0x210000000000004L, 0x0L, + 0x400000000800L, 0x2000100912000804L, 0x210c1000c080000L, false, 0, 0x0L), + 4 + ), + 820897 + ); + + // gentest-4846 + assertEqual( + perft( + Board(0x810112080000L, 0x100000000000L, 0x2000200800000000L, 0x210000000040000L, 0x0L, + 0x400000000800L, 0x2000100912040800L, 0x210e10000080000L, true, 0, 0x0L), + 4 + ), + 792358 + ); + + // gentest-4847 + assertEqual( + perft( + Board(0x810310080000L, 0x100000000000L, 0x2000200800000000L, 0x12000000040000L, 0x0L, 0x400000000010L, + 0x2000100b10040010L, 0x12e10000080000L, false, 0, 0x0L), + 4 + ), + 600495 + ); + + // gentest-4848 + assertEqual( + perft( + Board(0x810310080000L, 0x100000000000L, 0x2100200000000000L, 0x28000000040000L, 0x0L, 0x400000000010L, + 0x2100100310040010L, 0x28e10000080000L, true, 0, 0x0L), + 4 + ), + 668275 + ); + + // gentest-4849 + assertEqual( + perft( + Board(0x810300080000L, 0x100000000000L, 0x2100001000000000L, 0x28000000040000L, 0x0L, 0x400000000008L, + 0x2100100300040008L, 0x28c11000080000L, false, 0, 0x0L), + 4 + ), + 1266674 + ); + + // gentest-4850 + assertEqual( + perft( + Board(0x810300080000L, 0x100000000000L, 0x2100001000000000L, 0x20000004040000L, 0x0L, 0x400000000800L, + 0x2100100300040800L, 0x20c11004080000L, true, 0, 0x0L), + 4 + ), + 1537142 + ); + + // gentest-4851 + assertEqual( + perft( + Board(0x810300000000L, 0x100000000000L, 0x100081000000000L, 0x20000020080000L, 0x0L, 0x400000000800L, + 0x100180300080800L, 0x20c11020000000L, false, 0, 0x0L), + 4 + ), + 1553201 + ); + + // gentest-4852 + assertEqual( + perft( + Board(0x18300000000L, 0x100000000000L, 0x100000020000200L, 0x20000000080000L, 0x0L, 0x400000000800L, + 0x100100320080800L, 0x20418000000200L, true, 0, 0x0L), + 4 + ), + 821448 + ); + + // gentest-4853 + assertEqual( + perft( + Board(0x18300000000L, 0x100000000000L, 0x100001000008000L, 0x20000800000000L, 0x0L, 0x400000000800L, + 0x100100b00008800L, 0x20419000000000L, false, 0, 0x0L), + 4 + ), + 742801 + ); + + // gentest-4854 + assertEqual( + perft( + Board(0x8300000000L, 0x800000000000000L, 0x100001000008000L, 0x20000800000000L, 0x0L, + 0x40000000000800L, 0x900000900008800L, 0x60009200000000L, true, 0, 0x0L), + 4 + ), + 462251 + ); + + // gentest-4855 + assertEqual( + perft( + Board(0x8300000000L, 0x800000000000000L, 0x40020008000L, 0x20000800000000L, 0x0L, 0x40000000040000L, + 0x800040900048000L, 0x60008220000000L, false, 0, 0x0L), + 4 + ), + 566712 + ); + + // gentest-4856 + assertEqual( + perft( + Board(0x8300000000L, 0x800000000000000L, 0xc0000000004L, 0x20000800000000L, 0x0L, 0x80000000040000L, + 0x8000c0900040000L, 0xa0008200000004L, true, 0, 0x0L), + 4 + ), + 614904 + ); + + // gentest-4857 + assertEqual( + perft( + Board(0x8300000000L, 0x800000000000000L, 0xc0000000004L, 0x2000800000000L, 0x0L, 0x80000000000400L, + 0x8000c0900000400L, 0x82008200000004L, false, 0, 0x0L), + 4 + ), + 555339 + ); + + // gentest-4858 + assertEqual( + perft( + Board(0x8300000000L, 0x800000000000000L, 0x200060000000000L, 0x2000800000000L, 0x0L, + 0x80000000000400L, 0xa00040900000400L, 0x82028200000000L, true, 0, 0x0L), + 4 + ), + 529242 + ); + + // gentest-4859 + assertEqual( + perft( + Board(0x380000000L, 0x100000000000L, 0x200060000000000L, 0x2000800000000L, 0x0L, 0x80000000080000L, + 0x200140900080000L, 0x82020280000000L, false, 0, 0x0L), + 4 + ), + 522504 + ); + + // gentest-4860 + assertEqual( + perft( + Board(0x380000000L, 0x100000000000L, 0x200060000000000L, 0x20000800000000L, 0x0L, 0x800010000000L, + 0x200140910000000L, 0x20820280000000L, true, 0, 0x0L), + 4 + ), + 692539 + ); + + // gentest-4861 + assertEqual( + perft( + Board(0x380000000L, 0x20000000L, 0x200060000000000L, 0x40002000000000L, 0x0L, 0x800010000000L, + 0x200042130000000L, 0x40820280000000L, false, 0, 0x0L), + 4 + ), + 570921 + ); + + // gentest-4862 + assertEqual( + perft( + Board(0x380000000L, 0x20000000L, 0x200060000000000L, 0x2000400000000L, 0x0L, 0x40000010000000L, + 0x200040530000000L, 0x42020280000000L, true, 0, 0x0L), + 4 + ), + 422047 + ); + + // gentest-4863 + assertEqual( + perft( + Board(0x380000000L, 0x20000000L, 0x200040000002000L, 0x2000000000100L, 0x0L, 0x40000010000000L, + 0x200040130000100L, 0x42000280002000L, false, 0, 0x0L), + 4 + ), + 503492 + ); + + // gentest-4864 + assertEqual( + perft( + Board(0x380000000L, 0x20000000L, 0x1200020000000000L, 0x2000000000100L, 0x0L, 0x40000010000000L, + 0x1200000130000100L, 0x42020280000000L, true, 0, 0x0L), + 4 + ), + 489054 + ); + + // gentest-4865 + assertEqual( + perft( + Board(0x380000000L, 0x20000000L, 0x220000000002000L, 0x2000000008000L, 0x0L, 0x40000010000000L, + 0x220000130008000L, 0x42000280002000L, false, 0, 0x0L), + 4 + ), + 461899 + ); + + // gentest-4866 + assertEqual( + perft( + Board(0x380000000L, 0x20000000L, 0x220020000000000L, 0x2000000000100L, 0x0L, 0x40000010000000L, + 0x220000130000100L, 0x42020280000000L, true, 0, 0x0L), + 4 + ), + 530125 + ); + + // gentest-4867 + assertEqual( + perft( + Board(0x182000000L, 0x800000L, 0x24020000000000L, 0x2000000000100L, 0x0L, 0x40000010000000L, + 0x24000110800100L, 0x42020082000000L, false, 0, 0x0L), + 4 + ), + 399315 + ); + + // gentest-4868 + assertEqual( + perft( + Board(0x182000000L, 0x800000L, 0x4004000000100000L, 0x2000000000100L, 0x0L, 0x8000000010000000L, + 0x4004000110800100L, 0x8002000082100000L, true, 0, 0x0L), + 4 + ), + 423386 + ); + + // gentest-4869 + assertEqual( + perft( + Board(0x182000000L, 0x40L, 0x80000000100000L, 0x4000000000100L, 0x0L, 0x8000000010000000L, + 0x80000110000140L, 0x8004000082100000L, false, 0, 0x0L), + 4 + ), + 333248 + ); + + // gentest-4870 + assertEqual( + perft( + Board(0x182000000L, 0x40L, 0x80000000000800L, 0x8000000000100L, 0x0L, 0x8000002000000000L, + 0x80002100000140L, 0x8008000082000800L, true, 0, 0x0L), + 4 + ), + 174509 + ); + + // gentest-4871 + assertEqual( + perft( + Board(0x102800000L, 0x40L, 0x80000000000800L, 0x8000000010000L, 0x0L, 0x8000400000000000L, + 0x80400100010040L, 0x8008000002800800L, false, 0, 0x0L), + 4 + ), + 135330 + ); + + // gentest-4872 + assertEqual( + perft( + Board(0x102800000L, 0x1000L, 0x80004000000000L, 0x10000000010000L, 0x0L, 0x8000400000000000L, + 0x80400100011000L, 0x8010004002800000L, true, 0, 0x0L), + 4 + ), + 206799 + ); + + // gentest-4873 + assertEqual( + perft( + Board(0x102800000L, 0x1000L, 0x80000020000000L, 0x10000000040000L, 0x0L, 0x8000002000000000L, + 0x80002100041000L, 0x8010000022800000L, false, 0, 0x0L), + 4 + ), + 379628 + ); + + // gentest-4874 + assertEqual( + perft( + Board(0x10002800000L, 0x1000L, 0x80000020000000L, 0x40000L, 0x0L, 0x8000002000000000L, + 0x80012000001000L, 0x8000000022840000L, true, 0, 0x0L), + 4 + ), + 133346 + ); + + // gentest-4875 + assertEqual( + perft( + Board(0x1000002800000L, 0x1000L, 0x80000000000000L, 0x40000L, 0x0L, 0x40000020000000L, + 0x81000020001000L, 0x40000002840000L, false, 0, 0x0L), + 4 + ), + 166204 + ); + + // gentest-4876 + assertEqual( + perft( + Board(0x1000002800000L, 0x400000L, 0x80000000000000L, 0x10000L, 0x0L, 0x800020000000L, + 0x81000020400000L, 0x800002810000L, true, 0, 0x0L), + 4 + ), + 102718 + ); + + // gentest-4877 + assertEqual( + perft( + Board(0x1000002800000L, 0x10000000L, 0x80000000000000L, 0x40000L, 0x0L, 0x800040000000L, + 0x81000050000000L, 0x800002840000L, false, 0, 0x0L), + 4 + ), + 98905 + ); + + // gentest-4878 + assertEqual( + perft( + Board(0x1000002800000L, 0x4000000000L, 0x80000000000000L, 0x40000000000L, 0x0L, 0x800040000000L, + 0x81004040000000L, 0x840002800000L, true, 0, 0x0L), + 4 + ), + 118675 + ); + + // gentest-4879 + assertEqual( + perft( + Board(0x1000002800000L, 0x100000000000L, 0x4000000000000000L, 0x4L, 0x0L, 0x800040000000L, + 0x4001100040000000L, 0x800002800004L, false, 0, 0x0L), + 4 + ), + 95961 + ); + + // gentest-4880 + assertEqual( + perft( + Board(0x1000002800000L, 0x2000000000000000L, 0x4000000000000000L, 0x20L, 0x0L, 0x800040000000L, + 0x6001000040000000L, 0x800002800020L, true, 0, 0x0L), + 4 + ), + 95402 + ); + + // gentest-4881 + assertEqual( + perft( + Board(0x1000002800000L, 0x2000000000000000L, 0x80000000000000L, 0x2L, 0x0L, 0x800000400000L, + 0x2081000000400000L, 0x800002800002L, false, 0, 0x0L), + 4 + ), + 77054 + ); + + // gentest-4882 + assertEqual( + perft( + Board(0x1000002800000L, 0x2000000000000000L, 0x80000000000000L, 0x1000000L, 0x0L, 0x800040000000L, + 0x2081000040000000L, 0x800003800000L, true, 0, 0x0L), + 4 + ), + 56096 + ); + + // gentest-4883 + assertEqual( + perft( + Board(0x2800000L, 0x2000000000000000L, 0x80000L, 0x100L, 0x100000000000000L, 0x800040000000L, + 0x2100000040080000L, 0x800002800100L, false, 0, 0x0L), + 4 + ), + 277116 + ); + + // gentest-4884 + assertEqual( + perft( + Board(0x2800000L, 0x2000000000000000L, 0x80000L, 0x400000L, 0x100000000000000L, 0x800080000000L, + 0x2100000080080000L, 0x800002c00000L, true, 0, 0x0L), + 4 + ), + 178705 + ); + + // gentest-4885 + assertEqual( + perft( + Board(0x2800000L, 0x4000000000000L, 0x80000L, 0x400000000000L, 0x100000000000000L, 0x800080000000L, + 0x104000080080000L, 0xc00002800000L, false, 0, 0x0L), + 4 + ), + 280729 + ); + + // gentest-4886 + assertEqual( + perft( + Board(0x2800000L, 0x4000000000000L, 0x80000L, 0x10000000000000L, 0x1000000L, 0x800080000000L, + 0x4000081080000L, 0x10800002800000L, true, 0, 0x0L), + 4 + ), + 236373 + ); + + // gentest-4887 + assertEqual( + perft( + Board(0x2800000L, 0x4000000000000L, 0x400000000000L, 0x8000000000000L, 0x1000000000000L, + 0x800080000000L, 0x5400080000000L, 0x8800002800000L, false, 0, 0x0L), + 4 + ), + 228017 + ); + + // gentest-4888 + assertEqual( + perft( + Board(0x2800000L, 0x4000000000000L, 0x400000000000L, 0x1000000000000000L, 0x8000000L, 0x800080000000L, + 0x4400088000000L, 0x1000800002800000L, true, 0, 0x0L), + 4 + ), + 306074 + ); + + // gentest-4889 + assertEqual( + perft( + Board(0x820000L, 0x100000000000000L, 0x400000000000L, 0x1000000000000000L, 0x800000000000000L, + 0x800080000000L, 0x900400080000000L, 0x1000800000820000L, false, 0, 0x0L), + 4 + ), + 174046 + ); + + // gentest-4890 + assertEqual( + perft( + Board(0x820000L, 0x100000000000000L, 0x400000000000L, 0x20000000L, 0x200000000000000L, + 0x800080000000L, 0x300400080000000L, 0x800020820000L, true, 0, 0x0L), + 4 + ), + 16375 + ); + + // gentest-4891 + assertEqual( + perft( + Board(0x820000L, 0x100000000000000L, 0x10000000L, 0x0L, 0x20000000L, 0x40000080000000L, + 0x1000000b0000000L, 0x40000000820000L, false, 0, 0x0L), + 4 + ), + 29679 + ); + + // gentest-4892 + assertEqual( + perft( + Board(0x28000L, 0x100000000000000L, 0x10000000L, 0x0L, 0x20000000L, 0x4000000040000000L, + 0x100000070000000L, 0x4000000000028000L, true, 0, 0x0L), + 4 + ), + 87947 + ); + + // gentest-4893 + assertEqual( + perft( + Board(0x28000L, 0x100000000000000L, 0x10000000L, 0x0L, 0x2000000000000000L, 0x8000000000200000L, + 0x2100000010200000L, 0x8000000000028000L, false, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-4894 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4895 + assertEqual( + perft( + Board(0xfb00040201fc00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x201fcffL, 0xfffb000400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 259281 + ); + + // gentest-4896 + assertEqual( + perft( + Board(0xba41042201dc00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2201dcffL, 0xffba410400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 262228 + ); + + // gentest-4897 + assertEqual( + perft( + Board(0xba014463009c00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x63009cffL, 0xffba014400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 352527 + ); + + // gentest-4898 + assertEqual( + perft( + Board(0xba004167089400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x630894ffL, 0xffba004104000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 464985 + ); + + // gentest-4899 + assertEqual( + perft( + Board(0xb2084167089400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x630895feL, 0xffb2084104000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 729818 + ); + + // gentest-4900 + assertEqual( + perft( + Board(0xb20840650a9400L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x610894ffL, 0xffb2084004020000L, true, 0, + 0x8100000000000080L), + 4 + ), + 862095 + ); + + // gentest-4901 + assertEqual( + perft( + Board(0xb20860050a9400L, 0x4200000000000042L, 0x2000000040800004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x20018894dfL, 0xfbb2084044020000L, false, 0, + 0x8100000000000080L), + 4 + ), + 863095 + ); + + // gentest-4902 + assertEqual( + perft( + Board(0xb20860050a9400L, 0x4004000000000042L, 0x2000000040800200L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x20018896dbL, 0xf9b6084044020000L, true, 0, + 0x8100000000000080L), + 4 + ), + 1081786 + ); + + // gentest-4903 + assertEqual( + perft( + Board(0xa21860050a9000L, 0x4004000000000042L, 0x2000000040000200L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x20410a92dbL, 0xf9a6184004000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 1282740 + ); + + // gentest-4904 + assertEqual( + perft( + Board(0xa21860050a9000L, 0x4004000000000042L, 0x2000008000000200L, 0x8001000000000081L, + 0x400000000000008L, 0x1000000000000010L, 0xa0010a92dbL, 0xf4a7184004000000L, true, 0, + 0x8000000000000080L), + 4 + ), + 1199779 + ); + + // gentest-4905 + assertEqual( + perft( + Board(0xa2186007089000L, 0x4000000800000042L, 0x2000008000000200L, 0x8001000000000081L, + 0x400000000000400L, 0x1000000000000010L, 0xa0030896d3L, 0xf4a3184804000000L, false, 0, + 0x8000000000000080L), + 4 + ), + 1821754 + ); + + // gentest-4906 + assertEqual( + perft( + Board(0xa2186007089000L, 0x4000000800010040L, 0x808000000200L, 0x8000000100000081L, + 0x400000000000400L, 0x1000000000000010L, 0xa0030996d1L, 0xd4a2984904000000L, true, 0, + 0x8000000000000080L), + 4 + ), + 2001000 + ); + + // gentest-4907 + assertEqual( + perft( + Board(0xa2184007089000L, 0x200a00000040L, 0x808000000200L, 0x8000000100000081L, 0x400000000000400L, + 0x1000000000000010L, 0x82030896d1L, 0x94a2b84904000000L, false, 0, 0x8000000000000080L), + 4 + ), + 2183493 + ); + + // gentest-4908 + assertEqual( + perft( + Board(0xa2184007089000L, 0x4200800000040L, 0x40008000000200L, 0x8000000100000081L, 0x400000000000400L, + 0x800000000000010L, 0x40080030896d1L, 0x8ce2384904000000L, true, 0, 0x80L), + 4 + ), + 2360849 + ); + + // gentest-4909 + assertEqual( + perft( + Board(0xa2184105089000L, 0x4200800000040L, 0x40000040000200L, 0x2000000000000081L, 0x400000000000400L, + 0x800000000000010L, 0x40001410896d1L, 0x2ce2384804000000L, false, 0, 0x80L), + 4 + ), + 1693983 + ); + + // gentest-4910 + assertEqual( + perft( + Board(0xa2184185081000L, 0x4200800000040L, 0x800040000200L, 0x2000000000000081L, 0x100000000000400L, + 0x800000000000010L, 0x40001c10816d1L, 0x29a2b84804000000L, true, 0, 0x80L), + 4 + ), + 1776037 + ); + + // gentest-4911 + assertEqual( + perft( + Board(0xa218c105081000L, 0x4200020000040L, 0x800040000004L, 0x2000000000000081L, 0x100000000000400L, + 0x800000000000010L, 0x40081410814d5L, 0x29a2b84024000000L, false, 0, 0x80L), + 4 + ), + 1483469 + ); + + // gentest-4912 + assertEqual( + perft( + Board(0xa218c005081000L, 0x4200000004040L, 0x800040000004L, 0x2000000000000081L, 0x100000400L, + 0x800000000000800L, 0x4008041081cc5L, 0x28a2b84104004000L, true, 0, 0x0L), + 4 + ), + 84514 + ); + + // gentest-4913 + assertEqual( + perft( + Board(0xa218c005081000L, 0x4200080000040L, 0x800040000004L, 0x2000000000000081L, 0x100000200L, + 0x800000000000008L, 0x40080410812cdL, 0x28a2b84184000000L, false, 0, 0x0L), + 4 + ), + 2151718 + ); + + // gentest-4914 + assertEqual( + perft( + Board(0xa2188005081000L, 0x200000200040L, 0x804040000000L, 0x2000000000000081L, 0x100000200L, + 0x4000000000008L, 0xc0410812c9L, 0x20a6b80104200000L, true, 0, 0x0L), + 4 + ), + 3235617 + ); + + // gentest-4915 + assertEqual( + perft( + Board(0xa2188005081000L, 0x200000200040L, 0x804040000000L, 0x2000000000000081L, 0x8000010L, + 0x4000000000400L, 0xc0490814c1L, 0x20a6b80004200010L, false, 0, 0x0L), + 4 + ), + 2588455 + ); + + // gentest-4916 + assertEqual( + perft( + Board(0xa2188005081000L, 0x200000200000L, 0x804040000000L, 0x100000000010080L, 0x8000040L, + 0x4000000000400L, 0xc049091480L, 0x1a6b80004200040L, true, 0, 0x0L), + 4 + ), + 3355827 + ); + + // gentest-4917 + assertEqual( + perft( + Board(0xa2188005081000L, 0x200000200000L, 0x8000c0000000L, 0x100000000010080L, 0x1000000040L, + 0x400000000000400L, 0x90c1091480L, 0x5a2b80004200040L, false, 0, 0x0L), + 4 + ), + 3390908 + ); + + // gentest-4918 + assertEqual( + perft( + Board(0xa2188005081000L, 0x40000000200000L, 0x8000c0000000L, 0x100000000010040L, 0x1000000000L, + 0x400000000000400L, 0x90c1091440L, 0x5e2980004200000L, true, 0, 0x0L), + 4 + ), + 1958380 + ); + + // gentest-4919 + assertEqual( + perft( + Board(0xa218800d001000L, 0x40000000000000L, 0x800080200000L, 0x10000010040L, 0x1000000000L, + 0x400000000000400L, 0x9089211440L, 0x4e2990004000000L, false, 0, 0x0L), + 4 + ), + 1545207 + ); + + // gentest-4920 + assertEqual( + perft( + Board(0xa218800d001000L, 0x2000000000L, 0x2000000080004000L, 0x10000010040L, 0x1000000000L, + 0x400000000000400L, 0x9089015440L, 0x24a2192004000000L, true, 0, 0x0L), + 4 + ), + 1670231 + ); + + // gentest-4921 + assertEqual( + perft( + Board(0xa218800d001000L, 0x800000000000L, 0x2000000080000080L, 0x10000080040L, 0x1000000000L, + 0x400000000000400L, 0x90890814c0L, 0x24a2990004000000L, false, 0, 0x0L), + 4 + ), + 1401821 + ); + + // gentest-4922 + assertEqual( + perft( + Board(0x8218a00c001000L, 0x800000000000L, 0x2000000080000080L, 0x1800040L, 0x1000000000L, + 0x400000000000400L, 0x90888014c0L, 0x2482982005000000L, true, 0, 0x0L), + 4 + ), + 1340860 + ); + + // gentest-4923 + assertEqual( + perft( + Board(0x8218a00c001000L, 0x800000000000L, 0x50000000000080L, 0x1800040L, 0x800000000L, + 0x400000000000400L, 0x100088088014c0L, 0x4c2982005000000L, false, 0, 0x0L), + 4 + ), + 1305063 + ); + + // gentest-4924 + assertEqual( + perft( + Board(0x8218a00c001000L, 0x800000000000L, 0x50000000004000L, 0x810040L, 0x800000000L, + 0x400000000000400L, 0x10008808805440L, 0x4c2982004010000L, true, 0, 0x0L), + 4 + ), + 1321044 + ); + + // gentest-4925 + assertEqual( + perft( + Board(0x8218a00c001000L, 0x800000000000L, 0x50000000004000L, 0x100040040L, 0x800000000L, + 0x400000000000002L, 0x10008808045042L, 0x4c2982104000000L, false, 0, 0x0L), + 4 + ), + 942285 + ); + + // gentest-4926 + assertEqual( + perft( + Board(0x8218a00c001000L, 0x800000000000L, 0x50000000004000L, 0x40040L, 0x800000000L, + 0x200000000000001L, 0x10008808045041L, 0x2c2982004000000L, true, 0, 0x0L), + 4 + ), + 487904 + ); + + // gentest-4927 + assertEqual( + perft( + Board(0x8218a00c001000L, 0x4000000000000000L, 0x50000000004000L, 0x20040L, 0x800000000L, + 0x200000000000001L, 0x10008808025041L, 0x42c2182004000000L, false, 0, 0x0L), + 4 + ), + 704692 + ); + + // gentest-4928 + assertEqual( + perft( + Board(0x8218a00c100000L, 0x4000000000000000L, 0x10800000004000L, 0x20040L, 0x800000000L, + 0x200000000000001L, 0x10008808124041L, 0x4282982004000000L, true, 0, 0x0L), + 4 + ), + 454741 + ); + + // gentest-4929 + assertEqual( + perft( + Board(0x8218a00c000000L, 0x4000000000000000L, 0x10000000100080L, 0x20040L, 0x1000000000L, + 0x200000000000001L, 0x100090080200c1L, 0x4282182004100000L, false, 0, 0x0L), + 4 + ), + 1011494 + ); + + // gentest-4930 + assertEqual( + perft( + Board(0x8218a00c000000L, 0x10000000L, 0x10000000100080L, 0x4000020000L, 0x1000000000L, + 0x200000000000001L, 0x1000d008020081L, 0x282182014100000L, true, 0, 0x0L), + 4 + ), + 839781 + ); + + // gentest-4931 + assertEqual( + perft( + Board(0x8018a00c000000L, 0x10000000L, 0x10000000100080L, 0x4000000002L, 0x200000000L, + 0x200000000000001L, 0x1000c208000083L, 0x280182014100000L, false, 0, 0x0L), + 4 + ), + 113840 + ); + + // gentest-4932 + assertEqual( + perft( + Board(0x8018800c000000L, 0x10000000L, 0x10004000000080L, 0x2L, 0x2000000000L, 0x400000000000001L, + 0x1000a008000083L, 0x480184014000000L, true, 0, 0x0L), + 4 + ), + 545708 + ); + + // gentest-4933 + assertEqual( + perft( + Board(0x18800c000000L, 0x10000000L, 0x10000080000080L, 0x4L, 0x80000000000000L, 0x400000000000001L, + 0x90008008000085L, 0x400180094000000L, false, 0, 0x0L), + 4 + ), + 349593 + ); + + // gentest-4934 + assertEqual( + perft( + Board(0x18800c000000L, 0x400000000L, 0x10000080000080L, 0x400L, 0x80000000000000L, 0x8000000000001L, + 0x90008008000481L, 0x8180484000000L, true, 0, 0x0L), + 4 + ), + 324135 + ); + + // gentest-4935 + assertEqual( + perft( + Board(0x10880c000000L, 0x400000000L, 0x10000090000000L, 0x40000L, 0x80000000000000L, 0x8000000000001L, + 0x90008018040001L, 0x8100c84000000L, false, 0, 0x0L), + 4 + ), + 347199 + ); + + // gentest-4936 + assertEqual( + perft( + Board(0x10880c000000L, 0x0L, 0x10000080080000L, 0x40000L, 0x80000000000000L, 0x40000000001L, + 0x900080080c0001L, 0x140884000000L, true, 0, 0x0L), + 4 + ), + 165403 + ); + + // gentest-4937 + assertEqual( + perft( + Board(0x108808000000L, 0x0L, 0x10000084000000L, 0x400L, 0x80000000000000L, 0x200000001L, + 0x9000800c000401L, 0x100a80000000L, false, 0, 0x0L), + 4 + ), + 75272 + ); + + // gentest-4938 + assertEqual( + perft( + Board(0x108808000000L, 0x0L, 0x200404000000L, 0x400L, 0x80000000000000L, 0x1000001L, + 0x8000840c000401L, 0x300801000000L, true, 0, 0x0L), + 4 + ), + 150843 + ); + + // gentest-4939 + assertEqual( + perft( + Board(0x108008000000L, 0x0L, 0x200400000000L, 0x4000000L, 0x80000000000000L, 0x1000002L, + 0x8000840c000002L, 0x300001000000L, false, 0, 0x0L), + 4 + ), + 34010 + ); + + // gentest-4940 + assertEqual( + perft( + Board(0x108008000000L, 0x0L, 0x4400000000L, 0x4000000L, 0x10000000000000L, 0x200000002L, + 0x1000840c000002L, 0x104200000000L, true, 0, 0x0L), + 4 + ), + 115374 + ); + + // gentest-4941 + assertEqual( + perft( + Board(0x8008000000L, 0x0L, 0x480000000L, 0x40000L, 0x100000000000L, 0x200000002L, 0x108408040002L, + 0x280000000L, false, 0, 0x0L), + 4 + ), + 156802 + ); + + // gentest-4942 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x400400000L, 0x40000L, 0x100000000000L, 0x200000002L, 0x900408040002L, + 0x200400000L, true, 0, 0x0L), + 4 + ), + 177783 + ); + + // gentest-4943 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x400002000L, 0x40000L, 0x400000000000L, 0x200000002L, 0xc00408040002L, + 0x200002000L, false, 0, 0x0L), + 4 + ), + 125825 + ); + + // gentest-4944 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000000004L, 0x40000L, 0x400000000000L, 0x200000002L, + 0x1c00008040002L, 0x200000004L, true, 0, 0x0L), + 4 + ), + 132490 + ); + + // gentest-4945 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000000004L, 0x40000L, 0x200000000000L, 0x1000002L, + 0x1a00008040002L, 0x1000004L, false, 0, 0x0L), + 4 + ), + 154079 + ); + + // gentest-4946 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000000200L, 0x4000000000000L, 0x200000000000L, 0x2000002L, + 0x5a00008000002L, 0x2000200L, true, 0, 0x0L), + 4 + ), + 106223 + ); + + // gentest-4947 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000000200L, 0x4000000000000L, 0x200000000L, 0x10002L, + 0x5800208000002L, 0x10200L, false, 0, 0x0L), + 4 + ), + 41724 + ); + + // gentest-4948 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000100000000L, 0x4000000000000L, 0x2000000000L, 0x10002L, + 0x5802008000002L, 0x100010000L, true, 0, 0x0L), + 4 + ), + 112479 + ); + + // gentest-4949 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000040000L, 0x40000000000L, 0x80000L, 0x10002L, 0x1840008080002L, + 0x50000L, false, 0, 0x0L), + 4 + ), + 28131 + ); + + // gentest-4950 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000000001L, 0x40000000000L, 0x80000000000000L, 0x2000002L, + 0x81840008000002L, 0x2000001L, true, 0, 0x0L), + 4 + ), + 61809 + ); + + // gentest-4951 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000000001L, 0x400000000000L, 0x8000000000000000L, 0x100000002L, + 0x8001c00008000002L, 0x100000001L, false, 0, 0x0L), + 4 + ), + 56014 + ); + + // gentest-4952 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x1000000040000L, 0x400000000000L, 0x200000000000L, 0x100000002L, + 0x1e00008000002L, 0x100040000L, true, 0, 0x0L), + 4 + ), + 82057 + ); + + // gentest-4953 + assertEqual( + perft( + Board(0x800008000000L, 0x0L, 0x400000001L, 0x400000000000L, 0x10000000000L, 0x100000002L, + 0xc10408000002L, 0x100000001L, false, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-4954 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-4955 + assertEqual( + perft( + Board(0xbf00400400fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x400fbffL, 0xffbf004000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 259039 + ); + + // gentest-4956 + assertEqual( + perft( + Board(0xb700480400fb00L, 0x4200000000000042L, 0x2000100000000024L, 0x8100000000000081L, + 0x800000000020000L, 0x1000000000000010L, 0x402fbf7L, 0xfbb7104800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 842072 + ); + + // gentest-4957 + assertEqual( + perft( + Board(0xb5004a0410eb00L, 0x4200000000010040L, 0x2000100000000024L, 0x8100000000000081L, + 0x800000000020000L, 0x1000000000000010L, 0x413ebf5L, 0xfbb5104a00000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 775794 + ); + + // gentest-4958 + assertEqual( + perft( + Board(0x9520421400eb00L, 0x4200000000010040L, 0x2000100000000024L, 0x8100000000000081L, + 0x800000000020000L, 0x1000000000000010L, 0x1003ebf5L, 0xfb95304204000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1117318 + ); + + // gentest-4959 + assertEqual( + perft( + Board(0x9520421000eb00L, 0x4200000000010040L, 0x2000100004000004L, 0x8100000000000081L, + 0x80000020000L, 0x1000000000000008L, 0x1403ebcdL, 0xf395384200000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1809963 + ); + + // gentest-4960 + assertEqual( + perft( + Board(0x9520421000eb00L, 0x4200000000010040L, 0x2000100000800004L, 0x8100000000000081L, 0x2020000L, + 0x1000000000000008L, 0x10001003ebcdL, 0xf395204202800000L, true, 0, 0x8100000000000000L), + 4 + ), + 1151975 + ); + + // gentest-4961 + assertEqual( + perft( + Board(0x9520421000eb00L, 0x4200000000010040L, 0x2000100040000004L, 0x8100000000000081L, 0x2100000L, + 0x1000000000000010L, 0x10001011ebd5L, 0xf395204242000000L, false, 0, 0x8100000000000000L), + 4 + ), + 1457212 + ); + + // gentest-4962 + assertEqual( + perft( + Board(0x9520420000eb00L, 0x4200000000010040L, 0x2008000040000004L, 0x8100000000000081L, 0x10100000L, + 0x20000000000010L, 0x800000011ebd5L, 0xe3b5204250000000L, true, 0, 0x0L), + 4 + ), + 1250559 + ); + + // gentest-4963 + assertEqual( + perft( + Board(0x9520420000eb00L, 0x4200000000010040L, 0x2002000040000004L, 0x8100000000000081L, 0x100000L, + 0x20000000000010L, 0x200000011ebd5L, 0xe3b5204240000000L, false, 0, 0x0L), + 4 + ), + 1237350 + ); + + // gentest-4964 + assertEqual( + perft( + Board(0x9520420000eb00L, 0x200800000010040L, 0x2002100000000004L, 0x8100000000000081L, 0x100000L, + 0x20000000000020L, 0x200000011ebe5L, 0xa3b5b04200000000L, true, 0, 0x0L), + 4 + ), + 1261222 + ); + + // gentest-4965 + assertEqual( + perft( + Board(0x9520420000eb00L, 0x200800000010040L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, + 0x100000000020L, 0x1000001ebe5L, 0xa395b04200000000L, false, 0, 0x0L), + 4 + ), + 222070 + ); + + // gentest-4966 + assertEqual( + perft( + Board(0x9520420000eb00L, 0x200800000010040L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, + 0x40000000010L, 0x1000001ebd5L, 0xa395a44200000000L, true, 0, 0x0L), + 4 + ), + 191096 + ); + + // gentest-4967 + assertEqual( + perft( + Board(0x9500620000eb00L, 0x200800000000440L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, + 0x40000001000L, 0x1000000ffc5L, 0xa395846200000000L, false, 0, 0x0L), + 4 + ), + 249909 + ); + + // gentest-4968 + assertEqual( + perft( + Board(0x9500600002eb00L, 0x200800000200400L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, + 0x40000001000L, 0x1000020ff85L, 0xa395846000020000L, true, 0, 0x0L), + 4 + ), + 342242 + ); + + // gentest-4969 + assertEqual( + perft( + Board(0x9500200000ef00L, 0x200804000000000L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, + 0x40000000020L, 0x1400000eba5L, 0xa395842000000400L, false, 0, 0x0L), + 4 + ), + 217032 + ); + + // gentest-4970 + assertEqual( + perft( + Board(0x9104200000ef00L, 0x200804000000000L, 0x2000010000000004L, 0x8100000000000081L, 0x0L, + 0x80000000010L, 0x1400000eb95L, 0xa3918c2000000400L, true, 0, 0x0L), + 4 + ), + 245920 + ); + + // gentest-4971 + assertEqual( + perft( + Board(0x9104200800e700L, 0x200804000000000L, 0x40010020000000L, 0x8100000000000081L, 0x0L, + 0x80000000010L, 0x1402800e391L, 0x83d18c2000000400L, false, 0, 0x0L), + 4 + ), + 109900 + ); + + // gentest-4972 + assertEqual( + perft( + Board(0x9104200800e700L, 0x200804000000000L, 0x40011000000000L, 0x4100000000000081L, 0x0L, + 0x8000000000010L, 0x1500800e391L, 0x43d9842000000400L, true, 0, 0x0L), + 4 + ), + 712385 + ); + + // gentest-4973 + assertEqual( + perft( + Board(0x9104200800e300L, 0x200804000000000L, 0x40011000000000L, 0x4100000000000085L, 0x0L, + 0x8000000001000L, 0x1500800f381L, 0x43d9842000000004L, false, 0, 0x0L), + 4 + ), + 1104057 + ); + + // gentest-4974 + assertEqual( + perft( + Board(0x9104200800e300L, 0x220000000200000L, 0x211000000000L, 0x4100000000000085L, 0x0L, + 0x8000000001000L, 0x1100820f381L, 0x43b9242000000004L, true, 0, 0x0L), + 4 + ), + 1804803 + ); + + // gentest-4975 + assertEqual( + perft( + Board(0x91042089006200L, 0x220000000200000L, 0x211000000000L, 0x4100000400000081L, 0x0L, + 0x8000000001000L, 0x11089207281L, 0x43b9242400000000L, false, 0, 0x0L), + 4 + ), + 2352659 + ); + + // gentest-4976 + assertEqual( + perft( + Board(0x91042081006200L, 0x220000000200000L, 0x90008000000L, 0x4100000100000081L, 0x0L, + 0x8000000001000L, 0x90081207281L, 0x43b9042108000000L, true, 0, 0x0L), + 4 + ), + 3392403 + ); + + // gentest-4977 + assertEqual( + perft( + Board(0x91042081006200L, 0x200001000200000L, 0x90008000000L, 0x4100000100800020L, 0x0L, + 0x8000000001000L, 0x90081a07220L, 0x4399043108000000L, false, 0, 0x0L), + 4 + ), + 1868428 + ); + + // gentest-4978 + assertEqual( + perft( + Board(0x91042081006200L, 0x200001000200000L, 0x90008000000L, 0x4100000100800040L, 0x0L, + 0x8000000001000L, 0x90081a07240L, 0x4399043108000000L, true, 0, 0x0L), + 4 + ), + 1781403 + ); + + // gentest-4979 + assertEqual( + perft( + Board(0x91042080006200L, 0x200001000000000L, 0x80208000000L, 0x4100000001800040L, 0x0L, + 0x8000000001000L, 0x81280807240L, 0x4399042009000000L, false, 0, 0x0L), + 4 + ), + 434053 + ); + + // gentest-4980 + assertEqual( + perft( + Board(0x91042080006200L, 0x208000000000000L, 0x80208000000L, 0x140000001800040L, 0x0L, + 0x100000001000L, 0x8080280807240L, 0x3d1142009000000L, true, 0, 0x0L), + 4 + ), + 2452091 + ); + + // gentest-4981 + assertEqual( + perft( + Board(0x91042080006200L, 0x208000000000000L, 0x80208000000L, 0x140000100008040L, 0x0L, + 0x100000000010L, 0x808028000e250L, 0x3d1142108000000L, false, 0, 0x0L), + 4 + ), + 1116160 + ); + + // gentest-4982 + assertEqual( + perft( + Board(0x91042080006200L, 0x208000000000000L, 0x620000000L, 0x4100000100008040L, 0x0L, 0x100000000010L, + 0x80002a000e250L, 0x4391142500000000L, true, 0, 0x0L), + 4 + ), + 1126717 + ); + + // gentest-4983 + assertEqual( + perft( + Board(0x91042080006200L, 0x200000000000000L, 0x620000000L, 0x4100000100008040L, 0x0L, + 0x8000000000004L, 0x2a000e244L, 0x4399042500000000L, false, 0, 0x0L), + 4 + ), + 990667 + ); + + // gentest-4984 + assertEqual( + perft( + Board(0x81042080006200L, 0x200000000000000L, 0x81200000000L, 0x4100000100008040L, 0x0L, + 0x8000000000004L, 0x128000e244L, 0x43890c2100000000L, true, 0, 0x0L), + 4 + ), + 1175271 + ); + + // gentest-4985 + assertEqual( + perft( + Board(0x810420c0002200L, 0x200000000000000L, 0x80200400000L, 0x4100000100008040L, 0x0L, + 0x10000000000004L, 0x2c040a244L, 0x43910c2100000000L, false, 0, 0x0L), + 4 + ), + 996595 + ); + + // gentest-4986 + assertEqual( + perft( + Board(0x810420c0002200L, 0x200000000000000L, 0x81200000000L, 0x100200100008040L, 0x0L, + 0x10000000000004L, 0x12c000a244L, 0x3912c2100000000L, true, 0, 0x0L), + 4 + ), + 963366 + ); + + // gentest-4987 + assertEqual( + perft( + Board(0x810420c0002200L, 0x200000000000000L, 0x280000000000L, 0x100000200008040L, 0x0L, + 0x10000000000004L, 0x2000c000a244L, 0x3910c2200000000L, false, 0, 0x0L), + 4 + ), + 123492 + ); + + // gentest-4988 + assertEqual( + perft( + Board(0x810420c2002000L, 0x200000000000000L, 0x200020000000L, 0x100000200008040L, 0x0L, + 0x20000000000004L, 0x2000c200a044L, 0x3a1042220000000L, true, 0, 0x0L), + 4 + ), + 103918 + ); + + // gentest-4989 + assertEqual( + perft( + Board(0x810420c2002000L, 0x200000000000000L, 0x200020000000L, 0x10000020000c000L, 0x0L, + 0x2000000000000200L, 0x2000c200e200L, 0x2381042220000000L, false, 0, 0x0L), + 4 + ), + 365445 + ); + + // gentest-4990 + assertEqual( + perft( + Board(0x810420c2002000L, 0x200000000000000L, 0x280000000000L, 0x100000200004000L, 0x0L, + 0x2000000000000001L, 0x2000c2006001L, 0x23810c2200000000L, true, 0, 0x0L), + 4 + ), + 247596 + ); + + // gentest-4991 + assertEqual( + perft( + Board(0x810420c0002000L, 0x200000000000000L, 0x1002000000L, 0x100000200004000L, 0x0L, + 0x2000000000000001L, 0x10c0006001L, 0x2381042202000000L, false, 0, 0x0L), + 4 + ), + 266293 + ); + + // gentest-4992 + assertEqual( + perft( + Board(0x810420c0002000L, 0x200000000000000L, 0x1002000000L, 0x100000000000044L, 0x0L, + 0x2000000000000001L, 0x10c0002041L, 0x2381042002000004L, true, 0, 0x0L), + 4 + ), + 53349 + ); + + // gentest-4993 + assertEqual( + perft( + Board(0x810420c0002000L, 0x200000000000000L, 0x1000000010L, 0x100000000000002L, 0x0L, + 0x2000000000000001L, 0x10c0002003L, 0x2381042000000010L, false, 0, 0x0L), + 4 + ), + 227105 + ); + + // gentest-4994 + assertEqual( + perft( + Board(0x810420c0000000L, 0x200000000000000L, 0x1000002000L, 0x100000000000002L, 0x0L, + 0x4000000000000100L, 0x10c0000102L, 0x4381042000002000L, true, 0, 0x0L), + 4 + ), + 365310 + ); + + // gentest-4995 + assertEqual( + perft( + Board(0x810420c0000000L, 0x200000000000000L, 0x8400000L, 0x100000000000002L, 0x0L, + 0x4000000000000100L, 0xc0400102L, 0x4381042008000000L, false, 0, 0x0L), + 4 + ), + 377332 + ); + + // gentest-4996 + assertEqual( + perft( + Board(0x810420c0000000L, 0x8000000000000L, 0x40000000400000L, 0x100000000020000L, 0x0L, + 0x4000000000000100L, 0xc0420100L, 0x41c9042000000000L, true, 0, 0x0L), + 4 + ), + 498269 + ); + + // gentest-4997 + assertEqual( + perft( + Board(0x8104a040000000L, 0x2000000000000000L, 0x40000000400000L, 0x100000000100000L, 0x0L, + 0x4000000000000100L, 0x8040500100L, 0x61c1042000000000L, false, 0, 0x0L), + 4 + ), + 371944 + ); + + // gentest-4998 + assertEqual( + perft( + Board(0x80058060000000L, 0x2000000000000000L, 0x40000000400000L, 0x100100000000000L, 0x0L, + 0x4000000000000100L, 0x108040400100L, 0x61c0050020000000L, true, 0, 0x0L), + 4 + ), + 232266 + ); + + // gentest-4999 + assertEqual( + perft( + Board(0x80048160000000L, 0x2000000000000000L, 0x40000000002000L, 0x100000000000010L, 0x0L, + 0x4000000000000100L, 0x8040002110L, 0x61c0040120000000L, false, 0, 0x0L), + 4 + ), + 357098 + ); + + // gentest-5000 + assertEqual( + perft( + Board(0x80048160000000L, 0x2000000000000000L, 0x40000000002000L, 0x100000000001000L, 0x0L, + 0x200000000100L, 0x8040003100L, 0x21c0240120000000L, true, 0, 0x0L), + 4 + ), + 182634 + ); + + // gentest-5001 + assertEqual( + perft( + Board(0x80048160000000L, 0x2000000000000000L, 0x800000002000L, 0x100000000100000L, 0x0L, + 0x200000000100L, 0x8040102100L, 0x2180a40120000000L, false, 0, 0x0L), + 4 + ), + 176068 + ); + + // gentest-5002 + assertEqual( + perft( + Board(0x80048160000000L, 0x2000000000000000L, 0x800000002000L, 0x100000000000010L, 0x0L, + 0x200000000100L, 0x8040002110L, 0x2180a40120000000L, true, 0, 0x0L), + 4 + ), + 205504 + ); + + // gentest-5003 + assertEqual( + perft( + Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x100000000000010L, 0x0L, + 0x40000000010000L, 0xc000012010L, 0x21c0840120000000L, false, 0, 0x0L), + 4 + ), + 186496 + ); + + // gentest-5004 + assertEqual( + perft( + Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x800000000100000L, 0x0L, + 0x8000000000010000L, 0xc000112000L, 0xa880840120000000L, true, 0, 0x0L), + 4 + ), + 225883 + ); + + // gentest-5005 + assertEqual( + perft( + Board(0x8004c120000000L, 0x2000000000000000L, 0x800000100000L, 0x800000000080000L, 0x0L, + 0x4000000000010000L, 0xc000190000L, 0x6880840120000000L, false, 0, 0x0L), + 4 + ), + 211034 + ); + + // gentest-5006 + assertEqual( + perft( + Board(0x8004c120000000L, 0x2000000000000000L, 0x800000100000L, 0x1000000000080000L, 0x0L, + 0x40000001000000L, 0xc001180000L, 0x30c0840120000000L, true, 0, 0x0L), + 4 + ), + 179900 + ); + + // gentest-5007 + assertEqual( + perft( + Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x100000800000000L, 0x0L, + 0x40000001000000L, 0xc801002000L, 0x21c0840120000000L, false, 0, 0x0L), + 4 + ), + 142432 + ); + + // gentest-5008 + assertEqual( + perft( + Board(0x8004c120000000L, 0x2000000000000000L, 0x800000002000L, 0x10000080000L, 0x0L, + 0x4000000001000000L, 0xc001082000L, 0x6080850120000000L, true, 0, 0x0L), + 4 + ), + 127679 + ); + + // gentest-5009 + assertEqual( + perft( + Board(0x80848120000000L, 0x2000000000000000L, 0x10L, 0x10000080000L, 0x0L, 0x20000001000000L, + 0x808001080010L, 0x20a0050120000000L, false, 0, 0x0L), + 4 + ), + 84638 + ); + + // gentest-5010 + assertEqual( + perft( + Board(0x80808520000000L, 0x2000000000000000L, 0x10L, 0x800010000000000L, 0x0L, 0x200001000000L, + 0x800808001000010L, 0x2080210520000000L, true, 0, 0x0L), + 4 + ), + 110124 + ); + + // gentest-5011 + assertEqual( + perft( + Board(0x80808500200000L, 0x2000000000000000L, 0x100000L, 0x800010000000000L, 0x0L, 0x200001000000L, + 0x800808001100000L, 0x2080210500200000L, false, 0, 0x0L), + 4 + ), + 124179 + ); + + // gentest-5012 + assertEqual( + perft( + Board(0x80808500200000L, 0x400000000000L, 0x20000000L, 0x800080000000000L, 0x0L, 0x200001000000L, + 0x800808021000000L, 0x80680500200000L, true, 0, 0x0L), + 4 + ), + 176574 + ); + + // gentest-5013 + assertEqual( + perft( + Board(0x80808400200000L, 0x400000000000L, 0x20000000L, 0x8000000008000000L, 0x0L, 0x200100000000L, + 0x8000808120000000L, 0x80600408200000L, false, 0, 0x0L), + 4 + ), + 191471 + ); + + // gentest-5014 + assertEqual( + perft( + Board(0x80808400200000L, 0x80000000L, 0x20000000L, 0x8000000001000000L, 0x0L, 0x200200000000L, + 0x8000808220000000L, 0x80200481200000L, true, 0, 0x0L), + 4 + ), + 158867 + ); + + // gentest-5015 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x400000L, 0x100000001000000L, 0x0L, 0x200200000000L, + 0x100808200400000L, 0x80200085200000L, false, 0, 0x0L), + 4 + ), + 147770 + ); + + // gentest-5016 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x400000L, 0x100000002000000L, 0x0L, 0x44000000000L, + 0x100848000400000L, 0x80004086200000L, true, 0, 0x0L), + 4 + ), + 202485 + ); + + // gentest-5017 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x200000000000000L, 0x100000000020000L, 0x0L, 0x44000000000L, + 0x300848000000000L, 0x80004084220000L, false, 0, 0x0L), + 4 + ), + 165194 + ); + + // gentest-5018 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x0L, 0x201000000000000L, 0x0L, 0x44000000000L, + 0x1848000000000L, 0x280004084200000L, true, 0, 0x0L), + 4 + ), + 149661 + ); + + // gentest-5019 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x0L, 0x4000000000000100L, 0x0L, 0x44000000000L, + 0x848000000100L, 0x4080004084200000L, false, 0, 0x0L), + 4 + ), + 154896 + ); + + // gentest-5020 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x0L, 0x8001000000000000L, 0x0L, 0x42000000000L, + 0x1848000000000L, 0x8080002084200000L, true, 0, 0x0L), + 4 + ), + 117402 + ); + + // gentest-5021 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x0L, 0x1002000000000000L, 0x0L, 0x2800000000L, + 0x2808800000000L, 0x1080002084200000L, false, 0, 0x0L), + 4 + ), + 126188 + ); + + // gentest-5022 + assertEqual( + perft( + Board(0x80808004200000L, 0x80000000L, 0x0L, 0x10000200L, 0x0L, 0x4800000000L, 0x808800000200L, + 0x80004094200000L, true, 0, 0x0L), + 4 + ), + 106594 + ); + + // gentest-5023 + assertEqual( + perft( + Board(0x80808000240000L, 0x80000000L, 0x0L, 0x10010000000L, 0x0L, 0x4800000000L, 0x818800000000L, + 0x80004090240000L, false, 0, 0x0L), + 4 + ), + 112131 + ); + + // gentest-5024 + assertEqual( + perft( + Board(0x80808000240000L, 0x80000000L, 0x0L, 0x40020000000L, 0x0L, 0x4800000000L, 0x848800000000L, + 0x800040a0240000L, true, 0, 0x0L), + 4 + ), + 65627 + ); + + // gentest-5025 + assertEqual( + perft( + Board(0x80808000240000L, 0x2000000000L, 0x0L, 0x4000020000000L, 0x0L, 0x4800000000L, 0x4808800000000L, + 0x80006020240000L, false, 0, 0x0L), + 4 + ), + 96378 + ); + + // gentest-5026 + assertEqual( + perft( + Board(0x80808000240000L, 0x2000000000L, 0x0L, 0x40004000000L, 0x0L, 0x4800000000L, 0x848800000000L, + 0x80006004240000L, true, 0, 0x0L), + 4 + ), + 70344 + ); + + // gentest-5027 + assertEqual( + perft( + Board(0xc08000240000L, 0x2000000000L, 0x0L, 0x4000000L, 0x0L, 0x104000000000L, 0x908000000000L, + 0x406004240000L, false, 0, 0x0L), + 4 + ), + 25782 + ); + + // gentest-5028 + assertEqual( + perft( + Board(0xc00000240000L, 0x2000000000L, 0x0L, 0x4000000L, 0x0L, 0x8004000000000L, 0x8800000000000L, + 0x406004240000L, true, 0, 0x0L), + 4 + ), + 14150 + ); + + // gentest-5029 + assertEqual( + perft( + Board(0xc00000240000L, 0x2000000000L, 0x0L, 0x400000000000000L, 0x0L, 0x8004000000000L, + 0x8800000000000L, 0x400406000240000L, false, 0, 0x0L), + 4 + ), + 14138 + ); + + // gentest-5030 + assertEqual( + perft( + Board(0xc00000042000L, 0x2000000000L, 0x0L, 0x400000000000000L, 0x0L, 0x100080000000L, + 0x900000000000L, 0x400402080042000L, true, 0, 0x0L), + 4 + ), + 25718 + ); + + // gentest-5031 + assertEqual( + perft( + Board(0x800000042000L, 0x2000000000L, 0x0L, 0x800000000000000L, 0x0L, 0x400080000000L, + 0xc00000000000L, 0x800002080042000L, false, 0, 0x0L), + 4 + ), + 18693 + ); + + // gentest-5032 + assertEqual( + perft( + Board(0x800000040000L, 0x8000000L, 0x0L, 0x800000000000020L, 0x0L, 0x80000080000000L, + 0x80800000000000L, 0x800000088040020L, true, 0, 0x0L), + 4 + ), + 9057 + ); + + // gentest-5033 + assertEqual( + perft( + Board(0x800000040000L, 0x8000000L, 0x0L, 0x80000000020L, 0x0L, 0x4000000080000000L, + 0x4000800000000000L, 0x80088040020L, false, 0, 0x0L), + 4 + ), + 24395 + ); + + // gentest-5034 + assertEqual( + perft( + Board(0x800000040000L, 0x8000000L, 0x0L, 0x80000000002L, 0x0L, 0x8000000080000000L, + 0x8000800000000000L, 0x80088040002L, true, 0, 0x0L), + 4 + ), + 22003 + ); + + // gentest-5035 + assertEqual( + perft( + Board(0x800000040000L, 0x8000000L, 0x0L, 0x80000000080L, 0x0L, 0x8000000080000000L, + 0x8000800000000000L, 0x80088040080L, false, 0, 0x0L), + 4 + ), + 15724 + ); + + // gentest-5036 + assertEqual( + perft( + Board(0x800000040000L, 0x40000000000L, 0x0L, 0x80000000002L, 0x0L, 0x80000080000000L, + 0x80800000000000L, 0xc0080040002L, true, 0, 0x0L), + 4 + ), + 21937 + ); + + // gentest-5037 + assertEqual( + perft( + Board(0x800000040000L, 0x40000000000L, 0x0L, 0x2080000000000L, 0x0L, 0x8000000080000000L, + 0x8000800000000000L, 0x20c0080040000L, false, 0, 0x0L), + 4 + ), + 8832 + ); + + // gentest-5038 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5039 + assertEqual( + perft( + Board(0xef10000400fb00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000400L, 0x1000000000000010L, 0x400fff7L, 0xffef100000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 785252 + ); + + // gentest-5040 + assertEqual( + perft( + Board(0xcf10200400fb00L, 0x4200000000000040L, 0x400000000010024L, 0x8100000000000081L, + 0x800000000000400L, 0x1000000000000010L, 0x400fff5L, 0xdfcf102000010000L, true, 0, + 0x8100000000000081L), + 4 + ), + 712453 + ); + + // gentest-5041 + assertEqual( + perft( + Board(0xcf10200410eb00L, 0x200800000000040L, 0x400000000010024L, 0x8100000000000082L, + 0x800000000000400L, 0x1000000000000010L, 0x410eff6L, 0x9fcf902000010000L, false, 0, + 0x8100000000000080L), + 4 + ), + 906324 + ); + + // gentest-5042 + assertEqual( + perft( + Board(0xcf10200410eb00L, 0x200800000000040L, 0x410000000000024L, 0x8100000000000082L, + 0x800000000080000L, 0x1000000000000010L, 0x418ebf6L, 0x9fdf902000000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 788234 + ); + + // gentest-5043 + assertEqual( + perft( + Board(0xcf10200412e900L, 0x200800000000040L, 0x400200000000024L, 0x8100000000000082L, + 0x800000000000400L, 0x1000000000000010L, 0x412edf6L, 0x9fcfb02000000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 951179 + ); + + // gentest-5044 + assertEqual( + perft( + Board(0xcf10200412e900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x412e9feL, 0xdfdf102000000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 605175 + ); + + // gentest-5045 + assertEqual( + perft( + Board(0x8f50240032c900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x1000000000000010L, 0x40032c9feL, 0xdf9f502000000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 433591 + ); + + // gentest-5046 + assertEqual( + perft( + Board(0x8f54200032c900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000082L, + 0x800000000000008L, 0x20000000000010L, 0x4000032c9feL, 0xcfbf502000000000L, true, 0, 0x80L), + 4 + ), + 750076 + ); + + // gentest-5047 + assertEqual( + perft( + Board(0x8f50200032c900L, 0x4200000000000040L, 0x410000000000024L, 0x8100000000000280L, + 0x2000000000000008L, 0x20000000000010L, 0x800000032cbfcL, 0xe7b7502000000000L, false, 0, 0x80L), + 4 + ), + 895759 + ); + + // gentest-5048 + assertEqual( + perft( + Board(0x8b50240032c900L, 0x200800000000040L, 0x410000000000024L, 0x8100000000000280L, + 0x2000000000001000L, 0x20000000000010L, 0x800000032dbf4L, 0xa7b3d02400000000L, true, 0, 0x80L), + 4 + ), + 675596 + ); + + // gentest-5049 + assertEqual( + perft( + Board(0x8b502440338800L, 0x810000000040L, 0x410000000000024L, 0x8100000000000280L, + 0x2000000000001000L, 0x20000000000010L, 0x8000040339af4L, 0xa5b3d12400000000L, false, 0, 0x80L), + 4 + ), + 770026 + ); + + // gentest-5050 + assertEqual( + perft( + Board(0x81522440338800L, 0x810000000040L, 0xc10000000000024L, 0x4100000000000280L, + 0x2000000000001000L, 0x20000000000010L, 0x800000040339af4L, 0x65b1d32400000000L, true, 0, 0x80L), + 4 + ), + 582873 + ); + + // gentest-5051 + assertEqual( + perft( + Board(0x815224c0330800L, 0x810000000040L, 0x818000000000024L, 0x4100000000000280L, + 0x2000000000001000L, 0x20000000000010L, 0x8000000c0331af4L, 0x61b9d32400000000L, false, 0, 0x80L), + 4 + ), + 876293 + ); + + // gentest-5052 + assertEqual( + perft( + Board(0x81522490230800L, 0x810000000040L, 0x818000000000024L, 0x4100000000000280L, + 0x2000000000001000L, 0x20000000000010L, 0x800000090231af4L, 0x61b9d32400000000L, true, 0, 0x80L), + 4 + ), + 929745 + ); + + // gentest-5053 + assertEqual( + perft( + Board(0x81522490230800L, 0x4800000800000L, 0x818000000000024L, 0x4100000000000280L, + 0x2000000000002000L, 0x20000000000010L, 0x800000090a32ab4L, 0x61bdd22400000000L, false, 0, 0x80L), + 4 + ), + 1372713 + ); + + // gentest-5054 + assertEqual( + perft( + Board(0x815204b0230800L, 0x4800000800000L, 0x810000200000024L, 0x4100000000000280L, + 0x2000000000000040L, 0x20000000000010L, 0x800000090a30af4L, 0x61b5d20620000000L, true, 0, 0x80L), + 4 + ), + 1116454 + ); + + // gentest-5055 + assertEqual( + perft( + Board(0x815204b0230800L, 0x4800000000000L, 0x800004200004004L, 0x4100000000000280L, + 0x2000000000000040L, 0x20000000000010L, 0x800000090234ad4L, 0x61a5d24620000000L, false, 0, 0x80L), + 4 + ), + 837355 + ); + + // gentest-5056 + assertEqual( + perft( + Board(0x815204b0230800L, 0x40000000L, 0x4004000084004L, 0x4100000000000280L, 0x2000000000000040L, + 0x20000000000010L, 0x4000090234ad4L, 0x61a1524460080000L, true, 0, 0x80L), + 4 + ), + 1260276 + ); + + // gentest-5057 + assertEqual( + perft( + Board(0x815204b0230800L, 0x1000000000L, 0x4004000084004L, 0x4100000000000280L, 0x2000000008000000L, + 0x20000000000010L, 0x4000098234a94L, 0x61a1525420080000L, false, 0, 0x80L), + 4 + ), + 1773016 + ); + + // gentest-5058 + assertEqual( + perft( + Board(0x815204b1220800L, 0x1000000000L, 0x804000004004004L, 0x4100000000000280L, 0x2000000008000000L, + 0x20000000000010L, 0x4000099224a94L, 0x69a1521424000000L, true, 0, 0x80L), + 4 + ), + 1204926 + ); + + // gentest-5059 + assertEqual( + perft( + Board(0x815204b1220800L, 0x8000000000000L, 0x804000004004004L, 0x4100000000000220L, + 0x2000000008000000L, 0x20000000000008L, 0x4000099224a2cL, 0x69a9520424000000L, false, 0, 0x0L), + 4 + ), + 1224535 + ); + + // gentest-5060 + assertEqual( + perft( + Board(0x815204b1220800L, 0x200000000000L, 0x4000004004004L, 0x4100000000000220L, 0x2000000000000000L, + 0x20000000000008L, 0x4000091224a2cL, 0x61a1720424000000L, true, 0, 0x0L), + 4 + ), + 741287 + ); + + // gentest-5061 + assertEqual( + perft( + Board(0x815004b1220800L, 0x200000000000L, 0x20004800004L, 0x4800000000000220L, 0x2000000000000000L, + 0x20000000000008L, 0x20091a20a2cL, 0x68a1700424000000L, false, 0, 0x0L), + 4 + ), + 832045 + ); + + // gentest-5062 + assertEqual( + perft( + Board(0x15084b1220800L, 0x200000000000L, 0x22004000004L, 0x4200000000000220L, 0x2000000000000000L, + 0x20000000000008L, 0x22091220a2cL, 0x6221708424000000L, true, 0, 0x0L), + 4 + ), + 722598 + ); + + // gentest-5063 + assertEqual( + perft( + Board(0x15084b1220800L, 0x200000000000L, 0x4002004000004L, 0x4200000000000210L, 0x2000000000000000L, + 0x1000000000000008L, 0x4002091220a1cL, 0x7201708424000000L, false, 0, 0x0L), + 4 + ), + 779909 + ); + + // gentest-5064 + assertEqual( + perft( + Board(0x5184b1220800L, 0x200000000000L, 0x4002000000024L, 0x4200000000000210L, 0x2000000000000000L, + 0x1000000000000400L, 0x4002091220e14L, 0x7200718420000020L, true, 0, 0x0L), + 4 + ), + 671389 + ); + + // gentest-5065 + assertEqual( + perft( + Board(0x518491220800L, 0x200000000000L, 0x2020000024L, 0x240000000000110L, 0x2000000000000000L, + 0x1000000000000400L, 0x20b1220d14L, 0x3240718400000020L, false, 0, 0x0L), + 4 + ), + 1597686 + ); + + // gentest-5066 + assertEqual( + perft( + Board(0x518491220800L, 0x200000000000L, 0x2020001004L, 0x240000000000110L, 0x2000000000000000L, + 0x800000000000008L, 0x20b122091cL, 0x2a40718400001000L, true, 0, 0x0L), + 4 + ), + 139808 + ); + + // gentest-5067 + assertEqual( + perft( + Board(0x518491220800L, 0x200000000000L, 0x20800004L, 0x240000000000110L, 0x80000000000L, + 0x800000000001000L, 0xb1a21914L, 0xa40798400000000L, false, 0, 0x0L), + 4 + ), + 1540425 + ); + + // gentest-5068 + assertEqual( + perft( + Board(0x518095220800L, 0x200000000000L, 0x800000800004L, 0x240000000000110L, 0x8000000000000L, + 0x800000000001000L, 0x800091a21914L, 0xa48718004000000L, true, 0, 0x0L), + 4 + ), + 1398495 + ); + + // gentest-5069 + assertEqual( + perft( + Board(0x518095220800L, 0x200000000000L, 0x800000800004L, 0x240000000000180L, 0x1000000000000000L, + 0x800000000000008L, 0x800091a2098cL, 0x1a40718004000000L, false, 0, 0x0L), + 4 + ), + 1266649 + ); + + // gentest-5070 + assertEqual( + perft( + Board(0x518095200800L, 0x200000000000L, 0x800000800004L, 0x40000000020180L, 0x1000000000000000L, + 0x10000000001000L, 0x800091a01984L, 0x1050718004020000L, true, 0, 0x0L), + 4 + ), + 1279945 + ); + + // gentest-5071 + assertEqual( + perft( + Board(0x51809d200000L, 0x200000000000L, 0x800000800004L, 0x40000000020180L, 0x20000000000000L, + 0x10000000002000L, 0x800099a02184L, 0x70718004020000L, false, 19, 0x0L), + 4 + ), + 1206620 + ); + + // gentest-5072 + assertEqual( + perft( + Board(0x51809d200000L, 0x200000000000L, 0x800000800004L, 0x40000000020110L, 0x100000000000000L, + 0x10000000002000L, 0x800099a02114L, 0x150718004020000L, true, 0, 0x0L), + 4 + ), + 2061285 + ); + + // gentest-5073 + assertEqual( + perft( + Board(0x51809d200000L, 0x200000000000L, 0x800000800004L, 0x40000000020110L, 0x100000000000000L, + 0x800000000002000L, 0x800099a02114L, 0x940718004020000L, false, 0, 0x0L), + 4 + ), + 2035026 + ); + + // gentest-5074 + assertEqual( + perft( + Board(0x51809d200000L, 0x200000000000L, 0x20800004L, 0x10000000100110L, 0x100000000000000L, + 0x800000000002000L, 0xb9a02114L, 0x910718004100000L, true, 0, 0x0L), + 4 + ), + 1574209 + ); + + // gentest-5075 + assertEqual( + perft( + Board(0x51809d200000L, 0x200000000000L, 0x4004L, 0x10000000100110L, 0x100000000000000L, + 0x4000000002000L, 0x99206114L, 0x114718004100000L, false, 0, 0x0L), + 4 + ), + 1114903 + ); + + // gentest-5076 + assertEqual( + perft( + Board(0x51808d200000L, 0x200000000000L, 0x4004L, 0x10000000100810L, 0x2000000000000L, + 0x4000000002000L, 0x89206814L, 0x16718004100000L, true, 0, 0x0L), + 4 + ), + 1001391 + ); + + // gentest-5077 + assertEqual( + perft( + Board(0x51808d200000L, 0x200000000000L, 0x24L, 0x10000000101800L, 0x400000000000000L, + 0x4000000002000L, 0x89203824L, 0x414718004100000L, false, 0, 0x0L), + 4 + ), + 580038 + ); + + // gentest-5078 + assertEqual( + perft( + Board(0x51808d200000L, 0x200000000000L, 0x24L, 0x80000000101800L, 0x4000000000000000L, + 0x4000000400000L, 0x89601824L, 0x4084718004100000L, true, 0, 0x0L), + 4 + ), + 704386 + ); + + // gentest-5079 + assertEqual( + perft( + Board(0x50818d200000L, 0x200000000000L, 0x10020L, 0x80000000108800L, 0x4000000000000000L, + 0x4000000400000L, 0x89618820L, 0x4084708104100000L, false, 0, 0x0L), + 4 + ), + 1083538 + ); + + // gentest-5080 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x10020L, 0x80000000108800L, 0x4000000000000000L, 0x20000400000L, + 0x81618820L, 0x4080528904100000L, true, 0, 0x0L), + 4 + ), + 1143282 + ); + + // gentest-5081 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x2000000000000020L, 0x80000000048800L, 0x4000000000000000L, + 0x20000400000L, 0x2000000081608820L, 0x4080528904040000L, false, 0, 0x0L), + 4 + ), + 842656 + ); + + // gentest-5082 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x2000000000000020L, 0x200000000c8000L, 0x4000000000000000L, + 0x1000000400000L, 0x2000000081688020L, 0x4021508904040000L, true, 0, 0x0L), + 4 + ), + 924685 + ); + + // gentest-5083 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x2000020L, 0x200000000c0200L, 0x8000000000000000L, + 0x1000000400000L, 0x83680220L, 0x8021508904040000L, false, 0, 0x0L), + 4 + ), + 1434854 + ); + + // gentest-5084 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x2000020L, 0x20000000040a00L, 0x8000000000000000L, + 0x2000000400000L, 0x83600a20L, 0x8022508904040000L, true, 0, 0x0L), + 4 + ), + 1144473 + ); + + // gentest-5085 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x2000020L, 0x20000000040a00L, 0x1000000000L, 0x2000000004000L, + 0x83204a20L, 0x22509904040000L, false, 0, 0x0L), + 4 + ), + 1127536 + ); + + // gentest-5086 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x2080000L, 0x20000000040a00L, 0x8000L, 0x1000000004000L, + 0x83284a00L, 0x21508904048000L, true, 0, 0x0L), + 4 + ), + 65720 + ); + + // gentest-5087 + assertEqual( + perft( + Board(0x508185200000L, 0x800000000L, 0x2080000L, 0x20000000044200L, 0x0L, 0x1000000000020L, + 0x83284220L, 0x21508904040000L, false, 0, 0x0L), + 4 + ), + 910218 + ); + + // gentest-5088 + assertEqual( + perft( + Board(0x508181280000L, 0x800000000L, 0x2000000L, 0x24000000004002L, 0x0L, 0x1000000000020L, + 0x83204022L, 0x25508900080000L, true, 0, 0x0L), + 4 + ), + 870559 + ); + + // gentest-5089 + assertEqual( + perft( + Board(0x508181280000L, 0x800000000L, 0x2000000L, 0x2004000000004002L, 0x0L, 0x1000000000020L, + 0x83204022L, 0x2005508900080000L, false, 0, 0x0L), + 4 + ), + 1113446 + ); + + // gentest-5090 + assertEqual( + perft( + Board(0x508181280000L, 0x100000L, 0x10L, 0x2000000000004006L, 0x0L, 0x1000000000020L, 0x81204032L, + 0x2001508100180004L, true, 0, 0x0L), + 4 + ), + 50061 + ); + + // gentest-5091 + assertEqual( + perft( + Board(0x508181280000L, 0x100000L, 0x10L, 0x2000000000044002L, 0x0L, 0x1000000002000L, 0x81206012L, + 0x20015081001c0000L, false, 0, 0x0L), + 4 + ), + 466535 + ); + + // gentest-5092 + assertEqual( + perft( + Board(0x409181280000L, 0x100000L, 0x10L, 0x8000000000048002L, 0x0L, 0x1000000002000L, 0x8120a012L, + 0x80014091001c0000L, true, 0, 0x0L), + 4 + ), + 311893 + ); + + // gentest-5093 + assertEqual( + perft( + Board(0x409181280000L, 0x100000L, 0x10L, 0x8000000006008000L, 0x0L, 0x1000000002000L, 0x8320a010L, + 0x8001409104180000L, false, 0, 0x0L), + 4 + ), + 373157 + ); + + // gentest-5094 + assertEqual( + perft( + Board(0x409181280000L, 0x800000000L, 0x10L, 0x8000000010008000L, 0x0L, 0x1000000002000L, 0x9120a010L, + 0x8001409900080000L, true, 0, 0x0L), + 4 + ), + 253382 + ); + + // gentest-5095 + assertEqual( + perft( + Board(0x409181280000L, 0x2000000L, 0x40000L, 0x8000000010008000L, 0x0L, 0x1000000004000L, 0x9124c000L, + 0x8001409102080000L, false, 0, 0x0L), + 4 + ), + 278683 + ); + + // gentest-5096 + assertEqual( + perft( + Board(0x409181280000L, 0x0L, 0x2000000L, 0x800010008000L, 0x0L, 0x20000004000L, 0x9320c000L, + 0xc29100080000L, true, 0, 0x0L), + 4 + ), + 81504 + ); + + // gentest-5097 + assertEqual( + perft( + Board(0x409081280000L, 0x0L, 0x100000000L, 0x800010008000L, 0x0L, 0x10000004000L, 0x19120c000L, + 0xc19000080000L, false, 0, 0x0L), + 4 + ), + 48860 + ); + + // gentest-5098 + assertEqual( + perft( + Board(0x4090a1080000L, 0x0L, 0x100000000L, 0x800010008000L, 0x0L, 0x10000004000L, 0x1b100c000L, + 0xc19000080000L, true, 0, 0x0L), + 4 + ), + 61450 + ); + + // gentest-5099 + assertEqual( + perft( + Board(0x4090a1080000L, 0x0L, 0x40000L, 0x800004008000L, 0x0L, 0x20000004000L, 0xa504c000L, + 0xc29000080000L, false, 0, 0x0L), + 4 + ), + 75714 + ); + + // gentest-5100 + assertEqual( + perft( + Board(0x4080b1080000L, 0x0L, 0x2000000L, 0x800004008000L, 0x0L, 0x2000000004000L, 0xa700c000L, + 0x2c08010080000L, true, 0, 0x0L), + 4 + ), + 90440 + ); + + // gentest-5101 + assertEqual( + perft( + Board(0x4080a1080000L, 0x0L, 0x2000000L, 0x800010008000L, 0x0L, 0x20000004000L, 0xb300c000L, + 0xc28000080000L, false, 0, 0x0L), + 4 + ), + 88836 + ); + + // gentest-5102 + assertEqual( + perft( + Board(0x4080a1080000L, 0x0L, 0x40000L, 0x200000010008000L, 0x0L, 0x20000004000L, 0xb104c000L, + 0x200428000080000L, true, 0, 0x0L), + 4 + ), + 244363 + ); + + // gentest-5103 + assertEqual( + perft( + Board(0x4080a1000800L, 0x0L, 0x40000L, 0x200000000009000L, 0x0L, 0x20000000080L, 0xa1049080L, + 0x200428000000800L, false, 0, 0x0L), + 4 + ), + 238282 + ); + + // gentest-5104 + assertEqual( + perft( + Board(0xc0a1000000L, 0x0L, 0x1000000000L, 0x200000000009000L, 0x8L, 0x20000000080L, 0x10a1009080L, + 0x20002c000000008L, true, 0, 0x0L), + 4 + ), + 54544 + ); + + // gentest-5105 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x1000000000L, 0x200000000009000L, 0x10L, 0x20000004000L, 0x308100d000L, + 0x20002c000000010L, false, 0, 0x0L), + 4 + ), + 512017 + ); + + // gentest-5106 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x1000000000L, 0x200000000008200L, 0x2000000L, 0x2000000004000L, + 0x308100c200L, 0x20200c002000000L, true, 0, 0x0L), + 4 + ), + 512892 + ); + + // gentest-5107 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x20000000000L, 0x400000000008200L, 0x2000000L, 0x2000000004000L, + 0x2208100c200L, 0x40200c002000000L, false, 0, 0x0L), + 4 + ), + 800502 + ); + + // gentest-5108 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x20000000000L, 0x4000280L, 0x40000L, 0x2000000004000L, 0x22081004280L, + 0x200c004040000L, true, 0, 0x0L), + 4 + ), + 910268 + ); + + // gentest-5109 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x20000000000L, 0x400000002000001L, 0x40000L, 0x2000000004000L, + 0x22083004001L, 0x40200c000040000L, false, 0, 0x0L), + 4 + ), + 999451 + ); + + // gentest-5110 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x20000000000L, 0x6000001L, 0x4L, 0x2000000400000L, 0x22083400001L, + 0x200c004000004L, true, 0, 0x0L), + 4 + ), + 331241 + ); + + // gentest-5111 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x800000000000000L, 0x2000001L, 0x4L, 0x2000000008000L, 0x800002081008001L, + 0x200c002000004L, false, 0, 0x0L), + 4 + ), + 306256 + ); + + // gentest-5112 + assertEqual( + perft( + Board(0xe081000000L, 0x0L, 0x800000000000000L, 0x2000001L, 0x1000000000L, 0x2000000800000L, + 0x800002081800001L, 0x200d002000000L, true, 0, 0x0L), + 4 + ), + 545218 + ); + + // gentest-5113 + assertEqual( + perft( + Board(0xe080000000L, 0x0L, 0x10L, 0x1000001L, 0x1000000000L, 0x2000000800000L, 0x2080800011L, + 0x200d001000000L, false, 0, 0x0L), + 4 + ), + 447647 + ); + + // gentest-5114 + assertEqual( + perft( + Board(0x6080000000L, 0x0L, 0x10L, 0x1000001L, 0x800000000L, 0x2000000800000L, 0x6000800011L, + 0x2000881000000L, true, 0, 0x0L), + 4 + ), + 395887 + ); + + // gentest-5115 + assertEqual( + perft( + Board(0x402080000000L, 0x0L, 0x40000L, 0x1000001L, 0x20000L, 0x2000000800000L, 0x402000840001L, + 0x2000081020000L, false, 0, 0x0L), + 4 + ), + 418569 + ); + + // gentest-5116 + assertEqual( + perft( + Board(0x402080000000L, 0x0L, 0x40000L, 0x100000000000010L, 0x10000L, 0x2000000800000L, + 0x402000840010L, 0x102000080010000L, true, 0, 0x0L), + 4 + ), + 433786 + ); + + // gentest-5117 + assertEqual( + perft( + Board(0x40200080000000L, 0x0L, 0x40000L, 0x1000000000010L, 0x10000L, 0x2000000800000L, + 0x40200000840010L, 0x3000080010000L, false, 0, 0x0L), + 4 + ), + 435160 + ); + + // gentest-5118 + assertEqual( + perft( + Board(0x40200080000000L, 0x0L, 0x40000L, 0x11000000000000L, 0x400000000L, 0x20000800000L, + 0x50200000840000L, 0x1020480000000L, true, 0, 0x0L), + 4 + ), + 688926 + ); + + // gentest-5119 + assertEqual( + perft( + Board(0x40200080000000L, 0x0L, 0x40000L, 0x1000000001000L, 0x2000L, 0x20040000000L, 0x40200040041000L, + 0x1020080002000L, false, 0, 0x0L), + 4 + ), + 493584 + ); + + // gentest-5120 + assertEqual( + perft( + Board(0x40000000800000L, 0x0L, 0x10L, 0x1000000001000L, 0x200000000000L, 0x20040000000L, + 0x40000040001010L, 0x1220000800000L, true, 0, 0x0L), + 4 + ), + 741478 + ); + + // gentest-5121 + assertEqual( + perft( + Board(0x40000000800000L, 0x0L, 0x400000L, 0x20001000000000L, 0x200000000000L, 0x20040000000L, + 0x40001040400000L, 0x20220000800000L, false, 0, 0x0L), + 4 + ), + 339993 + ); + + // gentest-5122 + assertEqual( + perft( + Board(0x40000000800000L, 0x0L, 0x2000L, 0x20001000000000L, 0x40000000000L, 0x10040000000L, + 0x40001040002000L, 0x20050000800000L, true, 0, 0x0L), + 4 + ), + 905432 + ); + + // gentest-5123 + assertEqual( + perft( + Board(0x800000L, 0x0L, 0x2000L, 0x8001000000000L, 0x400040000000000L, 0x10040000000L, + 0x400001040002000L, 0x8050000800000L, false, 0, 0x0L), + 4 + ), + 77007 + ); + + // gentest-5124 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5125 + assertEqual( + perft( + Board(0xf700081800e700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1800e7ffL, 0xfff7000800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1136220 + ); + + // gentest-5126 + assertEqual( + perft( + Board(0xf600091800e700L, 0x200200000000840L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1800effdL, 0xbff6200900000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 975038 + ); + + // gentest-5127 + assertEqual( + perft( + Board(0xf600090801e600L, 0x200000010000840L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000200000L, 0x1000000000000010L, 0x821eef5L, 0xbff6000910000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1722128 + ); + + // gentest-5128 + assertEqual( + perft( + Board(0xf600094801a600L, 0x200000010000840L, 0x2000100000000024L, 0x4100000000000081L, + 0x800000000200000L, 0x1000000000000010L, 0x4821aef5L, 0x7bf6100910000000L, true, 0, + 0x100000000000081L), + 4 + ), + 1424936 + ); + + // gentest-5129 + assertEqual( + perft( + Board(0xb640094801a600L, 0x200000010001800L, 0x2000100000000024L, 0x4100000000000081L, + 0x800000000200000L, 0x1000000000000008L, 0x4821beadL, 0x7bb6500910000000L, false, 0, + 0x100000000000000L), + 4 + ), + 1287446 + ); + + // gentest-5130 + assertEqual( + perft( + Board(0xb4400b4a01a400L, 0x200000010001800L, 0x2000100000000024L, 0x8100000000000081L, + 0x800000000200000L, 0x1000000000000008L, 0x4a21bcadL, 0xbbb4500b10000000L, true, 0, + 0x100000000000000L), + 4 + ), + 1168613 + ); + + // gentest-5131 + assertEqual( + perft( + Board(0xb4400b4a05a000L, 0x200000010001800L, 0x2000100000000024L, 0x8100000000000081L, + 0x8000000200000L, 0x1000000000000010L, 0x4a25b8b5L, 0xb3bc500b10000000L, false, 0, + 0x100000000000000L), + 4 + ), + 937482 + ); + + // gentest-5132 + assertEqual( + perft( + Board(0xb4400b0a05a000L, 0x200000010021000L, 0x2000000040000024L, 0x8100000000000081L, 0x2000200000L, + 0x1000000000000010L, 0xa27b0b5L, 0xb3b4402b50000000L, true, 0, 0x100000000000000L), + 4 + ), + 1745508 + ); + + // gentest-5133 + assertEqual( + perft( + Board(0xb4400b0a05a000L, 0x10010021000L, 0x2000800040000020L, 0x8100000000000082L, 0x2000200000L, + 0x1000000000000010L, 0x80000a27b0b2L, 0xb1b4412b50000000L, false, 0, 0x100000000000000L), + 4 + ), + 2403795 + ); + + // gentest-5134 + assertEqual( + perft( + Board(0xb4400b0a05a000L, 0x10010001800L, 0x40800040000020L, 0x8800000000000082L, 0x2000200000L, + 0x1000000000000010L, 0x80000a25b8b2L, 0x98f4412b50000000L, true, 0, 0x0L), + 4 + ), + 2374473 + ); + + // gentest-5135 + assertEqual( + perft( + Board(0xb4400b0a05a000L, 0x10010001800L, 0x40800040000020L, 0x8800000000000082L, 0x20200000L, + 0x1000000000000010L, 0x80000a25b8b2L, 0x98f4410b70000000L, false, 0, 0x0L), + 4 + ), + 2738119 + ); + + // gentest-5136 + assertEqual( + perft( + Board(0xb4400b0a05a000L, 0x210000000804L, 0x40800040000020L, 0x8800000000000082L, 0x4000200000L, + 0x1000000000000010L, 0x80000a25a8b6L, 0x98f4614b40000000L, true, 0, 0x0L), + 4 + ), + 2079536 + ); + + // gentest-5137 + assertEqual( + perft( + Board(0xb4400b0a05a000L, 0x230000000004L, 0x40800040000020L, 0x4800000000000082L, 0x4000200000L, + 0x1000000000000010L, 0x82000a25a0b6L, 0x58f4614b40000000L, false, 0, 0x0L), + 4 + ), + 2289006 + ); + + // gentest-5138 + assertEqual( + perft( + Board(0xb4400b0a05a000L, 0x230000000004L, 0x2008800000000020L, 0x4800000000000082L, 0x4000800000L, + 0x1000000000000010L, 0x82000a85a0b6L, 0x78bc614b00000000L, true, 0, 0x0L), + 4 + ), + 2034846 + ); + + // gentest-5139 + assertEqual( + perft( + Board(0xb040070b04a000L, 0x210800000004L, 0x2008800000000020L, 0x4800000000000082L, 0x4000800000L, + 0x1000000000000010L, 0x80080b84a0b6L, 0x78b8614700000000L, false, 0, 0x0L), + 4 + ), + 2275739 + ); + + // gentest-5140 + assertEqual( + perft( + Board(0xb040070b04a000L, 0x4200000000004L, 0x2008800000000020L, 0x4800000000000082L, 0x800040L, + 0x1000000000000010L, 0x80000b84a0b6L, 0x78bc600700000040L, true, 0, 0x0L), + 4 + ), + 1691561 + ); + + // gentest-5141 + assertEqual( + perft( + Board(0xb040070b04a000L, 0x4200000000004L, 0x2008800000000020L, 0x4200000000020080L, 0x800040L, + 0x1000000000000008L, 0x80000b86a0acL, 0x72bc600700000040L, false, 0, 0x0L), + 4 + ), + 1829431 + ); + + // gentest-5142 + assertEqual( + perft( + Board(0xb040070304a000L, 0x4200000000004L, 0x2000800000800020L, 0x4800000000020080L, 0x40L, + 0x1000000000000008L, 0x80040306a0acL, 0x78b4600300800040L, true, 0, 0x0L), + 4 + ), + 194315 + ); + + // gentest-5143 + assertEqual( + perft( + Board(0xb040050304a000L, 0x4200000000004L, 0x2000000000800820L, 0x4800000000000082L, 0x40L, + 0x1000000000000008L, 0x40204a8aeL, 0x78b4600101800040L, false, 0, 0x0L), + 4 + ), + 752382 + ); + + // gentest-5144 + assertEqual( + perft( + Board(0xb044010304a000L, 0x300000000004L, 0x2000000000800820L, 0x840000000000082L, 0x40L, + 0x1000000000000008L, 0x4000204a8aeL, 0x38f0700101800040L, true, 0, 0x0L), + 4 + ), + 495084 + ); + + // gentest-5145 + assertEqual( + perft( + Board(0xb044010304a000L, 0x200020000004L, 0x2000000000800820L, 0x840000000020040L, 0x0L, + 0x1000000000000008L, 0x4000206a86cL, 0x38f0600121800000L, false, 0, 0x0L), + 4 + ), + 882039 + ); + + // gentest-5146 + assertEqual( + perft( + Board(0xa004110304a000L, 0x200020000004L, 0x2000000000800820L, 0x4800400000020000L, 0x0L, + 0x1000000000000008L, 0x44000206a82cL, 0x78a0201121800000L, true, 0, 0x0L), + 4 + ), + 1571154 + ); + + // gentest-5147 + assertEqual( + perft( + Board(0xa004110205a000L, 0x200020080000L, 0x2000000000800820L, 0x4800004000020000L, 0x0L, + 0x1000000000000008L, 0x440020ea828L, 0x78a0201120810000L, false, 0, 0x0L), + 4 + ), + 1928939 + ); + + // gentest-5148 + assertEqual( + perft( + Board(0xa004110205a000L, 0x200020000000L, 0x2000000000800820L, 0x484000020000L, 0x0L, + 0x1000000000000008L, 0x4402206a828L, 0x30a0681100810000L, true, 0, 0x0L), + 4 + ), + 1409755 + ); + + // gentest-5149 + assertEqual( + perft( + Board(0xa004110205a000L, 0x200000080000L, 0x2000000000804800L, 0x404008020000L, 0x0L, + 0x1000000000000008L, 0x440020ee808L, 0x30a0601108810000L, false, 0, 0x0L), + 4 + ), + 1843854 + ); + + // gentest-5150 + assertEqual( + perft( + Board(0xa004110205a000L, 0x8000000080000L, 0x80000904000L, 0x404008020000L, 0x0L, 0x1000000000000008L, + 0x440021ee008L, 0x10a8481108810000L, true, 0, 0x0L), + 4 + ), + 1477938 + ); + + // gentest-5151 + assertEqual( + perft( + Board(0xa000110205a000L, 0x80000L, 0x80000904000L, 0x404008020000L, 0x0L, 0x8000000000800L, + 0x40021ee800L, 0xa8481108810000L, false, 0, 0x0L), + 4 + ), + 1460407 + ); + + // gentest-5152 + assertEqual( + perft( + Board(0xa000110005a000L, 0x80000L, 0x2b00000L, 0x404800020000L, 0x0L, 0x8000000000800L, 0x40003ea800L, + 0xa8401902810000L, true, 0, 0x0L), + 4 + ), + 1391693 + ); + + // gentest-5153 + assertEqual( + perft( + Board(0x2000910005a000L, 0x80000L, 0x2900080L, 0x404800000002L, 0x0L, 0x8000000000800L, 0x40001ca882L, + 0x28409902810000L, false, 0, 0x0L), + 4 + ), + 1679474 + ); + + // gentest-5154 + assertEqual( + perft( + Board(0x2000910005a000L, 0x80000L, 0x402800080L, 0x404800000002L, 0x0L, 0x8000000000800L, + 0x44000ca882L, 0x28409902810000L, true, 0, 0x0L), + 4 + ), + 1500655 + ); + + // gentest-5155 + assertEqual( + perft( + Board(0x2000910005a000L, 0x80000L, 0x402800080L, 0x14800000100L, 0x0L, 0x8000000000800L, + 0x44000ca980L, 0x28019902810000L, false, 0, 0x0L), + 4 + ), + 1033871 + ); + + // gentest-5156 + assertEqual( + perft( + Board(0x2000910005a000L, 0x80000L, 0x2800080L, 0x10400400100L, 0x0L, 0x80000000800L, 0x4ca980L, + 0x20099502810000L, true, 0, 0x0L), + 4 + ), + 979947 + ); + + // gentest-5157 + assertEqual( + perft( + Board(0x2000910005a000L, 0x80000L, 0x2804000L, 0x4000010800000100L, 0x0L, 0x80000000800L, + 0x40000000000ce900L, 0x20099902810000L, false, 0, 0x0L), + 4 + ), + 645514 + ); + + // gentest-5158 + assertEqual( + perft( + Board(0x2000811005a000L, 0x80000L, 0x2804000L, 0x200040800000100L, 0x0L, 0x80000000800L, + 0x2000000000ce900L, 0x200c8912810000L, true, 0, 0x0L), + 4 + ), + 775593 + ); + + // gentest-5159 + assertEqual( + perft( + Board(0x2000811005a000L, 0x80000L, 0x2804000L, 0x200040800000200L, 0x0L, 0x8000000001000L, + 0x2000000000cf200L, 0x28048912810000L, false, 0, 0x0L), + 4 + ), + 1639800 + ); + + // gentest-5160 + assertEqual( + perft( + Board(0x2000811005a000L, 0x80000L, 0x2800000L, 0x200104000000200L, 0x0L, 0x8000000001000L, + 0x2000000008cb200L, 0x2810c112010000L, true, 0, 0x0L), + 4 + ), + 870234 + ); + + // gentest-5161 + assertEqual( + perft( + Board(0x2000811005a000L, 0x4L, 0x2800000L, 0x200104000000200L, 0x0L, 0x10000000000020L, + 0x20000000084a224L, 0x3010c112010000L, false, 0, 0x0L), + 4 + ), + 985254 + ); + + // gentest-5162 + assertEqual( + perft( + Board(0x2000811005a000L, 0x4L, 0x2800000L, 0x200100200000002L, 0x0L, 0x8000000000020L, + 0x20000000084a026L, 0x28108312010000L, true, 0, 0x0L), + 4 + ), + 471008 + ); + + // gentest-5163 + assertEqual( + perft( + Board(0x2000019005a000L, 0x4L, 0x2800000L, 0x200100200020000L, 0x0L, 0x8000000000010L, + 0x20000000086a014L, 0x28100392010000L, false, 0, 0x0L), + 4 + ), + 437470 + ); + + // gentest-5164 + assertEqual( + perft( + Board(0x219005a000L, 0x1000L, 0x2800000L, 0x200100200020000L, 0x0L, 0x4000000000010L, + 0x20000000086b010L, 0x4102392010000L, true, 0, 0x0L), + 4 + ), + 600709 + ); + + // gentest-5165 + assertEqual( + perft( + Board(0x219004a000L, 0x1000L, 0x10000000800000L, 0x100100200010000L, 0x0L, 0x4000000000010L, + 0x10000000085b010L, 0x14102390000000L, false, 0, 0x0L), + 4 + ), + 861834 + ); + + // gentest-5166 + assertEqual( + perft( + Board(0x219004a000L, 0x4L, 0x10000000800000L, 0x300200000010000L, 0x0L, 0x4000000000010L, + 0x10000000085a014L, 0x214202190000000L, true, 0, 0x0L), + 4 + ), + 742352 + ); + + // gentest-5167 + assertEqual( + perft( + Board(0x219004a000L, 0x1000L, 0x10000000000020L, 0x300200000010000L, 0x0L, 0x2000000000010L, + 0x10000000005b030L, 0x212202190000000L, false, 0, 0x0L), + 4 + ), + 485717 + ); + + // gentest-5168 + assertEqual( + perft( + Board(0x219004a000L, 0x1000L, 0x10000000000020L, 0x300800000020000L, 0x0L, 0x4000000000010L, + 0x10000000006b030L, 0x214802190000000L, true, 0, 0x0L), + 4 + ), + 772182 + ); + + // gentest-5169 + assertEqual( + perft( + Board(0x219004a000L, 0x8000000L, 0x10000000000020L, 0x300040000010000L, 0x0L, 0x4000000000010L, + 0x10000000805a030L, 0x214042190000000L, false, 0, 0x0L), + 4 + ), + 1362200 + ); + + // gentest-5170 + assertEqual( + perft( + Board(0x219000a000L, 0x8000000L, 0x10000000800000L, 0x100000000050002L, 0x0L, 0x4000000000010L, + 0x10000000881a010L, 0x14002190040002L, true, 0, 0x0L), + 4 + ), + 74534 + ); + + // gentest-5171 + assertEqual( + perft( + Board(0x219000a000L, 0x200000L, 0x80000800000L, 0x100000000050002L, 0x0L, 0x4000000000800L, + 0x100000000a1a800L, 0x4082190040002L, false, 0, 0x0L), + 4 + ), + 836965 + ); + + // gentest-5172 + assertEqual( + perft( + Board(0x219000a000L, 0x40L, 0x80000800000L, 0x100000000050002L, 0x0L, 0x4000000000800L, + 0x10000000081a840L, 0x4082190040002L, true, 0, 0x0L), + 4 + ), + 749775 + ); + + // gentest-5173 + assertEqual( + perft( + Board(0x19000a000L, 0x40L, 0x82000000000L, 0x800000004010002L, 0x0L, 0x4000000000800L, + 0x80000200001a840L, 0x4080194000002L, false, 0, 0x0L), + 4 + ), + 1025098 + ); + + // gentest-5174 + assertEqual( + perft( + Board(0x180002000L, 0x40L, 0x10008000L, 0x800000400010002L, 0x0L, 0x4000000000800L, + 0x800000010012840L, 0x4000580008002L, true, 0, 0x0L), + 4 + ), + 1428552 + ); + + // gentest-5175 + assertEqual( + perft( + Board(0x180002000L, 0x40L, 0x10008000L, 0x800000000020402L, 0x0L, 0x4000000080000L, + 0x8000000100a2040L, 0x4000180008402L, false, 0, 0x0L), + 4 + ), + 628930 + ); + + // gentest-5176 + assertEqual( + perft( + Board(0x180002000L, 0x0L, 0x1010000000L, 0x800020000000440L, 0x0L, 0x4000000080000L, + 0x800020010082000L, 0x4001180000440L, true, 0, 0x0L), + 4 + ), + 1344878 + ); + + // gentest-5177 + assertEqual( + perft( + Board(0x180002000L, 0x0L, 0x1000200000L, 0x802000000000401L, 0x0L, 0x4000000080000L, + 0x802000000282000L, 0x4001180000401L, false, 0, 0x0L), + 4 + ), + 21150 + ); + + // gentest-5178 + assertEqual( + perft( + Board(0x81002000L, 0x0L, 0x1000200000L, 0x10000000000401L, 0x0L, 0x800000000080000L, + 0x10000000282000L, 0x800001081000401L, true, 0, 0x0L), + 4 + ), + 530674 + ); + + // gentest-5179 + assertEqual( + perft( + Board(0x81002000L, 0x0L, 0x1010000000L, 0x10000000000420L, 0x0L, 0x800000000080000L, + 0x10000010082000L, 0x800001081000420L, false, 0, 0x0L), + 4 + ), + 572469 + ); + + // gentest-5180 + assertEqual( + perft( + Board(0x81002000L, 0x0L, 0x800400000L, 0x10000000000440L, 0x0L, 0x800000000080000L, 0x10000800082000L, + 0x800000081400440L, true, 0, 0x0L), + 4 + ), + 749540 + ); + + // gentest-5181 + assertEqual( + perft( + Board(0x81002000L, 0x0L, 0x800400000L, 0x41000000040L, 0x0L, 0x800000000080000L, 0x1800082000L, + 0x800040081400040L, false, 0, 0x0L), + 4 + ), + 658743 + ); + + // gentest-5182 + assertEqual( + perft( + Board(0xa1000000L, 0x0L, 0x800400000L, 0x41000000040L, 0x0L, 0x800000000080000L, 0x1820080000L, + 0x800040081400040L, true, 0, 0x0L), + 4 + ), + 555878 + ); + + // gentest-5183 + assertEqual( + perft( + Board(0xa1000000L, 0x0L, 0x800400000L, 0x1000400000000040L, 0x0L, 0x800000000100000L, + 0x1000000820100000L, 0x800400081400040L, false, 0, 0x0L), + 4 + ), + 48432 + ); + + // gentest-5184 + assertEqual( + perft( + Board(0xa1000000L, 0x0L, 0x400100L, 0x1000020000000040L, 0x0L, 0x4000000100000L, 0x1000000020100100L, + 0x4020081400040L, true, 0, 0x0L), + 4 + ), + 486030 + ); + + // gentest-5185 + assertEqual( + perft( + Board(0xa1000000L, 0x0L, 0x400100L, 0x4200000000000040L, 0x0L, 0x4000000100000L, 0x4000000020100100L, + 0x204000081400040L, false, 0, 0x0L), + 4 + ), + 409376 + ); + + // gentest-5186 + assertEqual( + perft( + Board(0xa1000000L, 0x0L, 0x400100L, 0x4100000000000040L, 0x0L, 0x8000010000000L, 0x4000000030000100L, + 0x108000081400040L, true, 0, 0x0L), + 4 + ), + 382879 + ); + + // gentest-5187 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400100L, 0x300000000000040L, 0x0L, 0x8000000100000L, 0x200000020100100L, + 0x108000080410040L, false, 0, 0x0L), + 4 + ), + 298791 + ); + + // gentest-5188 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400100L, 0x100000200000002L, 0x0L, 0x8000000100000L, 0x220100100L, + 0x108000080410002L, true, 0, 0x0L), + 4 + ), + 578342 + ); + + // gentest-5189 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x100000400000L, 0x100000200000002L, 0x0L, 0x4000008000000L, 0x100228000000L, + 0x104000080410002L, false, 0, 0x0L), + 4 + ), + 632057 + ); + + // gentest-5190 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400100L, 0x1000000200000002L, 0x0L, 0x4000008000000L, 0x228000100L, + 0x1004000080410002L, true, 0, 0x0L), + 4 + ), + 591556 + ); + + // gentest-5191 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400002L, 0x1000000200000000L, 0x0L, 0x8000400000000L, 0x620000002L, + 0x1008000080410000L, false, 0, 0x0L), + 4 + ), + 201130 + ); + + // gentest-5192 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400002L, 0x2000000000000200L, 0x0L, 0x10000400000000L, 0x420000202L, + 0x2010000080410000L, true, 0, 0x0L), + 4 + ), + 299642 + ); + + // gentest-5193 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400000400000L, 0x8000020000000000L, 0x0L, 0x10000400000000L, + 0x420420000000L, 0x8010000080410000L, false, 0, 0x0L), + 4 + ), + 205841 + ); + + // gentest-5194 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400000L, 0x820000000000L, 0x0L, 0x20000400000000L, 0x20420000000L, + 0x20800080410000L, true, 0, 0x0L), + 4 + ), + 125149 + ); + + // gentest-5195 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400000L, 0x2080000000000L, 0x0L, 0x20000400000000L, 0x2000420000000L, + 0x20080080410000L, false, 0, 0x0L), + 4 + ), + 38143 + ); + + // gentest-5196 + assertEqual( + perft( + Board(0xa0010000L, 0x0L, 0x400000L, 0x80000020000L, 0x0L, 0x100400000000L, 0x420020000L, + 0x180080410000L, true, 0, 0x0L), + 4 + ), + 92027 + ); + + // gentest-5197 + assertEqual( + perft( + Board(0x2080010000L, 0x0L, 0x400000L, 0x2080000000000L, 0x0L, 0x200400000000L, 0x2002400000000L, + 0x280080410000L, false, 0, 0x0L), + 4 + ), + 113023 + ); + + // gentest-5198 + assertEqual( + perft( + Board(0x2080010000L, 0x0L, 0x400000L, 0x2000008000000L, 0x0L, 0x220000000000L, 0x2022000000000L, + 0x200088410000L, true, 0, 0x0L), + 4 + ), + 129515 + ); + + // gentest-5199 + assertEqual( + perft( + Board(0x2080010000L, 0x0L, 0x2000L, 0x8000004L, 0x0L, 0x220000000000L, 0x22000000004L, + 0x200088012000L, false, 0, 0x0L), + 4 + ), + 121555 + ); + + // gentest-5200 + assertEqual( + perft( + Board(0x2080010000L, 0x0L, 0x40L, 0x800000004L, 0x0L, 0x240000000000L, 0x42000000004L, + 0x200880010040L, true, 0, 0x0L), + 4 + ), + 106148 + ); + + def batch13(): Unit = + // gentest-5201 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x40L, 0x2000000008L, 0x0L, 0x240000000000L, 0x40000000008L, 0x202080010040L, + false, 0, 0x0L), + 4 + ), + 174616 + ); + + // gentest-5202 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x8000L, 0x8000000008L, 0x0L, 0x220000000000L, 0x20000000008L, + 0x208080018000L, true, 0, 0x0L), + 4 + ), + 162065 + ); + + // gentest-5203 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x8000L, 0x8000000004L, 0x0L, 0x42000000000L, 0x40000000004L, 0xa080018000L, + false, 0, 0x0L), + 4 + ), + 109143 + ); + + // gentest-5204 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x40000L, 0x8000000004L, 0x0L, 0x2200000000L, 0x200000004L, 0xa080050000L, + true, 0, 0x0L), + 4 + ), + 110347 + ); + + // gentest-5205 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x8000000L, 0x8000000010L, 0x0L, 0x2200000000L, 0x200000010L, 0xa088010000L, + false, 0, 0x0L), + 4 + ), + 154284 + ); + + // gentest-5206 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x8000000L, 0x8000000000000010L, 0x0L, 0x440000000000L, 0x40000000010L, + 0x8000400088010000L, true, 0, 0x0L), + 4 + ), + 272790 + ); + + // gentest-5207 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x0L, 0x8000200000000000L, 0x0L, 0x440000000000L, 0x240000000000L, + 0x8000400080010000L, false, 0, 0x0L), + 4 + ), + 18391 + ); + + // gentest-5208 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x0L, 0x20800000000000L, 0x0L, 0x48000000000L, 0x20040000000000L, + 0x808080010000L, true, 0, 0x0L), + 4 + ), + 21051 + ); + + // gentest-5209 + assertEqual( + perft( + Board(0x80010000L, 0x0L, 0x0L, 0xa000000000000000L, 0x0L, 0x48000000000L, 0x2000040000000000L, + 0x8000008080010000L, false, 0, 0x0L), + 4 + ), + 45136 + ); + + // gentest-5210 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5211 + assertEqual( + perft( + Board(0xbf40000020df00L, 0x4200000000040040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x24dffdL, 0xffbf400000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 235576 + ); + + // gentest-5212 + assertEqual( + perft( + Board(0x9f60000020df00L, 0x4200000800000040L, 0x440000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x80020dffdL, 0xdfdf600000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 274963 + ); + + // gentest-5213 + assertEqual( + perft( + Board(0x9f600040308f00L, 0x4200000800000040L, 0x440000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x2000000000000010L, 0x840308ffdL, 0xefdf600000000000L, false, 0, 0x81L), + 4 + ), + 455024 + ); + + // gentest-5214 + assertEqual( + perft( + Board(0x8b601440b00f00L, 0x4200000800000040L, 0x440000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x2000000000000010L, 0x840b00ffdL, 0xefcb601400000000L, true, 0, 0x81L), + 4 + ), + 542753 + ); + + // gentest-5215 + assertEqual( + perft( + Board(0x8b601440b00f00L, 0x4000040800000040L, 0x440000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x2000000000000010L, 0x840b00ffdL, 0xedcb641400000000L, false, 0, 0x81L), + 4 + ), + 692812 + ); + + // gentest-5216 + assertEqual( + perft( + Board(0x8b601440b00f00L, 0x4000020002000040L, 0x440000000000024L, 0x8100000000000081L, + 0x4000000000008L, 0x2000000000000010L, 0x20040b00ffdL, 0xe5cf601402000000L, true, 0, 0x81L), + 4 + ), + 646865 + ); + + // gentest-5217 + assertEqual( + perft( + Board(0x8b601440b00f00L, 0x4000020000080040L, 0x440000000000024L, 0x8100000000000081L, + 0x4000000000008L, 0x2000000000001000L, 0x20040b01fedL, 0xe5cf601400080000L, false, 0, 0x0L), + 4 + ), + 364171 + ); + + // gentest-5218 + assertEqual( + perft( + Board(0x8b205440b00f00L, 0x4100000000000050L, 0x440000000000024L, 0x8000000000000081L, + 0x4000000000008L, 0x2000000000001000L, 0x100000040b01fedL, 0xe4cf205400000010L, true, 0, 0x0L), + 4 + ), + 293325 + ); + + // gentest-5219 + assertEqual( + perft( + Board(0x83205c40b40b00L, 0x4100000000000040L, 0x440000000000024L, 0x8000000000000081L, + 0x4000000000010L, 0x2000000000001000L, 0x100000040b41bf5L, 0xe4c7205c00000000L, false, 0, 0x0L), + 4 + ), + 439525 + ); + + // gentest-5220 + assertEqual( + perft( + Board(0x83205c40b40b00L, 0x4100000000000040L, 0x440000000000024L, 0x8000000000000081L, + 0x8000000000008L, 0x2000000000001000L, 0x100000040b41bedL, 0xe4cb205c00000000L, true, 0, 0x0L), + 4 + ), + 424156 + ); + + // gentest-5221 + assertEqual( + perft( + Board(0x83205c42b40900L, 0x4100000000000040L, 0x440000000004004L, 0x8000000000000081L, + 0x20000000000008L, 0x2000000000001000L, 0x100000042b459cdL, 0xe4e3205c00000000L, false, 0, 0x0L), + 4 + ), + 528999 + ); + + // gentest-5222 + assertEqual( + perft( + Board(0x83205c42b40900L, 0x4100000000000040L, 0x400800000014000L, 0x8000000000000081L, + 0x20000000000008L, 0x10000000001000L, 0x100000042b559c9L, 0xc4b3a05c00000000L, true, 0, 0x0L), + 4 + ), + 544442 + ); + + // gentest-5223 + assertEqual( + perft( + Board(0x83205c42b40900L, 0x4100000000000040L, 0x802000014000L, 0x8000000000000081L, 0x20000000000010L, + 0x10000000002000L, 0x100000042b569d1L, 0xc0b3a07c00000000L, false, 0, 0x0L), + 4 + ), + 678405 + ); + + // gentest-5224 + assertEqual( + perft( + Board(0x83205c42b40900L, 0x4000020000000040L, 0x800000014400L, 0x8000000000000081L, + 0x1000000000000010L, 0x10000000002000L, 0x20042b569d1L, 0xd093a05c00000400L, true, 0, 0x0L), + 4 + ), + 941007 + ); + + // gentest-5225 + assertEqual( + perft( + Board(0x83205c42b40900L, 0x4000020000000040L, 0x800000014400L, 0x8000000000008001L, + 0x1000000000000010L, 0x20000000001000L, 0x20042b5d951L, 0xd0a3a05c00000400L, false, 0, 0x0L), + 4 + ), + 971318 + ); + + // gentest-5226 + assertEqual( + perft( + Board(0x82205d52a40900L, 0x4000020000000040L, 0x800000014008L, 0x8000000000008001L, + 0x1000000000000010L, 0x20000000001000L, 0x20052a5d951L, 0xd0a2a05d00000008L, true, 0, 0x0L), + 4 + ), + 170730 + ); + + // gentest-5227 + assertEqual( + perft( + Board(0x82205d52a40900L, 0x4000000004000040L, 0x800000014000L, 0x8000000000008008L, 0x200000010L, + 0x20000000001000L, 0x56a5d958L, 0xc0a2a05f00000000L, false, 0, 0x0L), + 4 + ), + 398043 + ); + + // gentest-5228 + assertEqual( + perft( + Board(0x82205542b40900L, 0x4000000004000040L, 0x800000014000L, 0x8000000000008008L, 0x200400000L, + 0x20000000001000L, 0x46e5d948L, 0xc0a2a05700100000L, true, 0, 0x0L), + 4 + ), + 439828 + ); + + // gentest-5229 + assertEqual( + perft( + Board(0x82205443b40900L, 0x4000000004000040L, 0x800000014000L, 0x8000000000008010L, 0x200002000L, + 0x20000000001000L, 0x46a5f950L, 0xc0a2a05601100000L, false, 0, 0x0L), + 4 + ), + 372350 + ); + + // gentest-5230 + assertEqual( + perft( + Board(0x82205043b40900L, 0x4000000004000040L, 0x2000000000010080L, 0x8000000000008010L, 0x200002000L, + 0x20000000001000L, 0x44a5b9d0L, 0xe0a2205203100000L, true, 0, 0x0L), + 4 + ), + 624990 + ); + + // gentest-5231 + assertEqual( + perft( + Board(0x2209043b40900L, 0x4000000004000040L, 0x2000000000010080L, 0x8000000000008010L, 0x4200000000L, + 0x20000000001000L, 0x4044a599d0L, 0xe022209203100000L, false, 0, 0x0L), + 4 + ), + 977428 + ); + + // gentest-5232 + assertEqual( + perft( + Board(0x200d063940900L, 0x4000000004000040L, 0x2000000000010080L, 0x8000000000008010L, 0x100000000L, + 0x20000000001000L, 0x648599d0L, 0xe02200d103100000L, true, 0, 0x0L), + 4 + ), + 1423234 + ); + + // gentest-5233 + assertEqual( + perft( + Board(0x200d063940900L, 0x4000000004000040L, 0x2000000010010000L, 0x8000000000008020L, + 0x4000000000000L, 0x20000000001000L, 0x74859960L, 0xe02600d003100000L, false, 0, 0x0L), + 4 + ), + 2169874 + ); + + // gentest-5234 + assertEqual( + perft( + Board(0x200d063840900L, 0x4000000004000040L, 0x10000010010000L, 0x80000000000000a0L, 0x4000000000000L, + 0x20000000001000L, 0x748511e0L, 0xc03600d003000800L, true, 0, 0x0L), + 4 + ), + 1719296 + ); + + // gentest-5235 + assertEqual( + perft( + Board(0x200f043840900L, 0x4000000004000040L, 0x800000000014000L, 0x80000000000000a0L, + 0x4000000000000L, 0x20000000001000L, 0x20448551e0L, 0xc82600d003000800L, false, 0, 0x0L), + 4 + ), + 1071320 + ); + + // gentest-5236 + assertEqual( + perft( + Board(0x200e053840900L, 0x4000000004000040L, 0x10000000014000L, 0x8000000000000088L, 0x4000000000000L, + 0x20000000001000L, 0x20448551c8L, 0xc03600c013000800L, true, 0, 0x0L), + 4 + ), + 950621 + ); + + // gentest-5237 + assertEqual( + perft( + Board(0x200e043840900L, 0x4000020000000040L, 0x10000010010000L, 0x8000000000000088L, 0x4000000000000L, + 0x40000000001000L, 0x220508511c8L, 0xc05600c003000800L, false, 0, 0x0L), + 4 + ), + 1111699 + ); + + // gentest-5238 + assertEqual( + perft( + Board(0x200e043840900L, 0x4100000000000040L, 0x10000010010000L, 0x8000000000000088L, + 0x800000000000000L, 0x800000001000L, 0x1000020508511c8L, 0xc81280c003000800L, true, 0, 0x0L), + 4 + ), + 750929 + ); + + // gentest-5239 + assertEqual( + perft( + Board(0x200e043840900L, 0x4100000000200000L, 0x10000010010000L, 0x8000000000000081L, + 0x800000000000000L, 0x40000000001000L, 0x100002050a51181L, 0xc85200c003000800L, false, 0, 0x0L), + 4 + ), + 1790842 + ); + + // gentest-5240 + assertEqual( + perft( + Board(0x200e043840100L, 0x4100000000200000L, 0x400090000L, 0x8000000000000081L, 0x800000000000008L, + 0x40000000001000L, 0x100002040ad1181L, 0xc84200c403000008L, true, 0, 0x0L), + 4 + ), + 153041 + ); + + // gentest-5241 + assertEqual( + perft( + Board(0x200e043840100L, 0x4100000080000000L, 0x1000000090000L, 0x8000000000000081L, + 0x800000000000000L, 0x40000000000008L, 0x1000020c08d0189L, 0xc84300c003000000L, false, 0, 0x0L), + 4 + ), + 947382 + ); + + // gentest-5242 + assertEqual( + perft( + Board(0x200e043840100L, 0x4100000080000000L, 0x1000000080004L, 0x8000000000000081L, 0x8000000L, + 0x800000000008L, 0x1000020c08c018dL, 0xc00380c00b000000L, true, 0, 0x0L), + 4 + ), + 679545 + ); + + // gentest-5243 + assertEqual( + perft( + Board(0x200e047800100L, 0x4100000080000000L, 0x1000020080000L, 0x8000000000000081L, 0x40000000000000L, + 0x800000000008L, 0x1000020e4880189L, 0xc04380c003000000L, false, 0, 0x0L), + 4 + ), + 927833 + ); + + // gentest-5244 + assertEqual( + perft( + Board(0x200e047800100L, 0x4100000080000000L, 0x200000020080000L, 0x8000000000000021L, + 0x4000000000000L, 0x800000000008L, 0x1000020e4880129L, 0xc20680c003000000L, true, 0, 0x0L), + 4 + ), + 808322 + ); + + // gentest-5245 + assertEqual( + perft( + Board(0x200e047800100L, 0x4100000080000000L, 0x200080000080000L, 0x8000000000000021L, + 0x40000000000000L, 0x800000000008L, 0x1000820c4880129L, 0xc24280c003000000L, false, 0, 0x0L), + 4 + ), + 769593 + ); + + // gentest-5246 + assertEqual( + perft( + Board(0x2e047800100L, 0x4100000080000000L, 0x210000000080000L, 0x80000000000021L, 0x40000000000000L, + 0x800000000008L, 0x1100020c4880129L, 0x42c082c003000000L, true, 0, 0x0L), + 4 + ), + 703438 + ); + + // gentest-5247 + assertEqual( + perft( + Board(0x2e046810100L, 0x4100000080000000L, 0x210000000001000L, 0x80000000200001L, 0x40000000000000L, + 0x800000000008L, 0x1100020c4a01109L, 0x42c082c002010000L, false, 0, 0x0L), + 4 + ), + 500496 + ); + + // gentest-5248 + assertEqual( + perft( + Board(0x2a046810100L, 0x100200080000000L, 0x210000000001000L, 0x80000000200001L, 0x40000000000000L, + 0x800000000008L, 0x11000a084a01109L, 0x2c0a20042010000L, true, 0, 0x0L), + 4 + ), + 711650 + ); + + // gentest-5249 + assertEqual( + perft( + Board(0x2a046810100L, 0x1100000080000000L, 0x210000000000020L, 0x80000000200001L, 0x40000000000000L, + 0x800000000004L, 0x11000a084a00125L, 0x12c0820042010000L, false, 0, 0x0L), + 4 + ), + 594848 + ); + + // gentest-5250 + assertEqual( + perft( + Board(0x2a046810100L, 0x140000080000000L, 0x210000000000020L, 0x80000000200001L, 0x200L, + 0x800000000008L, 0x11000a084a00129L, 0x2c0820042010200L, true, 0, 0x0L), + 4 + ), + 610219 + ); + + // gentest-5251 + assertEqual( + perft( + Board(0x2a046810100L, 0x140000080000000L, 0x210000000000020L, 0x80000000000801L, 0x8000000L, + 0x800000000008L, 0x11000a084800929L, 0x2c082004a010000L, false, 0, 0x0L), + 4 + ), + 867262 + ); + + // gentest-5252 + assertEqual( + perft( + Board(0x2a044830100L, 0x140000080000000L, 0x210000000000020L, 0x80000000000801L, 0x800000000L, + 0x800000000400L, 0x11000a084800d21L, 0x2c0820840030000L, true, 0, 0x0L), + 4 + ), + 254125 + ); + + // gentest-5253 + assertEqual( + perft( + Board(0x2a044830100L, 0x140000000200000L, 0x210000000000020L, 0x80000000000801L, 0x20000000000000L, + 0x800000000002L, 0x11000a004a00923L, 0x2e0820040030000L, false, 0, 0x0L), + 4 + ), + 1105721 + ); + + // gentest-5254 + assertEqual( + perft( + Board(0x22044830100L, 0x140000000200000L, 0x10000000088000L, 0x80000000000801L, 0x8000000000L, + 0x800000000002L, 0x110002004a80903L, 0xc0828040038000L, true, 0, 0x0L), + 4 + ), + 658683 + ); + + // gentest-5255 + assertEqual( + perft( + Board(0x22044020100L, 0x140000000200000L, 0x1000090000L, 0x80000000000801L, 0x8000000000L, + 0x800000000002L, 0x100002044290903L, 0xc0829000020000L, false, 0, 0x0L), + 4 + ), + 747147 + ); + + // gentest-5256 + assertEqual( + perft( + Board(0x22044020100L, 0x140000000200000L, 0x98000L, 0x80000000000401L, 0x4000000000L, 0x800000000002L, + 0x100002044290503L, 0xc0824000028000L, true, 0, 0x0L), + 4 + ), + 670460 + ); + + // gentest-5257 + assertEqual( + perft( + Board(0x220044020100L, 0x140000000200000L, 0x80000088000L, 0x80000000000401L, 0x800L, 0x800000000002L, + 0x100280044280503L, 0xc0820000028800L, false, 0, 0x0L), + 4 + ), + 776825 + ); + + // gentest-5258 + assertEqual( + perft( + Board(0x220044020100L, 0x140000000000000L, 0x80008080000L, 0x80000000000401L, 0x800L, 0x800000000002L, + 0x100280044080503L, 0xc0820008020800L, true, 0, 0x0L), + 4 + ), + 709254 + ); + + // gentest-5259 + assertEqual( + perft( + Board(0x200244020100L, 0x140000000000000L, 0x1008080000L, 0x80000000040001L, 0x800L, 0x800000000002L, + 0x1002010440c0103L, 0xc0800208020800L, false, 0, 0x0L), + 4 + ), + 500163 + ); + + // gentest-5260 + assertEqual( + perft( + Board(0x200046000300L, 0x140000000000000L, 0x8088000L, 0x80000000040001L, 0x800L, 0x800000000002L, + 0x1002000440c8103L, 0xc080000a000a00L, true, 0, 0x0L), + 4 + ), + 590102 + ); + + // gentest-5261 + assertEqual( + perft( + Board(0x200046000300L, 0x140000000000000L, 0x4000000180000L, 0x80000000000005L, 0x800L, + 0x800000000002L, 0x104200044080107L, 0xc0800002100a00L, false, 0, 0x0L), + 4 + ), + 588662 + ); + + // gentest-5262 + assertEqual( + perft( + Board(0x200046000300L, 0x100000000000000L, 0x4002000000040L, 0x80000000000005L, 0x800L, + 0x800000000002L, 0x104202044000107L, 0x80800002000a40L, true, 0, 0x0L), + 4 + ), + 941651 + ); + + // gentest-5263 + assertEqual( + perft( + Board(0x200046010000L, 0x100000000000001L, 0x4000000000440L, 0x80000000000004L, 0x800L, + 0x800000000002L, 0x104200044010406L, 0x80800002000841L, false, 0, 0x0L), + 4 + ), + 876176 + ); + + // gentest-5264 + assertEqual( + perft( + Board(0x200047000000L, 0x100000000000001L, 0x2004000000000400L, 0x80000000000004L, 0x800L, + 0x800000000002L, 0x104200045000406L, 0x2080800002000801L, true, 0, 0x0L), + 4 + ), + 654713 + ); + + // gentest-5265 + assertEqual( + perft( + Board(0x200047000000L, 0x100000000000001L, 0x2004000000020000L, 0x80000000000020L, 0x80000000000L, + 0x800000000002L, 0x104200045020022L, 0x2080880002000001L, false, 0, 0x0L), + 4 + ), + 600349 + ); + + // gentest-5266 + assertEqual( + perft( + Board(0x200047000000L, 0x100000000000400L, 0x2000020000020000L, 0x80000000000020L, 0x10000000000L, + 0x800000000002L, 0x100220045020022L, 0x2080810002000400L, true, 0, 0x0L), + 4 + ), + 578637 + ); + + // gentest-5267 + assertEqual( + perft( + Board(0x200046000000L, 0x100000000000400L, 0x2000020000000100L, 0x80000000000020L, 0x1000000L, + 0x800000000004L, 0x100220044000124L, 0x2080800003000400L, false, 0, 0x0L), + 4 + ), + 583521 + ); + + // gentest-5268 + assertEqual( + perft( + Board(0x200046000000L, 0x100000000000400L, 0x2000000000100100L, 0x2000000000020L, 0x1000000L, + 0x400000000004L, 0x100200044100124L, 0x2002400003000400L, true, 0, 0x0L), + 4 + ), + 880676 + ); + + // gentest-5269 + assertEqual( + perft( + Board(0x200046000000L, 0x100000000000001L, 0x2000000000100100L, 0x2000000000020L, 0x1000000L, + 0x400000001000L, 0x100200044101120L, 0x2002400003000001L, false, 0, 0x0L), + 4 + ), + 891351 + ); + + // gentest-5270 + assertEqual( + perft( + Board(0x200046000000L, 0x400L, 0x2000000000100100L, 0x2000000000004L, 0x100000000000000L, + 0x400000001000L, 0x200044101104L, 0x2102400002000400L, true, 0, 0x0L), + 4 + ), + 891855 + ); + + // gentest-5271 + assertEqual( + perft( + Board(0x200046000000L, 0x400L, 0x80000100100L, 0x2000000000020L, 0x100000000000000L, 0x400000080000L, + 0x200044180120L, 0x102480002000400L, false, 0, 0x0L), + 4 + ), + 1169944 + ); + + // gentest-5272 + assertEqual( + perft( + Board(0x200046000000L, 0x100000L, 0x1000000100L, 0x2000020000000L, 0x100000000000000L, + 0x400000080000L, 0x200064080100L, 0x102401002100000L, true, 0, 0x0L), + 4 + ), + 445085 + ); + + // gentest-5273 + assertEqual( + perft( + Board(0x200046000000L, 0x100000L, 0x1000000002L, 0x2000008000000L, 0x100000000000000L, + 0x800000080000L, 0x20004c080002L, 0x102801002100000L, false, 0, 0x0L), + 4 + ), + 407315 + ); + + // gentest-5274 + assertEqual( + perft( + Board(0x200046000000L, 0x100000L, 0x400002L, 0x40000010000000L, 0x100000000000000L, 0x800000080000L, + 0x200054080002L, 0x140800002500000L, true, 0, 0x0L), + 4 + ), + 529160 + ); + + // gentest-5275 + assertEqual( + perft( + Board(0x200046000000L, 0x100000L, 0x80000000002L, 0x40000010000000L, 0x100000000000000L, + 0x800000080000L, 0x200054080002L, 0x140880002100000L, false, 0, 0x0L), + 4 + ), + 576795 + ); + + // gentest-5276 + assertEqual( + perft( + Board(0x200046000000L, 0x100000L, 0x8002L, 0x40000010000000L, 0x1000000L, 0x800000000800L, + 0x200054000802L, 0x40800003108000L, true, 0, 0x0L), + 4 + ), + 495611 + ); + + // gentest-5277 + assertEqual( + perft( + Board(0x200442000000L, 0x0L, 0x8002L, 0x40000010000000L, 0x1000000L, 0x80000000100000L, + 0x200450100002L, 0xc0000003008000L, false, 0, 0x0L), + 4 + ), + 299406 + ); + + // gentest-5278 + assertEqual( + perft( + Board(0x20000442000000L, 0x0L, 0x8002L, 0x40000010000000L, 0x1L, 0x800000100000L, 0x20000450100002L, + 0x40800002008001L, true, 0, 0x0L), + 4 + ), + 364760 + ); + + // gentest-5279 + assertEqual( + perft( + Board(0x20000442000000L, 0x0L, 0x80000000002L, 0x40000004000000L, 0x1L, 0x800000000800L, + 0x20000444000802L, 0x40880002000001L, false, 0, 0x0L), + 4 + ), + 460493 + ); + + // gentest-5280 + assertEqual( + perft( + Board(0x20000442000000L, 0x0L, 0x80000000002L, 0x40000000000400L, 0x1000L, 0x800000000800L, + 0x20000440000c02L, 0x40880002001000L, true, 0, 0x0L), + 4 + ), + 23945 + ); + + // gentest-5281 + assertEqual( + perft( + Board(0x20000442000000L, 0x0L, 0x20000002L, 0x40000000000400L, 0x0L, 0x800000002000L, + 0x20000440002402L, 0x40800022000000L, false, 0, 0x0L), + 4 + ), + 139935 + ); + + // gentest-5282 + assertEqual( + perft( + Board(0x20000442000000L, 0x0L, 0x200000000000002L, 0x40000000000004L, 0x0L, 0x4000002000L, + 0x20000440002006L, 0x240004002000000L, true, 0, 0x0L), + 4 + ), + 218506 + ); + + // gentest-5283 + assertEqual( + perft( + Board(0x20000442000000L, 0x0L, 0x200000010000000L, 0x4000000000000040L, 0x0L, 0x4000002000L, + 0x20000450002040L, 0x4200004002000000L, false, 0, 0x0L), + 4 + ), + 381855 + ); + + // gentest-5284 + assertEqual( + perft( + Board(0x20040042000000L, 0x0L, 0x10400000L, 0x1000000000000040L, 0x0L, 0x4000002000L, + 0x20040050002040L, 0x1000004002400000L, true, 0, 0x0L), + 4 + ), + 81503 + ); + + // gentest-5285 + assertEqual( + perft( + Board(0x24000042000000L, 0x0L, 0x10400000L, 0x100000000000040L, 0x0L, 0x4000001000L, + 0x24000050001040L, 0x100004002400000L, false, 0, 0x0L), + 4 + ), + 755103 + ); + + // gentest-5286 + assertEqual( + perft( + Board(0x24000042000000L, 0x0L, 0x8000002000000000L, 0x100000000000040L, 0x0L, 0x4000001000L, + 0x24002040001040L, 0x8100004002000000L, true, 0, 0x0L), + 4 + ), + 578838 + ); + + // gentest-5287 + assertEqual( + perft( + Board(0x20000042000000L, 0x0L, 0x3000000000L, 0x100000000000004L, 0x400000000000000L, 0x4000001000L, + 0x420002040001004L, 0x100005002000000L, false, 0, 0x0L), + 4 + ), + 1330277 + ); + + // gentest-5288 + assertEqual( + perft( + Board(0x20000042000000L, 0x0L, 0x3000000000L, 0x1000004L, 0x4000000L, 0x80001000L, 0x20002044001004L, + 0x1083000000L, true, 0, 0x0L), + 4 + ), + 1065045 + ); + + // gentest-5289 + assertEqual( + perft( + Board(0x20000042000000L, 0x0L, 0x8000002000000000L, 0x1000400L, 0x100000000000L, 0x80001000L, + 0x20102040001400L, 0x8000000083000000L, false, 0, 0x0L), + 4 + ), + 663792 + ); + + // gentest-5290 + assertEqual( + perft( + Board(0x20000042000000L, 0x0L, 0x8000002000000000L, 0x4040000000000L, 0x100000000000L, 0x80001000L, + 0x20142040001000L, 0x8004000082000000L, true, 0, 0x0L), + 4 + ), + 602333 + ); + + // gentest-5291 + assertEqual( + perft( + Board(0x20000042000000L, 0x0L, 0x10000200L, 0x4040000000000L, 0x4000000L, 0x80001000L, + 0x20040054001000L, 0x4000082000200L, false, 0, 0x0L), + 4 + ), + 825571 + ); + + // gentest-5292 + assertEqual( + perft( + Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4800000000000L, 0x4000000L, 0x40001000L, + 0x20800014001000L, 0x4000042000200L, true, 0, 0x0L), + 4 + ), + 812075 + ); + + // gentest-5293 + assertEqual( + perft( + Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4800000000000L, 0x100000000L, 0x20001000L, + 0x20800110001000L, 0x4000022000200L, false, 0, 0x0L), + 4 + ), + 1193342 + ); + + // gentest-5294 + assertEqual( + perft( + Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4200000000000L, 0x100000000L, 0x80001000L, + 0x20200110001000L, 0x4000082000200L, true, 0, 0x0L), + 4 + ), + 1145095 + ); + + // gentest-5295 + assertEqual( + perft( + Board(0x20000002000000L, 0x0L, 0x10000200L, 0x4000020000000L, 0x100000000L, 0x40001000L, + 0x20000130001000L, 0x4000042000200L, false, 0, 0x0L), + 4 + ), + 121860 + ); + + // gentest-5296 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5297 + assertEqual( + perft( + Board(0x7f00800008f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x8fff7L, 0xff7f008000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 419311 + ); + + // gentest-5298 + assertEqual( + perft( + Board(0x7900860008f700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000100000L, 0x1000000000000010L, 0x18f7f7L, 0xff79008600000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 719243 + ); + + // gentest-5299 + assertEqual( + perft( + Board(0x79008680483700L, 0x4200000000000042L, 0x2400000000000024L, 0x180000000000081L, + 0x800000000100000L, 0x1000000000000010L, 0x805837f7L, 0x7ff9008600000000L, false, 0, + 0x100000000000081L), + 4 + ), + 634916 + ); + + // gentest-5300 + assertEqual( + perft( + Board(0x79008280483700L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000400000000L, 0x1000000000000010L, 0x4804837f7L, 0xfd79018200000000L, true, 0, + 0x100000000000081L), + 4 + ), + 1046990 + ); + + // gentest-5301 + assertEqual( + perft( + Board(0x59208280483700L, 0x4000010000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x804000000000000L, 0x1000000000000010L, 0x4000080c837b7L, 0xfd59218200000000L, false, 0, + 0x100000000000081L), + 4 + ), + 667856 + ); + + // gentest-5302 + assertEqual( + perft( + Board(0x51288280483700L, 0x4000014000000002L, 0x2400000000000024L, 0x8200000000000081L, + 0x804000000000000L, 0x1000000000000010L, 0x40040804837b7L, 0xfe51298200000000L, true, 0, 0x81L), + 4 + ), + 1079349 + ); + + // gentest-5303 + assertEqual( + perft( + Board(0x51288280582700L, 0x4000010010000002L, 0x2000000040000024L, 0x8200000000000081L, + 0x804000000000000L, 0x1000000000000010L, 0x40000905827b7L, 0xfa51298240000000L, false, 0, 0x81L), + 4 + ), + 1140401 + ); + + // gentest-5304 + assertEqual( + perft( + Board(0x11688284582300L, 0x4000010010000002L, 0x2000000040000024L, 0x8200000000000081L, + 0x4000000000000L, 0x1000000000000010L, 0x945823b7L, 0xf215698240000000L, true, 0, 0x81L), + 4 + ), + 898038 + ); + + // gentest-5305 + assertEqual( + perft( + Board(0x1168828e502100L, 0x4000000410000002L, 0x2000000040000024L, 0x8200000000000081L, + 0x4000000000000L, 0x1000000000000010L, 0x9e5021b7L, 0xf215688640000000L, false, 0, 0x81L), + 4 + ), + 1321161 + ); + + // gentest-5306 + assertEqual( + perft( + Board(0x1168868c502100L, 0x4000000010000002L, 0x2008000000000024L, 0x8200000000000081L, + 0x40000000000L, 0x1000000000000010L, 0x49c5021b7L, 0xf2196c8200000000L, true, 0, 0x81L), + 4 + ), + 1004309 + ); + + // gentest-5307 + assertEqual( + perft( + Board(0x1168868c502100L, 0x800010010000L, 0x2008000000000024L, 0x8200000000000041L, 0x40000000000L, + 0x1000000000000010L, 0x49c512175L, 0xb219ec8200000000L, false, 0, 0x1L), + 4 + ), + 973239 + ); + + // gentest-5308 + assertEqual( + perft( + Board(0x11688e84502100L, 0x800010010000L, 0x2008000000000024L, 0x8100000000000041L, 0x40000000000L, + 0x20000000000010L, 0xc94512175L, 0xa139ec8200000000L, true, 0, 0x1L), + 4 + ), + 771397 + ); + + // gentest-5309 + assertEqual( + perft( + Board(0x10698e84502100L, 0x800000050000L, 0x2008000000001004L, 0x8100000000000041L, 0x40000000000L, + 0x20000000000010L, 0xc84553155L, 0xa138ed8200000000L, false, 0, 0x1L), + 4 + ), + 1047073 + ); + + // gentest-5310 + assertEqual( + perft( + Board(0x10698e84502100L, 0x800000050000L, 0x240000000000000cL, 0x8001000000000041L, 0x40000000000L, + 0x20000000000010L, 0xc8455215dL, 0xa431ed8200000000L, true, 0, 0x1L), + 4 + ), + 1105171 + ); + + // gentest-5311 + assertEqual( + perft( + Board(0x10698c84502100L, 0x4000000200010000L, 0x240000000000000cL, 0x8001000000000041L, + 0x40000000000L, 0x20000000000800L, 0xe8451294dL, 0xe4316d8000000000L, false, 0, 0x0L), + 4 + ), + 909645 + ); + + // gentest-5312 + assertEqual( + perft( + Board(0x10492c84502100L, 0x4000000200010000L, 0x2400008000000004L, 0x8001000000000041L, + 0x100000000000000L, 0x20000000000800L, 0x8e84512945L, 0xe531492000000000L, true, 0, 0x0L), + 4 + ), + 642093 + ); + + // gentest-5313 + assertEqual( + perft( + Board(0x10492c84502100L, 0x4000000200010000L, 0x2400000000001200L, 0x8001000000000041L, + 0x100000000000000L, 0x40000000000800L, 0xe84513b41L, 0xe551492000000000L, false, 0, 0x0L), + 4 + ), + 214474 + ); + + // gentest-5314 + assertEqual( + perft( + Board(0x10016c84502100L, 0x4000080000010000L, 0x2400000000001200L, 0x8001000000000041L, + 0x100000000000000L, 0x80000000000800L, 0x80c84513b41L, 0xe591016000000000L, true, 0, 0x0L), + 4 + ), + 1188227 + ); + + // gentest-5315 + assertEqual( + perft( + Board(0x57884700100L, 0x4000080000010000L, 0x2400000000001200L, 0x8001000000000041L, + 0x100000000000000L, 0x80000000000800L, 0xc0884711b41L, 0xe581017000000000L, false, 0, 0x0L), + 4 + ), + 1251285 + ); + + // gentest-5316 + assertEqual( + perft( + Board(0x57884700100L, 0x4000080000010000L, 0x2400000000001200L, 0x8004000000000041L, + 0x100000000000000L, 0x80000000080000L, 0xc0884791341L, 0xe584017000000000L, true, 0, 0x0L), + 4 + ), + 1140892 + ); + + // gentest-5317 + assertEqual( + perft( + Board(0x57884700100L, 0x4000080000010000L, 0x2400000008001000L, 0x8001000000000050L, + 0x100000000000000L, 0x80000000080000L, 0xc088c791150L, 0xe581017000000000L, false, 0, 0x0L), + 4 + ), + 1023811 + ); + + // gentest-5318 + assertEqual( + perft( + Board(0x558a4700100L, 0x4000080000010000L, 0x2400000000001001L, 0x8002000000000050L, + 0x100000000000000L, 0x80000000080000L, 0xc0884791151L, 0xe582015020000000L, true, 0, 0x0L), + 4 + ), + 1436076 + ); + + // gentest-5319 + assertEqual( + perft( + Board(0x20158a4700100L, 0x10002000010000L, 0x2400000000001001L, 0x8000000000000050L, + 0x100000000000000L, 0x80000000080000L, 0x2002884791151L, 0xa590015020000000L, false, 0, 0x0L), + 4 + ), + 890825 + ); + + // gentest-5320 + assertEqual( + perft( + Board(0x15884700100L, 0x10002000010000L, 0x2202000000001001L, 0x8000000000000050L, 0x100000000000000L, + 0x80000000080000L, 0x200002884391151L, 0xa192015000400000L, true, 0, 0x0L), + 4 + ), + 695804 + ); + + // gentest-5321 + assertEqual( + perft( + Board(0x15884700100L, 0x400002000010000L, 0x2202000000000401L, 0x8000000000000050L, + 0x100000000000000L, 0x80000000080000L, 0x200002884390551L, 0xa582015000400000L, false, 0, 0x0L), + 4 + ), + 780083 + ); + + // gentest-5322 + assertEqual( + perft( + Board(0x11884700100L, 0x400002000010000L, 0x202080000000401L, 0x8000000000000050L, 0x100000000000000L, + 0x80000000001000L, 0x200002804311551L, 0x8582091080400000L, true, 0, 0x0L), + 4 + ), + 629215 + ); + + // gentest-5323 + assertEqual( + perft( + Board(0x1984700100L, 0x400002200000000L, 0x202080000000401L, 0x8000000000000030L, 0x100000000000000L, + 0x80000000001000L, 0x200002a04301531L, 0x8582081180400000L, false, 0, 0x0L), + 4 + ), + 980245 + ); + + // gentest-5324 + assertEqual( + perft( + Board(0x994304100L, 0x400002200000000L, 0x202080000080001L, 0x8000000000000030L, 0x100000000000000L, + 0x80000000001000L, 0x200002a04381131L, 0x8582080190004000L, true, 0, 0x0L), + 4 + ), + 1838515 + ); + + // gentest-5325 + assertEqual( + perft( + Board(0x994304100L, 0x404002000000000L, 0x202000008080000L, 0x8000000000000030L, 0x100000000000000L, + 0x80000000001000L, 0x400280c381130L, 0x8782000190004000L, false, 0, 0x0L), + 4 + ), + 1017435 + ); + + // gentest-5326 + assertEqual( + perft( + Board(0x994304100L, 0x404002000000000L, 0x300000008080000L, 0x8000000000000024L, 0x1000000000000L, + 0x80000000001000L, 0x400280c381124L, 0x8781000190004000L, true, 0, 0x0L), + 4 + ), + 1785976 + ); + + // gentest-5327 + assertEqual( + perft( + Board(0x994300100L, 0x404800000000000L, 0x300000008080000L, 0x8000000000000064L, 0x1000000000000L, + 0x80000000000800L, 0x480080c380924L, 0x8781000190000040L, false, 0, 0x0L), + 4 + ), + 1715198 + ); + + // gentest-5328 + assertEqual( + perft( + Board(0x984300100L, 0x404000000000000L, 0x300000018000000L, 0x8000000000000064L, 0x20000000000L, + 0x800000000800L, 0x400081c300924L, 0x8700820180000040L, true, 0, 0x0L), + 4 + ), + 2517090 + ); + + // gentest-5329 + assertEqual( + perft( + Board(0x9a4100100L, 0x404000000000000L, 0x300000010000200L, 0x8000000000000024L, 0x20000000000L, + 0x800000000800L, 0x4000834100b04L, 0x8700820180000020L, false, 0, 0x0L), + 4 + ), + 1640862 + ); + + // gentest-5330 + assertEqual( + perft( + Board(0x9a4100100L, 0x1400000000000000L, 0x300000010000200L, 0x8000000000000084L, 0x20000000000L, + 0x8000000800L, 0x1000000834100b04L, 0x8700028180000080L, true, 0, 0x0L), + 4 + ), + 1985018 + ); + + // gentest-5331 + assertEqual( + perft( + Board(0x1a4100100L, 0x1000080000000000L, 0x300000010000200L, 0x8000000000000082L, 0x20000000000L, + 0x8000000800L, 0x1000000034100b02L, 0x83000a8180000080L, false, 0, 0x0L), + 4 + ), + 1836259 + ); + + // gentest-5332 + assertEqual( + perft( + Board(0x1a4100100L, 0x1000080000000000L, 0x300000010000000L, 0x8000000000000006L, 0x200L, + 0x8000080000L, 0x1000000034180102L, 0x8300088180000204L, true, 0, 0x0L), + 4 + ), + 672533 + ); + + // gentest-5333 + assertEqual( + perft( + Board(0x1b4000100L, 0x1000080000000000L, 0x300002000000000L, 0x8000000000000006L, 0x20000000000L, + 0x8000080000L, 0x1000002034080102L, 0x83000a8180000004L, false, 0, 0x0L), + 4 + ), + 878850 + ); + + // gentest-5334 + assertEqual( + perft( + Board(0x1b4000100L, 0x1000080000000000L, 0x100002000000000L, 0x8200000000000020L, 0x40L, + 0x8000080000L, 0x1200002034080100L, 0x8100088180000060L, true, 0, 0x0L), + 4 + ), + 1009739 + ); + + // gentest-5335 + assertEqual( + perft( + Board(0x1b4000100L, 0x80000000000L, 0x100002000000000L, 0x8000000000000006L, 0x40L, 0x8000080000L, + 0x82034080102L, 0x8100008180000044L, false, 0, 0x0L), + 4 + ), + 760163 + ); + + // gentest-5336 + assertEqual( + perft( + Board(0x1b4000100L, 0x80000000000L, 0x100002000000000L, 0x8000000000000081L, 0x400000000L, + 0x8000080000L, 0x82034080101L, 0x8100008580000080L, true, 0, 0x0L), + 4 + ), + 784700 + ); + + // gentest-5337 + assertEqual( + perft( + Board(0x11a4000100L, 0x80000000000L, 0x100002000000000L, 0x2000000000000080L, 0x400000000L, + 0x8000080000L, 0x83024080180L, 0x2100008580000000L, false, 0, 0x0L), + 4 + ), + 723585 + ); + + // gentest-5338 + assertEqual( + perft( + Board(0x1a4000100L, 0x0L, 0x100002000000000L, 0x2000000000000080L, 0x1000000000L, 0x8000000400L, + 0x2024000580L, 0x2100009180000000L, true, 0, 0x0L), + 4 + ), + 879366 + ); + + // gentest-5339 + assertEqual( + perft( + Board(0x1a5000000L, 0x0L, 0x100002000000000L, 0x2000000000000008L, 0x100000000000L, 0x8000000400L, + 0x2025000408L, 0x2100108180000000L, false, 0, 0x0L), + 4 + ), + 801276 + ); + + // gentest-5340 + assertEqual( + perft( + Board(0x1a4000000L, 0x0L, 0x100002000000000L, 0x2000080000000000L, 0x1000000L, 0x8000000400L, + 0x82024000400L, 0x2100008181000000L, true, 0, 0x0L), + 4 + ), + 109122 + ); + + // gentest-5341 + assertEqual( + perft( + Board(0x1a4000000L, 0x0L, 0x100002000000000L, 0x4000010000000000L, 0x1000000L, 0x8000000200L, + 0x12024000200L, 0x4100008181000000L, false, 0, 0x0L), + 4 + ), + 368122 + ); + + // gentest-5342 + assertEqual( + perft( + Board(0x1a4000000L, 0x0L, 0x100002000000000L, 0x14000000000L, 0x8000000000000L, 0x8000000002L, + 0x12024000002L, 0x10800c180000000L, true, 0, 0x0L), + 4 + ), + 598996 + ); + + // gentest-5343 + assertEqual( + perft( + Board(0x3a0000000L, 0x0L, 0x100000000080000L, 0x10000000000L, 0x8000000000000L, 0x8000000002L, + 0x10220080002L, 0x108008180000000L, false, 0, 0x0L), + 4 + ), + 353415 + ); + + // gentest-5344 + assertEqual( + perft( + Board(0x2a1000000L, 0x0L, 0x100400000000000L, 0x10000000000L, 0x8000000000000L, 0x800000000002L, + 0x410220000002L, 0x108800081000000L, true, 0, 0x0L), + 4 + ), + 254566 + ); + + // gentest-5345 + assertEqual( + perft( + Board(0x2281000000L, 0x0L, 0x80000000200000L, 0x10000000000L, 0x8000000000000L, 0x800000000002L, + 0x80012200000002L, 0x8800081200000L, false, 0, 0x0L), + 4 + ), + 65327 + ); + + // gentest-5346 + assertEqual( + perft( + Board(0x2281000000L, 0x0L, 0x440000000000L, 0x10000000000L, 0x1000000000000L, 0x800000000002L, + 0x412200000002L, 0x1840081000000L, true, 0, 0x0L), + 4 + ), + 179829 + ); + + // gentest-5347 + assertEqual( + perft( + Board(0x42081000000L, 0x0L, 0x0L, 0x10000000000L, 0x1000000000000L, 0x8000000002L, 0x52000000002L, + 0x1008081000000L, false, 0, 0x0L), + 4 + ), + 50770 + ); + + // gentest-5348 + assertEqual( + perft( + Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x2000000000000L, 0x8000000002L, 0x240000000002L, + 0x2008081000000L, true, 0, 0x0L), + 4 + ), + 11829 + ); + + // gentest-5349 + assertEqual( + perft( + Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x1000000000000L, 0x8000000200L, 0x240000000200L, + 0x1008081000000L, false, 0, 0x0L), + 4 + ), + 25254 + ); + + // gentest-5350 + assertEqual( + perft( + Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x1000000000000L, 0x20010000L, 0x240000010000L, + 0x10000a1000000L, true, 0, 0x0L), + 4 + ), + 21218 + ); + + // gentest-5351 + assertEqual( + perft( + Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x8000000000000L, 0x20000200L, 0x240000000200L, + 0x80000a1000000L, false, 0, 0x0L), + 4 + ), + 45576 + ); + + // gentest-5352 + assertEqual( + perft( + Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x400000000000000L, 0x40040000L, 0x240000040000L, + 0x4000000c1000000L, true, 0, 0x0L), + 4 + ), + 43035 + ); + + // gentest-5353 + assertEqual( + perft( + Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x100000000000L, 0x40000002L, 0x240000000002L, + 0x1000c1000000L, false, 0, 0x0L), + 4 + ), + 26321 + ); + + // gentest-5354 + assertEqual( + perft( + Board(0x240081000000L, 0x0L, 0x0L, 0x0L, 0x4000000000000000L, 0x40000200L, 0x240000000200L, + 0x40000000c1000000L, true, 0, 0x0L), + 4 + ), + 34885 + ); + + // gentest-5355 + assertEqual( + perft( + Board(0x240080010000L, 0x0L, 0x0L, 0x0L, 0x4000000000000000L, 0x40040000L, 0x240000040000L, + 0x40000000c0010000L, false, 0, 0x0L), + 4 + ), + 36849 + ); + + // gentest-5356 + assertEqual( + perft( + Board(0x240080010000L, 0x0L, 0x0L, 0x0L, 0x8000L, 0x42000000L, 0x240002000000L, 0xc0018000L, true, 0, + 0x0L), + 4 + ), + 44007 + ); + + // gentest-5357 + assertEqual( + perft( + Board(0x20040080010000L, 0x0L, 0x0L, 0x0L, 0x4000000000000L, 0x40020000L, 0x20040000020000L, + 0x40000c0010000L, false, 0, 0x0L), + 4 + ), + 64315 + ); + + // gentest-5358 + assertEqual( + perft( + Board(0x40000810000L, 0x0L, 0x0L, 0x0L, 0x2800000000000000L, 0x40020000L, 0x2000040000020000L, + 0x800000040810000L, true, 0, 0x0L), + 4 + ), + 212340 + ); + + // gentest-5359 + assertEqual( + perft( + Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x800000000200000L, 0x80010000L, 0x40000210000L, + 0x800000080800000L, false, 0, 0x0L), + 4 + ), + 149601 + ); + + // gentest-5360 + assertEqual( + perft( + Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x800000000400000L, 0x800000010000L, 0x40000410000L, + 0x800800000800000L, true, 0, 0x0L), + 4 + ), + 212711 + ); + + // gentest-5361 + assertEqual( + perft( + Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x20000000010L, 0x800001000000L, 0x40001000010L, + 0x820000800000L, false, 0, 0x0L), + 4 + ), + 151953 + ); + + // gentest-5362 + assertEqual( + perft( + Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x280L, 0x8001000000L, 0x40001000080L, 0x8000800200L, true, 0, + 0x0L), + 4 + ), + 106915 + ); + + // gentest-5363 + assertEqual( + perft( + Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x200L, 0x800001000000L, 0x40001000200L, 0x800000800000L, + false, 0, 0x0L), + 4 + ), + 22611 + ); + + // gentest-5364 + assertEqual( + perft( + Board(0x40000800000L, 0x0L, 0x0L, 0x0L, 0x400L, 0x800001000000L, 0x40001000400L, 0x800000800000L, + true, 0, 0x0L), + 4 + ), + 16661 + ); + + // gentest-5365 + assertEqual( + perft( + Board(0x40000008000L, 0x0L, 0x0L, 0x0L, 0x1000L, 0x800200000000L, 0x40200001000L, 0x800000008000L, + false, 0, 0x0L), + 4 + ), + 59187 + ); + + // gentest-5366 + assertEqual( + perft( + Board(0x40000008000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x240000000L, 0x40200000000L, 0x40008000L, true, 0, + 0x0L), + 4 + ), + 9819 + ); + + // gentest-5367 + assertEqual( + perft( + Board(0x40000008000L, 0x0L, 0x0L, 0x0L, 0x0L, 0x220000000L, 0x40200000000L, 0x20008000L, false, 0, + 0x0L), + 4 + ), + 9918 + ); + + // gentest-5368 + assertEqual( + perft( + Board(0x40000000000L, 0x400000L, 0x0L, 0x0L, 0x0L, 0x120000000L, 0x40100000000L, 0x20400000L, true, 0, + 0x0L), + 4 + ), + 7647 + ); + + // gentest-5369 + assertEqual( + perft( + Board(0x40000000000L, 0x1000L, 0x0L, 0x0L, 0x0L, 0x420000000L, 0x40400000000L, 0x20001000L, false, 0, + 0x0L), + 4 + ), + 8928 + ); + + // gentest-5370 + assertEqual( + perft( + Board(0x40000000000L, 0x2000000000L, 0x0L, 0x0L, 0x0L, 0x22000000L, 0x40002000000L, 0x2020000000L, + true, 0, 0x0L), + 4 + ), + 14278 + ); + + // gentest-5371 + assertEqual( + perft( + Board(0x4000000000000L, 0x2000000000L, 0x0L, 0x0L, 0x0L, 0x410000L, 0x4000000010000L, 0x2000400000L, + false, 0, 0x0L), + 4 + ), + 23038 + ); + + // gentest-5372 + assertEqual( + perft( + Board(0x0L, 0x2000000000L, 0x0L, 0x0L, 0x400000000000000L, 0x80010000L, 0x400000000010000L, + 0x2080000000L, true, 0, 0x0L), + 4 + ), + 59963 + ); + + // gentest-5373 + assertEqual( + perft( + Board(0x0L, 0x800000000000L, 0x0L, 0x0L, 0x80000000000000L, 0x80010000L, 0x80000000010000L, + 0x800080000000L, false, 0, 0x0L), + 4 + ), + 19104 + ); + + // gentest-5374 + assertEqual( + perft( + Board(0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x0L, 0x40010000L, 0x10000L, 0x20000040000000L, true, 0, + 0x0L), + 4 + ), + 5992 + ); + + // gentest-5375 + assertEqual( + perft( + Board(0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x0L, 0x2200000000L, 0x200000000L, 0x20002000000000L, + false, 0, 0x0L), + 4 + ), + 8589 + ); + + // gentest-5376 + assertEqual( + perft( + Board(0x0L, 0x100000000000L, 0x0L, 0x0L, 0x0L, 0x2004000000L, 0x4000000L, 0x102000000000L, true, 0, + 0x0L), + 4 + ), + 8295 + ); + + // gentest-5377 + assertEqual( + perft( + Board(0x0L, 0x800000000000000L, 0x0L, 0x0L, 0x0L, 0x12000000000L, 0x10000000000L, 0x800002000000000L, + false, 0, 0x0L), + 4 + ), + 3568 + ); + + // gentest-5378 + assertEqual( + perft( + Board(0x0L, 0x20000000000000L, 0x0L, 0x0L, 0x0L, 0x2400000000000L, 0x2000000000000L, + 0x20400000000000L, true, 0, 0x0L), + 4 + ), + 6786 + ); + + // gentest-5379 + assertEqual( + perft( + Board(0x0L, 0x1000000000L, 0x0L, 0x0L, 0x0L, 0x480000000000L, 0x80000000000L, 0x401000000000L, false, + 0, 0x0L), + 4 + ), + 7341 + ); + + // gentest-5380 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x40001000000000L, 0x1000000000L, 0x40000000000000L, true, 0, + 0x0L), + 4 + ), + 1994 + ); + + // gentest-5381 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x0L, 0x0L, 0x0L, 0x500000000000L, 0x100000000000L, 0x400000000000L, false, 0, + 0x0L), + 4 + ), + 1344 + ); + + // gentest-5382 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5383 + assertEqual( + perft( + Board(0x7f80000010ef00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x90efbfL, 0xff7f800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 357283 + ); + + // gentest-5384 + assertEqual( + perft( + Board(0x3e81400010ef00L, 0x4200000000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000001000L, 0x1000000000000010L, 0x90ffb7L, 0xff3e814000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 317204 + ); + + // gentest-5385 + assertEqual( + perft( + Board(0x2e91400010ef00L, 0x4200000000840000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000040000000L, 0x1000000000000010L, 0x4094efb5L, 0xff2e914000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1157565 + ); + + // gentest-5386 + assertEqual( + perft( + Board(0x2e91400010ef00L, 0x4200000000840000L, 0x400080000000024L, 0x8100000000000081L, + 0x800008000000000L, 0x1000000000000010L, 0x800094efb5L, 0xdf2e994000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 969284 + ); + + // gentest-5387 + assertEqual( + perft( + Board(0x2e91000010ef00L, 0x4200000000840000L, 0x400000002000024L, 0x8100000000000081L, + 0x800004000000000L, 0x1000000000000008L, 0x400094efadL, 0xdf2e910002000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1333820 + ); + + // gentest-5388 + assertEqual( + perft( + Board(0xeb1000010ef00L, 0x4200000000840000L, 0x400000002000024L, 0x180000000000082L, + 0x800004000000000L, 0x1000000000000008L, 0x400094efaeL, 0x5f8eb10002000000L, true, 0, + 0x100000000000000L), + 4 + ), + 1225194 + ); + + // gentest-5389 + assertEqual( + perft( + Board(0xe91200010ef00L, 0x4200000000840000L, 0x400000002000024L, 0x180000000000082L, + 0x800000000200000L, 0x1000000000000008L, 0xb4efaeL, 0x5f8e912002000000L, false, 0, + 0x100000000000000L), + 4 + ), + 1271536 + ); + + // gentest-5390 + assertEqual( + perft( + Board(0xe91200018e700L, 0x4200000000840000L, 0x400200000000024L, 0x180000000000082L, + 0x800000000200000L, 0x1000000000000008L, 0xbce7aeL, 0x5f8eb12000000000L, true, 0, + 0x100000000000000L), + 4 + ), + 917717 + ); + + // gentest-5391 + assertEqual( + perft( + Board(0xe91200018e700L, 0x4200000200800000L, 0x400200000000820L, 0x180000000000082L, + 0x800000000200000L, 0x10000000000008L, 0x200b8efaaL, 0x4f9eb12000000000L, false, 0, 0x0L), + 4 + ), + 1301504 + ); + + // gentest-5392 + assertEqual( + perft( + Board(0xe01b00018e700L, 0x4200004200000000L, 0x400200000000820L, 0x180000000000082L, + 0x800000000200000L, 0x10000000000008L, 0x420038efaaL, 0x4f9e21b000000000L, true, 0, 0x0L), + 4 + ), + 1229887 + ); + + // gentest-5393 + assertEqual( + perft( + Board(0xa01a01018e700L, 0x4200004200000000L, 0x400200000000820L, 0x180000000000082L, + 0x804000000000000L, 0x10000000000008L, 0x400420018efaaL, 0x4f9a21a010000000L, false, 0, 0x0L), + 4 + ), + 1495399 + ); + + // gentest-5394 + assertEqual( + perft( + Board(0xa01a01038c700L, 0x4200004200000000L, 0x400000000040820L, 0x180000000000082L, + 0x804000000000000L, 0x2000000000000008L, 0x400420038cfaaL, 0x6f8a01a010040000L, true, 0, 0x0L), + 4 + ), + 2220165 + ); + + // gentest-5395 + assertEqual( + perft( + Board(0xa01a01138c600L, 0x4000004200000000L, 0x400000000040820L, 0x180000000000082L, + 0x210000000000000L, 0x2000000000000008L, 0x20000420138ceaaL, 0x659a01a010040000L, false, 0, 0x0L), + 4 + ), + 2405059 + ); + + // gentest-5396 + assertEqual( + perft( + Board(0xa01209538c200L, 0x4000004200000000L, 0x400000002000820L, 0x180000000000082L, + 0x210000000000000L, 0x2000000000000008L, 0x20000420538caaaL, 0x659a012092000000L, true, 0, 0x0L), + 4 + ), + 1874352 + ); + + // gentest-5397 + assertEqual( + perft( + Board(0x209209538c200L, 0x4000004200000000L, 0x400000002000820L, 0x180000000000082L, + 0x10000000800000L, 0x2000000000000008L, 0x4205b8caaaL, 0x6592092092000000L, false, 0, 0x0L), + 4 + ), + 1452909 + ); + + // gentest-5398 + assertEqual( + perft( + Board(0x20900a538c200L, 0x4000000210000000L, 0x400000002000820L, 0x180000000000082L, + 0x20000000800000L, 0x2000000000000008L, 0x215b8caaaL, 0x65a20900a2000000L, true, 0, 0x0L), + 4 + ), + 2131758 + ); + + // gentest-5399 + assertEqual( + perft( + Board(0x20900a538c200L, 0x4001000010000000L, 0x400000002000820L, 0x180000000000082L, 0x100000800000L, + 0x2000000000000010L, 0x1000015b8cab2L, 0x65821900a2000000L, false, 0, 0x0L), + 4 + ), + 1726082 + ); + + // gentest-5400 + assertEqual( + perft( + Board(0x20900a538c200L, 0x4001000010000000L, 0x400000002000820L, 0x180000000000088L, 0x200000800000L, + 0x2000000000000010L, 0x1000015b8cab8L, 0x65822900a2000000L, true, 0, 0x0L), + 4 + ), + 1841227 + ); + + // gentest-5401 + assertEqual( + perft( + Board(0x20900a538c200L, 0x4001000400000000L, 0x400000002000020L, 0x280000000000088L, 0x200000800000L, + 0x2000000000000010L, 0x1000407b8c2b8L, 0x66822900a0000000L, false, 0, 0x0L), + 4 + ), + 1682078 + ); + + // gentest-5402 + assertEqual( + perft( + Board(0x20801a538c200L, 0x4001010000000000L, 0x8000002000020L, 0x280000000000088L, 0x200000800000L, + 0x2000000000000010L, 0x1010007b8c2b8L, 0x628a2801a0000000L, true, 0, 0x0L), + 4 + ), + 1899913 + ); + + // gentest-5403 + assertEqual( + perft( + Board(0x20800a538c200L, 0x4001010000000000L, 0x1000000100000020L, 0x280000000000088L, 0x200040000000L, + 0x2000000000000010L, 0x101014538c2b8L, 0x72822800a0000000L, false, 0, 0x0L), + 4 + ), + 2636383 + ); + + // gentest-5404 + assertEqual( + perft( + Board(0x20800a538c200L, 0x1810000000000L, 0x1000000100000020L, 0x280000000000084L, 0x10000040000000L, + 0x2000000000000010L, 0x101014538c2b4L, 0x32928800a0000000L, true, 0, 0x0L), + 4 + ), + 1947841 + ); + + // gentest-5405 + assertEqual( + perft( + Board(0x20800a538c200L, 0x1810000000000L, 0x20000100000020L, 0x280000000000084L, 0x10008000000000L, + 0x2000000000000800L, 0x101810538caa4L, 0x22b28800a0000000L, false, 0, 0x0L), + 4 + ), + 2125489 + ); + + // gentest-5406 + assertEqual( + perft( + Board(0x20800e5388200L, 0x1810000000000L, 0x4000000100000020L, 0x240000000000084L, 0x10008000000000L, + 0x2000000000000800L, 0x1018145388aa4L, 0x62528800a0000000L, true, 0, 0x0L), + 4 + ), + 2094535 + ); + + // gentest-5407 + assertEqual( + perft( + Board(0x20800e5388200L, 0x1810000000000L, 0x100100000020L, 0x240000000000090L, 0x10008000000000L, + 0x2000000000000800L, 0x1018145388ab0L, 0x22529800a0000000L, false, 0, 0x0L), + 4 + ), + 2326571 + ); + + // gentest-5408 + assertEqual( + perft( + Board(0x20800e53a8000L, 0x1810000000000L, 0x100100000020L, 0x420000000000090L, 0x10008000000000L, + 0x2000000000000800L, 0x10181453a88b0L, 0x24329800a0000000L, true, 0, 0x0L), + 4 + ), + 1965576 + ); + + // gentest-5409 + assertEqual( + perft( + Board(0xa00e53a8000L, 0x400810000000000L, 0x100100000020L, 0x20000000000090L, 0x10001000000000L, + 0x2000000000000800L, 0x4000111453a88b0L, 0x20309a00a0000000L, false, 0, 0x0L), + 4 + ), + 1763958 + ); + + // gentest-5410 + assertEqual( + perft( + Board(0x802c53a8000L, 0x400810000000000L, 0x100000020L, 0x20000000000090L, 0x10100000000000L, + 0x2000000000000800L, 0x4001101452a88b0L, 0x2030880280100000L, true, 0, 0x0L), + 4 + ), + 240457 + ); + + // gentest-5411 + assertEqual( + perft( + Board(0x802c52a8000L, 0x400012000000000L, 0x100000020L, 0x20000000000090L, 0x10000000100000L, + 0x2000000000000004L, 0x4000101453a80b4L, 0x2030082280000000L, false, 0, 0x0L), + 4 + ), + 1651629 + ); + + // gentest-5412 + assertEqual( + perft( + Board(0x802c52a8000L, 0x400012000000000L, 0x100000020L, 0x20000000000090L, 0x200000001000L, + 0x4000000000000004L, 0x4000101452a90b4L, 0x4020282280000000L, true, 0, 0x0L), + 4 + ), + 1938365 + ); + + // gentest-5413 + assertEqual( + perft( + Board(0x802c52a8000L, 0x400012000000000L, 0x4800L, 0x20000000000090L, 0x200000001000L, + 0x8000000000000004L, 0x4000100452ad894L, 0x8020282280000000L, false, 0, 0x0L), + 4 + ), + 1778048 + ); + + // gentest-5414 + assertEqual( + perft( + Board(0x802c52a8000L, 0x400012000000000L, 0x820L, 0x80000000000090L, 0x10000000001000L, + 0x8000000000000004L, 0x4000100452a98b4L, 0x8090082280000000L, true, 0, 0x0L), + 4 + ), + 1476237 + ); + + // gentest-5415 + assertEqual( + perft( + Board(0x842852a8000L, 0x400012000000000L, 0x820L, 0x80000000000080L, 0x18L, 0x8000000000000004L, + 0x4000140052a88acL, 0x8080082280000010L, false, 0, 0x0L), + 4 + ), + 979404 + ); + + // gentest-5416 + assertEqual( + perft( + Board(0x842852a8000L, 0x400012000000000L, 0x20L, 0x8000000080L, 0x800L, 0x8000000000000004L, + 0x4000140052a88a4L, 0x800008a280000000L, true, 0, 0x0L), + 4 + ), + 362913 + ); + + // gentest-5417 + assertEqual( + perft( + Board(0x8428d228000L, 0x400012000000000L, 0x20L, 0x8000000080L, 0x100000L, 0x80000000000004L, + 0x40001400d3280a4L, 0x8008a280000000L, false, 0, 0x0L), + 4 + ), + 395273 + ); + + // gentest-5418 + assertEqual( + perft( + Board(0x8028d228000L, 0x400012000000000L, 0x20L, 0xc0L, 0x20000000L, 0x80000000000004L, + 0x40001002d2280a4L, 0x80082280000040L, true, 0, 0x0L), + 4 + ), + 428716 + ); + + // gentest-5419 + assertEqual( + perft( + Board(0x8028d228000L, 0x408800000000000L, 0x20L, 0xc0L, 0x20000000L, 0x80000000000004L, + 0x40800002d2280a4L, 0x80880280000040L, false, 0, 0x0L), + 4 + ), + 504671 + ); + + // gentest-5420 + assertEqual( + perft( + Board(0x8028d228000L, 0x428000000000000L, 0x20L, 0x4000000080L, 0x200000000000L, 0x80000000000004L, + 0x40820000d2280a4L, 0xa0084280000000L, true, 0, 0x0L), + 4 + ), + 486196 + ); + + // gentest-5421 + assertEqual( + perft( + Board(0x8008d228000L, 0x28020000000000L, 0x20L, 0x4000000080L, 0x400000000000L, 0x80000000000004L, + 0x84200092280a4L, 0xa0084084000000L, false, 0, 0x0L), + 4 + ), + 56133 + ); + + // gentest-5422 + assertEqual( + perft( + Board(0x8008d228000L, 0x2020020000000000L, 0x20L, 0x200000080L, 0x400000000000L, 0x8000000000000004L, + 0x20004200092280a4L, 0x8020080284000000L, true, 0, 0x0L), + 4 + ), + 442757 + ); + + // gentest-5423 + assertEqual( + perft( + Board(0x8008d228000L, 0x2020020000000000L, 0x20L, 0x1000000080L, 0x100000000000L, 0x8000000000000200L, + 0x20001200092282a0L, 0x8020081084000000L, false, 0, 0x0L), + 4 + ), + 582895 + ); + + // gentest-5424 + assertEqual( + perft( + Board(0x80089268000L, 0x2020020000000000L, 0x20L, 0x2000000080L, 0x100000000000L, 0x8000000000010000L, + 0x20001200092380a0L, 0x8020082080040000L, true, 0, 0x0L), + 4 + ), + 431773 + ); + + // gentest-5425 + assertEqual( + perft( + Board(0x80089268000L, 0x2020020000000000L, 0x4000000L, 0x400000080L, 0x10000000000000L, + 0x8000000000010000L, 0x201002000d238080L, 0x8020080480040000L, false, 0, 0x0L), + 4 + ), + 675779 + ); + + // gentest-5426 + assertEqual( + perft( + Board(0x89268000L, 0x2000024000000000L, 0x4000000L, 0x4000000000080L, 0x80000000000L, + 0x8000000000010000L, 0x20000a000d238080L, 0x8004004080040000L, true, 0, 0x0L), + 4 + ), + 618300 + ); + + // gentest-5427 + assertEqual( + perft( + Board(0x89268000L, 0x2000024000000000L, 0x200000000L, 0x400000000000080L, 0x400000L, + 0x8000000000010000L, 0x2000020209638080L, 0x8400004080040000L, false, 0, 0x0L), + 4 + ), + 648501 + ); + + // gentest-5428 + assertEqual( + perft( + Board(0x9a68000L, 0x2100100000000000L, 0x200000000L, 0x400000000000080L, 0x400000L, + 0x8000000000010000L, 0x2100000209638080L, 0x8400100000840000L, true, 0, 0x0L), + 4 + ), + 418289 + ); + + // gentest-5429 + assertEqual( + perft( + Board(0x9a68000L, 0x2104000000000000L, 0x200000000L, 0x400000000000080L, 0x1000000000000000L, + 0x8000000000010000L, 0x3100000209238080L, 0x8404000000840000L, false, 0, 0x0L), + 4 + ), + 217859 + ); + + // gentest-5430 + assertEqual( + perft( + Board(0x9a68000L, 0x2004000000000000L, 0x200000000L, 0x100000000000080L, 0x100000L, + 0x4000000000010000L, 0x2000000209338080L, 0x4104000000840000L, true, 0, 0x0L), + 4 + ), + 395396 + ); + + // gentest-5431 + assertEqual( + perft( + Board(0x9a68000L, 0x2004000000000000L, 0x4000000L, 0x1000000000000080L, 0x800L, 0x4000000000010000L, + 0x200000000d238880L, 0x5004000000840000L, false, 0, 0x0L), + 4 + ), + 132646 + ); + + // gentest-5432 + assertEqual( + perft( + Board(0x9a68000L, 0x2000100000000000L, 0x4000000L, 0x800000000000080L, 0x400L, 0x4000000000010000L, + 0x200000000d238480L, 0x4800100000840000L, true, 0, 0x0L), + 4 + ), + 286055 + ); + + // gentest-5433 + assertEqual( + perft( + Board(0x9a68000L, 0x2000100000000000L, 0x20L, 0x80000000080L, 0x8L, 0x4000000000010000L, + 0x20000000092380a8L, 0x4000180000840000L, false, 0, 0x0L), + 4 + ), + 285465 + ); + + // gentest-5434 + assertEqual( + perft( + Board(0x9a68000L, 0x2000100000000000L, 0x20L, 0x80000000080L, 0x80000L, 0x200000010000L, + 0x20000000092b80a0L, 0x380000840000L, true, 0, 0x0L), + 4 + ), + 255123 + ); + + // gentest-5435 + assertEqual( + perft( + Board(0x9a68000L, 0x2000100000000000L, 0x20L, 0x20000000080L, 0x10L, 0x200000010000L, + 0x20000000092380b0L, 0x320000840000L, false, 0, 0x0L), + 4 + ), + 365398 + ); + + // gentest-5436 + assertEqual( + perft( + Board(0x9a68000L, 0x2000100000000000L, 0x10000000000L, 0x20000000080L, 0x10L, 0x20000000010000L, + 0x2000010009238090L, 0x20120000840000L, true, 0, 0x0L), + 4 + ), + 483749 + ); + + // gentest-5437 + assertEqual( + perft( + Board(0x9a68000L, 0x2000100000000000L, 0x10000000000L, 0x2000000000080L, 0x8L, 0x20000000000100L, + 0x2000010009228188L, 0x22100000840000L, false, 0, 0x0L), + 4 + ), + 480289 + ); + + // gentest-5438 + assertEqual( + perft( + Board(0x9a68000L, 0x2000100000000000L, 0x10000000000L, 0x200000080L, 0x8L, 0x10000000000001L, + 0x2000010009228089L, 0x10100200840000L, true, 0, 0x0L), + 4 + ), + 383144 + ); + + // gentest-5439 + assertEqual( + perft( + Board(0x9a68000L, 0x2800000000000000L, 0x10000000000L, 0x200000020L, 0x8L, 0x10000000000100L, + 0x2000010009228128L, 0x810000200840000L, false, 0, 0x0L), + 4 + ), + 348216 + ); + + // gentest-5440 + assertEqual( + perft( + Board(0x9a28400L, 0x2800000000000000L, 0x10000000000L, 0x2000000000020L, 0x800L, 0x10000000000100L, + 0x2000010009228920L, 0x812000000800400L, true, 0, 0x0L), + 4 + ), + 452663 + ); + + // gentest-5441 + assertEqual( + perft( + Board(0x9a28400L, 0x2800000000000000L, 0x10000000000L, 0x2000000000040L, 0x2000000L, + 0x1000000000000100L, 0x200001000b228140L, 0x1802000000800400L, false, 0, 0x0L), + 4 + ), + 542643 + ); + + // gentest-5442 + assertEqual( + perft( + Board(0x9a28400L, 0x2800000000000000L, 0x10000000000L, 0x4000000002000000L, 0x0L, 0x1000000000000100L, + 0x6000010009228100L, 0x1800000002800400L, true, 0, 0x0L), + 4 + ), + 168006 + ); + + // gentest-5443 + assertEqual( + perft( + Board(0x1a28400L, 0x808000000000000L, 0x10000000000L, 0x8004000L, 0x0L, 0x1000000000000100L, + 0x801000122c100L, 0x1800000008800400L, false, 0, 0x0L), + 4 + ), + 385038 + ); + + // gentest-5444 + assertEqual( + perft( + Board(0x1a28400L, 0x8100000000000L, 0x200000000L, 0x4004000L, 0x0L, 0x1000000000000100L, + 0x800020122c100L, 0x1000100004800400L, true, 0, 0x0L), + 4 + ), + 264719 + ); + + // gentest-5445 + assertEqual( + perft( + Board(0x1a28400L, 0x101000000000L, 0x200000000L, 0x40040L, 0x0L, 0x1000000000000100L, 0x1201228140L, + 0x1000100000840400L, false, 0, 0x0L), + 4 + ), + 80741 + ); + + // gentest-5446 + assertEqual( + perft( + Board(0x1a28400L, 0x1020000000L, 0x200000000L, 0x40000400000L, 0x0L, 0x1000000000000100L, + 0x1201628100L, 0x1000040020800400L, true, 0, 0x0L), + 4 + ), + 203740 + ); + + // gentest-5447 + assertEqual( + perft( + Board(0x1a28400L, 0x1000000000L, 0x80000L, 0x40000400000L, 0x0L, 0x1000000000000200L, 0x10016a8200L, + 0x1000040000800400L, false, 0, 0x0L), + 4 + ), + 257672 + ); + + // gentest-5448 + assertEqual( + perft( + Board(0x1a28000L, 0x1000000000L, 0x80000L, 0x100000400000L, 0x0L, 0x1000000000000400L, 0x10016a8400L, + 0x1000100000800000L, true, 0, 0x0L), + 4 + ), + 153991 + ); + + // gentest-5449 + assertEqual( + perft( + Board(0x100a28000L, 0x1000000000L, 0x200000000L, 0x10000400000L, 0x0L, 0x1000000000000400L, + 0x1300628400L, 0x1000010000800000L, false, 0, 0x0L), + 4 + ), + 37238 + ); + + // gentest-5450 + assertEqual( + perft( + Board(0x100a28000L, 0x40000000000L, 0x200000000L, 0x10000400000L, 0x0L, 0x80000000400L, + 0x40300628400L, 0x90000800000L, true, 0, 0x0L), + 4 + ), + 95243 + ); + + // gentest-5451 + assertEqual( + perft( + Board(0x100a28000L, 0x40000000000L, 0x200000000L, 0x10000400000L, 0x0L, 0x800000004L, 0x40300628004L, + 0x10800800000L, false, 0, 0x0L), + 4 + ), + 59765 + ); + + // gentest-5452 + assertEqual( + perft( + Board(0xa28000L, 0x200000000000000L, 0x200000000L, 0x1400000L, 0x0L, 0x800000004L, 0x200000200628004L, + 0x801800000L, true, 0, 0x0L), + 4 + ), + 157364 + ); + + // gentest-5453 + assertEqual( + perft( + Board(0xa28000L, 0x200000000000000L, 0x1000000L, 0x40000000L, 0x0L, 0x800000004L, 0x200000001228004L, + 0x840800000L, false, 0, 0x0L), + 4 + ), + 55244 + ); + + // gentest-5454 + assertEqual( + perft( + Board(0xa28000L, 0x8000000000000L, 0x0L, 0x10000L, 0x0L, 0x800000004L, 0x8000000228004L, 0x800810000L, + true, 0, 0x0L), + 4 + ), + 26610 + ); + + // gentest-5455 + assertEqual( + perft( + Board(0xa28000L, 0x8000000000000L, 0x0L, 0x10000L, 0x0L, 0x8001000L, 0x8000000229000L, 0x8810000L, + false, 0, 0x0L), + 4 + ), + 20733 + ); + + // gentest-5456 + assertEqual( + perft( + Board(0xa28000L, 0x400000000L, 0x0L, 0x10000L, 0x0L, 0x8001000L, 0x400229000L, 0x8810000L, true, 0, + 0x0L), + 4 + ), + 25780 + ); + + // gentest-5457 + assertEqual( + perft( + Board(0xa28000L, 0x80000000000L, 0x0L, 0x10000L, 0x0L, 0x800001000L, 0x80000229000L, 0x800810000L, + false, 0, 0x0L), + 4 + ), + 43993 + ); + + // gentest-5458 + assertEqual( + perft( + Board(0xa28000L, 0x80000000000L, 0x0L, 0x10000000000L, 0x0L, 0x1000100000L, 0x80000328000L, + 0x11000800000L, true, 0, 0x0L), + 4 + ), + 37794 + ); + + // gentest-5459 + assertEqual( + perft( + Board(0xa28000L, 0x20000000000000L, 0x0L, 0x10000000000L, 0x0L, 0x100000080000L, 0x200000002a8000L, + 0x110000800000L, false, 0, 0x0L), + 4 + ), + 49838 + ); + + // gentest-5460 + assertEqual( + perft( + Board(0xa28000L, 0x4000000000L, 0x0L, 0x1L, 0x0L, 0x2000080000L, 0x40002a8000L, 0x2000800001L, true, + 0, 0x0L), + 4 + ), + 52527 + ); + + // gentest-5461 + assertEqual( + perft( + Board(0xa28000L, 0x4000000000L, 0x0L, 0x40L, 0x0L, 0x2000080000L, 0x40002a8000L, 0x2000800040L, false, + 0, 0x0L), + 4 + ), + 34194 + ); + + // gentest-5462 + assertEqual( + perft( + Board(0xa28000L, 0x10000000L, 0x0L, 0x40000000000L, 0x0L, 0x2000080000L, 0x102a8000L, 0x42000800000L, + true, 0, 0x0L), + 4 + ), + 46573 + ); + + // gentest-5463 + assertEqual( + perft( + Board(0xa28000L, 0x4000000000L, 0x0L, 0x80000000000L, 0x0L, 0x2000001000L, 0x4000229000L, + 0x82000800000L, false, 0, 0x0L), + 4 + ), + 37957 + ); + + // gentest-5464 + assertEqual( + perft( + Board(0xa28000L, 0x80000000000000L, 0x0L, 0x80000000000L, 0x0L, 0x2000001000L, 0x80000000229000L, + 0x82000800000L, true, 0, 0x0L), + 4 + ), + 25384 + ); + + // gentest-5465 + assertEqual( + perft( + Board(0xa28000L, 0x80000000000000L, 0x0L, 0x200000000000L, 0x0L, 0x2000000800L, 0x80000000228800L, + 0x202000800000L, false, 0, 0x0L), + 4 + ), + 25197 + ); + + // gentest-5466 + assertEqual( + perft( + Board(0xa28000L, 0x80000000000000L, 0x0L, 0x200000000000L, 0x0L, 0x8000000000008L, 0x80000000228008L, + 0x8200000800000L, true, 0, 0x0L), + 4 + ), + 29340 + ); + + // gentest-5467 + assertEqual( + perft( + Board(0x20828000L, 0x200000000000L, 0x0L, 0x0L, 0x0L, 0x800000000000008L, 0x200020028008L, + 0x800000000800000L, false, 0, 0x0L), + 4 + ), + 3559 + ); + + // gentest-5468 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5469 + assertEqual( + perft( + Board(0x7f00800200fd00L, 0x4200000000200002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x220fdbfL, 0xff7f008000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 280455 + ); + + // gentest-5470 + assertEqual( + perft( + Board(0x5f20800200fd00L, 0x4200000000200002L, 0x2400000000000220L, 0x8100000000000081L, + 0x800000000000008L, 0x20000000000010L, 0x220ffbbL, 0xef7f208000000000L, true, 0, 0x81L), + 4 + ), + 387672 + ); + + // gentest-5471 + assertEqual( + perft( + Board(0x5f20800304f800L, 0x4200000000200002L, 0x2400000000000220L, 0x100800000000081L, + 0x800000000000008L, 0x20000000000010L, 0x324fabbL, 0x6f7fa08000000000L, false, 0, 0x81L), + 4 + ), + 335143 + ); + + // gentest-5472 + assertEqual( + perft( + Board(0x5f00a00304f800L, 0x4200000000200002L, 0x2400000000010020L, 0x100400000000081L, + 0x800000000000008L, 0x20000000000010L, 0x325f8bbL, 0x6f7f40a000000000L, true, 0, 0x81L), + 4 + ), + 424496 + ); + + // gentest-5473 + assertEqual( + perft( + Board(0x5f00a01304e800L, 0x4000040000200002L, 0x2400000000010020L, 0x100400000000041L, + 0x800000000000008L, 0x20000000000010L, 0x1325e87bL, 0x6d7f44a000000000L, false, 0, 0x1L), + 4 + ), + 734610 + ); + + // gentest-5474 + assertEqual( + perft( + Board(0x5f00a11104e800L, 0x4000000000200002L, 0x2400000000010020L, 0x100400000000041L, + 0x800000000000008L, 0x100000000010L, 0x11125e87bL, 0x6d5f50a000000000L, true, 0, 0x1L), + 4 + ), + 411315 + ); + + // gentest-5475 + assertEqual( + perft( + Board(0x5f00a101846800L, 0x4000000000200002L, 0x2400000000010020L, 0x200400000000041L, + 0x800000000000008L, 0x100000000010L, 0x2101a5687bL, 0x6e5f508000000000L, false, 0, 0x1L), + 4 + ), + 88980 + ); + + // gentest-5476 + assertEqual( + perft( + Board(0x5f000181846800L, 0x4000000000200002L, 0x2400000200010000L, 0x200400000000041L, + 0x800000000000008L, 0x2000000010L, 0x301a5685bL, 0x6e5f402080000000L, true, 0, 0x1L), + 4 + ), + 553868 + ); + + // gentest-5477 + assertEqual( + perft( + Board(0x5f000181846800L, 0x4000000000008002L, 0x2400000200010000L, 0x200000040000041L, + 0x800000000001000L, 0x2000000010L, 0x30185f853L, 0x6e5f0020c0000000L, false, 0, 0x1L), + 4 + ), + 870787 + ); + + // gentest-5478 + assertEqual( + perft( + Board(0x5f000181a44800L, 0x4000000000008002L, 0x2400000200010000L, 0x200000008000041L, + 0x1000000000001000L, 0x2000000010L, 0x301a5d853L, 0x765f002088000000L, true, 0, 0x1L), + 4 + ), + 845496 + ); + + // gentest-5479 + assertEqual( + perft( + Board(0x5f000181a44800L, 0x4000000000008002L, 0x2400000000090000L, 0x200000800000041L, + 0x1000000000001000L, 0x2000000020L, 0x101add863L, 0x765f002880000000L, false, 0, 0x0L), + 4 + ), + 94162 + ); + + // gentest-5480 + assertEqual( + perft( + Board(0x5f000181a44800L, 0x4000000000008002L, 0x2400000000010000L, 0x200000000080041L, + 0x1000000000000008L, 0x400000000020L, 0x101a5c86bL, 0x765f400080080000L, true, 0, 0x0L), + 4 + ), + 406668 + ); + + // gentest-5481 + assertEqual( + perft( + Board(0x5f0001c5a00800L, 0x4000000000008002L, 0x2400000000010000L, 0x200080000000041L, + 0x1000000000000008L, 0x400000000020L, 0x145a1886bL, 0x765f480080000000L, false, 0, 0x0L), + 4 + ), + 451529 + ); + + // gentest-5482 + assertEqual( + perft( + Board(0x5f0001c5a00800L, 0x800000008002L, 0x2400000000010000L, 0x200200000000140L, + 0x1000000000000008L, 0x400000000020L, 0x145a1896aL, 0x365fe00080000000L, true, 0, 0x0L), + 4 + ), + 588321 + ); + + // gentest-5483 + assertEqual( + perft( + Board(0x5f0001e5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x200200000000140L, + 0x1000000000000004L, 0x400000000020L, 0x165818966L, 0x765f600080000000L, false, 0, 0x0L), + 4 + ), + 465194 + ); + + // gentest-5484 + assertEqual( + perft( + Board(0x5f0021c5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x220000000000140L, + 0x1000000000000004L, 0x800000000020L, 0x2145818966L, 0x767f800080000000L, true, 0, 0x0L), + 4 + ), + 264097 + ); + + // gentest-5485 + assertEqual( + perft( + Board(0x5f0021c5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x220000000000140L, + 0x1000000000000200L, 0x4000002000L, 0x214581ab42L, 0x767f004080000000L, false, 0, 0x0L), + 4 + ), + 474610 + ); + + // gentest-5486 + assertEqual( + perft( + Board(0x4f1021c5800800L, 0x4000000000008002L, 0x2400000000010000L, 0x220000000000140L, + 0x800000000000004L, 0x4000002000L, 0x214581a946L, 0x6e6f104080000000L, true, 0, 0x0L), + 4 + ), + 698666 + ); + + // gentest-5487 + assertEqual( + perft( + Board(0x4f1120c5800800L, 0x4000000000008002L, 0x400080000010000L, 0x220000000004100L, + 0x800000000000004L, 0x4000002000L, 0x1204581e906L, 0x4e6f184080000000L, false, 0, 0x0L), + 4 + ), + 809829 + ); + + // gentest-5488 + assertEqual( + perft( + Board(0x4d1102c5800800L, 0x4000000000008002L, 0x400080000010000L, 0x200002000004100L, + 0x800000000000004L, 0x4000000010L, 0x1004581c916L, 0x4e4d186280000000L, true, 0, 0x0L), + 4 + ), + 914458 + ); + + // gentest-5489 + assertEqual( + perft( + Board(0x491502c5800800L, 0x4000000000008002L, 0x400080002000000L, 0x200002000001100L, + 0x800000000000004L, 0x4000000010L, 0x10047809916L, 0x4e491c6280000000L, false, 0, 0x0L), + 4 + ), + 1500687 + ); + + // gentest-5490 + assertEqual( + perft( + Board(0x491506c1800800L, 0x10000000000002L, 0x400000002008000L, 0x200002000001100L, + 0x800000000000004L, 0x4000000010L, 0x10443801916L, 0xe59146280008000L, true, 0, 0x0L), + 4 + ), + 969781 + ); + + // gentest-5491 + assertEqual( + perft( + Board(0x49152681800800L, 0x800000002L, 0x400000000018000L, 0x200000000001100L, 0x800000000000004L, + 0x4000000010L, 0x12401811916L, 0xe49144a80008000L, false, 0, 0x0L), + 4 + ), + 931393 + ); + + // gentest-5492 + assertEqual( + perft( + Board(0x49052681800800L, 0x800000002L, 0x400000000018000L, 0x200100000000100L, 0x1000000000000004L, + 0x8000000010L, 0x112401810916L, 0x1649048a80008000L, true, 0, 0x0L), + 4 + ), + 776771 + ); + + // gentest-5493 + assertEqual( + perft( + Board(0x49052689800000L, 0x800000002L, 0x400000020010000L, 0x200100000000400L, 0x1000000000000004L, + 0x8000000010L, 0x112409810416L, 0x1649048aa0000000L, false, 0, 0x0L), + 4 + ), + 1233356 + ); + + // gentest-5494 + assertEqual( + perft( + Board(0x49052689800000L, 0x10000000000002L, 0x400000000110000L, 0x200100000000400L, + 0x1000000000000004L, 0x8000001000L, 0x112409811406L, 0x1659048280100000L, true, 0, 0x0L), + 4 + ), + 1095017 + ); + + // gentest-5495 + assertEqual( + perft( + Board(0x49052689800000L, 0x10000000000002L, 0x400000002100000L, 0x120000000100L, 0x1000000000000004L, + 0x8000001000L, 0x11240b801106L, 0x1459068280100000L, false, 0, 0x0L), + 4 + ), + 1580887 + ); + + // gentest-5496 + assertEqual( + perft( + Board(0x49052689800000L, 0x10000000000002L, 0x400000002100000L, 0x4100000000100L, 0x1000000000000010L, + 0x8000001000L, 0x11240b801112L, 0x145d048280100000L, true, 0, 0x0L), + 4 + ), + 1090437 + ); + + // gentest-5497 + assertEqual( + perft( + Board(0x49052689800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100200L, 0x2000000000000010L, + 0x8000001000L, 0x1240b901212L, 0x245d048280000000L, false, 0, 0x0L), + 4 + ), + 750768 + ); + + // gentest-5498 + assertEqual( + perft( + Board(0x410d2689800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100100L, 0x1000000000000010L, + 0x8000001000L, 0x1240b901112L, 0x14550c8280000000L, true, 0, 0x0L), + 4 + ), + 1093377 + ); + + // gentest-5499 + assertEqual( + perft( + Board(0x410d2688800000L, 0x800000002L, 0x400000002000000L, 0x4000000100100L, 0x1000000000000008L, + 0x8000001000L, 0x1260a90110aL, 0x14450c8880000000L, false, 0, 0x0L), + 4 + ), + 1373233 + ); + + // gentest-5500 + assertEqual( + perft( + Board(0x410d2688800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100100L, 0x8000000000000400L, + 0x8000001000L, 0x1260a901502L, 0x84550c8080000000L, true, 0, 0x0L), + 4 + ), + 1185373 + ); + + // gentest-5501 + assertEqual( + perft( + Board(0x410d2688800000L, 0x10000000000002L, 0x400000002000000L, 0x4000000100200L, 0x4000000000020000L, + 0x8000001000L, 0x1260a921202L, 0x44550c8080000000L, false, 0, 0x0L), + 4 + ), + 1176222 + ); + + // gentest-5502 + assertEqual( + perft( + Board(0x410d2688800000L, 0x10000000000002L, 0x8000002000000L, 0x4100000000200L, 0x8000000000020000L, + 0x8000001000L, 0x11260a821202L, 0x805d0c8080000000L, true, 0, 0x0L), + 4 + ), + 1076551 + ); + + // gentest-5503 + assertEqual( + perft( + Board(0x410d2688800000L, 0x10000010000000L, 0x8000002000000L, 0x4100000000200L, 0x100000000020000L, + 0x8000001000L, 0x11261a821200L, 0x15d0c8080000000L, false, 0, 0x0L), + 4 + ), + 1018531 + ); + + // gentest-5504 + assertEqual( + perft( + Board(0x41092688800000L, 0x10000000002000L, 0x8000002000000L, 0x400100000000200L, 0x100000000020000L, + 0x8000001000L, 0x11240a823200L, 0x559088280000000L, true, 0, 0x0L), + 4 + ), + 1472399 + ); + + // gentest-5505 + assertEqual( + perft( + Board(0x41092688800000L, 0x10000000002000L, 0x40002000000L, 0x400100000000200L, 0x100000000040000L, + 0x8000000020L, 0x11240a842220L, 0x5510c8280000000L, false, 0, 0x0L), + 4 + ), + 1051947 + ); + + // gentest-5506 + assertEqual( + perft( + Board(0x41092688800000L, 0x4000000000002000L, 0x12000000L, 0x400100000000200L, 0x100000000000400L, + 0x8000000020L, 0x11240a802620L, 0x4541088290000000L, true, 0, 0x0L), + 4 + ), + 1001344 + ); + + // gentest-5507 + assertEqual( + perft( + Board(0x1096688800000L, 0x4000000000002000L, 0x12000000L, 0x400200000000200L, 0x100000000000400L, + 0x8000000040L, 0x21240a802640L, 0x450108c290000000L, false, 0, 0x0L), + 4 + ), + 803780 + ); + + // gentest-5508 + assertEqual( + perft( + Board(0x1096688800000L, 0x4000000000002000L, 0x140000000L, 0x400200000000200L, 0x100000000000400L, + 0x8000000040L, 0x212508802640L, 0x450108c2c0000000L, true, 0, 0x0L), + 4 + ), + 949008 + ); + + // gentest-5509 + assertEqual( + perft( + Board(0x1096688800000L, 0x4000000000002000L, 0x140000000L, 0x24000000000200L, 0x100000000000002L, + 0x8000000040L, 0x20012508802242L, 0x410508c2c0000000L, false, 0, 0x0L), + 4 + ), + 1356787 + ); + + // gentest-5510 + assertEqual( + perft( + Board(0x1016e88800000L, 0x4000000000002000L, 0x140000000L, 0x80000000000200L, 0x100000000000002L, + 0x8000000040L, 0x12508802242L, 0x418100cac0000000L, true, 0, 0x0L), + 4 + ), + 760543 + ); + + // gentest-5511 + assertEqual( + perft( + Board(0x1254a88800000L, 0x4000000000002000L, 0x100200000L, 0x80000000000200L, 0x100000000000002L, + 0x8000000040L, 0x250108802242L, 0x418100ca80200000L, false, 0, 0x0L), + 4 + ), + 883437 + ); + + // gentest-5512 + assertEqual( + perft( + Board(0x1254a88800000L, 0x4000000000000080L, 0x100000008L, 0x8000000000200L, 0x100000000000002L, + 0x8000000040L, 0x2501088002c2L, 0x410900ca80000008L, true, 0, 0x0L), + 4 + ), + 756254 + ); + + // gentest-5513 + assertEqual( + perft( + Board(0x1254a88800000L, 0x4000000000000080L, 0x100000000L, 0x8000000002000L, 0x2000000000000008L, + 0x8000000040L, 0x2501088020c8L, 0x600900ca80000000L, false, 0, 0x0L), + 4 + ), + 116583 + ); + + // gentest-5514 + assertEqual( + perft( + Board(0x9214a88800000L, 0x10000000000080L, 0x100000000L, 0x2000L, 0x2000000000000008L, + 0x400000000040L, 0x82101088020c8L, 0x2011404a80000000L, true, 0, 0x0L), + 4 + ), + 617680 + ); + + // gentest-5515 + assertEqual( + perft( + Board(0x9214a88800000L, 0x40000000080L, 0x100000000L, 0x4000L, 0x2000000000000010L, 0x400000000040L, + 0x82101088040d0L, 0x2001444a80000000L, false, 0, 0x0L), + 4 + ), + 1291688 + ); + + // gentest-5516 + assertEqual( + perft( + Board(0x1214a88800000L, 0x1000000080L, 0x800000100000000L, 0x4000L, 0x2000000000000010L, + 0x80000000000040L, 0x8002101088040d0L, 0x2081005a80000000L, true, 0, 0x0L), + 4 + ), + 863523 + ); + + // gentest-5517 + assertEqual( + perft( + Board(0x1214a88800000L, 0x40000002000L, 0x20100000000L, 0x4000L, 0x2000000000000010L, + 0x80000000000040L, 0x230108806050L, 0x2081044a80000000L, false, 0, 0x0L), + 4 + ), + 911833 + ); + + // gentest-5518 + assertEqual( + perft( + Board(0x1214a88800000L, 0x200000000002000L, 0x4000100000000L, 0x4000L, 0x800000000000010L, + 0x80000000000040L, 0x4210108806050L, 0xa81004a80000000L, true, 0, 0x0L), + 4 + ), + 559043 + ); + + // gentest-5519 + assertEqual( + perft( + Board(0x1214a88800000L, 0x200000000002000L, 0x4000100000000L, 0x4000L, 0x80000000010L, + 0x80000000000040L, 0x4210108806050L, 0x281084a80000000L, false, 0, 0x0L), + 4 + ), + 761468 + ); + + // gentest-5520 + assertEqual( + perft( + Board(0x1214a88800000L, 0x200000000002000L, 0x40000L, 0x4000L, 0x400000010L, 0x80000000000040L, + 0x210008846050L, 0x281004e80000000L, true, 0, 0x0L), + 4 + ), + 411603 + ); + + // gentest-5521 + assertEqual( + perft( + Board(0x1214a88800000L, 0x8000000080000L, 0x40000L, 0x4000L, 0x400000800L, 0x80000000000040L, + 0x2100088c4840L, 0x89004e80000000L, false, 0, 0x0L), + 4 + ), + 607248 + ); + + // gentest-5522 + assertEqual( + perft( + Board(0x1214a88800000L, 0x8000000000004L, 0x40000L, 0x4000L, 0x100000800L, 0x80000000000040L, + 0x210008844844L, 0x89004b80000000L, true, 0, 0x0L), + 4 + ), + 399305 + ); + + // gentest-5523 + assertEqual( + perft( + Board(0x1010a88800000L, 0x200000000004L, 0x1L, 0x4000L, 0x4100000000L, 0x80000000000040L, + 0x14008804045L, 0x81200b80000000L, false, 0, 0x0L), + 4 + ), + 352607 + ); + + // gentest-5524 + assertEqual( + perft( + Board(0x1010a88800000L, 0x10000004L, 0x1L, 0x40000000L, 0x4001000000L, 0x80000000000040L, + 0x14048800045L, 0x81000a91000000L, true, 0, 0x0L), + 4 + ), + 217121 + ); + + // gentest-5525 + assertEqual( + perft( + Board(0x1010a88800000L, 0x200000001000L, 0x1L, 0x20000000L, 0x4001000000L, 0x80000000000040L, + 0x14028801041L, 0x81200a81000000L, false, 0, 0x0L), + 4 + ), + 256363 + ); + + // gentest-5526 + assertEqual( + perft( + Board(0x1010a88800000L, 0x40001000L, 0x1L, 0x20L, 0x4000000008L, 0x80000000000040L, 0x14008801061L, + 0x81000ac0000008L, true, 0, 0x0L), + 4 + ), + 211248 + ); + + // gentest-5527 + assertEqual( + perft( + Board(0x1010a88800000L, 0x1000L, 0x1L, 0x8L, 0x40000800L, 0x80000000000040L, 0x10048801049L, + 0x81000a80000800L, false, 0, 0x0L), + 4 + ), + 189715 + ); + + // gentest-5528 + assertEqual( + perft( + Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x40000800L, 0x80000000008000L, 0x10048809001L, + 0x81000a80000800L, true, 0, 0x0L), + 4 + ), + 92560 + ); + + // gentest-5529 + assertEqual( + perft( + Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x2000000000000800L, 0x4000000000008000L, + 0x2000010008809001L, 0x4001000a80000800L, false, 0, 0x0L), + 4 + ), + 9867 + ); + + // gentest-5530 + assertEqual( + perft( + Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x800L, 0x40000000008000L, 0x10008809001L, + 0x41000a80000800L, true, 0, 0x0L), + 4 + ), + 24957 + ); + + // gentest-5531 + assertEqual( + perft( + Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x8L, 0x40000000004000L, 0x10008805001L, + 0x41000a80000008L, false, 0, 0x0L), + 4 + ), + 40288 + ); + + // gentest-5532 + assertEqual( + perft( + Board(0x1010a88800000L, 0x1000L, 0x1L, 0x0L, 0x8L, 0x20000000002000L, 0x10008803001L, + 0x21000a80000008L, true, 0, 0x0L), + 4 + ), + 46659 + ); + + // gentest-5533 + assertEqual( + perft( + Board(0x1010a88800000L, 0x40000L, 0x1L, 0x0L, 0x4L, 0x20000000200000L, 0x10008a40001L, + 0x21000a80000004L, false, 0, 0x0L), + 4 + ), + 62512 + ); + + // gentest-5534 + assertEqual( + perft( + Board(0x1010a88800000L, 0x40000L, 0x1L, 0x0L, 0x20000000L, 0x10000000001000L, 0x10008841001L, + 0x11000aa0000000L, true, 0, 0x0L), + 4 + ), + 70889 + ); + + // gentest-5535 + assertEqual( + perft( + Board(0x1010888800000L, 0x200000000L, 0x1L, 0x0L, 0x400000L, 0x10000000000008L, 0x10208800009L, + 0x11000880400000L, false, 0, 0x0L), + 4 + ), + 63172 + ); + + // gentest-5536 + assertEqual( + perft( + Board(0x1010888800000L, 0x200000000L, 0x1L, 0x0L, 0x4000000000L, 0x10000000000004L, 0x10208800005L, + 0x11004880000000L, true, 0, 0x0L), + 4 + ), + 21627 + ); + + // gentest-5537 + assertEqual( + perft( + Board(0x1010888800000L, 0x200000000L, 0x1L, 0x0L, 0x200000000000L, 0x10000000020000L, 0x10208820001L, + 0x11200880000000L, false, 0, 0x0L), + 4 + ), + 90101 + ); + + // gentest-5538 + assertEqual( + perft( + Board(0x1010888000000L, 0x200000000L, 0x1L, 0x0L, 0x800000L, 0x10000002000000L, 0x1020a000001L, + 0x11000880800000L, true, 0, 0x0L), + 4 + ), + 56081 + ); + + // gentest-5539 + assertEqual( + perft( + Board(0x1010888000000L, 0x40000L, 0x1L, 0x0L, 0x4000L, 0x10000100000000L, 0x10108040001L, + 0x11000880004000L, false, 0, 0x0L), + 4 + ), + 77193 + ); + + // gentest-5540 + assertEqual( + perft( + Board(0x1010888000000L, 0x40000L, 0x200L, 0x0L, 0x10000000L, 0x100100000000L, 0x10108040200L, + 0x1100890000000L, true, 0, 0x0L), + 4 + ), + 87276 + ); + + // gentest-5541 + assertEqual( + perft( + Board(0x1010088000000L, 0x20000000000L, 0x200L, 0x0L, 0x1000L, 0x100100000000L, 0x30108000200L, + 0x1100080001000L, false, 0, 0x0L), + 4 + ), + 74202 + ); + + // gentest-5542 + assertEqual( + perft( + Board(0x1010088000000L, 0x20000000000L, 0x200L, 0x0L, 0x100000000000L, 0x2002000000L, 0x3000a000200L, + 0x1102080000000L, true, 0, 0x0L), + 4 + ), + 160899 + ); + + // gentest-5543 + assertEqual( + perft( + Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x80000000000L, 0x2004000000L, 0x1000d000200L, + 0x1082080000000L, false, 0, 0x0L), + 4 + ), + 92037 + ); + + // gentest-5544 + assertEqual( + perft( + Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x20000000000L, 0x2200000000L, 0x10209000200L, + 0x1022080000000L, true, 0, 0x0L), + 4 + ), + 6675 + ); + + // gentest-5545 + assertEqual( + perft( + Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x400000000000L, 0x2400000000L, 0x10409000200L, + 0x1402080000000L, false, 0, 0x0L), + 4 + ), + 72558 + ); + + // gentest-5546 + assertEqual( + perft( + Board(0x1010088000000L, 0x1000000L, 0x200L, 0x0L, 0x200000L, 0x2004000000L, 0x1000d000200L, + 0x1002080200000L, true, 0, 0x0L), + 4 + ), + 89228 + ); + + // gentest-5547 + assertEqual( + perft( + Board(0x1010880000000L, 0x1000000L, 0x200L, 0x0L, 0x20000000L, 0x2000020000L, 0x10801020200L, + 0x10020a0000000L, false, 0, 0x0L), + 4 + ), + 118995 + ); + + // gentest-5548 + assertEqual( + perft( + Board(0x1010880000000L, 0x1000000L, 0x4L, 0x0L, 0x4000000000000L, 0x1000020000L, 0x10801020004L, + 0x5001080000000L, true, 0, 0x0L), + 4 + ), + 110308 + ); + + // gentest-5549 + assertEqual( + perft( + Board(0x1010880000000L, 0x1000000L, 0x800000000000L, 0x0L, 0x8000000000000L, 0x1000020000L, + 0x810801020000L, 0x9001080000000L, false, 0, 0x0L), + 4 + ), + 130640 + ); + + // gentest-5550 + assertEqual( + perft( + Board(0x1010080000000L, 0x1000000L, 0x800000000000L, 0x0L, 0x8000000L, 0x1000040000L, 0x810001040000L, + 0x1001088000000L, true, 0, 0x0L), + 4 + ), + 15699 + ); + + // gentest-5551 + assertEqual( + perft( + Board(0x1010080000000L, 0x0L, 0x800000000000L, 0x0L, 0x0L, 0x1001000000L, 0x810001000000L, + 0x1001080000000L, false, 0, 0x0L), + 4 + ), + 9488 + ); + + // gentest-5552 + assertEqual( + perft( + Board(0x1010000800000L, 0x0L, 0x800000000000L, 0x0L, 0x0L, 0x100200000000L, 0x810200000000L, + 0x1100000800000L, true, 0, 0x0L), + 4 + ), + 10741 + ); + + // gentest-5553 + assertEqual( + perft( + Board(0x1010000800000L, 0x0L, 0x100000000L, 0x0L, 0x0L, 0x8000200000000L, 0x10300000000L, + 0x9000000800000L, false, 0, 0x0L), + 4 + ), + 6064 + ); + + // gentest-5554 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5555 + assertEqual( + perft( + Board(0xfd020000609f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x609fffL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 214121 + ); + + // gentest-5556 + assertEqual( + perft( + Board(0xf9020402609d00L, 0x4000010000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2609dffL, 0xfdf9030400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 253898 + ); + + // gentest-5557 + assertEqual( + perft( + Board(0x79028402689500L, 0x4000010000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2e895bfL, 0xfd79038400000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 468178 + ); + + // gentest-5558 + assertEqual( + perft( + Board(0x69029402689500L, 0x4000010020000002L, 0x2400000000000024L, 0x100800000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x226895bfL, 0x7d69839400000000L, true, 0, + 0x100000000000081L), + 4 + ), + 1066043 + ); + + // gentest-5559 + assertEqual( + perft( + Board(0x690214c2289500L, 0x4000010020000002L, 0x2400000000800004L, 0x100800000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x62a8959fL, 0x7d69831480000000L, false, 0, + 0x100000000000081L), + 4 + ), + 1012871 + ); + + // gentest-5560 + assertEqual( + perft( + Board(0x690214ca209500L, 0x4000010020000002L, 0x410000000800004L, 0x100040000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x6aa0959fL, 0x5d79071480000000L, true, 0, + 0x100000000000081L), + 4 + ), + 1173039 + ); + + // gentest-5561 + assertEqual( + perft( + Board(0x690214ca209500L, 0x4000010800000002L, 0x400080000900000L, 0x100040000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x84ab0959bL, 0x5d690f1480000000L, false, 0, + 0x100000000000081L), + 4 + ), + 1019226 + ); + + // gentest-5562 + assertEqual( + perft( + Board(0x690210c8249100L, 0x4000010800000002L, 0x400080000900000L, 0x100040000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x848b0919bL, 0x5d690f1080040000L, true, 0, + 0x100000000000081L), + 4 + ), + 1211094 + ); + + // gentest-5563 + assertEqual( + perft( + Board(0x690210e8049100L, 0x4000000802000002L, 0x400080000900000L, 0x100040000000081L, + 0x800000000000800L, 0x1000000000000010L, 0x868909993L, 0x5d690e1082040000L, false, 0, + 0x100000000000081L), + 4 + ), + 1025611 + ); + + // gentest-5564 + assertEqual( + perft( + Board(0x690200e8049100L, 0x4000000802000002L, 0x90000100020L, 0x100040000000081L, 0x800000000000800L, + 0x1000000000000010L, 0x8601099b3L, 0x59690f008a040000L, true, 0, 0x100000000000081L), + 4 + ), + 1283262 + ); + + // gentest-5565 + assertEqual( + perft( + Board(0x690200e8049100L, 0x4010000000000002L, 0x90000100020L, 0x100040000000081L, 0x800000000000400L, + 0x1000000000000010L, 0x100000601095b3L, 0x59690f0088040000L, false, 0, 0x100000000000081L), + 4 + ), + 1649814 + ); + + // gentest-5566 + assertEqual( + perft( + Board(0x490220e8049100L, 0x4000400000000002L, 0x80004100020L, 0x100040000000081L, 0x800000000000400L, + 0x1000000000000010L, 0x4000601095b3L, 0x59490e208c040000L, true, 0, 0x100000000000081L), + 4 + ), + 1702304 + ); + + // gentest-5567 + assertEqual( + perft( + Board(0x490220e8049100L, 0x4000400000000002L, 0x80004002020L, 0x100040000000081L, 0x4000080000L, + 0x1000000000000010L, 0x40006008b1b3L, 0x51490e608c040000L, false, 0, 0x100000000000081L), + 4 + ), + 2258812 + ); + + // gentest-5568 + assertEqual( + perft( + Board(0x490220e0049100L, 0x4000400000000000L, 0x4012020L, 0x100040000000081L, 0x4000080000L, + 0x1000000000000010L, 0x40006008b1b1L, 0x5149066084050000L, true, 0, 0x100000000000081L), + 4 + ), + 2868997 + ); + + // gentest-5569 + assertEqual( + perft( + Board(0x490220e0049100L, 0x4000400000000000L, 0x4012020L, 0x100000400000081L, 0x4000000002L, + 0x1000000000000008L, 0x40006000b1abL, 0x5149026484050000L, false, 0, 0x100000000000000L), + 4 + ), + 1655001 + ); + + // gentest-5570 + assertEqual( + perft( + Board(0x490220e0049100L, 0x4000400000000000L, 0x4010030L, 0x200000400000081L, 0x10000000000002L, + 0x1000000000000008L, 0x4000600091bbL, 0x5259022484050000L, true, 0, 0x0L), + 4 + ), + 1563050 + ); + + // gentest-5571 + assertEqual( + perft( + Board(0x490220e0049100L, 0x4000400000000000L, 0x4010820L, 0x200000400000081L, 0x180000L, + 0x1000000000000008L, 0x4000600899a9L, 0x5249022484150000L, false, 0, 0x0L), + 4 + ), + 1863274 + ); + + // gentest-5572 + assertEqual( + perft( + Board(0x490220e0049100L, 0x4000400000000000L, 0x4000224L, 0x204000000000081L, 0x180000L, + 0x1000000000000008L, 0x4000600891adL, 0x524d022084140200L, true, 0, 0x0L), + 4 + ), + 1590470 + ); + + // gentest-5573 + assertEqual( + perft( + Board(0x490220e0049100L, 0x4000001000000000L, 0x4004204L, 0x204000000000081L, 0x8080000L, + 0x1000000000000008L, 0x106008d18dL, 0x524d02208c040200L, false, 0, 0x0L), + 4 + ), + 1939118 + ); + + // gentest-5574 + assertEqual( + perft( + Board(0x490260a0049100L, 0x4000001000000000L, 0x100000004204L, 0x204000000000081L, 0x8080000L, + 0x2000000000000008L, 0x502008d18dL, 0x624d122088040200L, true, 0, 0x0L), + 4 + ), + 1633502 + ); + + // gentest-5575 + assertEqual( + perft( + Board(0x490260a0049100L, 0x4000001000000000L, 0x24a00L, 0x204000000000081L, 0x8080000L, + 0x2000000000000010L, 0x502008d991L, 0x624d022088060200L, false, 0, 0x0L), + 4 + ), + 3328420 + ); + + // gentest-5576 + assertEqual( + perft( + Board(0x490260a0049100L, 0x801000000000L, 0x820a00L, 0x200000004000081L, 0x8080000L, + 0x2000000000000010L, 0x5020889991L, 0x224982208c060200L, true, 0, 0x0L), + 4 + ), + 2035363 + ); + + // gentest-5577 + assertEqual( + perft( + Board(0x490260b1048000L, 0x801000000000L, 0x820a00L, 0x200000004000081L, 0x80000L, + 0x2000000000000010L, 0x5031808891L, 0x22498220840e0200L, false, 0, 0x0L), + 4 + ), + 1109610 + ); + + // gentest-5578 + assertEqual( + perft( + Board(0x490260b1048000L, 0x801000000000L, 0x820200L, 0x200000004000081L, 0x80000000000L, + 0x2000000000000020L, 0x50318080a1L, 0x22498a2084060200L, true, 0, 0x0L), + 4 + ), + 1366466 + ); + + // gentest-5579 + assertEqual( + perft( + Board(0x490260b1048000L, 0x801000000000L, 0x820200L, 0x2000004000081L, 0x80000000000L, + 0x2000000000000020L, 0x50318080a1L, 0x204b8a2084060200L, false, 0, 0x0L), + 4 + ), + 1181707 + ); + + // gentest-5580 + assertEqual( + perft( + Board(0x490260b1048000L, 0x20001000000000L, 0x820200L, 0x2000004000088L, 0x800000000000L, + 0x2000000000000020L, 0x50318080a8L, 0x206b822084060200L, true, 0, 0x0L), + 4 + ), + 1383326 + ); + + // gentest-5581 + assertEqual( + perft( + Board(0x410220b1048000L, 0x4004000000L, 0x820200L, 0xa000000000080L, 0x800000000000L, + 0x2000000000000020L, 0x80000358080a0L, 0x2043826080060200L, false, 0, 0x0L), + 4 + ), + 995011 + ); + + // gentest-5582 + assertEqual( + perft( + Board(0x410220b1008400L, 0x4004000000L, 0x820200L, 0x4000000000080L, 0x800000000000L, + 0x2000000000000020L, 0x40000358080a0L, 0x2041826080020600L, true, 0, 0x0L), + 4 + ), + 977558 + ); + + // gentest-5583 + assertEqual( + perft( + Board(0x410220b1008000L, 0x4004000000L, 0x820200L, 0x4000000000080L, 0x800000000004L, + 0x2000000000002000L, 0x400003580a080L, 0x2041826080020204L, false, 0, 0x0L), + 4 + ), + 1325374 + ); + + // gentest-5584 + assertEqual( + perft( + Board(0x410220b1008000L, 0x100004000000L, 0x820200L, 0x400000080L, 0x400000000004L, + 0x2000000000002000L, 0x43580a080L, 0x2041522080020204L, true, 0, 0x0L), + 4 + ), + 1527488 + ); + + // gentest-5585 + assertEqual( + perft( + Board(0x400320b1008000L, 0x180000000000L, 0x820200L, 0x200000080L, 0x400000000004L, + 0x2000000000002000L, 0x8023180a080L, 0x2040532080020204L, false, 0, 0x0L), + 4 + ), + 1283662 + ); + + // gentest-5586 + assertEqual( + perft( + Board(0x400320b1008000L, 0x84000000000L, 0x820200L, 0x200000080L, 0x400000000400L, + 0x2000000000100000L, 0x80231908080L, 0x2040436080020600L, true, 0, 0x0L), + 4 + ), + 1559496 + ); + + // gentest-5587 + assertEqual( + perft( + Board(0x400320b1008000L, 0x84000000000L, 0x820000L, 0x200000010L, 0x400000000400L, + 0x2000000008000000L, 0x80239808010L, 0x2040436080020400L, false, 0, 0x0L), + 4 + ), + 1115236 + ); + + // gentest-5588 + assertEqual( + perft( + Board(0x400320b1008000L, 0x20004000000000L, 0x820000L, 0x200000010L, 0x1000400000000000L, + 0x2000000008000000L, 0x20000239808010L, 0x3040436080020000L, true, 0, 0x0L), + 4 + ), + 1427359 + ); + + // gentest-5589 + assertEqual( + perft( + Board(0x400320b1008000L, 0x20000000800000L, 0x20000L, 0x400000008L, 0x1000400000000000L, + 0x2000000008000000L, 0x20000439008008L, 0x3040432080820000L, false, 0, 0x0L), + 4 + ), + 1296781 + ); + + // gentest-5590 + assertEqual( + perft( + Board(0x400320b1008000L, 0x20000000800000L, 0x20000L, 0x800000008L, 0x400000000020L, + 0x2000000008000000L, 0x20000839008008L, 0x2040432080820020L, true, 0, 0x0L), + 4 + ), + 973768 + ); + + // gentest-5591 + assertEqual( + perft( + Board(0x400221b1008000L, 0x20000000800000L, 0x20000L, 0x4000008L, 0x400000000020L, + 0x2000000008000000L, 0x2000003d008008L, 0x2040422180820020L, false, 0, 0x0L), + 4 + ), + 705031 + ); + + // gentest-5592 + assertEqual( + perft( + Board(0x400221b1008000L, 0x4000800000L, 0x20000L, 0x4000008L, 0x400000000020L, 0x2000000008000000L, + 0x403d008008L, 0x2040422180820020L, true, 0, 0x0L), + 4 + ), + 680412 + ); + + // gentest-5593 + assertEqual( + perft( + Board(0x400023b1008000L, 0xa00000L, 0x20000L, 0x4000008L, 0x400000000020L, 0x2000001000000000L, + 0x1035208008L, 0x2040402380820020L, false, 0, 0x0L), + 4 + ), + 1162024 + ); + + // gentest-5594 + assertEqual( + perft( + Board(0x400023b1008000L, 0xa00000L, 0x20000L, 0x4000000000008L, 0x400040L, 0x2000001000000000L, + 0x4001031208008L, 0x2040002380c20040L, true, 0, 0x0L), + 4 + ), + 1564566 + ); + + // gentest-5595 + assertEqual( + perft( + Board(0x400023b1008000L, 0x800800L, 0x20000000000000L, 0x4000000080000L, 0x400040L, + 0x2000001000000000L, 0x4001031088800L, 0x2060002380c00040L, false, 0, 0x0L), + 4 + ), + 1495464 + ); + + // gentest-5596 + assertEqual( + perft( + Board(0x400023b1008000L, 0x800800L, 0x20000000000000L, 0x80000L, 0x400040L, 0x2000001000000000L, + 0x1031088800L, 0x2060002380c00040L, true, 0, 0x0L), + 4 + ), + 682634 + ); + + // gentest-5597 + assertEqual( + perft( + Board(0x400023b1008000L, 0x800800L, 0x100000000000L, 0x800000000L, 0x400040L, 0x2000080000000000L, + 0x80831008800L, 0x2040102380c00040L, false, 0, 0x0L), + 4 + ), + 568295 + ); + + // gentest-5598 + assertEqual( + perft( + Board(0x400001b1008000L, 0x800800L, 0x100000000000L, 0x200000000L, 0x400080L, 0x2000080000000000L, + 0x80221008800L, 0x2040100190c00080L, true, 0, 0x0L), + 4 + ), + 873929 + ); + + // gentest-5599 + assertEqual( + perft( + Board(0x400000b1008000L, 0x800800L, 0x20000L, 0x8000000000L, 0x400080L, 0x2000080000000000L, + 0x88021008800L, 0x2040000090c20080L, false, 0, 0x0L), + 4 + ), + 688179 + ); + + // gentest-5600 + assertEqual( + perft( + Board(0x40000030008000L, 0x800800L, 0x1000000L, 0x80000000L, 0x400008L, 0x2000080000000000L, + 0x800a0008800L, 0x2040000011c00008L, true, 0, 0x0L), + 4 + ), + 294358 + ); + + def batch14(): Unit = + // gentest-5601 + assertEqual( + perft( + Board(0x40000030008000L, 0x800002L, 0x1000000L, 0x80000000L, 0x400020L, 0x2000001000000000L, + 0x10a0008002L, 0x2040000011c00020L, false, 0, 0x0L), + 4 + ), + 390158 + ); + + // gentest-5602 + assertEqual( + perft( + Board(0x40000030400000L, 0x800002L, 0x1000000L, 0x80000000L, 0x80000L, 0x2000001000000000L, + 0x10a0400002L, 0x2040000011880000L, true, 0, 0x0L), + 4 + ), + 195572 + ); + + // gentest-5603 + assertEqual( + perft( + Board(0x40000030400000L, 0x800002L, 0x40000000000L, 0x8000000000L, 0x80000L, 0x2000001000000000L, + 0x9020400002L, 0x2040040010880000L, false, 0, 0x0L), + 4 + ), + 213530 + ); + + // gentest-5604 + assertEqual( + perft( + Board(0x40000030400000L, 0x810000L, 0x1000000L, 0x8000000000L, 0x80000L, 0x2000001000000000L, + 0x9020410000L, 0x2040000011880000L, true, 0, 0x0L), + 4 + ), + 223317 + ); + + // gentest-5605 + assertEqual( + perft( + Board(0x40000030400000L, 0x810000L, 0x1000000L, 0x100000000000000L, 0x80000L, 0x10001000000000L, + 0x100001020410000L, 0x50000011880000L, false, 0, 0x0L), + 4 + ), + 291708 + ); + + // gentest-5606 + assertEqual( + perft( + Board(0x40000030400000L, 0x810000L, 0x1000000L, 0x100000000000000L, 0x20000000000000L, + 0x10002000000000L, 0x100002020410000L, 0x70000011800000L, true, 0, 0x0L), + 4 + ), + 36981 + ); + + // gentest-5607 + assertEqual( + perft( + Board(0x40000020400000L, 0x810000L, 0x1000000L, 0x800000000000000L, 0x100L, 0x10000010000000L, + 0x800000030410000L, 0x50000001800100L, false, 0, 0x0L), + 4 + ), + 292052 + ); + + // gentest-5608 + assertEqual( + perft( + Board(0x40000020400000L, 0x4800000L, 0x1000000L, 0x800000000000000L, 0x2000000000000000L, + 0x10000010000000L, 0x800000034400000L, 0x2050000001800000L, true, 0, 0x0L), + 4 + ), + 347610 + ); + + // gentest-5609 + assertEqual( + perft( + Board(0x40000020400000L, 0x810000L, 0x1000000L, 0x800000000000000L, 0x2000000000L, 0x10000000100000L, + 0x800000020510000L, 0x50002001800000L, false, 0, 0x0L), + 4 + ), + 438427 + ); + + // gentest-5610 + assertEqual( + perft( + Board(0x40000000400000L, 0x810000L, 0x1000000L, 0x800000000000000L, 0x20000000L, 0x10000000080000L, + 0x800000000490000L, 0x50000021800000L, true, 0, 0x0L), + 4 + ), + 317229 + ); + + // gentest-5611 + assertEqual( + perft( + Board(0x40000040000000L, 0x810000L, 0x1000000L, 0x1000000000000000L, 0x200000000000000L, + 0x10000000080000L, 0x1000000040090000L, 0x250000001800000L, false, 0, 0x0L), + 4 + ), + 66477 + ); + + // gentest-5612 + assertEqual( + perft( + Board(0x40000040000000L, 0x2400L, 0x1000000L, 0x1000000000000000L, 0x200000000000000L, + 0x200000080000L, 0x1000000040080400L, 0x240200001002000L, true, 0, 0x0L), + 4 + ), + 123973 + ); + + // gentest-5613 + assertEqual( + perft( + Board(0x40000040000000L, 0x2400L, 0x1000000L, 0x1000000000000000L, 0x200000000000000L, 0x4400000000L, + 0x1000000440000400L, 0x240004001002000L, false, 0, 0x0L), + 4 + ), + 345784 + ); + + // gentest-5614 + assertEqual( + perft( + Board(0x40000040000000L, 0x2000L, 0x1000000L, 0x1000000000000000L, 0x400L, 0x4008000000L, + 0x1000000048000000L, 0x40004001002400L, true, 0, 0x0L), + 4 + ), + 237206 + ); + + // gentest-5615 + assertEqual( + perft( + Board(0x40004000000000L, 0x2000L, 0x1000000L, 0x400000000000000L, 0x400L, 0x800008000000L, + 0x400004008000000L, 0x40800001002400L, false, 0, 0x0L), + 4 + ), + 24573 + ); + + // gentest-5616 + assertEqual( + perft( + Board(0x40000000000000L, 0x2000L, 0x1000000L, 0x1000000000000000L, 0x4L, 0x4008000000L, + 0x1000000008000000L, 0x40004001002004L, true, 0, 0x0L), + 4 + ), + 258671 + ); + + // gentest-5617 + assertEqual( + perft( + Board(0x40000000000000L, 0x10000000L, 0x1000000L, 0x4000000000000000L, 0x4L, 0x5000000000L, + 0x4000001000000000L, 0x40004011000004L, false, 0, 0x0L), + 4 + ), + 160121 + ); + + // gentest-5618 + assertEqual( + perft( + Board(0x40000000000000L, 0x200000000000L, 0x8L, 0x1000000000000000L, 0x4L, 0x5000000000L, + 0x1000001000000000L, 0x4020400000000cL, true, 0, 0x0L), + 4 + ), + 171119 + ); + + // gentest-5619 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000000000L, 0x4L, 0x4008000000L, + 0x200000008000000L, 0x4000404000000cL, false, 0, 0x0L), + 4 + ), + 176665 + ); + + // gentest-5620 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000000000L, 0x10L, 0x4010000000L, + 0x200000010000000L, 0x40004040000018L, true, 0, 0x0L), + 4 + ), + 50885 + ); + + // gentest-5621 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000000000L, 0x800L, 0x4004000000L, + 0x200000004000000L, 0x40004040000808L, false, 0, 0x0L), + 4 + ), + 200412 + ); + + // gentest-5622 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000L, 0x100000000L, 0x24000000L, 0x204000000L, + 0x40000160000008L, true, 0, 0x0L), + 4 + ), + 215284 + ); + + // gentest-5623 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x200000000L, 0x100000000L, 0x2004000000L, 0x204000000L, + 0x40002140000008L, false, 0, 0x0L), + 4 + ), + 30398 + ); + + // gentest-5624 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x2000000000000L, 0x100000000L, 0x4400000L, + 0x2000004000000L, 0x40000140400008L, true, 0, 0x0L), + 4 + ), + 224598 + ); + + // gentest-5625 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x20000000000L, 0x8000000000L, 0x4400000L, 0x20004000000L, + 0x40008040400008L, false, 0, 0x0L), + 4 + ), + 272283 + ); + + // gentest-5626 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x8L, 0x80000000000L, 0x8000L, 0x4400000L, 0x80004000000L, + 0x40000040408008L, true, 0, 0x0L), + 4 + ), + 318116 + ); + + // gentest-5627 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x200000L, 0x80000L, 0x8000L, 0x4400000L, 0x4080000L, + 0x40000040608000L, false, 0, 0x0L), + 4 + ), + 183461 + ); + + // gentest-5628 + assertEqual( + perft( + Board(0x40000000000000L, 0x40000000L, 0x200000L, 0x40000L, 0x800000000000L, 0x4400000L, 0x4040000L, + 0x40800040600000L, true, 0, 0x0L), + 4 + ), + 184330 + ); + + // gentest-5629 + assertEqual( + perft( + Board(0x40000000000000L, 0x200000000000L, 0x200000L, 0x400000000000000L, 0x800000000000L, 0x420000L, + 0x400000000020000L, 0x40a00000600000L, false, 0, 0x0L), + 4 + ), + 543997 + ); + + // gentest-5630 + assertEqual( + perft( + Board(0x40000000000000L, 0x4000000000000000L, 0x10000000L, 0x2000000000000000L, 0x800000000000L, + 0x420000L, 0x2000000000020000L, 0x4040800010400000L, true, 0, 0x0L), + 4 + ), + 480341 + ); + + // gentest-5631 + assertEqual( + perft( + Board(0x40000000000000L, 0x4000000000000000L, 0x10000000L, 0x2000000000L, 0x800000000000L, + 0x40020000L, 0x2000020000L, 0x4040800050000000L, false, 0, 0x0L), + 4 + ), + 348721 + ); + + // gentest-5632 + assertEqual( + perft( + Board(0x40000000000000L, 0x4000000000000000L, 0x10000000L, 0x20000000000000L, 0x400000000000L, + 0x40020000L, 0x20000000020000L, 0x4040400050000000L, true, 0, 0x0L), + 4 + ), + 320491 + ); + + // gentest-5633 + assertEqual( + perft( + Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x200000000000000L, 0x400000000000L, + 0x40020000L, 0x200000000020000L, 0x40c00050000000L, false, 0, 0x0L), + 4 + ), + 282214 + ); + + // gentest-5634 + assertEqual( + perft( + Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x8000000000000000L, 0x80000000000L, 0x420000L, + 0x8000000000020000L, 0x40880010400000L, true, 0, 0x0L), + 4 + ), + 364395 + ); + + // gentest-5635 + assertEqual( + perft( + Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x2000000000000000L, 0x80000000000L, + 0x24000000L, 0x2000000004000000L, 0x40880030000000L, false, 0, 0x0L), + 4 + ), + 67005 + ); + + // gentest-5636 + assertEqual( + perft( + Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x4000000000000000L, 0x100000000000L, + 0x1004000000L, 0x4000000004000000L, 0x40901010000000L, true, 0, 0x0L), + 4 + ), + 67908 + ); + + // gentest-5637 + assertEqual( + perft( + Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x100000000000000L, 0x20000000000000L, + 0x1400000000L, 0x100000400000000L, 0x60801010000000L, false, 0, 0x0L), + 4 + ), + 314171 + ); + + // gentest-5638 + assertEqual( + perft( + Board(0x40000000000000L, 0x800000000000L, 0x10000000L, 0x100000000000000L, 0x100000000L, + 0x1200000000L, 0x100000200000000L, 0x40801110000000L, true, 0, 0x0L), + 4 + ), + 26563 + ); + + // gentest-5639 + assertEqual( + perft( + Board(0x40000000000000L, 0x800000000000L, 0x800000000L, 0x100000000L, 0x0L, 0x1400000000L, + 0x500000000L, 0x40801800000000L, false, 0, 0x0L), + 4 + ), + 88134 + ); + + // gentest-5640 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5641 + assertEqual( + perft( + Board(0x7f00800008f700L, 0x4200000000000042L, 0x2400000000100020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x18f7fbL, 0xff7f008000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 430274 + ); + + // gentest-5642 + assertEqual( + perft( + Board(0x7f00800008f700L, 0x4000040000000042L, 0x2400000020000020L, 0x180000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2008f7fbL, 0x7dff048000000000L, true, 0, + 0x100000000000081L), + 4 + ), + 552748 + ); + + // gentest-5643 + assertEqual( + perft( + Board(0x6f10800608f100L, 0x4000040000000042L, 0x2400000020000020L, 0x180000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2608f1fbL, 0x7def148000000000L, false, 0, + 0x100000000000081L), + 4 + ), + 1035570 + ); + + // gentest-5644 + assertEqual( + perft( + Board(0x6f10800608f100L, 0x4000040000000042L, 0x2400000000000020L, 0x180000000000081L, + 0x800000000000008L, 0x80000000010L, 0x608f1fbL, 0x6def1c8000000000L, true, 0, 0x81L), + 4 + ), + 506299 + ); + + // gentest-5645 + assertEqual( + perft( + Board(0x2f50800629d000L, 0x4000040000000042L, 0x2400000000000020L, 0x180000000000081L, + 0x800000000000008L, 0x80000000010L, 0x629d0fbL, 0x6daf5c8000000000L, false, 0, 0x81L), + 4 + ), + 485263 + ); + + // gentest-5646 + assertEqual( + perft( + Board(0x2e50810629d000L, 0x4000040000000042L, 0x2400000000000020L, 0x80010000000180L, + 0x800000000000008L, 0x80000000010L, 0x629d1faL, 0x6cae5d8100000000L, true, 0, 0x80L), + 4 + ), + 704735 + ); + + // gentest-5647 + assertEqual( + perft( + Board(0x2e50810429d000L, 0x4000000002000840L, 0x2400000000000020L, 0x80010000000180L, + 0x800000000000400L, 0x80000000010L, 0x429ddf0L, 0x6cae598102000000L, false, 0, 0x80L), + 4 + ), + 745446 + ); + + // gentest-5648 + assertEqual( + perft( + Board(0x2e50810429d000L, 0x4000000002000840L, 0x2400000000000020L, 0x81000000000180L, + 0x10000000000004L, 0x80000000010L, 0x429d9f4L, 0x64bf588102000000L, true, 0, 0x80L), + 4 + ), + 591189 + ); + + // gentest-5649 + assertEqual( + perft( + Board(0x2c508304699000L, 0x4000000012000040L, 0x2400000000000020L, 0x81000000000180L, + 0x10000000000004L, 0x80000000010L, 0x146991f4L, 0x64bd588302000000L, false, 0, 0x80L), + 4 + ), + 84386 + ); + + // gentest-5650 + assertEqual( + perft( + Board(0x28508704699000L, 0x4000004002000040L, 0x2400000000000020L, 0x81000000000180L, + 0x10000000000004L, 0x1000000010L, 0x40046991f4L, 0x64b9509702000000L, true, 0, 0x80L), + 4 + ), + 840246 + ); + + // gentest-5651 + assertEqual( + perft( + Board(0x2850870c619000L, 0x4000004002000040L, 0x2400000000000020L, 0x81000000000880L, + 0x10000000000004L, 0x200000000010L, 0x400c6198f4L, 0x64b9708702000000L, false, 0, 0x80L), + 4 + ), + 837936 + ); + + // gentest-5652 + assertEqual( + perft( + Board(0x2840870c619000L, 0x4000100002000040L, 0x440000000000020L, 0x180000000000880L, + 0x10000000000004L, 0x200000000010L, 0x10000c6198f4L, 0x45f8608702000000L, true, 0, 0x80L), + 4 + ), + 1199204 + ); + + // gentest-5653 + assertEqual( + perft( + Board(0x28408f04619000L, 0x4000100002000040L, 0x440000000000020L, 0x8100000000000880L, + 0x10000000000008L, 0x200000000010L, 0x1008046198f8L, 0xc578608702000000L, false, 0, 0x80L), + 4 + ), + 861685 + ); + + // gentest-5654 + assertEqual( + perft( + Board(0x2800cf04619000L, 0x4000100002000040L, 0x400800000000020L, 0x8100000000000880L, + 0x10000001000000L, 0x200000000010L, 0x1008056198f0L, 0xc538a0c702000000L, true, 0, 0x80L), + 4 + ), + 941711 + ); + + // gentest-5655 + assertEqual( + perft( + Board(0x28004f84619000L, 0x4000100002000040L, 0x400800000000020L, 0x8100000000000880L, + 0x10000000000400L, 0x200000002000L, 0x10080461bce0L, 0xc538a04782000000L, false, 0, 0x0L), + 4 + ), + 944516 + ); + + // gentest-5656 + assertEqual( + perft( + Board(0x28004f84219000L, 0x4000100002000040L, 0x2800000000020L, 0x8100000000000880L, 0x80000000400L, + 0x200000002000L, 0x10088421bce0L, 0xc12aa84702000000L, true, 0, 0x0L), + 4 + ), + 1811642 + ); + + // gentest-5657 + assertEqual( + perft( + Board(0x28004f84219000L, 0x4000140000000040L, 0x2800000800000L, 0x8100000000000880L, 0x80000000200L, + 0x200000002000L, 0x100884a1bac0L, 0xc12aac4700000000L, false, 0, 0x0L), + 4 + ), + 257913 + ); + + // gentest-5658 + assertEqual( + perft( + Board(0x28004f84219000L, 0x4000140000000040L, 0x2800000800000L, 0x8100000000000880L, 0x80000000004L, + 0x200000002000L, 0x100884a1b8c4L, 0xc12aac4700000000L, true, 0, 0x0L), + 4 + ), + 1724704 + ); + + // gentest-5659 + assertEqual( + perft( + Board(0x28004f84219000L, 0x4001100000000040L, 0x2800000800000L, 0x8100000000000880L, 0x80000000002L, + 0x200000100000L, 0x100884b198c2L, 0xc12ba84700000000L, false, 0, 0x0L), + 4 + ), + 1415536 + ); + + // gentest-5660 + assertEqual( + perft( + Board(0x28004784219000L, 0x4001100000000040L, 0x2800000000020L, 0x8100000000000880L, 0x800000002L, + 0x1000100000L, 0x1000843198e2L, 0xc12b805f00000000L, true, 0, 0x0L), + 4 + ), + 1242371 + ); + + // gentest-5661 + assertEqual( + perft( + Board(0x28004784219000L, 0x4001000000800000L, 0x2800000000020L, 0x8100000800000080L, 0x2L, + 0x100000100000L, 0x884b190a2L, 0xc12b904700000000L, false, 0, 0x0L), + 4 + ), + 762808 + ); + + // gentest-5662 + assertEqual( + perft( + Board(0x8404784219000L, 0x4001000000800000L, 0x2800000000020L, 0x8400000800000080L, 0x0L, + 0x100000100000L, 0x884b190a0L, 0xc40bd04700000000L, true, 0, 0x0L), + 4 + ), + 345777 + ); + + // gentest-5663 + assertEqual( + perft( + Board(0x8404784219000L, 0x4001000020000000L, 0x100800000000020L, 0x8400002000000080L, 0x0L, + 0x100000100000L, 0x20a43190a0L, 0xc509d04700000000L, false, 0, 0x0L), + 4 + ), + 39462 + ); + + // gentest-5664 + assertEqual( + perft( + Board(0x8404784219000L, 0x4001000020000000L, 0x100800000000020L, 0x8800000000000080L, 0x0L, + 0x2000000800L, 0xa42198a0L, 0xc909c06700000000L, true, 0, 0x0L), + 4 + ), + 334303 + ); + + // gentest-5665 + assertEqual( + perft( + Board(0x8404584219000L, 0x4001000020000000L, 0x100800000000020L, 0x8800000000000080L, 0x0L, + 0x2000000008L, 0xa02190a8L, 0xc909c06504000000L, false, 0, 0x0L), + 4 + ), + 257990 + ); + + // gentest-5666 + assertEqual( + perft( + Board(0x8404584219000L, 0x4000040020000000L, 0x2800000000020L, 0x8800000000000080L, 0x0L, + 0x2000000400L, 0xa02194a0L, 0xc80ac46504000000L, true, 0, 0x0L), + 4 + ), + 315508 + ); + + // gentest-5667 + assertEqual( + perft( + Board(0x8404504219000L, 0x4000040020000000L, 0x100800000000020L, 0x8800000000000080L, 0x0L, + 0x2000000008L, 0x40202190a8L, 0xc908c42504000000L, false, 0, 0x0L), + 4 + ), + 217168 + ); + + // gentest-5668 + assertEqual( + perft( + Board(0x8400504219000L, 0x4000040020000000L, 0x100800000800000L, 0xa000000000000080L, 0x0L, + 0x4000000008L, 0x20a19088L, 0xe108c44504000000L, true, 0, 0x0L), + 4 + ), + 320698 + ); + + // gentest-5669 + assertEqual( + perft( + Board(0x8400504219000L, 0x4000040000000000L, 0x100800000004000L, 0x8000000020000080L, 0x0L, + 0x4000000400L, 0x21d480L, 0xc108c44524000000L, false, 0, 0x0L), + 4 + ), + 321085 + ); + + // gentest-5670 + assertEqual( + perft( + Board(0x8400514218000L, 0x4001000000000000L, 0x100800000004000L, 0x8000000020000080L, 0x0L, + 0x8000000400L, 0x1021c480L, 0xc109c08524000000L, true, 0, 0x0L), + 4 + ), + 286674 + ); + + // gentest-5671 + assertEqual( + perft( + Board(0x8400515208000L, 0x1200000000000L, 0x100800000004000L, 0x8000000020000002L, 0x0L, + 0x8000000400L, 0x1120c402L, 0x8109e08524000000L, false, 0, 0x0L), + 4 + ), + 581684 + ); + + // gentest-5672 + assertEqual( + perft( + Board(0x480505208000L, 0x1200000000000L, 0x800010004000L, 0x8000000020000200L, 0x0L, 0x8000000400L, + 0x120c600L, 0x8001e88534000000L, true, 0, 0x0L), + 4 + ), + 127009 + ); + + // gentest-5673 + assertEqual( + perft( + Board(0x480505208000L, 0x240000000000L, 0x800010004000L, 0x8000000220000000L, 0x0L, 0x8000000800L, + 0x20120c800L, 0x8000ec8534000000L, false, 0, 0x0L), + 4 + ), + 493795 + ); + + // gentest-5674 + assertEqual( + perft( + Board(0x400d05208000L, 0x240000000000L, 0x800010004000L, 0x8000000280000000L, 0x0L, 0x8000040000L, + 0x20124c000L, 0x8000e48d94000000L, true, 0, 0x0L), + 4 + ), + 362688 + ); + + // gentest-5675 + assertEqual( + perft( + Board(0x400c05208000L, 0x240000000000L, 0x800010004000L, 0x8001000080000000L, 0x0L, 0x4000040000L, + 0x100000124c000L, 0x8000e44c94000000L, false, 0, 0x0L), + 4 + ), + 413835 + ); + + // gentest-5676 + assertEqual( + perft( + Board(0x400c05208000L, 0x200200000000000L, 0x800010004000L, 0x804000080000000L, 0x0L, 0x4000040000L, + 0x400000124c000L, 0xa00e04c94000000L, true, 0, 0x0L), + 4 + ), + 312853 + ); + + // gentest-5677 + assertEqual( + perft( + Board(0x400c05a00000L, 0x200200000000000L, 0x800010004000L, 0x808000080000000L, 0x0L, 0x2000040000L, + 0x8000001a44000L, 0xa00e02c94000000L, false, 0, 0x0L), + 4 + ), + 246547 + ); + + // gentest-5678 + assertEqual( + perft( + Board(0x4c05a00000L, 0x200200000000000L, 0x800000004002L, 0x840000080000000L, 0x0L, 0x2000040000L, + 0x40000001a44000L, 0xa00a06c84000002L, true, 0, 0x0L), + 4 + ), + 240946 + ); + + // gentest-5679 + assertEqual( + perft( + Board(0x4c05a00000L, 0x200008000000000L, 0x800000004002L, 0x820000080000000L, 0x0L, 0x2000040000L, + 0x20000001a44000L, 0xa0080ec84000002L, false, 0, 0x0L), + 4 + ), + 29518 + ); + + // gentest-5680 + assertEqual( + perft( + Board(0x4c05a00000L, 0x200008000000000L, 0x800000004002L, 0x2000080080000000L, 0x0L, 0x1000040000L, + 0x2000000001a44000L, 0x20088dc84000002L, true, 0, 0x0L), + 4 + ), + 202243 + ); + + // gentest-5681 + assertEqual( + perft( + Board(0x4c25800000L, 0x200008000000000L, 0x800000004002L, 0x2000080080000000L, 0x0L, 0x100000000200L, + 0x2000000021804200L, 0x20098cc84000002L, false, 0, 0x0L), + 4 + ), + 319345 + ); + + // gentest-5682 + assertEqual( + perft( + Board(0x4c25000000L, 0x200008000000000L, 0x800000000022L, 0x2000080000800000L, 0x0L, 0x8000000000200L, + 0x2000000021000220L, 0x20888cc04800002L, true, 0, 0x0L), + 4 + ), + 407948 + ); + + // gentest-5683 + assertEqual( + perft( + Board(0x4c01040000L, 0x200008000000000L, 0x800000000022L, 0x2000080000800000L, 0x0L, 0x8000000000004L, + 0x2000004001000024L, 0x208888c00840002L, false, 0, 0x0L), + 4 + ), + 492030 + ); + + // gentest-5684 + assertEqual( + perft( + Board(0x4c01040000L, 0x200008000000000L, 0x800000080002L, 0x2000200080000000L, 0x0L, 0x8000000000004L, + 0x2000004001080004L, 0x208a08c80040002L, true, 0, 0x0L), + 4 + ), + 591703 + ); + + // gentest-5685 + assertEqual( + perft( + Board(0x4c01040000L, 0x200008000000000L, 0x800000001002L, 0x800200080000000L, 0x0L, 0x10000000000004L, + 0x800004001001004L, 0x210a08c80040002L, false, 0, 0x0L), + 4 + ), + 676086 + ); + + // gentest-5686 + assertEqual( + perft( + Board(0x409040000L, 0x200008000000000L, 0x4000001002L, 0x800200080000000L, 0x0L, 0x10000000000008L, + 0x800000001001008L, 0x21020c488040002L, true, 0, 0x0L), + 4 + ), + 559281 + ); + + // gentest-5687 + assertEqual( + perft( + Board(0x409040000L, 0x8008000000000L, 0x2004000000002L, 0x800200080000000L, 0x0L, 0x10000000000008L, + 0x802000001000008L, 0x1820c488040002L, false, 0, 0x0L), + 4 + ), + 598033 + ); + + // gentest-5688 + assertEqual( + perft( + Board(0x409040000L, 0x8008000000000L, 0x2004010000000L, 0x400200040000000L, 0x0L, 0x10000000000008L, + 0x402000001000008L, 0x1820c458040000L, true, 0, 0x0L), + 4 + ), + 612383 + ); + + // gentest-5689 + assertEqual( + perft( + Board(0x9040000L, 0x28000000000L, 0x14010000000L, 0x200440000000L, 0x0L, 0x10000000000008L, + 0x10401000008L, 0x1022c058040000L, false, 0, 0x0L), + 4 + ), + 856037 + ); + + // gentest-5690 + assertEqual( + perft( + Board(0x9040000L, 0x28000000000L, 0x54000000000L, 0x201040000000L, 0x0L, 0x20000000000008L, + 0x11001000008L, 0x2026c048040000L, true, 0, 0x0L), + 4 + ), + 841984 + ); + + // gentest-5691 + assertEqual( + perft( + Board(0x8040000L, 0x28000000000L, 0x14001000000L, 0x200040000400L, 0x0L, 0x20000000000008L, + 0x10000000408L, 0x2022c049040000L, false, 0, 0x0L), + 4 + ), + 186089 + ); + + // gentest-5692 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x400004001000000L, 0x200080000400L, 0x0L, 0x20000000000008L, + 0x400000000000408L, 0x2020c08d040000L, true, 0, 0x0L), + 4 + ), + 167257 + ); + + // gentest-5693 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x4000004001000000L, 0x200080000400L, 0x0L, 0x40000000000008L, + 0x4000000000000408L, 0x4020c08d040000L, false, 0, 0x0L), + 4 + ), + 184265 + ); + + // gentest-5694 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x4000004001000000L, 0x20000080000400L, 0x0L, 0x40000000001000L, + 0x4000000000001400L, 0x6000c08d040000L, true, 0, 0x0L), + 4 + ), + 260997 + ); + + // gentest-5695 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x4000044000000000L, 0x20000080000800L, 0x0L, 0x40000000000008L, + 0x4000000000000808L, 0x6004c08c040000L, false, 0, 0x0L), + 4 + ), + 539219 + ); + + // gentest-5696 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x4000004000200000L, 0x1000080000800L, 0x0L, 0x40000000000010L, + 0x4000000000000810L, 0x4100c08c240000L, true, 0, 0x0L), + 4 + ), + 759261 + ); + + // gentest-5697 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x404800000000L, 0x1000080000800L, 0x0L, 0x40000000000010L, + 0x400000000810L, 0x4100c88c040000L, false, 0, 0x0L), + 4 + ), + 1094378 + ); + + // gentest-5698 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x404000004000L, 0x1000040000008L, 0x0L, 0x40000000000010L, + 0x400000000018L, 0x4100c04c044000L, true, 0, 0x0L), + 4 + ), + 721283 + ); + + // gentest-5699 + assertEqual( + perft( + Board(0x8040000L, 0x8004000000L, 0x90000000004000L, 0x1000040000008L, 0x0L, 0x40000000001000L, + 0x80000000001008L, 0x5100804c044000L, false, 0, 0x0L), + 4 + ), + 822785 + ); + + // gentest-5700 + assertEqual( + perft( + Board(0x8040000L, 0x8000000200L, 0x90000000004000L, 0x1000080000080L, 0x0L, 0x40000000001000L, + 0x80000000001080L, 0x51008088044200L, true, 0, 0x0L), + 4 + ), + 661139 + ); + + // gentest-5701 + assertEqual( + perft( + Board(0x8040000L, 0x8000000200L, 0x90000000004000L, 0x1000000808000L, 0x0L, 0x40000000002000L, + 0x8000000000a000L, 0x51008008844200L, false, 0, 0x0L), + 4 + ), + 384773 + ); + + // gentest-5702 + assertEqual( + perft( + Board(0x8040000L, 0x8000000200L, 0x90040000000000L, 0x4000000800080L, 0x0L, 0x40000000002000L, + 0x80000000002080L, 0x54048008840200L, true, 0, 0x0L), + 4 + ), + 652424 + ); + + // gentest-5703 + assertEqual( + perft( + Board(0x8040000L, 0x400200L, 0x90040000000000L, 0x4000000800040L, 0x0L, 0x40000000000010L, + 0x80000000000050L, 0x54040008c40200L, false, 0, 0x0L), + 4 + ), + 270394 + ); + + // gentest-5704 + assertEqual( + perft( + Board(0xc0000L, 0x400200L, 0x10002010000000L, 0x4000000800040L, 0x0L, 0x40000000000010L, + 0x2000000050L, 0x54000010cc0200L, true, 0, 0x0L), + 4 + ), + 298618 + ); + + // gentest-5705 + assertEqual( + perft( + Board(0xc0000L, 0x200L, 0x410000010000000L, 0x4000000400000L, 0x0L, 0x40000000000010L, + 0x400000000000010L, 0x540000104c0200L, false, 0, 0x0L), + 4 + ), + 149434 + ); + + // gentest-5706 + assertEqual( + perft( + Board(0x40800L, 0x200L, 0x410000010000000L, 0x4004000000000L, 0x0L, 0x40000000002000L, + 0x400000000002000L, 0x54004010040a00L, true, 0, 0x0L), + 4 + ), + 286950 + ); + + // gentest-5707 + assertEqual( + perft( + Board(0x40000L, 0x208L, 0x12000010000000L, 0x4004000000000L, 0x0L, 0x40000000000020L, + 0x2000000000020L, 0x54004010040208L, false, 0, 0x0L), + 4 + ), + 161425 + ); + + // gentest-5708 + assertEqual( + perft( + Board(0x40000L, 0x2200L, 0x110000010000000L, 0x4004000000000L, 0x0L, 0x800000000020L, + 0x100000000000020L, 0x14804010042200L, true, 0, 0x0L), + 4 + ), + 162057 + ); + + // gentest-5709 + assertEqual( + perft( + Board(0x40000L, 0x2200L, 0x410000010000000L, 0x4000800000000L, 0x0L, 0x800000000020L, + 0x400000000000020L, 0x14800810042200L, false, 0, 0x0L), + 4 + ), + 278835 + ); + + // gentest-5710 + assertEqual( + perft( + Board(0x40000L, 0x2200L, 0xc00000010000000L, 0x4000800000000L, 0x0L, 0x800000001000L, + 0x400000000001000L, 0x804800810042200L, true, 0, 0x0L), + 4 + ), + 271673 + ); + + // gentest-5711 + assertEqual( + perft( + Board(0x40000L, 0x2200L, 0xc00000010000000L, 0x4000000080000L, 0x0L, 0x800000001000L, + 0x400000000001000L, 0x8048000100c2200L, false, 0, 0x0L), + 4 + ), + 191207 + ); + + // gentest-5712 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x800000010800000L, 0x4000000000008L, 0x0L, 0x800000001000L, 0x801000L, + 0x804800010040288L, true, 0, 0x0L), + 4 + ), + 142441 + ); + + // gentest-5713 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x1900000000000000L, 0x4000000000008L, 0x0L, 0x800000001000L, + 0x1000000000001000L, 0x904800000040288L, false, 0, 0x0L), + 4 + ), + 109267 + ); + + // gentest-5714 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x900000000000000L, 0x20000000000040L, 0x0L, 0x800000001000L, 0x1000L, + 0x9208000000402c0L, true, 0, 0x0L), + 4 + ), + 5408 + ); + + // gentest-5715 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x900000000000000L, 0x40000000000040L, 0x0L, 0x800020000000L, 0x20000000L, + 0x9408000000402c0L, false, 0, 0x0L), + 4 + ), + 18248 + ); + + // gentest-5716 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x900000000000000L, 0x20000000000040L, 0x0L, 0x802000000000L, 0x2000000000L, + 0x9208000000402c0L, true, 0, 0x0L), + 4 + ), + 14526 + ); + + // gentest-5717 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x900000000000000L, 0x20000000000004L, 0x0L, 0x900000000000L, 0x100000000000L, + 0x920800000040284L, false, 0, 0x0L), + 4 + ), + 17931 + ); + + // gentest-5718 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x104000000000000L, 0x2000000000004L, 0x0L, 0x880000000000L, 0x80000000000L, + 0x106800000040284L, true, 0, 0x0L), + 4 + ), + 31682 + ); + + // gentest-5719 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x104000000000000L, 0x2000000000004L, 0x0L, 0x8800000000L, 0x800000000L, + 0x106008000040284L, false, 0, 0x0L), + 4 + ), + 20281 + ); + + // gentest-5720 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x104000000000000L, 0x800000004L, 0x0L, 0x108000000000L, 0x100000000000L, + 0x104008800040284L, true, 0, 0x0L), + 4 + ), + 27098 + ); + + // gentest-5721 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x100000020000000L, 0x800000004L, 0x0L, 0x108000000000L, 0x100000000000L, + 0x100008820040284L, false, 0, 0x0L), + 4 + ), + 27674 + ); + + // gentest-5722 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x100000000400000L, 0x400000004L, 0x0L, 0x20008000000000L, 0x20000000000000L, + 0x100008400440284L, true, 0, 0x0L), + 4 + ), + 60085 + ); + + // gentest-5723 + assertEqual( + perft( + Board(0x40000L, 0x280L, 0x100000000400000L, 0x4000000004L, 0x0L, 0x80008000000000L, 0x80000000000000L, + 0x10000c000440284L, false, 0, 0x0L), + 4 + ), + 5306 + ); + + // gentest-5724 + assertEqual( + perft( + Board(0x40000L, 0x4000080L, 0x100000000400000L, 0x4000000004L, 0x0L, 0x8000800000000000L, + 0x8000000000000000L, 0x100804004440084L, true, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-5725 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5726 + assertEqual( + perft( + Board(0xbf400080087700L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x800877ffL, 0xffbf400000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 388092 + ); + + // gentest-5727 + assertEqual( + perft( + Board(0x8f403080087700L, 0x4200000000000042L, 0x2400800000000020L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x8000800877fbL, 0xff8f403000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 804926 + ); + + // gentest-5728 + assertEqual( + perft( + Board(0x8f4030800c7300L, 0x4200000000000042L, 0x400800000010020L, 0x8100000000800001L, + 0x800000000000008L, 0x1000000000000010L, 0x8000808c737bL, 0xdf8f403000010000L, false, 0, + 0x8100000000000001L), + 4 + ), + 847050 + ); + + // gentest-5729 + assertEqual( + perft( + Board(0x8f4030800c7300L, 0x4200000000000042L, 0x400800400000020L, 0x8100000000100001L, + 0x800000000000008L, 0x1000000000000010L, 0x8000801c737bL, 0xdf8f403400000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 758853 + ); + + // gentest-5730 + assertEqual( + perft( + Board(0x8f403086087100L, 0x210000000000042L, 0x400800400000020L, 0x8100000000100001L, + 0x800000000000008L, 0x1000000000000010L, 0x80008618717bL, 0x9f9f403400000000L, false, 0, + 0x8100000000000001L), + 4 + ), + 494313 + ); + + // gentest-5731 + assertEqual( + perft( + Board(0x8c423186087100L, 0x210000000000042L, 0x400004400000020L, 0x8100000000100001L, + 0x800000000000008L, 0x1000000000000010L, 0x408618717bL, 0x9f9c423500000000L, true, 0, + 0x8100000000000001L), + 4 + ), + 766330 + ); + + // gentest-5732 + assertEqual( + perft( + Board(0x8c423186087100L, 0x210000000000840L, 0x400004400000020L, 0x2100000000200001L, + 0x800000000000008L, 0x4000000000000010L, 0x4086287979L, 0x6f9c423500000000L, false, 0, 0x1L), + 4 + ), + 895569 + ); + + // gentest-5733 + assertEqual( + perft( + Board(0x8c423186087100L, 0x210000000020040L, 0x400084000000020L, 0x2100000000200001L, + 0x800000000000008L, 0x8000000000000010L, 0x40862a7179L, 0xaf9c4a3100000000L, true, 0, 0x1L), + 4 + ), + 907969 + ); + + // gentest-5734 + assertEqual( + perft( + Board(0x8c42218c007100L, 0x210000000020040L, 0x400084000000020L, 0x2100000000200001L, + 0x800000000000008L, 0x8000000000000010L, 0x4184227179L, 0xaf9c4a2008000000L, false, 0, 0x1L), + 4 + ), + 1316186 + ); + + // gentest-5735 + assertEqual( + perft( + Board(0x8c422184007100L, 0x210000008000040L, 0x400084000000020L, 0x20010000200001L, + 0x800000000000008L, 0x8000000000000010L, 0x418c207179L, 0x8ebc4b2000000000L, true, 0, 0x1L), + 4 + ), + 1559221 + ); + + // gentest-5736 + assertEqual( + perft( + Board(0x8c4a2180007100L, 0x210000008000040L, 0x400004000000020L, 0x2000010000200001L, + 0x800000000000008L, 0x8000000000000010L, 0x84188207179L, 0xae9c432000000000L, false, 0, 0x1L), + 4 + ), + 1016463 + ); + + // gentest-5737 + assertEqual( + perft( + Board(0x8c4a01a0007100L, 0x200040008000040L, 0x400004000000020L, 0x2000010000200001L, + 0x800000000020000L, 0x8000000000000010L, 0x84188227171L, 0xae8c470020000000L, true, 0, 0x1L), + 4 + ), + 1539487 + ); + + // gentest-5738 + assertEqual( + perft( + Board(0x8c4a8120007100L, 0x210000008000040L, 0x400004000000020L, 0x2000010000200001L, + 0x800000000020000L, 0x8000000000000008L, 0x8c108227169L, 0xae9c430020000000L, false, 0, 0x0L), + 4 + ), + 1351108 + ); + + // gentest-5739 + assertEqual( + perft( + Board(0x884a8520007100L, 0x210000008000040L, 0x2004000000020L, 0x2000010000200001L, + 0x820000000000000L, 0x8000000000000008L, 0x2008c108207169L, 0xaa9a430420000000L, true, 0, 0x0L), + 4 + ), + 1586242 + ); + + // gentest-5740 + assertEqual( + perft( + Board(0x98428128007100L, 0x200000000000040L, 0x2004000000020L, 0x2000010000200001L, + 0x800000004000000L, 0x8000000000000008L, 0x1000c104207169L, 0xaa8a430028000000L, false, 0, 0x0L), + 4 + ), + 2032970 + ); + + // gentest-5741 + assertEqual( + perft( + Board(0x98428128007100L, 0x200000000000040L, 0x2004000000020L, 0x4000010000200001L, 0x4000000000000L, + 0x8000000000000008L, 0x1000c100207169L, 0xc28e430028000000L, true, 0, 0x0L), + 4 + ), + 993508 + ); + + // gentest-5742 + assertEqual( + perft( + Board(0x98428138006100L, 0x200000000000040L, 0x2014000000000L, 0x2000000000200001L, 0x4000000000000L, + 0x8000000000000008L, 0x1001c110206149L, 0xa28e420028000000L, false, 0, 0x0L), + 4 + ), + 1479078 + ); + + // gentest-5743 + assertEqual( + perft( + Board(0x98408338006100L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x4000000000000L, + 0x8000000000000010L, 0x1001c110206151L, 0xa28c400a28000000L, true, 0, 0x0L), + 4 + ), + 1817163 + ); + + // gentest-5744 + assertEqual( + perft( + Board(0x88408338006100L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x40000000000L, + 0x8000000000000020L, 0x200001c110206161L, 0x8288440a28000000L, false, 0, 0x0L), + 4 + ), + 77903 + ); + + // gentest-5745 + assertEqual( + perft( + Board(0x88408339006000L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x4000000L, + 0x40000000000020L, 0x200001c111206061L, 0x2c8400a2c000000L, true, 0, 0x0L), + 4 + ), + 90242 + ); + + // gentest-5746 + assertEqual( + perft( + Board(0x88408339006000L, 0x200000000000040L, 0x30010000000000L, 0x2000000000200001L, 0x4000000L, + 0x40000000000010L, 0x2010018111206051L, 0x2e840022c000000L, false, 0, 0x0L), + 4 + ), + 1112399 + ); + + // gentest-5747 + assertEqual( + perft( + Board(0x880c339006000L, 0x200000000000040L, 0x30010000000000L, 0x2000000000200002L, 0x4000000L, + 0x40000000000010L, 0x2010018111206052L, 0x26880422c000000L, true, 0, 0x0L), + 4 + ), + 1148946 + ); + + // gentest-5748 + assertEqual( + perft( + Board(0x8808339006000L, 0x200000000000040L, 0x14800000000L, 0x2000000000200001L, 0x4000000L, + 0x40000000000010L, 0x200001c111206051L, 0x248800a2c000000L, false, 0, 0x0L), + 4 + ), + 971678 + ); + + // gentest-5749 + assertEqual( + perft( + Board(0x8808339006000L, 0x40000000040L, 0x10010800000000L, 0x2000000000200001L, 0x20L, + 0x40000000000010L, 0x2010018111206051L, 0x48840a28000020L, true, 0, 0x0L), + 4 + ), + 44089 + ); + + // gentest-5750 + assertEqual( + perft( + Board(0x8808339006000L, 0x40000000040L, 0x10010000000100L, 0x20000000200001L, 0x20L, + 0x40000000000800L, 0x30018111206841L, 0x48840228000120L, false, 0, 0x0L), + 4 + ), + 129906 + ); + + // gentest-5751 + assertEqual( + perft( + Board(0x808b39006000L, 0x40000000040L, 0x10010000000100L, 0x80001L, 0x20L, 0x20000000000800L, + 0x10018111086841L, 0x20840a28000120L, true, 0, 0x0L), + 4 + ), + 791055 + ); + + // gentest-5752 + assertEqual( + perft( + Board(0x808b39006000L, 0x40000800000L, 0x10010000000100L, 0x200001L, 0x2L, 0x20000000000800L, + 0x10018111a06801L, 0x20840a28000102L, false, 0, 0x0L), + 4 + ), + 535346 + ); + + // gentest-5753 + assertEqual( + perft( + Board(0x808b39006000L, 0x40000800000L, 0x10080000100L, 0x200001L, 0x80L, 0x4000000000000800L, + 0x18191a06801L, 0x4000840a28000180L, true, 0, 0x0L), + 4 + ), + 730569 + ); + + // gentest-5754 + assertEqual( + perft( + Board(0x808b39006000L, 0x2800000L, 0x10080000100L, 0x240000L, 0x80L, 0x4000000000000800L, + 0x18191a46800L, 0x4000800a2a000180L, false, 0, 0x0L), + 4 + ), + 482046 + ); + + // gentest-5755 + assertEqual( + perft( + Board(0x808b39006000L, 0x10000800000L, 0x80000100L, 0x240000L, 0x0L, 0x4000000000000008L, + 0x8191a46008L, 0x4000810a28000100L, true, 0, 0x0L), + 4 + ), + 244873 + ); + + // gentest-5756 + assertEqual( + perft( + Board(0x808b19006000L, 0x200000020000000L, 0x80000100L, 0x300000L, 0x0L, 0x4000000000000008L, + 0x81b1306008L, 0x4200800a08000100L, false, 0, 0x0L), + 4 + ), + 182136 + ); + + // gentest-5757 + assertEqual( + perft( + Board(0x808b19006000L, 0x200100000000000L, 0x80000100L, 0x300000L, 0x0L, 0x4000000000000008L, + 0x108191306008L, 0x4200800a08000100L, true, 0, 0x0L), + 4 + ), + 202543 + ); + + // gentest-5758 + assertEqual( + perft( + Board(0x808b19006000L, 0x204000000000000L, 0x80000100L, 0x20100000L, 0x0L, 0x8000000000000008L, + 0x40081b1106008L, 0x8200800a08000100L, false, 0, 0x0L), + 4 + ), + 216456 + ); + + // gentest-5759 + assertEqual( + perft( + Board(0x808b19006000L, 0x204000000000000L, 0x80000100L, 0x20040000L, 0x0L, 0x80000000000008L, + 0x40081b1046008L, 0x280800a08000100L, true, 0, 0x0L), + 4 + ), + 260086 + ); + + // gentest-5760 + assertEqual( + perft( + Board(0x808b19006000L, 0x204000000000000L, 0x80000100L, 0x20020000L, 0x0L, 0x40000000000008L, + 0x40081b1026008L, 0x240800a08000100L, false, 0, 0x0L), + 4 + ), + 177526 + ); + + // gentest-5761 + assertEqual( + perft( + Board(0x808b19006000L, 0x4040000000000L, 0x80000100L, 0x20800000L, 0x0L, 0x8000000000000008L, + 0x40081b1806008L, 0x8000840a08000100L, true, 0, 0x0L), + 4 + ), + 306280 + ); + + // gentest-5762 + assertEqual( + perft( + Board(0x808a19006000L, 0x1000000100000000L, 0x80000100L, 0x20100000L, 0x0L, 0x8000000000000008L, + 0x10000080b1106008L, 0x8000800b08000100L, false, 0, 0x0L), + 4 + ), + 182662 + ); + + // gentest-5763 + assertEqual( + perft( + Board(0x809a09006000L, 0x1000000100000000L, 0x80000100L, 0x20100000L, 0x0L, 0x80000000000008L, + 0x10000090a1106008L, 0x80800b08000100L, true, 0, 0x0L), + 4 + ), + 179657 + ); + + // gentest-5764 + assertEqual( + perft( + Board(0x809a09006000L, 0x1000000000020000L, 0x800000000000100L, 0x20100000L, 0x0L, 0x80000000000010L, + 0x1800009021106010L, 0x80800a08020100L, false, 0, 0x0L), + 4 + ), + 180496 + ); + + // gentest-5765 + assertEqual( + perft( + Board(0x809a09006000L, 0x1000000000080000L, 0x800000000000100L, 0x2000000000100000L, 0x0L, + 0x80000000000010L, 0x3800009001106010L, 0x80800a08080100L, true, 0, 0x0L), + 4 + ), + 22725 + ); + + // gentest-5766 + assertEqual( + perft( + Board(0x809a09006000L, 0x1000000002000000L, 0x800000000000100L, 0x2000000000020000L, 0x0L, + 0x80000000000800L, 0x3800009001026800L, 0x80800a0a000100L, false, 0, 0x0L), + 4 + ), + 106240 + ); + + // gentest-5767 + assertEqual( + perft( + Board(0x809a01086000L, 0x1000000000000400L, 0x4000000100L, 0x2000000000020000L, 0x0L, + 0x80000000000800L, 0x300000d001026800L, 0x80800a00080500L, true, 0, 0x0L), + 4 + ), + 151020 + ); + + // gentest-5768 + assertEqual( + perft( + Board(0x9a01086000L, 0x1000000000100000L, 0x800000000100L, 0x220000L, 0x0L, 0x80000000000800L, + 0x1000809001226800L, 0x80000a00180100L, false, 0, 0x0L), + 4 + ), + 170330 + ); + + // gentest-5769 + assertEqual( + perft( + Board(0x9a01086000L, 0x1000000000100000L, 0x800000000100L, 0x20020000L, 0x0L, 0x8000000000000800L, + 0x1000809021026800L, 0x8000000a00180100L, true, 0, 0x0L), + 4 + ), + 187417 + ); + + // gentest-5770 + assertEqual( + perft( + Board(0x9a01086000L, 0x80000100000L, 0x800000020000L, 0x20000000000000L, 0x0L, 0x8000000000000800L, + 0x20889001006800L, 0x8000000a001a0000L, false, 0, 0x0L), + 4 + ), + 198041 + ); + + // gentest-5771 + assertEqual( + perft( + Board(0x9a01086000L, 0x80000100000L, 0x4000000008L, 0x20000000000000L, 0x0L, 0x8000000000000800L, + 0x2008d001006800L, 0x8000000a00180008L, true, 0, 0x0L), + 4 + ), + 292574 + ); + + // gentest-5772 + assertEqual( + perft( + Board(0x9a01184000L, 0x2000000000000L, 0x4000020000L, 0x20000000000000L, 0x0L, 0x8000000000000800L, + 0x2200d001104800L, 0x8000000a000a0000L, false, 0, 0x0L), + 4 + ), + 70913 + ); + + // gentest-5773 + assertEqual( + perft( + Board(0x9a01184000L, 0x2000000000000L, 0x4000000400L, 0x8000000000000L, 0x0L, 0x4000000000000800L, + 0xa00d001104800L, 0x4000000a00080400L, true, 0, 0x0L), + 4 + ), + 58165 + ); + + // gentest-5774 + assertEqual( + perft( + Board(0x9a01184000L, 0x800000000000000L, 0x4000000008L, 0x80000000000000L, 0x0L, 0x4000000000000800L, + 0x88000d001104800L, 0x4000000a00080008L, false, 0, 0x0L), + 4 + ), + 89073 + ); + + // gentest-5775 + assertEqual( + perft( + Board(0x9b00184000L, 0x800000000000000L, 0x4000020000L, 0x80000000000000L, 0x0L, 0x4000000000000800L, + 0x88000d100104800L, 0x4000000a000a0000L, true, 0, 0x0L), + 4 + ), + 52000 + ); + + // gentest-5776 + assertEqual( + perft( + Board(0x9b00184000L, 0x100000000000L, 0x800001000000L, 0x80000000000000L, 0x0L, 0x4000000000000800L, + 0x80909100104800L, 0x4000000a01080000L, false, 0, 0x0L), + 4 + ), + 30583 + ); + + // gentest-5777 + assertEqual( + perft( + Board(0x9902184000L, 0x800000000000000L, 0x800001000000L, 0x0L, 0x0L, 0x80000000000800L, + 0x800809100104800L, 0x80000803080000L, true, 0, 0x0L), + 4 + ), + 33814 + ); + + // gentest-5778 + assertEqual( + perft( + Board(0x914a100000L, 0x800000000000000L, 0x800001000000L, 0x0L, 0x0L, 0x80000000080000L, + 0x800809140180000L, 0x8000000b000000L, false, 0, 0x0L), + 4 + ), + 33522 + ); + + // gentest-5779 + assertEqual( + perft( + Board(0x914a100000L, 0x800000000000000L, 0x800010000000L, 0x0L, 0x0L, 0x80000004000000L, + 0x800809144100000L, 0x8000001a000000L, true, 0, 0x0L), + 4 + ), + 68909 + ); + + // gentest-5780 + assertEqual( + perft( + Board(0x801142100000L, 0x800000000000000L, 0x4010000000L, 0x0L, 0x0L, 0x80000004000000L, + 0x800805144000000L, 0x80000012100000L, false, 0, 0x0L), + 4 + ), + 64443 + ); + + // gentest-5781 + assertEqual( + perft( + Board(0x801142100000L, 0x800000000000000L, 0x4000004000L, 0x0L, 0x0L, 0x4000000000020000L, + 0x800805140020000L, 0x4000000002104000L, true, 0, 0x0L), + 4 + ), + 48260 + ); + + // gentest-5782 + assertEqual( + perft( + Board(0x801140100000L, 0x800000000000000L, 0x40020000000L, 0x0L, 0x0L, 0x4000000002000000L, + 0x800801162000000L, 0x4000040000100000L, false, 0, 0x0L), + 4 + ), + 62453 + ); + + // gentest-5783 + assertEqual( + perft( + Board(0x801140100000L, 0x0L, 0x2000020000000L, 0x0L, 0x0L, 0x4000000002000000L, 0x801162000000L, + 0x4002000000100000L, true, 0, 0x0L), + 4 + ), + 39328 + ); + + // gentest-5784 + assertEqual( + perft( + Board(0x801140100000L, 0x0L, 0x2000000400000L, 0x0L, 0x0L, 0x80000000040000L, 0x801140440000L, + 0x82000000100000L, false, 0, 0x0L), + 4 + ), + 42275 + ); + + // gentest-5785 + assertEqual( + perft( + Board(0x801140100000L, 0x0L, 0x40000400000L, 0x0L, 0x0L, 0x80000004000000L, 0x801144400000L, + 0x80040000100000L, true, 0, 0x0L), + 4 + ), + 44398 + ); + + // gentest-5786 + assertEqual( + perft( + Board(0x801140100000L, 0x0L, 0x8000000000800L, 0x0L, 0x0L, 0x80000004000000L, 0x801144000800L, + 0x88000000100000L, false, 0, 0x0L), + 4 + ), + 35738 + ); + + // gentest-5787 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x8000000100000L, 0x0L, 0x0L, 0x2000000004000000L, 0x801144100000L, + 0x2008000000000000L, true, 0, 0x0L), + 4 + ), + 48806 + ); + + // gentest-5788 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x8004000000000L, 0x0L, 0x0L, 0x1000000000080000L, 0x805140080000L, + 0x1008000000000000L, false, 0, 0x0L), + 4 + ), + 26357 + ); + + // gentest-5789 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x4200000000L, 0x0L, 0x0L, 0x1000000000000800L, 0x805140000800L, + 0x1000000200000000L, true, 0, 0x0L), + 4 + ), + 31268 + ); + + // gentest-5790 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x200000001000L, 0x0L, 0x0L, 0x1000000000000400L, 0xa01140000400L, + 0x1000000000001000L, false, 0, 0x0L), + 4 + ), + 28502 + ); + + // gentest-5791 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x820000000000000L, 0x0L, 0x0L, 0x1000000000000400L, 0x800801140000400L, + 0x1020000000000000L, true, 0, 0x0L), + 4 + ), + 31353 + ); + + // gentest-5792 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x24000000000000L, 0x0L, 0x0L, 0x2000000000080000L, 0x4801140080000L, + 0x2020000000000000L, false, 0, 0x0L), + 4 + ), + 26241 + ); + + // gentest-5793 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x24000000000000L, 0x0L, 0x0L, 0x2000000004000000L, 0x4801144000000L, + 0x2020000000000000L, true, 0, 0x0L), + 4 + ), + 11882 + ); + + // gentest-5794 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x20080000000000L, 0x0L, 0x0L, 0x10000400000000L, 0x881540000000L, + 0x30000000000000L, false, 0, 0x0L), + 4 + ), + 7098 + ); + + // gentest-5795 + assertEqual( + perft( + Board(0x801140000000L, 0x0L, 0x24000000000000L, 0x0L, 0x0L, 0x8000400000000L, 0x4801540000000L, + 0x28000000000000L, true, 0, 0x0L), + 4 + ), + 23037 + ); + + // gentest-5796 + assertEqual( + perft( + Board(0x811040000000L, 0x0L, 0x1000080000000000L, 0x0L, 0x0L, 0x8000400000000L, 0x891440000000L, + 0x1008000000000000L, false, 0, 0x0L), + 4 + ), + 11922 + ); + + // gentest-5797 + assertEqual( + perft( + Board(0x811040000000L, 0x0L, 0x3000000000000000L, 0x0L, 0x0L, 0x4000400000000L, 0x2000811440000000L, + 0x1004000000000000L, true, 0, 0x0L), + 4 + ), + 17461 + ); + + // gentest-5798 + assertEqual( + perft( + Board(0x811040000000L, 0x0L, 0x2000000001000000L, 0x0L, 0x0L, 0x4000004000000L, 0x2000811044000000L, + 0x4000001000000L, false, 0, 0x0L), + 4 + ), + 33373 + ); + + // gentest-5799 + assertEqual( + perft( + Board(0x1801040000000L, 0x0L, 0x2000000000000400L, 0x0L, 0x0L, 0x4000004000000L, 0x2001801044000000L, + 0x4000000000400L, true, 0, 0x0L), + 4 + ), + 57476 + ); + + // gentest-5800 + assertEqual( + perft( + Board(0x1801040000000L, 0x0L, 0x2000000010000000L, 0x0L, 0x0L, 0x4000004000000L, 0x2001801044000000L, + 0x4000010000000L, false, 0, 0x0L), + 4 + ), + 87051 + ); + + // gentest-5801 + assertEqual( + perft( + Board(0x1805000000000L, 0x0L, 0x2000000010000000L, 0x0L, 0x0L, 0x4000004000000L, 0x2001805004000000L, + 0x4000010000000L, true, 0, 0x0L), + 4 + ), + 81297 + ); + + // gentest-5802 + assertEqual( + perft( + Board(0x805000000000L, 0x0L, 0x2100040000000000L, 0x0L, 0x0L, 0x4000400000000L, 0x2100805400000000L, + 0x4040000000000L, false, 0, 0x0L), + 4 + ), + 44877 + ); + + // gentest-5803 + assertEqual( + perft( + Board(0x805000000000L, 0x0L, 0x2108000000000000L, 0x0L, 0x0L, 0x800000002000000L, 0x2100805002000000L, + 0x808000000000000L, true, 0, 0x0L), + 4 + ), + 54814 + ); + + // gentest-5804 + assertEqual( + perft( + Board(0x80005000000000L, 0x0L, 0x2002002000000000L, 0x0L, 0x0L, 0x800000002000000L, + 0x2082005002000000L, 0x800002000000000L, false, 0, 0x0L), + 4 + ), + 116474 + ); + + // gentest-5805 + assertEqual( + perft( + Board(0x80005000000000L, 0x0L, 0x2800000000002L, 0x0L, 0x0L, 0x800000002000000L, 0x82805002000000L, + 0x800000000000002L, true, 0, 0x0L), + 4 + ), + 69236 + ); + + // gentest-5806 + assertEqual( + perft( + Board(0x80401000000000L, 0x0L, 0x800800000002L, 0x0L, 0x0L, 0x8000002000000L, 0x80c01802000000L, + 0x8000000000002L, false, 0, 0x0L), + 4 + ), + 119673 + ); + + // gentest-5807 + assertEqual( + perft( + Board(0x80401000000000L, 0x0L, 0x100800000000400L, 0x0L, 0x0L, 0x8000002000000L, 0x180c01002000000L, + 0x8000000000400L, true, 0, 0x0L), + 4 + ), + 105795 + ); + + // gentest-5808 + assertEqual( + perft( + Board(0x80401000000000L, 0x0L, 0x40000000c00L, 0x0L, 0x0L, 0x100002000000L, 0x80441002000800L, + 0x100000000400L, false, 0, 0x0L), + 4 + ), + 95780 + ); + + // gentest-5809 + assertEqual( + perft( + Board(0x80401000000000L, 0x0L, 0x14000800L, 0x0L, 0x0L, 0x100002000000L, 0x80401012000800L, + 0x100004000000L, true, 0, 0x0L), + 4 + ), + 93367 + ); + + // gentest-5810 + assertEqual( + perft( + Board(0x80401000000000L, 0x0L, 0x10101000L, 0x0L, 0x0L, 0x100002000000L, 0x80401012100000L, + 0x100000001000L, false, 0, 0x0L), + 4 + ), + 132980 + ); + + // gentest-5811 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5812 + assertEqual( + perft( + Board(0xff00000104fa00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x104faffL, 0xfdff040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 260364 + ); + + // gentest-5813 + assertEqual( + perft( + Board(0xd728000104fa00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x104fbfeL, 0xfdd72c0000000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 374543 + ); + + // gentest-5814 + assertEqual( + perft( + Board(0x9728400106f800L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x106f8ffL, 0xfd972c4000000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 392493 + ); + + // gentest-5815 + assertEqual( + perft( + Board(0x8728500106f800L, 0x4000000002800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x186f8bfL, 0xfd87285002000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 526284 + ); + + // gentest-5816 + assertEqual( + perft( + Board(0x8728500146b800L, 0x4000000002800002L, 0x2000000040000024L, 0x8100000000010080L, + 0x800000000000008L, 0x1000000000000010L, 0x1c7b8beL, 0xf987285042000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 540869 + ); + + // gentest-5817 + assertEqual( + perft( + Board(0x8728500146b800L, 0x4000040000800002L, 0x2000000040000024L, 0x8100000000000081L, + 0x800000000000008L, 0x10000000000010L, 0x1c6b8bfL, 0xe9972c5040000000L, true, 0, 0x80L), + 4 + ), + 539873 + ); + + // gentest-5818 + assertEqual( + perft( + Board(0x8728100542b800L, 0x4000044000000002L, 0x2000000040000024L, 0x8100000000000081L, + 0x400000000000008L, 0x10000000000010L, 0x400542b8bfL, 0xe5972c1040000000L, false, 0, 0x80L), + 4 + ), + 927640 + ); + + // gentest-5819 + assertEqual( + perft( + Board(0x8728100542b800L, 0x4000044000000002L, 0x2000000040010020L, 0x9000000000000081L, 0x2000000008L, + 0x10000000000010L, 0x400543b8bbL, 0xf0972c3040000000L, true, 0, 0x80L), + 4 + ), + 1166487 + ); + + // gentest-5820 + assertEqual( + perft( + Board(0x8728100542b800L, 0x4800000000800002L, 0x2000000040010020L, 0x9000000000000081L, 0x2000000004L, + 0x10000000000010L, 0x5c3b8b7L, 0xf897283040000000L, false, 0, 0x80L), + 4 + ), + 767543 + ); + + // gentest-5821 + assertEqual( + perft( + Board(0x8728140142b800L, 0x4800000000800002L, 0x2000100000010020L, 0x9000000000000081L, + 0x400000000000004L, 0x10000000000010L, 0x401c3b8b7L, 0xfc97381000000000L, true, 0, 0x80L), + 4 + ), + 603013 + ); + + // gentest-5822 + assertEqual( + perft( + Board(0x8728140142b800L, 0x800800000800002L, 0x2000140000010000L, 0x9000000000000081L, + 0x400000000000004L, 0x10000000000010L, 0x40401c3b897L, 0xbc97b81000000000L, false, 0, 0x80L), + 4 + ), + 1048072 + ); + + // gentest-5823 + assertEqual( + perft( + Board(0x8728140142b800L, 0x800800000000002L, 0x2000000000814000L, 0x9000000000000081L, + 0x100000000004L, 0x10000000000010L, 0x40143f897L, 0xb897b81000800000L, true, 0, 0x80L), + 4 + ), + 962706 + ); + + // gentest-5824 + assertEqual( + perft( + Board(0x8728140942b000L, 0x800800000000002L, 0x2000000000814000L, 0x9000000000000081L, + 0x100000040000L, 0x8000000000010L, 0x40947f093L, 0xb88fb81000800000L, false, 0, 0x80L), + 4 + ), + 1556399 + ); + + // gentest-5825 + assertEqual( + perft( + Board(0x8728140942b000L, 0x20800000000002L, 0x2000000000814000L, 0x9000000000000081L, 0x42000000L, + 0x8000000000010L, 0x40b43f093L, 0xb0afa81040800000L, true, 0, 0x80L), + 4 + ), + 1615249 + ); + + // gentest-5826 + assertEqual( + perft( + Board(0x87201429429000L, 0x20800000000002L, 0x2000000000810020L, 0x9000000000000081L, 0x42000000L, + 0x8000000000010L, 0x2b4390b3L, 0xb0afa01440800000L, false, 0, 0x80L), + 4 + ), + 1471652 + ); + + // gentest-5827 + assertEqual( + perft( + Board(0x87201029429000L, 0x20800000000002L, 0x10000000810020L, 0x9000000000000081L, 0x44000000L, + 0x8000000000010L, 0x254390b3L, 0x90bfa01048800000L, true, 0, 0x80L), + 4 + ), + 1635019 + ); + + // gentest-5828 + assertEqual( + perft( + Board(0x87201029429000L, 0x20800000000002L, 0x80000810020L, 0x9000000000000081L, 0x140000000L, + 0x8000000000010L, 0x1214390b3L, 0x90afa81048800000L, false, 0, 0x80L), + 4 + ), + 1671759 + ); + + // gentest-5829 + assertEqual( + perft( + Board(0x87201029429000L, 0x20800000000002L, 0x80000010020L, 0x3000000000000180L, 0x140000000L, + 0x8000000000010L, 0x121439192L, 0x30afa81048000020L, true, 0, 0x80L), + 4 + ), + 2168466 + ); + + // gentest-5830 + assertEqual( + perft( + Board(0x86200039429000L, 0x20800000000002L, 0x80400000020L, 0x3000000000000180L, 0x1000040000000L, + 0x8000000000010L, 0x1000421429192L, 0x30aea80058000020L, false, 0, 0x80L), + 4 + ), + 1826006 + ); + + // gentest-5831 + assertEqual( + perft( + Board(0x86200039429000L, 0x20800000000002L, 0x80400000020L, 0x9000000000000140L, 0x1000080000000L, + 0x8000000000010L, 0x1000421429152L, 0x90aea80098000020L, true, 0, 0x0L), + 4 + ), + 1764470 + ); + + // gentest-5832 + assertEqual( + perft( + Board(0x8620003b409000L, 0x20002000000002L, 0x80400000020L, 0x9000000000000140L, 0x1000080000000L, + 0x8000000000008L, 0x100042340914aL, 0x90ae282098000020L, false, 0, 0x0L), + 4 + ), + 1928988 + ); + + // gentest-5833 + assertEqual( + perft( + Board(0x86200023549000L, 0x20002000000000L, 0x80400000020L, 0x9000000000000140L, 0x1000080000000L, + 0x8000000000008L, 0x1000423409148L, 0x90ae282080140020L, true, 0, 0x0L), + 4 + ), + 1425765 + ); + + // gentest-5834 + assertEqual( + perft( + Board(0x86200023549000L, 0x20002000000000L, 0x80400000020L, 0x8400000000000840L, 0x1000080000000L, + 0x8000000000010L, 0x1000423409850L, 0x84ae282080140020L, false, 0, 0x0L), + 4 + ), + 1157370 + ); + + // gentest-5835 + assertEqual( + perft( + Board(0x86200023549000L, 0x802000000000L, 0x80400000020L, 0x8400000000000840L, 0x100800000L, + 0x8000000000010L, 0x523409850L, 0x848ea82000940020L, true, 0, 0x0L), + 4 + ), + 706975 + ); + + // gentest-5836 + assertEqual( + perft( + Board(0x86200023449000L, 0x802000000000L, 0x80000100020L, 0x8400000000000048L, 0x100800000L, + 0x10000000000010L, 0x123509058L, 0x8496a82000840020L, false, 0, 0x0L), + 4 + ), + 1461321 + ); + + // gentest-5837 + assertEqual( + perft( + Board(0x86200043049000L, 0x802000000000L, 0x20100020L, 0xc000000000000048L, 0x100800000L, + 0x10000000000010L, 0x143109058L, 0xc096a02020840020L, true, 0, 0x0L), + 4 + ), + 1715654 + ); + + // gentest-5838 + assertEqual( + perft( + Board(0x86200043049000L, 0x802000000000L, 0x28000020L, 0xc008000000000040L, 0x100800000L, + 0x1000000000000010L, 0x800014b009050L, 0xd086a02020840020L, false, 0, 0x0L), + 4 + ), + 1538825 + ); + + // gentest-5839 + assertEqual( + perft( + Board(0x84220043049000L, 0x802000000000L, 0x28000000L, 0xa008000000000020L, 0x100800000L, + 0x1000000000000010L, 0x800014b009030L, 0xb084a22020840000L, true, 0, 0x0L), + 4 + ), + 1224946 + ); + + // gentest-5840 + assertEqual( + perft( + Board(0x84200043049000L, 0x802000000000L, 0x20020000000L, 0xa008000000002000L, 0x100080000L, + 0x1000000000000010L, 0x802014300b010L, 0xb084a020200c0000L, false, 0, 0x0L), + 4 + ), + 1478137 + ); + + // gentest-5841 + assertEqual( + perft( + Board(0x84200043049000L, 0x40800000000000L, 0x20000000000L, 0xa008000020000000L, 0x100800000L, + 0x1000000000000010L, 0x8020163009010L, 0xb0c4a00000840000L, true, 0, 0x0L), + 4 + ), + 818448 + ); + + // gentest-5842 + assertEqual( + perft( + Board(0x84200003049000L, 0x40000040000000L, 0x20000000000L, 0xa008000020000000L, 0x100800000L, + 0x1000000000000010L, 0x8020123009010L, 0xb0c4200040840000L, false, 0, 0x0L), + 4 + ), + 982786 + ); + + // gentest-5843 + assertEqual( + perft( + Board(0x4a00003049000L, 0x40000040000000L, 0x1000000000000L, 0x8028000020000000L, 0x100800000L, + 0x1000000000000010L, 0x9000123009010L, 0x9064a00040840000L, true, 0, 0x0L), + 4 + ), + 1011671 + ); + + // gentest-5844 + assertEqual( + perft( + Board(0x4a00003049000L, 0x8040000000L, 0x1000000000000L, 0x8020000800002000L, 0x100800000L, + 0x1000000000000010L, 0x100090300b010L, 0x9024a08040840000L, false, 0, 0x0L), + 4 + ), + 831616 + ); + + // gentest-5845 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5846 + assertEqual( + perft( + Board(0xfe01000140be00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x140beffL, 0xfffe010000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 217524 + ); + + // gentest-5847 + assertEqual( + perft( + Board(0xfa00050148b600L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x148b6ffL, 0xfffa000500000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 407039 + ); + + // gentest-5848 + assertEqual( + perft( + Board(0xba400525489200L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x254892ffL, 0xffba400500000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 343365 + ); + + // gentest-5849 + assertEqual( + perft( + Board(0x9a4025254a9000L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x20000000008L, 0x1000000000000010L, 0x254a90ffL, 0xf79a422500000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 482807 + ); + + // gentest-5850 + assertEqual( + perft( + Board(0x9a402525489000L, 0x4200000000000042L, 0x2400000000000820L, 0x8100000000000081L, 0x20004L, + 0x1000000000000010L, 0x254898f7L, 0xf79a402500020000L, false, 0, 0x8100000000000081L), + 4 + ), + 623944 + ); + + // gentest-5851 + assertEqual( + perft( + Board(0x9a402521489000L, 0x4000040000800002L, 0x2400000000000820L, 0x8100000000000081L, 0x4000004L, + 0x1000000000000010L, 0x21c898b7L, 0xf59a442504000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1006118 + ); + + // gentest-5852 + assertEqual( + perft( + Board(0x9a402520489000L, 0x4000040000800002L, 0x2400000000100020L, 0x8100000000000081L, 0x1040000L, + 0x1000000000000010L, 0x20dc90b3L, 0xf59a442501000000L, false, 0, 0x8100000000000081L), + 4 + ), + 1452510 + ); + + // gentest-5853 + assertEqual( + perft( + Board(0x9a402124489000L, 0x4000040000800002L, 0x2400000000100020L, 0x8100000000000081L, 0x1200000000L, + 0x1000000000000010L, 0x1020d890b3L, 0xf59a442304000000L, true, 0, 0x8100000000000081L), + 4 + ), + 1810734 + ); + + // gentest-5854 + assertEqual( + perft( + Board(0x9a006124409000L, 0x4000040000800800L, 0x2400000000100020L, 0x8100000000000081L, 0x1200000000L, + 0x1000000000000010L, 0x1024d098b1L, 0xf59a046300000000L, false, 0, 0x8100000000000081L), + 4 + ), + 1987908 + ); + + // gentest-5855 + assertEqual( + perft( + Board(0x9a006124409000L, 0x4000000008800800L, 0x2400000000100020L, 0x100000000000081L, + 0x8000000002000000L, 0x1000000000000010L, 0x8000000024d098b1L, 0x759a00610a000000L, true, 0, + 0x100000000000081L), + 4 + ), + 1007819 + ); + + // gentest-5856 + assertEqual( + perft( + Board(0x9a006124409000L, 0x800000800800L, 0x2400000000000220L, 0x100000000000081L, + 0x8000000002000000L, 0x1000000000000010L, 0x8000000024c09ab1L, 0x359a806102000000L, false, 0, + 0x100000000000081L), + 4 + ), + 954814 + ); + + // gentest-5857 + assertEqual( + perft( + Board(0x9a006134408000L, 0x800000800000L, 0x2400000000000220L, 0x100000000000081L, + 0x8000000000000800L, 0x20000000000010L, 0x8000000034c082b1L, 0x25ba806100000800L, true, 0, 0x81L), + 4 + ), + 14487 + ); + + // gentest-5858 + assertEqual( + perft( + Board(0x9a004134408000L, 0x800000800000L, 0x2400000000000220L, 0x100000000000081L, + 0x4000000000000000L, 0x20000000000800L, 0x4000000024c08aa1L, 0x25ba804110000000L, false, 0, 0x0L), + 4 + ), + 71653 + ); + + // gentest-5859 + assertEqual( + perft( + Board(0x92084134408000L, 0x800000800000L, 0x2440000000000020L, 0x100000000000081L, 0x0L, + 0x4000000000000800L, 0x40000024c088a1L, 0x6592884110000000L, true, 0, 0x0L), + 4 + ), + 583202 + ); + + // gentest-5860 + assertEqual( + perft( + Board(0x92084034408000L, 0x800000800000L, 0x2048000000000020L, 0x100000400000080L, 0x0L, + 0x4000000000000800L, 0x40000424c088a0L, 0x619a884010000000L, false, 0, 0x0L), + 4 + ), + 1076552 + ); + + // gentest-5861 + assertEqual( + perft( + Board(0x92084034408000L, 0x800000800000L, 0x2440000000000020L, 0x800000200000080L, 0x0L, + 0x4000000000000800L, 0x40000224c088a0L, 0x6c92884010000000L, true, 0, 0x0L), + 4 + ), + 550796 + ); + + // gentest-5862 + assertEqual( + perft( + Board(0x92084034408000L, 0x800000800000L, 0x2000000040000021L, 0x800000200000080L, 0x0L, + 0x4000000000000800L, 0x224c088a1L, 0x6892884050000000L, false, 0, 0x0L), + 4 + ), + 606574 + ); + + // gentest-5863 + assertEqual( + perft( + Board(0x92086014408000L, 0x800000800000L, 0x40000040000021L, 0x800000200000080L, 0x0L, + 0x20000000000800L, 0x2204c088a1L, 0x8f2884050000000L, true, 0, 0x0L), + 4 + ), + 789702 + ); + + // gentest-5864 + assertEqual( + perft( + Board(0x92086014408000L, 0x800000002000L, 0x40000040000021L, 0x4000001000000080L, 0x0L, + 0x20000000000800L, 0x300440a8a1L, 0x40f2884050000000L, false, 0, 0x0L), + 4 + ), + 581380 + ); + + // gentest-5865 + assertEqual( + perft( + Board(0x92086004408000L, 0x800000002000L, 0x40040021L, 0x800000010000080L, 0x0L, 0x20000000000800L, + 0x201440a8a1L, 0x8b2884040040000L, true, 0, 0x0L), + 4 + ), + 163091 + ); + + // gentest-5866 + assertEqual( + perft( + Board(0x92006804408000L, 0x800000002000L, 0x40040020L, 0x800000010000080L, 0x0L, 0x20000000000004L, + 0x201444a0a4L, 0x8b2804840000000L, false, 0, 0x0L), + 4 + ), + 955798 + ); + + // gentest-5867 + assertEqual( + perft( + Board(0x92006804408000L, 0x800000002000L, 0x40040020L, 0x400000000100080L, 0x0L, 0x20000000000004L, + 0x200454a0a4L, 0x4b2804840000000L, true, 0, 0x0L), + 4 + ), + 989238 + ); + + // gentest-5868 + assertEqual( + perft( + Board(0x92006804408000L, 0x800000002000L, 0x48000020L, 0x400000000001080L, 0x0L, 0x2000000000000004L, + 0x200c40b0a4L, 0x2492804840000000L, false, 0, 0x0L), + 4 + ), + 729851 + ); + + // gentest-5869 + assertEqual( + perft( + Board(0x92006804408000L, 0x800000002000L, 0x48000020L, 0x4000000001040L, 0x0L, 0x2000000000000004L, + 0x200c40b064L, 0x2096804840000000L, true, 0, 0x0L), + 4 + ), + 693589 + ); + + // gentest-5870 + assertEqual( + perft( + Board(0x82007804408000L, 0x800000002000L, 0x48004000L, 0x4000000100040L, 0x0L, 0x2000000000000004L, + 0x200c50e044L, 0x2086805840000000L, false, 0, 0x0L), + 4 + ), + 1012187 + ); + + // gentest-5871 + assertEqual( + perft( + Board(0x82007004408000L, 0x800000002000L, 0x48004000L, 0x4000000100040L, 0x0L, 0x20000000000200L, + 0x200850e240L, 0xa6805044000000L, true, 0, 0x0L), + 4 + ), + 1015801 + ); + + // gentest-5872 + assertEqual( + perft( + Board(0x82005004408000L, 0x800000800000L, 0x2008004000L, 0x4000000040040L, 0x0L, 0x20000000000200L, + 0x8c4c240L, 0xa6807004000000L, false, 0, 0x0L), + 4 + ), + 1052277 + ); + + // gentest-5873 + assertEqual( + perft( + Board(0x8200400c408000L, 0x800000800000L, 0x10080000L, 0x4000000040040L, 0x0L, 0x20000000000200L, + 0x10c48240L, 0xa680400c080000L, true, 0, 0x0L), + 4 + ), + 521784 + ); + + // gentest-5874 + assertEqual( + perft( + Board(0x8200400c408000L, 0x800000800000L, 0x10080000L, 0x400040040L, 0x0L, 0x20000002000000L, + 0x12c48040L, 0xa280440c080000L, false, 0, 0x0L), + 4 + ), + 588471 + ); + + // gentest-5875 + assertEqual( + perft( + Board(0x200400c408000L, 0x800000800000L, 0x80000000080000L, 0x800040040L, 0x0L, 0x10000002000000L, + 0x80000002c48040L, 0x1280480c080000L, true, 0, 0x0L), + 4 + ), + 552284 + ); + + // gentest-5876 + assertEqual( + perft( + Board(0x200400c408000L, 0x800000800000L, 0x80000000080000L, 0x800020020L, 0x0L, 0x8000002000000L, + 0x80000002c28020L, 0xa80480c080000L, false, 0, 0x0L), + 4 + ), + 751021 + ); + + // gentest-5877 + assertEqual( + perft( + Board(0x2004008448000L, 0x800000800000L, 0x80000000080000L, 0x800020020L, 0x0L, 0x10000000010000L, + 0x80000000c38020L, 0x128048080c0000L, true, 0, 0x0L), + 4 + ), + 876009 + ); + + // gentest-5878 + assertEqual( + perft( + Board(0x2004008448000L, 0x800000000040L, 0x80000000080000L, 0x200800020000L, 0x0L, + 0x1000000000010000L, 0x80200000438040L, 0x10028048080c0000L, false, 0, 0x0L), + 4 + ), + 807684 + ); + + // gentest-5879 + assertEqual( + perft( + Board(0x20040004c8000L, 0x800000000040L, 0x2010000000L, 0x200800020000L, 0x0L, 0x1000000000010000L, + 0x202000438040L, 0x10028048100c0000L, true, 0, 0x0L), + 4 + ), + 517555 + ); + + // gentest-5880 + assertEqual( + perft( + Board(0x20040004c8000L, 0x800000000040L, 0x2010000000L, 0x201000000002L, 0x0L, 0x1000000001000000L, + 0x202001408042L, 0x10028050100c0000L, false, 0, 0x0L), + 4 + ), + 574308 + ); + + // gentest-5881 + assertEqual( + perft( + Board(0x240004c8000L, 0x800000000040L, 0x80000010000000L, 0x200200000002L, 0x0L, 0x1000000001000000L, + 0x80200001408042L, 0x10008242100c0000L, true, 0, 0x0L), + 4 + ), + 634668 + ); + + // gentest-5882 + assertEqual( + perft( + Board(0x240004c8000L, 0x800000000040L, 0x80000010000000L, 0x1020000002L, 0x0L, 0x1000000002000000L, + 0x80000022408042L, 0x10008250100c0000L, false, 0, 0x0L), + 4 + ), + 754002 + ); + + // gentest-5883 + assertEqual( + perft( + Board(0x240004c8000L, 0x20000000000040L, 0x400000200000L, 0x1020000002L, 0x0L, 0x1000000002000000L, + 0x400022408042L, 0x10200250002c0000L, true, 0, 0x0L), + 4 + ), + 787661 + ); + + // gentest-5884 + assertEqual( + perft( + Board(0x240004c8000L, 0x20000000000040L, 0x400000200000L, 0x110020000L, 0x0L, 0x1000000002000000L, + 0x400012428040L, 0x10200241002c0000L, false, 0, 0x0L), + 4 + ), + 92054 + ); + + // gentest-5885 + assertEqual( + perft( + Board(0x240004c8000L, 0x20000000000040L, 0x200000L, 0x2010020000L, 0x0L, 0x8000002000000L, + 0x12428040L, 0x280260002c0000L, true, 0, 0x0L), + 4 + ), + 487626 + ); + + // gentest-5886 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000000040L, 0x200000L, 0x2010000200L, 0x0L, 0x400000002000000L, + 0x52008240L, 0x4200260002c0000L, false, 0, 0x0L), + 4 + ), + 471003 + ); + + // gentest-5887 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000000040L, 0x10000000L, 0x200000000200L, 0x0L, 0x400000001000000L, + 0x41008240L, 0x4202240100c0000L, true, 0, 0x0L), + 4 + ), + 356546 + ); + + // gentest-5888 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000002000L, 0x10000000L, 0x40000000200L, 0x0L, 0x400000001000000L, + 0x4100a200L, 0x4200640100c0000L, false, 0, 0x0L), + 4 + ), + 268942 + ); + + // gentest-5889 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000800000L, 0x10000000L, 0x100000000200L, 0x0L, 0x200000001000000L, + 0x41808200L, 0x2201240100c0000L, true, 0, 0x0L), + 4 + ), + 295292 + ); + + // gentest-5890 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000800000L, 0x80L, 0x100000020000L, 0x0L, 0x200000002000000L, + 0x42828000L, 0x2201240000c0080L, false, 0, 0x0L), + 4 + ), + 187541 + ); + + // gentest-5891 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000800000L, 0x80L, 0x2000020000L, 0x0L, 0x200000001000000L, 0x41828000L, + 0x2200260000c0080L, true, 0, 0x0L), + 4 + ), + 152130 + ); + + // gentest-5892 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000800000L, 0x2000000000000L, 0x2200000000L, 0x0L, 0x200000000010000L, + 0x240818000L, 0x2220260000c0000L, false, 0, 0x0L), + 4 + ), + 252604 + ); + + // gentest-5893 + assertEqual( + perft( + Board(0x240400c8000L, 0x20000000800000L, 0x800000000L, 0x2000020000L, 0x0L, 0x200000000010000L, + 0x40838000L, 0x2200268000c0000L, true, 0, 0x0L), + 4 + ), + 165952 + ); + + // gentest-5894 + assertEqual( + perft( + Board(0x260000c8000L, 0x20000020000000L, 0x2000000000000L, 0x20000L, 0x0L, 0x200000000010000L, + 0x2020038000L, 0x2220240000c0000L, false, 0, 0x0L), + 4 + ), + 190127 + ); + + // gentest-5895 + assertEqual( + perft( + Board(0x260000c8000L, 0x800008000000000L, 0x400000000000000L, 0x20000L, 0x0L, 0x200000000010000L, + 0xa000038000L, 0xe000240000c0000L, true, 0, 0x0L), + 4 + ), + 81740 + ); + + // gentest-5896 + assertEqual( + perft( + Board(0x60000c8000L, 0x800200000000000L, 0x400000000000000L, 0x20000000000L, 0x0L, 0x100000000010000L, + 0x222000018000L, 0xd000040000c0000L, false, 0, 0x0L), + 4 + ), + 102990 + ); + + // gentest-5897 + assertEqual( + perft( + Board(0x40000c8000L, 0x300000000000L, 0x0L, 0x20000000000L, 0x0L, 0x100000000010000L, 0x220000018000L, + 0x1001040000c0000L, true, 0, 0x0L), + 4 + ), + 64999 + ); + + // gentest-5898 + assertEqual( + perft( + Board(0x40000c8000L, 0x808000000000000L, 0x0L, 0x20000000000L, 0x0L, 0x100000002000000L, + 0x8020002008000L, 0x9000040000c0000L, false, 0, 0x0L), + 4 + ), + 36945 + ); + + // gentest-5899 + assertEqual( + perft( + Board(0x40000c8000L, 0x8000400000000L, 0x0L, 0x20000000000L, 0x0L, 0x100000200000000L, + 0x8020200008000L, 0x1000044000c0000L, true, 0, 0x0L), + 4 + ), + 44458 + ); + + // gentest-5900 + assertEqual( + perft( + Board(0x40000c8000L, 0x8000400000000L, 0x0L, 0x100000000000L, 0x0L, 0x2000200000000L, + 0x8100200008000L, 0x20044000c0000L, false, 0, 0x0L), + 4 + ), + 88577 + ); + + // gentest-5901 + assertEqual( + perft( + Board(0x4000048800L, 0x8000000000000L, 0x0L, 0x1000000000000000L, 0x0L, 0x2000200000000L, + 0x1000000200008000L, 0xa004000040800L, true, 0, 0x0L), + 4 + ), + 92171 + ); + + // gentest-5902 + assertEqual( + perft( + Board(0x4000048800L, 0x8000000000000L, 0x0L, 0x100000000000L, 0x0L, 0x20001000000L, 0x100001008000L, + 0x8024000040800L, false, 0, 0x0L), + 4 + ), + 20676 + ); + + // gentest-5903 + assertEqual( + perft( + Board(0x4000048000L, 0x8000000000000L, 0x8L, 0x100000000000L, 0x0L, 0x1000002000000L, 0x100002008000L, + 0x9004000040008L, true, 0, 0x0L), + 4 + ), + 122080 + ); + + // gentest-5904 + assertEqual( + perft( + Board(0x48000L, 0x8000000000000L, 0x8L, 0x4000000000L, 0x0L, 0x100000002000000L, 0x4002008000L, + 0x108000000040008L, false, 0, 0x0L), + 4 + ), + 110911 + ); + + // gentest-5905 + assertEqual( + perft( + Board(0x48000L, 0x8000000000000L, 0x8L, 0x400000000L, 0x0L, 0x10002000000L, 0x402008000L, + 0x8010000040008L, true, 0, 0x0L), + 4 + ), + 67361 + ); + + // gentest-5906 + assertEqual( + perft( + Board(0x8400L, 0x8000000000000L, 0x8L, 0x800000000L, 0x0L, 0x10002000000L, 0x802008000L, + 0x8010000000408L, false, 0, 0x0L), + 4 + ), + 100973 + ); + + // gentest-5907 + assertEqual( + perft( + Board(0x8400L, 0x8000000000000L, 0x1000L, 0x400000000L, 0x0L, 0x1000002000000L, 0x402008000L, + 0x9000000001400L, true, 0, 0x0L), + 4 + ), + 166766 + ); + + // gentest-5908 + assertEqual( + perft( + Board(0x8400L, 0x400000000L, 0x1000L, 0x100000L, 0x0L, 0x1000002000000L, 0x2108000L, 0x1000400001400L, + false, 0, 0x0L), + 4 + ), + 176534 + ); + + // gentest-5909 + assertEqual( + perft( + Board(0x8400L, 0x200000000000L, 0x1000L, 0x10000000L, 0x0L, 0x1000002000000L, 0x12008000L, + 0x1200000001400L, true, 0, 0x0L), + 4 + ), + 186842 + ); + + // gentest-5910 + assertEqual( + perft( + Board(0x8400L, 0x200000000000L, 0x8000000000L, 0x80000000L, 0x0L, 0x1000002000000L, 0x82008000L, + 0x1208000000400L, false, 0, 0x0L), + 4 + ), + 124998 + ); + + // gentest-5911 + assertEqual( + perft( + Board(0x8000L, 0x200000000000L, 0x400000000004L, 0x40000000L, 0x0L, 0x1000002000000L, 0x42008000L, + 0x1600000000004L, true, 0, 0x0L), + 4 + ), + 232447 + ); + + // gentest-5912 + assertEqual( + perft( + Board(0x8000L, 0x200000000000L, 0x2000000004L, 0x1000L, 0x0L, 0x1000002000000L, 0x2009000L, + 0x1202000000004L, false, 0, 0x0L), + 4 + ), + 287822 + ); + + // gentest-5913 + assertEqual( + perft( + Board(0x8000L, 0x200000000000L, 0x80000000000004L, 0x100000000000L, 0x0L, 0x1000002000000L, + 0x100002008000L, 0x81200000000004L, true, 0, 0x0L), + 4 + ), + 188869 + ); + + // gentest-5914 + assertEqual( + perft( + Board(0x8000L, 0x200000000000L, 0x80000000100000L, 0x100000000000L, 0x0L, 0x1040000000000L, + 0x140000008000L, 0x81200000100000L, false, 0, 0x0L), + 4 + ), + 130380 + ); + + // gentest-5915 + assertEqual( + perft( + Board(0x8000L, 0x0L, 0x4000000000000800L, 0x200000000000L, 0x0L, 0x1040000000000L, 0x240000008000L, + 0x4001000000000800L, true, 0, 0x0L), + 4 + ), + 99550 + ); + + // gentest-5916 + assertEqual( + perft( + Board(0x8000L, 0x0L, 0x4000000000000800L, 0x20000000000L, 0x0L, 0x104000000000000L, 0x4020000008000L, + 0x4100000000000800L, false, 0, 0x0L), + 4 + ), + 85897 + ); + + // gentest-5917 + assertEqual( + perft( + Board(0x8000L, 0x0L, 0x4000000000010000L, 0x200000000000L, 0x0L, 0x104000000000000L, 0x4200000008000L, + 0x4100000000010000L, true, 0, 0x0L), + 4 + ), + 79437 + ); + + // gentest-5918 + assertEqual( + perft( + Board(0x80000000L, 0x0L, 0x800010000L, 0x200000000000L, 0x0L, 0x104000000000000L, 0x4200080000000L, + 0x100000800010000L, false, 0, 0x0L), + 4 + ), + 99911 + ); + + // gentest-5919 + assertEqual( + perft( + Board(0x80000000L, 0x0L, 0x4000000000010000L, 0x400000000000L, 0x0L, 0x5000000000000L, + 0x4400080000000L, 0x4001000000010000L, true, 0, 0x0L), + 4 + ), + 73187 + ); + + // gentest-5920 + assertEqual( + perft( + Board(0x80000000L, 0x0L, 0x4000080000000000L, 0x100000000000L, 0x0L, 0x1040000000000L, + 0x140080000000L, 0x4001080000000000L, false, 0, 0x0L), + 4 + ), + 63237 + ); + + // gentest-5921 + assertEqual( + perft( + Board(0x80000000L, 0x0L, 0x6000000000000000L, 0x100000L, 0x0L, 0x1040000000000L, 0x40080100000L, + 0x6001000000000000L, true, 0, 0x0L), + 4 + ), + 73426 + ); + + // gentest-5922 + assertEqual( + perft( + Board(0x80000000L, 0x0L, 0x6000000000000000L, 0x20L, 0x0L, 0x50000000000L, 0x40080000020L, + 0x6000010000000000L, false, 0, 0x0L), + 4 + ), + 69598 + ); + + // gentest-5923 + assertEqual( + perft( + Board(0x80000000L, 0x0L, 0x2000000000000100L, 0x20L, 0x0L, 0x8010000000000L, 0x8000080000020L, + 0x2000010000000100L, true, 0, 0x0L), + 4 + ), + 107880 + ); + + // gentest-5924 + assertEqual( + perft( + Board(0x80000000L, 0x0L, 0x40000000000100L, 0x1L, 0x0L, 0x400010000000000L, 0x400000080000001L, + 0x40010000000100L, false, 0, 0x0L), + 4 + ), + 40879 + ); + + // gentest-5925 + assertEqual( + perft( + Board(0x8000000000L, 0x0L, 0x8000100L, 0x1L, 0x0L, 0x400010000000000L, 0x400008000000001L, + 0x10008000100L, true, 0, 0x0L), + 4 + ), + 75639 + ); + + // gentest-5926 + assertEqual( + perft( + Board(0x8000000000L, 0x0L, 0x8000100L, 0x1L, 0x0L, 0x400000200000000L, 0x400008000000001L, + 0x208000100L, false, 0, 0x0L), + 4 + ), + 142793 + ); + + // gentest-5927 + assertEqual( + perft( + Board(0x8000000000L, 0x0L, 0x8020000L, 0x20L, 0x0L, 0x400040000000000L, 0x400008000000020L, + 0x40008020000L, true, 0, 0x0L), + 4 + ), + 139788 + ); + + // gentest-5928 + assertEqual( + perft( + Board(0x8000000000L, 0x0L, 0x8020000L, 0x1L, 0x0L, 0x400000200000000L, 0x400008000000001L, + 0x208020000L, false, 0, 0x0L), + 4 + ), + 186926 + ); + + // gentest-5929 + assertEqual( + perft( + Board(0x8000000000L, 0x0L, 0x120000L, 0x1L, 0x0L, 0x2000200000000L, 0x2008000000001L, 0x200120000L, + true, 0, 0x0L), + 4 + ), + 146856 + ); + + // gentest-5930 + assertEqual( + perft( + Board(0x800000000000L, 0x0L, 0x100008L, 0x10000000000L, 0x0L, 0x2000200000000L, 0x2810000000000L, + 0x200100008L, false, 0, 0x0L), + 4 + ), + 113291 + ); + + // gentest-5931 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-5932 + assertEqual( + perft( + Board(0xdf200010806f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10806fffL, 0xffdf200000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 334578 + ); + + // gentest-5933 + assertEqual( + perft( + Board(0xdb200410846b00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x20000000008L, 0x1000000000000010L, 0x10846bffL, 0xf7db220400000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 663918 + ); + + // gentest-5934 + assertEqual( + perft( + Board(0xdb2004308c4300L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x20000000008L, + 0x1000000000000010L, 0x308c43ffL, 0xb7dba20400000000L, false, 0, 0x8100000000000081L), + 4 + ), + 781504 + ); + + // gentest-5935 + assertEqual( + perft( + Board(0xdb2004308c4100L, 0x810000000042L, 0x2400000000001004L, 0x8100000000000081L, 0x208L, + 0x1000000000000010L, 0x308c51dfL, 0xb5dba10400000200L, true, 0, 0x8100000000000081L), + 4 + ), + 682795 + ); + + // gentest-5936 + assertEqual( + perft( + Board(0xd3202c108c4100L, 0x810000000042L, 0x2400000000000024L, 0x8100000000000081L, 0x208L, + 0x1000000000000010L, 0x20108c41ffL, 0xb5d3a10c00000200L, false, 0, 0x8100000000000081L), + 4 + ), + 1030216 + ); + + // gentest-5937 + assertEqual( + perft( + Board(0xd3200c108c4100L, 0x12000200002L, 0x2400000000000024L, 0x8200000000000081L, 0x208L, + 0x1000000000000010L, 0x10ac41bfL, 0xb6d3212c00000200L, true, 0, 0x8000000000000081L), + 4 + ), + 1450259 + ); + + // gentest-5938 + assertEqual( + perft( + Board(0xd1200e108c4100L, 0x13000000002L, 0x2400000000000220L, 0x8200000000000081L, 0x8L, + 0x1000000000000010L, 0x10108c43bbL, 0xb6d1212e00000000L, false, 0, 0x8000000000000081L), + 4 + ), + 808785 + ); + + // gentest-5939 + assertEqual( + perft( + Board(0xd1200e900c4100L, 0x13000000002L, 0x2020000000000220L, 0x8200000000000081L, 0x8L, + 0x1000000000000010L, 0x10900c43bbL, 0xb2f1212e00000000L, true, 0, 0x8000000000000081L), + 4 + ), + 1056837 + ); + + // gentest-5940 + assertEqual( + perft( + Board(0xd12006d00c0100L, 0x13000000002L, 0x2020000000000220L, 0x8200000000000041L, 0x8L, + 0x1000000000000010L, 0x10c00c037bL, 0xb2f1212610000000L, false, 0, 0x8000000000000001L), + 4 + ), + 1216552 + ); + + // gentest-5941 + assertEqual( + perft( + Board(0xd12006d00c0100L, 0x811000000002L, 0x2020000000000220L, 0x8400000000000041L, 0x1000000L, + 0x1000000000000010L, 0x10c10c0373L, 0xb4f1a10610000000L, true, 0, 0x8000000000000001L), + 4 + ), + 1092902 + ); + + // gentest-5942 + assertEqual( + perft( + Board(0xd12006d00c0100L, 0x810004000002L, 0x2000000000000220L, 0x8400000000000041L, 0x2000000L, + 0x1000000000000010L, 0xc60c0373L, 0xb4d1a10610000000L, false, 0, 0x8000000000000001L), + 4 + ), + 635042 + ); + + // gentest-5943 + assertEqual( + perft( + Board(0xd12006c00c0100L, 0x810004000002L, 0x2000000000000220L, 0x8200000000000041L, 0x2000000L, + 0x1000000000002000L, 0xc6042363L, 0xb2d1a10600080000L, true, 0, 0x8000000000000000L), + 4 + ), + 530730 + ); + + // gentest-5944 + assertEqual( + perft( + Board(0xd12006c00c0100L, 0x810004000002L, 0x2000000000000220L, 0x4200000000100001L, 0x2000000L, + 0x1000000000002000L, 0xc6142323L, 0x72d1a10600080000L, false, 0, 0x0L), + 4 + ), + 648253 + ); + + // gentest-5945 + assertEqual( + perft( + Board(0xd10026800c0100L, 0x10044000002L, 0x2000000000000220L, 0x4200000000100001L, 0x2000000L, + 0x1000000000004000L, 0x86144323L, 0x72d1012640080000L, true, 0, 0x0L), + 4 + ), + 774052 + ); + + // gentest-5946 + assertEqual( + perft( + Board(0xd10026800c0100L, 0x4000040000802L, 0x2000000000000220L, 0x4200000000100001L, 0x2000000L, + 0x1000000000800000L, 0x82940b23L, 0x72d5002640080000L, false, 0, 0x0L), + 4 + ), + 971848 + ); + + // gentest-5947 + assertEqual( + perft( + Board(0xd10026800c0100L, 0x4800000000802L, 0x2000000000000220L, 0x4200000000100001L, 0x20000000L, + 0x8000000800000L, 0xa0940b23L, 0x62dd802600080000L, true, 0, 0x0L), + 4 + ), + 939173 + ); + + // gentest-5948 + assertEqual( + perft( + Board(0xd00027800c0100L, 0x4800000000802L, 0x2000000000000220L, 0x4200000000200001L, 0x4000000000L, + 0x8000000800000L, 0x4080a40b23L, 0x62dc802700080000L, false, 0, 0x0L), + 4 + ), + 790926 + ); + + // gentest-5949 + assertEqual( + perft( + Board(0xd00025820c0100L, 0x1000800010000002L, 0x2000000000000220L, 0x4200000000200001L, 0x4000000000L, + 0x8000000800000L, 0x4090a40323L, 0x72d8802502080000L, true, 0, 0x0L), + 4 + ), + 1038258 + ); + + // gentest-5950 + assertEqual( + perft( + Board(0x900025820c0100L, 0x1000800000000802L, 0x2000000000000220L, 0x4400000000200001L, + 0x40000000000000L, 0x8000000800000L, 0x40000080a40b23L, 0x7498802502080000L, false, 0, 0x0L), + 4 + ), + 756516 + ); + + // gentest-5951 + assertEqual( + perft( + Board(0x900005a20c0100L, 0x1000800000000802L, 0x2000000000000220L, 0x4800000000200001L, 0x40L, + 0x8000000800000L, 0x80a40b63L, 0x7898800522080000L, true, 0, 0x0L), + 4 + ), + 806953 + ); + + // gentest-5952 + assertEqual( + perft( + Board(0x900005a00c0100L, 0x1000800000000802L, 0x2000000000001200L, 0x4800000000200001L, 0x20L, + 0x8000000800000L, 0x80a01b23L, 0x78988005200c0000L, false, 0, 0x0L), + 4 + ), + 780843 + ); + + // gentest-5953 + assertEqual( + perft( + Board(0x900001a40c0100L, 0x1000800000000802L, 0x2000000000001200L, 0x800000040200001L, 0x10L, + 0x8000000800000L, 0x80a01b13L, 0x38988001640c0000L, true, 0, 0x0L), + 4 + ), + 804293 + ); + + // gentest-5954 + assertEqual( + perft( + Board(0x900001a40c0100L, 0x1000800000000802L, 0x2000000000001200L, 0x800000040100001L, 0x8L, + 0x80000800000L, 0x80901b0bL, 0x38908801640c0000L, false, 0, 0x0L), + 4 + ), + 1001429 + ); + + // gentest-5955 + assertEqual( + perft( + Board(0x900001841c0100L, 0x1000002000000802L, 0x2000000000000220L, 0x800000040000001L, 0x8L, + 0x80000800000L, 0x80800b2bL, 0x38900821441c0000L, true, 0, 0x0L), + 4 + ), + 796141 + ); + + // gentest-5956 + assertEqual( + perft( + Board(0x900001841c0100L, 0x1000002000000802L, 0x2000000000001200L, 0x800000020000001L, 0x40L, + 0x80000800000L, 0x80801b43L, 0x38900821241c0000L, false, 0, 0x0L), + 4 + ), + 1409832 + ); + + // gentest-5957 + assertEqual( + perft( + Board(0x108001841c0100L, 0x1000002000000802L, 0x2000000000001200L, 0x800000020000001L, 0x4L, + 0x800800000L, 0x80801b07L, 0x38108029241c0000L, true, 0, 0x0L), + 4 + ), + 772046 + ); + + // gentest-5958 + assertEqual( + perft( + Board(0x108001051c0000L, 0x1000002000000802L, 0x2000000000001200L, 0x800000080000001L, 0x4L, + 0x800004000L, 0x1005a07L, 0x38108029841c0000L, false, 0, 0x0L), + 4 + ), + 812504 + ); + + // gentest-5959 + assertEqual( + perft( + Board(0x10008105180000L, 0x1000002000000802L, 0x2000000000001200L, 0x200000080000001L, 0x40000L, + 0x800004000L, 0x1045a03L, 0x321000a984180000L, true, 0, 0x0L), + 4 + ), + 862898 + ); + + // gentest-5960 + assertEqual( + perft( + Board(0x10008105180000L, 0x1000002010000002L, 0x40000000001200L, 0x200000080000001L, 0x1000000000L, + 0x800004000L, 0x1011005203L, 0x125000a984180000L, false, 0, 0x0L), + 4 + ), + 76133 + ); + + // gentest-5961 + assertEqual( + perft( + Board(0x10008105180000L, 0x1000002010000002L, 0x1000000220L, 0x80020001L, 0x0L, 0x800004000L, + 0x11004223L, 0x101000b9841a0000L, true, 0, 0x0L), + 4 + ), + 642287 + ); + + // gentest-5962 + assertEqual( + perft( + Board(0x10008105180000L, 0x1040000010000002L, 0x1000000024L, 0x80030000L, 0x0L, 0x800004000L, + 0x11014026L, 0x10500099841a0000L, false, 0, 0x0L), + 4 + ), + 499600 + ); + + // gentest-5963 + assertEqual( + perft( + Board(0x10008105100800L, 0x1040000010000002L, 0x1204L, 0x80030000L, 0x0L, 0x800004000L, 0x11015006L, + 0x1050008984120a00L, true, 0, 0x0L), + 4 + ), + 741639 + ); + + // gentest-5964 + assertEqual( + perft( + Board(0x10008105100000L, 0x1040000000000802L, 0x1204L, 0x82010000L, 0x0L, 0x800200000L, 0x1211806L, + 0x1050008986100200L, false, 0, 0x0L), + 4 + ), + 359301 + ); + + // gentest-5965 + assertEqual( + perft( + Board(0x10008104100000L, 0x1040000000000022L, 0x1204L, 0x81010000L, 0x0L, 0x40000200000L, 0x211026L, + 0x1050048185100200L, true, 0, 0x0L), + 4 + ), + 461508 + ); + + // gentest-5966 + assertEqual( + perft( + Board(0x10008100000000L, 0x1040000000100002L, 0x4000204L, 0x80010000L, 0x0L, 0x40000200000L, + 0x4300006L, 0x1050048180010200L, false, 0, 0x0L), + 4 + ), + 455592 + ); + + // gentest-5967 + assertEqual( + perft( + Board(0x10008100000000L, 0x1040000000100002L, 0x4000a00L, 0x200000080000000L, 0x0L, 0x40000200000L, + 0x4300802L, 0x1250048180000200L, true, 0, 0x0L), + 4 + ), + 982289 + ); + + // gentest-5968 + assertEqual( + perft( + Board(0x10008100000000L, 0x1040002000000002L, 0x4100200L, 0x800000080000000L, 0x0L, 0x40000200000L, + 0x2004300002L, 0x1850048180000200L, false, 0, 0x0L), + 4 + ), + 1186910 + ); + + // gentest-5969 + assertEqual( + perft( + Board(0x9100000000L, 0x1040002000000002L, 0x4000240L, 0x800000080000000L, 0x0L, 0x2000000200000L, + 0x2004200042L, 0x1842009180000200L, true, 0, 0x0L), + 4 + ), + 1024833 + ); + + // gentest-5970 + assertEqual( + perft( + Board(0x9100000000L, 0x1040000000000002L, 0x4008200L, 0x80000008L, 0x0L, 0x2000000200000L, + 0x40000004208002L, 0x1002009180000208L, false, 0, 0x0L), + 4 + ), + 673272 + ); + + // gentest-5971 + assertEqual( + perft( + Board(0x9100000000L, 0x1000002000000002L, 0x4008200L, 0x40000008L, 0x0L, 0x1000000200000L, + 0x2004208002L, 0x1001009140000208L, true, 0, 0x0L), + 4 + ), + 1050741 + ); + + // gentest-5972 + assertEqual( + perft( + Board(0x9100000000L, 0x1000000040000002L, 0x4008200L, 0x400000000008L, 0x0L, 0x1000000200000L, + 0x44208002L, 0x1001409100000208L, false, 0, 0x0L), + 4 + ), + 944664 + ); + + // gentest-5973 + assertEqual( + perft( + Board(0x1140000000L, 0x1000000000000002L, 0x4008200L, 0x4000000000000008L, 0x0L, 0x1000000001000L, + 0x4009002L, 0x5001001140000208L, true, 0, 0x0L), + 4 + ), + 349895 + ); + + // gentest-5974 + assertEqual( + perft( + Board(0x1140000000L, 0x4000000040000L, 0x20000000008200L, 0x4000000000000008L, 0x0L, 0x1000000001000L, + 0x20000000049000L, 0x4005001140000208L, false, 0, 0x0L), + 4 + ), + 692709 + ); + + // gentest-5975 + assertEqual( + perft( + Board(0x1140000000L, 0x4000000000008L, 0x20000000008200L, 0x4008000000L, 0x0L, 0x1000000001000L, + 0x20000000009008L, 0x5005148000200L, true, 0, 0x0L), + 4 + ), + 463777 + ); + + // gentest-5976 + assertEqual( + perft( + Board(0x1140000000L, 0x200000008L, 0x1000000000008200L, 0x4008000000L, 0x0L, 0x1000000001000L, + 0x1000000000009008L, 0x1005348000200L, false, 0, 0x0L), + 4 + ), + 317618 + ); + + // gentest-5977 + assertEqual( + perft( + Board(0x1140000000L, 0x4000000000008L, 0x1000000000000240L, 0x4000000008000000L, 0x0L, + 0x1000000001000L, 0x1000000000001048L, 0x4005001148000200L, true, 0, 0x0L), + 4 + ), + 272068 + ); + + // gentest-5978 + assertEqual( + perft( + Board(0x1140000000L, 0x100000000008L, 0x1000000000400200L, 0x4000000008000000L, 0x0L, + 0x1000000001000L, 0x1000000000401008L, 0x4001101148000200L, false, 0, 0x0L), + 4 + ), + 478266 + ); + + // gentest-5979 + assertEqual( + perft( + Board(0x1140000000L, 0x800000000000008L, 0x1000000000400200L, 0x40000008000000L, 0x0L, + 0x1000000100000L, 0x1000000000500008L, 0x841001148000200L, true, 0, 0x0L), + 4 + ), + 359893 + ); + + // gentest-5980 + assertEqual( + perft( + Board(0x1140000000L, 0x800000000000008L, 0x100000400200L, 0x40000004000000L, 0x0L, 0x1000000100000L, + 0x100000500008L, 0x841001144000200L, false, 0, 0x0L), + 4 + ), + 492542 + ); + + // gentest-5981 + assertEqual( + perft( + Board(0x1140000000L, 0x800000000000008L, 0x8000000400200L, 0x40010000000000L, 0x0L, 0x1000000100000L, + 0x8000000500008L, 0x841011140000200L, true, 0, 0x0L), + 4 + ), + 394970 + ); + + // gentest-5982 + assertEqual( + perft( + Board(0x1140000000L, 0x800000000000008L, 0x1000000008400000L, 0x40010000000000L, 0x0L, + 0x1000000080000L, 0x1000000000480008L, 0x841011148000000L, false, 0, 0x0L), + 4 + ), + 495991 + ); + + // gentest-5983 + assertEqual( + perft( + Board(0x1140000000L, 0x800000000000008L, 0x1500000L, 0x40080000000000L, 0x0L, 0x1000000080000L, + 0x1480008L, 0x841081140100000L, true, 0, 0x0L), + 4 + ), + 159667 + ); + + // gentest-5984 + assertEqual( + perft( + Board(0x1140000000L, 0x800000000000008L, 0x1500000L, 0x4080000000000L, 0x0L, 0x1000200000000L, + 0x201400008L, 0x805081140100000L, false, 0, 0x0L), + 4 + ), + 289299 + ); + + // gentest-5985 + assertEqual( + perft( + Board(0x1140000000L, 0x800000000000008L, 0x81000040L, 0x20080000000000L, 0x0L, 0x1000200000000L, + 0x281000008L, 0x821081140000040L, true, 0, 0x0L), + 4 + ), + 310244 + ); + + // gentest-5986 + assertEqual( + perft( + Board(0x1040000000L, 0x800000000000008L, 0x1002040L, 0x20020000000000L, 0x0L, 0x1000100000000L, + 0x101002008L, 0x821021040000040L, false, 0, 0x0L), + 4 + ), + 142036 + ); + + // gentest-5987 + assertEqual( + perft( + Board(0x1040000000L, 0x800000000000008L, 0x81000040L, 0x4020000000000L, 0x0L, 0x1000100000000L, + 0x181000008L, 0x805021040000040L, true, 0, 0x0L), + 4 + ), + 366800 + ); + + // gentest-5988 + assertEqual( + perft( + Board(0x50000000L, 0x800000000000008L, 0x81000040L, 0x4020000000000L, 0x0L, 0x1000100000000L, + 0x181000008L, 0x805020050000040L, false, 0, 0x0L), + 4 + ), + 364067 + ); + + // gentest-5989 + assertEqual( + perft( + Board(0x50000000L, 0x8L, 0x800000001000040L, 0x20000000400L, 0x0L, 0x1000100000000L, + 0x800000101000008L, 0x1020050000440L, true, 0, 0x0L), + 4 + ), + 276892 + ); + + // gentest-5990 + assertEqual( + perft( + Board(0x50000000L, 0x8L, 0x20001000000L, 0x400L, 0x0L, 0x1000200000000L, 0x201000008L, + 0x1020050000400L, false, 0, 0x0L), + 4 + ), + 54614 + ); + + // gentest-5991 + assertEqual( + perft( + Board(0x10400000L, 0x40000L, 0x4000001000000L, 0x400L, 0x0L, 0x1000200000000L, 0x201040000L, + 0x5000010400400L, true, 0, 0x0L), + 4 + ), + 66836 + ); + + // gentest-5992 + assertEqual( + perft( + Board(0x10400000L, 0x40000L, 0x20020000L, 0x400L, 0x0L, 0x1040000000000L, 0x40000060000L, + 0x1000030400400L, false, 0, 0x0L), + 4 + ), + 127995 + ); + + // gentest-5993 + assertEqual( + perft( + Board(0x10400000L, 0x40000L, 0x20020000L, 0x400L, 0x0L, 0x1000800000000L, 0x800060000L, + 0x1000030400400L, true, 0, 0x0L), + 4 + ), + 142909 + ); + + // gentest-5994 + assertEqual( + perft( + Board(0x400000L, 0x40000L, 0x21000000L, 0x800L, 0x0L, 0x1000010000000L, 0x11040000L, 0x1000020400800L, + false, 0, 0x0L), + 4 + ), + 170989 + ); + + // gentest-5995 + assertEqual( + perft( + Board(0x400000L, 0x2L, 0x1000800L, 0x200L, 0x0L, 0x1000010000000L, 0x11000002L, 0x1000000400a00L, + true, 0, 0x0L), + 4 + ), + 134122 + ); + + // gentest-5996 + assertEqual( + perft( + Board(0x400000L, 0x2L, 0x400000000000800L, 0x20000000000L, 0x0L, 0x1000010000000L, 0x400000010000002L, + 0x1020000400800L, false, 0, 0x0L), + 4 + ), + 142440 + ); + + // gentest-5997 + assertEqual( + perft( + Board(0x400000L, 0x2L, 0x800040000000L, 0x20000000000L, 0x0L, 0x2000010000000L, 0x50000002L, + 0x2820000400000L, true, 0, 0x0L), + 4 + ), + 162282 + ); + + // gentest-5998 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x800000800000L, 0x2L, 0x0L, 0x2000000080000L, 0x880000L, 0x2800000400002L, + false, 0, 0x0L), + 4 + ), + 94314 + ); + + // gentest-5999 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x20000020L, 0x200L, 0x0L, 0x2000000080000L, 0x80020L, 0x2000020400200L, true, + 0, 0x0L), + 4 + ), + 46463 + ); + + // gentest-6000 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x4000001000L, 0x200L, 0x0L, 0x2000008000000L, 0x8001000L, 0x2004000400200L, + false, 0, 0x0L), + 4 + ), + 109243 + ); + + def batch15(): Unit = + // gentest-6001 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x4000001000L, 0x800000000000000L, 0x0L, 0x2000000040000L, 0x41000L, + 0x802004000400000L, true, 0, 0x0L), + 4 + ), + 129304 + ); + + // gentest-6002 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x4000000020L, 0x800000000000000L, 0x0L, 0x1000000040000L, 0x40020L, + 0x801004000400000L, false, 0, 0x0L), + 4 + ), + 94877 + ); + + // gentest-6003 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x10000000001000L, 0x8L, 0x0L, 0x1000000040000L, 0x41000L, 0x11000000400008L, + true, 0, 0x0L), + 4 + ), + 106487 + ); + + // gentest-6004 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x10000004000000L, 0x20L, 0x0L, 0x1000000020000L, 0x4020000L, + 0x11000000400020L, false, 0, 0x0L), + 4 + ), + 132060 + ); + + // gentest-6005 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x4000004000000000L, 0x2000L, 0x0L, 0x1000000020000L, 0x4000000000020000L, + 0x1004000402000L, true, 0, 0x0L), + 4 + ), + 90249 + ); + + // gentest-6006 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x4800000000L, 0x200000L, 0x0L, 0x1000002000000L, 0x802000000L, + 0x1004000600000L, false, 0, 0x0L), + 4 + ), + 125685 + ); + + // gentest-6007 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x880000000L, 0x20000L, 0x0L, 0x1000200000000L, 0xa00000000L, 0x1000080420000L, + true, 0, 0x0L), + 4 + ), + 27141 + ); + + // gentest-6008 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x880000000L, 0x2000000000000L, 0x0L, 0x1000008000000L, 0x808000000L, + 0x3000080400000L, false, 0, 0x0L), + 4 + ), + 113903 + ); + + // gentest-6009 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x880000000L, 0x8000000L, 0x0L, 0x1001000000000L, 0x1800000000L, + 0x1000088400000L, true, 0, 0x0L), + 4 + ), + 84951 + ); + + // gentest-6010 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x84000000L, 0x0L, 0x0L, 0x1080000000000L, 0x80004000000L, 0x1000080400000L, + false, 0, 0x0L), + 4 + ), + 23479 + ); + + // gentest-6011 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x4000080000L, 0x0L, 0x0L, 0x2080000000000L, 0x80000080000L, 0x2004000400000L, + true, 0, 0x0L), + 4 + ), + 46070 + ); + + // gentest-6012 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x4000000400L, 0x0L, 0x0L, 0x100040000000000L, 0x40000000400L, + 0x100004000400000L, false, 0, 0x0L), + 4 + ), + 31431 + ); + + // gentest-6013 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x10000000000400L, 0x0L, 0x0L, 0x1000200000000L, 0x200000400L, + 0x11000000400000L, true, 0, 0x0L), + 4 + ), + 28424 + ); + + // gentest-6014 + assertEqual( + perft( + Board(0x400000L, 0x0L, 0x10008L, 0x0L, 0x0L, 0x1040000000000L, 0x40000000008L, 0x1000000410000L, + false, 0, 0x0L), + 4 + ), + 19085 + ); + + // gentest-6015 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x11040L, 0x0L, 0x0L, 0x1040000000000L, 0x40000001000L, 0x1000000010040L, true, 0, + 0x0L), + 4 + ), + 43418 + ); + + // gentest-6016 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x12008L, 0x0L, 0x0L, 0x5000000000000L, 0x4000000000008L, 0x1000000012000L, false, + 0, 0x0L), + 4 + ), + 33108 + ); + + // gentest-6017 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6018 + assertEqual( + perft( + Board(0xf700080110ee00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x110eeffL, 0xfff7000800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 769381 + ); + + // gentest-6019 + assertEqual( + perft( + Board(0xf700080510ea00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x510eaffL, 0xfff7000800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 785113 + ); + + // gentest-6020 + assertEqual( + perft( + Board(0xf502080d10e200L, 0x4200000000000042L, 0x2400000000080004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xd18e2dfL, 0xfff5020800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1194035 + ); + + // gentest-6021 + assertEqual( + perft( + Board(0xf1020c0d10e200L, 0x4000010000000042L, 0x2400000000080004L, 0x8100000000010080L, + 0x800000000000008L, 0x1000000000000010L, 0xd19e2deL, 0xfdf1030c00000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 1169083 + ); + + // gentest-6022 + assertEqual( + perft( + Board(0xf1020c0d10e200L, 0x4000010000000042L, 0x2400400000000004L, 0x8200000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x40000d10e2dfL, 0xfef1030c00000000L, false, 0, + 0x8000000000000080L), + 4 + ), + 988594 + ); + + // gentest-6023 + assertEqual( + perft( + Board(0xf1020c0d10e200L, 0x4000010000040040L, 0x2400400000000004L, 0x8200000000000081L, + 0x4000000000008L, 0x1000000000000010L, 0x40000d14e2ddL, 0xf6f5030c00000000L, true, 0, + 0x8000000000000080L), + 4 + ), + 1817791 + ); + + // gentest-6024 + assertEqual( + perft( + Board(0x71020c0d10e200L, 0x4000010000040040L, 0x2400000010000004L, 0x8200000000000081L, 0x20000008L, + 0x1000000000000010L, 0x1d14e2ddL, 0xf671030c20000000L, false, 0, 0x8000000000000080L), + 4 + ), + 2966819 + ); + + // gentest-6025 + assertEqual( + perft( + Board(0x71020c0d10e200L, 0x4000010000000140L, 0x2002000010000004L, 0x8800000000000081L, 0x20000008L, + 0x1000000000000010L, 0x1d10e3ddL, 0xf873030c20000000L, true, 0, 0x8000000000000080L), + 4 + ), + 2514983 + ); + + // gentest-6026 + assertEqual( + perft( + Board(0x71020c0900e200L, 0x4000010000000140L, 0x2002000010000004L, 0x8800000000000081L, 0x100008L, + 0x1000000000000020L, 0x81900e3edL, 0xf873030400100000L, false, 0, 0x8000000000000000L), + 4 + ), + 2543269 + ); + + // gentest-6027 + assertEqual( + perft( + Board(0x71020c89006200L, 0x4000010000000140L, 0x2002000010000004L, 0x8200000000000081L, 0x10008L, + 0x1000000000000020L, 0x8990063edL, 0xf273030400010000L, true, 0, 0x8000000000000000L), + 4 + ), + 2289415 + ); + + // gentest-6028 + assertEqual( + perft( + Board(0x51022c89026000L, 0x4000010000000140L, 0x2002000010000004L, 0x8200000000000081L, 0x8000010000L, + 0x1000000000000020L, 0x88990261e5L, 0xf253032400010000L, false, 0, 0x8000000000000000L), + 4 + ), + 186441 + ); + + // gentest-6029 + assertEqual( + perft( + Board(0x51022c89026000L, 0x4000010000000140L, 0x2002000010010000L, 0x280000000000081L, 0x8000000000L, + 0x8000000000020L, 0x88990361e1L, 0x62db032400000000L, true, 0, 0x0L), + 4 + ), + 1255932 + ); + + // gentest-6030 + assertEqual( + perft( + Board(0x11026c89026000L, 0x4000010000200004L, 0x2002000010010000L, 0x280000000000081L, 0x8000000000L, + 0x8000000000020L, 0x88992360a5L, 0x629b036400000000L, false, 0, 0x0L), + 4 + ), + 1415359 + ); + + // gentest-6031 + assertEqual( + perft( + Board(0x11024d98026000L, 0x4000010000200004L, 0x2002000000010000L, 0x280000000000081L, 0x8000000000L, + 0x800000000000020L, 0x89882360a5L, 0x6a93034410000000L, true, 0, 0x0L), + 4 + ), + 1014451 + ); + + // gentest-6032 + assertEqual( + perft( + Board(0x11020d9a006000L, 0x4000010000200004L, 0x2002000000010000L, 0x200000000000081L, + 0x80000000000000L, 0x800000000000020L, 0x8000090a2160a5L, 0x6a13030490000000L, false, 0, 0x0L), + 4 + ), + 1003569 + ); + + // gentest-6033 + assertEqual( + perft( + Board(0x11020d1a806000L, 0x810000200004L, 0x2002000000010000L, 0x200000000000081L, + 0x8000000000000000L, 0x800000000000020L, 0x800000090a2160a5L, 0x2a13830410800000L, true, 0, 0x0L), + 4 + ), + 813999 + ); + + // gentest-6034 + assertEqual( + perft( + Board(0x11020d1a806000L, 0x12000200004L, 0x2002000000010000L, 0x200000000008001L, 0x8000000000000000L, + 0x800000000000040L, 0x800000090a21e045L, 0x2a13032410800000L, false, 0, 0x0L), + 4 + ), + 943770 + ); + + // gentest-6035 + assertEqual( + perft( + Board(0x1100051a806000L, 0x12000280000L, 0x2000000800010000L, 0x200000000008001L, 0x8000000000000000L, + 0x800000000000040L, 0x800000000a29e041L, 0x2a11012d10800000L, true, 0, 0x0L), + 4 + ), + 2135705 + ); + + // gentest-6036 + assertEqual( + perft( + Board(0x1100011a806000L, 0x12000280000L, 0x2000000800010000L, 0x200000000008001L, 0x40000000000L, + 0x800000000000040L, 0x4000229e041L, 0x2a11012918800000L, false, 0, 0x0L), + 4 + ), + 1998927 + ); + + // gentest-6037 + assertEqual( + perft( + Board(0x1100011a006000L, 0x90000280000L, 0x2000000800010000L, 0x200000000008001L, 0x400000000L, + 0x800000000000040L, 0x40229a041L, 0x2a11090918004000L, true, 0, 0x0L), + 4 + ), + 1898084 + ); + + // gentest-6038 + assertEqual( + perft( + Board(0x1100011a006000L, 0x90000280000L, 0x2000000800010000L, 0x180000000000002L, 0x400000000L, + 0x800000000000040L, 0x80000402292042L, 0x2911090918004000L, false, 0, 0x0L), + 4 + ), + 2089656 + ); + + // gentest-6039 + assertEqual( + perft( + Board(0x1100001b006000L, 0x20010000280000L, 0x2000000800000200L, 0x180000000000002L, 0x400000000L, + 0x800000000000040L, 0x80000402282242L, 0x2931010819004000L, true, 0, 0x0L), + 4 + ), + 1290623 + ); + + // gentest-6040 + assertEqual( + perft( + Board(0x1100001b006000L, 0x20010000280000L, 0x2000000800010000L, 0x280000000000002L, 0x4000000L, + 0x800000000000040L, 0x80000006292042L, 0x2a31010819004000L, false, 0, 0x0L), + 4 + ), + 1601201 + ); + + // gentest-6041 + assertEqual( + perft( + Board(0x1100001b006000L, 0x11000280000L, 0x2000000800010000L, 0x280000000000002L, 0x4000000000000L, + 0x1000000000000040L, 0x84000002292042L, 0x3211011819004000L, true, 0, 0x0L), + 4 + ), + 2000477 + ); + + // gentest-6042 + assertEqual( + perft( + Board(0x1100001b006000L, 0x11000280000L, 0x2000000800000200L, 0x880000000000002L, 0x4000000000000L, + 0x1000000000000040L, 0x84000002282242L, 0x3811011819004000L, false, 0, 0x0L), + 4 + ), + 2213774 + ); + + // gentest-6043 + assertEqual( + perft( + Board(0x1100000b206000L, 0x50000080000L, 0x2000000800000001L, 0x880000000000002L, 0x4000000000000L, + 0x1000000000000040L, 0x84000002082043L, 0x3811050809204000L, true, 0, 0x0L), + 4 + ), + 963272 + ); + + // gentest-6044 + assertEqual( + perft( + Board(0x100000b202000L, 0x50000080040L, 0x2000000800000001L, 0x810000000000002L, 0x4000000000000L, + 0x1000000000008000L, 0x1400000208a003L, 0x3801050809200040L, false, 0, 0x0L), + 4 + ), + 69238 + ); + + // gentest-6045 + assertEqual( + perft( + Board(0x100000b202000L, 0x50000080040L, 0x2000000800000001L, 0x800000000000002L, 0x40000L, + 0x1000000000008000L, 0x20ca003L, 0x3801050809200040L, true, 0, 0x0L), + 4 + ), + 800524 + ); + + // gentest-6046 + assertEqual( + perft( + Board(0x100000b202000L, 0x10100080040L, 0x2000000800000001L, 0x800000000020000L, 0x40000000000L, + 0x1000000000008000L, 0x400020aa001L, 0x3801010909200040L, false, 0, 0x0L), + 4 + ), + 122345 + ); + + // gentest-6047 + assertEqual( + perft( + Board(0x100000b202000L, 0x200040000080040L, 0x2000000800000001L, 0x800000000020000L, 0x0L, + 0x1000000000400000L, 0x24a2001L, 0x3a01040809200040L, true, 0, 0x0L), + 4 + ), + 308813 + ); + + // gentest-6048 + assertEqual( + perft( + Board(0x100000b202000L, 0x200040000000240L, 0x2000100000000001L, 0x800000000100000L, 0x0L, + 0x1000000000400000L, 0x2502201L, 0x3a01140009200040L, false, 0, 0x0L), + 4 + ), + 209243 + ); + + // gentest-6049 + assertEqual( + perft( + Board(0x100000b202000L, 0x200040000000240L, 0x10100000000001L, 0x800000000000010L, 0x0L, + 0x20000000400000L, 0x2402211L, 0xa31140009200040L, true, 0, 0x0L), + 4 + ), + 411550 + ); + + // gentest-6050 + assertEqual( + perft( + Board(0x100000b202000L, 0x200040000000240L, 0x80000001L, 0x800100000000000L, 0x0L, 0x20000020000000L, + 0x100022002201L, 0xa21040089200040L, false, 0, 0x0L), + 4 + ), + 249551 + ); + + // gentest-6051 + assertEqual( + perft( + Board(0x100000b202000L, 0x8000100000240L, 0x80000001L, 0x800040000000000L, 0x0L, 0x20000020000000L, + 0x40022002201L, 0x829000189200040L, true, 0, 0x0L), + 4 + ), + 429394 + ); + + // gentest-6052 + assertEqual( + perft( + Board(0x100000b202000L, 0x8000104000040L, 0x80000001L, 0xc00000000000000L, 0x0L, 0x200020000000L, + 0x400000026002001L, 0x809200189200040L, false, 0, 0x0L), + 4 + ), + 230227 + ); + + // gentest-6053 + assertEqual( + perft( + Board(0x100000b202000L, 0x20500000040L, 0x80000001L, 0xc00000000000000L, 0x0L, 0x20000020000000L, + 0x400020022002001L, 0x821000589200040L, true, 0, 0x0L), + 4 + ), + 405402 + ); + + // gentest-6054 + assertEqual( + perft( + Board(0x100000a212000L, 0x20500000040L, 0x80000200L, 0xa00000000000000L, 0x0L, 0x20000020000000L, + 0x200020022002200L, 0x821000588210040L, false, 0, 0x0L), + 4 + ), + 488481 + ); + + // gentest-6055 + assertEqual( + perft( + Board(0x100000a200000L, 0x30100000040L, 0x12000L, 0xa00000000000000L, 0x0L, 0x20000020000000L, + 0x200020022010000L, 0x821010108202040L, true, 0, 0x0L), + 4 + ), + 278089 + ); + + // gentest-6056 + assertEqual( + perft( + Board(0x1000208200000L, 0x30100000040L, 0x10010L, 0xa00000000000000L, 0x0L, 0x20000040000000L, + 0x200020240010000L, 0x821010108200050L, false, 0, 0x0L), + 4 + ), + 476607 + ); + + // gentest-6057 + assertEqual( + perft( + Board(0x1010008200000L, 0xa0000000040L, 0x10010L, 0xa00000000000000L, 0x0L, 0x20000040000000L, + 0x200030040010000L, 0x821080008200050L, true, 0, 0x0L), + 4 + ), + 314788 + ); + + // gentest-6058 + assertEqual( + perft( + Board(0x1010008200000L, 0xa0000000040L, 0x10010L, 0x208000000000000L, 0x0L, 0x20000040000000L, + 0x200030040010000L, 0x29080008200050L, false, 0, 0x0L), + 4 + ), + 384585 + ); + + // gentest-6059 + assertEqual( + perft( + Board(0x1010008200000L, 0x20010000040L, 0x2000000000000010L, 0x200000800000000L, 0x0L, + 0x20000040000000L, 0x2200030040000000L, 0x21000818200050L, true, 0, 0x0L), + 4 + ), + 353877 + ); + + // gentest-6060 + assertEqual( + perft( + Board(0x1010008200000L, 0x20400000040L, 0x800000000010L, 0x4000000800000000L, 0x0L, 0x20000040000000L, + 0x4000830040000000L, 0x21000c08200050L, false, 0, 0x0L), + 4 + ), + 446103 + ); + + // gentest-6061 + assertEqual( + perft( + Board(0x1000008200000L, 0x30000000040L, 0x2800L, 0x4000000800000000L, 0x0L, 0x20000040000000L, + 0x4000020040000800L, 0x21010808202040L, true, 0, 0x0L), + 4 + ), + 358966 + ); + + // gentest-6062 + assertEqual( + perft( + Board(0x1000008200000L, 0x10800000040L, 0x2800L, 0x4000000000000000L, 0x0L, 0x100020000000L, + 0x4000000820000800L, 0x1110008202040L, false, 0, 0x0L), + 4 + ), + 121523 + ); + + // gentest-6063 + assertEqual( + perft( + Board(0x1000008200000L, 0x10800000040L, 0x2800L, 0x40000000L, 0x0L, 0x100020000000L, 0x860000800L, + 0x1110008202040L, true, 0, 0x0L), + 4 + ), + 99593 + ); + + // gentest-6064 + assertEqual( + perft( + Board(0x1000008200000L, 0x10010000000040L, 0x810L, 0x400000000000L, 0x0L, 0x100020000000L, + 0x10400020000800L, 0x1110008200050L, false, 0, 0x0L), + 4 + ), + 30453 + ); + + // gentest-6065 + assertEqual( + perft( + Board(0x1000008200000L, 0x10000000040L, 0x800L, 0x400000000000L, 0x0L, 0x10001000000000L, + 0x401000000000L, 0x11010008200840L, true, 0, 0x0L), + 4 + ), + 109073 + ); + + // gentest-6066 + assertEqual( + perft( + Board(0x1000008200000L, 0x10000000040L, 0x800L, 0x20000000000L, 0x0L, 0x2000080000000000L, + 0xa0000000000L, 0x2001010008200840L, false, 0, 0x0L), + 4 + ), + 85064 + ); + + // gentest-6067 + assertEqual( + perft( + Board(0x20008200000L, 0x10000000040L, 0x4000000000L, 0x0L, 0x0L, 0x2000000800000000L, 0x800000000L, + 0x2000034008200040L, true, 0, 0x0L), + 4 + ), + 18323 + ); + + // gentest-6068 + assertEqual( + perft( + Board(0x20000200000L, 0x10000000040L, 0x800L, 0x0L, 0x0L, 0x2000000008000000L, 0x8000000L, + 0x2000030000200840L, false, 0, 0x0L), + 4 + ), + 13156 + ); + + // gentest-6069 + assertEqual( + perft( + Board(0x20000200000L, 0x10000000040L, 0x800L, 0x0L, 0x0L, 0x2000000000100000L, 0x100000L, + 0x2000030000200840L, true, 0, 0x0L), + 4 + ), + 10010 + ); + + // gentest-6070 + assertEqual( + perft( + Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x1000000000000400L, 0x400L, + 0x1000030000200040L, false, 0, 0x0L), + 4 + ), + 8500 + ); + + // gentest-6071 + assertEqual( + perft( + Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, + 0x4000030000200040L, true, 0, 0x0L), + 4 + ), + 4330 + ); + + // gentest-6072 + assertEqual( + perft( + Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x80000000000200L, 0x200L, 0x80030000200040L, + false, 0, 0x0L), + 4 + ), + 7463 + ); + + // gentest-6073 + assertEqual( + perft( + Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x80000000000100L, 0x100L, 0x80030000200040L, + true, 0, 0x0L), + 4 + ), + 4941 + ); + + // gentest-6074 + assertEqual( + perft( + Board(0x20000200000L, 0x10000000040L, 0x0L, 0x0L, 0x0L, 0x400000000001L, 0x1L, 0x430000200040L, false, + 0, 0x0L), + 4 + ), + 4378 + ); + + // gentest-6075 + assertEqual( + perft( + Board(0x20000200000L, 0x4000000000040L, 0x0L, 0x0L, 0x0L, 0x80000000000100L, 0x100L, + 0x84020000200040L, true, 0, 0x0L), + 4 + ), + 6433 + ); + + // gentest-6076 + assertEqual( + perft( + Board(0x20000002000L, 0x4000000000040L, 0x0L, 0x0L, 0x0L, 0x80000000020000L, 0x20000L, + 0x84020000002040L, false, 0, 0x0L), + 4 + ), + 15458 + ); + + // gentest-6077 + assertEqual( + perft( + Board(0x20000000000L, 0x4000000001000L, 0x20L, 0x0L, 0x0L, 0x80000001000000L, 0x1000000L, + 0x84020000001020L, true, 0, 0x0L), + 4 + ), + 6611 + ); + + // gentest-6078 + assertEqual( + perft( + Board(0x20000000000L, 0x4000000000040L, 0x20L, 0x0L, 0x0L, 0x80000000010000L, 0x10000L, + 0x84020000000060L, false, 0, 0x0L), + 4 + ), + 11810 + ); + + // gentest-6079 + assertEqual( + perft( + Board(0x20000000000L, 0x200000040L, 0x1000L, 0x0L, 0x0L, 0x80000001000000L, 0x1000000L, + 0x80020200001040L, true, 0, 0x0L), + 4 + ), + 3577 + ); + + // gentest-6080 + assertEqual( + perft( + Board(0x20000000000L, 0x200000040L, 0x20L, 0x0L, 0x0L, 0x80000001000000L, 0x1000000L, + 0x80020200000060L, false, 0, 0x0L), + 4 + ), + 4086 + ); + + // gentest-6081 + assertEqual( + perft( + Board(0x20000000000L, 0x200200000L, 0x20L, 0x0L, 0x0L, 0x8000000002000000L, 0x2000000L, + 0x8000020200200020L, true, 0, 0x0L), + 4 + ), + 3679 + ); + + // gentest-6082 + assertEqual( + perft( + Board(0x20000000000L, 0x200200000L, 0x4000L, 0x0L, 0x0L, 0x8000000000000200L, 0x200L, + 0x8000020200204000L, false, 0, 0x0L), + 4 + ), + 12038 + ); + + // gentest-6083 + assertEqual( + perft( + Board(0x20000000000L, 0x200008000L, 0x20L, 0x0L, 0x0L, 0x8000000000000004L, 0x4L, 0x8000020200008020L, + true, 0, 0x0L), + 4 + ), + 8120 + ); + + // gentest-6084 + assertEqual( + perft( + Board(0x20000000000L, 0x200008000L, 0x80000L, 0x0L, 0x0L, 0x8000000000000001L, 0x1L, + 0x8000020200088000L, false, 0, 0x0L), + 4 + ), + 4096 + ); + + // gentest-6085 + assertEqual( + perft( + Board(0x20000000000L, 0x4000000008000L, 0x400L, 0x0L, 0x0L, 0x8000000000000200L, 0x200L, + 0x8004020000008400L, true, 0, 0x0L), + 4 + ), + 9720 + ); + + // gentest-6086 + assertEqual( + perft( + Board(0x20000000000L, 0x800008000L, 0x400L, 0x0L, 0x0L, 0x8000000000000800L, 0x800L, + 0x8000020800008400L, false, 0, 0x0L), + 4 + ), + 8793 + ); + + // gentest-6087 + assertEqual( + perft( + Board(0x20000000000L, 0x800008000L, 0x2000000000L, 0x0L, 0x0L, 0x40000000000010L, 0x10L, + 0x40022800008000L, true, 0, 0x0L), + 4 + ), + 15152 + ); + + // gentest-6088 + assertEqual( + perft( + Board(0x20000000000L, 0x800008000L, 0x800000L, 0x0L, 0x0L, 0x40000000000004L, 0x4L, 0x40020800808000L, + false, 0, 0x0L), + 4 + ), + 17599 + ); + + // gentest-6089 + assertEqual( + perft( + Board(0x20000000000L, 0x800008000L, 0x2000000000L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, + 0x4000022800008000L, true, 0, 0x0L), + 4 + ), + 11064 + ); + + // gentest-6090 + assertEqual( + perft( + Board(0x20000000000L, 0x800008000L, 0x10000000L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, + 0x4000020810008000L, false, 0, 0x0L), + 4 + ), + 9975 + ); + + // gentest-6091 + assertEqual( + perft( + Board(0x20000000000L, 0x2008000L, 0x400L, 0x0L, 0x0L, 0x4000000000000010L, 0x10L, 0x4000020002008400L, + true, 0, 0x0L), + 4 + ), + 8125 + ); + + // gentest-6092 + assertEqual( + perft( + Board(0x20000000000L, 0x2008000L, 0x80000L, 0x0L, 0x0L, 0x4000000000000010L, 0x10L, + 0x4000020002088000L, false, 0, 0x0L), + 4 + ), + 8261 + ); + + // gentest-6093 + assertEqual( + perft( + Board(0x20000000000L, 0x8100L, 0x80000000000000L, 0x0L, 0x0L, 0x4000000000000800L, 0x800L, + 0x4080020000008100L, true, 0, 0x0L), + 4 + ), + 5603 + ); + + // gentest-6094 + assertEqual( + perft( + Board(0x20000000000L, 0x2008000L, 0x80000000000000L, 0x0L, 0x0L, 0x4000000000000800L, 0x800L, + 0x4080020002008000L, false, 0, 0x0L), + 4 + ), + 9825 + ); + + // gentest-6095 + assertEqual( + perft( + Board(0x200000000L, 0x2008000L, 0x400L, 0x0L, 0x0L, 0x4000000000000004L, 0x4L, 0x4000000202008400L, + true, 0, 0x0L), + 4 + ), + 4807 + ); + + // gentest-6096 + assertEqual( + perft( + Board(0x200000000L, 0x2008000L, 0x2000000000L, 0x0L, 0x0L, 0x4000000000000008L, 0x8L, + 0x4000002202008000L, false, 0, 0x0L), + 4 + ), + 9475 + ); + + // gentest-6097 + assertEqual( + perft( + Board(0x200000000L, 0x2008000L, 0x10000000L, 0x0L, 0x0L, 0x8000000000000010L, 0x10L, + 0x8000000212008000L, true, 0, 0x0L), + 4 + ), + 10709 + ); + + // gentest-6098 + assertEqual( + perft( + Board(0x200000000L, 0x2008000L, 0x80L, 0x0L, 0x0L, 0x8000000000000010L, 0x10L, 0x8000000202008080L, + false, 0, 0x0L), + 4 + ), + 7119 + ); + + // gentest-6099 + assertEqual( + perft( + Board(0x200000000L, 0x200100L, 0x80L, 0x0L, 0x0L, 0x8000000000000008L, 0x8L, 0x8000000200200180L, + true, 0, 0x0L), + 4 + ), + 3178 + ); + + // gentest-6100 + assertEqual( + perft( + Board(0x200000000L, 0x4000000100L, 0x80L, 0x0L, 0x0L, 0x8000000000000200L, 0x200L, + 0x8000004200000180L, false, 0, 0x0L), + 4 + ), + 9102 + ); + + // gentest-6101 + assertEqual( + perft( + Board(0x200000000L, 0x4002000000L, 0x80L, 0x0L, 0x0L, 0x4000000000000400L, 0x400L, + 0x4000004202000080L, true, 0, 0x0L), + 4 + ), + 18583 + ); + + // gentest-6102 + assertEqual( + perft( + Board(0x200000000L, 0x4002000000L, 0x80L, 0x0L, 0x0L, 0x20000000000004L, 0x4L, 0x20004202000080L, + false, 0, 0x0L), + 4 + ), + 13702 + ); + + // gentest-6103 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6104 + assertEqual( + perft( + Board(0xff00003000cf00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x3000cfffL, 0xfdff040000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 478442 + ); + + // gentest-6105 + assertEqual( + perft( + Board(0x5fa00030804f00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x30804fffL, 0xfd5fa40000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 352540 + ); + + // gentest-6106 + assertEqual( + perft( + Board(0x5ea01120c00f00L, 0x4000040000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1020c00fffL, 0xfd5ea40100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 405051 + ); + + // gentest-6107 + assertEqual( + perft( + Board(0x56a01960800f00L, 0x4000040000000042L, 0x2400000000000024L, 0x8000010000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1060800fffL, 0xfc56a50900000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 596776 + ); + + // gentest-6108 + assertEqual( + perft( + Board(0x54a219e4000b00L, 0x4000040000000042L, 0x2400000000000024L, 0x8000010000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10e4000bffL, 0xfc54a70900000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 726240 + ); + + // gentest-6109 + assertEqual( + perft( + Board(0x54a219e4080300L, 0x4000000000000442L, 0x2400000000000024L, 0x8000010000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10e40803ffL, 0xfc54a30900000400L, true, 0, + 0x8000000000000081L), + 4 + ), + 105373 + ); + + // gentest-6110 + assertEqual( + perft( + Board(0x542299e4080300L, 0x4000000000000442L, 0x2400000000000024L, 0x8000010000008001L, + 0x800000000000008L, 0x1000000000001000L, 0x10e408936fL, 0xfc54238900000400L, false, 0, + 0x8000000000000000L), + 4 + ), + 941946 + ); + + // gentest-6111 + assertEqual( + perft( + Board(0x542299e4080300L, 0x4000000000010042L, 0x2000002000004004L, 0x8000010000008001L, + 0x800000000000008L, 0x1000000000001000L, 0x10e408d34fL, 0xf85423a900010000L, true, 0, + 0x8000000000000000L), + 4 + ), + 1533685 + ); + + // gentest-6112 + assertEqual( + perft( + Board(0x542299e4080300L, 0x4000000000010040L, 0x2000000010004004L, 0x8000010000800001L, + 0x800000000000008L, 0x1000000000001000L, 0x10e489534dL, 0xf854238910000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 1168064 + ); + + // gentest-6113 + assertEqual( + perft( + Board(0x542289e4080300L, 0x4000000000010040L, 0x2000000010004004L, 0x810000800001L, + 0x800000000000008L, 0x20000000001000L, 0x2000e489534dL, 0x6874838910000000L, true, 0, 0x0L), + 4 + ), + 1723698 + ); + + // gentest-6114 + assertEqual( + perft( + Board(0x542289e4080300L, 0x4000000000010040L, 0x2000002000004004L, 0x810000800001L, + 0x800000000020000L, 0x20000000000008L, 0x2000e48b434dL, 0x687483a900000000L, false, 0, 0x0L), + 4 + ), + 1704970 + ); + + // gentest-6115 + assertEqual( + perft( + Board(0x542289e0080300L, 0x4000000000010040L, 0x2080000000004004L, 0x810000800001L, + 0x100000000020000L, 0x20000000000008L, 0x2008e08b434dL, 0x61f4838100000000L, true, 0, 0x0L), + 4 + ), + 1142821 + ); + + // gentest-6116 + assertEqual( + perft( + Board(0x542289e0080300L, 0x4000000000000042L, 0x2080000000004004L, 0x810000800001L, + 0x1000000000020000L, 0x20000000000010L, 0x2008e08a4357L, 0x70f4838100000000L, false, 0, 0x0L), + 4 + ), + 1298981 + ); + + // gentest-6117 + assertEqual( + perft( + Board(0x106689e0080300L, 0x4000000000001002L, 0x2080000000004004L, 0x810000800001L, + 0x1000000000020000L, 0x20000000000010L, 0x2008e08a5317L, 0x70b0c78100000000L, true, 0, 0x0L), + 4 + ), + 641271 + ); + + // gentest-6118 + assertEqual( + perft( + Board(0x104689e0080300L, 0x200010001000L, 0x2080000000004004L, 0x810000800001L, 0x1000000000020000L, + 0x20000000000010L, 0x8f08a5315L, 0x30b0e78100000000L, false, 0, 0x0L), + 4 + ), + 1093359 + ); + + // gentest-6119 + assertEqual( + perft( + Board(0x5689e0080300L, 0x200010001000L, 0x2080000000004004L, 0x1800000800001L, 0x1000000000020000L, + 0x20000000002000L, 0x8f08a7305L, 0x30a1f68100000000L, true, 0, 0x0L), + 4 + ), + 2085693 + ); + + // gentest-6120 + assertEqual( + perft( + Board(0x5689e0080300L, 0x200000440000L, 0x2080000000004004L, 0x1800000800001L, 0x8000000020000L, + 0x20000000002000L, 0x8e0ce6305L, 0x20a9f68100000000L, false, 0, 0x0L), + 4 + ), + 2103583 + ); + + // gentest-6121 + assertEqual( + perft( + Board(0x5689e1080200L, 0x200000440000L, 0x90000000004004L, 0x1800000800001L, 0x1000000000020000L, + 0x20000000002000L, 0x8e1ce6205L, 0x10b1f68100000000L, true, 0, 0x0L), + 4 + ), + 2110391 + ); + + // gentest-6122 + assertEqual( + perft( + Board(0x528de9000200L, 0x200000440000L, 0x90000000004800L, 0x1800000800001L, 0x1000000000020000L, + 0x20000000002000L, 0x8e9c66a01L, 0x10b1f28500000000L, false, 0, 0x0L), + 4 + ), + 2660777 + ); + + // gentest-6123 + assertEqual( + perft( + Board(0x528de9000200L, 0x200000440000L, 0x90000000004800L, 0x840000800001L, 0x1000000000020000L, + 0x20000000000020L, 0x8e9c64a21L, 0x10b0f68500000000L, true, 0, 0x0L), + 4 + ), + 1773061 + ); + + // gentest-6124 + assertEqual( + perft( + Board(0x5685e9000200L, 0x200000440000L, 0x4010000000004010L, 0x800000800001L, 0x1000000000020000L, + 0x20000000000020L, 0x400e9c64231L, 0x5030f28500000000L, false, 0, 0x0L), + 4 + ), + 1286024 + ); + + // gentest-6125 + assertEqual( + perft( + Board(0x5285e9000200L, 0x800440000L, 0x4010000000004010L, 0x800000008001L, 0x40000020000L, + 0x20000000000020L, 0xe946c231L, 0x4030d68d00000000L, true, 0, 0x0L), + 4 + ), + 1920502 + ); + + // gentest-6126 + assertEqual( + perft( + Board(0x5281e9000200L, 0x800440000L, 0x4010000000004010L, 0x800000008001L, 0x40000020000L, + 0x20000000000020L, 0xe146c231L, 0x4030d68908000000L, false, 0, 0x0L), + 4 + ), + 2299474 + ); + + // gentest-6127 + assertEqual( + perft( + Board(0x5281e9000200L, 0x200000400002L, 0x4010000000004010L, 0x8000000000008001L, 0x40000020000L, + 0x20000000000020L, 0xe142c233L, 0xc030768108000000L, true, 0, 0x0L), + 4 + ), + 2432283 + ); + + // gentest-6128 + assertEqual( + perft( + Board(0x5281e8000200L, 0x200000410000L, 0x4010000000044000L, 0x8000000000008001L, 0x1020000L, + 0x20000000000020L, 0xe047c221L, 0xc030728109000000L, false, 0, 0x0L), + 4 + ), + 1819885 + ); + + // gentest-6129 + assertEqual( + perft( + Board(0x5281e8000200L, 0x200000410000L, 0x80080000044000L, 0x8000000000008001L, 0x3000000L, + 0x20000000000020L, 0xe245c221L, 0x80a07a8109000000L, true, 0, 0x0L), + 4 + ), + 3211273 + ); + + // gentest-6130 + assertEqual( + perft( + Board(0x5281e8000200L, 0x200010000002L, 0x80080000044000L, 0x8000000000008001L, 0x3000000L, + 0x4000000000000020L, 0xf204c223L, 0xc0807a8109000000L, false, 0, 0x0L), + 4 + ), + 1397726 + ); + + // gentest-6131 + assertEqual( + perft( + Board(0x5281e0080200L, 0x200010000002L, 0x80001000044000L, 0x8000000000018000L, 0x3000000L, + 0x4000000000000020L, 0xf205c222L, 0xc080729101080000L, true, 0, 0x0L), + 4 + ), + 1113252 + ); + + // gentest-6132 + assertEqual( + perft( + Board(0x5281e0080200L, 0x1000000000000802L, 0x80001010040000L, 0x8000000000018000L, 0x3000000L, + 0x4000000000000020L, 0xf2058a22L, 0xd080529101080000L, false, 0, 0x0L), + 4 + ), + 1195682 + ); + + // gentest-6133 + assertEqual( + perft( + Board(0x5281e0080200L, 0x1000000000000802L, 0x80200010040000L, 0x8000000000010080L, 0x40002000000L, + 0x4000000000000020L, 0xf2050aa2L, 0xd080768100080000L, true, 0, 0x0L), + 4 + ), + 1539603 + ); + + // gentest-6134 + assertEqual( + perft( + Board(0x5281a0080200L, 0x1000000000000802L, 0x80001010000000L, 0x8000000000010080L, 0x40002000000L, + 0x4000000000000020L, 0x90b2010aa2L, 0xd080560100080000L, false, 0, 0x0L), + 4 + ), + 1256553 + ); + + // gentest-6135 + assertEqual( + perft( + Board(0x5281a0080200L, 0x1000000000000802L, 0x80001010000000L, 0x8000000000010080L, 0x10000004000000L, + 0x4000000000000020L, 0x90b4010aa2L, 0xd090520100080000L, true, 0, 0x0L), + 4 + ), + 1629953 + ); + + // gentest-6136 + assertEqual( + perft( + Board(0x5281a0000200L, 0x1000000000000802L, 0x80001010000000L, 0x8000000000010080L, 0x10000000100000L, + 0x2000000000000020L, 0x90b0110aa2L, 0xb090520100000000L, false, 0, 0x0L), + 4 + ), + 1836102 + ); + + // gentest-6137 + assertEqual( + perft( + Board(0x5281a0000200L, 0x40000000000802L, 0x80001010000000L, 0x4000000000080080L, 0x10000000100000L, + 0x2000000000000020L, 0x90b0180aa2L, 0x60d0520100000000L, true, 0, 0x0L), + 4 + ), + 1346981 + ); + + // gentest-6138 + assertEqual( + perft( + Board(0x5280a1000200L, 0x40000000010800L, 0x80041000000000L, 0x4000000000080080L, 0x10000000100000L, + 0x2000000000000020L, 0x490a0190aa0L, 0x60d0520001000000L, false, 0, 0x0L), + 4 + ), + 1385459 + ); + + // gentest-6139 + assertEqual( + perft( + Board(0x5280a1000200L, 0x40000000010800L, 0x80041000000000L, 0x4000000000080080L, 0x10000000002000L, + 0x2000000000000020L, 0x490a0092aa0L, 0x60d0520001000000L, true, 0, 0x0L), + 4 + ), + 1544002 + ); + + // gentest-6140 + assertEqual( + perft( + Board(0x5200a1000200L, 0x10800L, 0xc0040000000000L, 0x4000000000080080L, 0x20000000002000L, + 0x2000000000000020L, 0x404400a0092aa0L, 0x60a0120001000000L, false, 0, 0x0L), + 4 + ), + 232095 + ); + + // gentest-6141 + assertEqual( + perft( + Board(0x5200a1000200L, 0x200000800L, 0xc0040000000000L, 0x8000000000080080L, 0x20000000002000L, + 0x10000000000020L, 0x404402a0082aa0L, 0x80b0120001000000L, true, 0, 0x0L), + 4 + ), + 1328024 + ); + + // gentest-6142 + assertEqual( + perft( + Board(0x1200a1000200L, 0x200000002L, 0xc0000000200000L, 0x8000000000080080L, 0x400000002000L, + 0x10000000000020L, 0x400002a02822a2L, 0x8090520001000000L, false, 0, 0x0L), + 4 + ), + 1803008 + ); + + // gentest-6143 + assertEqual( + perft( + Board(0x1200a1000200L, 0x200000002L, 0x40002000200000L, 0x8000000000080080L, 0x2000L, + 0x10000000000040L, 0x400002a02822c2L, 0x8010122001000000L, true, 0, 0x0L), + 4 + ), + 1199769 + ); + + // gentest-6144 + assertEqual( + perft( + Board(0x1200a3000000L, 0x200000002L, 0x40002000004000L, 0x800000080080L, 0x2000L, 0x10000000000040L, + 0x400002a20860c2L, 0x10922001000000L, false, 17, 0x0L), + 4 + ), + 822730 + ); + + // gentest-6145 + assertEqual( + perft( + Board(0x210a2010000L, 0x200000002L, 0x40002000004000L, 0x800000080080L, 0x10L, 0x10000000000040L, + 0x400002a20840d2L, 0x10823000010000L, true, 0, 0x0L), + 4 + ), + 1276551 + ); + + // gentest-6146 + assertEqual( + perft( + Board(0x210a2010000L, 0x200000002L, 0x42100000000000L, 0x800000040080L, 0x10L, 0x10000000000040L, + 0x420002a20400d2L, 0x10921000010000L, false, 0, 0x0L), + 4 + ), + 1337922 + ); + + // gentest-6147 + assertEqual( + perft( + Board(0x210a2010000L, 0x200000002L, 0x42100000000000L, 0x8000000000040080L, 0x10000000L, + 0x10000000000040L, 0x420002b20400c2L, 0x8010121000010000L, true, 0, 0x0L), + 4 + ), + 1713145 + ); + + // gentest-6148 + assertEqual( + perft( + Board(0x21022010000L, 0x1000000000000002L, 0x42100000000000L, 0x80040080L, 0x10000000L, + 0x10000000000040L, 0x10420000320400c2L, 0x10121080010000L, false, 0, 0x0L), + 4 + ), + 1503468 + ); + + // gentest-6149 + assertEqual( + perft( + Board(0x1222010000L, 0x1000000000000002L, 0x42000000000100L, 0x80040080L, 0x10000000L, + 0x10000000002000L, 0x1042000032042082L, 0x10001280010100L, true, 0, 0x0L), + 4 + ), + 1257132 + ); + + // gentest-6150 + assertEqual( + perft( + Board(0x1222010000L, 0x1000000000000002L, 0x42000000000100L, 0x40400080L, 0x10000000L, + 0x10000000000040L, 0x10420000324000c2L, 0x10001240010100L, false, 0, 0x0L), + 4 + ), + 656951 + ); + + // gentest-6151 + assertEqual( + perft( + Board(0x1222010000L, 0x1000000000000000L, 0x42000000000002L, 0x804000400000L, 0x10000000L, + 0x10000000000040L, 0x1042800032400040L, 0x10005200010002L, true, 0, 0x0L), + 4 + ), + 629469 + ); + + // gentest-6152 + assertEqual( + perft( + Board(0x5202010000L, 0x1000000000000000L, 0x42000000000002L, 0x800000400000L, 0x80000000000000L, + 0x800000000000040L, 0x10c2804002400040L, 0x800001200010002L, false, 0, 0x0L), + 4 + ), + 306036 + ); + + // gentest-6153 + assertEqual( + perft( + Board(0x5202010000L, 0x1000000000000000L, 0x42000000000002L, 0x200000400000L, 0x80000000000000L, + 0x800000000000040L, 0x10c2204002400040L, 0x800001200010002L, true, 0, 0x0L), + 4 + ), + 351989 + ); + + // gentest-6154 + assertEqual( + perft( + Board(0x5202010000L, 0x1000000000000000L, 0xc2000000000000L, 0x80040000000L, 0x0L, 0x800000000000040L, + 0x1042084042000040L, 0x880001200010000L, false, 0, 0x0L), + 4 + ), + 33564 + ); + + // gentest-6155 + assertEqual( + perft( + Board(0x5202010000L, 0x1000000000000000L, 0xc2000000000000L, 0x100040000000L, 0x0L, 0x20000000000040L, + 0x1042104042000040L, 0xa0001200010000L, true, 0, 0x0L), + 4 + ), + 145341 + ); + + // gentest-6156 + assertEqual( + perft( + Board(0x4212010000L, 0x1000000000000000L, 0xc0010000000000L, 0x100008000000L, 0x0L, 0x20000000000040L, + 0x104011400a000040L, 0xa0000210010000L, false, 0, 0x0L), + 4 + ), + 58003 + ); + + // gentest-6157 + assertEqual( + perft( + Board(0x4012010000L, 0x1000000000000000L, 0x40002200000000L, 0x100008000000L, 0x0L, 0x20000000000040L, + 0x104010420a000040L, 0x20002010010000L, true, 0, 0x0L), + 4 + ), + 136297 + ); + + // gentest-6158 + assertEqual( + perft( + Board(0x4002110000L, 0x1000000000000000L, 0x3200000000L, 0x100080000000L, 0x0L, 0x20000000000040L, + 0x1000105282000040L, 0x20002000110000L, false, 0, 0x0L), + 4 + ), + 361669 + ); + + // gentest-6159 + assertEqual( + perft( + Board(0x4002011000L, 0x1000000000000000L, 0x1210000000L, 0x100080000000L, 0x0L, 0x20000000000020L, + 0x1000105282000020L, 0x20000010011000L, true, 0, 0x0L), + 4 + ), + 57092 + ); + + // gentest-6160 + assertEqual( + perft( + Board(0x4002011000L, 0x1000000000000000L, 0x80000200400000L, 0x100080000000L, 0x0L, 0x20000000002000L, + 0x1000104282402000L, 0xa0000000011000L, false, 0, 0x0L), + 4 + ), + 335573 + ); + + // gentest-6161 + assertEqual( + perft( + Board(0x4002010000L, 0x1000000000000000L, 0x80000200400000L, 0x100080000000L, 0x0L, + 0x2000000000000010L, 0x1000104282400010L, 0x2080000000010000L, true, 0, 0x0L), + 4 + ), + 211042 + ); + + // gentest-6162 + assertEqual( + perft( + Board(0x4002010000L, 0x1000000000000000L, 0x400200400000L, 0x100000000080L, 0x0L, 0x2000000000002000L, + 0x1000104202402080L, 0x2000400000010000L, false, 0, 0x0L), + 4 + ), + 328088 + ); + + // gentest-6163 + assertEqual( + perft( + Board(0x4002010000L, 0x1000000000000000L, 0x20010000400000L, 0x100000000080L, 0x0L, + 0x4000000000002000L, 0x1000114002402080L, 0x4020000000010000L, true, 0, 0x0L), + 4 + ), + 183209 + ); + + // gentest-6164 + assertEqual( + perft( + Board(0x4002010000L, 0x200000000000L, 0x20010000400000L, 0x100000000080L, 0x0L, 0x40000000004000L, + 0x314002404080L, 0x60000000010000L, false, 0, 0x0L), + 4 + ), + 202890 + ); + + // gentest-6165 + assertEqual( + perft( + Board(0x4002010000L, 0x1000000000000000L, 0x4000010000400000L, 0x100000000080L, 0x0L, + 0x2000000000004000L, 0x1000114002404080L, 0x6000000000010000L, true, 0, 0x0L), + 4 + ), + 136516 + ); + + // gentest-6166 + assertEqual( + perft( + Board(0x4002010000L, 0x1000000000000000L, 0x110080000000L, 0x40L, 0x0L, 0x2000000000004000L, + 0x1000014082004040L, 0x2000100000010000L, false, 0, 0x0L), + 4 + ), + 151692 + ); + + // gentest-6167 + assertEqual( + perft( + Board(0x4200010000L, 0x1000000000000000L, 0x10080000008L, 0x40L, 0x0L, 0x2000000000004000L, + 0x1000014280004040L, 0x2000000000010008L, true, 0, 0x0L), + 4 + ), + 62751 + ); + + // gentest-6168 + assertEqual( + perft( + Board(0x400200010000L, 0x1000000000000000L, 0x10081000000L, 0x40L, 0x0L, 0x2000000000000020L, + 0x1000410280000060L, 0x2000000001010000L, false, 0, 0x0L), + 4 + ), + 30545 + ); + + // gentest-6169 + assertEqual( + perft( + Board(0x400200010000L, 0x4000000000000L, 0x10880000000L, 0x40L, 0x0L, 0x2000000000000020L, + 0x4410280000060L, 0x2000000800010000L, true, 0, 0x0L), + 4 + ), + 84816 + ); + + // gentest-6170 + assertEqual( + perft( + Board(0x400200010000L, 0x4000000000000L, 0x2000000002100L, 0x40L, 0x0L, 0x2000000000000020L, + 0x6400200002060L, 0x2000000000010100L, false, 0, 0x0L), + 4 + ), + 90329 + ); + + // gentest-6171 + assertEqual( + perft( + Board(0x400200010000L, 0x4000000000000L, 0x2000000022000L, 0x40L, 0x0L, 0x10000000000010L, + 0x6400200002050L, 0x10000000030000L, true, 0, 0x0L), + 4 + ), + 183212 + ); + + // gentest-6172 + assertEqual( + perft( + Board(0x40000200010000L, 0x4000000000000L, 0x2000000022000L, 0x40L, 0x0L, 0x8000000001000L, + 0x46000200003040L, 0x8000000030000L, false, 0, 0x0L), + 4 + ), + 256959 + ); + + // gentest-6173 + assertEqual( + perft( + Board(0x40000200010000L, 0x0L, 0x4000000010002000L, 0x40L, 0x0L, 0x4000000001000L, 0x40000210003040L, + 0x4004000000010000L, true, 0, 0x0L), + 4 + ), + 232796 + ); + + // gentest-6174 + assertEqual( + perft( + Board(0x40000200010000L, 0x0L, 0x4000002000002000L, 0x10L, 0x0L, 0x800000000001000L, + 0x40002200003010L, 0x4800000000010000L, false, 0, 0x0L), + 4 + ), + 130386 + ); + + // gentest-6175 + assertEqual( + perft( + Board(0x40000200010000L, 0x0L, 0x4000002008000000L, 0x10L, 0x0L, 0x20000000001000L, 0x40002208001010L, + 0x4020000000010000L, true, 0, 0x0L), + 4 + ), + 51581 + ); + + // gentest-6176 + assertEqual( + perft( + Board(0x40000200000100L, 0x0L, 0x4000002008000000L, 0x80L, 0x0L, 0x20000000002000L, 0x40002208002080L, + 0x4020000000000100L, false, 0, 0x0L), + 4 + ), + 123478 + ); + + // gentest-6177 + assertEqual( + perft( + Board(0x40000200000000L, 0x1L, 0x4000002008000000L, 0x80000000000000L, 0x0L, 0x10000000002000L, + 0xc0002208002000L, 0x4010000000000001L, true, 0, 0x0L), + 4 + ), + 194368 + ); + + // gentest-6178 + assertEqual( + perft( + Board(0x40000200000000L, 0x1L, 0x4000003000000000L, 0x80000000000000L, 0x0L, 0x20000000002000L, + 0xc0003200002000L, 0x4020000000000001L, false, 0, 0x0L), + 4 + ), + 62411 + ); + + // gentest-6179 + assertEqual( + perft( + Board(0x40000200000000L, 0x1L, 0x4000001000080000L, 0x80000000000000L, 0x0L, 0x20000000002000L, + 0xc0001200082000L, 0x4020000000000001L, true, 0, 0x0L), + 4 + ), + 74460 + ); + + // gentest-6180 + assertEqual( + perft( + Board(0x40000200000000L, 0x1L, 0x4000000020080000L, 0x8000000000000000L, 0x0L, 0x100000002000L, + 0x8040000220082000L, 0x4000100000000001L, false, 0, 0x0L), + 4 + ), + 142753 + ); + + // gentest-6181 + assertEqual( + perft( + Board(0x200000000L, 0x1L, 0x4000000020080000L, 0x8000000000000000L, 0x0L, 0x100000002000L, + 0x8000000220082000L, 0x4000100000000001L, true, 0, 0x0L), + 4 + ), + 127721 + ); + + // gentest-6182 + assertEqual( + perft( + Board(0x200000000L, 0x1L, 0x20000000480000L, 0x800000L, 0x0L, 0x100000002000L, 0x200c82000L, + 0x20100000000001L, false, 0, 0x0L), + 4 + ), + 118252 + ); + + // gentest-6183 + assertEqual( + perft( + Board(0x200000000L, 0x1L, 0x400002L, 0x800000L, 0x0L, 0x100000002000L, 0x200c02000L, 0x100000000003L, + true, 0, 0x0L), + 4 + ), + 117713 + ); + + // gentest-6184 + assertEqual( + perft( + Board(0x200000000L, 0x20000L, 0x200000000000002L, 0x100000L, 0x0L, 0x100000002000L, + 0x200000200102000L, 0x100000020002L, false, 0, 0x0L), + 4 + ), + 64100 + ); + + // gentest-6185 + assertEqual( + perft( + Board(0x200000000L, 0x400000000L, 0x200000000000002L, 0x10L, 0x0L, 0x20000000002000L, + 0x200000200002010L, 0x20000400000002L, true, 0, 0x0L), + 4 + ), + 259346 + ); + + // gentest-6186 + assertEqual( + perft( + Board(0x200000000L, 0x400000000L, 0x20000002L, 0x0L, 0x0L, 0x10000000002000L, 0x220002000L, + 0x10000400000002L, false, 0, 0x0L), + 4 + ), + 134137 + ); + + // gentest-6187 + assertEqual( + perft( + Board(0x200000000L, 0x400000000L, 0x400002L, 0x0L, 0x0L, 0x1000000000002000L, 0x200402000L, + 0x1000000400000002L, true, 0, 0x0L), + 4 + ), + 87871 + ); + + // gentest-6188 + assertEqual( + perft( + Board(0x200000000L, 0x400000000L, 0x80000002L, 0x0L, 0x0L, 0x800000000001000L, 0x280001000L, + 0x800000400000002L, false, 0, 0x0L), + 4 + ), + 15630 + ); + + // gentest-6189 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6190 + assertEqual( + perft( + Board(0xfd02000010ef00L, 0x4200000000000042L, 0x2400000000001004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10ffdfL, 0xfffd020000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 383626 + ); + + // gentest-6191 + assertEqual( + perft( + Board(0x3d42800014eb00L, 0x4200000000000042L, 0x2400000000001004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x14fbdfL, 0xff3d428000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 498704 + ); + + // gentest-6192 + assertEqual( + perft( + Board(0x3d42800014eb00L, 0x200200000000042L, 0x2402000000000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x200000014ebdfL, 0xbf3d628000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 678214 + ); + + // gentest-6193 + assertEqual( + perft( + Board(0x3c43800014eb00L, 0x200000040000042L, 0x2402000000000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000020L, 0x200000014ebefL, 0xbf3c438040000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 688509 + ); + + // gentest-6194 + assertEqual( + perft( + Board(0x3c43800114ea00L, 0x200000040000042L, 0x540000000000004L, 0x8000000000000081L, + 0x800000000000008L, 0x1000000000000020L, 0x10000000114eaefL, 0x9e7c438040000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 861813 + ); + + // gentest-6195 + assertEqual( + perft( + Board(0x3c43800114ea00L, 0x200000000000042L, 0x500000008000004L, 0x8000000000000081L, + 0x800000040000000L, 0x1000000000000020L, 0x10000004114eae7L, 0x9e3c438008000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 1047685 + ); + + // gentest-6196 + assertEqual( + perft( + Board(0x3c43800350a800L, 0x200000000000042L, 0x500000000040004L, 0x8000000000000081L, + 0x800000040000000L, 0x1000000000000020L, 0x10000004350a8e7L, 0x9e3c438000040000L, false, 0, + 0x8000000000000000L), + 4 + ), + 1317528 + ); + + // gentest-6197 + assertEqual( + perft( + Board(0x3c43800350a800L, 0x200000000000042L, 0x500200000010000L, 0x80000000000081L, + 0x800000040000000L, 0x1000000000000020L, 0x10000004351a8e3L, 0x1ebc638000000000L, true, 0, 0x0L), + 4 + ), + 943860 + ); + + // gentest-6198 + assertEqual( + perft( + Board(0x3c438003d02800L, 0x200000000000042L, 0x500000000050000L, 0x80000000000081L, + 0x800000040000000L, 0x1000000000001000L, 0x100000043d138c3L, 0x1ebc438000040000L, false, 0, 0x0L), + 4 + ), + 988395 + ); + + // gentest-6199 + assertEqual( + perft( + Board(0x3c418203d02800L, 0x200000000000042L, 0x500001000010000L, 0x80000000000081L, + 0x800000080000000L, 0x1000000000001000L, 0x100000083d138c3L, 0x1ebc419200000000L, true, 0, 0x0L), + 4 + ), + 741580 + ); + + // gentest-6200 + assertEqual( + perft( + Board(0x38418603d02800L, 0x200000000000042L, 0x500001000010000L, 0x80000000000081L, + 0x800200000000000L, 0x1000000000001000L, 0x100200003d138c3L, 0x1eb8419600000000L, false, 0, 0x0L), + 4 + ), + 1228771 + ); + + // gentest-6201 + assertEqual( + perft( + Board(0x38408703d02800L, 0x200000000000042L, 0x500000008010000L, 0x80000000000081L, + 0x800200000000000L, 0x1000000000000008L, 0x100200003d128cbL, 0x1eb8408708000000L, true, 0, 0x0L), + 4 + ), + 1264471 + ); + + // gentest-6202 + assertEqual( + perft( + Board(0x38408703d02800L, 0x200000000000042L, 0x8400000010010000L, 0x80000000000081L, + 0x800000000000000L, 0x1000000000000008L, 0x13d128cbL, 0x9eb8408700000000L, false, 0, 0x0L), + 4 + ), + 711025 + ); + + // gentest-6203 + assertEqual( + perft( + Board(0x38408623d00800L, 0x200000000000042L, 0x8400000010010000L, 0x80000000000081L, + 0x800000000000000L, 0x2000000000000008L, 0x31d108cbL, 0xaeb8408602000000L, true, 0, 0x0L), + 4 + ), + 848306 + ); + + // gentest-6204 + assertEqual( + perft( + Board(0x38408623d80000L, 0x200000000000042L, 0x400000000014200L, 0x80000000000081L, + 0x800000000000000L, 0x2000000000000008L, 0x21d940cbL, 0x2eb8408602000200L, false, 0, 0x0L), + 4 + ), + 854386 + ); + + // gentest-6205 + assertEqual( + perft( + Board(0x384086619a0000L, 0x200000000000042L, 0x400001000014000L, 0x80000000000081L, + 0x800000000000000L, 0x2000000000000008L, 0x619940cbL, 0x2eb8409600020000L, true, 0, 0x0L), + 4 + ), + 1099933 + ); + + // gentest-6206 + assertEqual( + perft( + Board(0x384086e11a0000L, 0x200000000000042L, 0x400001800010000L, 0x80000000000081L, + 0x800000000000000L, 0x40000000000008L, 0x8e11900cbL, 0xef8409600020000L, false, 0, 0x0L), + 4 + ), + 1381919 + ); + + // gentest-6207 + assertEqual( + perft( + Board(0x384086e01a0000L, 0x200000000000042L, 0x400001800010000L, 0x80000000000081L, 0x4000000000000L, + 0x8000000000000008L, 0xae01900cbL, 0x86bc409400020000L, true, 0, 0x0L), + 4 + ), + 1068730 + ); + + // gentest-6208 + assertEqual( + perft( + Board(0x384086e01a0000L, 0x200000000000042L, 0x400001000014000L, 0x80000000000180L, 0x100000000L, + 0x8000000000000008L, 0x2e01941caL, 0x86b8409500020000L, false, 0, 0x0L), + 4 + ), + 1563353 + ); + + // gentest-6209 + assertEqual( + perft( + Board(0x186086e01a0000L, 0x200000000000042L, 0x400001000014000L, 0x40000000000180L, 0x100000000L, + 0x8000000000001000L, 0x2e01951c2L, 0x8658609500020000L, true, 0, 0x0L), + 4 + ), + 1385214 + ); + + // gentest-6210 + assertEqual( + perft( + Board(0x186086e01a0000L, 0x200000000200002L, 0x400001000014000L, 0x40000000000480L, 0x40000L, + 0x8000000000001000L, 0x2e0395482L, 0x8658609400060000L, false, 0, 0x0L), + 4 + ), + 1160792 + ); + + // gentest-6211 + assertEqual( + perft( + Board(0x186086e0120000L, 0x200000000200002L, 0x400000000054000L, 0x40000000000480L, 0x80000L, + 0x8000000000002000L, 0x2e0316482L, 0x86586084000e0000L, true, 0, 0x0L), + 4 + ), + 1616096 + ); + + // gentest-6212 + assertEqual( + perft( + Board(0x10608ee0120000L, 0x200000000008002L, 0x400000000054000L, 0x40000000000084L, 0x80000L, + 0x8000000000002000L, 0x2e011e086L, 0x8650608c000e0000L, false, 0, 0x0L), + 4 + ), + 1226731 + ); + + // gentest-6213 + assertEqual( + perft( + Board(0x10608ee0120000L, 0x200000000008002L, 0x400000000014800L, 0x40000000000084L, 0x1000L, + 0x8000000000400000L, 0x2e051c086L, 0x8650608c00021800L, true, 0, 0x0L), + 4 + ), + 1111938 + ); + + // gentest-6214 + assertEqual( + perft( + Board(0x10608ae4120000L, 0x200000000008002L, 0x400000400004800L, 0x40000000000024L, 0x1000L, + 0x8000000000400000L, 0x6e050c026L, 0x8650608804021800L, false, 0, 0x0L), + 4 + ), + 1041440 + ); + + // gentest-6215 + assertEqual( + perft( + Board(0x1040aae4120000L, 0x200000000008002L, 0x2020000004800L, 0x40000000000024L, 0x1000L, + 0x8000000000400000L, 0x202e050c026L, 0x825240a804021800L, true, 0, 0x0L), + 4 + ), + 973657 + ); + + // gentest-6216 + assertEqual( + perft( + Board(0x1040aae4120000L, 0x200000000008002L, 0x2020000000800L, 0x40000000000030L, 0x0L, + 0x8000000000004000L, 0x202e010c032L, 0x825240a804020800L, false, 0, 0x0L), + 4 + ), + 469013 + ); + + // gentest-6217 + assertEqual( + perft( + Board(0x10402ae4120000L, 0x200000000008002L, 0x2020000000800L, 0x20000000000028L, 0x0L, + 0x8000000000004000L, 0x202a010c02aL, 0x8232402844020800L, true, 0, 0x0L), + 4 + ), + 443735 + ); + + // gentest-6218 + assertEqual( + perft( + Board(0x403ae4120000L, 0x200000000008800L, 0x2020000000000L, 0x20000000000028L, 0x0L, + 0x8000000000000080L, 0x202a01088a8L, 0x8222403844020000L, false, 0, 0x0L), + 4 + ), + 415729 + ); + + // gentest-6219 + assertEqual( + perft( + Board(0x403ae4120000L, 0x200000000208000L, 0x2020000000000L, 0x20000000000028L, 0x0L, + 0x40000000000080L, 0x202a03080a8L, 0x262403844020000L, true, 0, 0x0L), + 4 + ), + 557337 + ); + + // gentest-6220 + assertEqual( + perft( + Board(0x403ae4100200L, 0x200000000208000L, 0x2000400000000L, 0x20000000000030L, 0x0L, + 0x40000000000080L, 0x6a03080b0L, 0x262403844000200L, false, 0, 0x0L), + 4 + ), + 578358 + ); + + // gentest-6221 + assertEqual( + perft( + Board(0x4032ec100200L, 0x200000000208000L, 0x3000000000000L, 0x20000000000030L, 0x0L, + 0x80000000000080L, 0x10002a03080b0L, 0x2a240304c000200L, true, 0, 0x0L), + 4 + ), + 410399 + ); + + // gentest-6222 + assertEqual( + perft( + Board(0x4230ac300200L, 0x200000040000000L, 0x3000000000000L, 0x20000000000030L, 0x0L, + 0x80000000000080L, 0x10200e01000b0L, 0x2a240300c200200L, false, 0, 0x0L), + 4 + ), + 356801 + ); + + // gentest-6223 + assertEqual( + perft( + Board(0x4210ec300000L, 0x200000000000002L, 0x3000000000000L, 0x20000000000050L, 0x0L, + 0x80000000000080L, 0x10200a01000d0L, 0x2a240104c200002L, true, 0, 0x0L), + 4 + ), + 276548 + ); + + // gentest-6224 + assertEqual( + perft( + Board(0x210ac300000L, 0x200000000000800L, 0x3000000000000L, 0x20400000000010L, 0x0L, + 0x80000000000080L, 0x14200a0100090L, 0x2a200100c200800L, false, 0, 0x0L), + 4 + ), + 483948 + ); + + // gentest-6225 + assertEqual( + perft( + Board(0x210ac300000L, 0x200000000000800L, 0x1010000000000L, 0x600000000010L, 0x0L, 0x80000000000040L, + 0x14200a0100050L, 0x28021100c200800L, true, 0, 0x0L), + 4 + ), + 321732 + ); + + // gentest-6226 + assertEqual( + perft( + Board(0x210ac200000L, 0x200000000000800L, 0x1010000000000L, 0x4020000000000010L, 0x0L, + 0x80000000000040L, 0x40010200a8000050L, 0x2a0011004200800L, false, 0, 0x0L), + 4 + ), + 467772 + ); + + // gentest-6227 + assertEqual( + perft( + Board(0x210ac200000L, 0x200000000000800L, 0x1010000000000L, 0x4000000000400010L, 0x0L, + 0x80000000002000L, 0x40010200a8002010L, 0x280011004600800L, true, 0, 0x0L), + 4 + ), + 352129 + ); + + // gentest-6228 + assertEqual( + perft( + Board(0x200308c200000L, 0x200000000000800L, 0x1010000000000L, 0x400010L, 0x0L, 0x4000000000002000L, + 0x3002088002010L, 0x4200011004600800L, false, 0, 0x0L), + 4 + ), + 185803 + ); + + // gentest-6229 + assertEqual( + perft( + Board(0x200308c200000L, 0x200000000020000L, 0x1010000000000L, 0x400080L, 0x0L, 0x2000000000002000L, + 0x3002088002080L, 0x2200011004620000L, true, 0, 0x0L), + 4 + ), + 219378 + ); + + // gentest-6230 + assertEqual( + perft( + Board(0x200308c200000L, 0x200000400000000L, 0x1010000000000L, 0x400040L, 0x0L, 0x2000000000002000L, + 0x3002088002040L, 0x2200011404600000L, false, 0, 0x0L), + 4 + ), + 250786 + ); + + // gentest-6231 + assertEqual( + perft( + Board(0x2003084200000L, 0x200000400000000L, 0x1010000000000L, 0x400040L, 0x0L, 0x20000000002000L, + 0x3003080002040L, 0x220010404600000L, true, 0, 0x0L), + 4 + ), + 178853 + ); + + // gentest-6232 + assertEqual( + perft( + Board(0x2003084200000L, 0x208000000000000L, 0x1010000000000L, 0x400080L, 0x0L, 0x20000000100000L, + 0x3003080100080L, 0x228010004600000L, false, 0, 0x0L), + 4 + ), + 225721 + ); + + // gentest-6233 + assertEqual( + perft( + Board(0x2002084200000L, 0x200001000000000L, 0x30000000000L, 0x400080L, 0x0L, 0x40000000100000L, + 0x2022080100080L, 0x240011004600000L, true, 0, 0x0L), + 4 + ), + 266973 + ); + + // gentest-6234 + assertEqual( + perft( + Board(0x2002084200000L, 0x200001000000000L, 0x30000000000L, 0x4000000020L, 0x0L, 0x40000000100000L, + 0x2022080100020L, 0x240015004200000L, false, 0, 0x0L), + 4 + ), + 316621 + ); + + // gentest-6235 + assertEqual( + perft( + Board(0x2002084200000L, 0x200001000000000L, 0x30000000000L, 0x4000000001L, 0x0L, 0x40000000100000L, + 0x2022080100001L, 0x240015004200000L, true, 0, 0x0L), + 4 + ), + 371457 + ); + + // gentest-6236 + assertEqual( + perft( + Board(0x2002084200000L, 0x8001000000000L, 0x20000000000L, 0x14000000000L, 0x0L, 0x40000008000000L, + 0x2032088000000L, 0x48005004200000L, false, 0, 0x0L), + 4 + ), + 325181 + ); + + // gentest-6237 + assertEqual( + perft( + Board(0x2002084200000L, 0x8001000000000L, 0x20000000000L, 0x10040L, 0x0L, 0x40000008000000L, + 0x2022088010000L, 0x48001004200040L, true, 0, 0x0L), + 4 + ), + 544763 + ); + + // gentest-6238 + assertEqual( + perft( + Board(0x2084200000L, 0x8001000000000L, 0x201000000000000L, 0x10040L, 0x0L, 0x20000008000000L, + 0x201002088010000L, 0x28001004200040L, false, 0, 0x0L), + 4 + ), + 370210 + ); + + // gentest-6239 + assertEqual( + perft( + Board(0xa004200000L, 0x8000000080000L, 0x201000000000000L, 0x10080L, 0x0L, 0x20000008000000L, + 0x20100a008010000L, 0x28000004280080L, true, 0, 0x0L), + 4 + ), + 514325 + ); + + // gentest-6240 + assertEqual( + perft( + Board(0xa000200000L, 0x8000020000000L, 0x200000000100000L, 0x10080L, 0x0L, 0x20000004000000L, + 0x20000a004110000L, 0x28000020200080L, false, 0, 0x0L), + 4 + ), + 808397 + ); + + // gentest-6241 + assertEqual( + perft( + Board(0xa000200000L, 0x8000020000000L, 0x200000000100000L, 0x10000000000L, 0x0L, 0x20000004000000L, + 0x20000a004100000L, 0x28010020200000L, true, 0, 0x0L), + 4 + ), + 400761 + ); + + // gentest-6242 + assertEqual( + perft( + Board(0xa000200000L, 0x8000020000000L, 0x200000008000000L, 0x20000000000L, 0x0L, 0x20000004000000L, + 0x20000a00c000000L, 0x28020020200000L, false, 0, 0x0L), + 4 + ), + 351957 + ); + + // gentest-6243 + assertEqual( + perft( + Board(0xa000200000L, 0x1020000000L, 0x200000008000000L, 0x20000000000L, 0x0L, 0x200000040000L, + 0x20000a008040000L, 0x221020200000L, true, 0, 0x0L), + 4 + ), + 114794 + ); + + // gentest-6244 + assertEqual( + perft( + Board(0xa000200000L, 0x1020000000L, 0x200000400000000L, 0x2L, 0x0L, 0x200000000400L, + 0x20000a400000400L, 0x201020200002L, false, 0, 0x0L), + 4 + ), + 307914 + ); + + // gentest-6245 + assertEqual( + perft( + Board(0xa000200000L, 0x20000020000000L, 0x200000000000040L, 0x200L, 0x0L, 0x200000000400L, + 0x20000a000000440L, 0x20200020200200L, true, 0, 0x0L), + 4 + ), + 45083 + ); + + // gentest-6246 + assertEqual( + perft( + Board(0x2000200000L, 0x20008000000000L, 0x200000000000040L, 0x200L, 0x0L, 0x200004000000L, + 0x200002004000040L, 0x20208000200200L, false, 0, 0x0L), + 4 + ), + 201461 + ); + + // gentest-6247 + assertEqual( + perft( + Board(0x2000200000L, 0x20100000000000L, 0x200000400000000L, 0x200L, 0x0L, 0x200004000000L, + 0x200002404000000L, 0x20300000200200L, true, 0, 0x0L), + 4 + ), + 285507 + ); + + // gentest-6248 + assertEqual( + perft( + Board(0x2000200000L, 0x20100000000000L, 0x210000000000000L, 0x200L, 0x0L, 0x40000000040000L, + 0x210002000040000L, 0x60100000200200L, false, 0, 0x0L), + 4 + ), + 291861 + ); + + // gentest-6249 + assertEqual( + perft( + Board(0x2000200000L, 0x20100000000000L, 0x200000080000000L, 0x8000L, 0x0L, 0x80000000040000L, + 0x200002080040000L, 0xa0100000208000L, true, 0, 0x0L), + 4 + ), + 284613 + ); + + // gentest-6250 + assertEqual( + perft( + Board(0x2000200000L, 0x2020000000000000L, 0xa0000000L, 0x8000L, 0x0L, 0x80000000040000L, + 0x20a0040000L, 0x20a0000000208000L, false, 0, 0x0L), + 4 + ), + 247912 + ); + + // gentest-6251 + assertEqual( + perft( + Board(0x2000200000L, 0x28000000000000L, 0x80000800L, 0x0L, 0x0L, 0x80000000040000L, 0x2080040800L, + 0xa8000000200000L, true, 0, 0x0L), + 4 + ), + 104429 + ); + + // gentest-6252 + assertEqual( + perft( + Board(0x2000200000L, 0x28000000000000L, 0x800080000000L, 0x0L, 0x0L, 0x8000000000040000L, + 0x802080040000L, 0x8028000000200000L, false, 0, 0x0L), + 4 + ), + 79511 + ); + + // gentest-6253 + assertEqual( + perft( + Board(0x2000200000L, 0x20000000000000L, 0xa00000000000L, 0x0L, 0x0L, 0x4000000000040000L, + 0xa02000040000L, 0x4020000000200000L, true, 0, 0x0L), + 4 + ), + 36984 + ); + + // gentest-6254 + assertEqual( + perft( + Board(0x2000200000L, 0x800000000000000L, 0x2000200000000000L, 0x0L, 0x0L, 0x4000000008000000L, + 0x2000202008000000L, 0x4800000000200000L, false, 0, 0x0L), + 4 + ), + 22177 + ); + + // gentest-6255 + assertEqual( + perft( + Board(0x2000200000L, 0x100000000000L, 0x200000000000L, 0x0L, 0x0L, 0x2000000000040000L, + 0x202000040000L, 0x2000100000200000L, true, 0, 0x0L), + 4 + ), + 29182 + ); + + // gentest-6256 + assertEqual( + perft( + Board(0x100000200000L, 0x0L, 0x80000000L, 0x0L, 0x0L, 0x4000000000040000L, 0x100080040000L, + 0x4000000000200000L, false, 0, 0x0L), + 4 + ), + 6972 + ); + + // gentest-6257 + assertEqual( + perft( + Board(0x100000200000L, 0x0L, 0x80000000L, 0x0L, 0x0L, 0x8000000000000800L, 0x100080000800L, + 0x8000000000200000L, true, 0, 0x0L), + 4 + ), + 4785 + ); + + // gentest-6258 + assertEqual( + perft( + Board(0x100000200000L, 0x0L, 0x10L, 0x0L, 0x0L, 0x40000000100000L, 0x100000100010L, 0x40000000200000L, + false, 0, 0x0L), + 4 + ), + 10353 + ); + + // gentest-6259 + assertEqual( + perft( + Board(0x100000200000L, 0x0L, 0x10L, 0x0L, 0x0L, 0x80000010000000L, 0x100010000010L, 0x80000000200000L, + true, 0, 0x0L), + 4 + ), + 8774 + ); + + // gentest-6260 + assertEqual( + perft( + Board(0x100000200000L, 0x0L, 0x10L, 0x0L, 0x0L, 0x4000000010000000L, 0x100010000010L, + 0x4000000000200000L, false, 0, 0x0L), + 4 + ), + 7240 + ); + + // gentest-6261 + assertEqual( + perft( + Board(0x100000200000L, 0x0L, 0x400000L, 0x0L, 0x0L, 0x800010000000L, 0x100010400000L, 0x800000200000L, + true, 0, 0x0L), + 4 + ), + 10460 + ); + + // gentest-6262 + assertEqual( + perft( + Board(0x100000200000L, 0x0L, 0x80000000L, 0x0L, 0x0L, 0x401000000000L, 0x101080000000L, + 0x400000200000L, false, 0, 0x0L), + 4 + ), + 5834 + ); + + // gentest-6263 + assertEqual( + perft( + Board(0x100000000000L, 0x0L, 0x4000000000L, 0x0L, 0x20L, 0x401000000000L, 0x105000000000L, + 0x400000000020L, true, 0, 0x0L), + 4 + ), + 83383 + ); + + // gentest-6264 + assertEqual( + perft( + Board(0x100000000000L, 0x0L, 0x20000000L, 0x0L, 0x4L, 0x480000000000L, 0x180020000000L, + 0x400000000004L, false, 0, 0x0L), + 4 + ), + 72297 + ); + + // gentest-6265 + assertEqual( + perft( + Board(0x100000000000L, 0x0L, 0x20000000L, 0x0L, 0x100000L, 0x400800000000L, 0x100820000000L, + 0x400000100000L, true, 0, 0x0L), + 4 + ), + 90899 + ); + + // gentest-6266 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x1001000000000000L, 0x400800000000L, 0x1000000820000000L, + 0x1400000000000L, false, 0, 0x0L), + 4 + ), + 60803 + ); + + // gentest-6267 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x1000000000000040L, 0x200800000000L, 0x1000000800400000L, + 0x200000000040L, true, 0, 0x0L), + 4 + ), + 214710 + ); + + // gentest-6268 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x8000040L, 0x20000800000000L, 0x808400000L, 0x20000000000040L, + false, 0, 0x0L), + 4 + ), + 277055 + ); + + // gentest-6269 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x10000040L, 0x20000800000000L, 0x800400040L, 0x20000010000000L, + true, 0, 0x0L), + 4 + ), + 31874 + ); + + // gentest-6270 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x2000040L, 0x20040000000000L, 0x40000400040L, 0x20000002000000L, + false, 0, 0x0L), + 4 + ), + 350775 + ); + + // gentest-6271 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x400000L, 0x0L, 0x10000040L, 0x10000200000000L, 0x200400040L, 0x10000010000000L, + true, 0, 0x0L), + 4 + ), + 387362 + ); + + // gentest-6272 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x10000040L, 0x20000200000000L, 0x220000040L, 0x20000010000000L, + false, 0, 0x0L), + 4 + ), + 417976 + ); + + // gentest-6273 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x100000000040L, 0x20000004000000L, 0x24000040L, + 0x20100000000000L, true, 0, 0x0L), + 4 + ), + 94418 + ); + + // gentest-6274 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x4000100000000000L, 0x1000000000040000L, 0x4000000020040000L, + 0x1000100000000000L, false, 0, 0x0L), + 4 + ), + 37238 + ); + + // gentest-6275 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6276 + assertEqual( + perft( + Board(0xfe01000000ff00L, 0x4200000000810000L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x81ffbdL, 0xfffe010000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 183425 + ); + + // gentest-6277 + assertEqual( + perft( + Board(0xfc03000020df00L, 0x4200000000810000L, 0x2002000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xa1dfbdL, 0xfbfe030000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 288594 + ); + + // gentest-6278 + assertEqual( + perft( + Board(0xfc03000020df00L, 0x4200000000000042L, 0x2002000000000024L, 0x8001000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x20dfffL, 0xfaff030000000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 264026 + ); + + // gentest-6279 + assertEqual( + perft( + Board(0xac035000a05f00L, 0x4200000000000042L, 0x2002000000000024L, 0x8001000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xa05fffL, 0xfaaf035000000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 410945 + ); + + // gentest-6280 + assertEqual( + perft( + Board(0xac035000e00f00L, 0x4200000000000042L, 0x2000000010000024L, 0x8001000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xe00fffL, 0xfaad035010000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 810205 + ); + + // gentest-6281 + assertEqual( + perft( + Board(0xa40b5000e20d00L, 0x4200000000000042L, 0x2000000010000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xe20dffL, 0xfba40b5010000000L, true, 0, + 0x8000000000000081L), + 4 + ), + 710209 + ); + + // gentest-6282 + assertEqual( + perft( + Board(0xa40b5082600d00L, 0x4000040000000042L, 0x2000000010000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x82600dffL, 0xf9a40f5010000000L, false, 0, + 0x8000000000000081L), + 4 + ), + 1182471 + ); + + // gentest-6283 + assertEqual( + perft( + Board(0xa4091282600d00L, 0x4000040000000042L, 0x2000000010000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000001000L, 0x2601defL, 0xf9a40d1290000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 788530 + ); + + // gentest-6284 + assertEqual( + perft( + Board(0x24891282600d00L, 0x4000040000000042L, 0x2000000010800004L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000001000L, 0x2e09d4fL, 0xf9248d1290000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 877025 + ); + + // gentest-6285 + assertEqual( + perft( + Board(0x24891282610800L, 0x4000040000000042L, 0x2000000000800404L, 0x8001000000008001L, + 0x800000000000008L, 0x1000000000001000L, 0x2e1984fL, 0xf8258d1280000400L, true, 0, + 0x8000000000000000L), + 4 + ), + 797343 + ); + + // gentest-6286 + assertEqual( + perft( + Board(0x4a91282610800L, 0x4000040000000042L, 0x2000000000004404L, 0x8001000000008001L, + 0x800000000000020L, 0x1000000000001000L, 0x261d867L, 0xf805ad1280000400L, false, 0, + 0x8000000000000000L), + 4 + ), + 550391 + ); + + // gentest-6287 + assertEqual( + perft( + Board(0x4a91282610800L, 0x4000040000040040L, 0x2080000000004004L, 0x8002000000008001L, + 0x800000000000020L, 0x1000000000001000L, 0x265d865L, 0xf886ad1280000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 876111 + ); + + // gentest-6288 + assertEqual( + perft( + Board(0x4a91282610800L, 0x4000040000040040L, 0x2080000000004004L, 0x8002000000000081L, + 0x200000000000020L, 0x1000000000002000L, 0x26568e5L, 0xf286ad1280000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 935322 + ); + + // gentest-6289 + assertEqual( + perft( + Board(0x4893082610800L, 0x4000000300000040L, 0x2080000000004004L, 0x8002000000000081L, + 0x200000000000020L, 0x1000000000002000L, 0x2026168e5L, 0xf286893180000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 637884 + ); + + // gentest-6290 + assertEqual( + perft( + Board(0x4893188610000L, 0x4000000200000040L, 0x2080000000004004L, 0x8002000000000081L, + 0x800000000000020L, 0x1000000000002000L, 0x3086160e5L, 0xf886893080000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 831958 + ); + + // gentest-6291 + assertEqual( + perft( + Board(0x4893108610000L, 0x10000200000040L, 0x2080000000004004L, 0x8002000000000081L, + 0x800000000000020L, 0x1000000000000010L, 0x3082140f5L, 0xb896893000400000L, true, 0, + 0x8000000000000000L), + 4 + ), + 734297 + ); + + // gentest-6292 + assertEqual( + perft( + Board(0x4893128410000L, 0x10000000000040L, 0x2080000000004004L, 0x8000000200008001L, + 0x800000000000020L, 0x1000000000000010L, 0x12801c075L, 0xb894893200400000L, false, 0, + 0x8000000000000000L), + 4 + ), + 1264449 + ); + + // gentest-6293 + assertEqual( + perft( + Board(0x4893128410000L, 0x800000040L, 0x2080000000004004L, 0x8200000000008001L, 0x800000000200000L, + 0x1000000000000010L, 0x12821c055L, 0xba84893800400000L, true, 0, 0x8000000000000000L), + 4 + ), + 1599925 + ); + + // gentest-6294 + assertEqual( + perft( + Board(0x893528410000L, 0x800000040L, 0x2080000000004004L, 0x8200008000000001L, 0x800000000200000L, + 0x1000000000000008L, 0x812821404dL, 0xba80893c00400000L, false, 0, 0x8000000000000000L), + 4 + ), + 1859239 + ); + + // gentest-6295 + assertEqual( + perft( + Board(0x893528410000L, 0x4000000000040L, 0x2080000000004004L, 0x8200008000000001L, 0x800000000200000L, + 0x20000000000800L, 0x8128214845L, 0xaaa4893400400000L, true, 0, 0x0L), + 4 + ), + 2137522 + ); + + // gentest-6296 + assertEqual( + perft( + Board(0x893528410000L, 0x4000000000040L, 0x2080000000004004L, 0x8200008000000001L, 0x800000000020000L, + 0x40000000040000L, 0x8128074045L, 0xaac4893400400000L, false, 0, 0x0L), + 4 + ), + 1583516 + ); + + // gentest-6297 + assertEqual( + perft( + Board(0x892528410000L, 0x4000000000040L, 0x2000400000004004L, 0x8200008000000001L, 0x800000000000400L, + 0x40000000040000L, 0x8108054445L, 0xaa44c92420400000L, true, 0, 0x0L), + 4 + ), + 2113395 + ); + + // gentest-6298 + assertEqual( + perft( + Board(0x892528410000L, 0x4000000000040L, 0x3002000000000800L, 0x8200008000000001L, 0x800000000000400L, + 0x40000000040000L, 0x2008108050c41L, 0xba44892420400000L, false, 0, 0x0L), + 4 + ), + 1802873 + ); + + // gentest-6299 + assertEqual( + perft( + Board(0x892528410000L, 0x4000000000040L, 0x3002000000000800L, 0x8200008000000001L, 0x400000000002L, + 0x40000000040000L, 0x2008108050843L, 0xb244c92420400000L, true, 0, 0x0L), + 4 + ), + 2091330 + ); + + // gentest-6300 + assertEqual( + perft( + Board(0x92528410000L, 0x4000000000040L, 0x3002000000000800L, 0x8200800000000001L, 0x8000000002L, + 0x40000000020000L, 0x2800108030843L, 0xb24409a420400000L, false, 0, 0x0L), + 4 + ), + 1442131 + ); + + // gentest-6301 + assertEqual( + perft( + Board(0x92528410000L, 0x4000000000040L, 0x2002040000000800L, 0x8200000000000001L, 0x8002L, + 0x40000000020000L, 0x8002000108030843L, 0x22440d2420408000L, true, 0, 0x0L), + 4 + ), + 1744519 + ); + + // gentest-6302 + assertEqual( + perft( + Board(0x92528410000L, 0x4000000000040L, 0x2002000001000800L, 0x8200000000000001L, 0x8008L, + 0x40000004000000L, 0x800200010c010849L, 0x2244092421408000L, false, 0, 0x0L), + 4 + ), + 1913912 + ); + + // gentest-6303 + assertEqual( + perft( + Board(0x92528410000L, 0x4000000000040L, 0x2002000000020800L, 0x8200000000000001L, 0x8008L, + 0x200000080000L, 0x8002000108090849L, 0x2204292420428000L, true, 0, 0x0L), + 4 + ), + 2737518 + ); + + // gentest-6304 + assertEqual( + perft( + Board(0x92528410000L, 0x4000000000040L, 0x2002000000000900L, 0x200000000008001L, 0x8000000000L, + 0x200000080000L, 0x2008108098841L, 0x2204292420400100L, false, 0, 0x0L), + 4 + ), + 1371751 + ); + + // gentest-6305 + assertEqual( + perft( + Board(0x92508610000L, 0x4000000000040L, 0x2002100000000800L, 0x200000000000081L, 0x8000000000L, + 0x200000080000L, 0x20081080908c1L, 0x2204392400600000L, true, 0, 0x0L), + 4 + ), + 1185083 + ); + + // gentest-6306 + assertEqual( + perft( + Board(0x90508410000L, 0x200000040L, 0x2000100000200800L, 0x200000000000081L, 0x2000000000L, + 0x200000080000L, 0x21082908c1L, 0x2200390600400000L, false, 0, 0x0L), + 4 + ), + 165350 + ); + + // gentest-6307 + assertEqual( + perft( + Board(0x90508410000L, 0x200000040L, 0x2000000000200800L, 0x200000000000081L, 0x100000000000L, + 0x800000000080000L, 0x1001082908c1L, 0x2a00090600400000L, true, 0, 0x0L), + 4 + ), + 988773 + ); + + // gentest-6308 + assertEqual( + perft( + Board(0x90d00410000L, 0x1000000000040L, 0x2000000000200800L, 0x200000000000081L, 0x400000000000L, + 0x800000000080000L, 0x4009002908c1L, 0x2a01090400400000L, false, 0, 0x0L), + 4 + ), + 838475 + ); + + // gentest-6309 + assertEqual( + perft( + Board(0x90d00014000L, 0x1000000000040L, 0x2000000000300000L, 0x100000000000081L, 0x400000000000L, + 0x800000000080000L, 0x4009003900c1L, 0x2901090400004000L, true, 0, 0x0L), + 4 + ), + 594436 + ); + + // gentest-6310 + assertEqual( + perft( + Board(0x90d00014000L, 0x1000000800000L, 0x40000000300000L, 0x100000000008001L, 0x400000000000L, + 0x800000000080000L, 0x400900b98001L, 0x941090400004000L, false, 0, 0x0L), + 4 + ), + 1173361 + ); + + // gentest-6311 + assertEqual( + perft( + Board(0x90d00014000L, 0x1000000800000L, 0x300200L, 0x100000000008001L, 0x2000000000L, + 0x10000000080000L, 0x2900b98001L, 0x111090400004200L, true, 0, 0x0L), + 4 + ), + 1065966 + ); + + // gentest-6312 + assertEqual( + perft( + Board(0x90d00014000L, 0x1000000800000L, 0x40000000300000L, 0x100000000008001L, 0x2000000000L, + 0x10000000080000L, 0x2900b98001L, 0x151090400004000L, false, 0, 0x0L), + 4 + ), + 1296203 + ); + + // gentest-6313 + assertEqual( + perft( + Board(0x90d00014000L, 0x1000000800000L, 0x300001L, 0x100000000008000L, 0x80000000000000L, + 0x1000000000080000L, 0x80000900b98000L, 0x1101090400004001L, true, 0, 0x0L), + 4 + ), + 495293 + ); + + // gentest-6314 + assertEqual( + perft( + Board(0x90d00010000L, 0x1000000800000L, 0x1801L, 0x100000000008000L, 0x80000000000040L, + 0x1000000000080000L, 0x80000900899800L, 0x1101090400000041L, false, 0, 0x0L), + 4 + ), + 877799 + ); + + // gentest-6315 + assertEqual( + perft( + Board(0x90d00010000L, 0x1000000800000L, 0x40000000001800L, 0x100000000008000L, 0x80000000000002L, + 0x1000000004000000L, 0x80000904819800L, 0x1141090400000002L, true, 0, 0x0L), + 4 + ), + 943507 + ); + + // gentest-6316 + assertEqual( + perft( + Board(0x90d00010000L, 0x1000000800000L, 0x40000000001800L, 0x100000000008000L, 0x40L, + 0x10000004000000L, 0x904819840L, 0x151090400000000L, false, 0, 0x0L), + 4 + ), + 829009 + ); + + // gentest-6317 + assertEqual( + perft( + Board(0x90d00010000L, 0x1000000800000L, 0x40000000001800L, 0x1000000000008000L, 0x100000L, + 0x8000004000000L, 0x904919800L, 0x1049090400000000L, true, 0, 0x0L), + 4 + ), + 783287 + ); + + // gentest-6318 + assertEqual( + perft( + Board(0x90d00010000L, 0x1000000800000L, 0x40808L, 0x1000000000008000L, 0x4000000000L, + 0x8000004000000L, 0x4904818808L, 0x1009090400040000L, false, 0, 0x0L), + 4 + ), + 992656 + ); + + // gentest-6319 + assertEqual( + perft( + Board(0x90d00010000L, 0x1000000800000L, 0x40808L, 0x9000L, 0x4000000000L, 0x8000000080000L, + 0x4900898808L, 0x9090400041000L, true, 0, 0x0L), + 4 + ), + 684193 + ); + + // gentest-6320 + assertEqual( + perft( + Board(0x90d00010000L, 0x1000000800000L, 0xc01L, 0x9000L, 0x200000000000L, 0x8000000080000L, + 0x200900898c00L, 0x9090400001001L, false, 0, 0x0L), + 4 + ), + 620760 + ); + + // gentest-6321 + assertEqual( + perft( + Board(0x90904010000L, 0x1000000800000L, 0x8000c00L, 0x9000L, 0x4000000000L, 0x8000000080000L, + 0x4900898c00L, 0x909000c001000L, true, 0, 0x0L), + 4 + ), + 49239 + ); + + // gentest-6322 + assertEqual( + perft( + Board(0x90904010000L, 0x1000000800000L, 0x1000000c00L, 0x8000L, 0x4000000000L, 0x8000000100000L, + 0x4900918c00L, 0x9091004000000L, false, 0, 0x0L), + 4 + ), + 333713 + ); + + // gentest-6323 + assertEqual( + perft( + Board(0x90904010000L, 0x1000000800000L, 0x1000000410L, 0x8000L, 0x4000000000L, 0x2000000000100000L, + 0x4900918410L, 0x2001091004000000L, true, 0, 0x0L), + 4 + ), + 306192 + ); + + // gentest-6324 + assertEqual( + perft( + Board(0x90904010000L, 0x1000000800000L, 0x80000000000210L, 0x8000L, 0x80000000L, 0x2000000000100000L, + 0x80000980918010L, 0x2001090004000200L, false, 0, 0x0L), + 4 + ), + 320922 + ); + + // gentest-6325 + assertEqual( + perft( + Board(0x90905000000L, 0x4000000800000L, 0x80000000000210L, 0x8000L, 0x80000000L, 0x2000000000100000L, + 0x80000981908010L, 0x2004090004000200L, true, 0, 0x0L), + 4 + ), + 329598 + ); + + // gentest-6326 + assertEqual( + perft( + Board(0x90905000000L, 0x4000000002000L, 0x80000000410000L, 0x8000L, 0x80000000L, 0x2000000000100000L, + 0x8000098150a000L, 0x2004090004010000L, false, 0, 0x0L), + 4 + ), + 145583 + ); + + // gentest-6327 + assertEqual( + perft( + Board(0x90905000000L, 0x1000000000002000L, 0x490000L, 0x8000L, 0x80000000L, 0x20000000100000L, + 0x98158a000L, 0x1020090004010000L, true, 0, 0x0L), + 4 + ), + 170671 + ); + + // gentest-6328 + assertEqual( + perft( + Board(0x90905000000L, 0x1000000000002000L, 0x2401000L, 0x8000L, 0x4000000000L, 0x20000000100000L, + 0x490150b000L, 0x1020090006000000L, false, 0, 0x0L), + 4 + ), + 143676 + ); + + // gentest-6329 + assertEqual( + perft( + Board(0x90905000000L, 0x200000002000L, 0x400401000L, 0x8000L, 0x4000000000L, 0x20000000200000L, + 0x490160b000L, 0x20290404000000L, true, 0, 0x0L), + 4 + ), + 378439 + ); + + // gentest-6330 + assertEqual( + perft( + Board(0x90905000000L, 0x200000040000L, 0x401040L, 0x8000L, 0x4000000000L, 0x20000000200000L, + 0x4901649000L, 0x20290004000040L, false, 0, 0x0L), + 4 + ), + 419910 + ); + + // gentest-6331 + assertEqual( + perft( + Board(0x90905000000L, 0x8000000040000L, 0x1000000401000L, 0x8000L, 0x80000000L, 0x20000000200000L, + 0x981649000L, 0x29090004000000L, true, 0, 0x0L), + 4 + ), + 299617 + ); + + // gentest-6332 + assertEqual( + perft( + Board(0x90905000000L, 0x200000000040000L, 0x1000020001000L, 0x80L, 0x80000000L, 0x20000000200000L, + 0x9a1241080L, 0x221090004000000L, false, 0, 0x0L), + 4 + ), + 333171 + ); + + // gentest-6333 + assertEqual( + perft( + Board(0x90905000000L, 0x40000040000L, 0x20003000L, 0x10L, 0x80000000L, 0x20000000200000L, + 0x9a1241010L, 0x200d0004002000L, true, 0, 0x0L), + 4 + ), + 576514 + ); + + // gentest-6334 + assertEqual( + perft( + Board(0x90905000000L, 0x800000000040000L, 0x1000003000L, 0x10L, 0x80000000L, 0x20000000200000L, + 0x1981241010L, 0x820090004002000L, false, 0, 0x0L), + 4 + ), + 478933 + ); + + // gentest-6335 + assertEqual( + perft( + Board(0x11905000000L, 0x800000000040000L, 0x1000000000020L, 0x10L, 0x80000000L, 0x20000000200000L, + 0x981240030L, 0x821011004000000L, true, 0, 0x0L), + 4 + ), + 360851 + ); + + // gentest-6336 + assertEqual( + perft( + Board(0x11905000000L, 0x100000040000L, 0x1000000000020L, 0x10L, 0x100000000000000L, 0x20000000200000L, + 0x100000901240030L, 0x21111004000000L, false, 0, 0x0L), + 4 + ), + 346320 + ); + + // gentest-6337 + assertEqual( + perft( + Board(0x91105000000L, 0x100000040000L, 0x8000020L, 0x10L, 0x100000000000000L, 0x20000000200000L, + 0x100080101240030L, 0x2011100c000000L, true, 0, 0x0L), + 4 + ), + 376344 + ); + + // gentest-6338 + assertEqual( + perft( + Board(0x91105000000L, 0x100000040000L, 0x100020L, 0x8L, 0x100000000000000L, 0x20000000200000L, + 0x100080101240028L, 0x20111004100000L, false, 0, 0x0L), + 4 + ), + 492330 + ); + + // gentest-6339 + assertEqual( + perft( + Board(0x8011105000000L, 0x400040000L, 0x100020L, 0x8L, 0x100000000000000L, 0x100000200000L, + 0x108000101240028L, 0x111404100000L, true, 0, 0x0L), + 4 + ), + 410263 + ); + + // gentest-6340 + assertEqual( + perft( + Board(0x8011104000000L, 0x1040000L, 0x100020L, 0x8L, 0x2000000000000L, 0x100000200000L, + 0xa000100240028L, 0x111005100000L, false, 0, 0x0L), + 4 + ), + 549704 + ); + + // gentest-6341 + assertEqual( + perft( + Board(0x8011104000000L, 0x1040000L, 0x24L, 0x8L, 0x200000000000000L, 0x2000200000L, + 0x208000100240028L, 0x13005000004L, true, 0, 0x0L), + 4 + ), + 370785 + ); + + // gentest-6342 + assertEqual( + perft( + Board(0x8011104000000L, 0x1040000L, 0x1004L, 0x80L, 0x200000000000000L, 0x400000200000L, + 0x208000100241080L, 0x411005000004L, false, 0, 0x0L), + 4 + ), + 535315 + ); + + // gentest-6343 + assertEqual( + perft( + Board(0x8011104000000L, 0x1040000L, 0x101000L, 0x80L, 0x200000000000000L, 0x2000002000L, + 0x208000100043080L, 0x13005100000L, true, 0, 0x0L), + 4 + ), + 83710 + ); + + // gentest-6344 + assertEqual( + perft( + Board(0x8011104000000L, 0x1040000L, 0x40100000L, 0x80L, 0x200000000000000L, 0x200000000020L, + 0x2080001400400a0L, 0x211005100000L, false, 0, 0x0L), + 4 + ), + 699030 + ); + + // gentest-6345 + assertEqual( + perft( + Board(0x8011104000000L, 0x1040000L, 0x800040000000L, 0x80L, 0x20000000000L, 0x20000000000020L, + 0x80201400400a0L, 0x20811005000000L, true, 0, 0x0L), + 4 + ), + 508232 + ); + + // gentest-6346 + assertEqual( + perft( + Board(0x8011104000000L, 0x1000000L, 0x40000000L, 0x80L, 0x800000000000L, 0x10000000000020L, + 0x88001410000a0L, 0x10011004000000L, false, 0, 0x0L), + 4 + ), + 30206 + ); + + // gentest-6347 + assertEqual( + perft( + Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x80L, 0x80000000L, 0x2000000000000020L, + 0x80001c10000a0L, 0x2000010014000000L, true, 0, 0x0L), + 4 + ), + 27122 + ); + + // gentest-6348 + assertEqual( + perft( + Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x8000L, 0x400000L, 0x10000000000020L, + 0x8000141408020L, 0x10010014000000L, false, 0, 0x0L), + 4 + ), + 72366 + ); + + // gentest-6349 + assertEqual( + perft( + Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x8000L, 0x2000L, 0x40000000000020L, + 0x800014100a020L, 0x40010014000000L, true, 0, 0x0L), + 4 + ), + 52453 + ); + + // gentest-6350 + assertEqual( + perft( + Board(0x8010114000000L, 0x1000000L, 0x40000000L, 0x8000L, 0x80000000L, 0x2000000000000010L, + 0x80001c1008010L, 0x2000010014000000L, false, 0, 0x0L), + 4 + ), + 36785 + ); + + // gentest-6351 + assertEqual( + perft( + Board(0x8010110040000L, 0x1000000L, 0x40000000L, 0x1000L, 0x80000000L, 0x4000000000000010L, + 0x80001c1001010L, 0x4000010010040000L, true, 0, 0x0L), + 4 + ), + 32322 + ); + + // gentest-6352 + assertEqual( + perft( + Board(0x8010100140000L, 0x1000000L, 0x800000L, 0x400L, 0x80000000L, 0x4000000000000010L, + 0x8000181800410L, 0x4000010000140000L, false, 0, 0x0L), + 4 + ), + 26425 + ); + + // gentest-6353 + assertEqual( + perft( + Board(0x8010100041000L, 0x1000000L, 0x800000L, 0x400L, 0x800000000000L, 0x20000000000010L, + 0x8800101800410L, 0x20010000041000L, true, 0, 0x0L), + 4 + ), + 16787 + ); + + // gentest-6354 + assertEqual( + perft( + Board(0x8010100041000L, 0x1000000L, 0x800000L, 0x400L, 0x200000000L, 0x4000000000000010L, + 0x8000301800410L, 0x4000010000041000L, false, 0, 0x0L), + 4 + ), + 43303 + ); + + // gentest-6355 + assertEqual( + perft( + Board(0x8010100041000L, 0x1000000L, 0x800000L, 0x400L, 0x800000000L, 0x80000000000010L, + 0x8000901800410L, 0x80010000041000L, true, 0, 0x0L), + 4 + ), + 36793 + ); + + // gentest-6356 + assertEqual( + perft( + Board(0x8010100001000L, 0x1000000L, 0x800000L, 0x40000000000L, 0x800000000L, 0x800000000010L, + 0x8040901800010L, 0x810000001000L, false, 0, 0x0L), + 4 + ), + 15628 + ); + + // gentest-6357 + assertEqual( + perft( + Board(0x8010100001000L, 0x1000000L, 0x800000L, 0x0L, 0x800000000L, 0x200000000010L, 0x8000901800010L, + 0x210000001000L, true, 0, 0x0L), + 4 + ), + 28418 + ); + + // gentest-6358 + assertEqual( + perft( + Board(0x8010100001000L, 0x1000000L, 0x800000L, 0x0L, 0x1000000000000000L, 0x20000000000010L, + 0x1008000101800010L, 0x20010000001000L, false, 0, 0x0L), + 4 + ), + 7504 + ); + + // gentest-6359 + assertEqual( + perft( + Board(0x10100001000L, 0x1000000L, 0x800000L, 0x800000000000000L, 0x1000000000000000L, + 0x80000000000010L, 0x1800000101800010L, 0x80010000001000L, true, 0, 0x0L), + 4 + ), + 13589 + ); + + // gentest-6360 + assertEqual( + perft( + Board(0x10100001000L, 0x1000000L, 0x800000L, 0x100000000000000L, 0x800000000000000L, 0x800000000010L, + 0x900000101800010L, 0x810000001000L, false, 0, 0x0L), + 4 + ), + 19406 + ); + + // gentest-6361 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6362 + assertEqual( + perft( + Board(0xfb00040100fe00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000010080L, + 0x800000000000008L, 0x1000000000000010L, 0x101fefeL, 0xfffb000400000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 382134 + ); + + // gentest-6363 + assertEqual( + perft( + Board(0xbb40041100ee00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000010080L, + 0x800000000000008L, 0x1000000000000010L, 0x1101eefeL, 0xbfbb600400000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 883810 + ); + + // gentest-6364 + assertEqual( + perft( + Board(0xbb00441140ae00L, 0x200200000000042L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x1140affeL, 0xbfbb204400000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 664019 + ); + + // gentest-6365 + assertEqual( + perft( + Board(0xb900461142ac00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x1142adfeL, 0xffb9004600000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 742298 + ); + + // gentest-6366 + assertEqual( + perft( + Board(0xb900461542a800L, 0x4000040000001002L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x1542b9beL, 0xfdb9044600000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 704753 + ); + + // gentest-6367 + assertEqual( + perft( + Board(0x19a0461542a800L, 0x4000040000011000L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x1543b9bcL, 0xfd19a44600000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 549910 + ); + + // gentest-6368 + assertEqual( + perft( + Board(0x11a05e85422800L, 0x4000040000011000L, 0x2400000000000024L, 0x8100000000000180L, + 0x800000000000008L, 0x1000000000000010L, 0x10854339bcL, 0xfd11a44e00000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 1158956 + ); + + // gentest-6369 + assertEqual( + perft( + Board(0x10a05f85422800L, 0x4000040000050000L, 0x2400000000000024L, 0x8100000000000180L, + 0x4000000000008L, 0x1000000000000010L, 0x10854729bcL, 0xf514a44f00000000L, true, 0, + 0x8100000000000080L), + 4 + ), + 1996053 + ); + + // gentest-6370 + assertEqual( + perft( + Board(0x10a05f85620800L, 0x4000000008050000L, 0x2400000000000024L, 0x8100000000000180L, + 0x4000000001000L, 0x1000000000000010L, 0x10856719b4L, 0xf514a04f08000000L, false, 0, + 0x8100000000000080L), + 4 + ), + 2010775 + ); + + // gentest-6371 + assertEqual( + perft( + Board(0x10a01fc5620800L, 0x4000000008050000L, 0x2400000000000024L, 0x8100000000000180L, + 0x4000000080000L, 0x20000000000010L, 0x10856f09b4L, 0xe534a00f48000000L, true, 0, 0x80L), + 4 + ), + 1707864 + ); + + // gentest-6372 + assertEqual( + perft( + Board(0x10a01fc7600800L, 0x4000000008050000L, 0x2400000000000220L, 0x8100000000000180L, + 0x80000080000L, 0x20000000000010L, 0x10876d0bb0L, 0xe530a80f48000000L, false, 0, 0x80L), + 4 + ), + 1912964 + ); + + // gentest-6373 + assertEqual( + perft( + Board(0x10a00fc7600800L, 0x4000000008050000L, 0x2000100000000024L, 0x8100000000000180L, 0x1000080000L, + 0x20000000000010L, 0x876d09b4L, 0xe130b01f48000000L, true, 0, 0x80L), + 4 + ), + 356317 + ); + + // gentest-6374 + assertEqual( + perft( + Board(0x10a00fc7600800L, 0x4000000008050000L, 0x2000002000004004L, 0x8100000000000180L, 0x1010000000L, + 0x20000000000010L, 0x97654994L, 0xe130a03f48000000L, false, 0, 0x80L), + 4 + ), + 1727946 + ); + + // gentest-6375 + assertEqual( + perft( + Board(0x10a08f47600800L, 0x4000100000050000L, 0x2000002000004004L, 0x8100000000000180L, + 0x80010000000L, 0x20000000000010L, 0x8017654994L, 0xe130b82f40000000L, true, 0, 0x80L), + 4 + ), + 2427928 + ); + + // gentest-6376 + assertEqual( + perft( + Board(0x10a08f47600800L, 0x4000000000050000L, 0x2000002000004004L, 0x8100000000000480L, + 0x800100000000000L, 0x20000000000010L, 0x108007654c94L, 0xe930a02f40000000L, false, 0, 0x80L), + 4 + ), + 166383 + ); + + // gentest-6377 + assertEqual( + perft( + Board(0x10a08b47600800L, 0x4000000000050000L, 0x2000002000004004L, 0x8100000000000480L, + 0x808000000000000L, 0x40000000000010L, 0x8008005654c94L, 0xe950a02b42000000L, true, 0, 0x80L), + 4 + ), + 1449310 + ); + + // gentest-6378 + assertEqual( + perft( + Board(0x10a08b43600800L, 0x4000000000050000L, 0x2000000010004004L, 0x8100000000000420L, + 0x808000000000000L, 0x40000000000040L, 0x8008801654c64L, 0xe950a00352000000L, false, 0, 0x0L), + 4 + ), + 947122 + ); + + // gentest-6379 + assertEqual( + perft( + Board(0x10a08b43600800L, 0x4000000000040002L, 0x2000000010004004L, 0x280000000000420L, + 0x808000000000000L, 0x40000000000040L, 0x8008801644c66L, 0x6ad0a00352000000L, true, 0, 0x0L), + 4 + ), + 773014 + ); + + // gentest-6380 + assertEqual( + perft( + Board(0x10a08b03600800L, 0x4000000000040002L, 0x2000000000004004L, 0x280000000000420L, + 0x800000010000000L, 0x20000000000040L, 0x8811644c66L, 0x6ab0a00302000000L, false, 0, 0x0L), + 4 + ), + 700090 + ); + + // gentest-6381 + assertEqual( + perft( + Board(0x10a08303600800L, 0x4000000000040002L, 0x2000000000004004L, 0x280000000000420L, 0x8000100L, + 0x20000000000040L, 0x8009644c66L, 0x62b0a00302000100L, true, 0, 0x0L), + 4 + ), + 1049583 + ); + + // gentest-6382 + assertEqual( + perft( + Board(0x10a08303600800L, 0x4000000000040002L, 0x2000000000004004L, 0x280000000000220L, 0x80000000000L, + 0x20000000000040L, 0x88001644a66L, 0x62b0a00302000000L, false, 0, 0x0L), + 4 + ), + 458486 + ); + + // gentest-6383 + assertEqual( + perft( + Board(0xa88341240800L, 0x4000000000000002L, 0x2000000000004004L, 0x280000000000220L, 0x0L, + 0x20000000000040L, 0x8041204a66L, 0x62a0a80300040000L, true, 0, 0x0L), + 4 + ), + 230677 + ); + + // gentest-6384 + assertEqual( + perft( + Board(0xa08b41240800L, 0x4000000000000002L, 0x2000000000004004L, 0x280000000000220L, 0x0L, + 0x20000000000040L, 0x8041204a66L, 0x62a0a00b00040000L, false, 0, 0x0L), + 4 + ), + 304058 + ); + + // gentest-6385 + assertEqual( + perft( + Board(0xa08b41240800L, 0x4000000000000002L, 0x2000000000004004L, 0x80020002000020L, 0x0L, + 0x100000000040L, 0x8043204866L, 0x6080b20b00040000L, true, 0, 0x0L), + 4 + ), + 461038 + ); + + // gentest-6386 + assertEqual( + perft( + Board(0xa08b41240800L, 0x4000000000010000L, 0x2000000000004004L, 0x80040002000020L, 0x0L, + 0x100000008000L, 0x804321c824L, 0x6080b40b00040000L, false, 0, 0x0L), + 4 + ), + 722601 + ); + + // gentest-6387 + assertEqual( + perft( + Board(0xa08341240800L, 0x4000000000010000L, 0x2000000000004004L, 0x20040008000020L, 0x0L, + 0x100000008000L, 0x804921c824L, 0x6020b40300040000L, true, 0, 0x0L), + 4 + ), + 558841 + ); + + // gentest-6388 + assertEqual( + perft( + Board(0xa08341240800L, 0x4000000000010000L, 0x2000000000004004L, 0x20080000000080L, 0x0L, + 0x100000008000L, 0x804121c884L, 0x6020b80300040000L, false, 0, 0x0L), + 4 + ), + 319106 + ); + + // gentest-6389 + assertEqual( + perft( + Board(0xa083412c0000L, 0x4000000000010000L, 0x10000000004004L, 0x20020000000080L, 0x0L, + 0x100000008000L, 0x804129c084L, 0x4030b20300040000L, true, 0, 0x0L), + 4 + ), + 272425 + ); + + // gentest-6390 + assertEqual( + perft( + Board(0xa08341280400L, 0x4000000000010000L, 0x10004000004000L, 0x20020000000040L, 0x0L, + 0x100000008000L, 0xc04129c040L, 0x4030b20300000400L, false, 0, 0x0L), + 4 + ), + 485309 + ); + + // gentest-6391 + assertEqual( + perft( + Board(0xa08141280400L, 0x4000000200000000L, 0x4400004000L, 0x20010000000040L, 0x0L, 0x100000008000L, + 0xc24128c040L, 0x4020b10500000400L, true, 0, 0x0L), + 4 + ), + 729621 + ); + + // gentest-6392 + assertEqual( + perft( + Board(0xa08141280000L, 0x4000000000000400L, 0x4400004000L, 0x20010000000040L, 0x0L, 0x80000008000L, + 0xc04128c440L, 0x4020a90500000000L, false, 0, 0x0L), + 4 + ), + 631414 + ); + + // gentest-6393 + assertEqual( + perft( + Board(0xa08141280000L, 0x4000000000000400L, 0x6800L, 0x40010000000040L, 0x0L, 0x80000008000L, + 0x804128cc40L, 0x4040a90100002000L, true, 0, 0x0L), + 4 + ), + 705271 + ); + + // gentest-6394 + assertEqual( + perft( + Board(0xa08041280000L, 0x4000000000000400L, 0x100006000L, 0x40010000000040L, 0x0L, 0x400008000L, + 0x814128c440L, 0x4040a10400002000L, false, 0, 0x0L), + 4 + ), + 477975 + ); + + // gentest-6395 + assertEqual( + perft( + Board(0xa08041280000L, 0x4000000000000400L, 0x100002080L, 0x41000000000040L, 0x0L, 0x400008000L, + 0x81412884c0L, 0x4041a00400002000L, true, 0, 0x0L), + 4 + ), + 413729 + ); + + // gentest-6396 + assertEqual( + perft( + Board(0xa0c001280000L, 0x4000000000000400L, 0x42080L, 0x60000000000040L, 0x0L, 0x400008000L, + 0xc0012c84c0L, 0x4060a00400002000L, false, 0, 0x0L), + 4 + ), + 462483 + ); + + // gentest-6397 + assertEqual( + perft( + Board(0xa08001280000L, 0x4000000000000400L, 0x46000L, 0x8004000000040L, 0x0L, 0x400008000L, + 0x80012cc440L, 0x4008a04400002000L, true, 0, 0x0L), + 4 + ), + 654491 + ); + + // gentest-6398 + assertEqual( + perft( + Board(0xa08021080000L, 0x4000000000000400L, 0x40000042000L, 0x800004000000040L, 0x0L, 0x400008000L, + 0x480210c8440L, 0x4800a04400002000L, false, 0, 0x0L), + 4 + ), + 1007637 + ); + + // gentest-6399 + assertEqual( + perft( + Board(0xa08021080000L, 0x4000000000000400L, 0x200042000L, 0x8004000000040L, 0x0L, 0x80000008000L, + 0x82210c8440L, 0x4008a84000002000L, true, 0, 0x0L), + 4 + ), + 1076675 + ); + + // gentest-6400 + assertEqual( + perft( + Board(0xa08021080000L, 0x4000000000000400L, 0x200100800L, 0x8004040000000L, 0x0L, 0x80000008000L, + 0x8261088c00L, 0x4008a84000100000L, false, 0, 0x0L), + 4 + ), + 686721 + ); + + def batch16(): Unit = + // gentest-6401 + assertEqual( + perft( + Board(0xa0a001080000L, 0x4000000000000400L, 0x200002800L, 0x2004040000000L, 0x0L, 0x80000008000L, + 0xa241088c00L, 0x4002a84000002000L, true, 0, 0x0L), + 4 + ), + 742335 + ); + + // gentest-6402 + assertEqual( + perft( + Board(0xa0a001080000L, 0x10000000000400L, 0x8000000002800L, 0x2004040000000L, 0x0L, 0x80000004000L, + 0x800a041084c00L, 0x12a84000002000L, false, 0, 0x0L), + 4 + ), + 957059 + ); + + // gentest-6403 + assertEqual( + perft( + Board(0xa08001080000L, 0x400000000000400L, 0x8000000002800L, 0x2402000000000L, 0x0L, 0x80000004000L, + 0x8408001084c00L, 0x402a82000002000L, true, 0, 0x0L), + 4 + ), + 1181842 + ); + + // gentest-6404 + assertEqual( + perft( + Board(0xa08001080000L, 0x400000000000010L, 0x8000000002800L, 0x2004040000000L, 0x0L, 0x80000004000L, + 0x8008041084810L, 0x402a84000002000L, false, 0, 0x0L), + 4 + ), + 1021024 + ); + + // gentest-6405 + assertEqual( + perft( + Board(0xa08001080000L, 0x400000000200000L, 0x8000000000810L, 0x2004040000000L, 0x0L, 0x800004000L, + 0x8008041284800L, 0x402a04800000010L, true, 0, 0x0L), + 4 + ), + 613181 + ); + + // gentest-6406 + assertEqual( + perft( + Board(0xa08001080000L, 0x400000000800000L, 0x810L, 0x8000040000000L, 0x0L, 0x800004000L, + 0x8041884800L, 0x408a00800000010L, false, 0, 0x0L), + 4 + ), + 442775 + ); + + // gentest-6407 + assertEqual( + perft( + Board(0xa08001080000L, 0x400000000800000L, 0x400800L, 0x48000000000000L, 0x0L, 0x800004000L, + 0x40008001884800L, 0x408a00800400000L, true, 0, 0x0L), + 4 + ), + 472517 + ); + + // gentest-6408 + assertEqual( + perft( + Board(0xa08001080000L, 0x400000000800000L, 0x80000000800L, 0x8400000000000L, 0x0L, 0x800000020L, + 0x408001880820L, 0x408a80800000000L, false, 0, 0x0L), + 4 + ), + 549219 + ); + + // gentest-6409 + assertEqual( + perft( + Board(0xa08001080000L, 0x1000020000000L, 0x80000000800L, 0x8400000000000L, 0x0L, 0x40000000020L, + 0x408021080820L, 0x9ac0000000000L, true, 0, 0x0L), + 4 + ), + 398144 + ); + + // gentest-6410 + assertEqual( + perft( + Board(0xa08001080000L, 0x1000020000000L, 0x1000000010L, 0x8400000000000L, 0x0L, 0x40000001000L, + 0x408021081010L, 0x9a41000000000L, false, 0, 0x0L), + 4 + ), + 448597 + ); + + // gentest-6411 + assertEqual( + perft( + Board(0xa08001080000L, 0x220000000L, 0x1000000010L, 0xc0000000000000L, 0x0L, 0x40000001000L, + 0x40008021081010L, 0x80a41200000000L, true, 0, 0x0L), + 4 + ), + 475962 + ); + + // gentest-6412 + assertEqual( + perft( + Board(0xa08001080000L, 0x220000000L, 0x80100000000L, 0xc0000000000000L, 0x0L, 0x40000001000L, + 0x40008121081000L, 0x80ac0200000000L, false, 0, 0x0L), + 4 + ), + 289527 + ); + + // gentest-6413 + assertEqual( + perft( + Board(0xa08001080000L, 0x220000000L, 0x10000100000000L, 0x80400000000000L, 0x0L, 0x8000000001000L, + 0x408121081000L, 0x98a00200000000L, true, 0, 0x0L), + 4 + ), + 314946 + ); + + // gentest-6414 + assertEqual( + perft( + Board(0x80a001080000L, 0x220000000L, 0x10000100000000L, 0x80000000000020L, 0x0L, 0x8000000001000L, + 0x8121081020L, 0x98802200000000L, false, 0, 0x0L), + 4 + ), + 335079 + ); + + // gentest-6415 + assertEqual( + perft( + Board(0x80a001080000L, 0x220000000L, 0x2000000100000000L, 0x80000000000020L, 0x0L, 0x40000200000L, + 0x8121280020L, 0x2080842200000000L, true, 0, 0x0L), + 4 + ), + 395374 + ); + + // gentest-6416 + assertEqual( + perft( + Board(0x80a001080000L, 0x20010000L, 0x2000200000000000L, 0x80000000000020L, 0x0L, 0x40000200000L, + 0x208021280020L, 0x2080842000010000L, false, 0, 0x0L), + 4 + ), + 486279 + ); + + // gentest-6417 + assertEqual( + perft( + Board(0x80a001080000L, 0x11000L, 0x280000000000L, 0x20000000000020L, 0x0L, 0x40000200000L, + 0x208001281020L, 0x208c2000010000L, true, 0, 0x0L), + 4 + ), + 625109 + ); + + // gentest-6418 + assertEqual( + perft( + Board(0x80a001080000L, 0x11000L, 0x280000000000L, 0x40000000000020L, 0x0L, 0x40000000800L, + 0x208001081820L, 0x408c2000010000L, false, 0, 0x0L), + 4 + ), + 868881 + ); + + // gentest-6419 + assertEqual( + perft( + Board(0x80a001080000L, 0x4001000L, 0x200000000040000L, 0x40000000000020L, 0x0L, 0x40000000800L, + 0x80010c1820L, 0x240842004000000L, true, 0, 0x0L), + 4 + ), + 146003 + ); + + // gentest-6420 + assertEqual( + perft( + Board(0x80a100080000L, 0x4001000L, 0x200000000040000L, 0x4000000020L, 0x0L, 0x40000000010L, + 0x81000c1030L, 0x200846004000000L, false, 0, 0x0L), + 4 + ), + 480327 + ); + + // gentest-6421 + assertEqual( + perft( + Board(0x80a100080000L, 0x4001000L, 0x1000008000000L, 0x4000000020L, 0x0L, 0x4000000000010L, + 0x8108081030L, 0x5806004000000L, true, 0, 0x0L), + 4 + ), + 481845 + ); + + // gentest-6422 + assertEqual( + perft( + Board(0x80a100080000L, 0x4001000L, 0x200000100000L, 0x4020000000L, 0x0L, 0x4000000000010L, + 0x208120081010L, 0x4806004100000L, false, 0, 0x0L), + 4 + ), + 528186 + ); + + // gentest-6423 + assertEqual( + perft( + Board(0x80a100080000L, 0x20000001000L, 0x200000000004L, 0x4020000000L, 0x0L, 0x4000000002000L, + 0x208120083000L, 0x4826000000004L, true, 0, 0x0L), + 4 + ), + 410455 + ); + + // gentest-6424 + assertEqual( + perft( + Board(0x822000080000L, 0x1000L, 0x200000000004L, 0x8080000000L, 0x0L, 0x4000000002000L, + 0x220080083000L, 0x480a000000004L, false, 0, 0x0L), + 4 + ), + 100930 + ); + + // gentest-6425 + assertEqual( + perft( + Board(0x822000080000L, 0x1000L, 0x200000010000L, 0x8080000000L, 0x0L, 0x2000000004000L, + 0x220080085000L, 0x280a000010000L, true, 0, 0x0L), + 4 + ), + 293471 + ); + + // gentest-6426 + assertEqual( + perft( + Board(0x822000080000L, 0x1000L, 0x10001L, 0x80000000L, 0x0L, 0x2000000004000L, 0x20000085001L, + 0x2802080010000L, false, 0, 0x0L), + 4 + ), + 199566 + ); + + // gentest-6427 + assertEqual( + perft( + Board(0x2a000080000L, 0x1000L, 0x10001L, 0x80000000L, 0x0L, 0x40000000020L, 0x20000081021L, + 0x4a080010000L, true, 0, 0x0L), + 4 + ), + 175393 + ); + + // gentest-6428 + assertEqual( + perft( + Board(0x2a008000000L, 0x4L, 0x10001L, 0x8000L, 0x0L, 0x40000000020L, 0x20008000025L, 0x4a000018000L, + false, 0, 0x0L), + 4 + ), + 57364 + ); + + // gentest-6429 + assertEqual( + perft( + Board(0x2a008000000L, 0x100L, 0x2000001L, 0x8000L, 0x0L, 0x2000000000020L, 0x20008000121L, + 0x200a002008000L, true, 0, 0x0L), + 4 + ), + 38394 + ); + + // gentest-6430 + assertEqual( + perft( + Board(0x2a008000000L, 0x1000000L, 0x2000001L, 0x8000L, 0x0L, 0x400000000000020L, 0x20009000021L, + 0x40000a002008000L, false, 0, 0x0L), + 4 + ), + 44351 + ); + + // gentest-6431 + assertEqual( + perft( + Board(0x2a008000000L, 0x200L, 0x400000001L, 0x8000L, 0x0L, 0x200000000000020L, 0x20008000221L, + 0x20000a400008000L, true, 0, 0x0L), + 4 + ), + 37008 + ); + + // gentest-6432 + assertEqual( + perft( + Board(0x2a400000000L, 0x200L, 0x1L, 0x2000L, 0x0L, 0x200000000000040L, 0x20400000241L, + 0x20000a000002000L, false, 0, 0x0L), + 4 + ), + 15676 + ); + + // gentest-6433 + assertEqual( + perft( + Board(0x200a400000000L, 0x200L, 0x1L, 0x4000L, 0x0L, 0x200000000000040L, 0x2000400000241L, + 0x20000a000004000L, true, 0, 0x0L), + 4 + ), + 4216 + ); + + // gentest-6434 + assertEqual( + perft( + Board(0x200a400000000L, 0x200L, 0x1L, 0x8000L, 0x0L, 0x200000000000040L, 0x2000400000241L, + 0x20000a000008000L, false, 0, 0x0L), + 4 + ), + 16387 + ); + + // gentest-6435 + assertEqual( + perft( + Board(0x200a400000000L, 0x4000000L, 0x1L, 0x4000L, 0x0L, 0x200000000000040L, 0x2000404000041L, + 0x20000a000004000L, true, 0, 0x0L), + 4 + ), + 10563 + ); + + // gentest-6436 + assertEqual( + perft( + Board(0x200a400000000L, 0x20000000000L, 0x1L, 0x4000L, 0x0L, 0x4000000000080L, 0x2020400000081L, + 0x400a000004000L, false, 0, 0x0L), + 4 + ), + 85849 + ); + + // gentest-6437 + assertEqual( + perft( + Board(0x200a400000000L, 0x20000000000L, 0x200000000000L, 0x200L, 0x0L, 0x4000000000080L, + 0x2220400000080L, 0x400a000000200L, true, 0, 0x0L), + 4 + ), + 78545 + ); + + // gentest-6438 + assertEqual( + perft( + Board(0x200a400000000L, 0x1000000L, 0x8000000000000000L, 0x2000L, 0x0L, 0x4000000000080L, + 0x8002000401000080L, 0x400a000002000L, false, 0, 0x0L), + 4 + ), + 57147 + ); + + // gentest-6439 + assertEqual( + perft( + Board(0x200a400000000L, 0x1000000L, 0x8000000L, 0x2000L, 0x0L, 0x4000000000080L, 0x2000409000080L, + 0x400a000002000L, true, 0, 0x0L), + 4 + ), + 60343 + ); + + // gentest-6440 + assertEqual( + perft( + Board(0x200a400000000L, 0x1000L, 0x8000000L, 0x0L, 0x0L, 0x4000000000080L, 0x2000408001080L, + 0x400a000000000L, false, 0, 0x0L), + 4 + ), + 21648 + ); + + // gentest-6441 + assertEqual( + perft( + Board(0xa400000000L, 0x1000L, 0x1000000000L, 0x0L, 0x0L, 0x2000000000080L, 0x1400001080L, + 0x200a000000000L, true, 0, 0x0L), + 4 + ), + 20980 + ); + + // gentest-6442 + assertEqual( + perft( + Board(0xa400000000L, 0x8000000L, 0x1L, 0x0L, 0x0L, 0x400000000000080L, 0x408000081L, + 0x40000a000000000L, false, 0, 0x0L), + 4 + ), + 11271 + ); + + // gentest-6443 + assertEqual( + perft( + Board(0x4a000000000L, 0x8000000L, 0x1L, 0x0L, 0x0L, 0x10000000000080L, 0x40008000081L, + 0x1000a000000000L, true, 0, 0x0L), + 4 + ), + 10666 + ); + + // gentest-6444 + assertEqual( + perft( + Board(0x4a000000000L, 0x1000L, 0x1L, 0x0L, 0x0L, 0x20000000008000L, 0x40000009001L, 0x2000a000000000L, + false, 0, 0x0L), + 4 + ), + 18444 + ); + + // gentest-6445 + assertEqual( + perft( + Board(0x4a000000000L, 0x1000L, 0x1L, 0x0L, 0x0L, 0x20000000004000L, 0x40000005001L, 0x2000a000000000L, + true, 0, 0x0L), + 4 + ), + 23998 + ); + + // gentest-6446 + assertEqual( + perft( + Board(0x4a000000000L, 0x1000L, 0x1L, 0x0L, 0x0L, 0x100000004000L, 0x40000005001L, 0x10a000000000L, + false, 0, 0x0L), + 4 + ), + 19254 + ); + + // gentest-6447 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6448 + assertEqual( + perft( + Board(0xfd00024000bf00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x4001bffdL, 0xfffd000200000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 234589 + ); + + // gentest-6449 + assertEqual( + perft( + Board(0xed00125000af00L, 0x4200000000010040L, 0x2000010000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x5001affdL, 0xfbed011200000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 576432 + ); + + // gentest-6450 + assertEqual( + perft( + Board(0xed00125004ab00L, 0x4200000000000040L, 0x10000010024L, 0x8100000000000081L, 0x800000000000008L, + 0x1000000000001000L, 0x5004bbedL, 0xdbed011200010000L, false, 0, 0x8100000000000000L), + 4 + ), + 532394 + ); + + // gentest-6451 + assertEqual( + perft( + Board(0xcd20125004ab00L, 0x4200000000000040L, 0x10400000024L, 0x8100000000000081L, 0x800000000000008L, + 0x1000000000080000L, 0x500cabedL, 0xdbcd211600000000L, true, 0, 0x8100000000000000L), + 4 + ), + 476142 + ); + + // gentest-6452 + assertEqual( + perft( + Board(0xcd201250842b00L, 0x4200000000000040L, 0x90000000024L, 0x8100000000000081L, 0x800000000020000L, + 0x1000000000080000L, 0x508e2be5L, 0xdbcd291200000000L, false, 0, 0x8100000000000000L), + 4 + ), + 322729 + ); + + // gentest-6453 + assertEqual( + perft( + Board(0x4da01250842b00L, 0x210000000000040L, 0x90000000024L, 0x8100000000000081L, 0x800000000020000L, + 0x1000000000000400L, 0x50862fe5L, 0x9b5da91200000000L, true, 0, 0x8100000000000000L), + 4 + ), + 515374 + ); + + // gentest-6454 + assertEqual( + perft( + Board(0x49a41250842b00L, 0x210000000001000L, 0x90000000024L, 0x8100000000000081L, 0x800000800000000L, + 0x1000000000000400L, 0x850843fa5L, 0x9b59ad1200000000L, false, 0, 0x8100000000000000L), + 4 + ), + 757692 + ); + + // gentest-6455 + assertEqual( + perft( + Board(0x9e41250842b00L, 0x210000000001000L, 0x90000000024L, 0x4100000000008001L, 0x800000800000000L, + 0x1000000000000400L, 0x85084bf25L, 0x5b19ed1200000000L, true, 0, 0x100000000000000L), + 4 + ), + 610160 + ); + + // gentest-6456 + assertEqual( + perft( + Board(0x9e41252822900L, 0x210000000001000L, 0x10000000024L, 0x4100000000008001L, 0x800000800000000L, + 0x1000000000000400L, 0x85282bd25L, 0x5b19e51200000000L, false, 0, 0x100000000000000L), + 4 + ), + 450808 + ); + + // gentest-6457 + assertEqual( + perft( + Board(0x9e40272820900L, 0x200002000001000L, 0x10000000024L, 0x4100000000008001L, 0x800000800000000L, + 0x1000000000000400L, 0x852829d25L, 0x5b09e52220000000L, true, 0, 0x100000000000000L), + 4 + ), + 713414 + ); + + // gentest-6458 + assertEqual( + perft( + Board(0x1e40272820900L, 0x200000000401000L, 0x10000004004L, 0x4100000000008001L, 0x808000000000000L, + 0x1000000000000400L, 0x800005282dd05L, 0x5b01e50220400000L, false, 0, 0x100000000000000L), + 4 + ), + 87724 + ); + + // gentest-6459 + assertEqual( + perft( + Board(0x1e40272820900L, 0x200000000401000L, 0x10000000024L, 0x4100000000008001L, 0x100000000L, + 0x8000000000400L, 0x52829d25L, 0x4309e50320400000L, true, 0, 0x0L), + 4 + ), + 630929 + ); + + // gentest-6460 + assertEqual( + perft( + Board(0x1c42272820900L, 0x200000000440000L, 0x10000000024L, 0x4100000000002001L, 0x100000000L, + 0x8000000000400L, 0x52862d25L, 0x4309c52320400000L, false, 0, 0x0L), + 4 + ), + 996884 + ); + + // gentest-6461 + assertEqual( + perft( + Board(0x1c42272820900L, 0x200000000440000L, 0x10000080004L, 0x8100000000002001L, 0x100000000L, + 0x800000000000400L, 0x528e2d05L, 0x8b01c52320400000L, true, 0, 0x0L), + 4 + ), + 747303 + ); + + // gentest-6462 + assertEqual( + perft( + Board(0x1c42252a20900L, 0x200000000440000L, 0x10000000024L, 0x8100000000002001L, 0x100000000L, + 0x800000000080000L, 0x528e2925L, 0x8b01c52300600000L, false, 0, 0x0L), + 4 + ), + 507594 + ); + + // gentest-6463 + assertEqual( + perft( + Board(0x1c42252a20900L, 0x200000000401000L, 0x10000000024L, 0x8100000000002001L, 0x800000000000000L, + 0x400000000080000L, 0x528a3925L, 0x8f01c52200600000L, true, 0, 0x0L), + 4 + ), + 103018 + ); + + // gentest-6464 + assertEqual( + perft( + Board(0x1c42252a20900L, 0x200000000401000L, 0x10000000024L, 0x180000000002001L, 0x800000000000000L, + 0x400000000040000L, 0x52863925L, 0xf81c52200600000L, false, 0, 0x0L), + 4 + ), + 625174 + ); + + // gentest-6465 + assertEqual( + perft( + Board(0x1c42252a20900L, 0x200000000401000L, 0x10000000024L, 0x120000000004001L, 0x800000000000000L, + 0x400000000040000L, 0x52865925L, 0xf21c52200600000L, true, 0, 0x0L), + 4 + ), + 756455 + ); + + // gentest-6466 + assertEqual( + perft( + Board(0x1c42252a20900L, 0x200000000001000L, 0x10000000220L, 0x140000000400001L, 0x800000000000000L, + 0x400000000040000L, 0x52c61b21L, 0xf41c52200200000L, false, 0, 0x0L), + 4 + ), + 639246 + ); + + // gentest-6467 + assertEqual( + perft( + Board(0x144a252a20100L, 0x200000000001000L, 0x10000000220L, 0x140000000400001L, 0x0L, + 0x400000000000800L, 0x52c21b21L, 0x74145a200200000L, true, 0, 0x0L), + 4 + ), + 504502 + ); + + // gentest-6468 + assertEqual( + perft( + Board(0x144a252a20100L, 0x200000000001000L, 0x2000000040020L, 0x140000000400010L, 0x0L, + 0x400000000000800L, 0x52c61930L, 0x74344a200200000L, false, 0, 0x0L), + 4 + ), + 483361 + ); + + // gentest-6469 + assertEqual( + perft( + Board(0x144a212820100L, 0x200000000001000L, 0x2000000040020L, 0x140000000400010L, 0x0L, + 0x400000000000800L, 0x8012c61920L, 0x743442200000010L, true, 0, 0x0L), + 4 + ), + 520050 + ); + + // gentest-6470 + assertEqual( + perft( + Board(0x144a212820100L, 0x8000000001000L, 0x2000000040020L, 0x140000080000010L, 0x0L, + 0x400000000000800L, 0x8092861920L, 0x54b442200000010L, false, 0, 0x0L), + 4 + ), + 429276 + ); + + // gentest-6471 + assertEqual( + perft( + Board(0x144a202820100L, 0x8000000001000L, 0x2000000040020L, 0x140000080000001L, 0x0L, + 0x4000000000800L, 0xa082861920L, 0x14f440200000001L, true, 0, 0x0L), + 4 + ), + 805117 + ); + + // gentest-6472 + assertEqual( + perft( + Board(0x144a203820000L, 0x400001000L, 0x2000000044000L, 0x140000080000001L, 0x0L, 0x4000000000800L, + 0xa083865800L, 0x147440600000001L, false, 0, 0x0L), + 4 + ), + 1343863 + ); + + // gentest-6473 + assertEqual( + perft( + Board(0x144a203820000L, 0x408000000L, 0x2000000044000L, 0x440000080000002L, 0x0L, 0x4000000000800L, + 0xa08b864800L, 0x447440600000002L, true, 0, 0x0L), + 4 + ), + 1001199 + ); + + // gentest-6474 + assertEqual( + perft( + Board(0x144a203820000L, 0x408000000L, 0x2000800040000L, 0x440000080000002L, 0x0L, 0x80000001000L, + 0xa88b861000L, 0x4434c0600000002L, false, 0, 0x0L), + 4 + ), + 1481545 + ); + + // gentest-6475 + assertEqual( + perft( + Board(0x1448203820000L, 0x8000008000000L, 0x2000800040000L, 0x440000080000002L, 0x0L, + 0x4000000001000L, 0x40888b861000L, 0x44f040200000002L, true, 0, 0x0L), + 4 + ), + 1039118 + ); + + // gentest-6476 + assertEqual( + perft( + Board(0x458203820000L, 0x8000008000000L, 0x2000000004800L, 0x440000080000002L, 0x0L, 0x4000000001000L, + 0x40808b825800L, 0x44e050200000002L, false, 0, 0x0L), + 4 + ), + 831425 + ); + + // gentest-6477 + assertEqual( + perft( + Board(0x458302820000L, 0x8000008000000L, 0x100000000004800L, 0x1040000080000002L, 0x0L, + 0x4000000001000L, 0x40818a825800L, 0x114c050200000002L, true, 0, 0x0L), + 4 + ), + 175693 + ); + + // gentest-6478 + assertEqual( + perft( + Board(0x458302820000L, 0x8100000000000L, 0x100000000004800L, 0x1040000040000002L, 0x0L, + 0x2000000001000L, 0x508142825800L, 0x114a050200000002L, false, 0, 0x0L), + 4 + ), + 673950 + ); + + // gentest-6479 + assertEqual( + perft( + Board(0x458302820000L, 0x8100000000000L, 0x100000000004004L, 0x4800000040000002L, 0x0L, + 0x2000000001000L, 0x508142825004L, 0x490a050200000002L, true, 0, 0x0L), + 4 + ), + 667283 + ); + + // gentest-6480 + assertEqual( + perft( + Board(0x458302820000L, 0x40200000000000L, 0x100000000004004L, 0x4800000040000002L, 0x0L, + 0x2000000000010L, 0x40408142824014L, 0x4902250200000002L, false, 0, 0x0L), + 4 + ), + 350927 + ); + + // gentest-6481 + assertEqual( + perft( + Board(0x458302820000L, 0x40200000000000L, 0x100000000200004L, 0x4000000040000802L, 0x0L, + 0x2000000000010L, 0x40408142a20014L, 0x4102250200000802L, true, 0, 0x0L), + 4 + ), + 515146 + ); + + // gentest-6482 + assertEqual( + perft( + Board(0x458302820000L, 0x40200000000000L, 0x100000000200004L, 0x4008000010000002L, 0x0L, + 0x2000000000010L, 0x40408112a20014L, 0x410a250200000002L, false, 0, 0x0L), + 4 + ), + 552230 + ); + + // gentest-6483 + assertEqual( + perft( + Board(0x458302820000L, 0x40000800000000L, 0x100000000200004L, 0x4008100000000002L, 0x0L, + 0x200000000000010L, 0x40508102a20014L, 0x4308050a00000002L, true, 0, 0x0L), + 4 + ), + 559745 + ); + + // gentest-6484 + assertEqual( + perft( + Board(0x458302820000L, 0x40000000040000L, 0x100000000200004L, 0x4008100000000002L, 0x0L, + 0x200000000000010L, 0x40508102a20014L, 0x4308050200040002L, false, 0, 0x0L), + 4 + ), + 578201 + ); + + // gentest-6485 + assertEqual( + perft( + Board(0x458302820000L, 0x40000000040000L, 0x100000000200004L, 0x4000200008000002L, 0x0L, + 0x400000000000010L, 0x40608102a20014L, 0x4500050208040002L, true, 0, 0x0L), + 4 + ), + 453000 + ); + + // gentest-6486 + assertEqual( + perft( + Board(0xc50302820000L, 0x100000040000L, 0x100000000200004L, 0x4000280000000002L, 0x0L, + 0x400000000000010L, 0xf00102a20014L, 0x45000d0200040002L, false, 0, 0x0L), + 4 + ), + 522041 + ); + + // gentest-6487 + assertEqual( + perft( + Board(0x80410702820000L, 0x100000040000L, 0x2000000200004L, 0x4000280000000002L, 0x0L, + 0x400000000000010L, 0x80700102a20014L, 0x4402090600040002L, true, 0, 0x0L), + 4 + ), + 1063873 + ); + + // gentest-6488 + assertEqual( + perft( + Board(0x80410702820000L, 0x20040000L, 0x2000000200004L, 0x400020000000000aL, 0x0L, 0x400000000002000L, + 0x80600122a22004L, 0x440201060004000aL, false, 0, 0x0L), + 4 + ), + 1593636 + ); + + // gentest-6489 + assertEqual( + perft( + Board(0x80410702820000L, 0x820000000L, 0x2000000200004L, 0x400008000000000aL, 0x0L, 0x4000000002000L, + 0x80480122a22004L, 0x4006010e0000000aL, true, 0, 0x0L), + 4 + ), + 1414547 + ); + + // gentest-6490 + assertEqual( + perft( + Board(0x80010702820000L, 0x800000200L, 0x2000000200004L, 0x48000000000aL, 0x0L, 0x4000000002000L, + 0x80080102a22204L, 0x6410e0000000aL, false, 0, 0x0L), + 4 + ), + 1210817 + ); + + // gentest-6491 + assertEqual( + perft( + Board(0x80010702820000L, 0x20000200L, 0x2000000200004L, 0x400020000000000aL, 0x0L, 0x4000000002000L, + 0x80200102a22204L, 0x400601062000000aL, true, 0, 0x0L), + 4 + ), + 2118506 + ); + + // gentest-6492 + assertEqual( + perft( + Board(0x80010702820000L, 0x20000200L, 0x2000040000004L, 0x400008000000000aL, 0x0L, 0x200000000002000L, + 0x80080142822204L, 0x420201062000000aL, false, 0, 0x0L), + 4 + ), + 1885514 + ); + + // gentest-6493 + assertEqual( + perft( + Board(0x80010702820000L, 0x100200L, 0xa000000000004L, 0x400008000000000aL, 0x0L, 0x200000000002000L, + 0x88080102822204L, 0x420201060010000aL, true, 0, 0x0L), + 4 + ), + 1720668 + ); + + // gentest-6494 + assertEqual( + perft( + Board(0x80010702820000L, 0x2000000200L, 0xa000000000004L, 0x400000400000000aL, 0x0L, + 0x200000000002000L, 0x88004102822204L, 0x420201260000000aL, false, 0, 0x0L), + 4 + ), + 1521076 + ); + + // gentest-6495 + assertEqual( + perft( + Board(0x80010702820000L, 0x80000000200L, 0x8000000004004L, 0x400000800000000aL, 0x0L, + 0x200000000002000L, 0x88008102822204L, 0x420009060000400aL, true, 0, 0x0L), + 4 + ), + 1689140 + ); + + // gentest-6496 + assertEqual( + perft( + Board(0x80010502820000L, 0x80000000200L, 0x4024L, 0x4000008000000012L, 0x0L, 0x200000000002000L, + 0x80008102822224L, 0x4200090400004012L, false, 0, 0x0L), + 4 + ), + 1760858 + ); + + // gentest-6497 + assertEqual( + perft( + Board(0x80010502820000L, 0x400000000000200L, 0x5004L, 0x4000008000000042L, 0x0L, 0x200000000002000L, + 0x80008102823204L, 0x4600010400004042L, true, 0, 0x0L), + 4 + ), + 1444864 + ); + + // gentest-6498 + assertEqual( + perft( + Board(0x80010502820000L, 0x10000000000200L, 0x8000004004L, 0x4000004000000042L, 0x0L, + 0x200000000002000L, 0x8000c102822204L, 0x4210010400004042L, false, 0, 0x0L), + 4 + ), + 1439723 + ); + + // gentest-6499 + assertEqual( + perft( + Board(0x80010502820000L, 0x10000000000200L, 0x8000004004L, 0x400000400041L, 0x0L, 0x200000000002000L, + 0x80008102c22204L, 0x210410400004041L, true, 0, 0x0L), + 4 + ), + 1407239 + ); + + // gentest-6500 + assertEqual( + perft( + Board(0x80010502820000L, 0x10000000000200L, 0x8800000800L, 0x400000040041L, 0x0L, 0x200000000002000L, + 0x80008102862a00L, 0x210410c00000041L, false, 0, 0x0L), + 4 + ), + 2183986 + ); + + // gentest-6501 + assertEqual( + perft( + Board(0x80010502820000L, 0x400000000000200L, 0x800200800L, 0x400000040021L, 0x0L, 0x200000000002000L, + 0x80000102a62a00L, 0x600410c00000021L, true, 0, 0x0L), + 4 + ), + 120611 + ); + + // gentest-6502 + assertEqual( + perft( + Board(0x80010502820000L, 0x400000000000200L, 0x4800200000L, 0x400000040081L, 0x0L, 0x200000000001000L, + 0x80004102a61200L, 0x600410c00000081L, false, 0, 0x0L), + 4 + ), + 2061204 + ); + + // gentest-6503 + assertEqual( + perft( + Board(0x80010502820000L, 0x400000000000200L, 0x4000004000200000L, 0x20000100081L, 0x0L, + 0x200000000001000L, 0x80004102b21200L, 0x4600030400000081L, true, 0, 0x0L), + 4 + ), + 1991065 + ); + + // gentest-6504 + assertEqual( + perft( + Board(0x80010582020000L, 0x400000000000200L, 0x4000004000200000L, 0x10000200000000a0L, 0x0L, + 0x200000000001000L, 0x1080004182221200L, 0x46000304000000a0L, false, 0, 0x0L), + 4 + ), + 1277753 + ); + + // gentest-6505 + assertEqual( + perft( + Board(0x80010582020000L, 0x400000000000200L, 0x20200000200000L, 0x1000020000008020L, 0x0L, + 0x200000000001000L, 0x1080200182221200L, 0x620030400008020L, true, 0, 0x0L), + 4 + ), + 161531 + ); + + // gentest-6506 + assertEqual( + perft( + Board(0x80010582020000L, 0x400000000000200L, 0x200004200000L, 0x20000009000L, 0x0L, + 0x200000000000020L, 0x80200182221220L, 0x600030404008000L, false, 0, 0x0L), + 4 + ), + 683515 + ); + + // gentest-6507 + assertEqual( + perft( + Board(0x80010582020000L, 0x1000000000200L, 0x200000001000L, 0x20000008000L, 0x0L, 0x200000000000020L, + 0x80200182021220L, 0x201030400008000L, true, 0, 0x0L), + 4 + ), + 357166 + ); + + // gentest-6508 + assertEqual( + perft( + Board(0x80010582020000L, 0x1000000000004L, 0x200000001000L, 0x40000008000L, 0x0L, 0x200000000000020L, + 0x80200182021024L, 0x201050400008000L, false, 0, 0x0L), + 4 + ), + 261623 + ); + + // gentest-6509 + assertEqual( + perft( + Board(0x80010186020000L, 0x1000000000004L, 0x200000001000L, 0x400000000008000L, 0x0L, + 0x200000000000040L, 0x80200182021044L, 0x601010004008000L, true, 0, 0x0L), + 4 + ), + 325802 + ); + + // gentest-6510 + assertEqual( + perft( + Board(0x80010182060000L, 0x1000000000004L, 0x200000200000L, 0x400000000008000L, 0x0L, + 0x200000000000040L, 0x80200182220044L, 0x601010000048000L, false, 0, 0x0L), + 4 + ), + 355015 + ); + + // gentest-6511 + assertEqual( + perft( + Board(0x80010182060000L, 0x1000000000004L, 0x200010000000L, 0x408000000000000L, 0x0L, + 0x200000000000040L, 0x80200192020044L, 0x609010000040000L, true, 0, 0x0L), + 4 + ), + 583560 + ); + + // gentest-6512 + assertEqual( + perft( + Board(0x80010182060000L, 0x1000000000004L, 0x200010000000L, 0xc00000000000000L, 0x0L, + 0x200000000008000L, 0x80200192028004L, 0xe01010000040000L, false, 0, 0x0L), + 4 + ), + 402631 + ); + + // gentest-6513 + assertEqual( + perft( + Board(0x10182060000L, 0x1000000000004L, 0x200010000000L, 0x8000000000080000L, 0x0L, + 0x200000000008000L, 0x200192028004L, 0x82010100000c0000L, true, 0, 0x0L), + 4 + ), + 372599 + ); + + // gentest-6514 + assertEqual( + perft( + Board(0x10182020000L, 0x1000000000004L, 0x400000040000L, 0x8000000000080000L, 0x0L, 0x4000000008000L, + 0x400182068004L, 0x8005010000080000L, false, 0, 0x0L), + 4 + ), + 498036 + ); + + // gentest-6515 + assertEqual( + perft( + Board(0x10182020000L, 0x1000000000100L, 0x400000040000L, 0x8000000800000000L, 0x0L, 0x40000008000L, + 0x400182068100L, 0x8001050800000000L, true, 0, 0x0L), + 4 + ), + 470032 + ); + + // gentest-6516 + assertEqual( + perft( + Board(0x10380020000L, 0x1000000000100L, 0x20000000040000L, 0x8000000800000000L, 0x0L, + 0x2000000008000L, 0x20000380068100L, 0x8003010800000000L, false, 0, 0x0L), + 4 + ), + 557879 + ); + + // gentest-6517 + assertEqual( + perft( + Board(0x10380020000L, 0x1000000000004L, 0x20000000040000L, 0x2000008000000000L, 0x0L, + 0x2000000008000L, 0x20000380068004L, 0x2003018000000000L, true, 0, 0x0L), + 4 + ), + 468713 + ); + + // gentest-6518 + assertEqual( + perft( + Board(0x10380020000L, 0x1000000000004L, 0x808000000L, 0x2000008000000000L, 0x0L, 0x400000000008000L, + 0xb88028004L, 0x2401018000000000L, false, 0, 0x0L), + 4 + ), + 599758 + ); + + // gentest-6519 + assertEqual( + perft( + Board(0x10380020000L, 0x1000000000004L, 0x1800000000L, 0x8800000000000000L, 0x0L, 0x400000000008000L, + 0x1b80028004L, 0x8c01010000000000L, true, 0, 0x0L), + 4 + ), + 370464 + ); + + // gentest-6520 + assertEqual( + perft( + Board(0x10382000000L, 0x1000000001000L, 0x1800000000L, 0x8008000000000000L, 0x0L, 0x400000000008000L, + 0x1b82009000L, 0x8409010000000000L, false, 0, 0x0L), + 4 + ), + 535355 + ); + + // gentest-6521 + assertEqual( + perft( + Board(0x10382000000L, 0x1000000001000L, 0x100001000000000L, 0x2080000000000000L, 0x0L, + 0x400000000008000L, 0x100001382009000L, 0x2481010000000000L, true, 0, 0x0L), + 4 + ), + 577649 + ); + + // gentest-6522 + assertEqual( + perft( + Board(0x10382000000L, 0x1000000001000L, 0x100000008000000L, 0x80200000000000L, 0x0L, + 0x400000000800000L, 0x10000038a801000L, 0x481210000000000L, false, 0, 0x0L), + 4 + ), + 617224 + ); + + // gentest-6523 + assertEqual( + perft( + Board(0x10382000000L, 0x1000L, 0x101000000000000L, 0x80200000000000L, 0x0L, 0x400000000800000L, + 0x101000382801000L, 0x480210000000000L, true, 0, 0x0L), + 4 + ), + 446887 + ); + + // gentest-6524 + assertEqual( + perft( + Board(0x10182000000L, 0x1000L, 0x100000000002000L, 0x2200000000000L, 0x0L, 0x400000000800000L, + 0x100010182803000L, 0x402200000000000L, false, 0, 0x0L), + 4 + ), + 391634 + ); + + // gentest-6525 + assertEqual( + perft( + Board(0x10182000000L, 0x1000L, 0x100000000000040L, 0x200000080000L, 0x0L, 0x400000000800000L, + 0x100010182801040L, 0x400200000080000L, true, 0, 0x0L), + 4 + ), + 101504 + ); + + // gentest-6526 + assertEqual( + perft( + Board(0x10380000000L, 0x1000L, 0x100000000000040L, 0x8200000000000L, 0x0L, 0x400000000008000L, + 0x100010380009040L, 0x408200000000000L, false, 0, 0x0L), + 4 + ), + 465826 + ); + + // gentest-6527 + assertEqual( + perft( + Board(0x10380000000L, 0x8000000L, 0x100000000000040L, 0x800000000002000L, 0x0L, 0x400000000008000L, + 0x100010388008040L, 0xc00000000002000L, true, 0, 0x0L), + 4 + ), + 45832 + ); + + // gentest-6528 + assertEqual( + perft( + Board(0x10380000000L, 0x8000000L, 0x800000040L, 0x2000L, 0x0L, 0x400000000000080L, 0x10b880000c0L, + 0x400000000002000L, false, 0, 0x0L), + 4 + ), + 148029 + ); + + // gentest-6529 + assertEqual( + perft( + Board(0x10380000000L, 0x8000000L, 0x4000000000000040L, 0x2000000000L, 0x0L, 0x800000000000080L, + 0x40000103880000c0L, 0x800002000000000L, true, 0, 0x0L), + 4 + ), + 120086 + ); + + // gentest-6530 + assertEqual( + perft( + Board(0x1010280000000L, 0x8000000L, 0x4000000000000040L, 0x2000000000L, 0x0L, 0x1000000000000080L, + 0x40010102880000c0L, 0x1000002000000000L, false, 0, 0x0L), + 4 + ), + 146161 + ); + + // gentest-6531 + assertEqual( + perft( + Board(0x1010280000000L, 0x8000000L, 0x4000000000000040L, 0x20000000000000L, 0x0L, 0x2000000000004000L, + 0x4001010288004040L, 0x2020000000000000L, true, 0, 0x0L), + 4 + ), + 107433 + ); + + // gentest-6532 + assertEqual( + perft( + Board(0x1010280000000L, 0x1000L, 0x80000000000040L, 0x2000000000L, 0x0L, 0x2000000000004000L, + 0x81010280005040L, 0x2000002000000000L, false, 0, 0x0L), + 4 + ), + 166628 + ); + + // gentest-6533 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6534 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x200800000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xbfff800000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 197799 + ); + + // gentest-6535 + assertEqual( + perft( + Board(0xd728000000ff00L, 0x200800000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x1fffdL, 0xbfd7a80000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 343589 + ); + + // gentest-6536 + assertEqual( + perft( + Board(0xd52a002010cf00L, 0x200800000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2011cffdL, 0xbfd5aa0000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 691202 + ); + + // gentest-6537 + assertEqual( + perft( + Board(0xd522082014cb00L, 0x810000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x2015cbfdL, 0xbdd5a30800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 748878 + ); + + // gentest-6538 + assertEqual( + perft( + Board(0xd1260820944b00L, 0x810000010040L, 0x2400000004000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x24954bddL, 0xbdd1a70800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 959297 + ); + + // gentest-6539 + assertEqual( + perft( + Board(0xd1260820d40b00L, 0x12000010040L, 0x2008000004000004L, 0x8100000000000081L, 0x800000000000008L, + 0x1000000000000010L, 0x24d50bddL, 0xb9d9272800000000L, true, 0, 0x8100000000000081L), + 4 + ), + 787298 + ); + + // gentest-6540 + assertEqual( + perft( + Board(0x91264820dc0300L, 0x12000000440L, 0x2008000004000004L, 0x8100000000000081L, 0x800000000000008L, + 0x1000000000000010L, 0x24dc07ddL, 0xb999276800000000L, false, 0, 0x8100000000000081L), + 4 + ), + 964857 + ); + + // gentest-6541 + assertEqual( + perft( + Board(0x91264820dc0300L, 0x200002000010040L, 0x48000004000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x24dd03ddL, 0x9bd9266800000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 846924 + ); + + // gentest-6542 + assertEqual( + perft( + Board(0x81364820de0100L, 0x200002200000040L, 0x48000004000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x224de01ddL, 0x9bc9366800000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 897649 + ); + + // gentest-6543 + assertEqual( + perft( + Board(0x80374820de0100L, 0x200002200000040L, 0x2008000004000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000020L, 0x224de01edL, 0xbb88376800000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 945464 + ); + + // gentest-6544 + assertEqual( + perft( + Board(0x80334c20de0100L, 0x200002200000040L, 0x2008000004000004L, 0x8100000000000081L, + 0x800000000002000L, 0x1000000000000020L, 0x224de21e5L, 0xbb88336c00000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 937174 + ); + + // gentest-6545 + assertEqual( + perft( + Board(0x80334c20de0100L, 0x240000200000040L, 0x2008000004000800L, 0x8001000000000081L, + 0x800000000002000L, 0x1000000000000020L, 0x224de29e1L, 0xbac9334c00000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 742729 + ); + + // gentest-6546 + assertEqual( + perft( + Board(0x80330c609e0100L, 0x240000200000040L, 0x2008000004000800L, 0x8001000000000081L, + 0x800000000002000L, 0x1000000000004000L, 0x2449e69c1L, 0xbac9330c20000000L, false, 0, + 0x8000000000000000L), + 4 + ), + 845428 + ); + + // gentest-6547 + assertEqual( + perft( + Board(0x80132c609f0000L, 0x240000200000040L, 0x8080004000800L, 0x8001000000000081L, + 0x800000000002000L, 0x1000000000004000L, 0x2449f68c1L, 0x9ac91b2c20000000L, true, 0, + 0x8000000000000000L), + 4 + ), + 1238914 + ); + + // gentest-6548 + assertEqual( + perft( + Board(0x80132c609f0000L, 0x240000200000040L, 0x8080004000800L, 0x4001000000000088L, + 0x800000080000000L, 0x1000000000004000L, 0x2c49f48c8L, 0x5ac91b2c20000000L, false, 0, 0x0L), + 4 + ), + 1068637 + ); + + // gentest-6549 + assertEqual( + perft( + Board(0x80132c609f0000L, 0x240000200000040L, 0xc000004000800L, 0x2001000000000088L, + 0x800000080000000L, 0x1000000000008000L, 0x2c49f88c8L, 0x3acd132c20000000L, true, 0, 0x0L), + 4 + ), + 656195 + ); + + // gentest-6550 + assertEqual( + perft( + Board(0x80132c68970000L, 0x240000200000040L, 0xc000004000010L, 0x2001000000000088L, 0x200080000000L, + 0x1000000000008000L, 0x2cc9780d8L, 0x32cd332c20000000L, false, 0, 0x0L), + 4 + ), + 1053531 + ); + + // gentest-6551 + assertEqual( + perft( + Board(0x80132c68970000L, 0x240000200000040L, 0xc000004000010L, 0x2001000000000088L, 0x8080000000L, + 0x1000000000004000L, 0x2cc9740d8L, 0x32cd13ac20000000L, true, 0, 0x0L), + 4 + ), + 905188 + ); + + // gentest-6552 + assertEqual( + perft( + Board(0x80033c68970000L, 0x240000200000040L, 0xc000004000800L, 0x2001000000000088L, 0x8080000000L, + 0x1000000000200000L, 0x2ccb708c8L, 0x32cd03bc20000000L, false, 0, 0x0L), + 4 + ), + 813289 + ); + + // gentest-6553 + assertEqual( + perft( + Board(0x80033868970000L, 0x241000000000040L, 0xc000004000800L, 0x2000000000000088L, 0x80000000L, + 0x1000000000200000L, 0x1000044b708c8L, 0x32cc0338a8000000L, true, 0, 0x0L), + 4 + ), + 966238 + ); + + // gentest-6554 + assertEqual( + perft( + Board(0x80031828970000L, 0x201002000000040L, 0xc000200000800L, 0x2000000000000088L, 0x80000000L, + 0x1000000000200000L, 0x1000200b708c8L, 0x328c0338a8000000L, false, 0, 0x0L), + 4 + ), + 780525 + ); + + // gentest-6555 + assertEqual( + perft( + Board(0x831828970000L, 0x201002000000040L, 0xc000200000800L, 0x2000000000a0L, 0x80000000L, + 0x1000000000200000L, 0x1000200b708e0L, 0x120ca338a8000000L, true, 0, 0x0L), + 4 + ), + 781406 + ); + + // gentest-6556 + assertEqual( + perft( + Board(0x831838870000L, 0x201080000000040L, 0xc000200000800L, 0x200000000082L, 0x80000000L, + 0x1000000000200000L, 0x1000210a708c2L, 0x120cab18a8000000L, false, 0, 0x0L), + 4 + ), + 610727 + ); + + // gentest-6557 + assertEqual( + perft( + Board(0x831838870000L, 0x201080000000040L, 0xc000000001800L, 0x200000000082L, 0x10L, + 0x800000000200000L, 0x1000010a718c2L, 0xa0cab1828000010L, true, 0, 0x0L), + 4 + ), + 858141 + ); + + // gentest-6558 + assertEqual( + perft( + Board(0x831838870000L, 0x1201000000000040L, 0xc000000001800L, 0x200000008008L, 0x10L, + 0x800000000200000L, 0x1000010a79848L, 0x1a0ca31828000010L, false, 0, 0x0L), + 4 + ), + 546662 + ); + + // gentest-6559 + assertEqual( + perft( + Board(0x831838870000L, 0x1201000000000040L, 0x4040000001010L, 0x2000008008L, 0x0L, 0x800000000200000L, + 0x1000010a79058L, 0x1a04873828000000L, true, 0, 0x0L), + 4 + ), + 460542 + ); + + // gentest-6560 + assertEqual( + perft( + Board(0x833828870000L, 0x1201000000000040L, 0x6000000001010L, 0x8001L, 0x0L, 0x800000000200000L, + 0x1002000a79051L, 0x1a06831828000000L, false, 0, 0x0L), + 4 + ), + 235179 + ); + + // gentest-6561 + assertEqual( + perft( + Board(0x833828870000L, 0x1001200000000040L, 0x6000000001010L, 0x8001L, 0x0L, 0x800000000002000L, + 0x100200087b051L, 0x1806a31828000000L, true, 0, 0x0L), + 4 + ), + 338259 + ); + + // gentest-6562 + assertEqual( + perft( + Board(0x833829860000L, 0x1001200000000040L, 0x6000000001010L, 0x81L, 0x0L, 0x10000000002000L, + 0x10020018630d1L, 0x1016a31828000000L, false, 0, 0x0L), + 4 + ), + 427687 + ); + + // gentest-6563 + assertEqual( + perft( + Board(0x832839860000L, 0x1001200000000040L, 0x404000004000010L, 0x81L, 0x0L, 0x10000000002000L, + 0x10020058620d1L, 0x1414a30838000000L, true, 0, 0x0L), + 4 + ), + 405918 + ); + + // gentest-6564 + assertEqual( + perft( + Board(0x822839860000L, 0x1001200000000040L, 0x404000004000010L, 0x81L, 0x0L, 0x80000002000L, + 0x10020058620d1L, 0x1404aa0838000000L, false, 0, 0x0L), + 4 + ), + 305016 + ); + + // gentest-6565 + assertEqual( + perft( + Board(0x822831860000L, 0x1000240000000040L, 0x4010004000010L, 0x81L, 0x0L, 0x80000002000L, + 0x420058220d1L, 0x1004ab0830040000L, true, 0, 0x0L), + 4 + ), + 403045 + ); + + // gentest-6566 + assertEqual( + perft( + Board(0x822831860000L, 0x1000240000000040L, 0x4010004100000L, 0x81L, 0x0L, 0x400002000L, + 0x420059220c1L, 0x1004a30c30040000L, false, 0, 0x0L), + 4 + ), + 75099 + ); + + // gentest-6567 + assertEqual( + perft( + Board(0x822811860000L, 0x1000200000000040L, 0x4010004000000L, 0x81L, 0x0L, 0x40000100000L, + 0x20059200c1L, 0x1004a70810040000L, true, 0, 0x0L), + 4 + ), + 296410 + ); + + // gentest-6568 + assertEqual( + perft( + Board(0x822811860000L, 0x1000200000000040L, 0x800010004000000L, 0x180L, 0x0L, 0x40000001000L, + 0x20058211c0L, 0x1800a70810040000L, false, 0, 0x0L), + 4 + ), + 218697 + ); + + // gentest-6569 + assertEqual( + perft( + Board(0x2a811860000L, 0x1000200000000040L, 0x800010004000000L, 0x480L, 0x0L, 0x400001000L, + 0x20058214c0L, 0x1800238c10040000L, true, 0, 0x0L), + 4 + ), + 166280 + ); + + // gentest-6570 + assertEqual( + perft( + Board(0x2a811860000L, 0x5000000000000040L, 0x800010000000000L, 0x480L, 0x0L, 0x400000008L, + 0x120018204c8L, 0x5800028c10040000L, false, 0, 0x0L), + 4 + ), + 237142 + ); + + // gentest-6571 + assertEqual( + perft( + Board(0xaa11860000L, 0x4000200000000040L, 0x800010000000000L, 0x8400L, 0x0L, 0x400000008L, + 0x12001828448L, 0x4800208e10040000L, true, 0, 0x0L), + 4 + ), + 228709 + ); + + // gentest-6572 + assertEqual( + perft( + Board(0xaa11860000L, 0x4000200000000040L, 0x30000000000L, 0x8400L, 0x0L, 0x400000008L, 0x12001828448L, + 0x4000228e10040000L, false, 0, 0x0L), + 4 + ), + 232951 + ); + + // gentest-6573 + assertEqual( + perft( + Board(0xaa11820400L, 0x5000000000000040L, 0x30000000000L, 0x9000L, 0x0L, 0x400000008L, 0x12001829048L, + 0x5000028e10000400L, true, 0, 0x0L), + 4 + ), + 39801 + ); + + // gentest-6574 + assertEqual( + perft( + Board(0xaa11820400L, 0x5000000000000040L, 0x800010000000000L, 0x1080L, 0x0L, 0x400000004L, + 0x120018210c4L, 0x5800008e10000400L, false, 0, 0x0L), + 4 + ), + 209345 + ); + + // gentest-6575 + assertEqual( + perft( + Board(0xaa11820400L, 0x5000000000000040L, 0x10080000000L, 0x9000L, 0x0L, 0x2000004L, 0x12001829044L, + 0x5000008a92000400L, true, 0, 0x0L), + 4 + ), + 177587 + ); + + // gentest-6576 + assertEqual( + perft( + Board(0xab10820400L, 0x5000000000000040L, 0x10000400000L, 0x3000L, 0x0L, 0x2000004L, 0x12100823044L, + 0x5000008a12400400L, false, 0, 0x0L), + 4 + ), + 179791 + ); + + // gentest-6577 + assertEqual( + perft( + Board(0xab00920400L, 0x4000200000000040L, 0x10000400000L, 0x201000L, 0x0L, 0x2000004L, 0x12100a21044L, + 0x4000208a02500400L, true, 0, 0x0L), + 4 + ), + 161101 + ); + + // gentest-6578 + assertEqual( + perft( + Board(0xab00820400L, 0x4000200000000040L, 0x10000008000L, 0x100020L, 0x0L, 0x2000004L, 0x12100920064L, + 0x4000208a02008400L, false, 0, 0x0L), + 4 + ), + 220368 + ); + + // gentest-6579 + assertEqual( + perft( + Board(0xab00820400L, 0x80800000000040L, 0x10000008000L, 0x30L, 0x0L, 0x2000004L, 0x12100820074L, + 0x80808a02008400L, true, 0, 0x0L), + 4 + ), + 197274 + ); + + // gentest-6580 + assertEqual( + perft( + Board(0xab00820400L, 0xa0000000000040L, 0x2000000008000L, 0x10000020L, 0x0L, 0x2000004L, + 0x2002110820064L, 0xa0008a02008400L, false, 0, 0x0L), + 4 + ), + 114143 + ); + + // gentest-6581 + assertEqual( + perft( + Board(0xa902820400L, 0xa0000000000040L, 0x2000000008000L, 0x1020L, 0x0L, 0x40004L, 0x2002100821064L, + 0xa0008802048400L, true, 0, 0x0L), + 4 + ), + 199346 + ); + + // gentest-6582 + assertEqual( + perft( + Board(0xa902800000L, 0xa0000000000040L, 0x2000000008000L, 0x2400L, 0x0L, 0x20004L, 0x2002100802444L, + 0xa0008802028000L, false, 0, 0x0L), + 4 + ), + 298732 + ); + + // gentest-6583 + assertEqual( + perft( + Board(0xa902800000L, 0xa0000000000040L, 0x2000000000800L, 0x2400L, 0x0L, 0x20002L, 0x2002100802442L, + 0xa0008802020800L, true, 0, 0x0L), + 4 + ), + 239810 + ); + + // gentest-6584 + assertEqual( + perft( + Board(0xa902800000L, 0xa0000000000040L, 0x2004000000000L, 0x20000002000L, 0x0L, 0x20002L, + 0x2022100802042L, 0xa000c802020000L, false, 0, 0x0L), + 4 + ), + 385158 + ); + + // gentest-6585 + assertEqual( + perft( + Board(0xa902800000L, 0x80400000000040L, 0x2004000000000L, 0x800000002000L, 0x0L, 0x20002L, + 0x2802100802042L, 0x8040c802020000L, true, 0, 0x0L), + 4 + ), + 241812 + ); + + // gentest-6586 + assertEqual( + perft( + Board(0xa102800000L, 0x80400000000040L, 0x20004000000000L, 0x800000002000L, 0x0L, 0x10002L, + 0x20802100802042L, 0x8040c002010000L, false, 0, 0x0L), + 4 + ), + 324412 + ); + + // gentest-6587 + assertEqual( + perft( + Board(0x2182800000L, 0x80400000000040L, 0x20004000000000L, 0x800000200000L, 0x0L, 0x1000002L, + 0x20802100a00042L, 0x80404083000000L, true, 0, 0x0L), + 4 + ), + 220126 + ); + + // gentest-6588 + assertEqual( + perft( + Board(0x2102800000L, 0x80400000000040L, 0x20004000000000L, 0x8200000L, 0x0L, 0x200000002L, + 0x20002108a00042L, 0x80404202000000L, false, 0, 0x0L), + 4 + ), + 627805 + ); + + // gentest-6589 + assertEqual( + perft( + Board(0x2102800000L, 0x80400000000040L, 0x20000000000000L, 0x200800L, 0x0L, 0x400000002L, + 0x20002100a00842L, 0x80400402000000L, true, 0, 0x0L), + 4 + ), + 213479 + ); + + // gentest-6590 + assertEqual( + perft( + Board(0x12002800000L, 0x80400000000040L, 0x20000L, 0x200800L, 0x0L, 0x200000002L, 0x12000a20842L, + 0x80400202000000L, false, 0, 0x0L), + 4 + ), + 270265 + ); + + // gentest-6591 + assertEqual( + perft( + Board(0x12002800000L, 0x80400000000040L, 0x20000L, 0x20000800L, 0x0L, 0x40000000002L, 0x12020820842L, + 0x80440002000000L, true, 0, 0x0L), + 4 + ), + 258824 + ); + + // gentest-6592 + assertEqual( + perft( + Board(0x12002800000L, 0x80400000000040L, 0x20000L, 0x20000800L, 0x0L, 0x400000400L, 0x12020820c40L, + 0x80400402000000L, false, 0, 0x0L), + 4 + ), + 189013 + ); + + // gentest-6593 + assertEqual( + perft( + Board(0x10002800000L, 0x200080000040L, 0x20000L, 0x20000800L, 0x0L, 0x400000400L, 0x10020820c40L, + 0x200482000000L, true, 0, 0x0L), + 4 + ), + 254535 + ); + + // gentest-6594 + assertEqual( + perft( + Board(0x10002800000L, 0x8080000040L, 0x20000L, 0x4000800L, 0x0L, 0x400000008L, 0x10004820848L, + 0x8482000000L, false, 0, 0x0L), + 4 + ), + 28088 + ); + + // gentest-6595 + assertEqual( + perft( + Board(0x10002800000L, 0x200080000040L, 0x20000L, 0x4008000L, 0x0L, 0x200000008L, 0x10004828048L, + 0x200282000000L, true, 0, 0x0L), + 4 + ), + 203583 + ); + + // gentest-6596 + assertEqual( + perft( + Board(0x10002800000L, 0x4000000080000040L, 0x20000L, 0x4008000L, 0x0L, 0x200002000L, 0x1000482a040L, + 0x4000000282000000L, false, 0, 0x0L), + 4 + ), + 96421 + ); + + // gentest-6597 + assertEqual( + perft( + Board(0x10002800000L, 0x600000000040L, 0x400L, 0x4008000L, 0x0L, 0x200002000L, 0x1000480a440L, + 0x600202000000L, true, 0, 0x0L), + 4 + ), + 268434 + ); + + // gentest-6598 + assertEqual( + perft( + Board(0x10002800000L, 0x8000200000000040L, 0x400L, 0x100000008000L, 0x0L, 0x200002000L, + 0x11000080a440L, 0x8000200202000000L, false, 0, 0x0L), + 4 + ), + 163815 + ); + + // gentest-6599 + assertEqual( + perft( + Board(0x10002800000L, 0x408000000040L, 0x400L, 0x9000L, 0x0L, 0x200002000L, 0x1000080b440L, + 0x408202000000L, true, 0, 0x0L), + 4 + ), + 170752 + ); + + // gentest-6600 + assertEqual( + perft( + Board(0x10002800000L, 0x408000000040L, 0x400L, 0x100000008000L, 0x0L, 0x100004000L, 0x11000080c440L, + 0x408102000000L, false, 0, 0x0L), + 4 + ), + 88818 + ); + + // gentest-6601 + assertEqual( + perft( + Board(0x10002800000L, 0x2000000000400040L, 0x400L, 0x80000008000L, 0x0L, 0x100004000L, 0x9000080c440L, + 0x2000000102400000L, true, 0, 0x0L), + 4 + ), + 131632 + ); + + // gentest-6602 + assertEqual( + perft( + Board(0x10002800000L, 0x2000000000200020L, 0x400L, 0x80000000080L, 0x0L, 0x100004000L, 0x90000a04480L, + 0x2000000102000020L, false, 0, 0x0L), + 4 + ), + 140384 + ); + + // gentest-6603 + assertEqual( + perft( + Board(0x10002800000L, 0x100000208000L, 0x400L, 0x80000000040L, 0x0L, 0x100004000L, 0x90000a04440L, + 0x100102008000L, true, 0, 0x0L), + 4 + ), + 218428 + ); + + // gentest-6604 + assertEqual( + perft( + Board(0x10002800000L, 0x100000001020L, 0x400L, 0x80000000040L, 0x0L, 0x100004000L, 0x90000805440L, + 0x100102000020L, false, 0, 0x0L), + 4 + ), + 179754 + ); + + // gentest-6605 + assertEqual( + perft( + Board(0x1000002800000L, 0x100000001020L, 0x400L, 0x80000000040L, 0x0L, 0x400004000L, 0x1080000805440L, + 0x100402000020L, true, 0, 0x0L), + 4 + ), + 229796 + ); + + // gentest-6606 + assertEqual( + perft( + Board(0x1000002800000L, 0x100000401000L, 0x400L, 0x800000040L, 0x0L, 0x400002000L, 0x1000800803440L, + 0x100402400000L, false, 0, 0x0L), + 4 + ), + 112162 + ); + + // gentest-6607 + assertEqual( + perft( + Board(0x1000002800000L, 0x108000001000L, 0x400L, 0x400000040L, 0x0L, 0x20000002000L, 0x1000400803440L, + 0x128002000000L, true, 0, 0x0L), + 4 + ), + 556607 + ); + + // gentest-6608 + assertEqual( + perft( + Board(0x1000002800000L, 0x4008008000000L, 0x400L, 0x400000004L, 0x0L, 0x20000002000L, + 0x1000408802404L, 0x4028002000000L, false, 0, 0x0L), + 4 + ), + 392822 + ); + + // gentest-6609 + assertEqual( + perft( + Board(0x1000002800000L, 0x108008000000L, 0x400L, 0x200000004L, 0x0L, 0x4000000002000L, + 0x1000208802404L, 0x4108002000000L, true, 0, 0x0L), + 4 + ), + 334522 + ); + + // gentest-6610 + assertEqual( + perft( + Board(0x1000002800000L, 0x108008000000L, 0x100L, 0x200000004L, 0x0L, 0x80000002000L, 0x1000208802104L, + 0x188002000000L, false, 0, 0x0L), + 4 + ), + 434577 + ); + + // gentest-6611 + assertEqual( + perft( + Board(0x1000002800000L, 0x4000008400000L, 0x100L, 0x200000004L, 0x0L, 0x80000100000L, + 0x1000208900104L, 0x4080002400000L, true, 0, 0x0L), + 4 + ), + 343112 + ); + + // gentest-6612 + assertEqual( + perft( + Board(0x1000002800000L, 0x4000008400000L, 0x20000000000000L, 0x8000000004L, 0x0L, 0x10000000100000L, + 0x21008008900004L, 0x14000002400000L, false, 0, 0x0L), + 4 + ), + 530552 + ); + + // gentest-6613 + assertEqual( + perft( + Board(0x1000000820000L, 0x4000000200020L, 0x20000000000000L, 0x8000000004L, 0x0L, 0x10000000100000L, + 0x21008000b00004L, 0x14000000020020L, true, 0, 0x0L), + 4 + ), + 74174 + ); + + // gentest-6614 + assertEqual( + perft( + Board(0x1000000820000L, 0x10008000020L, 0x20000000000000L, 0x8000000004L, 0x0L, 0x10000010000000L, + 0x21008018800004L, 0x10010000020020L, false, 0, 0x0L), + 4 + ), + 318416 + ); + + // gentest-6615 + assertEqual( + perft( + Board(0x1000000820000L, 0x10008000000L, 0x0L, 0x8000000020L, 0x0L, 0x10000010000000L, + 0x1008018800020L, 0x10010000020000L, true, 0, 0x0L), + 4 + ), + 147146 + ); + + // gentest-6616 + assertEqual( + perft( + Board(0x1000000820000L, 0x10008000000L, 0x0L, 0x100000000000020L, 0x0L, 0x80010000000L, + 0x101000018800020L, 0x90000020000L, false, 0, 0x0L), + 4 + ), + 80645 + ); + + // gentest-6617 + assertEqual( + perft( + Board(0x1000000820000L, 0x200000008000000L, 0x0L, 0x100000000000040L, 0x0L, 0x10000010000000L, + 0x101000018800040L, 0x210000000020000L, true, 0, 0x0L), + 4 + ), + 85158 + ); + + // gentest-6618 + assertEqual( + perft( + Board(0x1000000820000L, 0x200040000000000L, 0x0L, 0x100000000000040L, 0x0L, 0x1000000020000000L, + 0x101040020800040L, 0x1200000000020000L, false, 0, 0x0L), + 4 + ), + 28853 + ); + + // gentest-6619 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6620 + assertEqual( + perft( + Board(0xfd000200807f00L, 0x4200000000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x817ffdL, 0xfffd000200000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 198000 + ); + + // gentest-6621 + assertEqual( + perft( + Board(0xfd000210806f00L, 0x4000001000010040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10816ffdL, 0xfdfd001200000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 458679 + ); + + // gentest-6622 + assertEqual( + perft( + Board(0xf9040212806d00L, 0x4000001004000040L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x16806dfdL, 0xfdf9041200000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 568199 + ); + + // gentest-6623 + assertEqual( + perft( + Board(0xe9140212806d00L, 0x4000001004001000L, 0x2400000000000024L, 0x8100000000000081L, 0x80000008L, + 0x1000000000000010L, 0x16807dbdL, 0xf5e9141280000000L, true, 0, 0x8100000000000081L), + 4 + ), + 862035 + ); + + // gentest-6624 + assertEqual( + perft( + Board(0xe9140212804d00L, 0x4000001004040000L, 0x2400000000000024L, 0x8100000000000081L, 0x8L, + 0x1000000000002000L, 0x16846dadL, 0xf5e9141200000000L, false, 0, 0x8100000000000000L), + 4 + ), + 905779 + ); + + // gentest-6625 + assertEqual( + perft( + Board(0xe8140312804d00L, 0x4000000044040000L, 0x2400000000000024L, 0x8100000000000081L, 0x8L, + 0x1000000000000040L, 0x16844dedL, 0xf5e8140340000000L, true, 0, 0x8100000000000000L), + 4 + ), + 934905 + ); + + // gentest-6626 + assertEqual( + perft( + Board(0xe8140353004c00L, 0x10000004040000L, 0x2400000000000024L, 0x8100000000000081L, 0x8L, + 0x1000000000000040L, 0x57044cedL, 0xb5f8140300000000L, false, 0, 0x8100000000000000L), + 4 + ), + 816449 + ); + + // gentest-6627 + assertEqual( + perft( + Board(0xc8142353004c00L, 0x10000000050000L, 0x2002000000000024L, 0x8100000000000081L, 0x8L, + 0x1000000000000040L, 0x53054cedL, 0xb1da142300000000L, true, 0, 0x8100000000000000L), + 4 + ), + 962260 + ); + + // gentest-6628 + assertEqual( + perft( + Board(0xc8142153400c00L, 0x10000000010002L, 0x2002000000000024L, 0x8100000000000081L, 0x8L, + 0x1000000000000040L, 0x52410cefL, 0xb1da142101000000L, false, 0, 0x8100000000000000L), + 4 + ), + 839565 + ); + + // gentest-6629 + assertEqual( + perft( + Board(0xc8142153400c00L, 0x10000000010002L, 0x2100000000000220L, 0x8800000000000081L, 0x8L, + 0x400000000000040L, 0x52410eebL, 0xadd8142101000000L, true, 0, 0x0L), + 4 + ), + 701817 + ); + + // gentest-6630 + assertEqual( + perft( + Board(0xc8142151400c00L, 0x10000000010002L, 0x2002000008000020L, 0x8800000000000081L, 0x8L, + 0x400000000000040L, 0x158410cebL, 0xacda142001000000L, false, 0, 0x0L), + 4 + ), + 724613 + ); + + // gentest-6631 + assertEqual( + perft( + Board(0x8946151400c00L, 0x10000000010002L, 0x2002000008000020L, 0x8800000000000081L, 0x200000L, + 0x400000000000040L, 0x158610ce3L, 0xac1a946001000000L, true, 0, 0x0L), + 4 + ), + 834158 + ); + + // gentest-6632 + assertEqual( + perft( + Board(0x8946151440800L, 0x400000010002L, 0x2002000008001000L, 0x8800000000000081L, 0x200000L, + 0x400000000000040L, 0x1586518c3L, 0xac0ad46001000000L, false, 0, 0x0L), + 4 + ), + 1043357 + ); + + // gentest-6633 + assertEqual( + perft( + Board(0x946941440800L, 0x400000010002L, 0x2002000008001000L, 0x4800000000000081L, 0x200000L, + 0x400000000000040L, 0x21486518c3L, 0x6c02d44801000000L, true, 0, 0x0L), + 4 + ), + 1123507 + ); + + // gentest-6634 + assertEqual( + perft( + Board(0x946941440800L, 0x8000000000010002L, 0x2002000400001000L, 0x4800000000000180L, 0x200000L, + 0x400000000000040L, 0x25406519c2L, 0xec02944801000000L, false, 0, 0x0L), + 4 + ), + 779969 + ); + + // gentest-6635 + assertEqual( + perft( + Board(0x847945400800L, 0x8000000000010002L, 0x2002000400001000L, 0x4000080000000180L, 0x200000L, + 0x400000000000040L, 0x25446119c2L, 0xe4028c5801000000L, true, 0, 0x0L), + 4 + ), + 772443 + ); + + // gentest-6636 + assertEqual( + perft( + Board(0x847945400800L, 0x8000000000010002L, 0x2002000400001000L, 0x4000088000000100L, 0x200000L, + 0x4000000000020L, 0xa544611922L, 0xe0068c5801000000L, false, 0, 0x0L), + 4 + ), + 776317 + ); + + // gentest-6637 + assertEqual( + perft( + Board(0x85605d400800L, 0x8000000000010002L, 0x2002000400001000L, 0x4000088000000100L, 0x200000L, + 0x4000000000020L, 0x1a444611922L, 0xe0068c4019000000L, true, 0, 0x0L), + 4 + ), + 593913 + ); + + // gentest-6638 + assertEqual( + perft( + Board(0x5605d400800L, 0x8000000000010002L, 0x2100000400001000L, 0x4000880000000100L, 0x20000000L, + 0x4000000000020L, 0x812464411922L, 0xe1040c4019000000L, false, 0, 0x0L), + 4 + ), + 376987 + ); + + // gentest-6639 + assertEqual( + perft( + Board(0x5605d400800L, 0x8000000000010002L, 0x2100000400001000L, 0xc0080000000100L, 0x20000000L, + 0x8000000000020L, 0x80012464411922L, 0xa1480c4019000000L, true, 0, 0x0L), + 4 + ), + 547518 + ); + + // gentest-6640 + assertEqual( + perft( + Board(0x25404d500800L, 0x8000000000010002L, 0x2100080000001000L, 0xc0000000000100L, 0x20000000L, + 0x8000000000020L, 0x80290064411922L, 0xa148044009100000L, false, 0, 0x0L), + 4 + ), + 467842 + ); + + // gentest-6641 + assertEqual( + perft( + Board(0x25006d400000L, 0x8000000000010002L, 0x2100080000001000L, 0xc0000000000800L, 0x0L, + 0x8000000000020L, 0x80290044411822L, 0xa148040029000000L, true, 0, 0x0L), + 4 + ), + 497134 + ); + + // gentest-6642 + assertEqual( + perft( + Board(0x25006d400000L, 0x8000000000010002L, 0x2100080000001000L, 0x40000000000800L, 0x0L, + 0x100000000040L, 0x40290044411842L, 0xa100140029000000L, false, 0, 0x0L), + 4 + ), + 210925 + ); + + // gentest-6643 + assertEqual( + perft( + Board(0x25004d400000L, 0x8000000000000402L, 0x140080000001000L, 0x800L, 0x0L, 0x100000000040L, + 0x290044001c42L, 0x8140140009400000L, true, 0, 0x0L), + 4 + ), + 199179 + ); + + // gentest-6644 + assertEqual( + perft( + Board(0x250045480000L, 0x8000000000000402L, 0x140080000001000L, 0x8L, 0x0L, 0x100000000020L, + 0x29004400142aL, 0x8140140001480000L, false, 0, 0x0L), + 4 + ), + 204832 + ); + + // gentest-6645 + assertEqual( + perft( + Board(0x250045400000L, 0x20000000000402L, 0x140080000000000L, 0x8L, 0x0L, 0x100000001000L, + 0x29004400140aL, 0x160140001400000L, true, 0, 0x0L), + 4 + ), + 325349 + ); + + // gentest-6646 + assertEqual( + perft( + Board(0x250045400000L, 0x20000000000402L, 0x8100080000000000L, 0x800L, 0x0L, 0x100000000010L, + 0x290044000c12L, 0x8120140001400000L, false, 0, 0x0L), + 4 + ), + 167281 + ); + + // gentest-6647 + assertEqual( + perft( + Board(0x250045400000L, 0x800000002000002L, 0x140080000000000L, 0x800L, 0x0L, 0x100000000010L, + 0x290046000812L, 0x940140001400000L, true, 0, 0x0L), + 4 + ), + 208758 + ); + + // gentest-6648 + assertEqual( + perft( + Board(0x250044410000L, 0x800000000000102L, 0x140080000000000L, 0x800L, 0x0L, 0x100000001000L, + 0x290044001902L, 0x940140000410000L, false, 0, 0x0L), + 4 + ), + 158068 + ); + + // gentest-6649 + assertEqual( + perft( + Board(0x250044410000L, 0x2000000040002L, 0x8100080000000000L, 0x800L, 0x0L, 0x100000001000L, + 0x290044041802L, 0x8102140000410000L, true, 0, 0x0L), + 4 + ), + 191423 + ); + + // gentest-6650 + assertEqual( + perft( + Board(0x210444410000L, 0x2000000040002L, 0x8100000002000000L, 0x8L, 0x0L, 0x100000001000L, + 0x21004604100aL, 0x8102100400410000L, false, 0, 0x0L), + 4 + ), + 153285 + ); + + // gentest-6651 + assertEqual( + perft( + Board(0x210046400000L, 0x2000000050000L, 0x8100000000000000L, 0x8L, 0x0L, 0x1000001000L, + 0x210044051008L, 0x8102001002400000L, true, 0, 0x0L), + 4 + ), + 197686 + ); + + // gentest-6652 + assertEqual( + perft( + Board(0x2200044420000L, 0x50000L, 0x8100000000000000L, 0x80000L, 0x0L, 0x1000001000L, + 0x22000440d1000L, 0x8100001000420000L, false, 0, 0x0L), + 4 + ), + 96373 + ); + + // gentest-6653 + assertEqual( + perft( + Board(0x2204004420000L, 0x50000L, 0x8100000000000000L, 0x80000L, 0x0L, 0x1000001000L, + 0x22040040d1000L, 0x8100001000420000L, true, 0, 0x0L), + 4 + ), + 108370 + ); + + // gentest-6654 + assertEqual( + perft( + Board(0x204004420000L, 0x200000001010000L, 0x8100000000000000L, 0x80000L, 0x0L, 0x2000001000L, + 0x200204005091000L, 0x8100002000420000L, false, 0, 0x0L), + 4 + ), + 242909 + ); + + // gentest-6655 + assertEqual( + perft( + Board(0x4004420000L, 0x200000001010000L, 0x100200000000000L, 0x8L, 0x0L, 0x100000001000L, + 0x200004005011008L, 0x100300000420000L, true, 0, 0x0L), + 4 + ), + 392965 + ); + + // gentest-6656 + assertEqual( + perft( + Board(0x4004420000L, 0x40001010000L, 0x200000200000L, 0x8L, 0x0L, 0x100000000020L, 0x44005010028L, + 0x300000620000L, false, 0, 0x0L), + 4 + ), + 299592 + ); + + // gentest-6657 + assertEqual( + perft( + Board(0x4004420000L, 0x10200L, 0x240000000000L, 0x8L, 0x0L, 0x1000000020L, 0x4004010228L, + 0x241000420000L, true, 0, 0x0L), + 4 + ), + 159366 + ); + + // gentest-6658 + assertEqual( + perft( + Board(0x4004420000L, 0x600L, 0x8000040000000000L, 0x8L, 0x0L, 0x1000001000L, 0x4004001608L, + 0x8000041000420000L, false, 0, 0x0L), + 4 + ), + 217051 + ); + + // gentest-6659 + assertEqual( + perft( + Board(0x4004420000L, 0x600L, 0x40000800000000L, 0x40L, 0x0L, 0x1000001000L, 0x4004001640L, + 0x40001800420000L, true, 0, 0x0L), + 4 + ), + 246385 + ); + + // gentest-6660 + assertEqual( + perft( + Board(0x4004420000L, 0x600L, 0x40000800000000L, 0x2L, 0x0L, 0x80000001000L, 0x4004001602L, + 0x40080800420000L, false, 0, 0x0L), + 4 + ), + 344922 + ); + + // gentest-6661 + assertEqual( + perft( + Board(0x4004420000L, 0x201L, 0x1800000000L, 0x2L, 0x0L, 0x40000001000L, 0x4004001203L, 0x41800420000L, + true, 0, 0x0L), + 4 + ), + 212958 + ); + + // gentest-6662 + assertEqual( + perft( + Board(0x4004420000L, 0x201L, 0x101000000000L, 0x80L, 0x0L, 0x40000001000L, 0x4004001281L, + 0x141000420000L, false, 0, 0x0L), + 4 + ), + 344951 + ); + + // gentest-6663 + assertEqual( + perft( + Board(0x4004024000L, 0x80001L, 0x4100000000000L, 0x80L, 0x0L, 0x40000001000L, 0x4004081081L, + 0x4140000024000L, true, 0, 0x0L), + 4 + ), + 540827 + ); + + // gentest-6664 + assertEqual( + perft( + Board(0x4004024000L, 0x20000001L, 0x180000000000L, 0x10L, 0x0L, 0x40000001000L, 0x4024001011L, + 0x1c0000024000L, false, 0, 0x0L), + 4 + ), + 344493 + ); + + // gentest-6665 + assertEqual( + perft( + Board(0x4400020000L, 0x20000001L, 0x400080000000040L, 0x10L, 0x0L, 0x40000001000L, 0x4420001011L, + 0x4000c0000020040L, true, 0, 0x0L), + 4 + ), + 269830 + ); + + // gentest-6666 + assertEqual( + perft( + Board(0x4400020000L, 0x800001L, 0x2080000000040L, 0x10L, 0x0L, 0x40000080000L, 0x4400880011L, + 0x20c0000020040L, false, 0, 0x0L), + 4 + ), + 242437 + ); + + // gentest-6667 + assertEqual( + perft( + Board(0x4000020000L, 0x800001L, 0x90400000000L, 0x10L, 0x0L, 0x40000000800L, 0x4000800811L, + 0xd0400020000L, true, 0, 0x0L), + 4 + ), + 352023 + ); + + // gentest-6668 + assertEqual( + perft( + Board(0x400000020000L, 0x800001L, 0x90000002000L, 0x40L, 0x0L, 0x40000000800L, 0x400000800841L, + 0xd0000022000L, false, 0, 0x0L), + 4 + ), + 335753 + ); + + // gentest-6669 + assertEqual( + perft( + Board(0x400000020000L, 0x20000001L, 0x80000002020L, 0x40L, 0x0L, 0x8000000000800L, 0x400020000841L, + 0x8080000022020L, true, 0, 0x0L), + 4 + ), + 333401 + ); + + // gentest-6670 + assertEqual( + perft( + Board(0x400000000000L, 0x20020000L, 0x2000000000002020L, 0x40L, 0x0L, 0x8000000000400L, + 0x400020020440L, 0x2008000000002020L, false, 0, 0x0L), + 4 + ), + 527280 + ); + + // gentest-6671 + assertEqual( + perft( + Board(0x400000000000L, 0x20020000L, 0x2000000200002000L, 0x40L, 0x0L, 0x40000000200L, 0x400020020240L, + 0x2000040200002000L, true, 0, 0x0L), + 4 + ), + 514598 + ); + + // gentest-6672 + assertEqual( + perft( + Board(0x400000000000L, 0x20020000L, 0x40000200002000L, 0x4000000000L, 0x0L, 0x40000000400L, + 0x404020020400L, 0x40040200002000L, false, 0, 0x0L), + 4 + ), + 496827 + ); + + // gentest-6673 + assertEqual( + perft( + Board(0x400000000000L, 0x20020000L, 0x40000280000000L, 0x400000000L, 0x0L, 0x20000000400L, + 0x400420020400L, 0x40020280000000L, true, 0, 0x0L), + 4 + ), + 444113 + ); + + // gentest-6674 + assertEqual( + perft( + Board(0x400000000000L, 0x21000L, 0x40000200000010L, 0x400000000L, 0x0L, 0x20000000004L, + 0x400400021004L, 0x40020200000010L, false, 0, 0x0L), + 4 + ), + 339783 + ); + + // gentest-6675 + assertEqual( + perft( + Board(0x400000000000L, 0x420000L, 0x8000000040010L, 0x400000000L, 0x0L, 0x20000000004L, + 0x400400420004L, 0x8020000040010L, true, 0, 0x0L), + 4 + ), + 342882 + ); + + // gentest-6676 + assertEqual( + perft( + Board(0x40000000000000L, 0x420000L, 0x400000000040010L, 0x200000000L, 0x0L, 0x20000000004L, + 0x40000200420004L, 0x400020000040010L, false, 0, 0x0L), + 4 + ), + 68174 + ); + + // gentest-6677 + assertEqual( + perft( + Board(0x0L, 0x400001L, 0x440000000000010L, 0x200000000L, 0x0L, 0x4000000000004L, 0x200400005L, + 0x444000000000010L, true, 0, 0x0L), + 4 + ), + 332064 + ); + + // gentest-6678 + assertEqual( + perft( + Board(0x0L, 0x400001L, 0x48000000000010L, 0x8000000000L, 0x0L, 0x4000000000400L, 0x8000400401L, + 0x4c000000000010L, false, 0, 0x0L), + 4 + ), + 460963 + ); + + // gentest-6679 + assertEqual( + perft( + Board(0x0L, 0x400001L, 0x40000000000410L, 0x8000000000L, 0x0L, 0x4000000080000L, 0x8000480001L, + 0x44000000000410L, true, 0, 0x0L), + 4 + ), + 85332 + ); + + // gentest-6680 + assertEqual( + perft( + Board(0x0L, 0x2000000400L, 0x40000000000010L, 0x8000000000L, 0x0L, 0x2000000080000L, 0xa000080400L, + 0x42000000000010L, false, 0, 0x0L), + 4 + ), + 353720 + ); + + // gentest-6681 + assertEqual( + perft( + Board(0x0L, 0x2000000400L, 0x1000000010L, 0x80000000000000L, 0x0L, 0x200000000080000L, + 0x80002000080400L, 0x200001000000010L, true, 0, 0x0L), + 4 + ), + 335988 + ); + + // gentest-6682 + assertEqual( + perft( + Board(0x0L, 0x2000200000L, 0x8000000000000010L, 0x80000000000000L, 0x0L, 0x200000000080000L, + 0x80002000280000L, 0x8200000000000010L, false, 0, 0x0L), + 4 + ), + 282395 + ); + + // gentest-6683 + assertEqual( + perft( + Board(0x0L, 0x2000200000L, 0x8000000000040000L, 0x8000000000000L, 0x0L, 0x400000000080000L, + 0x8002000280000L, 0x8400000000040000L, true, 0, 0x0L), + 4 + ), + 186705 + ); + + // gentest-6684 + assertEqual( + perft( + Board(0x0L, 0x800000200000L, 0x8000000008000000L, 0x800000000L, 0x0L, 0x400000000080000L, + 0x800800280000L, 0x8400000008000000L, false, 0, 0x0L), + 4 + ), + 224617 + ); + + // gentest-6685 + assertEqual( + perft( + Board(0x0L, 0x800000200000L, 0x1000000040L, 0x80000000000L, 0x0L, 0x400000000080000L, 0x880000280000L, + 0x400001000000040L, true, 0, 0x0L), + 4 + ), + 258582 + ); + + // gentest-6686 + assertEqual( + perft( + Board(0x0L, 0x20000000200000L, 0x1000000040L, 0x80000000000L, 0x0L, 0x4000004000000L, + 0x20080004200000L, 0x4001000000040L, false, 0, 0x0L), + 4 + ), + 347609 + ); + + // gentest-6687 + assertEqual( + perft( + Board(0x0L, 0x20000000200000L, 0x1400000000L, 0x80000000000L, 0x0L, 0x200000000020000L, + 0x20080000220000L, 0x200001400000000L, true, 0, 0x0L), + 4 + ), + 443048 + ); + + // gentest-6688 + assertEqual( + perft( + Board(0x0L, 0x800000200000L, 0x40000400000000L, 0x100000000000L, 0x0L, 0x200000000020000L, + 0x900000220000L, 0x240000400000000L, false, 0, 0x0L), + 4 + ), + 426220 + ); + + // gentest-6689 + assertEqual( + perft( + Board(0x0L, 0x800000200000L, 0x40000400000000L, 0x10L, 0x0L, 0x1000000020000L, 0x800000220010L, + 0x41000400000000L, true, 0, 0x0L), + 4 + ), + 373685 + ); + + // gentest-6690 + assertEqual( + perft( + Board(0x0L, 0x800008000000L, 0x40000400000000L, 0x80L, 0x0L, 0x100000000020000L, 0x800008020080L, + 0x140000400000000L, false, 0, 0x0L), + 4 + ), + 214612 + ); + + // gentest-6691 + assertEqual( + perft( + Board(0x0L, 0x20000000000000L, 0x200008000000L, 0x80L, 0x0L, 0x100000000020000L, 0x20000000020080L, + 0x100200008000000L, true, 0, 0x0L), + 4 + ), + 224562 + ); + + // gentest-6692 + assertEqual( + perft( + Board(0x0L, 0x1000000000L, 0x1200000000000L, 0x800000000000L, 0x0L, 0x100000000020000L, + 0x801000020000L, 0x101200000000000L, false, 0, 0x0L), + 4 + ), + 172263 + ); + + // gentest-6693 + assertEqual( + perft( + Board(0x0L, 0x1000000000L, 0x80002000L, 0x800000000000L, 0x0L, 0x100000004000000L, 0x801004000000L, + 0x100000080002000L, true, 0, 0x0L), + 4 + ), + 130815 + ); + + // gentest-6694 + assertEqual( + perft( + Board(0x0L, 0x1000000000L, 0x80002000L, 0x20000000000L, 0x0L, 0x200000000080000L, 0x21000080000L, + 0x200000080002000L, false, 0, 0x0L), + 4 + ), + 39459 + ); + + // gentest-6695 + assertEqual( + perft( + Board(0x0L, 0x1000000000L, 0x20080000000L, 0x0L, 0x0L, 0x400000000000400L, 0x1000000400L, + 0x400020080000000L, true, 0, 0x0L), + 4 + ), + 85917 + ); + + // gentest-6696 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20080000000L, 0x0L, 0x0L, 0x8000000000800L, 0x800L, 0x8020080000000L, false, 0, + 0x0L), + 4 + ), + 18626 + ); + + // gentest-6697 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x4400000000L, 0x0L, 0x0L, 0x8000000000008L, 0x8L, 0x8004400000000L, true, 0, 0x0L), + 4 + ), + 10474 + ); + + // gentest-6698 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x4000100000L, 0x0L, 0x0L, 0x8000000000020L, 0x20L, 0x8004000100000L, false, 0, + 0x0L), + 4 + ), + 8749 + ); + + // gentest-6699 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x4020000000L, 0x0L, 0x0L, 0x1000000000001000L, 0x1000L, 0x1000004020000000L, true, + 0, 0x0L), + 4 + ), + 11520 + ); + + // gentest-6700 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x4020000000L, 0x0L, 0x0L, 0x2000000010000000L, 0x10000000L, 0x2000004020000000L, + false, 0, 0x0L), + 4 + ), + 11560 + ); + + // gentest-6701 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x4004000000000L, 0x0L, 0x0L, 0x2000000800000000L, 0x800000000L, + 0x2004004000000000L, true, 0, 0x0L), + 4 + ), + 16832 + ); + + // gentest-6702 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x4004000000000L, 0x0L, 0x0L, 0x4000000000080000L, 0x80000L, 0x4004004000000000L, + false, 0, 0x0L), + 4 + ), + 19123 + ); + + // gentest-6703 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x4002000000L, 0x0L, 0x0L, 0x4000000004000000L, 0x4000000L, 0x4000004002000000L, + true, 0, 0x0L), + 4 + ), + 15655 + ); + + // gentest-6704 + assertEqual( + perft( + Board(0x0L, 0x0L, 0x20000000L, 0x0L, 0x0L, 0x4000000002000000L, 0x2000000L, 0x4000000020000000L, + false, 0, 0x0L), + 4 + ), + 11117 + ); + + // gentest-6705 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6706 + assertEqual( + perft( + Board(0xfe00015000af00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x5000afffL, 0xfffe000100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 407898 + ); + + // gentest-6707 + assertEqual( + perft( + Board(0xbe40015000af00L, 0x200800000800002L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x5080afbfL, 0xbfbec00100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 381806 + ); + + // gentest-6708 + assertEqual( + perft( + Board(0xae50015800a700L, 0x200800000800002L, 0x2400000000004004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x5880e79fL, 0xbfaed00100000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 1046681 + ); + + // gentest-6709 + assertEqual( + perft( + Board(0xae50015c00a300L, 0x200800000800002L, 0x400001000004004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x5c80e39fL, 0x9faed01100000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 1367780 + ); + + // gentest-6710 + assertEqual( + perft( + Board(0xae50015c00a300L, 0x200800000800002L, 0x440000000004004L, 0x8100000000000011L, + 0x800000000000008L, 0x1000000000000800L, 0x5c80eb1fL, 0x9feed00100000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 1064479 + ); + + // gentest-6711 + assertEqual( + perft( + Board(0xaa10455c208300L, 0x200800000800002L, 0x440000000004004L, 0x8100000000000011L, + 0x800000000000008L, 0x1000000000000800L, 0x5ca0cb1fL, 0x9fea904500000000L, true, 0, + 0x8100000000000000L), + 4 + ), + 817512 + ); + + // gentest-6712 + assertEqual( + perft( + Board(0xaa10554c208300L, 0x200002000800002L, 0x440000000004004L, 0x8100000000000041L, + 0x800000000000008L, 0x1000000000000800L, 0x104ca0cb4fL, 0x9fea106500000000L, false, 0, + 0x8100000000000000L), + 4 + ), + 961184 + ); + + // gentest-6713 + assertEqual( + perft( + Board(0xaa10650c208300L, 0x1000800002L, 0x440000000004004L, 0x8100000000000041L, 0x800000000000008L, + 0x1000000000000800L, 0x200ca0cb4fL, 0x9dea105500000000L, true, 0, 0x8100000000000000L), + 4 + ), + 981359 + ); + + // gentest-6714 + assertEqual( + perft( + Board(0xaa106508208300L, 0x1000800002L, 0x440000000004004L, 0x8100000000000011L, 0x800000000000008L, + 0x1000000000000800L, 0x2400a0cb1fL, 0x9dea105108000000L, false, 0, 0x8100000000000000L), + 4 + ), + 855714 + ); + + // gentest-6715 + assertEqual( + perft( + Board(0xaa106508208300L, 0x40000800002L, 0x440000000004004L, 0x8000010000000011L, 0x800000000000008L, + 0x1000000000001000L, 0x2400a0d31fL, 0x9cea154108000000L, true, 0, 0x8000000000000000L), + 4 + ), + 1201831 + ); + + // gentest-6716 + assertEqual( + perft( + Board(0xaa007508208300L, 0x40000840000L, 0x440000000004004L, 0x8000010000000011L, 0x800000000020000L, + 0x1000000000001000L, 0x2400a6d315L, 0x9cea055108000000L, false, 0, 0x8000000000000000L), + 4 + ), + 1545229 + ); + + // gentest-6717 + assertEqual( + perft( + Board(0xaa007508208300L, 0x40000840000L, 0x400800000004004L, 0x2000010000000011L, 0x800000200000000L, + 0x1000000000001000L, 0x2600a4d315L, 0x3caa855108000000L, true, 0, 0x0L), + 4 + ), + 1001678 + ); + + // gentest-6718 + assertEqual( + perft( + Board(0xaa003509208200L, 0x40000840000L, 0x400804000004000L, 0x2000010000000011L, 0x200200000000L, + 0x1000000000001000L, 0x6601a4d211L, 0x34aaa51108000000L, false, 0, 0x0L), + 4 + ), + 1557583 + ); + + // gentest-6719 + assertEqual( + perft( + Board(0xaa002519208200L, 0x40020040000L, 0x400804000004000L, 0x2000010000000011L, 0x80200000000L, + 0x1000000000001000L, 0x662124d211L, 0x34aa8d0118000000L, true, 0, 0x0L), + 4 + ), + 2000986 + ); + + // gentest-6720 + assertEqual( + perft( + Board(0xaa002509308200L, 0x40020000800L, 0x400804000004000L, 0x2000010000000011L, 0x80200000000L, + 0x1000000000001000L, 0x662120da11L, 0x34aa8d0108100000L, false, 0, 0x0L), + 4 + ), + 1530476 + ); + + // gentest-6721 + assertEqual( + perft( + Board(0xaa002509308200L, 0x40020000800L, 0x400004000004000L, 0x2000010000000005L, 0x1200000000L, + 0x1000000000001000L, 0x262120da05L, 0x34aa055108100000L, true, 0, 0x0L), + 4 + ), + 2559865 + ); + + // gentest-6722 + assertEqual( + perft( + Board(0xaa002409308200L, 0x440000000800L, 0x400004000004000L, 0x2001000000000005L, 0x1100000000L, + 0x1000000000001000L, 0x40250120da05L, 0x34ab045008100000L, false, 0, 0x0L), + 4 + ), + 2641284 + ); + + // gentest-6723 + assertEqual( + perft( + Board(0xa800260b308000L, 0x440000000800L, 0x410000000004000L, 0x2001000000000005L, 0x1100000000L, + 0x1000000000001000L, 0x40250320d805L, 0x34b9041208100000L, true, 41, 0x0L), + 4 + ), + 2597219 + ); + + // gentest-6724 + assertEqual( + perft( + Board(0xa800260a300000L, 0x440000000800L, 0x410000000004000L, 0x2001000000000011L, 0x100008000L, + 0x1000000000001000L, 0x402702205811L, 0x34b9040008108000L, false, 0, 0x0L), + 4 + ), + 2161646 + ); + + // gentest-6725 + assertEqual( + perft( + Board(0xa800260a200800L, 0x200400000000000L, 0x410000000004000L, 0x2001000000000005L, 0x100008000L, + 0x1000000000001000L, 0x402702205005L, 0x36b9000008008800L, true, 0, 0x0L), + 4 + ), + 1960924 + ); + + // gentest-6726 + assertEqual( + perft( + Board(0xa008260a200800L, 0x200400000000000L, 0x410000000004000L, 0x2001000001000004L, 0x100008000L, + 0x1000000000001000L, 0x402703205004L, 0x36b1080008008800L, false, 0, 0x0L), + 4 + ), + 1679147 + ); + + // gentest-6727 + assertEqual( + perft( + Board(0x20882602280800L, 0x200400000000000L, 0x410000000004000L, 0x2001000001000004L, + 0x4000000008000L, 0x1000000000001000L, 0x4402603205004L, 0x3631880000088800L, true, 0, 0x0L), + 4 + ), + 304560 + ); + + // gentest-6728 + assertEqual( + perft( + Board(0x20882602280800L, 0x200001000000000L, 0x410000000004000L, 0x4001000001000004L, + 0x4000000008000L, 0x1000000000002000L, 0x4003603206004L, 0x5631880000088800L, false, 0, 0x0L), + 4 + ), + 2333106 + ); + + // gentest-6729 + assertEqual( + perft( + Board(0x20882602280800L, 0x200001000000000L, 0x10010000004000L, 0x1000000410004L, 0x4000000008000L, + 0x1000000000002000L, 0x4003602216004L, 0x1231890000488800L, true, 0, 0x0L), + 4 + ), + 1894958 + ); + + // gentest-6730 + assertEqual( + perft( + Board(0x20882602280000L, 0x200001000000000L, 0x10010000004000L, 0x1000100440000L, 0x4000000008008L, + 0x1000000000002000L, 0x4003702246000L, 0x1231890000488008L, false, 0, 0x0L), + 4 + ), + 1367973 + ); + + // gentest-6731 + assertEqual( + perft( + Board(0x882602280000L, 0x220000000000000L, 0x10010000004000L, 0x1000100440000L, 0x4000000001080L, + 0x1000000000002000L, 0x24002702246000L, 0x1211890000481080L, true, 0, 0x0L), + 4 + ), + 48964 + ); + + // gentest-6732 + assertEqual( + perft( + Board(0x882202280000L, 0x220000000000000L, 0x800010000004000L, 0x1000100040000L, 0x4000000001080L, + 0x1000000000400000L, 0x24082302644000L, 0x1a01810000081080L, false, 0, 0x0L), + 4 + ), + 1457248 + ); + + // gentest-6733 + assertEqual( + perft( + Board(0x882202280000L, 0x220000000000000L, 0x800010000000020L, 0x1000100040000L, 0x4200000000080L, + 0x1000000000400000L, 0x24082302640020L, 0x1a01a10000080080L, true, 0, 0x0L), + 4 + ), + 1243087 + ); + + // gentest-6734 + assertEqual( + perft( + Board(0x9a002280000L, 0x220000000000000L, 0x20L, 0x1000100040000L, 0x800200000000080L, + 0x1000000000400000L, 0x820092102640020L, 0x1201208000080080L, false, 0, 0x0L), + 4 + ), + 49028 + ); + + // gentest-6735 + assertEqual( + perft( + Board(0x9a002280000L, 0x220000000000000L, 0x20L, 0x1000100040000L, 0x400000000000080L, + 0x1000000020000000L, 0x20092122240020L, 0x1601008000080080L, true, 0, 0x0L), + 4 + ), + 997266 + ); + + // gentest-6736 + assertEqual( + perft( + Board(0x8a002280000L, 0x8200000000000000L, 0x20L, 0x10100040000L, 0x400000000000080L, + 0x1000001000000000L, 0x8000083102240020L, 0x1600018000080080L, false, 0, 0x0L), + 4 + ), + 580826 + ); + + // gentest-6737 + assertEqual( + perft( + Board(0x8a002280000L, 0x8200000000000000L, 0x1000L, 0x40100040000L, 0x400000000000080L, + 0x800001000000000L, 0x8000083102241000L, 0xe00048000080080L, true, 0, 0x0L), + 4 + ), + 842437 + ); + + // gentest-6738 + assertEqual( + perft( + Board(0x8a002280000L, 0x220000000000000L, 0x1000L, 0x40104000000L, 0x400000000000020L, + 0x800001000000000L, 0x20083106201000L, 0xe00048000080020L, false, 0, 0x0L), + 4 + ), + 62626 + ); + + // gentest-6739 + assertEqual( + perft( + Board(0x8a002280000L, 0x220000000000000L, 0x1000L, 0x1040004000000L, 0x400000000000004L, + 0x1000001000000000L, 0x21083006201000L, 0x1600048000080004L, true, 0, 0x0L), + 4 + ), + 1122603 + ); + + // gentest-6740 + assertEqual( + perft( + Board(0x8a022080000L, 0x220000000000000L, 0x1000L, 0x1040004000000L, 0x800000000000004L, + 0x1000000800000000L, 0x21082826001000L, 0x1a00048000080004L, false, 0, 0x0L), + 4 + ), + 1095850 + ); + + // gentest-6741 + assertEqual( + perft( + Board(0x8a022000000L, 0x220000000000000L, 0x10L, 0x40004000100L, 0x800000000000004L, + 0x1000000800000000L, 0x20082826000100L, 0x1a00048000000014L, true, 0, 0x0L), + 4 + ), + 1090847 + ); + + // gentest-6742 + assertEqual( + perft( + Board(0x8a002000000L, 0x200004000000000L, 0x10L, 0x40004000100L, 0x800000020000000L, + 0x1000100000000000L, 0x186006000100L, 0x1a00048020000010L, false, 0, 0x0L), + 4 + ), + 845793 + ); + + // gentest-6743 + assertEqual( + perft( + Board(0x8a002000000L, 0x200004000000000L, 0x10L, 0x40004000400L, 0x4000000000800L, + 0x1000100000000000L, 0x186006000400L, 0x1204048000000810L, true, 0, 0x0L), + 4 + ), + 723161 + ); + + // gentest-6744 + assertEqual( + perft( + Board(0x8a002000000L, 0x220000000000000L, 0x10L, 0x40000000400L, 0x4000000000000L, + 0x1000100000000000L, 0x20182002000400L, 0x1204048000000010L, false, 0, 0x0L), + 4 + ), + 223018 + ); + + // gentest-6745 + assertEqual( + perft( + Board(0x8a002000000L, 0x200000000000000L, 0x10L, 0x40000000400L, 0x8000000000000L, 0x20000800000000L, + 0x82802000400L, 0x228048000000010L, true, 0, 0x0L), + 4 + ), + 248550 + ); + + // gentest-6746 + assertEqual( + perft( + Board(0x8a002000000L, 0x200000000000000L, 0x10L, 0x40000002000L, 0x8000000000000L, + 0x2000000800000000L, 0x82802002000L, 0x2208048000000010L, false, 0, 0x0L), + 4 + ), + 195662 + ); + + // gentest-6747 + assertEqual( + perft( + Board(0x8a000000000L, 0x200000000000000L, 0x2000000L, 0x40000000200L, 0x1000000000000L, + 0x2000000800000000L, 0x82800000200L, 0x2201048002000000L, true, 0, 0x0L), + 4 + ), + 352764 + ); + + // gentest-6748 + assertEqual( + perft( + Board(0xa000000000L, 0x200000000000000L, 0x2000000L, 0x80000020000L, 0x1000000000000L, + 0x2000001000000000L, 0x3000020000L, 0x2201088002000000L, false, 0, 0x0L), + 4 + ), + 292460 + ); + + // gentest-6749 + assertEqual( + perft( + Board(0xa000000000L, 0x200000000000000L, 0x10000L, 0x80000200000L, 0x8000000000000L, + 0x2000001000000000L, 0x3000200000L, 0x2208088000010000L, true, 0, 0x0L), + 4 + ), + 223360 + ); + + // gentest-6750 + assertEqual( + perft( + Board(0xa000000000L, 0x200000000000000L, 0x0L, 0x80000800000L, 0x8000000000000L, 0x20001000000000L, + 0x3000800000L, 0x228088000000000L, false, 0, 0x0L), + 4 + ), + 135202 + ); + + // gentest-6751 + assertEqual( + perft( + Board(0xa000000000L, 0x40000000000L, 0x0L, 0x8008000L, 0x8000000000000L, 0x20001000000000L, + 0x3000008000L, 0x28048008000000L, true, 0, 0x0L), + 4 + ), + 0 + ); + + // gentest-6752 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); + + // gentest-6753 + assertEqual( + perft( + Board(0xdf200010806f00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x10806fffL, 0xffdf200000000000L, false, 0, + 0x8100000000000081L), + 4 + ), + 334578 + ); + + // gentest-6754 + assertEqual( + perft( + Board(0xdf200010806f00L, 0x4200000000000042L, 0x2400000004000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x14806fdfL, 0xffdf200000000000L, true, 0, 0x81L), + 4 + ), + 373672 + ); + + // gentest-6755 + assertEqual( + perft( + Board(0x9f204010a04f00L, 0x4200000000001002L, 0x2400000004000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x14a05f9fL, 0xff9f204000000000L, false, 0, 0x81L), + 4 + ), + 416595 + ); + + // gentest-6756 + assertEqual( + perft( + Board(0x9b046010a04f00L, 0x4200000000001002L, 0x2400000800000004L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0x810a05f9fL, 0xff9b046000000000L, true, 0, 0x81L), + 4 + ), + 532304 + ); + + // gentest-6757 + assertEqual( + perft( + Board(0x9b046011a04e00L, 0x200200000001002L, 0x2400000800000004L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x811a0de1fL, 0xbf9b246000000000L, false, 0, 0x1L), + 4 + ), + 666910 + ); + + // gentest-6758 + assertEqual( + perft( + Board(0x9b042011a04e00L, 0x200200000001002L, 0x2400100000000004L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x10001180de1fL, 0xbf9b242000200000L, true, 0, 0x1L), + 4 + ), + 700225 + ); + + // gentest-6759 + assertEqual( + perft( + Board(0x9b042011844a00L, 0x200200000001002L, 0x2400000004000004L, 0x8100000000008001L, + 0x800000000000008L, 0x1000000000000010L, 0x15849a1fL, 0xbf9b242000004000L, false, 0, 0x1L), + 4 + ), + 642878 + ); + + // gentest-6760 + assertEqual( + perft( + Board(0x9b040011844a00L, 0x200008000001002L, 0x2400000004000004L, 0x8100000000008001L, + 0x800000000000400L, 0x1000000000000010L, 0x5849e17L, 0xbf9b048010004000L, true, 0, 0x1L), + 4 + ), + 605586 + ); + + // gentest-6761 + assertEqual( + perft( + Board(0x9b0400018c4a00L, 0x200008000001002L, 0x2400000000000004L, 0x8100000000008001L, + 0x800000000020000L, 0x1000000000000010L, 0x1869a17L, 0xbf9b048000084000L, false, 0, 0x1L), + 4 + ), + 447638 + ); + + // gentest-6762 + assertEqual( + perft( + Board(0x9b0400010c0a00L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, + 0x800000000020000L, 0x1000000000002000L, 0x106ba07L, 0xbf9b048000880000L, true, 0, 0x0L), + 4 + ), + 115747 + ); + + // gentest-6763 + assertEqual( + perft( + Board(0x9b0400010c0a00L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, 0x100020000L, + 0x1000000000004000L, 0x106da07L, 0xb79b048100880000L, false, 0, 0x0L), + 4 + ), + 752154 + ); + + // gentest-6764 + assertEqual( + perft( + Board(0x9b0400010c0a00L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, 0x200010000L, + 0x800000000004000L, 0x105da07L, 0xaf9b048200880000L, true, 0, 0x0L), + 4 + ), + 547406 + ); + + // gentest-6765 + assertEqual( + perft( + Board(0x8b1400010e0800L, 0x200008000801002L, 0x2400000000000004L, 0x8100000000008001L, 0x200000100L, + 0x800000000004000L, 0x106d907L, 0xaf8b148200880000L, false, 0, 0x0L), + 4 + ), + 573157 + ); + + // gentest-6766 + assertEqual( + perft( + Board(0x8b1400010e0800L, 0x200008000811000L, 0x410000000000004L, 0x8100000000008001L, 0x100000100L, + 0x800000000004000L, 0x107d905L, 0x8f9b148100880000L, true, 0, 0x0L), + 4 + ), + 756915 + ); + + // gentest-6767 + assertEqual( + perft( + Board(0x8b1400010e0800L, 0x200008000c10000L, 0x410000000000004L, 0x8100000000008001L, 0x4000000002L, + 0x800000000004000L, 0x147c807L, 0x8f9b14c000880000L, false, 0, 0x0L), + 4 + ), + 716538 + ); + + // gentest-6768 + assertEqual( + perft( + Board(0x891402010e0800L, 0x200008000c10000L, 0x410000000000004L, 0x8100000000008100L, 0x400000000002L, + 0x800000000004000L, 0x147c906L, 0x8f99548200880000L, true, 0, 0x0L), + 4 + ), + 838025 + ); + + // gentest-6769 + assertEqual( + perft( + Board(0x891400050a0800L, 0x200008200c00000L, 0x12000000000004L, 0x8100000000008100L, 0x400000000002L, + 0x800000000004000L, 0x20542c906L, 0x8b9b548000880000L, false, 0, 0x0L), + 4 + ), + 995729 + ); + + // gentest-6770 + assertEqual( + perft( + Board(0x891404010a0800L, 0x200008200800000L, 0x12000000000004L, 0x2100000000008100L, 0x400002L, + 0x800000000004000L, 0x60102c906L, 0x2b9b148000c80000L, true, 0, 0x0L), + 4 + ), + 46360 + ); + + // gentest-6771 + assertEqual( + perft( + Board(0x891404010a0800L, 0x200008200800000L, 0x410000000000004L, 0x2100000000008200L, 0x400002L, + 0x800000000000080L, 0x601028a86L, 0x2f99148000c80000L, false, 0, 0x0L), + 4 + ), + 653072 + ); + + // gentest-6772 + assertEqual( + perft( + Board(0x891404010a0800L, 0x200008000840000L, 0x400080000000004L, 0x2100000000008200L, 0x40000002L, + 0x800000000000080L, 0x401068a86L, 0x2f891c8040880000L, true, 0, 0x0L), + 4 + ), + 837906 + ); + + // gentest-6773 + assertEqual( + perft( + Board(0x88140503080800L, 0x200008000840000L, 0x400080000000004L, 0x2100000000008200L, 0x40000100L, + 0x800000000000080L, 0x403048b84L, 0x2f881c8140880000L, false, 0, 0x0L), + 4 + ), + 1103806 + ); + + // gentest-6774 + assertEqual( + perft( + Board(0x88040103080800L, 0x200008000840000L, 0x400000400000004L, 0x2100000000008200L, 0x100000400000L, + 0x800000000000080L, 0x100003048a84L, 0x2f88048500c80000L, true, 0, 0x0L), + 4 + ), + 2694444 + ); + + // gentest-6775 + assertEqual( + perft( + Board(0x88040103080800L, 0x200008000840000L, 0x400000400000004L, 0x2100000000008200L, + 0x4000100000000000L, 0x800000000000080L, 0x100003048a84L, 0x6f88048500880000L, false, 0, 0x0L), + 4 + ), + 2107257 + ); + + // gentest-6776 + assertEqual( + perft( + Board(0x88040103080800L, 0x200000040840000L, 0x400000400000004L, 0x2100000000008200L, + 0x4000001000000000L, 0x800000000000080L, 0x1003048a84L, 0x6f88040540880000L, true, 0, 0x0L), + 4 + ), + 2335481 + ); + + // gentest-6777 + assertEqual( + perft( + Board(0x88040103080800L, 0x200000840800000L, 0x400000400000004L, 0x2100000000008200L, 0x400010000000L, + 0x800000000000080L, 0x813008a84L, 0x2f88440540880000L, false, 0, 0x0L), + 4 + ), + 2437669 + ); + + // gentest-6778 + assertEqual( + perft( + Board(0x88040103080800L, 0x200000040840000L, 0x2000400000004L, 0x1100000000008200L, 0x400010000000L, + 0x800000000000080L, 0x13048a84L, 0x1b8a440540880000L, true, 0, 0x0L), + 4 + ), + 2622716 + ); + + // gentest-6779 + assertEqual( + perft( + Board(0x80040903080800L, 0x200000040840000L, 0x2000400000004L, 0x1100000000008200L, 0x401000000000L, + 0x800000000004000L, 0x100304ca04L, 0x1b82440d40880000L, false, 0, 0x0L), + 4 + ), + 2181893 + ); + + // gentest-6780 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100000000008200L, 0x401000000000L, + 0x800000000004000L, 0x140104ca04L, 0x8b82440940080040L, true, 0, 0x0L), + 4 + ), + 1430784 + ); + + // gentest-6781 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100000000008200L, + 0x1004000000000000L, 0x800000000000080L, 0x4000401048a84L, 0x9b82040940080040L, false, 0, 0x0L), + 4 + ), + 18254 + ); + + // gentest-6782 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100020000008000L, 0x100000L, + 0x4000000000080L, 0x20401048884L, 0x8386040940180040L, true, 0, 0x0L), + 4 + ), + 760941 + ); + + // gentest-6783 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000040040040L, 0x2000000000004L, 0x8100000000008000L, 0x100000L, + 0x8000000000080L, 0x100000401048884L, 0x828a040940180040L, false, 0, 0x0L), + 4 + ), + 688447 + ); + + // gentest-6784 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000040040040L, 0x100000000000004L, 0x8000000000800000L, 0x4000000000L, + 0x8000000000080L, 0x401840884L, 0x8388044940080040L, true, 0, 0x0L), + 4 + ), + 457705 + ); + + // gentest-6785 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000000048040L, 0x100000000000004L, 0xa000000000000000L, 0x4000000000L, + 0x8000000000080L, 0x2000000401040884L, 0x8388044900088040L, false, 0, 0x0L), + 4 + ), + 430517 + ); + + // gentest-6786 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000000008042L, 0x100000000000004L, 0xa000000000000000L, 0x20L, + 0x8000000000080L, 0x2000000401000886L, 0x8388040900088060L, true, 0, 0x0L), + 4 + ), + 183045 + ); + + // gentest-6787 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8400000000000000L, 0x2000000000L, + 0x8000000000040L, 0x400000401000846L, 0x8388042900088000L, false, 0, 0x0L), + 4 + ), + 123602 + ); + + // gentest-6788 + assertEqual( + perft( + Board(0x80040d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8400000000000000L, 0x400000L, + 0x8000000000080L, 0x400000401000886L, 0x8388040900488000L, true, 0, 0x0L), + 4 + ), + 123777 + ); + + // gentest-6789 + assertEqual( + perft( + Board(0x80000d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8000010000000000L, 0x80000000000L, + 0x8000000000080L, 0x10401000886L, 0x8388080900088000L, false, 0, 0x0L), + 4 + ), + 213237 + ); + + // gentest-6790 + assertEqual( + perft( + Board(0x80000d01080800L, 0x200000000008002L, 0x100000000000004L, 0x8000010000000000L, 0x100000000000L, + 0x400000000004000L, 0x10401004806L, 0x8780100900088000L, true, 0, 0x0L), + 4 + ), + 286272 + ); + + // gentest-6791 + assertEqual( + perft( + Board(0x80000d01080800L, 0x40000008400L, 0x100000000000004L, 0x8000010000000000L, 0x100000000000L, + 0x400000000004000L, 0x10401004c04L, 0x8580140900088000L, false, 0, 0x0L), + 4 + ), + 378186 + ); + + // gentest-6792 + assertEqual( + perft( + Board(0x80000c01080800L, 0x40000008400L, 0x100000000000004L, 0x1000000100000000L, 0x100000000000L, + 0x400000000004000L, 0x501004c04L, 0x1580140800088000L, true, 0, 0x0L), + 4 + ), + 385117 + ); + + // gentest-6793 + assertEqual( + perft( + Board(0x80000c01080800L, 0x40000008010L, 0x100000000000004L, 0x2000000100000000L, 0x100000000000L, + 0x400000000400000L, 0x501400814L, 0x2580140800088000L, false, 0, 0x0L), + 4 + ), + 280857 + ); + + // gentest-6794 + assertEqual( + perft( + Board(0x80000c01080800L, 0x200000000008400L, 0x100000000000004L, 0x2000000100000000L, 0x1000000000L, + 0x400000000400000L, 0x501400c04L, 0x2780001800088000L, true, 0, 0x0L), + 4 + ), + 82158 + ); + + // gentest-6795 + assertEqual( + perft( + Board(0x80000c01080800L, 0x200000000008400L, 0x100000000000004L, 0x120000000L, 0x1000000000L, + 0x400000000800000L, 0x501800c04L, 0x780001820088000L, false, 0, 0x0L), + 4 + ), + 430258 + ); + + // gentest-6796 + assertEqual( + perft( + Board(0x80000c01080800L, 0x8000000018000L, 0x100000000000004L, 0x108000000L, 0x1000000000L, + 0x400000000800000L, 0x501810804L, 0x588001808088000L, true, 0, 0x0L), + 4 + ), + 182829 + ); + + // gentest-6797 + assertEqual( + perft( + Board(0x80040801080800L, 0x8000004008000L, 0x100000000000004L, 0x108000000L, 0x80000000000L, + 0x400000000800000L, 0x40105800804L, 0x588080808088000L, false, 0, 0x0L), + 4 + ), + 280044 + ); + + // gentest-6798 + assertEqual( + perft( + Board(0x80040801080800L, 0x404008000L, 0x100000000000004L, 0x208000000L, 0x800000000000000L, + 0x400000000800000L, 0x40205800804L, 0xd80000c08088000L, true, 0, 0x0L), + 4 + ), + 402262 + ); + + // gentest-6799 + assertEqual( + perft( + Board(0x80040900080800L, 0x444000000L, 0x100000000000004L, 0x200000008000000L, 0x800000000000000L, + 0x400000000800000L, 0x200040104800804L, 0xd80000c48080000L, false, 0, 0x0L), + 4 + ), + 17985 + ); + + // gentest-6800 + assertEqual( + perft( + Board(0x80040900080800L, 0x8000044000000L, 0x100000000000200L, 0x8000000L, 0x800000000000000L, + 0x200000000800000L, 0x40104800a00L, 0xb88000848080000L, true, 0, 0x0L), + 4 + ), + 238998 + ); + + def batch17(): Unit = + // gentest-6801 + assertEqual( + perft( + Board(0x80040900080800L, 0x8800004000000L, 0x100000000000040L, 0x0L, 0x800000000000000L, + 0x200000000800000L, 0x40104800840L, 0xb88800800080000L, false, 0, 0x0L), + 4 + ), + 204871 + ); + + // gentest-6802 + assertEqual( + perft( + Board(0x80000900080800L, 0x28000000100000L, 0x40000000040L, 0x0L, 0x800000000000000L, + 0x200000000800000L, 0x100900840L, 0xaa8040800080000L, true, 0, 0x0L), + 4 + ), + 235185 + ); + + // gentest-6803 + assertEqual( + perft( + Board(0x80000900080800L, 0x20001000100000L, 0x40000000040L, 0x0L, 0x800000000000000L, + 0x200000000400000L, 0x100500840L, 0xaa0041800080000L, false, 0, 0x0L), + 4 + ), + 301797 + ); + + // gentest-6804 + assertEqual( + perft( + Board(0x80000900080800L, 0x20003000000000L, 0x40000000040L, 0x0L, 0x20000000000L, 0x100000000400000L, + 0x2100400840L, 0x1a0061800080000L, true, 0, 0x0L), + 4 + ), + 427832 + ); + + // gentest-6805 + assertEqual( + perft( + Board(0x80000900080800L, 0x4020000040000000L, 0x40000000040L, 0x0L, 0x20000000000L, + 0x100000000400000L, 0x4000000100400840L, 0x1a0060840080000L, false, 0, 0x0L), + 4 + ), + 305985 + ); + + // gentest-6806 + assertEqual( + perft( + Board(0x80000900080000L, 0x4020000040000000L, 0x40000000040L, 0x0L, 0x800L, 0x100000000800000L, + 0x4000000100800040L, 0x1a0040840080800L, true, 0, 0x0L), + 4 + ), + 264268 + ); + + // gentest-6807 + assertEqual( + perft( + Board(0x80010800080000L, 0x4020000040000000L, 0x40000008000L, 0x0L, 0x200L, 0x100000000800000L, + 0x4000010000808000L, 0x1a0040840080200L, false, 0, 0x0L), + 4 + ), + 302419 + ); + + // gentest-6808 + assertEqual( + perft( + Board(0x80010800080000L, 0x4020000040000000L, 0x4040000000000L, 0x0L, 0x400000000L, + 0x100000000800000L, 0x4004010000800000L, 0x1a0040c40080000L, true, 0, 0x0L), + 4 + ), + 370361 + ); + + // gentest-6809 + assertEqual( + perft( + Board(0x80010800080000L, 0x4020000000008000L, 0x10040000000000L, 0x0L, 0x400000000L, + 0x100000000800000L, 0x4010010000800000L, 0x1a0040c00088000L, false, 0, 0x0L), + 4 + ), + 226282 + ); + + // gentest-6810 + assertEqual( + perft( + Board(0x80010800080000L, 0x4020000000000020L, 0x40080000000L, 0x0L, 0x80000000000L, + 0x100000000800000L, 0x4000010080800000L, 0x1a00c0800080020L, true, 0, 0x0L), + 4 + ), + 199924 + ); + + // gentest-6811 + assertEqual( + perft( + Board(0x80010800080000L, 0x20002000100000L, 0x40080000000L, 0x0L, 0x80000000000L, 0x100000000800000L, + 0x12080800000L, 0x1a00c0800180000L, false, 0, 0x0L), + 4 + ), + 304764 + ); + + // gentest-6812 + assertEqual( + perft( + Board(0x80010800080000L, 0x20002000000020L, 0x40000002000L, 0x0L, 0x100000000000L, 0x100000000800000L, + 0x12000802000L, 0x1a0140800080020L, true, 0, 0x0L), + 4 + ), + 211282 + ); + + // gentest-6813 + assertEqual( + perft( + Board(0x80010800080000L, 0x20002000000020L, 0xc0000000000L, 0x0L, 0x1000L, 0x100000000800000L, + 0x92000800000L, 0x1a0040800081020L, false, 0, 0x0L), + 4 + ), + 346120 + ); + + // gentest-6814 + assertEqual( + perft( + Board(0x80010800080000L, 0x20002000000020L, 0x2000000001000000L, 0x0L, 0x200L, 0x100000000800000L, + 0x2000012000800000L, 0x1a0000801080220L, true, 0, 0x0L), + 4 + ), + 497488 + ); + + // gentest-6815 + assertEqual( + perft( + Board(0x80010800080000L, 0x20002000000800L, 0x80001000000L, 0x0L, 0x200L, 0x100000000004000L, + 0x92000004000L, 0x1a0000801080a00L, false, 0, 0x0L), + 4 + ), + 640260 + ); + + // gentest-6816 + assertEqual( + perft( + Board(0x80010800080000L, 0x40008000800L, 0x80001000000L, 0x0L, 0x200L, 0x100000000004000L, + 0x90008004000L, 0x180040801080a00L, true, 0, 0x0L), + 4 + ), + 653712 + ); + + // gentest-6817 + assertEqual( + perft( + Board(0x81000800080000L, 0x40000001800L, 0x80001000000L, 0x0L, 0x2000000000000L, 0x100000000004000L, + 0x1080000005000L, 0x182040801080800L, false, 0, 0x0L), + 4 + ), + 603657 + ); + + // gentest-6818 + assertEqual( + perft( + Board(0x81000800080000L, 0x40000000060L, 0x80000020000L, 0x0L, 0x2000000000000L, 0x100000000004000L, + 0x1080000004040L, 0x1820408000a0020L, true, 0, 0x0L), + 4 + ), + 351979 + ); + + // gentest-6819 + assertEqual( + perft( + Board(0x1800800080000L, 0x40000000060L, 0x80020000L, 0x0L, 0x2000000000000L, 0x100000000004000L, + 0x1000080004040L, 0x1028408000a0020L, false, 0, 0x0L), + 4 + ), + 231820 + ); + + // gentest-6820 + assertEqual( + perft( + Board(0x1800800080000L, 0x40000000060L, 0x800000001000000L, 0x0L, 0x2000000000000L, + 0x100000000004000L, 0x801000000004040L, 0x102840801080020L, true, 0, 0x0L), + 4 + ), + 256412 + ); + + // gentest-6821 + assertEqual( + perft( + Board(0x1800800080000L, 0x40000001020L, 0x800000000000008L, 0x0L, 0x2000000000000L, + 0x100000000200000L, 0x801000000201000L, 0x102840800080028L, false, 0, 0x0L), + 4 + ), + 162012 + ); + + // gentest-6822 + assertEqual( + perft( + Board(0x1800800080000L, 0x40000009000L, 0x800000000000008L, 0x0L, 0x20000L, 0x100000040000000L, + 0x801000040001000L, 0x1008408000a8008L, true, 0, 0x0L), + 4 + ), + 88040 + ); + + // gentest-6823 + assertEqual( + perft( + Board(0x800800080000L, 0x1000000009000L, 0x800000000000008L, 0x0L, 0x20000L, 0x100000000004000L, + 0x800000000005000L, 0x1018008000a8008L, false, 0, 0x0L), + 4 + ), + 237258 + ); + + // gentest-6824 + assertEqual( + perft( + Board(0x800800080000L, 0x400000008008000L, 0x800000000000008L, 0x0L, 0x20000000000L, + 0x100000000004000L, 0x800000008004000L, 0x500820800088008L, true, 0, 0x0L), + 4 + ), + 418451 + ); + + // gentest-6825 + assertEqual( + perft( + Board(0x800800080000L, 0x400000000008400L, 0x800000000000008L, 0x0L, 0x0L, 0x100000000000040L, + 0x800000000000440L, 0x500800800088008L, false, 0, 0x0L), + 4 + ), + 86948 + ); + + // gentest-6826 + assertEqual( + perft( + Board(0x800800080000L, 0x20000008001L, 0x800000001000000L, 0x0L, 0x0L, 0x100000000000040L, + 0x800000000000041L, 0x100820801088000L, true, 0, 0x0L), + 4 + ), + 56944 + ); + + // gentest-6827 + assertEqual( + perft( + Board(0x800800080000L, 0x20000008001L, 0x44000000000L, 0x0L, 0x0L, 0x100000000002000L, 0x4000002001L, + 0x100860800088000L, false, 0, 0x0L), + 4 + ), + 80434 + ); + + // gentest-6828 + assertEqual( + perft( + Board(0x4800080000L, 0x20000008400L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000002000L, 0x2400L, + 0x1100024800088000L, true, 0, 0x0L), + 4 + ), + 43234 + ); + + // gentest-6829 + assertEqual( + perft( + Board(0x4800080000L, 0x4018000L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000000010L, 0x10010L, + 0x1100004804088000L, false, 0, 0x0L), + 4 + ), + 21675 + ); + + // gentest-6830 + assertEqual( + perft( + Board(0x4800080000L, 0x20000210000L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000000800L, 0x10800L, + 0x1100024800280000L, true, 0, 0x0L), + 4 + ), + 18764 + ); + + // gentest-6831 + assertEqual( + perft( + Board(0x4800080000L, 0x204200000L, 0x1000000000000000L, 0x0L, 0x0L, 0x100000000000008L, 0x200000008L, + 0x1100004804280000L, false, 0, 0x0L), + 4 + ), + 26987 + ); + + // gentest-6832 + assertEqual( + perft( + Board(0x4800080000L, 0x4001004000000L, 0x1000000000000000L, 0x0L, 0x0L, 0x200000000000008L, + 0x4000000000008L, 0x1200005804080000L, true, 0, 0x0L), + 4 + ), + 32599 + ); + + // gentest-6833 + assertEqual( + perft( + Board(0x4800080000L, 0x1004010000L, 0x400000000000L, 0x0L, 0x0L, 0x200000000000008L, 0x10008L, + 0x200405804080000L, false, 0, 0x0L), + 4 + ), + 25483 + ); + + // gentest-6834 + assertEqual( + perft( + Board(0x4800080000L, 0x1000110000L, 0x20000000000000L, 0x0L, 0x0L, 0x200000000000800L, 0x10800L, + 0x220005800180000L, true, 0, 0x0L), + 4 + ), + 35919 + ); + + // gentest-6835 + assertEqual( + perft( + Board(0x4800000000L, 0x40000010000L, 0x20000000000000L, 0x0L, 0x0L, 0x200000000080000L, 0x90000L, + 0x220044800000000L, false, 0, 0x0L), + 4 + ), + 28545 + ); + + // gentest-6836 + assertEqual( + perft( + Board(0x4800000000L, 0x800000000000002L, 0x20000000000000L, 0x0L, 0x0L, 0x4000000080000L, 0x80002L, + 0x824004800000000L, true, 0, 0x0L), + 4 + ), + 25573 + ); + + // gentest-6837 + assertEqual( + perft( + Board(0x4800000000L, 0x800000000000800L, 0x20000000000000L, 0x0L, 0x0L, 0x200000008000000L, + 0x8000800L, 0xa20004800000000L, false, 0, 0x0L), + 4 + ), + 22668 + ); + + // gentest-6838 + assertEqual( + perft( + Board(0xff00000000ff00L, 0x4200000000000042L, 0x2400000000000024L, 0x8100000000000081L, + 0x800000000000008L, 0x1000000000000010L, 0xffffL, 0xffff000000000000L, true, 0, + 0x8100000000000081L), + 4 + ), + 197281 + ); From 3f22196c557d6ef0ff2037f8bbb714a7c353465d Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Mon, 4 Nov 2024 20:21:27 -0600 Subject: [PATCH 2/9] maybe fix github workflow --- .github/workflows/test.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c556d45..9b1b397 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,12 +3,12 @@ name: Test on: [push, pull_request] jobs: - openjdk17: + test: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: actions/setup-java@v3 + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 with: distribution: temurin - java-version: 17 + java-version: 21 - run: sbt test From 29d4c96c981b45ce07ee8f72d6b912d128ec4648 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 5 Nov 2024 11:36:36 +0100 Subject: [PATCH 3/9] upgrade scala from 3.4.2 to 3.5.2 highlights a @tailrec problem See build error: TailRec optimisation not applicable, method attackLoop contains no recursive calls --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index b57e5ad..4a06839 100644 --- a/build.sbt +++ b/build.sbt @@ -1,5 +1,5 @@ lazy val compression = Project("compression", file(".")) -scalaVersion := "3.4.2" +scalaVersion := "3.5.2" name := "compression" organization := "org.lichess" version := "2.0" From 12b6b24b5ac16794a0fa7e72b67614673dfcae0c Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Tue, 5 Nov 2024 07:37:31 -0600 Subject: [PATCH 4/9] remove impossible @tailrec directive --- src/main/scala/game/Bitboard.scala | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/scala/game/Bitboard.scala b/src/main/scala/game/Bitboard.scala index 77134e4..89690b4 100644 --- a/src/main/scala/game/Bitboard.scala +++ b/src/main/scala/game/Bitboard.scala @@ -27,7 +27,6 @@ object Bitboard: private val ATTACKS: Array[Long] = Array.ofDim(88772) def slidingAttacks(square: Int, occupied: Long, deltas: Array[Int]): Long = - @tailrec def attackLoop(deltaIndex: Int, acc: Long): Long = if deltaIndex >= deltas.length then acc else From a9aa7574d30195c2a47b4648d50071d6dfdedad7 Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Tue, 5 Nov 2024 15:21:25 +0100 Subject: [PATCH 5/9] readme disclaimer --- README.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index eb0cb88..2cbf286 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,17 @@ -Chess clock and move compression algorithms for lichess.org -=========================================================== +# Chess clock and move compression algorithms for lichess.org -Blog posts ----------- +## Disclaimer -* [A better game clock history](https://lichess.org/blog/WOEVrjAAALNI-fWS/a-better-game-clock-history) -* [Developer update: 275% improved game compression](https://lichess.org/blog/Wqa7GiAAAOIpBLoY/developer-update-275-improved-game-compression) +This library was migrated from the Java language to the Scala language. +Only the language syntax changed to Scala; the design and paradigms of the Java program were kept. +This is not how Scala code should be written, it is not idiomatic. -License -------- +## Blog posts + +- [A better game clock history](https://lichess.org/blog/WOEVrjAAALNI-fWS/a-better-game-clock-history) +- [Developer update: 275% improved game compression](https://lichess.org/blog/Wqa7GiAAAOIpBLoY/developer-update-275-improved-game-compression) + +## License This library is licensed under the GNU Affero General Public License 3 or any later version at your option. See LICENSE for the full license text. From 563f1ed80291b46f76a6327f3b95b4a8912ece02 Mon Sep 17 00:00:00 2001 From: Thanh Le Date: Tue, 5 Nov 2024 21:30:31 +0100 Subject: [PATCH 6/9] Remove unused imports --- src/main/scala/game/Encoder.scala | 1 - src/main/scala/game/MoveList.scala | 2 -- 2 files changed, 3 deletions(-) diff --git a/src/main/scala/game/Encoder.scala b/src/main/scala/game/Encoder.scala index 5fd5d2d..57262ee 100644 --- a/src/main/scala/game/Encoder.scala +++ b/src/main/scala/game/Encoder.scala @@ -1,6 +1,5 @@ package org.lichess.compression.game -import java.util.regex.{ Matcher, Pattern } import org.lichess.compression.BitOps object Encoder: diff --git a/src/main/scala/game/MoveList.scala b/src/main/scala/game/MoveList.scala index 9c91b3a..6885883 100644 --- a/src/main/scala/game/MoveList.scala +++ b/src/main/scala/game/MoveList.scala @@ -1,7 +1,5 @@ package org.lichess.compression.game -import scala.collection.mutable.ArrayBuffer - final class MoveList(capacity: Int = 256): private val buffer = Array.tabulate(capacity)(_ => Move()) private val comparator = java.util.Comparator.comparingInt[Move](_.score).reversed() From b738850cec4fab68d19c499fe01998007c62e59a Mon Sep 17 00:00:00 2001 From: Thibault Duplessis Date: Wed, 6 Nov 2024 12:09:14 +0100 Subject: [PATCH 7/9] Move is not a case class --- src/main/scala/game/Move.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/game/Move.scala b/src/main/scala/game/Move.scala index e9c4b5f..5a90d7f 100644 --- a/src/main/scala/game/Move.scala +++ b/src/main/scala/game/Move.scala @@ -1,6 +1,6 @@ package org.lichess.compression.game -final case class Move( +final class Move( var `type`: Int = 0, var role: Role = null, var from: Int = 0, From 5db83dfc2c12ceba67c94a9eddbb41a3a866801a Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Sun, 19 Jan 2025 12:54:02 -0600 Subject: [PATCH 8/9] apply IntArrayList.java's optimization to BitOps.Writer --- .scalafmt.conf | 8 +++++-- build.sbt | 4 ++-- project/build.properties | 2 +- src/main/scala/BitOps.scala | 36 ++++++++++++++++-------------- src/main/scala/game/Encoder.scala | 10 ++++----- src/main/scala/game/Move.scala | 2 +- src/main/scala/game/MoveList.scala | 2 +- 7 files changed, 35 insertions(+), 29 deletions(-) diff --git a/.scalafmt.conf b/.scalafmt.conf index 2e1e980..9ca8580 100644 --- a/.scalafmt.conf +++ b/.scalafmt.conf @@ -1,9 +1,13 @@ -version = "3.7.10" +version = "3.8.4" runner.dialect = scala3 align.preset = more maxColumn = 110 spaces.inImportCurlyBraces = true -rewrite.rules = [SortImports, RedundantParens, SortModifiers] +rewrite.rules = [SortModifiers] rewrite.redundantBraces.stringInterpolation = true + +rewrite.scala3.convertToNewSyntax = yes +rewrite.scala3.removeOptionalBraces = yes +rewrite.rules = [AvoidInfix] docstrings.style = keep // don't format comment diff --git a/build.sbt b/build.sbt index 4a06839..15720e5 100644 --- a/build.sbt +++ b/build.sbt @@ -1,9 +1,9 @@ lazy val compression = Project("compression", file(".")) -scalaVersion := "3.5.2" +scalaVersion := "3.6.2" name := "compression" organization := "org.lichess" version := "2.0" -resolvers += "lila-maven" at "https://raw.githubusercontent.com/ornicar/lila-maven/master" +resolvers += "lila-maven".at("https://raw.githubusercontent.com/ornicar/lila-maven/master") libraryDependencies += "org.specs2" %% "specs2-core" % "4.17.0" % Test scalacOptions := Seq( "-encoding", diff --git a/project/build.properties b/project/build.properties index 09feeee..73df629 100644 --- a/project/build.properties +++ b/project/build.properties @@ -1 +1 @@ -sbt.version=1.10.4 +sbt.version=1.10.7 diff --git a/src/main/scala/BitOps.scala b/src/main/scala/BitOps.scala index 5e0bbf4..1ede85a 100644 --- a/src/main/scala/BitOps.scala +++ b/src/main/scala/BitOps.scala @@ -1,15 +1,17 @@ package org.lichess.compression object BitOps: + private val BitMasks: Array[Int] = + Array.tabulate(32)(i => (1 << i) - 1) - def writeSigned(values: Array[Int], writer: BitOps.Writer): Unit = + def writeSigned(values: Array[Int], writer: Writer): Unit = values.foreach(n => writeSigned(n, writer)) - def writeSigned(n: Int, writer: BitOps.Writer): Unit = + def writeSigned(n: Int, writer: Writer): Unit = // zigzag encode writeUnsigned((n << 1) ^ (n >> 31), writer) - def writeUnsigned(n: Int, writer: BitOps.Writer): Unit = + def writeUnsigned(n: Int, writer: Writer): Unit = if (n & ~0x1f) == 0 then writer.writeBits(n, 6) else writer.writeBits(n | 0x20, 6) @@ -20,7 +22,7 @@ object BitOps: // While loop terminated, so 4th bit is 0 writer.writeBits(remaining, 4) - def readUnsigned(reader: BitOps.Reader): Int = + def readUnsigned(reader: Reader): Int = var n = reader.readBits(6) if n > 0x1f then n &= 0x1f @@ -35,19 +37,20 @@ object BitOps: n |= curVal << curShift n - def readSigned(reader: BitOps.Reader): Int = + def readSigned(reader: Reader): Int = val n = readUnsigned(reader) (n >>> 1) ^ -(n & 1) // zigzag decode - def readSigned(reader: BitOps.Reader, numMoves: Int): Array[Int] = + def readSigned(reader: Reader, numMoves: Int): Array[Int] = Array.tabulate(numMoves) { _ => val n = readUnsigned(reader) (n >>> 1) ^ -(n & 1) // zigzag decode } + import java.nio.ByteBuffer + class Reader(bytes: Array[Byte]): - private val BitMasks = BitOps.getBitMasks - private val bb = java.nio.ByteBuffer.wrap(bytes) + private val bb = ByteBuffer.wrap(bytes) private var numRemainingBits = 0 private var pendingBits = 0 @@ -73,9 +76,9 @@ object BitOps: readNext() (res << neededBits) | readBits(neededBits) - class Writer: - private val BitMasks = BitOps.getBitMasks - private val buffer = collection.mutable.ArrayBuffer[Int]() + class Writer(initialCapacity: Int = 10): + private var buffer = Array[Int](initialCapacity) + private var index: Int = 0 private var numRemainingBits = 32 private var pendingBits = 0 @@ -84,19 +87,18 @@ object BitOps: numRemainingBits -= numBits if numRemainingBits >= 0 then pendingBits |= maskedData << numRemainingBits else - buffer.append(pendingBits | (maskedData >>> -numRemainingBits)) + if index == buffer.length then buffer = java.util.Arrays.copyOf(buffer, index + (index >> 1) + 5) + buffer(index) = pendingBits | (maskedData >>> -numRemainingBits); numRemainingBits += 32 pendingBits = maskedData << numRemainingBits + index += 1 def toArray(): Array[Byte] = val numPendingBytes = (39 - numRemainingBits) >> 3 - val bb = java.nio.ByteBuffer.allocate(4 * buffer.size + numPendingBytes) - buffer.foreach(bb.putInt) + val bb = ByteBuffer.allocate(4 * index + numPendingBytes) + for i <- 0 until index do bb.putInt(buffer(i)) if numPendingBytes == 4 then bb.putInt(pendingBits) else for i <- 0 until numPendingBytes do bb.put((pendingBits >>> (24 - i * 8)).toByte) bb.array() - private def getBitMasks: Array[Int] = - Array.tabulate(32)(i => (1 << i) - 1) - end BitOps diff --git a/src/main/scala/game/Encoder.scala b/src/main/scala/game/Encoder.scala index 57262ee..7e4c9ca 100644 --- a/src/main/scala/game/Encoder.scala +++ b/src/main/scala/game/Encoder.scala @@ -5,7 +5,7 @@ import org.lichess.compression.BitOps object Encoder: private val moveList = new ThreadLocal[MoveList]: - override def initialValue(): MoveList = new MoveList() + override def initialValue(): MoveList = MoveList() private val SAN_RE = "([NBKRQ])?([a-h])?([1-8])?x?([a-h][1-8])(?:=([NBRQK]))?[\\+#]?".r @@ -16,11 +16,11 @@ object Encoder: case 'R' => Role.ROOK case 'Q' => Role.QUEEN case 'K' => Role.KING - case _ => throw new IllegalArgumentException() + case _ => throw IllegalArgumentException() def encode(pgnMoves: Array[String]): Array[Byte] = - val writer = new BitOps.Writer() - val board = new Board() + val writer = BitOps.Writer() + val board = Board() val legals = moveList.get() for pgnMove <- pgnMoves do @@ -119,7 +119,7 @@ object Encoder: private def san(move: Move, legals: MoveList): String = move.`type` match case Move.NORMAL | Move.EN_PASSANT => - val builder = new StringBuilder(6) + val builder = StringBuilder(6) builder.append(move.role.symbol) if move.role != Role.PAWN then diff --git a/src/main/scala/game/Move.scala b/src/main/scala/game/Move.scala index 5a90d7f..17b9a0c 100644 --- a/src/main/scala/game/Move.scala +++ b/src/main/scala/game/Move.scala @@ -38,7 +38,7 @@ final class Move( def uci(): String = val toSquare = if `type` == Move.CASTLING then Square.combine(if to < from then Square.C1 else Square.G1, from) else to - val builder = new StringBuilder(if this.promotion == null then 4 else 5) + val builder = StringBuilder(if this.promotion == null then 4 else 5) builder.append((Square.file(from) + 'a').toChar) builder.append((Square.rank(from) + '1').toChar) builder.append((Square.file(toSquare) + 'a').toChar) diff --git a/src/main/scala/game/MoveList.scala b/src/main/scala/game/MoveList.scala index 6885883..f8729eb 100644 --- a/src/main/scala/game/MoveList.scala +++ b/src/main/scala/game/MoveList.scala @@ -51,7 +51,7 @@ final class MoveList(capacity: Int = 256): buffer(size) = tmp def pretty(): String = - val builder = new StringBuilder() + val builder = StringBuilder() for i <- 0 until size do val m = buffer(i) builder.append(s"${m.uci()} ") From c6bb04f929aaa08b8ce445b35b82bd0e8b9b7ddb Mon Sep 17 00:00:00 2001 From: Jonathan Gamble Date: Sun, 19 Jan 2025 12:58:14 -0600 Subject: [PATCH 9/9] maybe fix github workflow --- .github/workflows/test.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 9b1b397..7a44308 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -11,4 +11,7 @@ jobs: with: distribution: temurin java-version: 21 + cache: sbt + - name: Setup sbt + uses: sbt/setup-sbt@v1 - run: sbt test