3838 {
3839 if (hours > 23 || minutes > 59 || seconds > 59)
3840 {
3841 timeSpan = default(TimeSpan);
3842 return false;
3843 }
3844 long num = ((long)days * 3600
L * 24 + (
long)hours * 3600
L + (long)minutes * 60
L + seconds) * 1000;
3845 long ticks;
3846 if (isNegative)
3847 {
3848 num = -num;
3849 if (num < -922337203685477
L)
3850 {
3851 timeSpan = default(TimeSpan);
3852 return false;
3853 }
3854 long num2 = num * 10000;
3855 if (num2 < long.MinValue + fraction)
3856 {
3857 timeSpan = default(TimeSpan);
3858 return false;
3859 }
3860 ticks = num2 - fraction;
3861 }
3862 else
3863 {
3864 if (num > 922337203685477
L)
3865 {
3866 timeSpan = default(TimeSpan);
3867 return false;
3868 }
3869 long num3 = num * 10000;
3870 if (num3 > long.MaxValue - (long)fraction)
3871 {
3872 timeSpan = default(TimeSpan);
3873 return false;
3874 }
3875 ticks = num3 + fraction;
3876 }
3878 return true;
3879 }