RtlpCheckDynamicTimeZoneInformation
UINT8 __stdcall RtlpCheckDynamicTimeZoneInformation(_RTL_DYNAMIC_TIME_ZONE_INFORMATION *Dtzi, INT16 Year){
UINT8 v4;
__int128 v6;
__int64 v7;
__int128 v8;
__int128 v9;
__int128 v10;
__int128 v11;
__int128 v12;
__int128 v13;
__int128 v14;
__int128 v15;
__int128 v16;
__int128 v17;
__int128 v18;
__int128 v19;
__int128 v20;
__int128 v21;
wchar_t *v22;
__int64 v23;
__int128 v24;
VOID *Key;
_REG_TZI_FORMAT RegTziFormat;
_RTL_TIME_ZONE_INFORMATION Tzi;
v4 = 0;
Key = 0i64;
memset(&RegTziFormat, 0, sizeof(RegTziFormat));
if( RtlpGetDynamicTimeZoneInfoHandle(Dtzi->TimeZoneKeyName, &Key) >= 0 )
{
if( RtlpFindRegTziForCurrentYear(&RegTziFormat, Key, (unsigned __int16)Year) >= 0 )
{
v6 = *(_OWORD *)&Dtzi->tzi.StandardName[6];
*(_OWORD *)&Tzi.Bias = *(_OWORD *)&Dtzi->tzi.Bias;
v7 = *(_QWORD *)&Dtzi->tzi.DaylightStart.Minute;
v8 = *(_OWORD *)&Dtzi->tzi.StandardName[14];
*(_OWORD *)&Tzi.StandardName[6] = v6;
v9 = *(_OWORD *)&Dtzi->tzi.StandardName[22];
*(_OWORD *)&Tzi.StandardName[14] = v8;
v10 = *(_OWORD *)&Dtzi->tzi.StandardName[30];
*(_OWORD *)&Tzi.StandardName[22] = v9;
v11 = *(_OWORD *)&Dtzi->tzi.StandardStart.Milliseconds;
*(_OWORD *)&Tzi.StandardName[30] = v10;
v12 = *(_OWORD *)&Dtzi->tzi.DaylightName[4];
*(_OWORD *)&Tzi.StandardStart.Milliseconds = v11;
v13 = *(_OWORD *)&Dtzi->tzi.DaylightName[20];
*(_OWORD *)&Tzi.DaylightName[4] = v12;
*(_OWORD *)&Tzi.DaylightName[12] = *(_OWORD *)&Dtzi->tzi.DaylightName[12];
v14 = *(_OWORD *)&Dtzi->tzi.DaylightName[28];
*(_OWORD *)&Tzi.DaylightName[20] = v13;
*(_OWORD *)&Tzi.DaylightName[28] = v14;
*(_QWORD *)&Tzi.DaylightStart.Minute = v7;
Tzi.DaylightBias = Dtzi->tzi.DaylightBias;
RtlpRegTziFormatToTzi(&Tzi, &RegTziFormat);
if( memcmp(&Tzi, Dtzi, 0xACui64) )
{
v4 = 1;
v15 = *(_OWORD *)&Tzi.StandardName[6];
*(_OWORD *)&Dtzi->tzi.Bias = *(_OWORD *)&Tzi.Bias;
v16 = *(_OWORD *)&Tzi.StandardName[14];
*(_OWORD *)&Dtzi->tzi.StandardName[6] = v15;
v17 = *(_OWORD *)&Tzi.StandardName[22];
*(_OWORD *)&Dtzi->tzi.StandardName[14] = v16;
v18 = *(_OWORD *)&Tzi.StandardName[30];
*(_OWORD *)&Dtzi->tzi.StandardName[22] = v17;
v19 = *(_OWORD *)&Tzi.StandardStart.Milliseconds;
*(_OWORD *)&Dtzi->tzi.StandardName[30] = v18;
v20 = *(_OWORD *)&Tzi.DaylightName[4];
*(_OWORD *)&Dtzi->tzi.StandardStart.Milliseconds = v19;
v21 = *(_OWORD *)&Tzi.DaylightName[12];
*(_OWORD *)&Dtzi->tzi.DaylightName[4] = v20;
v22 = &Dtzi->tzi.DaylightName[20];
*((_OWORD *)v22 - 1) = v21;
v23 = *(_QWORD *)&Tzi.DaylightStart.Minute;
v24 = *(_OWORD *)&Tzi.DaylightName[28];
*(_OWORD *)v22 = *(_OWORD *)&Tzi.DaylightName[20];
*((_OWORD *)v22 + 1) = v24;
*((_QWORD *)v22 + 4) = v23;
*((_DWORD *)v22 + 10) = Tzi.DaylightBias;
}
}
ZwClose((_HANDLE)Key);
}
return v4;
}Referenced by:
ExpRefreshTimeZoneInformation