/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1994 by Xerox Corporation.  All rights reserved. */
/* time: March 9, 1994 11:49:32 am PST */
/* C2C version: January 12, 1994 (sun4) */
/* ref-counting: off */
/* file: ImagerColorTranslateImpl, module: ImagerColorTranslateImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
#define XRM←BITAND(x, y) (((word)(x)) & ((word)(y)))
#define XRM←BITRSHIFT(x, y) ((word)(x) >> (word)(y))
#define XRM←BITLSHIFT(x, y) ((word)(x) << (word)(y))
static char versionStamp[] = "@(#)mob←version [4023270074,526166156] ImagerColorTranslateImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W8 f; W3 r;} W11;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {W8 f; W5 r;} W13;
typedef struct {W8 f; W4 r;} W12;
typedef struct {W8 f; W8 r;} W16;
typedef struct {W16 f; W11 r;} W27;
typedef W4 *W4Pt;
typedef struct {W8 f; W2 r;} W10;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc26 = 0.5;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static float fc50 = 0.0;
#define MAX(cast, x, y)  ( ( cast x) > ( cast y) ? (x) : (y) )
#define MIN(cast, x, y)  ( ( cast x) < ( cast y) ? (x) : (y) )
static void NoName←Q3480();
static void ImagerColorTranslateImpl←P0();
static word MakeAccelerator←P60();
static void RegisterAccelerator←P120();
static word Insert←P180();
static void Remove←P240();
static void UnregisterAccelerators←P300();
static word RemoveAccelerator←P360();
static word GetAccelerators←P420();
static word Translate←P480();
static word maxIn←P1008();
static word maxOut←P1068();
static void TranslatePixels←P540();
static word GeneralTranslate←P600();
static word maxIn←P1368();
static void translateAction←P1428();
static word maxOut←P1488();
static word FallbackTranslatePixels←P720();
static void SlowTranslate←P1596();
static word pixelIn←P1752();
static void InitOtherCases←P780();
static word OneDimTranslate←P840();
static void TableTranslate←P1956();
static word pixelIn←P2112();
static word SmallTableTranslate←P900();
static word InitMultiDimTable←P2508();
static word PixelIn←P2880();
static word PakNSav←P2568();
static void MultiDimTableTranslate←P2628();
static word PIn←P3084();
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\325\144\161\001\300\312\034\225\256\100\164\000\000"};
static struct {unsigned f; char r[4];} string4 = {131074, "\004\022\000"};
static struct {unsigned f; char r[48];} string5 = {2949168, "\260\006\005\146\151\162\163\164\216\257\300\325\144\161\001\300\312\034\225\256\100\164\005\004\162\145\163\164\255\214\216\257\300\325\144\161\001\300\312\034\225\256\100\164\261\000\000"};
static struct {unsigned f; char r[4];} string6 = {131074, "\004\003\000"};
static struct {unsigned f; char r[12];} string7 = {524300, "Fallback\000\000\000"};
static struct {unsigned f; char r[8];} string8 = {393224, "OneDim\000"};
static struct {unsigned f; char r[12];} string9 = {655372, "SmallTable\000"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\357\316\072\272\300\037\134\250\214\100\164\000\000"};
static struct {unsigned f; char r[16];} string11 = {786444, "\006\004\040\001\044\001\050\001\100\110\004\007\000\000\000"};
static struct {unsigned f; char r[16];} string12 = {851984, "\257\300\230\052\311\306\300\242\375\035\324\100\150\000\000"};
static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\213\226\301\143\300\072\355\320\373\100\150\000\000"};
static struct {unsigned f; char r[16];} string14 = {851984, "\257\300\260\302\146\322\300\075\027\134\123\100\150\000\000"};
static struct {unsigned f; char r[16];} string15 = {1231905127, "erColorPrivate"};
static struct {unsigned f; char r[16];} string16 = {851984, "\257\300\207\164\301\163\300\327\135\041\305\100\150\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\132\124\077\010\300\370\073\075\073\100\150\000\000"};
static struct {unsigned f; char r[36];} string18 = {2228260, "\211\026\025\103\157\154\157\162\117\160\145\162\141\164\157\162\103\154\141\163\163\122\145\160\300\132\124\077\010\300\370\073\075\073\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\207\164\301\163\300\327\135\041\305\105\234\000\000"};
static struct {unsigned f; char r[4];} string20 = {196611, "\004@A"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\325\144\161\001\300\312\034\225\256\100\150\000\000"};
static struct {
   word f0[21]; 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; word f50[7]; 
   } globalframe = {
   {0}, (word) SmallTableTranslate←P900, 0, (word) OneDimTranslate←P840, 
   0, (word) InitOtherCases←P780, 0, (word) FallbackTranslatePixels←P720, 
   0, (word) GeneralTranslate←P600, 0, (word) TranslatePixels←P540, 
   0, (word) Translate←P480, 0, (word) GetAccelerators←P420, 
   0, (word) RemoveAccelerator←P360, 0, (word) UnregisterAccelerators←P300, 
   0, (word) Remove←P240, 0, (word) Insert←P180, 
   0, (word) RegisterAccelerator←P120, 0, (word) MakeAccelerator←P60, 
   0, (word) ImagerColorTranslateImpl←P0, {0}
   };

static void NoName←Q3480()
   {
   register ptr gf←c0278 =  (ptr) &globalframe;
   word var←c24160;
   (* (( (ptr) gf←c0278)+13) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0278)+14) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c0278)+16) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (*  (ptr) (( (bPt) gf←c0278)+72) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0278)+13) ), (word) &string7);
   (*  (ptr) (( (bPt) gf←c0278)+76) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0278)+13) ), (word) &string8);
   (*  (ptr) (( (bPt) gf←c0278)+80) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0278)+13) ), (word) &string9);
   (void) XR←DeclareGlobalFrame((word) "ImagerColorTranslateImpl", &globalframe, (word) XR←GetTypeIndex((word) &string10, 0, (word) &string11)
      , (word) (( (bPt) gf←c0278)+196)/* var←c21280 */ );
   var←c24160 = (word) XR←ImportInterface((word) "ImagerPixelArray", (word) XR←GetTypeIndexS((word) (&string12)), 13);
   (* (( (ptr) gf←c0278)+51)/* var←c22080 */  ) = var←c24160;
   (void) XR←ImportProcS(var←c24160, 1574406);
   (void) XR←ImportProcS(var←c24160, 67633922);
   var←c24160 = (word) XR←ImportInterface((word) "ImagerSample", (word) XR←GetTypeIndexS((word) (&string13)), 60);
   (* (( (ptr) gf←c0278)+54)/* var←c23200 */  ) = var←c24160;
   (void) XR←ImportProcS(var←c24160, 67896579);
   var←c24160 = (word) XR←ImportInterface((word) "ImagerPixel", (word) XR←GetTypeIndexS((word) (&string14)), 9);
   (* (( (ptr) gf←c0278)+52)/* var←c22368 */  ) = var←c24160;
   (void) XR←ImportProcS(var←c24160, 262657);
   (void) XR←ImportProcS(var←c24160, 2361095);
   (void) XR←ImportProcS(var←c24160, 68682755);
   (void) XR←ImportProcS(var←c24160, 67633410);
   var←c24160 = (word) XR←ImportInterface((word) &string15, (word) XR←GetTypeIndexS((word) (&string16)), 48);
   (* (( (ptr) gf←c0278)+53)/* var←c22656 */  ) = var←c24160;
   (void) XR←ImportProcS(var←c24160, 67899651);
   (void) XR←ImportProcS(var←c24160, 67379201);
   (void) XR←ImportProcS(var←c24160, 67380225);
   (void) XR←ImportProcS(var←c24160, 67641090);
   (void) XR←ImportProcS(var←c24160, 67379969);
   var←c24160 = (word) XR←ExportInterface((word) "ImagerColor", (word) XR←GetTypeIndexS((word) (&string17)), 32);
   (* (( (ptr) gf←c0278)+55)/* var←c24192 */  ) = var←c24160;
   (void) XR←ExportType((word) "ColorOperatorClassRep", (word) XR←GetTypeIndexS((word) (&string18)), (word) XR←GetTypeIndex(
         (word) &string19, 0, (word) &string20));
   var←c24160 = (word) XR←ExportInterface((word) &string15, (word) XR←GetTypeIndexS((word) (&string16)), 48);
   (* (( (ptr) gf←c0278)+56)/* var←c24224 */  ) = var←c24160;
   (void) XR←ExportProcS(var←c24160, (word) (( (bPt) gf←c0278)+124)/* var←c20992 */ , 1058820, (word) "TranslatePixels");
   (void) XR←ExportProcS(var←c24160, (word) (( (bPt) gf←c0278)+132)/* var←c21024 */ , 67905795, (word) "Translate");
   var←c24160 = (word) XR←ExportInterface((word) "ImagerColorTranslateWorks", (word) XR←GetTypeIndexS((word) (&string21)), 5)
   ;
   (* (( (ptr) gf←c0278)+56)/* var←c24224 */  ) = var←c24160;
   (void) XR←ExportProcS(var←c24160, (word) (( (bPt) gf←c0278)+188)/* var←c21248 */ , 68419589, (word) "MakeAccelerator");
   (void) XR←ExportProcS(var←c24160, (word) (( (bPt) gf←c0278)+180)/* var←c21216 */ , 262401, (word) "RegisterAccelerator");
   (void) XR←ExportProcS(var←c24160, (word) (( (bPt) gf←c0278)+148)/* var←c21088 */ , 67371521, (word) "RemoveAccelerator");
   (void) XR←ExportProcS(var←c24160, (word) (( (bPt) gf←c0278)+156)/* var←c21120 */ , 768, (word) "UnregisterAccelerators");
   (void) XR←ExportProcS(var←c24160, (word) (( (bPt) gf←c0278)+140)/* var←c21056 */ , 67109888, (word) "GetAccelerators");
   }

static void ImagerColorTranslateImpl←P0(formal←c033, formal←c030)
   word formal←c033;
   word formal←c030;
   {
   register ptr gf←c24256 =  (ptr) &globalframe;
   /* ImagerColorTranslateImpl: */ 
SOURCE(732, 13403)
SOURCE(2072, 135)
   (* (( (ptr) gf←c24256)+8)/* fallback←v3112 */  ) = (word) MakeAccelerator←P60(2147483647, (* (( (ptr) gf←c24256)+18) ), 0, (word) (
         ( (bPt) gf←c24256)+108)/* var←c20928 */ , 0);
SOURCE(2210, 53)
   {
      word var←c21312;
      word var←c21344;
      var←c21312 = XR←NewObject(8, (* (( (ptr) gf←c24256)+16) ));
      var←c21344 = var←c21312;
      (*  (ptr) var←c21344 ) = (* (( (ptr) gf←c24256)+8)/* fallback←v3112 */  );
      (* (( (ptr) gf←c24256)+9)/* initialAccelerators←v3140 */  ) = var←c21312;
      };
SOURCE(2266, 51)
   (* (( (ptr) gf←c24256)+10)/* accelerators←v3168 */  ) = (* (( (ptr) gf←c24256)+9)/* initialAccelerators←v3140 */  );
SOURCE(9621, 27)
   (* (( (ptr) gf←c24256)+11)/* smallTableSize←v3560 */  ) = 8192;
SOURCE(14119, 16)
   (void) InitOtherCases←P780();
   }

static word MakeAccelerator←P60(slot←v3668, name←v3696, fastTranslate←v3724, fastTranslatePixels←v3752, propList←v3780)
   word slot←v3668;
   word name←v3696;
   word fastTranslate←v3724;
   word fastTranslatePixels←v3752;
   word propList←v3780;
   {
   register ptr gf←c24288 =  (ptr) &globalframe;
   word var←c3824;
   /* MakeAccelerator: */ 
SOURCE(1545, 454)
SOURCE(1761, 238)
   {
      word var←c21408;
      var←c21408 = XR←NewObject(20, (* (( (ptr) gf←c24288)+14) ));
      (*  (ptr) var←c21408 ) = slot←v3668;
      (* (( (ptr) var←c21408)+1) ) = name←v3696;
      (* (( (ptr) var←c21408)+2) ) = XR←CheckProc ( (fastTranslate←v3724 == 0) ? (word) (( (bPt) gf←c24288)+116)/* var←c20960 */  : fastTranslate←v3724 ) ;
      (* (( (ptr) var←c21408)+3) ) = XR←CheckProc(fastTranslatePixels←v3752);
      (* (( (ptr) var←c21408)+4) ) = propList←v3780;
      return(var←c21408);
      };
   }

static void RegisterAccelerator←P120(a←v3968)
   word a←v3968;
   {
   register ptr gf←c24320 =  (ptr) &globalframe;
   /* RegisterAccelerator: */ 
SOURCE(2333, 128)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c24320)+16)/* LOCK←v2748 */ ));
SOURCE(2407, 54)
   if ((a←v3968 != 0)) {
SOURCE(2423, 38)
      (* (( (ptr) gf←c24320)+10)/* accelerators←v3168 */  ) = (word) Insert←P180(a←v3968, (* (( (ptr) gf←c24320)+10)/* accelerators←v3168 */  ))
      ;
      };
SOURCE(2333, 128)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c24320)+16)/* LOCK←v2748 */ ));
   return;
   }

static word Insert←P180(a←v4028, list←v4056)
   word a←v4028;
   word list←v4056;
   {
   register ptr gf←c24352 =  (ptr) &globalframe;
   word var←c4100;
   /* Insert: */ 
SOURCE(2467, 328)
SOURCE(2564, 231)
   if ((list←v4056 == 0)) {
SOURCE(2583, 22)
      {
         word var←c21472;
         word var←c21504;
         var←c21472 = XR←NewObject(8, (* (( (ptr) gf←c24352)+16) ));
         var←c21504 = var←c21472;
         (*  (ptr) var←c21504 ) = a←v4028;
         return(var←c21472);
         };
      }
   else {
SOURCE(2605, 192)
      {
         word oldSlot←v5968;
SOURCE(2607, 30)
         oldSlot←v5968 = (*  (ptr) (*  (ptr) list←v4056 ) );
SOURCE(2639, 156)
         {
            word var←c21536;
            var←c21536 = (*  (ptr) a←v4028 );
            if (( (int)var←c21536 <  (int)oldSlot←v5968)) {
SOURCE(2671, 22)
               {
                  word var←c21600;
                  var←c21600 = XR←NewObject(8, (* (( (ptr) gf←c24352)+16) ));
                  (*  (ptr) var←c21600 ) = a←v4028;
                  (* (( (ptr) var←c21600)+1) ) = list←v4056;
                  return(var←c21600);
                  };
               }
            else {
               if (( (int)var←c21536 ==  (int)oldSlot←v5968)) {
SOURCE(2708, 27)
                  {
                     word var←c21664;
                     var←c21664 = XR←NewObject(8, (* (( (ptr) gf←c24352)+16) ));
                     (*  (ptr) var←c21664 ) = a←v4028;
                     (* (( (ptr) var←c21664)+1) ) = (* (( (ptr) list←v4056)+1) );
                     return(var←c21664);
                     };
                  }
               else {
SOURCE(2748, 47)
                  {
                     word var←c21728;
                     word var←c21760;
                     var←c21728 = (word) Insert←P180(a←v4028, (* (( (ptr) list←v4056)+1) ));
                     var←c21760 = XR←NewObject(8, (* (( (ptr) gf←c24352)+16) ));
                     (*  (ptr) var←c21760 ) = (*  (ptr) list←v4056 );
                     (* (( (ptr) var←c21760)+1) ) = var←c21728;
                     return(var←c21760);
                     };
                  };
               };
            };
         };
      };
   }

static void Remove←P240(formal←c062, list←v4160, slot←v4188)
   word formal←c062;
   word list←v4160;
   word slot←v4188;
   {
   register ptr gf←c24384 =  (ptr) &globalframe;
   word new←v4232;
   word a←v4260;
   /* Remove: */ 
SOURCE(2804, 299)
SOURCE(2804, 299)
   new←v4232 = 0;
SOURCE(2804, 299)
   a←v4260 = 0;
SOURCE(2917, 37)
   if ((list←v4160 == 0)) {
SOURCE(2936, 18)
      new←v4232 = list←v4160;
      a←v4260 = 0;
      goto lab←L100000;
      };
SOURCE(2956, 82)
   if ( ( ((*  (ptr) list←v4160 ) != 0) ? ( (int)(*  (ptr) (*  (ptr) list←v4160 ) ) ==  (int)slot←v4188) : 0 ) ) {
SOURCE(3008, 30)
      new←v4232 = (* (( (ptr) list←v4160)+1) );
      a←v4260 = (*  (ptr) list←v4160 );
      goto lab←L100000;
      };
SOURCE(3040, 34)
   {
      W2 var←c21856;
      (void) Remove←P240((word) &var←c21856, (* (( (ptr) list←v4160)+1) ), slot←v4188);
      a←v4260 = var←c21856.f1;
      new←v4232 = var←c21856.f0;
      };
SOURCE(3076, 27)
   {
      word var←c21888;
      var←c21888 = XR←NewObject(8, (* (( (ptr) gf←c24384)+16) ));
      (*  (ptr) var←c21888 ) = (*  (ptr) list←v4160 );
      (* (( (ptr) var←c21888)+1) ) = new←v4232;
      new←v4232 = var←c21888;
      };
   /* removed tail goto */ 
   lab←L100000: ;
   (*  (ptr) formal←c062 ) = new←v4232;
   (* (( (ptr) formal←c062)+1) ) = a←v4260;
   return;
   }

static void UnregisterAccelerators←P300()
   {
   register ptr gf←c24416 =  (ptr) &globalframe;
   /* UnregisterAccelerators: */ 
SOURCE(3109, 81)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c24416)+16)/* LOCK←v2748 */ ));
SOURCE(3155, 35)
   (* (( (ptr) gf←c24416)+10)/* accelerators←v3168 */  ) = (* (( (ptr) gf←c24416)+9)/* initialAccelerators←v3140 */  );
SOURCE(3109, 81)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c24416)+16)/* LOCK←v2748 */ ));
   return;
   }

static word RemoveAccelerator←P360(slot←v4336)
   word slot←v4336;
   {
   register ptr gf←c24448 =  (ptr) &globalframe;
   word a←v4380;
   /* RemoveAccelerator: */ 
SOURCE(3193, 138)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c24448)+16)/* LOCK←v2748 */ ));
SOURCE(3193, 138)
   a←v4380 = 0;
SOURCE(3285, 46)
   {
      W2 var←c21920;
      (void) Remove←P240((word) &var←c21920, (* (( (ptr) gf←c24448)+10)/* accelerators←v3168 */  ), slot←v4336);
      a←v4380 = var←c21920.f1;
      (* (( (ptr) gf←c24448)+10)/* accelerators←v3168 */  ) = var←c21920.f0;
      };
SOURCE(3193, 138)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c24448)+16)/* LOCK←v2748 */ ));
   return(a←v4380);
   }

static word GetAccelerators←P420()
   {
   register ptr gf←c24480 =  (ptr) &globalframe;
   word var←c4440;
   /* GetAccelerators: */ 
SOURCE(3336, 86)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c24480)+16)/* LOCK←v2748 */ ));
SOURCE(3401, 21)
   {
      word var←c21952;
      var←c21952 = (* (( (ptr) gf←c24480)+10)/* accelerators←v3168 */  );
      (void) (XR←MonitorExit((word) (( (bPt) gf←c24480)+16)/* LOCK←v2748 */ ));
      return(var←c21952);
      };
   }

static word Translate←P480(colorOperator←v4500, formal←c0337, formal←c0338)
   word colorOperator←v4500;
   word formal←c0337;
   word formal←c0338;
   {
   W6 var←c24512;
   /* declaration of transform←v4528 skipped */ 
   /* declaration of pa←v4556 skipped */ 
   register ptr gf←c24544 =  (ptr) &globalframe;
   word var←c4600;
   W2 var←c21984;
   W2 var←c22016;
   word samplesPerPixelIn←v6012;
   var←c24512.f4/* transform←v4528 */  = formal←c0337;
   var←c24512.f5/* pa←v4556 */  = formal←c0338;
   /* Translate: */ 
SOURCE(3428, 525)
   (*  (ptr) (word) &var←c21984 ) = ( ((word)  (fPt) maxOut←P1068) );
   (* (( (ptr) (word) &var←c21984) + 1) ) = 1;
   (*  (ptr) (word) &var←c22016 ) = ( ((word)  (fPt) maxIn←P1008) );
   (* (( (ptr) (word) &var←c22016) + 1) ) = 1;
SOURCE(3548, 43)
   samplesPerPixelIn←v6012 = (* (( (ptr) var←c24512.f5/* pa←v4556 */ )+1) );
SOURCE(3712, 241)
   {
      register word tail←v6112;
      tail←v6112 = (* (( (ptr) gf←c24544)+10)/* accelerators←v3168 */  );
      lab←L100004: ;
      if ((tail←v6112 != 0)) {
         }
      else {
         goto lab←L100001;
         };
      {
         word a←v6156;
SOURCE(3784, 41)
         a←v6156 = (*  (ptr) tail←v6112 );
SOURCE(3827, 126)
         if (((* (( (ptr) a←v6156)+2) ) != 0)) {
SOURCE(3857, 96)
            {
               word pm←v6200;
SOURCE(3859, 63)
               {
                  word pd22;
                  pd22 = (* (( (ptr) a←v6156)+2) );
                  pm←v6200 = (word) ( *( (fPt) ((*  (ptr) pd22 ))))(a←v6156, colorOperator←v4500, var←c24512.f4/* transform←v4528 */ , var←c24512.f5/* pa←v4556 */ , pd22)
                  ;
                  };
SOURCE(3924, 29)
               if ((pm←v6200 != 0)) {
SOURCE(3941, 12)
                  return(pm←v6200);
                  };
               };
            };
         };
      tail←v6112 = (* (( (ptr) tail←v6112)+1) );
      goto lab←L100004;
      lab←L100001: ;
      };
SOURCE(3965, 5)
   (void) XR←RaiseUnnamedError();
   }

static word maxIn←P1008(i←v17440, formal←c24608)
   word i←v17440;
   word formal←c24608;
   {
   register ptr gf←c24576 =  (ptr) &globalframe;
   word var←c17484;
   /* maxIn: */ 
SOURCE(3593, 51)
SOURCE(3614, 30)
   {
      word pd23;
      pd23 = (* (( (ptr) (* (( (ptr) gf←c24576)+51)/* var←c22080 */  ))+7) );
      return((word) ( *( (fPt) ((*  (ptr) pd23 ))))((* (( (ptr) formal←c24608)+5) ), i←v17440, pd23));
      };
   }

static word maxOut←P1068(i←v17544, formal←c24640)
   word i←v17544;
   word formal←c24640;
   {
   word var←c17588;
   /* maxOut: */ 
SOURCE(3647, 62)
SOURCE(3669, 40)
   {
      word var←c0317;
      {
         word var←c22144;
         word real←v20784;
         {
            word var←c22176;
            var←c22176 = (* (( (ptr) (* (( (ptr) formal←c24640)+4) ))+1) );
            {
               word limit24;
               word x25;
               word x27;
               *(float*)&real←v20784 = (
                  x25 = (* ((( (ptr) var←c22176)+2)+(
                        limit24 = (* (( (ptr) var←c22176)+1) ),
                        BCK(i←v17544, limit24)
                        )) ),  *(float*)&x25
                  ) + (
                  x27 = (*  (ptr) &fc26 ),  *(float*)&x27
                  );
               };
            };
SOURCE(5772, 21)
         var←c22144 = (word) (long int)*(float*)&(real←v20784);
         var←c0317 = SGNCK(var←c22144);
         };
      return(var←c0317);
      };
   }

static void TranslatePixels←P540(colorOperator←v4660, transform←v4688, maxIn←v4716, translateAction←v4744)
   word colorOperator←v4660;
   word transform←v4688;
   word maxIn←v4716;
   word translateAction←v4744;
   {
   register ptr gf←c24672 =  (ptr) &globalframe;
   /* TranslatePixels: */ 
SOURCE(3976, 400)
SOURCE(4135, 241)
   {
      register word tail←v6244;
      tail←v6244 = (* (( (ptr) gf←c24672)+10)/* accelerators←v3168 */  );
      lab←L100009: ;
      if ((tail←v6244 != 0)) {
         }
      else {
         goto lab←L100006;
         };
      {
         word a←v6288;
SOURCE(4207, 41)
         a←v6288 = (*  (ptr) tail←v6244 );
SOURCE(4250, 126)
         {
            word tc28;
            word pd29;
            if (((* (( (ptr) a←v6288)+3) ) != 0)) {
               pd29 = (* (( (ptr) a←v6288)+3) );
               tc28 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd29 ))))(a←v6288, colorOperator←v4660, transform←v4688, maxIn←v4716, translateAction←v4744, pd29)
               );
               }
            else {
               tc28 =  (word) 0;
               };
            if (tc28) {
SOURCE(4370, 6)
               return;
               };
            };
         };
      tail←v6244 = (* (( (ptr) tail←v6244)+1) );
      goto lab←L100009;
      lab←L100006: ;
      };
SOURCE(4387, 5)
   (void) XR←RaiseUnnamedError();
   }

static word GeneralTranslate←P600(self←v4864, colorOperator←v4892, formal←c0339, formal←c0340)
   word self←v4864;
   word colorOperator←v4892;
   word formal←c0339;
   word formal←c0340;
   {
   W11 var←c24704;
   /* declaration of transform←v4920 skipped */ 
   /* declaration of pa←v4948 skipped */ 
   word var←c4992;
   /* declaration of var←c22240 skipped */ 
   /* declaration of var←c22272 skipped */ 
   /* declaration of pm←v6360 skipped */ 
   word done←v6416;
   (* (( (ptr) &var←c24704)+4)/* transform←v4920 */  ) = formal←c0339;
   (* (( (ptr) &var←c24704)+5)/* pa←v4948 */  ) = formal←c0340;
   /* GeneralTranslate: */ 
SOURCE(4397, 1231)
   {
      word tmpAddr30;
      tmpAddr30 = (word) (( (ptr) &var←c24704)+6)/* var←c22240 */ ;
      (*  (ptr) tmpAddr30 ) = ( ((word)  (fPt) translateAction←P1428) );
      (* (( (ptr) tmpAddr30) + 1) ) = 1;
      };
   {
      word tmpAddr31;
      tmpAddr31 = (word) (( (ptr) &var←c24704)+8)/* var←c22272 */ ;
      (*  (ptr) tmpAddr31 ) = ( ((word)  (fPt) maxIn←P1368) );
      (* (( (ptr) tmpAddr31) + 1) ) = 1;
      };
SOURCE(4604, 18)
   (* (( (ptr) &var←c24704)+10)/* pm←v6360 */  ) = 0;
SOURCE(5418, 93)
   {
      word pd32;
      pd32 = (* (( (ptr) self←v4864)+3) );
      done←v6416 = (word) ( *( (fPt) ((*  (ptr) pd32 ))))(self←v4864, colorOperator←v4892, (* (( (ptr) &var←c24704)+4)/* transform←v4920 */  ), (word) (
            ( (bPt) &var←c24704)+32)/* var←c22272 */ , (word) (( (bPt) &var←c24704)+24)/* var←c22240 */ , pd32);
      };
SOURCE(5513, 26)
   if ( ( (0 != done←v6416) ? ((* (( (ptr) &var←c24704)+10)/* pm←v6360 */  ) == 0) : 0 ) ) {
SOURCE(5539, 5)
      (void) XR←RaiseUnnamedError();
      };
SOURCE(5617, 11)
   return((* (( (ptr) &var←c24704)+10)/* pm←v6360 */  ));
   }

static word maxIn←P1368(i←v17796, formal←c24768)
   word i←v17796;
   word formal←c24768;
   {
   register ptr gf←c24736 =  (ptr) &globalframe;
   word var←c17840;
   formal←c24768 = (formal←c24768 - 32);
   /* maxIn: */ 
SOURCE(4550, 51)
SOURCE(4571, 30)
   {
      word pd33;
      pd33 = (* (( (ptr) (* (( (ptr) gf←c24736)+51)/* var←c22080 */  ))+7) );
      return((word) ( *( (fPt) ((*  (ptr) pd33 ))))((* (( (ptr) formal←c24768)+5) ), i←v17796, pd33));
      };
   }

static void translateAction←P1428(translate←v6492, formal←c24864)
   word translate←v6492;
   word formal←c24864;
   {
   W6 var←c24800;
   register ptr gf←c24832 =  (ptr) &globalframe;
   /* declaration of var←c22336 skipped */ 
   word sSize←v6520;
   word fSize←v6548;
   word samplesPerPixelIn←v6576;
   word pixelsIn←v6604;
   word samplesPerPixelOut←v6632;
   word pixelsOut←v6660;
   formal←c24864 = (formal←c24864 - 24);
   var←c24800.f0 = formal←c24864;
   /* translateAction: */ 
SOURCE(4624, 789)
   {
      word tmpAddr34;
      tmpAddr34 = (word) (( (ptr) &var←c24800)+4)/* var←c22336 */ ;
      (*  (ptr) tmpAddr34 ) = ( ((word)  (fPt) maxOut←P1488) );
      (* (( (ptr) tmpAddr34) + 1) ) = 1;
      };
SOURCE(4677, 21)
   {
      word idx35;
      sSize←v6520 = (
         idx35 = (* (( (ptr) (* (( (ptr) formal←c24864)+5) ))+2) ),
         SGNCK(idx35)
         );
      };
SOURCE(4700, 21)
   {
      word idx36;
      fSize←v6548 = (
         idx36 = (* (( (ptr) (* (( (ptr) formal←c24864)+5) ))+3) ),
         SGNCK(idx36)
         );
      };
SOURCE(4723, 43)
   samplesPerPixelIn←v6576 = (* (( (ptr) (* (( (ptr) formal←c24864)+5) ))+1) );
SOURCE(4768, 81)
   {
      word pd37;
      pd37 = (* (( (ptr) (* (( (ptr) gf←c24832)+52)/* var←c22368 */  ))+5) );
      pixelsIn←v6604 = (word) ( *( (fPt) ((*  (ptr) pd37 ))))(samplesPerPixelIn←v6576, fSize←v6548, pd37);
      };
SOURCE(4851, 48)
   samplesPerPixelOut←v6632 = (* (( (ptr) (* (( (ptr) (* (( (ptr) formal←c24864)+4) ))+1) ))+1) );
SOURCE(4901, 83)
   {
      word pd38;
      pd38 = (* (( (ptr) (* (( (ptr) gf←c24832)+52)/* var←c22368 */  ))+5) );
      pixelsOut←v6660 = (word) ( *( (fPt) ((*  (ptr) pd38 ))))(samplesPerPixelOut←v6632, fSize←v6548, pd38);
      };
SOURCE(5051, 81)
   {
      W4 var←c22400;
      var←c22400.f0 = 0;
      var←c22400.f1 = 0;
      var←c22400.f2 = sSize←v6520;
      var←c22400.f3 = fSize←v6548;
      {
         word pd39;
         pd39 = (* (( (ptr) (* (( (ptr) gf←c24832)+52)/* var←c22368 */  ))+8) );
         (* (( (ptr) formal←c24864)+10) ) = (word) ( *( (fPt) ((*  (ptr) pd39 ))))(samplesPerPixelOut←v6632, var←c22400, (word) (( (bPt) &var←c24800)+16)
            /* var←c22336 */ , pd39);
         };
      };
SOURCE(5134, 181)
   {
      register word s←v6732 = 0;
      if ((s←v6732 >= sSize←v6520)) {
         goto lab←L100010;
         };
      lab←L100013: ;
SOURCE(5162, 42)
      {
         word pd40;
         pd40 = (* (( (ptr) (* (( (ptr) gf←c24832)+51)/* var←c22080 */  ))+10) );
         (void) ( *( (fPt) ((*  (ptr) pd40 ))))((* (( (ptr) formal←c24864)+5) ), s←v6732, 0, pixelsIn←v6604, 0, 2147483647, pd40);
         };
SOURCE(5206, 51)
      (void) ( *( (fPt) ((*  (ptr) translate←v6492 ))))(pixelsIn←v6604, pixelsOut←v6660, translate←v6492);
SOURCE(5259, 56)
      {
         W2 var←c22432;
         W2 var←c22464;
         var←c22432.f0 = s←v6732;
         var←c22432.f1 = 0;
         var←c22464.f0 = 0;
         var←c22464.f1 = 1;
         {
            word pd41;
            pd41 = (* (( (ptr) (* (( (ptr) gf←c24832)+52)/* var←c22368 */  ))+11) );
            (void) ( *( (fPt) ((*  (ptr) pd41 ))))((* (( (ptr) formal←c24864)+10) ), var←c22432, var←c22464, pixelsOut←v6660, 0, 2147483647
               , 0, pd41);
            };
         };
      s←v6732 = (s←v6732 + 1);
      if ((s←v6732 < sSize←v6520)) {
         goto lab←L100013;
         };
      lab←L100010: ;
      };
SOURCE(5326, 43)
   {
      word pd42;
      pd42 = (* (( (ptr) (* (( (ptr) gf←c24832)+52)/* var←c22368 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd42 ))))(pixelsOut←v6660, pd42);
      };
SOURCE(5371, 42)
   {
      word pd43;
      pd43 = (* (( (ptr) (* (( (ptr) gf←c24832)+52)/* var←c22368 */  ))+6) );
      (void) ( *( (fPt) ((*  (ptr) pd43 ))))(pixelsIn←v6604, pd43);
      };
   }

static word maxOut←P1488(i←v17964, formal←c24896)
   word i←v17964;
   word formal←c24896;
   {
   word var←c18008;
   formal←c24896 = (formal←c24896 - 16);
   /* maxOut: */ 
SOURCE(4986, 62)
SOURCE(5008, 40)
   {
      word var←c0318;
      {
         word var←c22528;
         word real←v20708;
         {
            word var←c22560;
            var←c22560 = (* (( (ptr) (* (( (ptr) (*  (ptr) formal←c24896 ))+4) ))+1) );
            {
               word limit44;
               word x45;
               word x46;
               *(float*)&real←v20708 = (
                  x45 = (* ((( (ptr) var←c22560)+2)+(
                        limit44 = (* (( (ptr) var←c22560)+1) ),
                        BCK(i←v17964, limit44)
                        )) ),  *(float*)&x45
                  ) + (
                  x46 = (*  (ptr) &fc26 ),  *(float*)&x46
                  );
               };
            };
SOURCE(5772, 21)
         var←c22528 = (word) (long int)*(float*)&(real←v20708);
         var←c0318 = SGNCK(var←c22528);
         };
      return(var←c0318);
      };
   }

static word FallbackTranslatePixels←P720(self←v5156, formal←c0341, formal←c0342, maxIn←v5240, translateAction←v5268)
   word self←v5156;
   word formal←c0341;
   word formal←c0342;
   word maxIn←v5240;
   word translateAction←v5268;
   {
   W13 var←c24928;
   /* declaration of colorOperator←v5184 skipped */ 
   /* declaration of transform←v5212 skipped */ 
   register ptr gf←c24960 =  (ptr) &globalframe;
   word done←v5372;
   /* declaration of var←c22624 skipped */ 
   /* declaration of colorSpace←v6908 skipped */ 
   word dim←v6936;
   /* declaration of samplesPerPixelOut←v6964 skipped */ 
   /* declaration of vScratch←v6992 skipped */ 
   /* declaration of dScratch←v7020 skipped */ 
   /* declaration of pixelEncoding←v7048 skipped */ 
   (* (( (ptr) &var←c24928)+4)/* colorOperator←v5184 */  ) = formal←c0341;
   (* (( (ptr) &var←c24928)+5)/* transform←v5212 */  ) = formal←c0342;
   /* FallbackTranslatePixels: */ 
SOURCE(5797, 1207)
   {
      word tmpAddr47;
      tmpAddr47 = (word) (( (ptr) &var←c24928)+6)/* var←c22624 */ ;
      (*  (ptr) tmpAddr47 ) = ( ((word)  (fPt) SlowTranslate←P1596) );
      (* (( (ptr) tmpAddr47) + 1) ) = 1;
      };
SOURCE(5797, 1207)
   done←v5372 = 1;
SOURCE(6018, 41)
   (* (( (ptr) &var←c24928)+8)/* colorSpace←v6908 */  ) = (*  (ptr) (* (( (ptr) &var←c24928)+5)/* transform←v5212 */  ) );
SOURCE(6061, 42)
   {
      word pd48;
      pd48 = (* (( (ptr) (* (( (ptr) gf←c24960)+53)/* var←c22656 */  ))+39) );
      dim←v6936 = (word) ( *( (fPt) ((*  (ptr) pd48 ))))((* ((( (ptr) &var←c24928)+8)/* colorSpace←v6908 */ ) ), pd48);
      };
SOURCE(6105, 48)
   (* (( (ptr) &var←c24928)+9)/* samplesPerPixelOut←v6964 */  ) = (* (( (ptr) (* (( (ptr) (* (( (ptr) &var←c24928)+5)/* transform←v5212 */  ))+1)
       ))+1) );
SOURCE(6155, 42)
   {
      word pd49;
      pd49 = (* (( (ptr) (* (( (ptr) gf←c24960)+53)/* var←c22656 */  ))+35) );
      (* (( (ptr) &var←c24928)+10)/* vScratch←v6992 */  ) = (word) ( *( (fPt) ((*  (ptr) pd49 ))))(dim←v6936, (*  (ptr) &fc50 ), pd49)
      ;
      };
SOURCE(6199, 57)
   {
      word pd51;
      pd51 = (* (( (ptr) (* (( (ptr) gf←c24960)+53)/* var←c22656 */  ))+35) );
      (* (( (ptr) &var←c24928)+11)/* dScratch←v7020 */  ) = (word) ( *( (fPt) ((*  (ptr) pd51 ))))((* (( (ptr) &var←c24928)+9)/* samplesPerPixelOut←v6964 */  ), (*  (ptr) &fc50 ), pd51)
      ;
      };
SOURCE(6258, 74)
   {
      word pd52;
      pd52 = (* (( (ptr) (* (( (ptr) gf←c24960)+53)/* var←c22656 */  ))+40) );
      (* (( (ptr) &var←c24928)+12)/* pixelEncoding←v7048 */  ) = (word) ( *( (fPt) ((*  (ptr) pd52 ))))((* ((( (ptr) &var←c24928)+4)
         /* colorOperator←v5184 */ ) ), pd52);
      };
SOURCE(6894, 30)
   (void) ( *( (fPt) ((*  (ptr) translateAction←v5268 ))))((word) ((( (bPt) &var←c24928)+24)/* var←c22624 */ ), translateAction←v5268)
   ;
SOURCE(6926, 38)
   {
      word pd53;
      pd53 = (* (( (ptr) (* (( (ptr) gf←c24960)+53)/* var←c22656 */  ))+36) );
      (* (( (ptr) &var←c24928)+11)/* dScratch←v7020 */  ) = (word) ( *( (fPt) ((*  (ptr) pd53 ))))((* ((( (ptr) &var←c24928)+11)
         /* dScratch←v7020 */ ) ), pd53);
      };
SOURCE(6966, 38)
   {
      word pd54;
      pd54 = (* (( (ptr) (* (( (ptr) gf←c24960)+53)/* var←c22656 */  ))+36) );
      (* (( (ptr) &var←c24928)+10)/* vScratch←v6992 */  ) = (word) ( *( (fPt) ((*  (ptr) pd54 ))))((* ((( (ptr) &var←c24928)+10)
         /* vScratch←v6992 */ ) ), pd54);
      };
SOURCE(5797, 1207)
   return(done←v5372);
   }

static void SlowTranslate←P1596(formal←c0343, pixelsOut←v18400, formal←c25024)
   word formal←c0343;
   word pixelsOut←v18400;
   word formal←c25024;
   {
   W8 var←c24992;
   /* declaration of pixelsIn←v18372 skipped */ 
   /* declaration of var←c22688 skipped */ 
   word v←v7120;
   word d←v7148;
   word class←v7176;
   formal←c25024 = (formal←c25024 - 24);
   var←c24992.f4/* pixelsIn←v18372 */  = formal←c0343;
   var←c24992.f0 = formal←c25024;
   /* SlowTranslate: */ 
SOURCE(6334, 537)
   {
      word tmpAddr55;
      tmpAddr55 = (word) (( (ptr) &var←c24992)+5)/* var←c22688 */ ;
      (*  (ptr) tmpAddr55 ) = ( ((word)  (fPt) pixelIn←P1752) );
      (* (( (ptr) tmpAddr55) + 1) ) = 1;
      };
SOURCE(6368, 24)
   v←v7120 = (* (( (ptr) formal←c25024)+10) );
SOURCE(6394, 24)
   d←v7148 = (* (( (ptr) formal←c25024)+11) );
SOURCE(6420, 47)
   class←v7176 = (* (( (ptr) (* (( (ptr) formal←c25024)+4) ))+2) );
SOURCE(6469, 402)
   {
      /* declaration of j←v7220 skipped */ 
      register word noName←c22720;
      var←c24992.f7/* j←v7220 */  = 0;
      noName←c22720 = (*  (ptr) var←c24992.f4/* pixelsIn←v18372 */  );
      if ((var←c24992.f7/* j←v7220 */  >= noName←c22720)) {
         goto lab←L100015;
         };
      lab←L100018: ;
SOURCE(6714, 50)
      {
         word pd56;
         pd56 = (* (( (ptr) class←v7176)+4) );
         (void) ( *( (fPt) ((*  (ptr) pd56 ))))((* (( (ptr) formal←c25024)+4) ), (word) (( (bPt) &var←c24992)+20)/* var←c22688 */ , (* (
               ( (ptr) formal←c25024)+8) ), v←v7120, pd56);
         };
SOURCE(6766, 31)
      {
         word pd57;
         pd57 = (* (( (ptr) (* (( (ptr) formal←c25024)+5) ))+2) );
         (void) ( *( (fPt) ((*  (ptr) pd57 ))))((* (( (ptr) formal←c25024)+5) ), v←v7120, d←v7148, pd57);
         };
SOURCE(6799, 72)
      {
         register word i←v7308 = 0;
         if ((i←v7308 >= (* (( (ptr) formal←c25024)+9) ))) {
            goto lab←L100019;
            };
         lab←L100022: ;
SOURCE(6840, 31)
         {
            word var←c22752;
            {
               word var←c22784;
               word real←v20632;
               {
                  word limit58;
                  word x59;
                  word x60;
                  *(float*)&real←v20632 = (
                     x59 = (* ((( (ptr) d←v7148)+2)+(
                           limit58 = (* (( (ptr) d←v7148)+1) ),
                           BCK(i←v7308, limit58)
                           )) ),  *(float*)&x59
                     ) + (
                     x60 = (*  (ptr) &fc26 ),  *(float*)&x60
                     );
                  };
SOURCE(5772, 21)
               var←c22784 = (word) (long int)*(float*)&(real←v20632);
               var←c22752 = SGNCK(var←c22784);
               };
            {
               word var←c22848;
               {
                  word limit61;
                  var←c22848 = (* ((( (ptr) pixelsOut←v18400)+2)+(
                        limit61 = (* (( (ptr) pixelsOut←v18400)+1) ),
                        BCK(i←v7308, limit61)
                        )) );
                  };
               {
                  word idx62;
                  word limit63;
                  (* ((( (ptr) var←c22848)+2)+(
                        idx62 = (word) var←c24992.f7/* j←v7220 */ ,
                        limit63 = (* (( (ptr) var←c22848)+1) ),
                        BCK(idx62, limit63)
                        )) ) = var←c22752;
                  };
               };
            };
         i←v7308 = (i←v7308 + 1);
         if ((i←v7308 < (* (( (ptr) formal←c25024)+9) ))) {
            goto lab←L100022;
            };
         lab←L100019: ;
         };
      var←c24992.f7/* j←v7220 */  = (var←c24992.f7/* j←v7220 */  + 1);
      if ((var←c24992.f7/* j←v7220 */  < noName←c22720)) {
         goto lab←L100018;
         };
      lab←L100015: ;
      };
   }

static word pixelIn←P1752(i←v18700, formal←c25056)
   word i←v18700;
   word formal←c25056;
   {
   word var←c18744;
   word v←v7352;
   formal←c25056 = (formal←c25056 - 20);
   /* pixelIn: */ 
SOURCE(6507, 21)
SOURCE(6530, 28)
   {
      word var←c22880;
      {
         word limit64;
         var←c22880 = (* ((( (ptr) (* (( (ptr) formal←c25056)+4) ))+2)+(
               limit64 = (* (( (ptr) (* (( (ptr) formal←c25056)+4) ))+1) ),
               BCK(i←v18700, limit64)
               )) );
         };
      {
         word idx65;
         word limit66;
         v←v7352 = (* ((( (ptr) var←c22880)+2)+(
               idx65 = (* (( (ptr) formal←c25056)+7) ),
               limit66 = (* (( (ptr) var←c22880)+1) ),
               BCK(idx65, limit66)
               )) );
         };
      };
SOURCE(6560, 146)
   if (((* (( (ptr) (*  (ptr) formal←c25056 ))+12) ) == 0)) {
SOURCE(6588, 16)
      {
         float tf67;
         return((
            tf67 = (float)(unsigned)v←v7352,  *(word*)&tf67
            ));
         };
      }
   else {
SOURCE(6604, 104)
      {
         word limit←v7396;
SOURCE(6606, 41)
         {
            word limit68;
            word idx69;
            limit←v7396 = (
               idx69 = (word) ((*  (ptr) (* ((( (ptr) (* (( (ptr) (*  (ptr) formal←c25056 ))+12) ))+1)+(
                     limit68 = (*  (ptr) (* (( (ptr) (*  (ptr) formal←c25056 ))+12) ) ),
                     BCK(i←v18700, limit68)
                     )) ) ) - 1),
               SGNCK(idx69)
               );
            };
SOURCE(6649, 27)
         if ((v←v7352 > limit←v7396)) {
SOURCE(6667, 9)
            v←v7352 = limit←v7396;
            };
SOURCE(6678, 28)
         {
            word var←c22912;
            {
               word limit70;
               var←c22912 = (* ((( (ptr) (* (( (ptr) (*  (ptr) formal←c25056 ))+12) ))+1)+(
                     limit70 = (*  (ptr) (* (( (ptr) (*  (ptr) formal←c25056 ))+12) ) ),
                     BCK(i←v18700, limit70)
                     )) );
               };
            {
               word limit71;
               return((* ((( (ptr) var←c22912)+1)+(
                     limit71 = (*  (ptr) var←c22912 ),
                     BCK(v←v7352, limit71)
                     )) ));
               };
            };
         };
      };
   }

static void InitOtherCases←P780()
   {
   register ptr gf←c25088 =  (ptr) &globalframe;
   /* InitOtherCases: */ 
SOURCE(7009, 237)
SOURCE(7034, 101)
   {
      word var←c22944;
      var←c22944 = (word) MakeAccelerator←P60(1000, (* (( (ptr) gf←c25088)+19) ), 0, (word) (( (bPt) gf←c25088)+92)/* var←c20864 */ , 0)
      ;
      (void) RegisterAccelerator←P120(var←c22944);
      };
SOURCE(7137, 109)
   {
      word var←c22976;
      var←c22976 = (word) MakeAccelerator←P60(2000, (* (( (ptr) gf←c25088)+20) ), 0, (word) (( (bPt) gf←c25088)+84)/* var←c20832 */ , 0)
      ;
      (void) RegisterAccelerator←P120(var←c22976);
      };
   }

static word OneDimTranslate←P840(self←v5448, colorOperator←v5476, transform←v5504, maxIn←v5532, translateAction←v5560)
   word self←v5448;
   word colorOperator←v5476;
   word transform←v5504;
   word maxIn←v5532;
   word translateAction←v5560;
   {
   W12 var←c25120;
   register ptr gf←c25152 =  (ptr) &globalframe;
   word var←c5664;
   /* declaration of var←c23008 skipped */ 
   /* declaration of var←c23040 skipped */ 
   word dimIn←v7440;
   /* OneDimTranslate: */ 
SOURCE(7252, 2365)
   {
      word tmpAddr72;
      tmpAddr72 = (word) (( (ptr) &var←c25120)+4)/* var←c23008 */ ;
      (*  (ptr) tmpAddr72 ) = ( ((word)  (fPt) pixelIn←P2112) );
      (* (( (ptr) tmpAddr72) + 1) ) = 1;
      };
   {
      word tmpAddr73;
      tmpAddr73 = (word) (( (ptr) &var←c25120)+6)/* var←c23040 */ ;
      (*  (ptr) tmpAddr73 ) = ( ((word)  (fPt) TableTranslate←P1956) );
      (* (( (ptr) tmpAddr73) + 1) ) = 1;
      };
SOURCE(7452, 44)
   dimIn←v7440 = (* (( (ptr) colorOperator←v5476)+1) );
SOURCE(7498, 2099)
   if ((dimIn←v7440 == 1)) {
SOURCE(7516, 2083)
      {
         word colorSpace←v7484;
         word dim←v7512;
         /* declaration of samplesPerPixelOut←v7540 skipped */ 
         /* declaration of pixelEncoding←v7568 skipped */ 
         word maxIn0←v7596;
         /* declaration of table←v7624 skipped */ 
         word d←v7680;
         word v←v7708;
         word class←v7736;
SOURCE(7518, 41)
         colorSpace←v7484 = (*  (ptr) transform←v5504 );
SOURCE(7561, 42)
         {
            word pd74;
            pd74 = (* (( (ptr) (* (( (ptr) gf←c25152)+53)/* var←c22656 */  ))+39) );
            dim←v7512 = (word) ( *( (fPt) ((*  (ptr) pd74 ))))(colorSpace←v7484, pd74);
            };
SOURCE(7605, 48)
         (* (( (ptr) &var←c25120)+8)/* samplesPerPixelOut←v7540 */  ) = (* (( (ptr) (* (( (ptr) transform←v5504)+1) ))+1) );
SOURCE(7655, 74)
         {
            word pd75;
            pd75 = (* (( (ptr) (* (( (ptr) gf←c25152)+53)/* var←c22656 */  ))+40) );
            (* (( (ptr) &var←c25120)+9)/* pixelEncoding←v7568 */  ) = (word) ( *( (fPt) ((*  (ptr) pd75 ))))(colorOperator←v5476, pd75)
            ;
            };
SOURCE(7731, 27)
         maxIn0←v7596 = (word) ( *( (fPt) ((*  (ptr) maxIn←v5532 ))))(0, maxIn←v5532);
SOURCE(7760, 82)
         {
            word pd76;
            pd76 = (* (( (ptr) (* (( (ptr) gf←c25152)+52)/* var←c22368 */  ))+5) );
            (* (( (ptr) &var←c25120)+10)/* table←v7624 */  ) = (word) ( *( (fPt) ((*  (ptr) pd76 ))))((* (( (ptr) &var←c25120)+8)/* samplesPerPixelOut←v7540 */  ), (maxIn0←v7596 + 
               1), pd76);
            };
SOURCE(9008, 50)
         {
            word pd77;
            pd77 = (* (( (ptr) (* (( (ptr) gf←c25152)+53)/* var←c22656 */  ))+35) );
            d←v7680 = (word) ( *( (fPt) ((*  (ptr) pd77 ))))((* (( (ptr) &var←c25120)+8)/* samplesPerPixelOut←v7540 */  ), (*  (ptr) &fc50 ), pd77)
            ;
            };
SOURCE(9060, 35)
         {
            word pd78;
            pd78 = (* (( (ptr) (* (( (ptr) gf←c25152)+53)/* var←c22656 */  ))+35) );
            v←v7708 = (word) ( *( (fPt) ((*  (ptr) pd78 ))))(dim←v7512, (*  (ptr) &fc50 ), pd78);
            };
SOURCE(9097, 47)
         class←v7736 = (* (( (ptr) colorOperator←v5476)+2) );
SOURCE(9146, 293)
         {
            /* declaration of s0←v7780 skipped */ 
            (* (( (ptr) &var←c25120)+11)/* s0←v7780 */  ) = 0;
            if (((* (( (ptr) &var←c25120)+11)/* s0←v7780 */  ) > maxIn0←v7596)) {
               goto lab←L100024;
               };
            lab←L100027: ;
SOURCE(9277, 50)
            {
               word pd79;
               pd79 = (* (( (ptr) class←v7736)+4) );
               (void) ( *( (fPt) ((*  (ptr) pd79 ))))(colorOperator←v5476, (word) (( (bPt) &var←c25120)+16)/* var←c23008 */ , colorSpace←v7484, v←v7708, pd79)
               ;
               };
SOURCE(9329, 31)
            {
               word pd80;
               pd80 = (* (( (ptr) transform←v5504)+2) );
               (void) ( *( (fPt) ((*  (ptr) pd80 ))))(transform←v5504, v←v7708, d←v7680, pd80);
               };
SOURCE(9362, 77)
            {
               register word i←v7868 = 0;
               if ((i←v7868 >= (* (( (ptr) &var←c25120)+8)/* samplesPerPixelOut←v7540 */  ))) {
                  goto lab←L100028;
                  };
               lab←L100031: ;
SOURCE(9403, 36)
               {
                  word var←c23072;
                  {
                     word var←c23104;
                     word real←v20556;
                     {
                        word limit81;
                        word x82;
                        word x83;
                        *(float*)&real←v20556 = (
                           x82 = (* ((( (ptr) d←v7680)+2)+(
/*1*/      limit81 = (* (( (ptr) d←v7680)+1) ),
/*1*/      BCK(i←v7868, limit81)
/*1*/      )) ),  *(float*)&x82
                           ) + (
                           x83 = (*  (ptr) &fc26 ),  *(float*)&x83
                           );
                        };
SOURCE(5772, 21)
                     var←c23104 = (word) (long int)*(float*)&(real←v20556);
                     var←c23072 = (MAX((int)(word), var←c23104, 0));
                     };
                  {
                     word var←c23168;
                     {
                        word limit84;
                        var←c23168 = (* ((( (ptr) (* (( (ptr) &var←c25120)+10)/* table←v7624 */  ))+2)+(
/*1*/   limit84 = (* (( (ptr) (* (( (ptr) &var←c25120)+10)/* table←v7624 */  ))+1) ),
/*1*/   BCK(i←v7868, limit84)
/*1*/   )) );
                        };
                     {
                        word idx85;
                        word limit86;
                        (* ((( (ptr) var←c23168)+2)+(
/*1*/   idx85 = (* (( (ptr) &var←c25120)+11)/* s0←v7780 */  ),
/*1*/   limit86 = (* (( (ptr) var←c23168)+1) ),
/*1*/   BCK(idx85, limit86)
/*1*/   )) ) = var←c23072;
                        };
                     };
                  };
               i←v7868 = (i←v7868 + 1);
               if ((i←v7868 < (* (( (ptr) &var←c25120)+8)/* samplesPerPixelOut←v7540 */  ))) {
                  goto lab←L100031;
                  };
               lab←L100028: ;
               };
            if (((* (( (ptr) &var←c25120)+11)/* s0←v7780 */  ) >= maxIn0←v7596)) {
               goto lab←L100024;
               };
            (* (( (ptr) &var←c25120)+11)/* s0←v7780 */  ) = ((* (( (ptr) &var←c25120)+11)/* s0←v7780 */  ) + 1);
            goto lab←L100027;
            lab←L100024: ;
            };
SOURCE(9459, 31)
         (void) ( *( (fPt) ((*  (ptr) translateAction←v5560 ))))((word) ((( (bPt) &var←c25120)+24)/* var←c23040 */ ), translateAction←v5560)
         ;
SOURCE(9492, 39)
         {
            word pd87;
            pd87 = (* (( (ptr) (* (( (ptr) gf←c25152)+52)/* var←c22368 */  ))+6) );
            (void) ( *( (fPt) ((*  (ptr) pd87 ))))((* ((( (ptr) &var←c25120)+10)/* table←v7624 */ ) ), pd87);
            };
SOURCE(9533, 24)
         {
            word pd88;
            pd88 = (* (( (ptr) (* (( (ptr) gf←c25152)+53)/* var←c22656 */  ))+36) );
            v←v7708 = (word) ( *( (fPt) ((*  (ptr) pd88 ))))(v←v7708, pd88);
            };
SOURCE(9559, 24)
         {
            word pd89;
            pd89 = (* (( (ptr) (* (( (ptr) gf←c25152)+53)/* var←c22656 */  ))+36) );
            d←v7680 = (word) ( *( (fPt) ((*  (ptr) pd89 ))))(d←v7680, pd89);
            };
SOURCE(9585, 12)
         return(1);
         };
      };
SOURCE(9602, 15)
   return(0);
   }

static void TableTranslate←P1956(pixelsIn←v19328, pixelsOut←v19356, formal←c25216)
   word pixelsIn←v19328;
   word pixelsOut←v19356;
   word formal←c25216;
   {
   register ptr gf←c25184 =  (ptr) &globalframe;
   word count←v7976;
   formal←c25216 = (formal←c25216 - 24);
   /* TableTranslate: */ 
SOURCE(7844, 40)
SOURCE(7886, 28)
   count←v7976 = (*  (ptr) pixelsIn←v19328 );
SOURCE(7916, 1069)
   {
      register word i←v8020 = 0;
      if ((i←v8020 >= (* (( (ptr) formal←c25216)+8) ))) {
         goto lab←L100033;
         };
      lab←L100036: ;
      {
         word samplesIn←v8064;
         word samplesOut←v8092;
         word samplesTable←v8120;
         word max←v8148;
         word pointerIn←v8176;
         word pointerOut←v8204;
         word pointerTable←v8232;
SOURCE(7957, 37)
         {
            word limit90;
            samplesIn←v8064 = (* ((( (ptr) pixelsIn←v19328)+2)+(
                  limit90 = (* (( (ptr) pixelsIn←v19328)+1) ),
                  BCK(0, limit90)
                  )) );
            };
SOURCE(7996, 39)
         {
            word limit91;
            samplesOut←v8092 = (* ((( (ptr) pixelsOut←v19356)+2)+(
                  limit91 = (* (( (ptr) pixelsOut←v19356)+1) ),
                  BCK(i←v8020, limit91)
                  )) );
            };
SOURCE(8037, 37)
         {
            word limit92;
            samplesTable←v8120 = (* ((( (ptr) (* (( (ptr) formal←c25216)+10) ))+2)+(
                  limit92 = (* (( (ptr) (* (( (ptr) formal←c25216)+10) ))+1) ),
                  BCK(i←v8020, limit92)
                  )) );
            };
SOURCE(8076, 37)
         {
            word idx93;
            max←v8148 = (
               idx93 = (word) ((*  (ptr) samplesTable←v8120 ) - 1),
               SGNCK(idx93)
               );
            };
SOURCE(8115, 103)
         {
            word pd94;
            pd94 = (* (( (ptr) (* (( (ptr) gf←c25184)+54)/* var←c23200 */  ))+9) );
            pointerIn←v8176 = (word) ( *( (fPt) ((*  (ptr) pd94 ))))(samplesIn←v8064, 0, count←v7976, pd94);
            };
SOURCE(8220, 105)
         {
            word pd95;
            pd95 = (* (( (ptr) (* (( (ptr) gf←c25184)+54)/* var←c23200 */  ))+9) );
            pointerOut←v8204 = (word) ( *( (fPt) ((*  (ptr) pd95 ))))(samplesOut←v8092, 0, count←v7976, pd95);
            };
SOURCE(8327, 107)
         {
            word pd96;
            pd96 = (* (( (ptr) (* (( (ptr) gf←c25184)+54)/* var←c23200 */  ))+9) );
            pointerTable←v8232 = (word) ( *( (fPt) ((*  (ptr) pd96 ))))(samplesTable←v8120, 0, SGNCK(max←v8148), pd96);
            };
SOURCE(8532, 300)
         {
            register word noName←c23232 = 0;
            register word noName←c23264;
            noName←c23264 = ((word) count←v7976 >> 2);
            if ((noName←c23232 >= noName←c23264)) {
               goto lab←L100037;
               };
            lab←L100040: ;
SOURCE(8556, 52)
            {
               word x97;
               (*  (ptr) pointerOut←v8204 ) = (* (( (ptr) pointerTable←v8232)+(x97 = (*  (ptr) pointerIn←v8176 ),
                     MIN( (unsigned) , x97, max←v8148))) );
               };
SOURCE(8610, 52)
            {
               word x98;
               (* (( (ptr) pointerOut←v8204)+1) ) = (* (( (ptr) pointerTable←v8232)+(x98 = (* (( (ptr) pointerIn←v8176)+1) ),
                     MIN( (unsigned) , x98, max←v8148))) );
               };
SOURCE(8664, 52)
            {
               word x99;
               (* (( (ptr) pointerOut←v8204)+2) ) = (* (( (ptr) pointerTable←v8232)+(x99 = (* (( (ptr) pointerIn←v8176)+2) ),
                     MIN( (unsigned) , x99, max←v8148))) );
               };
SOURCE(8718, 52)
            {
               word x100;
               (* (( (ptr) pointerOut←v8204)+3) ) = (* (( (ptr) pointerTable←v8232)+(x100 = (* (( (ptr) pointerIn←v8176)+3) ),
                     MIN( (unsigned) , x100, max←v8148))) );
               };
SOURCE(8772, 28)
            pointerIn←v8176 = (pointerIn←v8176 + 16);
SOURCE(8802, 30)
            pointerOut←v8204 = (pointerOut←v8204 + 16);
            noName←c23232 = (noName←c23232 + 1);
            if ((noName←c23232 < noName←c23264)) {
               goto lab←L100040;
               };
            lab←L100037: ;
            };
SOURCE(8843, 142)
         {
            register word noName←c23296 = 0;
            register word noName←c23328;
            noName←c23328 = (count←v7976 & 3);
            if ((noName←c23296 >= noName←c23328)) {
               goto lab←L100041;
               };
            lab←L100044: ;
SOURCE(8871, 52)
            {
               word x101;
               (*  (ptr) pointerOut←v8204 ) = (* (( (ptr) pointerTable←v8232)+(x101 = (*  (ptr) pointerIn←v8176 ),
                     MIN( (unsigned) , x101, max←v8148))) );
               };
SOURCE(8925, 28)
            pointerIn←v8176 = (pointerIn←v8176 + 4);
SOURCE(8955, 30)
            pointerOut←v8204 = (pointerOut←v8204 + 4);
            noName←c23296 = (noName←c23296 + 1);
            if ((noName←c23296 < noName←c23328)) {
               goto lab←L100044;
               };
            lab←L100041: ;
            };
         };
      i←v8020 = (i←v8020 + 1);
      if ((i←v8020 < (* (( (ptr) formal←c25216)+8) ))) {
         goto lab←L100036;
         };
      lab←L100033: ;
      };
   }

static word pixelIn←P2112(i←v19416, formal←c25280)
   word i←v19416;
   word formal←c25280;
   {
   register ptr gf←c25248 =  (ptr) &globalframe;
   word var←c19460;
   word check←v7912;
   formal←c25280 = (formal←c25280 - 16);
   /* pixelIn: */ 
SOURCE(9181, 21)
SOURCE(9204, 17)
   check←v7912 = BCK(i←v19416, 1);
SOURCE(9223, 49)
   {
      word pd102;
      float tf103;
      pd102 = (* (( (ptr) (* (( (ptr) gf←c25248)+53)/* var←c22656 */  ))+21) );
      return((word) ( *( (fPt) ((*  (ptr) pd102 ))))((* (( (ptr) formal←c25280)+9) ), i←v19416, (
            tf103 = (float)(unsigned)(* (( (ptr) formal←c25280)+11) ),  *(word*)&tf103
            ), pd102));
      };
   }

static word SmallTableTranslate←P900(self←v5724, formal←c0344, formal←c0345, maxIn←v5808, translateAction←v5836)
   word self←v5724;
   word formal←c0344;
   word formal←c0345;
   word maxIn←v5808;
   word translateAction←v5836;
   {
   W27 var←c25312;
   /* declaration of colorOperator←v5752 skipped */ 
   /* declaration of transform←v5780 skipped */ 
   register ptr gf←c25344 =  (ptr) &globalframe;
   word var←c5940;
   /* declaration of var←c23392 skipped */ 
   /* declaration of var←c23424 skipped */ 
   /* declaration of var←c23456 skipped */ 
   /* declaration of dimIn←v8368 skipped */ 
   (* (( (ptr) &var←c25312)+4)/* colorOperator←v5752 */  ) = formal←c0344;
   (* (( (ptr) &var←c25312)+5)/* transform←v5780 */  ) = formal←c0345;
   /* SmallTableTranslate: */ 
SOURCE(9651, 4464)
   {
      word tmpAddr104;
      tmpAddr104 = (word) (( (ptr) &var←c25312)+6)/* var←c23392 */ ;
      (*  (ptr) tmpAddr104 ) = ( ((word)  (fPt) MultiDimTableTranslate←P2628) );
      (* (( (ptr) tmpAddr104) + 1) ) = 1;
      };
   {
      word tmpAddr105;
      tmpAddr105 = (word) (( (ptr) &var←c25312)+8)/* var←c23424 */ ;
      (*  (ptr) tmpAddr105 ) = ( ((word)  (fPt) PakNSav←P2568) );
      (* (( (ptr) tmpAddr105) + 1) ) = 1;
      };
   {
      word tmpAddr106;
      tmpAddr106 = (word) (( (ptr) &var←c25312)+10)/* var←c23456 */ ;
      (*  (ptr) tmpAddr106 ) = ( ((word)  (fPt) InitMultiDimTable←P2508) );
      (* (( (ptr) tmpAddr106) + 1) ) = 1;
      };
SOURCE(9855, 44)
   (* (( (ptr) &var←c25312)+12)/* dimIn←v8368 */  ) = (* (( (ptr) (* (( (ptr) &var←c25312)+4)/* colorOperator←v5752 */  ))+1)
    );
SOURCE(9901, 4191)
   if ( ( ((* (( (ptr) &var←c25312)+12)/* dimIn←v8368 */  ) > 0) ? ((* (( (ptr) (* (( (ptr) &var←c25312)+4)/* colorOperator←v5752 */  ))+1)
    ) <= 4) : 0 ) ) {
SOURCE(9960, 4137)
      {
         /* declaration of colorSpace←v8412 skipped */ 
         /* declaration of dim←v8440 skipped */ 
         /* declaration of samplesPerPixelOut←v8468 skipped */ 
         /* declaration of pixelEncoding←v8496 skipped */ 
         /* declaration of mask←v8524 skipped */ 
         /* declaration of packing←v8552 skipped */ 
         /* declaration of tableSize←v8580 skipped */ 
SOURCE(9962, 41)
         (* (( (ptr) &var←c25312)+13)/* colorSpace←v8412 */  ) = (*  (ptr) (* (( (ptr) &var←c25312)+5)/* transform←v5780 */  ) );
SOURCE(10005, 42)
         {
            word pd107;
            pd107 = (* (( (ptr) (* (( (ptr) gf←c25344)+53)/* var←c22656 */  ))+39) );
            (* (( (ptr) &var←c25312)+14)/* dim←v8440 */  ) = (word) ( *( (fPt) ((*  (ptr) pd107 ))))((* ((( (ptr) &var←c25312)+13)/* colorSpace←v8412 */ ) ), pd107)
            ;
            };
SOURCE(10049, 48)
         (* (( (ptr) &var←c25312)+15)/* samplesPerPixelOut←v8468 */  ) = (* (( (ptr) (* (( (ptr) (* (( (ptr) &var←c25312)+5)/* transform←v5780 */  ))+1)
             ))+1) );
SOURCE(10099, 74)
         {
            word pd108;
            pd108 = (* (( (ptr) (* (( (ptr) gf←c25344)+53)/* var←c22656 */  ))+40) );
            (* (( (ptr) &var←c25312)+16)/* pixelEncoding←v8496 */  ) = (word) ( *( (fPt) ((*  (ptr) pd108 ))))((* ((( (ptr) &var←c25312)+4)
               /* colorOperator←v5752 */ ) ), pd108);
            };
SOURCE(10175, 39)
         XR←FillWords(&(* (W4Pt) ((( (ptr) &var←c25312)+17)/* mask←v8524 */ )), 4, 0);
SOURCE(10268, 41)
         XR←FillWords(&(* (W4Pt) ((( (ptr) &var←c25312)+21)/* packing←v8552 */ )), 4, 0);
SOURCE(10336, 18)
         (* (( (ptr) &var←c25312)+25)/* tableSize←v8580 */  ) = 1;
SOURCE(10356, 256)
         {
            register word i←v8716 = 0;
            if ((i←v8716 >= (* (( (ptr) &var←c25312)+12)/* dimIn←v8368 */  ))) {
               goto lab←L100045;
               };
            lab←L100048: ;
            {
               word maxi←v8760;
               word bits←v8788 = 0;
               word m←v8816 = 1;
SOURCE(10384, 20)
               {
                  word idx109;
                  maxi←v8760 = (
                     idx109 = (word) ( *( (fPt) ((*  (ptr) maxIn←v5808 ))))(i←v8716, maxIn←v5808),
                     SGNCK(idx109)
                     );
                  };
SOURCE(10434, 50)
               lab←L100051: ;
               if ((m←v8816 <= maxi←v8760)) {
                  }
               else {
                  goto lab←L100049;
                  };
SOURCE(10452, 7)
               m←v8816 = ((word) m←v8816 << 1);
SOURCE(10461, 23)
               bits←v8788 = (bits←v8788 + 1);
               goto lab←L100051;
               lab←L100049: ;
SOURCE(10486, 17)
               (* ((( (ptr) &var←c25312)+21)/* packing←v8552 */ +BCK(i←v8716, 4)) ) = BCK(bits←v8788, 32);
SOURCE(10505, 13)
               (* ((( (ptr) &var←c25312)+17)/* mask←v8524 */ +BCK(i←v8716, 4)) ) = (m←v8816 - 1);
SOURCE(10520, 57)
               if (((* (( (ptr) &var←c25312)+25)/* tableSize←v8580 */  ) > (* (( (ptr) gf←c25344)+11)/* smallTableSize←v3560 */  ))) {
SOURCE(10557, 20)
                  (* (( (ptr) &var←c25312)+25)/* tableSize←v8580 */  ) = 2147483647;
SOURCE(10579, 5)
                  goto lab←L100046;
                  };
SOURCE(10587, 25)
               {
                  word idx110;
                  (* (( (ptr) &var←c25312)+25)/* tableSize←v8580 */  ) = (
                     idx110 = (word) ((* (( (ptr) &var←c25312)+25)/* tableSize←v8580 */  ) * m←v8816),
                     SGNCK(idx110)
                     );
                  };
               };
            i←v8716 = (i←v8716 + 1);
            if ((i←v8716 < (* (( (ptr) &var←c25312)+12)/* dimIn←v8368 */  ))) {
               goto lab←L100048;
               };
            lab←L100045: ;
            lab←L100046: ;
            };
SOURCE(10623, 3469)
         if (((* (( (ptr) &var←c25312)+25)/* tableSize←v8580 */  ) <= (* (( (ptr) gf←c25344)+11)/* smallTableSize←v3560 */  ))) {
SOURCE(10659, 3435)
            {
               /* declaration of table←v8916 skipped */ 
SOURCE(12468, 40)
               (* (( (ptr) &var←c25312)+26)/* table←v8916 */  ) = (word) InitMultiDimTable←P2508((word) ((( (bPt) &var←c25312)+40)/* var←c23456 */ ))
               ;
SOURCE(13998, 39)
               (void) ( *( (fPt) ((*  (ptr) translateAction←v5836 ))))((word) ((( (bPt) &var←c25312)+24)/* var←c23392 */ ), translateAction←v5836)
               ;
SOURCE(14039, 39)
               {
                  word pd111;
                  pd111 = (* (( (ptr) (* (( (ptr) gf←c25344)+52)/* var←c22368 */  ))+6) );
                  (void) ( *( (fPt) ((*  (ptr) pd111 ))))((* ((( (ptr) &var←c25312)+26)/* table←v8916 */ ) ), pd111);
                  };
SOURCE(14080, 12)
               return(1);
               };
            };
         };
      };
SOURCE(14100, 15)
   return(0);
   }

static word InitMultiDimTable←P2508(formal←c25440)
   word formal←c25440;
   {
   W10 var←c25376;
   register ptr gf←c25408 =  (ptr) &globalframe;
   word var←c9020;
   /* declaration of var←c23552 skipped */ 
   word table←v9288;
   word d←v9316;
   word v←v9344;
   word class←v9372;
   formal←c25440 = (formal←c25440 - 40);
   (*  (ptr) &var←c25376 ) = formal←c25440;
   /* InitMultiDimTable: */ 
SOURCE(10661, 33)
   {
      word tmpAddr112;
      tmpAddr112 = (word) (( (ptr) &var←c25376)+4)/* var←c23552 */ ;
      (*  (ptr) tmpAddr112 ) = ( ((word)  (fPt) PixelIn←P2880) );
      (* (( (ptr) tmpAddr112) + 1) ) = 1;
      };
SOURCE(10711, 83)
   {
      word pd113;
      pd113 = (* (( (ptr) (* (( (ptr) gf←c25408)+52)/* var←c22368 */  ))+5) );
      table←v9288 = (word) ( *( (fPt) ((*  (ptr) pd113 ))))((* (( (ptr) formal←c25440)+15) ), (* (( (ptr) formal←c25440)+25) ), pd113)
      ;
      };
SOURCE(10796, 50)
   {
      word pd114;
      pd114 = (* (( (ptr) (* (( (ptr) gf←c25408)+53)/* var←c22656 */  ))+35) );
      d←v9316 = (word) ( *( (fPt) ((*  (ptr) pd114 ))))((* (( (ptr) formal←c25440)+15) ), (*  (ptr) &fc50 ), pd114);
      };
SOURCE(10848, 35)
   {
      word pd115;
      pd115 = (* (( (ptr) (* (( (ptr) gf←c25408)+53)/* var←c22656 */  ))+35) );
      v←v9344 = (word) ( *( (fPt) ((*  (ptr) pd115 ))))((* (( (ptr) formal←c25440)+14) ), (*  (ptr) &fc50 ), pd115);
      };
SOURCE(10885, 47)
   class←v9372 = (* (( (ptr) (* (( (ptr) formal←c25440)+4) ))+2) );
SOURCE(10934, 491)
   {
      register word packed←v9416 = 0;
      register word noName←c23584;
      noName←c23584 = (* (( (ptr) formal←c25440)+25) );
      if ((packed←v9416 >= noName←c23584)) {
         goto lab←L100052;
         };
      lab←L100055: ;
      {
         word p←v9460;
         /* declaration of s←v9488 skipped */ 
SOURCE(10976, 20)
         p←v9460 = packed←v9416;
SOURCE(11052, 108)
         {
            register word i←v9568;
            i←v9568 = (* (( (ptr) formal←c25440)+12) );
            if ((0 >= i←v9568)) {
               goto lab←L100056;
               };
            i←v9568 = (i←v9568 - 1);
            lab←L100059: ;
SOURCE(11091, 32)
            {
               word var←c23616;
               var←c23616 = (word) XRM←BITAND(p←v9460, (* ((( (ptr) formal←c25440)+17)+BCK(i←v9568, 4)) ));
               (* ((( (ptr) &var←c25376)+6)/* s←v9488 */ +BCK(i←v9568, 4)) ) = var←c23616;
               };
SOURCE(11125, 35)
            p←v9460 = (word) XRM←BITRSHIFT(p←v9460, (* ((( (ptr) formal←c25440)+21)+BCK(i←v9568, 4)) ));
            if ((0 >= i←v9568)) {
               goto lab←L100056;
               };
            i←v9568 = (i←v9568 - 1);
            goto lab←L100059;
            lab←L100056: ;
            };
SOURCE(11179, 257)
SOURCE(11259, 50)
         {
            word pd116;
            pd116 = (* (( (ptr) class←v9372)+4) );
            (void) ( *( (fPt) ((*  (ptr) pd116 ))))((* (( (ptr) formal←c25440)+4) ), (word) (( (bPt) &var←c25376)+16)/* var←c23552 */ , (* (
                  ( (ptr) formal←c25440)+13) ), v←v9344, pd116);
            };
SOURCE(11311, 31)
         {
            word pd117;
            pd117 = (* (( (ptr) (* (( (ptr) formal←c25440)+5) ))+2) );
            (void) ( *( (fPt) ((*  (ptr) pd117 ))))((* (( (ptr) formal←c25440)+5) ), v←v9344, d←v9316, pd117);
            };
SOURCE(11344, 81)
         {
            register word i←v9656 = 0;
            if ((i←v9656 >= (* (( (ptr) formal←c25440)+15) ))) {
               goto lab←L100060;
               };
            lab←L100063: ;
SOURCE(11385, 40)
            {
               word var←c23648;
               {
                  word var←c23680;
                  word real←v20480;
                  {
                     word limit118;
                     word x119;
                     word x120;
                     *(float*)&real←v20480 = (
                        x119 = (* ((( (ptr) d←v9316)+2)+(
/*1*/   limit118 = (* (( (ptr) d←v9316)+1) ),
/*1*/   BCK(i←v9656, limit118)
/*1*/   )) ),  *(float*)&x119
                        ) + (
                        x120 = (*  (ptr) &fc26 ),  *(float*)&x120
                        );
                     };
SOURCE(5772, 21)
                  var←c23680 = (word) (long int)*(float*)&(real←v20480);
                  var←c23648 = (MAX((int)(word), var←c23680, 0));
                  };
               {
                  word var←c23744;
                  {
                     word limit121;
                     var←c23744 = (* ((( (ptr) table←v9288)+2)+(
                           limit121 = (* (( (ptr) table←v9288)+1) ),
                           BCK(i←v9656, limit121)
                           )) );
                     };
                  {
                     word limit122;
                     (* ((( (ptr) var←c23744)+2)+(
                           limit122 = (* (( (ptr) var←c23744)+1) ),
                           BCK(packed←v9416, limit122)
                           )) ) = var←c23648;
                     };
                  };
               };
            i←v9656 = (i←v9656 + 1);
            if ((i←v9656 < (* (( (ptr) formal←c25440)+15) ))) {
               goto lab←L100063;
               };
            lab←L100060: ;
            };
         };
      packed←v9416 = (packed←v9416 + 1);
      if ((packed←v9416 < noName←c23584)) {
         goto lab←L100055;
         };
      lab←L100052: ;
      };
SOURCE(11448, 24)
   {
      word pd123;
      pd123 = (* (( (ptr) (* (( (ptr) gf←c25408)+53)/* var←c22656 */  ))+36) );
      v←v9344 = (word) ( *( (fPt) ((*  (ptr) pd123 ))))(v←v9344, pd123);
      };
SOURCE(11474, 24)
   {
      word pd124;
      pd124 = (* (( (ptr) (* (( (ptr) gf←c25408)+53)/* var←c22656 */  ))+36) );
      d←v9316 = (word) ( *( (fPt) ((*  (ptr) pd124 ))))(d←v9316, pd124);
      };
SOURCE(11500, 15)
   return(table←v9288);
   }

static word PixelIn←P2880(i←v20072, formal←c25504)
   word i←v20072;
   word formal←c25504;
   {
   register ptr gf←c25472 =  (ptr) &globalframe;
   word var←c20116;
   formal←c25504 = (formal←c25504 - 16);
   /* PixelIn: */ 
SOURCE(11181, 21)
SOURCE(11204, 52)
   {
      word pd125;
      float tf126;
      pd125 = (* (( (ptr) (* (( (ptr) gf←c25472)+53)/* var←c22656 */  ))+21) );
      return((word) ( *( (fPt) ((*  (ptr) pd125 ))))((* (( (ptr) (*  (ptr) formal←c25504 ))+16) ), i←v20072, (
            tf126 = (float)(unsigned)(* ((( (ptr) formal←c25504)+6)+BCK(i←v20072, 4)) ),  *(word*)&tf126
            ), pd125));
      };
   }

static word PakNSav←P2568(buf←v9080, p0←v9108, p1←v9136, p2←v9164, p3←v9192, formal←c25568)
   word buf←v9080;
   word p0←v9108;
   word p1←v9136;
   word p2←v9164;
   word p3←v9192;
   word formal←c25568;
   {
   register ptr gf←c25536 =  (ptr) &globalframe;
   word var←c9248;
   word count←v9700;
   word packed←v9728;
   word dimIn←v9756;
   word b1←v9784;
   word b2←v9812;
   word b3←v9840;
   word m0←v9868;
   word m1←v9896;
   word m2←v9924;
   word m3←v9952;
   formal←c25568 = (formal←c25568 - 32);
   /* PakNSav: */ 
SOURCE(11518, 22)
SOURCE(11683, 23)
   count←v9700 = (*  (ptr) buf←v9080 );
SOURCE(11708, 89)
   {
      word pd127;
      pd127 = (* (( (ptr) (* (( (ptr) gf←c25536)+54)/* var←c23200 */  ))+9) );
      packed←v9728 = (word) ( *( (fPt) ((*  (ptr) pd127 ))))(buf←v9080, 0, count←v9700, pd127);
      };
SOURCE(11799, 44)
   dimIn←v9756 = (* (( (ptr) (* (( (ptr) formal←c25568)+4) ))+1) );
SOURCE(11880, 24)
   b1←v9784 = (* (( (ptr) formal←c25568)+22) );
SOURCE(11906, 24)
   b2←v9812 = (* (( (ptr) formal←c25568)+23) );
SOURCE(11932, 24)
   b3←v9840 = (* (( (ptr) formal←c25568)+24) );
SOURCE(11958, 22)
   m0←v9868 = (* (( (ptr) formal←c25568)+17) );
SOURCE(11982, 22)
   m1←v9896 = (* (( (ptr) formal←c25568)+18) );
SOURCE(12006, 22)
   m2←v9924 = (* (( (ptr) formal←c25568)+19) );
SOURCE(12030, 22)
   m3←v9952 = (* (( (ptr) formal←c25568)+20) );
SOURCE(12054, 383)
   {
      register word j←v10068 = 0;
      if ((j←v10068 >= count←v9700)) {
         goto lab←L100065;
         };
      lab←L100068: ;
      {
         word s←v10112;
SOURCE(12082, 38)
         s←v10112 = (word) XRM←BITAND((*  (ptr) p0←v9108 ), m0←v9868);
SOURCE(12122, 20)
         p0←v9108 = (p0←v9108 + 4);
SOURCE(12144, 272)
         if ((dimIn←v9756 > 1)) {
SOURCE(12164, 54)
            s←v10112 = ((word) XRM←BITLSHIFT(s←v10112, b1←v9784) + (word) XRM←BITAND((*  (ptr) p1←v9136 ), m1←v9896));
SOURCE(12220, 20)
            p1←v9136 = (p1←v9136 + 4);
SOURCE(12242, 54)
            s←v10112 = ((word) XRM←BITLSHIFT(s←v10112, b2←v9812) + (word) XRM←BITAND((*  (ptr) p2←v9164 ), m2←v9924));
SOURCE(12298, 20)
            p2←v9164 = (p2←v9164 + 4);
SOURCE(12320, 96)
            if ((dimIn←v9756 > 3)) {
SOURCE(12340, 54)
               s←v10112 = ((word) XRM←BITLSHIFT(s←v10112, b3←v9840) + (word) XRM←BITAND((*  (ptr) p3←v9192 ), m3←v9952));
SOURCE(12396, 20)
               p3←v9192 = (p3←v9192 + 4);
               };
            };
SOURCE(12424, 13)
         (* (( (ptr) packed←v9728)+j←v10068) ) = s←v10112;
         };
      j←v10068 = (j←v10068 + 1);
      if ((j←v10068 < count←v9700)) {
         goto lab←L100068;
         };
      lab←L100065: ;
      };
SOURCE(12448, 15)
   return(packed←v9728);
   }

static void MultiDimTableTranslate←P2628(formal←c0346, pixelsOut←v19664, formal←c25664)
   word formal←c0346;
   word pixelsOut←v19664;
   word formal←c25664;
   {
   W8 var←c25600;
   /* declaration of pixelsIn←v19636 skipped */ 
   register ptr gf←c25632 =  (ptr) &globalframe;
   /* declaration of var←c23808 skipped */ 
   /* declaration of count←v10156 skipped */ 
   word packedBuf←v10184;
   word check←v10212;
   word packed←v10240;
   formal←c25664 = (formal←c25664 - 24);
   var←c25600.f4/* pixelsIn←v19636 */  = formal←c0346;
   var←c25600.f0 = formal←c25664;
   /* MultiDimTableTranslate: */ 
SOURCE(12510, 48)
   {
      word tmpAddr128;
      tmpAddr128 = (word) (( (ptr) &var←c25600)+5)/* var←c23808 */ ;
      (*  (ptr) tmpAddr128 ) = ( ((word)  (fPt) PIn←P3084) );
      (* (( (ptr) tmpAddr128) + 1) ) = 1;
      };
SOURCE(12560, 28)
   var←c25600.f7/* count←v10156 */  = (*  (ptr) var←c25600.f4/* pixelsIn←v19636 */  );
SOURCE(12590, 57)
   {
      word var←c23840;
      var←c23840 = ((* (( (ptr) formal←c25664)+15) ) - 1);
      {
         word limit129;
         packedBuf←v10184 = (* ((( (ptr) pixelsOut←v19664)+2)+(
               limit129 = (* (( (ptr) pixelsOut←v19664)+1) ),
               BCK(var←c23840, limit129)
               )) );
         };
      };
SOURCE(12768, 40)
   {
      word idx130;
      check←v10212 = (
         idx130 = (word) ((*  (ptr) packedBuf←v10184 ) - var←c25600.f7/* count←v10156 */ ),
         BCK(idx130, 1)
         );
      };
SOURCE(12810, 95)
   {
      word var←c23872;
      word var←c23904;
      word var←c23936;
      word var←c23968;
      var←c23872 = (word) PIn←P3084(0, (word) (( (bPt) &var←c25600)+20)/* var←c23808 */ );
      var←c23904 = (word) PIn←P3084(1, (word) (( (bPt) &var←c25600)+20)/* var←c23808 */ );
      var←c23936 = (word) PIn←P3084(2, (word) (( (bPt) &var←c25600)+20)/* var←c23808 */ );
      var←c23968 = (word) PIn←P3084(3, (word) (( (bPt) &var←c25600)+20)/* var←c23808 */ );
      packed←v10240 = (word) PakNSav←P2568(packedBuf←v10184, var←c23872, var←c23904, var←c23936, var←c23968, (word) (( (bPt) formal←c25664)+32)
         );
      };
SOURCE(13121, 854)
   {
      register word i←v10460 = 0;
      if ((i←v10460 >= (* (( (ptr) formal←c25664)+15) ))) {
         goto lab←L100069;
         };
      lab←L100072: ;
      {
         word samplesTable←v10504;
         word pointerTable←v10532;
         word pointerIn←v10560;
         word pointerOut←v10588;
SOURCE(13162, 37)
         {
            word limit131;
            samplesTable←v10504 = (* ((( (ptr) (* (( (ptr) formal←c25664)+26) ))+2)+(
                  limit131 = (* (( (ptr) (* (( (ptr) formal←c25664)+26) ))+1) ),
                  BCK(i←v10460, limit131)
                  )) );
            };
SOURCE(13201, 108)
         {
            word pd132;
            pd132 = (* (( (ptr) (* (( (ptr) gf←c25632)+54)/* var←c23200 */  ))+9) );
            pointerTable←v10532 = (word) ( *( (fPt) ((*  (ptr) pd132 ))))(samplesTable←v10504, 0, (* (( (ptr) formal←c25664)+25) ), pd132)
            ;
            };
SOURCE(13311, 54)
         pointerIn←v10560 = packed←v10240;
SOURCE(13367, 107)
         {
            word pd133;
            word limit134;
            pd133 = (* (( (ptr) (* (( (ptr) gf←c25632)+54)/* var←c23200 */  ))+9) );
            pointerOut←v10588 = (word) ( *( (fPt) ((*  (ptr) pd133 ))))((* ((( (ptr) pixelsOut←v19664)+2)+(
                     limit134 = (* (( (ptr) pixelsOut←v19664)+1) ),
                     BCK(i←v10460, limit134)
                     )) ), 0, var←c25600.f7/* count←v10156 */ , pd133);
            };
SOURCE(13572, 260)
         {
            register word noName←c24000 = 0;
            register word noName←c24032;
            noName←c24032 = ((word) var←c25600.f7/* count←v10156 */  >> 2);
            if ((noName←c24000 >= noName←c24032)) {
               goto lab←L100073;
               };
            lab←L100076: ;
SOURCE(13596, 42)
            (*  (ptr) pointerOut←v10588 ) = (* (( (ptr) pointerTable←v10532)+(*  (ptr) pointerIn←v10560 )) );
SOURCE(13640, 42)
            (* (( (ptr) pointerOut←v10588)+1) ) = (* (( (ptr) pointerTable←v10532)+(* (( (ptr) pointerIn←v10560)+1) )) );
SOURCE(13684, 42)
            (* (( (ptr) pointerOut←v10588)+2) ) = (* (( (ptr) pointerTable←v10532)+(* (( (ptr) pointerIn←v10560)+2) )) );
SOURCE(13728, 42)
            (* (( (ptr) pointerOut←v10588)+3) ) = (* (( (ptr) pointerTable←v10532)+(* (( (ptr) pointerIn←v10560)+3) )) );
SOURCE(13772, 28)
            pointerIn←v10560 = (pointerIn←v10560 + 16);
SOURCE(13802, 30)
            pointerOut←v10588 = (pointerOut←v10588 + 16);
            noName←c24000 = (noName←c24000 + 1);
            if ((noName←c24000 < noName←c24032)) {
               goto lab←L100076;
               };
            lab←L100073: ;
            };
SOURCE(13843, 132)
         {
            register word noName←c24064 = 0;
            register word noName←c24096;
            noName←c24096 = (var←c25600.f7/* count←v10156 */  & 3);
            if ((noName←c24064 >= noName←c24096)) {
               goto lab←L100077;
               };
            lab←L100080: ;
SOURCE(13871, 42)
            (*  (ptr) pointerOut←v10588 ) = (* (( (ptr) pointerTable←v10532)+(*  (ptr) pointerIn←v10560 )) );
SOURCE(13915, 28)
            pointerIn←v10560 = (pointerIn←v10560 + 4);
SOURCE(13945, 30)
            pointerOut←v10588 = (pointerOut←v10588 + 4);
            noName←c24064 = (noName←c24064 + 1);
            if ((noName←c24064 < noName←c24096)) {
               goto lab←L100080;
               };
            lab←L100077: ;
            };
         };
      i←v10460 = (i←v10460 + 1);
      if ((i←v10460 < (* (( (ptr) formal←c25664)+15) ))) {
         goto lab←L100072;
         };
      lab←L100069: ;
      };
   }

static word PIn←P3084(i←v10376, formal←c25728)
   word i←v10376;
   word formal←c25728;
   {
   register ptr gf←c25696 =  (ptr) &globalframe;
   word var←c10420;
   formal←c25728 = (formal←c25728 - 20);
   /* PIn: */ 
SOURCE(12907, 18)
SOURCE(12996, 30)
   if (( (int)i←v10376 >=  (int)(* (( (ptr) (*  (ptr) formal←c25728 ))+12) ))) {
SOURCE(13015, 11)
      i←v10376 = ((* (( (ptr) (*  (ptr) formal←c25728 ))+12) ) - 1);
      };
SOURCE(13028, 26)
   if (( (int)i←v10376 <  (int)0)) {
SOURCE(13042, 12)
      return(0);
      };
SOURCE(13056, 62)
   {
      word pd135;
      word limit136;
      pd135 = (* (( (ptr) (* (( (ptr) gf←c25696)+54)/* var←c23200 */  ))+9) );
      return((word) ( *( (fPt) ((*  (ptr) pd135 ))))((* ((( (ptr) (* (( (ptr) formal←c25728)+4) ))+2)+(
               limit136 = (* (( (ptr) (* (( (ptr) formal←c25728)+4) ))+1) ),
               BCK(i←v10376, limit136)
               )) ), 0, (* (( (ptr) formal←c25728)+7) ), pd135));
      };
   }

/* file: ImagerColorTranslateImpl, module: ImagerColorTranslateImpl, compiled at: March 9, 1994 11:49:31 am PST */ 
extern void XR←install←ImagerColorTranslateImpl() {
   NoName←Q3480();
   }
extern void XR←run←ImagerColorTranslateImpl() { XR←Start(&globalframe); }