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