/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: September 17, 1993 10:34:20 am PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: XTkXBiScrollerImpl, module: XTkXBiScrollerImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [4153736367,763816401] XTkXBiScrollerImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; W8 r;} W16;
typedef struct {W8 f; word r;} W9;
typedef struct {W16 f; W9 r;} W25;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef W9 *W9Pt;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; W3 r;} W11;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
#define MIN(cast, x, y)  ( ( cast x) < ( cast y) ? (x) : (y) )
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define IOP2(op, x, y)  ( (word) ((x) op (y)) )
#define INEG(x)  ( (word) ( - ((int) (word) (x)) ) )
static void NoName←Q1632();
static void XTkXBiScrollerImpl←P0();
static word CreateXBiScrollerClass←P60();
static word CreateXBiScroller←P120();
static word IsXBiScroller←P180();
static void XBiScrollerInitInstPart←P300();
static void GetInnerSize←P360();
static void GetOuterSize←P420();
static void Scroll←P480();
static void SetFilterProc←P540();
static word Child←P600();
static void ReplaceChild←P660();
static word SizeSubtract←P720();
static void PublicSetState←P780();
static void CheckChildState←P840();
static void DirectSetState←P900();
static void action←P1236();
static void GetState←P960();
static struct {unsigned f; char r[4];} string1 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\033\115\307\000\300\214\060\055\310\100\244\000\000"};
static struct {unsigned f; char r[40];} string4 = {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];} string5 = {851984, "\257\300\367\224\374\257\300\055\206\351\321\101\020\000\000"};
static struct {unsigned f; char r[4];} string6 = {131074, "\003\001\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\367\224\374\257\300\055\206\351\321\100\274\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\004\011\000"};
static struct {unsigned f; char r[12];} string9 = {720908, "xBiScroller"};
static struct {unsigned f; char r[20];} string10 = {1048596, "XBiScrollerState\000\000\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\367\224\374\257\300\055\206\351\321\100\164\000\000"};
static struct {unsigned f; char r[12];} string12 = {655370, "\006\003\040\001\044\001\100\100\004\003\000"};
static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string14 = {851984, "\257\300\351\276\264\273\300\115\104\320\264\100\164\000\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\143\260\340\122\300\057\146\075\005\100\150\000\000"};
static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\245\223\103\375\300\127\103\204\036\100\150\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\033\115\307\000\300\214\060\055\310\100\150\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\227\370\144\253\300\176\165\034\110\100\150\000\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\173\157\171\371\300\357\320\310\165\100\150\000\000"};
static struct {
   word f0[18]; 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[2]; word f51; word f52; word f53; 
   word f54; word f55; word f56; word f57[9]; 
   } globalframe = {
   {0}, (word) GetState←P960, 0, (word) DirectSetState←P900, 
   0, (word) CheckChildState←P840, 0, (word) PublicSetState←P780, 
   0, (word) SizeSubtract←P720, 0, (word) ReplaceChild←P660, 
   0, (word) Child←P600, 0, (word) SetFilterProc←P540, 
   0, (word) Scroll←P480, 0, (word) GetOuterSize←P420, 
   0, (word) GetInnerSize←P360, 0, (word) XBiScrollerInitInstPart←P300, 
   0, (word) IsXBiScroller←P180, 0, (word) CreateXBiScroller←P120, 
   0, (word) CreateXBiScrollerClass←P60, 0, (word) XTkXBiScrollerImpl←P0, 
   {0}, (word) 2147483648, (word) 2147483648, (word) 2147483648, 
   (word) 2147483648, (word) 2147483648, (word) 3, {0}
   };

static void NoName←Q1632()
   {
   register ptr gf←c0128 =  (ptr) &globalframe;
   word var←c22112;
   (* (( (ptr) gf←c0128)+10) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0128)+11) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c0128)+14) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c0128)+15) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (*  (ptr) (( (bPt) gf←c0128)+64) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0128)+10) ), (word) &string9);
   (*  (ptr) (( (bPt) gf←c0128)+68) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0128)+10) ), (word) &string10);
   (void) XR←DeclareGlobalFrame((word) "XTkXBiScrollerImpl", &globalframe, (word) XR←GetTypeIndex((word) &string11, 0, (word) &string12)
      , (word) (( (bPt) gf←c0128)+192)/* var←c21312 */ );
   var←c22112 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string13)), 11);
   (* (( (ptr) gf←c0128)+63)/* var←c21760 */  ) = var←c22112;
   (void) XR←ImportProcS(var←c22112, 67371521);
   var←c22112 = (word) XR←ImportInterface((word) "Xl", (word) XR←GetTypeIndexS((word) (&string14)), 218);
   (* (( (ptr) gf←c0128)+64)/* var←c21984 */  ) = var←c22112;
   (void) XR←ImportProcS(var←c22112, 539906);
   var←c22112 = (word) XR←ImportInterface((word) "XTkXScroller", (word) XR←GetTypeIndexS((word) (&string15)), 8);
   (* (( (ptr) gf←c0128)+61)/* var←c21504 */  ) = var←c22112;
   (void) XR←ImportProcS(var←c22112, 787970);
   (void) XR←ImportProcS(var←c22112, 1049604);
   (void) XR←ImportProcS(var←c22112, 67371777);
   (void) XR←ImportProcS(var←c22112, 70254852);
   (void) XR←ImportProcS(var←c22112, 788227);
   var←c22112 = (word) XR←ImportInterface((word) "XTkBiScrollerFrame", (word) XR←GetTypeIndexS((word) (&string16)), 10);
   (* (( (ptr) gf←c0128)+59)/* var←c21440 */  ) = var←c22112;
   (void) XR←ImportProcS(var←c22112, 1574403);
   (void) XR←ImportProcS(var←c22112, 1049604);
   (void) XR←ImportProcS(var←c22112, 1050884);
   (void) XR←ImportProcS(var←c22112, 70779141);
   var←c22112 = (word) XR←ImportInterface((word) "XTk", (word) XR←GetTypeIndexS((word) (&string17)), 50);
   (* (( (ptr) gf←c0128)+62)/* var←c21632 */  ) = var←c22112;
   (void) XR←ImportProcS(var←c22112, 1050628);
   (void) XR←ImportProcS(var←c22112, 67642370);
   var←c22112 = (word) XR←ImportInterface((word) "XTkFriends", (word) XR←GetTypeIndexS((word) (&string18)), 33);
   (* (( (ptr) gf←c0128)+60)/* var←c21472 */  ) = var←c22112;
   (void) XR←ImportProcS(var←c22112, 1048580);
   (void) XR←ImportProcS(var←c22112, 67637250);
   (void) XR←ImportProcS(var←c22112, 73666049);
   var←c22112 = (word) XR←ExportInterface((word) "XTkXBiScroller", (word) XR←GetTypeIndexS((word) (&string19)), 10);
   (* (( (ptr) gf←c0128)+65)/* var←c22144 */  ) = var←c22112;
   (void) XR←ExportVar(var←c22112, 0, (word) (( (bPt) gf←c0128)+36)/* xBiScrollerClass←v2804 */ );
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+176)/* var←c21248 */ , 70779141, (word) "CreateXBiScroller");
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+168)/* var←c21216 */ , 67371521, (word) "IsXBiScroller");
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+120)/* var←c21024 */ , 67371777, (word) "Child");
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+112)/* var←c20992 */ , 1049604, (word) "ReplaceChild");
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+72)/* var←c20832 */ , 134481153, (word) "GetState");
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+80)/* var←c20864 */ , 1050115, (word) "DirectSetState");
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+96)/* var←c20928 */ , 1050371, (word) "PublicSetState");
   (void) XR←ExportProcS(var←c22112, (word) (( (bPt) gf←c0128)+128)/* var←c21056 */ , 788739, (word) "SetFilterProc");
   }

static void XTkXBiScrollerImpl←P0(formal←c032, formal←c031)
   word formal←c032;
   word formal←c031;
   {
   register ptr gf←c22176 =  (ptr) &globalframe;
   /* XTkXBiScrollerImpl: */ 
SOURCE(89, 6137)
   /* 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(245, 45)
   (* (( (ptr) gf←c22176)+8)/* stateChanged←v2776 */  ) = (* (( (ptr) gf←c22176)+17) );
SOURCE(293, 61)
   (* (( (ptr) gf←c22176)+9)/* xBiScrollerClass←v2804 */  ) = (word) CreateXBiScrollerClass←P60();
   }

static word CreateXBiScrollerClass←P60()
   {
   register ptr gf←c22208 =  (ptr) &globalframe;
   word var←c3472;
   word class←v5380;
   /* CreateXBiScrollerClass: */ 
SOURCE(356, 245)
SOURCE(412, 173)
   {
      W25 var←c036;
      (*  (ptr) &var←c036 ) = (* (( (ptr) gf←c22208)+16) );
      (* (( (ptr) &var←c036)+1) ) = 0;
      (* (( (ptr) &var←c036)+2) ) = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c22208)+59)/* var←c21440 */  ))+4) ) );
      (* (( (ptr) &var←c036)+3) ) = 1;
      (* (( (ptr) &var←c036)+4) ) = 0;
      (* (( (ptr) &var←c036)+5) ) = 0;
      (* (( (ptr) &var←c036)+6) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+7) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+8) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+9) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+10) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+11) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+12) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+13) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+14) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+15) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+16) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+17) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+18) ) = (word) (( (bPt) gf←c22208)+160)/* var←c21184 */ ;
      (* (( (ptr) &var←c036)+19) ) = 0;
      (* (( (ptr) &var←c036)+20) ) = 0;
      (* (( (ptr) &var←c036)+21) ) = 0;
      (* (( (ptr) &var←c036)+22) ) = 0;
      (* (( (ptr) &var←c036)+23) ) = XR←CheckProc(0);
      (* (( (ptr) &var←c036)+24) ) = XR←CheckProc(0);
      {
         word pd20;
         pd20 = (* (( (ptr) (* (( (ptr) gf←c22208)+60)/* var←c21472 */  ))+18) );
         class←v5380 = (word) ( *( (fPt) ((*  (ptr) pd20 ))))((word) (&var←c036), pd20);
         };
      };
SOURCE(587, 14)
   return(class←v5380);
   }

static word CreateXBiScroller←P120(widgetSpec←v3532, child←v3560, insideSize←v3588, vsbar←v3616, hsbar←v3644)
   W9 widgetSpec←v3532;
   word child←v3560;
   W2 insideSize←v3588;
   word vsbar←v3616;
   word hsbar←v3644;
   {
   register ptr gf←c22240 =  (ptr) &globalframe;
   word var←c3688;
   /* CreateXBiScroller: */ 
SOURCE(607, 630)
SOURCE(793, 80)
   {
      word pd21;
      pd21 = (* (( (ptr) (* (( (ptr) gf←c22240)+60)/* var←c21472 */  ))+20) );
      (*  (ptr) &widgetSpec←v3532 ) = (word) ( *( (fPt) ((*  (ptr) pd21 ))))((*  (ptr) &widgetSpec←v3532 ), (* (( (ptr) gf←c22240)+9)
         /* xBiScrollerClass←v2804 */  ), pd21);
      };
SOURCE(875, 364)
   {
      word xBiScroller←v5424;
      word xbsd←v5452;
SOURCE(881, 109)
      {
         word pd22;
         pd22 = (* (( (ptr) (* (( (ptr) gf←c22240)+59)/* var←c21440 */  ))+5) );
         xBiScroller←v5424 = (word) ( *( (fPt) ((*  (ptr) pd22 ))))(widgetSpec←v3532, 0, insideSize←v3588, vsbar←v3616, hsbar←v3644, pd22)
         ;
         };
SOURCE(992, 47)
      {
         word idx23;
         word limit24;
         xbsd←v5452 = XR←Narrow((* ((( (ptr) xBiScroller←v5424)+49)+(
                  idx23 = (* (( (ptr) (* (( (ptr) gf←c22240)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
                  limit24 = (* (( (ptr) xBiScroller←v5424)+48) ),
                  BCK(idx23, limit24)
                  )) ), (* (( (ptr) gf←c22240)+15) ));
         };
SOURCE(1041, 56)
      if ((child←v3560 != 0)) {
SOURCE(1059, 38)
         (void) ReplaceChild←P660(xBiScroller←v5424, child←v3560, 1, 0);
         };
SOURCE(1099, 53)
      {
         word pd25;
         pd25 = (* (( (ptr) (* (( (ptr) gf←c22240)+59)/* var←c21440 */  ))+13) );
         (void) ( *( (fPt) ((*  (ptr) pd25 ))))(xBiScroller←v5424, (word) (( (bPt) gf←c22240)+136)/* var←c21088 */ , 0, 0, pd25);
         };
SOURCE(1154, 61)
      {
         word pd26;
         pd26 = (* (( (ptr) (* (( (ptr) gf←c22240)+61)/* var←c21504 */  ))+11) );
         (void) ( *( (fPt) ((*  (ptr) pd26 ))))((*  (ptr) xbsd←v5452 ),  (unsigned) (0 == hsbar←v3644),  (unsigned) (0 == vsbar←v3616), pd26)
         ;
         };
SOURCE(1217, 20)
      return(xBiScroller←v5424);
      };
   }

static word IsXBiScroller←P180(widget←v3748)
   word widget←v3748;
   {
   register ptr gf←c22272 =  (ptr) &globalframe;
   word var←c3792;
   /* IsXBiScroller: */ 
SOURCE(1248, 115)
SOURCE(1315, 48)
   {
      word var←c21568;
      word widget←v20784;
      widget←v20784 = widget←v3748;
      {
         word pd27;
         if (((* (( (ptr) widget←v20784)+4) ) == (* (( (ptr) gf←c22272)+9)/* xBiScrollerClass←v2804 */  ))) {
            var←c21568 = 1;
            }
         else {
            pd27 = (* (( (ptr) (* (( (ptr) gf←c22272)+62)/* var←c21632 */  ))+40) );
            var←c21568 = (word) ( *( (fPt) ((*  (ptr) pd27 ))))(widget←v20784, (* (( (ptr) gf←c22272)+9)/* xBiScrollerClass←v2804 */  ), pd27)
            ;
            };
         };
      return(var←c21568);
      };
   }

static void XBiScrollerInitInstPart←P300(widget←v8812, arguments←v8840)
   word widget←v8812;
   word arguments←v8840;
   {
   register ptr gf←c22304 =  (ptr) &globalframe;
   word xbsd←v5496;
   /* XBiScrollerInitInstPart: */ 
SOURCE(1715, 438)
SOURCE(1769, 36)
   xbsd←v5496 = XR←NewObject(16, (* (( (ptr) gf←c22304)+15) ));
SOURCE(1807, 57)
   {
      word val←v20736;
      val←v20736 = xbsd←v5496;
      {
         word idx28;
         word limit29;
         (* ((( (ptr) widget←v8812)+49)+(
               idx28 = (* (( (ptr) (* (( (ptr) gf←c22304)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit29 = (* (( (ptr) widget←v8812)+48) ),
               BCK(idx28, limit29)
               )) ) = val←v20736;
         };
      };
SOURCE(1866, 48)
   {
      word pd30;
      pd30 = (* (( (ptr) (* (( (ptr) gf←c22304)+61)/* var←c21504 */  ))+5) );
      (*  (ptr) xbsd←v5496 ) = (word) ( *( (fPt) ((*  (ptr) pd30 ))))((*  (W9Pt) (( (ptr) gf←c22304)+50)/* var←c21376 */  ), 0, 0, 0, pd30)
      ;
      };
SOURCE(1916, 56)
   {
      word pd31;
      pd31 = (* (( (ptr) (* (( (ptr) gf←c22304)+59)/* var←c21440 */  ))+8) );
      (void) ( *( (fPt) ((*  (ptr) pd31 ))))(widget←v8812, (*  (ptr) xbsd←v5496 ), 0, 0, pd31);
      };
SOURCE(1974, 86)
   {
      word pd32;
      pd32 = (* (( (ptr) (* (( (ptr) gf←c22304)+62)/* var←c21632 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd32 ))))((*  (ptr) xbsd←v5496 ), (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c22304)+62)/* var←c21632 */  ))+18)
          ) ), (word) (( (bPt) gf←c22304)+88)/* var←c20896 */ , widget←v8812, pd32);
      };
SOURCE(2062, 91)
   {
      word pd33;
      pd33 = (* (( (ptr) (* (( (ptr) gf←c22304)+62)/* var←c21632 */  ))+12) );
      (void) ( *( (fPt) ((*  (ptr) pd33 ))))((*  (ptr) xbsd←v5496 ), (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c22304)+62)/* var←c21632 */  ))+16)
          ) ), (word) (( (bPt) gf←c22304)+88)/* var←c20896 */ , widget←v8812, pd33);
      };
   }

static void GetInnerSize←P360(formal←c055, w←v4080)
   word formal←c055;
   word w←v4080;
   {
   W2 sz←v4124;
   /* GetInnerSize: */ 
SOURCE(2159, 194)
SOURCE(2159, 194)
   sz←v4124.f0 = 200;
   sz←v4124.f1 = 200;
SOURCE(2233, 120)
   if ((w←v4080 != 0)) {
SOURCE(2249, 50)
      {
         word x34;
         word idx35;
         word x36;
         sz←v4124.f0 = (x36 = (
               idx35 = (word) (x34 = (* (( (ptr) w←v4080)+41) ),
                  MAX((int)(word), x34, 1)),
               SGNCK(idx35)
               ),
            MIN( (unsigned) , x36, 10000));
         };
SOURCE(2301, 52)
      {
         word x37;
         word idx38;
         word x39;
         sz←v4124.f1 = (x39 = (
               idx38 = (word) (x37 = (* (( (ptr) w←v4080)+42) ),
                  MAX((int)(word), x37, 1)),
               SGNCK(idx38)
               ),
            MIN( (unsigned) , x39, 10000));
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c055 ) = sz←v4124;
   return;
   }

static void GetOuterSize←P420(formal←c060, w←v4184)
   word formal←c060;
   word w←v4184;
   {
   W2 sz←v4228;
   /* GetOuterSize: */ 
SOURCE(2362, 215)
SOURCE(2362, 215)
   sz←v4228.f0 = 200;
   sz←v4228.f1 = 200;
SOURCE(2436, 141)
   if ((w←v4184 != 0)) {
SOURCE(2450, 129)
      {
         word b←v5540;
SOURCE(2452, 47)
         {
            word x40;
            word idx41;
            word x42;
            b←v5540 = (x42 = (
                  idx41 = (word) (x40 = (* (( (ptr) w←v4184)+43) ),
                     MAX((int)(word), x40, 0)),
                  SGNCK(idx41)
                  ),
               MIN( (unsigned) , x42, 500));
            };
SOURCE(2501, 20)
         (void) GetInnerSize←P360((word) &sz←v4228, w←v4184);
SOURCE(2523, 25)
         sz←v4228.f0 = (sz←v4228.f0 + IOP2( * ,  (int)2,  (int)b←v5540));
SOURCE(2550, 27)
         sz←v4228.f1 = (sz←v4228.f1 + IOP2( * ,  (int)2,  (int)b←v5540));
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c060 ) = sz←v4228;
   return;
   }

static void Scroll←P480(biScrollerFrame←v8900, hAction←v8928, vAction←v8956, x←v8984, y←v9012, event←v9040, clientData←v9068)
   word biScrollerFrame←v8900;
   word hAction←v8928;
   word vAction←v8956;
   word x←v8984;
   word y←v9012;
   word event←v9040;
   word clientData←v9068;
   {
   register ptr gf←c22336 =  (ptr) &globalframe;
   word xBiScroller←v5584;
   word doit←v5612 = 0;
   word xbsd←v5640;
   word dummyChild←v5668;
   word realChild←v5696;
   W2 docsz←v5724;
   W2 winsz←v5752;
   W2 p←v5780;
   /* Scroll: */ 
SOURCE(2586, 904)
SOURCE(2628, 42)
   xBiScroller←v5584 = biScrollerFrame←v8900;
SOURCE(2702, 47)
   {
      word idx43;
      word limit44;
      xbsd←v5640 = XR←Narrow((* ((( (ptr) xBiScroller←v5584)+49)+(
               idx43 = (* (( (ptr) (* (( (ptr) gf←c22336)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit44 = (* (( (ptr) xBiScroller←v5584)+48) ),
               BCK(idx43, limit44)
               )) ), (* (( (ptr) gf←c22336)+15) ));
      };
SOURCE(2751, 40)
   dummyChild←v5668 = (*  (ptr) xbsd←v5640 );
SOURCE(2793, 54)
   {
      word pd45;
      pd45 = (* (( (ptr) (* (( (ptr) gf←c22336)+61)/* var←c21504 */  ))+7) );
      realChild←v5696 = (word) ( *( (fPt) ((*  (ptr) pd45 ))))(dummyChild←v5668, pd45);
      };
SOURCE(2849, 40)
   (void) GetOuterSize←P420((word) &docsz←v5724, realChild←v5696);
SOURCE(2891, 41)
   (void) GetInnerSize←P360((word) &winsz←v5752, dummyChild←v5668);
SOURCE(2934, 33)
SOURCE(6133, 93)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c22336)+16)/* LOCK←v2748 */ ));
SOURCE(6208, 18)
   p←v5780 = (*  (W2Pt) (( (ptr) xbsd←v5640)+1) );
   (void) (XR←MonitorExit((word) (( (bPt) gf←c22336)+16)/* LOCK←v2748 */ ));
SOURCE(2969, 214)
   {
      word var←c21728;
      var←c21728 = hAction←v8928;
      switch (var←c21728) {
         case 3: 
SOURCE(3000, 33)
            {
               word pd46;
               word x47;
               float tf48;
               pd46 = (* (( (ptr) (* (( (ptr) gf←c22336)+63)/* var←c21760 */  ))+6) );
               p←v5780.f0 = INEG((word) ( *( (fPt) ((*  (ptr) pd46 ))))((
                        tf48 = (
                           x47 = x←v8984,  *(float*)&x47
                           ) * (float)(int)docsz←v5724.f0,  *(word*)&tf48
                        ), pd46));
               };
SOURCE(3035, 11)
            doit←v5612 = 1;
            break;
         case 2: 
SOURCE(3064, 37)
            {
               word pd49;
               word x50;
               float tf51;
               pd49 = (* (( (ptr) (* (( (ptr) gf←c22336)+63)/* var←c21760 */  ))+6) );
               p←v5780.f0 = (p←v5780.f0 - (word) ( *( (fPt) ((*  (ptr) pd49 ))))((
                     tf51 = (
                        x50 = x←v8984,  *(float*)&x50
                        ) * (float)(int)winsz←v5752.f0,  *(word*)&tf51
                     ), pd49));
               };
SOURCE(3103, 11)
            doit←v5612 = 1;
            break;
         case 1: 
SOURCE(3133, 37)
            {
               word pd52;
               word x53;
               float tf54;
               pd52 = (* (( (ptr) (* (( (ptr) gf←c22336)+63)/* var←c21760 */  ))+6) );
               p←v5780.f0 = (p←v5780.f0 + (word) ( *( (fPt) ((*  (ptr) pd52 ))))((
                     tf54 = (
                        x53 = x←v8984,  *(float*)&x53
                        ) * (float)(int)winsz←v5752.f0,  *(word*)&tf54
                     ), pd52));
               };
SOURCE(3172, 11)
            doit←v5612 = 1;
            break;
         };
      };
SOURCE(3203, 217)
   {
      word var←c21792;
      var←c21792 = vAction←v8956;
      switch (var←c21792) {
         case 3: 
SOURCE(3234, 34)
            {
               word pd55;
               word x56;
               float tf57;
               pd55 = (* (( (ptr) (* (( (ptr) gf←c22336)+63)/* var←c21760 */  ))+6) );
               p←v5780.f1 = INEG((word) ( *( (fPt) ((*  (ptr) pd55 ))))((
                        tf57 = (
                           x56 = y←v9012,  *(float*)&x56
                           ) * (float)(int)docsz←v5724.f1,  *(word*)&tf57
                        ), pd55));
               };
SOURCE(3270, 11)
            doit←v5612 = 1;
            break;
         case 2: 
SOURCE(3299, 38)
            {
               word pd58;
               word x59;
               float tf60;
               pd58 = (* (( (ptr) (* (( (ptr) gf←c22336)+63)/* var←c21760 */  ))+6) );
               p←v5780.f1 = (p←v5780.f1 - (word) ( *( (fPt) ((*  (ptr) pd58 ))))((
                     tf60 = (
                        x59 = y←v9012,  *(float*)&x59
                        ) * (float)(int)winsz←v5752.f1,  *(word*)&tf60
                     ), pd58));
               };
SOURCE(3339, 11)
            doit←v5612 = 1;
            break;
         case 1: 
SOURCE(3369, 38)
            {
               word pd61;
               word x62;
               float tf63;
               pd61 = (* (( (ptr) (* (( (ptr) gf←c22336)+63)/* var←c21760 */  ))+6) );
               p←v5780.f1 = (p←v5780.f1 + (word) ( *( (fPt) ((*  (ptr) pd61 ))))((
                     tf63 = (
                        x62 = y←v9012,  *(float*)&x62
                        ) * (float)(int)winsz←v5752.f1,  *(word*)&tf63
                     ), pd61));
               };
SOURCE(3409, 11)
            doit←v5612 = 1;
            break;
         };
      };
SOURCE(3440, 50)
   if ((0 != doit←v5612)) {
SOURCE(3453, 37)
      (void) PublicSetState←P780(xBiScroller←v5584, p←v5780, event←v9040);
      };
   }

static void SetFilterProc←P540(xBiScroller←v4376, filterProc←v4404, filterData←v4432)
   word xBiScroller←v4376;
   word filterProc←v4404;
   word filterData←v4432;
   {
   register ptr gf←c22368 =  (ptr) &globalframe;
   word xbsd←v5824;
   word pair←v5852 = 0;
   /* SetFilterProc: */ 
SOURCE(3581, 279)
SOURCE(3686, 47)
   {
      word idx64;
      word limit65;
      xbsd←v5824 = XR←Narrow((* ((( (ptr) xBiScroller←v4376)+49)+(
               idx64 = (* (( (ptr) (* (( (ptr) gf←c22368)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit65 = (* (( (ptr) xBiScroller←v4376)+48) ),
               BCK(idx64, limit65)
               )) ), (* (( (ptr) gf←c22368)+15) ));
      };
SOURCE(3763, 72)
   if ((filterProc←v4404 != 0)) {
SOURCE(3786, 49)
      {
         word var←c21824;
         var←c21824 = XR←NewObject(8, (* (( (ptr) gf←c22368)+14) ));
         (*  (ptr) var←c21824 ) = XR←CheckProc(filterProc←v4404);
         (* (( (ptr) var←c21824)+1) ) = filterData←v4432;
         pair←v5852 = var←c21824;
         };
      };
SOURCE(3837, 23)
   (* (( (ptr) xbsd←v5824)+3) ) = pair←v5852;
   }

static word Child←P600(xBiScroller←v4504)
   word xBiScroller←v4504;
   {
   register ptr gf←c22400 =  (ptr) &globalframe;
   word var←c4548;
   word xbsd←v5908;
   /* Child: */ 
SOURCE(3864, 169)
SOURCE(3864, 169)
   var←c4548 = 0;
SOURCE(3940, 47)
   {
      word idx66;
      word limit67;
      xbsd←v5908 = XR←Narrow((* ((( (ptr) xBiScroller←v4504)+49)+(
               idx66 = (* (( (ptr) (* (( (ptr) gf←c22400)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit67 = (* (( (ptr) xBiScroller←v4504)+48) ),
               BCK(idx66, limit67)
               )) ), (* (( (ptr) gf←c22400)+15) ));
      };
SOURCE(3989, 44)
   {
      word pd68;
      pd68 = (* (( (ptr) (* (( (ptr) gf←c22400)+61)/* var←c21504 */  ))+7) );
      return((word) ( *( (fPt) ((*  (ptr) pd68 ))))((*  (ptr) (xbsd←v5908) ), pd68));
      };
   }

static void ReplaceChild←P660(xBiScroller←v4608, child←v4636, delayed←v4664, preventDestructionOfOldChild←v4692)
   word xBiScroller←v4608;
   word child←v4636;
   word delayed←v4664;
   word preventDestructionOfOldChild←v4692;
   {
   register ptr gf←c22432 =  (ptr) &globalframe;
   word xbsd←v5952;
   /* ReplaceChild: */ 
SOURCE(4039, 280)
SOURCE(4182, 47)
   {
      word idx69;
      word limit70;
      xbsd←v5952 = XR←Narrow((* ((( (ptr) xBiScroller←v4608)+49)+(
               idx69 = (* (( (ptr) (* (( (ptr) gf←c22432)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit70 = (* (( (ptr) xBiScroller←v4608)+48) ),
               BCK(idx69, limit70)
               )) ), (* (( (ptr) gf←c22432)+15) ));
      };
SOURCE(4231, 88)
   {
      word pd71;
      pd71 = (* (( (ptr) (* (( (ptr) gf←c22432)+61)/* var←c21504 */  ))+8) );
      (void) ( *( (fPt) ((*  (ptr) pd71 ))))((*  (ptr) xbsd←v5952 ), child←v4636, delayed←v4664, preventDestructionOfOldChild←v4692, pd71)
      ;
      };
   }

static word SizeSubtract←P720(szVal←v4752, sub←v4780)
   word szVal←v4752;
   word sub←v4780;
   {
   word var←c4824;
   /* SizeSubtract: */ 
SOURCE(4325, 118)
SOURCE(4385, 41)
   if (( (int)szVal←v4752 >  (int)0)) {
SOURCE(4401, 25)
      szVal←v4752 = (MAX((int)(word), (szVal←v4752 - sub←v4780), 1));
      };
SOURCE(4428, 15)
   return(szVal←v4752);
   }

static void PublicSetState←P780(xBiScroller←v4884, p←v4912, event←v4940)
   word xBiScroller←v4884;
   W2 p←v4912;
   word event←v4940;
   {
   register ptr gf←c22464 =  (ptr) &globalframe;
   word xbsd←v5996;
   word pair←v6024;
   /* PublicSetState: */ 
SOURCE(4447, 310)
SOURCE(4543, 47)
   {
      word idx72;
      word limit73;
      xbsd←v5996 = XR←Narrow((* ((( (ptr) xBiScroller←v4884)+49)+(
               idx72 = (* (( (ptr) (* (( (ptr) gf←c22464)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit73 = (* (( (ptr) xBiScroller←v4884)+48) ),
               BCK(idx72, limit73)
               )) ), (* (( (ptr) gf←c22464)+15) ));
      };
SOURCE(4592, 38)
   pair←v6024 = (* (( (ptr) xbsd←v5996)+3) );
SOURCE(4632, 125)
   if ((pair←v6024 == 0)) {
SOURCE(4658, 43)
      (void) DirectSetState←P900(xBiScroller←v4884, p←v4912, event←v4940);
      }
   else {
SOURCE(4701, 56)
      {
         word pd74;
         pd74 = (*  (ptr) pair←v6024 );
         (void) ( *( (fPt) ((*  (ptr) pd74 ))))(xBiScroller←v4884, p←v4912, (* (( (ptr) pair←v6024)+1) ), event←v4940, pd74);
         };
      };
   }

static void CheckChildState←P840(widget←v9128, registerData←v9156, callData←v9184, event←v9212)
   word widget←v9128;
   word registerData←v9156;
   word callData←v9184;
   word event←v9212;
   {
   register ptr gf←c22496 =  (ptr) &globalframe;
   word xBiScroller←v6080;
   word xbsd←v6108;
   W4 state←v6136;
   word f←v6164;
   W2 docSize←v6192;
   W2 winSize←v6220;
   W2 p←v6248;
   /* CheckChildState: */ 
SOURCE(4762, 659)
SOURCE(4804, 46)
   xBiScroller←v6080 = XR←Narrow(registerData←v9156, (* (( (ptr) gf←c22496)+11) ));
SOURCE(4852, 47)
   {
      word idx75;
      word limit76;
      xbsd←v6108 = XR←Narrow((* ((( (ptr) xBiScroller←v6080)+49)+(
               idx75 = (* (( (ptr) (* (( (ptr) gf←c22496)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit76 = (* (( (ptr) xBiScroller←v6080)+48) ),
               BCK(idx75, limit76)
               )) ), (* (( (ptr) gf←c22496)+15) ));
      };
SOURCE(4944, 68)
   {
      word var←c21888;
      {
         word pd77;
         pd77 = (* (( (ptr) (* (( (ptr) gf←c22496)+61)/* var←c21504 */  ))+7) );
         var←c21888 = (word) ( *( (fPt) ((*  (ptr) pd77 ))))((*  (ptr) (xbsd←v6108) ), pd77);
         };
      (void) GetOuterSize←P420((word) &docSize←v6192, var←c21888);
      };
SOURCE(5014, 48)
   (void) GetInnerSize←P360((word) &winSize←v6220, (*  (ptr) xbsd←v6108 ));
SOURCE(5064, 33)
SOURCE(6133, 93)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c22496)+16)/* LOCK←v2748 */ ));
SOURCE(6208, 18)
   p←v6248 = (*  (W2Pt) (( (ptr) xbsd←v6108)+1) );
   (void) (XR←MonitorExit((word) (( (bPt) gf←c22496)+16)/* LOCK←v2748 */ ));
SOURCE(5099, 49)
   {
      word var←c0144;
      {
         word x78;
         float tf79;
         f←v6164 = (
            tf79 = (float)(int)(x78 = INEG(p←v6248.f1),
               MAX((int)(word), x78, 0)),  *(word*)&tf79
            );
         };
      var←c0144 = f←v6164;
      {
         word x80;
         *(float*)&state←v6136.f2 = (
            x80 = var←c0144,  *(float*)&x80
            ) / (float)(int)docSize←v6192.f1;
         };
      };
SOURCE(5150, 48)
   {
      word var←c0145;
      {
         word x81;
         float tf82;
         f←v6164 = (
            tf82 = (float)(int)(x81 = INEG(p←v6248.f0),
               MAX((int)(word), x81, 0)),  *(word*)&tf82
            );
         };
      var←c0145 = f←v6164;
      {
         word x83;
         *(float*)&state←v6136.f0 = (
            x83 = var←c0145,  *(float*)&x83
            ) / (float)(int)docSize←v6192.f0;
         };
      };
SOURCE(5200, 66)
   {
      word var←c0146;
      word var←c0147;
      {
         float tf84;
         f←v6164 = (
            tf84 = (float)(int)winSize←v6220.f1,  *(word*)&tf84
            );
         };
      var←c0146 = f←v6164;
      {
         word x85;
         *(float*)&var←c0147 = (
            x85 = var←c0146,  *(float*)&x85
            ) / (float)(int)docSize←v6192.f1;
         };
      {
         word x86;
         word x87;
         *(float*)&state←v6136.f3 = (
            x86 = state←v6136.f2,  *(float*)&x86
            ) + (
            x87 = var←c0147,  *(float*)&x87
            );
         };
      };
SOURCE(5268, 64)
   {
      word var←c0148;
      word var←c0149;
      {
         float tf88;
         f←v6164 = (
            tf88 = (float)(int)winSize←v6220.f0,  *(word*)&tf88
            );
         };
      var←c0148 = f←v6164;
      {
         word x89;
         *(float*)&var←c0149 = (
            x89 = var←c0148,  *(float*)&x89
            ) / (float)(int)docSize←v6192.f0;
         };
      {
         word x90;
         word x91;
         *(float*)&state←v6136.f1 = (
            x90 = state←v6136.f0,  *(float*)&x90
            ) + (
            x91 = var←c0149,  *(float*)&x91
            );
         };
      };
SOURCE(5359, 62)
   {
      word pd92;
      pd92 = (* (( (ptr) (* (( (ptr) gf←c22496)+59)/* var←c21440 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd92 ))))(xBiScroller←v6080, state←v6136, event←v9212, pd92);
      };
   }

static void DirectSetState←P900(formal←c0152, formal←c0153, formal←c0154)
   word formal←c0152;
   W2 formal←c0153;
   word formal←c0154;
   {
   W11 var←c22528;
   /* declaration of xBiScroller←v5000 skipped */ 
   /* declaration of p←v5028 skipped */ 
   /* declaration of event←v5056 skipped */ 
   register ptr gf←c22560 =  (ptr) &globalframe;
   /* declaration of var←c21952 skipped */ 
   /* declaration of xbsd←v6292 skipped */ 
   word rootTQ←v6320;
   (* (( (ptr) &var←c22528)+4)/* xBiScroller←v5000 */  ) = formal←c0152;
   (*  (W2Pt) (( (ptr) &var←c22528)+5)/* p←v5028 */  ) = formal←c0153;
   (* (( (ptr) &var←c22528)+7)/* event←v5056 */  ) = formal←c0154;
   /* DirectSetState: */ 
SOURCE(5427, 456)
   {
      word tmpAddr93;
      tmpAddr93 = (word) (( (ptr) &var←c22528)+8)/* var←c21952 */ ;
      (*  (ptr) tmpAddr93 ) = ( ((word)  (fPt) action←P1236) );
      (* (( (ptr) tmpAddr93) + 1) ) = 1;
      };
SOURCE(5523, 47)
   {
      word idx94;
      word limit95;
      (* (( (ptr) &var←c22528)+10)/* xbsd←v6292 */  ) = XR←Narrow((* ((( (ptr) (* (( (ptr) &var←c22528)+4)/* xBiScroller←v5000 */  ))+49)
            +(
               idx94 = (* (( (ptr) (* (( (ptr) gf←c22560)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit95 = (* (( (ptr) (* (( (ptr) &var←c22528)+4)/* xBiScroller←v5000 */  ))+48) ),
               BCK(idx94, limit95)
               )) ), (* (( (ptr) gf←c22560)+15) ));
      };
SOURCE(5572, 34)
   rootTQ←v6320 = (* (( (ptr) (* (( (ptr) &var←c22528)+4)/* xBiScroller←v5000 */  ))+45) );
SOURCE(5786, 97)
   if ((rootTQ←v6320 == 0) || ((* (( (ptr) (* (( (ptr) &var←c22528)+4)/* xBiScroller←v5000 */  ))+38) ) >= 2)) {
SOURCE(5837, 15)
      (void) action←P1236((word) ((( (bPt) &var←c22528)+32)/* var←c21952 */ ));
      }
   else {
SOURCE(5852, 31)
      {
         word pd96;
         pd96 = (* (( (ptr) (* (( (ptr) gf←c22560)+64)/* var←c21984 */  ))+65) );
         (void) ( *( (fPt) ((*  (ptr) pd96 ))))(rootTQ←v6320, (word) (( (bPt) &var←c22528)+32)/* var←c21952 */ , pd96);
         };
      };
   }

static void action←P1236(formal←c22624)
   word formal←c22624;
   {
   register ptr gf←c22592 =  (ptr) &globalframe;
   formal←c22624 = (formal←c22624 - 32);
   /* action: */ 
SOURCE(5608, 173)
SOURCE(5628, 22)
SOURCE(5628, 22)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c22592)+16)/* LOCK←v2748 */ ));
SOURCE(6115, 13)
   (*  (W2Pt) (( (ptr) (* (( (ptr) formal←c22624)+10) ))+1) ) = (*  (W2Pt) (( (ptr) formal←c22624)+5) );
   (void) (XR←MonitorExit((word) (( (bPt) gf←c22592)+16)/* LOCK←v2748 */ ));
SOURCE(5673, 42)
   {
      word pd97;
      pd97 = (* (( (ptr) (* (( (ptr) gf←c22592)+61)/* var←c21504 */  ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd97 ))))((*  (ptr) (* (( (ptr) formal←c22624)+10) ) ), (*  (W2Pt) (( (ptr) formal←c22624)+5)
          ), pd97);
      };
SOURCE(5717, 64)
   {
      word pd98;
      pd98 = (* (( (ptr) (* (( (ptr) gf←c22592)+60)/* var←c21472 */  ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd98 ))))((* (( (ptr) formal←c22624)+4) ), (* (( (ptr) gf←c22592)+8)/* stateChanged←v2776 */  ), (* (
            ( (ptr) formal←c22624)+10) ), (* (( (ptr) formal←c22624)+7) ), pd98);
      };
   }

static void GetState←P960(formal←c0127, xBiScroller←v5116)
   word formal←c0127;
   word xBiScroller←v5116;
   {
   register ptr gf←c22656 =  (ptr) &globalframe;
   W2 p←v5160;
   word xbsd←v6408;
   /* GetState: */ 
SOURCE(5890, 152)
SOURCE(5965, 47)
   {
      word idx99;
      word limit100;
      xbsd←v6408 = XR←Narrow((* ((( (ptr) xBiScroller←v5116)+49)+(
               idx99 = (* (( (ptr) (* (( (ptr) gf←c22656)+9)/* xBiScrollerClass←v2804 */  ))+4) ),
               limit100 = (* (( (ptr) xBiScroller←v5116)+48) ),
               BCK(idx99, limit100)
               )) ), (* (( (ptr) gf←c22656)+15) ));
      };
SOURCE(6014, 28)
   {
      W2 var←c22080;
      {
         W2 var←c22048;
SOURCE(6133, 93)
         (void) (XR←MonitorEntry((word) (( (bPt) gf←c22656)+16)/* LOCK←v2748 */ ));
SOURCE(6208, 18)
         var←c22048 = (*  (W2Pt) (( (ptr) xbsd←v6408)+1) );
         (void) (XR←MonitorExit((word) (( (bPt) gf←c22656)+16)/* LOCK←v2748 */ ));
         var←c22080 = var←c22048;
         };
      p←v5160 = var←c22080;
      /* removed tail goto */ 
      };
   (*  (W2Pt) formal←c0127 ) = p←v5160;
   return;
   }

/* file: XTkXBiScrollerImpl, module: XTkXBiScrollerImpl, compiled at: September 17, 1993 10:34:20 am PDT */ 
extern void XR←install←XTkXBiScrollerImpl() {
   NoName←Q1632();
   }
extern void XR←run←XTkXBiScrollerImpl() { XR←Start(&globalframe); }