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