| #ifndef WIN32_LEAN_AND_MEAN | |
| #define WIN32_LEAN_AND_MEAN | |
| #endif | |
| #define __CRT__NO_INLINE | |
| #include <windows.h> | |
| /* for __x86_64 only */ | |
| DWORD64 UnsignedMultiplyExtract128(DWORD64 Multiplier,DWORD64 Multiplicand,BYTE Shift) { | |
| DWORD64 extractedProduct; | |
| DWORD64 highProduct; | |
| DWORD64 lowProduct; | |
| lowProduct = UnsignedMultiply128(Multiplier,Multiplicand,&highProduct); | |
| extractedProduct = ShiftRight128(lowProduct,highProduct,Shift); | |
| return extractedProduct; | |
| } | |