EmCpuMatchCallback

__int64 __fastcall EmCpuMatchCallback(__int64 a1, __int64 a2, _BYTE **a3, int a4, unsigned int *a5, int a6){
  unsigned int v6; 
  struct _KPRCB *CurrentPrcb; 
  unsigned __int8 *VendorString; 
  _BYTE *v10; 
  int v11; 
  int v12; 

  v6 = 0;
  if( !a3 || !a5 || a6 != 4 || a4 != 4 )
    return 1i64;
  CurrentPrcb = KeGetCurrentPrcb();
  if( **a3 == 42 )
    goto LABEL_17;
  VendorString = CurrentPrcb->VendorString;
  v10 = (_BYTE *)(*a3 - CurrentPrcb->VendorString);
  do
  {
    v11 = (unsigned __int8)v10[(_QWORD)VendorString];
    v12 = *VendorString - v11;
    if( v12 )
      break;
    ++VendorString;
  }
  while( v11 );
  if( !v12 )
  {
LABEL_17:
    if( (unsigned int)EmpCheckOperator(a3[1], (unsigned int)CurrentPrcb->CpuType, a5[1]) )
    {
      if( (unsigned int)EmpCheckOperator(a3[2], CurrentPrcb->CpuModel, a5[2]) )
        return(unsigned int)EmpCheckOperator(a3[3], CurrentPrcb->CpuStepping, a5[3]) != 0 ? 2 : 0;
    }
  }
  return v6;
}

Referenced by:

No references.