copy_tiles(x-1, y, 1);
ct = copy_tiles(x-1, y, 1); if (ct < 0) return ct;
static int copy_tiles_backward_pass(void) {	int x, y, n, m;	int diffs = 0;	for (y = ntiles_y - 1; y >= 0; y--) {	    for (x = ntiles_x - 1; x >= 0; x--) {		n = x + y * ntiles_x;		/* number of this tile */		if (! tile_has_diff[n]) {			continue;		}		m = x + (y-1) * ntiles_x;	/* neighboring tile upward */		if (y >= 1 && ! tile_has_diff[m] && tile_region[n].top_diff) {			if (! tile_tried[m]) {				tile_has_diff[m] = 2;				copy_tiles(x, y-1, 1);			}		}		m = (x-1) + y * ntiles_x;	/* neighboring tile to left */		if (x >= 1 && ! tile_has_diff[m] && tile_region[n].left_diff) {			if (! tile_tried[m]) {				tile_has_diff[m] = 2;				copy_tiles(x-1, y, 1);			}		}	    }	}	for (n=0; n < ntiles; n++) {		if (tile_has_diff[n]) {			diffs++;		}	}	return diffs;}