- else if ( (stmAttackers & st->blockersForKing[stm])
- && ((st->pinnersForKing[stm] & (occupied ^ (occupied & to))) == st->pinnersForKing[stm]))
- {
- // Pinned pieces can't attack so remove them from attackers
- stmAttackers ^= (stmAttackers & st->blockersForKing[stm]);
- if (!stmAttackers)
- return swapList[0];
- }
+ if ( (stmAttackers & pinned_pieces(stm))
+ && (st->pinnersForKing[stm] & occupied) == st->pinnersForKing[stm])
+ stmAttackers &= ~pinned_pieces(stm);
+
+ if (!stmAttackers)
+ return swapList[0];