private void hybrid(int ch, int gr) {
        GrInfo gi = si.ch[ch].gr[gr];
        for (int sb18 = 0; sb18 < 576; sb18 += 18) {
            int bt = (gi.windowSwitching && gi.mixedBlock && (sb18 < 36)) ? 0 : gi.blockType;
            double[] tsOut = out1d;
            double[] r = rawout;
            for (int cc = 0; cc < 18; cc++) {
                tsOutCopy[cc] = tsOut[cc + sb18];
            }
            fastInvMdct(tsOutCopy, r, bt);
            for (int cc = 0; cc < 18; cc++) {
                tsOut[cc + sb18] = tsOutCopy[cc];
            }
            // overlap addition
            double[] p = prevBlock[ch];
            tsOut[0 + sb18] = r[0] + p[sb18 + 0];
            p[sb18 + 0] = r[18];
            tsOut[1 + sb18] = r[1] + p[sb18 + 1];
            p[sb18 + 1] = r[19];
            tsOut[2 + sb18] = r[2] + p[sb18 + 2];
            p[sb18 + 2] = r[20];
            tsOut[3 + sb18] = r[3] + p[sb18 + 3];
            p[sb18 + 3] = r[21];
            tsOut[4 + sb18] = r[4] + p[sb18 + 4];
            p[sb18 + 4] = r[22];
            tsOut[5 + sb18] = r[5] + p[sb18 + 5];
            p[sb18 + 5] = r[23];
            tsOut[6 + sb18] = r[6] + p[sb18 + 6];
            p[sb18 + 6] = r[24];
            tsOut[7 + sb18] = r[7] + p[sb18 + 7];
            p[sb18 + 7] = r[25];
            tsOut[8 + sb18] = r[8] + p[sb18 + 8];
            p[sb18 + 8] = r[26];
            tsOut[9 + sb18] = r[9] + p[sb18 + 9];
            p[sb18 + 9] = r[27];
            tsOut[10 + sb18] = r[10] + p[sb18 + 10];
            p[sb18 + 10] = r[28];
            tsOut[11 + sb18] = r[11] + p[sb18 + 11];
            p[sb18 + 11] = r[29];
            tsOut[12 + sb18] = r[12] + p[sb18 + 12];
            p[sb18 + 12] = r[30];
            tsOut[13 + sb18] = r[13] + p[sb18 + 13];
            p[sb18 + 13] = r[31];
            tsOut[14 + sb18] = r[14] + p[sb18 + 14];
            p[sb18 + 14] = r[32];
            tsOut[15 + sb18] = r[15] + p[sb18 + 15];
            p[sb18 + 15] = r[33];
            tsOut[16 + sb18] = r[16] + p[sb18 + 16];
            p[sb18 + 16] = r[34];
            tsOut[17 + sb18] = r[17] + p[sb18 + 17];
            p[sb18 + 17] = r[35];
        }
    }