/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: August 19, 1993 12:22:31 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: XlBitmapImagerImpl, module: XlBitmapImagerImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [1289894311,107842231] XlBitmapImagerImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2;} W3;
typedef W3 *W3Pt;
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
#define SOURCE(p, l) /* source p, l */
static float fc27 = 72.0;
static void NoName←Q2688();
static void XlBitmapImagerImpl←P0();
static void RegisterContextCreator←P60();
static word InternalCreateContext←P120();
static void DebugSwitchBufferTRUE←P180();
static void DebugSwitchBufferFALSE←P240();
static word AssertDevice←P300();
static word CreateContext←P360();
static void IPostIntercept←P480();
static void IPreIntercept←P540();
static void ModifySetColor←P600();
static void ModifySetPriority←P660();
static void ModifySetHalftoneProperties←P720();
static void ModifyMaskBoxes←P780();
static void ModifyMaskRegion←P840();
static void ModifyMaskBitmap←P900();
static void ModifyMaskRawBitmaps←P960();
static void ModifyDrawBitmap←P1020();
static void ModifyMaskChar←P1080();
static void ModifyMoveBox←P1140();
static void ModifySwitchBuffer1←P1200();
static void ModifySwitchBuffer2←P1260();
static word ModifyGetBufferColorOperator←P1320();
static void ModifyAccessBuffer←P1380();
static word DitherContextCreator←P1440();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\241\011\366\176\300\127\130\105\301\100\274\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\003\016\000"};
static struct {unsigned f; char r[44];} string3 = {2752556, "\260\006\005\146\151\162\163\164\257\300\114\342\071\247\300\006\155\212\267\100\200\005\004\162\145\163\164\214\257\300\114\342\071\247\300\006\155\212\267\100\200\261\000"};
static struct {unsigned f; char r[4];} string4 = {131074, "\003\002\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\114\342\071\247\300\006\155\212\267\101\020\000\000"};
static struct {unsigned f; char r[4];} string6 = {131074, "\004\005\000"};
static struct {unsigned f; char r[4];} string7 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string8 = {65537, "\001\000\000"};
static struct {unsigned f; char r[44];} string9 = {2752556, "\260\006\005\146\151\162\163\164\257\300\265\371\352\317\300\364\125\216\164\100\164\005\004\162\145\163\164\214\257\300\265\371\352\317\300\364\125\216\164\100\164\261\000"};
static struct {unsigned f; char r[4];} string10 = {131074, "\003\001\000"};
static struct {unsigned f; char r[8];} string11 = {393224, "Bitmap\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\114\342\071\247\300\006\155\212\267\100\164\000\000"};
static struct {unsigned f; char r[12];} string13 = {720907, "\006\004 \001(\001,\001@X\001"};
static struct {unsigned f; char r[16];} string14 = {851984, "\257\300\353\300\316\013\300\313\011\345\022\100\150\000\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\241\011\366\176\300\127\130\105\301\100\150\000\000"};
static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\251\115\200\307\300\172\122\133\217\100\150\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\067\246\211\216\300\354\224\134\067\100\150\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\256\061\211\265\300\052\170\134\271\100\150\000\000"};
static struct {unsigned f; char r[24];} string19 = {1441816, "\211\012\011\102\151\164\155\141\160\122\145\160\300\256\061\211\265\300\052\170\134\271\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\340\211\223\046\300\245\333\237\361\100\214\000\000"};
static struct {unsigned f; char r[4];} string21 = {196611, "\004a\201"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\037\364\120\230\300\276\204\331\043\100\150\000\000"};
static struct {
   word f0[9]; word f9; word f10[13]; word f23; 
   word f24; word f25; word f26; word f27; 
   word f28; word f29; word f30; word f31; 
   word f32; word f33; word f34; word f35; 
   word f36; word f37; word f38; word f39; 
   word f40; word f41; word f42; word f43; 
   word f44; word f45; word f46; word f47; 
   word f48; word f49; word f50; word f51; 
   word f52; word f53; word f54; word f55; 
   word f56; word f57; word f58; word f59; 
   word f60; word f61; word f62; word f63; 
   word f64; word f65; word f66; word f67; 
   word f68; word f69; word f70[7]; 
   } globalframe = {
   {0}, (word) 1, {0}, (word) DitherContextCreator←P1440, 
   0, (word) ModifyAccessBuffer←P1380, 0, (word) ModifyGetBufferColorOperator←P1320, 
   0, (word) ModifySwitchBuffer2←P1260, 0, (word) ModifySwitchBuffer1←P1200, 
   0, (word) ModifyMoveBox←P1140, 0, (word) ModifyMaskChar←P1080, 
   0, (word) ModifyDrawBitmap←P1020, 0, (word) ModifyMaskRawBitmaps←P960, 
   0, (word) ModifyMaskBitmap←P900, 0, (word) ModifyMaskRegion←P840, 
   0, (word) ModifyMaskBoxes←P780, 0, (word) ModifySetHalftoneProperties←P720, 
   0, (word) ModifySetPriority←P660, 0, (word) ModifySetColor←P600, 
   0, (word) IPreIntercept←P540, 0, (word) IPostIntercept←P480, 
   0, (word) CreateContext←P360, 0, (word) AssertDevice←P300, 
   0, (word) DebugSwitchBufferFALSE←P240, 0, (word) DebugSwitchBufferTRUE←P180, 
   0, (word) InternalCreateContext←P120, 0, (word) RegisterContextCreator←P60, 
   0, (word) XlBitmapImagerImpl←P0, {0}
   };

static void NoName←Q2688()
   {
   register ptr gf←c0161 =  (ptr) &globalframe;
   word var←c24252;
   (* (( (ptr) gf←c0161)+13) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0161)+16) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c0161)+17) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c0161)+19) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (* (( (ptr) gf←c0161)+20) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (*  (ptr) (( (bPt) gf←c0161)+88) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0161)+19) ), (word) &string11);
   (void) XR←DeclareGlobalFrame((word) "XlBitmapImagerImpl", &globalframe, (word) XR←GetTypeIndex((word) &string12, 0, (word) &string13)
      , (word) (( (bPt) gf←c0161)+276)/* var←c23292 */ );
   var←c24252 = (word) XR←ImportInterface((word) "ImagerBitmapContext", (word) XR←GetTypeIndexS((word) (&string14)), 8);
   (* (( (ptr) gf←c0161)+73)/* var←c23676 */  ) = var←c24252;
   (void) XR←ImportProcS(var←c24252, 524802);
   (void) XR←ImportProcS(var←c24252, 69206278);
   var←c24252 = (word) XR←ImportInterface((word) "ImagerDevice", (word) XR←GetTypeIndexS((word) (&string15)), 2);
   (* (( (ptr) gf←c0161)+72)/* var←c23548 */  ) = var←c24252;
   (void) XR←ImportProcS(var←c24252, 68157444);
   var←c24252 = (word) XR←ImportInterface((word) "ImagerDitherContext", (word) XR←GetTypeIndexS((word) (&string16)), 9);
   (* (( (ptr) gf←c0161)+74)/* var←c24188 */  ) = var←c24252;
   (void) XR←ImportProcS(var←c24252, 524802);
   (void) XR←ImportProcS(var←c24252, 525570);
   (void) XR←ImportProcS(var←c24252, 68944133);
   var←c24252 = (word) XR←ImportInterface((word) "ImagerRaster", (word) XR←GetTypeIndexS((word) (&string17)), 13);
   (* (( (ptr) gf←c0161)+71)/* var←c23484 */  ) = var←c24252;
   (void) XR←ImportProcS(var←c24252, 67635970);
   (void) XR←ImportProcS(var←c24252, 67373569);
   var←c24252 = (word) XR←ExportInterface((word) "XlBitmap", (word) XR←GetTypeIndexS((word) (&string18)), 14);
   (* (( (ptr) gf←c0161)+75)/* var←c24284 */  ) = var←c24252;
   (void) XR←ExportType((word) "BitmapRep", (word) XR←GetTypeIndexS((word) (&string19)), (word) XR←GetTypeIndex((word) &string20, 0, (word) &string21)
      );
   (void) XR←ExportProcS(var←c24252, (word) (( (bPt) gf←c0161)+228)/* var←c23100 */ , 67635202, (word) "CreateContext");
   var←c24252 = (word) XR←ExportInterface((word) "XlBitmapFriends", (word) XR←GetTypeIndexS((word) (&string22)), 1);
   (* (( (ptr) gf←c0161)+76)/* var←c24316 */  ) = var←c24252;
   (void) XR←ExportProcS(var←c24252, (word) (( (bPt) gf←c0161)+268)/* var←c23260 */ , 524290, (word) "RegisterContextCreator")
   ;
   }

static void XlBitmapImagerImpl←P0(formal←c042, formal←c039)
   word formal←c042;
   word formal←c039;
   {
   register ptr gf←c24348 =  (ptr) &globalframe;
   /* XlBitmapImagerImpl: */ 
SOURCE(244, 8692)
   /* moved to installation proc */ 
SOURCE(7327, 513)
   {
      word var←c23324;
      var←c23324 = XR←NewObject(60, (* (( (ptr) gf←c24348)+13) ));
      (*  (ptr) var←c23324 ) = (word) (( (bPt) gf←c24348)+204)/* var←c23004 */ ;
      (* (( (ptr) var←c23324)+1) ) = (word) (( (bPt) gf←c24348)+196)/* var←c22972 */ ;
      (* (( (ptr) var←c23324)+2) ) = (word) (( (bPt) gf←c24348)+188)/* var←c22940 */ ;
      (* (( (ptr) var←c23324)+3) ) = (word) (( (bPt) gf←c24348)+180)/* var←c22908 */ ;
      (* (( (ptr) var←c23324)+4) ) = (word) (( (bPt) gf←c24348)+172)/* var←c22876 */ ;
      (* (( (ptr) var←c23324)+5) ) = (word) (( (bPt) gf←c24348)+164)/* var←c22844 */ ;
      (* (( (ptr) var←c23324)+6) ) = XR←CheckProc(0);
      (* (( (ptr) var←c23324)+7) ) = (word) (( (bPt) gf←c24348)+156)/* var←c22812 */ ;
      (* (( (ptr) var←c23324)+8) ) = (word) (( (bPt) gf←c24348)+148)/* var←c22780 */ ;
      (* (( (ptr) var←c23324)+9) ) = (word) (( (bPt) gf←c24348)+140)/* var←c22748 */ ;
      (* (( (ptr) var←c23324)+10) ) = (word) (( (bPt) gf←c24348)+132)/* var←c22716 */ ;
      (* (( (ptr) var←c23324)+11) ) = (word) (( (bPt) gf←c24348)+124)/* var←c22684 */ ;
      (* (( (ptr) var←c23324)+12) ) = (word) (( (bPt) gf←c24348)+108)/* var←c22620 */ ;
      (* (( (ptr) var←c23324)+13) ) = (word) (( (bPt) gf←c24348)+100)/* var←c22588 */ ;
      (* (( (ptr) gf←c24348)+10)/* modifiedDeviceClass1←v4064 */  ) = var←c23324;
      };
SOURCE(7843, 513)
   {
      word var←c23356;
      var←c23356 = XR←NewObject(60, (* (( (ptr) gf←c24348)+13) ));
      (*  (ptr) var←c23356 ) = (word) (( (bPt) gf←c24348)+204)/* var←c23004 */ ;
      (* (( (ptr) var←c23356)+1) ) = (word) (( (bPt) gf←c24348)+196)/* var←c22972 */ ;
      (* (( (ptr) var←c23356)+2) ) = (word) (( (bPt) gf←c24348)+188)/* var←c22940 */ ;
      (* (( (ptr) var←c23356)+3) ) = (word) (( (bPt) gf←c24348)+180)/* var←c22908 */ ;
      (* (( (ptr) var←c23356)+4) ) = (word) (( (bPt) gf←c24348)+172)/* var←c22876 */ ;
      (* (( (ptr) var←c23356)+5) ) = (word) (( (bPt) gf←c24348)+164)/* var←c22844 */ ;
      (* (( (ptr) var←c23356)+6) ) = XR←CheckProc(0);
      (* (( (ptr) var←c23356)+7) ) = (word) (( (bPt) gf←c24348)+156)/* var←c22812 */ ;
      (* (( (ptr) var←c23356)+8) ) = (word) (( (bPt) gf←c24348)+148)/* var←c22780 */ ;
      (* (( (ptr) var←c23356)+9) ) = (word) (( (bPt) gf←c24348)+140)/* var←c22748 */ ;
      (* (( (ptr) var←c23356)+10) ) = (word) (( (bPt) gf←c24348)+132)/* var←c22716 */ ;
      (* (( (ptr) var←c23356)+11) ) = (word) (( (bPt) gf←c24348)+116)/* var←c22652 */ ;
      (* (( (ptr) var←c23356)+12) ) = (word) (( (bPt) gf←c24348)+108)/* var←c22620 */ ;
      (* (( (ptr) var←c23356)+13) ) = (word) (( (bPt) gf←c24348)+100)/* var←c22588 */ ;
      (* (( (ptr) gf←c24348)+11)/* modifiedDeviceClass2←v4092 */  ) = var←c23356;
      };
SOURCE(8791, 47)
   (void) RegisterContextCreator←P60(8, (word) (( (bPt) gf←c24348)+92)/* var←c22556 */ );
SOURCE(8840, 47)
   (void) RegisterContextCreator←P60(4, (word) (( (bPt) gf←c24348)+92)/* var←c22556 */ );
SOURCE(8889, 47)
   (void) RegisterContextCreator←P60(2, (word) (( (bPt) gf←c24348)+92)/* var←c22556 */ );
   }

static void RegisterContextCreator←P60(bpp←v4356, creator←v4384)
   word bpp←v4356;
   word creator←v4384;
   {
   register ptr gf←c24380 =  (ptr) &globalframe;
   /* RegisterContextCreator: */ 
SOURCE(957, 143)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c24380)+16)/* LOCK←v3000 */ ));
SOURCE(1039, 61)
   if ((creator←v4384 != 0)) {
SOURCE(1059, 41)
      {
         word var←c23388;
         var←c23388 = XR←NewObject(12, (* (( (ptr) gf←c24380)+16) ));
         (*  (ptr) var←c23388 ) = bpp←v4356;
         (* (( (ptr) var←c23388)+1) ) = XR←CheckProc(creator←v4384);
         (* (( (ptr) var←c23388)+2) ) = (* (( (ptr) gf←c24380)+8)/* creators←v3308 */  );
         (* (( (ptr) gf←c24380)+8)/* creators←v3308 */  ) = var←c23388;
         };
      };
SOURCE(957, 143)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c24380)+16)/* LOCK←v3000 */ ));
   return;
   }

static word InternalCreateContext←P120(sm←v4444, surfaceUnitsPerPixel←v4472, extras←v4500)
   word sm←v4444;
   word surfaceUnitsPerPixel←v4472;
   word extras←v4500;
   {
   register ptr gf←c24412 =  (ptr) &globalframe;
   word var←c4560;
   word bpp←v7188;
   /* InternalCreateContext: */ 
SOURCE(1106, 368)
SOURCE(1246, 67)
   {
      word map←v22508;
      map←v22508 = sm←v4444;
      bpp←v7188 = (* (( (ptr) map←v22508)+5) );
      };
SOURCE(1315, 159)
   {
      register word l←v7232;
      l←v7232 = (* (( (ptr) gf←c24412)+8)/* creators←v3308 */  );
      lab←L100004: ;
      if ((l←v7232 != 0)) {
         }
      else {
         goto lab←L100001;
         };
SOURCE(1384, 90)
      if (( (int)(*  (ptr) l←v7232 ) ==  (int)bpp←v7188)) {
SOURCE(1408, 66)
         {
            word pd23;
            pd23 = (* (( (ptr) l←v7232)+1) );
            return((word) ( *( (fPt) ((*  (ptr) pd23 ))))(sm←v4444, surfaceUnitsPerPixel←v4472, extras←v4500, pd23));
            };
         };
      l←v7232 = (* (( (ptr) l←v7232)+2) );
      goto lab←L100004;
      lab←L100001: ;
      };
SOURCE(1477, 5)
   (void) XR←RaiseUnnamedError();
   }

static void DebugSwitchBufferTRUE←P180()
   {
   register ptr gf←c24444 =  (ptr) &globalframe;
   /* DebugSwitchBufferTRUE: */ 
SOURCE(1518, 56)
SOURCE(1552, 22)
   (* (( (ptr) gf←c24444)+9)/* hasSwitchBuffer←v3392 */  ) = 1;
   }

static void DebugSwitchBufferFALSE←P240()
   {
   register ptr gf←c24476 =  (ptr) &globalframe;
   /* DebugSwitchBufferFALSE: */ 
SOURCE(1577, 58)
SOURCE(1612, 23)
   (* (( (ptr) gf←c24476)+9)/* hasSwitchBuffer←v3392 */  ) = 0;
   }

static word AssertDevice←P300(b←v4652, context←v4680)
   word b←v4652;
   word context←v4680;
   {
   register ptr gf←c24508 =  (ptr) &globalframe;
   word var←c4724;
   word iState←v7360;
   word iData←v7388;
   W3 worksState←v7416;
   /* AssertDevice: */ 
SOURCE(1639, 636)
SOURCE(1724, 92)
   {
      word pd24;
      pd24 = (* (( (ptr) (* (( (ptr) gf←c24508)+71)/* var←c23484 */  ))+14) );
      iState←v7360 = (word) ( *( (fPt) ((*  (ptr) pd24 ))))(context←v4680, pd24);
      };
SOURCE(1818, 95)
   iData←v7388 = XR←NewObject(12, (* (( (ptr) gf←c24508)+17) ));
   (*  (ptr) iData←v7388 ) = (*  (ptr) iState←v7360 );
   (* (( (ptr) iData←v7388)+2) ) = b←v4652;
SOURCE(1915, 62)
   worksState←v7416 = (*  (W3Pt) (( (ptr) (*  (ptr) iState←v7360 ))+1) );
SOURCE(1979, 187)
   {
      word pd25;
      pd25 = (* (( (ptr) (* (( (ptr) gf←c24508)+72)/* var←c23548 */  ))+4) );
      (*  (ptr) iState←v7360 ) = (word) ( *( (fPt) ((*  (ptr) pd25 ))))( ( (0 != (* (( (ptr) gf←c24508)+9)/* hasSwitchBuffer←v3392 */  )) ? (* (
            ( (ptr) gf←c24508)+10)/* modifiedDeviceClass1←v4064 */  ) : (* (( (ptr) gf←c24508)+11)/* modifiedDeviceClass2←v4092 */  ) ) , (* (
            ( (ptr) (*  (ptr) iState←v7360 ))+5) ), (* (( (ptr) (*  (ptr) iState←v7360 ))+6) ), iData←v7388, pd25);
      };
SOURCE(2168, 37)
   (*  (W3Pt) (( (ptr) (*  (ptr) iState←v7360 ))+1) ) = worksState←v7416;
SOURCE(2207, 68)
   {
      word pd26;
      pd26 = (* (( (ptr) (* (( (ptr) gf←c24508)+71)/* var←c23484 */  ))+15) );
      return((word) ( *( (fPt) ((*  (ptr) pd26 ))))(iState←v7360, context←v4680, pd26));
      };
   }

static word CreateContext←P360(bitmap←v4784, surfaceUnitsPerPixel←v4812)
   word bitmap←v4784;
   word surfaceUnitsPerPixel←v4812;
   {
   register ptr gf←c24540 =  (ptr) &globalframe;
   word context←v4856;
   word bpp←v7460;
   /* CreateContext: */ 
SOURCE(2281, 637)
SOURCE(2281, 637)
   context←v4856 = 0;
SOURCE(2394, 74)
   {
      word map←v22460;
      map←v22460 = (*  (ptr) bitmap←v4784 );
      bpp←v7460 = (* (( (ptr) map←v22460)+5) );
      };
SOURCE(2470, 404)
   if ((bpp←v7460 == 1)) {
SOURCE(2489, 218)
      {
         W2 var←c23644;
         var←c23644.f0 = (*  (ptr) &fc27 );
         var←c23644.f1 = (*  (ptr) &fc27 );
         {
            word pd28;
            pd28 = (* (( (ptr) (* (( (ptr) gf←c24540)+73)/* var←c23676 */  ))+5) );
            context←v4856 = (word) ( *( (fPt) ((*  (ptr) pd28 ))))((*  (W2Pt) (( (ptr) bitmap←v4784)+1) ), 13, var←c23644, surfaceUnitsPerPixel←v4812, 1, (* (
                  ( (ptr) gf←c24540)+22) ), pd28);
            };
         };
SOURCE(2709, 66)
      {
         word pd29;
         pd29 = (* (( (ptr) (* (( (ptr) gf←c24540)+73)/* var←c23676 */  ))+6) );
         (void) ( *( (fPt) ((*  (ptr) pd29 ))))(context←v4856, (*  (ptr) bitmap←v4784 ), pd29);
         };
      }
   else {
SOURCE(2786, 88)
      context←v4856 = (word) InternalCreateContext←P120((*  (ptr) bitmap←v4784 ), surfaceUnitsPerPixel←v4812, (* (( (ptr) bitmap←v4784)+13)
          ));
      };
SOURCE(2879, 39)
   context←v4856 = (word) AssertDevice←P300(bitmap←v4784, context←v4856);
SOURCE(2281, 637)
   return(context←v4856);
   }

static void IPostIntercept←P480(iData←v5004, box←v5032)
   word iData←v5004;
   W4 box←v5032;
   {
   /* IPostIntercept: */ 
SOURCE(3177, 112)
SOURCE(3238, 51)
   if ((0 == (* (( (ptr) iData←v5004)+1) ))) {
SOURCE(3262, 27)
      {
         word b←v22024;
         W4 box←v22052;
         word var←c23708;
         W4 outer←v22364;
         b←v22024 = (* (( (ptr) iData←v5004)+2) );
         box←v22052 = box←v5032;
SOURCE(2979, 183)
         outer←v22364 = (*  (W4Pt) (( (ptr) b←v22024)+9) );
         if ( (  ( ( (int)box←v22052.f0 >=  (int)outer←v22364.f0) ? ( (int)box←v22052.f1 >=  (int)outer←v22364.f1) : 0 )  ? ( (int)box←v22052.f2 <=  (int)outer←v22364.f2) : 0 ) ) {
            var←c23708 =  (unsigned) ( (int)box←v22052.f3 <=  (int)outer←v22364.f3);
            }
         else {
            var←c23708 =  (unsigned) 0;
            };
         if ((0 == var←c23708)) {
SOURCE(3035, 127)
            {
               register word postList←v7504;
               postList←v7504 = (* (( (ptr) b←v22024)+7) );
               lab←L100010: ;
               if ((postList←v7504 != 0)) {
                  }
               else {
                  goto lab←L100007;
                  };
SOURCE(3110, 52)
               {
                  word pd30;
                  pd30 = (*  (ptr) postList←v7504 );
                  (void) ( *( (fPt) ((*  (ptr) pd30 ))))(box←v22052, (* (( (ptr) postList←v7504)+1) ), 0, pd30);
                  };
               postList←v7504 = (* (( (ptr) postList←v7504)+2) );
               goto lab←L100010;
               lab←L100007: ;
               };
            };
         };
      };
   }

static void IPreIntercept←P540(iData←v5092, box←v5120)
   word iData←v5092;
   W4 box←v5120;
   {
   /* IPreIntercept: */ 
SOURCE(3295, 211)
SOURCE(3355, 151)
   if ((0 == (* (( (ptr) iData←v5092)+1) ))) {
SOURCE(3380, 126)
      {
         register word preList←v7532;
         preList←v7532 = (* (( (ptr) (* (( (ptr) iData←v5092)+2) ))+8) );
         lab←L100014: ;
         if ((preList←v7532 != 0)) {
            }
         else {
            goto lab←L100011;
            };
SOURCE(3457, 49)
         {
            word pd31;
            pd31 = (*  (ptr) preList←v7532 );
            (void) ( *( (fPt) ((*  (ptr) pd31 ))))(box←v5120, (* (( (ptr) preList←v7532)+1) ), 1, pd31);
            };
         preList←v7532 = (* (( (ptr) preList←v7532)+2) );
         goto lab←L100014;
         lab←L100011: ;
         };
      };
   }

static void ModifySetColor←P600(device←v5292, color←v5320, viewToDevice←v5348)
   word device←v5292;
   word color←v5320;
   word viewToDevice←v5348;
   {
   register ptr gf←c24572 =  (ptr) &globalframe;
   word iData←v7576;
   /* ModifySetColor: */ 
SOURCE(3645, 192)
SOURCE(3731, 42)
   iData←v7576 = XR←Narrow((* (( (ptr) device←v5292)+7) ), (* (( (ptr) gf←c24572)+17) ));
SOURCE(3775, 62)
   {
      word pd32;
      pd32 = (*  (ptr) (* (( (ptr) (*  (ptr) iData←v7576 ))+4) ) );
      (void) ( *( (fPt) ((*  (ptr) pd32 ))))((*  (ptr) iData←v7576 ), color←v5320, viewToDevice←v5348, pd32);
      };
   }

static void ModifySetPriority←P660(device←v5408, priorityImportant←v5436)
   word device←v5408;
   word priorityImportant←v5436;
   {
   register ptr gf←c24604 =  (ptr) &globalframe;
   word iData←v7620;
   /* ModifySetPriority: */ 
SOURCE(3843, 177)
SOURCE(3913, 42)
   iData←v7620 = XR←Narrow((* (( (ptr) device←v5408)+7) ), (* (( (ptr) gf←c24604)+17) ));
SOURCE(3957, 63)
   {
      word pd33;
      pd33 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7620 ))+4) ))+1) );
      (void) ( *( (fPt) ((*  (ptr) pd33 ))))((*  (ptr) iData←v7620 ), priorityImportant←v5436, pd33);
      };
   }

static void ModifySetHalftoneProperties←P720(device←v5496, halftoneProperties←v5524)
   word device←v5496;
   word halftoneProperties←v5524;
   {
   register ptr gf←c24636 =  (ptr) &globalframe;
   word iData←v7664;
   /* ModifySetHalftoneProperties: */ 
SOURCE(4026, 288)
SOURCE(4133, 42)
   iData←v7664 = XR←Narrow((* (( (ptr) device←v5496)+7) ), (* (( (ptr) gf←c24636)+17) ));
SOURCE(4177, 61)
   if (((* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7664 ))+4) ))+2) ) == 0)) {
SOURCE(4232, 6)
      return;
      };
SOURCE(4240, 74)
   {
      word pd34;
      pd34 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7664 ))+4) ))+2) );
      (void) ( *( (fPt) ((*  (ptr) pd34 ))))((*  (ptr) iData←v7664 ), halftoneProperties←v5524, pd34);
      };
   }

static void ModifyMaskBoxes←P780(device←v5584, bounds←v5612, boxes←v5640)
   word device←v5584;
   W4 bounds←v5612;
   word boxes←v5640;
   {
   register ptr gf←c24668 =  (ptr) &globalframe;
   word iData←v7708;
   /* ModifyMaskBoxes: */ 
SOURCE(4320, 215)
SOURCE(4403, 42)
   iData←v7708 = XR←Narrow((* (( (ptr) device←v5584)+7) ), (* (( (ptr) gf←c24668)+17) ));
SOURCE(4447, 57)
   {
      word pd35;
      pd35 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7708 ))+4) ))+3) );
      (void) ( *( (fPt) ((*  (ptr) pd35 ))))((*  (ptr) iData←v7708 ), bounds←v5612, boxes←v5640, pd35);
      };
SOURCE(4506, 29)
   (void) IPostIntercept←P480(iData←v7708, bounds←v5612);
   }

static void ModifyMaskRegion←P840(device←v5700, bounds←v5728, edgeGenerator←v5756)
   word device←v5700;
   W4 bounds←v5728;
   word edgeGenerator←v5756;
   {
   register ptr gf←c24700 =  (ptr) &globalframe;
   word iData←v7752;
   /* ModifyMaskRegion: */ 
SOURCE(4541, 248)
SOURCE(4648, 42)
   iData←v7752 = XR←Narrow((* (( (ptr) device←v5700)+7) ), (* (( (ptr) gf←c24700)+17) ));
SOURCE(4692, 66)
   {
      word pd36;
      pd36 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7752 ))+4) ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd36 ))))((*  (ptr) iData←v7752 ), bounds←v5728, edgeGenerator←v5756, pd36);
      };
SOURCE(4760, 29)
   (void) IPostIntercept←P480(iData←v7752, bounds←v5728);
   }

static void ModifyMaskBitmap←P900(device←v5876, bitmap←v5904, delta←v5932, bounds←v5960, boxes←v5988)
   word device←v5876;
   word bitmap←v5904;
   W2 delta←v5932;
   W4 bounds←v5960;
   word boxes←v5988;
   {
   register ptr gf←c24732 =  (ptr) &globalframe;
   word iData←v7796;
   /* ModifyMaskBitmap: */ 
SOURCE(4795, 266)
SOURCE(4913, 42)
   iData←v7796 = XR←Narrow((* (( (ptr) device←v5876)+7) ), (* (( (ptr) gf←c24732)+17) ));
SOURCE(4957, 73)
   {
      word pd37;
      pd37 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7796 ))+4) ))+5) );
      (void) ( *( (fPt) ((*  (ptr) pd37 ))))((*  (ptr) iData←v7796 ), bitmap←v5904, delta←v5932, bounds←v5960, boxes←v5988, pd37)
      ;
      };
SOURCE(5032, 29)
   (void) IPostIntercept←P480(iData←v7796, bounds←v5960);
   }

static void ModifyMaskRawBitmaps←P960(device←v6048, list←v6076)
   word device←v6048;
   word list←v6076;
   {
   register ptr gf←c24764 =  (ptr) &globalframe;
   word iData←v7840;
   /* ModifyMaskRawBitmaps: */ 
SOURCE(5067, 475)
SOURCE(5157, 42)
   iData←v7840 = XR←Narrow((* (( (ptr) device←v6048)+7) ), (* (( (ptr) gf←c24764)+17) ));
SOURCE(5201, 53)
   {
      word pd38;
      pd38 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7840 ))+4) ))+7) );
      (void) ( *( (fPt) ((*  (ptr) pd38 ))))((*  (ptr) iData←v7840 ), list←v6076, pd38);
      };
SOURCE(5256, 286)
   if ( ( (0 == (* (( (ptr) iData←v7840)+1) )) ? (list←v6076 != 0) : 0 ) ) {
SOURCE(5293, 251)
      {
         W4 bounds←v7884;
SOURCE(5295, 31)
         bounds←v7884 = (*  (W4Pt) list←v6076 );
SOURCE(5328, 16)
         list←v6076 = (* (( (ptr) list←v6076)+7) );
SOURCE(5347, 152)
         lab←L100017: ;
         if ((list←v6076 != 0)) {
            }
         else {
            goto lab←L100015;
            };
SOURCE(5365, 57)
         {
            W2 var←c23740;
            W2 v1←v22288;
            W2 v2←v22316;
            v1←v22288 = (*  (W2Pt) &bounds←v7884 );
            v2←v22316 = (*  (W2Pt) list←v6076 );
            if (( (int)v1←v22288.f0 <=  (int)v2←v22316.f0)) {
               var←c23740.f0 = v1←v22288.f0;
               }
            else {
               var←c23740.f0 = v2←v22316.f0;
               };
            if (( (int)v1←v22288.f1 <=  (int)v2←v22316.f1)) {
               var←c23740.f1 = v1←v22288.f1;
               }
            else {
               var←c23740.f1 = v2←v22316.f1;
               };
            (*  (W2Pt) &bounds←v7884 ) = var←c23740;
            };
SOURCE(5424, 57)
         {
            W2 var←c23804;
            W2 v1←v22212;
            W2 v2←v22240;
            v1←v22212 = (*  (W2Pt) (( (ptr) &bounds←v7884)+2) );
            v2←v22240 = (*  (W2Pt) (( (ptr) list←v6076)+2) );
            if (( (int)v2←v22240.f0 >=  (int)v1←v22212.f0)) {
               var←c23804.f0 = v2←v22240.f0;
               }
            else {
               var←c23804.f0 = v1←v22212.f0;
               };
            if (( (int)v2←v22240.f1 >=  (int)v1←v22212.f1)) {
               var←c23804.f1 = v2←v22240.f1;
               }
            else {
               var←c23804.f1 = v1←v22212.f1;
               };
            (*  (W2Pt) (( (ptr) &bounds←v7884)+2) ) = var←c23804;
            };
SOURCE(5483, 16)
         list←v6076 = (* (( (ptr) list←v6076)+7) );
         goto lab←L100017;
         lab←L100015: ;
SOURCE(5512, 30)
         {
            word b←v21904;
            W4 box←v21932;
            word var←c23868;
            W4 outer←v22412;
            b←v21904 = (* (( (ptr) iData←v7840)+2) );
            box←v21932 = bounds←v7884;
SOURCE(2979, 183)
            outer←v22412 = (*  (W4Pt) (( (ptr) b←v21904)+9) );
            if ( (  ( ( (int)box←v21932.f0 >=  (int)outer←v22412.f0) ? ( (int)box←v21932.f1 >=  (int)outer←v22412.f1) : 0 )  ? ( (int)box←v21932.f2 <=  (int)outer←v22412.f2) : 0 ) ) {
               var←c23868 =  (unsigned) ( (int)box←v21932.f3 <=  (int)outer←v22412.f3);
               }
            else {
               var←c23868 =  (unsigned) 0;
               };
            if ((0 == var←c23868)) {
SOURCE(3035, 127)
               {
                  register word postList←v21980;
                  postList←v21980 = (* (( (ptr) b←v21904)+7) );
                  lab←L100024: ;
                  if ((postList←v21980 != 0)) {
                     }
                  else {
                     goto lab←L100021;
                     };
SOURCE(3110, 52)
                  {
                     word pd39;
                     pd39 = (*  (ptr) postList←v21980 );
                     (void) ( *( (fPt) ((*  (ptr) pd39 ))))(box←v21932, (* (( (ptr) postList←v21980)+1) ), 0, pd39);
                     };
                  postList←v21980 = (* (( (ptr) postList←v21980)+2) );
                  goto lab←L100024;
                  lab←L100021: ;
                  };
               };
            };
         };
      };
   }

static void ModifyDrawBitmap←P1020(device←v6220, bitmap←v6248, delta←v6276, bounds←v6304, boxes←v6332)
   word device←v6220;
   word bitmap←v6248;
   W2 delta←v6276;
   W4 bounds←v6304;
   word boxes←v6332;
   {
   register ptr gf←c24796 =  (ptr) &globalframe;
   word iData←v7928;
   /* ModifyDrawBitmap: */ 
SOURCE(5551, 266)
SOURCE(5669, 42)
   iData←v7928 = XR←Narrow((* (( (ptr) device←v6220)+7) ), (* (( (ptr) gf←c24796)+17) ));
SOURCE(5713, 73)
   {
      word pd40;
      pd40 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7928 ))+4) ))+8) );
      (void) ( *( (fPt) ((*  (ptr) pd40 ))))((*  (ptr) iData←v7928 ), bitmap←v6248, delta←v6276, bounds←v6304, boxes←v6332, pd40)
      ;
      };
SOURCE(5788, 29)
   (void) IPostIntercept←P480(iData←v7928, bounds←v6304);
   }

static void ModifyMaskChar←P1080(device←v6392, delta←v6420, mask←v6448)
   word device←v6392;
   W2 delta←v6420;
   word mask←v6448;
   {
   register ptr gf←c24828 =  (ptr) &globalframe;
   word iData←v7972;
   /* ModifyMaskChar: */ 
SOURCE(5823, 230)
SOURCE(5896, 42)
   iData←v7972 = XR←Narrow((* (( (ptr) device←v6392)+7) ), (* (( (ptr) gf←c24828)+17) ));
SOURCE(5940, 54)
   {
      word pd41;
      pd41 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v7972 ))+4) ))+9) );
      (void) ( *( (fPt) ((*  (ptr) pd41 ))))((*  (ptr) iData←v7972 ), delta←v6420, mask←v6448, pd41);
      };
SOURCE(5996, 57)
   {
      W4 var←c23900;
      {
         W4 var←c23932;
         W4 box←v22164;
         box←v22164 = (*  (W4Pt) (( (ptr) mask←v6448)+4) );
         var←c23932.f0 = (box←v22164.f0 + delta←v6420.f0);
         var←c23932.f1 = (box←v22164.f1 + delta←v6420.f1);
         var←c23932.f2 = (box←v22164.f2 + delta←v6420.f0);
         var←c23932.f3 = (box←v22164.f3 + delta←v6420.f1);
         var←c23900 = var←c23932;
         };
      (void) IPostIntercept←P480(iData←v7972, var←c23900);
      };
   }

static void ModifyMoveBox←P1140(device←v6508, dstMin←v6536, srcMin←v6564, size←v6592)
   word device←v6508;
   W2 dstMin←v6536;
   W2 srcMin←v6564;
   W2 size←v6592;
   {
   register ptr gf←c24860 =  (ptr) &globalframe;
   word iData←v8016;
   /* ModifyMoveBox: */ 
SOURCE(6059, 248)
SOURCE(6130, 42)
   iData←v8016 = XR←Narrow((* (( (ptr) device←v6508)+7) ), (* (( (ptr) gf←c24860)+17) ));
SOURCE(6174, 62)
   {
      word pd42;
      pd42 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v8016 ))+4) ))+10) );
      (void) ( *( (fPt) ((*  (ptr) pd42 ))))((*  (ptr) iData←v8016 ), dstMin←v6536, srcMin←v6564, size←v6592, pd42);
      };
SOURCE(6238, 69)
   {
      W4 var←c23996;
      (*  (W2Pt) &var←c23996 ) = dstMin←v6536;
      var←c23996.f2 = (dstMin←v6536.f0 + size←v6592.f0);
      var←c23996.f3 = (dstMin←v6536.f1 + size←v6592.f1);
      (void) IPostIntercept←P480(iData←v8016, var←c23996);
      };
   }

static void ModifySwitchBuffer1←P1200(device←v6652, bounds←v6680, copy←v6708, alt←v6736)
   word device←v6652;
   W4 bounds←v6680;
   word copy←v6708;
   word alt←v6736;
   {
   register ptr gf←c24892 =  (ptr) &globalframe;
   word iData←v8060;
   /* ModifySwitchBuffer1: */ 
SOURCE(6313, 269)
SOURCE(6399, 42)
   iData←v8060 = XR←Narrow((* (( (ptr) device←v6652)+7) ), (* (( (ptr) gf←c24892)+17) ));
SOURCE(6443, 64)
   {
      word pd43;
      pd43 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v8060 ))+4) ))+11) );
      (void) ( *( (fPt) ((*  (ptr) pd43 ))))((*  (ptr) iData←v8060 ), bounds←v6680, copy←v6708, alt←v6736, pd43);
      };
SOURCE(6509, 20)
   (* (( (ptr) iData←v8060)+1) ) = alt←v6736;
SOURCE(6531, 51)
   if ( ( (0 == alt←v6736) ? (0 != copy←v6708) : 0 ) ) {
SOURCE(6553, 29)
      (void) IPostIntercept←P480(iData←v8060, bounds←v6680);
      };
   }

static void ModifySwitchBuffer2←P1260(device←v6796, bounds←v6824, copy←v6852, alt←v6880)
   word device←v6796;
   W4 bounds←v6824;
   word copy←v6852;
   word alt←v6880;
   {
   register ptr gf←c24924 =  (ptr) &globalframe;
   word iData←v8104;
   /* ModifySwitchBuffer2: */ 
SOURCE(6590, 203)
SOURCE(6676, 42)
   iData←v8104 = XR←Narrow((* (( (ptr) device←v6796)+7) ), (* (( (ptr) gf←c24924)+17) ));
SOURCE(6720, 20)
   (* (( (ptr) iData←v8104)+1) ) = alt←v6880;
SOURCE(6742, 51)
   if ( ( (0 == alt←v6880) ? (0 != copy←v6852) : 0 ) ) {
SOURCE(6764, 29)
      (void) IPostIntercept←P480(iData←v8104, bounds←v6824);
      };
   }

static word ModifyGetBufferColorOperator←P1320(device←v6940)
   word device←v6940;
   {
   register ptr gf←c24956 =  (ptr) &globalframe;
   word var←c6984;
   word iData←v8148;
   /* ModifyGetBufferColorOperator: */ 
SOURCE(6801, 265)
SOURCE(6893, 42)
   iData←v8148 = XR←Narrow((* (( (ptr) device←v6940)+7) ), (* (( (ptr) gf←c24956)+17) ));
SOURCE(6937, 68)
   if (((* (( (ptr) (* (( (ptr) (*  (ptr) iData←v8148 ))+4) ))+12) ) == 0)) {
SOURCE(6993, 12)
      return(0);
      };
SOURCE(7007, 59)
   {
      word pd44;
      pd44 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v8148 ))+4) ))+12) );
      return((word) ( *( (fPt) ((*  (ptr) pd44 ))))(device←v6940, pd44));
      };
   }

static void ModifyAccessBuffer←P1380(device←v7044, box←v7072, action←v7100)
   word device←v7044;
   W4 box←v7072;
   word action←v7100;
   {
   register ptr gf←c24988 =  (ptr) &globalframe;
   word iData←v8192;
   /* ModifyAccessBuffer: */ 
SOURCE(7070, 251)
SOURCE(7164, 42)
   iData←v8192 = XR←Narrow((* (( (ptr) device←v7044)+7) ), (* (( (ptr) gf←c24988)+17) ));
SOURCE(7208, 25)
   (void) IPreIntercept←P540(iData←v8192, box←v7072);
SOURCE(7235, 58)
   {
      word pd45;
      pd45 = (* (( (ptr) (* (( (ptr) (*  (ptr) iData←v8192 ))+4) ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd45 ))))((*  (ptr) iData←v8192 ), box←v7072, action←v7100, pd45);
      };
SOURCE(7295, 26)
   (void) IPostIntercept←P480(iData←v8192, box←v7072);
   }

static word DitherContextCreator←P1440(sm←v15988, surfaceUnitsPerPixel←v16016, extras←v16044)
   word sm←v15988;
   word surfaceUnitsPerPixel←v16016;
   word extras←v16044;
   {
   register ptr gf←c25020 =  (ptr) &globalframe;
   word context←v16088;
   /* DitherContextCreator: */ 
SOURCE(8359, 426)
SOURCE(8359, 426)
   context←v16088 = 0;
SOURCE(8400, 189)
   {
      W2 var←c24060;
      {
         W2 var←c24092;
         word map←v22116;
         map←v22116 = sm←v15988;
         {
            W4 b←v21284;
            b←v21284 = (*  (W4Pt) map←v22116 );
            var←c24092.f0 = (b←v21284.f2 - b←v21284.f0);
            var←c24092.f1 = (b←v21284.f3 - b←v21284.f1);
            };
         var←c24060 = var←c24092;
         };
      {
         W2 var←c24156;
         var←c24156.f0 = (*  (ptr) &fc27 );
         var←c24156.f1 = (*  (ptr) &fc27 );
         {
            word pd46;
            pd46 = (* (( (ptr) (* (( (ptr) gf←c25020)+74)/* var←c24188 */  ))+5) );
            context←v16088 = (word) ( *( (fPt) ((*  (ptr) pd46 ))))(var←c24060, 13, var←c24156, 1, (* (( (ptr) gf←c25020)+22) ), pd46)
            ;
            };
         };
      };
SOURCE(8591, 112)
   {
      word var←c24220;
      var←c24220 = extras←v16044;
      if ((var←c24220 == 0)) {
         goto lab←L100027;
         };
      if (((* (( (ptr) gf←c25020)+20) ) == XR←GetReferentType(var←c24220))) {
         {
            word entries←v8236;
            entries←v8236 = var←c24220;
SOURCE(8653, 50)
            {
               word pd47;
               pd47 = (* (( (ptr) (* (( (ptr) gf←c25020)+74)/* var←c24188 */  ))+9) );
               (void) ( *( (fPt) ((*  (ptr) pd47 ))))(context←v16088, entries←v8236, pd47);
               };
            };
         }
      else {
         lab←L100027: ;
         };
      };
SOURCE(8720, 65)
   {
      word pd48;
      pd48 = (* (( (ptr) (* (( (ptr) gf←c25020)+74)/* var←c24188 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd48 ))))(context←v16088, sm←v15988, pd48);
      };
SOURCE(8359, 426)
   return(context←v16088);
   }

/* file: XlBitmapImagerImpl, module: XlBitmapImagerImpl, compiled at: August 19, 1993 12:22:31 pm PDT */ 
extern void XR←install←XlBitmapImagerImpl() {
   NoName←Q2688();
   }
extern void XR←run←XlBitmapImagerImpl() { XR←Start(&globalframe); }