- // WARNING: This is not a reversible operation. If we remove a piece in
- // do_move() and then replace it in undo_move() we will put it at the end of
- // the list and not in its original place, it means index[] and pieceList[]
- // are not guaranteed to be invariant to a do_move() + undo_move() sequence.
- byTypeBB[ALL_PIECES] ^= s;
- byTypeBB[pt] ^= s;
- byColorBB[c] ^= s;
- /* board[s] = NO_PIECE; */ // Not needed, will be overwritten by capturing
- Square lastSquare = pieceList[c][pt][--pieceCount[c][pt]];
- index[lastSquare] = index[s];
- pieceList[c][pt][index[lastSquare]] = lastSquare;
- pieceList[c][pt][pieceCount[c][pt]] = SQ_NONE;