Где ошибка в коде переворота двумерного массива?
У вас средняя строка 2 раза переворачивается. Потому что цикл внутри проходит по всей длине строки и меняет местами 2 элемента. Первую половину итераций строка будет переворачиваться, а вторю половину - переворачиваться обратно.

Надо отдельно обработать случай y == y1
Ну и хомутов ты тут повесил. Проверь что она переворачивается два раза.