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