/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: February 21, 1992 9:44:59 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: UXTimeImpl, module: UXTimeImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3629548630,3112650541] UXTimeImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
#define SOURCE(p, l) /* source p, l */
static void NoName←Q600();
static void UXTimeImpl←P0();
static word DOWN←P60();
static word UP←P120();
static word Now←P180();
static word Period←P240();
static word Update←P300();
static word GMTDOWN←P360();
static word GMTUP←P420();
static word ToGMT←P480();
static word FromGMT←P540();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\330\126\204\126\300\271\207\107\055\100\164\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\212\174\364\337\300\361\376\000\156\100\150\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\325\206\070\326\300\224\310\304\225\100\150\000\000"};
static struct {
   word f0[6]; word f6; word f7; word f8; 
   word f9; word f10; word f11; word f12; 
   word f13; word f14; word f15; word f16; 
   word f17; word f18; word f19; word f20; 
   word f21; word f22; word f23; word f24; 
   word f25[3]; 
   } globalframe = {
   {0}, (word) FromGMT←P540, 0, (word) ToGMT←P480, 
   0, (word) GMTUP←P420, 0, (word) GMTDOWN←P360, 
   0, (word) Update←P300, 0, (word) Period←P240, 
   0, (word) Now←P180, 0, (word) UP←P120, 
   0, (word) DOWN←P60, 0, (word) UXTimeImpl←P0, 
   {0}
   };

static void NoName←Q600()
   {
   register ptr gf←c040 =  (ptr) &globalframe;
   word var←c4588;
   (void) XR←DeclareGlobalFrame((word) "UXTimeImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (( (bPt) gf←c040)+96)
      /* var←c4428 */ );
   var←c4588 = (word) XR←ImportInterface((word) "BasicTime", (word) XR←GetTypeIndexS((word) (&string2)), 24);
   (* (( (ptr) gf←c040)+26)/* var←c4460 */  ) = var←c4588;
   (void) XR←ImportProcS(var←c4588, 67111424);
   var←c4588 = (word) XR←ExportInterface((word) "UXTime", (word) XR←GetTypeIndexS((word) (&string3)), 10);
   (* (( (ptr) gf←c040)+27)/* var←c4620 */  ) = var←c4588;
   (void) XR←ExportVar(var←c4588, 0, (word) (( (bPt) gf←c040)+16));
   (void) XR←ExportVar(var←c4588, 1, (word) (( (bPt) gf←c040)+20));
   (void) XR←ExportProcS(var←c4588, (word) (( (bPt) gf←c040)+72)/* var←c4332 */ , 67109632);
   (void) XR←ExportProcS(var←c4588, (word) (( (bPt) gf←c040)+64)/* var←c4300 */ , 67634178);
   (void) XR←ExportProcS(var←c4588, (word) (( (bPt) gf←c040)+56)/* var←c4268 */ , 67634434);
   (void) XR←ExportProcS(var←c4588, (word) (( (bPt) gf←c040)+32)/* var←c4172 */ , 67372545);
   (void) XR←ExportProcS(var←c4588, (word) (( (bPt) gf←c040)+24)/* var←c4140 */ , 67372801);
   (void) XR←ExportProcS(var←c4588, (word) (( (bPt) gf←c040)+88)/* var←c4396 */ , 67373057);
   (void) XR←ExportProcS(var←c4588, (word) (( (bPt) gf←c040)+80)/* var←c4364 */ , 67373313);
   }

static void UXTimeImpl←P0(formal←c016, formal←c015)
   word formal←c016;
   word formal←c015;
   {
   /* UXTimeImpl: */ 
   }

static word DOWN←P60(time←v2916)
   word time←v2916;
   {
   word secs←v2960;
   /* DOWN: */ 
SOURCE(211, 85)
SOURCE(275, 21)
   secs←v2960 = time←v2916;
SOURCE(211, 85)
   return(secs←v2960);
   }

static word UP←P120(secs←v3020)
   word secs←v3020;
   {
   word time←v3064;
   /* UP: */ 
SOURCE(302, 83)
SOURCE(364, 21)
   time←v3064 = secs←v3020;
SOURCE(302, 83)
   return(time←v3064);
   }

static word Now←P180()
   {
   register ptr gf←c4652 =  (ptr) &globalframe;
   word time←v3124;
   word now←v3832;
   /* Now: */ 
SOURCE(391, 103)
SOURCE(437, 36)
   {
      word pd4;
      pd4 = (* (( (ptr) (* (( (ptr) gf←c4652)+26)/* var←c4460 */  ))+14) );
      now←v3832 = (word) ( *( (fPt) ((*  (ptr) pd4 ))))(pd4);
      };
SOURCE(475, 19)
   time←v3124 = (word) FromGMT←P540(now←v3832);
SOURCE(391, 103)
   return(time←v3124);
   }

static word Period←P240(from←v3184, to←v3212)
   word from←v3184;
   word to←v3212;
   {
   word delta←v3256;
   /* Period: */ 
SOURCE(500, 99)
SOURCE(570, 29)
   delta←v3256 = ((word) DOWN←P60(from←v3184) - (word) DOWN←P60(to←v3212));
SOURCE(500, 99)
   return(delta←v3256);
   }

static word Update←P300(base←v3316, period←v3344)
   word base←v3316;
   word period←v3344;
   {
   word time←v3388;
   /* Update: */ 
SOURCE(605, 111)
SOURCE(686, 30)
   {
      word var←c4492;
      var←c4492 = ((word) DOWN←P60(base←v3316) + period←v3344);
      time←v3388 = (word) UP←P120(var←c4492);
      };
SOURCE(605, 111)
   return(time←v3388);
   }

static word GMTDOWN←P360(gmt←v3448)
   word gmt←v3448;
   {
   word secs←v3492;
   /* GMTDOWN: */ 
SOURCE(841, 93)
SOURCE(914, 20)
   secs←v3492 = gmt←v3448;
SOURCE(841, 93)
   return(secs←v3492);
   }

static word GMTUP←P420(secs←v3552)
   word secs←v3552;
   {
   word gmt←v3596;
   /* GMTUP: */ 
SOURCE(940, 91)
SOURCE(1011, 20)
   gmt←v3596 = secs←v3552;
SOURCE(940, 91)
   return(gmt←v3596);
   }

static word ToGMT←P480(time←v3656)
   word time←v3656;
   {
   word gmt←v3700;
   /* ToGMT: */ 
SOURCE(1037, 110)
SOURCE(1108, 39)
   {
      word var←c4524;
      var←c4524 = ((word) DOWN←P60(time←v3656) + 63158400);
      gmt←v3700 = (word) GMTUP←P420(var←c4524);
      };
SOURCE(1037, 110)
   return(gmt←v3700);
   }

static word FromGMT←P540(gmt←v3760)
   word gmt←v3760;
   {
   word time←v3804;
   /* FromGMT: */ 
SOURCE(1153, 112)
SOURCE(1226, 39)
   {
      word var←c4556;
      var←c4556 = ((word) GMTDOWN←P360(gmt←v3760) - 63158400);
      time←v3804 = (word) UP←P120(var←c4556);
      };
SOURCE(1153, 112)
   return(time←v3804);
   }

/* file: UXTimeImpl, module: UXTimeImpl, compiled at: February 21, 1992 9:44:59 pm PST */ 
extern void XR←install←UXTimeImpl() {
   NoName←Q600();
   }
extern void XR←run←UXTimeImpl() { XR←Start(&globalframe); }