HalpTimerFindIdealClockSource
ULONG_PTR *__stdcall HalpTimerFindIdealClockSource(){
char v0;
ULONG_PTR *Timer;
ULONG_PTR v2;
INT64 *v4;
INT64 *v5;
INT64 *v6;
INT64 *v7;
INT64 *v8;
v0 = HalpTimerPlatformClockSourceForced;
if( !HalpTimerPlatformClockSourceForced )
{
Timer = (ULONG_PTR *)HalpFindTimer(8, 96, 24576, 3840, 0);
if( Timer )
goto LABEL_8;
}
Timer = (ULONG_PTR *)HalpFindTimer(11, 544, 0, 80, 0);
if( Timer )
goto LABEL_8;
if( !v0 && !byte_140C4A319 && (__int64(__fastcall **)())HalpProfileInterface[0] != DefaultProfileInterface )
{
Timer = (ULONG_PTR *)HalpFindTimer(0, 33, 24576, 3840, 0);
if( Timer )
goto LABEL_8;
}
Timer = (ULONG_PTR *)HalpFindTimer(3, 352, 0, 0, 0);
if( Timer )
goto LABEL_8;
Timer = (ULONG_PTR *)HalpFindTimer(3, 48, 0, 256, 0);
if( Timer )
goto LABEL_8;
Timer = (ULONG_PTR *)HalpFindTimer(3, 96, 0, 3840, 0);
if( Timer )
goto LABEL_8;
Timer = (ULONG_PTR *)HalpFindTimer(3, 48, 0, 3840, 0);
if( Timer )
goto LABEL_8;
Timer = (ULONG_PTR *)HalpFindTimer(2, 304, 0, 0, 0);
if( Timer )
goto LABEL_8;
Timer = (ULONG_PTR *)HalpFindTimer(6, 96, 0, 3840, 0);
if( Timer )
goto LABEL_8;
v4 = HalpFindTimer(0, 32864, 24576, 3840, 0);
Timer = (ULONG_PTR *)v4;
if( !v4 || (unsigned __int64)v4[24] < 0x7D0 )
{
v5 = HalpFindTimer(0, 32816, 24576, 3840, 0);
Timer = (ULONG_PTR *)v5;
if( !v5 || (unsigned __int64)v5[24] < 0x7D0 )
{
v6 = HalpFindTimer(0, 608, 57344, 0, 0);
Timer = (ULONG_PTR *)v6;
if( !v6 || (unsigned __int64)v6[24] < 0x7D0 )
{
v7 = HalpFindTimer(0, 96, 57344, 3840, 0);
Timer = (ULONG_PTR *)v7;
if( !v7 || (unsigned __int64)v7[24] < 0x7D0 )
{
v8 = HalpFindTimer(0, 48, 57344, 3840, 0);
Timer = (ULONG_PTR *)v8;
if( !v8 || (unsigned __int64)v8[24] < 0x7D0 )
Timer = 0i64;
}
}
}
}
if( Timer )
{
LABEL_8:
v2 = Timer[56];
if( (v2 & 0x50) != 0 )
return(ULONG_PTR *)(-(__int64)((v2 & 0x20) != 0) & (unsigned __int64)Timer);
else
return 0i64;
}
return Timer;
}Referenced by:
HalpTimerSelectRoles