- b ^= from;
- b ^= capsq;
- b |= to;
- return (attacks_bb<ROOK>(ksq, b) & pieces(ROOK, QUEEN, us))
- ||(attacks_bb<BISHOP>(ksq, b) & pieces(BISHOP, QUEEN, us));
+ Bitboard b = (occupied_squares() ^ from ^ capsq) | to;
+
+ return (attacks_bb< ROOK>(ksq, b) & pieces( ROOK, QUEEN, us))
+ | (attacks_bb<BISHOP>(ksq, b) & pieces(BISHOP, QUEEN, us));