/* Generated with C2C (Cedar To C)*/ /* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */ /* time: February 21, 1992 9:45:18 pm PST */ /* C2C version: October 16, 1990 (native) */ /* ref-counting: off */ /* file: BasicTimeImpl, module: BasicTimeImpl */ /* switches: bcfhklnouw */ #include <cedar/InstallationSupport.h> #include <cedar/CedarExtra.h> static char versionStamp[] = "@(#)mob←version [1774341153,1689753261] BasicTimeImpl"; typedef unsigned word, *ptr; typedef unsigned char byte, *bPt; typedef unsigned short half, *hPt; typedef struct {word f0, f1, f2, f3;} W4; typedef word (*fPt)(); typedef struct {word f0, f1;} W2; typedef W2 *W2Pt; typedef struct {word f0, f1, f2;} W3; typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8; typedef struct {W8 f; W3 r;} W11; typedef W11 *W11Pt; typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7; typedef W3 *W3Pt; #define SOURCE(p, l) /* source p, l */ static float fc9 = 1.0e-6; #define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i ) #define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) ) #define MAX(cast, x, y) ( ( cast x) > ( cast y) ? (x) : (y) ) #define IOP2(op, x, y) ( (word) ((x) op (y)) ) #define IABS(i) ( ((int)(word)(i) > 0) ? (i) : (word)(-(int)(word)(i)) ) #define INEG(x) ( (word) ( - ((int) (word) (x)) ) ) static void NoName←Q1464(); static void BasicTimeImpl←P0(); static word GetClockPulses←P60(); static word PulsesToMicroseconds←P120(); static word PulsesToSeconds←P180(); static word MicrosecondsToPulses←P240(); static word Now←P300(); static void ExtendedNow←P360(); static word Period←P420(); static word Update←P480(); static word ToPupTime←P540(); static word ToNSTime←P600(); static word FromPupTime←P660(); static word FromNSTime←P720(); static void UnpackZ←P780(); static void Unpack←P840(); static word Pack←P900(); static word CheckDateGE←P960(); static void UnpackPeriod←P1020(); static word PackPeriod←P1080(); static word GetTPFromHost←P1140(); static void SetZoneAndDST←P1200(); static word NoName←Q1524(); static void GetZoneAndDST←P1260(); static word NoName←Q1584(); static void NoName←Q1644(); static void NoName←Q1704(); static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\151\302\114\041\300\144\267\226\255\100\164\000\000"}; static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\273\264\166\314\300\142\321\237\137\100\150\000\000"}; static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\212\174\364\337\300\361\376\000\156\100\150\000\000"}; static struct {unsigned f; char r[20];} string4 = {1048596, "\211\004\003\107\115\124\300\212\174\364\337\300\361\376\000\156\000\000\000"}; static struct {unsigned f; char r[4];} string5 = {65540, "\242\000\000"}; static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\230\171\104\016\300\260\376\371\017\100\150\000\000"}; static struct { word f0[12]; word f12; word f13; word f14[4]; word f18; word f19; word f20; word f21; word f22; word f23; word f24; word f25; word f26; word f27; word f28; word f29; word f30; word f31; word f32; word f33; word f34; word f35; word f36; word f37; word f38; word f39; word f40; word f41; word f42; word f43; word f44; word f45; word f46; word f47; word f48; word f49; word f50; word f51; word f52; word f53; word f54; word f55; word f56; word f57; word f58; word f59; word f60; word f61[2]; word f63; word f64; word f65; word f66; word f67; word f68; word f69; word f70; word f71; word f72; word f73; word f74; word f75[2]; } globalframe = { {0}, 43260, 2147483645, {0}, (word) GetZoneAndDST←P1260, 0, (word) SetZoneAndDST←P1200, 0, (word) GetTPFromHost←P1140, 0, (word) PackPeriod←P1080, 0, (word) UnpackPeriod←P1020, 0, (word) CheckDateGE←P960, 0, (word) Pack←P900, 0, (word) Unpack←P840, 0, (word) UnpackZ←P780, 0, (word) FromNSTime←P720, 0, (word) FromPupTime←P660, 0, (word) ToNSTime←P600, 0, (word) ToPupTime←P540, 0, (word) Update←P480, 0, (word) Period←P420, 0, (word) ExtendedNow←P360, 0, (word) Now←P300, 0, (word) MicrosecondsToPulses←P240, 0, (word) PulsesToSeconds←P180, 0, (word) PulsesToMicroseconds←P120, 0, (word) GetClockPulses←P60, 0, (word) BasicTimeImpl←P0, {0}, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366, {0} }; static void NoName←Q1464() { register ptr gf←c0137 = (ptr) &globalframe; word var←c10416; (void) XR←DeclareGlobalFrame((word) "BasicTimeImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c0137)+240) /* var←c9744 */ ); var←c10416 = (word) XR←ImportInterface((word) "HostTime", (word) XR←GetTypeIndexS((word) (&string2)), 8); (* (( (ptr) gf←c0137)+75)/* var←c9904 */ ) = var←c10416; (void) XR←ImportProcS(var←c10416, 201328384); (void) XR←ImportProcS(var←c10416, 135266305); (void) XR←ImportProcS(var←c10416, 268435968); (void) XR←ImportProcS(var←c10416, 68158209); var←c10416 = (word) XR←ExportInterface((word) "BasicTime", (word) XR←GetTypeIndexS((word) (&string3)), 24); (* (( (ptr) gf←c0137)+76)/* var←c10448 */ ) = var←c10416; (void) XR←ExportVar(var←c10416, 0, (word) (( (bPt) gf←c0137)+60)); (void) XR←ExportVar(var←c10416, 1, (word) (( (bPt) gf←c0137)+64)); (void) XR←ExportVar(var←c10416, 2, (word) (( (bPt) gf←c0137)+68)); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+232)/* var←c9712 */ , 67109632); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+224)/* var←c9680 */ , 67372033); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+216)/* var←c9648 */ , 67372289); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+208)/* var←c9616 */ , 67372545); (void) XR←ExportType((word) "GMT", (word) XR←GetTypeIndexS((word) (&string4)), (word) XR←GetTypeIndexS((word) (&string5)) ); (void) XR←ExportVar(var←c10416, 8, (word) (( (bPt) gf←c0137)+48)/* earliestGMT←v2944 */ ); (void) XR←ExportVar(var←c10416, 9, (word) (( (bPt) gf←c0137)+52)/* latestGMT←v2972 */ ); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+200)/* var←c9584 */ , 67111424); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+192)/* var←c9552 */ , 134220544); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+184)/* var←c9520 */ , 67636226); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+176)/* var←c9488 */ , 67636482); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+168)/* var←c9456 */ , 67374593); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+160)/* var←c9424 */ , 67374849); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+152)/* var←c9392 */ , 67375105); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+144)/* var←c9360 */ , 67375361); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+128)/* var←c9296 */ , 738464257); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+136)/* var←c9328 */ , 739250946); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+120)/* var←c9264 */ , 69997569); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+104)/* var←c9200 */ , 268702977); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+96)/* var←c9168 */ , 68163073); (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+72)/* var←c9072 */ , 201332480); var←c10416 = (word) XR←ExportInterface((word) "BasicTimeBackdoor", (word) XR←GetTypeIndexS((word) (&string6)), 1); (* (( (ptr) gf←c0137)+76)/* var←c10448 */ ) = var←c10416; (void) XR←ExportProcS(var←c10416, (word) (( (bPt) gf←c0137)+80)/* var←c9104 */ , 786433); } static void BasicTimeImpl←P0(formal←c036, formal←c035) word formal←c036; word formal←c035; { /* BasicTimeImpl: */ SOURCE(300, 7559) /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ /* moved to installation proc */ } static word GetClockPulses←P60() { register ptr gf←c10480 = (ptr) &globalframe; word var←c3688; /* GetClockPulses: */ SOURCE(568, 111) SOURCE(623, 56) { W4 var←c039; W4 var←c9872; { word pd7; pd7 = (* (( (ptr) (* (( (ptr) gf←c10480)+75)/* var←c9904 */ ))+6) ); (void) ( *( (fPt) ((* (ptr) pd7 ))))((word) (&var←c039), pd7); }; var←c9872 = var←c039; { word pd8; pd8 = (* (( (ptr) (* (( (ptr) gf←c10480)+75)/* var←c9904 */ ))+7) ); return((word) ( *( (fPt) ((* (ptr) pd8 ))))(var←c9872, pd8)); }; }; } static word PulsesToMicroseconds←P120(p←v3748) word p←v3748; { word var←c3792; /* PulsesToMicroseconds: */ SOURCE(683, 75) SOURCE(748, 10) return(p←v3748); } static word PulsesToSeconds←P180(p←v3852) word p←v3852; { word s←v3896; /* PulsesToSeconds: */ SOURCE(764, 80) SOURCE(827, 17) { word x10; float tf11; return(( tf11 = (float)(unsigned)p←v3852 * ( x10 = (* (ptr) &fc9 ), *(float*)&x10 ), *(word*)&tf11 )); }; } static word MicrosecondsToPulses←P240(m←v3956) word m←v3956; { word var←c4000; /* MicrosecondsToPulses: */ SOURCE(850, 75) SOURCE(915, 10) return(m←v3956); } static word Now←P300() { register ptr gf←c10512 = (ptr) &globalframe; word gmt←v4060; W4 var←c9936; W2 var←c049; /* Now: */ SOURCE(1616, 110) SOURCE(1664, 62) { word pd12; pd12 = (* (( (ptr) (* (( (ptr) gf←c10512)+75)/* var←c9904 */ ))+6) ); (void) ( *( (fPt) ((* (ptr) pd12 ))))((word) (&var←c9936), pd12); }; { word pd13; pd13 = (* (( (ptr) (* (( (ptr) gf←c10512)+75)/* var←c9904 */ ))+4) ); (void) ( *( (fPt) ((* (ptr) pd13 ))))((word) &var←c049, var←c9936, pd13); }; gmt←v4060 = var←c049.f0; SOURCE(1616, 110) return(gmt←v4060); } static void ExtendedNow←P360(formal←c054) word formal←c054; { register ptr gf←c10544 = (ptr) &globalframe; W2 egmt←v4120; /* ExtendedNow: */ SOURCE(1732, 124) SOURCE(1797, 59) { W4 var←c9968; { word pd14; pd14 = (* (( (ptr) (* (( (ptr) gf←c10544)+75)/* var←c9904 */ ))+6) ); (void) ( *( (fPt) ((* (ptr) pd14 ))))((word) (&var←c9968), pd14); }; { W2 var←c053; { word pd15; pd15 = (* (( (ptr) (* (( (ptr) gf←c10544)+75)/* var←c9904 */ ))+4) ); (void) ( *( (fPt) ((* (ptr) pd15 ))))((word) &var←c053, var←c9968, pd15); }; egmt←v4120 = var←c053; }; }; /* removed tail goto */ (* (W2Pt) formal←c054 ) = egmt←v4120; return; } static word Period←P420(from←v4180, to←v4208) word from←v4180; word to←v4208; { word var←c4252; /* Period: */ SOURCE(1862, 70) SOURCE(1916, 16) return((to←v4208 - from←v4180)); } static word Update←P480(base←v4312, period←v4340) word base←v4312; word period←v4340; { register ptr gf←c10576 = (ptr) &globalframe; word var←c4384; /* Update: */ SOURCE(1938, 158) SOURCE(2001, 95) if ( ( ( (int)period←v4340 >= (int)(0 - base←v4312)) ? ( (int)period←v4340 <= (int)(2147483645 - base←v4312)) : 0 ) ) { SOURCE(2054, 26) return((base←v4312 + period←v4340)); } else { SOURCE(2080, 16) (void) XR←RaiseError((word) (( (bPt) gf←c10576)+60), 0); }; } static word ToPupTime←P540(g←v4444) word g←v4444; { word var←c4488; /* ToPupTime: */ SOURCE(2102, 88) SOURCE(2155, 35) return((SGNCK(g←v4444) + 2114294400)); } static word ToNSTime←P600(g←v4548) word g←v4548; { word var←c4592; /* ToNSTime: */ SOURCE(2196, 87) SOURCE(2248, 35) return((SGNCK(g←v4548) + 2114294400)); } static word FromPupTime←P660(p←v4652) word p←v4652; { register ptr gf←c10608 = (ptr) &globalframe; word var←c4696; /* FromPupTime: */ SOURCE(2289, 130) SOURCE(2344, 75) if ((p←v4652 >= 2114294400)) { SOURCE(2366, 37) return((p←v4652 - 2114294400)); } else { SOURCE(2403, 16) (void) XR←RaiseError((word) (( (bPt) gf←c10608)+60), 0); }; } static word FromNSTime←P720(p←v4756) word p←v4756; { register ptr gf←c10640 = (ptr) &globalframe; word var←c4800; /* FromNSTime: */ SOURCE(2425, 129) SOURCE(2479, 75) if ((p←v4756 >= 2114294400)) { SOURCE(2501, 37) return((p←v4756 - 2114294400)); } else { SOURCE(2538, 16) (void) XR←RaiseError((word) (( (bPt) gf←c10640)+60), 0); }; } static void UnpackZ←P780(formal←c085, time←v4876, tp←v4904) word formal←c085; word time←v4876; W3 tp←v4904; { register ptr gf←c10672 = (ptr) &globalframe; W11 unpacked←v4948; word secs←v5732; word mins←v5760; word hrs←v5788; /* UnpackZ: */ SOURCE(2736, 1852) SOURCE(2736, 1852) (* (ptr) &unpacked←v4948 ) = 0; (* (( (ptr) &unpacked←v4948)+1) ) = 12; (* (( (ptr) &unpacked←v4948)+2) ) = 0; (* (( (ptr) &unpacked←v4948)+3) ) = 24; (* (( (ptr) &unpacked←v4948)+4) ) = 60; (* (( (ptr) &unpacked←v4948)+5) ) = 60; (* (( (ptr) &unpacked←v4948)+6) ) = 1441; (* (( (ptr) &unpacked←v4948)+7) ) = 2; (* (( (ptr) &unpacked←v4948)+8) ) = 7; (* (( (ptr) &unpacked←v4948)+9) ) = 2147483647; (* (( (ptr) &unpacked←v4948)+10) ) = 366; SOURCE(2843, 65) if (( (int)time←v4876 < (int)(* (( (ptr) gf←c10672)+12)/* earliestGMT←v2944 */ )) || ( (int)time←v4876 > (int)(* (( (ptr) gf←c10672)+13) /* latestGMT←v2972 */ ))) { SOURCE(2890, 18) (void) XR←RaiseError((word) (( (bPt) gf←c10672)+60), 0); }; SOURCE(2910, 23) secs←v5732 = SGNCK(time←v4876); SOURCE(2935, 69) mins←v5760 = ((secs←v5732 / 60) - ( ( (int)tp←v4904.f0 == (int)1441) ? 0 : (tp←v4904.f0 - 720) ) ); SOURCE(3006, 15) hrs←v5788 = (mins←v5760 / 60); SOURCE(3023, 29) (* (( (ptr) &unpacked←v4948)+5) ) = (secs←v5732 % 60); SOURCE(3054, 29) (* (( (ptr) &unpacked←v4948)+4) ) = (mins←v5760 % 60); SOURCE(3085, 66) { word idx16; (* (( (ptr) &unpacked←v4948)+6) ) = ( idx16 = (word) ( ( ( (int)tp←v4904.f0 == (int)1441) ? 0 : (tp←v4904.f0 - 720) ) + 720), BCK(idx16, 1442) ); }; SOURCE(3153, 17) (* (( (ptr) &unpacked←v4948)+7) ) = 1; SOURCE(3172, 1416) lab←L100004: ; SOURCE(3172, 1416) { word daysSinceBase←v5832; word fourYears←v5888; word daysBeyondFourYears←v5916; word pseudoDaysBeyond←v5944; word oddYears←v5972; word dayOfYear←v6000; SOURCE(3208, 34) daysSinceBase←v5832 = (hrs←v5788 / 24); SOURCE(3289, 53) fourYears←v5888 = (daysSinceBase←v5832 / 1461); SOURCE(3344, 65) daysBeyondFourYears←v5916 = (daysSinceBase←v5832 % 1461); SOURCE(3411, 138) pseudoDaysBeyond←v5944 = (daysBeyondFourYears←v5916 + (((MAX( (unsigned) , 60, daysBeyondFourYears←v5916)) - 60) / 365)); SOURCE(3551, 41) { word idx17; oddYears←v5972 = ( idx17 = (word) (pseudoDaysBeyond←v5944 / 366), BCK(idx17, 4) ); }; SOURCE(3594, 50) dayOfYear←v6000 = ((pseudoDaysBeyond←v5944 % 366) + 1); SOURCE(3676, 52) { word idx18; (* (ptr) &unpacked←v4948 ) = ( idx18 = (word) (((fourYears←v5888 << 2) + oddYears←v5972) + 1968), BCK(idx18, 2051) ); }; SOURCE(3730, 31) (* (( (ptr) &unpacked←v4948)+8) ) = 0; SOURCE(3763, 153) { register word noName←c10000 = 0; register word noName←c10032; noName←c10032 = (daysSinceBase←v5832 % 7); if ((noName←c10000 >= noName←c10032)) { goto lab←L100005; }; lab←L100008: ; SOURCE(3799, 41) { word idx19; (* (( (ptr) &unpacked←v4948)+8) ) = ( idx19 = (word) ((* (( (ptr) &unpacked←v4948)+8) ) + 1), BCK(idx19, 8) ); }; SOURCE(3842, 74) if (((* (( (ptr) &unpacked←v4948)+8) ) == 7)) { SOURCE(3881, 35) (* (( (ptr) &unpacked←v4948)+8) ) = 0; }; noName←c10000 = (noName←c10000 + 1); if ((noName←c10000 < noName←c10032)) { goto lab←L100008; }; lab←L100005: ; }; SOURCE(3927, 128) { register word month←v6064 = 0; lab←L100012: ; SOURCE(3987, 68) if ((dayOfYear←v6000 <= (* ((( (ptr) gf←c10672)+62)/* var←c9808 */ +BCK((month←v6064 + 1), 13)) ))) { SOURCE(4033, 22) (* (( (ptr) &unpacked←v4948)+1) ) = month←v6064; SOURCE(4057, 4) goto lab←L100010; }; if ((month←v6064 >= 11)) { goto lab←L100009; }; month←v6064 = (month←v6064 + 1); goto lab←L100012; lab←L100009: ; SOURCE(4083, 13) (void) XR←RaiseUnnamedError(); lab←L100010: ; }; SOURCE(4098, 51) { word idx20; (* (( (ptr) &unpacked←v4948)+2) ) = ( idx20 = (word) (dayOfYear←v6000 - (* ((( (ptr) gf←c10672)+62)/* var←c9808 */ +(* (( (ptr) &unpacked←v4948)+1) )) )), BCK(idx20, 32) ); }; SOURCE(4151, 26) (* (( (ptr) &unpacked←v4948)+3) ) = (hrs←v5788 % 24); SOURCE(4179, 229) { word yearStart←v6108; SOURCE(4181, 104) yearStart←v6108 = ((fourYears←v5888 * 1461) + ( (oddYears←v5972 == 0) ? 0 : (IOP2( * , (int)(oddYears←v5972 - 1), (int)365) + 366) ) ); SOURCE(4287, 49) (* (( (ptr) &unpacked←v4948)+10) ) = BCK((daysSinceBase←v5832 - yearStart←v6108), 367); SOURCE(4338, 68) (* (( (ptr) &unpacked←v4948)+9) ) = (secs←v5732 - (((yearStart←v6108 * 24) * 60) * 60)); }; SOURCE(4411, 140) if (((((* (( (ptr) &unpacked←v4948)+7) ) == 0) || ( (int)tp←v4904.f0 == (int)1441)) || (0 == (word) CheckDateGE←P960(unpacked←v4948, tp←v4904.f1, 2) )) || (0 != (word) CheckDateGE←P960(unpacked←v4948, tp←v4904.f2, 1))) { SOURCE(4551, 4) goto lab←L100003; }; SOURCE(4557, 11) hrs←v5788 = (hrs←v5788 + 1); SOURCE(4570, 18) (* (( (ptr) &unpacked←v4948)+7) ) = 0; }; goto lab←L100004; lab←L100003: ; /* removed tail goto */ (* (W11Pt) formal←c085 ) = unpacked←v4948; return; } static void Unpack←P840(formal←c092, time←v5008) word formal←c092; word time←v5008; { W11 var←c5052; /* Unpack: */ SOURCE(4603, 94) SOURCE(4658, 39) { W11 var←c10128; { W3 var←c10096; (void) GetZoneAndDST←P1260((word) (&var←c10096)); { W11 var←c091; (void) UnpackZ←P780((word) &var←c091, time←v5008, var←c10096); var←c10128 = var←c091; }; }; var←c5052 = var←c10128; /* removed tail goto */ }; (* (W11Pt) formal←c092 ) = var←c5052; return; } static word Pack←P900(unpacked←v5112) W11 unpacked←v5112; { register ptr gf←c10704 = (ptr) &globalframe; word time←v5156; W3 tp←v6152; word yearsSinceBase←v6208; word oddYears←v6236; word day←v6264; word daysSinceBase←v6292; word zone←v6320; /* Pack: */ SOURCE(4703, 1445) SOURCE(4768, 32) (void) GetZoneAndDST←P1260((word) (&tp←v6152)); SOURCE(4847, 112) yearsSinceBase←v6208 = ( ((* (ptr) &unpacked←v5112 ) < 1968) ? ( XR←RaiseError((word) (( (bPt) gf←c10704)+60), 0), 0 ) : ((* (ptr) &unpacked←v5112 ) - 1968) ) ; SOURCE(4961, 39) oddYears←v6236 = (yearsSinceBase←v6208 & 3); SOURCE(5002, 263) day←v6264 = ((((* ((( (ptr) gf←c10704)+62)/* var←c9808 */ +(* (( (ptr) &unpacked←v5112)+1) )) ) + (* (( (ptr) &unpacked←v5112)+2) )) - 1) - ( ( (oddYears←v6236 != 0) ? ((* (( (ptr) &unpacked←v5112)+1) ) > 1) : 0 ) ? 1 : 0 ) ); SOURCE(5267, 132) daysSinceBase←v6292 = (((((yearsSinceBase←v6208 >> 2) * 1461) + (oddYears←v6236 * 365)) + day←v6264) + ( (oddYears←v6236 != 0) ? 1 : 0 ) ); SOURCE(5401, 160) { word idx21; zone←v6320 = ( idx21 = (word) ( ( ( (int)(* (( (ptr) &unpacked←v5112)+6) ) != (int)1441) ? ((* (( (ptr) &unpacked←v5112)+6) ) - 720) : ( ( (int)tp←v6152.f0 != (int)1441) ? (tp←v6152.f0 - 720) : ( XR←RaiseError((word) (( (bPt) gf←c10704)+68), 0), 0 ) ) ) + 780), BCK(idx21, 1502) ); }; SOURCE(5563, 432) { word var←c10160; var←c10160 = (* (( (ptr) &unpacked←v5112)+7) ); switch (var←c10160) { case 2: SOURCE(5605, 31) (* (( (ptr) &unpacked←v5112)+8) ) = 0; SOURCE(5638, 153) { register word noName←c10192 = 0; register word noName←c10224; noName←c10224 = (daysSinceBase←v6292 % 7); if ((noName←c10192 >= noName←c10224)) { goto lab←L100014; }; lab←L100017: ; SOURCE(5674, 41) { word idx22; (* (( (ptr) &unpacked←v5112)+8) ) = ( idx22 = (word) ((* (( (ptr) &unpacked←v5112)+8) ) + 1), BCK(idx22, 8) ); }; SOURCE(5717, 74) if (((* (( (ptr) &unpacked←v5112)+8) ) == 7)) { SOURCE(5756, 35) (* (( (ptr) &unpacked←v5112)+8) ) = 0; }; noName←c10192 = (noName←c10192 + 1); if ((noName←c10192 < noName←c10224)) { goto lab←L100017; }; lab←L100014: ; }; SOURCE(5802, 64) if (( (int)tp←v6152.f0 == (int)1441)) { SOURCE(5836, 30) (void) XR←RaiseError((word) (( (bPt) gf←c10704)+68), 0); }; SOURCE(5868, 99) if ( ( (0 != (word) CheckDateGE←P960(unpacked←v5112, tp←v6152.f1, 2)) ? (0 == (word) CheckDateGE←P960(unpacked←v5112, tp←v6152.f2, 2) ) : 0 ) ) { SOURCE(5951, 16) zone←v6320 = BCK((zone←v6320 - 60), 1502); }; break; case 0: SOURCE(5979, 16) zone←v6320 = BCK((zone←v6320 - 60), 1502); break; case 1: break; default: SOURCE(6020, 5) (void) XR←RaiseUnnamedError(); break; }; }; SOURCE(6027, 121) return((IOP2( * , (int)(((((daysSinceBase←v6292 * 24) + (* (( (ptr) &unpacked←v5112)+3) )) * 60) + (* (( (ptr) &unpacked←v5112)+4) )) + (zone←v6320 - 780)), (int)60) + (* (( (ptr) &unpacked←v5112)+5) ))); } static word CheckDateGE←P960(unpacked←v5216, dstDay←v5244, dstHour←v5272) W11 unpacked←v5216; word dstDay←v5244; word dstHour←v5272; { register ptr gf←c10736 = (ptr) &globalframe; word var←c5316; word day←v6404; /* CheckDateGE: */ SOURCE(6152, 566) SOURCE(6237, 57) day←v6404 = ((* ((( (ptr) gf←c10736)+62)/* var←c9808 */ +(* (( (ptr) &unpacked←v5216)+1) )) ) + (* (( (ptr) &unpacked←v5216)+2) )); if ((day←v6404 < (dstDay←v5244 - 6))) { SOURCE(6331, 14) return(0); } else { if ((day←v6404 > dstDay←v5244)) { SOURCE(6394, 13) return(1); } else { if (((* (( (ptr) &unpacked←v5216)+8) ) == 6)) { SOURCE(6468, 33) return(((* (( (ptr) &unpacked←v5216)+3) ) >= dstHour←v5272)); } else { SOURCE(6535, 68) { register word noName←c10256 = 0; register word noName←c10288; noName←c10288 = (* (( (ptr) &unpacked←v5216)+8) ); if ((noName←c10256 >= noName←c10288)) { goto lab←L100018; }; lab←L100021: ; SOURCE(6592, 11) day←v6404 = (day←v6404 - 1); noName←c10256 = (noName←c10256 + 1); if ((noName←c10256 < noName←c10288)) { goto lab←L100021; }; lab←L100018: ; }; SOURCE(6658, 60) return((day←v6404 > (dstDay←v5244 - 6))); }; }; }; } static void UnpackPeriod←P1020(formal←c0117, period←v5376) word formal←c0117; word period←v5376; { word var←c0164; word var←c0165; word var←c0166; word var←c0167; word seconds←v6448; word minutes←v6476; word hours←v6504; /* UnpackPeriod: */ SOURCE(6781, 305) /* Return var split */ SOURCE(6850, 27) seconds←v6448 = IABS(period←v5376); SOURCE(6879, 40) minutes←v6476 = (seconds←v6448 / 60); SOURCE(6921, 36) hours←v6504 = (minutes←v6476 / 60); SOURCE(6959, 127) var←c0164 = SGNCK(hours←v6504); { word idx23; var←c0165 = ( idx23 = (word) (minutes←v6476 - (hours←v6504 * 60)), BCK(idx23, 60) ); }; { word idx24; var←c0166 = ( idx24 = (word) (seconds←v6448 - (minutes←v6476 * 60)), BCK(idx24, 60) ); }; var←c0167 = ( (int)period←v5376 < (int)0); /* removed tail goto */ (* (( (ptr) formal←c0117)+3) ) = var←c0167; (* (( (ptr) formal←c0117)+2) ) = var←c0166; (* (( (ptr) formal←c0117)+1) ) = var←c0165; (* (ptr) formal←c0117 ) = var←c0164; return; } static word PackPeriod←P1080(period←v5480) W4 period←v5480; { register ptr gf←c10768 = (ptr) &globalframe; word seconds←v5524; word part←v6548; /* PackPeriod: */ SOURCE(7091, 346) SOURCE(7167, 59) part←v6548 = (period←v5480.f2 + (period←v5480.f1 * 60)); SOURCE(7228, 39) if (( (int)period←v5480.f0 < (int)0)) { SOURCE(7251, 16) (void) XR←RaiseError((word) (( (bPt) gf←c10768)+60), 0); }; SOURCE(7269, 80) { word idx25; if ((( idx25 = (word) period←v5480.f0, SGNCK(idx25) ) > IOP2( / , (int)(2147483647 - part←v6548), (int)3600))) { SOURCE(7333, 16) (void) XR←RaiseError((word) (( (bPt) gf←c10768)+60), 0); }; }; SOURCE(7351, 42) seconds←v5524 = (part←v6548 + IOP2( * , (int)period←v5480.f0, (int)3600)); SOURCE(7395, 42) if ((0 != period←v5480.f3)) { SOURCE(7419, 18) seconds←v5524 = INEG(seconds←v5524); }; SOURCE(7091, 346) return(seconds←v5524); } static word GetTPFromHost←P1140() { register ptr gf←c10800 = (ptr) &globalframe; word ok←v5584; /* GetTPFromHost: */ SOURCE(7443, 114) SOURCE(7443, 114) ok←v5584 = 1; SOURCE(7502, 34) { word pd26; pd26 = (* (( (ptr) (* (( (ptr) gf←c10800)+75)/* var←c9904 */ ))+11) ); (void) ( *( (fPt) ((* (ptr) pd26 ))))((word) ((( (bPt) gf←c10800)+32)/* knownTP←v2524 */ ), pd26); }; SOURCE(7538, 19) (* (( (ptr) gf←c10800)+11)/* knownTPValid←v2552 */ ) = 1; SOURCE(7443, 114) return(ok←v5584); } static void SetZoneAndDST←P1200(formal←c0163) W3 formal←c0163; { W7 var←c10832; /* declaration of tp←v5644 skipped */ register ptr gf←c10864 = (ptr) &globalframe; (* (W3Pt) (( (ptr) &var←c10832)+4)/* tp←v5644 */ ) = formal←c0163; /* SetZoneAndDST: */ SOURCE(7563, 110) (void) (XR←MonitorEntry((word) (( (bPt) gf←c10864)+16)/* LOCK←v2496 */ )); SOURCE(7617, 56) { word var←c0157; var←c0157 = (word) &var←c10832; (void) (word) XR←Enable(( ((word) (fPt) NoName←Q1524) ), ( ((word) (fPt) NoName←Q1704) ), var←c0157); }; SOURCE(7563, 110) (void) (XR←MonitorExit((word) (( (bPt) gf←c10864)+16)/* LOCK←v2496 */ )); return; } static word NoName←Q1524(formal←c0151) word formal←c0151; { register ptr gf←c0150 = (ptr) &globalframe; SOURCE(7640, 12) (* (W3Pt) (( (ptr) gf←c0150)+8)/* knownTP←v2524 */ ) = (* (W3Pt) (( (ptr) formal←c0151)+4) ); SOURCE(7654, 19) (* (( (ptr) gf←c0150)+11)/* knownTPValid←v2552 */ ) = 1; return(0); } static void GetZoneAndDST←P1260(formal←c0125) word formal←c0125; { W7 var←c10896; register ptr gf←c10928 = (ptr) &globalframe; /* declaration of tp←v5704 skipped */ /* GetZoneAndDST: */ SOURCE(7679, 180) (void) (XR←MonitorEntry((word) (( (bPt) gf←c10928)+16)/* LOCK←v2496 */ )); SOURCE(7741, 118) { word var←c01; { word var←c0158; var←c0158 = (word) &var←c10896; var←c01 = (word) XR←Enable(( ((word) (fPt) NoName←Q1584) ), ( ((word) (fPt) NoName←Q1644) ), var←c0158); }; /* removed trivial cond node */ }; (void) (XR←MonitorExit((word) (( (bPt) gf←c10928)+16)/* LOCK←v2496 */ )); (* (W3Pt) formal←c0125 ) = (* (W3Pt) (( (ptr) &var←c10896)+4)/* tp←v5704 */ ); return; } static word NoName←Q1584(formal←c0154) word formal←c0154; { register ptr gf←c0153 = (ptr) &globalframe; SOURCE(7764, 59) if ((0 != (* (( (ptr) gf←c0153)+11)/* knownTPValid←v2552 */ )) || (0 != (word) GetTPFromHost←P1140())) { SOURCE(7807, 16) (* (W3Pt) (( (ptr) formal←c0154)+4) ) = (* (W3Pt) (( (ptr) gf←c0153)+8)/* knownTP←v2524 */ ); return(2); }; SOURCE(7825, 34) (* (( (ptr) formal←c0154)+4) ) = 1441; (* (( (ptr) formal←c0154)+5) ) = 366; (* (( (ptr) formal←c0154)+6) ) = 366; return(2); /* c2c skipped dead code */ } static void NoName←Q1644(formal←c0131, formal←c200004, formal←c200005, formal←c200006, formal←c200007) word formal←c0131; word formal←c200004; word formal←c200005; word formal←c200006; word formal←c200007; { register ptr gf←c0155 = (ptr) &globalframe; if ((formal←c200005 == XR←Unwind)) { (void) (XR←MonitorExit((word) (( (bPt) gf←c0155)+16)/* LOCK←v2496 */ )); }; (* (ptr) formal←c0131 ) = 0; (* (( (ptr) formal←c0131)+1) ) = 0; return; } static void NoName←Q1704(formal←c0136, formal←c200000, formal←c200001, formal←c200002, formal←c200003) word formal←c0136; word formal←c200000; word formal←c200001; word formal←c200002; word formal←c200003; { register ptr gf←c0156 = (ptr) &globalframe; if ((formal←c200001 == XR←Unwind)) { (void) (XR←MonitorExit((word) (( (bPt) gf←c0156)+16)/* LOCK←v2496 */ )); }; (* (ptr) formal←c0136 ) = 0; (* (( (ptr) formal←c0136)+1) ) = 0; return; } /* file: BasicTimeImpl, module: BasicTimeImpl, compiled at: February 21, 1992 9:45:18 pm PST */ extern void XR←install←BasicTimeImpl() { NoName←Q1464(); } extern void XR←run←BasicTimeImpl() { XR←Start(&globalframe); }