2009-09-09 00:09:15 +00:00
; RUN: llc < %s -mtriple=armv6-apple-darwin10 -mattr=+vfp2 | grep fcmpezd | count 13
2009-07-20 21:46:42 +00:00
%struct.EDGE_PAIR = type { %struct.edge_rec * , %struct.edge_rec * }
%struct.VEC2 = type { double , double , double }
%struct.VERTEX = type { %struct.VEC2 , %struct.VERTEX * , %struct.VERTEX * }
%struct.edge_rec = type { %struct.VERTEX * , %struct.edge_rec * , i32 , i8 * }
@avail_edge = internal global %struct.edge_rec * null ; <%struct.edge_rec**> [#uses=6]
@_2E_str7 = internal constant [ 21 x i8 ] c "ERROR: Only 1 point!\00" , section "__TEXT,__cstring,cstring_literals" , align 1 ; <[21 x i8]*> [#uses=1]
@llvm.used = appending global [ 1 x i8 * ] [ i8 * bitcast ( void ( %struct.EDGE_PAIR * , %struct.VERTEX * , %struct.VERTEX * ) * @build_delaunay to i8 * ) ] , section "llvm.metadata" ; <[1 x i8*]*> [#uses=0]
define arm_apcscc void @build_delaunay ( %struct.EDGE_PAIR * noalias nocapture sret %agg.result , %struct.VERTEX * %tree , %struct.VERTEX * %extra ) nounwind {
entry:
%delright = alloca %struct.EDGE_PAIR , align 8 ; <%struct.EDGE_PAIR*> [#uses=3]
%delleft = alloca %struct.EDGE_PAIR , align 8 ; <%struct.EDGE_PAIR*> [#uses=3]
%0 = icmp eq %struct.VERTEX * %tree , null ; <i1> [#uses=1]
br i1 %0 , label %bb8 , label %bb
bb: ; preds = %entry
%1 = getelementptr %struct.VERTEX * %tree , i32 0 , i32 2 ; <%struct.VERTEX**> [#uses=1]
%2 = load %struct.VERTEX * * %1 , align 4 ; <%struct.VERTEX*> [#uses=2]
%3 = icmp eq %struct.VERTEX * %2 , null ; <i1> [#uses=1]
br i1 %3 , label %bb7 , label %bb1.i
bb1.i: ; preds = %bb1.i, %bb
%tree_addr.0.i = phi %struct.VERTEX * [ %5 , %bb1.i ] , [ %tree , %bb ] ; <%struct.VERTEX*> [#uses=3]
%4 = getelementptr %struct.VERTEX * %tree_addr.0.i , i32 0 , i32 1 ; <%struct.VERTEX**> [#uses=1]
%5 = load %struct.VERTEX * * %4 , align 4 ; <%struct.VERTEX*> [#uses=2]
%6 = icmp eq %struct.VERTEX * %5 , null ; <i1> [#uses=1]
br i1 %6 , label %get_low.exit , label %bb1.i
get_low.exit: ; preds = %bb1.i
call arm_apcscc void @build_delaunay ( %struct.EDGE_PAIR * noalias sret %delright , %struct.VERTEX * %2 , %struct.VERTEX * %extra ) nounwind
%7 = getelementptr %struct.VERTEX * %tree , i32 0 , i32 1 ; <%struct.VERTEX**> [#uses=1]
%8 = load %struct.VERTEX * * %7 , align 4 ; <%struct.VERTEX*> [#uses=1]
call arm_apcscc void @build_delaunay ( %struct.EDGE_PAIR * noalias sret %delleft , %struct.VERTEX * %8 , %struct.VERTEX * %tree ) nounwind
%9 = getelementptr %struct.EDGE_PAIR * %delleft , i32 0 , i32 0 ; <%struct.edge_rec**> [#uses=1]
%10 = load %struct.edge_rec * * %9 , align 8 ; <%struct.edge_rec*> [#uses=2]
%11 = getelementptr %struct.EDGE_PAIR * %delleft , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%12 = load %struct.edge_rec * * %11 , align 4 ; <%struct.edge_rec*> [#uses=1]
%13 = getelementptr %struct.EDGE_PAIR * %delright , i32 0 , i32 0 ; <%struct.edge_rec**> [#uses=1]
%14 = load %struct.edge_rec * * %13 , align 8 ; <%struct.edge_rec*> [#uses=1]
%15 = getelementptr %struct.EDGE_PAIR * %delright , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%16 = load %struct.edge_rec * * %15 , align 4 ; <%struct.edge_rec*> [#uses=2]
br label %bb.i
bb.i: ; preds = %bb4.i, %get_low.exit
%rdi_addr.0.i = phi %struct.edge_rec * [ %14 , %get_low.exit ] , [ %72 , %bb4.i ] ; <%struct.edge_rec*> [#uses=2]
%ldi_addr.1.i = phi %struct.edge_rec * [ %12 , %get_low.exit ] , [ %ldi_addr.0.i , %bb4.i ] ; <%struct.edge_rec*> [#uses=3]
%17 = getelementptr %struct.edge_rec * %rdi_addr.0.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%18 = load %struct.VERTEX * * %17 , align 4 ; <%struct.VERTEX*> [#uses=3]
%19 = ptrtoint %struct.edge_rec * %ldi_addr.1.i to i32 ; <i32> [#uses=1]
%20 = getelementptr %struct.VERTEX * %18 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%21 = load double * %20 , align 4 ; <double> [#uses=3]
%22 = getelementptr %struct.VERTEX * %18 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%23 = load double * %22 , align 4 ; <double> [#uses=3]
br label %bb2.i
bb1.i1: ; preds = %bb2.i
%24 = ptrtoint %struct.edge_rec * %ldi_addr.0.i to i32 ; <i32> [#uses=2]
%25 = add i32 %24 , 48 ; <i32> [#uses=1]
%26 = and i32 %25 , 63 ; <i32> [#uses=1]
%27 = and i32 %24 , -64 ; <i32> [#uses=1]
%28 = or i32 %26 , %27 ; <i32> [#uses=1]
%29 = inttoptr i32 %28 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%30 = getelementptr %struct.edge_rec * %29 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%31 = load %struct.edge_rec * * %30 , align 4 ; <%struct.edge_rec*> [#uses=1]
%32 = ptrtoint %struct.edge_rec * %31 to i32 ; <i32> [#uses=2]
%33 = add i32 %32 , 16 ; <i32> [#uses=1]
%34 = and i32 %33 , 63 ; <i32> [#uses=1]
%35 = and i32 %32 , -64 ; <i32> [#uses=1]
%36 = or i32 %34 , %35 ; <i32> [#uses=2]
%37 = inttoptr i32 %36 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
br label %bb2.i
bb2.i: ; preds = %bb1.i1, %bb.i
%ldi_addr.1.pn.i = phi %struct.edge_rec * [ %ldi_addr.1.i , %bb.i ] , [ %37 , %bb1.i1 ] ; <%struct.edge_rec*> [#uses=1]
%.pn6.in.in.i = phi i32 [ %19 , %bb.i ] , [ %36 , %bb1.i1 ] ; <i32> [#uses=1]
%ldi_addr.0.i = phi %struct.edge_rec * [ %ldi_addr.1.i , %bb.i ] , [ %37 , %bb1.i1 ] ; <%struct.edge_rec*> [#uses=4]
%.pn6.in.i = xor i32 %.pn6.in.in.i , 32 ; <i32> [#uses=1]
%.pn6.i = inttoptr i32 %.pn6.in.i to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%t1.0.in.i = getelementptr %struct.edge_rec * %ldi_addr.1.pn.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%t2.0.in.i = getelementptr %struct.edge_rec * %.pn6.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%t1.0.i = load %struct.VERTEX * * %t1.0.in.i ; <%struct.VERTEX*> [#uses=2]
%t2.0.i = load %struct.VERTEX * * %t2.0.in.i ; <%struct.VERTEX*> [#uses=2]
%38 = getelementptr %struct.VERTEX * %t1.0.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%39 = load double * %38 , align 4 ; <double> [#uses=3]
%40 = getelementptr %struct.VERTEX * %t1.0.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%41 = load double * %40 , align 4 ; <double> [#uses=3]
%42 = getelementptr %struct.VERTEX * %t2.0.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%43 = load double * %42 , align 4 ; <double> [#uses=1]
%44 = getelementptr %struct.VERTEX * %t2.0.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%45 = load double * %44 , align 4 ; <double> [#uses=1]
%46 = fsub double %39 , %21 ; <double> [#uses=1]
%47 = fsub double %45 , %23 ; <double> [#uses=1]
%48 = fmul double %46 , %47 ; <double> [#uses=1]
%49 = fsub double %43 , %21 ; <double> [#uses=1]
%50 = fsub double %41 , %23 ; <double> [#uses=1]
%51 = fmul double %49 , %50 ; <double> [#uses=1]
%52 = fsub double %48 , %51 ; <double> [#uses=1]
%53 = fcmp ogt double %52 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %53 , label %bb1.i1 , label %bb3.i
bb3.i: ; preds = %bb2.i
%54 = ptrtoint %struct.edge_rec * %rdi_addr.0.i to i32 ; <i32> [#uses=1]
%55 = xor i32 %54 , 32 ; <i32> [#uses=3]
%56 = inttoptr i32 %55 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%57 = getelementptr %struct.edge_rec * %56 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%58 = load %struct.VERTEX * * %57 , align 4 ; <%struct.VERTEX*> [#uses=2]
%59 = getelementptr %struct.VERTEX * %58 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%60 = load double * %59 , align 4 ; <double> [#uses=1]
%61 = getelementptr %struct.VERTEX * %58 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%62 = load double * %61 , align 4 ; <double> [#uses=1]
%63 = fsub double %60 , %39 ; <double> [#uses=1]
%64 = fsub double %23 , %41 ; <double> [#uses=1]
%65 = fmul double %63 , %64 ; <double> [#uses=1]
%66 = fsub double %21 , %39 ; <double> [#uses=1]
%67 = fsub double %62 , %41 ; <double> [#uses=1]
%68 = fmul double %66 , %67 ; <double> [#uses=1]
%69 = fsub double %65 , %68 ; <double> [#uses=1]
%70 = fcmp ogt double %69 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %70 , label %bb4.i , label %bb5.i
bb4.i: ; preds = %bb3.i
%71 = getelementptr %struct.edge_rec * %56 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%72 = load %struct.edge_rec * * %71 , align 4 ; <%struct.edge_rec*> [#uses=1]
br label %bb.i
bb5.i: ; preds = %bb3.i
%73 = add i32 %55 , 48 ; <i32> [#uses=1]
%74 = and i32 %73 , 63 ; <i32> [#uses=1]
%75 = and i32 %55 , -64 ; <i32> [#uses=1]
%76 = or i32 %74 , %75 ; <i32> [#uses=1]
%77 = inttoptr i32 %76 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%78 = getelementptr %struct.edge_rec * %77 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%79 = load %struct.edge_rec * * %78 , align 4 ; <%struct.edge_rec*> [#uses=1]
%80 = ptrtoint %struct.edge_rec * %79 to i32 ; <i32> [#uses=2]
%81 = add i32 %80 , 16 ; <i32> [#uses=1]
%82 = and i32 %81 , 63 ; <i32> [#uses=1]
%83 = and i32 %80 , -64 ; <i32> [#uses=1]
%84 = or i32 %82 , %83 ; <i32> [#uses=1]
%85 = inttoptr i32 %84 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%86 = getelementptr %struct.edge_rec * %ldi_addr.0.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%87 = load %struct.VERTEX * * %86 , align 4 ; <%struct.VERTEX*> [#uses=1]
%88 = call arm_apcscc %struct.edge_rec * @alloc_edge ( ) nounwind ; <%struct.edge_rec*> [#uses=6]
%89 = getelementptr %struct.edge_rec * %88 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=4]
store %struct.edge_rec * %88 , %struct.edge_rec * * %89 , align 4
%90 = getelementptr %struct.edge_rec * %88 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=2]
store %struct.VERTEX * %18 , %struct.VERTEX * * %90 , align 4
%91 = ptrtoint %struct.edge_rec * %88 to i32 ; <i32> [#uses=5]
%92 = add i32 %91 , 16 ; <i32> [#uses=2]
%93 = inttoptr i32 %92 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%94 = add i32 %91 , 48 ; <i32> [#uses=1]
%95 = inttoptr i32 %94 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%96 = getelementptr %struct.edge_rec * %93 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %95 , %struct.edge_rec * * %96 , align 4
%97 = add i32 %91 , 32 ; <i32> [#uses=1]
%98 = inttoptr i32 %97 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%99 = getelementptr %struct.edge_rec * %98 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %98 , %struct.edge_rec * * %99 , align 4
%100 = getelementptr %struct.edge_rec * %98 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %87 , %struct.VERTEX * * %100 , align 4
%101 = getelementptr %struct.edge_rec * %95 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %93 , %struct.edge_rec * * %101 , align 4
%102 = load %struct.edge_rec * * %89 , align 4 ; <%struct.edge_rec*> [#uses=1]
%103 = ptrtoint %struct.edge_rec * %102 to i32 ; <i32> [#uses=2]
%104 = add i32 %103 , 16 ; <i32> [#uses=1]
%105 = and i32 %104 , 63 ; <i32> [#uses=1]
%106 = and i32 %103 , -64 ; <i32> [#uses=1]
%107 = or i32 %105 , %106 ; <i32> [#uses=1]
%108 = inttoptr i32 %107 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%109 = getelementptr %struct.edge_rec * %85 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%110 = load %struct.edge_rec * * %109 , align 4 ; <%struct.edge_rec*> [#uses=1]
%111 = ptrtoint %struct.edge_rec * %110 to i32 ; <i32> [#uses=2]
%112 = add i32 %111 , 16 ; <i32> [#uses=1]
%113 = and i32 %112 , 63 ; <i32> [#uses=1]
%114 = and i32 %111 , -64 ; <i32> [#uses=1]
%115 = or i32 %113 , %114 ; <i32> [#uses=1]
%116 = inttoptr i32 %115 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%117 = getelementptr %struct.edge_rec * %116 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%118 = load %struct.edge_rec * * %117 , align 4 ; <%struct.edge_rec*> [#uses=1]
%119 = getelementptr %struct.edge_rec * %108 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%120 = load %struct.edge_rec * * %119 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %118 , %struct.edge_rec * * %119 , align 4
store %struct.edge_rec * %120 , %struct.edge_rec * * %117 , align 4
%121 = load %struct.edge_rec * * %89 , align 4 ; <%struct.edge_rec*> [#uses=1]
%122 = load %struct.edge_rec * * %109 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %121 , %struct.edge_rec * * %109 , align 4
store %struct.edge_rec * %122 , %struct.edge_rec * * %89 , align 4
%123 = xor i32 %91 , 32 ; <i32> [#uses=1]
%124 = inttoptr i32 %123 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%125 = getelementptr %struct.edge_rec * %124 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%126 = load %struct.edge_rec * * %125 , align 4 ; <%struct.edge_rec*> [#uses=1]
%127 = ptrtoint %struct.edge_rec * %126 to i32 ; <i32> [#uses=2]
%128 = add i32 %127 , 16 ; <i32> [#uses=1]
%129 = and i32 %128 , 63 ; <i32> [#uses=1]
%130 = and i32 %127 , -64 ; <i32> [#uses=1]
%131 = or i32 %129 , %130 ; <i32> [#uses=1]
%132 = inttoptr i32 %131 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%133 = getelementptr %struct.edge_rec * %ldi_addr.0.i , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%134 = load %struct.edge_rec * * %133 , align 4 ; <%struct.edge_rec*> [#uses=1]
%135 = ptrtoint %struct.edge_rec * %134 to i32 ; <i32> [#uses=2]
%136 = add i32 %135 , 16 ; <i32> [#uses=1]
%137 = and i32 %136 , 63 ; <i32> [#uses=1]
%138 = and i32 %135 , -64 ; <i32> [#uses=1]
%139 = or i32 %137 , %138 ; <i32> [#uses=1]
%140 = inttoptr i32 %139 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%141 = getelementptr %struct.edge_rec * %140 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%142 = load %struct.edge_rec * * %141 , align 4 ; <%struct.edge_rec*> [#uses=1]
%143 = getelementptr %struct.edge_rec * %132 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%144 = load %struct.edge_rec * * %143 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %142 , %struct.edge_rec * * %143 , align 4
store %struct.edge_rec * %144 , %struct.edge_rec * * %141 , align 4
%145 = load %struct.edge_rec * * %125 , align 4 ; <%struct.edge_rec*> [#uses=1]
%146 = load %struct.edge_rec * * %133 , align 4 ; <%struct.edge_rec*> [#uses=2]
store %struct.edge_rec * %145 , %struct.edge_rec * * %133 , align 4
store %struct.edge_rec * %146 , %struct.edge_rec * * %125 , align 4
%147 = and i32 %92 , 63 ; <i32> [#uses=1]
%148 = and i32 %91 , -64 ; <i32> [#uses=1]
%149 = or i32 %147 , %148 ; <i32> [#uses=1]
%150 = inttoptr i32 %149 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%151 = getelementptr %struct.edge_rec * %150 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%152 = load %struct.edge_rec * * %151 , align 4 ; <%struct.edge_rec*> [#uses=1]
%153 = ptrtoint %struct.edge_rec * %152 to i32 ; <i32> [#uses=2]
%154 = add i32 %153 , 16 ; <i32> [#uses=1]
%155 = and i32 %154 , 63 ; <i32> [#uses=1]
%156 = and i32 %153 , -64 ; <i32> [#uses=1]
%157 = or i32 %155 , %156 ; <i32> [#uses=1]
%158 = inttoptr i32 %157 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%159 = load %struct.VERTEX * * %90 , align 4 ; <%struct.VERTEX*> [#uses=1]
%160 = getelementptr %struct.edge_rec * %124 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%161 = load %struct.VERTEX * * %160 , align 4 ; <%struct.VERTEX*> [#uses=1]
%162 = getelementptr %struct.edge_rec * %16 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%163 = load %struct.VERTEX * * %162 , align 4 ; <%struct.VERTEX*> [#uses=1]
%164 = icmp eq %struct.VERTEX * %163 , %159 ; <i1> [#uses=1]
%rdo_addr.0.i = select i1 %164 , %struct.edge_rec * %88 , %struct.edge_rec * %16 ; <%struct.edge_rec*> [#uses=3]
%165 = getelementptr %struct.edge_rec * %10 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%166 = load %struct.VERTEX * * %165 , align 4 ; <%struct.VERTEX*> [#uses=1]
%167 = icmp eq %struct.VERTEX * %166 , %161 ; <i1> [#uses=1]
%ldo_addr.0.ph.i = select i1 %167 , %struct.edge_rec * %124 , %struct.edge_rec * %10 ; <%struct.edge_rec*> [#uses=3]
br label %bb9.i
bb9.i: ; preds = %bb25.i, %bb24.i, %bb5.i
%lcand.2.i = phi %struct.edge_rec * [ %146 , %bb5.i ] , [ %lcand.1.i , %bb24.i ] , [ %739 , %bb25.i ] ; <%struct.edge_rec*> [#uses=5]
%rcand.2.i = phi %struct.edge_rec * [ %158 , %bb5.i ] , [ %666 , %bb24.i ] , [ %rcand.1.i , %bb25.i ] ; <%struct.edge_rec*> [#uses=5]
%basel.0.i = phi %struct.edge_rec * [ %88 , %bb5.i ] , [ %595 , %bb24.i ] , [ %716 , %bb25.i ] ; <%struct.edge_rec*> [#uses=2]
%168 = getelementptr %struct.edge_rec * %lcand.2.i , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%169 = load %struct.edge_rec * * %168 , align 4 ; <%struct.edge_rec*> [#uses=3]
%170 = getelementptr %struct.edge_rec * %basel.0.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=3]
%171 = load %struct.VERTEX * * %170 , align 4 ; <%struct.VERTEX*> [#uses=4]
%172 = ptrtoint %struct.edge_rec * %basel.0.i to i32 ; <i32> [#uses=3]
%173 = xor i32 %172 , 32 ; <i32> [#uses=1]
%174 = inttoptr i32 %173 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%175 = getelementptr %struct.edge_rec * %174 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=3]
%176 = load %struct.VERTEX * * %175 , align 4 ; <%struct.VERTEX*> [#uses=3]
%177 = ptrtoint %struct.edge_rec * %169 to i32 ; <i32> [#uses=1]
%178 = xor i32 %177 , 32 ; <i32> [#uses=1]
%179 = inttoptr i32 %178 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%180 = getelementptr %struct.edge_rec * %179 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%181 = load %struct.VERTEX * * %180 , align 4 ; <%struct.VERTEX*> [#uses=2]
%182 = getelementptr %struct.VERTEX * %171 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=2]
%183 = load double * %182 , align 4 ; <double> [#uses=2]
%184 = getelementptr %struct.VERTEX * %171 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=2]
%185 = load double * %184 , align 4 ; <double> [#uses=2]
%186 = getelementptr %struct.VERTEX * %181 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%187 = load double * %186 , align 4 ; <double> [#uses=1]
%188 = getelementptr %struct.VERTEX * %181 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%189 = load double * %188 , align 4 ; <double> [#uses=1]
%190 = getelementptr %struct.VERTEX * %176 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%191 = load double * %190 , align 4 ; <double> [#uses=2]
%192 = getelementptr %struct.VERTEX * %176 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%193 = load double * %192 , align 4 ; <double> [#uses=2]
%194 = fsub double %183 , %191 ; <double> [#uses=1]
%195 = fsub double %189 , %193 ; <double> [#uses=1]
%196 = fmul double %194 , %195 ; <double> [#uses=1]
%197 = fsub double %187 , %191 ; <double> [#uses=1]
%198 = fsub double %185 , %193 ; <double> [#uses=1]
%199 = fmul double %197 , %198 ; <double> [#uses=1]
%200 = fsub double %196 , %199 ; <double> [#uses=1]
%201 = fcmp ogt double %200 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %201 , label %bb10.i , label %bb13.i
bb10.i: ; preds = %bb9.i
%202 = getelementptr %struct.VERTEX * %171 , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%avail_edge.promoted25 = load %struct.edge_rec * * @avail_edge ; <%struct.edge_rec*> [#uses=1]
br label %bb12.i
bb11.i: ; preds = %bb12.i
%203 = ptrtoint %struct.edge_rec * %lcand.0.i to i32 ; <i32> [#uses=3]
%204 = add i32 %203 , 16 ; <i32> [#uses=1]
%205 = and i32 %204 , 63 ; <i32> [#uses=1]
%206 = and i32 %203 , -64 ; <i32> [#uses=3]
%207 = or i32 %205 , %206 ; <i32> [#uses=1]
%208 = inttoptr i32 %207 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%209 = getelementptr %struct.edge_rec * %208 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%210 = load %struct.edge_rec * * %209 , align 4 ; <%struct.edge_rec*> [#uses=1]
%211 = ptrtoint %struct.edge_rec * %210 to i32 ; <i32> [#uses=2]
%212 = add i32 %211 , 16 ; <i32> [#uses=1]
%213 = and i32 %212 , 63 ; <i32> [#uses=1]
%214 = and i32 %211 , -64 ; <i32> [#uses=1]
%215 = or i32 %213 , %214 ; <i32> [#uses=1]
%216 = inttoptr i32 %215 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%217 = getelementptr %struct.edge_rec * %lcand.0.i , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%218 = load %struct.edge_rec * * %217 , align 4 ; <%struct.edge_rec*> [#uses=1]
%219 = ptrtoint %struct.edge_rec * %218 to i32 ; <i32> [#uses=2]
%220 = add i32 %219 , 16 ; <i32> [#uses=1]
%221 = and i32 %220 , 63 ; <i32> [#uses=1]
%222 = and i32 %219 , -64 ; <i32> [#uses=1]
%223 = or i32 %221 , %222 ; <i32> [#uses=1]
%224 = inttoptr i32 %223 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%225 = getelementptr %struct.edge_rec * %216 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%226 = load %struct.edge_rec * * %225 , align 4 ; <%struct.edge_rec*> [#uses=1]
%227 = ptrtoint %struct.edge_rec * %226 to i32 ; <i32> [#uses=2]
%228 = add i32 %227 , 16 ; <i32> [#uses=1]
%229 = and i32 %228 , 63 ; <i32> [#uses=1]
%230 = and i32 %227 , -64 ; <i32> [#uses=1]
%231 = or i32 %229 , %230 ; <i32> [#uses=1]
%232 = inttoptr i32 %231 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%233 = getelementptr %struct.edge_rec * %232 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%234 = load %struct.edge_rec * * %233 , align 4 ; <%struct.edge_rec*> [#uses=1]
%235 = getelementptr %struct.edge_rec * %224 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%236 = load %struct.edge_rec * * %235 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %234 , %struct.edge_rec * * %235 , align 4
store %struct.edge_rec * %236 , %struct.edge_rec * * %233 , align 4
%237 = load %struct.edge_rec * * %217 , align 4 ; <%struct.edge_rec*> [#uses=1]
%238 = load %struct.edge_rec * * %225 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %237 , %struct.edge_rec * * %225 , align 4
store %struct.edge_rec * %238 , %struct.edge_rec * * %217 , align 4
%239 = xor i32 %203 , 32 ; <i32> [#uses=2]
%240 = add i32 %239 , 16 ; <i32> [#uses=1]
%241 = and i32 %240 , 63 ; <i32> [#uses=1]
%242 = or i32 %241 , %206 ; <i32> [#uses=1]
%243 = inttoptr i32 %242 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%244 = getelementptr %struct.edge_rec * %243 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%245 = load %struct.edge_rec * * %244 , align 4 ; <%struct.edge_rec*> [#uses=1]
%246 = ptrtoint %struct.edge_rec * %245 to i32 ; <i32> [#uses=2]
%247 = add i32 %246 , 16 ; <i32> [#uses=1]
%248 = and i32 %247 , 63 ; <i32> [#uses=1]
%249 = and i32 %246 , -64 ; <i32> [#uses=1]
%250 = or i32 %248 , %249 ; <i32> [#uses=1]
%251 = inttoptr i32 %250 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%252 = inttoptr i32 %239 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%253 = getelementptr %struct.edge_rec * %252 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%254 = load %struct.edge_rec * * %253 , align 4 ; <%struct.edge_rec*> [#uses=1]
%255 = ptrtoint %struct.edge_rec * %254 to i32 ; <i32> [#uses=2]
%256 = add i32 %255 , 16 ; <i32> [#uses=1]
%257 = and i32 %256 , 63 ; <i32> [#uses=1]
%258 = and i32 %255 , -64 ; <i32> [#uses=1]
%259 = or i32 %257 , %258 ; <i32> [#uses=1]
%260 = inttoptr i32 %259 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%261 = getelementptr %struct.edge_rec * %251 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%262 = load %struct.edge_rec * * %261 , align 4 ; <%struct.edge_rec*> [#uses=1]
%263 = ptrtoint %struct.edge_rec * %262 to i32 ; <i32> [#uses=2]
%264 = add i32 %263 , 16 ; <i32> [#uses=1]
%265 = and i32 %264 , 63 ; <i32> [#uses=1]
%266 = and i32 %263 , -64 ; <i32> [#uses=1]
%267 = or i32 %265 , %266 ; <i32> [#uses=1]
%268 = inttoptr i32 %267 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%269 = getelementptr %struct.edge_rec * %268 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%270 = load %struct.edge_rec * * %269 , align 4 ; <%struct.edge_rec*> [#uses=1]
%271 = getelementptr %struct.edge_rec * %260 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%272 = load %struct.edge_rec * * %271 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %270 , %struct.edge_rec * * %271 , align 4
store %struct.edge_rec * %272 , %struct.edge_rec * * %269 , align 4
%273 = load %struct.edge_rec * * %253 , align 4 ; <%struct.edge_rec*> [#uses=1]
%274 = load %struct.edge_rec * * %261 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %273 , %struct.edge_rec * * %261 , align 4
store %struct.edge_rec * %274 , %struct.edge_rec * * %253 , align 4
%275 = inttoptr i32 %206 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%276 = getelementptr %struct.edge_rec * %275 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %avail_edge.tmp.026 , %struct.edge_rec * * %276 , align 4
%277 = getelementptr %struct.edge_rec * %t.0.i , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%278 = load %struct.edge_rec * * %277 , align 4 ; <%struct.edge_rec*> [#uses=2]
%.pre.i = load double * %182 , align 4 ; <double> [#uses=1]
%.pre22.i = load double * %184 , align 4 ; <double> [#uses=1]
br label %bb12.i
bb12.i: ; preds = %bb11.i, %bb10.i
%avail_edge.tmp.026 = phi %struct.edge_rec * [ %avail_edge.promoted25 , %bb10.i ] , [ %275 , %bb11.i ] ; <%struct.edge_rec*> [#uses=2]
%279 = phi double [ %.pre22.i , %bb11.i ] , [ %185 , %bb10.i ] ; <double> [#uses=3]
%280 = phi double [ %.pre.i , %bb11.i ] , [ %183 , %bb10.i ] ; <double> [#uses=3]
%lcand.0.i = phi %struct.edge_rec * [ %lcand.2.i , %bb10.i ] , [ %t.0.i , %bb11.i ] ; <%struct.edge_rec*> [#uses=3]
%t.0.i = phi %struct.edge_rec * [ %169 , %bb10.i ] , [ %278 , %bb11.i ] ; <%struct.edge_rec*> [#uses=4]
%.pn5.in.in.in.i = phi %struct.edge_rec * [ %lcand.2.i , %bb10.i ] , [ %t.0.i , %bb11.i ] ; <%struct.edge_rec*> [#uses=1]
%.pn4.in.in.in.i = phi %struct.edge_rec * [ %169 , %bb10.i ] , [ %278 , %bb11.i ] ; <%struct.edge_rec*> [#uses=1]
%lcand.2.pn.i = phi %struct.edge_rec * [ %lcand.2.i , %bb10.i ] , [ %t.0.i , %bb11.i ] ; <%struct.edge_rec*> [#uses=1]
%.pn5.in.in.i = ptrtoint %struct.edge_rec * %.pn5.in.in.in.i to i32 ; <i32> [#uses=1]
%.pn4.in.in.i = ptrtoint %struct.edge_rec * %.pn4.in.in.in.i to i32 ; <i32> [#uses=1]
%.pn5.in.i = xor i32 %.pn5.in.in.i , 32 ; <i32> [#uses=1]
%.pn4.in.i = xor i32 %.pn4.in.in.i , 32 ; <i32> [#uses=1]
%.pn5.i = inttoptr i32 %.pn5.in.i to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%.pn4.i = inttoptr i32 %.pn4.in.i to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%v1.0.in.i = getelementptr %struct.edge_rec * %.pn5.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%v2.0.in.i = getelementptr %struct.edge_rec * %.pn4.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%v3.0.in.i = getelementptr %struct.edge_rec * %lcand.2.pn.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%v1.0.i = load %struct.VERTEX * * %v1.0.in.i ; <%struct.VERTEX*> [#uses=3]
%v2.0.i = load %struct.VERTEX * * %v2.0.in.i ; <%struct.VERTEX*> [#uses=3]
%v3.0.i = load %struct.VERTEX * * %v3.0.in.i ; <%struct.VERTEX*> [#uses=3]
%281 = load double * %202 , align 4 ; <double> [#uses=3]
%282 = getelementptr %struct.VERTEX * %v1.0.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%283 = load double * %282 , align 4 ; <double> [#uses=1]
%284 = fsub double %283 , %280 ; <double> [#uses=2]
%285 = getelementptr %struct.VERTEX * %v1.0.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%286 = load double * %285 , align 4 ; <double> [#uses=1]
%287 = fsub double %286 , %279 ; <double> [#uses=2]
%288 = getelementptr %struct.VERTEX * %v1.0.i , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%289 = load double * %288 , align 4 ; <double> [#uses=1]
%290 = getelementptr %struct.VERTEX * %v2.0.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%291 = load double * %290 , align 4 ; <double> [#uses=1]
%292 = fsub double %291 , %280 ; <double> [#uses=2]
%293 = getelementptr %struct.VERTEX * %v2.0.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%294 = load double * %293 , align 4 ; <double> [#uses=1]
%295 = fsub double %294 , %279 ; <double> [#uses=2]
%296 = getelementptr %struct.VERTEX * %v2.0.i , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%297 = load double * %296 , align 4 ; <double> [#uses=1]
%298 = getelementptr %struct.VERTEX * %v3.0.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%299 = load double * %298 , align 4 ; <double> [#uses=1]
%300 = fsub double %299 , %280 ; <double> [#uses=2]
%301 = getelementptr %struct.VERTEX * %v3.0.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%302 = load double * %301 , align 4 ; <double> [#uses=1]
%303 = fsub double %302 , %279 ; <double> [#uses=2]
%304 = getelementptr %struct.VERTEX * %v3.0.i , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%305 = load double * %304 , align 4 ; <double> [#uses=1]
%306 = fsub double %289 , %281 ; <double> [#uses=1]
%307 = fmul double %292 , %303 ; <double> [#uses=1]
%308 = fmul double %295 , %300 ; <double> [#uses=1]
%309 = fsub double %307 , %308 ; <double> [#uses=1]
%310 = fmul double %306 , %309 ; <double> [#uses=1]
%311 = fsub double %297 , %281 ; <double> [#uses=1]
%312 = fmul double %300 , %287 ; <double> [#uses=1]
%313 = fmul double %303 , %284 ; <double> [#uses=1]
%314 = fsub double %312 , %313 ; <double> [#uses=1]
%315 = fmul double %311 , %314 ; <double> [#uses=1]
%316 = fadd double %315 , %310 ; <double> [#uses=1]
%317 = fsub double %305 , %281 ; <double> [#uses=1]
%318 = fmul double %284 , %295 ; <double> [#uses=1]
%319 = fmul double %287 , %292 ; <double> [#uses=1]
%320 = fsub double %318 , %319 ; <double> [#uses=1]
%321 = fmul double %317 , %320 ; <double> [#uses=1]
%322 = fadd double %321 , %316 ; <double> [#uses=1]
%323 = fcmp ogt double %322 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %323 , label %bb11.i , label %bb13.loopexit.i
bb13.loopexit.i: ; preds = %bb12.i
store %struct.edge_rec * %avail_edge.tmp.026 , %struct.edge_rec * * @avail_edge
%.pre23.i = load %struct.VERTEX * * %170 , align 4 ; <%struct.VERTEX*> [#uses=1]
%.pre24.i = load %struct.VERTEX * * %175 , align 4 ; <%struct.VERTEX*> [#uses=1]
br label %bb13.i
bb13.i: ; preds = %bb13.loopexit.i, %bb9.i
%324 = phi %struct.VERTEX * [ %.pre24.i , %bb13.loopexit.i ] , [ %176 , %bb9.i ] ; <%struct.VERTEX*> [#uses=4]
%325 = phi %struct.VERTEX * [ %.pre23.i , %bb13.loopexit.i ] , [ %171 , %bb9.i ] ; <%struct.VERTEX*> [#uses=3]
%lcand.1.i = phi %struct.edge_rec * [ %lcand.0.i , %bb13.loopexit.i ] , [ %lcand.2.i , %bb9.i ] ; <%struct.edge_rec*> [#uses=3]
%326 = ptrtoint %struct.edge_rec * %rcand.2.i to i32 ; <i32> [#uses=2]
%327 = add i32 %326 , 16 ; <i32> [#uses=1]
%328 = and i32 %327 , 63 ; <i32> [#uses=1]
%329 = and i32 %326 , -64 ; <i32> [#uses=1]
%330 = or i32 %328 , %329 ; <i32> [#uses=1]
%331 = inttoptr i32 %330 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%332 = getelementptr %struct.edge_rec * %331 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%333 = load %struct.edge_rec * * %332 , align 4 ; <%struct.edge_rec*> [#uses=1]
%334 = ptrtoint %struct.edge_rec * %333 to i32 ; <i32> [#uses=2]
%335 = add i32 %334 , 16 ; <i32> [#uses=1]
%336 = and i32 %335 , 63 ; <i32> [#uses=1]
%337 = and i32 %334 , -64 ; <i32> [#uses=1]
%338 = or i32 %336 , %337 ; <i32> [#uses=3]
%339 = xor i32 %338 , 32 ; <i32> [#uses=1]
%340 = inttoptr i32 %339 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%341 = getelementptr %struct.edge_rec * %340 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%342 = load %struct.VERTEX * * %341 , align 4 ; <%struct.VERTEX*> [#uses=2]
%343 = getelementptr %struct.VERTEX * %325 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%344 = load double * %343 , align 4 ; <double> [#uses=1]
%345 = getelementptr %struct.VERTEX * %325 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%346 = load double * %345 , align 4 ; <double> [#uses=1]
%347 = getelementptr %struct.VERTEX * %342 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%348 = load double * %347 , align 4 ; <double> [#uses=1]
%349 = getelementptr %struct.VERTEX * %342 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%350 = load double * %349 , align 4 ; <double> [#uses=1]
%351 = getelementptr %struct.VERTEX * %324 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=2]
%352 = load double * %351 , align 4 ; <double> [#uses=3]
%353 = getelementptr %struct.VERTEX * %324 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=2]
%354 = load double * %353 , align 4 ; <double> [#uses=3]
%355 = fsub double %344 , %352 ; <double> [#uses=1]
%356 = fsub double %350 , %354 ; <double> [#uses=1]
%357 = fmul double %355 , %356 ; <double> [#uses=1]
%358 = fsub double %348 , %352 ; <double> [#uses=1]
%359 = fsub double %346 , %354 ; <double> [#uses=1]
%360 = fmul double %358 , %359 ; <double> [#uses=1]
%361 = fsub double %357 , %360 ; <double> [#uses=1]
%362 = fcmp ogt double %361 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %362 , label %bb14.i , label %bb17.i
bb14.i: ; preds = %bb13.i
%363 = getelementptr %struct.VERTEX * %324 , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%avail_edge.promoted = load %struct.edge_rec * * @avail_edge ; <%struct.edge_rec*> [#uses=1]
br label %bb16.i
bb15.i: ; preds = %bb16.i
%364 = ptrtoint %struct.edge_rec * %rcand.0.i to i32 ; <i32> [#uses=3]
%365 = add i32 %364 , 16 ; <i32> [#uses=1]
%366 = and i32 %365 , 63 ; <i32> [#uses=1]
%367 = and i32 %364 , -64 ; <i32> [#uses=3]
%368 = or i32 %366 , %367 ; <i32> [#uses=1]
%369 = inttoptr i32 %368 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%370 = getelementptr %struct.edge_rec * %369 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%371 = load %struct.edge_rec * * %370 , align 4 ; <%struct.edge_rec*> [#uses=1]
%372 = ptrtoint %struct.edge_rec * %371 to i32 ; <i32> [#uses=2]
%373 = add i32 %372 , 16 ; <i32> [#uses=1]
%374 = and i32 %373 , 63 ; <i32> [#uses=1]
%375 = and i32 %372 , -64 ; <i32> [#uses=1]
%376 = or i32 %374 , %375 ; <i32> [#uses=1]
%377 = inttoptr i32 %376 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%378 = getelementptr %struct.edge_rec * %rcand.0.i , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%379 = load %struct.edge_rec * * %378 , align 4 ; <%struct.edge_rec*> [#uses=1]
%380 = ptrtoint %struct.edge_rec * %379 to i32 ; <i32> [#uses=2]
%381 = add i32 %380 , 16 ; <i32> [#uses=1]
%382 = and i32 %381 , 63 ; <i32> [#uses=1]
%383 = and i32 %380 , -64 ; <i32> [#uses=1]
%384 = or i32 %382 , %383 ; <i32> [#uses=1]
%385 = inttoptr i32 %384 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%386 = getelementptr %struct.edge_rec * %377 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%387 = load %struct.edge_rec * * %386 , align 4 ; <%struct.edge_rec*> [#uses=1]
%388 = ptrtoint %struct.edge_rec * %387 to i32 ; <i32> [#uses=2]
%389 = add i32 %388 , 16 ; <i32> [#uses=1]
%390 = and i32 %389 , 63 ; <i32> [#uses=1]
%391 = and i32 %388 , -64 ; <i32> [#uses=1]
%392 = or i32 %390 , %391 ; <i32> [#uses=1]
%393 = inttoptr i32 %392 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%394 = getelementptr %struct.edge_rec * %393 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%395 = load %struct.edge_rec * * %394 , align 4 ; <%struct.edge_rec*> [#uses=1]
%396 = getelementptr %struct.edge_rec * %385 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%397 = load %struct.edge_rec * * %396 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %395 , %struct.edge_rec * * %396 , align 4
store %struct.edge_rec * %397 , %struct.edge_rec * * %394 , align 4
%398 = load %struct.edge_rec * * %378 , align 4 ; <%struct.edge_rec*> [#uses=1]
%399 = load %struct.edge_rec * * %386 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %398 , %struct.edge_rec * * %386 , align 4
store %struct.edge_rec * %399 , %struct.edge_rec * * %378 , align 4
%400 = xor i32 %364 , 32 ; <i32> [#uses=2]
%401 = add i32 %400 , 16 ; <i32> [#uses=1]
%402 = and i32 %401 , 63 ; <i32> [#uses=1]
%403 = or i32 %402 , %367 ; <i32> [#uses=1]
%404 = inttoptr i32 %403 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%405 = getelementptr %struct.edge_rec * %404 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%406 = load %struct.edge_rec * * %405 , align 4 ; <%struct.edge_rec*> [#uses=1]
%407 = ptrtoint %struct.edge_rec * %406 to i32 ; <i32> [#uses=2]
%408 = add i32 %407 , 16 ; <i32> [#uses=1]
%409 = and i32 %408 , 63 ; <i32> [#uses=1]
%410 = and i32 %407 , -64 ; <i32> [#uses=1]
%411 = or i32 %409 , %410 ; <i32> [#uses=1]
%412 = inttoptr i32 %411 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%413 = inttoptr i32 %400 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%414 = getelementptr %struct.edge_rec * %413 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%415 = load %struct.edge_rec * * %414 , align 4 ; <%struct.edge_rec*> [#uses=1]
%416 = ptrtoint %struct.edge_rec * %415 to i32 ; <i32> [#uses=2]
%417 = add i32 %416 , 16 ; <i32> [#uses=1]
%418 = and i32 %417 , 63 ; <i32> [#uses=1]
%419 = and i32 %416 , -64 ; <i32> [#uses=1]
%420 = or i32 %418 , %419 ; <i32> [#uses=1]
%421 = inttoptr i32 %420 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%422 = getelementptr %struct.edge_rec * %412 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%423 = load %struct.edge_rec * * %422 , align 4 ; <%struct.edge_rec*> [#uses=1]
%424 = ptrtoint %struct.edge_rec * %423 to i32 ; <i32> [#uses=2]
%425 = add i32 %424 , 16 ; <i32> [#uses=1]
%426 = and i32 %425 , 63 ; <i32> [#uses=1]
%427 = and i32 %424 , -64 ; <i32> [#uses=1]
%428 = or i32 %426 , %427 ; <i32> [#uses=1]
%429 = inttoptr i32 %428 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%430 = getelementptr %struct.edge_rec * %429 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%431 = load %struct.edge_rec * * %430 , align 4 ; <%struct.edge_rec*> [#uses=1]
%432 = getelementptr %struct.edge_rec * %421 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%433 = load %struct.edge_rec * * %432 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %431 , %struct.edge_rec * * %432 , align 4
store %struct.edge_rec * %433 , %struct.edge_rec * * %430 , align 4
%434 = load %struct.edge_rec * * %414 , align 4 ; <%struct.edge_rec*> [#uses=1]
%435 = load %struct.edge_rec * * %422 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %434 , %struct.edge_rec * * %422 , align 4
store %struct.edge_rec * %435 , %struct.edge_rec * * %414 , align 4
%436 = inttoptr i32 %367 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%437 = getelementptr %struct.edge_rec * %436 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %avail_edge.tmp.0 , %struct.edge_rec * * %437 , align 4
%438 = add i32 %t.1.in.i , 16 ; <i32> [#uses=1]
%439 = and i32 %438 , 63 ; <i32> [#uses=1]
%440 = and i32 %t.1.in.i , -64 ; <i32> [#uses=1]
%441 = or i32 %439 , %440 ; <i32> [#uses=1]
%442 = inttoptr i32 %441 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%443 = getelementptr %struct.edge_rec * %442 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%444 = load %struct.edge_rec * * %443 , align 4 ; <%struct.edge_rec*> [#uses=1]
%445 = ptrtoint %struct.edge_rec * %444 to i32 ; <i32> [#uses=2]
%446 = add i32 %445 , 16 ; <i32> [#uses=1]
%447 = and i32 %446 , 63 ; <i32> [#uses=1]
%448 = and i32 %445 , -64 ; <i32> [#uses=1]
%449 = or i32 %447 , %448 ; <i32> [#uses=2]
%.pre25.i = load double * %351 , align 4 ; <double> [#uses=1]
%.pre26.i = load double * %353 , align 4 ; <double> [#uses=1]
br label %bb16.i
bb16.i: ; preds = %bb15.i, %bb14.i
%avail_edge.tmp.0 = phi %struct.edge_rec * [ %avail_edge.promoted , %bb14.i ] , [ %436 , %bb15.i ] ; <%struct.edge_rec*> [#uses=2]
%450 = phi double [ %.pre26.i , %bb15.i ] , [ %354 , %bb14.i ] ; <double> [#uses=3]
%451 = phi double [ %.pre25.i , %bb15.i ] , [ %352 , %bb14.i ] ; <double> [#uses=3]
%rcand.0.i = phi %struct.edge_rec * [ %rcand.2.i , %bb14.i ] , [ %t.1.i , %bb15.i ] ; <%struct.edge_rec*> [#uses=3]
%t.1.in.i = phi i32 [ %338 , %bb14.i ] , [ %449 , %bb15.i ] ; <i32> [#uses=3]
%.pn3.in.in.i = phi i32 [ %338 , %bb14.i ] , [ %449 , %bb15.i ] ; <i32> [#uses=1]
%.pn.in.in.in.i = phi %struct.edge_rec * [ %rcand.2.i , %bb14.i ] , [ %t.1.i , %bb15.i ] ; <%struct.edge_rec*> [#uses=1]
%rcand.2.pn.i = phi %struct.edge_rec * [ %rcand.2.i , %bb14.i ] , [ %t.1.i , %bb15.i ] ; <%struct.edge_rec*> [#uses=1]
%t.1.i = inttoptr i32 %t.1.in.i to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%.pn.in.in.i = ptrtoint %struct.edge_rec * %.pn.in.in.in.i to i32 ; <i32> [#uses=1]
%.pn3.in.i = xor i32 %.pn3.in.in.i , 32 ; <i32> [#uses=1]
%.pn.in.i = xor i32 %.pn.in.in.i , 32 ; <i32> [#uses=1]
%.pn3.i = inttoptr i32 %.pn3.in.i to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%.pn.i = inttoptr i32 %.pn.in.i to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%v1.1.in.i = getelementptr %struct.edge_rec * %.pn3.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%v2.1.in.i = getelementptr %struct.edge_rec * %.pn.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%v3.1.in.i = getelementptr %struct.edge_rec * %rcand.2.pn.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%v1.1.i = load %struct.VERTEX * * %v1.1.in.i ; <%struct.VERTEX*> [#uses=3]
%v2.1.i = load %struct.VERTEX * * %v2.1.in.i ; <%struct.VERTEX*> [#uses=3]
%v3.1.i = load %struct.VERTEX * * %v3.1.in.i ; <%struct.VERTEX*> [#uses=3]
%452 = load double * %363 , align 4 ; <double> [#uses=3]
%453 = getelementptr %struct.VERTEX * %v1.1.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%454 = load double * %453 , align 4 ; <double> [#uses=1]
%455 = fsub double %454 , %451 ; <double> [#uses=2]
%456 = getelementptr %struct.VERTEX * %v1.1.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%457 = load double * %456 , align 4 ; <double> [#uses=1]
%458 = fsub double %457 , %450 ; <double> [#uses=2]
%459 = getelementptr %struct.VERTEX * %v1.1.i , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%460 = load double * %459 , align 4 ; <double> [#uses=1]
%461 = getelementptr %struct.VERTEX * %v2.1.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%462 = load double * %461 , align 4 ; <double> [#uses=1]
%463 = fsub double %462 , %451 ; <double> [#uses=2]
%464 = getelementptr %struct.VERTEX * %v2.1.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%465 = load double * %464 , align 4 ; <double> [#uses=1]
%466 = fsub double %465 , %450 ; <double> [#uses=2]
%467 = getelementptr %struct.VERTEX * %v2.1.i , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%468 = load double * %467 , align 4 ; <double> [#uses=1]
%469 = getelementptr %struct.VERTEX * %v3.1.i , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%470 = load double * %469 , align 4 ; <double> [#uses=1]
%471 = fsub double %470 , %451 ; <double> [#uses=2]
%472 = getelementptr %struct.VERTEX * %v3.1.i , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%473 = load double * %472 , align 4 ; <double> [#uses=1]
%474 = fsub double %473 , %450 ; <double> [#uses=2]
%475 = getelementptr %struct.VERTEX * %v3.1.i , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%476 = load double * %475 , align 4 ; <double> [#uses=1]
%477 = fsub double %460 , %452 ; <double> [#uses=1]
%478 = fmul double %463 , %474 ; <double> [#uses=1]
%479 = fmul double %466 , %471 ; <double> [#uses=1]
%480 = fsub double %478 , %479 ; <double> [#uses=1]
%481 = fmul double %477 , %480 ; <double> [#uses=1]
%482 = fsub double %468 , %452 ; <double> [#uses=1]
%483 = fmul double %471 , %458 ; <double> [#uses=1]
%484 = fmul double %474 , %455 ; <double> [#uses=1]
%485 = fsub double %483 , %484 ; <double> [#uses=1]
%486 = fmul double %482 , %485 ; <double> [#uses=1]
%487 = fadd double %486 , %481 ; <double> [#uses=1]
%488 = fsub double %476 , %452 ; <double> [#uses=1]
%489 = fmul double %455 , %466 ; <double> [#uses=1]
%490 = fmul double %458 , %463 ; <double> [#uses=1]
%491 = fsub double %489 , %490 ; <double> [#uses=1]
%492 = fmul double %488 , %491 ; <double> [#uses=1]
%493 = fadd double %492 , %487 ; <double> [#uses=1]
%494 = fcmp ogt double %493 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %494 , label %bb15.i , label %bb17.loopexit.i
bb17.loopexit.i: ; preds = %bb16.i
store %struct.edge_rec * %avail_edge.tmp.0 , %struct.edge_rec * * @avail_edge
%.pre27.i = load %struct.VERTEX * * %170 , align 4 ; <%struct.VERTEX*> [#uses=1]
%.pre28.i = load %struct.VERTEX * * %175 , align 4 ; <%struct.VERTEX*> [#uses=1]
br label %bb17.i
bb17.i: ; preds = %bb17.loopexit.i, %bb13.i
%495 = phi %struct.VERTEX * [ %.pre28.i , %bb17.loopexit.i ] , [ %324 , %bb13.i ] ; <%struct.VERTEX*> [#uses=3]
%496 = phi %struct.VERTEX * [ %.pre27.i , %bb17.loopexit.i ] , [ %325 , %bb13.i ] ; <%struct.VERTEX*> [#uses=3]
%rcand.1.i = phi %struct.edge_rec * [ %rcand.0.i , %bb17.loopexit.i ] , [ %rcand.2.i , %bb13.i ] ; <%struct.edge_rec*> [#uses=3]
%497 = ptrtoint %struct.edge_rec * %lcand.1.i to i32 ; <i32> [#uses=1]
%498 = xor i32 %497 , 32 ; <i32> [#uses=1]
%499 = inttoptr i32 %498 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%500 = getelementptr %struct.edge_rec * %499 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%501 = load %struct.VERTEX * * %500 , align 4 ; <%struct.VERTEX*> [#uses=4]
%502 = getelementptr %struct.VERTEX * %496 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%503 = load double * %502 , align 4 ; <double> [#uses=1]
%504 = getelementptr %struct.VERTEX * %496 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%505 = load double * %504 , align 4 ; <double> [#uses=1]
%506 = getelementptr %struct.VERTEX * %501 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%507 = load double * %506 , align 4 ; <double> [#uses=2]
%508 = getelementptr %struct.VERTEX * %501 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%509 = load double * %508 , align 4 ; <double> [#uses=2]
%510 = getelementptr %struct.VERTEX * %495 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%511 = load double * %510 , align 4 ; <double> [#uses=3]
%512 = getelementptr %struct.VERTEX * %495 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%513 = load double * %512 , align 4 ; <double> [#uses=3]
%514 = fsub double %503 , %511 ; <double> [#uses=2]
%515 = fsub double %509 , %513 ; <double> [#uses=1]
%516 = fmul double %514 , %515 ; <double> [#uses=1]
%517 = fsub double %507 , %511 ; <double> [#uses=1]
%518 = fsub double %505 , %513 ; <double> [#uses=2]
%519 = fmul double %517 , %518 ; <double> [#uses=1]
%520 = fsub double %516 , %519 ; <double> [#uses=1]
%521 = fcmp ogt double %520 , 0.000000e+00 ; <i1> [#uses=2]
%522 = ptrtoint %struct.edge_rec * %rcand.1.i to i32 ; <i32> [#uses=3]
%523 = xor i32 %522 , 32 ; <i32> [#uses=1]
%524 = inttoptr i32 %523 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%525 = getelementptr %struct.edge_rec * %524 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%526 = load %struct.VERTEX * * %525 , align 4 ; <%struct.VERTEX*> [#uses=4]
%527 = getelementptr %struct.VERTEX * %526 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%528 = load double * %527 , align 4 ; <double> [#uses=4]
%529 = getelementptr %struct.VERTEX * %526 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%530 = load double * %529 , align 4 ; <double> [#uses=4]
%531 = fsub double %530 , %513 ; <double> [#uses=1]
%532 = fmul double %514 , %531 ; <double> [#uses=1]
%533 = fsub double %528 , %511 ; <double> [#uses=1]
%534 = fmul double %533 , %518 ; <double> [#uses=1]
%535 = fsub double %532 , %534 ; <double> [#uses=1]
%536 = fcmp ogt double %535 , 0.000000e+00 ; <i1> [#uses=2]
%537 = or i1 %536 , %521 ; <i1> [#uses=1]
br i1 %537 , label %bb21.i , label %do_merge.exit
bb21.i: ; preds = %bb17.i
%538 = getelementptr %struct.edge_rec * %lcand.1.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%539 = load %struct.VERTEX * * %538 , align 4 ; <%struct.VERTEX*> [#uses=3]
%540 = getelementptr %struct.edge_rec * %rcand.1.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%541 = load %struct.VERTEX * * %540 , align 4 ; <%struct.VERTEX*> [#uses=3]
br i1 %521 , label %bb22.i , label %bb24.i
bb22.i: ; preds = %bb21.i
br i1 %536 , label %bb23.i , label %bb25.i
bb23.i: ; preds = %bb22.i
%542 = getelementptr %struct.VERTEX * %526 , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%543 = load double * %542 , align 4 ; <double> [#uses=3]
%544 = fsub double %507 , %528 ; <double> [#uses=2]
%545 = fsub double %509 , %530 ; <double> [#uses=2]
%546 = getelementptr %struct.VERTEX * %501 , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%547 = load double * %546 , align 4 ; <double> [#uses=1]
%548 = getelementptr %struct.VERTEX * %539 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%549 = load double * %548 , align 4 ; <double> [#uses=1]
%550 = fsub double %549 , %528 ; <double> [#uses=2]
%551 = getelementptr %struct.VERTEX * %539 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%552 = load double * %551 , align 4 ; <double> [#uses=1]
%553 = fsub double %552 , %530 ; <double> [#uses=2]
%554 = getelementptr %struct.VERTEX * %539 , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%555 = load double * %554 , align 4 ; <double> [#uses=1]
%556 = getelementptr %struct.VERTEX * %541 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%557 = load double * %556 , align 4 ; <double> [#uses=1]
%558 = fsub double %557 , %528 ; <double> [#uses=2]
%559 = getelementptr %struct.VERTEX * %541 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%560 = load double * %559 , align 4 ; <double> [#uses=1]
%561 = fsub double %560 , %530 ; <double> [#uses=2]
%562 = getelementptr %struct.VERTEX * %541 , i32 0 , i32 0 , i32 2 ; <double*> [#uses=1]
%563 = load double * %562 , align 4 ; <double> [#uses=1]
%564 = fsub double %547 , %543 ; <double> [#uses=1]
%565 = fmul double %550 , %561 ; <double> [#uses=1]
%566 = fmul double %553 , %558 ; <double> [#uses=1]
%567 = fsub double %565 , %566 ; <double> [#uses=1]
%568 = fmul double %564 , %567 ; <double> [#uses=1]
%569 = fsub double %555 , %543 ; <double> [#uses=1]
%570 = fmul double %558 , %545 ; <double> [#uses=1]
%571 = fmul double %561 , %544 ; <double> [#uses=1]
%572 = fsub double %570 , %571 ; <double> [#uses=1]
%573 = fmul double %569 , %572 ; <double> [#uses=1]
%574 = fadd double %573 , %568 ; <double> [#uses=1]
%575 = fsub double %563 , %543 ; <double> [#uses=1]
%576 = fmul double %544 , %553 ; <double> [#uses=1]
%577 = fmul double %545 , %550 ; <double> [#uses=1]
%578 = fsub double %576 , %577 ; <double> [#uses=1]
%579 = fmul double %575 , %578 ; <double> [#uses=1]
%580 = fadd double %579 , %574 ; <double> [#uses=1]
%581 = fcmp ogt double %580 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %581 , label %bb24.i , label %bb25.i
bb24.i: ; preds = %bb23.i, %bb21.i
%582 = add i32 %522 , 48 ; <i32> [#uses=1]
%583 = and i32 %582 , 63 ; <i32> [#uses=1]
%584 = and i32 %522 , -64 ; <i32> [#uses=1]
%585 = or i32 %583 , %584 ; <i32> [#uses=1]
%586 = inttoptr i32 %585 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%587 = getelementptr %struct.edge_rec * %586 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%588 = load %struct.edge_rec * * %587 , align 4 ; <%struct.edge_rec*> [#uses=1]
%589 = ptrtoint %struct.edge_rec * %588 to i32 ; <i32> [#uses=2]
%590 = add i32 %589 , 16 ; <i32> [#uses=1]
%591 = and i32 %590 , 63 ; <i32> [#uses=1]
%592 = and i32 %589 , -64 ; <i32> [#uses=1]
%593 = or i32 %591 , %592 ; <i32> [#uses=1]
%594 = inttoptr i32 %593 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%595 = call arm_apcscc %struct.edge_rec * @alloc_edge ( ) nounwind ; <%struct.edge_rec*> [#uses=5]
%596 = getelementptr %struct.edge_rec * %595 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=4]
store %struct.edge_rec * %595 , %struct.edge_rec * * %596 , align 4
%597 = getelementptr %struct.edge_rec * %595 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %526 , %struct.VERTEX * * %597 , align 4
%598 = ptrtoint %struct.edge_rec * %595 to i32 ; <i32> [#uses=5]
%599 = add i32 %598 , 16 ; <i32> [#uses=1]
%600 = inttoptr i32 %599 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%601 = add i32 %598 , 48 ; <i32> [#uses=1]
%602 = inttoptr i32 %601 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%603 = getelementptr %struct.edge_rec * %600 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %602 , %struct.edge_rec * * %603 , align 4
%604 = add i32 %598 , 32 ; <i32> [#uses=1]
%605 = inttoptr i32 %604 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%606 = getelementptr %struct.edge_rec * %605 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %605 , %struct.edge_rec * * %606 , align 4
%607 = getelementptr %struct.edge_rec * %605 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %495 , %struct.VERTEX * * %607 , align 4
%608 = getelementptr %struct.edge_rec * %602 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %600 , %struct.edge_rec * * %608 , align 4
%609 = load %struct.edge_rec * * %596 , align 4 ; <%struct.edge_rec*> [#uses=1]
%610 = ptrtoint %struct.edge_rec * %609 to i32 ; <i32> [#uses=2]
%611 = add i32 %610 , 16 ; <i32> [#uses=1]
%612 = and i32 %611 , 63 ; <i32> [#uses=1]
%613 = and i32 %610 , -64 ; <i32> [#uses=1]
%614 = or i32 %612 , %613 ; <i32> [#uses=1]
%615 = inttoptr i32 %614 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%616 = getelementptr %struct.edge_rec * %594 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%617 = load %struct.edge_rec * * %616 , align 4 ; <%struct.edge_rec*> [#uses=1]
%618 = ptrtoint %struct.edge_rec * %617 to i32 ; <i32> [#uses=2]
%619 = add i32 %618 , 16 ; <i32> [#uses=1]
%620 = and i32 %619 , 63 ; <i32> [#uses=1]
%621 = and i32 %618 , -64 ; <i32> [#uses=1]
%622 = or i32 %620 , %621 ; <i32> [#uses=1]
%623 = inttoptr i32 %622 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%624 = getelementptr %struct.edge_rec * %623 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%625 = load %struct.edge_rec * * %624 , align 4 ; <%struct.edge_rec*> [#uses=1]
%626 = getelementptr %struct.edge_rec * %615 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%627 = load %struct.edge_rec * * %626 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %625 , %struct.edge_rec * * %626 , align 4
store %struct.edge_rec * %627 , %struct.edge_rec * * %624 , align 4
%628 = load %struct.edge_rec * * %596 , align 4 ; <%struct.edge_rec*> [#uses=1]
%629 = load %struct.edge_rec * * %616 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %628 , %struct.edge_rec * * %616 , align 4
store %struct.edge_rec * %629 , %struct.edge_rec * * %596 , align 4
%630 = xor i32 %598 , 32 ; <i32> [#uses=2]
%631 = inttoptr i32 %630 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%632 = getelementptr %struct.edge_rec * %631 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%633 = load %struct.edge_rec * * %632 , align 4 ; <%struct.edge_rec*> [#uses=1]
%634 = ptrtoint %struct.edge_rec * %633 to i32 ; <i32> [#uses=2]
%635 = add i32 %634 , 16 ; <i32> [#uses=1]
%636 = and i32 %635 , 63 ; <i32> [#uses=1]
%637 = and i32 %634 , -64 ; <i32> [#uses=1]
%638 = or i32 %636 , %637 ; <i32> [#uses=1]
%639 = inttoptr i32 %638 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%640 = getelementptr %struct.edge_rec * %174 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%641 = load %struct.edge_rec * * %640 , align 4 ; <%struct.edge_rec*> [#uses=1]
%642 = ptrtoint %struct.edge_rec * %641 to i32 ; <i32> [#uses=2]
%643 = add i32 %642 , 16 ; <i32> [#uses=1]
%644 = and i32 %643 , 63 ; <i32> [#uses=1]
%645 = and i32 %642 , -64 ; <i32> [#uses=1]
%646 = or i32 %644 , %645 ; <i32> [#uses=1]
%647 = inttoptr i32 %646 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%648 = getelementptr %struct.edge_rec * %647 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%649 = load %struct.edge_rec * * %648 , align 4 ; <%struct.edge_rec*> [#uses=1]
%650 = getelementptr %struct.edge_rec * %639 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%651 = load %struct.edge_rec * * %650 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %649 , %struct.edge_rec * * %650 , align 4
store %struct.edge_rec * %651 , %struct.edge_rec * * %648 , align 4
%652 = load %struct.edge_rec * * %632 , align 4 ; <%struct.edge_rec*> [#uses=1]
%653 = load %struct.edge_rec * * %640 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %652 , %struct.edge_rec * * %640 , align 4
store %struct.edge_rec * %653 , %struct.edge_rec * * %632 , align 4
%654 = add i32 %630 , 48 ; <i32> [#uses=1]
%655 = and i32 %654 , 63 ; <i32> [#uses=1]
%656 = and i32 %598 , -64 ; <i32> [#uses=1]
%657 = or i32 %655 , %656 ; <i32> [#uses=1]
%658 = inttoptr i32 %657 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%659 = getelementptr %struct.edge_rec * %658 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%660 = load %struct.edge_rec * * %659 , align 4 ; <%struct.edge_rec*> [#uses=1]
%661 = ptrtoint %struct.edge_rec * %660 to i32 ; <i32> [#uses=2]
%662 = add i32 %661 , 16 ; <i32> [#uses=1]
%663 = and i32 %662 , 63 ; <i32> [#uses=1]
%664 = and i32 %661 , -64 ; <i32> [#uses=1]
%665 = or i32 %663 , %664 ; <i32> [#uses=1]
%666 = inttoptr i32 %665 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
br label %bb9.i
bb25.i: ; preds = %bb23.i, %bb22.i
%667 = add i32 %172 , 16 ; <i32> [#uses=1]
%668 = and i32 %667 , 63 ; <i32> [#uses=1]
%669 = and i32 %172 , -64 ; <i32> [#uses=1]
%670 = or i32 %668 , %669 ; <i32> [#uses=1]
%671 = inttoptr i32 %670 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%672 = getelementptr %struct.edge_rec * %671 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%673 = load %struct.edge_rec * * %672 , align 4 ; <%struct.edge_rec*> [#uses=1]
%674 = ptrtoint %struct.edge_rec * %673 to i32 ; <i32> [#uses=2]
%675 = add i32 %674 , 16 ; <i32> [#uses=1]
%676 = and i32 %675 , 63 ; <i32> [#uses=1]
%677 = and i32 %674 , -64 ; <i32> [#uses=1]
%678 = or i32 %676 , %677 ; <i32> [#uses=1]
%679 = inttoptr i32 %678 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%680 = call arm_apcscc %struct.edge_rec * @alloc_edge ( ) nounwind ; <%struct.edge_rec*> [#uses=4]
%681 = getelementptr %struct.edge_rec * %680 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=5]
store %struct.edge_rec * %680 , %struct.edge_rec * * %681 , align 4
%682 = getelementptr %struct.edge_rec * %680 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %501 , %struct.VERTEX * * %682 , align 4
%683 = ptrtoint %struct.edge_rec * %680 to i32 ; <i32> [#uses=4]
%684 = add i32 %683 , 16 ; <i32> [#uses=1]
%685 = inttoptr i32 %684 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%686 = add i32 %683 , 48 ; <i32> [#uses=1]
%687 = inttoptr i32 %686 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%688 = getelementptr %struct.edge_rec * %685 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %687 , %struct.edge_rec * * %688 , align 4
%689 = add i32 %683 , 32 ; <i32> [#uses=1]
%690 = inttoptr i32 %689 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%691 = getelementptr %struct.edge_rec * %690 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %690 , %struct.edge_rec * * %691 , align 4
%692 = getelementptr %struct.edge_rec * %690 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %496 , %struct.VERTEX * * %692 , align 4
%693 = getelementptr %struct.edge_rec * %687 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %685 , %struct.edge_rec * * %693 , align 4
%694 = load %struct.edge_rec * * %681 , align 4 ; <%struct.edge_rec*> [#uses=1]
%695 = ptrtoint %struct.edge_rec * %694 to i32 ; <i32> [#uses=2]
%696 = add i32 %695 , 16 ; <i32> [#uses=1]
%697 = and i32 %696 , 63 ; <i32> [#uses=1]
%698 = and i32 %695 , -64 ; <i32> [#uses=1]
%699 = or i32 %697 , %698 ; <i32> [#uses=1]
%700 = inttoptr i32 %699 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%701 = getelementptr %struct.edge_rec * %499 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%702 = load %struct.edge_rec * * %701 , align 4 ; <%struct.edge_rec*> [#uses=1]
%703 = ptrtoint %struct.edge_rec * %702 to i32 ; <i32> [#uses=2]
%704 = add i32 %703 , 16 ; <i32> [#uses=1]
%705 = and i32 %704 , 63 ; <i32> [#uses=1]
%706 = and i32 %703 , -64 ; <i32> [#uses=1]
%707 = or i32 %705 , %706 ; <i32> [#uses=1]
%708 = inttoptr i32 %707 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%709 = getelementptr %struct.edge_rec * %708 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%710 = load %struct.edge_rec * * %709 , align 4 ; <%struct.edge_rec*> [#uses=1]
%711 = getelementptr %struct.edge_rec * %700 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%712 = load %struct.edge_rec * * %711 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %710 , %struct.edge_rec * * %711 , align 4
store %struct.edge_rec * %712 , %struct.edge_rec * * %709 , align 4
%713 = load %struct.edge_rec * * %681 , align 4 ; <%struct.edge_rec*> [#uses=1]
%714 = load %struct.edge_rec * * %701 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %713 , %struct.edge_rec * * %701 , align 4
store %struct.edge_rec * %714 , %struct.edge_rec * * %681 , align 4
%715 = xor i32 %683 , 32 ; <i32> [#uses=1]
%716 = inttoptr i32 %715 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%717 = getelementptr %struct.edge_rec * %716 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%718 = load %struct.edge_rec * * %717 , align 4 ; <%struct.edge_rec*> [#uses=1]
%719 = ptrtoint %struct.edge_rec * %718 to i32 ; <i32> [#uses=2]
%720 = add i32 %719 , 16 ; <i32> [#uses=1]
%721 = and i32 %720 , 63 ; <i32> [#uses=1]
%722 = and i32 %719 , -64 ; <i32> [#uses=1]
%723 = or i32 %721 , %722 ; <i32> [#uses=1]
%724 = inttoptr i32 %723 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%725 = getelementptr %struct.edge_rec * %679 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%726 = load %struct.edge_rec * * %725 , align 4 ; <%struct.edge_rec*> [#uses=1]
%727 = ptrtoint %struct.edge_rec * %726 to i32 ; <i32> [#uses=2]
%728 = add i32 %727 , 16 ; <i32> [#uses=1]
%729 = and i32 %728 , 63 ; <i32> [#uses=1]
%730 = and i32 %727 , -64 ; <i32> [#uses=1]
%731 = or i32 %729 , %730 ; <i32> [#uses=1]
%732 = inttoptr i32 %731 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%733 = getelementptr %struct.edge_rec * %732 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%734 = load %struct.edge_rec * * %733 , align 4 ; <%struct.edge_rec*> [#uses=1]
%735 = getelementptr %struct.edge_rec * %724 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%736 = load %struct.edge_rec * * %735 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %734 , %struct.edge_rec * * %735 , align 4
store %struct.edge_rec * %736 , %struct.edge_rec * * %733 , align 4
%737 = load %struct.edge_rec * * %717 , align 4 ; <%struct.edge_rec*> [#uses=1]
%738 = load %struct.edge_rec * * %725 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %737 , %struct.edge_rec * * %725 , align 4
store %struct.edge_rec * %738 , %struct.edge_rec * * %717 , align 4
%739 = load %struct.edge_rec * * %681 , align 4 ; <%struct.edge_rec*> [#uses=1]
br label %bb9.i
do_merge.exit: ; preds = %bb17.i
%740 = getelementptr %struct.edge_rec * %ldo_addr.0.ph.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%741 = load %struct.VERTEX * * %740 , align 4 ; <%struct.VERTEX*> [#uses=1]
%742 = icmp eq %struct.VERTEX * %741 , %tree_addr.0.i ; <i1> [#uses=1]
br i1 %742 , label %bb5.loopexit , label %bb2
bb2: ; preds = %bb2, %do_merge.exit
%ldo.07 = phi %struct.edge_rec * [ %747 , %bb2 ] , [ %ldo_addr.0.ph.i , %do_merge.exit ] ; <%struct.edge_rec*> [#uses=1]
%743 = ptrtoint %struct.edge_rec * %ldo.07 to i32 ; <i32> [#uses=1]
%744 = xor i32 %743 , 32 ; <i32> [#uses=1]
%745 = inttoptr i32 %744 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%746 = getelementptr %struct.edge_rec * %745 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%747 = load %struct.edge_rec * * %746 , align 4 ; <%struct.edge_rec*> [#uses=3]
%748 = getelementptr %struct.edge_rec * %747 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%749 = load %struct.VERTEX * * %748 , align 4 ; <%struct.VERTEX*> [#uses=1]
%750 = icmp eq %struct.VERTEX * %749 , %tree_addr.0.i ; <i1> [#uses=1]
br i1 %750 , label %bb5.loopexit , label %bb2
bb4: ; preds = %bb5.loopexit, %bb4
%rdo.05 = phi %struct.edge_rec * [ %755 , %bb4 ] , [ %rdo_addr.0.i , %bb5.loopexit ] ; <%struct.edge_rec*> [#uses=1]
%751 = getelementptr %struct.edge_rec * %rdo.05 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%752 = load %struct.edge_rec * * %751 , align 4 ; <%struct.edge_rec*> [#uses=1]
%753 = ptrtoint %struct.edge_rec * %752 to i32 ; <i32> [#uses=1]
%754 = xor i32 %753 , 32 ; <i32> [#uses=1]
%755 = inttoptr i32 %754 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%756 = getelementptr %struct.edge_rec * %755 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%757 = load %struct.VERTEX * * %756 , align 4 ; <%struct.VERTEX*> [#uses=1]
%758 = icmp eq %struct.VERTEX * %757 , %extra ; <i1> [#uses=1]
br i1 %758 , label %bb6 , label %bb4
bb5.loopexit: ; preds = %bb2, %do_merge.exit
%ldo.0.lcssa = phi %struct.edge_rec * [ %ldo_addr.0.ph.i , %do_merge.exit ] , [ %747 , %bb2 ] ; <%struct.edge_rec*> [#uses=1]
%759 = getelementptr %struct.edge_rec * %rdo_addr.0.i , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%760 = load %struct.VERTEX * * %759 , align 4 ; <%struct.VERTEX*> [#uses=1]
%761 = icmp eq %struct.VERTEX * %760 , %extra ; <i1> [#uses=1]
br i1 %761 , label %bb6 , label %bb4
bb6: ; preds = %bb5.loopexit, %bb4
%rdo.0.lcssa = phi %struct.edge_rec * [ %rdo_addr.0.i , %bb5.loopexit ] , [ %755 , %bb4 ] ; <%struct.edge_rec*> [#uses=1]
%tmp16 = ptrtoint %struct.edge_rec * %ldo.0.lcssa to i32 ; <i32> [#uses=1]
%tmp4 = ptrtoint %struct.edge_rec * %rdo.0.lcssa to i32 ; <i32> [#uses=1]
br label %bb15
bb7: ; preds = %bb
%762 = getelementptr %struct.VERTEX * %tree , i32 0 , i32 1 ; <%struct.VERTEX**> [#uses=1]
%763 = load %struct.VERTEX * * %762 , align 4 ; <%struct.VERTEX*> [#uses=4]
%764 = icmp eq %struct.VERTEX * %763 , null ; <i1> [#uses=1]
%765 = call arm_apcscc %struct.edge_rec * @alloc_edge ( ) nounwind ; <%struct.edge_rec*> [#uses=5]
%766 = getelementptr %struct.edge_rec * %765 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=4]
store %struct.edge_rec * %765 , %struct.edge_rec * * %766 , align 4
%767 = getelementptr %struct.edge_rec * %765 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=3]
br i1 %764 , label %bb10 , label %bb11
bb8: ; preds = %entry
%768 = call arm_apcscc i32 @puts ( i8 * getelementptr ( [ 21 x i8 ] * @_2E_str7 , i32 0 , i32 0 ) ) nounwind ; <i32> [#uses=0]
call arm_apcscc void @exit ( i32 -1 ) noreturn nounwind
unreachable
bb10: ; preds = %bb7
store %struct.VERTEX * %tree , %struct.VERTEX * * %767 , align 4
%769 = ptrtoint %struct.edge_rec * %765 to i32 ; <i32> [#uses=5]
%770 = add i32 %769 , 16 ; <i32> [#uses=1]
%771 = inttoptr i32 %770 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%772 = add i32 %769 , 48 ; <i32> [#uses=1]
%773 = inttoptr i32 %772 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%774 = getelementptr %struct.edge_rec * %771 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %773 , %struct.edge_rec * * %774 , align 4
%775 = add i32 %769 , 32 ; <i32> [#uses=1]
%776 = inttoptr i32 %775 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%777 = getelementptr %struct.edge_rec * %776 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %776 , %struct.edge_rec * * %777 , align 4
%778 = getelementptr %struct.edge_rec * %776 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %extra , %struct.VERTEX * * %778 , align 4
%779 = getelementptr %struct.edge_rec * %773 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %771 , %struct.edge_rec * * %779 , align 4
%780 = xor i32 %769 , 32 ; <i32> [#uses=1]
br label %bb15
bb11: ; preds = %bb7
store %struct.VERTEX * %763 , %struct.VERTEX * * %767 , align 4
%781 = ptrtoint %struct.edge_rec * %765 to i32 ; <i32> [#uses=6]
%782 = add i32 %781 , 16 ; <i32> [#uses=1]
%783 = inttoptr i32 %782 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%784 = add i32 %781 , 48 ; <i32> [#uses=1]
%785 = inttoptr i32 %784 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%786 = getelementptr %struct.edge_rec * %783 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %785 , %struct.edge_rec * * %786 , align 4
%787 = add i32 %781 , 32 ; <i32> [#uses=1]
%788 = inttoptr i32 %787 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%789 = getelementptr %struct.edge_rec * %788 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %788 , %struct.edge_rec * * %789 , align 4
%790 = getelementptr %struct.edge_rec * %788 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %tree , %struct.VERTEX * * %790 , align 4
%791 = getelementptr %struct.edge_rec * %785 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %783 , %struct.edge_rec * * %791 , align 4
%792 = call arm_apcscc %struct.edge_rec * @alloc_edge ( ) nounwind ; <%struct.edge_rec*> [#uses=4]
%793 = getelementptr %struct.edge_rec * %792 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=4]
store %struct.edge_rec * %792 , %struct.edge_rec * * %793 , align 4
%794 = getelementptr %struct.edge_rec * %792 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %tree , %struct.VERTEX * * %794 , align 4
%795 = ptrtoint %struct.edge_rec * %792 to i32 ; <i32> [#uses=5]
%796 = add i32 %795 , 16 ; <i32> [#uses=1]
%797 = inttoptr i32 %796 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%798 = add i32 %795 , 48 ; <i32> [#uses=2]
%799 = inttoptr i32 %798 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%800 = getelementptr %struct.edge_rec * %797 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %799 , %struct.edge_rec * * %800 , align 4
%801 = add i32 %795 , 32 ; <i32> [#uses=1]
%802 = inttoptr i32 %801 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%803 = getelementptr %struct.edge_rec * %802 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %802 , %struct.edge_rec * * %803 , align 4
%804 = getelementptr %struct.edge_rec * %802 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %extra , %struct.VERTEX * * %804 , align 4
%805 = getelementptr %struct.edge_rec * %799 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %797 , %struct.edge_rec * * %805 , align 4
%806 = xor i32 %781 , 32 ; <i32> [#uses=1]
%807 = inttoptr i32 %806 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%808 = getelementptr %struct.edge_rec * %807 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%809 = load %struct.edge_rec * * %808 , align 4 ; <%struct.edge_rec*> [#uses=1]
%810 = ptrtoint %struct.edge_rec * %809 to i32 ; <i32> [#uses=2]
%811 = add i32 %810 , 16 ; <i32> [#uses=1]
%812 = and i32 %811 , 63 ; <i32> [#uses=1]
%813 = and i32 %810 , -64 ; <i32> [#uses=1]
%814 = or i32 %812 , %813 ; <i32> [#uses=1]
%815 = inttoptr i32 %814 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%816 = load %struct.edge_rec * * %793 , align 4 ; <%struct.edge_rec*> [#uses=1]
%817 = ptrtoint %struct.edge_rec * %816 to i32 ; <i32> [#uses=2]
%818 = add i32 %817 , 16 ; <i32> [#uses=1]
%819 = and i32 %818 , 63 ; <i32> [#uses=1]
%820 = and i32 %817 , -64 ; <i32> [#uses=1]
%821 = or i32 %819 , %820 ; <i32> [#uses=1]
%822 = inttoptr i32 %821 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%823 = getelementptr %struct.edge_rec * %822 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%824 = load %struct.edge_rec * * %823 , align 4 ; <%struct.edge_rec*> [#uses=1]
%825 = getelementptr %struct.edge_rec * %815 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%826 = load %struct.edge_rec * * %825 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %824 , %struct.edge_rec * * %825 , align 4
store %struct.edge_rec * %826 , %struct.edge_rec * * %823 , align 4
%827 = load %struct.edge_rec * * %808 , align 4 ; <%struct.edge_rec*> [#uses=1]
%828 = load %struct.edge_rec * * %793 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %827 , %struct.edge_rec * * %793 , align 4
store %struct.edge_rec * %828 , %struct.edge_rec * * %808 , align 4
%829 = xor i32 %795 , 32 ; <i32> [#uses=3]
%830 = inttoptr i32 %829 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%831 = getelementptr %struct.edge_rec * %830 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
%832 = load %struct.VERTEX * * %831 , align 4 ; <%struct.VERTEX*> [#uses=1]
%833 = and i32 %798 , 63 ; <i32> [#uses=1]
%834 = and i32 %795 , -64 ; <i32> [#uses=1]
%835 = or i32 %833 , %834 ; <i32> [#uses=1]
%836 = inttoptr i32 %835 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%837 = getelementptr %struct.edge_rec * %836 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%838 = load %struct.edge_rec * * %837 , align 4 ; <%struct.edge_rec*> [#uses=1]
%839 = ptrtoint %struct.edge_rec * %838 to i32 ; <i32> [#uses=2]
%840 = add i32 %839 , 16 ; <i32> [#uses=1]
%841 = and i32 %840 , 63 ; <i32> [#uses=1]
%842 = and i32 %839 , -64 ; <i32> [#uses=1]
%843 = or i32 %841 , %842 ; <i32> [#uses=1]
%844 = inttoptr i32 %843 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%845 = load %struct.VERTEX * * %767 , align 4 ; <%struct.VERTEX*> [#uses=1]
%846 = call arm_apcscc %struct.edge_rec * @alloc_edge ( ) nounwind ; <%struct.edge_rec*> [#uses=4]
%847 = getelementptr %struct.edge_rec * %846 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=7]
store %struct.edge_rec * %846 , %struct.edge_rec * * %847 , align 4
%848 = getelementptr %struct.edge_rec * %846 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %832 , %struct.VERTEX * * %848 , align 4
%849 = ptrtoint %struct.edge_rec * %846 to i32 ; <i32> [#uses=6]
%850 = add i32 %849 , 16 ; <i32> [#uses=2]
%851 = inttoptr i32 %850 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%852 = add i32 %849 , 48 ; <i32> [#uses=1]
%853 = inttoptr i32 %852 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%854 = getelementptr %struct.edge_rec * %851 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %853 , %struct.edge_rec * * %854 , align 4
%855 = add i32 %849 , 32 ; <i32> [#uses=1]
%856 = inttoptr i32 %855 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=3]
%857 = getelementptr %struct.edge_rec * %856 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %856 , %struct.edge_rec * * %857 , align 4
%858 = getelementptr %struct.edge_rec * %856 , i32 0 , i32 0 ; <%struct.VERTEX**> [#uses=1]
store %struct.VERTEX * %845 , %struct.VERTEX * * %858 , align 4
%859 = getelementptr %struct.edge_rec * %853 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %851 , %struct.edge_rec * * %859 , align 4
%860 = load %struct.edge_rec * * %847 , align 4 ; <%struct.edge_rec*> [#uses=1]
%861 = ptrtoint %struct.edge_rec * %860 to i32 ; <i32> [#uses=2]
%862 = add i32 %861 , 16 ; <i32> [#uses=1]
%863 = and i32 %862 , 63 ; <i32> [#uses=1]
%864 = and i32 %861 , -64 ; <i32> [#uses=1]
%865 = or i32 %863 , %864 ; <i32> [#uses=1]
%866 = inttoptr i32 %865 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%867 = getelementptr %struct.edge_rec * %844 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%868 = load %struct.edge_rec * * %867 , align 4 ; <%struct.edge_rec*> [#uses=1]
%869 = ptrtoint %struct.edge_rec * %868 to i32 ; <i32> [#uses=2]
%870 = add i32 %869 , 16 ; <i32> [#uses=1]
%871 = and i32 %870 , 63 ; <i32> [#uses=1]
%872 = and i32 %869 , -64 ; <i32> [#uses=1]
%873 = or i32 %871 , %872 ; <i32> [#uses=1]
%874 = inttoptr i32 %873 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%875 = getelementptr %struct.edge_rec * %874 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%876 = load %struct.edge_rec * * %875 , align 4 ; <%struct.edge_rec*> [#uses=1]
%877 = getelementptr %struct.edge_rec * %866 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%878 = load %struct.edge_rec * * %877 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %876 , %struct.edge_rec * * %877 , align 4
store %struct.edge_rec * %878 , %struct.edge_rec * * %875 , align 4
%879 = load %struct.edge_rec * * %847 , align 4 ; <%struct.edge_rec*> [#uses=1]
%880 = load %struct.edge_rec * * %867 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %879 , %struct.edge_rec * * %867 , align 4
store %struct.edge_rec * %880 , %struct.edge_rec * * %847 , align 4
%881 = xor i32 %849 , 32 ; <i32> [#uses=3]
%882 = inttoptr i32 %881 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%883 = getelementptr %struct.edge_rec * %882 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=6]
%884 = load %struct.edge_rec * * %883 , align 4 ; <%struct.edge_rec*> [#uses=1]
%885 = ptrtoint %struct.edge_rec * %884 to i32 ; <i32> [#uses=2]
%886 = add i32 %885 , 16 ; <i32> [#uses=1]
%887 = and i32 %886 , 63 ; <i32> [#uses=1]
%888 = and i32 %885 , -64 ; <i32> [#uses=1]
%889 = or i32 %887 , %888 ; <i32> [#uses=1]
%890 = inttoptr i32 %889 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%891 = load %struct.edge_rec * * %766 , align 4 ; <%struct.edge_rec*> [#uses=1]
%892 = ptrtoint %struct.edge_rec * %891 to i32 ; <i32> [#uses=2]
%893 = add i32 %892 , 16 ; <i32> [#uses=1]
%894 = and i32 %893 , 63 ; <i32> [#uses=1]
%895 = and i32 %892 , -64 ; <i32> [#uses=1]
%896 = or i32 %894 , %895 ; <i32> [#uses=1]
%897 = inttoptr i32 %896 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%898 = getelementptr %struct.edge_rec * %897 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%899 = load %struct.edge_rec * * %898 , align 4 ; <%struct.edge_rec*> [#uses=1]
%900 = getelementptr %struct.edge_rec * %890 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%901 = load %struct.edge_rec * * %900 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %899 , %struct.edge_rec * * %900 , align 4
store %struct.edge_rec * %901 , %struct.edge_rec * * %898 , align 4
%902 = load %struct.edge_rec * * %883 , align 4 ; <%struct.edge_rec*> [#uses=1]
%903 = load %struct.edge_rec * * %766 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %902 , %struct.edge_rec * * %766 , align 4
store %struct.edge_rec * %903 , %struct.edge_rec * * %883 , align 4
%904 = getelementptr %struct.VERTEX * %763 , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%905 = load double * %904 , align 4 ; <double> [#uses=2]
%906 = getelementptr %struct.VERTEX * %763 , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%907 = load double * %906 , align 4 ; <double> [#uses=2]
%908 = getelementptr %struct.VERTEX * %extra , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%909 = load double * %908 , align 4 ; <double> [#uses=3]
%910 = getelementptr %struct.VERTEX * %extra , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%911 = load double * %910 , align 4 ; <double> [#uses=3]
%912 = getelementptr %struct.VERTEX * %tree , i32 0 , i32 0 , i32 0 ; <double*> [#uses=1]
%913 = load double * %912 , align 4 ; <double> [#uses=3]
%914 = getelementptr %struct.VERTEX * %tree , i32 0 , i32 0 , i32 1 ; <double*> [#uses=1]
%915 = load double * %914 , align 4 ; <double> [#uses=3]
%916 = fsub double %905 , %913 ; <double> [#uses=1]
%917 = fsub double %911 , %915 ; <double> [#uses=1]
%918 = fmul double %916 , %917 ; <double> [#uses=1]
%919 = fsub double %909 , %913 ; <double> [#uses=1]
%920 = fsub double %907 , %915 ; <double> [#uses=1]
%921 = fmul double %919 , %920 ; <double> [#uses=1]
%922 = fsub double %918 , %921 ; <double> [#uses=1]
%923 = fcmp ogt double %922 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %923 , label %bb15 , label %bb13
bb13: ; preds = %bb11
%924 = fsub double %905 , %909 ; <double> [#uses=1]
%925 = fsub double %915 , %911 ; <double> [#uses=1]
%926 = fmul double %924 , %925 ; <double> [#uses=1]
%927 = fsub double %913 , %909 ; <double> [#uses=1]
%928 = fsub double %907 , %911 ; <double> [#uses=1]
%929 = fmul double %927 , %928 ; <double> [#uses=1]
%930 = fsub double %926 , %929 ; <double> [#uses=1]
%931 = fcmp ogt double %930 , 0.000000e+00 ; <i1> [#uses=1]
br i1 %931 , label %bb15 , label %bb14
bb14: ; preds = %bb13
%932 = and i32 %850 , 63 ; <i32> [#uses=1]
%933 = and i32 %849 , -64 ; <i32> [#uses=3]
%934 = or i32 %932 , %933 ; <i32> [#uses=1]
%935 = inttoptr i32 %934 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%936 = getelementptr %struct.edge_rec * %935 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%937 = load %struct.edge_rec * * %936 , align 4 ; <%struct.edge_rec*> [#uses=1]
%938 = ptrtoint %struct.edge_rec * %937 to i32 ; <i32> [#uses=2]
%939 = add i32 %938 , 16 ; <i32> [#uses=1]
%940 = and i32 %939 , 63 ; <i32> [#uses=1]
%941 = and i32 %938 , -64 ; <i32> [#uses=1]
%942 = or i32 %940 , %941 ; <i32> [#uses=1]
%943 = inttoptr i32 %942 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%944 = load %struct.edge_rec * * %847 , align 4 ; <%struct.edge_rec*> [#uses=1]
%945 = ptrtoint %struct.edge_rec * %944 to i32 ; <i32> [#uses=2]
%946 = add i32 %945 , 16 ; <i32> [#uses=1]
%947 = and i32 %946 , 63 ; <i32> [#uses=1]
%948 = and i32 %945 , -64 ; <i32> [#uses=1]
%949 = or i32 %947 , %948 ; <i32> [#uses=1]
%950 = inttoptr i32 %949 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%951 = getelementptr %struct.edge_rec * %943 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%952 = load %struct.edge_rec * * %951 , align 4 ; <%struct.edge_rec*> [#uses=1]
%953 = ptrtoint %struct.edge_rec * %952 to i32 ; <i32> [#uses=2]
%954 = add i32 %953 , 16 ; <i32> [#uses=1]
%955 = and i32 %954 , 63 ; <i32> [#uses=1]
%956 = and i32 %953 , -64 ; <i32> [#uses=1]
%957 = or i32 %955 , %956 ; <i32> [#uses=1]
%958 = inttoptr i32 %957 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%959 = getelementptr %struct.edge_rec * %958 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%960 = load %struct.edge_rec * * %959 , align 4 ; <%struct.edge_rec*> [#uses=1]
%961 = getelementptr %struct.edge_rec * %950 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%962 = load %struct.edge_rec * * %961 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %960 , %struct.edge_rec * * %961 , align 4
store %struct.edge_rec * %962 , %struct.edge_rec * * %959 , align 4
%963 = load %struct.edge_rec * * %847 , align 4 ; <%struct.edge_rec*> [#uses=1]
%964 = load %struct.edge_rec * * %951 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %963 , %struct.edge_rec * * %951 , align 4
store %struct.edge_rec * %964 , %struct.edge_rec * * %847 , align 4
%965 = add i32 %881 , 16 ; <i32> [#uses=1]
%966 = and i32 %965 , 63 ; <i32> [#uses=1]
%967 = or i32 %966 , %933 ; <i32> [#uses=1]
%968 = inttoptr i32 %967 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%969 = getelementptr %struct.edge_rec * %968 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
%970 = load %struct.edge_rec * * %969 , align 4 ; <%struct.edge_rec*> [#uses=1]
%971 = ptrtoint %struct.edge_rec * %970 to i32 ; <i32> [#uses=2]
%972 = add i32 %971 , 16 ; <i32> [#uses=1]
%973 = and i32 %972 , 63 ; <i32> [#uses=1]
%974 = and i32 %971 , -64 ; <i32> [#uses=1]
%975 = or i32 %973 , %974 ; <i32> [#uses=1]
%976 = inttoptr i32 %975 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%977 = load %struct.edge_rec * * %883 , align 4 ; <%struct.edge_rec*> [#uses=1]
%978 = ptrtoint %struct.edge_rec * %977 to i32 ; <i32> [#uses=2]
%979 = add i32 %978 , 16 ; <i32> [#uses=1]
%980 = and i32 %979 , 63 ; <i32> [#uses=1]
%981 = and i32 %978 , -64 ; <i32> [#uses=1]
%982 = or i32 %980 , %981 ; <i32> [#uses=1]
%983 = inttoptr i32 %982 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%984 = getelementptr %struct.edge_rec * %976 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=3]
%985 = load %struct.edge_rec * * %984 , align 4 ; <%struct.edge_rec*> [#uses=1]
%986 = ptrtoint %struct.edge_rec * %985 to i32 ; <i32> [#uses=2]
%987 = add i32 %986 , 16 ; <i32> [#uses=1]
%988 = and i32 %987 , 63 ; <i32> [#uses=1]
%989 = and i32 %986 , -64 ; <i32> [#uses=1]
%990 = or i32 %988 , %989 ; <i32> [#uses=1]
%991 = inttoptr i32 %990 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=1]
%992 = getelementptr %struct.edge_rec * %991 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%993 = load %struct.edge_rec * * %992 , align 4 ; <%struct.edge_rec*> [#uses=1]
%994 = getelementptr %struct.edge_rec * %983 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=2]
%995 = load %struct.edge_rec * * %994 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %993 , %struct.edge_rec * * %994 , align 4
store %struct.edge_rec * %995 , %struct.edge_rec * * %992 , align 4
%996 = load %struct.edge_rec * * %883 , align 4 ; <%struct.edge_rec*> [#uses=1]
%997 = load %struct.edge_rec * * %984 , align 4 ; <%struct.edge_rec*> [#uses=1]
store %struct.edge_rec * %996 , %struct.edge_rec * * %984 , align 4
store %struct.edge_rec * %997 , %struct.edge_rec * * %883 , align 4
%998 = inttoptr i32 %933 to %struct.edge_rec * ; <%struct.edge_rec*> [#uses=2]
%999 = load %struct.edge_rec * * @avail_edge , align 4 ; <%struct.edge_rec*> [#uses=1]
%1000 = getelementptr %struct.edge_rec * %998 , i32 0 , i32 1 ; <%struct.edge_rec**> [#uses=1]
store %struct.edge_rec * %999 , %struct.edge_rec * * %1000 , align 4
store %struct.edge_rec * %998 , %struct.edge_rec * * @avail_edge , align 4
br label %bb15
bb15: ; preds = %bb14, %bb13, %bb11, %bb10, %bb6
%retval.1.0 = phi i32 [ %780 , %bb10 ] , [ %829 , %bb13 ] , [ %829 , %bb14 ] , [ %tmp4 , %bb6 ] , [ %849 , %bb11 ] ; <i32> [#uses=1]
%retval.0.0 = phi i32 [ %769 , %bb10 ] , [ %781 , %bb13 ] , [ %781 , %bb14 ] , [ %tmp16 , %bb6 ] , [ %881 , %bb11 ] ; <i32> [#uses=1]
%agg.result162 = bitcast %struct.EDGE_PAIR * %agg.result to i64 * ; <i64*> [#uses=1]
%1001 = zext i32 %retval.0.0 to i64 ; <i64> [#uses=1]
%1002 = zext i32 %retval.1.0 to i64 ; <i64> [#uses=1]
%1003 = shl i64 %1002 , 32 ; <i64> [#uses=1]
%1004 = or i64 %1003 , %1001 ; <i64> [#uses=1]
store i64 %1004 , i64 * %agg.result162 , align 4
ret void
}
declare arm_apcscc i32 @puts ( i8 * nocapture ) nounwind
declare arm_apcscc void @exit ( i32 ) noreturn nounwind
declare arm_apcscc %struct.edge_rec * @alloc_edge ( ) nounwind