separation_class2.c 488 Bytes
for (int c0 = 0; c0 < -(n % 8) + n; c0 += 8) {
  for (int c1 = 0; c1 < -(n % 8) + n; c1 += 8)
    for (int c2 = 0; c2 <= 7; c2 += 1)
      for (int c3 = 0; c3 <= 7; c3 += 1)
        A(c0 + c2, c1 + c3);
  for (int c2 = 0; c2 <= 7; c2 += 1)
    for (int c3 = 0; c3 < n % 8; c3 += 1)
      A(c0 + c2, -(n % 8) + n + c3);
}
for (int c1 = 0; c1 < n; c1 += 8)
  for (int c2 = 0; c2 < n % 8; c2 += 1)
    for (int c3 = 0; c3 <= min(7, n - c1 - 1); c3 += 1)
      A(-(n % 8) + n + c2, c1 + c3);