rem: memmove ((PBYTE)&_lpCurCodeDesc->son[k + 1], (PBYTE)&_lpCurCodeDesc->son[k], l);
add: memmove (_lpCurCodeDesc->son + k + 1, _lpCurCodeDesc->son + k, sizeof(_lpCurCodeDesc->son[0]) * l);
context: reconst (void){	COUNT i, j;	/* halven cumulative freq for leaf nodes */	j = 0;	for (i = 0; i < T; i++)	{		if (_lpCurCodeDesc->son[i] >= T)		{			_lpCurCodeDesc->freq[j] = (_lpCurCodeDesc->freq[i] + 1) >> 1;			_lpCurCodeDesc->son[j] = _lpCurCodeDesc->son[i];			j++;		}	}	/* make a tree : first, connect children nodes */	for (i = 0, j = N_CHAR; j < T; i += 2, j++)	{		SWORD k;		UWORD f, l;		k = i + 1;		f = _lpCurCodeDesc->freq[j] = _lpCurCodeDesc->freq[i] + _lpCurCodeDesc->freq[k];		for (k = j - 1; f < _lpCurCodeDesc->freq[k]; k--)			;		k++;		l = (j - k) << 1;				memmove ((PBYTE)&_lpCurCodeDesc->freq[k + 1],				(PBYTE)&_lpCurCodeDesc->freq[k], l);		_lpCurCodeDesc->freq[k] = f;		memmove ((PBYTE)&_lpCurCodeDesc->son[k + 1],				(PBYTE)&_lpCurCodeDesc->son[k], l);		_lpCurCodeDesc->son[k] = i;	}	/* connect parent nodes */	for (i = 0; i < T; i++)	{		if ((j = _lpCurCodeDesc->son[i]) >= T)			_lpCurCodeDesc->prnt[j] = i;		else			_lpCurCodeDesc->prnt[j] = _lpCurCodeDesc->prnt[j + 1] = i;	}}