pouchet.c 500 Bytes
for (int c0 = 1; c0 <= floord(Ny, 2) + 2; c0 += 1)
  for (int c1 = max(c0 - 1, c0 / 2 + 1); c1 <= min(c0, (Ny + 2 * c0) / 4); c1 += 1) {
    if (Ny + 2 * c0 >= 4 * c1 + 1) {
      for (int c2 = 1; c2 <= 2; c2 += 1) {
        S1(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1, c2);
        S2(c0 - c1, c1, 2 * c0 - 2 * c1, -2 * c0 + 4 * c1 - 1, c2);
      }
    } else {
      for (int c2 = 1; c2 <= 2; c2 += 1)
        S2((-Ny + 2 * c0) / 4, (Ny + 2 * c0) / 4, (-Ny / 2) + c0, Ny - 1, c2);
    }
  }