/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1992 by Xerox Corporation. All rights reserved. */
/* time: February 21, 1992 11:34:07 pm PST */
/* C2C version: October 16, 1990 (native) */
/* ref-counting: off */
/* file: MaskWithColorImpl, module: MaskWithColorImpl */
/* switches: cfhklouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
#define XRM←BITLSHIFT(x, y) ((word)(x) << (word)(y))
#define XRM←BITRSHIFT(x, y) ((word)(x) >> (word)(y))
#define XRM←BITAND(x, y) (((word)(x)) & ((word)(y)))
#define XRM←BITNOT(x) (~((word)(x)))
#define XRM←BITOR(x, y) (((word)(x)) | ((word)(y)))
static char versionStamp[] = "@(#)mob←version [1412365357,1244556932] MaskWithColorImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
#define SOURCE(p, l) /* source p, l */
static void NoName←Q1908();
static void MaskWithColorImpl←P0();
static word MakeColorWord←P60();
static void StoreWithColorMask←P120();
static void StoreWithColorRuns←P180();
static void StoreWithLongColorRuns←P240();
static word MaskToRun←P300();
static word MaskToLongRun←P360();
static struct {unsigned f; char r[16];} string1 = {851984, "\257\300T.\374-\300J.n\204@t\000\000"};
static struct {unsigned f; char r[16];} string2 = {851984, "\257\300\176\213\032\371\300\351\075\041\137\100\150\000\000"};
static struct {
word f0[5]; word f5; word f6; word f7;
word f8; word f9; word f10; word f11;
word f12; word f13; word f14; word f15;
word f16; word f17; word f18[2];
} globalframe = {
{0}, (word) MaskToLongRun←P360, 0, (word) MaskToRun←P300,
0, (word) StoreWithLongColorRuns←P240, 0, (word) StoreWithColorRuns←P180,
0, (word) StoreWithColorMask←P120, 0, (word) MakeColorWord←P60,
0, (word) MaskWithColorImpl←P0, {0}
};
static void NoName←Q1908()
{
register ptr gf←c0157 = (ptr) &globalframe;
word var←c10496;
(void) XR←DeclareGlobalFrame((word) "MaskWithColorImpl", &globalframe, (word) XR←GetTypeIndexS((word) (&string1)), (word) (
( (bPt) gf←c0157)+68)/* var←c9440 */ );
var←c10496 = (word) XR←ExportInterface((word) "MaskWithColor", (word) XR←GetTypeIndexS((word) (&string2)), 7);
(* (( (ptr) gf←c0157)+19)/* var←c10464 */ ) = var←c10496;
(void) XR←ExportProcS(var←c10496, (word) (( (bPt) gf←c0157)+60)/* var←c9408 */ , 67633154);
(void) XR←ExportProcS(var←c10496, (word) (( (bPt) gf←c0157)+52)/* var←c9376 */ , 2621706);
(void) XR←ExportProcS(var←c10496, (word) (( (bPt) gf←c0157)+44)/* var←c9344 */ , 1573382);
(void) XR←ExportProcS(var←c10496, (word) (( (bPt) gf←c0157)+36)/* var←c9312 */ , 1573638);
(void) XR←ExportVar(var←c10496, 4, (word) (( (bPt) gf←c0157)+16)/* var←c9216 */ );
(void) XR←ExportProcS(var←c10496, (word) (( (bPt) gf←c0157)+28)/* var←c9280 */ , 68683014);
(void) XR←ExportProcS(var←c10496, (word) (( (bPt) gf←c0157)+20)/* var←c9248 */ , 68683270);
}
static void MaskWithColorImpl←P0(formal←c012, formal←c011)
word formal←c012;
word formal←c011;
{
/* MaskWithColorImpl: */
}
static word MakeColorWord←P60(sampleColor←v3144, logDepth←v3172)
word sampleColor←v3144;
word logDepth←v3172;
{
word var←c3216;
word bitsValid←v4460;
word color←v4488;
/* MakeColorWord: */
SOURCE(613, 352)
SOURCE(703, 44)
bitsValid←v4460 = (word) XRM←BITLSHIFT(1, logDepth←v3172);
SOURCE(749, 78)
{
word var←c9472;
var←c9472 = (word) XRM←BITRSHIFT( (word) -1, (32 - bitsValid←v4460));
color←v4488 = (word) XRM←BITAND(sampleColor←v3144, var←c9472);
};
SOURCE(829, 111)
lab←L100002: ;
if ((bitsValid←v4460 < 32)) {
}
else {
goto lab←L100000;
};
SOURCE(862, 43)
color←v4488 = (color←v4488 + (word) XRM←BITLSHIFT(color←v4488, bitsValid←v4460));
SOURCE(907, 33)
bitsValid←v4460 = (bitsValid←v4460 + bitsValid←v4460);
goto lab←L100002;
lab←L100000: ;
SOURCE(951, 14)
return(color←v4488);
}
static void StoreWithColorMask←P120(maskBase←v3276, maskOffset←v3304, maskWpl←v3332, dstBase←v3360, dstOffset←v3388, dstWpl←v3416, height←v3444, width←v3472, logDepth←v3500, colorWord←v3528)
word maskBase←v3276;
word maskOffset←v3304;
word maskWpl←v3332;
word dstBase←v3360;
word dstOffset←v3388;
word dstWpl←v3416;
word height←v3444;
word width←v3472;
word logDepth←v3500;
word colorWord←v3528;
{
word unitsPerLine←v4532;
/* StoreWithColorMask: */
SOURCE(971, 3096)
SOURCE(1194, 44)
unitsPerLine←v4532 = (dstWpl←v3416 << 2);
SOURCE(1240, 63)
maskBase←v3276 = (maskBase←v3276 + ((maskOffset←v3304 >> 5) << 2));
SOURCE(1305, 39)
maskOffset←v3304 = (maskOffset←v3304 & 037);
if ((height←v3444 == 0) || (width←v3472 == 0)) {
}
else {
if ((logDepth←v3500 == 5)) {
SOURCE(1439, 42)
dstBase←v3360 = (dstBase←v3360 + (dstOffset←v3388 << 2));
SOURCE(1483, 534)
lab←L100005: ;
SOURCE(1483, 534)
{
word mwp←v4576;
word maskMod←v4604;
word maskWord←v4632;
word dbo←v4660 = 0;
SOURCE(1486, 19)
mwp←v4576 = maskBase←v3276;
SOURCE(1507, 31)
maskMod←v4604 = maskOffset←v3304;
SOURCE(1540, 41)
maskWord←v4632 = (word) XRM←BITLSHIFT((* (ptr) mwp←v4576 ), maskMod←v4604);
SOURCE(1602, 282)
lab←L100008: ;
SOURCE(1605, 84)
if (( (int)maskWord←v4632 < (int)0)) {
SOURCE(1645, 44)
(* (( (ptr) dstBase←v3360)+dbo←v4660) ) = colorWord←v3528;
};
SOURCE(1691, 33)
maskWord←v4632 = (word) XRM←BITLSHIFT(maskWord←v4632, 1);
SOURCE(1726, 13)
dbo←v4660 = (dbo←v4660 + 1);
SOURCE(1741, 20)
if ((dbo←v4660 == width←v3472)) {
SOURCE(1761, 4)
goto lab←L100007;
};
SOURCE(1767, 54)
if ((maskMod←v4604 < 31)) {
SOURCE(1800, 21)
maskMod←v4604 = (maskMod←v4604 + 1);
SOURCE(1823, 4)
goto lab←L100008;
};
SOURCE(1830, 11)
maskMod←v4604 = 0;
SOURCE(1843, 24)
mwp←v4576 = (mwp←v4576 + 4);
SOURCE(1869, 15)
maskWord←v4632 = (* (ptr) mwp←v4576 );
goto lab←L100008;
lab←L100007: ;
SOURCE(1895, 19)
if ((height←v3444 == 1)) {
SOURCE(1914, 4)
goto lab←L100004;
};
SOURCE(1920, 19)
height←v3444 = (height←v3444 - 1);
SOURCE(1941, 42)
maskBase←v3276 = (maskBase←v3276 + (maskWpl←v3332 << 2));
SOURCE(1985, 32)
dstBase←v3360 = (dstBase←v3360 + unitsPerLine←v4532);
};
goto lab←L100005;
lab←L100004: ;
}
else {
if ((logDepth←v3500 == 3)) {
SOURCE(2063, 810)
lab←L100011: ;
SOURCE(2063, 810)
{
word mwp←v4704;
word maskMod←v4732;
word maskWord←v4760;
word dbo←v4788;
word lim←v4816;
SOURCE(2066, 19)
mwp←v4704 = maskBase←v3276;
SOURCE(2087, 31)
maskMod←v4732 = maskOffset←v3304;
SOURCE(2120, 41)
maskWord←v4760 = (word) XRM←BITLSHIFT((* (ptr) mwp←v4704 ), maskMod←v4732);
SOURCE(2163, 25)
dbo←v4788 = dstOffset←v3388;
SOURCE(2190, 25)
lim←v4816 = (dbo←v4788 + width←v3472);
SOURCE(2217, 523)
lab←L100014: ;
SOURCE(2220, 216)
if ((maskWord←v4760 == 0)) {
SOURCE(2241, 203)
{
word remMask←v4860;
word rem←v4888;
SOURCE(2243, 41)
remMask←v4860 = (32 - maskMod←v4732);
SOURCE(2286, 25)
rem←v4888 = (lim←v4816 - dbo←v4788);
SOURCE(2313, 23)
if ((remMask←v4860 >= rem←v4888)) {
SOURCE(2336, 4)
goto lab←L100013;
};
SOURCE(2361, 19)
dbo←v4788 = (dbo←v4788 + remMask←v4860);
SOURCE(2382, 11)
maskMod←v4732 = 0;
SOURCE(2395, 24)
mwp←v4704 = (mwp←v4704 + 4);
SOURCE(2421, 15)
maskWord←v4760 = (* (ptr) mwp←v4704 );
SOURCE(2438, 4)
goto lab←L100014;
};
};
SOURCE(2447, 100)
if (( (int)maskWord←v4760 < (int)0)) {
SOURCE(2487, 60)
(* (( (bPt) dstBase←v3360)+dbo←v4788) ) = colorWord←v3528;
};
SOURCE(2549, 13)
dbo←v4788 = (dbo←v4788 + 1);
SOURCE(2564, 18)
if ((dbo←v4788 == lim←v4816)) {
SOURCE(2582, 4)
goto lab←L100013;
};
SOURCE(2588, 33)
maskWord←v4760 = (word) XRM←BITLSHIFT(maskWord←v4760, 1);
SOURCE(2623, 54)
if ((maskMod←v4732 < 31)) {
SOURCE(2656, 21)
maskMod←v4732 = (maskMod←v4732 + 1);
SOURCE(2679, 4)
goto lab←L100014;
};
SOURCE(2686, 11)
maskMod←v4732 = 0;
SOURCE(2699, 24)
mwp←v4704 = (mwp←v4704 + 4);
SOURCE(2725, 15)
maskWord←v4760 = (* (ptr) mwp←v4704 );
goto lab←L100014;
lab←L100013: ;
SOURCE(2751, 19)
if ((height←v3444 == 1)) {
SOURCE(2770, 4)
goto lab←L100010;
};
SOURCE(2776, 19)
height←v3444 = (height←v3444 - 1);
SOURCE(2797, 42)
maskBase←v3276 = (maskBase←v3276 + (maskWpl←v3332 << 2));
SOURCE(2841, 32)
dstBase←v3360 = (dstBase←v3360 + unitsPerLine←v4532);
};
goto lab←L100011;
lab←L100010: ;
}
else {
SOURCE(2898, 1180)
{
word depth←v4932;
word leftMask←v4960;
SOURCE(2900, 40)
depth←v4932 = (word) XRM←BITLSHIFT(1, logDepth←v3500);
SOURCE(2942, 56)
leftMask←v4960 = (word) XRM←BITLSHIFT( (word) -1, (32 - depth←v4932));
SOURCE(3000, 42)
dstOffset←v3388 = (word) XRM←BITLSHIFT(dstOffset←v3388, logDepth←v3500);
SOURCE(3064, 60)
dstBase←v3360 = (dstBase←v3360 + ((dstOffset←v3388 >> 5) << 2));
SOURCE(3126, 37)
dstOffset←v3388 = (dstOffset←v3388 & 037);
SOURCE(3165, 902)
lab←L100017: ;
SOURCE(3165, 902)
{
word mwp←v5004;
word maskMod←v5032;
word maskWord←v5060;
word dwp←v5088;
word rem←v5116;
word accum←v5144 = 0;
word eachMask←v5172;
SOURCE(3168, 19)
mwp←v5004 = maskBase←v3276;
SOURCE(3189, 31)
maskMod←v5032 = maskOffset←v3304;
SOURCE(3222, 41)
maskWord←v5060 = (word) XRM←BITLSHIFT((* (ptr) mwp←v5004 ), maskMod←v5032);
SOURCE(3265, 18)
dwp←v5088 = dstBase←v3360;
SOURCE(3285, 21)
rem←v5116 = width←v3472;
SOURCE(3325, 47)
eachMask←v5172 = (word) XRM←BITRSHIFT(leftMask←v4960, dstOffset←v3388);
SOURCE(3374, 560)
lab←L100020: ;
SOURCE(3377, 64)
if (( (int)maskWord←v5060 < (int)0)) {
SOURCE(3417, 24)
accum←v5144 = (accum←v5144 + eachMask←v5172);
};
SOURCE(3443, 37)
eachMask←v5172 = (word) XRM←BITRSHIFT(eachMask←v5172, depth←v4932);
SOURCE(3482, 103)
if ((rem←v5116 == 1)) {
SOURCE(3500, 85)
if ((accum←v5144 != 0)) {
SOURCE(3518, 67)
{
word var←c9504;
word var←c9568;
{
/*1*/ word var←c9536;
/*1*/ var←c9536 = (word) XRM←BITNOT(accum←v5144);
/*1*/ var←c9504 = (word) XRM←BITAND((* (ptr) dwp←v5088 ), var←c9536);
/*1*/ };
var←c9568 = (word) XRM←BITAND(colorWord←v3528, accum←v5144);
(* (ptr) dwp←v5088 ) = (word) XRM←BITOR(var←c9504, var←c9568);
};
};
SOURCE(3587, 4)
goto lab←L100019;
};
SOURCE(3596, 166)
if ((eachMask←v5172 == 0)) {
SOURCE(3619, 85)
if ((accum←v5144 != 0)) {
SOURCE(3637, 67)
{
word var←c9600;
word var←c9664;
{
/*1*/ word var←c9632;
/*1*/ var←c9632 = (word) XRM←BITNOT(accum←v5144);
/*1*/ var←c9600 = (word) XRM←BITAND((* (ptr) dwp←v5088 ), var←c9632);
/*1*/ };
var←c9664 = (word) XRM←BITAND(colorWord←v3528, accum←v5144);
(* (ptr) dwp←v5088 ) = (word) XRM←BITOR(var←c9600, var←c9664);
};
};
SOURCE(3706, 24)
dwp←v5088 = (dwp←v5088 + 4);
SOURCE(3732, 19)
eachMask←v5172 = leftMask←v4960;
SOURCE(3753, 9)
accum←v5144 = 0;
};
SOURCE(3767, 13)
rem←v5116 = (rem←v5116 - 1);
SOURCE(3782, 33)
maskWord←v5060 = (word) XRM←BITLSHIFT(maskWord←v5060, 1);
SOURCE(3817, 54)
if ((maskMod←v5032 < 31)) {
SOURCE(3850, 21)
maskMod←v5032 = (maskMod←v5032 + 1);
SOURCE(3873, 4)
goto lab←L100020;
};
SOURCE(3880, 11)
maskMod←v5032 = 0;
SOURCE(3893, 24)
mwp←v5004 = (mwp←v5004 + 4);
SOURCE(3919, 15)
maskWord←v5060 = (* (ptr) mwp←v5004 );
goto lab←L100020;
lab←L100019: ;
SOURCE(3945, 19)
if ((height←v3444 == 1)) {
SOURCE(3964, 4)
goto lab←L100016;
};
SOURCE(3970, 19)
height←v3444 = (height←v3444 - 1);
SOURCE(3991, 42)
maskBase←v3276 = (maskBase←v3276 + (maskWpl←v3332 << 2));
SOURCE(4035, 32)
dstBase←v3360 = (dstBase←v3360 + unitsPerLine←v4532);
};
goto lab←L100017;
lab←L100016: ;
};
};
};
};
}
static void StoreWithColorRuns←P180(mask←v3588, dstBase←v3616, dstOffset←v3644, dstWpl←v3672, logDepth←v3700, colorWord←v3728)
word mask←v3588;
word dstBase←v3616;
word dstOffset←v3644;
word dstWpl←v3672;
word logDepth←v3700;
word colorWord←v3728;
{
word unitsPerLine←v5216;
/* StoreWithColorRuns: */
SOURCE(4085, 2576)
SOURCE(4231, 44)
unitsPerLine←v5216 = (dstWpl←v3672 << 2);
if ((mask←v3588 == 0) || ((* (ptr) mask←v3588 ) == 0)) {
}
else {
if ((logDepth←v3700 == 3)) {
SOURCE(4358, 924)
{
word dbo←v5260;
SOURCE(4360, 25)
dbo←v5260 = dstOffset←v3644;
SOURCE(4387, 881)
{
register word i←v5304 = 0;
register word noName←c9696;
noName←c9696 = (* (ptr) mask←v3588 );
if ((i←v5304 >= noName←c9696)) {
goto lab←L100021;
};
lab←L100024: ;
{
word rb←v5348;
word rem←v5376;
word lim←v5404;
SOURCE(4418, 21)
rb←v5348 = (word) (* ((( (bPt) mask←v3588)+4)+i←v5304) );
SOURCE(4441, 24)
rem←v5376 = ((((unsigned)rb←v5348 << 24) >> 26) + 1);
SOURCE(4467, 25)
lim←v5404 = (dbo←v5260 + rem←v5376);
SOURCE(4494, 690)
if (rb←v5348 & 02) {
SOURCE(4513, 671)
if ((rem←v5376 < 4)) {
SOURCE(4531, 158)
if ((rem←v5376 >= 2)) {
SOURCE(4550, 60)
(* (( (bPt) dstBase←v3616)+dbo←v5260) ) = colorWord←v3728;
SOURCE(4612, 62)
(* (( (bPt) dstBase←v3616)+(dbo←v5260 + 1)) ) = colorWord←v3728;
SOURCE(4676, 13)
dbo←v5260 = (dbo←v5260 + 2);
};
SOURCE(4694, 82)
if (((rem←v5376 & 1) == 1)) {
SOURCE(4716, 60)
(* (( (bPt) dstBase←v3616)+dbo←v5260) ) = colorWord←v3728;
};
}
else {
SOURCE(4785, 399)
SOURCE(4787, 131)
lab←L100028: ;
if (((dbo←v5260 & 3) != 0)) {
}
else {
goto lab←L100026;
};
SOURCE(4823, 60)
(* (( (bPt) dstBase←v3616)+dbo←v5260) ) = colorWord←v3728;
SOURCE(4885, 13)
dbo←v5260 = (dbo←v5260 + 1);
SOURCE(4900, 18)
if ((dbo←v5260 == lim←v5404)) {
SOURCE(4918, 13)
goto lab←L100025;
};
goto lab←L100028;
lab←L100026: ;
SOURCE(4942, 105)
lab←L100031: ;
if (((dbo←v5260 + 4) <= lim←v5404)) {
}
else {
goto lab←L100029;
};
SOURCE(4977, 44)
(* (ptr) (dstBase←v3616 + dbo←v5260) ) = colorWord←v3728;
SOURCE(5023, 24)
dbo←v5260 = (dbo←v5260 + 4);
goto lab←L100031;
lab←L100029: ;
SOURCE(5058, 94)
lab←L100034: ;
if ((dbo←v5260 < lim←v5404)) {
}
else {
goto lab←L100032;
};
SOURCE(5077, 60)
(* (( (bPt) dstBase←v3616)+dbo←v5260) ) = colorWord←v3728;
SOURCE(5139, 13)
dbo←v5260 = (dbo←v5260 + 1);
goto lab←L100034;
lab←L100032: ;
goto lab←L100035;
lab←L100025: ;
lab←L100035: ;
};
};
SOURCE(5190, 9)
dbo←v5260 = lim←v5404;
SOURCE(5201, 67)
if (rb←v5348 & 1) {
SOURCE(5219, 32)
dstBase←v3616 = (dstBase←v3616 + unitsPerLine←v5216);
SOURCE(5253, 15)
dbo←v5260 = dstOffset←v3644;
};
};
i←v5304 = (i←v5304 + 1);
if ((i←v5304 < noName←c9696)) {
goto lab←L100024;
};
lab←L100021: ;
};
};
}
else {
if ((logDepth←v3700 == 5)) {
SOURCE(5328, 346)
{
word dbo←v5448 = 0;
SOURCE(5349, 42)
dstBase←v3616 = (dstBase←v3616 + (dstOffset←v3644 << 2));
SOURCE(5393, 267)
{
register word i←v5492 = 0;
register word noName←c9728;
noName←c9728 = (* (ptr) mask←v3588 );
if ((i←v5492 >= noName←c9728)) {
goto lab←L100036;
};
lab←L100039: ;
{
word rb←v5536;
word lim←v5564;
SOURCE(5424, 21)
rb←v5536 = (word) (* ((( (bPt) mask←v3588)+4)+i←v5492) );
SOURCE(5447, 30)
lim←v5564 = ((dbo←v5448 + (((unsigned)rb←v5536 << 24) >> 26)) + 1);
SOURCE(5479, 97)
if (rb←v5536 & 02) {
SOURCE(5498, 78)
lab←L100042: ;
if ((dbo←v5448 < lim←v5564)) {
}
else {
goto lab←L100040;
};
SOURCE(5517, 44)
(* (( (ptr) dstBase←v3616)+dbo←v5448) ) = colorWord←v3728;
SOURCE(5563, 13)
dbo←v5448 = (dbo←v5448 + 1);
goto lab←L100042;
lab←L100040: ;
};
SOURCE(5590, 9)
dbo←v5448 = lim←v5564;
SOURCE(5601, 59)
if (rb←v5536 & 1) {
SOURCE(5619, 32)
dstBase←v3616 = (dstBase←v3616 + unitsPerLine←v5216);
SOURCE(5653, 7)
dbo←v5448 = 0;
};
};
i←v5492 = (i←v5492 + 1);
if ((i←v5492 < noName←c9728)) {
goto lab←L100039;
};
lab←L100036: ;
};
};
}
else {
SOURCE(5688, 984)
{
word dbo←v5608;
SOURCE(5690, 46)
dbo←v5608 = (word) XRM←BITLSHIFT(dstOffset←v3644, logDepth←v3700);
SOURCE(5738, 15)
dstOffset←v3644 = dbo←v5608;
SOURCE(5755, 906)
{
register word i←v5652 = 0;
register word noName←c9760;
noName←c9760 = (* (ptr) mask←v3588 );
if ((i←v5652 >= noName←c9760)) {
goto lab←L100043;
};
lab←L100046: ;
{
word rb←v5696;
word bits←v5724;
SOURCE(5786, 21)
rb←v5696 = (word) (* ((( (bPt) mask←v3588)+4)+i←v5652) );
SOURCE(5809, 46)
bits←v5724 = (word) XRM←BITLSHIFT(((((unsigned)rb←v5696 << 24) >> 26) + 1), logDepth←v3700);
SOURCE(5857, 708)
if ( ( (rb←v5696 & 02) ? (bits←v5724 != 0) : 0 ) ) {
SOURCE(5887, 678)
SOURCE(5889, 20)
{
word rem←v5768;
word wp←v5796;
word mod←v5824;
SOURCE(5889, 20)
rem←v5768 = bits←v5724;
SOURCE(5911, 54)
wp←v5796 = (dstBase←v3616 + ((dbo←v5608 >> 5) << 2));
SOURCE(5967, 35)
mod←v5824 = (dbo←v5608 & 037);
SOURCE(6004, 306)
if ((mod←v5824 != 0)) {
SOURCE(6020, 292)
/*1*/ {
/*1*/ word mask←v5868;
/*1*/ word lim←v5896;
SOURCE(6022, 38)
/*1*/ mask←v5868 = (word) XRM←BITRSHIFT( (word) -1, mod←v5824);
SOURCE(6062, 25)
/*1*/ lim←v5896 = (rem←v5768 + mod←v5824);
SOURCE(6089, 65)
/*1*/ if ((lim←v5896 < 32)) {
SOURCE(6115, 39)
/*1*/ mask←v5868 = (mask←v5868 - (word) XRM←BITRSHIFT( (word) -1, lim←v5896));
/*1*/ };
SOURCE(6156, 63)
/*1*/ {
/*1*/ word var←c9792;
/*1*/ word var←c9856;
/*1*/ {
/*1*/ word var←c9824;
/*1*/ var←c9824 = (word) XRM←BITNOT(mask←v5868);
/*1*/ var←c9792 = (word) XRM←BITAND((* (ptr) wp←v5796 ), var←c9824);
/*1*/ };
/*1*/ var←c9856 = (word) XRM←BITAND(colorWord←v3728, mask←v5868);
/*1*/ (* (ptr) wp←v5796 ) = (word) XRM←BITOR(var←c9792, var←c9856);
/*1*/ };
SOURCE(6221, 27)
/*1*/ if ((lim←v5896 <= 32)) {
SOURCE(6248, 13)
/*1*/ goto lab←L100047;
/*1*/ };
SOURCE(6263, 22)
/*1*/ wp←v5796 = (wp←v5796 + 4);
SOURCE(6287, 23)
/*1*/ rem←v5768 = (lim←v5896 - 32);
/*1*/ };
/*1*/ };
SOURCE(6315, 92)
lab←L100050: ;
if ((rem←v5768 >= 32)) {
/*1*/ }
else {
/*1*/ goto lab←L100048;
/*1*/ };
SOURCE(6343, 15)
(* (ptr) wp←v5796 ) = colorWord←v3728;
SOURCE(6360, 23)
rem←v5768 = (rem←v5768 - 32);
SOURCE(6385, 22)
wp←v5796 = (wp←v5796 + 4);
goto lab←L100050;
lab←L100048: ;
SOURCE(6418, 121)
if ((rem←v5768 != 0)) {
SOURCE(6434, 107)
/*1*/ {
/*1*/ word mask←v5940;
SOURCE(6436, 38)
/*1*/ mask←v5940 = (word) XRM←BITRSHIFT( (word) -1, rem←v5768);
SOURCE(6476, 63)
/*1*/ {
/*1*/ word var←c9888;
/*1*/ word var←c9920;
/*1*/ var←c9888 = (word) XRM←BITAND((* (ptr) wp←v5796 ), mask←v5940);
/*1*/ {
/*1*/ word var←c9952;
/*1*/ var←c9952 = (word) XRM←BITNOT(mask←v5940);
/*1*/ var←c9920 = (word) XRM←BITAND(colorWord←v3728, var←c9952);
/*1*/ };
/*1*/ (* (ptr) wp←v5796 ) = (word) XRM←BITOR(var←c9888, var←c9920);
/*1*/ };
/*1*/ };
/*1*/ };
};
goto lab←L100051;
lab←L100047: ;
lab←L100051: ;
};
SOURCE(6568, 16)
dbo←v5608 = (dbo←v5608 + bits←v5724);
SOURCE(6586, 20)
if ( ! (rb←v5696 & 1)) {
SOURCE(6606, 4)
goto lab←L100045;
};
SOURCE(6612, 32)
dstBase←v3616 = (dstBase←v3616 + unitsPerLine←v5216);
SOURCE(6646, 15)
dbo←v5608 = dstOffset←v3644;
};
lab←L100045: ;
i←v5652 = (i←v5652 + 1);
if ((i←v5652 < noName←c9760)) {
goto lab←L100046;
};
lab←L100043: ;
};
};
};
};
};
}
static void StoreWithLongColorRuns←P240(mask←v3788, dstBase←v3816, dstOffset←v3844, dstWpl←v3872, logDepth←v3900, colorWord←v3928)
word mask←v3788;
word dstBase←v3816;
word dstOffset←v3844;
word dstWpl←v3872;
word logDepth←v3900;
word colorWord←v3928;
{
word unitsPerLine←v5984;
/* StoreWithLongColorRuns: */
SOURCE(6679, 2447)
SOURCE(6833, 44)
unitsPerLine←v5984 = (dstWpl←v3872 << 2);
if ((mask←v3788 == 0) || ((* (ptr) mask←v3788 ) == 0)) {
}
else {
if ((logDepth←v3900 == 3)) {
SOURCE(6962, 896)
{
register word i←v6028 = 0;
register word noName←c9984;
noName←c9984 = (* (ptr) mask←v3788 );
if ((i←v6028 >= noName←c9984)) {
goto lab←L100052;
};
lab←L100055: ;
{
word run←v6072;
word dbo←v6100;
word rem←v6128;
SOURCE(6993, 22)
run←v6072 = (* ((( (ptr) mask←v3788)+1)+i←v6028) );
SOURCE(7017, 36)
dbo←v6100 = (dstOffset←v3844 + ((unsigned)run←v6072 >> 16));
SOURCE(7055, 25)
rem←v6128 = ( (((unsigned)run←v6072 << 17) >> 17) );
SOURCE(7082, 718)
if ((rem←v6128 < 4)) {
SOURCE(7100, 158)
if ((rem←v6128 >= 2)) {
SOURCE(7119, 60)
(* (( (bPt) dstBase←v3816)+dbo←v6100) ) = colorWord←v3928;
SOURCE(7181, 62)
(* (( (bPt) dstBase←v3816)+(dbo←v6100 + 1)) ) = colorWord←v3928;
SOURCE(7245, 13)
dbo←v6100 = (dbo←v6100 + 2);
};
SOURCE(7263, 82)
if (((rem←v6128 & 1) == 1)) {
SOURCE(7285, 60)
(* (( (bPt) dstBase←v3816)+dbo←v6100) ) = colorWord←v3928;
};
}
else {
SOURCE(7354, 449)
{
word lim←v6172;
SOURCE(7356, 25)
lim←v6172 = (dbo←v6100 + rem←v6128);
SOURCE(7383, 417)
if ((dbo←v6100 < lim←v6172)) {
SOURCE(7401, 399)
SOURCE(7403, 131)
lab←L100059: ;
if (((dbo←v6100 & 3) != 0)) {
}
else {
goto lab←L100057;
};
SOURCE(7439, 60)
(* (( (bPt) dstBase←v3816)+dbo←v6100) ) = colorWord←v3928;
SOURCE(7501, 13)
dbo←v6100 = (dbo←v6100 + 1);
SOURCE(7516, 18)
if ((dbo←v6100 == lim←v6172)) {
SOURCE(7534, 13)
goto lab←L100056;
};
goto lab←L100059;
lab←L100057: ;
SOURCE(7558, 105)
lab←L100062: ;
if (((dbo←v6100 + 4) <= lim←v6172)) {
}
else {
goto lab←L100060;
};
SOURCE(7593, 44)
(* (ptr) (dstBase←v3816 + dbo←v6100) ) = colorWord←v3928;
SOURCE(7639, 24)
dbo←v6100 = (dbo←v6100 + 4);
goto lab←L100062;
lab←L100060: ;
SOURCE(7674, 94)
lab←L100065: ;
if ((dbo←v6100 < lim←v6172)) {
}
else {
goto lab←L100063;
};
SOURCE(7693, 60)
(* (( (bPt) dstBase←v3816)+dbo←v6100) ) = colorWord←v3928;
SOURCE(7755, 13)
dbo←v6100 = (dbo←v6100 + 1);
goto lab←L100065;
lab←L100063: ;
goto lab←L100066;
lab←L100056: ;
lab←L100066: ;
};
};
};
SOURCE(7806, 52)
if (run←v6072 & 0100000) {
SOURCE(7826, 32)
dstBase←v3816 = (dstBase←v3816 + unitsPerLine←v5984);
};
};
i←v6028 = (i←v6028 + 1);
if ((i←v6028 < noName←c9984)) {
goto lab←L100055;
};
lab←L100052: ;
};
}
else {
if ((logDepth←v3900 == 5)) {
SOURCE(7917, 42)
dstBase←v3816 = (dstBase←v3816 + (dstOffset←v3844 << 2));
SOURCE(7961, 255)
{
register word i←v6216 = 0;
register word noName←c10016;
noName←c10016 = (* (ptr) mask←v3788 );
if ((i←v6216 >= noName←c10016)) {
goto lab←L100067;
};
lab←L100070: ;
{
word run←v6260;
word dbo←v6288;
word lim←v6316;
SOURCE(7992, 22)
run←v6260 = (* ((( (ptr) mask←v3788)+1)+i←v6216) );
SOURCE(8016, 24)
dbo←v6288 = ((unsigned)run←v6260 >> 16);
SOURCE(8042, 31)
lim←v6316 = (dbo←v6288 + ( (((unsigned)run←v6260 << 17) >> 17) ));
SOURCE(8075, 78)
lab←L100073: ;
if ((dbo←v6288 < lim←v6316)) {
}
else {
goto lab←L100071;
};
SOURCE(8094, 44)
(* (( (ptr) dstBase←v3816)+dbo←v6288) ) = colorWord←v3928;
SOURCE(8140, 13)
dbo←v6288 = (dbo←v6288 + 1);
goto lab←L100073;
lab←L100071: ;
SOURCE(8164, 52)
if (run←v6260 & 0100000) {
SOURCE(8184, 32)
dstBase←v3816 = (dstBase←v3816 + unitsPerLine←v5984);
};
};
i←v6216 = (i←v6216 + 1);
if ((i←v6216 < noName←c10016)) {
goto lab←L100070;
};
lab←L100067: ;
};
}
else {
SOURCE(8243, 883)
{
register word i←v6360 = 0;
register word noName←c10048;
noName←c10048 = (* (ptr) mask←v3788 );
if ((i←v6360 >= noName←c10048)) {
goto lab←L100074;
};
lab←L100077: ;
{
word run←v6404;
word rem←v6432;
SOURCE(8274, 22)
run←v6404 = (* ((( (ptr) mask←v3788)+1)+i←v6360) );
SOURCE(8298, 46)
rem←v6432 = (word) XRM←BITLSHIFT(( (((unsigned)run←v6404 << 17) >> 17) ), logDepth←v3900);
SOURCE(8346, 725)
if ((rem←v6432 != 0)) {
SOURCE(8362, 709)
SOURCE(8364, 57)
{
word dbo←v6476;
word wp←v6504;
word mod←v6532;
SOURCE(8364, 57)
dbo←v6476 = (word) XRM←BITLSHIFT((dstOffset←v3844 + ((unsigned)run←v6404 >> 16)), logDepth←v3900);
SOURCE(8423, 54)
wp←v6504 = (dstBase←v3816 + ((dbo←v6476 >> 5) << 2));
SOURCE(8479, 35)
mod←v6532 = (dbo←v6476 & 037);
SOURCE(8516, 303)
if ((mod←v6532 != 0)) {
SOURCE(8532, 289)
{
/*1*/ word mask←v6576;
/*1*/ word lim←v6604;
SOURCE(8534, 38)
/*1*/ mask←v6576 = (word) XRM←BITRSHIFT( (word) -1, mod←v6532);
SOURCE(8574, 25)
/*1*/ lim←v6604 = (rem←v6432 + mod←v6532);
SOURCE(8601, 65)
/*1*/ if ((lim←v6604 < 32)) {
SOURCE(8627, 39)
/*1*/ mask←v6576 = (mask←v6576 - (word) XRM←BITRSHIFT( (word) -1, lim←v6604));
/*1*/ };
SOURCE(8668, 63)
/*1*/ {
/*1*/ word var←c10080;
/*1*/ word var←c10144;
/*1*/ {
/*1*/ word var←c10112;
/*1*/ var←c10112 = (word) XRM←BITNOT(mask←v6576);
/*1*/ var←c10080 = (word) XRM←BITAND((* (ptr) wp←v6504 ), var←c10112);
/*1*/ };
/*1*/ var←c10144 = (word) XRM←BITAND(colorWord←v3928, mask←v6576);
/*1*/ (* (ptr) wp←v6504 ) = (word) XRM←BITOR(var←c10080, var←c10144);
/*1*/ };
SOURCE(8733, 27)
/*1*/ if ((lim←v6604 <= 32)) {
SOURCE(8760, 10)
/*1*/ goto lab←L100078;
/*1*/ };
SOURCE(8772, 22)
/*1*/ wp←v6504 = (wp←v6504 + 4);
SOURCE(8796, 23)
/*1*/ rem←v6432 = (lim←v6604 - 32);
/*1*/ };
};
SOURCE(8824, 92)
lab←L100081: ;
if ((rem←v6432 >= 32)) {
}
else {
goto lab←L100079;
};
SOURCE(8852, 15)
(* (ptr) wp←v6504 ) = colorWord←v3928;
SOURCE(8869, 23)
rem←v6432 = (rem←v6432 - 32);
SOURCE(8894, 22)
wp←v6504 = (wp←v6504 + 4);
goto lab←L100081;
lab←L100079: ;
SOURCE(8927, 121)
if ((rem←v6432 != 0)) {
SOURCE(8943, 107)
{
/*1*/ word mask←v6648;
SOURCE(8945, 38)
/*1*/ mask←v6648 = (word) XRM←BITRSHIFT( (word) -1, rem←v6432);
SOURCE(8985, 63)
/*1*/ {
/*1*/ word var←c10176;
/*1*/ word var←c10208;
/*1*/ var←c10176 = (word) XRM←BITAND((* (ptr) wp←v6504 ), mask←v6648);
/*1*/ {
/*1*/ word var←c10240;
/*1*/ var←c10240 = (word) XRM←BITNOT(mask←v6648);
/*1*/ var←c10208 = (word) XRM←BITAND(colorWord←v3928, var←c10240);
/*1*/ };
/*1*/ (* (ptr) wp←v6504 ) = (word) XRM←BITOR(var←c10176, var←c10208);
/*1*/ };
/*1*/ };
};
};
goto lab←L100082;
lab←L100078: ;
lab←L100082: ;
};
SOURCE(9074, 52)
if (run←v6404 & 0100000) {
SOURCE(9094, 32)
dstBase←v3816 = (dstBase←v3816 + unitsPerLine←v5984);
};
};
i←v6360 = (i←v6360 + 1);
if ((i←v6360 < noName←c10048)) {
goto lab←L100077;
};
lab←L100074: ;
};
};
};
};
}
static word MaskToRun←P300(run←v4004, maskPtr←v4032, offset←v4060, wpl←v4088, height←v4116, width←v4144)
word run←v4004;
word maskPtr←v4032;
word offset←v4060;
word wpl←v4088;
word height←v4116;
word width←v4144;
{
register ptr gf←c10528 = (ptr) &globalframe;
word var←c4188;
word seqLen←v6692 = 0;
word mp←v6720;
/* MaskToRun: */
SOURCE(9174, 974)
SOURCE(9338, 31)
mp←v6720 = maskPtr←v4032;
SOURCE(9371, 698)
if ( ( (height←v4116 != 0) ? (width←v4144 != 0) : 0 ) ) {
SOURCE(9404, 665)
{
register word noName←c10272 = 0;
register word noName←c10304;
noName←c10304 = height←v4116;
if ((noName←c10272 >= noName←c10304)) {
goto lab←L100083;
};
lab←L100086: ;
{
word runLen←v6764 = 0;
word runBit←v6792 = 0;
word runLast←v6820 = 0;
word emptyLine←v6848 = 1;
word j←v6876 = 0;
word lim←v6904;
SOURCE(9535, 21)
lim←v6904 = width←v4144;
SOURCE(9558, 55)
lab←L100089: ;
{
word tc3;
word x4;
if ((lim←v6904 > 1)) {
tc3 = (word) ((
x4 = ((lim←v6904 - 1) + offset←v4060),
((* (ptr) (( (ptr) mp←v6720) + (x4 >> 5)) ) >> (31 - ((x4 & 037)))) & 1
) == 0);
}
else {
tc3 = (word) 0;
};
if (tc3) {
}
else {
goto lab←L100087;
};
};
SOURCE(9600, 13)
lim←v6904 = (lim←v6904 - 1);
goto lab←L100089;
lab←L100087: ;
SOURCE(9624, 409)
lab←L100092: ;
if ((j←v6876 < lim←v6904)) {
}
else {
goto lab←L100090;
};
{
word bit←v6948;
SOURCE(9641, 23)
bit←v6948 = (((* (ptr) (( (ptr) mp←v6720) + ((j←v6876 + offset←v4060) >> 5)) ) >> (31 - (((j←v6876 + offset←v4060) & 037))))
& 1);
SOURCE(9666, 31)
if ((runLen←v6764 == 0)) {
SOURCE(9685, 12)
runBit←v6792 = bit←v6948;
};
SOURCE(9699, 97)
if ((bit←v6948 == runBit←v6792)) {
SOURCE(9722, 19)
runLen←v6764 = (runLen←v6764 + 1);
SOURCE(9743, 9)
j←v6876 = (j←v6876 + 1);
if ((j←v6876 == lim←v6904)) {
SOURCE(9782, 14)
runLast←v6820 = 1;
}
else {
if ((runLen←v6764 < 64)) {
SOURCE(9838, 4)
goto lab←L100092;
};
};
};
SOURCE(9856, 124)
if ((run←v4004 != 0)) {
SOURCE(9876, 38)
if ((seqLen←v6692 >= (* (ptr) run←v4004 ))) {
SOURCE(9902, 12)
(void) XR←RaiseError((word) (( (bPt) gf←c10528)+16)/* var←c9216 */ , 0);
};
SOURCE(9916, 64)
(* ((( (bPt) run←v4004)+4)+seqLen←v6692) ) = ((((((runLen←v6764 - 1) & 077) << 1) + (runBit←v6792 & 1)) << 1) + (runLast←v6820 & 1));
};
SOURCE(9985, 19)
seqLen←v6692 = (seqLen←v6692 + 1);
SOURCE(10006, 10)
runLen←v6764 = 0;
SOURCE(10018, 15)
runLast←v6820 = 0;
};
goto lab←L100092;
lab←L100090: ;
SOURCE(10044, 25)
mp←v6720 = (mp←v6720 + (wpl←v4088 << 2));
};
noName←c10272 = (noName←c10272 + 1);
if ((noName←c10272 < noName←c10304)) {
goto lab←L100086;
};
lab←L100083: ;
};
};
SOURCE(10080, 51)
if ( ( (run←v4004 != 0) ? (seqLen←v6692 != (* (ptr) run←v4004 )) : 0 ) ) {
SOURCE(10119, 12)
(void) XR←RaiseError((word) (( (bPt) gf←c10528)+16)/* var←c9216 */ , 0);
};
SOURCE(10133, 15)
return(seqLen←v6692);
}
static word MaskToLongRun←P360(run←v4248, maskPtr←v4276, offset←v4304, wpl←v4332, height←v4360, width←v4388)
word run←v4248;
word maskPtr←v4276;
word offset←v4304;
word wpl←v4332;
word height←v4360;
word width←v4388;
{
register ptr gf←c10560 = (ptr) &globalframe;
word var←c4432;
word seqLen←v6992 = 0;
word mp←v7020;
/* MaskToLongRun: */
SOURCE(10154, 796)
SOURCE(10326, 31)
mp←v7020 = maskPtr←v4276;
SOURCE(10359, 512)
if ( ( (height←v4360 != 0) ? (width←v4388 != 0) : 0 ) ) {
SOURCE(10392, 479)
{
register word noName←c10368 = 0;
register word noName←c10400;
noName←c10400 = height←v4360;
if ((noName←c10368 >= noName←c10400)) {
goto lab←L100093;
};
lab←L100096: ;
{
word j←v7064 = 0;
word lim←v7092;
SOURCE(10432, 21)
lim←v7092 = width←v4388;
SOURCE(10455, 55)
lab←L100099: ;
{
word tc5;
word x6;
if ((lim←v7092 > 1)) {
tc5 = (word) ((
x6 = ((lim←v7092 - 1) + offset←v4304),
((* (ptr) (( (ptr) mp←v7020) + (x6 >> 5)) ) >> (31 - ((x6 & 037)))) & 1
) == 0);
}
else {
tc5 = (word) 0;
};
if (tc5) {
}
else {
goto lab←L100097;
};
};
SOURCE(10497, 13)
lim←v7092 = (lim←v7092 - 1);
goto lab←L100099;
lab←L100097: ;
SOURCE(10521, 310)
lab←L100102: ;
SOURCE(10521, 310)
{
word start←v7136;
SOURCE(10541, 47)
lab←L100105: ;
{
word tc7;
if ((j←v7064 < lim←v7092)) {
tc7 = (word) ((((* (ptr) (( (ptr) mp←v7020) + ((j←v7064 + offset←v4304) >> 5)) ) >> (31 - (((j←v7064 + offset←v4304) & 037))))
& 1) == 0);
}
else {
tc7 = (word) 0;
};
if (tc7) {
}
else {
goto lab←L100103;
};
};
SOURCE(10579, 9)
j←v7064 = (j←v7064 + 1);
goto lab←L100105;
lab←L100103: ;
SOURCE(10599, 9)
start←v7136 = j←v7064;
SOURCE(10610, 47)
lab←L100108: ;
{
word tc8;
if ((j←v7064 < lim←v7092)) {
tc8 = (word) ((((* (ptr) (( (ptr) mp←v7020) + ((j←v7064 + offset←v4304) >> 5)) ) >> (31 - (((j←v7064 + offset←v4304) & 037))))
& 1) == 1);
}
else {
tc8 = (word) 0;
};
if (tc8) {
}
else {
goto lab←L100106;
};
};
SOURCE(10648, 9)
j←v7064 = (j←v7064 + 1);
goto lab←L100108;
lab←L100106: ;
SOURCE(10668, 121)
if ((run←v4248 != 0)) {
SOURCE(10688, 38)
if ((seqLen←v6992 >= (* (ptr) run←v4248 ))) {
SOURCE(10714, 12)
(void) XR←RaiseError((word) (( (bPt) gf←c10560)+16)/* var←c9216 */ , 0);
};
SOURCE(10728, 61)
(* ((( (ptr) run←v4248)+1)+seqLen←v6992) ) = ((((( (((unsigned)start←v7136 << 16) >> 16) ) << 1) + (j←v7064 == lim←v7092)) << 15) +
( (((unsigned)(j←v7064 - start←v7136) << 17) >> 17) ));
};
SOURCE(10794, 19)
seqLen←v6992 = (seqLen←v6992 + 1);
SOURCE(10815, 16)
if ((j←v7064 == lim←v7092)) {
SOURCE(10831, 4)
goto lab←L100101;
};
};
goto lab←L100102;
lab←L100101: ;
SOURCE(10846, 25)
mp←v7020 = (mp←v7020 + (wpl←v4332 << 2));
};
noName←c10368 = (noName←c10368 + 1);
if ((noName←c10368 < noName←c10400)) {
goto lab←L100096;
};
lab←L100093: ;
};
};
SOURCE(10882, 51)
if ( ( (run←v4248 != 0) ? (seqLen←v6992 != (* (ptr) run←v4248 )) : 0 ) ) {
SOURCE(10921, 12)
(void) XR←RaiseError((word) (( (bPt) gf←c10560)+16)/* var←c9216 */ , 0);
};
SOURCE(10935, 15)
return(seqLen←v6992);
}
/* file: MaskWithColorImpl, module: MaskWithColorImpl, compiled at: February 21, 1992 11:34:06 pm PST */
extern void XR←install←MaskWithColorImpl() {
NoName←Q1908();
}
extern void XR←run←MaskWithColorImpl() { XR←Start(&globalframe); }