frac32buffer a
frac32 b
frac32 c
frac32 d
frac32 e
frac32 f
frac32 g
frac32buffer out
int res;
int jump;
int rem;
int qnt;
int qnd;
int als;
if (inlet_a >= 0)
res = ((unsigned int)inlet_a) / inlet_b;
else
res = -(((unsigned int)(inlet_b - inlet_a)) / inlet_b);
jump = res;
rem = (inlet_a - (res * inlet_b)) *
((((jump * (inlet_d >> 3)) & ((1 << 27) - 1))) >> 20) +
inlet_c * jump + inlet_a;
qnt = (rem / (1 + inlet_e)) * (1 + inlet_e);
als = qnt + ___SMMUL(inlet_a << 3, inlet_f << 5) +
___SMMUL(((inlet_a - (res * inlet_b)) * inlet_b), inlet_g);
outlet_out = (als) & ((1 << 27) - 1);