private static uint MulCarry(ref uint u1, uint u2, uint uCarry) { ulong num = (ulong)u1 * (ulong)u2 + (ulong)uCarry; u1 = (uint)num; return (uint)(num >> 0x20); }