Computing the high bits of a multiplication in C#

I'm trying to convert an open source library from .Net 4.0 to 3.5 and cannot easily convert the following long multiplication code:



/// <summary>
/// Calculate the most significant 64 bits of the 128-bit
product x * y, where x and y are 64-bit integers.
/// </summary>
/// <returns>Returns the most significant 64 bits of the product x * y.</returns>
public static long mul64hi(long x, long y)
{
#if !NET35
BigInteger product = BigInteger.Multiply(x, y);
product = product >> 64;
long l = (long)product;
return l;
#else
throw new NotSupportedException(); //TODO!
#endif
}


As you can see the author didn't find a way to do this. BigInteger does not exist in .NET 3.5.


How can I compute the high bits 64 bits of a 64*64 multiplication on .NET 3.5?