Windows time_clock():  rewrite to get rid of horrid casting tricks.
Don't blame Mark!  The horrid casting tricks were my idea to begin with.
The rewrite works fine under VC6, and I *expect* will work fine under VC7.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index b009ea1..6647ecc 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -147,28 +147,26 @@
 static PyObject *
 time_clock(PyObject *self, PyObject *args)
 {
-	static LONG_LONG ctrStart;
+	static LARGE_INTEGER ctrStart;
 	static double divisor = 0.0;
-	LONG_LONG now;
+	LARGE_INTEGER now;
 	double diff;
 
-	assert(sizeof(LONG_LONG) == sizeof(LARGE_INTEGER));
 	if (!PyArg_ParseTuple(args, ":clock"))
 		return NULL;
 
 	if (divisor == 0.0) {
-		LONG_LONG freq;
-		QueryPerformanceCounter((LARGE_INTEGER*)&ctrStart);
-		if (!QueryPerformanceFrequency((LARGE_INTEGER*)&freq) ||
-		    freq == 0) {
+		LARGE_INTEGER freq;
+		QueryPerformanceCounter(&ctrStart);
+		if (!QueryPerformanceFrequency(&freq) || freq.QuadPart == 0) {
 			/* Unlikely to happen - this works on all intel
 			   machines at least!  Revert to clock() */
 			return PyFloat_FromDouble(clock());
 		}
-		divisor = (double)freq;
+		divisor = (double)freq.QuadPart;
 	}
-	QueryPerformanceCounter((LARGE_INTEGER*)&now);
-	diff = (double)(now - ctrStart);
+	QueryPerformanceCounter(&now);
+	diff = (double)(now.QuadPart - ctrStart.QuadPart);
 	return PyFloat_FromDouble(diff / divisor);
 }
 
@@ -220,7 +218,7 @@
 	struct_time_type_fields,
 	9,
 };
-	
+
 static PyTypeObject StructTimeType;
 
 static PyObject *
@@ -229,7 +227,7 @@
 	PyObject *v = PyStructSequence_New(&StructTimeType);
 	if (v == NULL)
 		return NULL;
-	
+
 #define SET(i,val) PyStructSequence_SET_ITEM(v, i, PyInt_FromLong((long) val))
 
 	SET(0, p->tm_year + 1900);