widenMulImpl function
Implementation
(Uint64 hi, Uint64 lo) widenMulImpl(Uint64 a, Uint64 b) {
final aLo = a.lo, aHi = a.hi, bLo = b.lo, bHi = b.hi;
final p0 = aLo * bLo, p1 = aLo * bHi, p2 = aHi * bLo, p3 = aHi * bHi;
final mid = (p0 >>> 32) + (p1 & _mask32) + (p2 & _mask32);
final loVal = ((mid & _mask32) << 32) + (p0 & _mask32);
final hiVal = p3 + (p1 >>> 32) + (p2 >>> 32) + (mid >>> 32);
return (_unpack(hiVal), _unpack(loVal));
}