+ // update_opponent_stats() updates countermoves for prior opponent move, i.e.
+ // (ss-1)->currentMove. Called for both capture and non-capture moves.
+
+ void update_opponent_stats(const Position& pos, Stack* ss, Value bonus) {
+
+ Square prevSq = to_sq((ss-1)->currentMove);
+
+ CounterMoveStats* cmh = (ss-2)->counterMoves;
+ CounterMoveStats* fmh1 = (ss-3)->counterMoves;
+ CounterMoveStats* fmh2 = (ss-5)->counterMoves;
+
+ if (cmh)
+ cmh->update(pos.piece_on(prevSq), prevSq, bonus);
+
+ if (fmh1)
+ fmh1->update(pos.piece_on(prevSq), prevSq, bonus);
+
+ if (fmh2)
+ fmh2->update(pos.piece_on(prevSq), prevSq, bonus);
+ }
+
+