VerGetOsInfo
__int64 __fastcall VerGetOsInfo(_DWORD
*a1)
{
int v1;
// edi
@1
_DWORD
*v2;
// rbx
@1
int v3;
// eax
@6
v1 =
0;
v2 = a1;
if ( !a1 )
CbsUtil_Assert((__int64)
"base\\cbs\\util\\cbsver.cpp",
24i64, (__int64)
"pOsVersion");
if ( !g_OsVersionInfo.dwOSVersionInfoSize )
{
g_OsVersionInfo.dwOSVersionInfoSize =
284;
if ( !GetVersionExW(&g_OsVersionInfo) )
{
g_OsVersionInfo.dwOSVersionInfoSize =
276;
if ( !GetVersionExW(&g_OsVersionInfo) )
{
v3 = GetLastError();
if ( v3 >
0 )
v3 = (unsigned __int16)v3 |
0x80070000;
if ( v3 >=
0 )
v3 = -
2147467259;
v1 = v3;
CBSWdsLog(
0x4000000u, v3,
1i64,
"Failed to get OS version information.");
return (unsigned
int)v1;
}
}
}
if ( g_OsVersionInfo.dwMajorVersion >
0xA )
goto LABEL_64;
if ( g_OsVersionInfo.dwMajorVersion ==
10 )
{
if ( !g_OsVersionInfo.dwMinorVersion )
{
if ( g_OsVersionInfo.dwPlatformId !=
2 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
54,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
12;
return (unsigned
int)v1;
}
LABEL_64:
*v2 =
13;
return (unsigned
int)v1;
}
if ( g_OsVersionInfo.dwMajorVersion ==
6 )
{
if ( g_OsVersionInfo.dwMinorVersion >=
2 )
{
if ( g_OsVersionInfo.dwPlatformId !=
2 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
60i64,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
11;
return (unsigned
int)v1;
}
if ( g_OsVersionInfo.dwMinorVersion ==
1 )
{
if ( g_OsVersionInfo.dwPlatformId !=
2 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
64,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
10;
return (unsigned
int)v1;
}
if ( !g_OsVersionInfo.dwMinorVersion )
{
if ( g_OsVersionInfo.dwPlatformId !=
2 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
70,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
9;
return (unsigned
int)v1;
}
LABEL_63:
*v2 =
0;
return (unsigned
int)v1;
}
if ( g_OsVersionInfo.dwMajorVersion ==
5 )
{
if ( g_OsVersionInfo.dwMinorVersion ==
2 )
{
if ( g_OsVersionInfo.dwPlatformId != g_OsVersionInfo.dwMinorVersion )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
73,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
8;
}
else if ( g_OsVersionInfo.dwMinorVersion ==
1 )
{
if ( g_OsVersionInfo.dwPlatformId !=
2 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
79,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
7;
}
else
{
if ( g_OsVersionInfo.dwMinorVersion )
goto LABEL_63;
if ( g_OsVersionInfo.dwPlatformId !=
2 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
85,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
6;
}
}
else if ( g_OsVersionInfo.dwMajorVersion ==
4 )
{
if ( g_OsVersionInfo.dwMinorVersion )
{
if ( g_OsVersionInfo.dwMinorVersion ==
90 )
{
if ( g_OsVersionInfo.dwPlatformId !=
1 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
5,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS");
*v2 =
4;
}
else
{
if ( g_OsVersionInfo.dwMinorVersion !=
10 )
goto LABEL_63;
if ( g_OsVersionInfo.dwPlatformId !=
1 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMinorVersion +
90,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS");
*v2 =
3;
}
}
else if ( g_OsVersionInfo.dwPlatformId ==
2 )
{
*v2 =
5;
}
else
{
if ( g_OsVersionInfo.dwPlatformId !=
1 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
105i64,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS");
*v2 =
2;
}
}
else
{
if ( g_OsVersionInfo.dwMajorVersion !=
3 || g_OsVersionInfo.dwMinorVersion !=
51 )
goto LABEL_63;
if ( g_OsVersionInfo.dwPlatformId !=
2 )
CbsUtil_Assert(
(__int64)
"base\\cbs\\util\\cbsver.cpp",
g_OsVersionInfo.dwMajorVersion +
107,
(__int64)
"g_OsVersionInfo.dwPlatformId == VER_PLATFORM_WIN32_NT");
*v2 =
1;
}
return (unsigned
int)v1;
}