#include <windows.h> /* includes Windows kernel calls */void main(void) {
int i, a, b;
/* data structures we need */
HANDLE hProcess;
FILETIME ftCreation, ftExit, ftKernel, ftUserStart, ftUserEnd;
ULARGE_INTEGER stime, etime, elapsedtime;
/* get handle to running process */
hProcess = GetCurrentProcess();
/* get start time */
GetProcessTimes(hProcess, &ftCreation, &ftExit, &ftKernel, 
&ftUserStart);
/* do computations to be timed */
a=1;
b=1;
for (i = 0; i < 333333; i++) {
a = a+a;
a = a*a;
a = b*b; }
/* get ending time */
   GetProcessTimes(hProcess, &ftCreation, &ftExit, &ftKernel, &ftUserEnd);
/* stuff structure so we can do subtract */
   stime.QuadPart = (ftUserStart.dwHighDateTime << 32) |
(ftUserStart.dwLowDateTime);
   etime.QuadPart = (ftUserEnd.dwHighDateTime << 32) |
(ftUserEnd.dwLowDateTime);
/* compute elapsed time */
elapsedtime.QuadPart = etime.QuadPart - stime.QuadPart;
/* convert from 100-nanoseconds */
elapsedtime.QuadPart = elapsedtime.QuadPart / 10;
/* print out elapsed time */
printf("2^31-1 elliptic curve op elapsed microseconds: %d\n",
elapsedtime.QuadPart);
}