/* Generated with C2C (Cedar To C)*/
/* Copyright (C) 1993 by Xerox Corporation. All rights reserved. */
/* time: July 11, 1993 7:59:22 pm PDT */
/* C2C version: April 20, 1993 (sun4) */
/* ref-counting: off */
/* file: GGMultiGravityImpl, module: GGMultiGravityImpl */
/* switches: bcfhklnouw */
#include <cedar/InstallationSupport.h>
#include <cedar/CedarExtra.h>
static char versionStamp[] = "@(#)mob←version [215622169,11083639] GGMultiGravityImpl";
typedef unsigned word, *ptr;
typedef unsigned char byte, *bPt;
typedef unsigned short half, *hPt;
typedef struct {word f0, f1;} W2;
typedef struct {word f0, f1, f2, f3, f4, f5, f6, f7;} W8;
typedef struct {W8 f; W8 r;} W16;
typedef struct {W16 f; word r;} W17;
typedef W2 *W2Pt;
typedef word (*fPt)();
typedef struct {word f0, f1, f2, f3, f4, f5;} W6;
typedef struct {word f0, f1, f2, f3;} W4;
typedef struct {W8 f; W4 r;} W12;
typedef struct {word f0, f1, f2, f3, f4;} W5;
typedef struct {W8 f; W5 r;} W13;
typedef struct {W16 f; W2 r;} W18;
typedef struct {word f0, f1, f2, f3, f4, f5, f6;} W7;
typedef struct {word f0, f1, f2;} W3;
typedef struct {W16 f; W6 r;} W22;
typedef struct {W8 f; W2 r;} W10;
typedef struct {W8 f; word r;} W9;
typedef W9 *W9Pt;
typedef W7 *W7Pt;
typedef W4 *W4Pt;
typedef W8 *W8Pt;
typedef W3 *W3Pt;
typedef W6 *W6Pt;
#define SOURCE(p, l) /* source p, l */
static float fc58 = 0.0;
static float fc59 = -1.0;
#define BCK(idx, lim) ( ((unsigned) idx) >= ((unsigned) lim) ? (XR←RaiseBoundsFault()) : (idx) )
static float fc65 = 0.072;
#define IOP2(op, x, y) ( (word) ((x) op (y)) )
#define SGNCK(i) ((int) (word) (i) < 0 ? XR←RaiseArithmeticFault(): i )
#define MIN(cast, x, y) ( ( cast x) < ( cast y) ? (x) : (y) )
static float fc98 = 2.0;
#define FABS(f, t) ( ((t=(f)) >= (float) 0.0) ? (t) : (- (t)) )
static float fc191 = 1.0e-5;
#define FMIN(x, y, tx, ty) ( (tx=((float) x)) <= (ty=((float) y)) ? tx : ty )
#define FMAX(x, y, tx, ty) ( (tx=((float) x)) >= (ty=((float) y)) ? tx : ty )
#define MAX(cast, x, y) ( ( cast x) > ( cast y) ? (x) : (y) )
static float fc358 = 0.5;
static void NoName←Q7344();
static void GGMultiGravityImpl←P0();
static void Map←P60();
static word NoName←Q7404();
static void PointsPreferred←P120();
static void LinesPreferred←P180();
static void FacesPreferred←P240();
static void PrepareWinner←P300();
static word EmptyCycler←P360();
static word MapCycler←P420();
static word NoName←Q7464();
static word CopyVEF←P480();
static word PointsPreferredCycler←P540();
static word LinesPreferredCycler←P600();
static word FacesPreferredCycler←P660();
static void FirstFeature←P720();
static void NextFeature←P780();
static void PreviousFeature←P840();
static void GetFeature←P900();
static void MultiMap←P960();
static word NoName←Q7524();
static void MultiFacesPreferred←P1020();
static void MultiLinesPreferred←P1080();
static void MultiPointsPreferred←P1140();
static void VertsInNeighborhoodPlus←P1200();
static void ProcessPoint←P3948();
static void ProcessSlice←P4008();
static word DoForSliceTrigger←P4068();
static word FindIntersections←P1260();
static word FindMidpoints←P1320();
static void CurvesInNeighborhoodPlus←P1380();
static void ProcessLine←P4560();
static void ProcessCircle←P4620();
static void QProjectedOntoCircle←P5004();
static void ProcessSlice←P4680();
static word ProcessSlopeLine←P4740();
static word DoForSceneSlice←P4800();
static void FacesInNeighborhoodPlus←P1440();
static void ProcessSlice←P5064();
static word DoForSceneSlice←P5124();
static word BestFacesFromPool←P1500();
static word BestCurvesFromPool←P1560();
static word BestPointsFromPool←P1620();
static word AddNeighbor←P1680();
static word AddFace←P1740();
static void NearPointsFromPoints←P1800();
static void MergePointsAndCurves←P1860();
static void MergeByOverlapAndDistance←P1920();
static void SortPoints←P1980();
static void SortCurves←P2040();
static void SortFaces←P2100();
static void SortByOverlap←P2160();
static void ComputeMidpoint←P2220();
static void ClassifyCurve←P2280();
static void CurveMeetsCurve←P2340();
static void NoOpI←P2400();
static void LinLinI←P2460();
static void CirLinI←P2520();
static void CirCirI←P2580();
static void EdgLinI←P2640();
static void EdgCirI←P2700();
static void EdgEdgI←P2760();
static void ArcLinI←P2820();
static void ArcCirI←P2880();
static void ArcEdgI←P2940();
static void ArcArcI←P3000();
static void CubLinI←P3060();
static void CubicMeetsEdge←P3120();
static void CubEdgI←P3180();
static void SlcLinI←P3240();
static void SlcCirI←P3300();
static word NewMultiGravityPool←P3360();
static void NoName←Q7584();
static void NoName←Q7644();
static void NoName←Q7704();
static struct {unsigned f; char r[4];} string1 = {131076, "\216\251\000"};
static struct {unsigned f; char r[4];} string2 = {65537, "\001\000\000"};
static struct {unsigned f; char r[16];} string3 = {851984, "\257\300\014\332\042\031\300\000\251\037\167\100\214\000\000"};
static struct {unsigned f; char r[12];} string4 = {589833, "\011\000\004\100\340\040\000\040\001\000\000"};
static struct {unsigned f; char r[16];} string5 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\304\000\000"};
static struct {unsigned f; char r[16];} string6 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\270\000\000"};
static struct {unsigned f; char r[12];} string7 = {524296, "\011\000\004\000\040\000\004\001\000\000\000"};
static struct {unsigned f; char r[16];} string8 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\254\000\000"};
static struct {unsigned f; char r[4];} string9 = {196611, "\004@`"};
static struct {unsigned f; char r[16];} string10 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\100\370\000\000"};
static struct {unsigned f; char r[16];} string11 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\100\310\000\000"};
static struct {unsigned f; char r[4];} string12 = {131074, "\004\003\000"};
static struct {unsigned f; char r[16];} string13 = {851984, "\257\300\247\365\203\234\300\047\265\225\046\107\270\000\000"};
static struct {unsigned f; char r[4];} string14 = {131074, "\003\001\000"};
static struct {unsigned f; char r[16];} string15 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\224\000\000"};
static struct {unsigned f; char r[4];} string16 = {131074, "\004\030\000"};
static struct {unsigned f; char r[16];} string17 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\144\000\000"};
static struct {unsigned f; char r[4];} string18 = {131074, "\004\005\000"};
static struct {unsigned f; char r[16];} string19 = {851984, "\257\300\241\203\324\306\300\306\173\161\152\100\200\000\000"};
static struct {unsigned f; char r[16];} string20 = {851984, "\257\300\223\145\303\043\300\372\023\025\003\101\174\000\000"};
static struct {unsigned f; char r[16];} string21 = {851984, "\257\300\014\332\042\031\300\000\251\037\167\100\200\000\000"};
static struct {unsigned f; char r[12];} string22 = {589833, "\011\000\004A \000(\001\000\000"};
static struct {unsigned f; char r[20];} string23 = {1179668, "\260\006\005\146\151\162\163\164\232\005\004\162\145\163\164\214\232\261\000"};
static struct {unsigned f; char r[16];} string24 = {851984, "\257\300\014\332\042\031\300\000\251\037\167\100\230\000\000"};
static struct {unsigned f; char r[4];} string25 = {131074, "\004\007\000"};
static struct {unsigned f; char r[16];} string26 = {917520, "\216\257\300\363\223\326\161\300\017\164\046\072\104\350\000"};
static struct {unsigned f; char r[44];} string27 = {2752556, "\260\006\005\146\151\162\163\164\257\300\247\031\224\326\300\123\162\224\023\100\164\005\004\162\145\163\164\214\257\300\247\031\224\326\300\123\162\224\023\100\164\261\000"};
static struct {unsigned f; char r[4];} string28 = {131074, "\003\002\000"};
static struct {unsigned f; char r[16];} string29 = {851984, "\257\300\241\203\324\306\300\306\173\161\152\100\164\000\000"};
static struct {unsigned f; char r[16];} string30 = {851984, "\257\300\012\121\313\233\300\012\365\115\261\100\200\000\000"};
static struct {unsigned f; char r[4];} string31 = {196611, "\004A\001"};
static struct {unsigned f; char r[16];} string32 = {851984, "\257\300\012\121\313\233\300\012\365\115\261\100\164\000\000"};
static struct {unsigned f; char r[16];} string33 = {851984, "\257\300\176\067\335\331\300\021\260\123\113\100\200\000\000"};
static struct {unsigned f; char r[20];} string34 = {1048596, "Impossible case.\000\000\000"};
static struct {unsigned f; char r[16];} string35 = {786448, "FaceOverflow\000\000\000"};
static struct {unsigned f; char r[16];} string36 = {851984, "CurveOverflow\000\000"};
static struct {unsigned f; char r[16];} string37 = {851984, "PointOverflow\000\000"};
static struct {unsigned f; char r[12];} string38 = {524300, "Gargoyle\000\000\000"};
static struct {unsigned f; char r[12];} string39 = {524300, "MultiMap\000\000\000"};
static struct {unsigned f; char r[16];} string40 = {851984, "\257\300\014\332\042\031\300\000\251\037\167\100\164\000\000"};
static struct {unsigned f; char r[8];} string41 = {393222, "\006\001A@\004?\000"};
static struct {unsigned f; char r[16];} string42 = {851984, "\257\300\006<7[\300;CV\364@h\000\000"};
static struct {unsigned f; char r[16];} string43 = {851984, "\257\300\325\040\343\357\300\152\277\324\231\100\150\000\000"};
static struct {unsigned f; char r[16];} string44 = {851984, "\257\300\136\002\175\264\300\016\031\370\241\100\150\000\000"};
static struct {unsigned f; char r[16];} string45 = {851984, "\257\300\223\031\346\162\300\275\253\133\335\100\150\000\000"};
static struct {unsigned f; char r[16];} string46 = {851984, "\257\300IKM\275\300Y\0222&@h\000\000"};
static struct {unsigned f; char r[16];} string47 = {851984, "\257\300\301\241\007\150\300\032\111\265\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string48 = {851984, "\257\300\347\101\365\007\300\150\102\366\020\100\150\000\000"};
static struct {unsigned f; char r[16];} string49 = {851984, "\257\300\336\025\013\356\300\216\115\352\271\100\150\000\000"};
static struct {unsigned f; char r[16];} string50 = {851984, "\257\300\206\055\004\241\300\261\334\001\116\100\150\000\000"};
static struct {unsigned f; char r[16];} string51 = {851984, "\257\300\103\306\166\071\300\047\126\012\237\100\150\000\000"};
static struct {unsigned f; char r[16];} string52 = {851984, "\257\300\245\247\302\156\300\052\156\325\023\100\150\000\000"};
static struct {unsigned f; char r[16];} string53 = {851984, "\257\300\004\142\347\110\300\363\053\254\345\100\150\000\000"};
static struct {unsigned f; char r[16];} string54 = {851984, "\257\300\172\265\057\072\300\145\211\260\126\100\150\000\000"};
static struct {
word f0[4]; word f4; word f5[82]; word f87;
word f88; word f89; word f90; word f91;
word f92; word f93; word f94; word f95;
word f96; word f97; word f98; word f99;
word f100; word f101; word f102; word f103;
word f104; word f105; word f106; word f107;
word f108; word f109; word f110; word f111;
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; word f174; word f175;
word f176; word f177; word f178; word f179;
word f180; word f181; word f182; word f183;
word f184; word f185; word f186; word f187;
word f188; word f189; word f190; word f191;
word f192; word f193; word f194; word f195;
word f196; word f197; word f198; word f199;
word f200[14];
} globalframe = {
{0}, (word) 20, {0}, (word) NewMultiGravityPool←P3360,
0, (word) SlcCirI←P3300, 0, (word) SlcLinI←P3240,
0, (word) CubEdgI←P3180, 0, (word) CubicMeetsEdge←P3120,
0, (word) CubLinI←P3060, 0, (word) ArcArcI←P3000,
0, (word) ArcEdgI←P2940, 0, (word) ArcCirI←P2880,
0, (word) ArcLinI←P2820, 0, (word) EdgEdgI←P2760,
0, (word) EdgCirI←P2700, 0, (word) EdgLinI←P2640,
0, (word) CirCirI←P2580, 0, (word) CirLinI←P2520,
0, (word) LinLinI←P2460, 0, (word) NoOpI←P2400,
0, (word) CurveMeetsCurve←P2340, 0, (word) ClassifyCurve←P2280,
0, (word) ComputeMidpoint←P2220, 0, (word) SortByOverlap←P2160,
0, (word) SortFaces←P2100, 0, (word) SortCurves←P2040,
0, (word) SortPoints←P1980, 0, (word) MergeByOverlapAndDistance←P1920,
0, (word) MergePointsAndCurves←P1860, 0, (word) NearPointsFromPoints←P1800,
0, (word) AddFace←P1740, 0, (word) AddNeighbor←P1680,
0, (word) BestPointsFromPool←P1620, 0, (word) BestCurvesFromPool←P1560,
0, (word) BestFacesFromPool←P1500, 0, (word) FacesInNeighborhoodPlus←P1440,
0, (word) CurvesInNeighborhoodPlus←P1380, 0, (word) FindMidpoints←P1320,
0, (word) FindIntersections←P1260, 0, (word) VertsInNeighborhoodPlus←P1200,
0, (word) MultiPointsPreferred←P1140, 0, (word) MultiLinesPreferred←P1080,
0, (word) MultiFacesPreferred←P1020, 0, (word) MultiMap←P960,
0, (word) GetFeature←P900, 0, (word) PreviousFeature←P840,
0, (word) NextFeature←P780, 0, (word) FirstFeature←P720,
0, (word) FacesPreferredCycler←P660, 0, (word) LinesPreferredCycler←P600,
0, (word) PointsPreferredCycler←P540, 0, (word) CopyVEF←P480,
0, (word) MapCycler←P420, 0, (word) EmptyCycler←P360,
0, (word) PrepareWinner←P300, 0, (word) FacesPreferred←P240,
0, (word) LinesPreferred←P180, 0, (word) PointsPreferred←P120,
0, (word) Map←P60, 0, (word) GGMultiGravityImpl←P0,
{0}
};
static void NoName←Q7344()
{
register ptr gf←c0960 = (ptr) &globalframe;
word var←c59352;
(* (( (ptr) gf←c0960)+54) ) = (word) XR←GetTypeIndex((word) &string1, 0, (word) &string2);
(* (( (ptr) gf←c0960)+57) ) = (word) XR←GetTypeIndex((word) &string3, 0, (word) &string4);
(* (( (ptr) gf←c0960)+58) ) = (word) XR←GetTypeIndex((word) &string5, 0, (word) &string2);
(* (( (ptr) gf←c0960)+59) ) = (word) XR←GetTypeIndex((word) &string6, 0, (word) &string7);
(* (( (ptr) gf←c0960)+60) ) = (word) XR←GetTypeIndex((word) &string8, 0, (word) &string9);
(* (( (ptr) gf←c0960)+62) ) = (word) XR←GetTypeIndex((word) &string10, 0, (word) &string9);
(* (( (ptr) gf←c0960)+64) ) = (word) XR←GetTypeIndex((word) &string11, 0, (word) &string12);
(* (( (ptr) gf←c0960)+65) ) = (word) XR←GetTypeIndex((word) &string13, 0, (word) &string14);
(* (( (ptr) gf←c0960)+66) ) = (word) XR←GetTypeIndex((word) &string15, 0, (word) &string16);
(* (( (ptr) gf←c0960)+67) ) = (word) XR←GetTypeIndex((word) &string17, 0, (word) &string18);
(* (( (ptr) gf←c0960)+68) ) = (word) XR←GetTypeIndexS((word) (&string19));
(* (( (ptr) gf←c0960)+69) ) = (word) XR←GetTypeIndex((word) &string20, 0, (word) &string12);
(* (( (ptr) gf←c0960)+70) ) = (word) XR←GetTypeIndex((word) &string21, 0, (word) &string22);
(* (( (ptr) gf←c0960)+71) ) = (word) XR←GetTypeIndex((word) &string23, 0, (word) &string14);
(* (( (ptr) gf←c0960)+72) ) = (word) XR←GetTypeIndex((word) &string24, 0, (word) &string25);
(* (( (ptr) gf←c0960)+74) ) = (word) XR←GetTypeIndex((word) &string26, 0, (word) &string2);
(* (( (ptr) gf←c0960)+75) ) = (word) XR←GetTypeIndex((word) &string27, 0, (word) &string28);
(* (( (ptr) gf←c0960)+76) ) = (word) XR←GetTypeIndex((word) &string29, 0, (word) &string2);
(* (( (ptr) gf←c0960)+77) ) = (word) XR←GetTypeIndex((word) &string30, 0, (word) &string31);
(* (( (ptr) gf←c0960)+78) ) = (word) XR←GetTypeIndexS((word) (&string32));
(* (( (ptr) gf←c0960)+79) ) = (word) XR←GetTypeIndexS((word) (&string33));
(* (ptr) (( (bPt) gf←c0960)+320) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0960)+74) ), (word) &string34);
(* (ptr) (( (bPt) gf←c0960)+324) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0960)+54) ), (word) &string35);
(* (ptr) (( (bPt) gf←c0960)+328) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0960)+54) ), (word) &string36);
(* (ptr) (( (bPt) gf←c0960)+332) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0960)+54) ), (word) &string37);
(* (ptr) (( (bPt) gf←c0960)+336) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0960)+54) ), (word) &string38);
(* (ptr) (( (bPt) gf←c0960)+340) ) = (word) XR←GetRefLiteral((* (( (ptr) gf←c0960)+54) ), (word) &string39);
(void) XR←DeclareGlobalFrame((word) "GGMultiGravityImpl", &globalframe, (word) XR←GetTypeIndex((word) &string40, 0, (word) &string41)
, (word) (( (bPt) gf←c0960)+796)/* var←c51384 */ );
var←c59352 = (word) XR←ImportInterface((word) "CodeTimer", (word) XR←GetTypeIndexS((word) (&string42)), 21);
(* (( (ptr) gf←c0960)+202)/* var←c51480 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 526850);
(void) XR←ImportProcS(var←c59352, 526338);
var←c59352 = (word) XR←ImportInterface((word) "CubicPaths", (word) XR←GetTypeIndexS((word) (&string43)), 13);
(* (( (ptr) gf←c0960)+212)/* var←c58168 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 673975300);
var←c59352 = (word) XR←ImportInterface((word) "GGAlign", (word) XR←GetTypeIndexS((word) (&string44)), 46);
(* (( (ptr) gf←c0960)+203)/* var←c53176 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 528642);
(void) XR←ImportProcS(var←c59352, 525570);
(void) XR←ImportProcS(var←c59352, 67371777);
(void) XR←ImportProcS(var←c59352, 67374849);
var←c59352 = (word) XR←ImportInterface((word) "GGCaret", (word) XR←GetTypeIndexS((word) (&string45)), 13);
(* (( (ptr) gf←c0960)+204)/* var←c53976 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 134482945);
(void) XR←ImportProcS(var←c59352, 134482689);
(void) XR←ImportProcS(var←c59352, 67371777);
var←c59352 = (word) XR←ImportInterface((word) "GGCircles", (word) XR←GetTypeIndexS((word) (&string46)), 29);
(* (( (ptr) gf←c0960)+211)/* var←c56888 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 403180546);
(void) XR←ImportProcS(var←c59352, 403180290);
(void) XR←ImportProcS(var←c59352, 403179778);
(void) XR←ImportProcS(var←c59352, 403180034);
(void) XR←ImportProcS(var←c59352, 403179266);
(void) XR←ImportProcS(var←c59352, 403179522);
(void) XR←ImportProcS(var←c59352, 403179010);
var←c59352 = (word) XR←ImportInterface((word) "GGParent", (word) XR←GetTypeIndexS((word) (&string47)), 83);
(* (( (ptr) gf←c0960)+210)/* var←c55576 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 67649282);
(void) XR←ImportProcS(var←c59352, 134752514);
(void) XR←ImportProcS(var←c59352, 67385857);
var←c59352 = (word) XR←ImportInterface((word) "GGScene", (word) XR←GetTypeIndexS((word) (&string48)), 50);
(* (( (ptr) gf←c0960)+207)/* var←c54136 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 67637506);
var←c59352 = (word) XR←ImportInterface((word) "GGSliceOps", (word) XR←GetTypeIndexS((word) (&string49)), 73);
(* (( (ptr) gf←c0960)+208)/* var←c54328 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 134753794);
(void) XR←ImportProcS(var←c59352, 134753538);
(void) XR←ImportProcS(var←c59352, 67645186);
(void) XR←ImportProcS(var←c59352, 135277571);
(void) XR←ImportProcS(var←c59352, 470821635);
var←c59352 = (word) XR←ImportInterface((word) "GGState", (word) XR←GetTypeIndexS((word) (&string50)), 119);
(* (( (ptr) gf←c0960)+201)/* var←c51448 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 67384321);
(void) XR←ImportProcS(var←c59352, 67392769);
(void) XR←ImportProcS(var←c59352, 67393793);
var←c59352 = (word) XR←ImportInterface((word) "Lines2d", (word) XR←GetTypeIndexS((word) (&string51)), 50);
(* (( (ptr) gf←c0960)+209)/* var←c54776 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 67906306);
(void) XR←ImportProcS(var←c59352, 201859074);
(void) XR←ImportProcS(var←c59352, 201858818);
(void) XR←ImportProcS(var←c59352, 201858306);
(void) XR←ImportProcS(var←c59352, 135013378);
(void) XR←ImportProcS(var←c59352, 67904258);
var←c59352 = (word) XR←ImportInterface((word) "RealFns", (word) XR←GetTypeIndexS((word) (&string52)), 36);
(* (( (ptr) gf←c0960)+206)/* var←c54040 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 67372289);
var←c59352 = (word) XR←ImportInterface((word) "Vectors2d", (word) XR←GetTypeIndexS((word) (&string53)), 21);
(* (( (ptr) gf←c0960)+205)/* var←c54008 */ ) = var←c59352;
(void) XR←ImportProcS(var←c59352, 135006210);
(void) XR←ImportProcS(var←c59352, 135267842);
(void) XR←ImportProcS(var←c59352, 67636737);
(void) XR←ImportProcS(var←c59352, 135268098);
(void) XR←ImportProcS(var←c59352, 68161282);
(void) XR←ImportProcS(var←c59352, 67637249);
(void) XR←ImportProcS(var←c59352, 68161794);
var←c59352 = (word) XR←ExportInterface((word) "GGMultiGravity", (word) XR←GetTypeIndexS((word) (&string54)), 16);
(* (( (ptr) gf←c0960)+213)/* var←c59384 */ ) = var←c59352;
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+788)/* var←c51352 */ , 404488198, (word) "Map");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+780)/* var←c51320 */ , 404488454, (word) "PointsPreferred");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+772)/* var←c51288 */ , 404226565, (word) "LinesPreferred");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+764)/* var←c51256 */ , 404226821, (word) "FacesPreferred");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+740)/* var←c51160 */ , 68944902, (word) "MapCycler");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+724)/* var←c51096 */ , 69207303, (word) "PointsPreferredCycler")
;
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+716)/* var←c51064 */ , 68683269, (word) "LinesPreferredCycler")
;
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+708)/* var←c51032 */ , 68683525, (word) "FacesPreferredCycler")
;
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+748)/* var←c51192 */ , 67635201, (word) "EmptyCycler");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+700)/* var←c51000 */ , 402917633, (word) "FirstFeature");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+692)/* var←c50968 */ , 402917889, (word) "NextFeature");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+684)/* var←c50936 */ , 402918145, (word) "PreviousFeature");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+668)/* var←c50872 */ , 136055814, (word) "MultiMap");
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+652)/* var←c50808 */ , 135793925, (word) "MultiLinesPreferred")
;
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+644)/* var←c50776 */ , 136056326, (word) "MultiPointsPreferred")
;
(void) XR←ExportProcS(var←c59352, (word) (( (bPt) gf←c0960)+348)/* var←c49592 */ , 67112704, (word) "NewMultiGravityPool")
;
}
static void GGMultiGravityImpl←P0(formal←c078, formal←c077)
word formal←c078;
word formal←c077;
{
register ptr gf←c59416 = (ptr) &globalframe;
/* GGMultiGravityImpl: */
SOURCE(255, 43164)
/* moved to installation proc */
SOURCE(37190, 502)
(* (( (ptr) gf←c59416)+5) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+12) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+13) ) = (word) (( (bPt) gf←c59416)+468)/* var←c50072 */ ;
(* (( (ptr) gf←c59416)+19) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+20) ) = (word) (( (bPt) gf←c59416)+460)/* var←c50040 */ ;
(* (( (ptr) gf←c59416)+21) ) = (word) (( (bPt) gf←c59416)+452)/* var←c50008 */ ;
(* (( (ptr) gf←c59416)+26) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+27) ) = (word) (( (bPt) gf←c59416)+444)/* var←c49976 */ ;
(* (( (ptr) gf←c59416)+28) ) = (word) (( (bPt) gf←c59416)+436)/* var←c49944 */ ;
(* (( (ptr) gf←c59416)+29) ) = (word) (( (bPt) gf←c59416)+428)/* var←c49912 */ ;
(* (( (ptr) gf←c59416)+33) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+34) ) = (word) (( (bPt) gf←c59416)+420)/* var←c49880 */ ;
(* (( (ptr) gf←c59416)+35) ) = (word) (( (bPt) gf←c59416)+412)/* var←c49848 */ ;
(* (( (ptr) gf←c59416)+36) ) = (word) (( (bPt) gf←c59416)+404)/* var←c49816 */ ;
(* (( (ptr) gf←c59416)+37) ) = (word) (( (bPt) gf←c59416)+396)/* var←c49784 */ ;
(* (( (ptr) gf←c59416)+40) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+41) ) = (word) (( (bPt) gf←c59416)+388)/* var←c49752 */ ;
(* (( (ptr) gf←c59416)+42) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+43) ) = (word) (( (bPt) gf←c59416)+372)/* var←c49688 */ ;
(* (( (ptr) gf←c59416)+44) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+45) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+47) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+48) ) = (word) (( (bPt) gf←c59416)+364)/* var←c49656 */ ;
(* (( (ptr) gf←c59416)+49) ) = (word) (( (bPt) gf←c59416)+356)/* var←c49624 */ ;
(* (( (ptr) gf←c59416)+50) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+51) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+52) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
(* (( (ptr) gf←c59416)+53) ) = (word) (( (bPt) gf←c59416)+476)/* var←c50104 */ ;
}
static void Map←P60(formal←c089, formal←c01049, formal←c01050, formal←c01051, formal←c01052, formal←c01053, formal←c01054)
word formal←c089;
W2 formal←c01049;
word formal←c01050;
word formal←c01051;
word formal←c01052;
word formal←c01053;
word formal←c01054;
{
W17 var←c59448;
/* declaration of testPoint←v7196 skipped */
/* declaration of t←v7224 skipped */
/* declaration of alignBag←v7252 skipped */
/* declaration of sceneBag←v7280 skipped */
/* declaration of ggData←v7308 skipped */
/* declaration of intersections←v7336 skipped */
/* declaration of resultPoint←v7380 skipped */
/* declaration of normal←v7408 skipped */
/* declaration of feature←v7436 skipped */
/* declaration of hitData←v7464 skipped */
(* (W2Pt) (( (ptr) &var←c59448)+4)/* testPoint←v7196 */ ) = formal←c01049;
(* (( (ptr) &var←c59448)+6)/* t←v7224 */ ) = formal←c01050;
(* (( (ptr) &var←c59448)+7)/* alignBag←v7252 */ ) = formal←c01051;
(* (( (ptr) &var←c59448)+8)/* sceneBag←v7280 */ ) = formal←c01052;
(* (( (ptr) &var←c59448)+9)/* ggData←v7308 */ ) = formal←c01053;
(* (( (ptr) &var←c59448)+10)/* intersections←v7336 */ ) = formal←c01054;
/* Map: */
SOURCE(3169, 849)
SOURCE(3169, 849)
(* (( (ptr) &var←c59448)+15)/* feature←v7436 */ ) = 0;
SOURCE(3169, 849)
(* (( (ptr) &var←c59448)+16)/* hitData←v7464 */ ) = 0;
SOURCE(3390, 628)
{
word var←c01028;
var←c01028 = (word) &var←c59448;
(void) (word) XR←Enable(( ((word) (fPt) NoName←Q7404) ), ( ((word) (fPt) NoName←Q7704) ), var←c01028);
};
/* removed tail goto */
(* (W2Pt) formal←c089 ) = (* (W2Pt) (( (ptr) &var←c59448)+11)/* resultPoint←v7380 */ );
(* (W2Pt) (( (ptr) formal←c089)+2) ) = (* (W2Pt) (( (ptr) &var←c59448)+13)/* normal←v7408 */ );
(* (( (ptr) formal←c089)+4) ) = (* (( (ptr) &var←c59448)+15)/* feature←v7436 */ );
(* (( (ptr) formal←c089)+5) ) = (* (( (ptr) &var←c59448)+16)/* hitData←v7464 */ );
return;
}
static word NoName←Q7404(formal←c0963)
word formal←c0963;
{
register ptr gf←c0962 = (ptr) &globalframe;
SOURCE(3461, 57)
{
word gravityType←v16112;
SOURCE(3461, 57)
{
word pd55;
pd55 = (* (( (ptr) (* (( (ptr) gf←c0962)+201)/* var←c51448 */ ))+93) );
gravityType←v16112 = (word) ( *( (fPt) ((* (ptr) pd55 ))))((* ((( (ptr) formal←c0963)+9)) ), pd55);
};
SOURCE(3520, 40)
{
word pd56;
pd56 = (* (( (ptr) (* (( (ptr) gf←c0962)+202)/* var←c51480 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd56 ))))((* (( (ptr) gf←c0962)+85) ), (* (( (ptr) gf←c0962)+84) ), pd56);
};
SOURCE(3562, 412)
{
word pd57;
pd57 = (* (( (ptr) (* (( (ptr) gf←c0962)+201)/* var←c51448 */ ))+89) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd57 ))))((* ((( (ptr) formal←c0963)+9)) ), pd57))) {
SOURCE(3599, 291)
{
word var←c51512;
var←c51512 = gravityType←v16112;
switch (var←c51512) {
case 1:
SOURCE(3642, 114)
{
W6 var←c51544;
(void) PointsPreferred←P120((word) &var←c51544, (* (W2Pt) (( (ptr) formal←c0963)+4) ), (* (( (ptr) formal←c0963)+6) ), (* (
/*1*/ ( (ptr) formal←c0963)+7) ), (* (( (ptr) formal←c0963)+8) ), (* (( (ptr) formal←c0963)+9) )
, (* (( (ptr) formal←c0963)+10) ));
(* (( (ptr) formal←c0963)+16) ) = var←c51544.f5;
(* (( (ptr) formal←c0963)+15) ) = var←c51544.f4;
(* (W2Pt) (( (ptr) formal←c0963)+13) ) = (* (W2Pt) (( (ptr) &var←c51544)+2) );
(* (W2Pt) (( (ptr) formal←c0963)+11) ) = (* (W2Pt) &var←c51544 );
};
break;
case 0: case 2:
SOURCE(3792, 98)
{
W6 var←c51576;
(void) LinesPreferred←P180((word) &var←c51576, (* (W2Pt) (( (ptr) formal←c0963)+4) ), (* (( (ptr) formal←c0963)+6) ), (* (
/*1*/ ( (ptr) formal←c0963)+7) ), (* (( (ptr) formal←c0963)+8) ), (* (( (ptr) formal←c0963)+9) ));
(* (( (ptr) formal←c0963)+16) ) = var←c51576.f5;
(* (( (ptr) formal←c0963)+15) ) = var←c51576.f4;
(* (W2Pt) (( (ptr) formal←c0963)+13) ) = (* (W2Pt) (( (ptr) &var←c51576)+2) );
(* (W2Pt) (( (ptr) formal←c0963)+11) ) = (* (W2Pt) &var←c51576 );
};
break;
default:
SOURCE(3903, 5)
(void) XR←RaiseUnnamedError();
break;
};
};
}
else {
SOURCE(3919, 23)
(* (W2Pt) (( (ptr) formal←c0963)+11) ) = (* (W2Pt) (( (ptr) formal←c0963)+4) );
SOURCE(3944, 13)
(* (( (ptr) formal←c0963)+15) ) = 0;
SOURCE(3959, 15)
(* (( (ptr) formal←c0963)+13) ) = (* (ptr) &fc58 );
(* (( (ptr) formal←c0963)+14) ) = (* (ptr) &fc59 );
};
};
SOURCE(3979, 39)
{
word pd60;
pd60 = (* (( (ptr) (* (( (ptr) gf←c0962)+202)/* var←c51480 */ ))+14) );
(void) ( *( (fPt) ((* (ptr) pd60 ))))((* (( (ptr) gf←c0962)+85) ), (* (( (ptr) gf←c0962)+84) ), pd60);
};
};
return(0);
}
static void PointsPreferred←P120(formal←c0124, testPoint←v7540, t←v7568, alignBag←v7596, sceneBag←v7624, ggData←v7652, intersections←v7680)
word formal←c0124;
W2 testPoint←v7540;
word t←v7568;
word alignBag←v7596;
word sceneBag←v7624;
word ggData←v7652;
word intersections←v7680;
{
W2 resultPoint←v7724;
W2 normal←v7752;
word feature←v7780;
word hitData←v7808;
word count←v16156;
word nearVEF←v16184 = 0;
/* PointsPreferred: */
SOURCE(4023, 947)
SOURCE(4023, 947)
feature←v7780 = 0;
SOURCE(4023, 947)
hitData←v7808 = 0;
SOURCE(4301, 96)
{
W2 var←c51608;
(void) MultiPointsPreferred←P1140((word) &var←c51608, testPoint←v7540, t←v7568, alignBag←v7596, sceneBag←v7624, ggData←v7652
, intersections←v7680);
count←v16156 = var←c51608.f1;
nearVEF←v16184 = var←c51608.f0;
};
SOURCE(4399, 54)
if ((count←v16156 == 0)) {
SOURCE(4417, 36)
resultPoint←v7724 = testPoint←v7540;
normal←v7752.f0 = (* (ptr) &fc58 );
normal←v7752.f1 = (* (ptr) &fc59 );
feature←v7780 = 0;
hitData←v7808 = 0;
goto lab←L100003;
};
SOURCE(4455, 515)
if ((count←v16156 == 1)) {
SOURCE(4473, 38)
{
W6 var←c51672;
(void) PrepareWinner←P300((word) &var←c51672, nearVEF←v16184, 0);
resultPoint←v7724 = (* (W2Pt) &var←c51672 );
normal←v7752 = (* (W2Pt) (( (ptr) &var←c51672)+2) );
feature←v7780 = var←c51672.f4;
hitData←v7808 = var←c51672.f5;
/* removed tail goto */
};
}
else {
SOURCE(4511, 470)
{
word neighborCount←v16228 = 1;
word nearestDist←v16284;
SOURCE(4571, 22)
nearestDist←v16284 = (* (ptr) &fc59 );
SOURCE(4595, 29)
{
word limit61;
nearestDist←v16284 = (* (ptr) (* ((( (ptr) nearVEF←v16184)+1)+(
limit61 = (* (ptr) nearVEF←v16184 ),
BCK(0, limit61)
)) ) );
};
SOURCE(4626, 103)
{
register word i←v16328 = 1;
register word noName←c51704;
noName←c51704 = count←v16156;
if ((i←v16328 >= noName←c51704)) {
goto lab←L100004;
};
lab←L100007: ;
SOURCE(4654, 75)
{
word limit62;
word x63;
word x64;
word x66;
if (((
x63 = (* (ptr) (* ((( (ptr) nearVEF←v16184)+1)+(
limit62 = (* (ptr) nearVEF←v16184 ),
BCK(i←v16328, limit62)
)) ) ), *(float*)&x63
) - (
x64 = nearestDist←v16284, *(float*)&x64
) < (
x66 = (* (ptr) &fc65 ), *(float*)&x66
))) {
SOURCE(4696, 33)
neighborCount←v16228 = (neighborCount←v16228 + 1);
};
};
i←v16328 = (i←v16328 + 1);
if ((i←v16328 < noName←c51704)) {
goto lab←L100007;
};
lab←L100004: ;
};
SOURCE(4740, 58)
if ((neighborCount←v16228 == 1)) {
SOURCE(4766, 32)
{
W6 var←c51736;
(void) PrepareWinner←P300((word) &var←c51736, nearVEF←v16184, 0);
resultPoint←v7724 = (* (W2Pt) &var←c51736 );
normal←v7752 = (* (W2Pt) (( (ptr) &var←c51736)+2) );
feature←v7780 = var←c51736.f4;
hitData←v7808 = var←c51736.f5;
goto lab←L100003;
};
};
SOURCE(4800, 170)
{
register word i←v16372 = 0;
register word noName←c51768;
noName←c51768 = neighborCount←v16228;
if ((i←v16372 >= noName←c51768)) {
goto lab←L100008;
};
lab←L100011: ;
SOURCE(4836, 78)
{
word limit67;
if (((* (ptr) (* (( (ptr) (* ((( (ptr) nearVEF←v16184)+1)+(
limit67 = (* (ptr) nearVEF←v16184 ),
BCK(i←v16372, limit67)
)) ))+5) ) ) == 0)) {
SOURCE(4882, 32)
{
W6 var←c51800;
(void) PrepareWinner←P300((word) &var←c51800, nearVEF←v16184, i←v16372);
resultPoint←v7724 = (* (W2Pt) &var←c51800 );
normal←v7752 = (* (W2Pt) (( (ptr) &var←c51800)+2) );
feature←v7780 = var←c51800.f4;
hitData←v7808 = var←c51800.f5;
goto lab←L100003;
};
};
};
i←v16372 = (i←v16372 + 1);
if ((i←v16372 < noName←c51768)) {
goto lab←L100011;
};
lab←L100008: ;
SOURCE(4938, 32)
{
W6 var←c51832;
(void) PrepareWinner←P300((word) &var←c51832, nearVEF←v16184, 0);
resultPoint←v7724 = (* (W2Pt) &var←c51832 );
normal←v7752 = (* (W2Pt) (( (ptr) &var←c51832)+2) );
feature←v7780 = var←c51832.f4;
hitData←v7808 = var←c51832.f5;
/* removed tail goto */
};
};
};
};
lab←L100003: ;
(* (W2Pt) formal←c0124 ) = resultPoint←v7724;
(* (W2Pt) (( (ptr) formal←c0124)+2) ) = normal←v7752;
(* (( (ptr) formal←c0124)+4) ) = feature←v7780;
(* (( (ptr) formal←c0124)+5) ) = hitData←v7808;
return;
}
static void LinesPreferred←P180(formal←c0142, testPoint←v7880, t←v7908, alignBag←v7936, sceneBag←v7964, ggData←v7992)
word formal←c0142;
W2 testPoint←v7880;
word t←v7908;
word alignBag←v7936;
word sceneBag←v7964;
word ggData←v7992;
{
W2 resultPoint←v8036;
W2 normal←v8064;
word feature←v8092;
word hitData←v8120;
word nearVEF←v16416 = 0;
word count←v16444;
/* LinesPreferred: */
SOURCE(4987, 816)
SOURCE(4987, 816)
feature←v8092 = 0;
SOURCE(4987, 816)
hitData←v8120 = 0;
SOURCE(5235, 80)
{
W2 var←c51864;
(void) MultiLinesPreferred←P1080((word) &var←c51864, testPoint←v7880, t←v7908, alignBag←v7936, sceneBag←v7964, ggData←v7992)
;
count←v16444 = var←c51864.f1;
nearVEF←v16416 = var←c51864.f0;
};
SOURCE(5317, 54)
if ((count←v16444 == 0)) {
SOURCE(5335, 36)
resultPoint←v8036 = testPoint←v7880;
normal←v8064.f0 = (* (ptr) &fc58 );
normal←v8064.f1 = (* (ptr) &fc59 );
feature←v8092 = 0;
hitData←v8120 = 0;
goto lab←L100012;
};
SOURCE(5373, 430)
if ((count←v16444 == 1)) {
SOURCE(5391, 38)
{
W6 var←c51928;
(void) PrepareWinner←P300((word) &var←c51928, nearVEF←v16416, 0);
resultPoint←v8036 = (* (W2Pt) &var←c51928 );
normal←v8064 = (* (W2Pt) (( (ptr) &var←c51928)+2) );
feature←v8092 = var←c51928.f4;
hitData←v8120 = var←c51928.f5;
/* removed tail goto */
};
}
else {
SOURCE(5771, 32)
{
W6 var←c51960;
(void) PrepareWinner←P300((word) &var←c51960, nearVEF←v16416, 0);
resultPoint←v8036 = (* (W2Pt) &var←c51960 );
normal←v8064 = (* (W2Pt) (( (ptr) &var←c51960)+2) );
feature←v8092 = var←c51960.f4;
hitData←v8120 = var←c51960.f5;
/* removed tail goto */
};
};
lab←L100012: ;
(* (W2Pt) formal←c0142 ) = resultPoint←v8036;
(* (W2Pt) (( (ptr) formal←c0142)+2) ) = normal←v8064;
(* (( (ptr) formal←c0142)+4) ) = feature←v8092;
(* (( (ptr) formal←c0142)+5) ) = hitData←v8120;
return;
}
static void FacesPreferred←P240(formal←c0158, testPoint←v8192, t←v8220, alignBag←v8248, sceneBag←v8276, ggData←v8304)
word formal←c0158;
W2 testPoint←v8192;
word t←v8220;
word alignBag←v8248;
word sceneBag←v8276;
word ggData←v8304;
{
W2 resultPoint←v8348;
W2 normal←v8376;
word feature←v8404;
word hitData←v8432;
word nearVEF←v16488 = 0;
word count←v16516;
/* FacesPreferred: */
SOURCE(5812, 420)
SOURCE(5812, 420)
feature←v8404 = 0;
SOURCE(5812, 420)
hitData←v8432 = 0;
SOURCE(6061, 80)
{
W2 var←c51992;
(void) MultiFacesPreferred←P1020((word) &var←c51992, testPoint←v8192, t←v8220, alignBag←v8248, sceneBag←v8276, ggData←v8304)
;
count←v16516 = var←c51992.f1;
nearVEF←v16488 = var←c51992.f0;
};
SOURCE(6143, 54)
if ((count←v16516 == 0)) {
SOURCE(6161, 36)
resultPoint←v8348 = testPoint←v8192;
normal←v8376.f0 = (* (ptr) &fc58 );
normal←v8376.f1 = (* (ptr) &fc59 );
feature←v8404 = 0;
hitData←v8432 = 0;
goto lab←L100013;
};
SOURCE(6199, 33)
{
W6 var←c52056;
(void) PrepareWinner←P300((word) &var←c52056, nearVEF←v16488, 0);
resultPoint←v8348 = (* (W2Pt) &var←c52056 );
normal←v8376 = (* (W2Pt) (( (ptr) &var←c52056)+2) );
feature←v8404 = var←c52056.f4;
hitData←v8432 = var←c52056.f5;
/* removed tail goto */
};
lab←L100013: ;
(* (W2Pt) formal←c0158 ) = resultPoint←v8348;
(* (W2Pt) (( (ptr) formal←c0158)+2) ) = normal←v8376;
(* (( (ptr) formal←c0158)+4) ) = feature←v8404;
(* (( (ptr) formal←c0158)+5) ) = hitData←v8432;
return;
}
static void PrepareWinner←P300(formal←c0166, nearVEF←v8504, index←v8532)
word formal←c0166;
word nearVEF←v8504;
word index←v8532;
{
W2 resultPoint←v8576;
W2 normal←v8604;
word feature←v8632;
word hitData←v8660;
word goodPoint←v16560;
/* PrepareWinner: */
SOURCE(6236, 312)
SOURCE(6236, 312)
feature←v8632 = 0;
SOURCE(6236, 312)
hitData←v8660 = 0;
SOURCE(6391, 37)
{
word limit68;
goodPoint←v16560 = (* ((( (ptr) nearVEF←v8504)+1)+(
limit68 = (* (ptr) nearVEF←v8504 ),
BCK(index←v8532, limit68)
)) );
};
SOURCE(6430, 29)
resultPoint←v8576 = (* (W2Pt) (( (ptr) goodPoint←v16560)+1) );
SOURCE(6461, 25)
normal←v8604 = (* (W2Pt) (( (ptr) goodPoint←v16560)+3) );
SOURCE(6488, 31)
feature←v8632 = (* (( (ptr) goodPoint←v16560)+5) );
SOURCE(6521, 27)
hitData←v8660 = (* (( (ptr) goodPoint←v16560)+6) );
/* removed tail goto */
(* (W2Pt) formal←c0166 ) = resultPoint←v8576;
(* (W2Pt) (( (ptr) formal←c0166)+2) ) = normal←v8604;
(* (( (ptr) formal←c0166)+4) ) = feature←v8632;
(* (( (ptr) formal←c0166)+5) ) = hitData←v8660;
return;
}
static word EmptyCycler←P360(testPoint←v8732)
W2 testPoint←v8732;
{
register ptr gf←c59480 = (ptr) &globalframe;
word featureCycler←v8776;
/* EmptyCycler: */
SOURCE(6554, 186)
SOURCE(6554, 186)
featureCycler←v8776 = 0;
SOURCE(6641, 99)
{
word var←c52088;
var←c52088 = XR←NewObject(20, (* (( (ptr) gf←c59480)+58) ));
(* (( (ptr) var←c52088)+2) ) = (word) -1;
(* (W2Pt) (( (ptr) var←c52088)+3) ) = testPoint←v8732;
featureCycler←v8776 = var←c52088;
};
SOURCE(6554, 186)
return(featureCycler←v8776);
}
static word MapCycler←P420(formal←c01055, formal←c01056, formal←c01057, formal←c01058, formal←c01059, formal←c01060)
W2 formal←c01055;
word formal←c01056;
word formal←c01057;
word formal←c01058;
word formal←c01059;
word formal←c01060;
{
W12 var←c59512;
/* declaration of testPoint←v8836 skipped */
/* declaration of t←v8864 skipped */
/* declaration of alignBag←v8892 skipped */
/* declaration of sceneBag←v8920 skipped */
/* declaration of ggData←v8948 skipped */
/* declaration of intersections←v8976 skipped */
/* declaration of featureCycler←v9020 skipped */
(* (W2Pt) (( (ptr) &var←c59512)+4)/* testPoint←v8836 */ ) = formal←c01055;
(* (( (ptr) &var←c59512)+6)/* t←v8864 */ ) = formal←c01056;
(* (( (ptr) &var←c59512)+7)/* alignBag←v8892 */ ) = formal←c01057;
(* (( (ptr) &var←c59512)+8)/* sceneBag←v8920 */ ) = formal←c01058;
(* (( (ptr) &var←c59512)+9)/* ggData←v8948 */ ) = formal←c01059;
(* (( (ptr) &var←c59512)+10)/* intersections←v8976 */ ) = formal←c01060;
/* MapCycler: */
SOURCE(6746, 666)
SOURCE(6746, 666)
(* (( (ptr) &var←c59512)+11)/* featureCycler←v9020 */ ) = 0;
SOURCE(6927, 485)
{
word var←c01029;
var←c01029 = (word) &var←c59512;
(void) (word) XR←Enable(( ((word) (fPt) NoName←Q7464) ), ( ((word) (fPt) NoName←Q7644) ), var←c01029);
};
SOURCE(6746, 666)
return((* (( (ptr) &var←c59512)+11)/* featureCycler←v9020 */ ));
}
static word NoName←Q7464(formal←c0966)
word formal←c0966;
{
register ptr gf←c0965 = (ptr) &globalframe;
SOURCE(6998, 57)
{
word gravityType←v16604;
SOURCE(6998, 57)
{
word pd69;
pd69 = (* (( (ptr) (* (( (ptr) gf←c0965)+201)/* var←c51448 */ ))+93) );
gravityType←v16604 = (word) ( *( (fPt) ((* (ptr) pd69 ))))((* ((( (ptr) formal←c0966)+9)) ), pd69);
};
SOURCE(7057, 355)
{
word pd70;
pd70 = (* (( (ptr) (* (( (ptr) gf←c0965)+201)/* var←c51448 */ ))+89) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd70 ))))((* ((( (ptr) formal←c0966)+9)) ), pd70))) {
SOURCE(7094, 251)
{
word var←c52152;
var←c52152 = gravityType←v16604;
switch (var←c52152) {
case 1:
SOURCE(7137, 94)
(* (( (ptr) formal←c0966)+11) ) = (word) PointsPreferredCycler←P540((* (W2Pt) (( (ptr) formal←c0966)+4) ), (* (( (ptr) formal←c0966)+6)
), (* (( (ptr) formal←c0966)+7) ), (* (( (ptr) formal←c0966)+8) ), (* (( (ptr) formal←c0966)+9) ), (* (( (ptr) formal←c0966)+10)
)
, 1);
break;
case 0: case 2:
SOURCE(7267, 78)
(* (( (ptr) formal←c0966)+11) ) = (word) LinesPreferredCycler←P600((* (W2Pt) (( (ptr) formal←c0966)+4) ), (* (( (ptr) formal←c0966)+6)
), (* (( (ptr) formal←c0966)+7) ), (* (( (ptr) formal←c0966)+8) ), (* (( (ptr) formal←c0966)+9) ));
break;
default:
SOURCE(7358, 5)
(void) XR←RaiseUnnamedError();
break;
};
};
}
else {
SOURCE(7374, 38)
(* (( (ptr) formal←c0966)+11) ) = (word) EmptyCycler←P360((* (W2Pt) ((( (ptr) formal←c0966)+4)) ));
};
};
};
return(0);
}
static word CopyVEF←P480(vef←v9080, count←v9108)
word vef←v9080;
word count←v9108;
{
register ptr gf←c59544 = (ptr) &globalframe;
word copy←v9152;
word oldGoodPoint←v16648 = 0;
word newGoodPoint←v16676 = 0;
/* CopyVEF: */
SOURCE(7421, 481)
SOURCE(7421, 481)
copy←v9152 = 0;
SOURCE(7559, 44)
{
word var←c52184;
word var←c52216;
word var←c52248;
var←c52184 = BCK(count←v9108, 67108863);
var←c52216 = ((word) var←c52184 << 2);
var←c52248 = XR←NewObject((4 + var←c52216), (* (( (ptr) gf←c59544)+59) ));
(* (ptr) var←c52248 ) = var←c52184;
copy←v9152 = var←c52248;
};
SOURCE(7605, 297)
{
register word i←v16720 = 0;
register word noName←c52280;
noName←c52280 = count←v9108;
if ((i←v16720 >= noName←c52280)) {
goto lab←L100017;
};
lab←L100020: ;
SOURCE(7633, 21)
{
word limit71;
oldGoodPoint←v16648 = (* ((( (ptr) vef←v9080)+1)+(
limit71 = (* (ptr) vef←v9080 ),
BCK(i←v16720, limit71)
)) );
};
SOURCE(7656, 222)
{
word var←c52312;
var←c52312 = XR←NewObject(36, (* (( (ptr) gf←c59544)+60) ));
(* (ptr) var←c52312 ) = (* (ptr) oldGoodPoint←v16648 );
(* (W2Pt) (( (ptr) var←c52312)+1) ) = (* (W2Pt) (( (ptr) oldGoodPoint←v16648)+1) );
(* (W2Pt) (( (ptr) var←c52312)+3) ) = (* (W2Pt) (( (ptr) oldGoodPoint←v16648)+3) );
(* (( (ptr) var←c52312)+5) ) = (* (( (ptr) oldGoodPoint←v16648)+5) );
(* (( (ptr) var←c52312)+6) ) = (* (( (ptr) oldGoodPoint←v16648)+6) );
(* (( (ptr) var←c52312)+7) ) = (* (( (ptr) oldGoodPoint←v16648)+7) );
newGoodPoint←v16676 = var←c52312;
};
SOURCE(7880, 22)
{
word limit72;
(* ((( (ptr) copy←v9152)+1)+(
limit72 = (* (ptr) copy←v9152 ),
BCK(i←v16720, limit72)
)) ) = newGoodPoint←v16676;
};
i←v16720 = (i←v16720 + 1);
if ((i←v16720 < noName←c52280)) {
goto lab←L100020;
};
lab←L100017: ;
};
SOURCE(7421, 481)
return(copy←v9152);
}
static word PointsPreferredCycler←P540(testPoint←v9212, t←v9240, alignBag←v9268, sceneBag←v9296, ggData←v9324, intersections←v9352, maxDimension←v9380)
W2 testPoint←v9212;
word t←v9240;
word alignBag←v9268;
word sceneBag←v9296;
word ggData←v9324;
word intersections←v9352;
word maxDimension←v9380;
{
register ptr gf←c59576 = (ptr) &globalframe;
word featureCycler←v9444;
word count←v16764;
word nearVEF←v16792 = 0;
/* PointsPreferredCycler: */
SOURCE(7917, 1279)
SOURCE(7917, 1279)
featureCycler←v9444 = 0;
SOURCE(8181, 1015)
SOURCE(8187, 96)
{
W2 var←c52344;
(void) MultiPointsPreferred←P1140((word) &var←c52344, testPoint←v9212, t←v9240, alignBag←v9268, sceneBag←v9296, ggData←v9324
, intersections←v9352);
count←v16764 = var←c52344.f1;
nearVEF←v16792 = var←c52344.f0;
};
SOURCE(8285, 48)
if ((count←v16764 == 0)) {
SOURCE(8303, 30)
return((word) EmptyCycler←P360(testPoint←v9212));
};
SOURCE(8335, 692)
if ((count←v16764 == 1)) {
SOURCE(8353, 27)
goto lab←L100021;
}
else {
SOURCE(8380, 658)
{
word neighborCount←v16836 = 1;
word nearestDist←v16892;
SOURCE(8440, 22)
nearestDist←v16892 = (* (ptr) &fc59 );
SOURCE(8465, 157)
{
word var←c52408;
var←c52408 = XR←NewObject(20, (* (( (ptr) gf←c59576)+58) ));
(* (( (ptr) var←c52408)+1) ) = count←v16764;
(* (( (ptr) var←c52408)+2) ) = (word) -1;
(* (W2Pt) (( (ptr) var←c52408)+3) ) = testPoint←v9212;
featureCycler←v9444 = var←c52408;
};
SOURCE(8624, 29)
{
word limit73;
nearestDist←v16892 = (* (ptr) (* ((( (ptr) nearVEF←v16792)+1)+(
limit73 = (* (ptr) nearVEF←v16792 ),
BCK(0, limit73)
)) ) );
};
SOURCE(8655, 103)
{
register word i←v16936 = 1;
register word noName←c52440;
noName←c52440 = count←v16764;
if ((i←v16936 >= noName←c52440)) {
goto lab←L100022;
};
lab←L100025: ;
SOURCE(8683, 75)
{
word limit74;
word x75;
word x76;
word x77;
if (((
x75 = (* (ptr) (* ((( (ptr) nearVEF←v16792)+1)+(
limit74 = (* (ptr) nearVEF←v16792 ),
BCK(i←v16936, limit74)
)) ) ), *(float*)&x75
) - (
x76 = nearestDist←v16892, *(float*)&x76
) < (
x77 = (* (ptr) &fc65 ), *(float*)&x77
))) {
SOURCE(8725, 33)
neighborCount←v16836 = (neighborCount←v16836 + 1);
};
};
i←v16936 = (i←v16936 + 1);
if ((i←v16936 < noName←c52440)) {
goto lab←L100025;
};
lab←L100022: ;
};
SOURCE(8769, 26)
if ((neighborCount←v16836 == 1)) {
SOURCE(8795, 21)
goto lab←L100021;
};
SOURCE(8818, 47)
(* (ptr) featureCycler←v9444 ) = (word) CopyVEF←P480(nearVEF←v16792, count←v16764);
SOURCE(8867, 160)
{
register word i←v16980 = 0;
register word noName←c52472;
noName←c52472 = neighborCount←v16836;
if ((i←v16980 >= noName←c52472)) {
goto lab←L100026;
};
lab←L100029: ;
SOURCE(8903, 77)
{
word limit78;
if (((* (ptr) (* (( (ptr) (* ((( (ptr) nearVEF←v16792)+1)+(
limit78 = (* (ptr) nearVEF←v16792 ),
BCK(i←v16980, limit78)
)) ))+5) ) ) == 0)) {
SOURCE(8949, 23)
(* (( (ptr) featureCycler←v9444)+2) ) = i←v16980;
SOURCE(8974, 6)
return(featureCycler←v9444);
};
};
i←v16980 = (i←v16980 + 1);
if ((i←v16980 < noName←c52472)) {
goto lab←L100029;
};
lab←L100026: ;
SOURCE(9004, 23)
(* (( (ptr) featureCycler←v9444)+2) ) = 0;
};
};
};
goto lab←L100030;
lab←L100021: ;
SOURCE(9069, 122)
{
word var←c52504;
word var←c52536;
var←c52504 = (word) CopyVEF←P480(nearVEF←v16792, count←v16764);
var←c52536 = XR←NewObject(20, (* (( (ptr) gf←c59576)+58) ));
(* (ptr) var←c52536 ) = var←c52504;
(* (( (ptr) var←c52536)+1) ) = count←v16764;
(* (W2Pt) (( (ptr) var←c52536)+3) ) = testPoint←v9212;
featureCycler←v9444 = var←c52536;
};
lab←L100030: ;
SOURCE(7917, 1279)
return(featureCycler←v9444);
}
static word LinesPreferredCycler←P600(testPoint←v9504, t←v9532, alignBag←v9560, sceneBag←v9588, ggData←v9616)
W2 testPoint←v9504;
word t←v9532;
word alignBag←v9560;
word sceneBag←v9588;
word ggData←v9616;
{
register ptr gf←c59608 = (ptr) &globalframe;
word featureCycler←v9660;
word nearVEF←v17024 = 0;
word count←v17052;
/* LinesPreferredCycler: */
SOURCE(9206, 1000)
SOURCE(9206, 1000)
featureCycler←v9660 = 0;
SOURCE(9414, 792)
SOURCE(9420, 80)
{
W2 var←c52568;
(void) MultiLinesPreferred←P1080((word) &var←c52568, testPoint←v9504, t←v9532, alignBag←v9560, sceneBag←v9588, ggData←v9616)
;
count←v17052 = var←c52568.f1;
nearVEF←v17024 = var←c52568.f0;
};
SOURCE(9502, 48)
if ((count←v17052 == 0)) {
SOURCE(9520, 30)
return((word) EmptyCycler←P360(testPoint←v9504));
};
SOURCE(9552, 494)
if ((count←v17052 == 1)) {
SOURCE(9570, 27)
goto lab←L100031;
}
else {
SOURCE(9597, 451)
{
word nearestDist←v17096;
word bestSceneObject←v17124 = (word) -1;
word neighborCount←v17152 = 1;
SOURCE(9599, 22)
nearestDist←v17096 = (* (ptr) &fc59 );
SOURCE(9708, 29)
{
word limit79;
nearestDist←v17096 = (* (ptr) (* ((( (ptr) nearVEF←v17024)+1)+(
limit79 = (* (ptr) nearVEF←v17024 ),
BCK(0, limit79)
)) ) );
};
SOURCE(9739, 103)
{
register word i←v17224 = 1;
register word noName←c52632;
noName←c52632 = count←v17052;
if ((i←v17224 >= noName←c52632)) {
goto lab←L100032;
};
lab←L100035: ;
SOURCE(9767, 75)
{
word limit80;
word x81;
word x82;
word x83;
if (((
x81 = (* (ptr) (* ((( (ptr) nearVEF←v17024)+1)+(
limit80 = (* (ptr) nearVEF←v17024 ),
BCK(i←v17224, limit80)
)) ) ), *(float*)&x81
) - (
x82 = nearestDist←v17096, *(float*)&x82
) < (
x83 = (* (ptr) &fc65 ), *(float*)&x83
))) {
SOURCE(9809, 33)
neighborCount←v17152 = (neighborCount←v17152 + 1);
};
};
i←v17224 = (i←v17224 + 1);
if ((i←v17224 < noName←c52632)) {
goto lab←L100035;
};
lab←L100032: ;
};
SOURCE(9853, 26)
if ((neighborCount←v17152 == 1)) {
SOURCE(9879, 21)
goto lab←L100031;
};
SOURCE(9902, 20)
bestSceneObject←v17124 = (word) -1;
SOURCE(9924, 122)
{
word var←c52664;
word var←c52696;
var←c52664 = (word) CopyVEF←P480(nearVEF←v17024, count←v17052);
var←c52696 = XR←NewObject(20, (* (( (ptr) gf←c59608)+58) ));
(* (ptr) var←c52696 ) = var←c52664;
(* (( (ptr) var←c52696)+1) ) = count←v17052;
(* (W2Pt) (( (ptr) var←c52696)+3) ) = testPoint←v9504;
featureCycler←v9660 = var←c52696;
};
};
};
goto lab←L100036;
lab←L100031: ;
SOURCE(10079, 122)
{
word var←c52728;
word var←c52760;
var←c52728 = (word) CopyVEF←P480(nearVEF←v17024, count←v17052);
var←c52760 = XR←NewObject(20, (* (( (ptr) gf←c59608)+58) ));
(* (ptr) var←c52760 ) = var←c52728;
(* (( (ptr) var←c52760)+1) ) = count←v17052;
(* (W2Pt) (( (ptr) var←c52760)+3) ) = testPoint←v9504;
featureCycler←v9660 = var←c52760;
};
lab←L100036: ;
SOURCE(9206, 1000)
return(featureCycler←v9660);
}
static word FacesPreferredCycler←P660(testPoint←v9720, t←v9748, alignBag←v9776, sceneBag←v9804, ggData←v9832)
W2 testPoint←v9720;
word t←v9748;
word alignBag←v9776;
word sceneBag←v9804;
word ggData←v9832;
{
register ptr gf←c59640 = (ptr) &globalframe;
word featureCycler←v9876;
word nearVEF←v17268 = 0;
word count←v17296;
/* FacesPreferredCycler: */
SOURCE(10215, 1027)
SOURCE(10215, 1027)
featureCycler←v9876 = 0;
SOURCE(10423, 819)
SOURCE(10429, 80)
{
W2 var←c52792;
(void) MultiFacesPreferred←P1020((word) &var←c52792, testPoint←v9720, t←v9748, alignBag←v9776, sceneBag←v9804, ggData←v9832)
;
count←v17296 = var←c52792.f1;
nearVEF←v17268 = var←c52792.f0;
};
SOURCE(10511, 48)
if ((count←v17296 == 0)) {
SOURCE(10529, 30)
return((word) EmptyCycler←P360(testPoint←v9720));
};
SOURCE(10561, 18)
if ((count←v17296 == 1)) {
SOURCE(10579, 27)
goto lab←L100037;
}
else {
SOURCE(10608, 21)
goto lab←L100037;
};
/* c2c skipped dead code */
lab←L100037: ;
SOURCE(11115, 122)
{
word var←c52856;
word var←c52888;
var←c52856 = (word) CopyVEF←P480(nearVEF←v17268, count←v17296);
var←c52888 = XR←NewObject(20, (* (( (ptr) gf←c59640)+58) ));
(* (ptr) var←c52888 ) = var←c52856;
(* (( (ptr) var←c52888)+1) ) = count←v17296;
(* (W2Pt) (( (ptr) var←c52888)+3) ) = testPoint←v9720;
featureCycler←v9876 = var←c52888;
};
SOURCE(10215, 1027)
return(featureCycler←v9876);
}
static void FirstFeature←P720(formal←c0249, featureCycler←v9936)
word formal←c0249;
word featureCycler←v9936;
{
W2 resultPoint←v9980;
W2 normal←v10008;
word feature←v10036;
word hitData←v10064;
/* FirstFeature: */
SOURCE(11250, 181)
SOURCE(11250, 181)
feature←v10036 = 0;
SOURCE(11250, 181)
hitData←v10064 = 0;
SOURCE(11396, 35)
{
W6 var←c52920;
(void) GetFeature←P900((word) &var←c52920, featureCycler←v9936, 1);
resultPoint←v9980 = (* (W2Pt) &var←c52920 );
normal←v10008 = (* (W2Pt) (( (ptr) &var←c52920)+2) );
feature←v10036 = var←c52920.f4;
hitData←v10064 = var←c52920.f5;
/* removed tail goto */
};
(* (W2Pt) formal←c0249 ) = resultPoint←v9980;
(* (W2Pt) (( (ptr) formal←c0249)+2) ) = normal←v10008;
(* (( (ptr) formal←c0249)+4) ) = feature←v10036;
(* (( (ptr) formal←c0249)+5) ) = hitData←v10064;
return;
}
static void NextFeature←P780(formal←c0257, featureCycler←v10136)
word formal←c0257;
word featureCycler←v10136;
{
W2 resultPoint←v10180;
W2 normal←v10208;
word feature←v10236;
word hitData←v10264;
/* NextFeature: */
SOURCE(11437, 180)
SOURCE(11437, 180)
feature←v10236 = 0;
SOURCE(11437, 180)
hitData←v10264 = 0;
SOURCE(11582, 35)
{
W6 var←c52952;
(void) GetFeature←P900((word) &var←c52952, featureCycler←v10136, 2);
resultPoint←v10180 = (* (W2Pt) &var←c52952 );
normal←v10208 = (* (W2Pt) (( (ptr) &var←c52952)+2) );
feature←v10236 = var←c52952.f4;
hitData←v10264 = var←c52952.f5;
/* removed tail goto */
};
(* (W2Pt) formal←c0257 ) = resultPoint←v10180;
(* (W2Pt) (( (ptr) formal←c0257)+2) ) = normal←v10208;
(* (( (ptr) formal←c0257)+4) ) = feature←v10236;
(* (( (ptr) formal←c0257)+5) ) = hitData←v10264;
return;
}
static void PreviousFeature←P840(formal←c0265, featureCycler←v10336)
word formal←c0265;
word featureCycler←v10336;
{
W2 resultPoint←v10380;
W2 normal←v10408;
word feature←v10436;
word hitData←v10464;
/* PreviousFeature: */
SOURCE(11623, 185)
SOURCE(11623, 185)
feature←v10436 = 0;
SOURCE(11623, 185)
hitData←v10464 = 0;
SOURCE(11772, 36)
{
W6 var←c52984;
(void) GetFeature←P900((word) &var←c52984, featureCycler←v10336, 0);
resultPoint←v10380 = (* (W2Pt) &var←c52984 );
normal←v10408 = (* (W2Pt) (( (ptr) &var←c52984)+2) );
feature←v10436 = var←c52984.f4;
hitData←v10464 = var←c52984.f5;
/* removed tail goto */
};
(* (W2Pt) formal←c0265 ) = resultPoint←v10380;
(* (W2Pt) (( (ptr) formal←c0265)+2) ) = normal←v10408;
(* (( (ptr) formal←c0265)+4) ) = feature←v10436;
(* (( (ptr) formal←c0265)+5) ) = hitData←v10464;
return;
}
static void GetFeature←P900(formal←c0274, featureCycler←v10536, move←v10564)
word formal←c0274;
word featureCycler←v10536;
word move←v10564;
{
W2 resultPoint←v10628;
W2 normal←v10656;
word feature←v10684;
word hitData←v10712;
/* GetFeature: */
SOURCE(11814, 664)
SOURCE(11814, 664)
feature←v10684 = 0;
SOURCE(11814, 664)
hitData←v10712 = 0;
SOURCE(11973, 505)
if ((featureCycler←v10536 == 0)) {
SOURCE(12033, 24)
resultPoint←v10628.f0 = (* (ptr) &fc58 );
resultPoint←v10628.f1 = (* (ptr) &fc58 );
SOURCE(12068, 15)
normal←v10656.f0 = (* (ptr) &fc58 );
normal←v10656.f1 = (* (ptr) &fc59 );
SOURCE(12085, 13)
feature←v10684 = 0;
SOURCE(12100, 13)
hitData←v10712 = 0;
}
else {
SOURCE(12122, 356)
if (((* (( (ptr) featureCycler←v10536)+1) ) == 0)) {
SOURCE(12186, 37)
resultPoint←v10628 = (* (W2Pt) (( (ptr) featureCycler←v10536)+3) );
SOURCE(12225, 15)
normal←v10656.f0 = (* (ptr) &fc58 );
normal←v10656.f1 = (* (ptr) &fc59 );
SOURCE(12242, 13)
feature←v10684 = 0;
SOURCE(12257, 13)
hitData←v10712 = 0;
}
else {
SOURCE(12281, 96)
(* (( (ptr) featureCycler←v10536)+2) ) = IOP2( % , (int)(((* (( (ptr) featureCycler←v10536)+2) ) + (move←v10564 - 1)) +
(* (( (ptr) featureCycler←v10536)+1) )), (int)(* (( (ptr) featureCycler←v10536)+1) ));
SOURCE(12379, 99)
{
W6 var←c53016;
{
word idx84;
(void) PrepareWinner←P300((word) &var←c53016, (* (ptr) featureCycler←v10536 ), (
idx84 = (* (( (ptr) featureCycler←v10536)+2) ),
SGNCK(idx84)
));
};
hitData←v10712 = var←c53016.f5;
feature←v10684 = var←c53016.f4;
normal←v10656 = (* (W2Pt) (( (ptr) &var←c53016)+2) );
resultPoint←v10628 = (* (W2Pt) &var←c53016 );
};
};
};
/* removed tail goto */
(* (W2Pt) formal←c0274 ) = resultPoint←v10628;
(* (W2Pt) (( (ptr) formal←c0274)+2) ) = normal←v10656;
(* (( (ptr) formal←c0274)+4) ) = feature←v10684;
(* (( (ptr) formal←c0274)+5) ) = hitData←v10712;
return;
}
static void MultiMap←P960(formal←c0283, formal←c01061, formal←c01062, formal←c01063, formal←c01064, formal←c01065, formal←c01066)
word formal←c0283;
W2 formal←c01061;
word formal←c01062;
word formal←c01063;
word formal←c01064;
word formal←c01065;
word formal←c01066;
{
W13 var←c59672;
/* declaration of testPoint←v10784 skipped */
/* declaration of t←v10812 skipped */
/* declaration of alignBag←v10840 skipped */
/* declaration of sceneBag←v10868 skipped */
/* declaration of ggData←v10896 skipped */
/* declaration of intersections←v10924 skipped */
/* declaration of nearVEF←v10968 skipped */
/* declaration of count←v10996 skipped */
(* (W2Pt) (( (ptr) &var←c59672)+4)/* testPoint←v10784 */ ) = formal←c01061;
(* (( (ptr) &var←c59672)+6)/* t←v10812 */ ) = formal←c01062;
(* (( (ptr) &var←c59672)+7)/* alignBag←v10840 */ ) = formal←c01063;
(* (( (ptr) &var←c59672)+8)/* sceneBag←v10868 */ ) = formal←c01064;
(* (( (ptr) &var←c59672)+9)/* ggData←v10896 */ ) = formal←c01065;
(* (( (ptr) &var←c59672)+10)/* intersections←v10924 */ ) = formal←c01066;
/* MultiMap: */
SOURCE(12487, 747)
SOURCE(12487, 747)
(* (( (ptr) &var←c59672)+11)/* nearVEF←v10968 */ ) = 0;
SOURCE(12682, 552)
{
word var←c01030;
var←c01030 = (word) &var←c59672;
(void) (word) XR←Enable(( ((word) (fPt) NoName←Q7524) ), ( ((word) (fPt) NoName←Q7584) ), var←c01030);
};
/* removed tail goto */
(* (ptr) formal←c0283 ) = (* (( (ptr) &var←c59672)+11)/* nearVEF←v10968 */ );
(* (( (ptr) formal←c0283)+1) ) = (* (( (ptr) &var←c59672)+12)/* count←v10996 */ );
return;
}
static word NoName←Q7524(formal←c0972)
word formal←c0972;
{
register ptr gf←c0971 = (ptr) &globalframe;
SOURCE(12800, 40)
{
word pd85;
pd85 = (* (( (ptr) (* (( (ptr) gf←c0971)+202)/* var←c51480 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd85 ))))((* (( (ptr) gf←c0971)+85) ), (* (( (ptr) gf←c0971)+84) ), pd85);
};
SOURCE(12842, 348)
{
word pd86;
pd86 = (* (( (ptr) (* (( (ptr) gf←c0971)+201)/* var←c51448 */ ))+89) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd86 ))))((* ((( (ptr) formal←c0972)+9)) ), pd86))) {
SOURCE(12879, 258)
{
word var←c53080;
{
word pd87;
pd87 = (* (( (ptr) (* (( (ptr) gf←c0971)+201)/* var←c51448 */ ))+93) );
var←c53080 = (word) ( *( (fPt) ((* (ptr) pd87 ))))((* ((( (ptr) formal←c0972)+9)) ), pd87);
};
if ((var←c53080 == 0)) {
SOURCE(12940, 80)
{
W2 var←c53112;
(void) MultiLinesPreferred←P1080((word) &var←c53112, (* (W2Pt) (( (ptr) formal←c0972)+4) ), (* (( (ptr) formal←c0972)+6)
), (* (( (ptr) formal←c0972)+7) ), (* (( (ptr) formal←c0972)+8) ), (* (( (ptr) formal←c0972)+9) ));
(* (( (ptr) formal←c0972)+12) ) = var←c53112.f1;
(* (( (ptr) formal←c0972)+11) ) = var←c53112.f0;
};
}
else {
if ((var←c53080 == 1)) {
SOURCE(13041, 96)
{
W2 var←c53144;
(void) MultiPointsPreferred←P1140((word) &var←c53144, (* (W2Pt) (( (ptr) formal←c0972)+4) ), (* (( (ptr) formal←c0972)+6)
), (* (( (ptr) formal←c0972)+7) ), (* (( (ptr) formal←c0972)+8) ), (* (( (ptr) formal←c0972)+9) )
, (* (( (ptr) formal←c0972)+10) ));
(* (( (ptr) formal←c0972)+12) ) = var←c53144.f1;
(* (( (ptr) formal←c0972)+11) ) = var←c53144.f0;
};
}
else {
SOURCE(13150, 5)
(void) XR←RaiseUnnamedError();
};
};
};
}
else {
SOURCE(13166, 13)
(* (( (ptr) formal←c0972)+11) ) = 0;
SOURCE(13181, 9)
(* (( (ptr) formal←c0972)+12) ) = 0;
};
};
SOURCE(13195, 39)
{
word pd88;
pd88 = (* (( (ptr) (* (( (ptr) gf←c0971)+202)/* var←c51480 */ ))+14) );
(void) ( *( (fPt) ((* (ptr) pd88 ))))((* (( (ptr) gf←c0971)+85) ), (* (( (ptr) gf←c0971)+84) ), pd88);
};
return(0);
}
static void MultiFacesPreferred←P1020(formal←c0313, testPoint←v11056, t←v11084, alignBag←v11112, sceneBag←v11140, ggData←v11168)
word formal←c0313;
W2 testPoint←v11056;
word t←v11084;
word alignBag←v11112;
word sceneBag←v11140;
word ggData←v11168;
{
register ptr gf←c59704 = (ptr) &globalframe;
word nearVEF←v11212;
word count←v11240;
word bestCurves←v17340 = 0;
word bestPoints←v17368 = 0;
word bestFaces←v17396 = 0;
word faceCount←v17424;
word curveCount←v17452;
word pointCount←v17480;
/* MultiFacesPreferred: */
SOURCE(13240, 1030)
SOURCE(13240, 1030)
nearVEF←v11212 = 0;
SOURCE(13516, 92)
{
word tc89;
word pd90;
word pd91;
pd90 = (* (( (ptr) (* (( (ptr) gf←c59704)+203)/* var←c53176 */ ))+19) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd90 ))))(alignBag←v11112, pd90))) {
pd91 = (* (( (ptr) (* (( (ptr) gf←c59704)+203)/* var←c53176 */ ))+7) );
tc89 = (word) (0 != (word) ( *( (fPt) ((* (ptr) pd91 ))))(sceneBag←v11140, pd91));
}
else {
tc89 = (word) 0;
};
if (tc89) {
SOURCE(13594, 14)
nearVEF←v11212 = 0;
count←v11240 = 0;
goto lab←L100046;
};
};
SOURCE(13611, 90)
{
W2 var←c53208;
(void) FacesInNeighborhoodPlus←P1440((word) &var←c53208, alignBag←v11112, sceneBag←v11140, testPoint←v11056, ggData←v11168, t←v11084)
;
faceCount←v17424 = var←c53208.f1;
bestFaces←v17396 = var←c53208.f0;
};
SOURCE(13703, 35)
(void) SortByOverlap←P2160(bestFaces←v17396, faceCount←v17424);
SOURCE(13741, 96)
{
W2 var←c53240;
(void) CurvesInNeighborhoodPlus←P1380((word) &var←c53240, alignBag←v11112, sceneBag←v11140, testPoint←v11056, ggData←v11168, t←v11084
, (* (ptr) &fc58 ));
curveCount←v17452 = var←c53240.f1;
bestCurves←v17340 = var←c53240.f0;
};
SOURCE(13840, 123)
{
W2 var←c53272;
(void) VertsInNeighborhoodPlus←P1200((word) &var←c53272, bestCurves←v17340, curveCount←v17452, alignBag←v11112, sceneBag←v11140, testPoint←v11056
, t←v11084, ggData←v11168, 0);
pointCount←v17480 = var←c53272.f1;
bestPoints←v17368 = var←c53272.f0;
};
SOURCE(13965, 34)
(void) SortPoints←P1980(bestPoints←v17368, pointCount←v17480);
SOURCE(14002, 49)
{
word x92;
count←v11240 = (x92 = (* (( (ptr) gf←c59704)+4)/* MaxFeatures←v5240 */ ),
MIN( (unsigned) , (pointCount←v17480 + curveCount←v17452), x92));
};
SOURCE(14053, 47)
{
word var←c53304;
word var←c53336;
word var←c53368;
var←c53304 = BCK(count←v11240, 67108863);
var←c53336 = ((word) var←c53304 << 2);
var←c53368 = XR←NewObject((4 + var←c53336), (* (( (ptr) gf←c59704)+59) ));
(* (ptr) var←c53368 ) = var←c53304;
nearVEF←v11212 = var←c53368;
};
SOURCE(14102, 84)
(void) MergePointsAndCurves←P1860(bestPoints←v17368, pointCount←v17480, bestCurves←v17340, curveCount←v17452, nearVEF←v11212, count←v11240)
;
SOURCE(14188, 82)
{
W2 var←c53400;
(void) MergeByOverlapAndDistance←P1920((word) &var←c53400, bestFaces←v17396, faceCount←v17424, nearVEF←v11212, count←v11240)
;
count←v11240 = var←c53400.f1;
nearVEF←v11212 = var←c53400.f0;
};
/* removed tail goto */
lab←L100046: ;
(* (ptr) formal←c0313 ) = nearVEF←v11212;
(* (( (ptr) formal←c0313)+1) ) = count←v11240;
return;
}
static void MultiLinesPreferred←P1080(formal←c0332, testPoint←v11300, t←v11328, alignBag←v11356, sceneBag←v11384, ggData←v11412)
word formal←c0332;
W2 testPoint←v11300;
word t←v11328;
word alignBag←v11356;
word sceneBag←v11384;
word ggData←v11412;
{
register ptr gf←c59736 = (ptr) &globalframe;
word nearVEF←v11456;
word count←v11484;
word bestCurves←v17524 = 0;
word bestPoints←v17552 = 0;
word pointCount←v17580;
word curveCount←v17608;
/* MultiLinesPreferred: */
SOURCE(14276, 795)
SOURCE(14276, 795)
nearVEF←v11456 = 0;
SOURCE(14531, 92)
{
word tc93;
word pd94;
word pd95;
pd94 = (* (( (ptr) (* (( (ptr) gf←c59736)+203)/* var←c53176 */ ))+19) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd94 ))))(alignBag←v11356, pd94))) {
pd95 = (* (( (ptr) (* (( (ptr) gf←c59736)+203)/* var←c53176 */ ))+7) );
tc93 = (word) (0 != (word) ( *( (fPt) ((* (ptr) pd95 ))))(sceneBag←v11384, pd95));
}
else {
tc93 = (word) 0;
};
if (tc93) {
SOURCE(14609, 14)
nearVEF←v11456 = 0;
count←v11484 = 0;
goto lab←L100047;
};
};
SOURCE(14626, 96)
{
W2 var←c53432;
(void) CurvesInNeighborhoodPlus←P1380((word) &var←c53432, alignBag←v11356, sceneBag←v11384, testPoint←v11300, ggData←v11412, t←v11328
, (* (ptr) &fc58 ));
curveCount←v17608 = var←c53432.f1;
bestCurves←v17524 = var←c53432.f0;
};
SOURCE(14725, 123)
{
W2 var←c53464;
(void) VertsInNeighborhoodPlus←P1200((word) &var←c53464, bestCurves←v17524, curveCount←v17608, alignBag←v11356, sceneBag←v11384, testPoint←v11300
, t←v11328, ggData←v11412, 0);
pointCount←v17580 = var←c53464.f1;
bestPoints←v17552 = var←c53464.f0;
};
SOURCE(14850, 34)
(void) SortPoints←P1980(bestPoints←v17552, pointCount←v17580);
SOURCE(14887, 49)
{
word x96;
count←v11484 = (x96 = (* (( (ptr) gf←c59736)+4)/* MaxFeatures←v5240 */ ),
MIN( (unsigned) , (pointCount←v17580 + curveCount←v17608), x96));
};
SOURCE(14938, 47)
{
word var←c53496;
word var←c53528;
word var←c53560;
var←c53496 = BCK(count←v11484, 67108863);
var←c53528 = ((word) var←c53496 << 2);
var←c53560 = XR←NewObject((4 + var←c53528), (* (( (ptr) gf←c59736)+59) ));
(* (ptr) var←c53560 ) = var←c53496;
nearVEF←v11456 = var←c53560;
};
SOURCE(14987, 84)
(void) MergePointsAndCurves←P1860(bestPoints←v17552, pointCount←v17580, bestCurves←v17524, curveCount←v17608, nearVEF←v11456, count←v11484)
;
/* removed tail goto */
lab←L100047: ;
(* (ptr) formal←c0332 ) = nearVEF←v11456;
(* (( (ptr) formal←c0332)+1) ) = count←v11484;
return;
}
static void MultiPointsPreferred←P1140(formal←c0356, testPoint←v11544, t←v11572, alignBag←v11600, sceneBag←v11628, ggData←v11656, intersections←v11684)
word formal←c0356;
W2 testPoint←v11544;
word t←v11572;
word alignBag←v11600;
word sceneBag←v11628;
word ggData←v11656;
word intersections←v11684;
{
register ptr gf←c59768 = (ptr) &globalframe;
word nearVEF←v11728;
word count←v11756;
word bestCurves←v17652 = 0;
word bestPoints←v17680 = 0;
word pointCount←v17708;
word curveCount←v17736;
word innerR←v17764;
/* MultiPointsPreferred: */
SOURCE(15077, 1049)
SOURCE(15077, 1049)
nearVEF←v11728 = 0;
SOURCE(15361, 20)
{
word x97;
word x99;
*(float*)&innerR←v17764 = (
x97 = t←v11572, *(float*)&x97
) / (
x99 = (* (ptr) &fc98 ), *(float*)&x99
);
};
SOURCE(15383, 92)
{
word tc100;
word pd101;
word pd102;
pd101 = (* (( (ptr) (* (( (ptr) gf←c59768)+203)/* var←c53176 */ ))+19) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd101 ))))(alignBag←v11600, pd101))) {
pd102 = (* (( (ptr) (* (( (ptr) gf←c59768)+203)/* var←c53176 */ ))+7) );
tc100 = (word) (0 != (word) ( *( (fPt) ((* (ptr) pd102 ))))(sceneBag←v11628, pd102));
}
else {
tc100 = (word) 0;
};
if (tc100) {
SOURCE(15461, 14)
nearVEF←v11728 = 0;
count←v11756 = 0;
goto lab←L100048;
};
};
SOURCE(15478, 101)
{
W2 var←c53592;
(void) CurvesInNeighborhoodPlus←P1380((word) &var←c53592, alignBag←v11600, sceneBag←v11628, testPoint←v11544, ggData←v11656, t←v11572
, innerR←v17764);
curveCount←v17736 = var←c53592.f1;
bestCurves←v17652 = var←c53592.f0;
};
SOURCE(15582, 131)
{
W2 var←c53624;
(void) VertsInNeighborhoodPlus←P1200((word) &var←c53624, bestCurves←v17652, curveCount←v17736, alignBag←v11600, sceneBag←v11628, testPoint←v11544
, t←v11572, ggData←v11656, intersections←v11684);
pointCount←v17708 = var←c53624.f1;
bestPoints←v17680 = var←c53624.f0;
};
SOURCE(15715, 34)
(void) SortPoints←P1980(bestPoints←v17680, pointCount←v17708);
SOURCE(15752, 374)
{
word tc103;
word limit104;
word x105;
word x106;
if ((pointCount←v17708 > 0)) {
tc103 = (word) ((
x105 = (* (ptr) (* ((( (ptr) bestPoints←v17680)+10)+(
limit104 = (* (( (ptr) bestPoints←v17680)+9) ),
BCK(0, limit104)
)) ) ), *(float*)&x105
) < (
x106 = innerR←v17764, *(float*)&x106
));
}
else {
tc103 = (word) 0;
};
if (tc103) {
SOURCE(15809, 18)
count←v11756 = pointCount←v17708;
SOURCE(15829, 47)
{
word var←c53656;
word var←c53688;
word var←c53720;
var←c53656 = BCK(count←v11756, 67108863);
var←c53688 = ((word) var←c53656 << 2);
var←c53720 = XR←NewObject((4 + var←c53688), (* (( (ptr) gf←c59768)+59) ));
(* (ptr) var←c53720 ) = var←c53656;
nearVEF←v11728 = var←c53720;
};
SOURCE(15878, 53)
(void) NearPointsFromPoints←P1800(bestPoints←v17680, pointCount←v17708, nearVEF←v11728);
}
else {
SOURCE(15942, 49)
{
word x107;
count←v11756 = (x107 = (* (( (ptr) gf←c59768)+4)/* MaxFeatures←v5240 */ ),
MIN( (unsigned) , (pointCount←v17708 + curveCount←v17736), x107));
};
SOURCE(15993, 47)
{
word var←c53752;
word var←c53784;
word var←c53816;
var←c53752 = BCK(count←v11756, 67108863);
var←c53784 = ((word) var←c53752 << 2);
var←c53816 = XR←NewObject((4 + var←c53784), (* (( (ptr) gf←c59768)+59) ));
(* (ptr) var←c53816 ) = var←c53752;
nearVEF←v11728 = var←c53816;
};
SOURCE(16042, 84)
(void) MergePointsAndCurves←P1860(bestPoints←v17680, pointCount←v17708, bestCurves←v17652, curveCount←v17736, nearVEF←v11728, count←v11756)
;
};
};
/* removed tail goto */
lab←L100048: ;
(* (ptr) formal←c0356 ) = nearVEF←v11728;
(* (( (ptr) formal←c0356)+1) ) = count←v11756;
return;
}
static void VertsInNeighborhoodPlus←P1200(formal←c0378, bestCurves←v11816, curveCount←v11844, alignBag←v11872, sceneBag←v11900, formal←c01067, t←v11956, formal←c01068, intersections←v12012)
word formal←c0378;
word bestCurves←v11816;
word curveCount←v11844;
word alignBag←v11872;
word sceneBag←v11900;
W2 formal←c01067;
word t←v11956;
word formal←c01068;
word intersections←v12012;
{
W18 var←c59800;
/* declaration of q←v11928 skipped */
/* declaration of ggData←v11984 skipped */
register ptr gf←c59832 = (ptr) &globalframe;
/* declaration of h←v12056 skipped */
word pointCount←v12084;
/* declaration of var←c53848 skipped */
/* declaration of var←c53880 skipped */
/* declaration of var←c53912 skipped */
/* declaration of thisPoint←v17808 skipped */
/* declaration of sliceD←v17920 skipped */
word featureData←v17948 = 0;
/* declaration of success←v17976 skipped */
/* declaration of dTol←v18004 skipped */
word midpoints←v18032;
(* (W2Pt) (( (ptr) &var←c59800)+4)/* q←v11928 */ ) = formal←c01067;
(* (( (ptr) &var←c59800)+6)/* ggData←v11984 */ ) = formal←c01068;
/* VertsInNeighborhoodPlus: */
SOURCE(16135, 2326)
{
word tmpAddr108;
tmpAddr108 = (word) (( (ptr) &var←c59800)+8)/* var←c53848 */ ;
(* (ptr) tmpAddr108 ) = ( ((word) (fPt) DoForSliceTrigger←P4068) );
(* (( (ptr) tmpAddr108) + 1) ) = 1;
};
{
word tmpAddr109;
tmpAddr109 = (word) (( (ptr) &var←c59800)+10)/* var←c53880 */ ;
(* (ptr) tmpAddr109 ) = ( ((word) (fPt) ProcessSlice←P4008) );
(* (( (ptr) tmpAddr109) + 1) ) = 1;
};
{
word tmpAddr110;
tmpAddr110 = (word) (( (ptr) &var←c59800)+12)/* var←c53912 */ ;
(* (ptr) tmpAddr110 ) = ( ((word) (fPt) ProcessPoint←P3948) );
(* (( (ptr) tmpAddr110) + 1) ) = 1;
};
SOURCE(16135, 2326)
(* (( (ptr) &var←c59800)+7)/* h←v12056 */ ) = 0;
SOURCE(16358, 20)
(* (( (ptr) &var←c59800)+14)/* thisPoint←v17808 */ ) = 0;
SOURCE(17621, 23)
(* (( (ptr) &var←c59800)+15)/* sliceD←v17920 */ ) = 0;
SOURCE(17672, 21)
(* (( (ptr) &var←c59800)+16)/* success←v17976 */ ) = 0;
SOURCE(17695, 14)
(* (( (ptr) &var←c59800)+17)/* dTol←v18004 */ ) = t←v11956;
SOURCE(17711, 46)
{
word pd111;
pd111 = (* (( (ptr) (* (( (ptr) gf←c59832)+201)/* var←c51448 */ ))+56) );
midpoints←v18032 = (word) ( *( (fPt) ((* (ptr) pd111 ))))((* ((( (ptr) &var←c59800)+6)/* ggData←v11984 */ ) ), pd111);
};
SOURCE(17760, 29)
(* (( (ptr) &var←c59800)+14)/* thisPoint←v17808 */ ) = XR←NewObject(36, (* (( (ptr) gf←c59832)+60) ));
SOURCE(17791, 33)
(* (( (ptr) &var←c59800)+7)/* h←v12056 */ ) = (word) BestPointsFromPool←P1620((* (( (ptr) &var←c59800)+6)/* ggData←v11984 */ ), t←v11956)
;
SOURCE(17827, 210)
if ((0 != intersections←v12012)) {
SOURCE(17851, 85)
(* (( (ptr) &var←c59800)+17)/* dTol←v18004 */ ) = (word) FindIntersections←P1260(bestCurves←v11816, curveCount←v11844, (* (
( (ptr) &var←c59800)+14)/* thisPoint←v17808 */ ), (* (W2Pt) (( (ptr) &var←c59800)+4)/* q←v11928 */ ), (* (( (ptr) &var←c59800)+17)
/* dTol←v18004 */ ), (* (( (ptr) &var←c59800)+7)/* h←v12056 */ )
, (* (( (ptr) (* (( (ptr) &var←c59800)+6)/* ggData←v11984 */ ))+11) ));
SOURCE(17938, 99)
if ((0 != midpoints←v18032)) {
SOURCE(17956, 81)
(* (( (ptr) &var←c59800)+17)/* dTol←v18004 */ ) = (word) FindMidpoints←P1320(bestCurves←v11816, curveCount←v11844, (* (( (ptr) &var←c59800)+14)
/* thisPoint←v17808 */ ), (* (W2Pt) (( (ptr) &var←c59800)+4)/* q←v11928 */ ), (* (( (ptr) &var←c59800)+17)/* dTol←v18004 */ ), (* (
( (ptr) &var←c59800)+7)/* h←v12056 */ )
, (* (( (ptr) (* (( (ptr) &var←c59800)+6)/* ggData←v11984 */ ))+11) ));
};
};
SOURCE(18043, 54)
{
word pd112;
pd112 = (* (( (ptr) (* (( (ptr) gf←c59832)+203)/* var←c53176 */ ))+9) );
(void) ( *( (fPt) ((* (ptr) pd112 ))))(sceneBag←v11900, (word) (( (bPt) &var←c59800)+32)/* var←c53848 */ , pd112);
};
SOURCE(18099, 29)
featureData←v17948 = (* (( (ptr) alignBag←v11872)+4) );
SOURCE(18130, 193)
if ((featureData←v17948 != 0)) {
SOURCE(18156, 169)
{
word anchor←v18280;
SOURCE(18158, 41)
anchor←v18280 = XR←Narrow((* (( (ptr) featureData←v17948)+1) ), (* (( (ptr) gf←c59832)+62) ));
SOURCE(18201, 35)
{
word pd113;
pd113 = (* (( (ptr) (* (( (ptr) gf←c59832)+204)/* var←c53976 */ ))+7) );
if ((0 == (word) ( *( (fPt) ((* (ptr) pd113 ))))(anchor←v18280, pd113))) {
SOURCE(18236, 5)
(void) XR←RaiseUnnamedError();
};
};
SOURCE(18243, 42)
{
word pd114;
pd114 = (* (( (ptr) (* (( (ptr) gf←c59832)+204)/* var←c53976 */ ))+15) );
(void) ( *( (fPt) ((* (ptr) pd114 ))))((word) (( (bPt) (* (( (ptr) &var←c59800)+14)/* thisPoint←v17808 */ ))+4), anchor←v18280, pd114)
;
};
SOURCE(18287, 36)
(void) ProcessPoint←P3948((* (( (ptr) &var←c59800)+14)/* thisPoint←v17808 */ ), featureData←v17948, (word) (( (bPt) &var←c59800)+48)
/* var←c53912 */ );
};
};
SOURCE(18328, 19)
pointCount←v12084 = (* (ptr) (* (( (ptr) &var←c59800)+7)/* h←v12056 */ ) );
SOURCE(18349, 112)
if ((0 != (* (( (ptr) (* (( (ptr) &var←c59800)+7)/* h←v12056 */ ))+8) ))) {
SOURCE(18370, 45)
{
word pd115;
pd115 = (* (( (ptr) (* (( (ptr) gf←c59832)+202)/* var←c51480 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd115 ))))((* (( (ptr) gf←c59832)+83) ), (* (( (ptr) gf←c59832)+84) ), pd115);
};
SOURCE(18417, 44)
{
word pd116;
pd116 = (* (( (ptr) (* (( (ptr) gf←c59832)+202)/* var←c51480 */ ))+14) );
(void) ( *( (fPt) ((* (ptr) pd116 ))))((* (( (ptr) gf←c59832)+83) ), (* (( (ptr) gf←c59832)+84) ), pd116);
};
};
/* removed tail goto */
(* (ptr) formal←c0378 ) = (* (( (ptr) &var←c59800)+7)/* h←v12056 */ );
(* (( (ptr) formal←c0378)+1) ) = pointCount←v12084;
return;
}
static void ProcessPoint←P3948(thisPoint←v18108, featureData←v18136, formal←c59896)
word thisPoint←v18108;
word featureData←v18136;
word formal←c59896;
{
register ptr gf←c59864 = (ptr) &globalframe;
word dSquared←v18324;
word dTolSquared←v18352;
formal←c59896 = (formal←c59896 - 48);
/* ProcessPoint: */
SOURCE(16380, 564)
SOURCE(16491, 29)
{
word x117;
word x118;
*(float*)&dTolSquared←v18352 = (
x117 = (* (( (ptr) formal←c59896)+17) ), *(float*)&x117
) * (
x118 = (* (( (ptr) formal←c59896)+17) ), *(float*)&x118
);
};
SOURCE(16522, 56)
{
word pd119;
pd119 = (* (( (ptr) (* (( (ptr) gf←c59864)+205)/* var←c54008 */ ))+21) );
dSquared←v18324 = (word) ( *( (fPt) ((* (ptr) pd119 ))))((* (W2Pt) (( (ptr) thisPoint←v18108)+1) ), (* (W2Pt) (( (ptr) formal←c59896)+4)
), pd119);
};
SOURCE(16580, 23)
(* (( (ptr) thisPoint←v18108)+6) ) = 0;
SOURCE(16605, 339)
{
word x120;
word x121;
if (((
x120 = dSquared←v18324, *(float*)&x120
) < (
x121 = dTolSquared←v18352, *(float*)&x121
))) {
SOURCE(16638, 39)
{
word pd122;
pd122 = (* (( (ptr) (* (( (ptr) gf←c59864)+206)/* var←c54040 */ ))+9) );
(* (ptr) thisPoint←v18108 ) = (word) ( *( (fPt) ((* (ptr) pd122 ))))(dSquared←v18324, pd122);
};
SOURCE(16679, 63)
{
word var←c54072;
var←c54072 = XR←Narrow((* (( (ptr) featureData←v18136)+1) ), (* (( (ptr) gf←c59864)+62) ));
{
word pd123;
pd123 = (* (( (ptr) (* (( (ptr) gf←c59864)+204)/* var←c53976 */ ))+16) );
(void) ( *( (fPt) ((* (ptr) pd123 ))))((word) (( (bPt) thisPoint←v18108)+12), var←c54072, pd123);
};
};
SOURCE(16758, 83)
{
word pd124;
word x125;
word x126;
pd124 = (* (( (ptr) (* (( (ptr) gf←c59864)+205)/* var←c54008 */ ))+20) );
if (((
x125 = (word) ( *( (fPt) ((* (ptr) pd124 ))))((* (W2Pt) ((( (ptr) thisPoint←v18108)+3)) ), pd124), *(float*)&x125
) == (
x126 = (* (ptr) &fc58 ), *(float*)&x126
))) {
SOURCE(16815, 26)
(* (( (ptr) thisPoint←v18108)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisPoint←v18108)+4) ) = (* (ptr) &fc59 );
};
};
SOURCE(16843, 35)
(* (( (ptr) thisPoint←v18108)+5) ) = featureData←v18136;
SOURCE(16880, 23)
(* (( (ptr) thisPoint←v18108)+8) ) = (word) -1;
SOURCE(16905, 39)
(* (( (ptr) formal←c59896)+17) ) = (word) AddNeighbor←P1680(thisPoint←v18108, (* (( (ptr) formal←c59896)+7) ), 0);
};
};
}
static void ProcessSlice←P4008(sliceD←v18196, thisPoint←v18224, featureData←v18252, formal←c59960)
word sliceD←v18196;
word thisPoint←v18224;
word featureData←v18252;
word formal←c59960;
{
register ptr gf←c59928 = (ptr) &globalframe;
formal←c59960 = (formal←c59960 - 40);
/* ProcessSlice: */
SOURCE(16952, 516)
SOURCE(17049, 130)
{
W7 var←c54104;
{
word pd127;
pd127 = (* (( (ptr) (* (ptr) (* (ptr) sliceD←v18196 ) ))+38) );
(void) ( *( (fPt) ((* (ptr) pd127 ))))((word) &var←c54104, sliceD←v18196, (* (W2Pt) (( (ptr) formal←c59960)+4) ), (* (( (ptr) formal←c59960)+17)
), pd127);
};
(* (( (ptr) formal←c59960)+16) ) = var←c54104.f6;
(* (( (ptr) thisPoint←v18224)+6) ) = var←c54104.f5;
(* (W2Pt) (( (ptr) thisPoint←v18224)+3) ) = (* (W2Pt) (( (ptr) &var←c54104)+3) );
(* (ptr) thisPoint←v18224 ) = var←c54104.f2;
(* (W2Pt) (( (ptr) thisPoint←v18224)+1) ) = (* (W2Pt) &var←c54104 );
};
SOURCE(17181, 287)
if ((0 != (* (( (ptr) formal←c59960)+16) ))) {
SOURCE(17199, 269)
{
word x128;
word x129;
if (((
x128 = (* (ptr) thisPoint←v18224 ), *(float*)&x128
) < (
x129 = (* (( (ptr) formal←c59960)+17) ), *(float*)&x129
))) {
SOURCE(17231, 35)
(* (( (ptr) thisPoint←v18224)+5) ) = featureData←v18252;
SOURCE(17268, 86)
{
word pd130;
word x131;
word x132;
pd130 = (* (( (ptr) (* (( (ptr) gf←c59928)+205)/* var←c54008 */ ))+20) );
if (((
x131 = (word) ( *( (fPt) ((* (ptr) pd130 ))))((* (W2Pt) ((( (ptr) thisPoint←v18224)+3)) ), pd130), *(float*)&x131
) == (
x132 = (* (ptr) &fc58 ), *(float*)&x132
))) {
SOURCE(17328, 26)
(* (( (ptr) thisPoint←v18224)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisPoint←v18224)+4) ) = (* (ptr) &fc59 );
};
};
SOURCE(17359, 68)
{
word pd133;
pd133 = (* (( (ptr) (* (( (ptr) gf←c59928)+207)/* var←c54136 */ ))+21) );
(* (( (ptr) thisPoint←v18224)+8) ) = (word) ( *( (fPt) ((* (ptr) pd133 ))))((* (( (ptr) (* (( (ptr) formal←c59960)+6) ))+11)
), (* (ptr) sliceD←v18196 ), pd133);
};
SOURCE(17429, 39)
(* (( (ptr) formal←c59960)+17) ) = (word) AddNeighbor←P1680(thisPoint←v18224, (* (( (ptr) formal←c59960)+7) ), 0);
};
};
};
}
static word DoForSliceTrigger←P4068(feature←v35032, formal←c60024)
word feature←v35032;
word formal←c60024;
{
register ptr gf←c59992 = (ptr) &globalframe;
word done←v35076;
formal←c60024 = (formal←c60024 - 32);
/* DoForSliceTrigger: */
SOURCE(17479, 136)
SOURCE(17479, 136)
done←v35076 = 0;
SOURCE(17526, 47)
(* (( (ptr) formal←c60024)+15) ) = XR←Narrow((* (( (ptr) feature←v35032)+1) ), (* (( (ptr) gf←c59992)+64) ));
SOURCE(17575, 40)
(void) ProcessSlice←P4008((* (( (ptr) formal←c60024)+15) ), (* (( (ptr) formal←c60024)+14) ), feature←v35032, (word) (( (bPt) formal←c60024)+40)
);
SOURCE(17479, 136)
return(done←v35076);
}
static word FindIntersections←P1260(bestCurves←v12144, curveCount←v12172, thisPoint←v12200, q←v12228, tolerance←v12256, h←v12284, scene←v12312)
word bestCurves←v12144;
word curveCount←v12172;
word thisPoint←v12200;
W2 q←v12228;
word tolerance←v12256;
word h←v12284;
word scene←v12312;
{
register ptr gf←c60056 = (ptr) &globalframe;
word dTol←v12356;
word curveI←v18396 = 0;
word curveJ←v18424 = 0;
word theseIPoints←v18452 = 0;
word thisTangency←v18480 = 0;
word tangentList←v18508 = 0;
word success←v18536 = 0;
/* FindIntersections: */
SOURCE(18504, 2180)
SOURCE(18793, 16)
dTol←v12356 = tolerance←v12256;
SOURCE(18811, 1873)
{
register word i←v18748 = 0;
register word noName←c54168;
noName←c54168 = curveCount←v12172;
if ((i←v18748 >= noName←c54168)) {
goto lab←L100050;
};
lab←L100053: ;
SOURCE(18844, 22)
{
word limit134;
curveI←v18396 = (* ((( (ptr) bestCurves←v12144)+10)+(
limit134 = (* (( (ptr) bestCurves←v12144)+9) ),
BCK(i←v18748, limit134)
)) );
};
SOURCE(18868, 27)
{
word x135;
word x136;
if (((
x135 = (* (ptr) curveI←v18396 ), *(float*)&x135
) > (
x136 = dTol←v12356, *(float*)&x136
))) {
SOURCE(18895, 4)
goto lab←L100051;
};
};
SOURCE(18958, 1726)
{
register word j←v18792 = 0;
if ((j←v18792 > i←v18748)) {
goto lab←L100054;
};
lab←L100057: ;
SOURCE(18982, 22)
{
word limit137;
curveJ←v18424 = (* ((( (ptr) bestCurves←v12144)+10)+(
limit137 = (* (( (ptr) bestCurves←v12144)+9) ),
BCK(j←v18792, limit137)
)) );
};
SOURCE(19006, 27)
{
word x138;
word x139;
if (((
x138 = (* (ptr) curveJ←v18424 ), *(float*)&x138
) > (
x139 = dTol←v12356, *(float*)&x139
))) {
SOURCE(19033, 4)
goto lab←L100056;
};
};
SOURCE(19093, 62)
{
W2 var←c54200;
(void) CurveMeetsCurve←P2340((word) &var←c54200, curveI←v18396, curveJ←v18424);
thisTangency←v18480 = var←c54200.f1;
theseIPoints←v18452 = var←c54200.f0;
};
SOURCE(19157, 26)
tangentList←v18508 = thisTangency←v18480;
SOURCE(19185, 1499)
{
register word list←v18836;
list←v18836 = theseIPoints←v18452;
lab←L100061: ;
if ((list←v18836 != 0)) {
}
else {
goto lab←L100058;
};
SOURCE(19255, 28)
(* (W2Pt) (( (ptr) thisPoint←v12200)+1) ) = (* (W2Pt) list←v18836 );
SOURCE(19285, 55)
{
word pd140;
pd140 = (* (( (ptr) (* (( (ptr) gf←c60056)+205)/* var←c54008 */ ))+19) );
(* (ptr) thisPoint←v12200 ) = (word) ( *( (fPt) ((* (ptr) pd140 ))))((* (W2Pt) (( (ptr) thisPoint←v12200)+1) ), q←v12228, pd140)
;
};
SOURCE(19342, 32)
{
word x141;
word x142;
success←v18536 = (unsigned) ((
x141 = (* (ptr) thisPoint←v12200 ), *(float*)&x141
) <= (
x142 = dTol←v12356, *(float*)&x142
));
};
SOURCE(19376, 1273)
if ((0 != success←v18536)) {
SOURCE(19392, 1259)
{
word featureData←v18964;
word alignmentPoint←v18992;
SOURCE(19394, 46)
featureData←v18964 = XR←NewObject(8, (* (( (ptr) gf←c60056)+65) ));
SOURCE(19442, 167)
alignmentPoint←v18992 = XR←NewObject(20, (* (( (ptr) gf←c60056)+66) ));
(* (W2Pt) alignmentPoint←v18992 ) = (* (W2Pt) (( (ptr) thisPoint←v12200)+1) );
(* (( (ptr) alignmentPoint←v18992)+2) ) = (* (ptr) tangentList←v18508 );
(* (( (ptr) alignmentPoint←v18992)+3) ) = (* (( (ptr) curveI←v18396)+5) );
(* (( (ptr) alignmentPoint←v18992)+4) ) = (* (( (ptr) curveJ←v18424)+5) );
SOURCE(19611, 36)
(* (ptr) featureData←v18964 ) = 6;
SOURCE(19649, 34)
(* (( (ptr) featureData←v18964)+1) ) = alignmentPoint←v18992;
SOURCE(19685, 35)
(* (( (ptr) thisPoint←v12200)+5) ) = featureData←v18964;
SOURCE(19722, 23)
(* (( (ptr) thisPoint←v12200)+8) ) = (word) -1;
SOURCE(19747, 776)
if (((* (ptr) (* (( (ptr) curveI←v18396)+5) ) ) == 0)) {
SOURCE(19787, 317)
{
word sliceD←v19036;
word slice←v19064;
SOURCE(19789, 58)
sliceD←v19036 = XR←Narrow((* (( (ptr) (* (( (ptr) curveI←v18396)+5) ))+1) ), (* (( (ptr) gf←c60056)+64) ));
SOURCE(19849, 27)
slice←v19064 = (* (ptr) sliceD←v19036 );
SOURCE(19878, 54)
{
word pd143;
pd143 = (* (( (ptr) (* (( (ptr) gf←c60056)+207)/* var←c54136 */ ))+21) );
(* (( (ptr) thisPoint←v12200)+8) ) = (word) ( *( (fPt) ((* (ptr) pd143 ))))(scene←v12312, slice←v19064, pd143);
};
SOURCE(19934, 34)
(* (( (ptr) thisPoint←v12200)+6) ) = (* (( (ptr) curveI←v18396)+6) );
SOURCE(19970, 72)
{
W2 var←c54296;
W7 var←c0417;
{
/*1*/ word pd144;
/*1*/ pd144 = (* (( (ptr) (* (( (ptr) gf←c60056)+208)/* var←c54328 */ ))+47) );
/*1*/ (void) ( *( (fPt) ((* (ptr) pd144 ))))((word) &var←c0417, sliceD←v19036, q←v12228, dTol←v12356, pd144);
/*1*/ };
var←c54296 = (* (W2Pt) (( (ptr) &var←c0417)+3) );
(* (W2Pt) (( (ptr) thisPoint←v12200)+3) ) = var←c54296;
};
};
}
else {
SOURCE(20111, 412)
if (((* (ptr) (* (( (ptr) curveJ←v18424)+5) ) ) == 0)) {
SOURCE(20151, 342)
{
word sliceD←v19108;
word slice←v19136;
SOURCE(20153, 58)
sliceD←v19108 = XR←Narrow((* (( (ptr) (* (( (ptr) curveJ←v18424)+5) ))+1) ), (* (( (ptr) gf←c60056)+64) ));
SOURCE(20213, 27)
slice←v19136 = (* (ptr) sliceD←v19108 );
SOURCE(20242, 79)
{
/*1*/ word var←c54360;
/*1*/ {
/*1*/ word x145;
/*1*/ word pd146;
/*1*/ word x147;
/*1*/ pd146 = (* (( (ptr) (* (( (ptr) gf←c60056)+207)/* var←c54136 */ ))+21) );
/*1*/ var←c54360 = (x145 = (* (( (ptr) thisPoint←v12200)+8) ),
/*1*/ x147 = (word) ( *( (fPt) ((* (ptr) pd146 ))))(scene←v12312, slice←v19136, pd146),
/*1*/ MIN((int)(word), x145, x147));
/*1*/ };
/*1*/ (* (( (ptr) thisPoint←v12200)+8) ) = var←c54360;
/*1*/ };
SOURCE(20323, 34)
(* (( (ptr) thisPoint←v12200)+6) ) = (* (( (ptr) curveJ←v18424)+6) );
SOURCE(20359, 72)
{
/*1*/ W2 var←c54392;
/*1*/ W7 var←c0422;
/*1*/ {
/*1*/ word pd148;
/*1*/ pd148 = (* (( (ptr) (* (( (ptr) gf←c60056)+208)/* var←c54328 */ ))+47) );
/*1*/ (void) ( *( (fPt) ((* (ptr) pd148 ))))((word) &var←c0422, sliceD←v19108, q←v12228, dTol←v12356, pd148);
/*1*/ };
/*1*/ var←c54392 = (* (W2Pt) (( (ptr) &var←c0422)+3) );
/*1*/ (* (W2Pt) (( (ptr) thisPoint←v12200)+3) ) = var←c54392;
/*1*/ };
};
}
else {
SOURCE(20500, 23)
(* (( (ptr) thisPoint←v12200)+6) ) = 0;
};
};
SOURCE(20525, 83)
{
word pd149;
word x150;
word x151;
pd149 = (* (( (ptr) (* (( (ptr) gf←c60056)+205)/* var←c54008 */ ))+20) );
if (((
x150 = (word) ( *( (fPt) ((* (ptr) pd149 ))))((* (W2Pt) ((( (ptr) thisPoint←v12200)+3)) ), pd149), *(float*)&x150
) == (
x151 = (* (ptr) &fc58 ), *(float*)&x151
))) {
SOURCE(20582, 26)
(* (( (ptr) thisPoint←v12200)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisPoint←v12200)+4) ) = (* (ptr) &fc59 );
};
};
SOURCE(20610, 39)
dTol←v12356 = (word) AddNeighbor←P1680(thisPoint←v12200, h←v12284, 0);
};
};
SOURCE(20654, 30)
tangentList←v18508 = (* (( (ptr) tangentList←v18508)+1) );
list←v18836 = (* (( (ptr) list←v18836)+2) );
goto lab←L100061;
lab←L100058: ;
};
lab←L100056: ;
if ((j←v18792 >= i←v18748)) {
goto lab←L100054;
};
j←v18792 = (j←v18792 + 1);
goto lab←L100057;
lab←L100054: ;
};
i←v18748 = (i←v18748 + 1);
if ((i←v18748 < noName←c54168)) {
goto lab←L100053;
};
lab←L100050: ;
lab←L100051: ;
};
SOURCE(18504, 2180)
return(dTol←v12356);
}
static word FindMidpoints←P1320(bestCurves←v12416, curveCount←v12444, thisPoint←v12472, q←v12500, tolerance←v12528, h←v12556, scene←v12584)
word bestCurves←v12416;
word curveCount←v12444;
word thisPoint←v12472;
W2 q←v12500;
word tolerance←v12528;
word h←v12556;
word scene←v12584;
{
register ptr gf←c60088 = (ptr) &globalframe;
word dTol←v12628;
word curve←v19180 = 0;
W2 midpoint←v19208;
word success←v19236 = 0;
/* FindMidpoints: */
SOURCE(20717, 1268)
SOURCE(20940, 16)
dTol←v12628 = tolerance←v12528;
SOURCE(20958, 1027)
{
register word i←v19280 = 0;
register word noName←c54424;
noName←c54424 = curveCount←v12444;
if ((i←v19280 >= noName←c54424)) {
goto lab←L100062;
};
lab←L100065: ;
SOURCE(20991, 21)
{
word limit152;
curve←v19180 = (* ((( (ptr) bestCurves←v12416)+10)+(
limit152 = (* (( (ptr) bestCurves←v12416)+9) ),
BCK(i←v19280, limit152)
)) );
};
SOURCE(21014, 37)
if (((* (ptr) (* (( (ptr) curve←v19180)+5) ) ) != 0)) {
SOURCE(21051, 4)
goto lab←L100064;
};
SOURCE(21057, 44)
{
W3 var←c54456;
(void) ComputeMidpoint←P2220((word) &var←c54456, curve←v19180);
success←v19236 = var←c54456.f2;
midpoint←v19208 = (* (W2Pt) &var←c54456 );
};
SOURCE(21103, 20)
if ((0 == success←v19236)) {
SOURCE(21123, 4)
goto lab←L100064;
};
SOURCE(21129, 26)
(* (W2Pt) (( (ptr) thisPoint←v12472)+1) ) = midpoint←v19208;
SOURCE(21157, 55)
{
word pd153;
pd153 = (* (( (ptr) (* (( (ptr) gf←c60088)+205)/* var←c54008 */ ))+19) );
(* (ptr) thisPoint←v12472 ) = (word) ( *( (fPt) ((* (ptr) pd153 ))))((* (W2Pt) (( (ptr) thisPoint←v12472)+1) ), q←v12500, pd153)
;
};
SOURCE(21214, 32)
{
word x154;
word x155;
success←v19236 = (unsigned) ((
x154 = (* (ptr) thisPoint←v12472 ), *(float*)&x154
) <= (
x155 = dTol←v12628, *(float*)&x155
));
};
SOURCE(21248, 737)
if ((0 != success←v19236)) {
SOURCE(21264, 723)
{
word sliceD←v19324;
word slice←v19352;
word featureData←v19380;
word alignmentPoint←v19408;
SOURCE(21266, 57)
sliceD←v19324 = XR←Narrow((* (( (ptr) (* (( (ptr) curve←v19180)+5) ))+1) ), (* (( (ptr) gf←c60088)+64) ));
SOURCE(21325, 27)
slice←v19352 = (* (ptr) sliceD←v19324 );
SOURCE(21354, 46)
featureData←v19380 = XR←NewObject(8, (* (( (ptr) gf←c60088)+65) ));
SOURCE(21402, 139)
alignmentPoint←v19408 = XR←NewObject(20, (* (( (ptr) gf←c60088)+66) ));
(* (W2Pt) alignmentPoint←v19408 ) = (* (W2Pt) (( (ptr) thisPoint←v12472)+1) );
(* (( (ptr) alignmentPoint←v19408)+3) ) = (* (( (ptr) curve←v19180)+5) );
SOURCE(21543, 27)
(* (ptr) featureData←v19380 ) = 7;
SOURCE(21572, 34)
(* (( (ptr) featureData←v19380)+1) ) = alignmentPoint←v19408;
SOURCE(21608, 35)
(* (( (ptr) thisPoint←v12472)+5) ) = featureData←v19380;
SOURCE(21645, 33)
(* (( (ptr) thisPoint←v12472)+6) ) = (* (( (ptr) curve←v19180)+6) );
SOURCE(21680, 72)
{
W2 var←c54552;
W7 var←c0443;
{
word pd156;
pd156 = (* (( (ptr) (* (( (ptr) gf←c60088)+208)/* var←c54328 */ ))+47) );
(void) ( *( (fPt) ((* (ptr) pd156 ))))((word) &var←c0443, sliceD←v19324, q←v12500, dTol←v12628, pd156);
};
var←c54552 = (* (W2Pt) (( (ptr) &var←c0443)+3) );
(* (W2Pt) (( (ptr) thisPoint←v12472)+3) ) = var←c54552;
};
SOURCE(21805, 83)
{
word pd157;
word x158;
word x159;
pd157 = (* (( (ptr) (* (( (ptr) gf←c60088)+205)/* var←c54008 */ ))+20) );
if (((
x158 = (word) ( *( (fPt) ((* (ptr) pd157 ))))((* (W2Pt) ((( (ptr) thisPoint←v12472)+3)) ), pd157), *(float*)&x158
) == (
x159 = (* (ptr) &fc58 ), *(float*)&x159
))) {
SOURCE(21862, 26)
(* (( (ptr) thisPoint←v12472)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisPoint←v12472)+4) ) = (* (ptr) &fc59 );
};
};
SOURCE(21890, 54)
{
word pd160;
pd160 = (* (( (ptr) (* (( (ptr) gf←c60088)+207)/* var←c54136 */ ))+21) );
(* (( (ptr) thisPoint←v12472)+8) ) = (word) ( *( (fPt) ((* (ptr) pd160 ))))(scene←v12584, slice←v19352, pd160);
};
SOURCE(21946, 39)
dTol←v12628 = (word) AddNeighbor←P1680(thisPoint←v12472, h←v12556, 0);
};
};
lab←L100064: ;
i←v19280 = (i←v19280 + 1);
if ((i←v19280 < noName←c54424)) {
goto lab←L100065;
};
lab←L100062: ;
};
SOURCE(20717, 1268)
return(dTol←v12628);
}
static void CurvesInNeighborhoodPlus←P1380(formal←c0467, alignBag←v12688, sceneBag←v12716, formal←c01069, formal←c01070, t←v12800, innerR←v12828)
word formal←c0467;
word alignBag←v12688;
word sceneBag←v12716;
W2 formal←c01069;
word formal←c01070;
word t←v12800;
word innerR←v12828;
{
W22 var←c60120;
/* declaration of q←v12744 skipped */
/* declaration of ggData←v12772 skipped */
register ptr gf←c60152 = (ptr) &globalframe;
/* declaration of h←v12872 skipped */
word curveCount←v12900;
/* declaration of var←c54584 skipped */
/* declaration of var←c54616 skipped */
/* declaration of var←c54648 skipped */
/* declaration of var←c54680 skipped */
/* declaration of var←c54712 skipped */
/* declaration of line←v19592 skipped */
word circle←v19620 = 0;
/* declaration of sliceD←v19648 skipped */
word featureData←v19676 = 0;
word added←v19704 = 0;
/* declaration of thisCurve←v19732 skipped */
/* declaration of dTol←v19760 skipped */
(* (W2Pt) (( (ptr) &var←c60120)+4)/* q←v12744 */ ) = formal←c01069;
(* (( (ptr) &var←c60120)+6)/* ggData←v12772 */ ) = formal←c01070;
/* CurvesInNeighborhoodPlus: */
SOURCE(22003, 3516)
{
word tmpAddr161;
tmpAddr161 = (word) (( (ptr) &var←c60120)+8)/* var←c54584 */ ;
(* (ptr) tmpAddr161 ) = ( ((word) (fPt) DoForSceneSlice←P4800) );
(* (( (ptr) tmpAddr161) + 1) ) = 1;
};
{
word tmpAddr162;
tmpAddr162 = (word) (( (ptr) &var←c60120)+10)/* var←c54616 */ ;
(* (ptr) tmpAddr162 ) = ( ((word) (fPt) ProcessSlopeLine←P4740) );
(* (( (ptr) tmpAddr162) + 1) ) = 1;
};
{
word tmpAddr163;
tmpAddr163 = (word) (( (ptr) &var←c60120)+12)/* var←c54648 */ ;
(* (ptr) tmpAddr163 ) = ( ((word) (fPt) ProcessSlice←P4680) );
(* (( (ptr) tmpAddr163) + 1) ) = 1;
};
{
word tmpAddr164;
tmpAddr164 = (word) (( (ptr) &var←c60120)+14)/* var←c54680 */ ;
(* (ptr) tmpAddr164 ) = ( ((word) (fPt) ProcessCircle←P4620) );
(* (( (ptr) tmpAddr164) + 1) ) = 1;
};
{
word tmpAddr165;
tmpAddr165 = (word) (( (ptr) &var←c60120)+16)/* var←c54712 */ ;
(* (ptr) tmpAddr165 ) = ( ((word) (fPt) ProcessLine←P4560) );
(* (( (ptr) tmpAddr165) + 1) ) = 1;
};
SOURCE(22003, 3516)
(* (( (ptr) &var←c60120)+7)/* h←v12872 */ ) = 0;
SOURCE(24364, 10)
(* (( (ptr) &var←c60120)+18)/* line←v19592 */ ) = 0;
SOURCE(24392, 23)
(* (( (ptr) &var←c60120)+19)/* sliceD←v19648 */ ) = 0;
SOURCE(24464, 40)
(* (( (ptr) &var←c60120)+20)/* thisCurve←v19732 */ ) = XR←NewObject(36, (* (( (ptr) gf←c60152)+60) ));
SOURCE(24506, 14)
(* (( (ptr) &var←c60120)+21)/* dTol←v19760 */ ) = t←v12800;
SOURCE(24522, 41)
(* (( (ptr) &var←c60120)+7)/* h←v12872 */ ) = (word) BestCurvesFromPool←P1560((* (( (ptr) &var←c60120)+6)/* ggData←v12772 */ ), t←v12800, innerR←v12828)
;
SOURCE(24566, 50)
{
word pd166;
pd166 = (* (( (ptr) (* (( (ptr) gf←c60152)+203)/* var←c53176 */ ))+21) );
(void) ( *( (fPt) ((* (ptr) pd166 ))))(alignBag←v12688, (word) (( (bPt) &var←c60120)+40)/* var←c54616 */ , pd166);
};
SOURCE(24618, 228)
{
register word angleLines←v20152;
angleLines←v20152 = (* (( (ptr) alignBag←v12688)+1) );
lab←L100070: ;
if ((angleLines←v20152 != 0)) {
}
else {
goto lab←L100067;
};
SOURCE(24719, 30)
featureData←v19676 = (* (ptr) angleLines←v20152 );
SOURCE(24751, 52)
(* (( (ptr) &var←c60120)+18)/* line←v19592 */ ) = (* (ptr) XR←Narrow((* (( (ptr) featureData←v19676)+1) ), (* (( (ptr) gf←c60152)+67)
)) );
SOURCE(24805, 41)
(void) ProcessLine←P4560((* (( (ptr) &var←c60120)+18)/* line←v19592 */ ), (* (( (ptr) &var←c60120)+20)/* thisCurve←v19732 */ ), featureData←v19676, (word) (
( (bPt) &var←c60120)+64)/* var←c54712 */ );
angleLines←v20152 = (* (( (ptr) angleLines←v20152)+1) );
goto lab←L100070;
lab←L100067: ;
};
SOURCE(24857, 195)
{
register word dLines←v20280;
dLines←v20280 = (* (( (ptr) alignBag←v12688)+3) );
lab←L100074: ;
if ((dLines←v20280 != 0)) {
}
else {
goto lab←L100071;
};
SOURCE(24949, 26)
featureData←v19676 = (* (ptr) dLines←v20280 );
SOURCE(24977, 32)
(* (( (ptr) &var←c60120)+18)/* line←v19592 */ ) = XR←Narrow((* (( (ptr) featureData←v19676)+1) ), (* (( (ptr) gf←c60152)+68)
));
SOURCE(25011, 41)
(void) ProcessLine←P4560((* (( (ptr) &var←c60120)+18)/* line←v19592 */ ), (* (( (ptr) &var←c60120)+20)/* thisCurve←v19732 */ ), featureData←v19676, (word) (
( (bPt) &var←c60120)+64)/* var←c54712 */ );
dLines←v20280 = (* (( (ptr) dLines←v20280)+1) );
goto lab←L100074;
lab←L100071: ;
};
SOURCE(25063, 228)
{
register word circles←v20408;
circles←v20408 = (* (( (ptr) alignBag←v12688)+2) );
lab←L100078: ;
if ((circles←v20408 != 0)) {
}
else {
goto lab←L100075;
};
SOURCE(25157, 27)
featureData←v19676 = (* (ptr) circles←v20408 );
SOURCE(25186, 58)
circle←v19620 = (* (ptr) XR←Narrow((* (( (ptr) featureData←v19676)+1) ), (* (( (ptr) gf←c60152)+69) )) );
SOURCE(25246, 45)
(void) ProcessCircle←P4620(circle←v19620, (* (( (ptr) &var←c60120)+20)/* thisCurve←v19732 */ ), featureData←v19676, (word) (
( (bPt) &var←c60120)+56)/* var←c54680 */ );
circles←v20408 = (* (( (ptr) circles←v20408)+1) );
goto lab←L100078;
lab←L100075: ;
};
SOURCE(25302, 52)
{
word pd167;
pd167 = (* (( (ptr) (* (( (ptr) gf←c60152)+203)/* var←c53176 */ ))+9) );
(void) ( *( (fPt) ((* (ptr) pd167 ))))(sceneBag←v12716, (word) (( (bPt) &var←c60120)+32)/* var←c54584 */ , pd167);
};
SOURCE(25356, 19)
curveCount←v12900 = (* (ptr) (* (( (ptr) &var←c60120)+7)/* h←v12872 */ ) );
SOURCE(25377, 112)
if ((0 != (* (( (ptr) (* (( (ptr) &var←c60120)+7)/* h←v12872 */ ))+8) ))) {
SOURCE(25398, 45)
{
word pd168;
pd168 = (* (( (ptr) (* (( (ptr) gf←c60152)+202)/* var←c51480 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd168 ))))((* (( (ptr) gf←c60152)+82) ), (* (( (ptr) gf←c60152)+84) ), pd168);
};
SOURCE(25445, 44)
{
word pd169;
pd169 = (* (( (ptr) (* (( (ptr) gf←c60152)+202)/* var←c51480 */ ))+14) );
(void) ( *( (fPt) ((* (ptr) pd169 ))))((* (( (ptr) gf←c60152)+82) ), (* (( (ptr) gf←c60152)+84) ), pd169);
};
};
SOURCE(25494, 25)
(void) SortCurves←P2040((* (( (ptr) &var←c60120)+7)/* h←v12872 */ ), curveCount←v12900);
/* removed tail goto */
(* (ptr) formal←c0467 ) = (* (( (ptr) &var←c60120)+7)/* h←v12872 */ );
(* (( (ptr) formal←c0467)+1) ) = curveCount←v12900;
return;
}
static void ProcessLine←P4560(line←v19836, thisCurve←v19864, featureData←v19892, formal←c60216)
word line←v19836;
word thisCurve←v19864;
word featureData←v19892;
word formal←c60216;
{
register ptr gf←c60184 = (ptr) &globalframe;
formal←c60216 = (formal←c60216 - 64);
/* ProcessLine: */
SOURCE(22171, 486)
SOURCE(22254, 46)
{
word pd170;
pd170 = (* (( (ptr) (* (( (ptr) gf←c60184)+209)/* var←c54776 */ ))+39) );
(* (ptr) thisCurve←v19864 ) = (word) ( *( (fPt) ((* (ptr) pd170 ))))((* (W2Pt) (( (ptr) formal←c60216)+4) ), line←v19836, pd170)
;
};
SOURCE(22302, 355)
{
word x171;
word x172;
if (((
x171 = (* (ptr) thisCurve←v19864 ), *(float*)&x171
) < (
x172 = (* (( (ptr) formal←c60216)+21) ), *(float*)&x172
))) {
SOURCE(22334, 35)
(* (( (ptr) thisCurve←v19864)+5) ) = featureData←v19892;
SOURCE(22371, 52)
{
word pd173;
pd173 = (* (( (ptr) (* (( (ptr) gf←c60184)+209)/* var←c54776 */ ))+40) );
(void) ( *( (fPt) ((* (ptr) pd173 ))))((word) (( (bPt) thisCurve←v19864)+4), (* (W2Pt) (( (ptr) formal←c60216)+4) ), line←v19836, pd173)
;
};
SOURCE(22425, 52)
{
word pd174;
pd174 = (* (( (ptr) (* (( (ptr) gf←c60184)+205)/* var←c54008 */ ))+11) );
(void) ( *( (fPt) ((* (ptr) pd174 ))))((word) (( (bPt) thisCurve←v19864)+12), (* (W2Pt) (( (ptr) formal←c60216)+4) ), (* (W2Pt) (
( (ptr) thisCurve←v19864)+1) ), pd174);
};
SOURCE(22479, 86)
{
word pd175;
word x176;
word x177;
pd175 = (* (( (ptr) (* (( (ptr) gf←c60184)+205)/* var←c54008 */ ))+20) );
if (((
x176 = (word) ( *( (fPt) ((* (ptr) pd175 ))))((* (W2Pt) ((( (ptr) thisCurve←v19864)+3)) ), pd175), *(float*)&x176
) == (
x177 = (* (ptr) &fc58 ), *(float*)&x177
))) {
SOURCE(22539, 26)
(* (( (ptr) thisCurve←v19864)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisCurve←v19864)+4) ) = (* (ptr) &fc59 );
};
};
SOURCE(22569, 23)
(* (( (ptr) thisCurve←v19864)+6) ) = 0;
SOURCE(22594, 23)
(* (( (ptr) thisCurve←v19864)+8) ) = (word) -1;
SOURCE(22619, 38)
(* (( (ptr) formal←c60216)+21) ) = (word) AddNeighbor←P1680(thisCurve←v19864, (* (( (ptr) formal←c60216)+7) ), 1);
};
};
}
static void ProcessCircle←P4620(formal←c01071, thisCurve←v19980, featureData←v20008, formal←c60312)
word formal←c01071;
word thisCurve←v19980;
word featureData←v20008;
word formal←c60312;
{
W10 var←c60248;
/* declaration of circle←v19952 skipped */
register ptr gf←c60280 = (ptr) &globalframe;
/* declaration of var←c54808 skipped */
/* declaration of centerToQ←v20564 skipped */
/* declaration of distQtoCenter←v20592 skipped */
formal←c60312 = (formal←c60312 - 56);
(* (( (ptr) &var←c60248)+4)/* circle←v19952 */ ) = formal←c01071;
(* (ptr) &var←c60248 ) = formal←c60312;
/* ProcessCircle: */
SOURCE(22664, 864)
{
word tmpAddr178;
tmpAddr178 = (word) (( (ptr) &var←c60248)+5)/* var←c54808 */ ;
(* (ptr) tmpAddr178 ) = ( ((word) (fPt) QProjectedOntoCircle←P5004) );
(* (( (ptr) tmpAddr178) + 1) ) = 1;
};
SOURCE(23054, 51)
{
word pd179;
pd179 = (* (( (ptr) (* (( (ptr) gf←c60280)+205)/* var←c54008 */ ))+11) );
(void) ( *( (fPt) ((* (ptr) pd179 ))))((word) (( (bPt) &var←c60248)+28)/* centerToQ←v20564 */ , (* (W2Pt) (( (ptr) formal←c60312)+4)
), (* (W2Pt) (* (( (ptr) &var←c60248)+4)/* circle←v19952 */ ) ), pd179);
};
SOURCE(23107, 52)
{
word pd180;
pd180 = (* (( (ptr) (* (( (ptr) gf←c60280)+205)/* var←c54008 */ ))+18) );
(* (( (ptr) &var←c60248)+9)/* distQtoCenter←v20592 */ ) = (word) ( *( (fPt) ((* (ptr) pd180 ))))((* (W2Pt) ((( (ptr) &var←c60248)+7)
/* centerToQ←v20564 */ ) ), pd180);
};
SOURCE(23161, 49)
{
float tf181;
word x182;
word x183;
float tf184;
(* (ptr) thisCurve←v19980 ) = (
tf184 = FABS(((
x182 = (* (( (ptr) &var←c60248)+9)/* distQtoCenter←v20592 */ ), *(float*)&x182
) - (
x183 = (* (( (ptr) (* (( (ptr) &var←c60248)+4)/* circle←v19952 */ ))+2) ), *(float*)&x183
)), tf181), *(word*)&tf184
);
};
SOURCE(23212, 316)
{
word x185;
word x186;
if (((
x185 = (* (ptr) thisCurve←v19980 ), *(float*)&x185
) < (
x186 = (* (( (ptr) formal←c60312)+21) ), *(float*)&x186
))) {
SOURCE(23244, 35)
(* (( (ptr) thisCurve←v19980)+5) ) = featureData←v20008;
SOURCE(23281, 40)
(void) QProjectedOntoCircle←P5004((word) (( (bPt) thisCurve←v19980)+4), (word) (( (bPt) &var←c60248)+20)/* var←c54808 */ )
;
SOURCE(23323, 115)
{
word x187;
word x188;
if (((
x187 = (* (ptr) thisCurve←v19980 ), *(float*)&x187
) == (
x188 = (* (ptr) &fc58 ), *(float*)&x188
))) {
SOURCE(23352, 34)
(* (W2Pt) (( (ptr) thisCurve←v19980)+3) ) = (* (W2Pt) (( (ptr) &var←c60248)+7)/* centerToQ←v20564 */ );
}
else {
SOURCE(23386, 52)
{
word pd189;
pd189 = (* (( (ptr) (* (( (ptr) gf←c60280)+205)/* var←c54008 */ ))+11) );
(void) ( *( (fPt) ((* (ptr) pd189 ))))((word) (( (bPt) thisCurve←v19980)+12), (* (W2Pt) (( (ptr) formal←c60312)+4) ), (* (W2Pt) (
( (ptr) thisCurve←v19980)+1) ), pd189);
};
};
};
SOURCE(23440, 23)
(* (( (ptr) thisCurve←v19980)+6) ) = 0;
SOURCE(23465, 23)
(* (( (ptr) thisCurve←v19980)+8) ) = (word) -1;
SOURCE(23490, 38)
(* (( (ptr) formal←c60312)+21) ) = (word) AddNeighbor←P1680(thisCurve←v19980, (* (( (ptr) formal←c60312)+7) ), 1);
};
};
}
static void QProjectedOntoCircle←P5004(formal←c0486, formal←c60376)
word formal←c0486;
word formal←c60376;
{
register ptr gf←c60344 = (ptr) &globalframe;
W2 projectedPt←v20668;
formal←c60376 = (formal←c60376 - 20);
/* QProjectedOntoCircle: */
SOURCE(22753, 296)
SOURCE(22848, 201)
{
word x190;
word x192;
if (((
x190 = (* (( (ptr) formal←c60376)+9) ), *(float*)&x190
) < (
x192 = (* (ptr) &fc191 ), *(float*)&x192
))) {
SOURCE(22880, 70)
{
word x193;
word x194;
*(float*)&projectedPt←v20668.f0 = (
x193 = (* (ptr) (* (( (ptr) formal←c60376)+4) ) ), *(float*)&x193
) + (
x194 = (* (( (ptr) (* (( (ptr) formal←c60376)+4) ))+2) ), *(float*)&x194
);
};
projectedPt←v20668.f1 = (* (( (ptr) (* (( (ptr) formal←c60376)+4) ))+1) );
}
else {
SOURCE(22950, 99)
{
W2 var←c54840;
{
word pd195;
word x196;
word x197;
float tf198;
pd195 = (* (( (ptr) (* (( (ptr) gf←c60344)+205)/* var←c54008 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd195 ))))((word) &var←c54840, (* (W2Pt) (( (ptr) formal←c60376)+7) ), (
tf198 = (
x196 = (* (( (ptr) (* (( (ptr) formal←c60376)+4) ))+2) ), *(float*)&x196
) / (
x197 = (* (( (ptr) formal←c60376)+9) ), *(float*)&x197
), *(word*)&tf198
), pd195);
};
{
W2 var←c0485;
{
word pd199;
pd199 = (* (( (ptr) (* (( (ptr) gf←c60344)+205)/* var←c54008 */ ))+10) );
(void) ( *( (fPt) ((* (ptr) pd199 ))))((word) &var←c0485, (* (W2Pt) (* (( (ptr) formal←c60376)+4) ) ), var←c54840, pd199)
;
};
projectedPt←v20668 = var←c0485;
};
};
};
};
/* removed tail goto */
(* (W2Pt) formal←c0486 ) = projectedPt←v20668;
return;
}
static void ProcessSlice←P4680(sliceD←v20068, thisCurve←v20096, featureData←v20124, formal←c60440)
word sliceD←v20068;
word thisCurve←v20096;
word featureData←v20124;
word formal←c60440;
{
register ptr gf←c60408 = (ptr) &globalframe;
word success←v20740 = 0;
formal←c60440 = (formal←c60440 - 48);
/* ProcessSlice: */
SOURCE(23536, 540)
SOURCE(23656, 132)
{
W7 var←c54872;
{
word pd200;
pd200 = (* (( (ptr) (* (ptr) (* (ptr) sliceD←v20068 ) ))+41) );
(void) ( *( (fPt) ((* (ptr) pd200 ))))((word) &var←c54872, sliceD←v20068, (* (W2Pt) (( (ptr) formal←c60440)+4) ), (* (( (ptr) formal←c60440)+21)
), pd200);
};
success←v20740 = var←c54872.f6;
(* (( (ptr) thisCurve←v20096)+6) ) = var←c54872.f5;
(* (W2Pt) (( (ptr) thisCurve←v20096)+3) ) = (* (W2Pt) (( (ptr) &var←c54872)+3) );
(* (ptr) thisCurve←v20096 ) = var←c54872.f2;
(* (W2Pt) (( (ptr) thisCurve←v20096)+1) ) = (* (W2Pt) &var←c54872 );
};
SOURCE(23790, 286)
if ((0 != success←v20740)) {
SOURCE(23808, 268)
{
word x201;
word x202;
if (((
x201 = (* (ptr) thisCurve←v20096 ), *(float*)&x201
) < (
x202 = (* (( (ptr) formal←c60440)+21) ), *(float*)&x202
))) {
SOURCE(23840, 35)
(* (( (ptr) thisCurve←v20096)+5) ) = featureData←v20124;
SOURCE(23877, 86)
{
word pd203;
word x204;
word x205;
pd203 = (* (( (ptr) (* (( (ptr) gf←c60408)+205)/* var←c54008 */ ))+20) );
if (((
x204 = (word) ( *( (fPt) ((* (ptr) pd203 ))))((* (W2Pt) ((( (ptr) thisCurve←v20096)+3)) ), pd203), *(float*)&x204
) == (
x205 = (* (ptr) &fc58 ), *(float*)&x205
))) {
SOURCE(23937, 26)
(* (( (ptr) thisCurve←v20096)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisCurve←v20096)+4) ) = (* (ptr) &fc59 );
};
};
SOURCE(23968, 68)
{
word pd206;
pd206 = (* (( (ptr) (* (( (ptr) gf←c60408)+207)/* var←c54136 */ ))+21) );
(* (( (ptr) thisCurve←v20096)+8) ) = (word) ( *( (fPt) ((* (ptr) pd206 ))))((* (( (ptr) (* (( (ptr) formal←c60440)+6) ))+11)
), (* (ptr) sliceD←v20068 ), pd206);
};
SOURCE(24038, 38)
(* (( (ptr) formal←c60440)+21) ) = (word) AddNeighbor←P1680(thisCurve←v20096, (* (( (ptr) formal←c60440)+7) ), 1);
};
};
};
}
static word ProcessSlopeLine←P4740(feature←v38372, formal←c60504)
word feature←v38372;
word formal←c60504;
{
register ptr gf←c60472 = (ptr) &globalframe;
word done←v38416;
formal←c60504 = (formal←c60504 - 40);
/* ProcessSlopeLine: */
SOURCE(24087, 133)
SOURCE(24087, 133)
done←v38416 = 0;
SOURCE(24133, 48)
(* (( (ptr) formal←c60504)+18) ) = (* (ptr) XR←Narrow((* (( (ptr) feature←v38372)+1) ), (* (( (ptr) gf←c60472)+67) )) );
SOURCE(24183, 37)
(void) ProcessLine←P4560((* (( (ptr) formal←c60504)+18) ), (* (( (ptr) formal←c60504)+20) ), feature←v38372, (word) (( (bPt) formal←c60504)+64)
);
SOURCE(24087, 133)
return(done←v38416);
}
static word DoForSceneSlice←P4800(feature←v38476, formal←c60568)
word feature←v38476;
word formal←c60568;
{
register ptr gf←c60536 = (ptr) &globalframe;
word done←v38520;
formal←c60568 = (formal←c60568 - 32);
/* DoForSceneSlice: */
SOURCE(24225, 134)
SOURCE(24225, 134)
done←v38520 = 0;
SOURCE(24270, 47)
(* (( (ptr) formal←c60568)+19) ) = XR←Narrow((* (( (ptr) feature←v38476)+1) ), (* (( (ptr) gf←c60536)+64) ));
SOURCE(24319, 40)
(void) ProcessSlice←P4680((* (( (ptr) formal←c60568)+19) ), (* (( (ptr) formal←c60568)+20) ), feature←v38476, (word) (( (bPt) formal←c60568)+48)
);
SOURCE(24225, 134)
return(done←v38520);
}
static void FacesInNeighborhoodPlus←P1440(formal←c0510, alignBag←v12960, sceneBag←v12988, formal←c01072, formal←c01073, formal←c01074)
word formal←c0510;
word alignBag←v12960;
word sceneBag←v12988;
W2 formal←c01072;
word formal←c01073;
word formal←c01074;
{
W16 var←c60600;
/* declaration of q←v13016 skipped */
/* declaration of ggData←v13044 skipped */
/* declaration of t←v13072 skipped */
register ptr gf←c60632 = (ptr) &globalframe;
/* declaration of h←v13116 skipped */
word faceCount←v13144;
/* declaration of var←c54904 skipped */
/* declaration of var←c54936 skipped */
/* declaration of sliceD←v20784 skipped */
word added←v20812 = 0;
/* declaration of thisFace←v20840 skipped */
/* declaration of priorityTol←v20868 skipped */
(* (W2Pt) (( (ptr) &var←c60600)+4)/* q←v13016 */ ) = formal←c01072;
(* (( (ptr) &var←c60600)+6)/* ggData←v13044 */ ) = formal←c01073;
(* (( (ptr) &var←c60600)+7)/* t←v13072 */ ) = formal←c01074;
/* FacesInNeighborhoodPlus: */
SOURCE(25557, 1515)
{
word tmpAddr207;
tmpAddr207 = (word) (( (ptr) &var←c60600)+9)/* var←c54904 */ ;
(* (ptr) tmpAddr207 ) = ( ((word) (fPt) DoForSceneSlice←P5124) );
(* (( (ptr) tmpAddr207) + 1) ) = 1;
};
{
word tmpAddr208;
tmpAddr208 = (word) (( (ptr) &var←c60600)+11)/* var←c54936 */ ;
(* (ptr) tmpAddr208 ) = ( ((word) (fPt) ProcessSlice←P5064) );
(* (( (ptr) tmpAddr208) + 1) ) = 1;
};
SOURCE(25557, 1515)
(* (( (ptr) &var←c60600)+8)/* h←v13116 */ ) = 0;
SOURCE(25708, 23)
(* (( (ptr) &var←c60600)+13)/* sliceD←v20784 */ ) = 0;
SOURCE(25754, 39)
(* (( (ptr) &var←c60600)+14)/* thisFace←v20840 */ ) = XR←NewObject(36, (* (( (ptr) gf←c60632)+60) ));
SOURCE(25795, 21)
(* (( (ptr) &var←c60600)+15)/* priorityTol←v20868 */ ) = (word) -1;
SOURCE(26827, 29)
(* (( (ptr) &var←c60600)+8)/* h←v13116 */ ) = (word) BestFacesFromPool←P1500((* ((( (ptr) &var←c60600)+6)/* ggData←v13044 */ ) ))
;
SOURCE(26859, 52)
{
word pd209;
pd209 = (* (( (ptr) (* (( (ptr) gf←c60632)+203)/* var←c53176 */ ))+9) );
(void) ( *( (fPt) ((* (ptr) pd209 ))))(sceneBag←v12988, (word) (( (bPt) &var←c60600)+36)/* var←c54904 */ , pd209);
};
SOURCE(26914, 18)
faceCount←v13144 = (* (ptr) (* (( (ptr) &var←c60600)+8)/* h←v13116 */ ) );
SOURCE(26934, 110)
if ((0 != (* (( (ptr) (* (( (ptr) &var←c60600)+8)/* h←v13116 */ ))+6) ))) {
SOURCE(26955, 44)
{
word pd210;
pd210 = (* (( (ptr) (* (( (ptr) gf←c60632)+202)/* var←c51480 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd210 ))))((* (( (ptr) gf←c60632)+81) ), (* (( (ptr) gf←c60632)+84) ), pd210);
};
SOURCE(27001, 43)
{
word pd211;
pd211 = (* (( (ptr) (* (( (ptr) gf←c60632)+202)/* var←c51480 */ ))+14) );
(void) ( *( (fPt) ((* (ptr) pd211 ))))((* (( (ptr) gf←c60632)+81) ), (* (( (ptr) gf←c60632)+84) ), pd211);
};
};
SOURCE(27049, 23)
(void) SortFaces←P2100((* (( (ptr) &var←c60600)+8)/* h←v13116 */ ), faceCount←v13144);
/* removed tail goto */
(* (ptr) formal←c0510 ) = (* (( (ptr) &var←c60600)+8)/* h←v13116 */ );
(* (( (ptr) formal←c0510)+1) ) = faceCount←v13144;
return;
}
static void ProcessSlice←P5064(sliceD←v21000, thisFace←v21028, featureData←v21056, formal←c60696)
word sliceD←v21000;
word thisFace←v21028;
word featureData←v21056;
word formal←c60696;
{
register ptr gf←c60664 = (ptr) &globalframe;
word hitData←v21084 = 0;
word moreHitDatas←v21112 = 0;
word success←v21140 = 1;
formal←c60696 = (formal←c60696 - 44);
/* ProcessSlice: */
SOURCE(25819, 852)
SOURCE(25986, 685)
{
word pd212;
pd212 = (* (( (ptr) (* (( (ptr) gf←c60664)+207)/* var←c54136 */ ))+21) );
if (( (int)(word) ( *( (fPt) ((* (ptr) pd212 ))))((* (( (ptr) (* (( (ptr) formal←c60696)+6) ))+11) ), (* (ptr) sliceD←v21000 ), pd212)
>= (int)(* (( (ptr) formal←c60696)+15) ))) {
SOURCE(26059, 78)
{
W2 var←c55000;
{
word pd213;
pd213 = (* (( (ptr) (* (( (ptr) gf←c60664)+208)/* var←c54328 */ ))+48) );
(void) ( *( (fPt) ((* (ptr) pd213 ))))((word) &var←c55000, (* (ptr) sliceD←v21000 ), (* (W2Pt) (( (ptr) formal←c60696)+4)
), (* (( (ptr) formal←c60696)+7) ), pd213);
};
moreHitDatas←v21112 = var←c55000.f1;
hitData←v21084 = var←c55000.f0;
};
SOURCE(26139, 238)
if ((hitData←v21084 != 0)) {
SOURCE(26163, 18)
(* (W2Pt) (( (ptr) thisFace←v21028)+1) ) = (* (W2Pt) (( (ptr) formal←c60696)+4) );
SOURCE(26183, 67)
{
word pd214;
pd214 = (* (( (ptr) (* (( (ptr) gf←c60664)+207)/* var←c54136 */ ))+21) );
(* (( (ptr) thisFace←v21028)+8) ) = (word) ( *( (fPt) ((* (ptr) pd214 ))))((* (( (ptr) (* (( (ptr) formal←c60696)+6) ))+11)
), (* (ptr) sliceD←v21000 ), pd214);
};
SOURCE(26252, 25)
(* (( (ptr) thisFace←v21028)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisFace←v21028)+4) ) = (* (ptr) &fc59 );
SOURCE(26279, 26)
(* (( (ptr) thisFace←v21028)+6) ) = hitData←v21084;
SOURCE(26307, 34)
(* (( (ptr) thisFace←v21028)+5) ) = featureData←v21056;
SOURCE(26343, 34)
(* (( (ptr) formal←c60696)+15) ) = (word) AddFace←P1740(thisFace←v21028, (* (( (ptr) formal←c60696)+8) ));
};
SOURCE(26382, 289)
{
register word list←v21292;
list←v21292 = moreHitDatas←v21112;
lab←L100084: ;
if ((list←v21292 != 0)) {
}
else {
goto lab←L100081;
};
SOURCE(26454, 18)
(* (W2Pt) (( (ptr) thisFace←v21028)+1) ) = (* (W2Pt) (( (ptr) formal←c60696)+4) );
SOURCE(26474, 67)
{
word pd215;
pd215 = (* (( (ptr) (* (( (ptr) gf←c60664)+207)/* var←c54136 */ ))+21) );
(* (( (ptr) thisFace←v21028)+8) ) = (word) ( *( (fPt) ((* (ptr) pd215 ))))((* (( (ptr) (* (( (ptr) formal←c60696)+6) ))+11)
), (* (ptr) sliceD←v21000 ), pd215);
};
SOURCE(26543, 25)
(* (( (ptr) thisFace←v21028)+3) ) = (* (ptr) &fc58 );
(* (( (ptr) thisFace←v21028)+4) ) = (* (ptr) &fc59 );
SOURCE(26570, 29)
(* (( (ptr) thisFace←v21028)+6) ) = (* (ptr) list←v21292 );
SOURCE(26601, 34)
(* (( (ptr) thisFace←v21028)+5) ) = featureData←v21056;
SOURCE(26637, 34)
(* (( (ptr) formal←c60696)+15) ) = (word) AddFace←P1740(thisFace←v21028, (* (( (ptr) formal←c60696)+8) ));
list←v21292 = (* (( (ptr) list←v21292)+1) );
goto lab←L100084;
lab←L100081: ;
};
};
};
}
static word DoForSceneSlice←P5124(feature←v40596, formal←c60760)
word feature←v40596;
word formal←c60760;
{
register ptr gf←c60728 = (ptr) &globalframe;
word done←v40640;
formal←c60760 = (formal←c60760 - 36);
/* DoForSceneSlice: */
SOURCE(26688, 133)
SOURCE(26688, 133)
done←v40640 = 0;
SOURCE(26733, 47)
(* (( (ptr) formal←c60760)+13) ) = XR←Narrow((* (( (ptr) feature←v40596)+1) ), (* (( (ptr) gf←c60728)+64) ));
SOURCE(26782, 39)
(void) ProcessSlice←P5064((* (( (ptr) formal←c60760)+13) ), (* (( (ptr) formal←c60760)+14) ), feature←v40596, (word) (( (bPt) formal←c60760)+44)
);
SOURCE(26688, 133)
return(done←v40640);
}
static word BestFacesFromPool←P1500(ggData←v13204)
word ggData←v13204;
{
register ptr gf←c60792 = (ptr) &globalframe;
word h←v13248;
/* BestFacesFromPool: */
SOURCE(27102, 346)
SOURCE(27102, 346)
h←v13248 = 0;
SOURCE(27170, 63)
h←v13248 = (* (( (ptr) XR←Narrow((* (( (ptr) ggData←v13204)+52) ), (* (( (ptr) gf←c60792)+72) )))+2) );
SOURCE(27235, 10)
(* (ptr) h←v13248 ) = 0;
SOURCE(27247, 18)
(* (( (ptr) h←v13248)+1) ) = (word) -1;
SOURCE(27267, 17)
(* (( (ptr) h←v13248)+3) ) = 9999;
SOURCE(27286, 25)
(* (( (ptr) h←v13248)+2) ) = 2147483647;
SOURCE(27313, 25)
(* (( (ptr) h←v13248)+4) ) = (word) -1;
SOURCE(27340, 18)
(* (( (ptr) h←v13248)+6) ) = 0;
SOURCE(27360, 88)
{
register word i←v21432 = 0;
register word noName←c55032;
noName←c55032 = (* (( (ptr) gf←c60792)+4)/* MaxFeatures←v5240 */ );
if ((i←v21432 >= noName←c55032)) {
goto lab←L100085;
};
lab←L100088: ;
SOURCE(27394, 30)
{
word limit216;
(* (ptr) (* ((( (ptr) h←v13248)+8)+(
limit216 = (* (( (ptr) h←v13248)+7) ),
BCK(i←v21432, limit216)
)) ) ) = 2139095039;
};
SOURCE(27426, 22)
{
word limit217;
(* (( (ptr) (* ((( (ptr) h←v13248)+8)+(
limit217 = (* (( (ptr) h←v13248)+7) ),
BCK(i←v21432, limit217)
)) ))+5) ) = 0;
};
i←v21432 = (i←v21432 + 1);
if ((i←v21432 < noName←c55032)) {
goto lab←L100088;
};
lab←L100085: ;
};
SOURCE(27102, 346)
return(h←v13248);
}
static word BestCurvesFromPool←P1560(ggData←v13308, t←v13336, innerR←v13364)
word ggData←v13308;
word t←v13336;
word innerR←v13364;
{
register ptr gf←c60824 = (ptr) &globalframe;
word h←v13408;
/* BestCurvesFromPool: */
SOURCE(27463, 435)
SOURCE(27463, 435)
h←v13408 = 0;
SOURCE(27556, 64)
h←v13408 = (* (( (ptr) XR←Narrow((* (( (ptr) ggData←v13308)+52) ), (* (( (ptr) gf←c60824)+72) )))+1) );
SOURCE(27622, 10)
(* (ptr) h←v13408 ) = 0;
SOURCE(27634, 11)
(* (( (ptr) h←v13408)+1) ) = (* (ptr) &fc58 );
SOURCE(27647, 17)
(* (( (ptr) h←v13408)+3) ) = 9999;
SOURCE(27666, 26)
(* (( (ptr) h←v13408)+2) ) = 2139095039;
SOURCE(27694, 10)
(* (( (ptr) h←v13408)+5) ) = t←v13336;
SOURCE(27706, 17)
(* (( (ptr) h←v13408)+6) ) = innerR←v13364;
SOURCE(27725, 11)
(* (( (ptr) h←v13408)+7) ) = (* (ptr) &fc65 );
SOURCE(27755, 33)
(* (( (ptr) h←v13408)+4) ) = 2139095039;
SOURCE(27790, 18)
(* (( (ptr) h←v13408)+8) ) = 0;
SOURCE(27810, 88)
{
register word i←v21476 = 0;
register word noName←c55064;
noName←c55064 = (* (( (ptr) gf←c60824)+4)/* MaxFeatures←v5240 */ );
if ((i←v21476 >= noName←c55064)) {
goto lab←L100089;
};
lab←L100092: ;
SOURCE(27844, 30)
{
word limit218;
(* (ptr) (* ((( (ptr) h←v13408)+10)+(
limit218 = (* (( (ptr) h←v13408)+9) ),
BCK(i←v21476, limit218)
)) ) ) = 2139095039;
};
SOURCE(27876, 22)
{
word limit219;
(* (( (ptr) (* ((( (ptr) h←v13408)+10)+(
limit219 = (* (( (ptr) h←v13408)+9) ),
BCK(i←v21476, limit219)
)) ))+5) ) = 0;
};
i←v21476 = (i←v21476 + 1);
if ((i←v21476 < noName←c55064)) {
goto lab←L100092;
};
lab←L100089: ;
};
SOURCE(27463, 435)
return(h←v13408);
}
static word BestPointsFromPool←P1620(ggData←v13468, t←v13496)
word ggData←v13468;
word t←v13496;
{
register ptr gf←c60856 = (ptr) &globalframe;
word h←v13540;
/* BestPointsFromPool: */
SOURCE(27913, 402)
SOURCE(27913, 402)
h←v13540 = 0;
SOURCE(27992, 64)
h←v13540 = (* (ptr) XR←Narrow((* (( (ptr) ggData←v13468)+52) ), (* (( (ptr) gf←c60856)+72) )) );
SOURCE(28058, 10)
(* (ptr) h←v13540 ) = 0;
SOURCE(28070, 11)
(* (( (ptr) h←v13540)+1) ) = (* (ptr) &fc58 );
SOURCE(28083, 17)
(* (( (ptr) h←v13540)+3) ) = 9999;
SOURCE(28102, 26)
(* (( (ptr) h←v13540)+2) ) = 2139095039;
SOURCE(28130, 10)
(* (( (ptr) h←v13540)+5) ) = t←v13496;
SOURCE(28142, 11)
(* (( (ptr) h←v13540)+7) ) = (* (ptr) &fc65 );
SOURCE(28172, 33)
(* (( (ptr) h←v13540)+4) ) = 2139095039;
SOURCE(28207, 18)
(* (( (ptr) h←v13540)+8) ) = 0;
SOURCE(28227, 88)
{
register word i←v21520 = 0;
register word noName←c55096;
noName←c55096 = (* (( (ptr) gf←c60856)+4)/* MaxFeatures←v5240 */ );
if ((i←v21520 >= noName←c55096)) {
goto lab←L100093;
};
lab←L100096: ;
SOURCE(28261, 30)
{
word limit220;
(* (ptr) (* ((( (ptr) h←v13540)+10)+(
limit220 = (* (( (ptr) h←v13540)+9) ),
BCK(i←v21520, limit220)
)) ) ) = 2139095039;
};
SOURCE(28293, 22)
{
word limit221;
(* (( (ptr) (* ((( (ptr) h←v13540)+10)+(
limit221 = (* (( (ptr) h←v13540)+9) ),
BCK(i←v21520, limit221)
)) ))+5) ) = 0;
};
i←v21520 = (i←v21520 + 1);
if ((i←v21520 < noName←c55096)) {
goto lab←L100096;
};
lab←L100093: ;
};
SOURCE(27913, 402)
return(h←v13540);
}
static word AddNeighbor←P1680(thisPoint←v13600, h←v13628, curve←v13656)
word thisPoint←v13600;
word h←v13628;
word curve←v13656;
{
register ptr gf←c60888 = (ptr) &globalframe;
word dTol←v13700;
word d←v21564;
word n←v21592;
/* AddNeighbor: */
SOURCE(28330, 1282)
SOURCE(28432, 24)
d←v21564 = (* (ptr) thisPoint←v13600 );
SOURCE(28458, 20)
n←v21592 = (* (( (ptr) gf←c60888)+4)/* MaxFeatures←v5240 */ );
SOURCE(28480, 1132)
{
word x222;
word x223;
if (((
x222 = d←v21564, *(float*)&x222
) > (
x223 = (* (( (ptr) h←v13628)+5) ), *(float*)&x223
))) {
SOURCE(28517, 9)
goto lab←L100099;
}
else {
if (((* (ptr) h←v13628 ) < n←v21592)) {
SOURCE(28604, 8)
goto lab←L100097;
}
else {
if (((* (ptr) h←v13628 ) == n←v21592)) {
SOURCE(28628, 22)
goto lab←L100098;
}
else {
SOURCE(28663, 39)
{
word var←c0543;
var←c0543 = (* (( (ptr) gf←c60888)+80) );
(void) (XR←RaiseSignal((word) (( (bPt) gf←c60888)+344)/* var←c49560 */ , 0, (word) &var←c0543));
};
};
};
};
};
goto lab←L100100;
lab←L100097: ;
SOURCE(28719, 23)
{
word idx224;
word limit225;
(* (W9Pt) (* ((( (ptr) h←v13628)+10)+(
idx224 = (* (ptr) h←v13628 ),
limit225 = (* (( (ptr) h←v13628)+9) ),
BCK(idx224, limit225)
)) ) ) = (* (W9Pt) thisPoint←v13600 );
};
SOURCE(28744, 49)
{
word x226;
word x227;
if (((
x226 = d←v21564, *(float*)&x226
) > (
x227 = (* (( (ptr) h←v13628)+1) ), *(float*)&x227
))) {
SOURCE(28763, 9)
(* (( (ptr) h←v13628)+1) ) = d←v21564;
SOURCE(28774, 19)
(* (( (ptr) h←v13628)+3) ) = (* (ptr) h←v13628 );
};
};
SOURCE(28796, 21)
{
word x228;
float tf229;
float tf230;
word x231;
float tf232;
(* (( (ptr) h←v13628)+2) ) = (
tf232 = FMIN((
x228 = (* (( (ptr) h←v13628)+2) ), *(float*)&x228
), (
x231 = d←v21564, *(float*)&x231
), tf229, tf230), *(word*)&tf232
);
};
SOURCE(28819, 19)
(* (ptr) h←v13628 ) = ((* (ptr) h←v13628 ) + 1);
SOURCE(28840, 85)
if ((0 != curve←v13656)) {
SOURCE(28854, 46)
{
word var←c55128;
{
word x233;
word x234;
float tf235;
float tf236;
word x237;
float tf238;
var←c55128 = (
tf238 = FMAX(((
x233 = (* (( (ptr) h←v13628)+2) ), *(float*)&x233
) + (
x234 = (* (( (ptr) h←v13628)+7) ), *(float*)&x234
)), (
x237 = (* (( (ptr) h←v13628)+6) ), *(float*)&x237
), tf235, tf236), *(word*)&tf238
);
};
(* (( (ptr) h←v13628)+5) ) = var←c55128;
dTol←v13700 = var←c55128;
};
}
else {
SOURCE(28900, 25)
{
word var←c55160;
{
word x239;
word x240;
*(float*)&var←c55160 = (
x239 = (* (( (ptr) h←v13628)+2) ), *(float*)&x239
) + (
x240 = (* (( (ptr) h←v13628)+7) ), *(float*)&x240
);
};
(* (( (ptr) h←v13628)+5) ) = var←c55160;
dTol←v13700 = var←c55160;
};
};
goto lab←L100100;
lab←L100098: ;
SOURCE(28953, 551)
{
word x241;
word x242;
if (((
x241 = d←v21564, *(float*)&x241
) < (
x242 = (* (( (ptr) h←v13628)+1) ), *(float*)&x242
))) {
SOURCE(28991, 27)
{
word idx243;
word limit244;
(* (W9Pt) (* ((( (ptr) h←v13628)+10)+(
idx243 = (* (( (ptr) h←v13628)+3) ),
limit244 = (* (( (ptr) h←v13628)+9) ),
BCK(idx243, limit244)
)) ) ) = (* (W9Pt) thisPoint←v13600 );
};
SOURCE(29020, 39)
{
word x245;
float tf246;
float tf247;
word x248;
float tf249;
(* (( (ptr) h←v13628)+4) ) = (
tf249 = FMIN((
x245 = (* (( (ptr) h←v13628)+4) ), *(float*)&x245
), (
x248 = (* (( (ptr) h←v13628)+1) ), *(float*)&x248
), tf246, tf247), *(word*)&tf249
);
};
SOURCE(29061, 21)
{
word x250;
float tf251;
float tf252;
word x253;
float tf254;
(* (( (ptr) h←v13628)+2) ) = (
tf254 = FMIN((
x250 = (* (( (ptr) h←v13628)+2) ), *(float*)&x250
), (
x253 = d←v21564, *(float*)&x253
), tf251, tf252), *(word*)&tf254
);
};
SOURCE(29084, 85)
if ((0 != curve←v13656)) {
SOURCE(29098, 46)
{
word var←c55192;
{
word x255;
word x256;
float tf257;
float tf258;
word x259;
float tf260;
var←c55192 = (
tf260 = FMAX(((
x255 = (* (( (ptr) h←v13628)+2) ), *(float*)&x255
) + (
x256 = (* (( (ptr) h←v13628)+7) ), *(float*)&x256
)), (
x259 = (* (( (ptr) h←v13628)+6) ), *(float*)&x259
), tf257, tf258), *(word*)&tf260
);
};
(* (( (ptr) h←v13628)+5) ) = var←c55192;
dTol←v13700 = var←c55192;
};
}
else {
SOURCE(29144, 25)
{
word var←c55224;
{
word x261;
word x262;
*(float*)&var←c55224 = (
x261 = (* (( (ptr) h←v13628)+2) ), *(float*)&x261
) + (
x262 = (* (( (ptr) h←v13628)+7) ), *(float*)&x262
);
};
(* (( (ptr) h←v13628)+5) ) = var←c55224;
dTol←v13700 = var←c55224;
};
};
SOURCE(29171, 33)
{
word x263;
word x264;
(* (( (ptr) h←v13628)+8) ) = (unsigned) ((
x263 = (* (( (ptr) h←v13628)+4) ), *(float*)&x263
) <= (
x264 = dTol←v13700, *(float*)&x264
));
};
SOURCE(29206, 194)
{
word maxIndex←v21636 = 0;
word maxDist←v21664;
SOURCE(29231, 19)
maxDist←v21664 = (* (ptr) &fc58 );
SOURCE(29252, 96)
{
register word i←v21708 = 0;
register word noName←c55256;
noName←c55256 = (* (( (ptr) gf←c60888)+4)/* MaxFeatures←v5240 */ );
if ((i←v21708 >= noName←c55256)) {
goto lab←L100101;
};
lab←L100104: ;
SOURCE(29286, 62)
{
word limit265;
word x266;
word x267;
if (((
x266 = (* (ptr) (* ((( (ptr) h←v13628)+10)+(
limit265 = (* (( (ptr) h←v13628)+9) ),
BCK(i←v21708, limit265)
)) ) ), *(float*)&x266
) > (
x267 = maxDist←v21664, *(float*)&x267
))) {
SOURCE(29315, 12)
maxIndex←v21636 = i←v21708;
SOURCE(29329, 19)
{
word limit268;
maxDist←v21664 = (* (ptr) (* ((( (ptr) h←v13628)+10)+(
/*1*/ limit268 = (* (( (ptr) h←v13628)+9) ),
/*1*/ BCK(i←v21708, limit268)
/*1*/ )) ) );
};
};
};
i←v21708 = (i←v21708 + 1);
if ((i←v21708 < noName←c55256)) {
goto lab←L100104;
};
lab←L100101: ;
};
SOURCE(29360, 15)
(* (( (ptr) h←v13628)+1) ) = maxDist←v21664;
SOURCE(29377, 21)
(* (( (ptr) h←v13628)+3) ) = maxIndex←v21636;
};
}
else {
SOURCE(29435, 13)
dTol←v13700 = (* (( (ptr) h←v13628)+5) );
SOURCE(29450, 35)
{
word x269;
float tf270;
float tf271;
word x272;
float tf273;
(* (( (ptr) h←v13628)+4) ) = (
tf273 = FMIN((
x269 = (* (( (ptr) h←v13628)+4) ), *(float*)&x269
), (
x272 = d←v21564, *(float*)&x272
), tf270, tf271), *(word*)&tf273
);
};
SOURCE(29487, 17)
(* (( (ptr) h←v13628)+8) ) = 1;
};
};
goto lab←L100100;
lab←L100099: ;
SOURCE(29522, 13)
dTol←v13700 = (* (( (ptr) h←v13628)+5) );
SOURCE(29537, 35)
{
word x274;
float tf275;
float tf276;
word x277;
float tf278;
(* (( (ptr) h←v13628)+4) ) = (
tf278 = FMIN((
x274 = (* (( (ptr) h←v13628)+4) ), *(float*)&x274
), (
x277 = d←v21564, *(float*)&x277
), tf275, tf276), *(word*)&tf278
);
};
SOURCE(29574, 33)
{
word x279;
word x280;
(* (( (ptr) h←v13628)+8) ) = (unsigned) ((
x279 = (* (( (ptr) h←v13628)+4) ), *(float*)&x279
) <= (
x280 = dTol←v13700, *(float*)&x280
));
};
lab←L100100: ;
SOURCE(28330, 1282)
return(dTol←v13700);
}
static word AddFace←P1740(thisFace←v13760, h←v13788)
word thisFace←v13760;
word h←v13788;
{
register ptr gf←c60920 = (ptr) &globalframe;
word priorityTol←v13832;
word d←v21752;
word n←v21780;
/* AddFace: */
SOURCE(29621, 1285)
SOURCE(29702, 26)
d←v21752 = (* (( (ptr) thisFace←v13760)+8) );
SOURCE(29730, 20)
n←v21780 = (* (( (ptr) gf←c60920)+4)/* MaxFeatures←v5240 */ );
SOURCE(29752, 1154)
if (( (int)d←v21752 < (int)(* (( (ptr) h←v13788)+5) ))) {
SOURCE(29796, 9)
goto lab←L100107;
}
else {
if (((* (ptr) h←v13788 ) < n←v21780)) {
SOURCE(29855, 8)
goto lab←L100105;
}
else {
if (((* (ptr) h←v13788 ) == n←v21780)) {
SOURCE(29879, 22)
goto lab←L100106;
}
else {
SOURCE(29914, 39)
{
word var←c0557;
var←c0557 = (* (( (ptr) gf←c60920)+80) );
(void) (XR←RaiseSignal((word) (( (bPt) gf←c60920)+344)/* var←c49560 */ , 0, (word) &var←c0557));
};
};
};
};
goto lab←L100108;
lab←L100105: ;
SOURCE(29970, 22)
{
word idx281;
word limit282;
(* (W9Pt) (* ((( (ptr) h←v13788)+8)+(
idx281 = (* (ptr) h←v13788 ),
limit282 = (* (( (ptr) h←v13788)+7) ),
BCK(idx281, limit282)
)) ) ) = (* (W9Pt) thisFace←v13760 );
};
SOURCE(29994, 65)
if (( (int)d←v21752 < (int)(* (( (ptr) h←v13788)+2) ))) {
SOURCE(30021, 17)
(* (( (ptr) h←v13788)+2) ) = d←v21752;
SOURCE(30040, 19)
(* (( (ptr) h←v13788)+3) ) = (* (ptr) h←v13788 );
};
SOURCE(30062, 37)
{
word x283;
(* (( (ptr) h←v13788)+1) ) = (x283 = (* (( (ptr) h←v13788)+1) ),
MAX((int)(word), x283, d←v21752));
};
SOURCE(30101, 19)
(* (ptr) h←v13788 ) = ((* (ptr) h←v13788 ) + 1);
SOURCE(30122, 27)
priorityTol←v13832 = (* (( (ptr) h←v13788)+5) );
goto lab←L100108;
lab←L100106: ;
SOURCE(30177, 607)
if (( (int)d←v21752 > (int)(* (( (ptr) h←v13788)+2) ))) {
SOURCE(30223, 26)
{
word idx284;
word limit285;
(* (W9Pt) (* ((( (ptr) h←v13788)+8)+(
idx284 = (* (( (ptr) h←v13788)+3) ),
limit285 = (* (( (ptr) h←v13788)+7) ),
BCK(idx284, limit285)
)) ) ) = (* (W9Pt) thisFace←v13760 );
};
SOURCE(30251, 63)
{
word x286;
word x287;
(* (( (ptr) h←v13788)+4) ) = (x286 = (* (( (ptr) h←v13788)+4) ),
x287 = (* (( (ptr) h←v13788)+2) ),
MAX((int)(word), x286, x287));
};
SOURCE(30316, 37)
{
word x288;
(* (( (ptr) h←v13788)+1) ) = (x288 = (* (( (ptr) h←v13788)+1) ),
MAX((int)(word), x288, d←v21752));
};
SOURCE(30355, 17)
(* (( (ptr) h←v13788)+6) ) = 1;
SOURCE(30374, 231)
{
word minIndex←v21824 = 0;
word minPriority←v21852 = 2147483647;
SOURCE(30429, 112)
{
register word i←v21896 = 0;
register word noName←c55288;
noName←c55288 = (* (( (ptr) gf←c60920)+4)/* MaxFeatures←v5240 */ );
if ((i←v21896 >= noName←c55288)) {
goto lab←L100109;
};
lab←L100112: ;
SOURCE(30463, 78)
{
word limit289;
if (( (int)(* (( (ptr) (* ((( (ptr) h←v13788)+8)+(
limit289 = (* (( (ptr) h←v13788)+7) ),
BCK(i←v21896, limit289)
)) ))+8) ) < (int)minPriority←v21852)) {
SOURCE(30500, 12)
minIndex←v21824 = i←v21896;
SOURCE(30514, 27)
{
word limit290;
minPriority←v21852 = (* (( (ptr) (* ((( (ptr) h←v13788)+8)+(
/*1*/ limit290 = (* (( (ptr) h←v13788)+7) ),
/*1*/ BCK(i←v21896, limit290)
/*1*/ )) ))+8) );
};
};
};
i←v21896 = (i←v21896 + 1);
if ((i←v21896 < noName←c55288)) {
goto lab←L100112;
};
lab←L100109: ;
};
SOURCE(30553, 27)
(* (( (ptr) h←v13788)+2) ) = minPriority←v21852;
SOURCE(30582, 21)
(* (( (ptr) h←v13788)+3) ) = minIndex←v21824;
};
SOURCE(30610, 43)
{
word var←c55320;
var←c55320 = (* (( (ptr) h←v13788)+2) );
(* (( (ptr) h←v13788)+5) ) = var←c55320;
priorityTol←v13832 = var←c55320;
};
}
else {
SOURCE(30685, 27)
priorityTol←v13832 = (* (( (ptr) h←v13788)+5) );
SOURCE(30714, 51)
{
word x291;
(* (( (ptr) h←v13788)+4) ) = (x291 = (* (( (ptr) h←v13788)+4) ),
MAX((int)(word), x291, d←v21752));
};
SOURCE(30767, 17)
(* (( (ptr) h←v13788)+6) ) = 1;
};
goto lab←L100108;
lab←L100107: ;
SOURCE(30802, 27)
priorityTol←v13832 = (* (( (ptr) h←v13788)+5) );
SOURCE(30831, 51)
{
word x292;
(* (( (ptr) h←v13788)+4) ) = (x292 = (* (( (ptr) h←v13788)+4) ),
MAX((int)(word), x292, d←v21752));
};
SOURCE(30884, 17)
(* (( (ptr) h←v13788)+6) ) = 1;
lab←L100108: ;
SOURCE(29621, 1285)
return(priorityTol←v13832);
}
static void NearPointsFromPoints←P1800(bestPoints←v13892, pointCount←v13920, nearVEF←v13948)
word bestPoints←v13892;
word pointCount←v13920;
word nearVEF←v13948;
{
/* NearPointsFromPoints: */
SOURCE(30915, 165)
SOURCE(31021, 59)
{
register word i←v21940 = 0;
register word noName←c55352;
noName←c55352 = pointCount←v13920;
if ((i←v21940 >= noName←c55352)) {
goto lab←L100113;
};
lab←L100116: ;
SOURCE(31054, 26)
{
word limit293;
word limit294;
(* ((( (ptr) nearVEF←v13948)+1)+(
limit293 = (* (ptr) nearVEF←v13948 ),
BCK(i←v21940, limit293)
)) ) = (* ((( (ptr) bestPoints←v13892)+10)+(
limit294 = (* (( (ptr) bestPoints←v13892)+9) ),
BCK(i←v21940, limit294)
)) );
};
i←v21940 = (i←v21940 + 1);
if ((i←v21940 < noName←c55352)) {
goto lab←L100116;
};
lab←L100113: ;
};
}
static void MergePointsAndCurves←P1860(bestPoints←v14008, pointCount←v14036, bestCurves←v14064, curveCount←v14092, nearVEF←v14120, count←v14148)
word bestPoints←v14008;
word pointCount←v14036;
word bestCurves←v14064;
word curveCount←v14092;
word nearVEF←v14120;
word count←v14148;
{
word pointIndex←v21984;
word curveIndex←v22012;
word pointDist←v22040;
word curveDist←v22068;
/* MergePointsAndCurves: */
SOURCE(31095, 948)
SOURCE(31311, 14)
pointIndex←v21984 = 0;
SOURCE(31327, 14)
curveIndex←v22012 = 0;
SOURCE(31343, 700)
{
register word i←v22112 = 0;
register word noName←c55384;
noName←c55384 = count←v14148;
if (( (int)i←v22112 >= (int)noName←c55384)) {
goto lab←L100117;
};
lab←L100122: ;
SOURCE(31375, 33)
if ((pointIndex←v21984 >= pointCount←v14036)) {
SOURCE(31408, 17)
goto lab←L100120;
};
SOURCE(31427, 33)
if ((curveIndex←v22012 >= curveCount←v14092)) {
SOURCE(31460, 17)
goto lab←L100121;
};
SOURCE(31479, 30)
{
word limit295;
pointDist←v22040 = (* (ptr) (* ((( (ptr) bestPoints←v14008)+10)+(
limit295 = (* (( (ptr) bestPoints←v14008)+9) ),
BCK(i←v22112, limit295)
)) ) );
};
SOURCE(31511, 30)
{
word limit296;
curveDist←v22068 = (* (ptr) (* ((( (ptr) bestCurves←v14064)+10)+(
limit296 = (* (( (ptr) bestCurves←v14064)+9) ),
BCK(i←v22112, limit296)
)) ) );
};
SOURCE(31543, 172)
{
word x297;
word x298;
if (((
x297 = pointDist←v22040, *(float*)&x297
) <= (
x298 = curveDist←v22068, *(float*)&x298
))) {
SOURCE(31576, 35)
{
word limit299;
word limit300;
(* ((( (ptr) nearVEF←v14120)+1)+(
limit299 = (* (ptr) nearVEF←v14120 ),
BCK(i←v22112, limit299)
)) ) = (* ((( (ptr) bestPoints←v14008)+10)+(
limit300 = (* (( (ptr) bestPoints←v14008)+9) ),
BCK(pointIndex←v21984, limit300)
)) );
};
SOURCE(31613, 27)
pointIndex←v21984 = (pointIndex←v21984 + 1);
}
else {
SOURCE(31651, 35)
{
word limit301;
word limit302;
(* ((( (ptr) nearVEF←v14120)+1)+(
limit301 = (* (ptr) nearVEF←v14120 ),
BCK(i←v22112, limit301)
)) ) = (* ((( (ptr) bestCurves←v14064)+10)+(
limit302 = (* (( (ptr) bestCurves←v14064)+9) ),
BCK(curveIndex←v22012, limit302)
)) );
};
SOURCE(31688, 27)
curveIndex←v22012 = (curveIndex←v22012 + 1);
};
};
i←v22112 = (i←v22112 + 1);
if (( (int)i←v22112 < (int)noName←c55384)) {
goto lab←L100122;
};
goto lab←L100117;
lab←L100120: ;
SOURCE(31775, 104)
{
register word k←v22156;
k←v22156 = SGNCK(i←v22112);
lab←L100126: ;
if ((k←v22156 < count←v14148)) {
}
else {
goto lab←L100123;
};
SOURCE(31815, 35)
{
word limit303;
word limit304;
(* ((( (ptr) nearVEF←v14120)+1)+(
limit303 = (* (ptr) nearVEF←v14120 ),
BCK(k←v22156, limit303)
)) ) = (* ((( (ptr) bestCurves←v14064)+10)+(
limit304 = (* (( (ptr) bestCurves←v14064)+9) ),
BCK(curveIndex←v22012, limit304)
)) );
};
SOURCE(31852, 27)
curveIndex←v22012 = (curveIndex←v22012 + 1);
k←v22156 = (k←v22156 + 1);
goto lab←L100126;
lab←L100123: ;
};
goto lab←L100118;
lab←L100121: ;
SOURCE(31939, 104)
{
register word k←v22200;
k←v22200 = SGNCK(i←v22112);
lab←L100130: ;
if ((k←v22200 < count←v14148)) {
}
else {
goto lab←L100127;
};
SOURCE(31979, 35)
{
word limit305;
word limit306;
(* ((( (ptr) nearVEF←v14120)+1)+(
limit305 = (* (ptr) nearVEF←v14120 ),
BCK(k←v22200, limit305)
)) ) = (* ((( (ptr) bestPoints←v14008)+10)+(
limit306 = (* (( (ptr) bestPoints←v14008)+9) ),
BCK(pointIndex←v21984, limit306)
)) );
};
SOURCE(32016, 27)
pointIndex←v21984 = (pointIndex←v21984 + 1);
k←v22200 = (k←v22200 + 1);
goto lab←L100130;
lab←L100127: ;
};
goto lab←L100118;
lab←L100117: ;
lab←L100118: ;
};
}
static void MergeByOverlapAndDistance←P1920(formal←c0608, faces←v14208, faceCount←v14236, curves←v14264, curveCount←v14292)
word formal←c0608;
word faces←v14208;
word faceCount←v14236;
word curves←v14264;
word curveCount←v14292;
{
register ptr gf←c60952 = (ptr) &globalframe;
word nearVEF←v14336;
word total←v14364;
word facePtr←v22244;
word curvePtr←v22272;
/* MergeByOverlapAndDistance: */
SOURCE(32068, 1844)
SOURCE(32068, 1844)
nearVEF←v14336 = 0;
SOURCE(32267, 46)
{
word x307;
total←v14364 = (x307 = (* (( (ptr) gf←c60952)+4)/* MaxFeatures←v5240 */ ),
MIN( (unsigned) , (curveCount←v14292 + faceCount←v14236), x307));
};
SOURCE(32315, 47)
{
word var←c55416;
word var←c55448;
word var←c55480;
var←c55416 = BCK(total←v14364, 67108863);
var←c55448 = ((word) var←c55416 << 2);
var←c55480 = XR←NewObject((4 + var←c55448), (* (( (ptr) gf←c60952)+59) ));
(* (ptr) var←c55480 ) = var←c55416;
nearVEF←v14336 = var←c55480;
};
SOURCE(32364, 22)
curvePtr←v22272 = 0;
facePtr←v22244 = 0;
SOURCE(32389, 1523)
{
register word i←v22316 = 0;
register word noName←c55512;
noName←c55512 = total←v14364;
if ((i←v22316 >= noName←c55512)) {
goto lab←L100132;
};
lab←L100137: ;
SOURCE(32416, 31)
if ((curvePtr←v22272 >= curveCount←v14292)) {
SOURCE(32447, 21)
goto lab←L100135;
};
SOURCE(32470, 29)
if ((facePtr←v22244 >= faceCount←v14236)) {
SOURCE(32499, 20)
goto lab←L100136;
};
SOURCE(32522, 1090)
SOURCE(32528, 571)
{
word var←c55544;
{
word limit308;
word limit309;
var←c55544 = ((* (( (ptr) (* ((( (ptr) faces←v14208)+8)+(
limit308 = (* (( (ptr) faces←v14208)+7) ),
BCK(facePtr←v22244, limit308)
)) ))+8) ) - (* (( (ptr) (* ((( (ptr) curves←v14264)+1)+(
limit309 = (* (ptr) curves←v14264 ),
BCK(curvePtr←v22272, limit309)
)) ))+8) ));
};
if (( (int)var←c55544 == (int)0)) {
SOURCE(32599, 628)
{
word slice←v22360;
SOURCE(32635, 78)
{
word limit311;
slice←v22360 = (* (ptr) XR←Narrow((* (( (ptr) (* (( (ptr) (* ((( (ptr) faces←v14208)+8)+(
/*1*/ limit311 = (* (( (ptr) faces←v14208)+7) ),
/*1*/ BCK(facePtr←v22244, limit311)
/*1*/ )) ))+5) ))+1) ), (* (( (ptr) gf←c60952)+64) )) );
};
SOURCE(32715, 384)
{
word pd312;
pd312 = (* (( (ptr) (* (( (ptr) gf←c60952)+210)/* var←c55576 */ ))+62) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd312 ))))(slice←v22360, pd312))) {
SOURCE(32748, 450)
{
word facePath←v22404 = 0;
word curvePath←v22432 = 0;
word faceHitData←v22460 = 0;
word curveHitData←v22488 = 0;
SOURCE(32814, 79)
{
W2 var←c55608;
{
/*1*/ word pd313;
/*1*/ word limit314;
/*1*/ pd313 = (* (( (ptr) (* (( (ptr) gf←c60952)+210)/* var←c55576 */ ))+45) );
/*1*/ (void) ( *( (fPt) ((* (ptr) pd313 ))))((word) &var←c55608, slice←v22360, (* (( (ptr) (* ((( (ptr) faces←v14208)+8)+(
/*1*/ limit314 = (* (( (ptr) faces←v14208)+7) ),
/*1*/ BCK(facePtr←v22244, limit314)
/*1*/ )) ))+6) ), pd313);
/*1*/ };
faceHitData←v22460 = var←c55608.f1;
facePath←v22404 = var←c55608.f0;
};
SOURCE(32895, 83)
{
W2 var←c55640;
{
/*1*/ word pd315;
/*1*/ word limit316;
/*1*/ pd315 = (* (( (ptr) (* (( (ptr) gf←c60952)+210)/* var←c55576 */ ))+45) );
/*1*/ (void) ( *( (fPt) ((* (ptr) pd315 ))))((word) &var←c55640, slice←v22360, (* (( (ptr) (* ((( (ptr) curves←v14264)+1)+(
/*1*/ limit316 = (* (ptr) curves←v14264 ),
/*1*/ BCK(curvePtr←v22272, limit316)
/*1*/ )) ))+6) ), pd315);
/*1*/ };
curveHitData←v22488 = var←c55640.f1;
curvePath←v22432 = var←c55640.f0;
};
SOURCE(32980, 29)
if ((facePath←v22404 == curvePath←v22432)) {
SOURCE(33009, 20)
goto lab←L100138;
};
SOURCE(33031, 68)
{
word var←c55672;
{
/*1*/ word pd317;
/*1*/ pd317 = (* (( (ptr) (* (( (ptr) gf←c60952)+210)/* var←c55576 */ ))+67) );
/*1*/ var←c55672 = (word) ( *( (fPt) ((* (ptr) pd317 ))))(facePath←v22404, curvePath←v22432, pd317);
/*1*/ };
switch (var←c55672) {
/*1*/ case 0:
SOURCE(33099, 18)
/*1*/ goto lab←L100140;
/*1*/ case 2:
SOURCE(33130, 17)
/*1*/ goto lab←L100139;
/*1*/ case 1:
SOURCE(33158, 20)
/*1*/ goto lab←L100138;
/*1*/ default:
SOURCE(33191, 5)
/*1*/ (void) XR←RaiseUnnamedError();
/*1*/ break;
/*1*/ };
};
};
}
else {
SOURCE(33205, 20)
goto lab←L100138;
};
};
};
goto endif0310;
};
if (( (int)var←c55544 > (int)0)) {
SOURCE(33237, 17)
goto lab←L100139;
};
if (( (int)var←c55544 < (int)0)) {
SOURCE(33263, 18)
goto lab←L100140;
};
SOURCE(33294, 5)
(void) XR←RaiseUnnamedError();
goto endif0310;
endif0310: ;
};
/* removed dead code */
lab←L100138: ;
SOURCE(33328, 29)
{
word limit318;
word limit319;
(* ((( (ptr) nearVEF←v14336)+1)+(
limit318 = (* (ptr) nearVEF←v14336 ),
BCK(i←v22316, limit318)
)) ) = (* ((( (ptr) curves←v14264)+1)+(
limit319 = (* (ptr) curves←v14264 ),
BCK(curvePtr←v22272, limit319)
)) );
};
SOURCE(33359, 23)
curvePtr←v22272 = (curvePtr←v22272 + 1);
SOURCE(33384, 21)
facePtr←v22244 = (facePtr←v22244 + 1);
SOURCE(33407, 17)
total←v14364 = SGNCK((total←v14364 - 1));
goto lab←L100141;
lab←L100139: ;
SOURCE(33479, 27)
{
word limit320;
word limit321;
(* ((( (ptr) nearVEF←v14336)+1)+(
limit320 = (* (ptr) nearVEF←v14336 ),
BCK(i←v22316, limit320)
)) ) = (* ((( (ptr) faces←v14208)+8)+(
limit321 = (* (( (ptr) faces←v14208)+7) ),
BCK(facePtr←v22244, limit321)
)) );
};
SOURCE(33508, 21)
facePtr←v22244 = (facePtr←v22244 + 1);
goto lab←L100141;
lab←L100140: ;
SOURCE(33553, 29)
{
word limit322;
word limit323;
(* ((( (ptr) nearVEF←v14336)+1)+(
limit322 = (* (ptr) nearVEF←v14336 ),
BCK(i←v22316, limit322)
)) ) = (* ((( (ptr) curves←v14264)+1)+(
limit323 = (* (ptr) curves←v14264 ),
BCK(curvePtr←v22272, limit323)
)) );
};
SOURCE(33584, 23)
curvePtr←v22272 = (curvePtr←v22272 + 1);
lab←L100141: ;
i←v22316 = (i←v22316 + 1);
if ((i←v22316 < noName←c55512)) {
goto lab←L100137;
};
goto lab←L100132;
lab←L100135: ;
SOURCE(33670, 90)
{
register word k←v22544;
k←v22544 = i←v22316;
lab←L100145: ;
if ((k←v22544 < total←v14364)) {
}
else {
goto lab←L100142;
};
SOURCE(33710, 27)
{
word limit324;
word limit325;
(* ((( (ptr) nearVEF←v14336)+1)+(
limit324 = (* (ptr) nearVEF←v14336 ),
BCK(k←v22544, limit324)
)) ) = (* ((( (ptr) faces←v14208)+8)+(
limit325 = (* (( (ptr) faces←v14208)+7) ),
BCK(facePtr←v22244, limit325)
)) );
};
SOURCE(33739, 21)
facePtr←v22244 = (facePtr←v22244 + 1);
k←v22544 = (k←v22544 + 1);
goto lab←L100145;
lab←L100142: ;
};
goto lab←L100133;
lab←L100136: ;
SOURCE(33818, 94)
{
register word k←v22588;
k←v22588 = i←v22316;
lab←L100149: ;
if ((k←v22588 < total←v14364)) {
}
else {
goto lab←L100146;
};
SOURCE(33858, 29)
{
word limit326;
word limit327;
(* ((( (ptr) nearVEF←v14336)+1)+(
limit326 = (* (ptr) nearVEF←v14336 ),
BCK(k←v22588, limit326)
)) ) = (* ((( (ptr) curves←v14264)+1)+(
limit327 = (* (ptr) curves←v14264 ),
BCK(curvePtr←v22272, limit327)
)) );
};
SOURCE(33889, 23)
curvePtr←v22272 = (curvePtr←v22272 + 1);
k←v22588 = (k←v22588 + 1);
goto lab←L100149;
lab←L100146: ;
};
goto lab←L100133;
lab←L100132: ;
lab←L100133: ;
};
/* removed tail goto */
(* (ptr) formal←c0608 ) = nearVEF←v14336;
(* (( (ptr) formal←c0608)+1) ) = total←v14364;
return;
}
static void SortPoints←P1980(bestPoints←v14424, pointCount←v14452)
word bestPoints←v14424;
word pointCount←v14452;
{
word temp←v22632 = 0;
/* SortPoints: */
SOURCE(33973, 287)
SOURCE(34053, 207)
{
register word i←v22676 = 0;
register word noName←c55704;
noName←c55704 = (pointCount←v14452 - 2);
if (( (int)i←v22676 > (int)noName←c55704)) {
goto lab←L100150;
};
lab←L100153: ;
SOURCE(34092, 168)
{
register word j←v22720 = 1;
register word noName←c55736;
word var←c55768;
word var←c01031;
noName←c55736 = (pointCount←v14452 - i←v22676);
if (( (int)j←v22720 >= (int)noName←c55736)) {
goto lab←L100154;
};
lab←L100157: ;
SOURCE(34131, 129)
{
word x329;
word limit330;
word x331;
{
word limit328;
var←c55768 = (j←v22720 - 1);
var←c01031 = (* (ptr) (* ((( (ptr) bestPoints←v14424)+10)+(
limit328 = (* (( (ptr) bestPoints←v14424)+9) ),
BCK(var←c55768, limit328)
)) ) );
};
if (((
x329 = var←c01031, *(float*)&x329
) > (
x331 = (* (ptr) (* ((( (ptr) bestPoints←v14424)+10)+(
limit330 = (* (( (ptr) bestPoints←v14424)+9) ),
BCK(j←v22720, limit330)
)) ) ), *(float*)&x331
))) {
SOURCE(34183, 20)
{
word limit332;
temp←v22632 = (* ((( (ptr) bestPoints←v14424)+10)+(
limit332 = (* (( (ptr) bestPoints←v14424)+9) ),
BCK(j←v22720, limit332)
)) );
};
SOURCE(34205, 31)
{
word var←c55800;
var←c55800 = (j←v22720 - 1);
{
word limit333;
word limit334;
(* ((( (ptr) bestPoints←v14424)+10)+(
limit333 = (* (( (ptr) bestPoints←v14424)+9) ),
BCK(j←v22720, limit333)
)) ) = (* ((( (ptr) bestPoints←v14424)+10)+(
limit334 = (* (( (ptr) bestPoints←v14424)+9) ),
BCK(var←c55800, limit334)
)) );
};
};
SOURCE(34238, 22)
{
word var←c55832;
var←c55832 = (j←v22720 - 1);
{
word limit335;
(* ((( (ptr) bestPoints←v14424)+10)+(
limit335 = (* (( (ptr) bestPoints←v14424)+9) ),
BCK(var←c55832, limit335)
)) ) = temp←v22632;
};
};
};
};
j←v22720 = (j←v22720 + 1);
if (( (int)j←v22720 < (int)noName←c55736)) {
goto lab←L100157;
};
lab←L100154: ;
};
if (( (int)i←v22676 >= (int)noName←c55704)) {
goto lab←L100150;
};
i←v22676 = (i←v22676 + 1);
goto lab←L100153;
lab←L100150: ;
};
}
static void SortCurves←P2040(bestCurves←v14512, curveCount←v14540)
word bestCurves←v14512;
word curveCount←v14540;
{
word temp←v22764 = 0;
/* SortCurves: */
SOURCE(34287, 287)
SOURCE(34367, 207)
{
register word i←v22808 = 0;
register word noName←c55864;
noName←c55864 = (curveCount←v14540 - 2);
if (( (int)i←v22808 > (int)noName←c55864)) {
goto lab←L100158;
};
lab←L100161: ;
SOURCE(34406, 168)
{
register word j←v22852 = 1;
register word noName←c55896;
word var←c55928;
word var←c01032;
noName←c55896 = (curveCount←v14540 - i←v22808);
if (( (int)j←v22852 >= (int)noName←c55896)) {
goto lab←L100162;
};
lab←L100165: ;
SOURCE(34445, 129)
{
word x337;
word limit338;
word x339;
{
word limit336;
var←c55928 = (j←v22852 - 1);
var←c01032 = (* (ptr) (* ((( (ptr) bestCurves←v14512)+10)+(
limit336 = (* (( (ptr) bestCurves←v14512)+9) ),
BCK(var←c55928, limit336)
)) ) );
};
if (((
x337 = var←c01032, *(float*)&x337
) > (
x339 = (* (ptr) (* ((( (ptr) bestCurves←v14512)+10)+(
limit338 = (* (( (ptr) bestCurves←v14512)+9) ),
BCK(j←v22852, limit338)
)) ) ), *(float*)&x339
))) {
SOURCE(34497, 20)
{
word limit340;
temp←v22764 = (* ((( (ptr) bestCurves←v14512)+10)+(
limit340 = (* (( (ptr) bestCurves←v14512)+9) ),
BCK(j←v22852, limit340)
)) );
};
SOURCE(34519, 31)
{
word var←c55960;
var←c55960 = (j←v22852 - 1);
{
word limit341;
word limit342;
(* ((( (ptr) bestCurves←v14512)+10)+(
limit341 = (* (( (ptr) bestCurves←v14512)+9) ),
BCK(j←v22852, limit341)
)) ) = (* ((( (ptr) bestCurves←v14512)+10)+(
limit342 = (* (( (ptr) bestCurves←v14512)+9) ),
BCK(var←c55960, limit342)
)) );
};
};
SOURCE(34552, 22)
{
word var←c55992;
var←c55992 = (j←v22852 - 1);
{
word limit343;
(* ((( (ptr) bestCurves←v14512)+10)+(
limit343 = (* (( (ptr) bestCurves←v14512)+9) ),
BCK(var←c55992, limit343)
)) ) = temp←v22764;
};
};
};
};
j←v22852 = (j←v22852 + 1);
if (( (int)j←v22852 < (int)noName←c55896)) {
goto lab←L100165;
};
lab←L100162: ;
};
if (( (int)i←v22808 >= (int)noName←c55864)) {
goto lab←L100158;
};
i←v22808 = (i←v22808 + 1);
goto lab←L100161;
lab←L100158: ;
};
}
static void SortFaces←P2100(bestFaces←v14600, faceCount←v14628)
word bestFaces←v14600;
word faceCount←v14628;
{
word temp←v22896 = 0;
/* SortFaces: */
SOURCE(34601, 283)
SOURCE(34677, 207)
{
register word i←v22940 = 0;
register word noName←c56024;
noName←c56024 = (faceCount←v14628 - 2);
if (( (int)i←v22940 > (int)noName←c56024)) {
goto lab←L100166;
};
lab←L100169: ;
SOURCE(34715, 169)
{
register word j←v22984 = 1;
register word noName←c56056;
word var←c56088;
word var←c01033;
noName←c56056 = (faceCount←v14628 - i←v22940);
if (( (int)j←v22984 >= (int)noName←c56056)) {
goto lab←L100170;
};
lab←L100173: ;
SOURCE(34753, 131)
{
word limit345;
{
word limit344;
var←c56088 = (j←v22984 - 1);
var←c01033 = (* (( (ptr) (* ((( (ptr) bestFaces←v14600)+8)+(
limit344 = (* (( (ptr) bestFaces←v14600)+7) ),
BCK(var←c56088, limit344)
)) ))+8) );
};
if (( (int)var←c01033 < (int)(* (( (ptr) (* ((( (ptr) bestFaces←v14600)+8)+(
limit345 = (* (( (ptr) bestFaces←v14600)+7) ),
BCK(j←v22984, limit345)
)) ))+8) ))) {
SOURCE(34811, 19)
{
word limit346;
temp←v22896 = (* ((( (ptr) bestFaces←v14600)+8)+(
limit346 = (* (( (ptr) bestFaces←v14600)+7) ),
BCK(j←v22984, limit346)
)) );
};
SOURCE(34832, 29)
{
word var←c56120;
var←c56120 = (j←v22984 - 1);
{
word limit347;
word limit348;
(* ((( (ptr) bestFaces←v14600)+8)+(
limit347 = (* (( (ptr) bestFaces←v14600)+7) ),
BCK(j←v22984, limit347)
)) ) = (* ((( (ptr) bestFaces←v14600)+8)+(
limit348 = (* (( (ptr) bestFaces←v14600)+7) ),
BCK(var←c56120, limit348)
)) );
};
};
SOURCE(34863, 21)
{
word var←c56152;
var←c56152 = (j←v22984 - 1);
{
word limit349;
(* ((( (ptr) bestFaces←v14600)+8)+(
limit349 = (* (( (ptr) bestFaces←v14600)+7) ),
BCK(var←c56152, limit349)
)) ) = temp←v22896;
};
};
};
};
j←v22984 = (j←v22984 + 1);
if (( (int)j←v22984 < (int)noName←c56056)) {
goto lab←L100173;
};
lab←L100170: ;
};
if (( (int)i←v22940 >= (int)noName←c56024)) {
goto lab←L100166;
};
i←v22940 = (i←v22940 + 1);
goto lab←L100169;
lab←L100166: ;
};
}
static void SortByOverlap←P2160(faces←v14688, count←v14716)
word faces←v14688;
word count←v14716;
{
word temp←v23028 = 0;
/* SortByOverlap: */
SOURCE(34911, 247)
SOURCE(34983, 175)
{
register word i←v23072 = 0;
register word noName←c56184;
noName←c56184 = (count←v14716 - 2);
if (( (int)i←v23072 > (int)noName←c56184)) {
goto lab←L100174;
};
lab←L100177: ;
SOURCE(35017, 141)
{
register word j←v23116 = 1;
register word noName←c56216;
word var←c56248;
word var←c01034;
noName←c56216 = (count←v14716 - i←v23072);
if (( (int)j←v23116 >= (int)noName←c56216)) {
goto lab←L100178;
};
lab←L100181: ;
SOURCE(35051, 107)
{
word limit351;
{
word limit350;
var←c56248 = (j←v23116 - 1);
var←c01034 = (* (( (ptr) (* ((( (ptr) faces←v14688)+8)+(
limit350 = (* (( (ptr) faces←v14688)+7) ),
BCK(var←c56248, limit350)
)) ))+8) );
};
if (( (int)var←c01034 < (int)(* (( (ptr) (* ((( (ptr) faces←v14688)+8)+(
limit351 = (* (( (ptr) faces←v14688)+7) ),
BCK(j←v23116, limit351)
)) ))+8) ))) {
SOURCE(35101, 15)
{
word limit352;
temp←v23028 = (* ((( (ptr) faces←v14688)+8)+(
limit352 = (* (( (ptr) faces←v14688)+7) ),
BCK(j←v23116, limit352)
)) );
};
SOURCE(35118, 21)
{
word var←c56280;
var←c56280 = (j←v23116 - 1);
{
word limit353;
word limit354;
(* ((( (ptr) faces←v14688)+8)+(
limit353 = (* (( (ptr) faces←v14688)+7) ),
BCK(j←v23116, limit353)
)) ) = (* ((( (ptr) faces←v14688)+8)+(
limit354 = (* (( (ptr) faces←v14688)+7) ),
BCK(var←c56280, limit354)
)) );
};
};
SOURCE(35141, 17)
{
word var←c56312;
var←c56312 = (j←v23116 - 1);
{
word limit355;
(* ((( (ptr) faces←v14688)+8)+(
limit355 = (* (( (ptr) faces←v14688)+7) ),
BCK(var←c56312, limit355)
)) ) = temp←v23028;
};
};
};
};
j←v23116 = (j←v23116 + 1);
if (( (int)j←v23116 < (int)noName←c56216)) {
goto lab←L100181;
};
lab←L100178: ;
};
if (( (int)i←v23072 >= (int)noName←c56184)) {
goto lab←L100174;
};
i←v23072 = (i←v23072 + 1);
goto lab←L100177;
lab←L100174: ;
};
}
static void ComputeMidpoint←P2220(formal←c0665, curve←v14776)
word formal←c0665;
word curve←v14776;
{
register ptr gf←c60984 = (ptr) &globalframe;
W2 midpoint←v14820;
word success←v14848;
word class←v23160;
word simpleCurve←v23188 = 0;
/* ComputeMidpoint: */
SOURCE(35184, 488)
SOURCE(35184, 488)
success←v14848 = 1;
SOURCE(35311, 43)
{
W2 var←c56344;
(void) ClassifyCurve←P2280((word) &var←c56344, curve←v14776);
simpleCurve←v23188 = var←c56344.f1;
class←v23160 = var←c56344.f0;
};
SOURCE(35356, 316)
{
word var←c56376;
var←c56376 = class←v23160;
if ((var←c56376 == 3)) {
SOURCE(35379, 130)
{
word edge←v23244;
SOURCE(35389, 32)
edge←v23244 = XR←Narrow(simpleCurve←v23188, (* (( (ptr) gf←c60984)+76) ));
SOURCE(35423, 68)
{
W2 var←c56408;
{
word pd356;
pd356 = (* (( (ptr) (* (( (ptr) gf←c60984)+205)/* var←c54008 */ ))+10) );
(void) ( *( (fPt) ((* (ptr) pd356 ))))((word) &var←c56408, (* (W2Pt) (( (ptr) edge←v23244)+2) ), (* (W2Pt) (( (ptr) edge←v23244)+4)
), pd356);
};
{
W2 var←c0660;
{
word pd357;
pd357 = (* (( (ptr) (* (( (ptr) gf←c60984)+205)/* var←c54008 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd357 ))))((word) &var←c0660, var←c56408, (* (ptr) &fc358 ), pd357);
};
midpoint←v14820 = var←c0660;
};
};
SOURCE(35493, 14)
success←v14848 = 1;
};
}
else {
if ((var←c56376 == 4)) {
SOURCE(35517, 121)
{
word arc←v23288;
SOURCE(35526, 30)
arc←v23288 = XR←Narrow(simpleCurve←v23188, (* (( (ptr) gf←c60984)+77) ));
SOURCE(35558, 62)
{
W2 var←c56440;
{
word pd359;
pd359 = (* (( (ptr) (* (( (ptr) gf←c60984)+205)/* var←c54008 */ ))+10) );
(void) ( *( (fPt) ((* (ptr) pd359 ))))((word) &var←c56440, (* (W2Pt) (( (ptr) arc←v23288)+2) ), (* (W2Pt) (( (ptr) arc←v23288)+4)
), pd359);
};
{
W2 var←c0664;
{
word pd360;
pd360 = (* (( (ptr) (* (( (ptr) gf←c60984)+205)/* var←c54008 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd360 ))))((word) &var←c0664, var←c56440, (* (ptr) &fc358 ), pd360);
};
midpoint←v14820 = var←c0664;
};
};
SOURCE(35622, 14)
success←v14848 = 1;
};
}
else {
SOURCE(35652, 20)
midpoint←v14820.f0 = (* (ptr) &fc58 );
midpoint←v14820.f1 = (* (ptr) &fc58 );
success←v14848 = 0;
goto lab←L100182;
};
};
};
/* removed tail goto */
lab←L100182: ;
(* (W2Pt) formal←c0665 ) = midpoint←v14820;
(* (( (ptr) formal←c0665)+2) ) = success←v14848;
return;
}
static void ClassifyCurve←P2280(formal←c0679, curve←v14908)
word formal←c0679;
word curve←v14908;
{
register ptr gf←c61016 = (ptr) &globalframe;
word class←v14952;
word simpleCurve←v14980;
word feature←v23332;
/* ClassifyCurve: */
SOURCE(35678, 867)
SOURCE(35678, 867)
simpleCurve←v14980 = 0;
SOURCE(35764, 40)
feature←v23332 = (* (( (ptr) curve←v14908)+5) );
SOURCE(35806, 601)
{
word var←c56504;
var←c56504 = (* (ptr) feature←v23332 );
switch (var←c56504) {
case 0:
SOURCE(35840, 227)
{
word sliceD←v23376;
word hitData←v23404;
SOURCE(35842, 47)
sliceD←v23376 = XR←Narrow((* (( (ptr) feature←v23332)+1) ), (* (( (ptr) gf←c61016)+64) ));
SOURCE(35891, 32)
hitData←v23404 = (* (( (ptr) curve←v14908)+6) );
SOURCE(35925, 68)
{
word pd361;
pd361 = (* (( (ptr) (* (( (ptr) gf←c61016)+208)/* var←c54328 */ ))+51) );
simpleCurve←v14980 = (word) ( *( (fPt) ((* (ptr) pd361 ))))((* (ptr) sliceD←v23376 ), hitData←v23404, pd361);
};
SOURCE(35995, 67)
if ((simpleCurve←v14980 == 0)) {
SOURCE(36023, 20)
simpleCurve←v14980 = sliceD←v23376;
SOURCE(36045, 9)
class←v14952 = 6;
SOURCE(36056, 6)
goto lab←L100183;
};
};
break;
case 5:
SOURCE(36087, 9)
class←v14952 = 2;
SOURCE(36098, 59)
simpleCurve←v14980 = (* (ptr) XR←Narrow((* (( (ptr) feature←v23332)+1) ), (* (( (ptr) gf←c61016)+69) )) );
SOURCE(36159, 6)
goto lab←L100183;
case 2: case 3:
SOURCE(36196, 9)
class←v14952 = 1;
SOURCE(36207, 55)
simpleCurve←v14980 = (* (ptr) XR←Narrow((* (( (ptr) feature←v23332)+1) ), (* (( (ptr) gf←c61016)+67) )) );
SOURCE(36264, 6)
goto lab←L100183;
case 1:
SOURCE(36293, 9)
class←v14952 = 1;
SOURCE(36304, 41)
simpleCurve←v14980 = XR←Narrow((* (( (ptr) feature←v23332)+1) ), (* (( (ptr) gf←c61016)+68) ));
SOURCE(36347, 6)
goto lab←L100183;
default:
SOURCE(36370, 9)
class←v14952 = 0;
SOURCE(36382, 17)
simpleCurve←v14980 = 0;
SOURCE(36401, 6)
goto lab←L100183;
};
};
SOURCE(36410, 135)
{
word var←c56536;
word var←c56568;
var←c56536 = simpleCurve←v14980;
if ((var←c56536 == 0)) {
goto lab←L100184;
};
var←c56568 = XR←GetReferentType(var←c56536);
if (((* (( (ptr) gf←c61016)+78) ) == var←c56568)) {
{
word circle←v23460;
circle←v23460 = var←c56536;
SOURCE(36457, 9)
class←v14952 = 2;
};
goto endif0362;
};
if (((* (( (ptr) gf←c61016)+76) ) == var←c56568)) {
{
word edge←v23504;
edge←v23504 = var←c56536;
SOURCE(36482, 9)
class←v14952 = 3;
};
goto endif0362;
};
if (((* (( (ptr) gf←c61016)+77) ) == var←c56568)) {
{
word arc←v23548;
arc←v23548 = var←c56536;
SOURCE(36505, 9)
class←v14952 = 4;
};
goto endif0362;
};
if (((* (( (ptr) gf←c61016)+79) ) == var←c56568)) {
{
word cubic←v23592;
cubic←v23592 = var←c56536;
SOURCE(36536, 9)
class←v14952 = 5;
};
goto endif0362;
};
lab←L100184: ;
SOURCE(36558, 5)
(void) XR←RaiseUnnamedError();
goto endif0362;
endif0362: ;
};
/* removed tail goto */
lab←L100183: ;
(* (ptr) formal←c0679 ) = class←v14952;
(* (( (ptr) formal←c0679)+1) ) = simpleCurve←v14980;
return;
}
static void CurveMeetsCurve←P2340(formal←c0696, c1←v15052, c2←v15080)
word formal←c0696;
word c1←v15052;
word c2←v15080;
{
register ptr gf←c61048 = (ptr) &globalframe;
word iPoints←v15124;
word tangency←v15152;
word typeOfCurve1←v23636;
word typeOfCurve2←v23664;
word simpleCurve1←v23692 = 0;
word simpleCurve2←v23720 = 0;
/* CurveMeetsCurve: */
SOURCE(36569, 511)
SOURCE(36569, 511)
iPoints←v15124 = 0;
SOURCE(36569, 511)
tangency←v15152 = 0;
SOURCE(36742, 48)
{
W2 var←c56600;
(void) ClassifyCurve←P2280((word) &var←c56600, c1←v15052);
simpleCurve1←v23692 = var←c56600.f1;
typeOfCurve1←v23636 = var←c56600.f0;
};
SOURCE(36792, 48)
{
W2 var←c56632;
(void) ClassifyCurve←P2280((word) &var←c56632, c2←v15080);
simpleCurve2←v23720 = var←c56632.f1;
typeOfCurve2←v23664 = var←c56632.f0;
};
SOURCE(36842, 238)
if ((typeOfCurve1←v23636 >= typeOfCurve2←v23664)) {
SOURCE(36879, 103)
{
W2 var←c56664;
{
word pd363;
pd363 = (* (( (ptr) (( (W7Pt) (( (ptr) gf←c61048)+5)/* ComputeIntersection←v5716 */ )+BCK(typeOfCurve1←v23636, 7)))+BCK(typeOfCurve2←v23664, 7)
) );
(void) ( *( (fPt) ((* (ptr) pd363 ))))((word) &var←c56664, simpleCurve1←v23692, simpleCurve2←v23720, pd363);
};
tangency←v15152 = var←c56664.f1;
iPoints←v15124 = var←c56664.f0;
};
}
else {
SOURCE(36982, 98)
{
W2 var←c56696;
{
word pd364;
pd364 = (* (( (ptr) (( (W7Pt) (( (ptr) gf←c61048)+5)/* ComputeIntersection←v5716 */ )+BCK(typeOfCurve2←v23664, 7)))+BCK(typeOfCurve1←v23636, 7)
) );
(void) ( *( (fPt) ((* (ptr) pd364 ))))((word) &var←c56696, simpleCurve2←v23720, simpleCurve1←v23692, pd364);
};
tangency←v15152 = var←c56696.f1;
iPoints←v15124 = var←c56696.f0;
};
};
/* removed tail goto */
(* (ptr) formal←c0696 ) = iPoints←v15124;
(* (( (ptr) formal←c0696)+1) ) = tangency←v15152;
return;
}
static void NoOpI←P2400(formal←c0701, c1←v30400, c2←v30428)
word formal←c0701;
word c1←v30400;
word c2←v30428;
{
word iPoints←v30472;
word tangency←v30500;
/* NoOpI: */
SOURCE(37696, 57)
SOURCE(37696, 57)
iPoints←v30472 = 0;
SOURCE(37696, 57)
tangency←v30500 = 0;
SOURCE(37724, 13)
iPoints←v30472 = 0;
SOURCE(37739, 14)
tangency←v30500 = 0;
/* removed tail goto */
(* (ptr) formal←c0701 ) = iPoints←v30472;
(* (( (ptr) formal←c0701)+1) ) = tangency←v30500;
return;
}
static void LinLinI←P2460(formal←c0715, c1←v30560, c2←v30588)
word formal←c0715;
word c1←v30560;
word c2←v30588;
{
register ptr gf←c61080 = (ptr) &globalframe;
word iPoints←v30632;
word tangency←v30660;
word l1←v23776;
word l2←v23804;
W2 point←v23832;
word parallel←v23860 = 0;
/* LinLinI: */
SOURCE(37759, 269)
SOURCE(37759, 269)
iPoints←v30632 = 0;
SOURCE(37759, 269)
tangency←v30660 = 0;
SOURCE(37789, 21)
l1←v23776 = XR←Narrow(c1←v30560, (* (( (ptr) gf←c61080)+68) ));
SOURCE(37812, 21)
l2←v23804 = XR←Narrow(c2←v30588, (* (( (ptr) gf←c61080)+68) ));
SOURCE(37873, 49)
{
W3 var←c56728;
{
word pd365;
pd365 = (* (( (ptr) (* (( (ptr) gf←c61080)+209)/* var←c54776 */ ))+33) );
(void) ( *( (fPt) ((* (ptr) pd365 ))))((word) &var←c56728, l1←v23776, l2←v23804, pd365);
};
parallel←v23860 = var←c56728.f2;
point←v23832 = (* (W2Pt) &var←c56728 );
};
SOURCE(37924, 104)
if ((0 == parallel←v23860)) {
SOURCE(37946, 21)
{
word var←c56760;
word var←c56792;
var←c56760 = XR←NewObject(12, (* (( (ptr) gf←c61080)+75) ));
var←c56792 = var←c56760;
(* (W2Pt) var←c56792 ) = point←v23832;
iPoints←v30632 = var←c56760;
};
SOURCE(37969, 22)
tangency←v30660 = XR←NewObject(8, (* (( (ptr) gf←c61080)+71) ));
{
word var←c56856;
var←c56856 = tangency←v30660;
};
}
else {
SOURCE(37999, 13)
iPoints←v30632 = 0;
SOURCE(38014, 14)
tangency←v30660 = 0;
};
/* removed tail goto */
(* (ptr) formal←c0715 ) = iPoints←v30632;
(* (( (ptr) formal←c0715)+1) ) = tangency←v30660;
return;
}
static void CirLinI←P2520(formal←c0731, c1←v30720, c2←v30748)
word formal←c0731;
word c1←v30720;
word c2←v30748;
{
register ptr gf←c61112 = (ptr) &globalframe;
word iPoints←v30792;
word tangency←v30820;
word circle←v23904;
word line←v23932;
W4 points←v23960;
word hitCount←v23988;
word tangent←v24016 = 0;
/* CirLinI: */
SOURCE(38035, 328)
SOURCE(38035, 328)
iPoints←v30792 = 0;
SOURCE(38035, 328)
tangency←v30820 = 0;
SOURCE(38065, 27)
circle←v23904 = XR←Narrow(c1←v30720, (* (( (ptr) gf←c61112)+78) ));
SOURCE(38094, 23)
line←v23932 = XR←Narrow(c2←v30748, (* (( (ptr) gf←c61112)+68) ));
SOURCE(38191, 69)
{
W6 var←c56920;
{
word pd366;
pd366 = (* (( (ptr) (* (( (ptr) gf←c61112)+211)/* var←c56888 */ ))+10) );
(void) ( *( (fPt) ((* (ptr) pd366 ))))((word) &var←c56920, circle←v23904, line←v23932, pd366);
};
tangent←v24016 = var←c56920.f5;
hitCount←v23988 = var←c56920.f4;
points←v23960 = (* (W4Pt) &var←c56920 );
};
SOURCE(38262, 101)
{
register word i←v24116 = 1;
register word noName←c56952;
noName←c56952 = hitCount←v23988;
if ((i←v24116 > noName←c56952)) {
goto lab←L100189;
};
lab←L100192: ;
SOURCE(38293, 34)
{
word var←c56984;
var←c56984 = XR←NewObject(12, (* (( (ptr) gf←c61112)+75) ));
(* (W2Pt) var←c56984 ) = (* (( (W2Pt) &points←v23960)+BCK((i←v24116 - 1), 2)) );
(* (( (ptr) var←c56984)+2) ) = iPoints←v30792;
iPoints←v30792 = var←c56984;
};
SOURCE(38329, 34)
{
word var←c57016;
var←c57016 = XR←NewObject(8, (* (( (ptr) gf←c61112)+71) ));
(* (ptr) var←c57016 ) = tangent←v24016;
(* (( (ptr) var←c57016)+1) ) = tangency←v30820;
tangency←v30820 = var←c57016;
};
if ((i←v24116 >= noName←c56952)) {
goto lab←L100189;
};
i←v24116 = (i←v24116 + 1);
goto lab←L100192;
lab←L100189: ;
};
/* removed tail goto */
(* (ptr) formal←c0731 ) = iPoints←v30792;
(* (( (ptr) formal←c0731)+1) ) = tangency←v30820;
return;
}
static void CirCirI←P2580(formal←c0747, c1←v30880, c2←v30908)
word formal←c0747;
word c1←v30880;
word c2←v30908;
{
register ptr gf←c61144 = (ptr) &globalframe;
word iPoints←v30952;
word tangency←v30980;
word circle1←v24160;
word circle2←v24188;
W4 points←v24216;
word hitCount←v24244;
word tangent←v24272 = 0;
/* CirCirI: */
SOURCE(38378, 340)
SOURCE(38378, 340)
iPoints←v30952 = 0;
SOURCE(38378, 340)
tangency←v30980 = 0;
SOURCE(38408, 28)
circle1←v24160 = XR←Narrow(c1←v30880, (* (( (ptr) gf←c61144)+78) ));
SOURCE(38438, 28)
circle2←v24188 = XR←Narrow(c2←v30908, (* (( (ptr) gf←c61144)+78) ));
SOURCE(38540, 75)
{
W6 var←c57048;
{
word pd367;
pd367 = (* (( (ptr) (* (( (ptr) gf←c61144)+211)/* var←c56888 */ ))+12) );
(void) ( *( (fPt) ((* (ptr) pd367 ))))((word) &var←c57048, circle1←v24160, circle2←v24188, pd367);
};
tangent←v24272 = var←c57048.f5;
hitCount←v24244 = var←c57048.f4;
points←v24216 = (* (W4Pt) &var←c57048 );
};
SOURCE(38617, 101)
{
register word i←v24372 = 1;
register word noName←c57080;
noName←c57080 = hitCount←v24244;
if ((i←v24372 > noName←c57080)) {
goto lab←L100194;
};
lab←L100197: ;
SOURCE(38648, 34)
{
word var←c57112;
var←c57112 = XR←NewObject(12, (* (( (ptr) gf←c61144)+75) ));
(* (W2Pt) var←c57112 ) = (* (( (W2Pt) &points←v24216)+BCK((i←v24372 - 1), 2)) );
(* (( (ptr) var←c57112)+2) ) = iPoints←v30952;
iPoints←v30952 = var←c57112;
};
SOURCE(38684, 34)
{
word var←c57144;
var←c57144 = XR←NewObject(8, (* (( (ptr) gf←c61144)+71) ));
(* (ptr) var←c57144 ) = tangent←v24272;
(* (( (ptr) var←c57144)+1) ) = tangency←v30980;
tangency←v30980 = var←c57144;
};
if ((i←v24372 >= noName←c57080)) {
goto lab←L100194;
};
i←v24372 = (i←v24372 + 1);
goto lab←L100197;
lab←L100194: ;
};
/* removed tail goto */
(* (ptr) formal←c0747 ) = iPoints←v30952;
(* (( (ptr) formal←c0747)+1) ) = tangency←v30980;
return;
}
static void EdgLinI←P2640(formal←c0761, c1←v31040, c2←v31068)
word formal←c0761;
word c1←v31040;
word c2←v31068;
{
register ptr gf←c61176 = (ptr) &globalframe;
word iPoints←v31112;
word tangency←v31140;
word edge←v24416;
word line←v24444;
W2 point←v24472;
word noHit←v24500 = 0;
/* EdgLinI: */
SOURCE(38733, 268)
SOURCE(38733, 268)
iPoints←v31112 = 0;
SOURCE(38733, 268)
tangency←v31140 = 0;
SOURCE(38763, 23)
edge←v24416 = XR←Narrow(c1←v31040, (* (( (ptr) gf←c61176)+76) ));
SOURCE(38788, 23)
line←v24444 = XR←Narrow(c2←v31068, (* (( (ptr) gf←c61176)+68) ));
SOURCE(38848, 50)
{
W3 var←c57176;
{
word pd368;
pd368 = (* (( (ptr) (* (( (ptr) gf←c61176)+209)/* var←c54776 */ ))+35) );
(void) ( *( (fPt) ((* (ptr) pd368 ))))((word) &var←c57176, line←v24444, edge←v24416, pd368);
};
noHit←v24500 = var←c57176.f2;
point←v24472 = (* (W2Pt) &var←c57176 );
};
SOURCE(38900, 101)
if ((0 == noHit←v24500)) {
SOURCE(38919, 21)
{
word var←c57208;
word var←c57240;
var←c57208 = XR←NewObject(12, (* (( (ptr) gf←c61176)+75) ));
var←c57240 = var←c57208;
(* (W2Pt) var←c57240 ) = point←v24472;
iPoints←v31112 = var←c57208;
};
SOURCE(38942, 22)
tangency←v31140 = XR←NewObject(8, (* (( (ptr) gf←c61176)+71) ));
{
word var←c57304;
var←c57304 = tangency←v31140;
};
}
else {
SOURCE(38972, 13)
iPoints←v31112 = 0;
SOURCE(38987, 14)
tangency←v31140 = 0;
};
/* removed tail goto */
(* (ptr) formal←c0761 ) = iPoints←v31112;
(* (( (ptr) formal←c0761)+1) ) = tangency←v31140;
return;
}
static void EdgCirI←P2700(formal←c0777, c1←v31200, c2←v31228)
word formal←c0777;
word c1←v31200;
word c2←v31228;
{
register ptr gf←c61208 = (ptr) &globalframe;
word iPoints←v31272;
word tangency←v31300;
word edge←v24544;
word circle←v24572;
W4 points←v24600;
word hitCount←v24628;
word tangent←v24656 = 0;
/* EdgCirI: */
SOURCE(39008, 328)
SOURCE(39008, 328)
iPoints←v31272 = 0;
SOURCE(39008, 328)
tangency←v31300 = 0;
SOURCE(39038, 23)
edge←v24544 = XR←Narrow(c1←v31200, (* (( (ptr) gf←c61208)+76) ));
SOURCE(39063, 27)
circle←v24572 = XR←Narrow(c2←v31228, (* (( (ptr) gf←c61208)+78) ));
SOURCE(39164, 69)
{
W6 var←c57336;
{
word pd369;
pd369 = (* (( (ptr) (* (( (ptr) gf←c61208)+211)/* var←c56888 */ ))+11) );
(void) ( *( (fPt) ((* (ptr) pd369 ))))((word) &var←c57336, circle←v24572, edge←v24544, pd369);
};
tangent←v24656 = var←c57336.f5;
hitCount←v24628 = var←c57336.f4;
points←v24600 = (* (W4Pt) &var←c57336 );
};
SOURCE(39235, 101)
{
register word i←v24756 = 1;
register word noName←c57368;
noName←c57368 = hitCount←v24628;
if ((i←v24756 > noName←c57368)) {
goto lab←L100200;
};
lab←L100203: ;
SOURCE(39266, 34)
{
word var←c57400;
var←c57400 = XR←NewObject(12, (* (( (ptr) gf←c61208)+75) ));
(* (W2Pt) var←c57400 ) = (* (( (W2Pt) &points←v24600)+BCK((i←v24756 - 1), 2)) );
(* (( (ptr) var←c57400)+2) ) = iPoints←v31272;
iPoints←v31272 = var←c57400;
};
SOURCE(39302, 34)
{
word var←c57432;
var←c57432 = XR←NewObject(8, (* (( (ptr) gf←c61208)+71) ));
(* (ptr) var←c57432 ) = tangent←v24656;
(* (( (ptr) var←c57432)+1) ) = tangency←v31300;
tangency←v31300 = var←c57432;
};
if ((i←v24756 >= noName←c57368)) {
goto lab←L100200;
};
i←v24756 = (i←v24756 + 1);
goto lab←L100203;
lab←L100200: ;
};
/* removed tail goto */
(* (ptr) formal←c0777 ) = iPoints←v31272;
(* (( (ptr) formal←c0777)+1) ) = tangency←v31300;
return;
}
static void EdgEdgI←P2760(formal←c0791, c1←v31360, c2←v31388)
word formal←c0791;
word c1←v31360;
word c2←v31388;
{
register ptr gf←c61240 = (ptr) &globalframe;
word iPoints←v31432;
word tangency←v31460;
word e1←v24800;
word e2←v24828;
W2 point←v24856;
word noHit←v24884 = 0;
/* EdgEdgI: */
SOURCE(39351, 260)
SOURCE(39351, 260)
iPoints←v31432 = 0;
SOURCE(39351, 260)
tangency←v31460 = 0;
SOURCE(39381, 21)
e1←v24800 = XR←Narrow(c1←v31360, (* (( (ptr) gf←c61240)+76) ));
SOURCE(39404, 21)
e2←v24828 = XR←Narrow(c2←v31388, (* (( (ptr) gf←c61240)+76) ));
SOURCE(39462, 46)
{
W3 var←c57464;
{
word pd370;
pd370 = (* (( (ptr) (* (( (ptr) gf←c61240)+209)/* var←c54776 */ ))+36) );
(void) ( *( (fPt) ((* (ptr) pd370 ))))((word) &var←c57464, e1←v24800, e2←v24828, pd370);
};
noHit←v24884 = var←c57464.f2;
point←v24856 = (* (W2Pt) &var←c57464 );
};
SOURCE(39510, 101)
if ((0 == noHit←v24884)) {
SOURCE(39529, 21)
{
word var←c57496;
word var←c57528;
var←c57496 = XR←NewObject(12, (* (( (ptr) gf←c61240)+75) ));
var←c57528 = var←c57496;
(* (W2Pt) var←c57528 ) = point←v24856;
iPoints←v31432 = var←c57496;
};
SOURCE(39552, 22)
tangency←v31460 = XR←NewObject(8, (* (( (ptr) gf←c61240)+71) ));
{
word var←c57592;
var←c57592 = tangency←v31460;
};
}
else {
SOURCE(39582, 13)
iPoints←v31432 = 0;
SOURCE(39597, 14)
tangency←v31460 = 0;
};
/* removed tail goto */
(* (ptr) formal←c0791 ) = iPoints←v31432;
(* (( (ptr) formal←c0791)+1) ) = tangency←v31460;
return;
}
static void ArcLinI←P2820(formal←c0807, c1←v31520, c2←v31548)
word formal←c0807;
word c1←v31520;
word c2←v31548;
{
register ptr gf←c61272 = (ptr) &globalframe;
word iPoints←v31592;
word tangency←v31620;
word arc←v24928;
word line←v24956;
W4 points←v24984;
word hitCount←v25012;
word tangent←v25040 = 0;
/* ArcLinI: */
SOURCE(39618, 316)
SOURCE(39618, 316)
iPoints←v31592 = 0;
SOURCE(39618, 316)
tangency←v31620 = 0;
SOURCE(39648, 21)
arc←v24928 = XR←Narrow(c1←v31520, (* (( (ptr) gf←c61272)+77) ));
SOURCE(39671, 23)
line←v24956 = XR←Narrow(c2←v31548, (* (( (ptr) gf←c61272)+68) ));
SOURCE(39768, 63)
{
W6 var←c57624;
{
word pd371;
pd371 = (* (( (ptr) (* (( (ptr) gf←c61272)+211)/* var←c56888 */ ))+14) );
(void) ( *( (fPt) ((* (ptr) pd371 ))))((word) &var←c57624, arc←v24928, line←v24956, pd371);
};
tangent←v25040 = var←c57624.f5;
hitCount←v25012 = var←c57624.f4;
points←v24984 = (* (W4Pt) &var←c57624 );
};
SOURCE(39833, 101)
{
register word i←v25140 = 1;
register word noName←c57656;
noName←c57656 = hitCount←v25012;
if ((i←v25140 > noName←c57656)) {
goto lab←L100206;
};
lab←L100209: ;
SOURCE(39864, 34)
{
word var←c57688;
var←c57688 = XR←NewObject(12, (* (( (ptr) gf←c61272)+75) ));
(* (W2Pt) var←c57688 ) = (* (( (W2Pt) &points←v24984)+BCK((i←v25140 - 1), 2)) );
(* (( (ptr) var←c57688)+2) ) = iPoints←v31592;
iPoints←v31592 = var←c57688;
};
SOURCE(39900, 34)
{
word var←c57720;
var←c57720 = XR←NewObject(8, (* (( (ptr) gf←c61272)+71) ));
(* (ptr) var←c57720 ) = tangent←v25040;
(* (( (ptr) var←c57720)+1) ) = tangency←v31620;
tangency←v31620 = var←c57720;
};
if ((i←v25140 >= noName←c57656)) {
goto lab←L100206;
};
i←v25140 = (i←v25140 + 1);
goto lab←L100209;
lab←L100206: ;
};
/* removed tail goto */
(* (ptr) formal←c0807 ) = iPoints←v31592;
(* (( (ptr) formal←c0807)+1) ) = tangency←v31620;
return;
}
static void ArcCirI←P2880(formal←c0823, c1←v31680, c2←v31708)
word formal←c0823;
word c1←v31680;
word c2←v31708;
{
register ptr gf←c61304 = (ptr) &globalframe;
word iPoints←v31752;
word tangency←v31780;
word arc←v25184;
word circle←v25212;
W4 points←v25240;
word hitCount←v25268;
word tangent←v25296 = 0;
/* ArcCirI: */
SOURCE(39949, 324)
SOURCE(39949, 324)
iPoints←v31752 = 0;
SOURCE(39949, 324)
tangency←v31780 = 0;
SOURCE(39979, 21)
arc←v25184 = XR←Narrow(c1←v31680, (* (( (ptr) gf←c61304)+77) ));
SOURCE(40002, 27)
circle←v25212 = XR←Narrow(c2←v31708, (* (( (ptr) gf←c61304)+78) ));
SOURCE(40103, 67)
{
W6 var←c57752;
{
word pd372;
pd372 = (* (( (ptr) (* (( (ptr) gf←c61304)+211)/* var←c56888 */ ))+13) );
(void) ( *( (fPt) ((* (ptr) pd372 ))))((word) &var←c57752, circle←v25212, arc←v25184, pd372);
};
tangent←v25296 = var←c57752.f5;
hitCount←v25268 = var←c57752.f4;
points←v25240 = (* (W4Pt) &var←c57752 );
};
SOURCE(40172, 101)
{
register word i←v25396 = 1;
register word noName←c57784;
noName←c57784 = hitCount←v25268;
if ((i←v25396 > noName←c57784)) {
goto lab←L100211;
};
lab←L100214: ;
SOURCE(40203, 34)
{
word var←c57816;
var←c57816 = XR←NewObject(12, (* (( (ptr) gf←c61304)+75) ));
(* (W2Pt) var←c57816 ) = (* (( (W2Pt) &points←v25240)+BCK((i←v25396 - 1), 2)) );
(* (( (ptr) var←c57816)+2) ) = iPoints←v31752;
iPoints←v31752 = var←c57816;
};
SOURCE(40239, 34)
{
word var←c57848;
var←c57848 = XR←NewObject(8, (* (( (ptr) gf←c61304)+71) ));
(* (ptr) var←c57848 ) = tangent←v25296;
(* (( (ptr) var←c57848)+1) ) = tangency←v31780;
tangency←v31780 = var←c57848;
};
if ((i←v25396 >= noName←c57784)) {
goto lab←L100211;
};
i←v25396 = (i←v25396 + 1);
goto lab←L100214;
lab←L100211: ;
};
/* removed tail goto */
(* (ptr) formal←c0823 ) = iPoints←v31752;
(* (( (ptr) formal←c0823)+1) ) = tangency←v31780;
return;
}
static void ArcEdgI←P2940(formal←c0839, c1←v31840, c2←v31868)
word formal←c0839;
word c1←v31840;
word c2←v31868;
{
register ptr gf←c61336 = (ptr) &globalframe;
word iPoints←v31912;
word tangency←v31940;
word arc←v25440;
word edge←v25468;
W4 points←v25496;
word hitCount←v25524;
word tangent←v25552 = 0;
/* ArcEdgI: */
SOURCE(40288, 316)
SOURCE(40288, 316)
iPoints←v31912 = 0;
SOURCE(40288, 316)
tangency←v31940 = 0;
SOURCE(40318, 21)
arc←v25440 = XR←Narrow(c1←v31840, (* (( (ptr) gf←c61336)+77) ));
SOURCE(40341, 23)
edge←v25468 = XR←Narrow(c2←v31868, (* (( (ptr) gf←c61336)+76) ));
SOURCE(40438, 63)
{
W6 var←c57880;
{
word pd373;
pd373 = (* (( (ptr) (* (( (ptr) gf←c61336)+211)/* var←c56888 */ ))+15) );
(void) ( *( (fPt) ((* (ptr) pd373 ))))((word) &var←c57880, arc←v25440, edge←v25468, pd373);
};
tangent←v25552 = var←c57880.f5;
hitCount←v25524 = var←c57880.f4;
points←v25496 = (* (W4Pt) &var←c57880 );
};
SOURCE(40503, 101)
{
register word i←v25652 = 1;
register word noName←c57912;
noName←c57912 = hitCount←v25524;
if ((i←v25652 > noName←c57912)) {
goto lab←L100216;
};
lab←L100219: ;
SOURCE(40534, 34)
{
word var←c57944;
var←c57944 = XR←NewObject(12, (* (( (ptr) gf←c61336)+75) ));
(* (W2Pt) var←c57944 ) = (* (( (W2Pt) &points←v25496)+BCK((i←v25652 - 1), 2)) );
(* (( (ptr) var←c57944)+2) ) = iPoints←v31912;
iPoints←v31912 = var←c57944;
};
SOURCE(40570, 34)
{
word var←c57976;
var←c57976 = XR←NewObject(8, (* (( (ptr) gf←c61336)+71) ));
(* (ptr) var←c57976 ) = tangent←v25552;
(* (( (ptr) var←c57976)+1) ) = tangency←v31940;
tangency←v31940 = var←c57976;
};
if ((i←v25652 >= noName←c57912)) {
goto lab←L100216;
};
i←v25652 = (i←v25652 + 1);
goto lab←L100219;
lab←L100216: ;
};
/* removed tail goto */
(* (ptr) formal←c0839 ) = iPoints←v31912;
(* (( (ptr) formal←c0839)+1) ) = tangency←v31940;
return;
}
static void ArcArcI←P3000(formal←c0855, c1←v32000, c2←v32028)
word formal←c0855;
word c1←v32000;
word c2←v32028;
{
register ptr gf←c61368 = (ptr) &globalframe;
word iPoints←v32072;
word tangency←v32100;
word arc1←v25696;
word arc2←v25724;
W4 points←v25752;
word hitCount←v25780;
word tangent←v25808 = 0;
/* ArcArcI: */
SOURCE(40619, 316)
SOURCE(40619, 316)
iPoints←v32072 = 0;
SOURCE(40619, 316)
tangency←v32100 = 0;
SOURCE(40649, 22)
arc1←v25696 = XR←Narrow(c1←v32000, (* (( (ptr) gf←c61368)+77) ));
SOURCE(40673, 22)
arc2←v25724 = XR←Narrow(c2←v32028, (* (( (ptr) gf←c61368)+77) ));
SOURCE(40769, 63)
{
W6 var←c58008;
{
word pd374;
pd374 = (* (( (ptr) (* (( (ptr) gf←c61368)+211)/* var←c56888 */ ))+16) );
(void) ( *( (fPt) ((* (ptr) pd374 ))))((word) &var←c58008, arc1←v25696, arc2←v25724, pd374);
};
tangent←v25808 = var←c58008.f5;
hitCount←v25780 = var←c58008.f4;
points←v25752 = (* (W4Pt) &var←c58008 );
};
SOURCE(40834, 101)
{
register word i←v25908 = 1;
register word noName←c58040;
noName←c58040 = hitCount←v25780;
if ((i←v25908 > noName←c58040)) {
goto lab←L100221;
};
lab←L100224: ;
SOURCE(40865, 34)
{
word var←c58072;
var←c58072 = XR←NewObject(12, (* (( (ptr) gf←c61368)+75) ));
(* (W2Pt) var←c58072 ) = (* (( (W2Pt) &points←v25752)+BCK((i←v25908 - 1), 2)) );
(* (( (ptr) var←c58072)+2) ) = iPoints←v32072;
iPoints←v32072 = var←c58072;
};
SOURCE(40901, 34)
{
word var←c58104;
var←c58104 = XR←NewObject(8, (* (( (ptr) gf←c61368)+71) ));
(* (ptr) var←c58104 ) = tangent←v25808;
(* (( (ptr) var←c58104)+1) ) = tangency←v32100;
tangency←v32100 = var←c58104;
};
if ((i←v25908 >= noName←c58040)) {
goto lab←L100221;
};
i←v25908 = (i←v25908 + 1);
goto lab←L100224;
lab←L100221: ;
};
/* removed tail goto */
(* (ptr) formal←c0855 ) = iPoints←v32072;
(* (( (ptr) formal←c0855)+1) ) = tangency←v32100;
return;
}
static void CubLinI←P3060(formal←c0871, c1←v32160, c2←v32188)
word formal←c0871;
word c1←v32160;
word c2←v32188;
{
register ptr gf←c61400 = (ptr) &globalframe;
word iPoints←v32232;
word tangency←v32260;
word bezier←v25952;
word line←v25980;
W6 points←v26008;
word hitCount←v26036;
W3 tangent←v26064;
/* CubLinI: */
SOURCE(40950, 376)
SOURCE(40950, 376)
iPoints←v32232 = 0;
SOURCE(40950, 376)
tangency←v32260 = 0;
SOURCE(40980, 30)
bezier←v25952 = XR←Narrow(c1←v32160, (* (( (ptr) gf←c61400)+79) ));
SOURCE(41012, 23)
line←v25980 = XR←Narrow(c2←v32188, (* (( (ptr) gf←c61400)+68) ));
SOURCE(41086, 42)
tangent←v26064.f0 = 0;
tangent←v26064.f1 = 0;
tangent←v26064.f2 = 0;
SOURCE(41130, 90)
{
W10 var←c58200;
{
word pd375;
word x376;
float tf377;
word x378;
float tf379;
pd375 = (* (( (ptr) (* (( (ptr) gf←c61400)+212)/* var←c58168 */ ))+16) );
(void) ( *( (fPt) ((* (ptr) pd375 ))))((word) &var←c58200, (* (W8Pt) bezier←v25952 ), (
tf377 = - (
x376 = (* (( (ptr) line←v25980)+3) ), *(float*)&x376
), *(word*)&tf377
), (* (( (ptr) line←v25980)+2) ), (
tf379 = - (
x378 = (* (( (ptr) line←v25980)+1) ), *(float*)&x378
), *(word*)&tf379
), pd375);
};
tangent←v26064 = (* (W3Pt) (( (ptr) &var←c58200)+7) );
hitCount←v26036 = (* (( (ptr) &var←c58200)+6) );
points←v26008 = (* (W6Pt) &var←c58200 );
};
SOURCE(41222, 104)
{
register word i←v26200 = 0;
register word noName←c58232;
noName←c58232 = hitCount←v26036;
if ((i←v26200 >= noName←c58232)) {
goto lab←L100226;
};
lab←L100229: ;
SOURCE(41253, 34)
{
word var←c58264;
var←c58264 = XR←NewObject(12, (* (( (ptr) gf←c61400)+75) ));
(* (W2Pt) var←c58264 ) = (* (( (W2Pt) &points←v26008)+BCK(i←v26200, 3)) );
(* (( (ptr) var←c58264)+2) ) = iPoints←v32232;
iPoints←v32232 = var←c58264;
};
SOURCE(41289, 37)
{
word var←c58296;
var←c58296 = XR←NewObject(8, (* (( (ptr) gf←c61400)+71) ));
(* (ptr) var←c58296 ) = (* (( (ptr) &tangent←v26064)+BCK(i←v26200, 3)) );
(* (( (ptr) var←c58296)+1) ) = tangency←v32260;
tangency←v32260 = var←c58296;
};
i←v26200 = (i←v26200 + 1);
if ((i←v26200 < noName←c58232)) {
goto lab←L100229;
};
lab←L100226: ;
};
/* removed tail goto */
(* (ptr) formal←c0871 ) = iPoints←v32232;
(* (( (ptr) formal←c0871)+1) ) = tangency←v32260;
return;
}
static void CubicMeetsEdge←P3120(formal←c0884, bezier←v15792, edge←v15820)
word formal←c0884;
word bezier←v15792;
word edge←v15820;
{
register ptr gf←c61432 = (ptr) &globalframe;
W6 points←v15864;
word hitCount←v15892;
W3 tangent←v15920;
W6 linePoints←v26244;
word lineHitCount←v26272;
W3 lineTangents←v26300;
/* CubicMeetsEdge: */
SOURCE(41341, 564)
SOURCE(41341, 564)
hitCount←v15892 = 0;
SOURCE(41341, 564)
tangent←v15920.f0 = 0;
tangent←v15920.f1 = 0;
tangent←v15920.f2 = 0;
SOURCE(41561, 47)
lineTangents←v26300.f0 = 0;
lineTangents←v26300.f1 = 0;
lineTangents←v26300.f2 = 0;
SOURCE(41610, 118)
{
W10 var←c58360;
{
word pd380;
word x381;
float tf382;
word x383;
float tf384;
pd380 = (* (( (ptr) (* (( (ptr) gf←c61432)+212)/* var←c58168 */ ))+16) );
(void) ( *( (fPt) ((* (ptr) pd380 ))))((word) &var←c58360, (* (W8Pt) bezier←v15792 ), (
tf382 = - (
x381 = (* (( (ptr) (* (ptr) edge←v15820 ))+3) ), *(float*)&x381
), *(word*)&tf382
), (* (( (ptr) (* (ptr) edge←v15820 ))+2) ), (
tf384 = - (
x383 = (* (( (ptr) (* (ptr) edge←v15820 ))+1) ), *(float*)&x383
), *(word*)&tf384
), pd380);
};
lineTangents←v26300 = (* (W3Pt) (( (ptr) &var←c58360)+7) );
lineHitCount←v26272 = (* (( (ptr) &var←c58360)+6) );
linePoints←v26244 = (* (W6Pt) &var←c58360 );
};
SOURCE(41730, 175)
{
register word i←v26436 = 0;
register word noName←c58392;
noName←c58392 = lineHitCount←v26272;
if ((i←v26436 >= noName←c58392)) {
goto lab←L100231;
};
lab←L100234: ;
SOURCE(41765, 140)
{
word pd385;
pd385 = (* (( (ptr) (* (( (ptr) gf←c61432)+209)/* var←c54776 */ ))+47) );
if ((0 != (word) ( *( (fPt) ((* (ptr) pd385 ))))((* (( (W2Pt) &linePoints←v26244)+BCK(i←v26436, 3)) ), edge←v15820, pd385)
)) {
SOURCE(41811, 32)
(* (( (W2Pt) &points←v15864)+BCK(hitCount←v15892, 3)) ) = (* (( (W2Pt) &linePoints←v26244)+BCK(i←v26436, 3)) );
SOURCE(41845, 35)
(* (( (ptr) &tangent←v15920)+BCK(hitCount←v15892, 3)) ) = (* (( (ptr) &lineTangents←v26300)+BCK(i←v26436, 3)) );
SOURCE(41882, 23)
hitCount←v15892 = BCK((hitCount←v15892 + 1), 4);
};
};
i←v26436 = (i←v26436 + 1);
if ((i←v26436 < noName←c58392)) {
goto lab←L100234;
};
lab←L100231: ;
};
/* removed tail goto */
(* (W6Pt) formal←c0884 ) = points←v15864;
(* (( (ptr) formal←c0884)+6) ) = hitCount←v15892;
(* (W3Pt) (( (ptr) formal←c0884)+7) ) = tangent←v15920;
return;
}
static void CubEdgI←P3180(formal←c0900, c1←v32320, c2←v32348)
word formal←c0900;
word c1←v32320;
word c2←v32348;
{
register ptr gf←c61464 = (ptr) &globalframe;
word iPoints←v32392;
word tangency←v32420;
word bezier←v26508;
word edge←v26536;
W6 points←v26564;
word hitCount←v26592;
W3 tangent←v26620;
/* CubEdgI: */
SOURCE(41923, 450)
SOURCE(41923, 450)
iPoints←v32392 = 0;
SOURCE(41923, 450)
tangency←v32420 = 0;
SOURCE(42059, 30)
bezier←v26508 = XR←Narrow(c1←v32320, (* (( (ptr) gf←c61464)+79) ));
SOURCE(42091, 23)
edge←v26536 = XR←Narrow(c2←v32348, (* (( (ptr) gf←c61464)+76) ));
SOURCE(42165, 42)
tangent←v26620.f0 = 0;
tangent←v26620.f1 = 0;
tangent←v26620.f2 = 0;
SOURCE(42209, 58)
{
W10 var←c58456;
(void) CubicMeetsEdge←P3120((word) &var←c58456, bezier←v26508, edge←v26536);
tangent←v26620 = (* (W3Pt) (( (ptr) &var←c58456)+7) );
hitCount←v26592 = (* (( (ptr) &var←c58456)+6) );
points←v26564 = (* (W6Pt) &var←c58456 );
};
SOURCE(42269, 104)
{
register word i←v27096 = 0;
register word noName←c58488;
noName←c58488 = hitCount←v26592;
if ((i←v27096 >= noName←c58488)) {
goto lab←L100236;
};
lab←L100239: ;
SOURCE(42300, 34)
{
word var←c58520;
var←c58520 = XR←NewObject(12, (* (( (ptr) gf←c61464)+75) ));
(* (W2Pt) var←c58520 ) = (* (( (W2Pt) &points←v26564)+BCK(i←v27096, 3)) );
(* (( (ptr) var←c58520)+2) ) = iPoints←v32392;
iPoints←v32392 = var←c58520;
};
SOURCE(42336, 37)
{
word var←c58552;
var←c58552 = XR←NewObject(8, (* (( (ptr) gf←c61464)+71) ));
(* (ptr) var←c58552 ) = (* (( (ptr) &tangent←v26620)+BCK(i←v27096, 3)) );
(* (( (ptr) var←c58552)+1) ) = tangency←v32420;
tangency←v32420 = var←c58552;
};
i←v27096 = (i←v27096 + 1);
if ((i←v27096 < noName←c58488)) {
goto lab←L100239;
};
lab←L100236: ;
};
/* removed tail goto */
(* (ptr) formal←c0900 ) = iPoints←v32392;
(* (( (ptr) formal←c0900)+1) ) = tangency←v32420;
return;
}
static void SlcLinI←P3240(formal←c0911, c1←v32480, c2←v32508)
word formal←c0911;
word c1←v32480;
word c2←v32508;
{
register ptr gf←c61496 = (ptr) &globalframe;
word iPoints←v32552;
word tangency←v32580;
word sliceD←v27140;
word line←v27168;
/* SlcLinI: */
SOURCE(42388, 251)
SOURCE(42388, 251)
iPoints←v32552 = 0;
SOURCE(42388, 251)
tangency←v32580 = 0;
SOURCE(42418, 36)
sliceD←v27140 = XR←Narrow(c1←v32480, (* (( (ptr) gf←c61496)+64) ));
SOURCE(42456, 23)
line←v27168 = XR←Narrow(c2←v32508, (* (( (ptr) gf←c61496)+68) ));
SOURCE(42481, 59)
{
W2 var←c58584;
{
word pd386;
pd386 = (* (( (ptr) (* (( (ptr) gf←c61496)+208)/* var←c54328 */ ))+49) );
(void) ( *( (fPt) ((* (ptr) pd386 ))))((word) &var←c58584, sliceD←v27140, line←v27168, pd386);
};
iPoints←v32552 = var←c58584.f0;
};
SOURCE(42542, 97)
{
register word list←v27212;
list←v27212 = iPoints←v32552;
lab←L100244: ;
if ((list←v27212 != 0)) {
}
else {
goto lab←L100241;
};
SOURCE(42607, 32)
{
word var←c58616;
var←c58616 = XR←NewObject(8, (* (( (ptr) gf←c61496)+71) ));
(* (( (ptr) var←c58616)+1) ) = tangency←v32580;
tangency←v32580 = var←c58616;
};
list←v27212 = (* (( (ptr) list←v27212)+2) );
goto lab←L100244;
lab←L100241: ;
};
/* removed tail goto */
(* (ptr) formal←c0911 ) = iPoints←v32552;
(* (( (ptr) formal←c0911)+1) ) = tangency←v32580;
return;
}
static void SlcCirI←P3300(formal←c0922, c1←v32640, c2←v32668)
word formal←c0922;
word c1←v32640;
word c2←v32668;
{
register ptr gf←c61528 = (ptr) &globalframe;
word iPoints←v32712;
word tangency←v32740;
word sliceD←v27340;
word circle←v27368;
/* SlcCirI: */
SOURCE(42654, 259)
SOURCE(42654, 259)
iPoints←v32712 = 0;
SOURCE(42654, 259)
tangency←v32740 = 0;
SOURCE(42684, 36)
sliceD←v27340 = XR←Narrow(c1←v32640, (* (( (ptr) gf←c61528)+64) ));
SOURCE(42722, 27)
circle←v27368 = XR←Narrow(c2←v32668, (* (( (ptr) gf←c61528)+78) ));
SOURCE(42751, 63)
{
W2 var←c58648;
{
word pd387;
pd387 = (* (( (ptr) (* (( (ptr) gf←c61528)+208)/* var←c54328 */ ))+50) );
(void) ( *( (fPt) ((* (ptr) pd387 ))))((word) &var←c58648, sliceD←v27340, circle←v27368, pd387);
};
iPoints←v32712 = var←c58648.f0;
};
SOURCE(42816, 97)
{
register word list←v27412;
list←v27412 = iPoints←v32712;
lab←L100249: ;
if ((list←v27412 != 0)) {
}
else {
goto lab←L100246;
};
SOURCE(42881, 32)
{
word var←c58680;
var←c58680 = XR←NewObject(8, (* (( (ptr) gf←c61528)+71) ));
(* (( (ptr) var←c58680)+1) ) = tangency←v32740;
tangency←v32740 = var←c58680;
};
list←v27412 = (* (( (ptr) list←v27412)+2) );
goto lab←L100249;
lab←L100246: ;
};
/* removed tail goto */
(* (ptr) formal←c0922 ) = iPoints←v32712;
(* (( (ptr) formal←c0922)+1) ) = tangency←v32740;
return;
}
static word NewMultiGravityPool←P3360()
{
register ptr gf←c61560 = (ptr) &globalframe;
word var←c16072;
word pool←v27540;
/* NewMultiGravityPool: */
SOURCE(42928, 491)
SOURCE(43043, 49)
pool←v27540 = XR←NewObject(12, (* (( (ptr) gf←c61560)+72) ));
SOURCE(43094, 49)
{
word var←c58744;
{
word var←c58776;
word var←c58808;
word var←c58840;
{
word idx388;
var←c58776 = (
idx388 = (* (( (ptr) gf←c61560)+4)/* MaxFeatures←v5240 */ ),
BCK(idx388, 67108863)
);
};
var←c58808 = ((word) var←c58776 << 2);
var←c58840 = XR←NewObject((40 + var←c58808), (* (( (ptr) gf←c61560)+70) ));
(* (( (ptr) var←c58840)+9) ) = var←c58776;
var←c58744 = var←c58840;
};
(* (ptr) pool←v27540 ) = var←c58744;
};
SOURCE(43145, 49)
{
word var←c58872;
{
word var←c58904;
word var←c58936;
word var←c58968;
{
word idx389;
var←c58904 = (
idx389 = (* (( (ptr) gf←c61560)+4)/* MaxFeatures←v5240 */ ),
BCK(idx389, 67108863)
);
};
var←c58936 = ((word) var←c58904 << 2);
var←c58968 = XR←NewObject((40 + var←c58936), (* (( (ptr) gf←c61560)+70) ));
(* (( (ptr) var←c58968)+9) ) = var←c58904;
var←c58872 = var←c58968;
};
(* (( (ptr) pool←v27540)+1) ) = var←c58872;
};
SOURCE(43196, 47)
{
word var←c59000;
{
word var←c59032;
word var←c59064;
word var←c59096;
{
word idx390;
var←c59032 = (
idx390 = (* (( (ptr) gf←c61560)+4)/* MaxFeatures←v5240 */ ),
BCK(idx390, 67108863)
);
};
var←c59064 = ((word) var←c59032 << 2);
var←c59096 = XR←NewObject((32 + var←c59064), (* (( (ptr) gf←c61560)+57) ));
(* (( (ptr) var←c59096)+7) ) = var←c59032;
var←c59000 = var←c59096;
};
(* (( (ptr) pool←v27540)+2) ) = var←c59000;
};
SOURCE(43245, 151)
{
register word i←v27584 = 0;
register word noName←c59128;
noName←c59128 = (* (( (ptr) gf←c61560)+4)/* MaxFeatures←v5240 */ );
if ((i←v27584 >= noName←c59128)) {
goto lab←L100250;
};
lab←L100253: ;
SOURCE(43279, 38)
{
word var←c59192;
var←c59192 = (* (ptr) pool←v27540 );
{
word limit391;
(* ((( (ptr) var←c59192)+10)+(
limit391 = (* (( (ptr) var←c59192)+9) ),
BCK(i←v27584, limit391)
)) ) = XR←NewObject(36, (* (( (ptr) gf←c61560)+60) ));
};
};
SOURCE(43319, 38)
{
word var←c59256;
var←c59256 = (* (( (ptr) pool←v27540)+1) );
{
word limit392;
(* ((( (ptr) var←c59256)+10)+(
limit392 = (* (( (ptr) var←c59256)+9) ),
BCK(i←v27584, limit392)
)) ) = XR←NewObject(36, (* (( (ptr) gf←c61560)+60) ));
};
};
SOURCE(43359, 37)
{
word var←c59320;
var←c59320 = (* (( (ptr) pool←v27540)+2) );
{
word limit393;
(* ((( (ptr) var←c59320)+8)+(
limit393 = (* (( (ptr) var←c59320)+7) ),
BCK(i←v27584, limit393)
)) ) = XR←NewObject(36, (* (( (ptr) gf←c61560)+60) ));
};
};
i←v27584 = (i←v27584 + 1);
if ((i←v27584 < noName←c59128)) {
goto lab←L100253;
};
lab←L100250: ;
};
SOURCE(43407, 12)
return(pool←v27540);
}
static void NoName←Q7584(formal←c0947, formal←c200008, formal←c200009, formal←c200010, formal←c200011)
word formal←c0947;
word formal←c200008;
word formal←c200009;
word formal←c200010;
word formal←c200011;
{
if ((formal←c200009 == XR←Unwind)) {
SOURCE(12699, 47)
{
word var←c53048;
var←c53048 = (word) NewMultiGravityPool←P3360();
(* (( (ptr) (* (( (ptr) formal←c200008)+9) ))+52) ) = var←c53048;
};
};
(* (ptr) formal←c0947 ) = 0;
(* (( (ptr) formal←c0947)+1) ) = 0;
return;
}
static void NoName←Q7644(formal←c0953, formal←c200004, formal←c200005, formal←c200006, formal←c200007)
word formal←c0953;
word formal←c200004;
word formal←c200005;
word formal←c200006;
word formal←c200007;
{
if ((formal←c200005 == XR←Unwind)) {
SOURCE(6946, 47)
{
word var←c52120;
var←c52120 = (word) NewMultiGravityPool←P3360();
(* (( (ptr) (* (( (ptr) formal←c200004)+9) ))+52) ) = var←c52120;
};
};
(* (ptr) formal←c0953 ) = 0;
(* (( (ptr) formal←c0953)+1) ) = 0;
return;
}
static void NoName←Q7704(formal←c0959, formal←c200000, formal←c200001, formal←c200002, formal←c200003)
word formal←c0959;
word formal←c200000;
word formal←c200001;
word formal←c200002;
word formal←c200003;
{
if ((formal←c200001 == XR←Unwind)) {
SOURCE(3409, 47)
{
word var←c51416;
var←c51416 = (word) NewMultiGravityPool←P3360();
(* (( (ptr) (* (( (ptr) formal←c200000)+9) ))+52) ) = var←c51416;
};
};
(* (ptr) formal←c0959 ) = 0;
(* (( (ptr) formal←c0959)+1) ) = 0;
return;
}
/* file: GGMultiGravityImpl, module: GGMultiGravityImpl, compiled at: July 11, 1993 7:59:18 pm PDT */
extern void XR←install←GGMultiGravityImpl() {
NoName←Q7344();
}
extern void XR←run←GGMultiGravityImpl() { XR←Start(&globalframe); }