private void antialias(int gr, int ch, float[] xrch) {
		final float[] xr = xrch;
		int i, maxidx;
		float bu, bd;

		if (channelInfo[gr][ch].block_type == 2) {
			if (channelInfo[gr][ch].mixed_block_flag == 0)
				return;
			maxidx = 18;
		} else
			maxidx = rzeroIndex[ch] - 18;

		for (i = 0; i < maxidx; i += 18) {
			bu = xr[i + 17];
			bd = xr[i + 18];
			xr[i + 17] = bu * 0.85749293f + bd * 0.51449576f;
			xr[i + 18] = bd * 0.85749293f - bu * 0.51449576f;
			bu = xr[i + 16];
			bd = xr[i + 19];
			xr[i + 16] = bu * 0.8817420f + bd * 0.47173197f;
			xr[i + 19] = bd * 0.8817420f - bu * 0.47173197f;
			bu = xr[i + 15];
			bd = xr[i + 20];
			xr[i + 15] = bu * 0.94962865f + bd * 0.31337745f;
			xr[i + 20] = bd * 0.94962865f - bu * 0.31337745f;
			bu = xr[i + 14];
			bd = xr[i + 21];
			xr[i + 14] = bu * 0.98331459f + bd * 0.18191320f;
			xr[i + 21] = bd * 0.98331459f - bu * 0.18191320f;
			bu = xr[i + 13];
			bd = xr[i + 22];
			xr[i + 13] = bu * 0.99551782f + bd * 0.09457419f;
			xr[i + 22] = bd * 0.99551782f - bu * 0.09457419f;
			bu = xr[i + 12];
			bd = xr[i + 23];
			xr[i + 12] = bu * 0.99916056f + bd * 0.04096558f;
			xr[i + 23] = bd * 0.99916056f - bu * 0.04096558f;
			bu = xr[i + 11];
			bd = xr[i + 24];
			xr[i + 11] = bu * 0.99989920f + bd * 0.0141986f;
			xr[i + 24] = bd * 0.99989920f - bu * 0.0141986f;
			bu = xr[i + 10];
			bd = xr[i + 25];
			xr[i + 10] = bu * 0.99999316f + bd * 3.69997467e-3f;
			xr[i + 25] = bd * 0.99999316f - bu * 3.69997467e-3f;
		}
	}