// REQUIRED_ARGS: -O -inline struct Cent { ulong lo; // low 64 bits ulong hi; // high 64 bits } pure bool tst(Cent c) { return c.hi || c.lo; } pure Cent dec(Cent c); pure Cent shl(Cent c, uint n); pure Cent udivmod(Cent c1, Cent c2, out Cent modulus) { ulong v1 = shl(c2, 3).hi; Cent quotient; if (tst(quotient)) quotient = dec(quotient); return quotient; }