/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: March 19, 1993 5:48:05 pm PST */
/* C2C version: February 24, 1993 (sun4) */
/* ref-counting: off */
/* file: BiScrollersTransformsImpl, module: BiScrollersTransformsImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [2180410997,1075106069] BiScrollersTransformsImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2;} W3;
typedef struct {word f0, f1;} W2;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef W3 *W3Pt;
#define SOURCE(p, l) /* source p, l */
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static float fc58 = 0.0;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc67 = 1.0;
static float fc102 = 2.0;
#define FMIN(x, y, tx, ty)  ( (tx=((float) x)) <= (ty=((float) y)) ? tx : ty )
static void NoName←Q1836();
static void BiScrollersTransformsImpl←P0();
static word Scale←P60();
static void ConstantVector←P120();
static word SGN←P180();
static word ZeroProtect←P240();
static word Rotate←P300();
static word Shift←P360();
static word Align←P420();
static word Blend←P1236();
static void ViewLimitsOfImage←P480();
static void ViewLimitsOfImage2←P540();
static word Round←P600();
static word BoxScale←P660();
static word Fit←P720();
static void Norm←P780();
static void BeVec←P840();
static word BeReal←P900();
static void BeRect←P960();
static word BeBool←P1020();
static word DoBSUserAction←P1080();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\247\031\224\326\300\123\162\224\023\100\164\000\000"};
static struct {unsigned f; char r[4];} string2 = {65540, "\256\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\000\172\225\152\300\104\041\252\375\100\200\000\000"};
static struct {unsigned f; char r[4];} string4 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string5 = {65537, "\001\000\000"};
static struct {unsigned f; char r[8];} string6 = {262152, "TRUE\000\000\000"};
static struct {unsigned f; char r[8];} string7 = {327688, "First\000\000"};
static struct {unsigned f; char r[8];} string8 = {262152, "Last\000\000\000"};
static struct {unsigned f; char r[4];} string9 = {196612, "Mid"};
static struct {unsigned f; char r[8];} string10 = {327688, "Shift\000\000"};
static struct {unsigned f; char r[8];} string11 = {327688, "Scale\000\000"};
static struct {unsigned f; char r[12];} string12 = {655372, "ScaleReset\000"};
static struct {unsigned f; char r[8];} string13 = {393224, "Rotate\000"};
static struct {unsigned f; char r[12];} string14 = {720908, "RotateReset"};
static struct {unsigned f; char r[8];} string15 = {327688, "FitXY\000\000"};
static struct {unsigned f; char r[16];} string16 = {786448, "FitUniformly\000\000\000"};
static struct {unsigned f; char r[8];} string17 = {458760, "Vanilla"};
static struct {unsigned f; char r[12];} string18 = {655372, "AlignFracs\000"};
static struct {unsigned f; char r[12];} string19 = {524300, "BoxScale\000\000\000"};
static struct {unsigned f; char r[8];} string20 = {262152, "Prev\000\000\000"};
static struct {unsigned f; char r[8];} string21 = {327688, "FALSE\000\000"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\201\366\156\165\300\100\024\321\025\100\164\000\000"};
static struct {unsigned f; char r[8];} string23 = {458759, "\006\001(\004\200\377\377"};
static struct {unsigned f; char r[16];} string24 = {851984, "\257\300\133\220\237\206\300\254\332\015\112\100\164\000\000"};
static struct {unsigned f; char r[16];} string25 = {851984, "\257\300\000\172\225\152\300\104\041\252\375\100\150\000\000"};
static struct {unsigned f; char r[16];} string26 = {851984, "\257\300\121\117\377\026\300\315\013\026\004\100\150\000\000"};
static struct {unsigned f; char r[16];} string27 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string28 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\247\031\224\326\300\123\162\224\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string30 = {851984, "\257\300\252\311\132\134\300\226\023\126\352\100\150\000\000"};
static W2 dummy140;
static struct {
   word f0[26]; 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; word f62; word f63[8]; 
   } globalframe = {
   {0}, (word) DoBSUserAction←P1080, 0, (word) BeBool←P1020, 
   0, (word) BeRect←P960, 0, (word) BeReal←P900, 
   0, (word) BeVec←P840, 0, (word) Norm←P780, 
   0, (word) Fit←P720, 0, (word) BoxScale←P660, 
   0, (word) Round←P600, 0, (word) ViewLimitsOfImage2←P540, 
   0, (word) ViewLimitsOfImage←P480, 0, (word) Align←P420, 
   0, (word) Shift←P360, 0, (word) Rotate←P300, 
   0, (word) ZeroProtect←P240, 0, (word) SGN←P180, 
   0, (word) ConstantVector←P120, 0, (word) Scale←P60, 
   0, (word) BiScrollersTransformsImpl←P0, {0}
   };

static void NoName←Q1836()
   {
   register ptr gf←c0248 =  (ptr) &globalframe;
   word var←c16664;
   (* (( (ptr) gf←c0248)+4) ) = (word) XR←GetTypeIndexS((word) (&string1));
   (* (( (ptr) gf←c0248)+5) ) = (word) XR←GetTypeIndexS((word) (&string2));
   (* (( (ptr) gf←c0248)+6) ) = (word) XR←GetTypeIndexS((word) (&string3));
   (* (( (ptr) gf←c0248)+7) ) = (word) XR←GetTypeIndex((word) &string4, 0, (word) &string5);
   (*  (ptr) (( (bPt) gf←c0248)+40) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string6);
   (*  (ptr) (( (bPt) gf←c0248)+44) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string7);
   (*  (ptr) (( (bPt) gf←c0248)+48) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string8);
   (*  (ptr) (( (bPt) gf←c0248)+52) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string9);
   (*  (ptr) (( (bPt) gf←c0248)+56) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string10);
   (*  (ptr) (( (bPt) gf←c0248)+60) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string11);
   (*  (ptr) (( (bPt) gf←c0248)+64) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string12);
   (*  (ptr) (( (bPt) gf←c0248)+68) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string13);
   (*  (ptr) (( (bPt) gf←c0248)+72) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string14);
   (*  (ptr) (( (bPt) gf←c0248)+76) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string15);
   (*  (ptr) (( (bPt) gf←c0248)+80) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string16);
   (*  (ptr) (( (bPt) gf←c0248)+84) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string17);
   (*  (ptr) (( (bPt) gf←c0248)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string18);
   (*  (ptr) (( (bPt) gf←c0248)+92) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string19);
   (*  (ptr) (( (bPt) gf←c0248)+96) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string20);
   (*  (ptr) (( (bPt) gf←c0248)+100) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0248)+7) ), (word) &string21);
   (void) XR←DeclareGlobalFrame((word) "BiScrollersTransformsImpl", &globalframe, (word) XR←GetTypeIndex((word) &string22, 0, (word) &string23)
      , (word) (( (bPt) gf←c0248)+248)/* var←c14712 */ );
   var←c16664 = (word) XR←ImportInterface((word) "Geom2D", (word) XR←GetTypeIndexS((word) (&string24)), 23);
   (* (( (ptr) gf←c0248)+66)/* var←c14840 */  ) = var←c16664;
   var←c16664 = (word) XR←ImportInterface((word) "ImagerBox", (word) XR←GetTypeIndexS((word) (&string25)), 7);
   (* (( (ptr) gf←c0248)+69)/* var←c15992 */  ) = var←c16664;
   (void) XR←ImportProcS(var←c16664, 269484289);
   var←c16664 = (word) XR←ImportInterface((word) "ImagerTransformation", (word) XR←GetTypeIndexS((word) (&string26)), 55);
   (* (( (ptr) gf←c0248)+65)/* var←c14808 */  ) = var←c16664;
   (void) XR←ImportProcS(var←c16664, 135013122);
   (void) XR←ImportProcS(var←c16664, 67637506);
   (void) XR←ImportProcS(var←c16664, 67899394);
   (void) XR←ImportProcS(var←c16664, 67636994);
   (void) XR←ImportProcS(var←c16664, 67899906);
   var←c16664 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string27)), 11);
   (* (( (ptr) gf←c0248)+68)/* var←c15704 */  ) = var←c16664;
   (void) XR←ImportProcS(var←c16664, 67371521);
   var←c16664 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string28)), 36);
   (* (( (ptr) gf←c0248)+67)/* var←c15000 */  ) = var←c16664;
   (void) XR←ImportProcS(var←c16664, 67636482);
   (void) XR←ImportProcS(var←c16664, 67372289);
   var←c16664 = (word) XR←ImportInterface((word) "Vector2", (word) XR←GetTypeIndexS((word) (&string29)), 22);
   (* (( (ptr) gf←c0248)+64)/* var←c14776 */  ) = var←c16664;
   (void) XR←ImportProcS(var←c16664, 134743041);
   var←c16664 = (word) XR←ExportInterface((word) "BiScrollersTransforms", (word) XR←GetTypeIndexS((word) (&string30)), 7);
   (* (( (ptr) gf←c0248)+70)/* var←c16696 */  ) = var←c16664;
   (void) XR←ExportProcS(var←c16664, (word) (( (bPt) gf←c0248)+240)/* var←c14680 */ , 69730311);
   (void) XR←ExportProcS(var←c16664, (word) (( (bPt) gf←c0248)+208)/* var←c14552 */ , 69206278);
   (void) XR←ExportProcS(var←c16664, (word) (( (bPt) gf←c0248)+200)/* var←c14520 */ , 67895811);
   (void) XR←ExportProcS(var←c16664, (word) (( (bPt) gf←c0248)+192)/* var←c14488 */ , 70779658);
   (void) XR←ExportProcS(var←c16664, (word) (( (bPt) gf←c0248)+160)/* var←c14360 */ , 70255622);
   (void) XR←ExportProcS(var←c16664, (word) (( (bPt) gf←c0248)+152)/* var←c14328 */ , 69207304);
   (void) XR←ExportProcS(var←c16664, (word) (( (bPt) gf←c0248)+104)/* var←c14136 */ , 70256139);
   }

static void BiScrollersTransformsImpl←P0(formal←c031, formal←c030)
   word formal←c031;
   word formal←c030;
   {
   /* BiScrollersTransformsImpl: */ 
   }

static word Scale←P60(old←v3612, op←v3640, cw←v3668, ch←v3696, pp←v3724, vanilla←v3752, mayStretch←v3780)
   word old←v3612;
   W3 op←v3640;
   word cw←v3668;
   word ch←v3696;
   W2 pp←v3724;
   word vanilla←v3752;
   word mayStretch←v3780;
   {
   register ptr gf←c16728 =  (ptr) &globalframe;
   word new←v3824;
   W2 cv←v7208;
   /* Scale: */ 
SOURCE(690, 682)
SOURCE(690, 682)
   new←v3824 = 0;
SOURCE(856, 36)
   (void) ConstantVector←P120((word) &cv←v7208, cw←v3668, ch←v3696, pp←v3724);
SOURCE(894, 33)
   {
      W2 var←c14744;
      {
         word pd31;
         pd31 = (* (( (ptr) (* (( (ptr) gf←c16728)+64)/* var←c14776 */  ))+8) );
         (void) ( *( (fPt) ((*  (ptr) pd31 ))))((word) &var←c14744, cv←v7208, pd31);
         };
      {
         word pd32;
         pd32 = (* (( (ptr) (* (( (ptr) gf←c16728)+65)/* var←c14808 */  ))+22) );
         new←v3824 = (word) ( *( (fPt) ((*  (ptr) pd32 ))))(old←v3612, var←c14744, pd32);
         };
      };
SOURCE(929, 41)
   if ((vanilla←v3752 == 0)) {
SOURCE(951, 19)
      vanilla←v3752 = (*  (ptr) (* (( (ptr) (* (( (ptr) gf←c16728)+66)/* var←c14840 */  ))+5) ) );
      };
SOURCE(972, 353)
   {
      word var←c14872;
      var←c14872 = op←v3640.f0;
      switch (var←c14872) {
         case 0: 
SOURCE(1001, 203)
            {
               W6 v←v7252;
               word vd←v7280;
               word od←v7308;
SOURCE(1003, 41)
               {
                  W6 tn←v14088;
                  tn←v14088.f0 = (*  (ptr) vanilla←v3752 );
                  tn←v14088.f1 = (* (( (ptr) vanilla←v3752)+3) );
                  tn←v14088.f2 = (* (( (ptr) vanilla←v3752)+1) );
                  tn←v14088.f3 = (* (( (ptr) vanilla←v3752)+4) );
                  tn←v14088.f4 = (* (( (ptr) vanilla←v3752)+2) );
                  tn←v14088.f5 = (* (( (ptr) vanilla←v3752)+5) );
                  v←v7252 = tn←v14088;
                  };
SOURCE(1046, 40)
               {
                  word x33;
                  word x34;
                  word x35;
                  word x36;
                  *(float*)&vd←v7280 = ((
                     x33 = v←v7252.f0,  *(float*)&x33
                     ) * (
                     x34 = v←v7252.f3,  *(float*)&x34
                     )) - ((
                     x35 = v←v7252.f1,  *(float*)&x35
                     ) * (
                     x36 = v←v7252.f2,  *(float*)&x36
                     ));
                  };
SOURCE(1088, 36)
               {
                  word x37;
                  word x38;
                  word x39;
                  word x40;
                  *(float*)&od←v7308 = ((
                     x37 = (*  (ptr) old←v3612 ),  *(float*)&x37
                     ) * (
                     x38 = (* (( (ptr) old←v3612)+4) ),  *(float*)&x38
                     )) - ((
                     x39 = (* (( (ptr) old←v3612)+3) ),  *(float*)&x39
                     ) * (
                     x40 = (* (( (ptr) old←v3612)+1) ),  *(float*)&x40
                     ));
                  };
SOURCE(1126, 76)
               {
                  word var←c14936;
                  {
                     word var←c14968;
                     word var←c0264;
                     word var←c0265;
                     {
                        float tf41;
                        word x42;
                        word x43;
                        float tf44;
                        var←c14968 = (
                           tf44 = FABS(((
/*1*/      x42 = vd←v7280,  *(float*)&x42
/*1*/      ) / (
/*1*/      x43 = (word) ZeroProtect←P240(od←v7308),  *(float*)&x43
/*1*/      )), tf41),  *(word*)&tf44
                           );
                        };
                     {
                        word pd45;
                        pd45 = (* (( (ptr) (* (( (ptr) gf←c16728)+67)/* var←c15000 */  ))+9) );
                        var←c0264 = (word) ( *( (fPt) ((*  (ptr) pd45 ))))(var←c14968, pd45);
                        };
                     {
                        word x46;
                        *(float*)&var←c0265 = (
                           x46 = var←c0264,  *(float*)&x46
                           ) * (float)(int)((word) SGN←P180(vd←v7280) - 1);
                        };
                     {
                        word x47;
                        *(float*)&var←c14936 = (
                           x47 = var←c0265,  *(float*)&x47
                           ) * (float)(int)((word) SGN←P180(od←v7308) - 1);
                        };
                     };
                  {
                     word pd48;
                     pd48 = (* (( (ptr) (* (( (ptr) gf←c16728)+65)/* var←c14808 */  ))+19) );
                     new←v3824 = (word) ( *( (fPt) ((*  (ptr) pd48 ))))(new←v3824, var←c14936, pd48);
                     };
                  };
               };
            break;
         case 1: 
SOURCE(1216, 24)
            {
               word pd49;
               pd49 = (* (( (ptr) (* (( (ptr) gf←c16728)+65)/* var←c14808 */  ))+19) );
               new←v3824 = (word) ( *( (fPt) ((*  (ptr) pd49 ))))(new←v3824, op←v3640.f1, pd49);
               };
            break;
         case 2: 
SOURCE(1250, 75)
            if ((0 != mayStretch←v3780)) {
SOURCE(1269, 34)
               {
                  W2 var←c15032;
                  var←c15032.f0 = op←v3640.f1;
                  var←c15032.f1 = op←v3640.f2;
                  {
                     word pd50;
                     pd50 = (* (( (ptr) (* (( (ptr) gf←c16728)+65)/* var←c14808 */  ))+20) );
                     new←v3824 = (word) ( *( (fPt) ((*  (ptr) pd50 ))))(new←v3824, var←c15032, pd50);
                     };
                  };
               }
            else {
SOURCE(1303, 22)
               {
                  word pd51;
                  pd51 = (* (( (ptr) (* (( (ptr) gf←c16728)+65)/* var←c14808 */  ))+19) );
                  new←v3824 = (word) ( *( (fPt) ((*  (ptr) pd51 ))))(new←v3824, op←v3640.f1, pd51);
                  };
               };
            break;
         default: 
SOURCE(1338, 5)
            (void) XR←RaiseUnnamedError();
            break;
         };
      };
SOURCE(1345, 27)
   {
      word pd52;
      pd52 = (* (( (ptr) (* (( (ptr) gf←c16728)+65)/* var←c14808 */  ))+22) );
      new←v3824 = (word) ( *( (fPt) ((*  (ptr) pd52 ))))(new←v3824, cv←v7208, pd52);
      };
SOURCE(690, 682)
   return(new←v3824);
   }

static void ConstantVector←P120(formal←c056, cw←v3884, ch←v3912, pp←v3940)
   word formal←c056;
   word cw←v3884;
   word ch←v3912;
   W2 pp←v3940;
   {
   W2 cv←v3984;
   /* ConstantVector: */ 
SOURCE(1378, 105)
SOURCE(1458, 25)
   {
      word x53;
      word x54;
      *(float*)&cv←v3984.f0 = (
         x53 = cw←v3884,  *(float*)&x53
         ) * (
         x54 = pp←v3940.f0,  *(float*)&x54
         );
      };
   {
      word x55;
      word x56;
      *(float*)&cv←v3984.f1 = (
         x55 = ch←v3912,  *(float*)&x55
         ) * (
         x56 = pp←v3940.f1,  *(float*)&x56
         );
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c056 ) = cv←v3984;
   return;
   }

static word SGN←P180(r←v4044)
   word r←v4044;
   {
   word sgn←v4088;
   /* SGN: */ 
SOURCE(1489, 113)
SOURCE(1538, 64)
   {
      word var←c15064;
      var←c15064 = r←v4044;
      {
         word x57;
         word x59;
         word x60;
         word x61;
         word x62;
         word x63;
         word idx64;
         sgn←v4088 = (
            idx64 = (word) ( ( ((
               x57 = var←c15064,  *(float*)&x57
               ) < (
               x59 = (*  (ptr) &fc58 ),  *(float*)&x59
               )) ?  (word) -1 :  ( ((
               x60 = var←c15064,  *(float*)&x60
               ) == (
               x61 = (*  (ptr) &fc58 ),  *(float*)&x61
               )) ? 0 :  ( ((
               x62 = var←c15064,  *(float*)&x62
               ) > (
               x63 = (*  (ptr) &fc58 ),  *(float*)&x63
               )) ? 1 : (
               XR←RaiseUnnamedError(), 0
               ) )  )  )  + 1),
            BCK(idx64, 3)
            );
         };
      };
SOURCE(1489, 113)
   return(sgn←v4088);
   }

static word ZeroProtect←P240(r←v4168)
   word r←v4168;
   {
   word r0←v4212;
   /* ZeroProtect: */ 
SOURCE(1606, 81)
SOURCE(1656, 31)
   {
      word x65;
      word x66;
      if (((
         x65 = r←v4168,  *(float*)&x65
         ) == (
         x66 = (*  (ptr) &fc58 ),  *(float*)&x66
         ))) {
         r0←v4212 = (*  (ptr) &fc67 );
         }
      else {
         r0←v4212 = r←v4168;
         };
      };
SOURCE(1606, 81)
   return(r0←v4212);
   }

static word Rotate←P300(old←v4272, op←v4300, cw←v4328, ch←v4356, pp←v4384, vanilla←v4412)
   word old←v4272;
   W2 op←v4300;
   word cw←v4328;
   word ch←v4356;
   W2 pp←v4384;
   word vanilla←v4412;
   {
   register ptr gf←c16760 =  (ptr) &globalframe;
   word new←v4456;
   W2 cv←v7352;
   /* Rotate: */ 
SOURCE(1691, 478)
SOURCE(1691, 478)
   new←v4456 = 0;
SOURCE(1833, 36)
   (void) ConstantVector←P120((word) &cv←v7352, cw←v4328, ch←v4356, pp←v4384);
SOURCE(1871, 33)
   {
      W2 var←c15096;
      {
         word pd68;
         pd68 = (* (( (ptr) (* (( (ptr) gf←c16760)+64)/* var←c14776 */  ))+8) );
         (void) ( *( (fPt) ((*  (ptr) pd68 ))))((word) &var←c15096, cv←v7352, pd68);
         };
      {
         word pd69;
         pd69 = (* (( (ptr) (* (( (ptr) gf←c16760)+65)/* var←c14808 */  ))+22) );
         new←v4456 = (word) ( *( (fPt) ((*  (ptr) pd69 ))))(old←v4272, var←c15096, pd69);
         };
      };
SOURCE(1906, 216)
   {
      word var←c15128;
      var←c15128 = op←v4300.f0;
      if ((var←c15128 == 0)) {
SOURCE(1935, 150)
         {
            W6 v←v7396;
SOURCE(1937, 41)
            {
               W6 tn←v14040;
               tn←v14040.f0 = (*  (ptr) vanilla←v4412 );
               tn←v14040.f1 = (* (( (ptr) vanilla←v4412)+3) );
               tn←v14040.f2 = (* (( (ptr) vanilla←v4412)+1) );
               tn←v14040.f3 = (* (( (ptr) vanilla←v4412)+4) );
               tn←v14040.f4 = (* (( (ptr) vanilla←v4412)+2) );
               tn←v14040.f5 = (* (( (ptr) vanilla←v4412)+5) );
               v←v7396 = tn←v14040;
               };
SOURCE(1980, 103)
            {
               word var←c15192;
               {
                  word pd70;
                  word x71;
                  word pd72;
                  word x73;
                  pd70 = (* (( (ptr) (* (( (ptr) gf←c16760)+67)/* var←c15000 */  ))+17) );
                  pd72 = (* (( (ptr) (* (( (ptr) gf←c16760)+67)/* var←c15000 */  ))+17) );
                  *(float*)&var←c15192 = (
                     x71 = (word) ( *( (fPt) ((*  (ptr) pd70 ))))(v←v7396.f1, v←v7396.f0, pd70),  *(float*)&x71
                     ) - (
                     x73 = (word) ( *( (fPt) ((*  (ptr) pd72 ))))((* (( (ptr) old←v4272)+3) ), (*  (ptr) old←v4272 ), pd72),  *(float*)&x73
                     );
                  };
               {
                  word pd74;
                  pd74 = (* (( (ptr) (* (( (ptr) gf←c16760)+65)/* var←c14808 */  ))+21) );
                  new←v4456 = (word) ( *( (fPt) ((*  (ptr) pd74 ))))(new←v4456, var←c15192, pd74);
                  };
               };
            };
         }
      else {
         if ((var←c15128 == 1)) {
SOURCE(2097, 25)
            {
               word pd75;
               pd75 = (* (( (ptr) (* (( (ptr) gf←c16760)+65)/* var←c14808 */  ))+21) );
               new←v4456 = (word) ( *( (fPt) ((*  (ptr) pd75 ))))(new←v4456, op←v4300.f1, pd75);
               };
            }
         else {
SOURCE(2135, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(2142, 27)
   {
      word pd76;
      pd76 = (* (( (ptr) (* (( (ptr) gf←c16760)+65)/* var←c14808 */  ))+22) );
      new←v4456 = (word) ( *( (fPt) ((*  (ptr) pd76 ))))(new←v4456, cv←v7352, pd76);
      };
SOURCE(1691, 478)
   return(new←v4456);
   }

static word Shift←P360(old←v4516, dx←v4544, dy←v4572)
   word old←v4516;
   word dx←v4544;
   word dy←v4572;
   {
   register ptr gf←c16792 =  (ptr) &globalframe;
   word new←v4616;
   /* Shift: */ 
SOURCE(2175, 112)
SOURCE(2175, 112)
   new←v4616 = 0;
SOURCE(2254, 33)
   {
      W2 var←c15224;
      var←c15224.f0 = dx←v4544;
      var←c15224.f1 = dy←v4572;
      {
         word pd77;
         pd77 = (* (( (ptr) (* (( (ptr) gf←c16792)+65)/* var←c14808 */  ))+22) );
         new←v4616 = (word) ( *( (fPt) ((*  (ptr) pd77 ))))(old←v4516, var←c15224, pd77);
         };
      };
SOURCE(2175, 112)
   return(new←v4616);
   }

static word Align←P420(old←v4676, client←v4704, viewer←v4732, doX←v4760, doY←v4788, cw←v4816, ch←v4844, extremaProc←v4872, clientData←v4900, ageOp←v4928)
   word old←v4676;
   W3 client←v4704;
   W3 viewer←v4732;
   word doX←v4760;
   word doY←v4788;
   word cw←v4816;
   word ch←v4844;
   word extremaProc←v4872;
   word clientData←v4900;
   word ageOp←v4928;
   {
   W6 var←c16824;
   register ptr gf←c16856 =  (ptr) &globalframe;
   word new←v4988;
   /* declaration of var←c15256 skipped */ 
   W2 from←v7440;
   W2 to←v7468;
   /* Align: */ 
SOURCE(2293, 870)
   {
      word tmpAddr78;
      tmpAddr78 = (word) (( (ptr) &var←c16824)+4)/* var←c15256 */ ;
      (*  (ptr) tmpAddr78 ) = ( ((word)  (fPt) Blend←P1236) );
      (* (( (ptr) tmpAddr78) + 1) ) = 1;
      };
SOURCE(2293, 870)
   new←v4988 = 0;
SOURCE(2489, 26)
   from←v7440.f0 = (*  (ptr) &fc58 );
   from←v7440.f1 = (*  (ptr) &fc58 );
   to←v7468 = from←v7440;
SOURCE(2596, 324)
   {
      word var←c15320;
      var←c15320 = client←v4704.f0;
      if ((var←c15320 == 0)) {
SOURCE(2629, 28)
         {
            W2 var←c098;
            {
               W2 var←c15352;
               var←c15352.f0 = client←v4704.f1;
               var←c15352.f1 = client←v4704.f2;
               {
                  word pd79;
                  pd79 = (* (( (ptr) (* (( (ptr) gf←c16856)+65)/* var←c14808 */  ))+39) );
                  (void) ( *( (fPt) ((*  (ptr) pd79 ))))((word) &var←c098, old←v4676, var←c15352, pd79);
                  };
               };
            from←v7440 = var←c098;
            };
         }
      else {
         if ((var←c15320 == 1)) {
SOURCE(2671, 254)
            {
               word vmin←v7700;
               word vmax←v7728;
SOURCE(2691, 112)
               if ((0 != doX←v4760)) {
SOURCE(2705, 66)
                  {
                     W2 var←c15384;
                     (void) ViewLimitsOfImage2←P540((word) &var←c15384, old←v4676, extremaProc←v4872, clientData←v4900, 0);
                     vmax←v7728 = var←c15384.f1;
                     vmin←v7700 = var←c15384.f0;
                     };
SOURCE(2773, 30)
                  from←v7440.f0 = (word) Blend←P1236(client←v4704.f1, vmin←v7700, vmax←v7728, (word) (( (bPt) &var←c16824)+16)/* var←c15256 */ )
                  ;
                  };
SOURCE(2808, 112)
               if ((0 != doY←v4788)) {
SOURCE(2822, 66)
                  {
                     W2 var←c15416;
                     (void) ViewLimitsOfImage2←P540((word) &var←c15416, old←v4676, extremaProc←v4872, clientData←v4900, 1);
                     vmax←v7728 = var←c15416.f1;
                     vmin←v7700 = var←c15416.f0;
                     };
SOURCE(2890, 30)
                  from←v7440.f1 = (word) Blend←P1236(client←v4704.f2, vmin←v7700, vmax←v7728, (word) (( (bPt) &var←c16824)+16)/* var←c15256 */ )
                  ;
                  };
               };
            }
         else {
SOURCE(2939, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(2946, 79)
   {
      word var←c15448;
      var←c15448 = viewer←v4732.f0;
      if ((var←c15448 == 0)) {
SOURCE(2979, 11)
         to←v7468.f0 = viewer←v4732.f1;
         to←v7468.f1 = viewer←v4732.f2;
         }
      else {
         if ((var←c15448 == 1)) {
SOURCE(3006, 19)
            {
               word x80;
               word x81;
               *(float*)&to←v7468.f0 = (
                  x80 = viewer←v4732.f1,  *(float*)&x80
                  ) * (
                  x81 = cw←v4816,  *(float*)&x81
                  );
               };
            {
               word x82;
               word x83;
               *(float*)&to←v7468.f1 = (
                  x82 = viewer←v4732.f2,  *(float*)&x82
                  ) * (
                  x83 = ch←v4844,  *(float*)&x83
                  );
               };
            }
         else {
SOURCE(3041, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(3048, 29)
   if ((0 == doX←v4760)) {
SOURCE(3064, 13)
      to←v7468.f0 = from←v7440.f0;
      };
SOURCE(3079, 29)
   if ((0 == doY←v4788)) {
SOURCE(3095, 13)
      to←v7468.f1 = from←v7440.f1;
      };
SOURCE(3110, 53)
   {
      word var←c15480;
      {
         W2 var←c15512;
         {
            word pd84;
            pd84 = (* (( (ptr) (* (( (ptr) gf←c16856)+64)/* var←c14776 */  ))+8) );
            (void) ( *( (fPt) ((*  (ptr) pd84 ))))((word) &var←c15512, from←v7440, pd84);
            };
         {
            word pd85;
            pd85 = (* (( (ptr) (* (( (ptr) gf←c16856)+65)/* var←c14808 */  ))+22) );
            var←c15480 = (word) ( *( (fPt) ((*  (ptr) pd85 ))))(old←v4676, var←c15512, pd85);
            };
         };
      {
         word pd86;
         pd86 = (* (( (ptr) (* (( (ptr) gf←c16856)+65)/* var←c14808 */  ))+22) );
         new←v4988 = (word) ( *( (fPt) ((*  (ptr) pd86 ))))(var←c15480, to←v7468, pd86);
         };
      };
SOURCE(2293, 870)
   return(new←v4988);
   }

static word Blend←P1236(a←v7572, b0←v7600, b1←v7628, formal←c16888)
   word a←v7572;
   word b0←v7600;
   word b1←v7628;
   word formal←c16888;
   {
   word c←v7672;
   formal←c16888 = (formal←c16888 - 16);
   /* Blend: */ 
SOURCE(2517, 76)
SOURCE(2574, 19)
   {
      word x87;
      word x88;
      word x89;
      word x90;
      word x91;
      *(float*)&c←v7672 = (((
         x87 = (*  (ptr) &fc67 ),  *(float*)&x87
         ) - (
         x88 = a←v7572,  *(float*)&x88
         )) * (
         x89 = b0←v7600,  *(float*)&x89
         )) + ((
         x90 = a←v7572,  *(float*)&x90
         ) * (
         x91 = b1←v7628,  *(float*)&x91
         ));
      };
SOURCE(2517, 76)
   return(c←v7672);
   }

static void ViewLimitsOfImage←P480(formal←c0122, t←v5048, min←v5076, max←v5104, axis←v5132)
   word formal←c0122;
   word t←v5048;
   W2 min←v5076;
   W2 max←v5104;
   word axis←v5132;
   {
   register ptr gf←c16920 =  (ptr) &globalframe;
   word vmin←v5176;
   word vmax←v5204;
   /* ViewLimitsOfImage: */ 
SOURCE(3169, 229)
SOURCE(3266, 22)
   {
      word pd92;
      pd92 = (* (( (ptr) (* (( (ptr) gf←c16920)+65)/* var←c14808 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd92 ))))((word) &min←v5076, t←v5048, min←v5076, pd92);
      };
SOURCE(3290, 22)
   {
      word pd93;
      pd93 = (* (( (ptr) (* (( (ptr) gf←c16920)+65)/* var←c14808 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd93 ))))((word) &max←v5104, t←v5048, max←v5104, pd93);
      };
SOURCE(3314, 84)
   {
      word var←c15544;
      var←c15544 = axis←v5132;
      if ((var←c15544 == 0)) {
SOURCE(3337, 12)
         vmin←v5176 = min←v5076.f0;
SOURCE(3351, 12)
         vmax←v5204 = max←v5104.f0;
         }
      else {
         if ((var←c15544 == 1)) {
SOURCE(3372, 12)
            vmin←v5176 = min←v5076.f1;
SOURCE(3386, 12)
            vmax←v5204 = max←v5104.f1;
            }
         else {
SOURCE(3412, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0122 ) = vmin←v5176;
   (* (( (ptr) formal←c0122)+1) ) = vmax←v5204;
   return;
   }

static void ViewLimitsOfImage2←P540(formal←c0140, t←v5264, extremaProc←v5292, clientData←v5320, axis←v5348)
   word formal←c0140;
   word t←v5264;
   word extremaProc←v5292;
   word clientData←v5320;
   word axis←v5348;
   {
   register ptr gf←c16952 =  (ptr) &globalframe;
   word vmin←v5404;
   word vmax←v5432;
   W6 tn←v7772;
   W2 norm←v7800;
   W2 min←v7828;
   W2 max←v7856;
   /* ViewLimitsOfImage2: */ 
SOURCE(3423, 460)
SOURCE(3549, 36)
   {
      W6 tn←v13992;
      tn←v13992.f0 = (*  (ptr) t←v5264 );
      tn←v13992.f1 = (* (( (ptr) t←v5264)+3) );
      tn←v13992.f2 = (* (( (ptr) t←v5264)+1) );
      tn←v13992.f3 = (* (( (ptr) t←v5264)+4) );
      tn←v13992.f4 = (* (( (ptr) t←v5264)+2) );
      tn←v13992.f5 = (* (( (ptr) t←v5264)+5) );
      tn←v7772 = tn←v13992;
      };
SOURCE(3608, 79)
   {
      word var←c15608;
      var←c15608 = axis←v5348;
      if ((var←c15608 == 0)) {
SOURCE(3630, 25)
         norm←v7800.f0 = tn←v7772.f0;
         norm←v7800.f1 = tn←v7772.f2;
         }
      else {
         if ((var←c15608 == 1)) {
SOURCE(3662, 25)
            norm←v7800.f0 = tn←v7772.f1;
            norm←v7800.f1 = tn←v7772.f3;
            }
         else {
SOURCE(3700, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
SOURCE(3707, 42)
   {
      W4 var←c15640;
      (void) ( *( (fPt) ((*  (ptr) extremaProc←v5292 ))))((word) &var←c15640, clientData←v5320, norm←v7800, extremaProc←v5292);
      max←v7856 = (*  (W2Pt) (( (ptr) &var←c15640)+2) );
      min←v7828 = (*  (W2Pt) &var←c15640 );
      };
SOURCE(3751, 22)
   {
      word pd94;
      pd94 = (* (( (ptr) (* (( (ptr) gf←c16952)+65)/* var←c14808 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd94 ))))((word) &min←v7828, t←v5264, min←v7828, pd94);
      };
SOURCE(3775, 22)
   {
      word pd95;
      pd95 = (* (( (ptr) (* (( (ptr) gf←c16952)+65)/* var←c14808 */  ))+39) );
      (void) ( *( (fPt) ((*  (ptr) pd95 ))))((word) &max←v7856, t←v5264, max←v7856, pd95);
      };
SOURCE(3799, 84)
   {
      word var←c15672;
      var←c15672 = axis←v5348;
      if ((var←c15672 == 0)) {
SOURCE(3822, 12)
         vmin←v5404 = min←v7828.f0;
SOURCE(3836, 12)
         vmax←v5432 = max←v7856.f0;
         }
      else {
         if ((var←c15672 == 1)) {
SOURCE(3857, 12)
            vmin←v5404 = min←v7828.f1;
SOURCE(3871, 12)
            vmax←v5432 = max←v7856.f1;
            }
         else {
SOURCE(3897, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   /* removed tail goto */ 
   (*  (ptr) formal←c0140 ) = vmin←v5404;
   (* (( (ptr) formal←c0140)+1) ) = vmax←v5432;
   return;
   }

static word Round←P600(r←v5492)
   word r←v5492;
   {
   register ptr gf←c16984 =  (ptr) &globalframe;
   word rr←v5536;
   word i←v7900;
   /* Round: */ 
SOURCE(3908, 110)
SOURCE(3953, 22)
   {
      word pd96;
      pd96 = (* (( (ptr) (* (( (ptr) gf←c16984)+68)/* var←c15704 */  ))+6) );
      i←v7900 = (word) ( *( (fPt) ((*  (ptr) pd96 ))))(r←v5492, pd96);
      };
SOURCE(3977, 41)
   {
      word x97;
      word x98;
      float tf99;
      if (( (unsigned) ( (int)i←v7900 ==  (int)0) !=  (unsigned) ((
         x97 = r←v5492,  *(float*)&x97
         ) == (
         x98 = (*  (ptr) &fc58 ),  *(float*)&x98
         )))) {
         rr←v5536 = r←v5492;
         }
      else {
         rr←v5536 = (
            tf99 = (float)(int)i←v7900,  *(word*)&tf99
            );
         };
      };
SOURCE(3908, 110)
   return(rr←v5536);
   }

static word BoxScale←P660(old←v5596, from←v5624, to←v5652, uniformly←v5680, mayStretch←v5708, preferIntegerCoefficients←v5736)
   word old←v5596;
   W4 from←v5624;
   W4 to←v5652;
   word uniformly←v5680;
   word mayStretch←v5708;
   word preferIntegerCoefficients←v5736;
   {
   register ptr gf←c17016 =  (ptr) &globalframe;
   word new←v5780;
   word ndx←v7944;
   word ndy←v7972;
   word odx←v8000;
   word ody←v8028;
   word sx←v8056;
   word sy←v8084;
   /* BoxScale: */ 
SOURCE(4024, 665)
SOURCE(4024, 665)
   new←v5780 = 0;
SOURCE(4258, 70)
   {
      W2 var←c15736;
      {
         word x100;
         word x101;
         word x103;
         *(float*)&var←c15736.f0 =  - ((
            x100 = from←v5624.f0,  *(float*)&x100
            ) + ((
            x101 = from←v5624.f2,  *(float*)&x101
            ) / (
            x103 = (*  (ptr) &fc102 ),  *(float*)&x103
            )));
         };
      {
         word x104;
         word x105;
         word x106;
         *(float*)&var←c15736.f1 =  - ((
            x104 = from←v5624.f1,  *(float*)&x104
            ) + ((
            x105 = from←v5624.f3,  *(float*)&x105
            ) / (
            x106 = (*  (ptr) &fc102 ),  *(float*)&x106
            )));
         };
      {
         word pd107;
         pd107 = (* (( (ptr) (* (( (ptr) gf←c17016)+65)/* var←c14808 */  ))+22) );
         new←v5780 = (word) ( *( (fPt) ((*  (ptr) pd107 ))))(old←v5596, var←c15736, pd107);
         };
      };
SOURCE(4330, 10)
   ndx←v7944 = to←v5652.f2;
SOURCE(4342, 10)
   ndy←v7972 = to←v5652.f3;
SOURCE(4354, 12)
   odx←v8000 = from←v5624.f2;
SOURCE(4368, 12)
   ody←v8028 = from←v5624.f3;
SOURCE(4382, 42)
   {
      word x108;
      word x109;
      word x110;
      word x111;
      word x112;
      word x113;
      if (((
         x108 = ndx←v7944,  *(float*)&x108
         ) == (
         x109 = (*  (ptr) &fc58 ),  *(float*)&x109
         )) || ((
         x110 = odx←v8000,  *(float*)&x110
         ) == (
         x111 = (*  (ptr) &fc58 ),  *(float*)&x111
         ))) {
         sx←v8056 = (*  (ptr) &fc67 );
         }
      else {
         *(float*)&sx←v8056 = (
            x112 = ndx←v7944,  *(float*)&x112
            ) / (
            x113 = odx←v8000,  *(float*)&x113
            );
         };
      };
SOURCE(4426, 42)
   {
      word x114;
      word x115;
      word x116;
      word x117;
      word x118;
      word x119;
      if (((
         x114 = ndy←v7972,  *(float*)&x114
         ) == (
         x115 = (*  (ptr) &fc58 ),  *(float*)&x115
         )) || ((
         x116 = ody←v8028,  *(float*)&x116
         ) == (
         x117 = (*  (ptr) &fc58 ),  *(float*)&x117
         ))) {
         sy←v8084 = (*  (ptr) &fc67 );
         }
      else {
         *(float*)&sy←v8084 = (
            x118 = ndy←v7972,  *(float*)&x118
            ) / (
            x119 = ody←v8028,  *(float*)&x119
            );
         };
      };
SOURCE(4470, 57)
   if ((0 != uniformly←v5680) || (0 == mayStretch←v5708)) {
SOURCE(4506, 21)
      {
         word var←c15768;
         {
            word x120;
            float tf121;
            float tf122;
            word x123;
            float tf124;
            var←c15768 = (
               tf124 = FMIN((
                     x120 = sx←v8056,  *(float*)&x120
                     ), (
                     x123 = sy←v8084,  *(float*)&x123
                     ), tf121, tf122),  *(word*)&tf124
               );
            };
         sy←v8084 = var←c15768;
         sx←v8056 = var←c15768;
         };
      };
SOURCE(4529, 65)
   if ((0 != preferIntegerCoefficients←v5736)) {
SOURCE(4564, 14)
      sx←v8056 = (word) Round←P600(sx←v8056);
SOURCE(4580, 14)
      sy←v8084 = (word) Round←P600(sy←v8084);
      };
SOURCE(4597, 30)
   {
      W2 var←c15800;
      var←c15800.f0 = sx←v8056;
      var←c15800.f1 = sy←v8084;
      {
         word pd125;
         pd125 = (* (( (ptr) (* (( (ptr) gf←c17016)+65)/* var←c14808 */  ))+20) );
         new←v5780 = (word) ( *( (fPt) ((*  (ptr) pd125 ))))(new←v5780, var←c15800, pd125);
         };
      };
SOURCE(4629, 60)
   {
      W2 var←c15832;
      {
         word x126;
         word x127;
         word x128;
         *(float*)&var←c15832.f0 = (
            x126 = to←v5652.f0,  *(float*)&x126
            ) + ((
            x127 = to←v5652.f2,  *(float*)&x127
            ) / (
            x128 = (*  (ptr) &fc102 ),  *(float*)&x128
            ));
         };
      {
         word x129;
         word x130;
         word x131;
         *(float*)&var←c15832.f1 = (
            x129 = to←v5652.f1,  *(float*)&x129
            ) + ((
            x130 = to←v5652.f3,  *(float*)&x130
            ) / (
            x131 = (*  (ptr) &fc102 ),  *(float*)&x131
            ));
         };
      {
         word pd132;
         pd132 = (* (( (ptr) (* (( (ptr) gf←c17016)+65)/* var←c14808 */  ))+22) );
         new←v5780 = (word) ( *( (fPt) ((*  (ptr) pd132 ))))(new←v5780, var←c15832, pd132);
         };
      };
SOURCE(4024, 665)
   return(new←v5780);
   }

static word Fit←P720(old←v5840, uniformly←v5868, cw←v5896, ch←v5924, extremaProc←v5952, clientData←v5980, mayStretch←v6008, preferIntegerCoefficients←v6036)
   word old←v5840;
   word uniformly←v5868;
   word cw←v5896;
   word ch←v5924;
   word extremaProc←v5952;
   word clientData←v5980;
   word mayStretch←v6008;
   word preferIntegerCoefficients←v6036;
   {
   register ptr gf←c17048 =  (ptr) &globalframe;
   word new←v6092;
   W2 normX←v8128;
   W2 normY←v8156;
   W2 minX←v8184;
   W2 maxX←v8212;
   W2 minY←v8240;
   W2 maxY←v8268;
   W4 limits←v8296;
   W4 from←v8324;
   W4 to←v8352;
   /* Fit: */ 
SOURCE(4749, 706)
SOURCE(4749, 706)
   new←v6092 = 0;
SOURCE(4952, 25)
   (void) Norm←P780((word) &normX←v8128, old←v5840, 0);
SOURCE(4979, 25)
   (void) Norm←P780((word) &normY←v8156, old←v5840, 1);
SOURCE(5082, 45)
   {
      W4 var←c15864;
      (void) ( *( (fPt) ((*  (ptr) extremaProc←v5952 ))))((word) &var←c15864, clientData←v5980, normX←v8128, extremaProc←v5952)
      ;
      maxX←v8212 = (*  (W2Pt) (( (ptr) &var←c15864)+2) );
      minX←v8184 = (*  (W2Pt) &var←c15864 );
      };
SOURCE(5129, 45)
   {
      W4 var←c15896;
      (void) ( *( (fPt) ((*  (ptr) extremaProc←v5952 ))))((word) &var←c15896, clientData←v5980, normY←v8156, extremaProc←v5952)
      ;
      maxY←v8268 = (*  (W2Pt) (( (ptr) &var←c15896)+2) );
      minY←v8240 = (*  (W2Pt) &var←c15896 );
      };
SOURCE(5176, 66)
   {
      W2 var←c15928;
      (void) ViewLimitsOfImage←P480((word) &var←c15928, old←v5840, minX←v8184, maxX←v8212, 0);
      limits←v8296.f2 = var←c15928.f1;
      limits←v8296.f0 = var←c15928.f0;
      };
SOURCE(5244, 66)
   {
      W2 var←c15960;
      (void) ViewLimitsOfImage←P480((word) &var←c15960, old←v5840, minY←v8240, maxY←v8268, 1);
      limits←v8296.f3 = var←c15960.f1;
      limits←v8296.f1 = var←c15960.f0;
      };
SOURCE(5312, 41)
   {
      word pd133;
      pd133 = (* (( (ptr) (* (( (ptr) gf←c17048)+69)/* var←c15992 */  ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd133 ))))((word) &from←v8324, limits←v8296, pd133);
      };
SOURCE(5355, 19)
   to←v8352.f0 = (*  (ptr) &fc58 );
   to←v8352.f1 = (*  (ptr) &fc58 );
   to←v8352.f2 = cw←v5896;
   to←v8352.f3 = ch←v5924;
SOURCE(5376, 79)
   new←v6092 = (word) BoxScale←P660(old←v5840, from←v8324, to←v8352, uniformly←v5868, mayStretch←v6008, preferIntegerCoefficients←v6036)
   ;
SOURCE(4749, 706)
   return(new←v6092);
   }

static void Norm←P780(formal←c0196, t←v6152, axis←v6180)
   word formal←c0196;
   word t←v6152;
   word axis←v6180;
   {
   W2 norm←v6224;
   W6 tn←v8396;
   /* Norm: */ 
SOURCE(5461, 179)
SOURCE(5523, 36)
   {
      W6 tn←v13944;
      tn←v13944.f0 = (*  (ptr) t←v6152 );
      tn←v13944.f1 = (* (( (ptr) t←v6152)+3) );
      tn←v13944.f2 = (* (( (ptr) t←v6152)+1) );
      tn←v13944.f3 = (* (( (ptr) t←v6152)+4) );
      tn←v13944.f4 = (* (( (ptr) t←v6152)+2) );
      tn←v13944.f5 = (* (( (ptr) t←v6152)+5) );
      tn←v8396 = tn←v13944;
      };
SOURCE(5561, 79)
   {
      word var←c16056;
      var←c16056 = axis←v6180;
      if ((var←c16056 == 0)) {
SOURCE(5583, 25)
         norm←v6224.f0 = tn←v8396.f0;
         norm←v6224.f1 = tn←v8396.f2;
         }
      else {
         if ((var←c16056 == 1)) {
SOURCE(5615, 25)
            norm←v6224.f0 = tn←v8396.f1;
            norm←v6224.f1 = tn←v8396.f3;
            }
         else {
SOURCE(5653, 5)
            (void) XR←RaiseUnnamedError();
            };
         };
      };
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0196 ) = norm←v6224;
   return;
   }

static void BeVec←P840(formal←c0200, ra←v6284)
   word formal←c0200;
   word ra←v6284;
   {
   register ptr gf←c17080 =  (ptr) &globalframe;
   W2 var←c6340;
   /* BeVec: */ 
SOURCE(5664, 72)
SOURCE(5707, 29)
   var←c6340 = (*  (W2Pt) XR←Narrow(ra←v6284, (* (( (ptr) gf←c17080)+4) )) );
   /* removed tail goto */ 
   (*  (W2Pt) formal←c0200 ) = var←c6340;
   return;
   }

static word BeReal←P900(ra←v6400)
   word ra←v6400;
   {
   register ptr gf←c17112 =  (ptr) &globalframe;
   word var←c6456;
   /* BeReal: */ 
SOURCE(5739, 75)
SOURCE(5784, 30)
   return((*  (ptr) XR←Narrow(ra←v6400, (* (( (ptr) gf←c17112)+5) )) ));
   }

static void BeRect←P960(formal←c0206, ra←v6516)
   word formal←c0206;
   word ra←v6516;
   {
   register ptr gf←c17144 =  (ptr) &globalframe;
   W4 var←c6572;
   /* BeRect: */ 
SOURCE(5817, 75)
SOURCE(5862, 30)
   var←c6572 = (*  (W4Pt) XR←Narrow(ra←v6516, (* (( (ptr) gf←c17144)+6) )) );
   /* removed tail goto */ 
   (*  (W4Pt) formal←c0206 ) = var←c6572;
   return;
   }

static word BeBool←P1020(ra←v6632)
   word ra←v6632;
   {
   register ptr gf←c17176 =  (ptr) &globalframe;
   word var←c6688;
   /* BeBool: */ 
SOURCE(5895, 117)
SOURCE(5940, 72)
   {
      word var←c16280;
      var←c16280 = ra←v6632;
      if ((var←c16280 == (* (( (ptr) gf←c17176)+25) ))) {
         return(0);
         }
      else {
         if ((var←c16280 == (* (( (ptr) gf←c17176)+10) ))) {
            return(1);
            }
         else {
            return( (unsigned) (
               XR←RaiseUnnamedError(), 0
               ));
            };
         };
      };
   }

static word DoBSUserAction←P1080(old←v6748, input←v6776, cw←v6804, ch←v6832, pp←v6860, vanilla←v6888, previous←v6916, mayStretch←v6944, preferIntegerCoefficients←v6972, extremaProc←v7000, clientData←v7028)
   word old←v6748;
   word input←v6776;
   word cw←v6804;
   word ch←v6832;
   W2 pp←v6860;
   word vanilla←v6888;
   word previous←v6916;
   word mayStretch←v6944;
   word preferIntegerCoefficients←v6972;
   word extremaProc←v7000;
   word clientData←v7028;
   {
   register ptr gf←c17208 =  (ptr) &globalframe;
   word new←v7180;
   word age←v8476 = 0;
   /* DoBSUserAction: */ 
SOURCE(6016, 1874)
SOURCE(6016, 1874)
   new←v7180 = 0;
SOURCE(6315, 9)
   new←v7180 = old←v6748;
SOURCE(6326, 142)
   {
      word var←c16312;
      var←c16312 = (*  (ptr) input←v6776 );
      if ((var←c16312 == (* (( (ptr) gf←c17208)+11) ))) {
SOURCE(6361, 18)
         input←v6776 = (* (( (ptr) input←v6776)+1) );
         goto endif0134;
         };
      if ((var←c16312 == (* (( (ptr) gf←c17208)+12) ))) {
SOURCE(6392, 12)
         age←v8476 = 1;
SOURCE(6406, 18)
         input←v6776 = (* (( (ptr) input←v6776)+1) );
         goto endif0134;
         };
      if ((var←c16312 == (* (( (ptr) gf←c17208)+13) ))) {
SOURCE(6436, 12)
         age←v8476 = 1;
SOURCE(6450, 18)
         input←v6776 = (* (( (ptr) input←v6776)+1) );
         goto endif0134;
         };
      goto endif0134;
      endif0134: ;
      };
SOURCE(6488, 1402)
   {
      word var←c16344;
      var←c16344 = (*  (ptr) input←v6776 );
      if ((var←c16344 == (* (( (ptr) gf←c17208)+14) ))) {
SOURCE(6522, 70)
         {
            W2 vec←v8520;
SOURCE(6524, 34)
            (void) BeVec←P840((word) &vec←v8520, (*  (ptr) (* (( (ptr) input←v6776)+1) ) ));
SOURCE(6560, 30)
            new←v7180 = (word) Shift←P360(new←v7180, vec←v8520.f0, vec←v8520.f1);
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+15) ))) {
SOURCE(6605, 138)
         {
            W2 s←v8564;
SOURCE(6606, 32)
            (void) BeVec←P840((word) &s←v8564, (*  (ptr) (* (( (ptr) input←v6776)+1) ) ));
SOURCE(6640, 101)
            {
               W2 var←c16376;
               W3 var←c16408;
               W3 var←c0266;
               {
                  word tcp136;
                  word x137;
                  word x138;
                  W3 temp139;
                  if (((
                     x137 = s←v8564.f0,  *(float*)&x137
                     ) == (
                     x138 = s←v8564.f1,  *(float*)&x138
                     ))) {
                     var←c16376.f0 = 1;
                     var←c16376.f1 = s←v8564.f0;
                     (*  (W2Pt) &temp139 ) = var←c16376;
                     (* (( (ptr) &temp139) + 2) ) = 0;
                     tcp136 = (word) &temp139;
                     }
                  else {
                     var←c16408.f0 = 2;
                     var←c16408.f1 = s←v8564.f0;
                     var←c16408.f2 = s←v8564.f1;
                     tcp136 = (word) &var←c16408;
                     };
                  var←c0266 = (*  (W3Pt) tcp136 );
                  };
               new←v7180 = (word) Scale←P60(new←v7180, var←c0266, cw←v6804, ch←v6832, pp←v6860, vanilla←v6888
                  , mayStretch←v6944);
               };
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+16) ))) {
SOURCE(6761, 60)
         {
            W3 var←c0267;
            (*  (ptr) (word) &var←c0267 ) = 0;
            (*  (W2Pt) (( (ptr) (word) &var←c0267) + 1) ) = (*  (W2Pt) &dummy140 );
            new←v7180 = (word) Scale←P60(new←v7180, var←c0267, cw←v6804, ch←v6832, pp←v6860, vanilla←v6888
               , mayStretch←v6944);
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+17) ))) {
SOURCE(6834, 73)
         {
            word var←c16472;
            var←c16472 = (word) BeReal←P900((*  (ptr) ((* (( (ptr) input←v6776)+1) )) ));
            {
               W2 var←c16504;
               var←c16504.f0 = 1;
               var←c16504.f1 = var←c16472;
               new←v7180 = (word) Rotate←P300(new←v7180, var←c16504, cw←v6804, ch←v6832, pp←v6860, vanilla←v6888);
               };
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+18) ))) {
SOURCE(6925, 49)
         {
            W2 var←c0268;
            (*  (ptr) (word) &var←c0268 ) = 0;
            (* (( (ptr) (word) &var←c0268) + 1) ) = 0;
            new←v7180 = (word) Rotate←P300(new←v7180, var←c0268, cw←v6804, ch←v6832, pp←v6860, vanilla←v6888);
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+19) )) || (var←c16344 == (* (( (ptr) gf←c17208)+20) ))) {
SOURCE(7001, 201)
         {
            word uniformly←v8608;
SOURCE(7003, 98)
            {
               word var←c16568;
               var←c16568 = (*  (ptr) input←v6776 );
               if ((var←c16568 == (* (( (ptr) gf←c17208)+20) ))) {
                  uniformly←v8608 = 1;
                  }
               else {
                  if ((var←c16568 == (* (( (ptr) gf←c17208)+19) ))) {
                     uniformly←v8608 = 0;
                     }
                  else {
                     uniformly←v8608 =  (unsigned) (
                        XR←RaiseUnnamedError(), 0
                        );
                     };
                  };
               };
SOURCE(7103, 97)
            new←v7180 = (word) Fit←P720(new←v7180, uniformly←v8608, cw←v6804, ch←v6832, extremaProc←v7000, clientData←v7028
               , mayStretch←v6944, preferIntegerCoefficients←v6972);
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+21) ))) {
SOURCE(7217, 13)
         new←v7180 = vanilla←v6888;
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+22) ))) {
SOURCE(7247, 385)
         {
            W2 client←v8652;
            W2 viewer←v8680;
            word doX←v8708;
            word doY←v8736;
SOURCE(7249, 37)
            (void) BeVec←P840((word) &client←v8652, (*  (ptr) (* (( (ptr) input←v6776)+1) ) ));
SOURCE(7288, 42)
            (void) BeVec←P840((word) &viewer←v8680, (*  (ptr) (* (( (ptr) (* (( (ptr) input←v6776)+1) ))+1) ) ));
SOURCE(7332, 46)
            doX←v8708 = (word) BeBool←P1020((*  (ptr) ((* (( (ptr) (* (( (ptr) (* (( (ptr) input←v6776)+1) ))+1) ))+1) )) ));
SOURCE(7380, 51)
            doY←v8736 = (word) BeBool←P1020((*  (ptr) ((* (( (ptr) (* (( (ptr) (* (( (ptr) (* (( (ptr) input←v6776)+1) ))+1) ))+1) ))+1)
                )) ));
SOURCE(7433, 199)
            {
               W3 var←c16600;
               W3 var←c16632;
               var←c16600.f0 = 1;
               var←c16600.f1 = client←v8652.f0;
               var←c16600.f2 = client←v8652.f1;
               var←c16632.f0 = 1;
               var←c16632.f1 = viewer←v8680.f0;
               var←c16632.f2 = viewer←v8680.f1;
               new←v7180 = (word) Align←P420(new←v7180, var←c16600, var←c16632, doX←v8708, doY←v8736, cw←v6804
                  , ch←v6832, extremaProc←v7000, clientData←v7028, age←v8476);
               };
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+23) ))) {
SOURCE(7648, 216)
         {
            W4 from←v8780;
            W4 to←v8808;
            word uniformly←v8836;
SOURCE(7650, 37)
            (void) BeRect←P960((word) &from←v8780, (*  (ptr) (* (( (ptr) input←v6776)+1) ) ));
SOURCE(7689, 40)
            (void) BeRect←P960((word) &to←v8808, (*  (ptr) (* (( (ptr) (* (( (ptr) input←v6776)+1) ))+1) ) ));
SOURCE(7731, 52)
            uniformly←v8836 = (word) BeBool←P1020((*  (ptr) ((* (( (ptr) (* (( (ptr) (* (( (ptr) input←v6776)+1) ))+1) ))+1) )) ));
SOURCE(7785, 79)
            new←v7180 = (word) BoxScale←P660(new←v7180, from←v8780, to←v8808, uniformly←v8836, mayStretch←v6944, preferIntegerCoefficients←v6972)
            ;
            };
         goto endif0135;
         };
      if ((var←c16344 == (* (( (ptr) gf←c17208)+24) ))) {
SOURCE(7876, 14)
         new←v7180 = previous←v6916;
         goto endif0135;
         };
SOURCE(7903, 5)
      (void) XR←RaiseUnnamedError();
      goto endif0135;
      endif0135: ;
      };
SOURCE(6016, 1874)
   return(new←v7180);
   }

/* file: BiScrollersTransformsImpl, module: BiScrollersTransformsImpl, compiled at: March 19, 1993 5:48:04 pm PST */ 
extern void XR←install←BiScrollersTransformsImpl() {
   XR←FillWords(&dummy140, 2, 0);
   NoName←Q1836();
   }
extern void XR←run←BiScrollersTransformsImpl() { XR←Start(&globalframe); }