static void initSym() {
    Center1 c = new Center1();
    for (byte i = 0; i < 24; i++) {
      c.ct[i] = i;
    }
    Center1 d = new Center1(c.ct);
    Center1 e = new Center1(c.ct);
    Center1 f = new Center1(c.ct);

    for (int i = 0; i < 48; i++) {
      for (int j = 0; j < 48; j++) {
        for (int k = 0; k < 48; k++) {
          if (c.equals(d)) {
            symmult[i][j] = k;
            if (k == 0) {
              syminv[i] = j;
            }
          }
          d.rot(0);
          if (k % 2 == 1) d.rot(1);
          if (k % 8 == 7) d.rot(2);
          if (k % 16 == 15) d.rot(3);
        }
        c.rot(0);
        if (j % 2 == 1) c.rot(1);
        if (j % 8 == 7) c.rot(2);
        if (j % 16 == 15) c.rot(3);
      }
      c.rot(0);
      if (i % 2 == 1) c.rot(1);
      if (i % 8 == 7) c.rot(2);
      if (i % 16 == 15) c.rot(3);
    }

    for (int i = 0; i < 48; i++) {
      c.set(e);
      c.rotate(syminv[i]);
      for (int j = 0; j < 36; j++) {
        d.set(c);
        d.move(j);
        d.rotate(i);
        for (int k = 0; k < 36; k++) {
          f.set(e);
          f.move(k);
          if (f.equals(d)) {
            symmove[i][j] = k;
            break;
          }
        }
      }
    }

    c.set(0);
    for (int i = 0; i < 48; i++) {
      finish[syminv[i]] = c.get();
      c.rot(0);
      if (i % 2 == 1) c.rot(1);
      if (i % 8 == 7) c.rot(2);
      if (i % 16 == 15) c.rot(3);
    }
  }