NYVHTMLLUMBKBQSWO6SQDQ5KFACQLNCBRDDM5BH3OU6WWT54KC2AC
VFH3EJPYSVGK6HYH4B3SVYG7LPBSHEPRRGRH2QRAC4KYWAV3SSIQC
LWF4H4TMNZYUKTCVDALXQLBE3U5AXQJ3LLNUJJ7YGTLG6T2O33JAC
WTTQGET65BQV7NSFOI75JGCTWFS6R73OFZE4V63JYWAODNIOUAHQC
TB4YBE4CMWCLSKJ43QF6IU5HVYUUO33BLXVG7XDRLJS3IFIBQLYAC
BL3ZR4OWJM54HFXUNMUZKB5YQYVBT7ETFIXCOXWL6S5SZFM6IFDQC
TDHJSFFSJZBEZFMDHPLRSVB6CIVJ7AWGGNIC3WUCADQLQSIQKXDAC
6S6HHKOXBQ5ARL7S7PKMPDIAH3VTPOAPWWSMGY37RP2R2U662FBAC
_ = @mulWithOverflow(Board.BoardType, mut_occupancy, bishop_magic[square.int()], &mut_occupancy);
mut_occupancy >>= @intCast(Board.SquareType, @as(u7, 64) - bishop_relevant_bits[square.int()]);
mut_occupancy = @mulWithOverflow(mut_occupancy, bishop_magic[square.int()])[0];
mut_occupancy >>= @intCast(Board.SquareType, @as(u7, 64) -
bishop_relevant_bits[square.int()]);
_ = @mulWithOverflow(Board.BoardType, mut_occupancy, rook_magic[square.int()], &mut_occupancy);
mut_occupancy >>= @intCast(Board.SquareType, @as(u7, 64) - rook_relevant_bits[square.int()]);
mut_occupancy = @mulWithOverflow(mut_occupancy, rook_magic[square.int()])[0];
mut_occupancy >>= @intCast(Board.SquareType, @as(u7, 64) -
rook_relevant_bits[square.int()]);
var tmp2: Board.BoardType = undefined; // FIXME: ugly
_ = @mulWithOverflow(Board.BoardType, occupancies[index], magic, &tmp2);
var magic_index: usize = @intCast(usize, tmp2 >> @intCast(Board.SquareType, @as(u7, 64) - relevant));
const tmp2 = @mulWithOverflow(occupancies[index], magic)[0];
var magic_index: usize = @intCast(usize, tmp2 >>
@intCast(Board.SquareType, @as(u7, 64) - relevant));
.white => if (@subWithOverflow(SquareType, source_square, 8, &target_square))
continue,
.black => if (@addWithOverflow(SquareType, source_square, 8, &target_square))
continue,
.white => {
const ts = @subWithOverflow(source_square, 8);
if (ts[1] == 1) continue;
target_square = ts[0];
},
.black => {
const ts = @addWithOverflow(source_square, 8);
if (ts[1] == 1) continue;
target_square = ts[0];
},