+ ss->history = thisThread->history[moved_piece][to_sq(move)]
+ + (cmh ? (*cmh )[moved_piece][to_sq(move)] : VALUE_ZERO)
+ + (fmh ? (*fmh )[moved_piece][to_sq(move)] : VALUE_ZERO)
+ + (fmh2 ? (*fmh2)[moved_piece][to_sq(move)] : VALUE_ZERO)
+ + thisThread->fromTo.get(~pos.side_to_move(), move)
+ - 8000; // Correction factor
+
+ // Decrease/increase reduction by comparing opponent's stat score
+ if (ss->history > VALUE_ZERO && (ss-1)->history < VALUE_ZERO)
+ r -= ONE_PLY;
+
+ else if (ss->history < VALUE_ZERO && (ss-1)->history > VALUE_ZERO)
+ r += ONE_PLY;
+