public override DaylightTime GetDaylightChanges(int year)
{
if (year < 1 || year > 9999)
{
throw new ArgumentOutOfRangeException("year", Environment.GetResourceString("ArgumentOutOfRange_Range", (object)1, (object)9999));
}
object key = (object)year;
if (!this.m_CachedDaylightChanges.Contains(key))
{
lock (CurrentSystemTimeZone.InternalSyncObject)
{
if (!this.m_CachedDaylightChanges.Contains(key))
{
short[] local_3 = CurrentSystemTimeZone.nativeGetDaylightChanges(year);
if (local_3 == null)
{
this.m_CachedDaylightChanges.Add(key, (object)new DaylightTime(DateTime.MinValue, DateTime.MinValue, TimeSpan.Zero));
}
else
{
DateTime temp_65 = CurrentSystemTimeZone.GetDayOfWeek(year, (uint)local_3[0] > 0U, (int)local_3[1], (int)local_3[2], (int)local_3[3], (int)local_3[4], (int)local_3[5], (int)local_3[6], (int)local_3[7]);
DateTime local_4 = CurrentSystemTimeZone.GetDayOfWeek(year, (uint)local_3[8] > 0U, (int)local_3[9], (int)local_3[10], (int)local_3[11], (int)local_3[12], (int)local_3[13], (int)local_3[14], (int)local_3[15]);
TimeSpan local_5 = new TimeSpan((long)local_3[16] * 600000000L);
DateTime temp_102 = local_4;
TimeSpan temp_103 = local_5;
DaylightTime local_6 = new DaylightTime(temp_65, temp_102, temp_103);
this.m_CachedDaylightChanges.Add(key, (object)local_6);
}
}
}
}
return((DaylightTime)this.m_CachedDaylightChanges[key]);
}