/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation.  All rights reserved. */
/* time: December 16, 1992 11:03:05 am PST */
/* C2C version: October 7, 1992 (native) */
/* ref-counting: off */
/* file: XTkBitmapScrollerImpl, module: XTkBitmapScrollerImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1662744278,476171680] XTkBitmapScrollerImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; word r;} W9;
typedef struct {word f0, f1;} W2;
typedef W9 *W9Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef W2 *W2Pt;
typedef struct {W8 f; W2 r;} W10;
#define SOURCE(p, l) /* source p, l */
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
#define INEG(x)  ( (word) ( - ((int) (word) (x)) ) )
#define MIN(cast, x, y)  ( ( cast x) < ( cast y) ? (x) : (y) )
#define FMAX(x, y, tx, ty)  ( (tx=((float) x)) >= (ty=((float) y)) ? tx : ty )
static float fc67 = 0.0;
static void NoName←Q1212();
static void XTkBitmapScrollerImpl←P0();
static word GetData←P60();
static word CreateBitmapScroller←P120();
static void PostRealize←P180();
static void BiScrollerProc←P240();
static void SetBitmap←P300();
static void GetBitmap←P360();
static void CreateAndSetBitmap←P420();
static word CreateContext←P480();
static void ShowScrollbars←P540();
static void ScrollTo←P600();
static void action←P1152();
static void GetScrollPos←P660();
static void Wait←P720();
static word GetImplData←P780();
static word GetImplWidget←P840();
static void GetVisibleBox←P900();
static struct {unsigned f; char r[4];} string1 = {65540, "\242\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\143\033\166\326\300\034\141\315\240\100\200\000\000"};
static struct {unsigned f; char r[4];} string3 = {196611, "\004L\003"};
static struct {unsigned f; char r[16];} string4 = {851984, "\257\300\033\115\307\000\300\214\060\055\310\100\244\000\000"};
static struct {unsigned f; char r[40];} string5 = {2555943, "\011\000\004\106\000\040\006\011\020\004\101\201\100\174\001\100\200\001\100\204\001\100\210\001\100\220\001\100\264\001\100\270\001\100\274\001\100\304\001"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\143\033\166\326\300\034\141\315\240\100\164\000\000"};
static struct {unsigned f; char r[4];} string7 = {131074, "\003\010\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string9 = {851984, "\257\300\243\162\130\311\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\256\061\211\265\300\052\170\134\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\245\223\103\375\300\127\103\204\036\100\150\000\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\114\360\325\157\300\264\322\230\211\100\150\000\000"};
static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\351\276\264\273\300\115\104\320\264\100\164\000\000"};
static struct {unsigned f; char r[16];} string14 = {851984, "\257\300\033\115\307\000\300\214\060\055\310\100\150\000\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\241\353\232\337\300\356\000\215\116\100\150\000\000"};
static struct {
   word f0[13]; 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; 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[2]; word f46; word f47; word f48; 
   word f49; word f50; word f51; word f52[2]; 
   word f54; word f55; word f56; word f57; 
   word f58[8]; 
   } globalframe = {
   {0}, (word) GetVisibleBox←P900, 0, (word) GetImplWidget←P840, 
   0, (word) GetImplData←P780, 0, (word) Wait←P720, 
   0, (word) GetScrollPos←P660, 0, (word) ScrollTo←P600, 
   0, (word) ShowScrollbars←P540, 0, (word) CreateContext←P480, 
   0, (word) CreateAndSetBitmap←P420, 0, (word) GetBitmap←P360, 
   0, (word) SetBitmap←P300, 0, (word) BiScrollerProc←P240, 
   0, (word) PostRealize←P180, 0, (word) CreateBitmapScroller←P120, 
   0, (word) GetData←P60, 0, (word) XTkBitmapScrollerImpl←P0, 
   {0}, (word) 2147483648, (word) 2147483648, (word) 2147483648, 
   (word) 2147483648, (word) 2147483648, (word) 3, {0}, 
   (word) 2147483648, (word) 2147483648, (word) 2147483647, (word) 2147483647, 
   {0}
   };

static void NoName←Q1212()
   {
   register ptr gf←c0126 =  (ptr) &globalframe;
   word var←c17652;
   (* (( (ptr) gf←c0126)+9) ) = (word) XR←GetTypeIndexS((word) (&string1));
   (* (( (ptr) gf←c0126)+11) ) = (word) XR←GetTypeIndex((word) &string2, 0, (word) &string3);
   (* (( (ptr) gf←c0126)+12) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (void) XR←DeclareGlobalFrame((word) "XTkBitmapScrollerImpl", &globalframe, (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7)
      , (word) (( (bPt) gf←c0126)+172)/* var←c16820 */ );
   var←c17652 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string8)), 11);
   (* (( (ptr) gf←c0126)+62)/* var←c17268 */  ) = var←c17652;
   (void) XR←ImportProcS(var←c17652, 67371521);
   var←c17652 = (word) XR←ImportInterface((word) "SF", (word) XR←GetTypeIndexS((word) (&string9)), 19);
   (* (( (ptr) gf←c0126)+61)/* var←c17204 */  ) = var←c17652;
   (void) XR←ImportProcS(var←c17652, 135267842);
   (void) XR←ImportProcS(var←c17652, 135270145);
   var←c17652 = (word) XR←ImportInterface((word) "XlBitmap", (word) XR←GetTypeIndexS((word) (&string10)), 14);
   (* (( (ptr) gf←c0126)+63)/* var←c17332 */  ) = var←c17652;
   (void) XR←ImportProcS(var←c17652, 68158467);
   (void) XR←ImportProcS(var←c17652, 268699393);
   var←c17652 = (word) XR←ImportInterface((word) "XTkBiScrollerFrame", (word) XR←GetTypeIndexS((word) (&string11)), 10);
   (* (( (ptr) gf←c0126)+60)/* var←c17140 */  ) = var←c17652;
   (void) XR←ImportProcS(var←c17652, 1574403);
   (void) XR←ImportProcS(var←c17652, 1050884);
   (void) XR←ImportProcS(var←c17652, 70779141);
   var←c17652 = (word) XR←ImportInterface((word) "XTkBitmapWidgets", (word) XR←GetTypeIndexS((word) (&string12)), 8);
   (* (( (ptr) gf←c0126)+59)/* var←c17076 */  ) = var←c17652;
   (void) XR←ImportProcS(var←c17652, 67372801);
   (void) XR←ImportProcS(var←c17652, 525314);
   (void) XR←ImportProcS(var←c17652, 2621958);
   (void) XR←ImportProcS(var←c17652, 67634434);
   (void) XR←ImportProcS(var←c17652, 69992451);
   var←c17652 = (word) XR←ImportInterface((word) "Xl", (word) XR←GetTypeIndexS((word) (&string13)), 218);
   (* (( (ptr) gf←c0126)+64)/* var←c17492 */  ) = var←c17652;
   (void) XR←ImportProcS(var←c17652, 539906);
   var←c17652 = (word) XR←ImportInterface((word) "XTk", (word) XR←GetTypeIndexS((word) (&string14)), 50);
   (* (( (ptr) gf←c0126)+58)/* var←c17012 */  ) = var←c17652;
   (void) XR←ImportProcS(var←c17652, 1050628);
   (void) XR←ImportProcS(var←c17652, 788227);
   (void) XR←ImportProcS(var←c17652, 67634690);
   var←c17652 = (word) XR←ExportInterface((word) "XTkBitmapScroller", (word) XR←GetTypeIndexS((word) (&string15)), 11);
   (* (( (ptr) gf←c0126)+65)/* var←c17684 */  ) = var←c17652;
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+156)/* var←c16756 */ , 70778885);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+132)/* var←c16660 */ , 1310980);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+124)/* var←c16628 */ , 134480385);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+116)/* var←c16596 */ , 1835781);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+108)/* var←c16564 */ , 67372033);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+92)/* var←c16500 */ , 787714);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+84)/* var←c16468 */ , 134481409);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+52)/* var←c16340 */ , 268699393);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+76)/* var←c16436 */ , 526338);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+68)/* var←c16404 */ , 67373313);
   (void) XR←ExportProcS(var←c17652, (word) (( (bPt) gf←c0126)+60)/* var←c16372 */ , 67373569);
   }

static void XTkBitmapScrollerImpl←P0(formal←c032, formal←c031)
   word formal←c032;
   word formal←c031;
   {
   register ptr gf←c17716 =  (ptr) &globalframe;
   /* XTkBitmapScrollerImpl: */ 
SOURCE(107, 5929)
   /* 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 */ 
SOURCE(643, 25)
   (* (( (ptr) gf←c17716)+8)/* myKey←v2888 */  ) = XR←NewObject(4, (* (( (ptr) gf←c17716)+9) ));
   }

static word GetData←P60(scroller←v3656)
   word scroller←v3656;
   {
   register ptr gf←c17748 =  (ptr) &globalframe;
   word var←c3700;
   /* GetData: */ 
SOURCE(671, 124)
SOURCE(744, 51)
   {
      word pd16;
      pd16 = (* (( (ptr) (* (( (ptr) gf←c17748)+58)/* var←c17012 */  ))+10) );
      return(XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd16 ))))(scroller←v3656, (* (( (ptr) gf←c17748)+8)/* myKey←v2888 */  ), pd16)
         , (* (( (ptr) gf←c17748)+11) )));
      };
   }

static word CreateBitmapScroller←P120(widgetSpec←v3772, scrolledCallBack←v3800, scrollTQ←v3828, scrollData←v3856, insideSize←v3884)
   W9 widgetSpec←v3772;
   word scrolledCallBack←v3800;
   word scrollTQ←v3828;
   word scrollData←v3856;
   W2 insideSize←v3884;
   {
   register ptr gf←c17780 =  (ptr) &globalframe;
   word var←c3940;
   word data←v5252;
   word bitmap←v5280;
   word biScroller←v5308;
   /* CreateBitmapScroller: */ 
SOURCE(801, 878)
SOURCE(989, 135)
   data←v5252 = XR←NewObject(48, (* (( (ptr) gf←c17780)+11) ));
   (* (( (ptr) data←v5252)+2) ) = 1;
   (* (( (ptr) data←v5252)+3) ) = 1;
   (* (( (ptr) data←v5252)+6) ) = 1;
   (* (( (ptr) data←v5252)+9) ) = XR←CheckProc(scrolledCallBack←v3800);
   (* (( (ptr) data←v5252)+10) ) = scrollTQ←v3828;
   (* (( (ptr) data←v5252)+11) ) = scrollData←v3856;
SOURCE(1126, 72)
   {
      word pd17;
      pd17 = (* (( (ptr) (* (( (ptr) gf←c17780)+59)/* var←c17076 */  ))+4) );
      bitmap←v5280 = (word) ( *( (fPt) ((*  (ptr) pd17 ))))((*  (W9Pt) (( (ptr) gf←c17780)+45)/* var←c16884 */  ), 0, 0, pd17);
      };
   (* (( (ptr) data←v5252)+1) ) = bitmap←v5280;
SOURCE(1200, 131)
   {
      word pd18;
      pd18 = (* (( (ptr) (* (( (ptr) gf←c17780)+60)/* var←c17140 */  ))+5) );
      biScroller←v5308 = (word) ( *( (fPt) ((*  (ptr) pd18 ))))(widgetSpec←v3772, bitmap←v5280, insideSize←v3884, 1, 1, pd18);
      };
SOURCE(1333, 42)
   {
      word pd19;
      pd19 = (* (( (ptr) (* (( (ptr) gf←c17780)+58)/* var←c17012 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd19 ))))(biScroller←v5308, (* (( (ptr) gf←c17780)+8)/* myKey←v2888 */  ), data←v5252, pd19)
      ;
      };
SOURCE(1377, 80)
   {
      word pd20;
      pd20 = (* (( (ptr) (* (( (ptr) gf←c17780)+58)/* var←c17012 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd20 ))))(bitmap←v5280, (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c17780)+58)/* var←c17012 */  ))+17)
          ) ), (word) (( (bPt) gf←c17780)+148)/* var←c16724 */ , biScroller←v5308, pd20);
      };
SOURCE(1459, 75)
   {
      word pd21;
      pd21 = (* (( (ptr) (* (( (ptr) gf←c17780)+58)/* var←c17012 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd21 ))))(bitmap←v5280, (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c17780)+58)/* var←c17012 */  ))+19)
          ) ), (word) (( (bPt) gf←c17780)+148)/* var←c16724 */ , biScroller←v5308, pd21);
      };
SOURCE(1536, 121)
   {
      word pd22;
      pd22 = (* (( (ptr) (* (( (ptr) gf←c17780)+60)/* var←c17140 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd22 ))))(biScroller←v5308, (word) (( (bPt) gf←c17780)+140)/* var←c16692 */ , data←v5252, scrollTQ←v3828, pd22)
      ;
      };
SOURCE(1659, 20)
   return(biScroller←v5308);
   }

static void PostRealize←P180(widget←v8968, registerData←v8996, callData←v9024, event←v9052)
   word widget←v8968;
   word registerData←v8996;
   word callData←v9024;
   word event←v9052;
   {
   register ptr gf←c17812 =  (ptr) &globalframe;
   word scroller←v5364;
   /* PostRealize: */ 
SOURCE(1683, 126)
SOURCE(1721, 43)
   scroller←v5364 = XR←Narrow(registerData←v8996, (* (( (ptr) gf←c17812)+12) ));
SOURCE(1766, 43)
   {
      W2 var←c17172;
      (void) GetScrollPos←P660((word) &var←c17172, scroller←v5364);
      (void) ScrollTo←P600(scroller←v5364, var←c17172);
      };
   }

static void BiScrollerProc←P240(biScrollerFrame←v9112, hAction←v9140, vAction←v9168, x←v9196, y←v9224, event←v9252, clientData←v9280)
   word biScrollerFrame←v9112;
   word hAction←v9140;
   word vAction←v9168;
   word x←v9196;
   word y←v9224;
   word event←v9252;
   word clientData←v9280;
   {
   register ptr gf←c17844 =  (ptr) &globalframe;
   word data←v5408;
   W4 bmBox←v5436;
   W2 bmSize←v5464;
   W2 wPos←v5492;
   word windowH←v5520;
   word windowW←v5548;
   /* BiScrollerProc: */ 
SOURCE(1813, 1017)
SOURCE(1863, 48)
   data←v5408 = XR←Narrow(clientData←v9280, (* (( (ptr) gf←c17844)+11) ));
SOURCE(1913, 35)
   bmBox←v5436 = (*  (W4Pt) (( (ptr) data←v5408)+2) );
SOURCE(1950, 31)
   {
      word pd23;
      pd23 = (* (( (ptr) (* (( (ptr) gf←c17844)+61)/* var←c17204 */  ))+19) );
      (void) ( *( (fPt) ((*  (ptr) pd23 ))))((word) &bmSize←v5464, bmBox←v5436, pd23);
      };
SOURCE(1983, 31)
   wPos←v5492 = (*  (W2Pt) (( (ptr) data←v5408)+7) );
SOURCE(2016, 45)
   windowH←v5520 = (* (( (ptr) (* (( (ptr) data←v5408)+1) ))+42) );
SOURCE(2063, 44)
   windowW←v5548 = (* (( (ptr) (* (( (ptr) data←v5408)+1) ))+41) );
SOURCE(2109, 227)
   {
      word var←c17236;
      var←c17236 = hAction←v9140;
      switch (var←c17236) {
         case 2: 
SOURCE(2141, 37)
            {
               word pd24;
               word x25;
               float tf26;
               pd24 = (* (( (ptr) (* (( (ptr) gf←c17844)+62)/* var←c17268 */  ))+6) );
               wPos←v5492.f0 = (word) ( *( (fPt) ((*  (ptr) pd24 ))))((
                     tf26 = (float)(int)wPos←v5492.f0 - ((
                        x25 = x←v9196,  *(float*)&x25
                        ) * (float)(int)windowW←v5548),  *(word*)&tf26
                     ), pd24);
               };
            break;
         case 1: 
SOURCE(2194, 37)
            {
               word pd27;
               word x28;
               float tf29;
               pd27 = (* (( (ptr) (* (( (ptr) gf←c17844)+62)/* var←c17268 */  ))+6) );
               wPos←v5492.f0 = (word) ( *( (fPt) ((*  (ptr) pd27 ))))((
                     tf29 = (float)(int)wPos←v5492.f0 + ((
                        x28 = x←v9196,  *(float*)&x28
                        ) * (float)(int)windowW←v5548),  *(word*)&tf29
                     ), pd27);
               };
            break;
         case 3: 
SOURCE(2243, 93)
            {
               word thumbBaseX←v5604;
SOURCE(2245, 42)
               {
                  word x30;
                  thumbBaseX←v5604 = (x30 = (bmSize←v5464.f1 - windowW←v5548),
                     MAX((int)(word), x30, 0));
                  };
SOURCE(2289, 47)
               {
                  word pd31;
                  word x32;
                  float tf33;
                  pd31 = (* (( (ptr) (* (( (ptr) gf←c17844)+62)/* var←c17268 */  ))+6) );
                  wPos←v5492.f0 = INEG((word) ( *( (fPt) ((*  (ptr) pd31 ))))((
                           tf33 = (float)(int)bmBox←v5436.f1 + ((
/*1*/   x32 = x←v9196,  *(float*)&x32
/*1*/   ) * (float)(int)thumbBaseX←v5604),  *(word*)&tf33
                           ), pd31));
                  };
               };
            break;
         case 4: 
            break;
         };
      };
SOURCE(2371, 227)
   {
      word var←c17300;
      var←c17300 = vAction←v9168;
      switch (var←c17300) {
         case 2: 
SOURCE(2403, 37)
            {
               word pd34;
               word x35;
               float tf36;
               pd34 = (* (( (ptr) (* (( (ptr) gf←c17844)+62)/* var←c17268 */  ))+6) );
               wPos←v5492.f1 = (word) ( *( (fPt) ((*  (ptr) pd34 ))))((
                     tf36 = (float)(int)wPos←v5492.f1 - ((
                        x35 = y←v9224,  *(float*)&x35
                        ) * (float)(int)windowH←v5520),  *(word*)&tf36
                     ), pd34);
               };
            break;
         case 1: 
SOURCE(2456, 37)
            {
               word pd37;
               word x38;
               float tf39;
               pd37 = (* (( (ptr) (* (( (ptr) gf←c17844)+62)/* var←c17268 */  ))+6) );
               wPos←v5492.f1 = (word) ( *( (fPt) ((*  (ptr) pd37 ))))((
                     tf39 = (float)(int)wPos←v5492.f1 + ((
                        x38 = y←v9224,  *(float*)&x38
                        ) * (float)(int)windowH←v5520),  *(word*)&tf39
                     ), pd37);
               };
            break;
         case 3: 
SOURCE(2505, 93)
            {
               word thumbBaseY←v5648;
SOURCE(2507, 42)
               {
                  word x40;
                  thumbBaseY←v5648 = (x40 = (bmSize←v5464.f0 - windowH←v5520),
                     MAX((int)(word), x40, 0));
                  };
SOURCE(2551, 47)
               {
                  word pd41;
                  word x42;
                  float tf43;
                  pd41 = (* (( (ptr) (* (( (ptr) gf←c17844)+62)/* var←c17268 */  ))+6) );
                  wPos←v5492.f1 = INEG((word) ( *( (fPt) ((*  (ptr) pd41 ))))((
                           tf43 = (float)(int)bmBox←v5436.f0 + ((
/*1*/   x42 = y←v9224,  *(float*)&x42
/*1*/   ) * (float)(int)thumbBaseY←v5648),  *(word*)&tf43
                           ), pd41));
                  };
               };
            break;
         case 4: 
            break;
         };
      };
SOURCE(2633, 45)
   {
      word x44;
      word x45;
      wPos←v5492.f0 = (x44 = wPos←v5492.f0,
         x45 = INEG(bmBox←v5436.f1),
         MIN((int)(word), x44, x45));
      };
SOURCE(2680, 34)
   {
      word x46;
      word x47;
      wPos←v5492.f0 = (x46 = wPos←v5492.f0,
         x47 = INEG(bmBox←v5436.f3),
         MAX((int)(word), x46, x47));
      };
SOURCE(2716, 45)
   {
      word x48;
      word x49;
      wPos←v5492.f1 = (x48 = wPos←v5492.f1,
         x49 = INEG(bmBox←v5436.f0),
         MIN((int)(word), x48, x49));
      };
SOURCE(2763, 34)
   {
      word x50;
      word x51;
      wPos←v5492.f1 = (x50 = wPos←v5492.f1,
         x51 = INEG(bmBox←v5436.f2),
         MAX((int)(word), x50, x51));
      };
SOURCE(2799, 31)
   (void) ScrollTo←P600(biScrollerFrame←v9112, wPos←v5492);
   }

static void SetBitmap←P300(scroller←v4000, bitmap←v4028, surfaceUnitsPerPixel←v4056, pos←v4084)
   word scroller←v4000;
   word bitmap←v4028;
   word surfaceUnitsPerPixel←v4056;
   W2 pos←v4084;
   {
   register ptr gf←c17876 =  (ptr) &globalframe;
   word data←v5692;
   /* SetBitmap: */ 
SOURCE(2836, 333)
SOURCE(2957, 72)
   {
      word pd52;
      pd52 = (* (( (ptr) (* (( (ptr) gf←c17876)+58)/* var←c17012 */  ))+10) );
      data←v5692 = XR←Narrow((word) ( *( (fPt) ((*  (ptr) pd52 ))))(scroller←v4000, (* (( (ptr) gf←c17876)+8)/* myKey←v2888 */  ), pd52)
         , (* (( (ptr) gf←c17876)+11) ));
      };
SOURCE(3031, 16)
   (*  (ptr) data←v5692 ) = bitmap←v4028;
SOURCE(3049, 45)
   {
      word pd53;
      pd53 = (* (( (ptr) (* (( (ptr) gf←c17876)+63)/* var←c17332 */  ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd53 ))))((word) (( (bPt) data←v5692)+8), bitmap←v4028, pd53);
      };
SOURCE(3096, 48)
   (* (( (ptr) data←v5692)+6) ) = surfaceUnitsPerPixel←v4056;
SOURCE(3146, 23)
   (void) ScrollTo←P600(scroller←v4000, pos←v4084);
   }

static void GetBitmap←P360(formal←c079, scroller←v4144)
   word formal←c079;
   word scroller←v4144;
   {
   word bitmap←v4188;
   word surfaceUnitsPerPixel←v4216;
   word data←v5748;
   /* GetBitmap: */ 
SOURCE(3175, 226)
SOURCE(3175, 226)
   bitmap←v4188 = 0;
SOURCE(3286, 47)
   data←v5748 = (word) GetData←P60(scroller←v4144);
SOURCE(3335, 16)
   bitmap←v4188 = (*  (ptr) data←v5748 );
SOURCE(3353, 48)
   surfaceUnitsPerPixel←v4216 = (* (( (ptr) data←v5748)+6) );
   /* removed tail goto */ 
   (*  (ptr) formal←c079 ) = bitmap←v4188;
   (* (( (ptr) formal←c079)+1) ) = surfaceUnitsPerPixel←v4216;
   return;
   }

static void CreateAndSetBitmap←P420(scroller←v4276, size←v4304, bpp←v4332, surfaceUnitsPerPixel←v4360, pos←v4388)
   word scroller←v4276;
   W2 size←v4304;
   word bpp←v4332;
   word surfaceUnitsPerPixel←v4360;
   W2 pos←v4388;
   {
   register ptr gf←c17908 =  (ptr) &globalframe;
   word bm←v5804;
   /* CreateAndSetBitmap: */ 
SOURCE(3407, 243)
SOURCE(3549, 48)
   {
      word pd54;
      pd54 = (* (( (ptr) (* (( (ptr) gf←c17908)+63)/* var←c17332 */  ))+8) );
      bm←v5804 = (word) ( *( (fPt) ((*  (ptr) pd54 ))))(size←v4304, bpp←v4332, 1, pd54);
      };
SOURCE(3599, 51)
   (void) SetBitmap←P300(scroller←v4276, bm←v5804, surfaceUnitsPerPixel←v4360, pos←v4388);
   }

static word CreateContext←P480(scroller←v4448)
   word scroller←v4448;
   {
   register ptr gf←c17940 =  (ptr) &globalframe;
   word context←v4492;
   word data←v5848;
   /* CreateContext: */ 
SOURCE(3654, 216)
SOURCE(3654, 216)
   context←v4492 = 0;
SOURCE(3742, 47)
   data←v5848 = (word) GetData←P60(scroller←v4448);
SOURCE(3791, 79)
   {
      word pd55;
      pd55 = (* (( (ptr) (* (( (ptr) gf←c17940)+59)/* var←c17076 */  ))+9) );
      return((word) ( *( (fPt) ((*  (ptr) pd55 ))))((* (( (ptr) data←v5848)+1) ), (* (( (ptr) data←v5848)+6) ), pd55));
      };
   }

static void ShowScrollbars←P540(biScroller←v4552, data←v4580, pos←v4608)
   word biScroller←v4552;
   word data←v4580;
   W2 pos←v4608;
   {
   register ptr gf←c17972 =  (ptr) &globalframe;
   W4 state2←v5904;
   W4 bmBox←v5932;
   W2 bmSz←v5960;
   word winW←v5988;
   word winH←v6016;
   word pX←v6044;
   word pY←v6072;
   /* ShowScrollbars: */ 
SOURCE(3876, 890)
SOURCE(4005, 35)
   bmBox←v5932 = (*  (W4Pt) (( (ptr) data←v4580)+2) );
SOURCE(4042, 45)
   {
      W2 var←c17396;
      {
         word pd56;
         pd56 = (* (( (ptr) (* (( (ptr) gf←c17972)+61)/* var←c17204 */  ))+19) );
         (void) ( *( (fPt) ((*  (ptr) pd56 ))))((word) &var←c17396, bmBox←v5932, pd56);
         };
      {
         W2 var←c098;
         {
            W2 var←c17428;
            var←c17428.f0 = 1;
            var←c17428.f1 = 1;
            {
               word pd57;
               pd57 = (* (( (ptr) (* (( (ptr) gf←c17972)+61)/* var←c17204 */  ))+10) );
               (void) ( *( (fPt) ((*  (ptr) pd57 ))))((word) &var←c098, var←c17396, var←c17428, pd57);
               };
            };
         bmSz←v5960 = var←c098;
         };
      };
SOURCE(4089, 49)
   {
      word x58;
      winW←v5988 = (x58 = (* (( (ptr) (* (( (ptr) data←v4580)+1) ))+41) ),
         MAX((int)(word), x58, 1));
      };
SOURCE(4140, 50)
   {
      word x59;
      winH←v6016 = (x59 = (* (( (ptr) (* (( (ptr) data←v4580)+1) ))+42) ),
         MAX((int)(word), x59, 1));
      };
SOURCE(4192, 33)
   {
      float tf60;
      pX←v6044 = (
         tf60 = (float)(int)INEG((pos←v4608.f0 + bmBox←v5932.f1)),  *(word*)&tf60
         );
      };
SOURCE(4227, 33)
   {
      float tf61;
      pY←v6072 = (
         tf61 = (float)(int)INEG((pos←v4608.f1 + bmBox←v5932.f0)),  *(word*)&tf61
         );
      };
SOURCE(4262, 208)
   if (( (int)bmSz←v5960.f1 <=  (int)winW←v5988)) {
SOURCE(4287, 26)
      {
         word x62;
         *(float*)&state2←v5904.f0 = (
            x62 = pX←v6044,  *(float*)&x62
            ) / (float)(int)bmSz←v5960.f1;
         };
SOURCE(4315, 59)
      {
         word x63;
         word x64;
         float tf65;
         float tf66;
         word x68;
         *(float*)&state2←v5904.f1 = (
            x63 = state2←v5904.f0,  *(float*)&x63
            ) + (FMAX(((float)(int)bmSz←v5960.f1 - (
               x64 = pX←v6044,  *(float*)&x64
               )), (
               x68 = (*  (ptr) &fc67 ),  *(float*)&x68
               ), tf65, tf66) / (float)(int)bmSz←v5960.f1);
         };
      }
   else {
SOURCE(4383, 89)
      {
         word w←v6116;
SOURCE(4385, 14)
         {
            float tf69;
            w←v6116 = (
               tf69 = (float)(int)winW←v5988,  *(word*)&tf69
               );
            };
SOURCE(4401, 26)
         {
            word x70;
            *(float*)&state2←v5904.f0 = (
               x70 = pX←v6044,  *(float*)&x70
               ) / (float)(int)bmSz←v5960.f1;
            };
SOURCE(4429, 41)
         {
            word x71;
            word x72;
            *(float*)&state2←v5904.f1 = (
               x71 = state2←v5904.f0,  *(float*)&x71
               ) + ((
               x72 = w←v6116,  *(float*)&x72
               ) / (float)(int)bmSz←v5960.f1);
            };
         };
      };
SOURCE(4475, 207)
   if (( (int)bmSz←v5960.f0 <=  (int)winH←v6016)) {
SOURCE(4499, 26)
      {
         word x73;
         *(float*)&state2←v5904.f2 = (
            x73 = pY←v6072,  *(float*)&x73
            ) / (float)(int)bmSz←v5960.f0;
         };
SOURCE(4527, 59)
      {
         word x74;
         word x75;
         float tf76;
         float tf77;
         word x78;
         *(float*)&state2←v5904.f3 = (
            x74 = state2←v5904.f2,  *(float*)&x74
            ) + (FMAX(((float)(int)bmSz←v5960.f0 - (
               x75 = pY←v6072,  *(float*)&x75
               )), (
               x78 = (*  (ptr) &fc67 ),  *(float*)&x78
               ), tf76, tf77) / (float)(int)bmSz←v5960.f0);
         };
      }
   else {
SOURCE(4595, 89)
      {
         word h←v6160;
SOURCE(4597, 14)
         {
            float tf79;
            h←v6160 = (
               tf79 = (float)(int)winH←v6016,  *(word*)&tf79
               );
            };
SOURCE(4613, 26)
         {
            word x80;
            *(float*)&state2←v5904.f2 = (
               x80 = pY←v6072,  *(float*)&x80
               ) / (float)(int)bmSz←v5960.f0;
            };
SOURCE(4641, 41)
         {
            word x81;
            word x82;
            *(float*)&state2←v5904.f3 = (
               x81 = state2←v5904.f2,  *(float*)&x81
               ) + ((
               x82 = h←v6160,  *(float*)&x82
               ) / (float)(int)bmSz←v5960.f0);
            };
         };
      };
SOURCE(4687, 79)
   {
      word pd83;
      pd83 = (* (( (ptr) (* (( (ptr) gf←c17972)+60)/* var←c17140 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd83 ))))(biScroller←v4552, state2←v5904, 0, pd83);
      };
   }

static void ScrollTo←P600(formal←c0143, formal←c0144)
   word formal←c0143;
   W2 formal←c0144;
   {
   W10 var←c18004;
   /* declaration of scroller←v4680 skipped */ 
   /* declaration of pos←v4708 skipped */ 
   register ptr gf←c18036 =  (ptr) &globalframe;
   /* declaration of var←c17460 skipped */ 
   /* declaration of data←v6204 skipped */ 
   (* (( (ptr) &var←c18004)+4)/* scroller←v4680 */  ) = formal←c0143;
   (*  (W2Pt) (( (ptr) &var←c18004)+5)/* pos←v4708 */  ) = formal←c0144;
   /* ScrollTo: */ 
SOURCE(4772, 440)
   {
      word tmpAddr84;
      tmpAddr84 = (word) (( (ptr) &var←c18004)+7)/* var←c17460 */ ;
      (*  (ptr) tmpAddr84 ) = ( ((word)  (fPt) action←P1152) );
      (* (( (ptr) tmpAddr84) + 1) ) = 1;
      };
SOURCE(4836, 47)
   (* (( (ptr) &var←c18004)+9)/* data←v6204 */  ) = (word) GetData←P60((* ((( (ptr) &var←c18004)+4)/* scroller←v4680 */ ) ))
   ;
SOURCE(5132, 80)
   if (((* (( (ptr) (* (( (ptr) &var←c18004)+9)/* data←v6204 */  ))+10) ) == 0)) {
SOURCE(5159, 14)
      (void) action←P1152((word) ((( (bPt) &var←c18004)+28)/* var←c17460 */ ));
      }
   else {
SOURCE(5173, 39)
      {
         word pd85;
         pd85 = (* (( (ptr) (* (( (ptr) gf←c18036)+64)/* var←c17492 */  ))+65) );
         (void) ( *( (fPt) ((*  (ptr) pd85 ))))((* (( (ptr) (* (( (ptr) &var←c18004)+9)/* data←v6204 */  ))+10) ), (word) (( (bPt) &var←c18004)+28)
            /* var←c17460 */ , pd85);
         };
      };
   }

static void action←P1152(formal←c18100)
   word formal←c18100;
   {
   register ptr gf←c18068 =  (ptr) &globalframe;
   formal←c18100 = (formal←c18100 - 28);
   /* action: */ 
SOURCE(4885, 242)
SOURCE(4902, 20)
   (*  (W2Pt) (( (ptr) (* (( (ptr) formal←c18100)+9) ))+7) ) = (*  (W2Pt) (( (ptr) formal←c18100)+5) );
SOURCE(4924, 77)
   {
      word pd86;
      pd86 = (* (( (ptr) (* (( (ptr) gf←c18068)+59)/* var←c17076 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd86 ))))((* (( (ptr) (* (( (ptr) formal←c18100)+9) ))+1) ), (*  (ptr) (* (( (ptr) formal←c18100)+9)
          ) ), (*  (W4Pt) (( (ptr) gf←c18068)+54)/* var←c16948 */  ), (*  (W2Pt) (( (ptr) formal←c18100)+5) ), 1, 0, pd86);
      };
SOURCE(5003, 87)
   if (((* (( (ptr) (* (( (ptr) formal←c18100)+9) ))+9) ) != 0)) {
SOURCE(5037, 53)
      {
         word pd87;
         pd87 = (* (( (ptr) (* (( (ptr) formal←c18100)+9) ))+9) );
         (void) ( *( (fPt) ((*  (ptr) pd87 ))))((* (( (ptr) formal←c18100)+4) ), (*  (W2Pt) (( (ptr) formal←c18100)+5) ), (* (( (ptr) (* (
                  ( (ptr) formal←c18100)+9) ))+11) ), pd87);
         };
      };
SOURCE(5092, 35)
   (void) ShowScrollbars←P540((* (( (ptr) formal←c18100)+4) ), (* (( (ptr) formal←c18100)+9) ), (*  (W2Pt) (( (ptr) formal←c18100)+5)
       ));
   }

static void GetScrollPos←P660(formal←c0112, scroller←v4768)
   word formal←c0112;
   word scroller←v4768;
   {
   W2 var←c4812;
   /* GetScrollPos: */ 
SOURCE(5216, 109)
SOURCE(5288, 37)
   {
      W2 var←c17556;
      var←c17556 = (*  (W2Pt) (( (ptr) GetData←P60(scroller←v4768))+7) );
      var←c4812 = var←c17556;
      /* removed tail goto */ 
      };
   (*  (W2Pt) formal←c0112 ) = var←c4812;
   return;
   }

static void Wait←P720(scroller←v4872, server←v4900)
   word scroller←v4872;
   word server←v4900;
   {
   register ptr gf←c18132 =  (ptr) &globalframe;
   /* Wait: */ 
SOURCE(5329, 121)
SOURCE(5396, 54)
   {
      word var←c17588;
      var←c17588 = (word) GetImplWidget←P840(scroller←v4872);
      {
         word pd88;
         pd88 = (* (( (ptr) (* (( (ptr) gf←c18132)+59)/* var←c17076 */  ))+8) );
         (void) ( *( (fPt) ((*  (ptr) pd88 ))))(var←c17588, server←v4900, pd88);
         };
      };
   }

static word GetImplData←P780(scroller←v4960)
   word scroller←v4960;
   {
   register ptr gf←c18164 =  (ptr) &globalframe;
   word var←c5004;
   word w←v6304;
   /* GetImplData: */ 
SOURCE(5456, 147)
SOURCE(5522, 39)
   w←v6304 = (word) GetImplWidget←P840(scroller←v4960);
SOURCE(5563, 40)
   {
      word pd89;
      pd89 = (* (( (ptr) (* (( (ptr) gf←c18164)+59)/* var←c17076 */  ))+11) );
      return((word) ( *( (fPt) ((*  (ptr) pd89 ))))(w←v6304, pd89));
      };
   }

static word GetImplWidget←P840(scroller←v5076)
   word scroller←v5076;
   {
   word var←c5120;
   word data←v6348;
   /* GetImplWidget: */ 
SOURCE(5608, 144)
SOURCE(5683, 47)
   data←v6348 = (word) GetData←P60(scroller←v5076);
SOURCE(5732, 20)
   return((* (( (ptr) data←v6348)+1) ));
   }

static void GetVisibleBox←P900(formal←c0125, scroller←v5180)
   word formal←c0125;
   word scroller←v5180;
   {
   W4 b←v5224;
   word data←v6404;
   /* GetVisibleBox: */ 
SOURCE(5758, 278)
SOURCE(5758, 278)
   b←v5224.f0 = 0;
   b←v5224.f1 = 0;
   b←v5224.f2 = 0;
   b←v5224.f3 = 0;
SOURCE(5832, 47)
   data←v6404 = (word) GetData←P60(scroller←v5180);
SOURCE(5881, 27)
   b←v5224.f1 = INEG((* (( (ptr) data←v6404)+7) ));
SOURCE(5910, 27)
   b←v5224.f0 = INEG((* (( (ptr) data←v6404)+8) ));
SOURCE(5939, 47)
   b←v5224.f3 = (b←v5224.f1 + (* (( (ptr) (* (( (ptr) data←v6404)+1) ))+41) ));
SOURCE(5988, 48)
   b←v5224.f2 = (b←v5224.f1 + (* (( (ptr) (* (( (ptr) data←v6404)+1) ))+42) ));
   /* removed tail goto */ 
   (*  (W4Pt) formal←c0125 ) = b←v5224;
   return;
   }

/* file: XTkBitmapScrollerImpl, module: XTkBitmapScrollerImpl, compiled at: December 16, 1992 11:03:04 am PST */ 
extern void XR←install←XTkBitmapScrollerImpl() {
   NoName←Q1212();
   }
extern void XR←run←XTkBitmapScrollerImpl() { XR←Start(&globalframe); }