init_filter_moog(svf);
void do_overdrive1(int32 *buf, int32 count, EffectList *ef){	InfoOverdrive1 *info = (InfoOverdrive1 *)ef->info;	filter_moog *svf = &(info->svf);	int32 t1, t2, f = svf->f, q = svf->q, p = svf->p, b0 = svf->b0,		b1 = svf->b1, b2 = svf->b2, b3 = svf->b3, b4 = svf->b4;	filter_lpf18 *lpf = &(info->lpf18);	double ay1 = lpf->ay1, ay2 = lpf->ay2, aout = lpf->aout, lastin = lpf->lastin,		kres = lpf->kres, value = lpf->value, kp = lpf->kp, kp1h = lpf->kp1h, ax1, ay11, ay31;	int32 i, input, high, low, leveli = info->leveli;	double sig, pan = info->pan;	if(count == MAGIC_INIT_EFFECT_INFO) {		/* set parameters of decompositor */		init_filter_moog(svf);		svf->freq = 500;		svf->res_dB = 0;		calc_filter_moog(svf);		/* set parameters of waveshaper */		/* ideally speaking:		   lpf->res = table_res[drive];		   lpf->dist = table_dist[drive]; */		init_filter_lpf18(lpf);		lpf->freq = 7000;		lpf->res = 0.1;		lpf->dist = 1.0 * ((double)info->drive / 127.0);		calc_filter_lpf18(lpf);		info->leveli = TIM_FSCALE(info->level, 24);		return;	} else if(count == MAGIC_FREE_EFFECT_INFO) {		return;	}	for(i = 0; i < count; i++) {		input = imuldiv24(buf[i], leveli);		input += imuldiv24(buf[i + 1], leveli);		/* decomposition */		input -= imuldiv24(q, b4);		t1 = b1;  b1 = imuldiv24(input + b0, p) - imuldiv24(b1, f);		t2 = b2;  b2 = imuldiv24(b1 + t1, p) - imuldiv24(b2, f);		t1 = b3;  b3 = imuldiv24(b2 + t2, p) - imuldiv24(b3, f);		low = b4 = imuldiv24(b3 + t1, p) - imuldiv24(b4, f);		b0 = input;		high = input - b4;		/* waveshaping */		sig = (double)high * INT32_MAX_NEG;		ax1 = lastin;		ay11 = ay1;		ay31 = ay2;		lastin = sig - tanh(kres * aout);		ay1 = kp1h * (lastin + ax1) - kp * ay1;		ay2 = kp1h * (ay1 + ay11) - kp * ay2;		aout = kp1h * (ay2 + ay31) - kp * aout;		sig = tanh(aout * value);		high = TIM_FSCALE(sig, 31);		/* mixing */		input = low + high;		buf[i] = do_left_panning(input, pan);		buf[i + 1] = do_right_panning(input, pan);		++i;	}	svf->b0 = b0, svf->b1 = b1, svf->b2 = b2, svf->b3 = b3, svf->b4 = b4;    lpf->ay1 = ay1, lpf->ay2 = ay2, lpf->aout = aout, lpf->lastin = lastin;}