+ void FillMove(Move move, HashProbeMove* decoded) {
+ if (!is_ok(move)) return;
+
+ Square from = from_sq(move);
+ Square to = to_sq(move);
+
+ if (type_of(move) == CASTLING) {
+ to = make_square(to > from ? FILE_G : FILE_C, rank_of(from));
+ }
+
+ decoded->set_from_sq(UCI::square(from));
+ decoded->set_to_sq(UCI::square(to));
+
+ if (type_of(move) == PROMOTION) {
+ decoded->set_promotion(std::string() + " PNBRQK"[promotion_type(move)]);
+ }
+ }
+
+ void ProbeMove(Position* pos, std::stack<StateInfo>* setup_states, bool invert, HashProbeLine* response) {