if (depth < 0 || depth >= DEPTH_MAX
|| x1 < 0 || x1 >= HEIGHT || y1 < 0 || y1 >= WIDTH
|| x1 < 0 || x1 >= HEIGHT || y1 < 0 || y1 >= WIDTH) {
printf("DEBUG:%d,%d,%d,%d,%d\n", depth, x1, y1, x2, y2);
}
をswapの先頭に入れて実行してみたらdepthが5になってたりで、
大量に出てきたなり。
movement()やdown()等で与える引数を確認してみるべし。