ExGetExpirationDate
INT64 __fastcall ExGetExpirationDate(_LARGE_INTEGER *ExpirationDate){
WCHAR v1;
NTSTATUS v3;
__int64 v4;
UINT64 ResultDataSize;
struct _TIME_FIELDS TimeFields;
struct _UNICODE_STRING DestinationString;
__int128 Data;
__int128 v10;
*(_DWORD *)&TimeFields.Milliseconds = 0;
ResultDataSize = 0i64;
DestinationString = 0i64;
Data = 0i64;
v10 = 0i64;
if( ExpirationDate )
{
RtlInitUnicodeString(&DestinationString, (PCWSTR)&stru_1407D9590.Xmm13, v1);
v3 = ZwQueryLicenseValue(
&DestinationString,
(UINT64 *)((char *)&ResultDataSize + 4),
&Data,
0x10ui64,
&ResultDataSize);
if( v3 < 0 )
goto LABEL_13;
v4 = v10 - Data;
if( (_QWORD)v10 == (_QWORD)Data )
v4 = *((_QWORD *)&v10 + 1) - *((_QWORD *)&Data + 1);
if( v4 )
{
TimeFields.Year = Data;
*(_DWORD *)&TimeFields.Month = *(_DWORD *)((char *)&Data + 2);
TimeFields.Hour = WORD3(Data);
*(_DWORD *)&TimeFields.Minute = DWORD2(Data);
if( !RtlTimeFieldsToTime(&TimeFields, ExpirationDate) )
v3 = -1073741823;
}
else
{
ExpirationDate->QuadPart = 0i64;
}
if( v3 < 0 )
LABEL_13:
ExpirationDate->QuadPart = 0i64;
}
else
{
return(unsigned int)-1073741811;
}
return(unsigned int)v3;
}Referenced by:
ExInitLicenseData
ExInitializeTimeRefresh