- // Remove the captured piece
- byTypeBB[ALL_PIECES] ^= capsq;
- byTypeBB[capture] ^= capsq;
- byColorBB[them] ^= capsq;
-
- // Update piece list, move the last piece at index[capsq] position and
- // shrink the list.
- //
- // WARNING: This is a not reversible operation. When we will reinsert the
- // captured piece 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.
- Square lastSquare = pieceList[them][capture][--pieceCount[them][capture]];
- index[lastSquare] = index[capsq];
- pieceList[them][capture][index[lastSquare]] = lastSquare;
- pieceList[them][capture][pieceCount[them][capture]] = SQ_NONE;
+ // Update board and piece lists
+ remove_piece(capsq, them, capture);