+ if (!pos.see_ge(move, Value(-(29 - std::min(lmrDepth, 17)) * lmrDepth * lmrDepth)))
+ continue;
+ }
+ else
+ {
+ // Capture history based pruning when the move doesn't give check
+ if ( !givesCheck
+ && lmrDepth < 1
+ && captureHistory[movedPiece][to_sq(move)][type_of(pos.piece_on(to_sq(move)))] < 0)
+ continue;
+
+ // Futility pruning for captures
+ if ( !givesCheck
+ && lmrDepth < 6
+ && !(PvNode && abs(bestValue) < 2)
+ && PieceValue[MG][type_of(movedPiece)] >= PieceValue[MG][type_of(pos.piece_on(to_sq(move)))]
+ && !ss->inCheck
+ && ss->staticEval + 267 + 391 * lmrDepth
+ + PieceValue[MG][type_of(pos.piece_on(to_sq(move)))] <= alpha)
+ continue;
+
+ // See based pruning
+ if (!pos.see_ge(move, Value(-202) * depth)) // (~25 Elo)