RtlpComputeFraction
UINT64 __stdcall RtlpComputeFraction(UINT64 Numerator, UINT64 Divisor, CHAR *LeftShift){
__int64 v3;
bool v5;
char v6;
char v7;
unsigned __int64 v8;
unsigned __int64 v9;
char v10;
unsigned __int64 v11;
UINT64 v12;
v3 = (unsigned int)Numerator;
v5 = !_BitScanReverse((unsigned int *)&Numerator, Numerator);
if( v5 )
v6 = 32;
else
v6 = 31 - Numerator;
v7 = v6 + 32;
v8 = (v3 << v7) / (unsigned __int64)(unsigned int)Divisor;
v9 = (v3 << v7) % (unsigned __int64)(unsigned int)Divisor;
v5 = !_BitScanReverse64((unsigned __int64 *)&v3, v8);
if( v5 )
v10 = 64;
else
v10 = 63 - v3;
v11 = v9 << v10;
v12 = v11 / (unsigned int)Divisor + (v8 << v10);
if( 2 * (v11 % (unsigned int)Divisor) > (unsigned int)Divisor && v12 + 1 > v12 )
++v12;
*LeftShift = 64 - v7 - v10;
return v12;
}Referenced by:
KiSetupTimeIncrement
RtlGenerateQpcToIncrementConstants