/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */
/* time: July 28, 1993 10:20:30 am PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: ImagerMaskCacheImpl, module: ImagerMaskCacheImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [665805338,2510502480] ImagerMaskCacheImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1;} W2;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {W8 f; W5 r;} W13;
typedef struct {W8 f; W8 r;} W16;
typedef W16 *W16Pt;
typedef struct {word f0, f1, f2;} W3;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {W16 f; W16 r;} W32;
typedef struct {W32 f; W32 r;} W64;
typedef struct {W64 f; W64 r;} W128;
typedef struct {W128 f; W128 r;} W256;
typedef W256 *W256Pt;
#define SOURCE(p, l) /* source p, l */
static float fc25 = 0.10;
static float fc26 = 1.2;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define IOP2(op, x, y) ( (word) ((x) op (y)) )
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
#define MAX(cast, x, y) ( ( cast x) > ( cast y) ? (x) : (y) )
#define MIN(cast, x, y) ( ( cast x) < ( cast y) ? (x) : (y) )
static float fc108 = 1.0;
static float fc109 = 0.0;
static float fc110 = 2000.0;
static void NoName←Q3384();
static void ImagerMaskCacheImpl←P0();
static word BitmapFromCharMask←P120();
static void boxGenerator←P1884();
static void BoxesFromCharMask←P180();
static word RasterCharMaskFromManhattan←P240();
static word RasterCharMaskFromSampleMap←P300();
static word RunsCharMaskFromManhattan←P360();
static void AppendRun←P2376();
static word CountRuns←P420();
static word NewGeneration←P480();
static word Create←P540();
static word Occupancy←P600();
static word Size←P660();
static word Fetch←P720();
static word HashCharAndFont←P780();
static word FetchInternal←P840();
static word GetParameters←P900();
static void UpdateParameters←P960();
static word NoName←Q3444();
static void Store←P1020();
static word StoreInternal←P1080();
static void Dillon←P1140();
static void EraseInternal←P1200();
static void Launder←P1260();
static void Flush←P1320();
static word GetList←P1380();
static word GetNamedCache←P1440();
static void SetNamedCacheParameters←P1500();
static void FlushAll←P1560();
static word epa←P3024();
static word ObtainSmallCache←P1620();
static void ReleaseSmallCache←P1680();
static void NoName←Q3504();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300\047\257\142\032\300\225\243\072\120\101\050\000\000"};
static struct {unsigned f; char r[4];} string2 = {196611, "\004C0"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\254\224\163\216\300\143\061\230\115\100\214\000\000"};
static struct {unsigned f; char r[4];} string4 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\047\257\142\032\300\225\243\072\120\101\064\000\000"};
static struct {unsigned f; char r[12];} string6 = {524296, "\011\000\004\040\040\000\010\001\000\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\254\224\163\216\300\143\061\230\115\101\174\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\003\017\000"};
static struct {unsigned f; char r[24];} string9 = {1310744, "\205\210\242\000\100\377\216\257\300\254\224\163\216\300\143\061\230\115\100\260\000\000\000"};
static struct {unsigned f; char r[8];} string10 = {393222, "\010\000\004A\000\001\000"};
static struct {unsigned f; char r[44];} string11 = {2752556, "\260\007\006\154\145\156\147\164\150\210\241\000\200\177\377\005\004\164\145\170\164\254\206\012\011\155\141\170\114\145\156\147\164\150\210\241\000\200\177\377\243\261\000"};
static struct {unsigned f; char r[104];} string12 = {6684776, "\260\006\005\146\151\162\163\164\216\260\007\006\154\145\156\147\164\150\210\241\000\200\177\377\005\004\164\145\170\164\254\206\012\011\155\141\170\114\145\156\147\164\150\210\241\000\200\177\377\243\261\005\004\162\145\163\164\214\216\260\007\006\154\145\156\147\164\150\210\241\000\200\177\377\005\004\164\145\170\164\254\206\012\011\155\141\170\114\145\156\147\164\150\210\241\000\200\177\377\243\261\261\000"};
static struct {unsigned f; char r[4];} string13 = {131074, "\004\003\000"};
static struct {unsigned f; char r[48];} string14 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\254\224\163\216\300\143\061\230\115\100\214\005\004\162\145\163\164\214\216\257\300\254\224\163\216\300\143\061\230\115\100\214\261\000\000\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\047\257\142\032\300\225\243\072\120\100\200\000\000"};
static struct {unsigned f; char r[4];} string16 = {196611, "\004A0"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\350\311\135\367\300\362\215\374\250\100\150\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\213\226\301\143\300\072\355\320\373\100\150\000\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\041\257\203\366\300\322\161\356\007\100\150\000\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\246\205\220\035\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\242\221\264\046\300\105\142\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string22 = {851984, "\257\300\243\162\130\311\300\344\000\142\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string23 = {851984, "\257\300\254\224\163\216\300\143\061\230\115\100\150\000\000"};
static struct {unsigned f; char r[28];} string24 = {1638428, "\211\015\014\115\141\163\153\103\141\143\150\145\122\145\160\300\254\224\163\216\300\143\061\230\115\000\000"};
static struct {
word f0[27]; 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; word f71; word f72; word f73;
word f74; word f75; word f76; word f77;
word f78; word f79; word f80; word f81;
word f82[16];
} globalframe = {
{0}, (word) ReleaseSmallCache←P1680, 0, (word) ObtainSmallCache←P1620,
0, (word) FlushAll←P1560, 0, (word) SetNamedCacheParameters←P1500,
0, (word) GetNamedCache←P1440, 0, (word) GetList←P1380,
0, (word) Flush←P1320, 0, (word) Launder←P1260,
0, (word) EraseInternal←P1200, 0, (word) Dillon←P1140,
0, (word) StoreInternal←P1080, 0, (word) Store←P1020,
0, (word) UpdateParameters←P960, 0, (word) GetParameters←P900,
0, (word) FetchInternal←P840, 0, (word) HashCharAndFont←P780,
0, (word) Fetch←P720, 0, (word) Size←P660,
0, (word) Occupancy←P600, 0, (word) Create←P540,
0, (word) NewGeneration←P480, 0, (word) CountRuns←P420,
0, (word) RunsCharMaskFromManhattan←P360, 0, (word) RasterCharMaskFromSampleMap←P300,
0, (word) RasterCharMaskFromManhattan←P240, 0, (word) BoxesFromCharMask←P180,
0, (word) BitmapFromCharMask←P120, 0, (word) ImagerMaskCacheImpl←P0,
{0}
};
static void NoName←Q3384()
{
register ptr gf←c0259 = (ptr) &globalframe;
word var←c24440;
(* (( (ptr) gf←c0259)+11) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
(* (( (ptr) gf←c0259)+15) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
(* (( (ptr) gf←c0259)+18) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
(* (( (ptr) gf←c0259)+19) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
(* (( (ptr) gf←c0259)+20) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
(* (( (ptr) gf←c0259)+21) ) = (word) XR←GetTypeIndexS((word) (&string11));
(* (( (ptr) gf←c0259)+22) ) = (word) XR←GetTypeIndex((word) &string12, 0, (word) &string13);
(* (( (ptr) gf←c0259)+25) ) = (word) XR←GetTypeIndex((word) &string14, 0, (word) &string13);
(void) XR←DeclareGlobalFrame((word) "ImagerMaskCacheImpl", &globalframe, (word) XR←GetTypeIndex((word) &string15, 0, (word) &string16)
, (word) (( (bPt) gf←c0259)+324)/* var←c21656 */ );
var←c24440 = (word) XR←ImportInterface((word) "ImagerManhattan", (word) XR←GetTypeIndexS((word) (&string17)), 24);
(* (( (ptr) gf←c0259)+94)/* var←c23096 */ ) = var←c24440;
(void) XR←ImportProcS(var←c24440, 790275);
var←c24440 = (word) XR←ImportInterface((word) "ImagerSample", (word) XR←GetTypeIndexS((word) (&string18)), 60);
(* (( (ptr) gf←c0259)+93)/* var←c22072 */ ) = var←c24440;
(void) XR←ImportProcS(var←c24440, 2370822);
(void) XR←ImportProcS(var←c24440, 1847300);
(void) XR←ImportProcS(var←c24440, 268801);
(void) XR←ImportProcS(var←c24440, 538626);
(void) XR←ImportProcS(var←c24440, 68425474);
(void) XR←ImportProcS(var←c24440, 1062404);
(void) XR←ImportProcS(var←c24440, 273409);
(void) XR←ImportProcS(var←c24440, 68685571);
(void) XR←ImportProcS(var←c24440, 70259976);
var←c24440 = (word) XR←ImportInterface((word) "ImagerSys", (word) XR←GetTypeIndexS((word) (&string19)), 15);
(* (( (ptr) gf←c0259)+95)/* var←c23256 */ ) = var←c24440;
(void) XR←ImportProcS(var←c24440, 68158210);
(void) XR←ImportProcS(var←c24440, 67372033);
var←c24440 = (word) XR←ImportInterface((word) "Real", (word) XR←GetTypeIndexS((word) (&string20)), 11);
(* (( (ptr) gf←c0259)+96)/* var←c23896 */ ) = var←c24440;
(void) XR←ImportProcS(var←c24440, 67371777);
var←c24440 = (word) XR←ImportInterface((word) "RefTab", (word) XR←GetTypeIndexS((word) (&string21)), 16);
(* (( (ptr) gf←c0259)+91)/* var←c21816 */ ) = var←c24440;
(void) XR←ImportProcS(var←c24440, 67635458);
(void) XR←ImportProcS(var←c24440, 67896579);
(void) XR←ImportProcS(var←c24440, 134742786);
(void) XR←ImportProcS(var←c24440, 67895555);
var←c24440 = (word) XR←ImportInterface((word) "SF", (word) XR←GetTypeIndexS((word) (&string22)), 19);
(* (( (ptr) gf←c0259)+92)/* var←c21880 */ ) = var←c24440;
(void) XR←ImportProcS(var←c24440, 68161025);
(void) XR←ImportProcS(var←c24440, 68160769);
(void) XR←ImportProcS(var←c24440, 135266818);
(void) XR←ImportProcS(var←c24440, 135270145);
var←c24440 = (word) XR←ExportInterface((word) "ImagerMaskCache", (word) XR←GetTypeIndexS((word) (&string23)), 21);
(* (( (ptr) gf←c0259)+97)/* var←c24472 */ ) = var←c24440;
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+316)/* var←c21624 */ , 67371009, (word) "BitmapFromCharMask")
;
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+308)/* var←c21592 */ , 2097412, (word) "BoxesFromCharMask");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+292)/* var←c21528 */ , 67371521, (word) "RasterCharMaskFromSampleMap")
;
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+300)/* var←c21560 */ , 68420354, (word) "RasterCharMaskFromManhattan")
;
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+284)/* var←c21496 */ , 68682755, (word) "RunsCharMaskFromManhattan")
;
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+276)/* var←c21464 */ , 67372289, (word) "CountRuns");
(void) XR←ExportType((word) "MaskCacheRep", (word) XR←GetTypeIndexS((word) (&string24)), (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2)
);
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+260)/* var←c21400 */ , 71304961, (word) "Create");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+244)/* var←c21336 */ , 67373057, (word) "Size");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+236)/* var←c21304 */ , 67897603, (word) "Fetch");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+212)/* var←c21208 */ , 67373569, (word) "GetParameters");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+204)/* var←c21176 */ , 527106, (word) "UpdateParameters");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+196)/* var←c21144 */ , 527362, (word) "Store");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+156)/* var←c20984 */ , 265473, (word) "Flush");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+164)/* var←c21016 */ , 527874, (word) "Launder");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+148)/* var←c20952 */ , 67374849, (word) "GetList");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+140)/* var←c20920 */ , 67375105, (word) "GetNamedCache");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+132)/* var←c20888 */ , 4460802, (word) "SetNamedCacheParameters")
;
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+124)/* var←c20856 */ , 4608, (word) "FlushAll");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+116)/* var←c20824 */ , 67375873, (word) "ObtainSmallCache");
(void) XR←ExportProcS(var←c24440, (word) (( (bPt) gf←c0259)+108)/* var←c20792 */ , 529410, (word) "ReleaseSmallCache");
}
static void ImagerMaskCacheImpl←P0(formal←c048, formal←c047)
word formal←c048;
word formal←c047;
{
register ptr gf←c24504 = (ptr) &globalframe;
/* ImagerMaskCacheImpl: */
SOURCE(527, 12564)
(* (( (ptr) gf←c24504)+87) ) = 2147483648;
(* (( (ptr) gf←c24504)+88) ) = 2147483648;
(* (( (ptr) gf←c24504)+89) ) = 2147483647;
(* (( (ptr) gf←c24504)+90) ) = 2147483647;
SOURCE(6322, 80)
(* (( (ptr) gf←c24504)+4)/* nullCharMask←v3364 */ ) = (word) RasterCharMaskFromManhattan←P240(0, (* (W4Pt) (( (ptr) gf←c24504)+83)
/* var←c21720 */ ));
SOURCE(6404, 46)
(* (( (ptr) gf←c24504)+5)/* emptyGeneration←v3392 */ ) = (word) NewGeneration←P480(0);
SOURCE(9999, 24)
(* (( (ptr) gf←c24504)+6)/* discardRate←v3756 */ ) = (* (ptr) &fc25 );
SOURCE(10088, 24)
(* (( (ptr) gf←c24504)+7)/* growthFactor←v3784 */ ) = (* (ptr) &fc26 );
SOURCE(12138, 38)
{
word pd27;
pd27 = (* (( (ptr) (* (( (ptr) gf←c24504)+91)/* var←c21816 */ ))+5) );
(* (( (ptr) gf←c24504)+8)/* cacheTab←v4008 */ ) = (word) ( *( (fPt) ((* (ptr) pd27 ))))(17, 0, 0, pd27);
};
SOURCE(12325, 35)
(* (( (ptr) gf←c24504)+9)/* smallCacheFailLimit←v4064 */ ) = 500;
}
static word BitmapFromCharMask←P120(formal←c0298)
word formal←c0298;
{
W7 var←c24536;
/* declaration of charMask←v4356 skipped */
register ptr gf←c24568 = (ptr) &globalframe;
word var←c4400;
/* declaration of var←c21848 skipped */
W2 size←v8060;
var←c24536.f4/* charMask←v4356 */ = formal←c0298;
/* BitmapFromCharMask: */
SOURCE(1244, 888)
{
word tmpAddr28;
tmpAddr28 = (word) (( (ptr) &var←c24536)+5)/* var←c21848 */ ;
(* (ptr) tmpAddr28 ) = ( ((word) (fPt) boxGenerator←P1884) );
(* (( (ptr) tmpAddr28) + 1) ) = 1;
};
SOURCE(1334, 36)
{
word pd29;
pd29 = (* (( (ptr) (* (( (ptr) gf←c24568)+92)/* var←c21880 */ ))+19) );
(void) ( *( (fPt) ((* (ptr) pd29 ))))((word) &size←v8060, (* (W4Pt) (( (ptr) var←c24536.f4/* charMask←v4356 */ )+4) ), pd29)
;
};
SOURCE(1372, 760)
{
word var←c21912;
var←c21912 = var←c24536.f4/* charMask←v4356 */ ;
if ((var←c21912 == 0)) {
goto lab←L100000;
};
if (((* (( (ptr) var←c21912)+9) ) == 0)) {
{
word raster←v8104;
raster←v8104 = var←c21912;
SOURCE(1440, 330)
{
word wordsPerLine←v8160;
word bitmap←v8188;
SOURCE(1442, 61)
wordsPerLine←v8160 = ((word) (size←v8060.f1 + 31) >> 5);
SOURCE(1505, 247)
{
word var←c21944;
{
word raster←v20696;
raster←v20696 = raster←v8104;
SOURCE(1172, 68)
var←c21944 = (raster←v20696 + 44);
};
{
W2 var←c22008;
W2 var←c22040;
var←c22008.f0 = var←c21944;
var←c22008.f1 = 0;
var←c22040.f0 = 0;
var←c22040.f1 = 0;
{
word pd30;
word idx31;
pd30 = (* (( (ptr) (* (( (ptr) gf←c24568)+93)/* var←c22072 */ ))+25) );
bitmap←v8188 = (word) ( *( (fPt) ((* (ptr) pd30 ))))(size←v8060, 1, (
/*1*/ idx31 = (word) ((word) wordsPerLine←v8160 << 5),
/*1*/ SGNCK(idx31)
/*1*/ ), var←c22008, raster←v8104, IOP2( * , (int)wordsPerLine←v8160, (int)size←v8060.f0)
, var←c22040, (* (W2Pt) (( (ptr) var←c24536.f4/* charMask←v4356 */ )+4) ), pd30);
};
};
};
SOURCE(1754, 16)
return(bitmap←v8188);
};
};
}
else {
lab←L100000: ;
SOURCE(1784, 348)
{
word bitmap←v8232;
SOURCE(1786, 95)
{
word pd32;
pd32 = (* (( (ptr) (* (( (ptr) gf←c24568)+93)/* var←c22072 */ ))+19) );
bitmap←v8232 = (word) ( *( (fPt) ((* (ptr) pd32 ))))((* (W4Pt) (( (ptr) var←c24536.f4/* charMask←v4356 */ )+4) ), 1, 0, pd32)
;
};
SOURCE(2020, 26)
{
word pd33;
pd33 = (* (( (ptr) (* (( (ptr) gf←c24568)+93)/* var←c22072 */ ))+48) );
(void) ( *( (fPt) ((* (ptr) pd33 ))))(bitmap←v8232, pd33);
};
SOURCE(2048, 66)
{
word pd34;
pd34 = (* (( (ptr) (* (( (ptr) gf←c24568)+93)/* var←c22072 */ ))+58) );
(void) ( *( (fPt) ((* (ptr) pd34 ))))(bitmap←v8232, (word) (( (bPt) &var←c24536)+20)/* var←c21848 */ , 1, 0, pd34);
};
SOURCE(2116, 16)
return(bitmap←v8232);
};
};
};
}
static void boxGenerator←P1884(boxAction←v8336, formal←c24632)
word boxAction←v8336;
word formal←c24632;
{
register ptr gf←c24600 = (ptr) &globalframe;
formal←c24632 = (formal←c24632 - 20);
/* boxGenerator: */
SOURCE(1883, 42)
SOURCE(1954, 61)
{
W2 var←c22104;
var←c22104.f0 = 0;
var←c22104.f1 = 0;
(void) BoxesFromCharMask←P180((* (( (ptr) formal←c24632)+4) ), boxAction←v8336, var←c22104, (* (W4Pt) (( (ptr) gf←c24600)+87)
/* var←c21784 */ ));
};
}
static void BoxesFromCharMask←P180(charMask←v4460, boxAction←v4488, delta←v4516, clip←v4544)
word charMask←v4460;
word boxAction←v4488;
W2 delta←v4516;
W4 clip←v4544;
{
register ptr gf←c24664 = (ptr) &globalframe;
/* BoxesFromCharMask: */
SOURCE(2138, 1218)
SOURCE(2248, 1108)
{
word var←c22136;
var←c22136 = charMask←v4460;
if ((var←c22136 == 0)) {
goto lab←L100002;
};
{
word var←c22392;
var←c22392 = (* (( (ptr) var←c22136)+9) );
if ((var←c22392 == 0)) {
{
word raster←v8364;
raster←v8364 = var←c22136;
SOURCE(2316, 565)
{
W2 size←v8420;
word wordsPerLine←v8448;
word bitmap←v8476;
word clipped←v8504;
SOURCE(2318, 36)
{
word pd35;
pd35 = (* (( (ptr) (* (( (ptr) gf←c24664)+92)/* var←c21880 */ ))+19) );
(void) ( *( (fPt) ((* (ptr) pd35 ))))((word) &size←v8420, (* (W4Pt) (( (ptr) charMask←v4460)+4) ), pd35);
};
SOURCE(2356, 61)
wordsPerLine←v8448 = ((word) (size←v8420.f1 + 31) >> 5);
SOURCE(2419, 262)
{
word var←c22168;
W2 var←c22232;
{
word raster←v20648;
raster←v20648 = raster←v8364;
SOURCE(1172, 68)
var←c22168 = (raster←v20648 + 44);
};
{
word pd36;
pd36 = (* (( (ptr) (* (( (ptr) gf←c24664)+92)/* var←c21880 */ ))+6) );
(void) ( *( (fPt) ((* (ptr) pd36 ))))((word) &var←c22232, (* (W2Pt) (( (ptr) charMask←v4460)+4) ), delta←v4516, pd36);
};
{
W2 var←c22264;
W2 var←c22296;
var←c22264.f0 = var←c22168;
var←c22264.f1 = 0;
var←c22296.f0 = 0;
var←c22296.f1 = 0;
{
word pd37;
word idx38;
pd37 = (* (( (ptr) (* (( (ptr) gf←c24664)+93)/* var←c22072 */ ))+25) );
bitmap←v8476 = (word) ( *( (fPt) ((* (ptr) pd37 ))))(size←v8420, 1, (
/*1*/ idx38 = (word) ((word) wordsPerLine←v8448 << 5),
/*1*/ SGNCK(idx38)
/*1*/ ), var←c22264, raster←v8364, IOP2( * , (int)wordsPerLine←v8448, (int)size←v8420.f0)
/*1*/ , var←c22296, var←c22232, pd37);
};
};
};
SOURCE(2683, 65)
{
word pd39;
pd39 = (* (( (ptr) (* (( (ptr) gf←c24664)+93)/* var←c22072 */ ))+27) );
clipped←v8504 = (word) ( *( (fPt) ((* (ptr) pd39 ))))(bitmap←v8476, clip←v4544, pd39);
};
SOURCE(2750, 48)
{
word pd40;
pd40 = (* (( (ptr) (* (( (ptr) gf←c24664)+93)/* var←c22072 */ ))+60) );
(void) ( *( (fPt) ((* (ptr) pd40 ))))(clipped←v8504, boxAction←v4488, pd40);
};
SOURCE(2800, 38)
{
word pd41;
pd41 = (* (( (ptr) (* (( (ptr) gf←c24664)+93)/* var←c22072 */ ))+30) );
(void) ( *( (fPt) ((* (ptr) pd41 ))))(bitmap←v8476, pd41);
};
SOURCE(2840, 39)
{
word pd42;
pd42 = (* (( (ptr) (* (( (ptr) gf←c24664)+93)/* var←c22072 */ ))+30) );
(void) ( *( (fPt) ((* (ptr) pd42 ))))(clipped←v8504, pd42);
};
};
};
}
else {
if ((var←c22392 == 1)) {
{
word runGroup←v8548;
runGroup←v8548 = var←c22136;
SOURCE(2918, 449)
{
word s0←v8604;
word f0←v8632;
word s←v8660;
SOURCE(2920, 45)
s0←v8604 = (delta←v4516.f0 + (* (( (ptr) charMask←v4460)+4) ));
SOURCE(2967, 45)
f0←v8632 = (delta←v4516.f1 + (* (( (ptr) charMask←v4460)+5) ));
SOURCE(3014, 15)
s←v8660 = s0←v8604;
SOURCE(3031, 325)
{
register word i←v8704 = 0;
register word noName←c22328;
noName←c22328 = (* (( (ptr) runGroup←v8548)+10) );
if ((i←v8704 >= noName←c22328)) {
goto lab←L100004;
};
lab←L100007: ;
if (( (int)s←v8660 < (int)clip←v4544.f2)) {
}
else {
goto lab←L100004;
};
{
word r←v8748;
SOURCE(3089, 36)
{
/*1*/ word limit43;
/*1*/ r←v8748 = (* ((( (ptr) runGroup←v8548)+11)+(
/*1*/ limit43 = (* (( (ptr) runGroup←v8548)+10) ),
/*1*/ BCK(i←v8704, limit43)
/*1*/ )) );
/*1*/ };
SOURCE(3127, 197)
if (( (int)s←v8660 >= (int)clip←v4544.f0)) {
SOURCE(3151, 175)
/*1*/ {
/*1*/ word fMin←v8792;
/*1*/ word fMax←v8820;
SOURCE(3153, 47)
/*1*/ {
/*1*/ word x44;
/*1*/ word x45;
/*1*/ fMin←v8792 = (x44 = ( (unsigned) ((unsigned)r←v8748 >> 16) + f0←v8632),
/*1*/ x45 = clip←v4544.f1,
/*1*/ MAX((int)(word), x44, x45));
/*1*/ };
SOURCE(3202, 55)
/*1*/ {
/*1*/ word x46;
/*1*/ word x47;
/*1*/ fMax←v8820 = (x46 = (( (unsigned) ((unsigned)r←v8748 >> 16) + (unsigned) ( (((unsigned)r←v8748 << 17) >> 17) )) + f0←v8632),
/*1*/ x47 = clip←v4544.f3,
/*1*/ MIN((int)(word), x46, x47));
/*1*/ };
SOURCE(3259, 65)
/*1*/ if (( (int)fMax←v8820 > (int)fMin←v8792)) {
SOURCE(3279, 45)
/*1*/ {
/*1*/ W4 var←c22360;
/*1*/ var←c22360.f0 = s←v8660;
/*1*/ var←c22360.f1 = fMin←v8792;
/*1*/ var←c22360.f2 = (s←v8660 + 1);
/*1*/ var←c22360.f3 = fMax←v8820;
/*1*/ (void) ( *( (fPt) ((* (ptr) boxAction←v4488 ))))(var←c22360, boxAction←v4488);
/*1*/ };
/*1*/ };
/*1*/ };
/*1*/ };
SOURCE(3329, 27)
if (r←v8748 & 0100000) {
SOURCE(3347, 9)
/*1*/ s←v8660 = (s←v8660 + 1);
/*1*/ };
};
i←v8704 = (i←v8704 + 1);
if ((i←v8704 < noName←c22328)) {
goto lab←L100007;
};
lab←L100004: ;
};
};
};
}
else {
lab←L100002: ;
};
};
};
};
}
static word RasterCharMaskFromManhattan←P240(p←v4604, bb←v4632)
word p←v4604;
W4 bb←v4632;
{
register ptr gf←c24696 = (ptr) &globalframe;
word var←c4676;
word rast←v8864;
word bitmapWords←v8892;
/* RasterCharMaskFromManhattan: */
SOURCE(3391, 702)
SOURCE(3510, 63)
{
word pd48;
pd48 = (* (( (ptr) (* (( (ptr) gf←c24696)+92)/* var←c21880 */ ))+17) );
rast←v8864 = ((word) ((word) ( *( (fPt) ((* (ptr) pd48 ))))(bb←v4632, pd48) + 31) >> 5);
};
SOURCE(3575, 36)
{
word pd49;
word idx50;
pd49 = (* (( (ptr) (* (( (ptr) gf←c24696)+92)/* var←c21880 */ ))+18) );
bitmapWords←v8892 = (
idx50 = (word) ((word) ( *( (fPt) ((* (ptr) pd49 ))))(bb←v4632, pd49) * rast←v8864),
SGNCK(idx50)
);
};
SOURCE(3613, 480)
if (( (int)bitmapWords←v8892 > (int)32000)) {
SOURCE(3641, 26)
return(0);
}
else {
SOURCE(3667, 428)
{
word mask←v8936;
word bits←v8964;
SOURCE(3669, 72)
{
word var←c22424;
word var←c22456;
word var←c22488;
var←c22424 = SGNCK(bitmapWords←v8892);
var←c22456 = ((word) var←c22424 << 2);
var←c22488 = XR←NewObject((44 + var←c22456), (* (( (ptr) gf←c24696)+15) ));
(* (( (ptr) var←c22488)+10) ) = var←c22424;
mask←v8936 = var←c22488;
};
SOURCE(3743, 207)
{
W2 var←c22520;
word var←c22552;
{
word pd51;
pd51 = (* (( (ptr) (* (( (ptr) gf←c24696)+92)/* var←c21880 */ ))+19) );
(void) ( *( (fPt) ((* (ptr) pd51 ))))((word) &var←c22520, bb←v4632, pd51);
};
{
word raster←v20600;
raster←v20600 = mask←v8936;
SOURCE(1172, 68)
var←c22552 = (raster←v20600 + 44);
};
{
W2 var←c22616;
W2 var←c22648;
var←c22616.f0 = var←c22552;
var←c22616.f1 = 0;
var←c22648.f0 = 0;
var←c22648.f1 = 0;
{
word pd52;
word idx53;
pd52 = (* (( (ptr) (* (( (ptr) gf←c24696)+93)/* var←c22072 */ ))+25) );
bits←v8964 = (word) ( *( (fPt) ((* (ptr) pd52 ))))(var←c22520, 1, (
idx53 = (word) ((word) rast←v8864 << 5),
SGNCK(idx53)
), var←c22616, mask←v8936, bitmapWords←v8892
, var←c22648, (* (W2Pt) &bb←v4632 ), pd52);
};
};
};
SOURCE(3952, 13)
(* (W4Pt) (( (ptr) mask←v8936)+4) ) = bb←v4632;
SOURCE(3967, 64)
lab←L100011: ;
if ((p←v4604 != 0)) {
}
else {
goto lab←L100009;
};
SOURCE(3984, 35)
{
word pd54;
pd54 = (* (( (ptr) (* (( (ptr) gf←c24696)+93)/* var←c22072 */ ))+52) );
(void) ( *( (fPt) ((* (ptr) pd54 ))))(bits←v8964, (* (W4Pt) p←v4604 ), 1, 0, pd54);
};
SOURCE(4021, 10)
p←v4604 = (* (( (ptr) p←v4604)+4) );
goto lab←L100011;
lab←L100009: ;
SOURCE(4042, 36)
{
word pd55;
pd55 = (* (( (ptr) (* (( (ptr) gf←c24696)+93)/* var←c22072 */ ))+30) );
(void) ( *( (fPt) ((* (ptr) pd55 ))))(bits←v8964, pd55);
};
SOURCE(4080, 13)
return(mask←v8936);
};
};
}
static word RasterCharMaskFromSampleMap←P300(map←v4748)
word map←v4748;
{
register ptr gf←c24728 = (ptr) &globalframe;
word var←c4792;
W4 bb←v9020;
word rast←v9048;
word bitmapWords←v9076;
/* RasterCharMaskFromSampleMap: */
SOURCE(4102, 761)
SOURCE(4210, 37)
bb←v9020 = (* (W4Pt) map←v4748 );
SOURCE(4249, 63)
{
word pd56;
pd56 = (* (( (ptr) (* (( (ptr) gf←c24728)+92)/* var←c21880 */ ))+17) );
rast←v9048 = ((word) ((word) ( *( (fPt) ((* (ptr) pd56 ))))(bb←v9020, pd56) + 31) >> 5);
};
SOURCE(4314, 42)
{
word pd57;
word idx58;
pd57 = (* (( (ptr) (* (( (ptr) gf←c24728)+92)/* var←c21880 */ ))+18) );
bitmapWords←v9076 = (
idx58 = (word) ((word) ( *( (fPt) ((* (ptr) pd57 ))))(bb←v9020, pd57) * rast←v9048),
SGNCK(idx58)
);
};
SOURCE(4358, 505)
if (( (int)bitmapWords←v9076 > (int)32000)) {
SOURCE(4386, 26)
return(0);
}
else {
SOURCE(4412, 453)
{
word mask←v9120;
word bits←v9148;
SOURCE(4414, 72)
{
word var←c22680;
word var←c22712;
word var←c22744;
var←c22680 = SGNCK(bitmapWords←v9076);
var←c22712 = ((word) var←c22680 << 2);
var←c22744 = XR←NewObject((44 + var←c22712), (* (( (ptr) gf←c24728)+15) ));
(* (( (ptr) var←c22744)+10) ) = var←c22680;
mask←v9120 = var←c22744;
};
SOURCE(4488, 207)
{
W2 var←c22776;
word var←c22808;
{
word pd59;
pd59 = (* (( (ptr) (* (( (ptr) gf←c24728)+92)/* var←c21880 */ ))+19) );
(void) ( *( (fPt) ((* (ptr) pd59 ))))((word) &var←c22776, bb←v9020, pd59);
};
{
word raster←v20552;
raster←v20552 = mask←v9120;
SOURCE(1172, 68)
var←c22808 = (raster←v20552 + 44);
};
{
W2 var←c22872;
W2 var←c22904;
var←c22872.f0 = var←c22808;
var←c22872.f1 = 0;
var←c22904.f0 = 0;
var←c22904.f1 = 0;
{
word pd60;
word idx61;
pd60 = (* (( (ptr) (* (( (ptr) gf←c24728)+93)/* var←c22072 */ ))+25) );
bits←v9148 = (word) ( *( (fPt) ((* (ptr) pd60 ))))(var←c22776, 1, (
idx61 = (word) ((word) rast←v9048 << 5),
SGNCK(idx61)
), var←c22872, mask←v9120, bitmapWords←v9076
, var←c22904, (* (W2Pt) &bb←v9020 ), pd60);
};
};
};
SOURCE(4697, 13)
(* (W4Pt) (( (ptr) mask←v9120)+4) ) = bb←v9020;
SOURCE(4712, 98)
{
W2 var←c22936;
{
word pd62;
pd62 = (* (( (ptr) (* (( (ptr) gf←c24728)+92)/* var←c21880 */ ))+19) );
(void) ( *( (fPt) ((* (ptr) pd62 ))))((word) &var←c22936, bb←v9020, pd62);
};
{
word pd63;
pd63 = (* (( (ptr) (* (( (ptr) gf←c24728)+93)/* var←c22072 */ ))+49) );
(void) ( *( (fPt) ((* (ptr) pd63 ))))(bits←v9148, map←v4748, (* (W2Pt) &bb←v9020 ), (* (W2Pt) &bb←v9020 ), var←c22936, 0, pd63)
;
};
};
SOURCE(4812, 36)
{
word pd64;
pd64 = (* (( (ptr) (* (( (ptr) gf←c24728)+93)/* var←c22072 */ ))+30) );
(void) ( *( (fPt) ((* (ptr) pd64 ))))(bits←v9148, pd64);
};
SOURCE(4850, 13)
return(mask←v9120);
};
};
}
static word RunsCharMaskFromManhattan←P360(p←v4864, formal←c0299, nRuns←v4920)
word p←v4864;
W4 formal←c0299;
word nRuns←v4920;
{
W13 var←c24760;
/* declaration of bb←v4892 skipped */
register ptr gf←c24792 = (ptr) &globalframe;
/* declaration of mask←v4964 skipped */
/* declaration of var←c22968 skipped */
/* declaration of i←v9204 skipped */
/* declaration of s←v9232 skipped */
(* (W4Pt) (( (ptr) &var←c24760)+4)/* bb←v4892 */ ) = formal←c0299;
/* RunsCharMaskFromManhattan: */
SOURCE(4872, 780)
{
word tmpAddr65;
tmpAddr65 = (word) (( (ptr) &var←c24760)+9)/* var←c22968 */ ;
(* (ptr) tmpAddr65 ) = ( ((word) (fPt) AppendRun←P2376) );
(* (( (ptr) tmpAddr65) + 1) ) = 1;
};
SOURCE(4872, 780)
(* (( (ptr) &var←c24760)+8)/* mask←v4964 */ ) = 0;
SOURCE(5005, 10)
(* (( (ptr) &var←c24760)+11)/* i←v9204 */ ) = 0;
SOURCE(5017, 10)
(* (( (ptr) &var←c24760)+12)/* s←v9232 */ ) = 0;
{
word var←c23128;
SOURCE(5388, 46)
if (( (int)nRuns←v4920 == (int)0) || ( (int)nRuns←v4920 > (int)4000)) {
SOURCE(5422, 12)
return(0);
};
SOURCE(5436, 35)
{
word var←c23000;
word var←c23032;
word var←c23064;
var←c23000 = SGNCK(nRuns←v4920);
var←c23032 = ((word) var←c23000 << 2);
var←c23064 = XR←NewObject((44 + var←c23032), (* (( (ptr) gf←c24792)+15) ));
(* (( (ptr) var←c23064)+10) ) = var←c23000;
(* (( (ptr) var←c23064)+9) ) = 1;
(* (( (ptr) &var←c24760)+8)/* mask←v4964 */ ) = var←c23064;
};
SOURCE(5473, 13)
(* (W4Pt) (( (ptr) (* (( (ptr) &var←c24760)+8)/* mask←v4964 */ ))+4) ) = (* (W4Pt) (( (ptr) &var←c24760)+4)/* bb←v4892 */ );
SOURCE(5488, 65)
{
word pd66;
pd66 = (* (( (ptr) (* (( (ptr) gf←c24792)+94)/* var←c23096 */ ))+19) );
(void) ( *( (fPt) ((* (ptr) pd66 ))))(p←v4864, (word) (( (bPt) &var←c24760)+36)/* var←c22968 */ , 1, pd66);
};
SOURCE(5555, 16)
if (( (int)(* (( (ptr) &var←c24760)+11)/* i←v9204 */ ) != (int)nRuns←v4920)) {
SOURCE(5571, 5)
(void) XR←RaiseUnnamedError();
};
SOURCE(5578, 43)
{
word pd67;
pd67 = (* (( (ptr) (* (( (ptr) gf←c24792)+92)/* var←c21880 */ ))+18) );
if ((((* (( (ptr) &var←c24760)+12)/* s←v9232 */ ) + 1) != (word) ( *( (fPt) ((* (ptr) pd67 ))))((* (W4Pt) ((( (ptr) (* (
( (ptr) &var←c24760)+8)/* mask←v4964 */ ))+4)) ), pd67))) {
SOURCE(5621, 5)
(void) XR←RaiseUnnamedError();
};
};
SOURCE(5628, 24)
{
word limit68;
var←c23128 = ((* (( (ptr) &var←c24760)+11)/* i←v9204 */ ) - 1);
(* (((( (ptr) (* (( (ptr) &var←c24760)+8)/* mask←v4964 */ ))+11)+(
limit68 = (* (( (ptr) (* (( (ptr) &var←c24760)+8)/* mask←v4964 */ ))+10) ),
BCK(var←c23128, limit68)
))) ) |= 32768;
};
};
SOURCE(4872, 780)
return((* (( (ptr) &var←c24760)+8)/* mask←v4964 */ ));
}
static void AppendRun←P2376(box←v9336, formal←c24856)
W4 box←v9336;
word formal←c24856;
{
register ptr gf←c24824 = (ptr) &globalframe;
word check←v9364;
word smin←v9392;
word fmin←v9420;
formal←c24856 = (formal←c24856 - 36);
/* AppendRun: */
SOURCE(5029, 354)
SOURCE(5063, 29)
{
word pd69;
word idx70;
pd69 = (* (( (ptr) (* (( (ptr) gf←c24824)+92)/* var←c21880 */ ))+18) );
check←v9364 = (
idx70 = (word) ((word) ( *( (fPt) ((* (ptr) pd69 ))))(box←v9336, pd69) - 1),
BCK(idx70, 1)
);
};
SOURCE(5094, 30)
{
word idx71;
smin←v9392 = (
idx71 = (word) (box←v9336.f0 - (* (( (ptr) formal←c24856)+4) )),
SGNCK(idx71)
);
};
SOURCE(5126, 30)
{
word idx72;
fmin←v9420 = (
idx72 = (word) (box←v9336.f1 - (* (( (ptr) formal←c24856)+5) )),
SGNCK(idx72)
);
};
SOURCE(5158, 140)
if ((smin←v9392 != (* (( (ptr) formal←c24856)+12) ))) {
{
word var←c23160;
SOURCE(5177, 24)
{
word limit73;
var←c23160 = ((* (( (ptr) formal←c24856)+11) ) - 1);
(* (((( (ptr) (* (( (ptr) formal←c24856)+8) ))+11)+(
limit73 = (* (( (ptr) (* (( (ptr) formal←c24856)+8) ))+10) ),
BCK(var←c23160, limit73)
))) ) |= 32768;
};
SOURCE(5203, 9)
(* (( (ptr) formal←c24856)+12) ) = ((* (( (ptr) formal←c24856)+12) ) + 1);
SOURCE(5214, 84)
lab←L100015: ;
if ((smin←v9392 > (* (( (ptr) formal←c24856)+12) ))) {
}
else {
goto lab←L100013;
};
SOURCE(5232, 44)
{
word idx74;
word limit75;
(* ((( (ptr) (* (( (ptr) formal←c24856)+8) ))+11)+(
idx74 = (* (( (ptr) formal←c24856)+11) ),
limit75 = (* (( (ptr) (* (( (ptr) formal←c24856)+8) ))+10) ),
BCK(idx74, limit75)
)) ) = 32768;
};
SOURCE(5278, 9)
(* (( (ptr) formal←c24856)+11) ) = ((* (( (ptr) formal←c24856)+11) ) + 1);
SOURCE(5289, 9)
(* (( (ptr) formal←c24856)+12) ) = ((* (( (ptr) formal←c24856)+12) ) + 1);
goto lab←L100015;
lab←L100013: ;
};
};
SOURCE(5312, 60)
{
word var←c23192;
{
word pd76;
word idx77;
pd76 = (* (( (ptr) (* (( (ptr) gf←c24824)+92)/* var←c21880 */ ))+17) );
var←c23192 = (
idx77 = (word) ( *( (fPt) ((* (ptr) pd76 ))))(box←v9336, pd76),
BCK(idx77, 32768)
);
};
{
word idx78;
word limit79;
(* ((( (ptr) (* (( (ptr) formal←c24856)+8) ))+11)+(
idx78 = (* (( (ptr) formal←c24856)+11) ),
limit79 = (* (( (ptr) (* (( (ptr) formal←c24856)+8) ))+10) ),
BCK(idx78, limit79)
)) ) = (((word) BCK(fmin←v9420, 65536) << 16) + (unsigned) ( (((unsigned)var←c23192 << 17) >> 17) ));
};
};
SOURCE(5374, 9)
(* (( (ptr) formal←c24856)+11) ) = ((* (( (ptr) formal←c24856)+11) ) + 1);
}
static word CountRuns←P420(p←v5036)
word p←v5036;
{
register ptr gf←c24888 = (ptr) &globalframe;
word runs←v5080;
word s←v9484;
/* CountRuns: */
SOURCE(5658, 305)
SOURCE(5658, 305)
runs←v5080 = 0;
SOURCE(5738, 49)
s←v9484 = ( (p←v5036 != 0) ? (* (ptr) p←v5036 ) : 0 ) ;
SOURCE(5789, 174)
lab←L100018: ;
if ((p←v5036 != 0)) {
}
else {
goto lab←L100016;
};
{
word sMin←v9528;
word sSize←v9556;
SOURCE(5806, 29)
sMin←v9528 = (* (ptr) p←v5036 );
SOURCE(5837, 30)
{
word pd80;
word idx81;
pd80 = (* (( (ptr) (* (( (ptr) gf←c24888)+92)/* var←c21880 */ ))+18) );
sSize←v9556 = (
idx81 = (word) ( *( (fPt) ((* (ptr) pd80 ))))((* (W4Pt) (p←v5036) ), pd80),
SGNCK(idx81)
);
};
SOURCE(5869, 42)
if (( (int)sMin←v9528 > (int)s←v9484)) {
SOURCE(5887, 24)
runs←v5080 = (runs←v5080 + (sMin←v9528 - s←v9484));
};
SOURCE(5914, 16)
s←v9484 = (sMin←v9528 + sSize←v9556);
SOURCE(5932, 19)
runs←v5080 = (runs←v5080 + sSize←v9556);
SOURCE(5953, 10)
p←v5036 = (* (( (ptr) p←v5036)+4) );
};
goto lab←L100018;
lab←L100016: ;
SOURCE(5658, 305)
return(runs←v5080);
}
static word NewGeneration←P480(sizeLimit←v5504)
word sizeLimit←v5504;
{
register ptr gf←c24920 = (ptr) &globalframe;
word g←v5548;
/* NewGeneration: */
SOURCE(6453, 138)
SOURCE(6453, 138)
g←v5548 = 0;
SOURCE(6523, 56)
{
word var←c23288;
word var←c23320;
word var←c23352;
{
word pd82;
pd82 = (* (( (ptr) (* (( (ptr) gf←c24920)+95)/* var←c23256 */ ))+8) );
var←c23288 = (word) ( *( (fPt) ((* (ptr) pd82 ))))(sizeLimit←v5504, pd82);
};
var←c23320 = ((word) var←c23288 << 2);
var←c23352 = XR←NewObject((8 + var←c23320), (* (( (ptr) gf←c24920)+18) ));
(* (( (ptr) var←c23352)+1) ) = var←c23288;
g←v5548 = var←c23352;
};
SOURCE(6581, 10)
(* (ptr) g←v5548 ) = 0;
SOURCE(6453, 138)
return(g←v5548);
}
static word Create←P540(param←v5608)
W16 param←v5608;
{
register ptr gf←c24952 = (ptr) &globalframe;
word new←v5652;
word maxSize←v9600 = 1;
word lgMaxSize←v9628 = 0;
word parameters←v9656;
/* Create: */
SOURCE(6597, 439)
SOURCE(6597, 439)
new←v5652 = 0;
SOURCE(6712, 51)
parameters←v9656 = XR←NewObject(64, (* (( (ptr) gf←c24952)+19) ));
(* (W16Pt) parameters←v9656 ) = param←v5608;
SOURCE(6765, 23)
new←v5652 = XR←NewObject(40, (* (( (ptr) gf←c24952)+11) ));
SOURCE(6790, 84)
(* (( (ptr) new←v5652)+5) ) = XR←NewObject(1024, (* (( (ptr) gf←c24952)+20) ));
SOURCE(6876, 27)
(* (( (ptr) new←v5652)+6) ) = 0;
SOURCE(6905, 22)
(* (( (ptr) new←v5652)+7) ) = 0;
SOURCE(6929, 27)
(* (( (ptr) new←v5652)+4) ) = parameters←v9656;
SOURCE(6958, 48)
{
word var←c23480;
var←c23480 = (word) NewGeneration←P480((* (ptr) (parameters←v9656) ));
(* (( (ptr) new←v5652)+8) ) = var←c23480;
};
SOURCE(7008, 28)
(* (( (ptr) new←v5652)+9) ) = (* (( (ptr) gf←c24952)+5)/* emptyGeneration←v3392 */ );
SOURCE(6597, 439)
return(new←v5652);
}
static word Occupancy←P600(x←v5712)
word x←v5712;
{
register ptr gf←c24984 = (ptr) &globalframe;
word lst←v5756;
/* Occupancy: */
SOURCE(7042, 349)
(void) (XR←MonitorEntry(x←v5712));
SOURCE(7042, 349)
lst←v5756 = 0;
SOURCE(7121, 270)
{
register word i←v9748 = 1;
lab←L100022: ;
{
word gen←v9792;
word text←v9820;
SOURCE(7156, 26)
gen←v9792 = (* ((( (ptr) x←v5712)+8)+BCK(i←v9748, 2)) );
SOURCE(7184, 39)
{
word var←c23512;
word var←c23544;
word var←c23576;
{
word idx83;
var←c23512 = (
idx83 = (* (( (ptr) gen←v9792)+1) ),
BCK(idx83, 32768)
);
};
var←c23544 = ((word) ((word) (var←c23512 + 3) >> 2) << 2);
var←c23576 = XR←NewObject((4 + var←c23544), (* (( (ptr) gf←c24984)+21) ));
(* (( (hPt) var←c23576)+1) ) = var←c23512;
text←v9820 = var←c23576;
};
SOURCE(7225, 107)
{
register word i←v9876 = 0;
register word noName←c23608;
word var←c23640;
noName←c23608 = (* (( (ptr) gen←v9792)+1) );
if ((i←v9876 >= noName←c23608)) {
goto lab←L100023;
};
lab←L100026: ;
SOURCE(7259, 73)
{
word limit84;
{
word limit85;
var←c23640 = (* ((( (ptr) gen←v9792)+2)+(
limit85 = (* (( (ptr) gen←v9792)+1) ),
BCK(i←v9876, limit85)
)) );
};
(* ((( (bPt) text←v9820)+4)+(
limit84 = (word) (unsigned) (* (( (hPt) text←v9820)+1) ),
BCK(i←v9876, limit84)
)) ) = ( (var←c23640 == (* (( (ptr) gf←c24984)+4)/* nullCharMask←v3364 */ )) ? 88 : ( (var←c23640 == 0) ? 45 : 35 ) ) ;
};
i←v9876 = (i←v9876 + 1);
if ((i←v9876 < noName←c23608)) {
goto lab←L100026;
};
lab←L100023: ;
};
SOURCE(7343, 25)
{
word idx86;
(* (hPt) text←v9820 ) = (
idx86 = (* (( (ptr) gen←v9792)+1) ),
BCK(idx86, 32768)
);
};
SOURCE(7370, 21)
{
word var←c23672;
var←c23672 = XR←NewObject(8, (* (( (ptr) gf←c24984)+22) ));
(* (ptr) var←c23672 ) = text←v9820;
(* (( (ptr) var←c23672)+1) ) = lst←v5756;
lst←v5756 = var←c23672;
};
};
if ((0 >= i←v9748)) {
goto lab←L100019;
};
i←v9748 = (i←v9748 - 1);
goto lab←L100022;
lab←L100019: ;
};
SOURCE(7042, 349)
(void) (XR←MonitorExit(x←v5712));
return(lst←v5756);
}
static word Size←P660(x←v5912)
word x←v5912;
{
word var←c5956;
/* Size: */
SOURCE(7406, 94)
(void) (XR←MonitorEntry(x←v5912));
SOURCE(7463, 37)
{
word var←c23704;
{
word idx87;
var←c23704 = (
idx87 = (word) ((* (ptr) (* (( (ptr) x←v5912)+8) ) ) + (* (ptr) (* (( (ptr) x←v5912)+9) ) )),
SGNCK(idx87)
);
};
(void) (XR←MonitorExit(x←v5912));
return(var←c23704);
};
}
static word Fetch←P720(x←v6016, font←v6044, char←v6072)
word x←v6016;
word font←v6044;
word char←v6072;
{
word var←c6132;
word c←v9920;
/* Fetch: */
SOURCE(7504, 467)
(void) (XR←MonitorEntry(x←v6016));
SOURCE(7599, 81)
c←v9920 = (word) FetchInternal←P840((* (( (ptr) x←v6016)+8) ), font←v6044, char←v6072, 0);
SOURCE(7682, 250)
if ((c←v9920 == 0)) {
SOURCE(7700, 70)
c←v9920 = (word) FetchInternal←P840((* (( (ptr) x←v6016)+9) ), font←v6044, char←v6072, 1);
SOURCE(7772, 160)
if ((c←v9920 != 0)) {
SOURCE(7790, 142)
if ((0 == (word) StoreInternal←P1080((* (( (ptr) x←v6016)+8) ), c←v9920))) {
SOURCE(7846, 9)
(void) Dillon←P1140(x←v6016);
SOURCE(7886, 46)
{
word var←c23736;
var←c23736 = (word) StoreInternal←P1080((* (( (ptr) x←v6016)+8) ), c←v9920);
};
};
};
};
SOURCE(7961, 10)
(void) (XR←MonitorExit(x←v6016));
return(c←v9920);
}
static word HashCharAndFont←P780(char←v6276, font←v6304, mod←v6332)
word char←v6276;
word font←v6304;
word mod←v6332;
{
register ptr gf←c25016 = (ptr) &globalframe;
word var←c6388;
W2 cf←v9964;
/* HashCharAndFont: */
SOURCE(8049, 246)
SOURCE(8134, 42)
cf←v9964.f0 = char←v6276;
cf←v9964.f1 = font←v6304;
SOURCE(8186, 109)
SOURCE(8188, 107)
{
word var←c0286;
{
W3 var←c23832;
var←c23832.f0 = (word) &cf←v9964;
var←c23832.f1 = 0;
var←c23832.f2 = 8;
{
word pd88;
pd88 = (* (( (ptr) (* (( (ptr) gf←c25016)+95)/* var←c23256 */ ))+7) );
var←c0286 = (word) ( *( (fPt) ((* (ptr) pd88 ))))(var←c23832, mod←v6332, pd88);
};
};
return(var←c0286);
};
}
static word FetchInternal←P840(gen←v6448, font←v6476, char←v6504, remove←v6532)
word gen←v6448;
word font←v6476;
word char←v6504;
word remove←v6532;
{
register ptr gf←c25048 = (ptr) &globalframe;
word var←c6588;
word hash←v10008;
word last←v10036;
word c←v10064 = 0;
/* FetchInternal: */
SOURCE(8302, 563)
SOURCE(8426, 57)
hash←v10008 = (word) HashCharAndFont←P780(char←v6504, font←v6476, (* (( (ptr) gen←v6448)+1) ));
SOURCE(8485, 30)
last←v10036 = ((* (( (ptr) gen←v6448)+1) ) - 1);
SOURCE(8536, 211)
lab←L100029: ;
{
word tc89;
{
word limit90;
c←v10064 = (* ((( (ptr) gen←v6448)+2)+(
limit90 = (* (( (ptr) gen←v6448)+1) ),
BCK(hash←v10008, limit90)
)) );
};
if ((c←v10064 != 0)) {
if (((* (ptr) c←v10064 ) != font←v6476)) {
tc89 = (word) 1;
}
else {
tc89 = (word) ((* (( (ptr) c←v10064)+1) ) != char←v6504);
};
}
else {
tc89 = (word) 0;
};
if (tc89) {
}
else {
goto lab←L100027;
};
};
SOURCE(8598, 149)
if ((hash←v10008 != 0)) {
SOURCE(8613, 19)
hash←v10008 = (hash←v10008 - 1);
}
else {
SOURCE(8634, 41)
if ((last←v10036 == (word) -1)) {
SOURCE(8663, 12)
return(0);
};
SOURCE(8714, 11)
hash←v10008 = last←v10036;
SOURCE(8727, 20)
last←v10036 = (word) -1;
};
goto lab←L100029;
lab←L100027: ;
SOURCE(8772, 78)
if ( ( (0 != remove←v6532) ? (c←v10064 != 0) : 0 ) ) {
SOURCE(8801, 24)
{
word limit91;
(* ((( (ptr) gen←v6448)+2)+(
limit91 = (* (( (ptr) gen←v6448)+1) ),
BCK(hash←v10008, limit91)
)) ) = (* (( (ptr) gf←c25048)+4)/* nullCharMask←v3364 */ );
};
SOURCE(8827, 23)
{
word idx92;
(* (ptr) gen←v6448 ) = (
idx92 = (word) ((* (ptr) gen←v6448 ) - 1),
SGNCK(idx92)
);
};
};
SOURCE(8855, 10)
return(c←v10064);
}
static word GetParameters←P900(x←v6648)
word x←v6648;
{
word var←c6692;
/* GetParameters: */
SOURCE(8871, 89)
SOURCE(8938, 22)
return((* (( (ptr) x←v6648)+4) ));
}
static void UpdateParameters←P960(formal←c0300, formal←c0301)
word formal←c0300;
word formal←c0301;
{
W6 var←c25080;
/* declaration of x←v6752 skipped */
/* declaration of action←v6780 skipped */
var←c25080.f4/* x←v6752 */ = formal←c0300;
var←c25080.f5/* action←v6780 */ = formal←c0301;
/* UpdateParameters: */
SOURCE(8964, 125)
(void) (XR←MonitorEntry(var←c25080.f4/* x←v6752 */ ));
SOURCE(9046, 43)
{
word var←c0287;
var←c0287 = (word) &var←c25080;
(void) (word) XR←Enable(( ((word) (fPt) NoName←Q3444) ), ( ((word) (fPt) NoName←Q3504) ), var←c0287);
};
SOURCE(8964, 125)
(void) (XR←MonitorExit(var←c25080.f4/* x←v6752 */ ));
return;
}
static word NoName←Q3444(formal←c0276)
word formal←c0276;
{
SOURCE(9069, 20)
{
word pd93;
pd93 = (* (( (ptr) formal←c0276)+5) );
(void) ( *( (fPt) ((* (ptr) pd93 ))))((* ((( (ptr) (* (( (ptr) formal←c0276)+4) ))+4)) ), pd93);
};
return(0);
}
static void Store←P1020(x←v6900, charMask←v6928)
word x←v6900;
word charMask←v6928;
{
/* Store: */
SOURCE(9095, 228)
(void) (XR←MonitorEntry(x←v6900));
SOURCE(9167, 156)
if ((0 == (word) StoreInternal←P1080((* (( (ptr) x←v6900)+8) ), charMask←v6928))) {
SOURCE(9230, 9)
(void) Dillon←P1140(x←v6900);
SOURCE(9270, 53)
{
word var←c23864;
var←c23864 = (word) StoreInternal←P1080((* (( (ptr) x←v6900)+8) ), charMask←v6928);
};
};
SOURCE(9095, 228)
(void) (XR←MonitorExit(x←v6900));
return;
}
static word StoreInternal←P1080(gen←v6988, charMask←v7016)
word gen←v6988;
word charMask←v7016;
{
word var←c7060;
word hash←v10108;
word last←v10136;
word c←v10164 = 0;
/* StoreInternal: */
SOURCE(9350, 645)
SOURCE(9444, 75)
hash←v10108 = (word) HashCharAndFont←P780((* (( (ptr) charMask←v7016)+1) ), (* (ptr) charMask←v7016 ), (* (( (ptr) gen←v6988)+1)
));
SOURCE(9521, 30)
last←v10136 = ((* (( (ptr) gen←v6988)+1) ) - 1);
SOURCE(9572, 63)
if (((* (ptr) gen←v6988 ) > ((* (( (ptr) gen←v6988)+1) ) - ((* (( (ptr) gen←v6988)+1) ) >> 2)))) {
SOURCE(9621, 14)
return(0);
};
SOURCE(9656, 233)
lab←L100034: ;
{
word tc94;
{
word limit95;
c←v10164 = (* ((( (ptr) gen←v6988)+2)+(
limit95 = (* (( (ptr) gen←v6988)+1) ),
BCK(hash←v10108, limit95)
)) );
};
if ((c←v10164 != 0)) {
if (((* (ptr) c←v10164 ) != (* (ptr) charMask←v7016 ))) {
tc94 = (word) 1;
}
else {
tc94 = (word) ((* (( (ptr) c←v10164)+1) ) != (* (( (ptr) charMask←v7016)+1) ));
};
}
else {
tc94 = (word) 0;
};
if (tc94) {
}
else {
goto lab←L100032;
};
};
SOURCE(9738, 151)
if ((hash←v10108 != 0)) {
SOURCE(9753, 19)
hash←v10108 = (hash←v10108 - 1);
}
else {
SOURCE(9774, 43)
if ((last←v10136 == (word) -1)) {
SOURCE(9803, 14)
return(0);
};
SOURCE(9856, 11)
hash←v10108 = last←v10136;
SOURCE(9869, 20)
last←v10136 = (word) -1;
};
goto lab←L100034;
lab←L100032: ;
SOURCE(9914, 42)
if ((c←v10164 == 0)) {
SOURCE(9932, 24)
(* (ptr) gen←v6988 ) = ((* (ptr) gen←v6988 ) + 1);
};
SOURCE(9959, 20)
{
word limit96;
(* ((( (ptr) gen←v6988)+2)+(
limit96 = (* (( (ptr) gen←v6988)+1) ),
BCK(hash←v10108, limit96)
)) ) = charMask←v7016;
};
SOURCE(9981, 14)
return(1);
}
static void Dillon←P1140(x←v7120)
word x←v7120;
{
register ptr gf←c25112 = (ptr) &globalframe;
word newSize←v10208;
/* Dillon: */
SOURCE(10147, 282)
SOURCE(10188, 160)
{
word tc97;
word x98;
word pd99;
word x100;
float tf101;
word idx102;
if (((float)(unsigned)(* (ptr) (* (( (ptr) x←v7120)+9) ) ) < (float)(unsigned)(* (( (ptr) (* (( (ptr) x←v7120)+9) ))+1) ) * (
x98 = (* (( (ptr) gf←c25112)+6)/* discardRate←v3756 */ ), *(float*)&x98
))) {
pd99 = (* (( (ptr) (* (( (ptr) gf←c25112)+96)/* var←c23896 */ ))+7) );
tc97 = (word) (
idx102 = (word) ( *( (fPt) ((* (ptr) pd99 ))))((
tf101 = (float)(unsigned)(* (( (ptr) (* (( (ptr) x←v7120)+8) ))+1) ) * (
x100 = (* (( (ptr) gf←c25112)+7)/* growthFactor←v3784 */ ), *(float*)&x100
), *(word*)&tf101
), pd99),
SGNCK(idx102)
);
}
else {
tc97 = (word) (* (ptr) (* (( (ptr) x←v7120)+4) ) );
};
newSize←v10208 = tc97;
};
SOURCE(10350, 23)
(void) EraseInternal←P1200((* ((( (ptr) x←v7120)+9)) ));
SOURCE(10375, 19)
(* (( (ptr) x←v7120)+9) ) = (* (( (ptr) x←v7120)+8) );
SOURCE(10396, 33)
{
word var←c23928;
var←c23928 = (word) NewGeneration←P480(newSize←v10208);
(* (( (ptr) x←v7120)+8) ) = var←c23928;
};
}
static void EraseInternal←P1200(gen←v7180)
word gen←v7180;
{
/* EraseInternal: */
SOURCE(10435, 119)
SOURCE(10486, 54)
{
register word i←v10252 = 0;
register word noName←c23960;
{
word idx103;
noName←c23960 = (
idx103 = (* (( (ptr) gen←v7180)+1) ),
SGNCK(idx103)
);
};
if (( (int)i←v10252 >= (int)noName←c23960)) {
goto lab←L100035;
};
lab←L100038: ;
SOURCE(10520, 20)
{
word limit104;
(* ((( (ptr) gen←v7180)+2)+(
limit104 = (* (( (ptr) gen←v7180)+1) ),
BCK(i←v10252, limit104)
)) ) = 0;
};
i←v10252 = (i←v10252 + 1);
if (( (int)i←v10252 < (int)noName←c23960)) {
goto lab←L100038;
};
lab←L100035: ;
};
SOURCE(10542, 12)
(* (ptr) gen←v7180 ) = 0;
}
static void Launder←P1260(x←v7240, keep←v7268)
word x←v7240;
word keep←v7268;
{
word list←v10296;
/* Launder: */
SOURCE(10560, 291)
SOURCE(10638, 6)
list←v10296 = (word) GetList←P1380(x←v7240);
SOURCE(10675, 8)
(void) Flush←P1320(x←v7240);
SOURCE(10685, 166)
lab←L100041: ;
if ((list←v10296 != 0)) {
}
else {
goto lab←L100039;
};
{
word this←v10424;
word next←v10452;
SOURCE(10705, 27)
this←v10424 = (* (ptr) list←v10296 );
SOURCE(10734, 6)
next←v10452 = (* (( (ptr) list←v10296)+1) );
SOURCE(10770, 16)
(* (ptr) list←v10296 ) = 0;
SOURCE(10788, 15)
(* (( (ptr) list←v10296)+1) ) = 0;
SOURCE(10805, 11)
list←v10296 = next←v10452;
SOURCE(10818, 33)
if ((0 != (word) ( *( (fPt) ((* (ptr) keep←v7268 ))))(this←v10424, keep←v7268))) {
SOURCE(10837, 14)
(void) Store←P1020(x←v7240, this←v10424);
};
};
goto lab←L100041;
lab←L100039: ;
}
static void Flush←P1320(x←v7432)
word x←v7432;
{
register ptr gf←c25144 = (ptr) &globalframe;
/* Flush: */
SOURCE(10866, 476)
(void) (XR←MonitorEntry(x←v7432));
{
word var←c24056;
SOURCE(10910, 220)
if ( ( ((* (( (ptr) x←v7432)+5) ) != 0) ? (0 == (* (( (ptr) x←v7432)+6) )) : 0 ) ) {
SOURCE(10965, 25)
{
word var←c23992;
var←c23992 = (* (( (ptr) x←v7432)+5) );
XR←FillWords(&(* (W256Pt) (var←c23992)), 256, 0);
};
}
else {
SOURCE(10999, 25)
(* (( (ptr) x←v7432)+6) ) = 0;
SOURCE(11026, 82)
(* (( (ptr) x←v7432)+5) ) = XR←NewObject(1024, (* (( (ptr) gf←c25144)+20) ));
SOURCE(11110, 20)
(* (( (ptr) x←v7432)+7) ) = 0;
};
SOURCE(11135, 23)
(void) EraseInternal←P1200((* ((( (ptr) x←v7432)+8)) ));
SOURCE(11160, 23)
(void) EraseInternal←P1200((* ((( (ptr) x←v7432)+9)) ));
SOURCE(11185, 26)
(* (( (ptr) x←v7432)+9) ) = (* (( (ptr) gf←c25144)+5)/* emptyGeneration←v3392 */ );
SOURCE(11213, 129)
var←c24056 = (* (ptr) (* (( (ptr) x←v7432)+4) ) );
if ( ( (var←c24056 <= ((* (( (ptr) (* (( (ptr) x←v7432)+8) ))+1) ) >> 1)) ? 1 : (var←c24056 > (* (( (ptr) (* (( (ptr) x←v7432)+8)
))+1) )) ) ) {
SOURCE(11294, 48)
{
word var←c24088;
var←c24088 = (word) NewGeneration←P480((* (ptr) ((* (( (ptr) x←v7432)+4) )) ));
(* (( (ptr) x←v7432)+8) ) = var←c24088;
};
};
};
SOURCE(10866, 476)
(void) (XR←MonitorExit(x←v7432));
return;
}
static word GetList←P1380(x←v7492)
word x←v7492;
{
register ptr gf←c25176 = (ptr) &globalframe;
word list←v7536;
/* GetList: */
SOURCE(11351, 253)
(void) (XR←MonitorEntry(x←v7492));
SOURCE(11351, 253)
list←v7536 = 0;
SOURCE(11436, 168)
{
register word g←v10628 = 0;
lab←L100045: ;
{
word gen←v10692;
SOURCE(11463, 26)
gen←v10692 = (* ((( (ptr) x←v7492)+8)+g←v10628) );
SOURCE(11491, 113)
{
register word i←v10736 = 0;
register word noName←c24120;
{
word idx105;
noName←c24120 = (
idx105 = (* (( (ptr) gen←v10692)+1) ),
SGNCK(idx105)
);
};
if (( (int)i←v10736 >= (int)noName←c24120)) {
goto lab←L100046;
};
lab←L100049: ;
{
word c←v10780;
SOURCE(11525, 20)
{
word limit106;
c←v10780 = (* ((( (ptr) gen←v10692)+2)+(
limit106 = (* (( (ptr) gen←v10692)+1) ),
BCK(i←v10736, limit106)
)) );
};
SOURCE(11547, 57)
if ( ( (c←v10780 != 0) ? (c←v10780 != (* (( (ptr) gf←c25176)+4)/* nullCharMask←v3364 */ )) : 0 ) ) {
SOURCE(11584, 20)
{
word var←c24152;
var←c24152 = XR←NewObject(8, (* (( (ptr) gf←c25176)+25) ));
(* (ptr) var←c24152 ) = c←v10780;
(* (( (ptr) var←c24152)+1) ) = list←v7536;
list←v7536 = var←c24152;
};
};
};
i←v10736 = (i←v10736 + 1);
if (( (int)i←v10736 < (int)noName←c24120)) {
goto lab←L100049;
};
lab←L100046: ;
};
};
if ((g←v10628 >= 1)) {
goto lab←L100042;
};
g←v10628 = (g←v10628 + 1);
goto lab←L100045;
lab←L100042: ;
};
SOURCE(11351, 253)
(void) (XR←MonitorExit(x←v7492));
return(list←v7536);
}
static word GetNamedCache←P1440(atom←v7680)
word atom←v7680;
{
register ptr gf←c25208 = (ptr) &globalframe;
word r←v7724;
/* GetNamedCache: */
SOURCE(11628, 183)
SOURCE(11628, 183)
r←v7724 = 0;
SOURCE(11695, 44)
{
W2 var←c0233;
word var←c0288;
{
word pd107;
pd107 = (* (( (ptr) (* (( (ptr) gf←c25208)+91)/* var←c21816 */ ))+7) );
(void) ( *( (fPt) ((* (ptr) pd107 ))))((word) &var←c0233, (* (( (ptr) gf←c25208)+8)/* cacheTab←v4008 */ ), atom←v7680, pd107)
;
};
var←c0288 = var←c0233.f1;
r←v7724 = XR←Narrow(var←c0288, (* (( (ptr) gf←c25208)+11) ));
};
SOURCE(11741, 70)
if ((r←v7724 == 0)) {
SOURCE(11759, 14)
{
W16 var←c24184;
(* (ptr) &var←c24184 ) = 4000;
(* (( (ptr) &var←c24184)+1) ) = XR←CheckProc(0);
(* (( (ptr) &var←c24184)+2) ) = (* (ptr) &fc108 );
(* (( (ptr) &var←c24184)+3) ) = (* (ptr) &fc109 );
(* (( (ptr) &var←c24184)+4) ) = (* (ptr) &fc108 );
(* (( (ptr) &var←c24184)+5) ) = (* (ptr) &fc109 );
(* (( (ptr) &var←c24184)+6) ) = (* (ptr) &fc109 );
(* (( (ptr) &var←c24184)+7) ) = (* (ptr) &fc110 );
(* (( (ptr) &var←c24184)+8) ) = (* (ptr) &fc108 );
(* (( (ptr) &var←c24184)+9) ) = (* (ptr) &fc109 );
(* (( (ptr) &var←c24184)+10) ) = (* (ptr) &fc109 );
(* (( (ptr) &var←c24184)+11) ) = (* (ptr) &fc109 );
(* (( (ptr) &var←c24184)+12) ) = (* (ptr) &fc109 );
(* (( (ptr) &var←c24184)+13) ) = 0;
(* (( (ptr) &var←c24184)+14) ) = 0;
(* (( (ptr) &var←c24184)+15) ) = 0;
r←v7724 = (word) Create←P540(var←c24184);
};
SOURCE(11775, 36)
{
word var←c24216;
word pd111;
pd111 = (* (( (ptr) (* (( (ptr) gf←c25208)+91)/* var←c21816 */ ))+9) );
var←c24216 = (word) ( *( (fPt) ((* (ptr) pd111 ))))((* (( (ptr) gf←c25208)+8)/* cacheTab←v4008 */ ), atom←v7680, r←v7724, pd111)
;
};
};
SOURCE(11628, 183)
return(r←v7724);
}
static void SetNamedCacheParameters←P1500(formal←c0238)
word formal←c0238;
{
register ptr gf←c25240 = (ptr) &globalframe;
word r←v10824;
/* SetNamedCacheParameters: */
SOURCE(11820, 309)
SOURCE(11892, 55)
{
W2 var←c0240;
word var←c0289;
{
word pd112;
pd112 = (* (( (ptr) (* (( (ptr) gf←c25240)+91)/* var←c21816 */ ))+7) );
(void) ( *( (fPt) ((* (ptr) pd112 ))))((word) &var←c0240, (* (( (ptr) gf←c25240)+8)/* cacheTab←v4008 */ ), (* (ptr) formal←c0238/* atom←v7784 */ ), pd112)
;
};
var←c0289 = var←c0240.f1;
r←v10824 = XR←Narrow(var←c0289, (* (( (ptr) gf←c25240)+11) ));
};
SOURCE(11949, 180)
if ((r←v10824 == 0)) {
SOURCE(11967, 13)
r←v10824 = (word) Create←P540((* (W16Pt) ((( (ptr) formal←c0238)+1)/* p←v7812 */ ) ));
SOURCE(11982, 36)
{
word var←c24248;
word pd113;
pd113 = (* (( (ptr) (* (( (ptr) gf←c25240)+91)/* var←c21816 */ ))+9) );
var←c24248 = (word) ( *( (fPt) ((* (ptr) pd113 ))))((* (( (ptr) gf←c25240)+8)/* cacheTab←v4008 */ ), (* (ptr) formal←c0238/* atom←v7784 */ ), r←v10824, pd113)
;
};
}
else {
SOURCE(12027, 104)
SOURCE(12094, 35)
if (((* (( (ptr) r←v10824)+4) ) != 0)) {
SOURCE(12121, 8)
{
word x←v20744;
x←v20744 = r←v10824;
SOURCE(12121, 8)
(void) (XR←MonitorEntry(x←v20744));
SOURCE(12073, 18)
(* (W16Pt) (* (( (ptr) x←v20744)+4) ) ) = (* (W16Pt) (( (ptr) formal←c0238)+1)/* p←v7812 */ );
(void) (XR←MonitorExit(x←v20744));
};
};
};
}
static void FlushAll←P1560()
{
W6 var←c25272;
register ptr gf←c25304 = (ptr) &globalframe;
/* declaration of var←c24280 skipped */
/* FlushAll: */
SOURCE(12179, 140)
{
word tmpAddr114;
tmpAddr114 = (word) (( (ptr) &var←c25272)+4)/* var←c24280 */ ;
(* (ptr) tmpAddr114 ) = ( ((word) (fPt) epa←P3024) );
(* (( (ptr) tmpAddr114) + 1) ) = 1;
};
SOURCE(12287, 32)
{
word var←c24312;
word pd115;
pd115 = (* (( (ptr) (* (( (ptr) gf←c25304)+91)/* var←c21816 */ ))+13) );
var←c24312 = (word) ( *( (fPt) ((* (ptr) pd115 ))))((* (( (ptr) gf←c25304)+8)/* cacheTab←v4008 */ ), (word) (( (bPt) &var←c25272)+16)
/* var←c24280 */ , pd115);
};
}
static word epa←P3024(key←v11048, val←v11076, formal←c25368)
word key←v11048;
word val←v11076;
word formal←c25368;
{
register ptr gf←c25336 = (ptr) &globalframe;
word quit←v11132;
formal←c25368 = (formal←c25368 - 16);
/* epa: */
SOURCE(12208, 76)
SOURCE(12208, 76)
quit←v11132 = 0;
SOURCE(12266, 18)
{
word var←c24344;
var←c24344 = XR←Narrow(val←v11076, (* (( (ptr) gf←c25336)+11) ));
(void) Flush←P1320(var←c24344);
};
SOURCE(12208, 76)
return(quit←v11132);
}
static word ObtainSmallCache←P1620(x←v7888)
word x←v7888;
{
register ptr gf←c25400 = (ptr) &globalframe;
word var←c7932;
/* ObtainSmallCache: */
SOURCE(12417, 483)
(void) (XR←MonitorEntry(x←v7888));
SOURCE(12493, 290)
if ((0 != (* (( (ptr) x←v7888)+6) ))) {
SOURCE(12521, 39)
(* (( (ptr) x←v7888)+7) ) = ((* (( (ptr) x←v7888)+7) ) + 1);
SOURCE(12562, 221)
if (((* (( (ptr) x←v7888)+7) ) > (* (( (ptr) gf←c25400)+9)/* smallCacheFailLimit←v4064 */ ))) {
SOURCE(12611, 82)
(* (( (ptr) x←v7888)+5) ) = XR←NewObject(1024, (* (( (ptr) gf←c25400)+20) ));
SOURCE(12695, 25)
(* (( (ptr) x←v7888)+6) ) = 0;
SOURCE(12722, 61)
(* (( (ptr) gf←c25400)+10)/* smallCacheFailureRecoveries←v4092 */ ) = ((* (( (ptr) gf←c25400)+10)/* smallCacheFailureRecoveries←v4092 */ ) +
1);
};
};
SOURCE(12791, 38)
if ((0 != (* (( (ptr) x←v7888)+6) ))) {
SOURCE(12817, 12)
(void) (XR←MonitorExit(x←v7888));
return(0);
};
SOURCE(12831, 24)
(* (( (ptr) x←v7888)+6) ) = 1;
SOURCE(12857, 20)
(* (( (ptr) x←v7888)+7) ) = 0;
SOURCE(12879, 21)
{
word var←c24408;
var←c24408 = (* (( (ptr) x←v7888)+5) );
(void) (XR←MonitorExit(x←v7888));
return(var←c24408);
};
}
static void ReleaseSmallCache←P1680(x←v7992, s←v8020)
word x←v7992;
word s←v8020;
{
/* ReleaseSmallCache: */
SOURCE(12906, 185)
(void) (XR←MonitorEntry(x←v7992));
SOURCE(12977, 114)
if ( ( (0 != (* (( (ptr) x←v7992)+6) )) ? ((* (( (ptr) x←v7992)+5) ) == s←v8020) : 0 ) ) {
SOURCE(13026, 26)
(* (( (ptr) x←v7992)+6) ) = 0;
}
else {
SOURCE(13061, 30)
if ((s←v8020 != 0)) {
SOURCE(13077, 14)
XR←FillWords(&(* (W256Pt) (s←v8020)), 256, 0);
};
};
SOURCE(12906, 185)
(void) (XR←MonitorExit(x←v7992));
return;
}
static void NoName←Q3504(formal←c0258, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
word formal←c0258;
word formal←c200000;
word formal←c200001;
word formal←c200002;
word formal←c200003;
{
if ((formal←c200001 == XR←Unwind)) {
(void) (XR←MonitorExit(* (( (ptr) formal←c200000)+4) ));
};
(* (ptr) formal←c0258 ) = 0;
(* (( (ptr) formal←c0258)+1) ) = 0;
return;
}
/* file: ImagerMaskCacheImpl, module: ImagerMaskCacheImpl, compiled at: July 28, 1993 10:20:29 am PDT */
extern void XR←install←ImagerMaskCacheImpl() {
NoName←Q3384();
}
extern void XR←run←ImagerMaskCacheImpl() { XR←Start(&globalframe); }