+// Returns a square that will allow us to orient the board so that
+// strongSide is white and strongSide's only pawn is on the left
+// half of the board
+Square get_flip_sq(const Position& pos, Color strongSide) {
+
+ assert(pos.count<PAWN>(strongSide) == 1);
+
+ Square psq = pos.list<PAWN>(strongSide)[0];
+
+ return (FILE_H * (file_of(psq) >= FILE_E)) | (RANK_8 * int(strongSide));
+}
+
+Square operator^(Square s, Square flip_sq) {
+ assert(flip_sq == SQ_A1 || flip_sq == SQ_H1 || flip_sq == SQ_A8 || flip_sq == SQ_H8);
+ return Square(int(s) ^ int(flip_sq));
+}