private static string FormatTime(DateTime time)
{
var header = new char[13];
header[2] = ':';
header[5] = ':';
header[8] = '.';
header[12] = ' ';
var ticks = time.Ticks;
var n1 = (int)(ticks >> 32);
var n2 = (int)ticks;
if (n2 < 0)
{
n1++;
}
ticks = ((Math.BigMul(429497, n2) - (int)(Math.BigMul(1161359156, n2) >> 32) - Math.BigMul(1161359156, n1)) >> 32) + Math.BigMul(n1, 429497);
n1 = (int)(ticks >> 32);
n2 = (int)ticks;
if (n2 < 0)
{
n1++;
}
var q = n1 * 50 + ((50 * (n2 >> 16)) >> 16) - (int)(Math.BigMul(1244382467, n1) >> 32) - 1;
var r = (int)(ticks - Math.BigMul(q, 86400000));
if (r > 86400000)
{
r -= 86400000;
}
var unit = (int)(Math.BigMul(r >> 7, 9773437) >> 32) >> 6;
n2 = (unit * 13) >> 7;
n1 = r - 3600000 * unit;
header[0] = ((char)(n2 + '0'));
header[1] = ((char)(unit - 10 * n2 + '0'));
unit = (int)((Math.BigMul(n1 >> 5, 2290650)) >> 32);
n1 -= 60000 * unit;
n2 = (unit * 13) >> 7;
header[3] = ((char)(n2 + '0'));
header[4] = ((char)(unit - 10 * n2 + '0'));
unit = ((n1 >> 3) * 67109) >> 23;
n1 -= 1000 * unit;
n2 = (unit * 13) >> 7;
header[6] = ((char)(n2 + '0'));
header[7] = ((char)(unit - 10 * n2 + '0'));
n2 = (n1 * 41) >> 12;
header[9] = ((char)(n2 + '0'));
n1 -= 100 * n2;
n2 = (n1 * 205) >> 11;
header[10] = ((char)(n2 + '0'));
header[11] = ((char)(n1 - 10 * n2 + '0'));
return new string(header);
}
}