     cuDoubleComplex mesh[max_half_support * 2 + 1][max_half_support * 2 + 1]
   , double w
   ){
-  const int
-      x = blockIdx.x * blockDim.x + threadIdx.x
-    , y = blockIdx.y * blockDim.y + threadIdx.y
-    ;
+  __SET_MAP
   // mesh is symmetric, thus we need no recalc ph
-  double ph = w * (1.0 - sqrt(1.0 - mesh[max_half_support - x][max_half_support - y].x));
+  double ph = w * (1.0 - sqrt(1.0 - mesh[xl][yl].x));
   double s, c;
   sincos(2.0 * CUDART_PI * ph, &s, &c);
 
   cuDoubleComplex res = make_cuDoubleComplex(c, -s); // to get rid of conj later
 
-  mesh[max_half_support - x][max_half_support - y] = res;
-  mesh[max_half_support - x][max_half_support + y] = res;
-  mesh[max_half_support + x][max_half_support - y] = res;
-  mesh[max_half_support + x][max_half_support + y] = res;
+  mesh[xl][yl] = res;
+  mesh[xl][yr] = res;
+  mesh[xr][yl] = res;
+  mesh[xr][yr] = res;
 }
 
 // test instantiation

    ;
  cuDoubleComplex r2 = make_cuDoubleComplex(xs * xs + ys * ys, 0.0);

  mesh[max_half_support - x][max_half_support - y] = r2;
  mesh[max_half_support - x][max_half_support + y] = r2;
  mesh[max_half_support + x][max_half_support - y] = r2;
  mesh[max_half_support + x][max_half_support + y] = r2;
}

// test instantiation

void cut_out(
    int supp
  , cuDoubleComplex * dst
  , const cuDoubleComplex src[(max_half_support * 2 + 1) * oversample][(max_half_support * 2 + 1) * oversample]
  ) {
  const int
      x = blockIdx.x * blockDim.x + threadIdx.x
