RtlVerifyVersionInfo

NTSTATUS __stdcall RtlVerifyVersionInfo(PRTL_OSVERSIONINFOEXW VersionInfo, ULONG TypeMask, ULONGLONG ConditionMask){
  char v4; 
  char v6; 
  NTSTATUS result; 
  unsigned __int8 v8; 
  int v9; 
  unsigned int v10; 
  int wSuiteMask; 
  int v12; 
  int v13; 
  int v14; 
  bool v15; 
  int v16; 
  int v17; 
  int v18; 
  unsigned __int8 Equal[16]; 
  struct _OSVERSIONINFOW VersionInformation; 
  unsigned __int16 v21; 
  unsigned __int16 v22; 
  unsigned __int16 v23; 
  unsigned __int8 v24; 
  v4 = TypeMask;
  v6 = 0;
  if( !TypeMask )
    return -1073741811;
  memset((INT64)&VersionInformation.dwMajorVersion, 0i64);
  VersionInformation.dwOSVersionInfoSize = 284;
  result = RtlGetVersion(&VersionInformation);
  if( !result )
  {
    if( (v4 & 0x40) != 0 && VersionInfo->wSuiteMask )
    {
      v10 = 0;
      wSuiteMask = VersionInfo->wSuiteMask;
      do
      {
        v12 = 1 << v10;
        if( (wSuiteMask & (1 << v10)) != 0 )
        {
          if( (ConditionMask & 0x8000000000000000ui64) == 0i64 )
            v13 = 0;
          else
            v13 = RtlpVerGetConditionMask(ConditionMask, 0x40ui64);
          v14 = v13 - 6;
          if( v14 )
          {
            if( v14 != 1 )
              return -1073741811;
            if( (v23 & (unsigned __int16)v12) != 0 )
              v6 = 1;
          }
          else if( (v23 & (unsigned __int16)v12) == 0 )
          {
            return -1073741735;
          }
        }
        ++v10;
      }
      while( v10 < 0x10 );
      if( (unsigned int)RtlpVerGetConditionMask(ConditionMask, 0x40ui64) == 7 && !v6 )
        return -1073741735;
    }
    v8 = 1;
    Equal[0] = 1;
    v9 = 1;
    if( (v4 & 2) != 0 )
    {
      if( (ConditionMask & 0x8000000000000000ui64) == 0i64 )
        v9 = (unsigned __int8)(ConditionMask >> 4);
      else
        v9 = RtlpVerGetConditionMask(ConditionMask, 2ui64);
      v15 = !RtlpVerCompare(v9, VersionInfo->dwMajorVersion, VersionInformation.dwMajorVersion, Equal, 0);
      v8 = Equal[0];
      if( v15 )
      {
        if( !Equal[0] )
          return -1073741735;
      }
      else if( !Equal[0] )
      {
        goto LABEL_10;
      }
    }
    if( (v4 & 1) == 0 )
      goto LABEL_6;
    if( v9 == 1 )
    {
      if( (ConditionMask & 0x8000000000000000ui64) != 0i64 )
        v9 = RtlpVerGetConditionMask(ConditionMask, 1ui64);
      else
        v9 = (unsigned __int8)(ConditionMask >> 2);
    }
    v15 = !RtlpVerCompare(v9, VersionInfo->dwMinorVersion, VersionInformation.dwMinorVersion, Equal, 1);
    v8 = Equal[0];
    if( v15 )
    {
      if( !Equal[0] )
        return -1073741735;
    }
    else
    {
LABEL_6:
      if( !v8 )
        goto LABEL_10;
    }
    if( (v4 & 0x20) != 0 )
    {
      if( v9 == 1 )
      {
        if( (ConditionMask & 0x8000000000000000ui64) != 0i64 )
          v9 = RtlpVerGetConditionMask(ConditionMask, 0x20ui64);
        else
          v9 = 0;
      }
      if( !RtlpVerCompare(v9, VersionInfo->wServicePackMajor, v21, Equal, 0) )
      {
        if( !Equal[0] )
          return -1073741735;
        goto LABEL_9;
      }
      v8 = Equal[0];
    }
    if( v8 )
    {
LABEL_9:
      if( (v4 & 0x10) != 0 )
      {
        if( v9 == 1 )
        {
          if( (ConditionMask & 0x8000000000000000ui64) != 0i64 )
            v9 = RtlpVerGetConditionMask(ConditionMask, 0x10ui64);
          else
            v9 = 0;
        }
        if( !RtlpVerCompare(v9, VersionInfo->wServicePackMinor, v22, Equal, 1) )
          return -1073741735;
      }
    }
LABEL_10:
    if( (v4 & 4) != 0 )
    {
      v17 = (ConditionMask & 0x8000000000000000ui64) == 0i64 ? BYTE2(ConditionMask) : RtlpVerGetConditionMask(
                                                                                        ConditionMask,
                                                                                        4ui64);
      if( !RtlpVerCompare(v17, VersionInfo->dwBuildNumber, VersionInformation.dwBuildNumber, Equal, 0) )
        return -1073741735;
    }
    if( (v4 & 8) != 0 )
    {
      v18 = (ConditionMask & 0x8000000000000000ui64) != 0i64 ? RtlpVerGetConditionMask(ConditionMask, 8ui64) : 0;
      if( !RtlpVerCompare(v18, VersionInfo->dwPlatformId, VersionInformation.dwPlatformId, Equal, 0) )
        return -1073741735;
    }
    if( v4 < 0 )
    {
      v16 = (ConditionMask & 0x8000000000000000ui64) == 0i64 ? 0 : RtlpVerGetConditionMask(ConditionMask, 0x80ui64);
      if( !RtlpVerCompare(v16, VersionInfo->wProductType, v24, Equal, 0) )
        return -1073741735;
    }
    return 0;
  }
  return result;
}

Referenced by:

AslpFileGetVersionBlock
WdipSemLoadScenarioTable