/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation.  All rights reserved. */
/* time: July 28, 1993 10:26:47 am PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: ImagerTypefaceImpl, module: ImagerTypefaceImpl */ 
/* switches: bcfhklnouw */ 
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [3643681778,3117503011] ImagerTypefaceImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef word (*fPt)();
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; W2 r;} W10;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1, f2;} W3;
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef W2 *W2Pt;
typedef struct {word f0, f1, f2, f3;} W4;
typedef W4 *W4Pt;
typedef W3 *W3Pt;
#define SOURCE(p, l) /* source p, l */
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc157 = 0.0;
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
static void NoName←Q4416();
static void ImagerTypefaceImpl←P0();
static word GetCreators←P60();
static word ExtensionFromCreator←P120();
static word FindExt←P180();
static word CompareOrder←P240();
static void RegisterCreator←P300();
static word RopeFromRef←P360();
static void FlushTypefaceCaches←P420();
static word FetchTypeface←P480();
static void SetSubstitutionFont←P540();
static void EnumerateSubstitutions←P600();
static word Try←P2436();
static word Match←P2544();
static word Create←P660();
static word EachCandidate←P3180();
static word NoName←Q4476();
static word FindTypeface←P720();
static void Insert←P3384();
static word ReverseMetrics←P780();
static word SelectAlternateTypefaceMetrics←P840();
static word AlternateMetricFind←P900();
static word AlternateMetricInsert←P960();
static word WNAlternateMetrics←P1020();
static word WNContains←P1080();
static word WNNextChar←P1140();
static void WNEscapement←P1200();
static word WNAmplified←P1260();
static word WNCorrection←P1320();
static void WNBoundingBox←P1380();
static void WNFontBoundingBox←P1440();
static word WNNull←P1500();
static void WNKern←P1560();
static void WNMask←P1620();
static word LowerCaseCat←P1680();
static word Action←P3972();
static word FileExtensionCreate←P1740();
static word NoName←Q4536();
static word CreatorFromFileExtension←P1800();
static void NoName←Q4596();
static void NoName←Q4656();
static struct {unsigned f; char r[48];} string1 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\363\223\326\161\300\017\164\046\072\104\350\005\004\162\145\163\164\214\216\257\300\363\223\326\161\300\017\164\046\072\104\350\261\000\000\000"};
static struct {unsigned f; char r[4];} string2 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\104\304\000\000"};
static struct {unsigned f; char r[24];} string4 = {1376277, "\007\000\001\002\007\020\001\002\000\007\036\002\004\003\002\004\014\016\015\003\001\000\000"};
static struct {unsigned f; char r[16];} string5 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[4];} string6 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string7 = {851984, "\257\300\301\227\276\106\300\342\254\204\020\102\124\000\000"};
static struct {unsigned f; char r[4];} string8 = {131074, "\003\001\000"};
static struct {unsigned f; char r[44];} string9 = {2752556, "\260\006\005\146\151\162\163\164\257\300\240\236\274\171\300\344\000\142\023\100\200\005\004\162\145\163\164\214\257\300\240\236\274\171\300\344\000\142\023\100\200\261\000"};
static struct {unsigned f; char r[4];} string10 = {131074, "\004\007\000"};
static struct {unsigned f; char r[44];} string11 = {2752556, "\260\006\005\146\151\162\163\164\257\300\331\056\053\362\300\271\321\122\043\102\044\005\004\162\145\163\164\214\257\300\331\056\053\362\300\271\321\122\043\102\044\261\000"};
static struct {unsigned f; char r[4];} string12 = {131074, "\004\017\000"};
static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\301\227\276\106\300\342\254\204\020\100\164\000\000"};
static struct {unsigned f; char r[4];} string14 = {196611, "\004@\357"};
static struct {unsigned f; char r[44];} string15 = {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[48];} string16 = {2883632, "\260\006\005\146\151\162\163\164\216\257\300\301\227\276\106\300\342\254\204\020\102\124\005\004\162\145\163\164\214\216\257\300\301\227\276\106\300\342\254\204\020\102\124\261\000\000\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\331\056\053\362\300\271\321\122\043\103\150\000\000"};
static struct {unsigned f; char r[16];} string18 = {851984, "\257\300\331\056\053\362\300\271\321\122\043\100\230\000\000"};
static struct {unsigned f; char r[12];} string19 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[4];} string20 = {131076, "\216\251\000"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\301\227\276\106\300\342\254\204\020\100\200\000\000"};
static struct {unsigned f; char r[8];} string22 = {458759, "\006\002\000\001@@\001"};
static struct {unsigned f; char r[16];} string23 = {917520, "Xerox/XC1-3-3/\000"};
static struct {unsigned f; char r[8];} string24 = {393224, "Optima\000"};
static struct {unsigned f; char r[12];} string25 = {589836, "Helvetica\000\000"};
static struct {unsigned f; char r[8];} string26 = {393224, "Modern\000"};
static struct {unsigned f; char r[12];} string27 = {655372, "TimesRoman\000"};
static struct {unsigned f; char r[8];} string28 = {327688, "Times\000\000"};
static struct {unsigned f; char r[8];} string29 = {458760, "Classic"};
static struct {unsigned f; char r[8];} string30 = {327688, "Gacha\000\000"};
static struct {unsigned f; char r[12];} string31 = {655372, "PrintWheel\000"};
static struct {unsigned f; char r[12];} string32 = {524300, "Terminal\000\000\000"};
static struct {unsigned f; char r[20];} string33 = {1048596, "Backward Metrics\000\000\000"};
static struct {unsigned f; char r[16];} string34 = {917520, "Xerox/XC1-1-1/\000"};
static struct {unsigned f; char r[16];} string35 = {917520, "Xerox/XC1-2-2/\000"};
static struct {unsigned f; char r[20];} string36 = {1048596, "AlternateMetrics\000\000\000"};
static struct {unsigned f; char r[24];} string37 = {1310744, "Xerox/XC1-3-3/Modern\000\000\000"};
static struct {unsigned f; char r[24];} string38 = {1310744, "Xerox/XC1-1-1/Modern\000\000\000"};
static struct {unsigned f; char r[24];} string39 = {1310744, "Xerox/XC1-2-2/Modern\000\000\000"};
static struct {unsigned f; char r[24];} string40 = {1310744, "Xerox/XC1-1-1/Optima\000\000\000"};
static struct {unsigned f; char r[28];} string41 = {1769500, "Xerox/Pressfonts/Modern-MRR"};
static struct {unsigned f; char r[4];} string42 = {131076, "fd\000"};
static struct {unsigned f; char r[8];} string43 = {262152, "icfk\000\000\000"};
static struct {unsigned f; char r[8];} string44 = {393224, "psf-fs\000"};
static struct {unsigned f; char r[4];} string45 = {196612, "psf"};
static struct {unsigned f; char r[8];} string46 = {458760, "icffile"};
static struct {unsigned f; char r[16];} string47 = {786448, "Xerox/XC1*/*\000\000\000"};
static struct {unsigned f; char r[4];} string48 = {65540, "/\000\000"};
static struct {unsigned f; char r[8];} string49 = {458760, "*helve*"};
static struct {unsigned f; char r[8];} string50 = {393224, "*univ*\000"};
static struct {unsigned f; char r[8];} string51 = {393224, "*sans*\000"};
static struct {unsigned f; char r[8];} string52 = {393224, "*frut*\000"};
static struct {unsigned f; char r[12];} string53 = {524300, "*modern*\000\000\000"};
static struct {unsigned f; char r[12];} string54 = {589836, "*classic*\000\000"};
static struct {unsigned f; char r[8];} string55 = {458760, "*scotc*"};
static struct {unsigned f; char r[8];} string56 = {458760, "*serif*"};
static struct {unsigned f; char r[8];} string57 = {393224, "*time*\000"};
static struct {unsigned f; char r[8];} string58 = {393224, "*cent*\000"};
static struct {unsigned f; char r[8];} string59 = {458760, "*garam*"};
static struct {unsigned f; char r[12];} string60 = {655372, "*terminal*\000"};
static struct {unsigned f; char r[8];} string61 = {458760, "*gacha*"};
static struct {unsigned f; char r[16];} string62 = {786448, "*printwheel*\000\000\000"};
static struct {unsigned f; char r[8];} string63 = {458760, "*-*bol*"};
static struct {unsigned f; char r[8];} string64 = {458760, "*-*ita*"};
static struct {unsigned f; char r[8];} string65 = {458760, "*-*obl*"};
static struct {unsigned f; char r[12];} string66 = {524300, "*-*thin*\000\000\000"};
static struct {unsigned f; char r[4];} string67 = {65540, "-\000\000"};
static struct {unsigned f; char r[8];} string68 = {327688, "-bold\000\000"};
static struct {unsigned f; char r[8];} string69 = {458760, "-italic"};
static struct {unsigned f; char r[44];} string70 = {2621484, "Unable to find substitute for font \042%g\042.\000\000\000"};
static struct {unsigned f; char r[44];} string71 = {2818092, "Could not find font \042%g\042; substituting \042%g\042"};
static struct {unsigned f; char r[4];} string72 = {196612, "fis"};
static struct {unsigned f; char r[4];} string73 = {131076, "ks\000"};
static struct {unsigned f; char r[8];} string74 = {393224, "strike\000"};
static struct {unsigned f; char r[52];} string75 = {3276852, "Attempt to select unknown alternate font metrics: \000"};
static struct {unsigned f; char r[12];} string76 = {655372, " for font \000"};
static struct {unsigned f; char r[4];} string77 = {131076, "cd\000"};
static struct {unsigned f; char r[12];} string78 = {655372, "cd-bitmaps\000"};
static struct {unsigned f; char r[4];} string79 = {65540, ".\000\000"};
static struct {unsigned f; char r[40];} string80 = {2359336, "Error while attempting to open file \000\000\000"};
static struct {unsigned f; char r[4];} string81 = {131076, ": \000"};
static struct {unsigned f; char r[8];} string82 = {393224, "cd-300\000"};
static struct {unsigned f; char r[8];} string83 = {262152, "code\000\000\000"};
static struct {unsigned f; char r[4];} string84 = {131076, "ac\000"};
static struct {unsigned f; char r[4];} string85 = {131076, "gf\000"};
static struct {unsigned f; char r[16];} string86 = {851984, "\257\300\331\056\053\362\300\271\321\122\043\100\164\000\000"};
static struct {unsigned f; char r[48];} string87 = {3080239, "\006\017\040\004\007\054\001\060\001\064\001\074\001\100\100\001\100\104\001\100\110\001\100\114\001\100\120\001\100\124\001\100\130\001\100\134\001\100\140\001\100\304\010\000\004\077\001"};
static struct {unsigned f; char r[16];} string88 = {851984, "\257\300\055\153\222\376\300\327\164\352\142\100\150\000\000"};
static struct {unsigned f; char r[16];} string89 = {851984, "\257\300\045\370\116\014\300\270\323\074\131\100\150\000\000"};
static struct {unsigned f; char r[16];} string90 = {851984, "\257\300\074\177\166\242\300\203\113\217\044\100\150\000\000"};
static struct {unsigned f; char r[12];} string91 = {720908, "\257\300/\002\345\247\245\243T@h"};
static struct {unsigned f; char r[16];} string92 = {851984, "\257\300\041\257\203\366\300\322\161\356\007\100\150\000\000"};
static struct {unsigned f; char r[16];} string93 = {851984, "\257\300\015\277\004\146\300\034\367\146\045\100\164\000\000"};
static struct {unsigned f; char r[16];} string94 = {851984, "\257\300\332\223\177\020\300\304\076\102\260\100\164\000\000"};
static struct {unsigned f; char r[16];} string95 = {851984, "\257\300\363\223\326\161\300\017\164\046\072\100\150\000\000"};
static struct {unsigned f; char r[16];} string96 = {851984, "\257\300\072\337\114\355\300\232\070\352\142\100\150\000\000"};
static struct {unsigned f; char r[16];} string97 = {851984, "\257\300\247\031\224\326\300\123\162\224\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string98 = {851984, "\257\300\301\227\276\106\300\342\254\204\020\100\150\000\000"};
static struct {
   word f0[112]; word f112; word f113; word f114; 
   word f115; word f116; word f117; word f118; 
   word f119; word f120; word f121; word f122; 
   word f123; word f124; word f125; word f126; 
   word f127; word f128; word f129; word f130; 
   word f131; word f132; word f133; word f134; 
   word f135; word f136; word f137; word f138; 
   word f139; word f140; word f141; word f142; 
   word f143; word f144; word f145; word f146; 
   word f147; word f148; word f149; word f150; 
   word f151; word f152; word f153; word f154; 
   word f155; word f156; word f157; word f158; 
   word f159; word f160; word f161; word f162; 
   word f163; word f164; word f165; word f166; 
   word f167; word f168; word f169; word f170; 
   word f171; word f172; word f173[12]; 
   } globalframe = {
   {0}, (word) CreatorFromFileExtension←P1800, 0, (word) FileExtensionCreate←P1740, 
   0, (word) LowerCaseCat←P1680, 0, (word) WNMask←P1620, 
   0, (word) WNKern←P1560, 0, (word) WNNull←P1500, 
   0, (word) WNFontBoundingBox←P1440, 0, (word) WNBoundingBox←P1380, 
   0, (word) WNCorrection←P1320, 0, (word) WNAmplified←P1260, 
   0, (word) WNEscapement←P1200, 0, (word) WNNextChar←P1140, 
   0, (word) WNContains←P1080, 0, (word) WNAlternateMetrics←P1020, 
   0, (word) AlternateMetricInsert←P960, 0, (word) AlternateMetricFind←P900, 
   0, (word) SelectAlternateTypefaceMetrics←P840, 0, (word) ReverseMetrics←P780, 
   0, (word) FindTypeface←P720, 0, (word) Create←P660, 
   0, (word) EnumerateSubstitutions←P600, 0, (word) SetSubstitutionFont←P540, 
   0, (word) FetchTypeface←P480, 0, (word) FlushTypefaceCaches←P420, 
   0, (word) RopeFromRef←P360, 0, (word) RegisterCreator←P300, 
   0, (word) CompareOrder←P240, 0, (word) FindExt←P180, 
   0, (word) ExtensionFromCreator←P120, 0, (word) GetCreators←P60, 
   0, (word) ImagerTypefaceImpl←P0, {0}
   };

static void NoName←Q4416()
   {
   register ptr gf←c0352 =  (ptr) &globalframe;
   word var←c35748;
   (* (( (ptr) gf←c0352)+26) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
   (* (( (ptr) gf←c0352)+27) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
   (* (( (ptr) gf←c0352)+28) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string6);
   (* (( (ptr) gf←c0352)+29) ) = (word) XR←GetTypeIndex((word) &string7, 0, (word) &string8);
   (* (( (ptr) gf←c0352)+31) ) = (word) XR←GetTypeIndex((word) &string9, 0, (word) &string10);
   (* (( (ptr) gf←c0352)+33) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string12);
   (* (( (ptr) gf←c0352)+37) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string14);
   (* (( (ptr) gf←c0352)+39) ) = (word) XR←GetTypeIndexS((word) (&string15));
   (* (( (ptr) gf←c0352)+40) ) = (word) XR←GetTypeIndex((word) &string16, 0, (word) &string2);
   (* (( (ptr) gf←c0352)+41) ) = (word) XR←GetTypeIndex((word) &string17, 0, (word) &string6);
   (* (( (ptr) gf←c0352)+42) ) = (word) XR←GetTypeIndex((word) &string18, 0, (word) &string19);
   (* (( (ptr) gf←c0352)+47) ) = (word) XR←GetTypeIndex((word) &string20, 0, (word) &string6);
   (* (( (ptr) gf←c0352)+48) ) = (word) XR←GetTypeIndex((word) &string21, 0, (word) &string22);
   (*  (ptr) (( (bPt) gf←c0352)+196) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string23);
   (*  (ptr) (( (bPt) gf←c0352)+200) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string24);
   (*  (ptr) (( (bPt) gf←c0352)+204) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string25);
   (*  (ptr) (( (bPt) gf←c0352)+208) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string26);
   (*  (ptr) (( (bPt) gf←c0352)+212) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string27);
   (*  (ptr) (( (bPt) gf←c0352)+216) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string28);
   (*  (ptr) (( (bPt) gf←c0352)+220) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string29);
   (*  (ptr) (( (bPt) gf←c0352)+224) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string30);
   (*  (ptr) (( (bPt) gf←c0352)+228) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string31);
   (*  (ptr) (( (bPt) gf←c0352)+232) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string32);
   (*  (ptr) (( (bPt) gf←c0352)+236) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string33);
   (*  (ptr) (( (bPt) gf←c0352)+240) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string34);
   (*  (ptr) (( (bPt) gf←c0352)+244) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string35);
   (*  (ptr) (( (bPt) gf←c0352)+248) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+47) ), (word) &string36);
   (*  (ptr) (( (bPt) gf←c0352)+252) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string37);
   (*  (ptr) (( (bPt) gf←c0352)+256) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string38);
   (*  (ptr) (( (bPt) gf←c0352)+260) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string39);
   (*  (ptr) (( (bPt) gf←c0352)+264) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string40);
   (*  (ptr) (( (bPt) gf←c0352)+268) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string41);
   (*  (ptr) (( (bPt) gf←c0352)+272) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string42);
   (*  (ptr) (( (bPt) gf←c0352)+276) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string43);
   (*  (ptr) (( (bPt) gf←c0352)+280) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string44);
   (*  (ptr) (( (bPt) gf←c0352)+284) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string45);
   (*  (ptr) (( (bPt) gf←c0352)+288) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string46);
   (*  (ptr) (( (bPt) gf←c0352)+292) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string47);
   (*  (ptr) (( (bPt) gf←c0352)+296) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string48);
   (*  (ptr) (( (bPt) gf←c0352)+300) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string49);
   (*  (ptr) (( (bPt) gf←c0352)+304) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string50);
   (*  (ptr) (( (bPt) gf←c0352)+308) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string51);
   (*  (ptr) (( (bPt) gf←c0352)+312) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string52);
   (*  (ptr) (( (bPt) gf←c0352)+316) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string53);
   (*  (ptr) (( (bPt) gf←c0352)+320) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string54);
   (*  (ptr) (( (bPt) gf←c0352)+324) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string55);
   (*  (ptr) (( (bPt) gf←c0352)+328) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string56);
   (*  (ptr) (( (bPt) gf←c0352)+332) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string57);
   (*  (ptr) (( (bPt) gf←c0352)+336) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string58);
   (*  (ptr) (( (bPt) gf←c0352)+340) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string59);
   (*  (ptr) (( (bPt) gf←c0352)+344) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string60);
   (*  (ptr) (( (bPt) gf←c0352)+348) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string61);
   (*  (ptr) (( (bPt) gf←c0352)+352) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string62);
   (*  (ptr) (( (bPt) gf←c0352)+356) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string63);
   (*  (ptr) (( (bPt) gf←c0352)+360) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string64);
   (*  (ptr) (( (bPt) gf←c0352)+364) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string65);
   (*  (ptr) (( (bPt) gf←c0352)+368) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string66);
   (*  (ptr) (( (bPt) gf←c0352)+372) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string67);
   (*  (ptr) (( (bPt) gf←c0352)+376) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string68);
   (*  (ptr) (( (bPt) gf←c0352)+380) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string69);
   (*  (ptr) (( (bPt) gf←c0352)+384) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string70);
   (*  (ptr) (( (bPt) gf←c0352)+388) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string71);
   (*  (ptr) (( (bPt) gf←c0352)+392) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string72);
   (*  (ptr) (( (bPt) gf←c0352)+396) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string73);
   (*  (ptr) (( (bPt) gf←c0352)+400) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string74);
   (*  (ptr) (( (bPt) gf←c0352)+404) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string75);
   (*  (ptr) (( (bPt) gf←c0352)+408) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string76);
   (*  (ptr) (( (bPt) gf←c0352)+412) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string77);
   (*  (ptr) (( (bPt) gf←c0352)+416) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string78);
   (*  (ptr) (( (bPt) gf←c0352)+420) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string79);
   (*  (ptr) (( (bPt) gf←c0352)+424) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string80);
   (*  (ptr) (( (bPt) gf←c0352)+428) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string81);
   (*  (ptr) (( (bPt) gf←c0352)+432) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string82);
   (*  (ptr) (( (bPt) gf←c0352)+436) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+47) ), (word) &string83);
   (*  (ptr) (( (bPt) gf←c0352)+440) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string84);
   (*  (ptr) (( (bPt) gf←c0352)+444) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0352)+28) ), (word) &string85);
   (void) XR←DeclareGlobalFrame((word) "ImagerTypefaceImpl", &globalframe, (word) XR←GetTypeIndex((word) &string86, 0, (word) &string87)
      , (word) (( (bPt) gf←c0352)+688)/* var←c32164 */ );
   var←c35748 = (word) XR←ImportInterface((word) "Atom", (word) XR←GetTypeIndexS((word) (&string88)), 16);
   (* (( (ptr) gf←c0352)+176)/* var←c34084 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 67372289);
   var←c35748 = (word) XR←ImportInterface((word) "ImagerError", (word) XR←GetTypeIndexS((word) (&string89)), 3);
   (* (( (ptr) gf←c0352)+177)/* var←c34116 */  ) = var←c35748;
   var←c35748 = (word) XR←ImportInterface((word) "Imager", (word) XR←GetTypeIndexS((word) (&string90)), 84);
   (* (( (ptr) gf←c0352)+180)/* var←c35236 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 266241);
   (void) XR←ImportProcS(var←c35748, 790786);
   var←c35748 = (word) XR←ImportInterface((word) "ImagerSwitches", (word) XR←GetTypeIndexS((word) (&string91)), 8);
   (* (( (ptr) gf←c0352)+182)/* var←c35364 */  ) = var←c35748;
   var←c35748 = (word) XR←ImportInterface((word) "ImagerSys", (word) XR←GetTypeIndexS((word) (&string92)), 15);
   (* (( (ptr) gf←c0352)+183)/* var←c35460 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 67374337);
   (void) XR←ImportProcS(var←c35748, 67373313);
   var←c35748 = (word) XR←ImportInterface((word) "IO", (word) XR←GetTypeIndexS((word) (&string93)), 103);
   (* (( (ptr) gf←c0352)+178)/* var←c34212 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 68958724);
   (void) XR←ImportProcS(var←c35748, 67910402);
   var←c35748 = (word) XR←ImportInterface((word) "RefText", (word) XR←GetTypeIndexS((word) (&string94)), 26);
   (* (( (ptr) gf←c0352)+181)/* var←c35300 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 262913);
   (void) XR←ImportProcS(var←c35748, 67371521);
   var←c35748 = (word) XR←ImportInterface((word) "Rope", (word) XR←GetTypeIndexS((word) (&string95)), 43);
   (* (( (ptr) gf←c0352)+175)/* var←c32964 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 68163076);
   (void) XR←ImportProcS(var←c35748, 67373825);
   (void) XR←ImportProcS(var←c35748, 68419845);
   (void) XR←ImportProcS(var←c35748, 67633666);
   (void) XR←ImportProcS(var←c35748, 68158980);
   (void) XR←ImportProcS(var←c35748, 67898627);
   (void) XR←ImportProcS(var←c35748, 67900163);
   (void) XR←ImportProcS(var←c35748, 67903235);
   (void) XR←ImportProcS(var←c35748, 67896323);
   var←c35748 = (word) XR←ImportInterface((word) "SymTab", (word) XR←GetTypeIndexS((word) (&string96)), 13);
   (* (( (ptr) gf←c0352)+174)/* var←c32260 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 67897091);
   (void) XR←ImportProcS(var←c35748, 134742786);
   (void) XR←ImportProcS(var←c35748, 264449);
   (void) XR←ImportProcS(var←c35748, 67633410);
   var←c35748 = (word) XR←ImportInterface((word) "Vector2", (word) XR←GetTypeIndexS((word) (&string97)), 22);
   (* (( (ptr) gf←c0352)+179)/* var←c34916 */  ) = var←c35748;
   (void) XR←ImportProcS(var←c35748, 134743041);
   var←c35748 = (word) XR←ExportInterface((word) "ImagerTypeface", (word) XR←GetTypeIndexS((word) (&string98)), 12);
   (* (( (ptr) gf←c0352)+184)/* var←c35780 */  ) = var←c35748;
   (void) XR←ExportProcS(var←c35748, (word) (( (bPt) gf←c0352)+592)/* var←c31780 */ , 67895299, (word) "FindTypeface");
   (void) XR←ExportProcS(var←c35748, (word) (( (bPt) gf←c0352)+576)/* var←c31716 */ , 67633410, (word) "SelectAlternateTypefaceMetrics")
   ;
   (void) XR←ExportProcS(var←c35748, (word) (( (bPt) gf←c0352)+584)/* var←c31748 */ , 67371521, (word) "ReverseMetrics");
   (void) XR←ExportProcS(var←c35748, (word) (( (bPt) gf←c0352)+648)/* var←c32004 */ , 526082, (word) "RegisterCreator");
   (void) XR←ExportProcS(var←c35748, (word) (( (bPt) gf←c0352)+448)/* var←c31204 */ , 67635202, (word) "CreatorFromFileExtension")
   ;
   (void) XR←ExportProcS(var←c35748, (word) (( (bPt) gf←c0352)+632)/* var←c31940 */ , 2304, (word) "FlushTypefaceCaches");
   (void) XR←ExportProcS(var←c35748, (word) (( (bPt) gf←c0352)+616)/* var←c31876 */ , 264961, (word) "SetSubstitutionFont");
   }

static void ImagerTypefaceImpl←P0(formal←c086, formal←c066)
   word formal←c086;
   word formal←c066;
   {
   register ptr gf←c35812 =  (ptr) &globalframe;
   /* ImagerTypefaceImpl: */ 
SOURCE(728, 15716)
SOURCE(1192, 14)
   {
      word var←c32196;
      word var←c32228;
      var←c32196 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = var←c32196;
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+68) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+69) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+70) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+71) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+72) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+98) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+99) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+100) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+103) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+104) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+108) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+110) );
      (* (( (ptr) var←c32228)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32228 = (* (( (ptr) var←c32228)+1) );
      (*  (ptr) var←c32228 ) = (* (( (ptr) gf←c35812)+111) );
      (* (( (ptr) gf←c35812)+11)/* creatorOrder←v3364 */  ) = var←c32196;
      };
SOURCE(3563, 59)
   {
      word pd99;
      pd99 = (* (( (ptr) (* (( (ptr) gf←c35812)+174)/* var←c32260 */  ))+5) );
      (* (( (ptr) gf←c35812)+12)/* typefaces←v3588 */  ) = (word) ( *( (fPt) ((*  (ptr) pd99 ))))(37, 0, pd99);
      };
SOURCE(3624, 55)
   {
      word pd100;
      pd100 = (* (( (ptr) (* (( (ptr) gf←c35812)+174)/* var←c32260 */  ))+5) );
      (* (( (ptr) gf←c35812)+13)/* triedAndFailed←v3616 */  ) = (word) ( *( (fPt) ((*  (ptr) pd100 ))))(17, 0, pd100);
      };
SOURCE(4203, 21)
   {
      word var←c32292;
      word var←c32324;
      var←c32292 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32324 = var←c32292;
      (*  (ptr) var←c32324 ) = (* (( (ptr) gf←c35812)+63) );
      (* (( (ptr) var←c32324)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32324 = (* (( (ptr) var←c32324)+1) );
      (*  (ptr) var←c32324 ) = (* (( (ptr) gf←c35812)+64) );
      (* (( (ptr) var←c32324)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32324 = (* (( (ptr) var←c32324)+1) );
      (*  (ptr) var←c32324 ) = (* (( (ptr) gf←c35812)+65) );
      (* (( (ptr) var←c32324)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32324 = (* (( (ptr) var←c32324)+1) );
      (*  (ptr) var←c32324 ) = (* (( (ptr) gf←c35812)+66) );
      (* (( (ptr) var←c32324)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32324 = (* (( (ptr) var←c32324)+1) );
      (*  (ptr) var←c32324 ) = (* (( (ptr) gf←c35812)+67) );
      (* (( (ptr) gf←c35812)+15)/* fallbackSubstitutes←v3756 */  ) = var←c32292;
      };
SOURCE(4373, 12)
   {
      word var←c32356;
      word var←c32388;
      var←c32356 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32388 = var←c32356;
      (*  (ptr) var←c32388 ) = (* (( (ptr) gf←c35812)+49) );
      (* (( (ptr) var←c32388)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32388 = (* (( (ptr) var←c32388)+1) );
      (*  (ptr) var←c32388 ) = (* (( (ptr) gf←c35812)+60) );
      (* (( (ptr) var←c32388)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32388 = (* (( (ptr) var←c32388)+1) );
      (*  (ptr) var←c32388 ) = (* (( (ptr) gf←c35812)+61) );
      (* (( (ptr) gf←c35812)+16)/* xcPrefixes←v3784 */  ) = var←c32356;
      };
SOURCE(4460, 11)
   {
      word var←c32420;
      word var←c32452;
      var←c32420 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32452 = var←c32420;
      (*  (ptr) var←c32452 ) = (* (( (ptr) gf←c35812)+52) );
      (* (( (ptr) var←c32452)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32452 = (* (( (ptr) var←c32452)+1) );
      (*  (ptr) var←c32452 ) = (* (( (ptr) gf←c35812)+51) );
      (* (( (ptr) var←c32452)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32452 = (* (( (ptr) var←c32452)+1) );
      (*  (ptr) var←c32452 ) = (* (( (ptr) gf←c35812)+50) );
      (* (( (ptr) gf←c35812)+17)/* sansNames←v3812 */  ) = var←c32420;
      };
SOURCE(4525, 15)
   {
      word var←c32484;
      word var←c32516;
      var←c32484 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32516 = var←c32484;
      (*  (ptr) var←c32516 ) = (* (( (ptr) gf←c35812)+51) );
      (* (( (ptr) var←c32516)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32516 = (* (( (ptr) var←c32516)+1) );
      (*  (ptr) var←c32516 ) = (* (( (ptr) gf←c35812)+52) );
      (* (( (ptr) var←c32516)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32516 = (* (( (ptr) var←c32516)+1) );
      (*  (ptr) var←c32516 ) = (* (( (ptr) gf←c35812)+50) );
      (* (( (ptr) gf←c35812)+18)/* thinSansNames←v3840 */  ) = var←c32484;
      };
SOURCE(4594, 12)
   {
      word var←c32548;
      word var←c32580;
      var←c32548 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32580 = var←c32548;
      (*  (ptr) var←c32580 ) = (* (( (ptr) gf←c35812)+55) );
      (* (( (ptr) var←c32580)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32580 = (* (( (ptr) var←c32580)+1) );
      (*  (ptr) var←c32580 ) = (* (( (ptr) gf←c35812)+54) );
      (* (( (ptr) var←c32580)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32580 = (* (( (ptr) var←c32580)+1) );
      (*  (ptr) var←c32580 ) = (* (( (ptr) gf←c35812)+53) );
      (* (( (ptr) var←c32580)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32580 = (* (( (ptr) var←c32580)+1) );
      (*  (ptr) var←c32580 ) = (* (( (ptr) gf←c35812)+50) );
      (* (( (ptr) gf←c35812)+19)/* serifNames←v3868 */  ) = var←c32548;
      };
SOURCE(4671, 16)
   {
      word var←c32612;
      word var←c32644;
      var←c32612 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32644 = var←c32612;
      (*  (ptr) var←c32644 ) = (* (( (ptr) gf←c35812)+54) );
      (* (( (ptr) var←c32644)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32644 = (* (( (ptr) var←c32644)+1) );
      (*  (ptr) var←c32644 ) = (* (( (ptr) gf←c35812)+53) );
      (* (( (ptr) var←c32644)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32644 = (* (( (ptr) var←c32644)+1) );
      (*  (ptr) var←c32644 ) = (* (( (ptr) gf←c35812)+55) );
      (* (( (ptr) var←c32644)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32644 = (* (( (ptr) var←c32644)+1) );
      (*  (ptr) var←c32644 ) = (* (( (ptr) gf←c35812)+50) );
      (* (( (ptr) gf←c35812)+20)/* thinSerifNames←v3896 */  ) = var←c32612;
      };
SOURCE(4752, 11)
   {
      word var←c32676;
      word var←c32708;
      var←c32676 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32708 = var←c32676;
      (*  (ptr) var←c32708 ) = (* (( (ptr) gf←c35812)+58) );
      (* (( (ptr) var←c32708)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32708 = (* (( (ptr) var←c32708)+1) );
      (*  (ptr) var←c32708 ) = (* (( (ptr) gf←c35812)+57) );
      (* (( (ptr) var←c32708)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32708 = (* (( (ptr) var←c32708)+1) );
      (*  (ptr) var←c32708 ) = (* (( (ptr) gf←c35812)+56) );
      (* (( (ptr) var←c32708)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32708 = (* (( (ptr) var←c32708)+1) );
      (*  (ptr) var←c32708 ) = (* (( (ptr) gf←c35812)+52) );
      (* (( (ptr) gf←c35812)+21)/* monoNames←v3924 */  ) = var←c32676;
      };
SOURCE(4829, 12)
   {
      word var←c32740;
      word var←c32772;
      var←c32740 = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32772 = var←c32740;
      (*  (ptr) var←c32772 ) = (* (( (ptr) gf←c35812)+52) );
      (* (( (ptr) var←c32772)+1) ) = XR←NewObject(8, (* (( (ptr) gf←c35812)+26) ));
      var←c32772 = (* (( (ptr) var←c32772)+1) );
      (*  (ptr) var←c32772 ) = (* (( (ptr) gf←c35812)+50) );
      (* (( (ptr) gf←c35812)+22)/* otherNames←v3952 */  ) = var←c32740;
      };
SOURCE(14249, 407)
   {
      word var←c32804;
      var←c32804 = XR←NewObject(68, (* (( (ptr) gf←c35812)+48) ));
      (*  (ptr) var←c32804 ) = (* (( (ptr) gf←c35812)+62) );
      (* (( (ptr) var←c32804)+1) ) = (word) (( (bPt) gf←c35812)+552)/* var←c31620 */ ;
      (* (( (ptr) var←c32804)+2) ) = (word) (( (bPt) gf←c35812)+544)/* var←c31588 */ ;
      (* (( (ptr) var←c32804)+3) ) = (word) (( (bPt) gf←c35812)+536)/* var←c31556 */ ;
      (* (( (ptr) var←c32804)+4) ) = (word) (( (bPt) gf←c35812)+528)/* var←c31524 */ ;
      (* (( (ptr) var←c32804)+5) ) = (word) (( (bPt) gf←c35812)+520)/* var←c31492 */ ;
      (* (( (ptr) var←c32804)+6) ) = (word) (( (bPt) gf←c35812)+512)/* var←c31460 */ ;
      (* (( (ptr) var←c32804)+7) ) = (word) (( (bPt) gf←c35812)+504)/* var←c31428 */ ;
      (* (( (ptr) var←c32804)+8) ) = (word) (( (bPt) gf←c35812)+496)/* var←c31396 */ ;
      (* (( (ptr) var←c32804)+9) ) = (word) (( (bPt) gf←c35812)+488)/* var←c31364 */ ;
      (* (( (ptr) var←c32804)+10) ) = (word) (( (bPt) gf←c35812)+488)/* var←c31364 */ ;
      (* (( (ptr) var←c32804)+11) ) = (word) (( (bPt) gf←c35812)+480)/* var←c31332 */ ;
      (* (( (ptr) var←c32804)+12) ) = (word) (( (bPt) gf←c35812)+488)/* var←c31364 */ ;
      (* (( (ptr) var←c32804)+13) ) = (word) (( (bPt) gf←c35812)+472)/* var←c31300 */ ;
      (* (( (ptr) var←c32804)+14) ) = XR←CheckProc(0);
      (* (( (ptr) var←c32804)+15) ) = XR←CheckProc(0);
      (* (( (ptr) gf←c35812)+24)/* wellKnownAlternateMetricsClass←v4568 */  ) = var←c32804;
      };
   }

static word GetCreators←P60()
   {
   register ptr gf←c35844 =  (ptr) &globalframe;
   word result←v5084;
   word size←v9952 = 0;
   word i←v9980 = 0;
   /* GetCreators: */ 
SOURCE(1394, 14523)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c35844)+16)/* LOCK←v3140 */ ));
SOURCE(1394, 14523)
   result←v5084 = 0;
SOURCE(1482, 14435)
   {
      register word k←v10024 = 0;
      lab←L100003: ;
SOURCE(1521, 14396)
      {
         register word each←v10068;
         each←v10068 = (* ((( (ptr) gf←c35844)+8)/* creators←v3336 */ +BCK(k←v10024, 3)) );
         lab←L100007: ;
         if ((each←v10068 != 0)) {
            }
         else {
            goto lab←L100004;
            };
SOURCE(1592, 15)
         size←v9952 = (size←v9952 + 1);
         each←v10068 = (* (( (ptr) each←v10068)+1) );
         goto lab←L100007;
         lab←L100004: ;
         };
      if ((k←v10024 >= 2)) {
         goto lab←L100000;
         };
      k←v10024 = (k←v10024 + 1);
      goto lab←L100003;
      lab←L100000: ;
      };
SOURCE(1627, 30)
   {
      word var←c32836;
      word var←c32868;
      word var←c32900;
      var←c32836 = BCK(size←v9952, 67108863);
      var←c32868 = ((word) var←c32836 << 2);
      var←c32900 = XR←NewObject((4 + var←c32868), (* (( (ptr) gf←c35844)+42) ));
      (*  (ptr) var←c32900 ) = var←c32836;
      result←v5084 = var←c32900;
      };
SOURCE(1659, 14258)
   {
      register word k←v10196 = 0;
      lab←L100011: ;
SOURCE(1698, 14219)
      {
         register word each←v10240;
         each←v10240 = (* ((( (ptr) gf←c35844)+8)/* creators←v3336 */ +BCK(k←v10196, 3)) );
         lab←L100015: ;
         if ((each←v10240 != 0)) {
            }
         else {
            goto lab←L100012;
            };
SOURCE(1769, 14148)
         {
            word limit101;
            (* ((( (ptr) result←v5084)+1)+(
                  limit101 = (*  (ptr) result←v5084 ),
                  BCK(i←v9980, limit101)
                  )) ) = (*  (ptr) each←v10240 );
            };
SOURCE(1793, 9)
         i←v9980 = (i←v9980 + 1);
         each←v10240 = (* (( (ptr) each←v10240)+1) );
         goto lab←L100015;
         lab←L100012: ;
         };
      if ((k←v10196 >= 2)) {
         goto lab←L100008;
         };
      k←v10196 = (k←v10196 + 1);
      goto lab←L100011;
      lab←L100008: ;
      };
SOURCE(1394, 14523)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c35844)+16)/* LOCK←v3140 */ ));
   return(result←v5084);
   }

static word ExtensionFromCreator←P120(creator←v5156)
   word creator←v5156;
   {
   register ptr gf←c35876 =  (ptr) &globalframe;
   word var←c5200;
   /* ExtensionFromCreator: */ 
SOURCE(1826, 187)
SOURCE(1891, 122)
   {
      word var←c32932;
      var←c32932 = (* (( (ptr) creator←v5156)+1) );
      if ((var←c32932 == 0)) {
         goto lab←L100016;
         };
      if (((* (( (ptr) gf←c35876)+41) ) == XR←GetReferentType(var←c32932))) {
         {
            word data←v10368;
            data←v10368 = var←c32932;
SOURCE(1963, 24)
            return((*  (ptr) data←v10368 ));
            };
         }
      else {
         lab←L100016: ;
SOURCE(2001, 12)
         return(0);
         };
      };
   }

static word FindExt←P180(a←v5260)
   word a←v5260;
   {
   register ptr gf←c35908 =  (ptr) &globalframe;
   word i←v5304;
   /* FindExt: */ 
SOURCE(2019, 13898)
SOURCE(2019, 13898)
   i←v5304 = 0;
SOURCE(2068, 13849)
   {
      register word tail←v10424;
      tail←v10424 = (* (( (ptr) gf←c35908)+11)/* creatorOrder←v3364 */  );
      lab←L100020: ;
      if ((tail←v10424 != 0)) {
         }
      else {
         goto lab←L100017;
         };
SOURCE(2137, 13780)
      {
         word pd102;
         pd102 = (* (( (ptr) (* (( (ptr) gf←c35908)+175)/* var←c32964 */  ))+8) );
         if ((0 != (word) ( *( (fPt) ((*  (ptr) pd102 ))))((*  (ptr) tail←v10424 ), a←v5260, 0, pd102))) {
SOURCE(2178, 6)
            return(i←v5304);
            };
         };
SOURCE(2186, 9)
      i←v5304 = (i←v5304 + 1);
      tail←v10424 = (* (( (ptr) tail←v10424)+1) );
      goto lab←L100020;
      lab←L100017: ;
      };
SOURCE(2206, 12)
   return( (word) -1);
   }

static word CompareOrder←P240(aOrd←v5364, bOrd←v5392, before←v5420)
   word aOrd←v5364;
   word bOrd←v5392;
   word before←v5420;
   {
   word var←c5464;
   /* CompareOrder: */ 
SOURCE(2222, 13695)
SOURCE(2305, 70)
   if (( (int)aOrd←v5364 <  (int)0) || ( (int)bOrd←v5392 <  (int)0)) {
SOURCE(2334, 41)
      {
         word idx103;
         return((
            idx103 = (word)  ( (0 != before←v5420) ? 0 : 2 ) ,
            BCK(idx103, 3)
            ));
         };
      };
SOURCE(2377, 13540)
   if (( (int)aOrd←v5364 ==  (int)bOrd←v5392)) {
      return(1);
      }
   else {
      if (( (int)aOrd←v5364 >  (int)bOrd←v5392)) {
         return(2);
         }
      else {
         return(0);
         };
      };
   }

static void RegisterCreator←P300(creator←v5524, before←v5552)
   word creator←v5524;
   word before←v5552;
   {
   register ptr gf←c35940 =  (ptr) &globalframe;
   word newExt←v10552;
   word newOrder←v10580;
   word prev←v10608 = 0;
   /* RegisterCreator: */ 
SOURCE(2420, 13497)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c35940)+16)/* LOCK←v3140 */ ));
SOURCE(2492, 44)
   newExt←v10552 = (word) ExtensionFromCreator←P120(creator←v5524);
SOURCE(2538, 31)
   newOrder←v10580 = (word) FindExt←P180(newExt←v10552);
SOURCE(2600, 13317)
   if (( (int)newOrder←v10580 <  (int)0)) {
SOURCE(2623, 13294)
      if ((0 != before←v5552)) {
SOURCE(2640, 13277)
         {
            word var←c32996;
            var←c32996 = XR←NewObject(8, (* (( (ptr) gf←c35940)+40) ));
            (*  (ptr) var←c32996 ) = creator←v5524;
            (* (( (ptr) var←c32996)+1) ) = (* (( (ptr) gf←c35940)+8) );
            (* (( (ptr) gf←c35940)+8) ) = var←c32996;
            };
         }
      else {
SOURCE(2688, 146)
         {
            word p←v10736;
SOURCE(2690, 3)
            p←v10736 = (* (( (ptr) gf←c35940)+10) );
SOURCE(2724, 105)
            if ((p←v10736 == 0)) {
SOURCE(2740, 23)
               {
                  word var←c33028;
                  word var←c33060;
                  var←c33028 = XR←NewObject(8, (* (( (ptr) gf←c35940)+40) ));
                  var←c33060 = var←c33028;
                  (*  (ptr) var←c33060 ) = creator←v5524;
                  p←v10736 = var←c33028;
                  };
               }
            else {
SOURCE(2765, 40)
               lab←L100023: ;
               if (((* (( (ptr) p←v10736)+1) ) != 0)) {
                  }
               else {
                  goto lab←L100021;
                  };
SOURCE(2787, 18)
               p←v10736 = (* (( (ptr) p←v10736)+1) );
               goto lab←L100023;
               lab←L100021: ;
SOURCE(2807, 22)
               {
                  word var←c33092;
                  word var←c33124;
                  var←c33092 = XR←NewObject(8, (* (( (ptr) gf←c35940)+40) ));
                  var←c33124 = var←c33092;
                  (*  (ptr) var←c33124 ) = creator←v5524;
                  (* (( (ptr) p←v10736)+1) ) = var←c33092;
                  };
               };
            };
         };
SOURCE(2837, 7)
      (void) (XR←MonitorExit((word) (( (bPt) gf←c35940)+16)/* LOCK←v3140 */ ));
      return;
      };
SOURCE(2847, 13070)
   if (((* (( (ptr) gf←c35940)+9) ) == 0)) {
SOURCE(2875, 13042)
      {
         word var←c33156;
         word var←c33188;
         var←c33156 = XR←NewObject(8, (* (( (ptr) gf←c35940)+40) ));
         var←c33188 = var←c33156;
         (*  (ptr) var←c33188 ) = creator←v5524;
         (* (( (ptr) gf←c35940)+9) ) = var←c33156;
         };
SOURCE(2904, 7)
      (void) (XR←MonitorExit((word) (( (bPt) gf←c35940)+16)/* LOCK←v3140 */ ));
      return;
      };
SOURCE(2914, 13003)
   {
      register word tail←v10864;
      tail←v10864 = (* (( (ptr) gf←c35940)+9) );
      lab←L100027: ;
SOURCE(2968, 12949)
      if ((tail←v10864 == 0)) {
SOURCE(2988, 25)
         {
            word var←c33220;
            word var←c33252;
            var←c33220 = XR←NewObject(8, (* (( (ptr) gf←c35940)+40) ));
            var←c33252 = var←c33220;
            (*  (ptr) var←c33252 ) = creator←v5524;
            (* (( (ptr) prev←v10608)+1) ) = var←c33220;
            };
SOURCE(3015, 7)
         (void) (XR←MonitorExit((word) (( (bPt) gf←c35940)+16)/* LOCK←v3140 */ ));
         return;
         }
      else {
SOURCE(3029, 297)
         {
            word thisExt←v10992;
SOURCE(3031, 48)
            thisExt←v10992 = (word) ExtensionFromCreator←P120((*  (ptr) (tail←v10864) ));
SOURCE(3081, 12836)
            {
               word var←c33316;
               {
                  word var←c33284;
                  var←c33284 = (word) FindExt←P180(thisExt←v10992);
                  var←c33316 = (word) CompareOrder←P240(newOrder←v10580, var←c33284, before←v5552);
                  };
               if ((var←c33316 == 0)) {
SOURCE(3152, 12765)
                  if ((prev←v10608 == 0)) {
SOURCE(3173, 12744)
                     {
                        word var←c33348;
                        var←c33348 = XR←NewObject(8, (* (( (ptr) gf←c35940)+40) ));
                        (*  (ptr) var←c33348 ) = creator←v5524;
                        (* (( (ptr) var←c33348)+1) ) = (* (( (ptr) gf←c35940)+9) );
                        (* (( (ptr) gf←c35940)+9) ) = var←c33348;
                        };
                     }
                  else {
SOURCE(3223, 37)
                     {
                        word var←c33380;
                        var←c33380 = XR←NewObject(8, (* (( (ptr) gf←c35940)+40) ));
                        (*  (ptr) var←c33380 ) = creator←v5524;
                        (* (( (ptr) var←c33380)+1) ) = (* (( (ptr) prev←v10608)+1) );
                        (* (( (ptr) prev←v10608)+1) ) = var←c33380;
                        };
                     };
SOURCE(3263, 6)
                  (void) (XR←MonitorExit((word) (( (bPt) gf←c35940)+16)/* LOCK←v3140 */ ));
                  return;
                  }
               else {
                  if ((var←c33316 == 1)) {
SOURCE(3285, 20)
                     (*  (ptr) tail←v10864 ) = creator←v5524;
SOURCE(3307, 7)
                     (void) (XR←MonitorExit((word) (( (bPt) gf←c35940)+16)/* LOCK←v3140 */ ));
                     return;
                     };
                  };
               };
            };
         };
SOURCE(3329, 11)
      prev←v10608 = tail←v10864;
      tail←v10864 = (* (( (ptr) tail←v10864)+1) );
      goto lab←L100027;
      };
   }

static word RopeFromRef←P360(x←v5612)
   word x←v5612;
   {
   register ptr gf←c35972 =  (ptr) &globalframe;
   word var←c5672;
   /* RopeFromRef: */ 
SOURCE(3355, 12562)
SOURCE(3401, 12516)
   {
      word var←c33412;
      word var←c33444;
      var←c33412 = x←v5612;
      if ((var←c33412 == 0)) {
         goto lab←L100028;
         };
      var←c33444 = XR←GetReferentType(var←c33412);
      {
         word var←c33604;
         var←c33604 = (* (( (ptr) gf←c35972)+39) );
         if ((var←c33604 == var←c33444)) {
            {
               word text←v11036;
               text←v11036 = var←c33412;
SOURCE(3438, 12479)
               {
                  word pd104;
                  pd104 = (* (( (ptr) (* (( (ptr) gf←c35972)+175)/* var←c32964 */  ))+35) );
                  return((word) ( *( (fPt) ((*  (ptr) pd104 ))))(text←v11036, 0, 32767, pd104));
                  };
               };
            }
         else {
            if ((var←c33604 == var←c33444)) {
               {
                  word text←v11092;
                  text←v11092 = var←c33412;
SOURCE(3497, 12420)
                  {
                     word pd105;
                     pd105 = (* (( (ptr) (* (( (ptr) gf←c35972)+175)/* var←c32964 */  ))+35) );
                     return((word) ( *( (fPt) ((*  (ptr) pd105 ))))(text←v11092, 0, 32767, pd105));
                     };
                  };
               }
            else {
               lab←L100028: ;
SOURCE(3540, 17)
               {
                  word var←c33572;
                  var←c33572 = XR←Narrow(x←v5612, (* (( (ptr) gf←c35972)+27) ));
                  if ((var←c33572 == 0)) {
                     goto lab←L100029;
                     };
                  if (( (unsigned) (*(int*)var←c33572<0) == 0)) {
                     goto lab←L100029;
                     };
                  (void) XR←RaiseError(XR←NarrowFault, 0);
                  lab←L100029: ;
                  return(var←c33572);
                  };
               };
            };
         };
      };
   }

static void FlushTypefaceCaches←P420()
   {
   register ptr gf←c36004 =  (ptr) &globalframe;
   /* FlushTypefaceCaches: */ 
SOURCE(3682, 108)
SOURCE(3719, 16)
   (* (( (ptr) gf←c36004)+23)/* alternates←v4176 */  ) = 0;
SOURCE(3737, 23)
   {
      word pd106;
      pd106 = (* (( (ptr) (* (( (ptr) gf←c36004)+174)/* var←c32260 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd106 ))))((* ((( (ptr) gf←c36004)+12)/* typefaces←v3588 */ ) ), pd106);
      };
SOURCE(3762, 28)
   {
      word pd107;
      pd107 = (* (( (ptr) (* (( (ptr) gf←c36004)+174)/* var←c32260 */  ))+13) );
      (void) ( *( (fPt) ((*  (ptr) pd107 ))))((* ((( (ptr) gf←c36004)+13)/* triedAndFailed←v3616 */ ) ), pd107);
      };
   }

static word FetchTypeface←P480(name←v5748)
   word name←v5748;
   {
   register ptr gf←c36036 =  (ptr) &globalframe;
   word var←c5792;
   word found←v11148;
   word val←v11176 = 0;
   /* FetchTypeface: */ 
SOURCE(3796, 12121)
SOURCE(3875, 12042)
   {
      W2 var←c33636;
      {
         word pd108;
         pd108 = (* (( (ptr) (* (( (ptr) gf←c36036)+174)/* var←c32260 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd108 ))))((word) &var←c33636, (* (( (ptr) gf←c36036)+12)/* typefaces←v3588 */  ), name←v5748, pd108)
         ;
         };
      val←v11176 = var←c33636.f1;
      found←v11148 = var←c33636.f0;
      };
SOURCE(3921, 136)
   if ((0 != found←v11148)) {
SOURCE(3935, 59)
      {
         word var←c33668;
         var←c33668 = val←v11176;
         if ((var←c33668 == 0)) {
            goto lab←L100030;
            };
         if (((* (( (ptr) gf←c36036)+37) ) == XR←GetReferentType(var←c33668))) {
            {
               word typeface←v11232;
               typeface←v11232 = var←c33668;
SOURCE(3978, 16)
               return(typeface←v11232);
               };
            }
         else {
            lab←L100030: ;
SOURCE(4007, 39)
            (void) XR←RaiseUnnamedError();
            };
         };
      }
   else {
SOURCE(4046, 11)
      return(0);
      };
   }

static void SetSubstitutionFont←P540(defaultFont←v5852)
   word defaultFont←v5852;
   {
   register ptr gf←c36068 =  (ptr) &globalframe;
   /* SetSubstitutionFont: */ 
SOURCE(4080, 117)
SOURCE(4137, 60)
   {
      word var←c33700;
      var←c33700 = XR←NewObject(8, (* (( (ptr) gf←c36068)+26) ));
      (*  (ptr) var←c33700 ) = defaultFont←v5852;
      (* (( (ptr) var←c33700)+1) ) = (* (( (ptr) gf←c36068)+15)/* fallbackSubstitutes←v3756 */  );
      (* (( (ptr) gf←c36068)+15)/* fallbackSubstitutes←v3756 */  ) = var←c33700;
      };
   }

static void EnumerateSubstitutions←P600(name←v6584, formal←c0410)
   word name←v6584;
   word formal←c0410;
   {
   W10 var←c36100;
   /* declaration of action←v6612 skipped */ 
   register ptr gf←c36132 =  (ptr) &globalframe;
   /* declaration of var←c33732 skipped */ 
   /* declaration of var←c33764 skipped */ 
   (* (( (ptr) &var←c36100)+4)/* action←v6612 */  ) = formal←c0410;
   /* EnumerateSubstitutions: */ 
SOURCE(4883, 11034)
   {
      word tmpAddr109;
      tmpAddr109 = (word) (( (ptr) &var←c36100)+5)/* var←c33732 */ ;
      (*  (ptr) tmpAddr109 ) = ( ((word)  (fPt) Match←P2544) );
      (* (( (ptr) tmpAddr109) + 1) ) = 1;
      };
   {
      word tmpAddr110;
      tmpAddr110 = (word) (( (ptr) &var←c36100)+7)/* var←c33764 */ ;
      (*  (ptr) tmpAddr110 ) = ( ((word)  (fPt) Try←P2436) );
      (* (( (ptr) tmpAddr110) + 1) ) = 1;
      };
SOURCE(5251, 10666)
   {
      word pd111;
      pd111 = (* (( (ptr) (* (( (ptr) gf←c36132)+175)/* var←c32964 */  ))+23) );
      if ((0 != (word) ( *( (fPt) ((*  (ptr) pd111 ))))((* (( (ptr) gf←c36132)+73) ), name←v6584, 0, pd111))) {
SOURCE(5299, 1353)
         {
            /* declaration of shortName←v11424 skipped */ 
            word sans←v11480;
            word serif←v11508;
            word mono←v11536;
            word bold←v11564;
            word slanted←v11592;
            word thin←v11620;
SOURCE(5301, 63)
            {
               word var←c33796;
               {
                  word pd112;
                  pd112 = (* (( (ptr) (* (( (ptr) gf←c36132)+175)/* var←c32964 */  ))+10) );
                  var←c33796 = ((word) ( *( (fPt) ((*  (ptr) pd112 ))))(name←v6584, 8, (* (( (ptr) gf←c36132)+74) ), 1, pd112) + 1);
                  };
               {
                  word pd113;
                  pd113 = (* (( (ptr) (* (( (ptr) gf←c36132)+175)/* var←c32964 */  ))+17) );
                  (* (( (ptr) &var←c36100)+9)/* shortName←v11424 */  ) = (word) ( *( (fPt) ((*  (ptr) pd113 ))))(name←v6584, var←c33796, 2147483647, pd113)
                  ;
                  };
               };
SOURCE(5486, 126)
            sans←v11480 =  (unsigned)  ( (((((0 != (word) Match←P2544((* (( (ptr) gf←c36132)+75) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )
            ) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+76) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) || (0 != (word) Match←P2544(
               (* (( (ptr) gf←c36132)+77) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+78)
                ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+76) ), (word) (
                  ( (bPt) &var←c36100)+20)/* var←c33732 */ ))) ? 1 : (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+79) ), (word) (( (bPt) &var←c36100)+20)
               /* var←c33732 */ )) ) ;
SOURCE(5614, 130)
            serif←v11508 =  (unsigned)  ( (((((0 != (word) Match←P2544((* (( (ptr) gf←c36132)+80) ), (word) (( (bPt) &var←c36100)+20)
               /* var←c33732 */ )) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+81) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )
            )) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+82) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) || (0 != (word) Match←P2544(
               (* (( (ptr) gf←c36132)+83) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+84)
                ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) ? 1 : (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+85) ), (word) (
                  ( (bPt) &var←c36100)+20)/* var←c33732 */ )) ) ;
SOURCE(5746, 77)
            mono←v11536 =  (unsigned)  ( ((0 != (word) Match←P2544((* (( (ptr) gf←c36132)+86) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )
            ) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+87) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) ? 1 : (0 != (word) Match←P2544(
               (* (( (ptr) gf←c36132)+88) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )) ) ;
SOURCE(5825, 29)
            bold←v11564 = (word) Match←P2544((* (( (ptr) gf←c36132)+89) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ );
SOURCE(5856, 52)
            slanted←v11592 =  (unsigned)  ( (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+90) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )
            ) ? 1 : (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+91) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )) ) ;
SOURCE(5910, 69)
            thin←v11620 =  (unsigned)  ( ((0 != (word) Match←P2544((* (( (ptr) gf←c36132)+92) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )
            ) || (0 != (word) Match←P2544((* (( (ptr) gf←c36132)+75) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ ))) ? 1 : (0 != (word) Match←P2544(
               (* (( (ptr) gf←c36132)+83) ), (word) (( (bPt) &var←c36100)+20)/* var←c33732 */ )) ) ;
SOURCE(5981, 9936)
            {
               register word tail←v11768;
               word var←c33828;
               tail←v11768 = (* (( (ptr) gf←c36132)+16)/* xcPrefixes←v3784 */  );
               lab←L100034: ;
               if ((tail←v11768 != 0)) {
                  }
               else {
                  goto lab←L100031;
                  };
SOURCE(6048, 9869)
               {
                  word pd114;
                  pd114 = (* (( (ptr) (* (( (ptr) gf←c36132)+175)/* var←c32964 */  ))+6) );
                  var←c33828 = (word) ( *( (fPt) ((*  (ptr) pd114 ))))((*  (ptr) tail←v11768 ), (* (( (ptr) &var←c36100)+9)/* shortName←v11424 */  ), pd114)
                  ;
                  };
               if ((0 != (word) Try←P2436(var←c33828, (word) (( (bPt) &var←c36100)+28)/* var←c33764 */ ))) {
SOURCE(6101, 6)
                  return;
                  };
               tail←v11768 = (* (( (ptr) tail←v11768)+1) );
               goto lab←L100034;
               lab←L100031: ;
               };
SOURCE(6118, 9799)
            {
               register word eachFamily←v11896;
               {
                  word var←c33860;
                  word var←c33924;
                  {
                     word var←c33892;
                     {
                        word pd115;
                        pd115 = (* (( (ptr) (* (( (ptr) gf←c36132)+175)/* var←c32964 */  ))+10) );
                        var←c33892 = (word) ( *( (fPt) ((*  (ptr) pd115 ))))((* (( (ptr) &var←c36100)+9)/* shortName←v11424 */  ), 0, (* (( (ptr) gf←c36132)+93)
                            ), 1, pd115);
                        };
                     {
                        word pd116;
                        pd116 = (* (( (ptr) (* (( (ptr) gf←c36132)+175)/* var←c32964 */  ))+17) );
                        var←c33860 = (word) ( *( (fPt) ((*  (ptr) pd116 ))))((* (( (ptr) &var←c36100)+9)/* shortName←v11424 */  ), 0, var←c33892, pd116)
                        ;
                        };
                     };
                  var←c33924 = XR←NewObject(8, (* (( (ptr) gf←c36132)+26) ));
                  (*  (ptr) var←c33924 ) = var←c33860;
                  if ( ( (0 != serif←v11508) ? (0 == sans←v11480) : 0 ) ) {
                     if ((0 != thin←v11620)) {
                        (* (( (ptr) var←c33924)+1) ) = (* (( (ptr) gf←c36132)+20)/* thinSerifNames←v3896 */  );
                        }
                     else {
                        (* (( (ptr) var←c33924)+1) ) = (* (( (ptr) gf←c36132)+19)/* serifNames←v3868 */  );
                        };
                     goto endif0117;
                     };
                  if ((0 != sans←v11480)) {
                     if ((0 != thin←v11620)) {
                        (* (( (ptr) var←c33924)+1) ) = (* (( (ptr) gf←c36132)+18)/* thinSansNames←v3840 */  );
                        }
                     else {
                        (* (( (ptr) var←c33924)+1) ) = (* (( (ptr) gf←c36132)+17)/* sansNames←v3812 */  );
                        };
                     goto endif0117;
                     };
                  if ((0 != mono←v11536)) {
                     (* (( (ptr) var←c33924)+1) ) = (* (( (ptr) gf←c36132)+21)/* monoNames←v3924 */  );
                     goto endif0117;
                     };
                  (* (( (ptr) var←c33924)+1) ) = (* (( (ptr) gf←c36132)+22)/* otherNames←v3952 */  );
                  goto endif0117;
                  endif0117: ;
                  eachFamily←v11896 = var←c33924;
                  };
               lab←L100038: ;
               if ((eachFamily←v11896 != 0)) {
                  }
               else {
                  goto lab←L100035;
                  };
SOURCE(6435, 9482)
               {
                  register word tail←v12024;
                  word var←c33956;
                  tail←v12024 = (* (( (ptr) gf←c36132)+16)/* xcPrefixes←v3784 */  );
                  lab←L100042: ;
                  if ((tail←v12024 != 0)) {
                     }
                  else {
                     goto lab←L100039;
                     };
SOURCE(6502, 9415)
                  {
                     word pd118;
                     pd118 = (* (( (ptr) (* (( (ptr) gf←c36132)+175)/* var←c32964 */  ))+5) );
                     var←c33956 = (word) ( *( (fPt) ((*  (ptr) pd118 ))))((*  (ptr) tail←v12024 ), (*  (ptr) eachFamily←v11896 ),  ( (0 != bold←v11564) ? (* (
                           ( (ptr) gf←c36132)+94) ) : 0 ) ,  ( (0 != slanted←v11592) ? (* (( (ptr) gf←c36132)+95) ) : 0 ) , 0, pd118);
                     };
                  if ((0 != (word) Try←P2436(var←c33956, (word) (( (bPt) &var←c36100)+28)/* var←c33764 */ ))) {
SOURCE(6626, 6)
                     return;
                     };
                  tail←v12024 = (* (( (ptr) tail←v12024)+1) );
                  goto lab←L100042;
                  lab←L100039: ;
                  };
               eachFamily←v11896 = (* (( (ptr) eachFamily←v11896)+1) );
               goto lab←L100038;
               lab←L100035: ;
               };
            };
         };
      };
SOURCE(6655, 9262)
   {
      register word tail←v12152;
      tail←v12152 = (* (( (ptr) gf←c36132)+15)/* fallbackSubstitutes←v3756 */  );
      lab←L100046: ;
      if ((tail←v12152 != 0)) {
         }
      else {
         goto lab←L100043;
         };
SOURCE(6729, 9188)
      if ((0 != (word) Try←P2436((*  (ptr) tail←v12152 ), (word) (( (bPt) &var←c36100)+28)/* var←c33764 */ ))) {
SOURCE(6758, 6)
         return;
         };
      tail←v12152 = (* (( (ptr) tail←v12152)+1) );
      goto lab←L100046;
      lab←L100043: ;
      };
   }

static word Try←P2436(substituteName←v11352, formal←c36196)
   word substituteName←v11352;
   word formal←c36196;
   {
   register ptr gf←c36164 =  (ptr) &globalframe;
   word quit←v11396;
   formal←c36196 = (formal←c36196 - 28);
   /* Try: */ 
SOURCE(4995, 10922)
SOURCE(4995, 10922)
   quit←v11396 = 0;
   {
      W2 var←c0170;
      word var←c0393;
SOURCE(5061, 10856)
      {
         word pd119;
         pd119 = (* (( (ptr) (* (( (ptr) gf←c36164)+174)/* var←c32260 */  ))+7) );
         (void) ( *( (fPt) ((*  (ptr) pd119 ))))((word) &var←c0170, (* (( (ptr) gf←c36164)+13)/* triedAndFailed←v3616 */  ), substituteName←v11352, pd119)
         ;
         };
      var←c0393 = var←c0170.f0;
      if ((0 != var←c0393)) {
SOURCE(5120, 6)
         return(quit←v11396);
         };
SOURCE(5128, 10789)
      {
         word pd120;
         pd120 = (* (( (ptr) formal←c36196)+4) );
         quit←v11396 = (word) ( *( (fPt) ((*  (ptr) pd120 ))))(substituteName←v11352, pd120);
         };
SOURCE(5159, 19)
      if ((0 != quit←v11396)) {
SOURCE(5172, 6)
         return(quit←v11396);
         };
SOURCE(5180, 10737)
      {
         word var←c33988;
         word pd121;
         pd121 = (* (( (ptr) (* (( (ptr) gf←c36164)+174)/* var←c32260 */  ))+11) );
         var←c33988 = (word) ( *( (fPt) ((*  (ptr) pd121 ))))((* (( (ptr) gf←c36164)+13)/* triedAndFailed←v3616 */  ), substituteName←v11352, substituteName←v11352, pd121)
         ;
         };
      };
SOURCE(4995, 10922)
   return(quit←v11396);
   }

static word Match←P2544(pattern←v11696, formal←c36260)
   word pattern←v11696;
   word formal←c36260;
   {
   register ptr gf←c36228 =  (ptr) &globalframe;
   word var←c11740;
   formal←c36260 = (formal←c36260 - 20);
   /* Match: */ 
SOURCE(5366, 13)
SOURCE(5413, 10504)
   {
      word pd122;
      pd122 = (* (( (ptr) (* (( (ptr) gf←c36228)+175)/* var←c32964 */  ))+23) );
      return((word) ( *( (fPt) ((*  (ptr) pd122 ))))(pattern←v11696, (* (( (ptr) formal←c36260)+9) ), 0, pd122));
      };
   }

static word Create←P660(name←v6776, substitution←v6804, versionHint←v6832)
   word name←v6776;
   word substitution←v6804;
   word versionHint←v6832;
   {
   W7 var←c36292;
   register ptr gf←c36324 =  (ptr) &globalframe;
   word var←c6876;
   /* declaration of var←c34052 skipped */ 
   /* declaration of typeface←v12280 skipped */ 
   /* Create: */ 
SOURCE(6779, 9138)
   {
      word tmpAddr123;
      tmpAddr123 = (word) (( (ptr) &var←c36292)+4)/* var←c34052 */ ;
      (*  (ptr) tmpAddr123 ) = ( ((word)  (fPt) EachCandidate←P3180) );
      (* (( (ptr) tmpAddr123) + 1) ) = 1;
      };
SOURCE(6889, 24)
   var←c36292.f6/* typeface←v12280 */  = 0;
SOURCE(6915, 9002)
   if ((versionHint←v6832 != 0)) {
SOURCE(6943, 8974)
      {
         register word k←v12324 = 0;
         lab←L100050: ;
SOURCE(6982, 8935)
         {
            register word each←v12368;
            each←v12368 = (* ((( (ptr) gf←c36324)+8)/* creators←v3336 */ +BCK(k←v12324, 3)) );
            lab←L100054: ;
            if ( ( (each←v12368 != 0) ? (var←c36292.f6/* typeface←v12280 */  == 0) : 0 ) ) {
               }
            else {
               goto lab←L100051;
               };
            {
               word creator←v12496;
               word extension←v12524;
SOURCE(7071, 29)
               creator←v12496 = (*  (ptr) each←v12368 );
SOURCE(7102, 49)
               {
                  word pd124;
                  pd124 = (* (( (ptr) (* (( (ptr) gf←c36324)+176)/* var←c34084 */  ))+9) );
                  extension←v12524 = (word) ( *( (fPt) ((*  (ptr) pd124 ))))((* ((( (ptr) versionHint←v6832)+1)) ), pd124);
                  };
SOURCE(7153, 8764)
               if (((*  (ptr) creator←v12496 ) == (word) (( (bPt) gf←c36324)+456)/* var←c31236 */ )) {
SOURCE(7196, 332)
                  {
                     word data←v12568;
SOURCE(7198, 59)
                     data←v12568 = XR←Narrow((* (( (ptr) creator←v12496)+1) ), (* (( (ptr) gf←c36324)+41) ));
SOURCE(7259, 8658)
                     {
                        word pd125;
                        pd125 = (* (( (ptr) (* (( (ptr) gf←c36324)+175)/* var←c32964 */  ))+8) );
                        if ((0 != (word) ( *( (fPt) ((*  (ptr) pd125 ))))((*  (ptr) data←v12568 ), extension←v12524, 0, pd125))) {
SOURCE(7328, 8589)
                           {
/*1*/   word pd126;
/*1*/   pd126 = (*  (ptr) creator←v12496 );
/*1*/   var←c36292.f6/* typeface←v12280 */  = (word) ( *( (fPt) ((*  (ptr) pd126 ))))(creator←v12496, name←v6776, 0, pd126);
/*1*/   };
SOURCE(7399, 124)
                           if (((var←c36292.f6/* typeface←v12280 */  == 0) || ((* (( (ptr) var←c36292.f6/* typeface←v12280 */ )+4) ) != (*  (ptr) versionHint←v6832 ))) || ((*  (ptr) (*  (ptr) var←c36292.f6/* typeface←v12280 */  ) ) != (* (
/*1*/   ( (ptr) versionHint←v6832)+1) ))) {
SOURCE(7509, 14)
/*1*/   var←c36292.f6/* typeface←v12280 */  = 0;
/*1*/   };
                           };
                        };
                     };
                  };
               };
            each←v12368 = (* (( (ptr) each←v12368)+1) );
            goto lab←L100054;
            lab←L100051: ;
            };
         if ((k←v12324 >= 2)) {
            goto lab←L100047;
            };
         k←v12324 = (k←v12324 + 1);
         goto lab←L100050;
         lab←L100047: ;
         };
      };
SOURCE(7552, 8365)
   {
      register word k←v12624 = 0;
      lab←L100058: ;
SOURCE(7591, 8326)
      {
         register word each←v12668;
         each←v12668 = (* ((( (ptr) gf←c36324)+8)/* creators←v3336 */ +BCK(k←v12624, 3)) );
         lab←L100062: ;
         if ( ( (each←v12668 != 0) ? (var←c36292.f6/* typeface←v12280 */  == 0) : 0 ) ) {
            }
         else {
            goto lab←L100059;
            };
         {
            word creator←v12796;
SOURCE(7680, 29)
            creator←v12796 = (*  (ptr) each←v12668 );
SOURCE(7711, 8206)
            {
               word pd127;
               pd127 = (*  (ptr) creator←v12796 );
               var←c36292.f6/* typeface←v12280 */  = (word) ( *( (fPt) ((*  (ptr) pd127 ))))(creator←v12796, name←v6776, 0, pd127);
               };
SOURCE(7782, 152)
            if ((versionHint←v6832 != 0)) {
SOURCE(7810, 124)
               if (((var←c36292.f6/* typeface←v12280 */  == 0) || ((* (( (ptr) var←c36292.f6/* typeface←v12280 */ )+4) ) != (*  (ptr) versionHint←v6832 ))) || ((*  (ptr) (*  (ptr) var←c36292.f6/* typeface←v12280 */  ) ) != (* (
                  ( (ptr) versionHint←v6832)+1) ))) {
SOURCE(7920, 14)
                  var←c36292.f6/* typeface←v12280 */  = 0;
                  };
               };
            };
         each←v12668 = (* (( (ptr) each←v12668)+1) );
         goto lab←L100062;
         lab←L100059: ;
         };
      if ((k←v12624 >= 2)) {
         goto lab←L100055;
         };
      k←v12624 = (k←v12624 + 1);
      goto lab←L100058;
      lab←L100055: ;
      };
SOURCE(7957, 7960)
   if ((var←c36292.f6/* typeface←v12280 */  == 0)) {
SOURCE(7982, 7935)
      if ((substitution←v6804 != 0)) {
SOURCE(8018, 493)
SOURCE(8466, 43)
         (void) EnumerateSubstitutions←P600(name←v6776, (word) (( (bPt) &var←c36292)+16)/* var←c34052 */ );
         };
SOURCE(8514, 7403)
      if ((var←c36292.f6/* typeface←v12280 */  == 0)) {
SOURCE(8539, 7378)
         {
            word var←c34148;
            {
               W2 var←c34180;
               var←c34180.f0 = 11;
               var←c34180.f1 = name←v6776;
               {
                  word pd128;
                  pd128 = (* (( (ptr) (* (( (ptr) gf←c36324)+178)/* var←c34212 */  ))+63) );
                  var←c34148 = (word) ( *( (fPt) ((*  (ptr) pd128 ))))((* (( (ptr) gf←c36324)+96) ), var←c34180, pd128);
                  };
               };
            {
               W3 var←c0191;
               var←c0191.f0 = 25;
               var←c0191.f1 = var←c34148;
               var←c0191.f2 = 0;
               (void) XR←RaiseError((* (( (ptr) (* (( (ptr) gf←c36324)+177)/* var←c34116 */  ))+4) ), (word) &var←c0191);
               };
            };
         };
      };
SOURCE(8678, 18)
   return(var←c36292.f6/* typeface←v12280 */ );
   }

static word EachCandidate←P3180(formal←c0411, formal←c36420)
   word formal←c0411;
   word formal←c36420;
   {
   W6 var←c36356;
   /* declaration of substituteName←v12916 skipped */ 
   register ptr gf←c36388 =  (ptr) &globalframe;
   word quit←v12960;
   formal←c36420 = (formal←c36420 - 16);
   var←c36356.f4/* substituteName←v12916 */  = formal←c0411;
   var←c36356.f0 = formal←c36420;
   /* EachCandidate: */ 
SOURCE(8020, 21)
SOURCE(8020, 21)
   quit←v12960 = 0;
SOURCE(8096, 7821)
   {
      register word k←v12988 = 0;
      lab←L100066: ;
SOURCE(8135, 7782)
      {
         register word each←v13032;
         each←v13032 = (* ((( (ptr) gf←c36388)+8)/* creators←v3336 */ +BCK(k←v12988, 3)) );
         lab←L100070: ;
         if ( ( (each←v13032 != 0) ? ((* (( (ptr) formal←c36420)+6) ) == 0) : 0 ) ) {
            }
         else {
            goto lab←L100067;
            };
         {
            word creator←v13160;
SOURCE(8224, 29)
            creator←v13160 = (*  (ptr) each←v13032 );
SOURCE(8255, 7662)
SOURCE(8255, 7662)
            {
               /* declaration of var←c01 skipped */ 
               {
                  word var←c02;
                  {
                     word var←c0394;
                     var←c0394 = (word) &var←c36356;
                     var←c02 = (word) XR←Enable(( ((word)  (fPt) NoName←Q4476) ), ( ((word)  (fPt) NoName←Q4656) ), var←c0394);
                     };
                  if ((var←c02 == 2)) {
                     goto lab←L100072;
                     };
                  };
               (* (( (ptr) formal←c36420)+6) ) = var←c36356.f5/* var←c01 */ ;
               };
            lab←L100072: ;
            };
         each←v13032 = (* (( (ptr) each←v13032)+1) );
         goto lab←L100070;
         lab←L100067: ;
         };
      if ((k←v12988 >= 2)) {
         goto lab←L100063;
         };
      k←v12988 = (k←v12988 + 1);
      goto lab←L100066;
      lab←L100063: ;
      };
SOURCE(8435, 28)
   return( (unsigned) ((* (( (ptr) formal←c36420)+6) ) != 0));
   }

static word NoName←Q4476(formal←c0370)
   word formal←c0370;
   {
SOURCE(8255, 7662)
   (* (( (ptr) formal←c0370)+5) ) = (word) FindTypeface←P720((* (( (ptr) formal←c0370)+4) ), 0, 0);
   return(0);
   }

static word FindTypeface←P720(name←v6936, substitution←v6964, versionHint←v6992)
   word name←v6936;
   word substitution←v6964;
   word versionHint←v6992;
   {
   W6 var←c36452;
   register ptr gf←c36484 =  (ptr) &globalframe;
   word var←c7036;
   /* declaration of var←c34276 skipped */ 
   word typeface←v13232;
   word substitutionOccured←v13260 = 0;
   /* FindTypeface: */ 
SOURCE(8700, 7217)
   {
      word tmpAddr129;
      tmpAddr129 = (word) (( (ptr) &var←c36452)+4)/* var←c34276 */ ;
      (*  (ptr) tmpAddr129 ) = ( ((word)  (fPt) Insert←P3384) );
      (* (( (ptr) tmpAddr129) + 1) ) = 1;
      };
SOURCE(8934, 40)
   typeface←v13232 = (word) FetchTypeface←P480(name←v6936);
SOURCE(9011, 6906)
   if ((typeface←v13232 != 0)) {
SOURCE(9036, 6881)
      {
         word pd130;
         pd130 = (* (( (ptr) (* (( (ptr) gf←c36484)+175)/* var←c32964 */  ))+8) );
         substitutionOccured←v13260 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd130 ))))(name←v6936, (* (( (ptr) typeface←v13232)+2)
             ), 0, pd130));
         };
      }
   else {
SOURCE(9110, 6807)
      name←v6936 = (word) RopeFromRef←P360(name←v6936);
SOURCE(9177, 6740)
      typeface←v13232 = (word) Create←P660(name←v6936, substitution←v6964, versionHint←v6992);
SOURCE(9229, 6688)
      {
         word pd131;
         pd131 = (* (( (ptr) (* (( (ptr) gf←c36484)+175)/* var←c32964 */  ))+8) );
         substitutionOccured←v13260 =  (unsigned) (0 == (word) ( *( (fPt) ((*  (ptr) pd131 ))))(name←v6936, (* (( (ptr) typeface←v13232)+2)
             ), 0, pd131));
         };
SOURCE(9295, 6622)
      if ((0 != substitutionOccured←v13260)) {
SOURCE(9323, 165)
         {
            word old←v13392;
SOURCE(9325, 66)
            {
               W2 var←c0205;
               word var←c0395;
               {
                  word pd132;
                  pd132 = (* (( (ptr) (* (( (ptr) gf←c36484)+174)/* var←c32260 */  ))+7) );
                  (void) ( *( (fPt) ((*  (ptr) pd132 ))))((word) &var←c0205, (* (( (ptr) gf←c36484)+12)/* typefaces←v3588 */  ), (* (( (ptr) typeface←v13232)+2)
                      ), pd132);
                  };
               var←c0395 = var←c0205.f1;
               old←v13392 = XR←Narrow(var←c0395, (* (( (ptr) gf←c36484)+37) ));
               };
SOURCE(9393, 69)
            if ((old←v13392 == 0)) {
SOURCE(9411, 37)
               (void) Insert←P3384((* (( (ptr) typeface←v13232)+2) ), typeface←v13232, (word) (( (bPt) &var←c36452)+16)/* var←c34276 */ )
               ;
               }
            else {
SOURCE(9448, 14)
               typeface←v13232 = old←v13392;
               };
SOURCE(9464, 22)
            (void) Insert←P3384(name←v6936, typeface←v13232, (word) (( (bPt) &var←c36452)+16)/* var←c34276 */ );
            };
         }
      else {
SOURCE(9495, 31)
         (void) Insert←P3384((* (( (ptr) typeface←v13232)+2) ), typeface←v13232, (word) (( (bPt) &var←c36452)+16)/* var←c34276 */ )
         ;
         };
      };
SOURCE(9531, 6386)
   if ( ( (substitution←v6964 == 1) ? (0 != substitutionOccured←v13260) : 0 ) ) {
SOURCE(9602, 6315)
      {
         word var←c34308;
         {
            W2 var←c34340;
            {
               W2 var←c34372;
               word v←v31156;
               v←v31156 = (* (( (ptr) typeface←v13232)+2) );
               var←c34372.f0 = 11;
               var←c34372.f1 = v←v31156;
               var←c34340 = var←c34372;
               };
            {
               W2 var←c34436;
               W2 var←c0396;
               var←c34436.f0 = 11;
               var←c34436.f1 = name←v6936;
               (*  (ptr) (word) &var←c0396 ) = 0;
               (* (( (ptr) (word) &var←c0396) + 1) ) = 0;
               {
                  word pd133;
                  pd133 = (* (( (ptr) (* (( (ptr) gf←c36484)+178)/* var←c34212 */  ))+62) );
                  var←c34308 = (word) ( *( (fPt) ((*  (ptr) pd133 ))))((* (( (ptr) gf←c36484)+97) ), var←c34436, var←c34340, var←c0396, pd133)
                  ;
                  };
               };
            };
         {
            W3 var←c0212;
            var←c0212.f0 = 124;
            var←c0212.f1 = var←c34308;
            var←c0212.f2 = 0;
            (void) (XR←RaiseSignal((* (( (ptr) (* (( (ptr) gf←c36484)+177)/* var←c34116 */  ))+5) ), 0, (word) &var←c0212));
            };
         };
      };
SOURCE(9767, 16)
   return(typeface←v13232);
   }

static void Insert←P3384(tname←v13336, t←v13364, formal←c36548)
   word tname←v13336;
   word t←v13364;
   word formal←c36548;
   {
   register ptr gf←c36516 =  (ptr) &globalframe;
   formal←c36548 = (formal←c36548 - 16);
   /* Insert: */ 
SOURCE(8823, 7094)
SOURCE(8867, 7050)
   {
      word pd134;
      pd134 = (* (( (ptr) (* (( (ptr) gf←c36516)+174)/* var←c32260 */  ))+11) );
      if ((0 == (word) ( *( (fPt) ((*  (ptr) pd134 ))))((* (( (ptr) gf←c36516)+12)/* typefaces←v3588 */  ), tname←v13336, t←v13364, pd134)
      )) {
SOURCE(8914, 15)
         (* (( (ptr) gf←c36516)+14)/* races←v3700 */  ) = ((* (( (ptr) gf←c36516)+14)/* races←v3700 */  ) + 1);
         };
      };
   }

static word ReverseMetrics←P780(typeface←v7096)
   word typeface←v7096;
   {
   register ptr gf←c36580 =  (ptr) &globalframe;
   word var←c7140;
   word new←v13436;
   /* ReverseMetrics: */ 
SOURCE(9829, 6088)
SOURCE(9901, 57)
   new←v13436 = (word) AlternateMetricFind←P900(typeface←v7096, (* (( (ptr) gf←c36580)+59) ));
SOURCE(9960, 5957)
   if ((new←v13436 == 0)) {
SOURCE(9980, 5937)
      {
         word var←c34532;
         var←c34532 = XR←NewObject(32, (* (( (ptr) gf←c36580)+37) ));
         (*  (ptr) var←c34532 ) = (* (( (ptr) gf←c36580)+24)/* wellKnownAlternateMetricsClass←v4568 */  );
         (* (( (ptr) var←c34532)+1) ) = typeface←v7096;
         (* (( (ptr) var←c34532)+3) ) = (* (( (ptr) gf←c36580)+59) );
         (* (( (ptr) var←c34532)+4) ) = 2147483647;
         new←v13436 = var←c34532;
         };
SOURCE(10094, 5823)
      new←v13436 = (word) AlternateMetricInsert←P960(typeface←v7096, (* (( (ptr) gf←c36580)+59) ), new←v13436);
      };
SOURCE(10192, 12)
   return(new←v13436);
   }

static word SelectAlternateTypefaceMetrics←P840(typeface←v7200, alternateMetrics←v7228)
   word typeface←v7200;
   word alternateMetrics←v7228;
   {
   register ptr gf←c36612 =  (ptr) &globalframe;
   word var←c7272;
   /* SelectAlternateTypefaceMetrics: */ 
SOURCE(10210, 5707)
SOURCE(10322, 5595)
   if (((* (( (ptr) typeface←v7200)+3) ) == 0)) {
SOURCE(10362, 254)
      {
         word new←v13480;
SOURCE(10364, 63)
         new←v13480 = (word) AlternateMetricFind←P900(typeface←v7200, alternateMetrics←v7228);
SOURCE(10429, 30)
         if ((new←v13480 != 0)) {
SOURCE(10447, 12)
            return(new←v13480);
            };
SOURCE(10461, 5456)
         {
            word pd135;
            pd135 = (* (( (ptr) (*  (ptr) typeface←v7200 ))+1) );
            new←v13480 = (word) ( *( (fPt) ((*  (ptr) pd135 ))))(typeface←v7200, alternateMetrics←v7228, pd135);
            };
SOURCE(10528, 5389)
         if ((new←v13480 != 0)) {
SOURCE(10548, 5369)
            return((word) AlternateMetricInsert←P960(typeface←v7200, alternateMetrics←v7228, new←v13480));
            };
         };
      };
SOURCE(10619, 5298)
   {
      word var←c34596;
      {
         word pd136;
         pd136 = (* (( (ptr) (* (( (ptr) gf←c36612)+175)/* var←c32964 */  ))+5) );
         var←c34596 = (word) ( *( (fPt) ((*  (ptr) pd136 ))))((* (( (ptr) gf←c36612)+101) ), alternateMetrics←v7228, (* (( (ptr) gf←c36612)+102)
             ), (* (( (ptr) typeface←v7200)+2) ), 0, pd136);
         };
      {
         W3 var←c0225;
         var←c0225.f0 = 61;
         var←c0225.f1 = var←c34596;
         var←c0225.f2 = 0;
         (void) XR←RaiseError((* (( (ptr) (* (( (ptr) gf←c36612)+177)/* var←c34116 */  ))+4) ), (word) &var←c0225);
         };
      };
   }

static word AlternateMetricFind←P900(typeface←v7516, alternateMetrics←v7544)
   word typeface←v7516;
   word alternateMetrics←v7544;
   {
   register ptr gf←c36644 =  (ptr) &globalframe;
   word var←c7588;
   /* AlternateMetricFind: */ 
SOURCE(10965, 4952)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c36644)+16)/* LOCK←v3140 */ ));
SOURCE(11065, 4852)
   {
      register word each←v13524;
      each←v13524 = (* (( (ptr) gf←c36644)+23)/* alternates←v4176 */  );
      lab←L100079: ;
      if ((each←v13524 != 0)) {
         }
      else {
         goto lab←L100076;
         };
SOURCE(11148, 4769)
      {
         word tc137;
         word pd138;
         if (((*  (ptr) each←v13524 ) == typeface←v7516)) {
            pd138 = (* (( (ptr) (* (( (ptr) gf←c36644)+175)/* var←c32964 */  ))+8) );
            tc137 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd138 ))))((* (( (ptr) each←v13524)+1) ), alternateMetrics←v7544, 0, pd138)
            );
            }
         else {
            tc137 =  (word) 0;
            };
         if (tc137) {
SOURCE(11256, 37)
            {
               word var←c34660;
               var←c34660 = (* (( (ptr) each←v13524)+2) );
               (void) (XR←MonitorExit((word) (( (bPt) gf←c36644)+16)/* LOCK←v3140 */ ));
               return(var←c34660);
               };
            };
         };
      each←v13524 = (* (( (ptr) each←v13524)+3) );
      goto lab←L100079;
      lab←L100076: ;
      };
SOURCE(11295, 13)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c36644)+16)/* LOCK←v3140 */ ));
   return(0);
   }

static word AlternateMetricInsert←P960(typeface←v7648, alternateMetrics←v7676, alternate←v7704)
   word typeface←v7648;
   word alternateMetrics←v7676;
   word alternate←v7704;
   {
   register ptr gf←c36676 =  (ptr) &globalframe;
   word var←c7748;
   /* AlternateMetricInsert: */ 
SOURCE(11312, 4605)
   (void) (XR←MonitorEntry((word) (( (bPt) gf←c36676)+16)/* LOCK←v3140 */ ));
SOURCE(11435, 4482)
   {
      register word each←v13652;
      each←v13652 = (* (( (ptr) gf←c36676)+23)/* alternates←v4176 */  );
      lab←L100083: ;
      if ((each←v13652 != 0)) {
         }
      else {
         goto lab←L100080;
         };
SOURCE(11518, 4399)
      {
         word tc139;
         word pd140;
         if (((*  (ptr) each←v13652 ) == typeface←v7648)) {
            pd140 = (* (( (ptr) (* (( (ptr) gf←c36676)+175)/* var←c32964 */  ))+8) );
            tc139 =  (word) (0 != (word) ( *( (fPt) ((*  (ptr) pd140 ))))((* (( (ptr) each←v13652)+1) ), alternateMetrics←v7676, 0, pd140)
            );
            }
         else {
            tc139 =  (word) 0;
            };
         if (tc139) {
SOURCE(11626, 37)
            {
               word var←c34692;
               var←c34692 = (* (( (ptr) each←v13652)+2) );
               (void) (XR←MonitorExit((word) (( (bPt) gf←c36676)+16)/* LOCK←v3140 */ ));
               return(var←c34692);
               };
            };
         };
      each←v13652 = (* (( (ptr) each←v13652)+3) );
      goto lab←L100083;
      lab←L100080: ;
      };
SOURCE(11665, 4252)
   {
      word var←c34724;
      var←c34724 = XR←NewObject(16, (* (( (ptr) gf←c36676)+33) ));
      (*  (ptr) var←c34724 ) = typeface←v7648;
      (* (( (ptr) var←c34724)+1) ) = alternateMetrics←v7676;
      (* (( (ptr) var←c34724)+2) ) = alternate←v7704;
      (* (( (ptr) var←c34724)+3) ) = (* (( (ptr) gf←c36676)+23)/* alternates←v4176 */  );
      (* (( (ptr) gf←c36676)+23)/* alternates←v4176 */  ) = var←c34724;
      };
SOURCE(11737, 19)
   (void) (XR←MonitorExit((word) (( (bPt) gf←c36676)+16)/* LOCK←v3140 */ ));
   return(alternate←v7704);
   }

static word WNAlternateMetrics←P1020(self←v7808, alternateMetrics←v7836)
   word self←v7808;
   word alternateMetrics←v7836;
   {
   word var←c7880;
   /* WNAlternateMetrics: */ 
SOURCE(11760, 100)
SOURCE(11848, 12)
   return(0);
   }

static word WNContains←P1080(self←v7940, char←v7968)
   word self←v7940;
   word char←v7968;
   {
   register ptr gf←c36708 =  (ptr) &globalframe;
   word var←c8012;
   word base←v13780;
   /* WNContains: */ 
SOURCE(11863, 4054)
SOURCE(11929, 34)
   base←v13780 = XR←Narrow((* (( (ptr) self←v7940)+1) ), (* (( (ptr) gf←c36708)+37) ));
SOURCE(11965, 3952)
   {
      word pd141;
      pd141 = (* (( (ptr) (*  (ptr) base←v13780 ))+2) );
      return((word) ( *( (fPt) ((*  (ptr) pd141 ))))(base←v13780, char←v7968, pd141));
      };
   }

static word WNNextChar←P1140(self←v8072, char←v8100)
   word self←v8072;
   word char←v8100;
   {
   register ptr gf←c36740 =  (ptr) &globalframe;
   word next←v8144;
   word base←v13824;
   /* WNNextChar: */ 
SOURCE(12010, 3907)
SOURCE(12083, 34)
   base←v13824 = XR←Narrow((* (( (ptr) self←v8072)+1) ), (* (( (ptr) gf←c36740)+37) ));
SOURCE(12119, 3798)
   {
      word pd142;
      pd142 = (* (( (ptr) (*  (ptr) base←v13824 ))+3) );
      return((word) ( *( (fPt) ((*  (ptr) pd142 ))))(base←v13824, char←v8100, pd142));
      };
   }

static void WNEscapement←P1200(formal←c0258, self←v8204, char←v8232)
   word formal←c0258;
   word self←v8204;
   word char←v8232;
   {
   register ptr gf←c36772 =  (ptr) &globalframe;
   W2 var←c8276;
   word base←v13868;
   /* WNEscapement: */ 
SOURCE(12164, 3753)
SOURCE(12231, 34)
   base←v13868 = XR←Narrow((* (( (ptr) self←v8204)+1) ), (* (( (ptr) gf←c36772)+37) ));
SOURCE(12267, 3650)
   {
      word var←c34820;
      var←c34820 = (* (( (ptr) self←v8204)+3) );
      if ((var←c34820 == (* (( (ptr) gf←c36772)+59) ))) {
SOURCE(12317, 3600)
         {
            W2 var←c34948;
            {
               W2 var←c34884;
               {
                  word pd143;
                  pd143 = (* (( (ptr) (*  (ptr) base←v13868 ))+4) );
                  (void) ( *( (fPt) ((*  (ptr) pd143 ))))((word) &var←c34884, base←v13868, char←v8232, pd143);
                  };
               {
                  W2 var←c0257;
                  {
                     word pd144;
                     pd144 = (* (( (ptr) (* (( (ptr) gf←c36772)+179)/* var←c34916 */  ))+8) );
                     (void) ( *( (fPt) ((*  (ptr) pd144 ))))((word) &var←c0257, var←c34884, pd144);
                     };
                  var←c34948 = var←c0257;
                  };
               };
            var←c8276 = var←c34948;
            /* removed tail goto */ 
            };
         }
      else {
SOURCE(12387, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
   (*  (W2Pt) formal←c0258 ) = var←c8276;
   return;
   }

static word WNAmplified←P1260(self←v8336, char←v8364)
   word self←v8336;
   word char←v8364;
   {
   register ptr gf←c36804 =  (ptr) &globalframe;
   word var←c8408;
   word base←v13912;
   /* WNAmplified: */ 
SOURCE(12397, 3520)
SOURCE(12464, 34)
   base←v13912 = XR←Narrow((* (( (ptr) self←v8336)+1) ), (* (( (ptr) gf←c36804)+37) ));
SOURCE(12500, 3417)
   {
      word pd145;
      pd145 = (* (( (ptr) (*  (ptr) base←v13912 ))+5) );
      return((word) ( *( (fPt) ((*  (ptr) pd145 ))))(base←v13912, char←v8364, pd145));
      };
   }

static word WNCorrection←P1320(self←v8468, char←v8496)
   word self←v8468;
   word char←v8496;
   {
   register ptr gf←c36836 =  (ptr) &globalframe;
   word var←c8540;
   word base←v13956;
   /* WNCorrection: */ 
SOURCE(12546, 3371)
SOURCE(12624, 34)
   base←v13956 = XR←Narrow((* (( (ptr) self←v8468)+1) ), (* (( (ptr) gf←c36836)+37) ));
SOURCE(12660, 3257)
   {
      word pd146;
      pd146 = (* (( (ptr) (*  (ptr) base←v13956 ))+6) );
      return((word) ( *( (fPt) ((*  (ptr) pd146 ))))(base←v13956, char←v8496, pd146));
      };
   }

static void WNBoundingBox←P1380(formal←c0277, self←v8600, char←v8628)
   word formal←c0277;
   word self←v8600;
   word char←v8628;
   {
   register ptr gf←c36868 =  (ptr) &globalframe;
   W4 var←c8672;
   word base←v14000;
   W2 e←v14028;
   W4 b←v14056;
   /* WNBoundingBox: */ 
SOURCE(12707, 3210)
SOURCE(12779, 34)
   base←v14000 = XR←Narrow((* (( (ptr) self←v8600)+1) ), (* (( (ptr) gf←c36868)+37) ));
SOURCE(12815, 42)
   {
      word pd147;
      pd147 = (* (( (ptr) (*  (ptr) base←v14000 ))+4) );
      (void) ( *( (fPt) ((*  (ptr) pd147 ))))((word) &e←v14028, base←v14000, char←v8628, pd147);
      };
SOURCE(12859, 47)
   {
      word pd148;
      pd148 = (* (( (ptr) (*  (ptr) base←v14000 ))+7) );
      (void) ( *( (fPt) ((*  (ptr) pd148 ))))((word) &b←v14056, base←v14000, char←v8628, pd148);
      };
SOURCE(12908, 3009)
   {
      word var←c35044;
      var←c35044 = (* (( (ptr) self←v8600)+3) );
      if ((var←c35044 == (* (( (ptr) gf←c36868)+59) ))) {
SOURCE(12956, 151)
         {
            W4 extents←v14100;
SOURCE(12958, 129)
            {
               word x149;
               word x150;
               *(float*)&extents←v14100.f0 = (
                  x149 = b←v14056.f0,  *(float*)&x149
                  ) + (
                  x150 = e←v14028.f0,  *(float*)&x150
                  );
               };
            {
               word x151;
               word x152;
               *(float*)&extents←v14100.f1 = (
                  x151 = b←v14056.f1,  *(float*)&x151
                  ) - (
                  x152 = e←v14028.f0,  *(float*)&x152
                  );
               };
            {
               word x153;
               word x154;
               *(float*)&extents←v14100.f2 = (
                  x153 = b←v14056.f2,  *(float*)&x153
                  ) + (
                  x154 = e←v14028.f1,  *(float*)&x154
                  );
               };
            {
               word x155;
               word x156;
               *(float*)&extents←v14100.f3 = (
                  x155 = b←v14056.f3,  *(float*)&x155
                  ) - (
                  x156 = e←v14028.f1,  *(float*)&x156
                  );
               };
SOURCE(13089, 16)
            var←c8672 = extents←v14100;
            /* removed tail goto */ 
            };
         }
      else {
SOURCE(13121, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
   (*  (W4Pt) formal←c0277 ) = var←c8672;
   return;
   }

static void WNFontBoundingBox←P1440(formal←c0285, self←v8732)
   word formal←c0285;
   word self←v8732;
   {
   register ptr gf←c36900 =  (ptr) &globalframe;
   W4 var←c8776;
   word base←v14144;
   W4 ee←v14172;
   /* WNFontBoundingBox: */ 
SOURCE(13131, 2786)
SOURCE(13194, 34)
   base←v14144 = XR←Narrow((* (( (ptr) self←v8732)+1) ), (* (( (ptr) gf←c36900)+37) ));
SOURCE(13230, 76)
   ee←v14172.f0 = (*  (ptr) &fc157 );
   ee←v14172.f1 = (*  (ptr) &fc157 );
   ee←v14172.f2 = (*  (ptr) &fc157 );
   ee←v14172.f3 = (*  (ptr) &fc157 );
SOURCE(13308, 2609)
   {
      register word char←v14216;
      {
         word pd158;
         pd158 = (* (( (ptr) (*  (ptr) base←v14144 ))+3) );
         char←v14216 = (word) ( *( (fPt) ((*  (ptr) pd158 ))))(base←v14144,  (word) -1, pd158);
         };
      lab←L100090: ;
      if ((char←v14216 !=  (word) -1)) {
         }
      else {
         goto lab←L100087;
         };
      {
         W4 e←v14260;
SOURCE(13422, 47)
         {
            word pd159;
            pd159 = (* (( (ptr) (*  (ptr) self←v8732 ))+7) );
            (void) ( *( (fPt) ((*  (ptr) pd159 ))))((word) &e←v14260, self←v8732, char←v14216, pd159);
            };
SOURCE(13471, 65)
         {
            word x160;
            word x161;
            if (((
               x160 = e←v14260.f0,  *(float*)&x160
               ) > (
               x161 = ee←v14172.f0,  *(float*)&x161
               ))) {
SOURCE(13508, 28)
               ee←v14172.f0 = e←v14260.f0;
               };
            };
SOURCE(13538, 69)
         {
            word x162;
            word x163;
            if (((
               x162 = e←v14260.f1,  *(float*)&x162
               ) > (
               x163 = ee←v14172.f1,  *(float*)&x163
               ))) {
SOURCE(13577, 30)
               ee←v14172.f1 = e←v14260.f1;
               };
            };
SOURCE(13609, 53)
         {
            word x164;
            word x165;
            if (((
               x164 = e←v14260.f2,  *(float*)&x164
               ) > (
               x165 = ee←v14172.f2,  *(float*)&x165
               ))) {
SOURCE(13640, 22)
               ee←v14172.f2 = e←v14260.f2;
               };
            };
SOURCE(13664, 49)
         {
            word x166;
            word x167;
            if (((
               x166 = e←v14260.f3,  *(float*)&x166
               ) > (
               x167 = ee←v14172.f3,  *(float*)&x167
               ))) {
SOURCE(13693, 20)
               ee←v14172.f3 = e←v14260.f3;
               };
            };
         };
      {
         word pd168;
         pd168 = (* (( (ptr) (*  (ptr) base←v14144 ))+3) );
         char←v14216 = (word) ( *( (fPt) ((*  (ptr) pd168 ))))(base←v14144, char←v14216, pd168);
         };
      goto lab←L100090;
      lab←L100087: ;
      };
SOURCE(13724, 11)
   var←c8776 = ee←v14172;
   /* removed tail goto */ 
   (*  (W4Pt) formal←c0285 ) = var←c8776;
   return;
   }

static word WNNull←P1500(self←v8836, char←v8864, successor←v8892)
   word self←v8836;
   word char←v8864;
   word successor←v8892;
   {
   word var←c8936;
   /* WNNull: */ 
SOURCE(13740, 91)
SOURCE(13813, 18)
   return( (word) -1);
   }

static void WNKern←P1560(formal←c0294, self←v8996, char←v9024, successor←v9052)
   word formal←c0294;
   word self←v8996;
   word char←v9024;
   word successor←v9052;
   {
   /* WNKern: */ 
SOURCE(13834, 2083)
   /* Return var split */ 
SOURCE(13905, 2012)
   /* eliminated constant return field */ 
   /* eliminated constant return field */ 
   /* removed tail goto */ 
   (* (( (ptr) formal←c0294)+1) ) = (*  (ptr) &fc157 );
   (*  (ptr) formal←c0294 ) = (*  (ptr) &fc157 );
   return;
   }

static void WNMask←P1620(self←v9156, char←v9184, context←v9212)
   word self←v9156;
   word char←v9184;
   word context←v9212;
   {
   register ptr gf←c36932 =  (ptr) &globalframe;
   word base←v14304;
   /* WNMask: */ 
SOURCE(13923, 1994)
SOURCE(13995, 34)
   base←v14304 = XR←Narrow((* (( (ptr) self←v9156)+1) ), (* (( (ptr) gf←c36932)+37) ));
SOURCE(14031, 1886)
   {
      word var←c35172;
      var←c35172 = (* (( (ptr) self←v9156)+3) );
      if ((var←c35172 == (* (( (ptr) gf←c36932)+59) ))) {
SOURCE(14079, 146)
         {
            W2 e←v14348;
SOURCE(14081, 42)
            {
               word pd169;
               pd169 = (* (( (ptr) (*  (ptr) base←v14304 ))+4) );
               (void) ( *( (fPt) ((*  (ptr) pd169 ))))((word) &e←v14348, base←v14304, char←v9184, pd169);
               };
SOURCE(14125, 1792)
            {
               W2 var←c35204;
               {
                  word pd170;
                  pd170 = (* (( (ptr) (* (( (ptr) gf←c36932)+179)/* var←c34916 */  ))+8) );
                  (void) ( *( (fPt) ((*  (ptr) pd170 ))))((word) &var←c35204, e←v14348, pd170);
                  };
               {
                  word pd171;
                  pd171 = (* (( (ptr) (* (( (ptr) gf←c36932)+180)/* var←c35236 */  ))+21) );
                  (void) ( *( (fPt) ((*  (ptr) pd171 ))))(context←v9212, var←c35204, pd171);
                  };
               };
SOURCE(14164, 21)
            {
               word pd172;
               pd172 = (* (( (ptr) (* (( (ptr) gf←c36932)+180)/* var←c35236 */  ))+20) );
               (void) ( *( (fPt) ((*  (ptr) pd172 ))))(context←v9212, pd172);
               };
SOURCE(14187, 36)
            {
               word pd173;
               pd173 = (* (( (ptr) (*  (ptr) base←v14304 ))+13) );
               (void) ( *( (fPt) ((*  (ptr) pd173 ))))(base←v14304, char←v9184, context←v9212, pd173);
               };
            };
         }
      else {
SOURCE(14239, 5)
         (void) XR←RaiseUnnamedError();
         };
      };
   }

static word LowerCaseCat←P1680(ropes←v9448)
   W4 ropes←v9448;
   {
   W8 var←c36964;
   register ptr gf←c36996 =  (ptr) &globalframe;
   word result←v9528;
   /* declaration of var←c35268 skipped */ 
   /* declaration of j←v14392 skipped */ 
   word len←v14420 = 0;
   /* declaration of buf←v14448 skipped */ 
   /* LowerCaseCat: */ 
SOURCE(14780, 1137)
   {
      word tmpAddr174;
      tmpAddr174 = (word) (( (ptr) &var←c36964)+4)/* var←c35268 */ ;
      (*  (ptr) tmpAddr174 ) = ( ((word)  (fPt) Action←P3972) );
      (* (( (ptr) tmpAddr174) + 1) ) = 1;
      };
SOURCE(14780, 1137)
   result←v9528 = 0;
SOURCE(14862, 10)
   var←c36964.f6/* j←v14392 */  = 0;
SOURCE(14888, 19)
   var←c36964.f7/* buf←v14448 */  = 0;
SOURCE(14909, 1008)
   {
      register word i←v14504 = 0;
      lab←L100095: ;
SOURCE(14945, 972)
      {
         word pd175;
         word idx176;
         pd175 = (* (( (ptr) (* (( (ptr) gf←c36996)+175)/* var←c32964 */  ))+15) );
         len←v14420 = (
            idx176 = (word) (len←v14420 + (word) ( *( (fPt) ((*  (ptr) pd175 ))))((* ((( (ptr) &ropes←v9448)+BCK(i←v14504, 4))) ), pd175)
            ),
            SGNCK(idx176)
            );
         };
      if ((i←v14504 >= 3)) {
         goto lab←L100092;
         };
      i←v14504 = (i←v14504 + 1);
      goto lab←L100095;
      lab←L100092: ;
      };
SOURCE(14987, 930)
   {
      word pd177;
      pd177 = (* (( (ptr) (* (( (ptr) gf←c36996)+181)/* var←c35300 */  ))+6) );
      var←c36964.f7/* buf←v14448 */  = (word) ( *( (fPt) ((*  (ptr) pd177 ))))(BCK(len←v14420, 32768), pd177);
      };
SOURCE(15021, 896)
   {
      register word i←v14548 = 0;
      lab←L100099: ;
SOURCE(15123, 794)
      {
         word var←c35332;
         word pd178;
         pd178 = (* (( (ptr) (* (( (ptr) gf←c36996)+175)/* var←c32964 */  ))+26) );
         var←c35332 = (word) ( *( (fPt) ((*  (ptr) pd178 ))))((* (( (ptr) &ropes←v9448)+BCK(i←v14548, 4)) ), 0, 2147483647, (word) (
               ( (bPt) &var←c36964)+16)/* var←c35268 */ , pd178);
         };
      if ((i←v14548 >= 3)) {
         goto lab←L100096;
         };
      i←v14548 = (i←v14548 + 1);
      goto lab←L100099;
      lab←L100096: ;
      };
SOURCE(15179, 14)
   {
      word idx179;
      (*  (hPt) var←c36964.f7/* buf←v14448 */  ) = (
         idx179 = (word) var←c36964.f6/* j←v14392 */ ,
         BCK(idx179, 32768)
         );
      };
SOURCE(15195, 722)
   {
      word pd180;
      pd180 = (* (( (ptr) (* (( (ptr) gf←c36996)+175)/* var←c32964 */  ))+35) );
      result←v9528 = (word) ( *( (fPt) ((*  (ptr) pd180 ))))(var←c36964.f7/* buf←v14448 */ , 0, 32767, pd180);
      };
SOURCE(15227, 27)
   {
      word pd181;
      pd181 = (* (( (ptr) (* (( (ptr) gf←c36996)+181)/* var←c35300 */  ))+7) );
      (void) ( *( (fPt) ((*  (ptr) pd181 ))))(var←c36964.f7/* buf←v14448 */ , pd181);
      };
SOURCE(15256, 9)
   var←c36964.f7/* buf←v14448 */  = 0;
SOURCE(14780, 1137)
   return(result←v9528);
   }

static word Action←P3972(c←v30708, formal←c37028)
   word c←v30708;
   word formal←c37028;
   {
   word quit←v30752;
   formal←c37028 = (formal←c37028 - 16);
   /* Action: */ 
SOURCE(15057, 26)
SOURCE(15057, 26)
   quit←v30752 = 0;
SOURCE(15085, 832)
   {
      word idx182;
      word limit183;
      word idx184;
      word limit185;
      if (((c←v30708 - 65) <= 25)) {
         (* ((( (bPt) (* (( (ptr) formal←c37028)+7) ))+4)+(
               idx182 = (* (( (ptr) formal←c37028)+6) ),
               limit183 = (word)  (unsigned) (* (( (hPt) (* (( (ptr) formal←c37028)+7) ))+1) ),
               BCK(idx182, limit183)
               )) ) = (c←v30708 + 32);
         }
      else {
         (* ((( (bPt) (* (( (ptr) formal←c37028)+7) ))+4)+(
               idx184 = (* (( (ptr) formal←c37028)+6) ),
               limit185 = (word)  (unsigned) (* (( (hPt) (* (( (ptr) formal←c37028)+7) ))+1) ),
               BCK(idx184, limit185)
               )) ) = c←v30708;
         };
      };
SOURCE(15110, 10)
   (* (( (ptr) formal←c37028)+6) ) = ((* (( (ptr) formal←c37028)+6) ) + 1);
SOURCE(15057, 26)
   return(quit←v30752);
   }

static word FileExtensionCreate←P1740(self←v9588, formal←c0412, substitute←v9644)
   word self←v9588;
   word formal←c0412;
   word substitute←v9644;
   {
   W8 var←c37060;
   /* declaration of name←v9616 skipped */ 
   register ptr gf←c37092 =  (ptr) &globalframe;
   word var←c9688;
   word data←v14636;
   word fontDir←v14664;
   /* declaration of fileName←v14692 skipped */ 
   word stream←v14720 = 0;
   var←c37060.f4/* name←v9616 */  = formal←c0412;
   /* FileExtensionCreate: */ 
SOURCE(15364, 775)
SOURCE(15459, 56)
   data←v14636 = XR←Narrow((* (( (ptr) self←v9588)+1) ), (* (( (ptr) gf←c37092)+41) ));
SOURCE(15517, 69)
   {
      word var←c35396;
      var←c35396 = (* (( (ptr) (* (( (ptr) (* (( (ptr) gf←c37092)+182)/* var←c35364 */  ))+10) ))+5) );
      if ((var←c35396 == 0)) {
         goto lab←L100100;
         };
      {
         word tc186;
         if (((* (( (ptr) gf←c37092)+27) ) == XR←GetReferentType(var←c35396))) {
            tc186 =  (word) ( (unsigned) (*(int*)var←c35396<0) == 0);
            }
         else {
            tc186 =  (word) 0;
            };
         if (tc186) {
            fontDir←v14664 = var←c35396;
            }
         else {
            lab←L100100: ;
            fontDir←v14664 = 0;
            };
         };
      };
SOURCE(15622, 67)
   {
      W4 var←c35428;
      var←c35428.f0 = fontDir←v14664;
      var←c35428.f1 = var←c37060.f4/* name←v9616 */ ;
      var←c35428.f2 = (* (( (ptr) gf←c37092)+105) );
      var←c35428.f3 = (*  (ptr) data←v14636 );
      var←c37060.f5/* fileName←v14692 */  = (word) LowerCaseCat←P1680(var←c35428);
      };
SOURCE(15716, 201)
   {
      /* declaration of var←c03 skipped */ 
      var←c37060.f6/* var←c03 */  = (* (( (ptr) (* (( (ptr) gf←c37092)+183)/* var←c35460 */  ))+13) );
      {
         /* declaration of var←c04 skipped */ 
         {
            word var←c0397;
            var←c0397 = (word) &var←c37060;
             (void) (word) XR←Enable(( ((word)  (fPt) NoName←Q4536) ), ( ((word)  (fPt) NoName←Q4596) ), var←c0397);
            };
         stream←v14720 = var←c37060.f7/* var←c04 */ ;
         };
      };
SOURCE(15925, 197)
   if ((stream←v14720 != 0)) {
SOURCE(15946, 178)
      {
         word created←v14820;
         word typeface←v14848;
SOURCE(15948, 59)
         {
            word pd187;
            pd187 = (* (( (ptr) (* (( (ptr) gf←c37092)+183)/* var←c35460 */  ))+17) );
            created←v14820 = (word) ( *( (fPt) ((*  (ptr) pd187 ))))(stream←v14720, pd187);
            };
SOURCE(16009, 44)
         {
            word pd188;
            pd188 = (* (( (ptr) data←v14636)+1) );
            typeface←v14848 = (word) ( *( (fPt) ((*  (ptr) pd188 ))))(stream←v14720, pd188);
            };
SOURCE(16055, 20)
         (* (( (ptr) typeface←v14848)+2) ) = var←c37060.f4/* name←v9616 */ ;
SOURCE(16077, 26)
         (* (( (ptr) typeface←v14848)+4) ) = created←v14820;
SOURCE(16105, 17)
         return(typeface←v14848);
         };
      };
SOURCE(16127, 12)
   return(0);
   }

static word NoName←Q4536(formal←c0389)
   word formal←c0389;
   {
SOURCE(15716, 201)
   {
      word pd189;
      pd189 = (* (( (ptr) formal←c0389)+6) );
      (* (( (ptr) formal←c0389)+7) ) = (word) ( *( (fPt) ((*  (ptr) pd189 ))))((* ((( (ptr) formal←c0389)+5)) ), pd189);
      };
   return(0);
   }

static word CreatorFromFileExtension←P1800(extension←v9748, createProc←v9776)
   word extension←v9748;
   word createProc←v9776;
   {
   register ptr gf←c37124 =  (ptr) &globalframe;
   word var←c9924;
   word data←v14892;
   /* CreatorFromFileExtension: */ 
SOURCE(16145, 299)
SOURCE(16280, 96)
   data←v14892 = XR←NewObject(8, (* (( (ptr) gf←c37124)+41) ));
   (*  (ptr) data←v14892 ) = extension←v9748;
   (* (( (ptr) data←v14892)+1) ) = XR←CheckProc(createProc←v9776);
SOURCE(16378, 66)
   {
      word var←c35716;
      var←c35716 = XR←NewObject(8, (* (( (ptr) gf←c37124)+29) ));
      (*  (ptr) var←c35716 ) = (word) (( (bPt) gf←c37124)+456)/* var←c31236 */ ;
      (* (( (ptr) var←c35716)+1) ) = data←v14892;
      return(var←c35716);
      };
   }

static void NoName←Q4596(formal←c0345, formal←c200004, formal←c200005, formal←c200006, formal←c200007)
   word formal←c0345;
   word formal←c200004;
   word formal←c200005;
   word formal←c200006;
   word formal←c200007;
   {
   register ptr gf←c0391 =  (ptr) &globalframe;
   if ((formal←c200005 == (* (( (ptr) (* (( (ptr) gf←c0391)+183)/* var←c35460 */  ))+12) ))) {
      {
         word code←v30824;
         word explanation←v30852;
         code←v30824 = (*  (ptr) formal←c200007 );
         explanation←v30852 = (* (( (ptr) formal←c200007)+1) );
SOURCE(15786, 131)
         {
            word var←c35492;
            word var←c35524;
            {
               word pd190;
               pd190 = (* (( (ptr) (* (( (ptr) gf←c0391)+175)/* var←c32964 */  ))+5) );
               var←c35492 = (word) ( *( (fPt) ((*  (ptr) pd190 ))))((* (( (ptr) gf←c0391)+106) ), (* (( (ptr) formal←c200004)+4) ), (* (
                     ( (ptr) gf←c0391)+107) ), explanation←v30852, 0, pd190);
               };
            {
               word var←c35556;
               word var←c35588;
               var←c35556 = XR←NewObject(12, (* (( (ptr) gf←c0391)+31) ));
               var←c35588 = var←c35556;
               (*  (ptr) var←c35588 ) = (* (( (ptr) gf←c0391)+109) );
               (* (( (ptr) var←c35588)+1) ) = code←v30824;
               var←c35524 = var←c35556;
               };
            {
               W3 var←c0344;
               var←c0344.f0 = 6;
               var←c0344.f1 = var←c35492;
               var←c0344.f2 = var←c35524;
               (void) XR←RaiseError((* (( (ptr) (* (( (ptr) gf←c0391)+177)/* var←c34116 */  ))+4) ), (word) &var←c0344);
               };
            };
         };
      };
   (*  (ptr) formal←c0345 ) = 0;
   (* (( (ptr) formal←c0345)+1) ) = 0;
   return;
   }

static void NoName←Q4656(formal←c0351, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
   word formal←c0351;
   word formal←c200000;
   word formal←c200001;
   word formal←c200002;
   word formal←c200003;
   {
   register ptr gf←c0392 =  (ptr) &globalframe;
   if ((formal←c200001 == (* (( (ptr) (* (( (ptr) gf←c0392)+177)/* var←c34116 */  ))+4) ))) {
      {
         W3 error←v30184;
         error←v30184 = (*  (W3Pt) formal←c200003 );
SOURCE(8369, 35)
         if ((error←v30184.f0 == 25)) {
SOURCE(8404, 8)
            (*  (ptr) formal←c0351 ) = 2;
            (* (( (ptr) formal←c0351)+1) ) = 2;
            return;
            };
         };
      };
   (*  (ptr) formal←c0351 ) = 0;
   (* (( (ptr) formal←c0351)+1) ) = 0;
   return;
   }

/* file: ImagerTypefaceImpl, module: ImagerTypefaceImpl, compiled at: July 28, 1993 10:26:46 am PDT */ 
extern void XR←install←ImagerTypefaceImpl() {
   NoName←Q4416();
   }
extern void XR←run←ImagerTypefaceImpl() { XR←Start(&globalframe); }