| #include <_mingw.h> | |
| #ifdef _WIN64 | |
| unsigned __int64 __shiftright128 (unsigned __int64 LowPart, | |
| unsigned __int64 HighPart, unsigned char Shift); | |
| unsigned __int64 __shiftright128 (unsigned __int64 LowPart, | |
| unsigned __int64 HighPart, unsigned char Shift) | |
| { | |
| if (Shift >= 128) | |
| return 0ULL; | |
| if (!Shift) | |
| return LowPart; | |
| if (Shift >= 64) | |
| { | |
| LowPart = HighPart; | |
| Shift -= 64; | |
| HighPart = 0; | |
| } | |
| LowPart >>= Shift; | |
| HighPart <<= (64 - Shift); | |
| return (HighPart | LowPart); | |
| } | |
| #endif | |