SM_SHIFT
#define SM_MASK ((1LL << SM_SHIFT) - 1)
y = (x >> SM_SHIFT) * sm + (((x & SM_MASK) * sm) >> SM_SHIFT);
sm = (m << SM_SHIFT) / 8 / HFSC_FREQ;
m = (sm * 8 * HFSC_FREQ) >> SM_SHIFT;
dx = ((y1 - y) << SM_SHIFT) / (isc->sm1 - isc->sm2);