HalpApicTimerIsInvariant
BOOL __fastcall HalpApicTimerIsInvariant(INT64 a1){
struct _KPRCB *CurrentPrcb;
char v2;
char v4;
int v5;
unsigned int v6;
int v7;
v5 = 0;
v6 = 0;
v4 = 0;
LODWORD(CurrentPrcb) = HalSocRequestApi(a1, 0i64, 2i64, 0x10ui64, &HalpApicTimerCpuApi);
if( (int)CurrentPrcb < 0 )
goto LABEL_7;
LODWORD(CurrentPrcb) = ((__int64(__fastcall *)(_QWORD, _QWORD, _QWORD, char *))HalpApicTimerCpuApi)(
0i64,
0i64,
0i64,
&v4);
v2 = (_BYTE)CurrentPrcb != 0 ? v4 : 0;
v4 = v2;
if( v2 != 2 )
{
if( v2 != 1 )
goto LABEL_7;
CurrentPrcb = KeGetCurrentPrcb();
if( *((_BYTE *)CurrentPrcb + 64) < 0x15u )
goto LABEL_7;
}
v7 = 0;
LODWORD(CurrentPrcb) = ((__int64(__fastcall *)(_QWORD, unsigned int *, int *, int *, int *))qword_140CF40F8)(
0i64,
&v6,
&v5,
&v5,
&v5);
if( v6 >= 6 )
LODWORD(CurrentPrcb) = ((__int64(__fastcall *)(__int64, int *, int *, int *, int *))qword_140CF40F8)(
6i64,
&v7,
&v5,
&v5,
&v5);
if( (v7 & 4) != 0 )
LOBYTE(CurrentPrcb) = 1;
else
LABEL_7:
LOBYTE(CurrentPrcb) = 0;
return(int)CurrentPrcb;
}Referenced by:
HalpApicTimerDiscover