+ if (!pos.capture_or_promotion(ttMove))
+ {
+ Value bonus = Value(d * d + 2 * d - 2);
+ update_stats(pos, ss, ttMove, nullptr, 0, bonus);
+ }
+
+ // Extra penalty for a quiet TT move in previous ply when it gets refuted
+ if ((ss-1)->moveCount == 1 && !pos.captured_piece())
+ {
+ Value penalty = Value(d * d + 4 * d + 1);
+ Square prevSq = to_sq((ss-1)->currentMove);
+ update_cm_stats(ss-1, pos.piece_on(prevSq), prevSq, -penalty);
+ }
+ }