All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gen.lib.dotgen.dotsplines__c Maven / Gradle / Ivy

Go to download

PlantUML is a component that allows to quickly write : * sequence diagram, * use case diagram, * class diagram, * activity diagram, * component diagram, * state diagram * object diagram

The newest version!
/* ========================================================================
 * PlantUML : a free UML diagram generator
 * ========================================================================
 *
 * Project Info:  http://plantuml.com
 * 
 * If you like this project or if you find it useful, you can support us at:
 * 
 * http://plantuml.com/patreon (only 1$ per month!)
 * http://plantuml.com/paypal
 * 
 * This file is part of Smetana.
 * Smetana is a partial translation of Graphviz/Dot sources from C to Java.
 *
 * (C) Copyright 2009-2017, Arnaud Roques
 *
 * This translation is distributed under the same Licence as the original C program:
 * 
 *************************************************************************
 * Copyright (c) 2011 AT&T Intellectual Property 
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors: See CVS logs. Details at http://www.graphviz.org/
 *************************************************************************
 *
 * THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
 * LICENSE ("AGREEMENT"). [Eclipse Public License - v 1.0]
 * 
 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES
 * RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
 * 
 * You may obtain a copy of the License at
 * 
 * http://www.eclipse.org/legal/epl-v10.html
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *
 */
package gen.lib.dotgen;
import static gen.lib.cgraph.edge__c.agfstout;
import static gen.lib.cgraph.edge__c.aghead;
import static gen.lib.cgraph.edge__c.agnxtout;
import static gen.lib.cgraph.edge__c.agtail;
import static gen.lib.cgraph.node__c.agfstnode;
import static gen.lib.cgraph.node__c.agnxtnode;
import static gen.lib.cgraph.obj__c.agraphof;
import static gen.lib.common.memory__c.gmalloc;
import static gen.lib.common.memory__c.zmalloc;
import static gen.lib.common.routespl__c.makeStraightEdge;
import static gen.lib.common.routespl__c.routepolylines;
import static gen.lib.common.routespl__c.routesplines;
import static gen.lib.common.routespl__c.routesplinesinit;
import static gen.lib.common.routespl__c.routesplinesterm;
import static gen.lib.common.routespl__c.simpleSplineRoute;
import static gen.lib.common.splines__c.add_box;
import static gen.lib.common.splines__c.beginpath;
import static gen.lib.common.splines__c.clip_and_install;
import static gen.lib.common.splines__c.endpath;
import static gen.lib.common.splines__c.getsplinepoints;
import static gen.lib.common.splines__c.makeSelfEdge;
import static gen.lib.common.utils__c.updateBB;
import static gen.lib.dotgen.cluster__c.mark_lowclusters;
import static smetana.core.JUtils.EQ;
import static smetana.core.JUtils.LOG2;
import static smetana.core.JUtils.NEQ;
import static smetana.core.JUtils.function;
import static smetana.core.JUtils.qsort;
import static smetana.core.JUtils.sizeof;
import static smetana.core.JUtils.sizeof_starstar_empty;
import static smetana.core.JUtilsDebug.ENTERING;
import static smetana.core.JUtilsDebug.LEAVING;
import static smetana.core.Macro.ABS;
import static smetana.core.Macro.AGSEQ;
import static smetana.core.Macro.ALLOC_empty;
import static smetana.core.Macro.BETWEEN;
import static smetana.core.Macro.ED_adjacent;
import static smetana.core.Macro.ED_edge_type;
import static smetana.core.Macro.ED_head_port;
import static smetana.core.Macro.ED_label;
import static smetana.core.Macro.ED_spl;
import static smetana.core.Macro.ED_tail_port;
import static smetana.core.Macro.ED_to_orig;
import static smetana.core.Macro.ED_to_virt;
import static smetana.core.Macro.ED_tree_index;
import static smetana.core.Macro.GD_bb;
import static smetana.core.Macro.GD_flags;
import static smetana.core.Macro.GD_flip;
import static smetana.core.Macro.GD_has_labels;
import static smetana.core.Macro.GD_maxrank;
import static smetana.core.Macro.GD_minrank;
import static smetana.core.Macro.GD_nlist;
import static smetana.core.Macro.GD_nodesep;
import static smetana.core.Macro.GD_rank;
import static smetana.core.Macro.GD_ranksep;
import static smetana.core.Macro.MAKEFWDEDGE;
import static smetana.core.Macro.MAX;
import static smetana.core.Macro.MIN;
import static smetana.core.Macro.M_PI;
import static smetana.core.Macro.N;
import static smetana.core.Macro.ND_alg;
import static smetana.core.Macro.ND_clust;
import static smetana.core.Macro.ND_coord;
import static smetana.core.Macro.ND_flat_out;
import static smetana.core.Macro.ND_ht;
import static smetana.core.Macro.ND_in;
import static smetana.core.Macro.ND_label;
import static smetana.core.Macro.ND_lw;
import static smetana.core.Macro.ND_mval;
import static smetana.core.Macro.ND_next;
import static smetana.core.Macro.ND_node_type;
import static smetana.core.Macro.ND_order;
import static smetana.core.Macro.ND_other;
import static smetana.core.Macro.ND_out;
import static smetana.core.Macro.ND_rank;
import static smetana.core.Macro.ND_rw;
import static smetana.core.Macro.NOT;
import static smetana.core.Macro.ROUND;
import static smetana.core.Macro.UNSUPPORTED;
import h.Agedge_s;
import h.Agedgeinfo_t;
import h.Agedgepair_s;
import h.Agnode_s;
import h.Agraph_s;
import h.Ppoly_t;
import h.attr_state_t;
import h.bezier;
import h.boxf;
import h.path;
import h.pathend_t;
import h.pointf;
import h.port;
import h.spline_info_t;
import h.splines;
import smetana.core.Memory;
import smetana.core.Z;
import smetana.core.__array_of_struct__;
import smetana.core.__ptr__;
import smetana.core.__struct__;

public class dotsplines__c {
//1 2digov3edok6d5srhgtlmrycs
// extern lt_symlist_t lt_preloaded_symbols[]


//1 baedz5i9est5csw3epz3cv7z
// typedef Ppoly_t Ppolyline_t


//1 9k44uhd5foylaeoekf3llonjq
// extern Dtmethod_t* 	Dtset


//1 1ahfywsmzcpcig2oxm7pt9ihj
// extern Dtmethod_t* 	Dtbag


//1 anhghfj3k7dmkudy2n7rvt31v
// extern Dtmethod_t* 	Dtoset


//1 5l6oj1ux946zjwvir94ykejbc
// extern Dtmethod_t* 	Dtobag


//1 2wtf222ak6cui8cfjnw6w377z
// extern Dtmethod_t*	Dtlist


//1 d1s1s6ibtcsmst88e3057u9r7
// extern Dtmethod_t*	Dtstack


//1 axa7mflo824p6fspjn1rdk0mt
// extern Dtmethod_t*	Dtqueue


//1 ega812utobm4xx9oa9w9ayij6
// extern Dtmethod_t*	Dtdeque


//1 cyfr996ur43045jv1tjbelzmj
// extern Dtmethod_t*	Dtorder


//1 wlofoiftbjgrrabzb2brkycg
// extern Dtmethod_t*	Dttree


//1 12bds94t7voj7ulwpcvgf6agr
// extern Dtmethod_t*	Dthash


//1 9lqknzty480cy7zsubmabkk8h
// extern Dtmethod_t	_Dttree


//1 bvn6zkbcp8vjdhkccqo1xrkrb
// extern Dtmethod_t	_Dthash


//1 9lidhtd6nsmmv3e7vjv9e10gw
// extern Dtmethod_t	_Dtlist


//1 34ujfamjxo7xn89u90oh2k6f8
// extern Dtmethod_t	_Dtqueue


//1 3jy4aceckzkdv950h89p4wjc8
// extern Dtmethod_t	_Dtstack


//1 8dfqgf3u1v830qzcjqh9o8ha7
// extern Agmemdisc_t AgMemDisc


//1 18k2oh2t6llfsdc5x0wlcnby8
// extern Agiddisc_t AgIdDisc


//1 a4r7hi80gdxtsv4hdoqpyiivn
// extern Agiodisc_t AgIoDisc


//1 bnzt5syjb7mgeru19114vd6xx
// extern Agdisc_t AgDefaultDisc


//1 35y2gbegsdjilegaribes00mg
// extern Agdesc_t Agdirected, Agstrictdirected, Agundirected,     Agstrictundirected


//1 c2rygslq6bcuka3awmvy2b3ow
// typedef Agsubnode_t	Agnoderef_t


//1 xam6yv0dcsx57dtg44igpbzn
// typedef Dtlink_t	Agedgeref_t


//1 nye6dsi1twkbddwo9iffca1j
// extern char *Version


//1 65mu6k7h7lb7bx14jpiw7iyxr
// extern char **Files


//1 2rpjdzsdyrvomf00zcs3u3dyn
// extern const char **Lib


//1 6d2f111lntd2rsdt4gswh5909
// extern char *CmdName


//1 a0ltq04fpeg83soa05a2fkwb2
// extern char *specificFlags


//1 1uv30qeqq2jh6uznlr4dziv0y
// extern char *specificItems


//1 7i4hkvngxe3x7lmg5h6b3t9g3
// extern char *Gvfilepath


//1 9jp96pa73kseya3w6sulxzok6
// extern char *Gvimagepath


//1 40ylumfu7mrvawwf4v2asvtwk
// extern unsigned char Verbose


//1 93st8awjy1z0h07n28qycbaka
// extern unsigned char Reduce


//1 f2vs67ts992erf8onwfglurzp
// extern int MemTest


//1 c6f8whijgjwwagjigmxlwz3gb
// extern char *HTTPServerEnVar


//1 cp4hzj7p87m7arw776d3bt7aj
// extern char *Output_file_name


//1 a3rqagofsgraie6mx0krzkgsy
// extern int graphviz_errors


//1 5up05203r4kxvjn1m4njcgq5x
// extern int Nop


//1 umig46cco431x14b3kosde2t
// extern double PSinputscale


//1 52bj6v8fqz39khasobljfukk9
// extern int Syntax_errors


//1 9ekf2ina8fsjj6y6i0an6somj
// extern int Show_cnt


//1 38di5qi3nkxkq65onyvconk3r
// extern char** Show_boxes


//1 6ri6iu712m8mpc7t2670etpcw
// extern int CL_type


//1 bomxiw3gy0cgd1ydqtek7fpxr
// extern unsigned char Concentrate


//1 cqy3gqgcq8empdrbnrhn84058
// extern double Epsilon


//1 64slegfoouqeg0rmbyjrm8wgr
// extern int MaxIter


//1 88wdinpnmfs4mab4aw62yb0bg
// extern int Ndim


//1 8bbad3ogcelqnnvo5br5s05gq
// extern int State


//1 17rnd8q45zclfn68qqst2vxxn
// extern int EdgeLabelsDone


//1 ymx1z4s8cznjifl2d9f9m8jr
// extern double Initial_dist


//1 a33bgl0c3uqb3trx419qulj1x
// extern double Damping


//1 d9lvrpjg1r0ojv40pod1xwk8n
// extern int Y_invert


//1 71efkfs77q5tq9ex6y0f4kanh
// extern int GvExitOnUsage


//1 4xy2dkdkv0acs2ue9eca8hh2e
// extern Agsym_t 	*G_activepencolor, *G_activefillcolor, 	*G_selectedpencolor, *G_selectedfillcolor, 	*G_visitedpencolor, *G_visitedfillcolor, 	*G_deletedpencolor, *G_deletedfillcolor, 	*G_ordering, *G_peripheries, *G_penwidth, 	*G_gradientangle, *G_margin


//1 9js5gxgzr74eakgtfhnbws3t9
// extern Agsym_t 	*N_height, *N_width, *N_shape, *N_color, *N_fillcolor, 	*N_activepencolor, *N_activefillcolor, 	*N_selectedpencolor, *N_selectedfillcolor, 	*N_visitedpencolor, *N_visitedfillcolor, 	*N_deletedpencolor, *N_deletedfillcolor, 	*N_fontsize, *N_fontname, *N_fontcolor, *N_margin, 	*N_label, *N_xlabel, *N_nojustify, *N_style, *N_showboxes, 	*N_sides, *N_peripheries, *N_ordering, *N_orientation, 	*N_skew, *N_distortion, *N_fixed, *N_imagescale, *N_layer, 	*N_group, *N_comment, *N_vertices, *N_z, 	*N_penwidth, *N_gradientangle


//1 anqllp9sj7wo45w6bm11j8trn
// extern Agsym_t 	*E_weight, *E_minlen, *E_color, *E_fillcolor, 	*E_activepencolor, *E_activefillcolor, 	*E_selectedpencolor, *E_selectedfillcolor, 	*E_visitedpencolor, *E_visitedfillcolor, 	*E_deletedpencolor, *E_deletedfillcolor, 	*E_fontsize, *E_fontname, *E_fontcolor, 	*E_label, *E_xlabel, *E_dir, *E_style, *E_decorate, 	*E_showboxes, *E_arrowsz, *E_constr, *E_layer, 	*E_comment, *E_label_float, 	*E_samehead, *E_sametail, 	*E_arrowhead, *E_arrowtail, 	*E_headlabel, *E_taillabel, 	*E_labelfontsize, *E_labelfontname, *E_labelfontcolor, 	*E_labeldistance, *E_labelangle, 	*E_tailclip, *E_headclip, 	*E_penwidth


//1 bh0z9puipqw7gymjd5h5b8s6i
// extern struct fdpParms_s* fdp_parms




//3 ciez0pfggxdljedzsbklq49f0
// static inline point pointof(int x, int y) 
public static Object pointof(Object... arg) {
UNSUPPORTED("8e4tj258yvfq5uhsdpk37n5eq"); // static inline point pointof(int x, int y)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c0j3k9xv06332q98k2pgpacto"); //     point r;
UNSUPPORTED("12jimkrzqxavaie0cpapbx18c"); //     r.x = x;
UNSUPPORTED("7ivmviysahgsc5nn9gtp7q2if"); //     r.y = y;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 c1s4k85p1cdfn176o3uryeros
// static inline pointf pointfof(double x, double y) 
public static __struct__ pointfof(double x, double y) {
// WARNING!! STRUCT
return pointfof_w_(x, y).copy();
}
private static __struct__ pointfof_w_(double x, double y) {
ENTERING("c1s4k85p1cdfn176o3uryeros","pointfof");
try {
    final __struct__ r = __struct__.from(pointf.class);
    r.setDouble("x", x);
    r.setDouble("y", y);
    return r;
} finally {
LEAVING("c1s4k85p1cdfn176o3uryeros","pointfof");
}
}




//3 7cufnfitrh935ew093mw0i4b7
// static inline box boxof(int llx, int lly, int urx, int ury) 
public static Object boxof(Object... arg) {
UNSUPPORTED("3lzesfdd337h31jrlib1czocm"); // static inline box boxof(int llx, int lly, int urx, int ury)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("52u27kayecy1i1e8bbo8f7s9r"); //     box b;
UNSUPPORTED("cylhjlutoc0sc0uy7g98m9fb8"); //     b.LL.x = llx, b.LL.y = lly;
UNSUPPORTED("242of6revxzx8hpe7yerrchz6"); //     b.UR.x = urx, b.UR.y = ury;
UNSUPPORTED("2vmm1j57brhn455f8f3iyw6mo"); //     return b;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 1vvsta5i8of59frav6uymguav
// static inline boxf boxfof(double llx, double lly, double urx, double ury) 
public static __struct__ boxfof(double llx, double lly, double urx, double ury) {
// WARNING!! STRUCT
return boxfof_w_(llx, lly, urx, ury).copy();
}
private static __struct__ boxfof_w_(double llx, double lly, double urx, double ury) {
ENTERING("1vvsta5i8of59frav6uymguav","boxfof");
try {
    final __struct__ b = __struct__.from(boxf.class);
    b.getStruct("LL").setDouble("x", llx);
    b.getStruct("LL").setDouble("y", lly);
    b.getStruct("UR").setDouble("x", urx);
    b.getStruct("UR").setDouble("y", ury);
    return b;
} finally {
LEAVING("1vvsta5i8of59frav6uymguav","boxfof");
}
}




//3 1n5xl70wxuabyf97mclvilsm6
// static inline point add_point(point p, point q) 
public static Object add_point(Object... arg) {
UNSUPPORTED("6iamka1fx8fk1rohzzse8phte"); // static inline point add_point(point p, point q)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c0j3k9xv06332q98k2pgpacto"); //     point r;
UNSUPPORTED("3n2sizjd0civbzm6iq7su1s2p"); //     r.x = p.x + q.x;
UNSUPPORTED("65ygdo31w09i5i6bd2f7azcd3"); //     r.y = p.y + q.y;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 arrsbik9b5tnfcbzsm8gr2chx
// static inline pointf add_pointf(pointf p, pointf q) 
public static __struct__ add_pointf(final __struct__ p, final __struct__ q) {
// WARNING!! STRUCT
return add_pointf_w_(p.copy(), q.copy()).copy();
}
private static __struct__ add_pointf_w_(final __struct__ p, final __struct__ q) {
ENTERING("arrsbik9b5tnfcbzsm8gr2chx","add_pointf");
try {
    final __struct__ r = __struct__.from(pointf.class);
    r.setDouble("x", p.getDouble("x") + q.getDouble("x"));
    r.setDouble("y", p.getDouble("y") + q.getDouble("y"));
    return r;
} finally {
LEAVING("arrsbik9b5tnfcbzsm8gr2chx","add_pointf");
}
}




//3 ai2dprak5y6obdsflguh5qbd7
// static inline point sub_point(point p, point q) 
public static Object sub_point(Object... arg) {
UNSUPPORTED("cd602849h0bce8lu9xegka0ia"); // static inline point sub_point(point p, point q)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c0j3k9xv06332q98k2pgpacto"); //     point r;
UNSUPPORTED("4q4q9dveah93si8ajfv59gz27"); //     r.x = p.x - q.x;
UNSUPPORTED("9f90ik0o2yqhanzntpy3d2ydy"); //     r.y = p.y - q.y;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 16f6pyogcv3j7n2p0n8giqqgh
// static inline pointf sub_pointf(pointf p, pointf q) 
public static Object sub_pointf(Object... arg) {
UNSUPPORTED("dmufj44lddsnj0wjyxsg2fcso"); // static inline pointf sub_pointf(pointf p, pointf q)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("cvexv13y9fq49v0j4d5t4cm9f"); //     pointf r;
UNSUPPORTED("4q4q9dveah93si8ajfv59gz27"); //     r.x = p.x - q.x;
UNSUPPORTED("9f90ik0o2yqhanzntpy3d2ydy"); //     r.y = p.y - q.y;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 9k50jgrhc4f9824vf8ony74rw
// static inline point mid_point(point p, point q) 
public static Object mid_point(Object... arg) {
UNSUPPORTED("evy44tdsmu3erff9dp2x835u2"); // static inline point mid_point(point p, point q)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c0j3k9xv06332q98k2pgpacto"); //     point r;
UNSUPPORTED("1a6p6fm57o0wt5ze2btsx06c7"); //     r.x = (p.x + q.x) / 2;
UNSUPPORTED("1kbj5tgdmfi6kf4jgg6skhr6e"); //     r.y = (p.y + q.y) / 2;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 59c4f7im0ftyowhnzzq2v9o1x
// static inline pointf mid_pointf(pointf p, pointf q) 
public static Object mid_pointf(Object... arg) {
UNSUPPORTED("381o63o9kb04d7gzg65v0r3q"); // static inline pointf mid_pointf(pointf p, pointf q)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("cvexv13y9fq49v0j4d5t4cm9f"); //     pointf r;
UNSUPPORTED("c5vboetlr3mf43wns7iik6m1w"); //     r.x = (p.x + q.x) / 2.;
UNSUPPORTED("bcdf562ldr3bjn78hcay5xd63"); //     r.y = (p.y + q.y) / 2.;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 5r18p38gisvcx3zsvbb9saixx
// static inline pointf interpolate_pointf(double t, pointf p, pointf q) 
public static Object interpolate_pointf(Object... arg) {
UNSUPPORTED("894yimn33kmtm454llwdaotu8"); // static inline pointf interpolate_pointf(double t, pointf p, pointf q)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("ef2acl8wa2ooqcb5vz3098maz"); //     pointf r; 
UNSUPPORTED("5tpwuyf5iidesy80v8o4nwkmk"); //     r.x = p.x + t * (q.x - p.x);
UNSUPPORTED("ewnrc5uloj3w5jbmsjcn3wja0"); //     r.y = p.y + t * (q.y - p.y);
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 bxzrv2ghq04qk5cbyy68s4mol
// static inline point exch_xy(point p) 
public static Object exch_xy(Object... arg) {
UNSUPPORTED("2vxya0v2fzlv5e0vjaa8d414"); // static inline point exch_xy(point p)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c0j3k9xv06332q98k2pgpacto"); //     point r;
UNSUPPORTED("60cojdwc2h7f0m51s9jdwvup7"); //     r.x = p.y;
UNSUPPORTED("evp2x66oa4s1tlnc0ytxq2qbq"); //     r.y = p.x;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 9lt3e03tac6h6sydljrcws8fd
// static inline pointf exch_xyf(pointf p) 
public static Object exch_xyf(Object... arg) {
UNSUPPORTED("8qamrobrqi8jsvvfrxkimrsnw"); // static inline pointf exch_xyf(pointf p)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("cvexv13y9fq49v0j4d5t4cm9f"); //     pointf r;
UNSUPPORTED("60cojdwc2h7f0m51s9jdwvup7"); //     r.x = p.y;
UNSUPPORTED("evp2x66oa4s1tlnc0ytxq2qbq"); //     r.y = p.x;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 8l9qhieokthntzdorlu5zn29b
// static inline box box_bb(box b0, box b1) 
public static Object box_bb(Object... arg) {
UNSUPPORTED("36et5gmnjrby6o7bq9sgh1hx6"); // static inline box box_bb(box b0, box b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("52u27kayecy1i1e8bbo8f7s9r"); //     box b;
UNSUPPORTED("8mr2c9xitsqi8z1plbp7ox1hu"); //     b.LL.x = MIN(b0.LL.x, b1.LL.x);
UNSUPPORTED("2egu55ef4u1i03nwz01k7kcrl"); //     b.LL.y = MIN(b0.LL.y, b1.LL.y);
UNSUPPORTED("9n6ei3odbgefwfxvql9whcpe"); //     b.UR.x = MAX(b0.UR.x, b1.UR.x);
UNSUPPORTED("19ocysbuh4pxyft2bqhyhigr1"); //     b.UR.y = MAX(b0.UR.y, b1.UR.y);
UNSUPPORTED("2vmm1j57brhn455f8f3iyw6mo"); //     return b;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 clws9h3bbjm0lw3hexf8nl4c4
// static inline boxf boxf_bb(boxf b0, boxf b1) 
public static Object boxf_bb(Object... arg) {
UNSUPPORTED("dyrqu4ww9osr9c86gqgmifcp6"); // static inline boxf boxf_bb(boxf b0, boxf b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c57pq0f87j6dnbcvygu7v6k84"); //     boxf b;
UNSUPPORTED("8mr2c9xitsqi8z1plbp7ox1hu"); //     b.LL.x = MIN(b0.LL.x, b1.LL.x);
UNSUPPORTED("2egu55ef4u1i03nwz01k7kcrl"); //     b.LL.y = MIN(b0.LL.y, b1.LL.y);
UNSUPPORTED("9n6ei3odbgefwfxvql9whcpe"); //     b.UR.x = MAX(b0.UR.x, b1.UR.x);
UNSUPPORTED("19ocysbuh4pxyft2bqhyhigr1"); //     b.UR.y = MAX(b0.UR.y, b1.UR.y);
UNSUPPORTED("2vmm1j57brhn455f8f3iyw6mo"); //     return b;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 bit6ycxo1iqd2al92y8gkzlvb
// static inline box box_intersect(box b0, box b1) 
public static Object box_intersect(Object... arg) {
UNSUPPORTED("34gv28cldst09bl71itjgviue"); // static inline box box_intersect(box b0, box b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("52u27kayecy1i1e8bbo8f7s9r"); //     box b;
UNSUPPORTED("9slu7bixuymxttjic76ha2nl2"); //     b.LL.x = MAX(b0.LL.x, b1.LL.x);
UNSUPPORTED("3uv943c2f82yuif249pf5azob"); //     b.LL.y = MAX(b0.LL.y, b1.LL.y);
UNSUPPORTED("74tf5h16bc9zabq3s3dyny543"); //     b.UR.x = MIN(b0.UR.x, b1.UR.x);
UNSUPPORTED("d99gcv3i7xes7y7rqf8ii20ux"); //     b.UR.y = MIN(b0.UR.y, b1.UR.y);
UNSUPPORTED("2vmm1j57brhn455f8f3iyw6mo"); //     return b;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 8gfybie7k6pgb3o1a6llgpwng
// static inline boxf boxf_intersect(boxf b0, boxf b1) 
public static Object boxf_intersect(Object... arg) {
UNSUPPORTED("ape22b8z6jfg17gvo42hok9eb"); // static inline boxf boxf_intersect(boxf b0, boxf b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c57pq0f87j6dnbcvygu7v6k84"); //     boxf b;
UNSUPPORTED("9slu7bixuymxttjic76ha2nl2"); //     b.LL.x = MAX(b0.LL.x, b1.LL.x);
UNSUPPORTED("3uv943c2f82yuif249pf5azob"); //     b.LL.y = MAX(b0.LL.y, b1.LL.y);
UNSUPPORTED("74tf5h16bc9zabq3s3dyny543"); //     b.UR.x = MIN(b0.UR.x, b1.UR.x);
UNSUPPORTED("d99gcv3i7xes7y7rqf8ii20ux"); //     b.UR.y = MIN(b0.UR.y, b1.UR.y);
UNSUPPORTED("2vmm1j57brhn455f8f3iyw6mo"); //     return b;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 7z8j2quq65govaaejrz7b4cvb
// static inline int box_overlap(box b0, box b1) 
public static Object box_overlap(Object... arg) {
UNSUPPORTED("1e9k599x7ygct7r4cfdxlk9u9"); // static inline int box_overlap(box b0, box b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("7a9wwpu7dhdphd08y1ecw54w5"); //     return OVERLAP(b0, b1);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 4z0suuut2acsay5m8mg9dqjdu
// static inline int boxf_overlap(boxf b0, boxf b1) 
public static Object boxf_overlap(Object... arg) {
UNSUPPORTED("905nejsewihwhhc3bhnrz9nwo"); // static inline int boxf_overlap(boxf b0, boxf b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("7a9wwpu7dhdphd08y1ecw54w5"); //     return OVERLAP(b0, b1);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 dd34swz5rmdgu3a2np2a4h1dy
// static inline int box_contains(box b0, box b1) 
public static Object box_contains(Object... arg) {
UNSUPPORTED("aputfc30fjkvy6jx4otljaczq"); // static inline int box_contains(box b0, box b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("87ap80vrh2a4gpprbxr33lrg3"); //     return CONTAINS(b0, b1);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 8laj1bspbu2i1cjd9upr7xt32
// static inline int boxf_contains(boxf b0, boxf b1) 
public static Object boxf_contains(Object... arg) {
UNSUPPORTED("7ccnttkiwt834yfyw0evcm18v"); // static inline int boxf_contains(boxf b0, boxf b1)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("87ap80vrh2a4gpprbxr33lrg3"); //     return CONTAINS(b0, b1);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 4wf5swkz24xx51ja2dynbycu1
// static inline pointf perp (pointf p) 
public static Object perp(Object... arg) {
UNSUPPORTED("567wpqlg9rv63ynyvxd9sgkww"); // static inline pointf perp (pointf p)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("cvexv13y9fq49v0j4d5t4cm9f"); //     pointf r;
UNSUPPORTED("2fyydy6t6yifjsczccsb9szeg"); //     r.x = -p.y;
UNSUPPORTED("evp2x66oa4s1tlnc0ytxq2qbq"); //     r.y = p.x;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 6dtlpzv4mvgzb9o0b252yweuv
// static inline pointf scale (double c, pointf p) 
public static Object scale(Object... arg) {
UNSUPPORTED("c1ngytew34bmkdb7vps5h3dh8"); // static inline pointf scale (double c, pointf p)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("cvexv13y9fq49v0j4d5t4cm9f"); //     pointf r;
UNSUPPORTED("dznf7nac14snww4usquyd6r3r"); //     r.x = c * p.x;
UNSUPPORTED("33kk73m8vjcux5tnjl8co2pe6"); //     r.y = c * p.y;
UNSUPPORTED("a2hk6w52njqjx48nq3nnn2e5i"); //     return r;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}


//1 8vvgiozsykdn0hhbvaem6lifn
// static boxf boxes[1000]
//private static __array_of_struct__ boxes = __array_of_struct__.malloc(boxf.class, 1000);



//3 dobhmc46zwtvv8rg3ywntl91j
// static edge_t* getmainedge(edge_t * e) 
public static Agedge_s getmainedge(Agedge_s e) {
ENTERING("dobhmc46zwtvv8rg3ywntl91j","getmainedge");
try {
    Agedge_s le = e;
    while (ED_to_virt(le)!=null)
	le = ED_to_virt(le);
    while (ED_to_orig(le)!=null)
	le = ED_to_orig(le);
    return le;
} finally {
LEAVING("dobhmc46zwtvv8rg3ywntl91j","getmainedge");
}
}




//3 ddeny5ht7w8b16ztj5zt840ld
// static boolean spline_merge(node_t * n) 
public static boolean spline_merge(Agnode_s n) {
ENTERING("ddeny5ht7w8b16ztj5zt840ld","spline_merge");
try {
    return ((ND_node_type(n) == 1)
	    && ((ND_in(n).getInt("size") > 1) || (ND_out(n).getInt("size") > 1)));
} finally {
LEAVING("ddeny5ht7w8b16ztj5zt840ld","spline_merge");
}
}




//3 36ofw2qfqlh5ci8gc8cfkqgg3
// static boolean swap_ends_p(edge_t * e) 
public static boolean swap_ends_p(Agedge_s e) {
ENTERING("36ofw2qfqlh5ci8gc8cfkqgg3","swap_ends_p");
try {
    while (ED_to_orig(e)!=null)
	e = ED_to_orig(e);
    if (ND_rank(aghead(e)) > ND_rank(agtail(e)))
	return false;
    if (ND_rank(aghead(e)) < ND_rank(agtail(e)))
	return NOT(false);
    if (ND_order(aghead(e)) >= ND_order(agtail(e)))
	return false;
    return NOT(false);
} finally {
LEAVING("36ofw2qfqlh5ci8gc8cfkqgg3","swap_ends_p");
}
}


//1 300wnvw9sndobgke752j9u139
// static splineInfo sinfo = 
/*static final __struct__ sinfo = __struct__.from(splineInfo.class);
static {
	sinfo.setPtr("swapEnds", function(dotsplines__c.class, "swap_ends_p"));
	sinfo.setPtr("splineMerge", function(dotsplines__c.class, "spline_merge"));
}*/




//3 3krohso3quojiv4fveh1en7o6
// int portcmp(port p0, port p1) 
public static int portcmp(final __struct__ p0, final __struct__ p1) {
// WARNING!! STRUCT
return portcmp_w_(p0.copy(), p1.copy());
}
private static int portcmp_w_(final __struct__ p0, final __struct__ p1) {
ENTERING("3krohso3quojiv4fveh1en7o6","portcmp");
try {
    int rv;
    if (p1.getBoolean("defined") == false)
	return (p0.getBoolean("defined") ? 1 : 0);
    if (p0.getBoolean("defined") == false)
	return -1;
    rv = (int) (p0.getStruct("p").getDouble("x") - p1.getStruct("p").getDouble("x"));
    if (rv == 0)
	rv = (int) (p0.getStruct("p").getDouble("y") - p1.getStruct("p").getDouble("y"));
    return rv;
} finally {
LEAVING("3krohso3quojiv4fveh1en7o6","portcmp");
}
}




//3 10wbtt4gwnxgqutinpj4ymjpk
// static void swap_bezier(bezier * old, bezier * new) 
public static void swap_bezier(__ptr__ old, __ptr__ new_) {
ENTERING("10wbtt4gwnxgqutinpj4ymjpk","swap_bezier");
try {
    __ptr__ list;
    __ptr__ lp;
    __ptr__ olp;
    int i, sz;
    sz = old.getInt("size");
	list = gmalloc(sizeof(pointf.class, sz));
    lp = list;
    olp = old.getArrayOfPtr("list").plus(sz - 1).asPtr();
    for (i = 0; i < sz; i++) {	/* reverse list of points */
	lp.getStruct().____(olp.getStruct());
	lp=lp.plus(1);
	olp=olp.plus(-1);
    }
    new_.setPtr("list", list);
    new_.setInt("size", sz);
    new_.setInt("sflag", old.getInt("eflag"));
    new_.setInt("eflag", old.getInt("sflag"));
    new_.setStruct("sp", old.getStruct("ep"));
    new_.setStruct("ep", old.getStruct("sp"));
} finally {
LEAVING("10wbtt4gwnxgqutinpj4ymjpk","swap_bezier");
}
}




//3 3256l3e2huarsy29dd97vqj85
// static void swap_spline(splines * s) 
public static void swap_spline(splines s) {
ENTERING("3256l3e2huarsy29dd97vqj85","swap_spline");
try {
    __ptr__ list;
    __ptr__ lp;
    __ptr__ olp;
    int i, sz;
    sz = s.getInt("size");
	list = gmalloc(sizeof(bezier.class, sz));
    lp = list;
    olp = s.getArrayOfPtr("list").plus(sz - 1).asPtr();
    for (i = 0; i < sz; i++) {	/* reverse and swap list of beziers */
	swap_bezier(olp, lp);
	olp = olp.plus(-1);
	lp = lp.plus(1);
    }
    /* free old structures */
    for (i = 0; i < sz; i++)
	Memory.free(s.getArrayOfPtr("list").plus(i).getPtr().getArrayOfPtr("list"));
    Memory.free(s.getArrayOfPtr("list"));
    s.setPtr("list", list);
} finally {
LEAVING("3256l3e2huarsy29dd97vqj85","swap_spline");
}
}




//3 dgkssqjj566ifra0xy7m46qsb
// static void edge_normalize(graph_t * g) 
public static void edge_normalize(Agraph_s g) {
ENTERING("dgkssqjj566ifra0xy7m46qsb","edge_normalize");
try {
    Agedge_s e;
    Agnode_s n;
    for (n = agfstnode(g); n!=null; n = agnxtnode(g, n)) {
	for (e = agfstout(g, n); e!=null; e = agnxtout(g, e)) {
	    if ((Boolean)Z.z().sinfo.call("swapEnds", e) && ED_spl(e)!=null)
		swap_spline(ED_spl(e));
	}
    }
} finally {
LEAVING("dgkssqjj566ifra0xy7m46qsb","edge_normalize");
}
}




//3 bwzdgdea9suuagzueyw8ztx42
// static void resetRW (graph_t * g) 
public static Object resetRW(Object... arg) {
UNSUPPORTED("e2z2o5ybnr5tgpkt8ty7hwan1"); // static void
UNSUPPORTED("c4vqsmfolc1meewxoebfkyppx"); // resetRW (graph_t * g)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("7ma9kdgag30w5ofv1niitxbro"); //     node_t* n;
UNSUPPORTED("7wq24g054kmx3aw25vk5ksj4"); //     for (n = agfstnode(g); n; n = agnxtnode(g,n)) {
UNSUPPORTED("b83f20tdode2lz5a49mhmn9ei"); // 	if (ND_other(n).list) {
UNSUPPORTED("ez6pf4w4vi7z6fqq43v5i3gpv"); // 	    double tmp = ND_rw(n);
UNSUPPORTED("24qsh566odunv14qzj2zan7bz"); // 	    ND_rw(n) = ND_mval(n);
UNSUPPORTED("cgxuqwflawrd9e6dmnsh3sbwa"); // 	    ND_mval(n) = tmp;
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 9co1bgu5603fx30juwb01faf
// static void setEdgeLabelPos (graph_t * g) 
public static Object setEdgeLabelPos(Object... arg) {
UNSUPPORTED("e2z2o5ybnr5tgpkt8ty7hwan1"); // static void
UNSUPPORTED("7y94r9t4hf6d0ltbie4f323al"); // setEdgeLabelPos (graph_t * g)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("7ma9kdgag30w5ofv1niitxbro"); //     node_t* n;
UNSUPPORTED("1o9j4rz3dizwsgefis1axd6uw"); //     textlabel_t* l;
UNSUPPORTED("cbzhyr6lytrowd5gxn3tg000a"); //     /* place regular edge labels */
UNSUPPORTED("8g62mxpap4eeua2lkn9a1iosi"); //     for (n = GD_nlist(g); n; n = ND_next(n)) {
UNSUPPORTED("53rvntgqit26uu0ydhawavshp"); // 	if (ND_node_type(n) == 1) {
UNSUPPORTED("7sijld2wh9ulkpkumhl6dqqaj"); // 	    if (ND_alg(n)) {   // label of non-adjacent flat edge
UNSUPPORTED("5ccfgna84rl1jtgmuk8nbffqy"); // 		edge_t* fe = (edge_t*)ND_alg(n);
UNSUPPORTED("8rofnso8jnaa77ukvfpwruvyx"); // 		assert ((l = ED_label(fe)));
UNSUPPORTED("ak1kh1v4u9s5kof1svwbc6ssr"); // 		l->pos = ND_coord(n);
UNSUPPORTED("9ehteylkrnipypq5s9c6jjm67"); // 		l->set = NOT(0);
UNSUPPORTED("6t98dcecgbvbvtpycwiq2ynnj"); // 	    }
UNSUPPORTED("15c8rehrm31gtqtwrj9r863k5"); // 	    else if ((l = ND_label(n))) {// label of regular edge
UNSUPPORTED("3i64wd6mr21h7x0hadumabd5r"); // 		place_vnlabel(n);
UNSUPPORTED("6t98dcecgbvbvtpycwiq2ynnj"); // 	    }
UNSUPPORTED("mlknwb70zhu4paqbncp6enq9"); // 	    if (l) updateBB(g, l);
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 6agx6m2qof9lg57co232lwakj
// static void _dot_splines(graph_t * g, int normalize) 
static void _dot_splines(Agraph_s g, int normalize)
{
ENTERING("6agx6m2qof9lg57co232lwakj","_dot_splines");
try {
    int i, j, k, n_nodes, n_edges, ind, cnt;
    Agnode_s n;
    final __struct__ fwdedgeai = __struct__.from(Agedgeinfo_t.class), fwdedgebi = __struct__.from(Agedgeinfo_t.class);
    final __struct__ fwdedgea = __struct__.from(Agedgepair_s.class), fwdedgeb = __struct__.from(Agedgepair_s.class);
    Agedge_s e, e0, e1, ea, eb, le0, le1;
    __ptr__ edges;
    path P;
    final __struct__ sd = __struct__.from(spline_info_t.class);
    int et = (GD_flags(g) & (7 << 1));
    fwdedgea.getStruct("out").getStruct("base").setPtr("data", fwdedgeai.amp());
    fwdedgeb.getStruct("out").getStruct("base").setPtr("data", fwdedgebi.amp());
    if (et == (0 << 1)) return; 
    if (et == (2 << 1)) {
	resetRW (g);
	if ((GD_has_labels(g) & (1 << 0))!=0) {
UNSUPPORTED("4k888z8ymdp2b653twxc1ugbu"); // 	    agerr (AGWARN, "edge labels with splines=curved not supported in dot - use xlabels\n");
	}
	for (n = agfstnode (g); n!=null; n = agnxtnode(g, n)) {
	    for (e = agfstout(g, n); e!=null; e = agnxtout(g,e)) {
		makeStraightEdge(g, e, et, Z.z().sinfo);
	    }
	}
UNSUPPORTED("46btiag50nczzur103eqhjcup"); // 	goto finish;
    } 
    mark_lowclusters(g);
    if (routesplinesinit()!=0) return;
    P = (path) zmalloc(sizeof(path.class));
    /* FlatHeight = 2 * GD_nodesep(g); */
    sd.setInt("Splinesep", GD_nodesep(g) / 4);
    sd.setInt("Multisep", GD_nodesep(g));
    edges = zmalloc(sizeof_starstar_empty(Agedge_s.class, 128));
    /* compute boundaries and list of splines */
    sd.setInt("RightBound", 0);
    sd.setInt("LeftBound", 0);
    n_edges = n_nodes = 0;
    for (i = GD_minrank(g); i <= GD_maxrank(g); i++) {
	n_nodes += GD_rank(g).plus(i).getInt("n");
	if ((n = (Agnode_s) GD_rank(g).plus(i).getArrayOfPtr("v").plus(0).getPtr())!=null)
	    sd.setInt("LeftBound", (int)MIN(sd.getInt("LeftBound"), (ND_coord(n).getDouble("x") - ND_lw(n))));
	if (GD_rank(g).plus(i).getInt("n")!=0 && (n = (Agnode_s) GD_rank(g).plus(i).getArrayOfPtr("v").plus(GD_rank(g).plus(i).getInt("n") - 1).getPtr())!=null)
	    sd.setInt("RightBound", (int)MAX(sd.getInt("RightBound"), (ND_coord(n).getDouble("x") + ND_rw(n))));
	sd.setInt("LeftBound", sd.getInt("LeftBound") - 16);
	sd.setInt("RightBound", sd.getInt("RightBound") + 16);
	for (j = 0; j < GD_rank(g).plus(i).getInt("n"); j++) {
	    n = (Agnode_s) GD_rank(g).plus(i).getArrayOfPtr("v").plus(j).getPtr();
		/* if n is the label of a flat edge, copy its position to
		 * the label.
		 */
	    if (ND_alg(n)!=null) {
		Agedge_s fe = (Agedge_s) ND_alg(n);
		assert (ED_label(fe)!=null);
		ED_label(fe).setStruct("pos", ND_coord(n));
		ED_label(fe).setBoolean("set", NOT(false));
	    }
	    if ((ND_node_type(n) != 0) &&
		((Boolean)Z.z().sinfo.call("splineMerge", n) == false))
		continue;
	    for (k = 0; (e = (Agedge_s) ND_out(n).getArrayOfPtr("list").plus(k).getPtr())!=null; k++) {
		if ((ED_edge_type(e) == 4)
		    || (ED_edge_type(e) == 6))
		    continue;
		setflags(e, 1, 16, 64);
		edges.plus(n_edges++).setPtr(e);
		if (n_edges % 128 == 0)
		    edges = ALLOC_empty (n_edges + 128, edges, Agedge_s.class);
	    }
	    if (ND_flat_out(n).getPtr("list")!=null)
		for (k = 0; (e = (Agedge_s) ND_flat_out(n).getArrayOfPtr("list").plus(k).getPtr())!=null; k++) {
		    setflags(e, 2, 0, 128);
			edges.plus(n_edges++).setPtr(e);
		    if (n_edges % 128 == 0)
			edges = ALLOC_empty (n_edges + 128, edges, Agedge_s.class);
		}
	    if (ND_other(n).getPtr("list")!=null) {
		/* In position, each node has its rw stored in mval and,
                 * if a node is part of a loop, rw may be increased to
                 * reflect the loops and associated labels. We restore
                 * the original value here. 
                 */
		if (ND_node_type(n) == 0) {
		    double tmp = ND_rw(n);
		    ND_rw(n, ND_mval(n));
		    ND_mval(n, tmp);
		}
		for (k = 0; (e = (Agedge_s) ND_other(n).getArrayOfPtr("list").plus(k).getPtr())!=null; k++) {
		    setflags(e, 0, 0, 128);
			edges.plus(n_edges++).setPtr(e);
		    if (n_edges % 128 == 0)
			edges = ALLOC_empty (n_edges + 128, edges, Agedge_s.class);
		}
	    }
	}
    }
    /* Sort so that equivalent edges are contiguous. 
     * Equivalence should basically mean that 2 edges have the
     * same set {(tailnode,tailport),(headnode,headport)}, or
     * alternatively, the edges would be routed identically if
     * routed separately.
     */
    LOG2("_dot_splines::n_edges="+n_edges);
    qsort(edges,
    n_edges,
    sizeof(edges.plus(0)),
    function(dotsplines__c.class, "edgecmp"));
    /* FIXME: just how many boxes can there be? */
    P.setPtr("boxes", zmalloc(sizeof(boxf.class, n_nodes + 20 * 2 * 9)));
    sd.setPtr("Rank_box", zmalloc(sizeof(boxf.class, i)));
    if (et == (1 << 1)) {
    /* place regular edge labels */
	for (n = GD_nlist(g); n!=null; n = ND_next(n)) {
	    if ((ND_node_type(n) == 1) && (ND_label(n)!=null)) {
		place_vnlabel(n);
	    }
	}
    }
    for (i = 0; i < n_edges;) {
 	boolean havePorts;
	ind = i;
	le0 = getmainedge((e0 = (Agedge_s) edges.plus(i++).getPtr()));
	if (ED_tail_port(e0).getBoolean("defined") || ED_head_port(e0).getBoolean("defined")) {
	    havePorts = NOT(false);
	    ea = e0;
	} else {
	    havePorts = false;
	    ea =  le0;
	}
	if ((ED_tree_index(ea) & 32)!=0) {
	    MAKEFWDEDGE(fwdedgea.getStruct("out").amp(), ea);
	    ea = (Agedge_s) fwdedgea.getStruct("out").amp();
	}
	for (cnt = 1; i < n_edges; cnt++, i++) {
	    if (NEQ(le0, (le1 = getmainedge((e1 = (Agedge_s) edges.plus(i).getPtr())))))
		break;
	    if (ED_adjacent(e0)!=0) continue; /* all flat adjacent edges at once */
	    if (ED_tail_port(e1).getBoolean("defined") || ED_head_port(e1).getBoolean("defined")) {
		if (N(havePorts)) break;
		else
		    eb = e1;
	    } else {
		if (havePorts) break;
		else
		    eb = le1;
	    }
	    if ((ED_tree_index(eb) & 32)!=0) {
		MAKEFWDEDGE(fwdedgeb.getStruct("out").amp(), eb);
		eb = (Agedge_s) fwdedgeb.getStruct("out").amp();
	    }
	    if (portcmp(ED_tail_port(ea), ED_tail_port(eb))!=0)
		break;
	    if (portcmp(ED_head_port(ea), ED_head_port(eb))!=0)
		break;
	    if ((ED_tree_index(e0) & 15) == 2
		&& NEQ(ED_label(e0), ED_label(e1)))
		break;
	    if ((ED_tree_index(edges.plus(i).getPtr()) & 64)!=0)	/* Aha! -C is on */
		break;
	}
	if (EQ(agtail(e0), aghead(e0))) {
	    int b, sizey, r;
	    n = agtail(e0);
	    r = ND_rank(n);
	    if (r == GD_maxrank(g)) {
		if (r > 0)
		    sizey = (int) (ND_coord(GD_rank(g).plus(r-1).getArrayOfPtr("v").plus(0).getPtr()).getDouble("y") - ND_coord(n).getDouble("y"));
		else
		    sizey = (int) ND_ht(n);
	    }
	    else if (r == GD_minrank(g)) {
		sizey = (int)(ND_coord(n).getDouble("y") - ND_coord(GD_rank(g).plus(r+1).getArrayOfPtr("v").plus(0).getPtr()).getDouble("y"));
	    }
	    else {
		int upy = (int) (ND_coord(GD_rank(g).plus(r-1).getArrayOfPtr("v").plus(0).getPtr()).getDouble("y") - ND_coord(n).getDouble("y"));
		int dwny = (int) (ND_coord(n).getDouble("y") - ND_coord(GD_rank(g).plus(r+1).getArrayOfPtr("v").plus(0).getPtr()).getDouble("y"));
		sizey = MIN(upy, dwny);
	    }
	    makeSelfEdge(P, edges, ind, cnt, sd.getInt("Multisep"), sizey/2, Z.z().sinfo.amp());
	    for (b = 0; b < cnt; b++) {
		e = (Agedge_s) edges.plus(ind+b).getPtr();
		if (ED_label(e)!=null)
		    updateBB(g, ED_label(e));
	    }
	}
	else if (ND_rank(agtail(e0)) == ND_rank(aghead(e0))) {
	    make_flat_edge(g, sd.amp(), P, edges, ind, cnt, et);
	}
	else
	    make_regular_edge(g, sd.amp(), P, edges, ind, cnt, et);
    }
    /* place regular edge labels */
    for (n = GD_nlist(g); n!=null; n = ND_next(n)) {
	if ((ND_node_type(n) == 1) && (ND_label(n))!=null) {
	    place_vnlabel(n);
	    updateBB(g, ND_label(n));
	}
    }
    /* normalize splines so they always go from tail to head */
    /* place_portlabel relies on this being done first */
    if (normalize!=0)
	edge_normalize(g);
finish :
    /* vladimir: place port labels */
    /* FIX: head and tail labels are not part of cluster bbox */
    if ((Z.z().E_headlabel!=null || Z.z().E_taillabel!=null) && (Z.z().E_labelangle!=null || Z.z().E_labeldistance!=null)) {
UNSUPPORTED("attp4bsjqe99xnhi7lr7pszar"); // 	for (n = agfstnode(g); n; n = agnxtnode(g, n)) {
UNSUPPORTED("54jm4bbgzyl0txauszo1mappu"); // 	    if (E_headlabel) {
UNSUPPORTED("dw8yu56thd0wpolmtby8r5doo"); // 		for (e = agfstin(g, n); e; e = agnxtin(g, e))
UNSUPPORTED("4h39n1vkqyqszgmg2o7d2pw7z"); // 		    if (ED_head_label(AGMKOUT(e))) {
UNSUPPORTED("ex7h0x60y0l4oi3dsqg7sfk1t"); // 			place_portlabel(AGMKOUT(e), NOT(0));
UNSUPPORTED("9u960ou1xs0cdsdn0qe8a13ye"); // 			updateBB(g, ED_head_label(AGMKOUT(e)));
UNSUPPORTED("dkxvw03k2gg9anv4dbze06axd"); // 		    }
UNSUPPORTED("6t98dcecgbvbvtpycwiq2ynnj"); // 	    }
UNSUPPORTED("cqi8doquf015wo1bw8on36qct"); // 	    if (E_taillabel) {
UNSUPPORTED("6gnq0yj07udpwxbuc86k8yysb"); // 		for (e = agfstout(g, n); e; e = agnxtout(g, e)) {
UNSUPPORTED("ejz8yrj8mh0l0gdl5zeaht1ex"); // 		    if (ED_tail_label(e)) {
UNSUPPORTED("9pdg7peez077ldl84zfh73o1w"); // 			if (place_portlabel(e, 0))
UNSUPPORTED("6jup6d9gfnx4b1wptmtw09n6w"); // 			    updateBB(g, ED_tail_label(e));
UNSUPPORTED("dkxvw03k2gg9anv4dbze06axd"); // 		    }
UNSUPPORTED("6eq5kf0bj692bokt0bixy1ixh"); // 		}
UNSUPPORTED("6t98dcecgbvbvtpycwiq2ynnj"); // 	    }
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
    }
    /* end vladimir */
    if (et != (2 << 1)) {
	Memory.free(edges);
	Memory.free(P.getPtr("boxes"));
	Memory.free(P);
	Memory.free(sd.getPtr("Rank_box"));
	routesplinesterm();
    } 
    Z.z().State = 1;
    Z.z().EdgeLabelsDone = 1;
} finally {
LEAVING("6agx6m2qof9lg57co232lwakj","_dot_splines");
}
}




//3 5n306wbdfjbfnimdo9lg6jjaa
// void dot_splines(graph_t * g) 
public static void dot_splines(Agraph_s g) {
ENTERING("5n306wbdfjbfnimdo9lg6jjaa","dot_splines");
try {
    _dot_splines (g, 1);
} finally {
LEAVING("5n306wbdfjbfnimdo9lg6jjaa","dot_splines");
}
}




//3 8jja9ukzsq8tlb9yy7uzavg91
// static void  place_vnlabel(node_t * n) 
public static void place_vnlabel(Agnode_s n) {
ENTERING("8jja9ukzsq8tlb9yy7uzavg91","place_vnlabel");
try {
    final __struct__ dimen = __struct__.from(pointf.class);
    double width;
    Agedge_s e;
    if (ND_in(n).getInt("size") == 0)
	return;			/* skip flat edge labels here */
    for (e = (Agedge_s) ND_out(n).getArrayOfPtr("list").plus(0).getPtr(); ED_edge_type(e) != 0;
	 e = ED_to_orig(e));
    dimen.____(ED_label(e).getStruct("dimen"));
    width = GD_flip(agraphof(n))!=0 ? dimen.getDouble("y") : dimen.getDouble("x");
    ED_label(e).getStruct("pos").setDouble("x", ND_coord(n).getDouble("x") + width / 2.0);
    ED_label(e).getStruct("pos").setDouble("y", ND_coord(n).getDouble("y"));
    ED_label(e).setBoolean("set", NOT(false));
} finally {
LEAVING("8jja9ukzsq8tlb9yy7uzavg91","place_vnlabel");
}
}




//3 598jn37hjkm7j0kcg2nmdvlwq
// static void  setflags(edge_t *e, int hint1, int hint2, int f3) 
public static void setflags(Agedge_s e, int hint1, int hint2, int f3) {
ENTERING("598jn37hjkm7j0kcg2nmdvlwq","setflags");
try {
    int f1, f2;
    if (hint1 != 0)
	f1 = hint1;
    else {
	if (EQ(agtail(e), aghead(e)))
	    if (ED_tail_port(e).getBoolean("defined") || ED_head_port(e).getBoolean("defined"))
		f1 = 4;
	    else
		f1 = 8;
	else if (ND_rank(agtail(e)) == ND_rank(aghead(e)))
	    f1 = 2;
	else
	    f1 = 1;
    }
    if (hint2 != 0)
	f2 = hint2;
    else {
	if (f1 == 1)
	    f2 = (ND_rank(agtail(e)) < ND_rank(aghead(e))) ? 16 : 32;
	else if (f1 == 2)
	    f2 = (ND_order(agtail(e)) < ND_order(aghead(e))) ?  16 : 32;
	else			/* f1 == SELF*EDGE */
	    f2 = 16;
    }
    ED_tree_index(e, (f1 | f2 | f3));
} finally {
LEAVING("598jn37hjkm7j0kcg2nmdvlwq","setflags");
}
}




//3 1nf1s6wkn35ptjn884ii56fh
// static int edgecmp(edge_t** ptr0, edge_t** ptr1) 
public static int edgecmp(__ptr__ ptr0, __ptr__ ptr1) {
ENTERING("1nf1s6wkn35ptjn884ii56fh","edgecmp");
try {
    final __struct__ fwdedgeai = __struct__.from(Agedgeinfo_t.class), fwdedgebi = __struct__.from(Agedgeinfo_t.class);
    final __struct__ fwdedgea = __struct__.from(Agedgepair_s.class), fwdedgeb = __struct__.from(Agedgepair_s.class);
    Agedge_s e0, e1, ea, eb, le0, le1;
    int et0, et1, v0, v1, rv;
    double t0, t1;
    fwdedgea.getStruct("out").getStruct("base").setPtr("data", fwdedgeai.amp());
    fwdedgeb.getStruct("out").getStruct("base").setPtr("data", fwdedgebi.amp());
    e0 = (Agedge_s) ptr0.getPtr();
    e1 = (Agedge_s) ptr1.getPtr();
    et0 = ED_tree_index(e0) & 15;
    et1 = ED_tree_index(e1) & 15;
    if (et0 != et1)
	return (et1 - et0);
    le0 = getmainedge(e0);
    le1 = getmainedge(e1);
    t0 = ND_rank(agtail(le0)) - ND_rank(aghead(le0));
    t1 = ND_rank(agtail(le1)) - ND_rank(aghead(le1));
    v0 = ABS((int)t0);   /* ugly, but explicit as to how we avoid equality tests on fp numbers */
    v1 = ABS((int)t1);
    if (v0 != v1)
	return (v0 - v1);
    t0 = ND_coord(agtail(le0)).getDouble("x") - ND_coord(aghead(le0)).getDouble("x");
    t1 = ND_coord(agtail(le1)).getDouble("x") - ND_coord(aghead(le1)).getDouble("x");
    v0 = ABS((int)t0);
    v1 = ABS((int)t1);
    if (v0 != v1)
	return (v0 - v1);
    /* This provides a cheap test for edges having the same set of endpoints.  */
    if (AGSEQ(le0) != AGSEQ(le1))
	return (AGSEQ(le0) - AGSEQ(le1));
    ea = (ED_tail_port(e0).getBoolean("defined") || ED_head_port(e0).getBoolean("defined")) ? e0 : le0;
    if ((ED_tree_index(ea) & 32)!=0) {
	MAKEFWDEDGE(fwdedgea.getStruct("out").amp(), ea);
	ea = fwdedgea.getStruct("out").amp();
    }
    eb = (ED_tail_port(e1).getBoolean("defined") || ED_head_port(e1).getBoolean("defined")) ? e1 : le1;
    if ((ED_tree_index(eb) & 32)!=0) {
	MAKEFWDEDGE(fwdedgeb.getStruct("out").amp(), eb);
	eb = fwdedgeb.getStruct("out").amp();
    }
    if ((rv = portcmp(ED_tail_port(ea), ED_tail_port(eb)))!=0)
	return rv;
    if ((rv = portcmp(ED_head_port(ea), ED_head_port(eb)))!=0)
	return rv;
    et0 = ED_tree_index(e0) & 192;
    et1 = ED_tree_index(e1) & 192;
    if (et0 != et1)
	return (et0 - et1);
    if (et0 == 2 && NEQ(ED_label(e0), ED_label(e1)))
	 UNSUPPORTED("return (int) (ED_label(e0) - ED_label(e1))");
    return (AGSEQ(e0) - AGSEQ(e1));
} finally {
LEAVING("1nf1s6wkn35ptjn884ii56fh","edgecmp");
}
}




//3 djq8tev8thshox7bob64vi0tf
// static void setState (graph_t* auxg, attr_state_t* attr_state) 
public static Object setState(Object... arg) {
UNSUPPORTED("e2z2o5ybnr5tgpkt8ty7hwan1"); // static void
UNSUPPORTED("7ovh16jwyjc9wtu0rfxnlws9r"); // setState (graph_t* auxg, attr_state_t* attr_state)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("1ko3jd94xpoli03tk73ardy84"); //     /* save state */
UNSUPPORTED("3ibgalw3fchq736xx1ozbvh27"); //     attr_state->E_constr = E_constr;
UNSUPPORTED("e9yatqfh98i71w3v1jcx1agi9"); //     attr_state->E_samehead = E_samehead;
UNSUPPORTED("57rkvwknyk9urdhck24todttg"); //     attr_state->E_sametail = E_sametail;
UNSUPPORTED("4y5i0lqx0ze46l88ehzdh2x1z"); //     attr_state->E_weight = E_weight;
UNSUPPORTED("3yryq1e1hmam5hqciu93ywjj2"); //     attr_state->E_minlen = E_minlen;
UNSUPPORTED("1n91lxusirg2v758j4v9o9hcg"); //     attr_state->E_fontcolor = E_fontcolor;
UNSUPPORTED("1ssj9fq3o1sm21ggttj4r3mo0"); //     attr_state->E_fontname = E_fontname;
UNSUPPORTED("45ntpz46gx7j2hfu2r6ceescw"); //     attr_state->E_fontsize = E_fontsize;
UNSUPPORTED("6vxi0wxhhjg065ishw2vebsqv"); //     attr_state->E_headclip = E_headclip;
UNSUPPORTED("aqu557ovwt2k4j894b5p9dssa"); //     attr_state->E_headlabel = E_headlabel;
UNSUPPORTED("6shb2vynxxgck2x8e8oz63ye"); //     attr_state->E_label = E_label;
UNSUPPORTED("84eq22wy1zlxwofo8cwwbddbb"); //     attr_state->E_label_float = E_label_float;
UNSUPPORTED("czndn89byb90jujvx2sudb6d6"); //     attr_state->E_labelfontcolor = E_labelfontcolor;
UNSUPPORTED("385rz6p4kom75dmgvepqmxlrq"); //     attr_state->E_labelfontname = E_labelfontname;
UNSUPPORTED("397fs88n9xnlcqo4z8at7j66s"); //     attr_state->E_labelfontsize = E_labelfontsize;
UNSUPPORTED("f2nu6sif9lmukmlj2um7gnxns"); //     attr_state->E_tailclip = E_tailclip;
UNSUPPORTED("3ctu9gb3ojun885w9ymnch0er"); //     attr_state->E_taillabel = E_taillabel;
UNSUPPORTED("qiafl7ru9bq54qol6lov5rgm"); //     attr_state->E_xlabel = E_xlabel;
UNSUPPORTED("ap9hj5xd4dfmwws8egpgvk5ti"); //     attr_state->N_height = N_height;
UNSUPPORTED("ctvaloqgyn45in0jdkkvdpf6g"); //     attr_state->N_width = N_width;
UNSUPPORTED("75ey3ud905155tfmw9zapeawj"); //     attr_state->N_shape = N_shape;
UNSUPPORTED("19bnzpge8znnwzna8ub6otjze"); //     attr_state->N_style = N_style;
UNSUPPORTED("6242e8neunx553zs7jb52e2i3"); //     attr_state->N_fontsize = N_fontsize;
UNSUPPORTED("1rjcall3fixy49t0s4bcdgoho"); //     attr_state->N_fontname = N_fontname;
UNSUPPORTED("1bj2vtyz3gettntmktngyjv02"); //     attr_state->N_fontcolor = N_fontcolor;
UNSUPPORTED("1mj5q5f1eft9otmsuyiadl54z"); //     attr_state->N_label = N_label;
UNSUPPORTED("5lkkhmgpur2i2arkoxbpb8lse"); //     attr_state->N_xlabel = N_xlabel;
UNSUPPORTED("3c9tzymzuj2wkftyepa2epzur"); //     attr_state->N_showboxes = N_showboxes;
UNSUPPORTED("9urvz64idw6yth9938puegx1d"); //     attr_state->N_ordering = N_ordering;
UNSUPPORTED("9wqn3lttroloie8t4urgw9dwl"); //     attr_state->N_sides = N_sides;
UNSUPPORTED("7aovr97vmuic712quqt6n4gkd"); //     attr_state->N_peripheries = N_peripheries;
UNSUPPORTED("dc9knw1esnnr7j77so6k8zblk"); //     attr_state->N_skew = N_skew;
UNSUPPORTED("eoium8gqo2cgsjv87c20ixx5k"); //     attr_state->N_orientation = N_orientation;
UNSUPPORTED("aq6is6cduc5wvclu1hjacuyk0"); //     attr_state->N_distortion = N_distortion;
UNSUPPORTED("3w13k0cqxkk8gniu6ydy3qii6"); //     attr_state->N_fixed = N_fixed;
UNSUPPORTED("32p2drvqb6h9n0118du912gv0"); //     attr_state->N_nojustify = N_nojustify;
UNSUPPORTED("e2hsbuo1kd2fghtopje0lfp2b"); //     attr_state->N_group = N_group;
UNSUPPORTED("74w0uzukx3derbgpgi60dzyyg"); //     attr_state->State = State;
UNSUPPORTED("936fjorw02qiz50qpj7y6en2m"); //     attr_state->G_ordering = G_ordering;
UNSUPPORTED("2l0v2tecrgmws3to99rcimxzm"); //     E_constr = NULL;
UNSUPPORTED("93dfyiz6pxq59j6ujx97hdd0c"); //     E_samehead = agattr(auxg,AGEDGE, "samehead", NULL);
UNSUPPORTED("7kovxag1wgr874sgxwpz7ls6a"); //     E_sametail = agattr(auxg,AGEDGE, "sametail", NULL);
UNSUPPORTED("295z0g5v309fbrrdopfy66rf4"); //     E_weight = agattr(auxg,AGEDGE, "weight", NULL);
UNSUPPORTED("3uo53r92k5fuzy9gb2i1k7612"); //     if (!E_weight)
UNSUPPORTED("4oq1f4cnu0hk0xm34kx9m79le"); // 	E_weight = agattr (auxg,AGEDGE,"weight", "");
UNSUPPORTED("aoqamti27wg8hvpyho5xmdc9"); //     E_minlen = NULL;
UNSUPPORTED("8jzaf5sdfgbpqx8y0squconvr"); //     E_fontcolor = NULL;
UNSUPPORTED("25csaeghkl1rd5cha609fm2vm"); //     E_fontname = (agattr(auxg,AGEDGE,"fontname",NULL));
UNSUPPORTED("d9ivs4hv5xdhsxwh8oz1dri02"); //     E_fontsize = (agattr(auxg,AGEDGE,"fontsize",NULL));
UNSUPPORTED("djpd3vd7suatk0n76mplhzog4"); //     E_headclip = (agattr(auxg,AGEDGE,"headclip",NULL));
UNSUPPORTED("8fy5jrgw22q72jvvjmqh6ajjb"); //     E_headlabel = NULL;
UNSUPPORTED("93a15wlfj0tmijeeyd1qb12v6"); //     E_label = (agattr(auxg,AGEDGE,"label",NULL));
UNSUPPORTED("2l6gmyi1pz4cv9i29k4u3mpjf"); //     E_label_float = (agattr(auxg,AGEDGE,"label_float",NULL));
UNSUPPORTED("dcp5qxpq37yer9cipch7q2oc4"); //     E_labelfontcolor = NULL;
UNSUPPORTED("133ni5qwdb96od0wcma7hj05h"); //     E_labelfontname = (agattr(auxg,AGEDGE,"labelfontname",NULL));
UNSUPPORTED("cq9n4kf29qgqy1ll6gandld7f"); //     E_labelfontsize = (agattr(auxg,AGEDGE,"labelfontsize",NULL));
UNSUPPORTED("2l9pqb0sug1sr8dlojy1gvik0"); //     E_tailclip = (agattr(auxg,AGEDGE,"tailclip",NULL));
UNSUPPORTED("9a173t42nyif5cx0ee6c4qos2"); //     E_taillabel = NULL;
UNSUPPORTED("pu58ta2e8cevjt84brxtyecs"); //     E_xlabel = NULL;
UNSUPPORTED("2p7j1fghgsib6tkic2cc1t601"); //     N_height = (agattr(auxg,AGNODE,"height",NULL));
UNSUPPORTED("49eok3z6e4piel4m6f7rk8fb6"); //     N_width = (agattr(auxg,AGNODE,"width",NULL));
UNSUPPORTED("8cyc904mtcb0zlwybzrqxujrv"); //     N_shape = (agattr(auxg,AGNODE,"shape",NULL));
UNSUPPORTED("1ggb495lty2zumaw3qh2d3ssd"); //     N_style = NULL;
UNSUPPORTED("6hcb194pxn8upijardzdy3v2a"); //     N_fontsize = (agattr(auxg,AGNODE,"fontsize",NULL));
UNSUPPORTED("e1cg6m56w3uwo3m2dfdh71o5x"); //     N_fontname = (agattr(auxg,AGNODE,"fontname",NULL));
UNSUPPORTED("1gjzz1tv51zd3vsgyc6b8dfdz"); //     N_fontcolor = NULL;
UNSUPPORTED("42y8wmut30tkdxrxdvh5v8xtz"); //     N_label = (agattr(auxg,AGNODE,"label",NULL));
UNSUPPORTED("7jni9lzv0nagk8mnil6vsgzpt"); //     N_xlabel = NULL;
UNSUPPORTED("5hshk2a2mwuk7cjxsc4mzky7g"); //     N_showboxes = NULL;
UNSUPPORTED("1j63bq1sarpj53iwvo4ynyeck"); //     N_ordering = (agattr(auxg,AGNODE,"ordering",NULL));
UNSUPPORTED("7yaoaugb8cqh7ksl8w4i4utlv"); //     N_sides = (agattr(auxg,AGNODE,"sides",NULL));
UNSUPPORTED("15x8xrchzah7wcc5ukej42hut"); //     N_peripheries = (agattr(auxg,AGNODE,"peripheries",NULL));
UNSUPPORTED("dcu49fws0uvo8falspy1lno4k"); //     N_skew = (agattr(auxg,AGNODE,"skew",NULL));
UNSUPPORTED("bvjg1ch1pmuvfhvf5ubyrqhl3"); //     N_orientation = (agattr(auxg,AGNODE,"orientation",NULL));
UNSUPPORTED("b67lzfds2wabbxqa4qaoj0iv8"); //     N_distortion = (agattr(auxg,AGNODE,"distortion",NULL));
UNSUPPORTED("yet2s8h61hoih7vba5lhvbn"); //     N_fixed = (agattr(auxg,AGNODE,"fixed",NULL));
UNSUPPORTED("dv9ccs2r6bgkfuzvquyym1z1k"); //     N_nojustify = NULL;
UNSUPPORTED("7kwmsq3m3f4oe4jyi2hzkq544"); //     N_group = NULL;
UNSUPPORTED("3lqtt3u3nf2945mjpkjcw6s48"); //     G_ordering = (agattr(auxg,AGRAPH,"ordering",NULL));
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 14hhte1l3zo45pzop5ugwahiv
// static graph_t* cloneGraph (graph_t* g, attr_state_t* attr_state) 
public static Object cloneGraph(Object... arg) {
UNSUPPORTED("9bkg8lvj5zr49zg08g7iijeg0"); // static graph_t*
UNSUPPORTED("4uq8e6159vvwjuygnnrtonzjr"); // cloneGraph (graph_t* g, attr_state_t* attr_state)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("d4lkyrfdivg76lnwroshuwy1r"); //     Agsym_t* sym;
UNSUPPORTED("8scmnlh4aqjfli9hjn7snnhb2"); //     graph_t* auxg;
UNSUPPORTED("9wn75gbfikchs3m5ip8uqbqp9"); //     if (agisdirected(g))
UNSUPPORTED("bc2kavqqh860759qs0rw39g9w"); // 	auxg = agopen ("auxg",Agdirected, ((Agdisc_t *)0));
UNSUPPORTED("div10atae09n36x269sl208r1"); //     else
UNSUPPORTED("41dm8ksorga6af1u82vvp2o08"); // 	auxg = agopen ("auxg",Agundirected, ((Agdisc_t *)0));
UNSUPPORTED("dvx3r3ba8ihb3ho0irr3iflz9"); //     agbindrec(auxg, "Agraphinfo_t", sizeof(Agraphinfo_t), NOT(0));
UNSUPPORTED("8o4tyxwwt6nurmyulizd8yx4h"); //     agattr(auxg, AGRAPH, "rank", "");
UNSUPPORTED("4azamavz8yei4klxixxjkjdzy"); //     GD_drawing(auxg) = (layout_t*)zmalloc(sizeof(layout_t));
UNSUPPORTED("bl2bbfcsejbdva171i3uuah14"); //     GD_drawing(auxg)->quantum = GD_drawing(g)->quantum; 
UNSUPPORTED("96jzn981deono0qtt4353wjnd"); //     GD_drawing(auxg)->dpi = GD_drawing(g)->dpi;
UNSUPPORTED("am2ry0w98859w4vlnhjmoegj2"); //     GD_charset(auxg) = GD_charset (g);
UNSUPPORTED("8qqdurbqk0iszxbs1xz13bx72"); //     if (GD_flip(g))
UNSUPPORTED("dldh0wwkfscuwx8vmqd78zne6"); // 	(GD_rankdir2(auxg) = 0);
UNSUPPORTED("div10atae09n36x269sl208r1"); //     else
UNSUPPORTED("a1gxjxg6ob083fwqk6gac69va"); // 	(GD_rankdir2(auxg) = 1);
UNSUPPORTED("94df1x35koj4u57phwmdtoipp"); //     GD_nodesep(auxg) = GD_nodesep(g);
UNSUPPORTED("m7a4df7fb58fj3qpf7ocrnth"); //     GD_ranksep(auxg) = GD_ranksep(g);
UNSUPPORTED("ehand70vpsfxy8xo2usw3sdpd"); // 	//copy node attrs to auxg
UNSUPPORTED("ee6l5a5uekrqgzpa1tzzvn8lu"); //     sym=agnxtattr(agroot(g),AGNODE,NULL); //get the first attr.
UNSUPPORTED("e9gle5ohw021fnltrv101u94f"); //     for (; sym; sym = agnxtattr(agroot(g),AGNODE,sym))
UNSUPPORTED("4mgrl284otjjxa13ifyvsix9o"); // 	agattr (auxg, AGNODE,sym->name, sym->defval);
UNSUPPORTED("8l0npxgg53xbodt3h5bsxaf1u"); // 	//copy edge attributes
UNSUPPORTED("d0l2zhgn9atu49ot95sjvnjx7"); //     sym=agnxtattr(agroot(g),AGEDGE,NULL); //get the first attr.
UNSUPPORTED("2syhqyxjtl43g8k8nszcgv3qa"); //     for (; sym; sym = agnxtattr(agroot(g),AGEDGE,sym))
UNSUPPORTED("7ne23vf4nlppvlnjcbkj9xj7s"); // 	agattr (auxg, AGEDGE,sym->name, sym->defval);
UNSUPPORTED("dbdwjxpzch7ieese5oq712h84"); //     if (!agattr(auxg,AGEDGE, "headport", NULL))
UNSUPPORTED("8e9itu32gwm54e46x9vefuuc"); // 	agattr(auxg,AGEDGE, "headport", "");
UNSUPPORTED("8d6592shcigbk3cnbs3g6zd5o"); //     if (!agattr(auxg,AGEDGE, "tailport", NULL))
UNSUPPORTED("1afdsvho7rpgcscq77epwq7h0"); // 	agattr(auxg,AGEDGE, "tailport", "");
UNSUPPORTED("8g7yfvh0djzbxpsk11iys8s73"); //     setState (auxg, attr_state);
UNSUPPORTED("84c7zokshe6lxrxoh1l48oh0b"); //     return auxg;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 75bd23hms71i6w46oddi0v7c7
// static void cleanupCloneGraph (graph_t* g, attr_state_t* attr_state) 
public static Object cleanupCloneGraph(Object... arg) {
UNSUPPORTED("e2z2o5ybnr5tgpkt8ty7hwan1"); // static void
UNSUPPORTED("8l276u9l2gpbol4c2u457ic4o"); // cleanupCloneGraph (graph_t* g, attr_state_t* attr_state)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("81hz17qm480gekbimxzqp5917"); //     /* restore main graph syms */
UNSUPPORTED("dyp7mrvrp7pgbjcxvjp3k0rb0"); //     E_constr = attr_state->E_constr;
UNSUPPORTED("8x6a3xddh4y42i73tahevx314"); //     E_samehead = attr_state->E_samehead;
UNSUPPORTED("cr53qmp35pahyiy1lksf7pc7o"); //     E_sametail = attr_state->E_sametail;
UNSUPPORTED("3x6ebo3n7gp5ys2ei418ehbmt"); //     E_weight = attr_state->E_weight;
UNSUPPORTED("1ho97fsth1t5vvxc5xlwbtvyp"); //     E_minlen = attr_state->E_minlen;
UNSUPPORTED("bfo2q1yt9zej3021f132mqwe6"); //     E_fontcolor = attr_state->E_fontcolor;
UNSUPPORTED("caxxsouex07crddgxredl1u2p"); //     E_fontname = attr_state->E_fontname;
UNSUPPORTED("etmu0sib2tphqwe1wujlnfrup"); //     E_fontsize = attr_state->E_fontsize;
UNSUPPORTED("6gb56lwdjjgzcqilrpq8m22ns"); //     E_headclip = attr_state->E_headclip;
UNSUPPORTED("7arkupsho8bk69qdlx5osz58q"); //     E_headlabel = attr_state->E_headlabel;
UNSUPPORTED("8dbqaxdoyj9z0pkuwsg9vl0eu"); //     E_label = attr_state->E_label;
UNSUPPORTED("k2wg526i4loudvbn7p6a8e68"); //     E_label_float = attr_state->E_label_float;
UNSUPPORTED("2tux1z7sjyb58ty6c0bvgfn7u"); //     E_labelfontcolor = attr_state->E_labelfontcolor;
UNSUPPORTED("exlraaiion456s8e3xwpxozb4"); //     E_labelfontname = attr_state->E_labelfontname;
UNSUPPORTED("31yhqytdbu2odz0oi3cudffo1"); //     E_labelfontsize = attr_state->E_labelfontsize;
UNSUPPORTED("frcohw4vy68cah25ckm1cobw"); //     E_tailclip = attr_state->E_tailclip;
UNSUPPORTED("2z89ojbnte8kwtr9jotk499fc"); //     E_taillabel = attr_state->E_taillabel;
UNSUPPORTED("3ujqfey1gvz17vmhn9w63qxob"); //     E_xlabel = attr_state->E_xlabel;
UNSUPPORTED("atq6bae3mv1qr8egljjfsrit6"); //     N_height = attr_state->N_height;
UNSUPPORTED("aiqf0nz6dfedq2jwgmajnranb"); //     N_width = attr_state->N_width;
UNSUPPORTED("dt3zktdkst02y23fr3owwe9b9"); //     N_shape = attr_state->N_shape;
UNSUPPORTED("6pul6vxncmyc96hnj7hoh9xlv"); //     N_style = attr_state->N_style;
UNSUPPORTED("bbr363noiuq4fiv6dc11hrgki"); //     N_fontsize = attr_state->N_fontsize;
UNSUPPORTED("5jr71bz21o8ex4piwuj7cyf35"); //     N_fontname = attr_state->N_fontname;
UNSUPPORTED("muitbco7ytv8yr71bth3vd45"); //     N_fontcolor = attr_state->N_fontcolor;
UNSUPPORTED("gz675ugjp8z2xgply33d6llr"); //     N_label = attr_state->N_label;
UNSUPPORTED("3l56ed3d2ocqttxq2mwcaxrs"); //     N_xlabel = attr_state->N_xlabel;
UNSUPPORTED("2fmh1t4tflmptq1d2wqygd7qt"); //     N_showboxes = attr_state->N_showboxes;
UNSUPPORTED("br7qgmqsjpzi772b9wc7g00x0"); //     N_ordering = attr_state->N_ordering;
UNSUPPORTED("cpjgwylhr8d4gvztykf36mf71"); //     N_sides = attr_state->N_sides;
UNSUPPORTED("dzvcridjcoqlimn9odmlcn9ao"); //     N_peripheries = attr_state->N_peripheries;
UNSUPPORTED("7wd3t9ok31e37hdqtnffwum66"); //     N_skew = attr_state->N_skew;
UNSUPPORTED("bkocxpinr1crae21mcidps0"); //     N_orientation = attr_state->N_orientation;
UNSUPPORTED("bni1bp9we328ofu8dqwnws3b8"); //     N_distortion = attr_state->N_distortion;
UNSUPPORTED("9ni0gtudygio7exe31uyvwwxy"); //     N_fixed = attr_state->N_fixed;
UNSUPPORTED("2ep79qyr9wgfu8hyateqngx4o"); //     N_nojustify = attr_state->N_nojustify;
UNSUPPORTED("77t5uu3931h080u18f50zr0qw"); //     N_group = attr_state->N_group;
UNSUPPORTED("1czw51da8yggj3mvb5v6dircs"); //     G_ordering = attr_state->G_ordering;
UNSUPPORTED("60kkiysc7uy667s1kr04csskc"); //     State = attr_state->State;
UNSUPPORTED("9wfeu3yikah30i1eq789pb1dc"); //     free (attr_state);
UNSUPPORTED("2tv8es032rxzavamw0dgvm53h"); //     dot_cleanup(g);
UNSUPPORTED("ego3r1tvwrpv2hie8y9p8vq4z"); //     agclose(g);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 19tqa2ag8idq1y6l3zslax8e8
// static node_t* cloneNode (graph_t* g, node_t* orign, int flipped) 
public static Object cloneNode(Object... arg) {
UNSUPPORTED("b9dd3satxbh59hljdxzcxecc"); // static node_t*
UNSUPPORTED("o807sh2podu4gxrp6mweyg3p"); // cloneNode (graph_t* g, node_t* orign, int flipped)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("9mlzre34kwhn9wm44mck7e8li"); //     node_t* n = agnode(g, agnameof(orign),1);
UNSUPPORTED("21wqfabmz2qk7g2vnunyyw1n8"); //     agbindrec(n, "Agnodeinfo_t", sizeof(Agnodeinfo_t), NOT(0));
UNSUPPORTED("80tteudx6zbkyxy4erhh0fqeo"); //     agcopyattr (orign, n);
UNSUPPORTED("65o4lsnpkxraq4wik0gzbv3g3"); //     if (shapeOf(orign) == SH_RECORD) {
UNSUPPORTED("7w0wn4e9gizbzrsqcre4pnx7"); // 	int lbllen = strlen(ND_label(orign)->text);
UNSUPPORTED("3avq2zh3wpi2nrhofz3l9esev"); //         char* buf = (char*)gmalloc((lbllen+3)*sizeof(char));
UNSUPPORTED("bbilsao6wizinl5kripcoya9d"); //         sprintf (buf, "{%s}", ND_label(orign)->text);
UNSUPPORTED("e93wd087tiy2p8rvqlme93ynm"); // 	agset (n, "label", buf);
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("69hc24ic55i66g8tf2ne42327"); //     return n;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 eqzwnj9u1k6ij1842mph3kly9
// static edge_t* cloneEdge (graph_t* g, node_t* tn, node_t* hn, edge_t* orig) 
public static Object cloneEdge(Object... arg) {
UNSUPPORTED("adyfsyiyu158mwhrtm33biik2"); // static edge_t*
UNSUPPORTED("cpg8ogbdq9zzrqiadh2q271ky"); // cloneEdge (graph_t* g, node_t* tn, node_t* hn, edge_t* orig)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("mdnixwzb9bm22acv2mbc4yo2"); //     edge_t* e = agedge(g, tn, hn,NULL,1);
UNSUPPORTED("ce403szny1a2xoli6uh7ocakq"); //     /* for (; ED_edge_type(orig) != NORMAL; orig = ED_to_orig(orig)); */
UNSUPPORTED("554nt9t4qnutd0wixwbpok522"); //     agbindrec(e, "Agedgeinfo_t", sizeof(Agedgeinfo_t), NOT(0));
UNSUPPORTED("6yfr23jllhpfychz887mht80b"); //     agcopyattr (orig, e);
UNSUPPORTED("4v614d3uabme2jyn0anuritbb"); // /*
UNSUPPORTED("jgkgn8228j52jq4wc7yo2q8t"); //     if (orig->tail != ND_alg(tn)) {
UNSUPPORTED("86dayio2rrehbyot92z4xh4d1"); // 	char* hdport = agget (orig, HEAD_ID);
UNSUPPORTED("39vbjr08q96wugxyva077qpok"); // 	char* tlport = agget (orig, TAIL_ID);
UNSUPPORTED("3z0livr6yj8gkkuxtvqwrqy95"); // 	agset (e, TAIL_ID, (hdport ? hdport : ""));
UNSUPPORTED("dilecd9q5c2tj0pnl7tfwgixx"); // 	agset (e, HEAD_ID, (tlport ? tlport : ""));
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("bnetqzovnscxile7ao44kc0qd"); // */
UNSUPPORTED("2bswif6w6ot01ynlvkimntfly"); //     return e;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 3zb2qrqaqzr6n3m7dgxp4pmrp
// static pointf transformf (pointf p, pointf del, int flip) 
public static Object transformf(Object... arg) {
UNSUPPORTED("2zzd7mrm2u540dwuyzehozffj"); // static pointf
UNSUPPORTED("a59oomtgi9wbd42kpsaaref6e"); // transformf (pointf p, pointf del, int flip)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("9wlzvfxuhvsgkkq6lvlrw01d2"); //     if (flip) {
UNSUPPORTED("3vhnqvj1whk5vk9hofkhjtksr"); // 	double i = p.x;
UNSUPPORTED("9sla4yejg4e4tlklijoil9k4u"); // 	p.x = p.y;
UNSUPPORTED("688l858wkw5j2uqosjyesr15h"); // 	p.y = -i;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("890s36h0fh77q487p72cjtyz"); //     return add_pointf(p, del);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 bmsa24i3avg14po4sp17yh89k
// static int edgelblcmpfn(edge_t** ptr0, edge_t** ptr1) 
public static int edgelblcmpfn(__ptr__ ptr0, __ptr__ ptr1) {
ENTERING("bmsa24i3avg14po4sp17yh89k","edgelblcmpfn");
try {
    Agedge_s e0, e1;
    final __struct__ sz0 = __struct__.from(pointf.class), sz1 = __struct__.from(pointf.class);
    e0 = (Agedge_s) ptr0.getPtr();
    e1 = (Agedge_s) ptr1.getPtr();
    if (ED_label(e0)!=null) {
	if (ED_label(e1)!=null) {
	    sz0.____(ED_label(e0).getStruct("dimen"));
	    sz1.____(ED_label(e1).getStruct("dimen"));
	    if (sz0.getDouble("x") > sz1.getDouble("x")) return -1;
	    else if (sz0.getDouble("x") < sz1.getDouble("x")) return 1;
	    else if (sz0.getDouble("y") > sz1.getDouble("y")) return -1;
	    else if (sz0.getDouble("y") < sz1.getDouble("y")) return 1;
	    else return 0;
	}
	else
	    return -1;
    }
    else if (ED_label(e1)!=null) {
 	return 1;
    }
    else
 	return 0;
} finally {
LEAVING("bmsa24i3avg14po4sp17yh89k","edgelblcmpfn");
}
}




//3 3xmylrnypvoqrj2yrxnomsj5k
// static void makeSimpleFlatLabels (node_t* tn, node_t* hn, edge_t** edges, int ind, int cnt, int et, int n_lbls) 
public static void makeSimpleFlatLabels(Agnode_s tn, Agnode_s hn, __ptr__ edges, int ind, int cnt, int et, int n_lbls) {
ENTERING("3xmylrnypvoqrj2yrxnomsj5k","makeSimpleFlatLabels");
try {
    pointf ps;
    final __struct__ poly = __struct__.from(Ppoly_t.class);
    int pn[] = new int[1];
	Agedge_s e = (Agedge_s) edges.plus(ind).getPtr();
    final __array_of_struct__ points = __array_of_struct__.malloc(pointf.class, 10);
    final __struct__ tp = __struct__.from(pointf.class), hp = __struct__.from(pointf.class);
    int i, pointn;
    double leftend, rightend, ctrx=0, ctry=0, miny, maxy;
    double uminx=0, umaxx=0;
    double lminx=0, lmaxx=0;
    __ptr__ earray = zmalloc(sizeof_starstar_empty(Agedge_s.class, cnt));
    for (i = 0; i < cnt; i++) {
	earray.plus(i).setPtr(edges.plus(ind + i).getPtr());
    }
    qsort(earray,
    cnt,
    sizeof(earray.plus(0)),
    function(dotsplines__c.class, "edgelblcmpfn"));
    tp.____(add_pointf(ND_coord(tn), ED_tail_port(e).getStruct("p")));
    hp.____(add_pointf(ND_coord(hn), ED_head_port(e).getStruct("p")));
    leftend = tp.getDouble("x")+ND_rw(tn);
    rightend = hp.getDouble("x")-ND_lw(hn);
    ctrx = (leftend + rightend)/2.0;
    /* do first edge */
    e = (Agedge_s) earray.plus(0).getPtr();
    pointn = 0;
    points.plus(pointn++).setStruct(tp);
    points.plus(pointn++).setStruct(tp);
    points.plus(pointn++).setStruct(hp);
    points.plus(pointn++).setStruct(hp);
    clip_and_install(e, aghead(e), points.asPtr(), pointn, Z.z().sinfo.amp());
    ED_label(e).getStruct("pos").setDouble("x", ctrx);
    ED_label(e).getStruct("pos").setDouble("y", tp.getDouble("y") + (ED_label(e).getStruct("dimen").getDouble("y")+6)/2.0);
    ED_label(e).setBoolean("set", NOT(false));
    miny = tp.getDouble("y") + 6/2.0;
    maxy = miny + ED_label(e).getStruct("dimen").getDouble("y");
    uminx = ctrx - (ED_label(e).getStruct("dimen").getDouble("x"))/2.0;
    umaxx = ctrx + (ED_label(e).getStruct("dimen").getDouble("x"))/2.0;
    for (i = 1; i < n_lbls; i++) {
	e = (Agedge_s) earray.plus(i).getPtr();
	if (i%2!=0) {  /* down */
	    if (i == 1) {
		lminx = ctrx - (ED_label(e).getStruct("dimen").getDouble("x"))/2.0;
		lmaxx = ctrx + (ED_label(e).getStruct("dimen").getDouble("x"))/2.0;
		}
	    miny -= 6 + ED_label(e).getStruct("dimen").getDouble("y");
	    points.plus(0).setStruct(tp);
	    points.plus(1).setDouble("x", tp.getDouble("x"));
	    points.plus(1).setDouble("y", miny - 6);
	    points.plus(2).setDouble("x", hp.getDouble("x"));
	    points.plus(2).setDouble("y", points.plus(1).getDouble("y"));
	    points.plus(3).setStruct(hp);
	    points.plus(4).setDouble("x", lmaxx);
	    points.plus(4).setDouble("y", hp.getDouble("y"));
	    points.plus(5).setDouble("x", lmaxx);
	    points.plus(5).setDouble("y", miny);
	    points.plus(6).setDouble("x", lminx);
	    points.plus(6).setDouble("y", miny);
	    points.plus(7).setDouble("x", lminx);
	    points.plus(7).setDouble("y", tp.getDouble("y"));
	    ctry = miny + (ED_label(e).getStruct("dimen").getDouble("y"))/2.0;
	}
	else {   /* up */
UNSUPPORTED("7owdudualx55z2cnm9x3iio0w"); // 	    points[0] = tp;
UNSUPPORTED("43w0zont6q3y1axlcy96rzm5x"); // 	    points[1].x = uminx;
UNSUPPORTED("285u4l65puy5nr3pgq6acl4i2"); // 	    points[1].y = tp.y;
UNSUPPORTED("uctdrwzmec4w6vmirs9on197"); // 	    points[2].x = uminx;
UNSUPPORTED("d9b8e2upja8koam9memys7nj1"); // 	    points[2].y = maxy;
UNSUPPORTED("e8a8ucdpq7sgmbi3qyldleb1s"); // 	    points[3].x = umaxx;
UNSUPPORTED("d7xd9vzbdbezltrxsp9a3byuc"); // 	    points[3].y = maxy;
UNSUPPORTED("59abeyxxk9ow1g6m45t4ahih7"); // 	    points[4].x = umaxx;
UNSUPPORTED("2lzgl5468xguophz9d5wyer2x"); // 	    points[4].y = hp.y;
UNSUPPORTED("41u0uroraw4xanvpgg6l74kyh"); // 	    points[5].x = hp.x;
UNSUPPORTED("cwkk5bnko3e1udrx4cb720zss"); // 	    points[5].y = hp.y;
UNSUPPORTED("eev7hf3617k74bnq18uiedyb0"); // 	    points[6].x = hp.x;
UNSUPPORTED("aqxt1dvgfq5zcptjwgx1b3mmq"); // 	    points[6].y = maxy + 6;
UNSUPPORTED("5s3o04yf5lzca6ruuygfxngj2"); // 	    points[7].x = tp.x;
UNSUPPORTED("56zheeat0b8mo4uvlcbvgbu80"); // 	    points[7].y = maxy + 6;
UNSUPPORTED("ehcig8trxc4ble6pcochubv7z"); // 	    ctry =  maxy + (ED_label(e)->dimen.y)/2.0 + 6;
UNSUPPORTED("e2zgxycgqefryde9nbv6cqz1u"); // 	    maxy += ED_label(e)->dimen.y + 6;
	}
	poly.setInt("pn", 8);
	poly.setPtr("ps", points.asPtr());
	ps = simpleSplineRoute (tp, hp, poly, pn, et == (3 << 1));
	if (pn[0] == 0) return;
	ED_label(e).getStruct("pos").setDouble("x", ctrx);
	ED_label(e).getStruct("pos").setDouble("y", ctry);
	ED_label(e).setBoolean("set", NOT(false));
	clip_and_install(e, aghead(e), ps, pn[0], Z.z().sinfo.amp());
    }
    /* edges with no labels */
    for (; i < cnt; i++) {
	e = (Agedge_s) earray.plus(i).getPtr();
	if (i%2!=0) {  /* down */
	    if (i == 1) {
		lminx = (2*leftend + rightend)/3.0;
		lmaxx = (leftend + 2*rightend)/3.0;
	    }
	    miny -= 6;
	    points.plus(0).setStruct(tp);
	    points.plus(1).setDouble("x", tp.getDouble("x"));
	    points.plus(1).setDouble("y", miny - 6);
	    points.plus(2).setDouble("x", hp.getDouble("x"));
	    points.plus(2).setDouble("y", points.plus(1).getDouble("y"));
	    points.plus(3).setStruct(hp);
	    points.plus(4).setDouble("x", lmaxx);
	    points.plus(4).setDouble("y", hp.getDouble("y"));
	    points.plus(5).setDouble("x", lmaxx);
	    points.plus(5).setDouble("y", miny);
	    points.plus(6).setDouble("x", lminx);
	    points.plus(6).setDouble("y", miny);
	    points.plus(7).setDouble("x", lminx);
	    points.plus(7).setDouble("y", tp.getDouble("y"));
	}
	else {   /* up */
UNSUPPORTED("7owdudualx55z2cnm9x3iio0w"); // 	    points[0] = tp;
UNSUPPORTED("43w0zont6q3y1axlcy96rzm5x"); // 	    points[1].x = uminx;
UNSUPPORTED("285u4l65puy5nr3pgq6acl4i2"); // 	    points[1].y = tp.y;
UNSUPPORTED("uctdrwzmec4w6vmirs9on197"); // 	    points[2].x = uminx;
UNSUPPORTED("d9b8e2upja8koam9memys7nj1"); // 	    points[2].y = maxy;
UNSUPPORTED("e8a8ucdpq7sgmbi3qyldleb1s"); // 	    points[3].x = umaxx;
UNSUPPORTED("d7xd9vzbdbezltrxsp9a3byuc"); // 	    points[3].y = maxy;
UNSUPPORTED("59abeyxxk9ow1g6m45t4ahih7"); // 	    points[4].x = umaxx;
UNSUPPORTED("2lzgl5468xguophz9d5wyer2x"); // 	    points[4].y = hp.y;
UNSUPPORTED("41u0uroraw4xanvpgg6l74kyh"); // 	    points[5].x = hp.x;
UNSUPPORTED("cwkk5bnko3e1udrx4cb720zss"); // 	    points[5].y = hp.y;
UNSUPPORTED("eev7hf3617k74bnq18uiedyb0"); // 	    points[6].x = hp.x;
UNSUPPORTED("aqxt1dvgfq5zcptjwgx1b3mmq"); // 	    points[6].y = maxy + 6;
UNSUPPORTED("5s3o04yf5lzca6ruuygfxngj2"); // 	    points[7].x = tp.x;
UNSUPPORTED("56zheeat0b8mo4uvlcbvgbu80"); // 	    points[7].y = maxy + 6;
UNSUPPORTED("7un2qk34mmmhqi296vl50bacs"); // 	    maxy += + 6;
	}
	poly.setInt("pn", 8);
	poly.setPtr("ps", points.asPtr());
	ps = simpleSplineRoute (tp, hp, poly, pn, et == (3 << 1));
	if (pn[0] == 0) return;
	clip_and_install(e, aghead(e), ps, pn[0], Z.z().sinfo.amp());
    }
    Memory.free (earray);
} finally {
LEAVING("3xmylrnypvoqrj2yrxnomsj5k","makeSimpleFlatLabels");
}
}




//3 8kqyzk43ovc2sq6jegua6ytp
// static void makeSimpleFlat (node_t* tn, node_t* hn, edge_t** edges, int ind, int cnt, int et) 
public static void makeSimpleFlat(Agnode_s tn, Agnode_s hn, __ptr__ edges, int ind, int cnt, int et) {
ENTERING("8kqyzk43ovc2sq6jegua6ytp","makeSimpleFlat");
try {
    Agedge_s e = (Agedge_s) edges.plus(ind).getPtr();
    final __array_of_struct__ points = __array_of_struct__.malloc(pointf.class, 10);
    final __struct__ tp = __struct__.from(pointf.class), hp = __struct__.from(pointf.class);
    int i, pointn;
    double stepy, dy;
    tp.____(add_pointf(ND_coord(tn), ED_tail_port(e).getStruct("p")));
    hp.____(add_pointf(ND_coord(hn), ED_head_port(e).getStruct("p")));
    stepy = (cnt > 1) ? ND_ht(tn) / (double)(cnt - 1) : 0.;
    dy = tp.getDouble("y") - ((cnt > 1) ? ND_ht(tn) / 2. : 0.);
    for (i = 0; i < cnt; i++) {
	e = (Agedge_s) edges.plus(ind + i).getPtr();
	pointn = 0;
	if ((et == (5 << 1)) || (et == (1 << 1))) {
	    points.plus(pointn++).setStruct(tp);
	    points.plus(pointn++).setStruct(pointfof((2 * tp.getDouble("x") + hp.getDouble("x")) / 3, dy));
	    points.plus(pointn++).setStruct(pointfof((2 * hp.getDouble("x") + tp.getDouble("x")) / 3, dy));
	    points.plus(pointn++).setStruct(hp);
	}
	else {   /* ET_PLINE */
UNSUPPORTED("cai7diqq01v8vb92u4mx1xh38"); // 	    points[pointn++] = tp;
UNSUPPORTED("cai7diqq01v8vb92u4mx1xh38"); // 	    points[pointn++] = tp;
UNSUPPORTED("bnd7kao912fmo940u1gz3cmws"); // 	    points[pointn++] = pointfof((2 * tp.x + hp.x) / 3, dy);
UNSUPPORTED("bnd7kao912fmo940u1gz3cmws"); // 	    points[pointn++] = pointfof((2 * tp.x + hp.x) / 3, dy);
UNSUPPORTED("bnd7kao912fmo940u1gz3cmws"); // 	    points[pointn++] = pointfof((2 * tp.x + hp.x) / 3, dy);
UNSUPPORTED("akir2i0ddpv2ombgdzzs9qqqa"); // 	    points[pointn++] = pointfof((2 * hp.x + tp.x) / 3, dy);
UNSUPPORTED("akir2i0ddpv2ombgdzzs9qqqa"); // 	    points[pointn++] = pointfof((2 * hp.x + tp.x) / 3, dy);
UNSUPPORTED("akir2i0ddpv2ombgdzzs9qqqa"); // 	    points[pointn++] = pointfof((2 * hp.x + tp.x) / 3, dy);
UNSUPPORTED("59cwjy3j5e0igp278migykzi"); // 	    points[pointn++] = hp;
UNSUPPORTED("59cwjy3j5e0igp278migykzi"); // 	    points[pointn++] = hp;
	}
	dy += stepy;
	clip_and_install(e, aghead(e), points.asPtr(), pointn, Z.z().sinfo.amp());
    }
} finally {
LEAVING("8kqyzk43ovc2sq6jegua6ytp","makeSimpleFlat");
}
}




//3 bhnjospwghq4plid12757c928
// static void make_flat_adj_edges(graph_t* g, path* P, edge_t** edges, int ind, int cnt, edge_t* e0,                     int et) 
public static void make_flat_adj_edges(Agraph_s g, path P, __ptr__ edges, int ind, int cnt, Agedge_s e0, int et) {
ENTERING("bhnjospwghq4plid12757c928","make_flat_adj_edges");
try {
    Agnode_s n;
    Agnode_s tn, hn;
    Agedge_s e;
    int labels = 0, ports = 0;
    Agraph_s auxg;
    Agraph_s subg;
    Agnode_s auxt, auxh;
    Agedge_s auxe;
    int     i, j, midx, midy, leftx, rightx;
    final __struct__ del = __struct__.from(pointf.class);
    Agedge_s hvye = null;
    attr_state_t attrs;
    tn = agtail(e0); hn = aghead(e0);
    for (i = 0; i < cnt; i++) {
	e = (Agedge_s) edges.plus(ind + i).getPtr();
	if (ED_label(e)!=null) labels++;
	if (ED_tail_port(e).getBoolean("defined") || ED_head_port(e).getBoolean("defined")) ports = 1;
    }
    if (ports == 0) {
	/* flat edges without ports and labels can go straight left to right */
	if (labels == 0) {
	    makeSimpleFlat (tn, hn, edges, ind, cnt, et);
	}
	/* flat edges without ports but with labels take more work */
	else {
	    makeSimpleFlatLabels (tn, hn, edges, ind, cnt, et, labels);
	}
	return;
    }
UNSUPPORTED("3ua0mgcwxnpymnpiv77owaur2"); //     attrs = (attr_state_t*)zmalloc(sizeof(attr_state_t));
UNSUPPORTED("5qcpchn65culafc5t2ibioksb"); //     auxg = cloneGraph (g, attrs);
UNSUPPORTED("cwolismpef6l1w4xj5etx8w09"); //     subg = agsubg (auxg, "xxx",1);
UNSUPPORTED("eocu0fte9egz381w3t8y5m64t"); //     agbindrec(subg, "Agraphinfo_t", sizeof(Agraphinfo_t), NOT(0));
UNSUPPORTED("er19m8huvnjjn1v6rreiisdf6"); //     agset (subg, "rank", "source");
UNSUPPORTED("du7zwfglureqnv5g2wiammuuu"); //     rightx = ND_coord(hn).x;
UNSUPPORTED("5qa24lmumrg29fbtl0fo4d4z1"); //     leftx = ND_coord(tn).x;
UNSUPPORTED("b2x6j7m1cmmkcmdl5jo9wn0ap"); //     if (GD_flip(g)) {
UNSUPPORTED("2elvc001uux0vbe7sv4098e0c"); //         node_t* n;
UNSUPPORTED("6m8k99c09zmhwgcdsgo33dugz"); //         n = tn;
UNSUPPORTED("cenlfgoeymhe1am5z6632xniq"); //         tn = hn;
UNSUPPORTED("cp2gf6c1xawd2yjbqerw98we3"); //         hn = n;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("1e98fnf9lsk7hwgjt70gh5r55"); //     auxt = cloneNode(subg, tn, GD_flip(g)); 
UNSUPPORTED("a4xa8i1nw83hhnknv84280z00"); //     auxh = cloneNode(auxg, hn, GD_flip(g)); 
UNSUPPORTED("1psokm6w9e7qw7fm2g1cayuk7"); //     for (i = 0; i < cnt; i++) {
UNSUPPORTED("8hwholxjp08y4q0zbb561684q"); // 	e = edges[ind + i];
UNSUPPORTED("b3w40fpgfj0j66yi6j582thq2"); // 	for (; ED_edge_type(e) != 0; e = ED_to_orig(e));
UNSUPPORTED("bcu59ji1apn0rvv7aisl6e4pw"); // 	if (agtail(e) == tn)
UNSUPPORTED("4o3mq2ztiyxlbkpgcyygj4lny"); // 	    auxe = cloneEdge (auxg, auxt, auxh, e);
UNSUPPORTED("9352ql3e58qs4fzapgjfrms2s"); // 	else
UNSUPPORTED("3a7m578mxun4c8zv0jurzh7ox"); // 	    auxe = cloneEdge (auxg, auxh, auxt, e);
UNSUPPORTED("e6khamu7fhu5m7il9r2v06mui"); // 	ED_alg(e) = auxe;
UNSUPPORTED("64u9xrw8iwy3mtuupoktw7xoz"); // 	if (!hvye && !ED_tail_port(e).defined && !ED_head_port(e).defined) {
UNSUPPORTED("6t23nfzzldtl419g582pr0wjn"); // 	    hvye = auxe;
UNSUPPORTED("3fi2uxwkmau5664gnhzyosan5"); // 	    ED_alg(hvye) = e;
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("co4n3cv6ybhgvm341r3re61vu"); //     if (!hvye) {
UNSUPPORTED("a0sxhnruv0ip65j05wt7dciak"); // 	hvye = agedge (auxg, auxt, auxh,NULL,1);
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("26l323zwxztuc6sfnh36x7i9f"); //     agxset (hvye, E_weight, "10000");
UNSUPPORTED("4pj2d4pwf7wi9fcu4v0byk83z"); //     GD_gvc(auxg) = GD_gvc(g);
UNSUPPORTED("b6dpjp9wgjzgoy0tq7b9kms74"); //     GD_dotroot(auxg) = auxg;
UNSUPPORTED("e08t9bx8ldb1d5e0582wg82sx"); //     setEdgeType (auxg, et);
UNSUPPORTED("8y4433lgybq35f4t7viqsvz5v"); //     dot_init_node_edge(auxg);
UNSUPPORTED("13c2nt4jwumpvtwudz38a4sb3"); //     dot_rank(auxg, 0);
UNSUPPORTED("6onnznyz9fof6r8we5z1e4r63"); //     dot_mincross(auxg, 0);
UNSUPPORTED("4ry85qx5xmahkm0mdv9s65azo"); //     dot_position(auxg, 0);
UNSUPPORTED("9921qakdgil2jvrvinke44xsz"); //     /* reposition */
UNSUPPORTED("ang8wy78872hvqkzvgfjwqwfl"); //     midx = (ND_coord(tn).x - ND_rw(tn) + ND_coord(hn).x + ND_lw(hn))/2;
UNSUPPORTED("2r2ywte92l423tbcdfvbhz3zh"); //     midy = (ND_coord(auxt).x + ND_coord(auxh).x)/2;
UNSUPPORTED("b8juh1dggb6sz4d9df42i150k"); //     for (n = GD_nlist(auxg); n; n = ND_next(n)) {
UNSUPPORTED("4prtyy13ox1fif8vil3g86g87"); // 	if (n == auxt) {
UNSUPPORTED("7gvpia4yo3bfvh5dl7uwr3dbe"); // 	    ND_coord(n).y = rightx;
UNSUPPORTED("2zsspnn0nfrdf9fx8sh3ld8j4"); // 	    ND_coord(n).x = midy;
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("ba2aaoh9ujy4ww9luial39sya"); // 	else if (n == auxh) {
UNSUPPORTED("aoy1ze6hhjuym44mkasdt19qp"); // 	    ND_coord(n).y = leftx;
UNSUPPORTED("2zsspnn0nfrdf9fx8sh3ld8j4"); // 	    ND_coord(n).x = midy;
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("80o8q2qh1hr671ladbyqzglnt"); // 	else ND_coord(n).y = midx;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("48hn94qz2y2kb6lqc3462vlco"); //     dot_sameports(auxg);
UNSUPPORTED("bglhuc9grqkk9ozb97oeh0m3b"); //     _dot_splines(auxg, 0);
UNSUPPORTED("euvfot8f7xxnibd223qgsylew"); //     dotneato_postprocess(auxg);
UNSUPPORTED("4mg60pszj0s1anwg8zp0tq0ra"); //        /* copy splines */
UNSUPPORTED("b2x6j7m1cmmkcmdl5jo9wn0ap"); //     if (GD_flip(g)) {
UNSUPPORTED("baukf0b2l91bkgnfdc04rvuxe"); // 	del.x = ND_coord(tn).x - ND_coord(auxt).y;
UNSUPPORTED("96sq686mw9bvj7dli7wb241au"); // 	del.y = ND_coord(tn).y + ND_coord(auxt).x;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("1nyzbeonram6636b1w955bypn"); //     else {
UNSUPPORTED("bxg8i1hqms0izrryxh2at6p7b"); // 	del.x = ND_coord(tn).x - ND_coord(auxt).x;
UNSUPPORTED("3xqgvdcxmu8e4eqtnhaa256tk"); // 	del.y = ND_coord(tn).y - ND_coord(auxt).y;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("1psokm6w9e7qw7fm2g1cayuk7"); //     for (i = 0; i < cnt; i++) {
UNSUPPORTED("47ogn0fae1yuy3kefpawcgcmx"); // 	bezier* auxbz;
UNSUPPORTED("4mujfxtr0wy7m1rbm57rwigo4"); // 	bezier* bz;
UNSUPPORTED("8hwholxjp08y4q0zbb561684q"); // 	e = edges[ind + i];
UNSUPPORTED("b3w40fpgfj0j66yi6j582thq2"); // 	for (; ED_edge_type(e) != 0; e = ED_to_orig(e));
UNSUPPORTED("3ii7nnxg3x8jpdk6lcijbizvf"); // 	auxe = (edge_t*)ED_alg(e);
UNSUPPORTED("5rc7uvn4xqfetekcci1uwri5v"); // 	if ((auxe == hvye) & !ED_alg(auxe)) continue; /* pseudo-edge */
UNSUPPORTED("52vy3jbu67nebznqkhxxqthih"); // 	auxbz = ED_spl(auxe)->list;
UNSUPPORTED("azr1tv8blnu3i6b7wstpqv2tc"); // 	bz = new_spline(e, auxbz->size);
UNSUPPORTED("df84ie4egl6l1i82tz1zp7hg"); // 	bz->sflag = auxbz->sflag;
UNSUPPORTED("49bzonc32mbuchcsmw7csexdw"); // 	bz->sp = transformf(auxbz->sp, del, GD_flip(g));
UNSUPPORTED("9g1glpjjy5wmh7dyr6u0nb2cn"); // 	bz->eflag = auxbz->eflag;
UNSUPPORTED("44tftrsdjjuh1qjmxjpysmee3"); // 	bz->ep = transformf(auxbz->ep, del, GD_flip(g));
UNSUPPORTED("w0xl6ghxoii2ze2xmbbunv4d"); // 	for (j = 0; j <  auxbz->size; ) {
UNSUPPORTED("22zm6ljvhpz7j2kiqee31nx61"); // 	    pointf cp[4];
UNSUPPORTED("4c88sva3ojadip5w3ehu782tp"); // 	    cp[0] = bz->list[j] = transformf(auxbz->list[j], del, GD_flip(g));
UNSUPPORTED("5jqtd9htl25cd3if3pjtl8dpo"); // 	    j++;
UNSUPPORTED("duk541biqshfomah8rlxeyigr"); // 	    if ( j >= auxbz->size ) 
UNSUPPORTED("9ekmvj13iaml5ndszqyxa8eq"); // 		break;
UNSUPPORTED("2qrbm7mhicvoxzk91h9x3gq64"); // 	    cp[1] = bz->list[j] = transformf(auxbz->list[j], del, GD_flip(g));
UNSUPPORTED("5jqtd9htl25cd3if3pjtl8dpo"); // 	    j++;
UNSUPPORTED("f4x9unnnofgnvy91ejtm90kw"); // 	    cp[2] = bz->list[j] = transformf(auxbz->list[j], del, GD_flip(g));
UNSUPPORTED("5jqtd9htl25cd3if3pjtl8dpo"); // 	    j++;
UNSUPPORTED("6pldfj31dg88qzsa012v8auxn"); // 	    cp[3] = transformf(auxbz->list[j], del, GD_flip(g));
UNSUPPORTED("2xvehdctlpogpd7xhdf1pku00"); // 	    update_bb_bz(&GD_bb(g), cp);
UNSUPPORTED("4mhlpjofolwivhm0tl8cxznly"); //         }
UNSUPPORTED("8bokoh0vcnmvjcahn7de1z0kd"); // 	if (ED_label(e)) {
UNSUPPORTED("8ido4wfhvlqvczqfq5xz33kak"); // 	    ED_label(e)->pos = transformf(ED_label(auxe)->pos, del, GD_flip(g));
UNSUPPORTED("3tkba5lhpnujfu8lcz8lewsyn"); // 	    ED_label(e)->set = NOT(0);
UNSUPPORTED("c62p0r1jj71ceakgzrv2gorvu"); // 	    updateBB(g, ED_label(e));
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("22prbnbyxmapn1fcer1sktez7"); //     cleanupCloneGraph (auxg, attrs);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
} finally {
LEAVING("bhnjospwghq4plid12757c928","make_flat_adj_edges");
}
}




//3 fybar4mljnmkh3kure5k1eod
// static void makeFlatEnd (graph_t* g, spline_info_t* sp, path* P, node_t* n, edge_t* e, pathend_t* endp,              boolean isBegin) 
public static void makeFlatEnd(Agraph_s g, spline_info_t sp, path P, Agnode_s n, Agedge_s e, pathend_t endp, boolean isBegin) {
ENTERING("fybar4mljnmkh3kure5k1eod","makeFlatEnd");
try {
    final __struct__ b = __struct__.from(boxf.class);
    b.____(maximal_bbox(g, sp, n, null, e));
    endp.setStruct("nb", b);
    endp.setInt("sidemask", 1<<2);
    if (isBegin) beginpath(P, e, 2, endp, false);
    else endpath(P, e, 2, endp, false);
    b.getStruct("UR").setDouble("y", endp.getArrayOfStruct("boxes").plus(endp.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("y"));
    b.getStruct("LL").setDouble("y", endp.getArrayOfStruct("boxes").plus(endp.getInt("boxn") - 1).getStruct().getStruct("LL").getDouble("y"));
    b.____(makeregularend(b, (1<<2), ND_coord(n).getDouble("y") + GD_rank(g).plus(ND_rank(n)).getDouble("ht2")));
    if (b.getStruct("LL").getDouble("x") < b.getStruct("UR").getDouble("x") && b.getStruct("LL").getDouble("y") < b.getStruct("UR").getDouble("y"))
UNSUPPORTED("cmjm4y40vf7wklmgz0ae4k36v"); // 	endp->boxes[endp->boxn++] = b;
} finally {
LEAVING("fybar4mljnmkh3kure5k1eod","makeFlatEnd");
}
}




//3 rfro0b2nsukdjenux3f6osgj
// static void makeBottomFlatEnd (graph_t* g, spline_info_t* sp, path* P, node_t* n, edge_t* e,  	pathend_t* endp, boolean isBegin) 
public static Object makeBottomFlatEnd(Object... arg) {
UNSUPPORTED("e2z2o5ybnr5tgpkt8ty7hwan1"); // static void
UNSUPPORTED("8ai1jk8aigoqod7sj7pw1phw3"); // makeBottomFlatEnd (graph_t* g, spline_info_t* sp, path* P, node_t* n, edge_t* e, 
UNSUPPORTED("25ij2tn6de7b481tpf1ac644s"); // 	pathend_t* endp, boolean isBegin)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("c57pq0f87j6dnbcvygu7v6k84"); //     boxf b;
UNSUPPORTED("458vjrt5zjt6am715aiuxdlpo"); //     b = endp->nb = maximal_bbox(g, sp, n, NULL, e);
UNSUPPORTED("9wzfokn3t7zckgoaxgywy6cbz"); //     endp->sidemask = (1<<0);
UNSUPPORTED("c3u0b2z8mb4le2v1g6q8amjt"); //     if (isBegin) beginpath(P, e, 2, endp, 0);
UNSUPPORTED("1e0zyjb03r85tgqddfnlk9e9"); //     else endpath(P, e, 2, endp, 0);
UNSUPPORTED("7pwqqvagpkzye4cdmjlbrmt7a"); //     b.UR.y = endp->boxes[endp->boxn - 1].UR.y;
UNSUPPORTED("1mefjjoto40rfwb1qhzvobhje"); //     b.LL.y = endp->boxes[endp->boxn - 1].LL.y;
UNSUPPORTED("4sn8dc58suk2d3oqlu13cr7ic"); //     b = makeregularend(b, (1<<0), ND_coord(n).y - GD_rank(g)[ND_rank(n)].ht2);
UNSUPPORTED("6xj9sv3inmj1rwtz76qp6p30n"); //     if (b.LL.x < b.UR.x && b.LL.y < b.UR.y)
UNSUPPORTED("cmjm4y40vf7wklmgz0ae4k36v"); // 	endp->boxes[endp->boxn++] = b;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 w8ptjibydq995d2lexg85mku
// static void make_flat_labeled_edge(graph_t* g, spline_info_t* sp, path* P, edge_t* e, int et) 
public static void make_flat_labeled_edge(Agraph_s g, spline_info_t sp, path P, Agedge_s e, int et) {
ENTERING("w8ptjibydq995d2lexg85mku","make_flat_labeled_edge");
try {
    Agnode_s tn, hn, ln;
    pointf ps = null;
    final __struct__ tend = __struct__.from(pathend_t.class), hend = __struct__.from(pathend_t.class);
    final __struct__ lb = __struct__.from(boxf.class);
    int boxn, i, ydelta;
    int pn[] = new int[1];
    Agedge_s f;
    final __array_of_struct__ points = __array_of_struct__.malloc(pointf.class, 7);
    tn = agtail(e);
    hn = aghead(e);
    for (f = ED_to_virt(e); ED_to_virt(f)!=null; f = ED_to_virt(f));
    ln = agtail(f);
    ED_label(e).setStruct("pos", ND_coord(ln));
    ED_label(e).setBoolean("set", NOT(false));
    if (et == (1 << 1)) {
UNSUPPORTED("ataaqkehwb736ts2x6olzqokx"); // 	pointf startp, endp, lp;
UNSUPPORTED("48h6vk2e5niep4dmpua377248"); // 	startp = add_pointf(ND_coord(tn), ED_tail_port(e).p);
UNSUPPORTED("8fokfn1629eyiqnzi7mey9o2q"); // 	endp = add_pointf(ND_coord(hn), ED_head_port(e).p);
UNSUPPORTED("8zpih1olxdgp3sxk2br3lezzx"); //         lp = ED_label(e)->pos;
UNSUPPORTED("1sblcap44288tmc3cr80iqpj5"); // 	lp.y -= (ED_label(e)->dimen.y)/2.0;
UNSUPPORTED("8ew9p3k3j0b33dnq0ntgbb6x8"); // 	points[1] = points[0] = startp;
UNSUPPORTED("16h577fdghqtaeot735guew4e"); // 	points[2] = points[3] = points[4] = lp;
UNSUPPORTED("9zjfovamhwwehbviws68s5woy"); // 	points[5] = points[6] = endp;
UNSUPPORTED("68ojpcos92c96bc0i5ag1yb6v"); // 	ps = points;
UNSUPPORTED("1uunj4jbr2uhiqxwor6rzmr3j"); // 	pn = 7;
    }
    else {
	lb.getStruct("LL").setDouble("x", ND_coord(ln).getDouble("x") - ND_lw(ln));
	lb.getStruct("UR").setDouble("x", ND_coord(ln).getDouble("x") + ND_rw(ln));
	lb.getStruct("UR").setDouble("y", ND_coord(ln).getDouble("y") + ND_ht(ln)/2);
	ydelta = (int)(ND_coord(ln).getDouble("y") - GD_rank(g).plus(ND_rank(tn)).getDouble("ht1") -
		ND_coord(tn).getDouble("y") + GD_rank(g).plus(ND_rank(tn)).getDouble("ht2"));
	ydelta = (int)(ydelta / 6.);
	lb.getStruct("LL").setDouble("y", lb.getStruct("UR").getDouble("y") - MAX(5.,ydelta)); 
	boxn = 0;
	makeFlatEnd (g, sp, P, tn, e, tend.amp(), NOT(false));
	makeFlatEnd (g, sp, P, hn, e, hend.amp(), false);
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("x", tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct().getStruct("LL").getDouble("x")); 
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("y", tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("y")); 
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("x", lb.getStruct("LL").getDouble("x"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("y", lb.getStruct("LL").getDouble("y"));
	boxn++;
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("x", tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct().getStruct("LL").getDouble("x")); 
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("y", lb.getStruct("LL").getDouble("y"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("x", hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("x"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("y", lb.getStruct("UR").getDouble("y"));
	boxn++;
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("x", lb.getStruct("UR").getDouble("x"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("y", lb.getStruct("LL").getDouble("y"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("y", hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("y")); 
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("x", hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("x"));
	boxn++;
	for (i = 0; i < tend.getInt("boxn"); i++) add_box(P, tend.getArrayOfStruct("boxes").plus(i).getStruct());
	for (i = 0; i < boxn; i++) add_box(P, Z.z().boxes.plus(i).getStruct());
	for (i = hend.getInt("boxn") - 1; i >= 0; i--) add_box(P, hend.getArrayOfStruct("boxes").plus(i).getStruct());
	if (et == (5 << 1)) ps = routesplines(P, pn);
	else ps = routepolylines(P, pn);
	if (pn[0] == 0) return;
    }
    clip_and_install(e, aghead(e), ps, pn[0], Z.z().sinfo.amp());
} finally {
LEAVING("w8ptjibydq995d2lexg85mku","make_flat_labeled_edge");
}
}




//3 d97ga7gm34rs6r0jo494nhhuo
// static void make_flat_bottom_edges(graph_t* g, spline_info_t* sp, path * P, edge_t ** edges, int  	ind, int cnt, edge_t* e, int splines) 
public static Object make_flat_bottom_edges(Object... arg) {
UNSUPPORTED("e2z2o5ybnr5tgpkt8ty7hwan1"); // static void
UNSUPPORTED("bkp39vt080is6iiqobsw59sk9"); // make_flat_bottom_edges(graph_t* g, spline_info_t* sp, path * P, edge_t ** edges, int 
UNSUPPORTED("2gat0ltxh7j57lspwmm9s9x7j"); // 	ind, int cnt, edge_t* e, int splines)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("5np4z3gp6cfmicyuz91nownp8"); //     node_t *tn, *hn;
UNSUPPORTED("3zgmm04g7gq65c57gco0id1eb"); //     int j, i, r;
UNSUPPORTED("5wdd96amz7w1sym59mg5nfj51"); //     double stepx, stepy, vspace;
UNSUPPORTED("63ozqzusft8gpehyaqrdjyr1"); //     rank_t* nextr;
UNSUPPORTED("7hps2kejtrotcphg5gymma43b"); //     int pn;
UNSUPPORTED("2rkzhui0essisp5zlw44vx4j9"); //     pointf *ps;
UNSUPPORTED("32b8td88encjfj6yd1sp8bef"); //     pathend_t tend, hend;
UNSUPPORTED("d0x4emyekwlcpua99voy3764p"); //     tn = agtail(e);
UNSUPPORTED("axoua6xpo7xc40u2oj0a8dmr9"); //     hn = aghead(e);
UNSUPPORTED("63jjxtcojh1aq4na9u4w2a6xe"); //     r = ND_rank(tn);
UNSUPPORTED("atjnavwfg3xe4ygorslb4vvtv"); //     if (r < GD_maxrank(g)) {
UNSUPPORTED("6b35lbhficoaf5216p3sdq1cj"); // 	nextr = GD_rank(g) + (r+1);
UNSUPPORTED("bj0cch0dmhpux7wm3fg4zg368"); // 	vspace = ND_coord(tn).y - GD_rank(g)[r].pht1 -
UNSUPPORTED("dqcrkagghulp8u9iuoyckepf7"); // 		(ND_coord(nextr->v[0]).y + nextr->pht2);
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("1nyzbeonram6636b1w955bypn"); //     else {
UNSUPPORTED("1sai54q4zfayczfcrklgw4x17"); // 	vspace = GD_ranksep(g);
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("dyxkx5ftlgbeem7089pcu1qo4"); //     stepx = ((double)(sp->Multisep)) / (cnt+1); 
UNSUPPORTED("63qqo8mqbn6alfa5k3gfalz53"); //     stepy = vspace / (cnt+1);
UNSUPPORTED("euw24sa4cgazdf9z7a3sretis"); //     makeBottomFlatEnd (g, sp, P, tn, e, &tend, NOT(0));
UNSUPPORTED("c8ip2hla7pb8tz4fhsj5m34wk"); //     makeBottomFlatEnd (g, sp, P, hn, e, &hend, 0);
UNSUPPORTED("1psokm6w9e7qw7fm2g1cayuk7"); //     for (i = 0; i < cnt; i++) {
UNSUPPORTED("3smlz0a87gj8w58rwau2ewq23"); // 	int boxn;
UNSUPPORTED("bg5tj2hjixth58v04043jb3do"); // 	boxf b;
UNSUPPORTED("8hwholxjp08y4q0zbb561684q"); // 	e = edges[ind + i];
UNSUPPORTED("cpcqkqkhkaviy153h92apd82e"); // 	boxn = 0;
UNSUPPORTED("4wkbaj2424ug9j97efwu1r5mc"); // 	b = tend.boxes[tend.boxn - 1];
UNSUPPORTED("3eyfj1o1bqxlfqw7tq76qiiiz"); //  	boxes[boxn].LL.x = b.LL.x; 
UNSUPPORTED("dwlejn7xasxh4yyoq2xodqnyj"); // 	boxes[boxn].UR.y = b.LL.y; 
UNSUPPORTED("10o1e4r5ux8d7cr6zg379ss59"); // 	boxes[boxn].UR.x = b.UR.x + (i + 1) * stepx;
UNSUPPORTED("79f4mryzkqqs3t4sxnet9jc7b"); // 	boxes[boxn].LL.y = b.LL.y - (i + 1) * stepy;
UNSUPPORTED("cbrsymd5wpvadg3ziz4dypa50"); // 	boxn++;
UNSUPPORTED("7n7f256w4ewtzexwfxjo28b2"); // 	boxes[boxn].LL.x = tend.boxes[tend.boxn - 1].LL.x; 
UNSUPPORTED("6in0ql0upnjg00mgj5k8av2m4"); // 	boxes[boxn].UR.y = boxes[boxn-1].LL.y;
UNSUPPORTED("46ftsiqovpzo9r0mnlc4nf83"); // 	boxes[boxn].UR.x = hend.boxes[hend.boxn - 1].UR.x;
UNSUPPORTED("4bjnn4mhczzd1un9rbib5glch"); // 	boxes[boxn].LL.y = boxes[boxn].UR.y - stepy;
UNSUPPORTED("cbrsymd5wpvadg3ziz4dypa50"); // 	boxn++;
UNSUPPORTED("6oycftap8apw4glb1s5jzineu"); // 	b = hend.boxes[hend.boxn - 1];
UNSUPPORTED("77c1sajrw9kfc7avomly90gm8"); // 	boxes[boxn].UR.x = b.UR.x;
UNSUPPORTED("e94nxsepfdq17q69drbro41je"); // 	boxes[boxn].UR.y = b.LL.y;
UNSUPPORTED("6cipt7th0uv2xfwyh4rvwignj"); // 	boxes[boxn].LL.x = b.LL.x - (i + 1) * stepx;
UNSUPPORTED("50uajtfbvgkrruywpjq9m4zoj"); // 	boxes[boxn].LL.y = boxes[boxn-1].UR.y;
UNSUPPORTED("cbrsymd5wpvadg3ziz4dypa50"); // 	boxn++;
UNSUPPORTED("eu29s7oeoca2yo9trhfhb9juy"); // 	for (j = 0; j < tend.boxn; j++) add_box(P, tend.boxes[j]);
UNSUPPORTED("b8xs00axp4lkksof6hmim3n3x"); // 	for (j = 0; j < boxn; j++) add_box(P, boxes[j]);
UNSUPPORTED("ahci7z910ypoj0e54wchvk54v"); // 	for (j = hend.boxn - 1; j >= 0; j--) add_box(P, hend.boxes[j]);
UNSUPPORTED("7r9nsxbfy7w3csc04nxo97xpq"); // 	if (splines) ps = routesplines(P, &pn);
UNSUPPORTED("dfku80ag90r137s9az9493oow"); // 	else ps = routepolylines(P, &pn);
UNSUPPORTED("919jubmuis4tp1c1f87rvfhog"); // 	if (pn == 0)
UNSUPPORTED("6cprbghvenu9ldc0ez1ifc63q"); // 	    return;
UNSUPPORTED("62oxk9cc5wf0f8gqbothfte1f"); // 	clip_and_install(e, aghead(e), ps, pn, &sinfo);
UNSUPPORTED("l1nh40fo9oar4mz31h14bc9i"); // 	P->nbox = 0;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 6yr3jfkljl5w0z6dv354ryx63
// static void make_flat_edge(graph_t* g, spline_info_t* sp, path * P, edge_t ** edges, int ind, int cnt, int et) 
public static void make_flat_edge(Agraph_s g, spline_info_t sp, path P, __ptr__ edges, int ind, int cnt, int et) {
ENTERING("6yr3jfkljl5w0z6dv354ryx63","make_flat_edge");
try {
    Agnode_s tn, hn;
    final __struct__ fwdedgei = __struct__.from(Agedgeinfo_t.class);
    final __struct__ fwdedge = __struct__.from(Agedgepair_s.class);
    Agedge_s e;
    int j, i, r, isAdjacent;
    double stepx, stepy, vspace;
    int tside, hside;
    int pn[] = new int[] {0};
    pointf ps;
    final __struct__ tend = __struct__.from(pathend_t.class), hend = __struct__.from(pathend_t.class);
    fwdedge.getStruct("out").getStruct("base").setPtr("data", fwdedgei.amp());
    /* Get sample edge; normalize to go from left to right */
    e = (Agedge_s) edges.plus(ind).getPtr();
    isAdjacent = ED_adjacent(e);
    if ((ED_tree_index(e) & 32)!=0) {
	MAKEFWDEDGE(fwdedge.getStruct("out").amp(), e);
	e = (Agedge_s) fwdedge.getStruct("out").amp();
    }
    for (i = 1; i < cnt; i++) {
	if (ED_adjacent(edges.plus(ind+i).getPtr())!=0) {
	    isAdjacent = 1;
	    break;
	}
    }
    /* The lead edge edges[ind] might not have been marked earlier as adjacent,
     * so check them all.
     */
    if (isAdjacent!=0) {
	make_flat_adj_edges (g, P, edges, ind, cnt, e, et);
	return;
    }
    if (ED_label(e)!=null) {  /* edges with labels aren't multi-edges */
	make_flat_labeled_edge (g, sp, P, e, et);
	return;
    }
    if (et == (1 << 1)) {
	makeSimpleFlat (agtail(e), aghead(e), edges, ind, cnt, et);
	return;
    }
    tside = ED_tail_port(e).getInt("side");
    hside = ED_head_port(e).getInt("side");
    if (((tside == (1<<0)) && (hside != (1<<2))) ||
        ((hside == (1<<0)) && (tside != (1<<2)))) {
	make_flat_bottom_edges (g, sp, P, edges, ind, cnt, e, et == (5 << 1));
	return;
    }
    tn = agtail(e);
    hn = aghead(e);
    r = ND_rank(tn);
    if (r > 0) {
	__ptr__ prevr;
	if ((GD_has_labels(g) & (1 << 0))!=0)
	    prevr = GD_rank(g).plus(r-2);
	else
	    prevr = GD_rank(g).plus(r-1);
	vspace = ND_coord(prevr.getPtr().getArrayOfPtr("v").plus(0).getPtr()).getDouble("y") - prevr.getPtr().getDouble("ht1")
	   - ND_coord(tn).getDouble("y") - GD_rank(g).plus(r).getDouble("ht2");
    }
    else {
	vspace = GD_ranksep(g);
    }
    stepx = ((double)sp.getInt("Multisep")) / (cnt+1); 
    stepy = vspace / (cnt+1);
    makeFlatEnd (g, sp, P, tn, e, tend.amp(), true);
    makeFlatEnd (g, sp, P, hn, e, hend.amp(), false);
    for (i = 0; i < cnt; i++) {
	int boxn;
	final __struct__ b = __struct__.from(boxf.class);
	e = (Agedge_s) edges.plus(ind + i).getPtr();
	boxn = 0;
	b.____(tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct());
 	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("x", b.getStruct("LL").getDouble("x")); 
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("y", b.getStruct("UR").getDouble("y")); 
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("x", b.getStruct("UR").getDouble("x") + (i + 1) * stepx);
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("y", b.getStruct("UR").getDouble("y") + (i + 1) * stepy);
	boxn++;
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("x", tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct().getStruct("LL").getDouble("x")); 
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("y", Z.z().boxes.plus(boxn-1).getStruct().getStruct("UR").getDouble("y"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("x", hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("x"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("y", Z.z().boxes.plus(boxn).getStruct().getStruct("LL").getDouble("y") + stepy);
	boxn++;
	b.____(hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct());
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("x", b.getStruct("UR").getDouble("x"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("y", b.getStruct("UR").getDouble("y"));
	Z.z().boxes.plus(boxn).getStruct().getStruct("LL").setDouble("x", b.getStruct("LL").getDouble("x") - (i + 1) * stepx);
	Z.z().boxes.plus(boxn).getStruct().getStruct("UR").setDouble("y", Z.z().boxes.plus(boxn-1).getStruct().getStruct("LL").getDouble("y"));
	boxn++;
	for (j = 0; j < tend.getInt("boxn"); j++) add_box(P, tend.getArrayOfStruct("boxes").plus(j).getStruct());
	for (j = 0; j < boxn; j++) add_box(P, Z.z().boxes.plus(j).getStruct());
	for (j = hend.getInt("boxn") - 1; j >= 0; j--) add_box(P, hend.getArrayOfStruct("boxes").plus(j).getStruct());
	if (et == (5 << 1)) ps = (pointf) routesplines(P, pn);
	else ps = (pointf) routepolylines(P, pn);
	if (pn[0] == 0)
	    return;
	clip_and_install(e, aghead(e), ps, pn[0], Z.z().sinfo.amp());
	P.setInt("nbox",  0);
    }
} finally {
LEAVING("6yr3jfkljl5w0z6dv354ryx63","make_flat_edge");
}
}




//3 78oy7e2xm3t4de66du11ej05j
// static int leftOf (pointf p1, pointf p2, pointf p3) 
public static Object leftOf(Object... arg) {
UNSUPPORTED("eyp5xkiyummcoc88ul2b6tkeg"); // static int
UNSUPPORTED("iqhj2moads3aafqx5xa8j44g"); // leftOf (pointf p1, pointf p2, pointf p3)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("5azgw3jpyk2yccpp3p4s3q817"); //     int d;
UNSUPPORTED("42n6sq1mbcvm3tugypozccbua"); //     d = ((p1.y - p2.y) * (p3.x - p2.x)) -
UNSUPPORTED("7y9r79gtx363mln6v9yaisvz6"); //         ((p3.y - p2.y) * (p1.x - p2.x));
UNSUPPORTED("8y4f8e0mnow6139qoguzsxojx"); //     return (d > 0);
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
}




//3 2n9bpvx34fnukqu1f9u4v7v6n
// static int  makeLineEdge(graph_t* g, edge_t* fe, pointf* points, node_t** hp) 
public static int makeLineEdge(Agraph_s g, Agedge_s fe, __ptr__ points, __ptr__ hp) {
ENTERING("2n9bpvx34fnukqu1f9u4v7v6n","makeLineEdge");
try {
 UNSUPPORTED("d9cz56vtrl0ri6hz88cumukuf"); // static int 
UNSUPPORTED("1act0rov08v6lg5ydqldks7d1"); // makeLineEdge(graph_t* g, edge_t* fe, pointf* points, node_t** hp)
UNSUPPORTED("erg9i1970wdri39osu8hx2a6e"); // {
UNSUPPORTED("awgar8whid8l1c7lyj8w53w3i"); //     int delr, pn;
UNSUPPORTED("ewlm0dtv1gpudqhfx5nsr9d77"); //     node_t* hn;
UNSUPPORTED("cncpk333257fxnc9w8kfl8m70"); //     node_t* tn;
UNSUPPORTED("etezq0kgy6mttiwr53pna62d7"); //     edge_t* e = fe;
UNSUPPORTED("3ll9r1mvzzbhqrs4dwsduif44"); //     pointf startp, endp, lp;
UNSUPPORTED("bgjjpl6jaaa122twwwd0vif6x"); //     pointf dimen;
UNSUPPORTED("gdtli7sq5cifvdpg3ecrudew"); //     double width, height;
UNSUPPORTED("1pa1p9mnpooqack43qfpnoio2"); //     while (ED_edge_type(e) != 0)
UNSUPPORTED("bdmai1d040qmubf08ds339v9x"); // 	e = ED_to_orig(e);
UNSUPPORTED("axoua6xpo7xc40u2oj0a8dmr9"); //     hn = aghead(e);
UNSUPPORTED("d0x4emyekwlcpua99voy3764p"); //     tn = agtail(e);
UNSUPPORTED("b4x4vd9cei4o3tjifzw7pdec6"); //     delr = ABS(ND_rank(hn)-ND_rank(tn));
UNSUPPORTED("447fk34earndyf1qvvzttsxtk"); //     if ((delr == 1) || ((delr == 2) && (GD_has_labels(g) & (1 << 0))))
UNSUPPORTED("c9ckhc8veujmwcw0ar3u3zld4"); // 	return 0;
UNSUPPORTED("cbnarpi971ox21zdds7a60axh"); //     if (agtail(fe) == agtail(e)) {
UNSUPPORTED("o7usaxh5vv7rla55dxzkfmk7"); // 	*hp = hn;
UNSUPPORTED("48h6vk2e5niep4dmpua377248"); // 	startp = add_pointf(ND_coord(tn), ED_tail_port(e).p);
UNSUPPORTED("8fokfn1629eyiqnzi7mey9o2q"); // 	endp = add_pointf(ND_coord(hn), ED_head_port(e).p);
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("1nyzbeonram6636b1w955bypn"); //     else {
UNSUPPORTED("3uxftvwe3olgfi579s8izpl76"); //  	*hp = tn; 
UNSUPPORTED("akhrhgryddg74jqispnh1j1nn"); // 	startp = add_pointf(ND_coord(hn), ED_head_port(e).p);
UNSUPPORTED("dqdai9l5thna19ynowkfwstuh"); // 	endp = add_pointf(ND_coord(tn), ED_tail_port(e).p);
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("brrmfllffwlnqxljgrwy8x5pq"); //     if (ED_label(e)) {
UNSUPPORTED("et7phi46cskfaxzpfo97e1s5s"); // 	dimen = ED_label(e)->dimen;
UNSUPPORTED("z26zaj60vrdy38k1c2vk7law"); // 	if (GD_flip(agraphof(hn))) {
UNSUPPORTED("6mcl7j0bp09d061f0dywd1ru8"); // 	    width = dimen.y;
UNSUPPORTED("eax7dzvpgqzsiffa2dn2idrxe"); // 	    height = dimen.x;
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("8k75h069sv2k9b6tgz77dscwd"); // 	else {
UNSUPPORTED("de3o94hui5i4dbq9moun6h57f"); // 	    width = dimen.x;
UNSUPPORTED("41ge1nnwfokwi43f6tlkgmvb0"); // 	    height = dimen.y;
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("d9umd1qjkl4kkybpd7se993ij"); // 	lp = ED_label(e)->pos, lp;
UNSUPPORTED("arxilpbzpy5a2s8skwl644jj2"); // 	if (leftOf (endp,startp,lp)) {
UNSUPPORTED("7bfb4rovu9obr4fje0hi95e67"); // 	    lp.x += width/2.0;
UNSUPPORTED("7y2ejp6vr760aqh5qp4v5zdc8"); // 	    lp.y -= height/2.0;
UNSUPPORTED("9l9roc1u8a03ljwm2mmeaiqq2"); // 	}    
UNSUPPORTED("8k75h069sv2k9b6tgz77dscwd"); // 	else {
UNSUPPORTED("a4spf3n199lr00qkdb3vb8i6c"); // 	    lp.x -= width/2.0;
UNSUPPORTED("f15m64yxj1oq475bvrt63d5gf"); // 	    lp.y += height/2.0;
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("8ew9p3k3j0b33dnq0ntgbb6x8"); // 	points[1] = points[0] = startp;
UNSUPPORTED("16h577fdghqtaeot735guew4e"); // 	points[2] = points[3] = points[4] = lp;
UNSUPPORTED("9zjfovamhwwehbviws68s5woy"); // 	points[5] = points[6] = endp;
UNSUPPORTED("1uunj4jbr2uhiqxwor6rzmr3j"); // 	pn = 7;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("1nyzbeonram6636b1w955bypn"); //     else {
UNSUPPORTED("8ew9p3k3j0b33dnq0ntgbb6x8"); // 	points[1] = points[0] = startp;
UNSUPPORTED("aztkfl5qctibiu6en7xf6xf3e"); // 	points[3] = points[2] = endp;
UNSUPPORTED("5rmgdadjn23z8djo32eh9bhzd"); // 	pn = 4;
UNSUPPORTED("dvgyxsnyeqqnyzq696k3vskib"); //     }
UNSUPPORTED("abnopd2ggrpdb538wf7zsmrhq"); //     return pn;
UNSUPPORTED("c24nfmv9i7o5eoqaymbibp7m7"); // }

throw new UnsupportedOperationException();
} finally {
LEAVING("2n9bpvx34fnukqu1f9u4v7v6n","makeLineEdge");
}
}




//3 30wfq1dby4t07hft9io52nq6z
// static void make_regular_edge(graph_t* g, spline_info_t* sp, path * P, edge_t ** edges, int ind, int cnt, int et) 
//private static __ptr__ pointfs;
//private static __ptr__ pointfs2;
//private static int numpts;
//private static int numpts2;
public static void make_regular_edge(Agraph_s g, spline_info_t sp, path P, __ptr__ edges, int ind, int cnt, int et) {
ENTERING("30wfq1dby4t07hft9io52nq6z","make_regular_edge");
try {
    Agnode_s tn, hn = null;
    final __struct__ fwdedgeai = __struct__.from(Agedgeinfo_t.class), fwdedgebi = __struct__.from(Agedgeinfo_t.class), fwdedgei = __struct__.from(Agedgeinfo_t.class);
    final __struct__ fwdedgea = __struct__.from(Agedgepair_s.class), fwdedgeb = __struct__.from(Agedgepair_s.class), fwdedge = __struct__.from(Agedgepair_s.class);
    Agedge_s e, fe, le, segfirst;
    pointf ps = null;
    final __struct__ tend = __struct__.from(pathend_t.class), hend = __struct__.from(pathend_t.class);
    final __struct__ b = __struct__.from(boxf.class);
    int boxn, sl, si, i, j, dx, hackflag, longedge;
    boolean smode;
    int pn[] = new int[] {0};
    int pointn[] = new int[] {0};
    fwdedgea.getStruct("out").getStruct("base").setPtr("data", fwdedgeai.amp());
    fwdedgeb.getStruct("out").getStruct("base").setPtr("data", fwdedgebi.amp());
    fwdedge.getStruct("out").getStruct("base").setPtr("data", fwdedgei.amp());
    if (N(Z.z().pointfs)) {
	Z.z().pointfs = gmalloc(sizeof(pointf.class, 2000));
   	Z.z().pointfs2 = gmalloc(sizeof(pointf.class, 2000));
	Z.z().numpts = 2000;
	Z.z().numpts2 = 2000;
    }
    sl = 0;
    e = (Agedge_s) edges.plus(ind).getPtr();
    hackflag = 0;
    if (ABS(ND_rank(agtail(e)) - ND_rank(aghead(e))) > 1) {
UNSUPPORTED("8f17srpa5iisomehrb4b01h51"); // 	fwdedgeai = *(Agedgeinfo_t*)e->base.data;
UNSUPPORTED("97znyysf99vzzwpgnqcpp5yek"); // 	fwdedgea.out = *e;
UNSUPPORTED("b6jipryp9p354gtq9lwa35lzj"); // 	fwdedgea.out.base.data = (Agrec_t*)&fwdedgeai;
UNSUPPORTED("568s5ftes1chv9n1s98g9cncf"); // 	if (ED_tree_index(e) & 32) {
UNSUPPORTED("9hw2l0eu91vauhvj3cxf3andc"); // 	    MAKEFWDEDGE(&fwdedgeb.out, e);
UNSUPPORTED("1rql0qzotc0yyozcfkj9p8xkm"); // 	    agtail(&fwdedgea.out) = aghead(e);
UNSUPPORTED("dw3p473qmkgjvxewsr8pimi2h"); // 	    ED_tail_port(&fwdedgea.out) = ED_head_port(e);
UNSUPPORTED("7yhr8hn3r6wohafwxrt85b2j2"); // 	} else {
UNSUPPORTED("2gys0bodxz4fbasfnrvx6ivg2"); // 	    fwdedgebi = *(Agedgeinfo_t*)e->base.data;
UNSUPPORTED("1qqbo2mfls7xhbdno0no8xq54"); // 	    fwdedgeb.out = *e;
UNSUPPORTED("980ksnsma7kvvr9755ge8bhzh"); // 	    fwdedgeb.out.base.data = (Agrec_t*)&fwdedgebi;
UNSUPPORTED("6le0rehxs2odmv3zg1qg5wvd4"); // 	    agtail(&fwdedgea.out) = agtail(e);
UNSUPPORTED("flupwh3kosf3fkhkxllllt1"); // 	}
UNSUPPORTED("3p0d08nntark676jlv1jl0j27"); // 	le = getmainedge(e);
UNSUPPORTED("6tmwmfqoz3y8k44xamrpv82tl"); // 	while (ED_to_virt(le))
UNSUPPORTED("1c19c7ftue4zoibf7d2tm6uxy"); // 	    le = ED_to_virt(le);
UNSUPPORTED("d29k9lzj5g3d8dfxigwogdnoe"); // 	aghead(&fwdedgea.out) = aghead(le);
UNSUPPORTED("36l0czce101bg0wbmu68xjd7z"); // 	ED_head_port(&fwdedgea.out).defined = 0;
UNSUPPORTED("497rb9p6jdgdoyem0y42ecy6c"); // 	ED_edge_type(&fwdedgea.out) = 1;
UNSUPPORTED("4tjj1vbw4mog2qlouazrdirvw"); // 	ED_head_port(&fwdedgea.out).p.x = ED_head_port(&fwdedgea.out).p.y = 0;
UNSUPPORTED("8kdma1vi9aibo7isrge0lunrh"); // 	ED_to_orig(&fwdedgea.out) = e;
UNSUPPORTED("eih8eaai768x1un5mixrtgstp"); // 	e = &fwdedgea.out;
UNSUPPORTED("bxkpl0bp0qhtxaj6rspd19d1k"); // 	hackflag = NOT(0);
    } else {
	if ((ED_tree_index(e) & 32)!=0) {
	    MAKEFWDEDGE(fwdedgea.getPtr("out"), e);
	    e = (Agedge_s) fwdedgea.getPtr("out");
	}
    }
    fe = e;
    /* compute the spline points for the edge */
    if ((et == (1 << 1)) && (pointn[0] = makeLineEdge (g, fe, Z.z().pointfs, hn.unsupported()))!=0) {
    }
    else {
	boolean splines = (et == (5 << 1));
	boxn = 0;
	pointn[0] = 0;
	segfirst = e;
	tn = agtail(e);
	hn = aghead(e);
	b.____(maximal_bbox(g, sp, tn, null, e));
	tend.getStruct("nb").____(b);
	beginpath(P, e, 1, tend.amp(), spline_merge(tn));
	b.getStruct("UR").setDouble("y", 
	  tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("y"));
	b.getStruct("LL").setDouble("y", 
	  tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct().getStruct("LL").getDouble("y"));
	b.____(makeregularend(b, (1<<0),
	    	   ND_coord(tn).getDouble("y") - GD_rank(g).plus(ND_rank(tn)).getDouble("ht1")));
	if (b.getStruct("LL").getDouble("x") < b.getStruct("UR").getDouble("x") && b.getStruct("LL").getDouble("y") < b.getStruct("UR").getDouble("y"))
	{
	    tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn")).setStruct(b);
	    tend.setInt("boxn", tend.getInt("boxn") + 1);
	}
	longedge = 0;
	smode = false; si = -1;
	while (ND_node_type(hn) == 1 && N(((Boolean)Z.z().sinfo.call("splineMerge", hn)).booleanValue())) {
	    longedge = 1;
	    Z.z().boxes.plus(boxn++).setStruct(rank_box(sp, g, ND_rank(tn)));
	    if (N(smode)
	        && ((sl = straight_len(hn)) >=
	    	((GD_has_labels(g) & (1 << 0))!=0 ? 4 + 1 : 2 + 1))) {
	        smode = NOT(false);
	        si = 1; sl -= 2;
	    }
	    if (N(smode) || si > 0) {
	        si--;
	        Z.z().boxes.plus(boxn++).setStruct( maximal_bbox(g, sp, hn, e, (Agedge_s) ND_out(hn).getArrayOfPtr("list").plus(0).getPtr()));
	        e = (Agedge_s) ND_out(hn).getArrayOfPtr("list").plus(0).getPtr();
	        tn = agtail(e);
	        hn = aghead(e);
	        continue;
	    }
	    hend.setStruct("nb", maximal_bbox(g, sp, hn, e, (Agedge_s) ND_out(hn).getArrayOfPtr("list").plus(0).getPtr()));
	    endpath(P, e, 1, hend.amp(), spline_merge(aghead(e)));
	    b.____(makeregularend(hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct(), (1<<2),
	    	       ND_coord(hn).getDouble("y") + GD_rank(g).plus(ND_rank(hn)).getDouble("ht2")));
	    if (b.getStruct("LL").getDouble("x") < b.getStruct("UR").getDouble("x") && b.getStruct("LL").getDouble("y") < b.getStruct("UR").getDouble("y"))
UNSUPPORTED("1crhubfzekx1qi2ti9ajqsfoc"); // 	        hend.boxes[hend.boxn++] = b;
	    P.getStruct("end").setDouble("theta", M_PI / 2);
	    P.getStruct("end").setBoolean("constrained", NOT(false));
	    completeregularpath(P, segfirst, e, tend.amp(), hend.amp(), Z.z().boxes, boxn, 1);
	    if (splines) ps = routesplines(P, pn);
	    else {
UNSUPPORTED("biyp75vm751j3qmqacagfej4b"); // 		ps = routepolylines (P, &pn);
UNSUPPORTED("4fmdmgg43suu7ppgrcaofwqzh"); // 		if ((et == (1 << 1)) && (pn > 4)) {
UNSUPPORTED("2ftwbx9nsy10ldzds3ej4hxi7"); // 		    ps[1] = ps[0];
UNSUPPORTED("2fedie0btpk43e74p462n0y4n"); // 		    ps[3] = ps[2] = ps[pn-1];
UNSUPPORTED("3fwatldph3opctz8aieqd214d"); // 		    pn = 4;
UNSUPPORTED("6eq5kf0bj692bokt0bixy1ixh"); // 		}
	    }
	    if (pn[0] == 0)
	        return;
	    if (pointn[0] + pn[0] > Z.z().numpts) {
                /* This should be enough to include 3 extra points added by
                 * straight_path below.
                 */
UNSUPPORTED("k37sqlxbjikqg4xdonnvefo3"); // 		numpts = 2*(pointn+pn); 
UNSUPPORTED("8kbxhk7qirj3tr7hn1ukwar3h"); // 		pointfs = RALLOC(numpts, pointfs, pointf);
	    }
	    for (i = 0; i < pn[0]; i++) {
		Z.z().pointfs.plus(pointn[0]++).setStruct(ps.plus(i).getStruct());
	    }
	    e = straight_path((Agedge_s)ND_out(hn).getArrayOfPtr("list").plus(0).getPtr(), sl, Z.z().pointfs, pointn);
	    recover_slack(segfirst, P);
	    segfirst = e;
	    tn = agtail(e);
	    hn = aghead(e);
	    boxn = 0;
	    tend.setStruct("nb", maximal_bbox(g, sp, tn, (Agedge_s) ND_in(tn).getArrayOfPtr("list").plus(0).getPtr(), e));
	    beginpath(P, e, 1, tend.amp(), spline_merge(tn));
	    b.____(makeregularend(tend.getArrayOfStruct("boxes").plus(tend.getInt("boxn") - 1).getStruct(), (1<<0),
	    	       ND_coord(tn).getDouble("y") - GD_rank(g).plus(ND_rank(tn)).getDouble("ht1")));
	    if (b.getStruct("LL").getDouble("x") < b.getStruct("UR").getDouble("x") && b.getStruct("LL").getDouble("y") < b.getStruct("UR").getDouble("y"))
UNSUPPORTED("cjx6tldge3otk1pk6ks1pkn2w"); // 	        tend.boxes[tend.boxn++] = b;
	    P.getStruct("start").setDouble("theta", -M_PI / 2);
	    P.getStruct("start").setBoolean("constrained", NOT(false));
	    smode = false;
	}
	Z.z().boxes.plus(boxn++).setStruct(rank_box(sp, g, ND_rank(tn)));
	b.____(maximal_bbox(g, sp, hn, e, null));
	hend.getStruct("nb").____(b);
	endpath(P, hackflag!=0 ? fwdedgeb.getStruct("out").amp() : e, 1, hend.amp(), spline_merge(aghead(e)));
	b.getStruct("UR").setDouble("y", hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct().getStruct("UR").getDouble("y"));
	b.getStruct("LL").setDouble("y", hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn") - 1).getStruct().getStruct("LL").getDouble("y"));
	b.____(makeregularend(b, (1<<2),
	    	   ND_coord(hn).getDouble("y") + GD_rank(g).plus(ND_rank(hn)).getDouble("ht2")));
	if (b.getStruct("LL").getDouble("x") < b.getStruct("UR").getDouble("x") && b.getStruct("LL").getDouble("y") < b.getStruct("UR").getDouble("y"))
	    {
	    hend.getArrayOfStruct("boxes").plus(hend.getInt("boxn")).setStruct(b);
	    hend.setInt("boxn", hend.getInt("boxn")+1);
	    }
	completeregularpath(P, segfirst, e, tend.amp(), hend.amp(), Z.z().boxes, boxn,
	    		longedge);
	if (splines) ps = routesplines(P, pn);
	else ps = routepolylines (P, pn);
	if ((et == (1 << 1)) && (pn[0] > 4)) {
	    /* Here we have used the polyline case to handle
	     * an edge between two nodes on adjacent ranks. If the
	     * results really is a polyline, straighten it.
	     */
UNSUPPORTED("1u7e6lrkiipml54kkm7ylw56t"); // 	    ps[1] = ps[0];
UNSUPPORTED("76bh6z0xok01d0gdybxcx4ful"); // 	    ps[3] = ps[2] = ps[pn-1];
UNSUPPORTED("95b6xp8h5ai070bekyjhmiehh"); // 	    pn = 4;
        }
	if (pn[0] == 0)
	    return;
	if (pointn[0] + pn[0] > Z.z().numpts) {
UNSUPPORTED("c6ux5effs02grz7xh3k8ernda"); // 	    numpts = 2*(pointn+pn); 
UNSUPPORTED("bedaqcn9h03q6ia6zbezuee1m"); // 	    pointfs = RALLOC(numpts, pointfs, pointf);
	}
	for (i = 0; i < pn[0]; i++) {
	    Z.z().pointfs.plus(pointn[0]).setStruct(ps.plus(i).getStruct());
	    pointn[0]++;
	}
	recover_slack(segfirst, P);
	hn = hackflag!=0 ? aghead(fwdedgeb.getStruct("out").amp()) : aghead(e);
    }
    /* make copies of the spline points, one per multi-edge */
    if (cnt == 1) {
	clip_and_install(fe, hn, Z.z().pointfs, pointn[0], Z.z().sinfo.amp());
	return;
    }
    dx = sp.getInt("Multisep") * (cnt - 1) / 2;
    for (i = 1; i < pointn[0] - 1; i++)
	Z.z().pointfs.plus(i).setDouble("x", Z.z().pointfs.plus(i).getDouble("x") - dx);
    if (Z.z().numpts > Z.z().numpts2) {
UNSUPPORTED("9ubr4m7bdv5f5ldk2ta6yw3up"); // 	numpts2 = numpts; 
UNSUPPORTED("8qwp7ddy5ztgam63fzfjmu890"); // 	pointfs2 = RALLOC(numpts2, pointfs2, pointf);
    }
    for (i = 0; i < pointn[0]; i++)
	Z.z().pointfs2.plus(i).setStruct(Z.z().pointfs.plus(i).getStruct());
    clip_and_install(fe, hn, Z.z().pointfs2, pointn[0], Z.z().sinfo.amp());
    for (j = 1; j < cnt; j++) {
	e = (Agedge_s) edges.plus(ind + j).getPtr();
	if ((ED_tree_index(e) & 32)!=0) {
	    MAKEFWDEDGE(fwdedge.getStruct("out").amp(), e);
	    e = (Agedge_s) fwdedge.getStruct("out").amp();
	}
	for (i = 1; i < pointn[0] - 1; i++)
	    Z.z().pointfs.plus(i).setDouble("x", Z.z().pointfs.plus(i).getDouble("x") + sp.getInt("Multisep"));
	for (i = 0; i < pointn[0]; i++)
	    Z.z().pointfs2.plus(i).setStruct(Z.z().pointfs.plus(i).getStruct());
	clip_and_install(e, aghead(e), Z.z().pointfs2, pointn[0], Z.z().sinfo.amp());
    }
} finally {
LEAVING("30wfq1dby4t07hft9io52nq6z","make_regular_edge");
}
}




//3 va61hggynvb6z6j34w7otmab
// static void completeregularpath(path * P, edge_t * first, edge_t * last, 		    pathend_t * tendp, pathend_t * hendp, boxf * boxes, 		    int boxn, int flag) 
public static void completeregularpath(path P, Agedge_s first, Agedge_s last, pathend_t tendp, pathend_t hendp, __array_of_struct__ boxes, int boxn, int flag) {
ENTERING("va61hggynvb6z6j34w7otmab","completeregularpath");
try {
    Agedge_s uleft, uright, lleft, lright;
    int i, fb, lb;
    splines spl;
    pointf pp;
    int pn;
    fb = lb = -1;
    uleft = uright = null;
    uleft = top_bound(first, -1);
    uright = top_bound(first, 1);
    if (uleft!=null) {
	if (N(spl = getsplinepoints(uleft))) return;
	pp = (pointf) spl.getArrayOfPtr("list").plus(0).getPtr().getPtr("list");
       	pn = spl.getArrayOfPtr("list").plus(0).getPtr().getInt("size");
    }
    if (uright!=null) {
	if (N(spl = getsplinepoints(uright))) return;
	pp = (pointf) spl.getArrayOfPtr("list").plus(0).getPtr().getPtr("list");
       	pn = spl.getArrayOfPtr("list").plus(0).getPtr().getInt("size");
    }
    lleft = lright = null;
    lleft = bot_bound(last, -1);
    lright = bot_bound(last, 1);
    if (lleft!=null) {
	if (N(spl = getsplinepoints(lleft))) return;
	pp = (pointf) spl.getArrayOfPtr("list").plus(spl.getInt("size") - 1).getPtr().getPtr("list");
       	pn = spl.getArrayOfPtr("list").plus(spl.getInt("size") - 1).getPtr().getInt("size");
    }
    if (lright!=null) {
	if (N(spl = getsplinepoints(lright))) return;
	pp = (pointf) spl.getArrayOfPtr("list").plus(spl.getInt("size") - 1).getPtr().getPtr("list");
       	pn = spl.getArrayOfPtr("list").plus(spl.getInt("size") - 1).getPtr().getInt("size");
    }
    for (i = 0; i < tendp.getInt("boxn"); i++)
	add_box(P, tendp.getArrayOfStruct("boxes").plus(i).getStruct());
    fb = P.getInt("nbox") + 1;
    lb = fb + boxn - 3;
    for (i = 0; i < boxn; i++)
	add_box(P, boxes.plus(i).getStruct());
    for (i = hendp.getInt("boxn") - 1; i >= 0; i--)
	add_box(P, hendp.getArrayOfStruct("boxes").plus(i).getStruct());
    adjustregularpath(P, fb, lb);
} finally {
LEAVING("va61hggynvb6z6j34w7otmab","completeregularpath");
}
}




//3 3wwhczhpkcnflwr1l9wcga7tq
// static boxf makeregularend(boxf b, int side, double y) 
public static __struct__ makeregularend(final __struct__ b, int side, double y) {
// WARNING!! STRUCT
return makeregularend_w_(b.copy(), side, y).copy();
}
private static __struct__ makeregularend_w_(final __struct__ b, int side, double y) {
ENTERING("3wwhczhpkcnflwr1l9wcga7tq","makeregularend");
try {
    final __struct__ newb = __struct__.from(boxf.class);
    switch (side) {
    case (1<<0):
	newb.____(boxfof(b.getStruct("LL").getDouble("x"), y, b.getStruct("UR").getDouble("x"), b.getStruct("LL").getDouble("y")));
	break;
    case (1<<2):
	newb.____(boxfof(b.getStruct("LL").getDouble("x"), b.getStruct("UR").getDouble("y"), b.getStruct("UR").getDouble("x"), y));
	break;
    }
    return newb;
} finally {
LEAVING("3wwhczhpkcnflwr1l9wcga7tq","makeregularend");
}
}




//3 88xrlzjovkxcnay9b2y5zyiid
// static void adjustregularpath(path * P, int fb, int lb) 
public static void adjustregularpath(path P, int fb, int lb) {
ENTERING("88xrlzjovkxcnay9b2y5zyiid","adjustregularpath");
try {
    boxf bp1, bp2;
    int i, x;
    for (i = fb-1; i < lb+1; i++) {
	bp1 = P.getArrayOfPtr("boxes").plus(i).getStruct().amp();
	if ((i - fb) % 2 == 0) {
	    if (bp1.getStruct("LL").getDouble("x") >= bp1.getStruct("UR").getDouble("x")) {
		x = (int)((bp1.getStruct("LL").getDouble("x") + bp1.getStruct("UR").getDouble("x")) / 2);
		bp1.getStruct("LL").setDouble("x", x - 8);
		bp1.getStruct("UR").setDouble("x", x + 8);
	    }
	} else {
	    if (bp1.getStruct("LL").getDouble("x") + 16 > bp1.getStruct("UR").getDouble("x")) {
		x = (int)((bp1.getStruct("LL").getDouble("x") + bp1.getStruct("UR").getDouble("x")) / 2);
		bp1.getStruct("LL").setDouble("x", x - 8);
		bp1.getStruct("UR").setDouble("x", x + 8);
	    }
	}
    }
    for (i = 0; i < P.getInt("nbox") - 1; i++) {
	bp1 = P.getArrayOfPtr("boxes").plus(i).getStruct().amp();
	bp2 = P.getArrayOfPtr("boxes").plus(i+1).getStruct().amp();
	if (i >= fb && i <= lb && (i - fb) % 2 == 0) {
	    if (bp1.getStruct("LL").getDouble("x") + 16 > bp2.getStruct("UR").getDouble("x"))
		bp2.getStruct("UR").setDouble("x", bp1.getStruct("LL").getDouble("x") + 16);
	    if (bp1.getStruct("UR").getDouble("x") - 16 < bp2.getStruct("LL").getDouble("x"))
		bp2.getStruct("LL").setDouble("x", bp1.getStruct("UR").getDouble("x") - 16);
	} else if (i + 1 >= fb && i < lb && (i + 1 - fb) % 2 == 0) {
	    if (bp1.getStruct("LL").getDouble("x") + 16 > bp2.getStruct("UR").getDouble("x"))
		bp1.getStruct("LL").setDouble("x", bp2.getStruct("UR").getDouble("x") - 16);
	    if (bp1.getStruct("UR").getDouble("x") - 16 < bp2.getStruct("LL").getDouble("x"))
		bp1.getStruct("UR").setDouble("x", bp2.getStruct("LL").getDouble("x") + 16);
	} 
    }
} finally {
LEAVING("88xrlzjovkxcnay9b2y5zyiid","adjustregularpath");
}
}




//3 bajn5vx0isu427n6dh131b985
// static boxf rank_box(spline_info_t* sp, graph_t * g, int r) 
public static __struct__ rank_box(spline_info_t sp, Agraph_s g, int r) {
// WARNING!! STRUCT
return rank_box_w_(sp, g, r).copy();
}
private static __struct__ rank_box_w_(spline_info_t sp, Agraph_s g, int r) {
ENTERING("bajn5vx0isu427n6dh131b985","rank_box");
try {
    final __struct__ b = __struct__.from(boxf.class);
    Agnode_s /* *right0, *right1, */  left0, left1;
    b.____(sp.getPtr("Rank_box").plus(r).getStruct());
    if (b.getStruct("LL").getDouble("x") == b.getStruct("UR").getDouble("x")) {
	left0 = (Agnode_s) GD_rank(g).plus(r).getArrayOfPtr("v").plus(0).getPtr();
	/* right0 = GD_rank(g)[r].v[GD_rank(g)[r].n - 1]; */
	left1 = (Agnode_s) GD_rank(g).plus(r + 1).getArrayOfPtr("v").plus(0).getPtr();
	/* right1 = GD_rank(g)[r + 1].v[GD_rank(g)[r + 1].n - 1]; */
	b.getStruct("LL").setDouble("x", sp.getInt("LeftBound"));
	b.getStruct("LL").setDouble("y", ND_coord(left1).getDouble("y") + GD_rank(g).plus(r + 1).getDouble("ht2"));
	b.getStruct("UR").setDouble("x", sp.getInt("RightBound"));
	b.getStruct("UR").setDouble("y", ND_coord(left0).getDouble("y") - GD_rank(g).plus(r).getDouble("ht1"));
	sp.getPtr("Rank_box").plus(r).setStruct(b);
    }
    return b;
} finally {
LEAVING("bajn5vx0isu427n6dh131b985","rank_box");
}
}




//3 6qwcnugx2ytjrvi5rgxzyzg5i
// static int straight_len(node_t * n) 
public static int straight_len(Agnode_s n) {
ENTERING("6qwcnugx2ytjrvi5rgxzyzg5i","straight_len");
try {
    int cnt = 0;
    Agnode_s v;
    v = n;
    while (true) {
	v = (Agnode_s) aghead(ND_out(v).getArrayOfPtr("list").plus(0).getPtr());
	if (ND_node_type(v) != 1)
	    break;
	if ((ND_out(v).getInt("size") != 1) || (ND_in(v).getInt("size") != 1))
	    break;
	if (ND_coord(v).getDouble("x") != ND_coord(n).getDouble("x"))
	    break;
	cnt++;
    }
    return cnt;
} finally {
LEAVING("6qwcnugx2ytjrvi5rgxzyzg5i","straight_len");
}
}




//3 15pgjjuil2c1rjldu29j07gbz
// static edge_t *straight_path(edge_t * e, int cnt, pointf * plist, int *np) 
public static Agedge_s straight_path(Agedge_s e, int cnt, __ptr__ plist, int np[]) {
ENTERING("15pgjjuil2c1rjldu29j07gbz","straight_path");
try {
    int n = np[0];
    Agedge_s f = e;
    while ((cnt--)!=0)
	f = (Agedge_s) ND_out(aghead(f)).getArrayOfPtr("list").plus(0).getPtr();
    plist.plus(np[0]++).setStruct(plist.plus(n - 1).getStruct());
    plist.plus(np[0]++).setStruct(plist.plus(n - 1).getStruct());
    plist.plus(np[0]).setStruct(ND_coord(agtail(f)));  /* will be overwritten by next spline */
    return f;
} finally {
LEAVING("15pgjjuil2c1rjldu29j07gbz","straight_path");
}
}




//3 4ilkzqtegd5uffawb4qcjthu1
// static void recover_slack(edge_t * e, path * p) 
public static void recover_slack(Agedge_s e, path p) {
ENTERING("4ilkzqtegd5uffawb4qcjthu1","recover_slack");
try {
    int b;
    Agnode_s vn;
    b = 0;			/* skip first rank box */
    for (vn = aghead(e);
	 ND_node_type(vn) == 1 && N(((Boolean)Z.z().sinfo.call("splineMerge", vn)).booleanValue());
	 vn = aghead(ND_out(vn).getArrayOfPtr("list").plus(0).getPtr())) {
	while ((b < p.getInt("nbox")) && (p.getPtr("boxes").plus(b).getStruct("LL").getDouble("y") > ND_coord(vn).getDouble("y")))
	    b++;
	if (b >= p.getInt("nbox"))
	    break;
	if (p.getPtr("boxes").plus(b).getStruct("UR").getDouble("y") < ND_coord(vn).getDouble("y"))
	    continue;
	if (ND_label(vn)!=null)
	    resize_vn(vn, (int)p.getPtr("boxes").plus(b).getStruct("LL").getDouble("x"), (int)p.getPtr("boxes").plus(b).getStruct("UR").getDouble("x"),
		      (int)(p.getPtr("boxes").plus(b).getStruct("UR").getDouble("x") + ND_rw(vn)));
	else
	    resize_vn(vn, (int)p.getPtr("boxes").plus(b).getStruct("LL").getDouble("x"), (int)((p.getPtr("boxes").plus(b).getStruct("LL").getDouble("x") +
					     p.getPtr("boxes").plus(b).getStruct("UR").getDouble("x")) / 2),
		      (int)p.getPtr("boxes").plus(b).getStruct("UR").getDouble("x"));
    }
} finally {
LEAVING("4ilkzqtegd5uffawb4qcjthu1","recover_slack");
}
}




//3 3vmg1q1r0eb14etvjdk4cukpd
// static void resize_vn(vn, lx, cx, rx) node_t *vn
public static void resize_vn(Agnode_s vn, int lx, int cx, int rx) {
ENTERING("3vmg1q1r0eb14etvjdk4cukpd","resize_vn");
try {
    ND_coord(vn).setDouble("x", cx);
    ND_lw(vn, cx - lx);
    ND_rw(vn, rx - cx);
} finally {
LEAVING("3vmg1q1r0eb14etvjdk4cukpd","resize_vn");
}
}




//3 9t0v5wicmjuc3ij9hko6iawle
// static edge_t *top_bound(edge_t * e, int side) 
public static Agedge_s top_bound(Agedge_s e, int side) {
ENTERING("9t0v5wicmjuc3ij9hko6iawle","top_bound");
try {
    Agedge_s f, ans = null;
    int i;
    for (i = 0; (f = (Agedge_s) ND_out(agtail(e)).getArrayOfPtr("list").plus(i).getPtr())!=null; i++) {
	if (side * (ND_order(aghead(f)) - ND_order(aghead(e))) <= 0)
	    continue;
	if ((ED_spl(f) == null)
	    && ((ED_to_orig(f) == null) || (ED_spl(ED_to_orig(f)) == null)))
	    continue;
	if ((ans == null)
	    || (side * (ND_order(aghead(ans)) - ND_order(aghead(f))) > 0))
	    ans = f;
    }
    return ans;
} finally {
LEAVING("9t0v5wicmjuc3ij9hko6iawle","top_bound");
}
}




//3 9fsg0uiyhtrayd4mimmc0i25e
// static edge_t *bot_bound(edge_t * e, int side) 
public static Agedge_s bot_bound(Agedge_s e, int side) {
ENTERING("9fsg0uiyhtrayd4mimmc0i25e","bot_bound");
try {
    Agedge_s f, ans = null;
    int i;
    for (i = 0; (f = (Agedge_s) ND_in(aghead(e)).getArrayOfPtr("list").plus(i).getPtr())!=null; i++) {
	if (side * (ND_order(agtail(f)) - ND_order(agtail(e))) <= 0)
	    continue;
	if ((ED_spl(f) == null)
	    && ((ED_to_orig(f) == null) || (ED_spl(ED_to_orig(f)) == null)))
	    continue;
	if ((ans == null)
	    || (side * (ND_order(agtail(ans)) - ND_order(agtail(f))) > 0))
	    ans = f;
    }
    return ans;
} finally {
LEAVING("9fsg0uiyhtrayd4mimmc0i25e","bot_bound");
}
}




//3 65uvkv1mextaah5m997ibe3qs
// static int cl_vninside(graph_t * cl, node_t * n) 
public static boolean cl_vninside(Agraph_s cl, Agnode_s n) {
ENTERING("65uvkv1mextaah5m997ibe3qs","cl_vninside");
try {
    return (BETWEEN(GD_bb(cl).getStruct("LL").getDouble("x"), (double)(ND_coord(n).getDouble("x")), GD_bb(cl).getStruct("UR").getDouble("x")) &&
	    BETWEEN(GD_bb(cl).getStruct("LL").getDouble("y"), (double)(ND_coord(n).getDouble("y")), GD_bb(cl).getStruct("UR").getDouble("y")));
} finally {
LEAVING("65uvkv1mextaah5m997ibe3qs","cl_vninside");
}
}




//3 dzvvmxkya868w5x78lkvchigk
// static Agraph_t *cl_bound(graph_t* g,  node_t *n, node_t *adj) 
public static Agraph_s cl_bound(Agraph_s g,  Agnode_s n, Agnode_s adj) {
ENTERING("dzvvmxkya868w5x78lkvchigk","cl_bound");
try {
    Agraph_s rv, cl, tcl, hcl;
    Agedge_s orig;
    rv = null;
    if (ND_node_type(n) == 0)
	tcl = hcl = ND_clust(n);
    else {
	orig = ED_to_orig(ND_out(n).getArrayOfPtr("list").plus(0).getPtr());
	tcl = ND_clust(agtail(orig));
	hcl = ND_clust(aghead(orig));
    }
    if (ND_node_type(adj) == 0) {
	cl = ( EQ(ND_clust(adj), g) ? null:ND_clust(adj));
	if (cl!=null && NEQ(cl, tcl) && NEQ(cl, hcl))
	    rv = cl;
    } else {
	orig = ED_to_orig(ND_out(adj).getArrayOfPtr("list").plus(0).getPtr());
	cl = ( EQ(ND_clust(agtail(orig)), g) ? null:ND_clust(agtail(orig)));
	if (cl!=null && NEQ(cl, tcl) && NEQ(cl, hcl) && cl_vninside(cl, adj))
	    rv = cl;
	else {
	    cl = ( EQ(ND_clust(aghead(orig)), g) ? null:ND_clust(aghead(orig)));
	    if (cl!=null && NEQ(cl, tcl) && NEQ(cl, hcl) && cl_vninside(cl, adj))
		rv = cl;
	}
    }
    return rv;
} finally {
LEAVING("dzvvmxkya868w5x78lkvchigk","cl_bound");
}
}




//3 6qwgl36ugfnduc5x59ohuewv1
// static boxf maximal_bbox(graph_t* g, spline_info_t* sp, node_t* vn, edge_t* ie, edge_t* oe) 
public static __struct__ maximal_bbox(Agraph_s g, spline_info_t sp, Agnode_s vn, Agedge_s ie, Agedge_s oe) {
// WARNING!! STRUCT
return maximal_bbox_w_(g, sp, vn, ie, oe).copy();
}
private static __struct__ maximal_bbox_w_(Agraph_s g, spline_info_t sp, Agnode_s vn, Agedge_s ie, Agedge_s oe) {
ENTERING("6qwgl36ugfnduc5x59ohuewv1","maximal_bbox");
try {
    double b, nb;
    Agraph_s left_cl, right_cl;
    Agnode_s left, right;
    final __struct__ rv = __struct__.from(boxf.class);
    left_cl = right_cl = null;
    /* give this node all the available space up to its neighbors */
    b = (double)(ND_coord(vn).getDouble("x") - ND_lw(vn) - 4);
    if ((left = neighbor(g, vn, ie, oe, -1))!=null) {
	if ((left_cl = cl_bound(g, vn, left))!=null)
	    nb = GD_bb(left_cl).getStruct("UR").getDouble("x") + (double)(sp.getInt("Splinesep"));
	else {
	    nb = (double)(ND_coord(left).getDouble("x") + ND_mval(left));
	    if (ND_node_type(left) == 0)
		nb += GD_nodesep(g) / 2.;
	    else
		nb += (double)(sp.getInt("Splinesep"));
	}
	if (nb < b)
	    b = nb;
	rv.getStruct("LL").setDouble("x", ROUND(b));
    } else
	rv.getStruct("LL").setDouble("x", MIN(ROUND(b), sp.getInt("LeftBound")));
    /* we have to leave room for our own label! */
    if ((ND_node_type(vn) == 1) && (ND_label(vn)!=null))
	b = (double)(ND_coord(vn).getDouble("x") + 10);
    else
	b = (double)(ND_coord(vn).getDouble("x") + ND_rw(vn) + 4);
    if ((right = neighbor(g, vn, ie, oe, 1))!=null) {
	if ((right_cl = cl_bound(g, vn, right))!=null)
	    nb = GD_bb(right_cl).getStruct("LL").getDouble("x") - (double)(sp.getInt("Splinesep"));
	else {
	    nb = ND_coord(right).getDouble("x") - ND_lw(right);
	    if (ND_node_type(right) == 0)
		nb -= GD_nodesep(g) / 2.;
	    else
		nb -= (double)(sp.getInt("Splinesep"));
	}
	if (nb > b)
	    b = nb;
	rv.getStruct("UR").setDouble("x", ROUND(b));
    } else
	rv.getStruct("UR").setDouble("x", MAX(ROUND(b), sp.getInt("RightBound")));
    if ((ND_node_type(vn) == 1) && (ND_label(vn)!=null)) {
	rv.getStruct("UR").setDouble("x", rv.getStruct("UR").getDouble("x") - ND_rw(vn));
	if (rv.getStruct("UR").getDouble("x") < rv.getStruct("LL").getDouble("x")) rv.getStruct("UR").setDouble("x", ND_coord(vn).getDouble("x"));
    }
    rv.getStruct("LL").setDouble("y", ND_coord(vn).getDouble("y") - GD_rank(g).plus(ND_rank(vn)).getDouble("ht1"));
    rv.getStruct("UR").setDouble("y", ND_coord(vn).getDouble("y") + GD_rank(g).plus(ND_rank(vn)).getDouble("ht2"));
    return rv;
} finally {
LEAVING("6qwgl36ugfnduc5x59ohuewv1","maximal_bbox");
}
}




//3 18pm6r3xcy90f0xi5hpm9jdhk
// static node_t * neighbor(graph_t* g, node_t *vn, edge_t *ie, edge_t *oe, int dir) 
public static Agnode_s neighbor(Agraph_s g, Agnode_s vn, Agedge_s ie, Agedge_s oe, int dir) {
ENTERING("18pm6r3xcy90f0xi5hpm9jdhk","neighbor");
try {
    int i;
    Agnode_s n, rv = null;
    __ptr__ rank = GD_rank(g).plus(ND_rank(vn));
    for (i = ND_order(vn) + dir; ((i >= 0) && (i < rank.getInt("n"))); i += dir) {
	n = (Agnode_s) rank.getArrayOfPtr("v").plus(i).getPtr();
	if ((ND_node_type(n) == 1) && (ND_label(n)!=null)) {
	    rv = n;
	    break;
	}
	if (ND_node_type(n) == 0) {
	    rv = n;
	    break;
	}
	if (pathscross(n, vn, ie, oe) == false) {
	    rv = n;
	    break;
	}
    }
    return rv;
} finally {
LEAVING("18pm6r3xcy90f0xi5hpm9jdhk","neighbor");
}
}




//3 f4q0oqe165s9pl5k0th5noeyv
// static boolean pathscross(n0, n1, ie1, oe1) node_t *n0, *n1
public static boolean pathscross(Agnode_s n0, Agnode_s n1, Agedge_s ie1, Agedge_s oe1) {
ENTERING("f4q0oqe165s9pl5k0th5noeyv","pathscross");
try {
    Agedge_s e0, e1;
    Agnode_s na, nb;
    boolean order;
    int cnt;
    order = (ND_order(n0) > ND_order(n1));
    if ((ND_out(n0).getInt("size") != 1) && (ND_out(n0).getInt("size") != 1))
	return false;
    e1 = oe1;
    if (ND_out(n0).getInt("size") == 1 && e1!=null) {
	e0 = (Agedge_s) ND_out(n0).getArrayOfPtr("list").plus(0).getPtr();
	for (cnt = 0; cnt < 2; cnt++) {
	    if (EQ(na = aghead(e0), nb = aghead(e1)))
		break;
	    if (order != (ND_order(na) > ND_order(nb)))
		return NOT(false);
	    if ((ND_out(na).getInt("size") != 1) || (ND_node_type(na) == 0))
		break;
	    e0 = (Agedge_s) ND_out(na).getArrayOfPtr("list").plus(0).getPtr();
	    if ((ND_out(nb).getInt("size") != 1) || (ND_node_type(nb) == 0))
		break;
	    e1 = (Agedge_s) ND_out(nb).getArrayOfPtr("list").plus(0).getPtr();
	}
    }
    e1 = ie1;
    if (ND_in(n0).getInt("size") == 1 && e1!=null) {
	e0 = (Agedge_s) ND_in(n0).getArrayOfPtr("list").plus(0).getPtr();
	for (cnt = 0; cnt < 2; cnt++) {
	    if (EQ(na = agtail(e0), nb = agtail(e1)))
		break;
	    if (order != (ND_order(na) > ND_order(nb)))
		return NOT(false);
	    if ((ND_in(na).getInt("size") != 1) || (ND_node_type(na) == 0))
		break;
	    e0 = (Agedge_s) ND_in(na).getArrayOfPtr("list").plus(0).getPtr();
	    if ((ND_in(nb).getInt("size") != 1) || (ND_node_type(nb) == 0))
		break;
	    e1 = (Agedge_s) ND_in(nb).getArrayOfPtr("list").plus(0).getPtr();
	}
    }
    return false;
} finally {
LEAVING("f4q0oqe165s9pl5k0th5noeyv","pathscross");
}
}


}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy