; LLVM IR from askforalfred/alfred :: gen/ff_planner (relax)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct._command_line = type { [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i8, i32, float }
%struct._FlConn = type { ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, i8, ptr, ptr, i32, i8, float, i8, ptr, ptr, i8, float, i32 }
%struct._EfConn = type { i32, i8, i8, float, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, ptr, i32, i32, float, i8, i32, i8, i32, i32 }
%struct._FtConn = type { ptr, i32, ptr, i32, ptr, i32, ptr, i32, i32, float, i8, i32, i32, i8, i32, i8 }
%struct._OpConn = type { ptr, i8, ptr, i32, i8, i8, i32, i8, float }

@gcmd_line = external global %struct._command_line, align 4
@gop_conn = external global ptr, align 8
@gef_conn = external global ptr, align 8
@gnum_fl_conn = external global i32, align 4
@gfl_conn = external global ptr, align 8
@gcost_rplans = external global i8, align 1
@gft_conn = external global ptr, align 8
@gnum_real_fl_conn = external global i32, align 4
@lin_plan_E = external dso_local global ptr, align 8
@lnum_in_plan_E = external dso_local global i32, align 4
@lgoals_at = external dso_local global ptr, align 8
@lnum_goals_at = external dso_local global ptr, align 8
@lf_goals_c_at = external dso_local global ptr, align 8
@lf_goals_comp_at = external dso_local global ptr, align 8
@lHcomp = external dso_local global ptr, align 8
@lHc = external dso_local global ptr, align 8
@.str.49 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @LESS(i32 noundef, i32 noundef) #0

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

declare i32 @printf(ptr noundef, ...) #2

declare void @print_op_name(i32 noundef) #2

declare void @print_ft_name(i32 noundef) #2

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) #3

declare zeroext i8 @number_comparison_holds(i32 noundef, float noundef, float noundef) #2

; Function Attrs: nounwind uwtable
define dso_local void @achieve_goals(i32 noundef %0) #0 {
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %13 = alloca float, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  store i32 %0, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  %17 = load i32, ptr getelementptr inbounds (%struct._command_line, ptr @gcmd_line, i32 0, i32 3), align 4, !tbaa !9
  %18 = icmp eq i32 %17, 127
  br i1 %18, label %19, label %23

19:                                               ; preds = %1
  %20 = load i32, ptr %2, align 4, !tbaa !5
  %21 = sub nsw i32 %20, 1
  %22 = call i32 (ptr, ...) @printf(ptr noundef @.str.49, i32 noundef %21)
  br label %23

23:                                               ; preds = %19, %1
  %24 = load i32, ptr @gnum_real_fl_conn, align 4, !tbaa !5
  store i32 %24, ptr %3, align 4, !tbaa !5
  br label %25

25:                                               ; preds = %44, %23
  %26 = load i32, ptr %3, align 4, !tbaa !5
  %27 = load i32, ptr @gnum_fl_conn, align 4, !tbaa !5
  %28 = icmp slt i32 %26, %27
  br i1 %28, label %29, label %47

29:                                               ; preds = %25
  %30 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %31 = load i32, ptr %2, align 4, !tbaa !5
  %32 = sext i32 %31 to i64
  %33 = getelementptr inbounds ptr, ptr %30, i64 %32
  %34 = load ptr, ptr %33, align 8, !tbaa !12
  %35 = load i32, ptr %3, align 4, !tbaa !5
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds i32, ptr %34, i64 %36
  %38 = load i32, ptr %37, align 4, !tbaa !5
  %39 = icmp eq i32 %38, 3000
  br i1 %39, label %40, label %41

40:                                               ; preds = %29
  br label %44

41:                                               ; preds = %29
  %42 = load i32, ptr %3, align 4, !tbaa !5
  %43 = load i32, ptr %2, align 4, !tbaa !5
  call void @enforce_artificial_goal(i32 noundef %42, i32 noundef %43)
  br label %44

44:                                               ; preds = %41, %40
  %45 = load i32, ptr %3, align 4, !tbaa !5
  %46 = add nsw i32 %45, 1
  store i32 %46, ptr %3, align 4, !tbaa !5
  br label %25, !llvm.loop !14

47:                                               ; preds = %25
  %48 = load i32, ptr %2, align 4, !tbaa !5
  %49 = icmp eq i32 %48, 1
  br i1 %49, label %50, label %86

50:                                               ; preds = %47
  store i32 0, ptr %3, align 4, !tbaa !5
  br label %51

51:                                               ; preds = %82, %50
  %52 = load i32, ptr %3, align 4, !tbaa !5
  %53 = load i32, ptr @gnum_real_fl_conn, align 4, !tbaa !5
  %54 = icmp slt i32 %52, %53
  br i1 %54, label %55, label %85

55:                                               ; preds = %51
  %56 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %57 = load i32, ptr %2, align 4, !tbaa !5
  %58 = sext i32 %57 to i64
  %59 = getelementptr inbounds ptr, ptr %56, i64 %58
  %60 = load ptr, ptr %59, align 8, !tbaa !12
  %61 = load i32, ptr %3, align 4, !tbaa !5
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds i32, ptr %60, i64 %62
  %64 = load i32, ptr %63, align 4, !tbaa !5
  %65 = load ptr, ptr @lHcomp, align 8, !tbaa !12
  %66 = load i32, ptr %3, align 4, !tbaa !5
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %65, i64 %67
  store i32 %64, ptr %68, align 4, !tbaa !5
  %69 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %70 = load i32, ptr %2, align 4, !tbaa !5
  %71 = sext i32 %70 to i64
  %72 = getelementptr inbounds ptr, ptr %69, i64 %71
  %73 = load ptr, ptr %72, align 8, !tbaa !12
  %74 = load i32, ptr %3, align 4, !tbaa !5
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds float, ptr %73, i64 %75
  %77 = load float, ptr %76, align 4, !tbaa !16
  %78 = load ptr, ptr @lHc, align 8, !tbaa !12
  %79 = load i32, ptr %3, align 4, !tbaa !5
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds float, ptr %78, i64 %80
  store float %77, ptr %81, align 4, !tbaa !16
  br label %82

82:                                               ; preds = %55
  %83 = load i32, ptr %3, align 4, !tbaa !5
  %84 = add nsw i32 %83, 1
  store i32 %84, ptr %3, align 4, !tbaa !5
  br label %51, !llvm.loop !17

85:                                               ; preds = %51
  br label %86

86:                                               ; preds = %85, %47
  store i32 0, ptr %3, align 4, !tbaa !5
  br label %87

87:                                               ; preds = %672, %86
  %88 = load i32, ptr %3, align 4, !tbaa !5
  %89 = load i32, ptr @gnum_real_fl_conn, align 4, !tbaa !5
  %90 = icmp slt i32 %88, %89
  br i1 %90, label %91, label %675

91:                                               ; preds = %87
  %92 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %93 = load i32, ptr %2, align 4, !tbaa !5
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds ptr, ptr %92, i64 %94
  %96 = load ptr, ptr %95, align 8, !tbaa !12
  %97 = load i32, ptr %3, align 4, !tbaa !5
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds i32, ptr %96, i64 %98
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = icmp eq i32 %100, 3000
  br i1 %101, label %102, label %103

102:                                              ; preds = %91
  br label %672

103:                                              ; preds = %91
  %104 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %105 = load i32, ptr %3, align 4, !tbaa !5
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds %struct._FlConn, ptr %104, i64 %106
  %108 = getelementptr inbounds %struct._FlConn, ptr %107, i32 0, i32 17
  %109 = load ptr, ptr %108, align 8, !tbaa !18
  %110 = load i32, ptr %2, align 4, !tbaa !5
  %111 = sub nsw i32 %110, 1
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds i8, ptr %109, i64 %112
  %114 = load i8, ptr %113, align 1, !tbaa !20
  %115 = zext i8 %114 to i32
  %116 = icmp ne i32 %115, 0
  br i1 %116, label %117, label %180

117:                                              ; preds = %103
  %118 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %119 = load i32, ptr %2, align 4, !tbaa !5
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds ptr, ptr %118, i64 %120
  %122 = load ptr, ptr %121, align 8, !tbaa !12
  %123 = load i32, ptr %3, align 4, !tbaa !5
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds i32, ptr %122, i64 %124
  %126 = load i32, ptr %125, align 4, !tbaa !5
  %127 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %128 = load i32, ptr %3, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds %struct._FlConn, ptr %127, i64 %129
  %131 = getelementptr inbounds %struct._FlConn, ptr %130, i32 0, i32 18
  %132 = load ptr, ptr %131, align 8, !tbaa !21
  %133 = load i32, ptr %2, align 4, !tbaa !5
  %134 = sub nsw i32 %133, 1
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds float, ptr %132, i64 %135
  %137 = load float, ptr %136, align 4, !tbaa !16
  %138 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %139 = load i32, ptr %2, align 4, !tbaa !5
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds ptr, ptr %138, i64 %140
  %142 = load ptr, ptr %141, align 8, !tbaa !12
  %143 = load i32, ptr %3, align 4, !tbaa !5
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds float, ptr %142, i64 %144
  %146 = load float, ptr %145, align 4, !tbaa !16
  %147 = call zeroext i8 @number_comparison_holds(i32 noundef %126, float noundef %137, float noundef %146)
  %148 = zext i8 %147 to i32
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %180

150:                                              ; preds = %117
  %151 = load i32, ptr %3, align 4, !tbaa !5
  %152 = load i32, ptr %2, align 4, !tbaa !5
  %153 = sub nsw i32 %152, 1
  %154 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %155 = load i32, ptr %2, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds ptr, ptr %154, i64 %156
  %158 = load ptr, ptr %157, align 8, !tbaa !12
  %159 = load i32, ptr %3, align 4, !tbaa !5
  %160 = sext i32 %159 to i64
  %161 = getelementptr inbounds i32, ptr %158, i64 %160
  %162 = load i32, ptr %161, align 4, !tbaa !5
  %163 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %164 = load i32, ptr %2, align 4, !tbaa !5
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds ptr, ptr %163, i64 %165
  %167 = load ptr, ptr %166, align 8, !tbaa !12
  %168 = load i32, ptr %3, align 4, !tbaa !5
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds float, ptr %167, i64 %169
  %171 = load float, ptr %170, align 4, !tbaa !16
  call void @update_f_goal(i32 noundef %151, i32 noundef %153, i32 noundef %162, float noundef %171)
  %172 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %173 = load i32, ptr %2, align 4, !tbaa !5
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds ptr, ptr %172, i64 %174
  %176 = load ptr, ptr %175, align 8, !tbaa !12
  %177 = load i32, ptr %3, align 4, !tbaa !5
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds i32, ptr %176, i64 %178
  store i32 3000, ptr %179, align 4, !tbaa !5
  br label %672

180:                                              ; preds = %117, %103
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %181

181:                                              ; preds = %325, %180
  %182 = load i32, ptr %4, align 4, !tbaa !5
  %183 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %184 = load i32, ptr %3, align 4, !tbaa !5
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds %struct._FlConn, ptr %183, i64 %185
  %187 = getelementptr inbounds %struct._FlConn, ptr %186, i32 0, i32 9
  %188 = load i32, ptr %187, align 8, !tbaa !22
  %189 = icmp slt i32 %182, %188
  br i1 %189, label %190, label %328

190:                                              ; preds = %181
  %191 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %192 = load i32, ptr %3, align 4, !tbaa !5
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds %struct._FlConn, ptr %191, i64 %193
  %195 = getelementptr inbounds %struct._FlConn, ptr %194, i32 0, i32 6
  %196 = load ptr, ptr %195, align 8, !tbaa !23
  %197 = load i32, ptr %4, align 4, !tbaa !5
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds i32, ptr %196, i64 %198
  %200 = load i32, ptr %199, align 4, !tbaa !5
  store i32 %200, ptr %8, align 4, !tbaa !5
  %201 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %202 = load i32, ptr %8, align 4, !tbaa !5
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds %struct._EfConn, ptr %201, i64 %203
  %205 = getelementptr inbounds %struct._EfConn, ptr %204, i32 0, i32 26
  %206 = load i32, ptr %205, align 4, !tbaa !24
  %207 = load i32, ptr %2, align 4, !tbaa !5
  %208 = call zeroext i8 @LESS(i32 noundef %206, i32 noundef %207)
  %209 = icmp ne i8 %208, 0
  br i1 %209, label %211, label %210

210:                                              ; preds = %190
  br label %325

211:                                              ; preds = %190
  %212 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %213 = load i32, ptr %3, align 4, !tbaa !5
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds %struct._FlConn, ptr %212, i64 %214
  %216 = getelementptr inbounds %struct._FlConn, ptr %215, i32 0, i32 7
  %217 = load ptr, ptr %216, align 8, !tbaa !26
  %218 = load i32, ptr %4, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds i32, ptr %217, i64 %219
  %221 = load i32, ptr %220, align 4, !tbaa !5
  %222 = icmp ne i32 %221, -1
  br i1 %222, label %223, label %246

223:                                              ; preds = %211
  %224 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %225 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %226 = load i32, ptr %3, align 4, !tbaa !5
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds %struct._FlConn, ptr %225, i64 %227
  %229 = getelementptr inbounds %struct._FlConn, ptr %228, i32 0, i32 7
  %230 = load ptr, ptr %229, align 8, !tbaa !26
  %231 = load i32, ptr %4, align 4, !tbaa !5
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds i32, ptr %230, i64 %232
  %234 = load i32, ptr %233, align 4, !tbaa !5
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds %struct._FlConn, ptr %224, i64 %235
  %237 = getelementptr inbounds %struct._FlConn, ptr %236, i32 0, i32 17
  %238 = load ptr, ptr %237, align 8, !tbaa !18
  %239 = load i32, ptr %2, align 4, !tbaa !5
  %240 = sub nsw i32 %239, 1
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds i8, ptr %238, i64 %241
  %243 = load i8, ptr %242, align 1, !tbaa !20
  %244 = icmp ne i8 %243, 0
  br i1 %244, label %246, label %245

245:                                              ; preds = %223
  br label %325

246:                                              ; preds = %223, %211
  %247 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %248 = load i32, ptr %3, align 4, !tbaa !5
  %249 = sext i32 %248 to i64
  %250 = getelementptr inbounds %struct._FlConn, ptr %247, i64 %249
  %251 = getelementptr inbounds %struct._FlConn, ptr %250, i32 0, i32 7
  %252 = load ptr, ptr %251, align 8, !tbaa !26
  %253 = load i32, ptr %4, align 4, !tbaa !5
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds i32, ptr %252, i64 %254
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = icmp ne i32 %256, -1
  br i1 %257, label %258, label %290

258:                                              ; preds = %246
  %259 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %260 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %261 = load i32, ptr %3, align 4, !tbaa !5
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds %struct._FlConn, ptr %260, i64 %262
  %264 = getelementptr inbounds %struct._FlConn, ptr %263, i32 0, i32 7
  %265 = load ptr, ptr %264, align 8, !tbaa !26
  %266 = load i32, ptr %4, align 4, !tbaa !5
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds i32, ptr %265, i64 %267
  %269 = load i32, ptr %268, align 4, !tbaa !5
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds %struct._FlConn, ptr %259, i64 %270
  %272 = getelementptr inbounds %struct._FlConn, ptr %271, i32 0, i32 18
  %273 = load ptr, ptr %272, align 8, !tbaa !21
  %274 = load i32, ptr %2, align 4, !tbaa !5
  %275 = sub nsw i32 %274, 1
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds float, ptr %273, i64 %276
  %278 = load float, ptr %277, align 4, !tbaa !16
  %279 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %280 = load i32, ptr %3, align 4, !tbaa !5
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds %struct._FlConn, ptr %279, i64 %281
  %283 = getelementptr inbounds %struct._FlConn, ptr %282, i32 0, i32 8
  %284 = load ptr, ptr %283, align 8, !tbaa !27
  %285 = load i32, ptr %4, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds float, ptr %284, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !16
  %289 = fadd float %278, %288
  store float %289, ptr %11, align 4, !tbaa !16
  br label %301

290:                                              ; preds = %246
  %291 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %292 = load i32, ptr %3, align 4, !tbaa !5
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %struct._FlConn, ptr %291, i64 %293
  %295 = getelementptr inbounds %struct._FlConn, ptr %294, i32 0, i32 8
  %296 = load ptr, ptr %295, align 8, !tbaa !27
  %297 = load i32, ptr %4, align 4, !tbaa !5
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds float, ptr %296, i64 %298
  %300 = load float, ptr %299, align 4, !tbaa !16
  store float %300, ptr %11, align 4, !tbaa !16
  br label %301

301:                                              ; preds = %290, %258
  %302 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %303 = load i32, ptr %2, align 4, !tbaa !5
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds ptr, ptr %302, i64 %304
  %306 = load ptr, ptr %305, align 8, !tbaa !12
  %307 = load i32, ptr %3, align 4, !tbaa !5
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %306, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !5
  %311 = load float, ptr %11, align 4, !tbaa !16
  %312 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %313 = load i32, ptr %2, align 4, !tbaa !5
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds ptr, ptr %312, i64 %314
  %316 = load ptr, ptr %315, align 8, !tbaa !12
  %317 = load i32, ptr %3, align 4, !tbaa !5
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds float, ptr %316, i64 %318
  %320 = load float, ptr %319, align 4, !tbaa !16
  %321 = call zeroext i8 @number_comparison_holds(i32 noundef %310, float noundef %311, float noundef %320)
  %322 = icmp ne i8 %321, 0
  br i1 %322, label %324, label %323

323:                                              ; preds = %301
  br label %325

324:                                              ; preds = %301
  br label %328

325:                                              ; preds = %323, %245, %210
  %326 = load i32, ptr %4, align 4, !tbaa !5
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %4, align 4, !tbaa !5
  br label %181, !llvm.loop !28

328:                                              ; preds = %324, %181
  %329 = load i32, ptr %4, align 4, !tbaa !5
  %330 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %331 = load i32, ptr %3, align 4, !tbaa !5
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds %struct._FlConn, ptr %330, i64 %332
  %334 = getelementptr inbounds %struct._FlConn, ptr %333, i32 0, i32 9
  %335 = load i32, ptr %334, align 8, !tbaa !22
  %336 = icmp slt i32 %329, %335
  br i1 %336, label %337, label %384

337:                                              ; preds = %328
  %338 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %339 = load i32, ptr %8, align 4, !tbaa !5
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds %struct._EfConn, ptr %338, i64 %340
  %342 = getelementptr inbounds %struct._EfConn, ptr %341, i32 0, i32 32
  %343 = load i32, ptr %342, align 4, !tbaa !29
  %344 = load i32, ptr %2, align 4, !tbaa !5
  %345 = sub nsw i32 %344, 1
  %346 = icmp eq i32 %343, %345
  br i1 %346, label %347, label %349

347:                                              ; preds = %337
  %348 = call i32 (ptr, ...) @printf(ptr noundef @.str.50)
  call void @exit(i32 noundef 1) #5
  unreachable

349:                                              ; preds = %337
  %350 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %351 = load i32, ptr %8, align 4, !tbaa !5
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds %struct._EfConn, ptr %350, i64 %352
  %354 = getelementptr inbounds %struct._EfConn, ptr %353, i32 0, i32 32
  %355 = load i32, ptr %354, align 4, !tbaa !29
  %356 = icmp eq i32 %355, -1
  br i1 %356, label %357, label %364

357:                                              ; preds = %349
  %358 = load i32, ptr %8, align 4, !tbaa !5
  %359 = load ptr, ptr @lin_plan_E, align 8, !tbaa !12
  %360 = load i32, ptr @lnum_in_plan_E, align 4, !tbaa !5
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr @lnum_in_plan_E, align 4, !tbaa !5
  %362 = sext i32 %360 to i64
  %363 = getelementptr inbounds i32, ptr %359, i64 %362
  store i32 %358, ptr %363, align 4, !tbaa !5
  br label %364

364:                                              ; preds = %357, %349
  %365 = load i32, ptr %2, align 4, !tbaa !5
  %366 = sub nsw i32 %365, 1
  %367 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %368 = load i32, ptr %8, align 4, !tbaa !5
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds %struct._EfConn, ptr %367, i64 %369
  %371 = getelementptr inbounds %struct._EfConn, ptr %370, i32 0, i32 32
  store i32 %366, ptr %371, align 4, !tbaa !29
  br label %372

372:                                              ; preds = %364
  %373 = load i32, ptr %2, align 4, !tbaa !5
  %374 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %375 = load i32, ptr %8, align 4, !tbaa !5
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %struct._EfConn, ptr %374, i64 %376
  %378 = getelementptr inbounds %struct._EfConn, ptr %377, i32 0, i32 0
  %379 = load i32, ptr %378, align 8, !tbaa !30
  call void @select_op(i32 noundef %373, i32 noundef %379)
  %380 = load i32, ptr %2, align 4, !tbaa !5
  %381 = load i32, ptr %8, align 4, !tbaa !5
  call void @introduce_benefits_and_enforcements(i32 noundef %380, i32 noundef %381)
  %382 = load i32, ptr %2, align 4, !tbaa !5
  %383 = load i32, ptr %8, align 4, !tbaa !5
  call void @introduce_pc_goals(i32 noundef %382, i32 noundef %383)
  br label %672

384:                                              ; preds = %328
  %385 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %386 = load i32, ptr %3, align 4, !tbaa !5
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds %struct._FlConn, ptr %385, i64 %387
  %389 = getelementptr inbounds %struct._FlConn, ptr %388, i32 0, i32 17
  %390 = load ptr, ptr %389, align 8, !tbaa !18
  %391 = load i32, ptr %2, align 4, !tbaa !5
  %392 = sub nsw i32 %391, 1
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i8, ptr %390, i64 %393
  %395 = load i8, ptr %394, align 1, !tbaa !20
  %396 = icmp ne i8 %395, 0
  br i1 %396, label %399, label %397

397:                                              ; preds = %384
  %398 = call i32 (ptr, ...) @printf(ptr noundef @.str.51)
  call void @exit(i32 noundef 1) #5
  unreachable

399:                                              ; preds = %384
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %400

400:                                              ; preds = %603, %399
  %401 = load i32, ptr %4, align 4, !tbaa !5
  %402 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %403 = load i32, ptr %3, align 4, !tbaa !5
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds %struct._FlConn, ptr %402, i64 %404
  %406 = getelementptr inbounds %struct._FlConn, ptr %405, i32 0, i32 5
  %407 = load i32, ptr %406, align 8, !tbaa !31
  %408 = icmp slt i32 %401, %407
  br i1 %408, label %409, label %606

409:                                              ; preds = %400
  %410 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %411 = load i32, ptr %3, align 4, !tbaa !5
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds %struct._FlConn, ptr %410, i64 %412
  %414 = getelementptr inbounds %struct._FlConn, ptr %413, i32 0, i32 2
  %415 = load ptr, ptr %414, align 8, !tbaa !32
  %416 = load i32, ptr %4, align 4, !tbaa !5
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds i32, ptr %415, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !5
  store i32 %419, ptr %8, align 4, !tbaa !5
  %420 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %421 = load i32, ptr %8, align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds %struct._EfConn, ptr %420, i64 %422
  %424 = getelementptr inbounds %struct._EfConn, ptr %423, i32 0, i32 26
  %425 = load i32, ptr %424, align 4, !tbaa !24
  %426 = load i32, ptr %2, align 4, !tbaa !5
  %427 = call zeroext i8 @LESS(i32 noundef %425, i32 noundef %426)
  %428 = icmp ne i8 %427, 0
  br i1 %428, label %430, label %429

429:                                              ; preds = %409
  br label %603

430:                                              ; preds = %409
  %431 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %432 = load i32, ptr %3, align 4, !tbaa !5
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds %struct._FlConn, ptr %431, i64 %433
  %435 = getelementptr inbounds %struct._FlConn, ptr %434, i32 0, i32 3
  %436 = load ptr, ptr %435, align 8, !tbaa !33
  %437 = load i32, ptr %4, align 4, !tbaa !5
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i32, ptr %436, i64 %438
  %440 = load i32, ptr %439, align 4, !tbaa !5
  %441 = icmp ne i32 %440, -1
  br i1 %441, label %442, label %465

442:                                              ; preds = %430
  %443 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %444 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %445 = load i32, ptr %3, align 4, !tbaa !5
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds %struct._FlConn, ptr %444, i64 %446
  %448 = getelementptr inbounds %struct._FlConn, ptr %447, i32 0, i32 3
  %449 = load ptr, ptr %448, align 8, !tbaa !33
  %450 = load i32, ptr %4, align 4, !tbaa !5
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %449, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !5
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds %struct._FlConn, ptr %443, i64 %454
  %456 = getelementptr inbounds %struct._FlConn, ptr %455, i32 0, i32 17
  %457 = load ptr, ptr %456, align 8, !tbaa !18
  %458 = load i32, ptr %2, align 4, !tbaa !5
  %459 = sub nsw i32 %458, 1
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds i8, ptr %457, i64 %460
  %462 = load i8, ptr %461, align 1, !tbaa !20
  %463 = icmp ne i8 %462, 0
  br i1 %463, label %465, label %464

464:                                              ; preds = %442
  br label %603

465:                                              ; preds = %442, %430
  %466 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %467 = load i32, ptr %3, align 4, !tbaa !5
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %struct._FlConn, ptr %466, i64 %468
  %470 = getelementptr inbounds %struct._FlConn, ptr %469, i32 0, i32 3
  %471 = load ptr, ptr %470, align 8, !tbaa !33
  %472 = load i32, ptr %4, align 4, !tbaa !5
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds i32, ptr %471, i64 %473
  %475 = load i32, ptr %474, align 4, !tbaa !5
  %476 = icmp ne i32 %475, -1
  br i1 %476, label %477, label %509

477:                                              ; preds = %465
  %478 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %479 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %480 = load i32, ptr %3, align 4, !tbaa !5
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds %struct._FlConn, ptr %479, i64 %481
  %483 = getelementptr inbounds %struct._FlConn, ptr %482, i32 0, i32 3
  %484 = load ptr, ptr %483, align 8, !tbaa !33
  %485 = load i32, ptr %4, align 4, !tbaa !5
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds i32, ptr %484, i64 %486
  %488 = load i32, ptr %487, align 4, !tbaa !5
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds %struct._FlConn, ptr %478, i64 %489
  %491 = getelementptr inbounds %struct._FlConn, ptr %490, i32 0, i32 18
  %492 = load ptr, ptr %491, align 8, !tbaa !21
  %493 = load i32, ptr %2, align 4, !tbaa !5
  %494 = sub nsw i32 %493, 1
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds float, ptr %492, i64 %495
  %497 = load float, ptr %496, align 4, !tbaa !16
  %498 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %499 = load i32, ptr %3, align 4, !tbaa !5
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds %struct._FlConn, ptr %498, i64 %500
  %502 = getelementptr inbounds %struct._FlConn, ptr %501, i32 0, i32 4
  %503 = load ptr, ptr %502, align 8, !tbaa !34
  %504 = load i32, ptr %4, align 4, !tbaa !5
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds float, ptr %503, i64 %505
  %507 = load float, ptr %506, align 4, !tbaa !16
  %508 = fadd float %497, %507
  store float %508, ptr %11, align 4, !tbaa !16
  br label %520

509:                                              ; preds = %465
  %510 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %511 = load i32, ptr %3, align 4, !tbaa !5
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds %struct._FlConn, ptr %510, i64 %512
  %514 = getelementptr inbounds %struct._FlConn, ptr %513, i32 0, i32 4
  %515 = load ptr, ptr %514, align 8, !tbaa !34
  %516 = load i32, ptr %4, align 4, !tbaa !5
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds float, ptr %515, i64 %517
  %519 = load float, ptr %518, align 4, !tbaa !16
  store float %519, ptr %11, align 4, !tbaa !16
  br label %520

520:                                              ; preds = %509, %477
  %521 = load float, ptr %11, align 4, !tbaa !16
  %522 = fcmp ole float %521, 0.000000e+00
  br i1 %522, label %523, label %524

523:                                              ; preds = %520
  br label %603

524:                                              ; preds = %520
  %525 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %526 = load i32, ptr %8, align 4, !tbaa !5
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds %struct._EfConn, ptr %525, i64 %527
  %529 = getelementptr inbounds %struct._EfConn, ptr %528, i32 0, i32 32
  %530 = load i32, ptr %529, align 4, !tbaa !29
  %531 = load i32, ptr %2, align 4, !tbaa !5
  %532 = sub nsw i32 %531, 1
  %533 = icmp eq i32 %530, %532
  br i1 %533, label %534, label %535

534:                                              ; preds = %524
  br label %603

535:                                              ; preds = %524
  %536 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %537 = load i32, ptr %8, align 4, !tbaa !5
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds %struct._EfConn, ptr %536, i64 %538
  %540 = getelementptr inbounds %struct._EfConn, ptr %539, i32 0, i32 32
  %541 = load i32, ptr %540, align 4, !tbaa !29
  %542 = icmp eq i32 %541, -1
  br i1 %542, label %543, label %550

543:                                              ; preds = %535
  %544 = load i32, ptr %8, align 4, !tbaa !5
  %545 = load ptr, ptr @lin_plan_E, align 8, !tbaa !12
  %546 = load i32, ptr @lnum_in_plan_E, align 4, !tbaa !5
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr @lnum_in_plan_E, align 4, !tbaa !5
  %548 = sext i32 %546 to i64
  %549 = getelementptr inbounds i32, ptr %545, i64 %548
  store i32 %544, ptr %549, align 4, !tbaa !5
  br label %550

550:                                              ; preds = %543, %535
  %551 = load i32, ptr %2, align 4, !tbaa !5
  %552 = sub nsw i32 %551, 1
  %553 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %554 = load i32, ptr %8, align 4, !tbaa !5
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct._EfConn, ptr %553, i64 %555
  %557 = getelementptr inbounds %struct._EfConn, ptr %556, i32 0, i32 32
  store i32 %552, ptr %557, align 4, !tbaa !29
  br label %558

558:                                              ; preds = %550
  %559 = load i32, ptr %2, align 4, !tbaa !5
  %560 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %561 = load i32, ptr %8, align 4, !tbaa !5
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds %struct._EfConn, ptr %560, i64 %562
  %564 = getelementptr inbounds %struct._EfConn, ptr %563, i32 0, i32 0
  %565 = load i32, ptr %564, align 8, !tbaa !30
  call void @select_op(i32 noundef %559, i32 noundef %565)
  %566 = load i32, ptr %2, align 4, !tbaa !5
  %567 = load i32, ptr %8, align 4, !tbaa !5
  call void @introduce_benefits_and_enforcements(i32 noundef %566, i32 noundef %567)
  %568 = load i32, ptr %2, align 4, !tbaa !5
  %569 = load i32, ptr %8, align 4, !tbaa !5
  call void @introduce_pc_goals(i32 noundef %568, i32 noundef %569)
  %570 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %571 = load i32, ptr %2, align 4, !tbaa !5
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds ptr, ptr %570, i64 %572
  %574 = load ptr, ptr %573, align 8, !tbaa !12
  %575 = load i32, ptr %3, align 4, !tbaa !5
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds i32, ptr %574, i64 %576
  %578 = load i32, ptr %577, align 4, !tbaa !5
  %579 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %580 = load i32, ptr %3, align 4, !tbaa !5
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds %struct._FlConn, ptr %579, i64 %581
  %583 = getelementptr inbounds %struct._FlConn, ptr %582, i32 0, i32 18
  %584 = load ptr, ptr %583, align 8, !tbaa !21
  %585 = load i32, ptr %2, align 4, !tbaa !5
  %586 = sub nsw i32 %585, 1
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds float, ptr %584, i64 %587
  %589 = load float, ptr %588, align 4, !tbaa !16
  %590 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %591 = load i32, ptr %2, align 4, !tbaa !5
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds ptr, ptr %590, i64 %592
  %594 = load ptr, ptr %593, align 8, !tbaa !12
  %595 = load i32, ptr %3, align 4, !tbaa !5
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds float, ptr %594, i64 %596
  %598 = load float, ptr %597, align 4, !tbaa !16
  %599 = call zeroext i8 @number_comparison_holds(i32 noundef %578, float noundef %589, float noundef %598)
  %600 = icmp ne i8 %599, 0
  br i1 %600, label %601, label %602

601:                                              ; preds = %558
  br label %606

602:                                              ; preds = %558
  br label %603

603:                                              ; preds = %602, %534, %523, %464, %429
  %604 = load i32, ptr %4, align 4, !tbaa !5
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %4, align 4, !tbaa !5
  br label %400, !llvm.loop !35

606:                                              ; preds = %601, %400
  %607 = load i32, ptr %3, align 4, !tbaa !5
  %608 = load i32, ptr %2, align 4, !tbaa !5
  %609 = sub nsw i32 %608, 1
  %610 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %611 = load i32, ptr %2, align 4, !tbaa !5
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds ptr, ptr %610, i64 %612
  %614 = load ptr, ptr %613, align 8, !tbaa !12
  %615 = load i32, ptr %3, align 4, !tbaa !5
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds i32, ptr %614, i64 %616
  %618 = load i32, ptr %617, align 4, !tbaa !5
  %619 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %620 = load i32, ptr %2, align 4, !tbaa !5
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds ptr, ptr %619, i64 %621
  %623 = load ptr, ptr %622, align 8, !tbaa !12
  %624 = load i32, ptr %3, align 4, !tbaa !5
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds float, ptr %623, i64 %625
  %627 = load float, ptr %626, align 4, !tbaa !16
  call void @update_f_goal(i32 noundef %607, i32 noundef %609, i32 noundef %618, float noundef %627)
  %628 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %629 = load i32, ptr %2, align 4, !tbaa !5
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds ptr, ptr %628, i64 %630
  %632 = load ptr, ptr %631, align 8, !tbaa !12
  %633 = load i32, ptr %3, align 4, !tbaa !5
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds i32, ptr %632, i64 %634
  store i32 3000, ptr %635, align 4, !tbaa !5
  %636 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %637 = load i32, ptr %2, align 4, !tbaa !5
  %638 = sub nsw i32 %637, 1
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds ptr, ptr %636, i64 %639
  %641 = load ptr, ptr %640, align 8, !tbaa !12
  %642 = load i32, ptr %3, align 4, !tbaa !5
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds i32, ptr %641, i64 %643
  %645 = load i32, ptr %644, align 4, !tbaa !5
  %646 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %647 = load i32, ptr %3, align 4, !tbaa !5
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct._FlConn, ptr %646, i64 %648
  %650 = getelementptr inbounds %struct._FlConn, ptr %649, i32 0, i32 18
  %651 = load ptr, ptr %650, align 8, !tbaa !21
  %652 = load i32, ptr %2, align 4, !tbaa !5
  %653 = sub nsw i32 %652, 1
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds float, ptr %651, i64 %654
  %656 = load float, ptr %655, align 4, !tbaa !16
  %657 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %658 = load i32, ptr %2, align 4, !tbaa !5
  %659 = sub nsw i32 %658, 1
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds ptr, ptr %657, i64 %660
  %662 = load ptr, ptr %661, align 8, !tbaa !12
  %663 = load i32, ptr %3, align 4, !tbaa !5
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds float, ptr %662, i64 %664
  %666 = load float, ptr %665, align 4, !tbaa !16
  %667 = call zeroext i8 @number_comparison_holds(i32 noundef %645, float noundef %656, float noundef %666)
  %668 = icmp ne i8 %667, 0
  br i1 %668, label %671, label %669

669:                                              ; preds = %606
  %670 = call i32 (ptr, ...) @printf(ptr noundef @.str.52)
  call void @exit(i32 noundef 1) #5
  unreachable

671:                                              ; preds = %606
  br label %672

672:                                              ; preds = %671, %372, %150, %102
  %673 = load i32, ptr %3, align 4, !tbaa !5
  %674 = add nsw i32 %673, 1
  store i32 %674, ptr %3, align 4, !tbaa !5
  br label %87, !llvm.loop !36

675:                                              ; preds = %87
  store i32 0, ptr %3, align 4, !tbaa !5
  br label %676

676:                                              ; preds = %1006, %675
  %677 = load i32, ptr %3, align 4, !tbaa !5
  %678 = load ptr, ptr @lnum_goals_at, align 8, !tbaa !12
  %679 = load i32, ptr %2, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds i32, ptr %678, i64 %680
  %682 = load i32, ptr %681, align 4, !tbaa !5
  %683 = icmp slt i32 %677, %682
  br i1 %683, label %684, label %1009

684:                                              ; preds = %676
  %685 = load ptr, ptr @lgoals_at, align 8, !tbaa !12
  %686 = load i32, ptr %2, align 4, !tbaa !5
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds ptr, ptr %685, i64 %687
  %689 = load ptr, ptr %688, align 8, !tbaa !12
  %690 = load i32, ptr %3, align 4, !tbaa !5
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds i32, ptr %689, i64 %691
  %693 = load i32, ptr %692, align 4, !tbaa !5
  store i32 %693, ptr %6, align 4, !tbaa !5
  %694 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %695 = load i32, ptr %6, align 4, !tbaa !5
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds %struct._FtConn, ptr %694, i64 %696
  %698 = getelementptr inbounds %struct._FtConn, ptr %697, i32 0, i32 12
  %699 = load i32, ptr %698, align 4, !tbaa !37
  %700 = load i32, ptr %2, align 4, !tbaa !5
  %701 = icmp eq i32 %699, %700
  br i1 %701, label %702, label %703

702:                                              ; preds = %684
  br label %1006

703:                                              ; preds = %684
  %704 = load i32, ptr getelementptr inbounds (%struct._command_line, ptr @gcmd_line, i32 0, i32 4), align 4, !tbaa !39
  %705 = icmp ne i32 %704, 0
  br i1 %705, label %706, label %710

706:                                              ; preds = %703
  %707 = load i32, ptr %2, align 4, !tbaa !5
  %708 = call i32 (ptr, ...) @printf(ptr noundef @.str.53, i32 noundef %707)
  %709 = load i32, ptr %6, align 4, !tbaa !5
  call void @print_ft_name(i32 noundef %709)
  br label %710

710:                                              ; preds = %706, %703
  %711 = load i8, ptr @gcost_rplans, align 1, !tbaa !20
  %712 = icmp ne i8 %711, 0
  br i1 %712, label %765, label %713

713:                                              ; preds = %710
  store float -1.000000e+00, ptr %13, align 4, !tbaa !16
  store i32 -1, ptr %7, align 4, !tbaa !5
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %714

714:                                              ; preds = %761, %713
  %715 = load i32, ptr %4, align 4, !tbaa !5
  %716 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %717 = load i32, ptr %6, align 4, !tbaa !5
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds %struct._FtConn, ptr %716, i64 %718
  %720 = getelementptr inbounds %struct._FtConn, ptr %719, i32 0, i32 3
  %721 = load i32, ptr %720, align 8, !tbaa !40
  %722 = icmp slt i32 %715, %721
  br i1 %722, label %723, label %764

723:                                              ; preds = %714
  %724 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %725 = load i32, ptr %6, align 4, !tbaa !5
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds %struct._FtConn, ptr %724, i64 %726
  %728 = getelementptr inbounds %struct._FtConn, ptr %727, i32 0, i32 2
  %729 = load ptr, ptr %728, align 8, !tbaa !41
  %730 = load i32, ptr %4, align 4, !tbaa !5
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds i32, ptr %729, i64 %731
  %733 = load i32, ptr %732, align 4, !tbaa !5
  store i32 %733, ptr %8, align 4, !tbaa !5
  %734 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %735 = load i32, ptr %8, align 4, !tbaa !5
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds %struct._EfConn, ptr %734, i64 %736
  %738 = getelementptr inbounds %struct._EfConn, ptr %737, i32 0, i32 26
  %739 = load i32, ptr %738, align 4, !tbaa !24
  %740 = load i32, ptr %2, align 4, !tbaa !5
  %741 = sub nsw i32 %740, 1
  %742 = icmp ne i32 %739, %741
  br i1 %742, label %743, label %744

743:                                              ; preds = %723
  br label %761

744:                                              ; preds = %723
  %745 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %746 = load i32, ptr %8, align 4, !tbaa !5
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds %struct._EfConn, ptr %745, i64 %747
  %749 = getelementptr inbounds %struct._EfConn, ptr %748, i32 0, i32 27
  %750 = load float, ptr %749, align 8, !tbaa !42
  store float %750, ptr %12, align 4, !tbaa !16
  %751 = load float, ptr %13, align 4, !tbaa !16
  %752 = fcmp oeq float %751, -1.000000e+00
  br i1 %752, label %757, label %753

753:                                              ; preds = %744
  %754 = load float, ptr %12, align 4, !tbaa !16
  %755 = load float, ptr %13, align 4, !tbaa !16
  %756 = fcmp olt float %754, %755
  br i1 %756, label %757, label %760

757:                                              ; preds = %753, %744
  %758 = load float, ptr %12, align 4, !tbaa !16
  store float %758, ptr %13, align 4, !tbaa !16
  %759 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %759, ptr %7, align 4, !tbaa !5
  br label %760

760:                                              ; preds = %757, %753
  br label %761

761:                                              ; preds = %760, %743
  %762 = load i32, ptr %4, align 4, !tbaa !5
  %763 = add nsw i32 %762, 1
  store i32 %763, ptr %4, align 4, !tbaa !5
  br label %714, !llvm.loop !43

764:                                              ; preds = %714
  br label %954

765:                                              ; preds = %710
  store float -1.000000e+00, ptr %13, align 4, !tbaa !16
  store i32 -1, ptr %15, align 4, !tbaa !5
  store i32 -1, ptr %7, align 4, !tbaa !5
  store i32 0, ptr %4, align 4, !tbaa !5
  br label %766

766:                                              ; preds = %950, %765
  %767 = load i32, ptr %4, align 4, !tbaa !5
  %768 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %769 = load i32, ptr %6, align 4, !tbaa !5
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds %struct._FtConn, ptr %768, i64 %770
  %772 = getelementptr inbounds %struct._FtConn, ptr %771, i32 0, i32 3
  %773 = load i32, ptr %772, align 8, !tbaa !40
  %774 = icmp slt i32 %767, %773
  br i1 %774, label %775, label %953

775:                                              ; preds = %766
  %776 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %777 = load i32, ptr %6, align 4, !tbaa !5
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds %struct._FtConn, ptr %776, i64 %778
  %780 = getelementptr inbounds %struct._FtConn, ptr %779, i32 0, i32 2
  %781 = load ptr, ptr %780, align 8, !tbaa !41
  %782 = load i32, ptr %4, align 4, !tbaa !5
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds i32, ptr %781, i64 %783
  %785 = load i32, ptr %784, align 4, !tbaa !5
  store i32 %785, ptr %8, align 4, !tbaa !5
  %786 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %787 = load i32, ptr %8, align 4, !tbaa !5
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds %struct._EfConn, ptr %786, i64 %788
  %790 = getelementptr inbounds %struct._EfConn, ptr %789, i32 0, i32 26
  %791 = load i32, ptr %790, align 4, !tbaa !24
  %792 = icmp eq i32 %791, -1
  br i1 %792, label %802, label %793

793:                                              ; preds = %775
  %794 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %795 = load i32, ptr %8, align 4, !tbaa !5
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds %struct._EfConn, ptr %794, i64 %796
  %798 = getelementptr inbounds %struct._EfConn, ptr %797, i32 0, i32 26
  %799 = load i32, ptr %798, align 4, !tbaa !24
  %800 = load i32, ptr %2, align 4, !tbaa !5
  %801 = icmp sge i32 %799, %800
  br i1 %801, label %802, label %803

802:                                              ; preds = %793, %775
  br label %950

803:                                              ; preds = %793
  %804 = load ptr, ptr @gop_conn, align 8, !tbaa !12
  %805 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %806 = load i32, ptr %8, align 4, !tbaa !5
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds %struct._EfConn, ptr %805, i64 %807
  %809 = getelementptr inbounds %struct._EfConn, ptr %808, i32 0, i32 0
  %810 = load i32, ptr %809, align 8, !tbaa !30
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds %struct._OpConn, ptr %804, i64 %811
  %813 = getelementptr inbounds %struct._OpConn, ptr %812, i32 0, i32 8
  %814 = load float, ptr %813, align 8, !tbaa !44
  store float %814, ptr %12, align 4, !tbaa !16
  store i32 0, ptr %14, align 4, !tbaa !5
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %815

815:                                              ; preds = %859, %803
  %816 = load i32, ptr %5, align 4, !tbaa !5
  %817 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %818 = load i32, ptr %8, align 4, !tbaa !5
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds %struct._EfConn, ptr %817, i64 %819
  %821 = getelementptr inbounds %struct._EfConn, ptr %820, i32 0, i32 5
  %822 = load i32, ptr %821, align 8, !tbaa !46
  %823 = icmp slt i32 %816, %822
  br i1 %823, label %824, label %862

824:                                              ; preds = %815
  %825 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %826 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %827 = load i32, ptr %8, align 4, !tbaa !5
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds %struct._EfConn, ptr %826, i64 %828
  %830 = getelementptr inbounds %struct._EfConn, ptr %829, i32 0, i32 4
  %831 = load ptr, ptr %830, align 8, !tbaa !47
  %832 = load i32, ptr %5, align 4, !tbaa !5
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds i32, ptr %831, i64 %833
  %835 = load i32, ptr %834, align 4, !tbaa !5
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds %struct._FtConn, ptr %825, i64 %836
  %838 = getelementptr inbounds %struct._FtConn, ptr %837, i32 0, i32 9
  %839 = load float, ptr %838, align 8, !tbaa !48
  %840 = load float, ptr %12, align 4, !tbaa !16
  %841 = fadd float %840, %839
  store float %841, ptr %12, align 4, !tbaa !16
  %842 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %843 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %844 = load i32, ptr %8, align 4, !tbaa !5
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct._EfConn, ptr %843, i64 %845
  %847 = getelementptr inbounds %struct._EfConn, ptr %846, i32 0, i32 4
  %848 = load ptr, ptr %847, align 8, !tbaa !47
  %849 = load i32, ptr %5, align 4, !tbaa !5
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds i32, ptr %848, i64 %850
  %852 = load i32, ptr %851, align 4, !tbaa !5
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds %struct._FtConn, ptr %842, i64 %853
  %855 = getelementptr inbounds %struct._FtConn, ptr %854, i32 0, i32 8
  %856 = load i32, ptr %855, align 4, !tbaa !49
  %857 = load i32, ptr %14, align 4, !tbaa !5
  %858 = add nsw i32 %857, %856
  store i32 %858, ptr %14, align 4, !tbaa !5
  br label %859

859:                                              ; preds = %824
  %860 = load i32, ptr %5, align 4, !tbaa !5
  %861 = add nsw i32 %860, 1
  store i32 %861, ptr %5, align 4, !tbaa !5
  br label %815, !llvm.loop !50

862:                                              ; preds = %815
  %863 = load i32, ptr getelementptr inbounds (%struct._command_line, ptr @gcmd_line, i32 0, i32 4), align 4, !tbaa !39
  %864 = icmp ne i32 %863, 0
  br i1 %864, label %865, label %895

865:                                              ; preds = %862
  %866 = call i32 (ptr, ...) @printf(ptr noundef @.str.54)
  %867 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %868 = load i32, ptr %8, align 4, !tbaa !5
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds %struct._EfConn, ptr %867, i64 %869
  %871 = getelementptr inbounds %struct._EfConn, ptr %870, i32 0, i32 0
  %872 = load i32, ptr %871, align 8, !tbaa !30
  call void @print_op_name(i32 noundef %872)
  %873 = load float, ptr %12, align 4, !tbaa !16
  %874 = fpext float %873 to double
  %875 = load ptr, ptr @gop_conn, align 8, !tbaa !12
  %876 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %877 = load i32, ptr %8, align 4, !tbaa !5
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds %struct._EfConn, ptr %876, i64 %878
  %880 = getelementptr inbounds %struct._EfConn, ptr %879, i32 0, i32 0
  %881 = load i32, ptr %880, align 8, !tbaa !30
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds %struct._OpConn, ptr %875, i64 %882
  %884 = getelementptr inbounds %struct._OpConn, ptr %883, i32 0, i32 8
  %885 = load float, ptr %884, align 8, !tbaa !44
  %886 = fpext float %885 to double
  %887 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %888 = load i32, ptr %8, align 4, !tbaa !5
  %889 = sext i32 %888 to i64
  %890 = getelementptr inbounds %struct._EfConn, ptr %887, i64 %889
  %891 = getelementptr inbounds %struct._EfConn, ptr %890, i32 0, i32 26
  %892 = load i32, ptr %891, align 4, !tbaa !24
  %893 = load i32, ptr %14, align 4, !tbaa !5
  %894 = call i32 (ptr, ...) @printf(ptr noundef @.str.55, double noundef %874, double noundef %886, i32 noundef %892, i32 noundef %893)
  br label %895

895:                                              ; preds = %865, %862
  %896 = load float, ptr %13, align 4, !tbaa !16
  %897 = fcmp oeq float %896, -1.000000e+00
  br i1 %897, label %902, label %898

898:                                              ; preds = %895
  %899 = load float, ptr %12, align 4, !tbaa !16
  %900 = load float, ptr %13, align 4, !tbaa !16
  %901 = fcmp olt float %899, %900
  br i1 %901, label %902, label %917

902:                                              ; preds = %898, %895
  %903 = load i32, ptr getelementptr inbounds (%struct._command_line, ptr @gcmd_line, i32 0, i32 4), align 4, !tbaa !39
  %904 = icmp ne i32 %903, 0
  br i1 %904, label %905, label %907

905:                                              ; preds = %902
  %906 = call i32 (ptr, ...) @printf(ptr noundef @.str.56)
  br label %907

907:                                              ; preds = %905, %902
  %908 = load float, ptr %12, align 4, !tbaa !16
  store float %908, ptr %13, align 4, !tbaa !16
  %909 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %909, ptr %15, align 4, !tbaa !5
  %910 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %911 = load i32, ptr %8, align 4, !tbaa !5
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds %struct._EfConn, ptr %910, i64 %912
  %914 = getelementptr inbounds %struct._EfConn, ptr %913, i32 0, i32 26
  %915 = load i32, ptr %914, align 4, !tbaa !24
  store i32 %915, ptr %16, align 4, !tbaa !5
  %916 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %916, ptr %7, align 4, !tbaa !5
  br label %950

917:                                              ; preds = %898
  %918 = load float, ptr %13, align 4, !tbaa !16
  %919 = fcmp une float %918, 0.000000e+00
  br i1 %919, label %920, label %935

920:                                              ; preds = %917
  %921 = load i32, ptr %14, align 4, !tbaa !5
  %922 = load i32, ptr %15, align 4, !tbaa !5
  %923 = icmp slt i32 %921, %922
  br i1 %923, label %933, label %924

924:                                              ; preds = %920
  %925 = load i32, ptr %16, align 4, !tbaa !5
  %926 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %927 = load i32, ptr %8, align 4, !tbaa !5
  %928 = sext i32 %927 to i64
  %929 = getelementptr inbounds %struct._EfConn, ptr %926, i64 %928
  %930 = getelementptr inbounds %struct._EfConn, ptr %929, i32 0, i32 26
  %931 = load i32, ptr %930, align 4, !tbaa !24
  %932 = icmp sgt i32 %925, %931
  br label %933

933:                                              ; preds = %924, %920
  %934 = phi i1 [ true, %920 ], [ %932, %924 ]
  br label %935

935:                                              ; preds = %933, %917
  %936 = phi i1 [ false, %917 ], [ %934, %933 ]
  %937 = zext i1 %936 to i32
  %938 = sitofp i32 %937 to float
  store float %938, ptr %12, align 4, !tbaa !16
  %939 = fcmp une float %938, 0.000000e+00
  br i1 %939, label %940, label %949

940:                                              ; preds = %935
  %941 = load i32, ptr getelementptr inbounds (%struct._command_line, ptr @gcmd_line, i32 0, i32 4), align 4, !tbaa !39
  %942 = icmp ne i32 %941, 0
  br i1 %942, label %943, label %945

943:                                              ; preds = %940
  %944 = call i32 (ptr, ...) @printf(ptr noundef @.str.57)
  br label %945

945:                                              ; preds = %943, %940
  %946 = load float, ptr %12, align 4, !tbaa !16
  store float %946, ptr %13, align 4, !tbaa !16
  %947 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %947, ptr %15, align 4, !tbaa !5
  %948 = load i32, ptr %8, align 4, !tbaa !5
  store i32 %948, ptr %7, align 4, !tbaa !5
  br label %949

949:                                              ; preds = %945, %935
  br label %950

950:                                              ; preds = %949, %907, %802
  %951 = load i32, ptr %4, align 4, !tbaa !5
  %952 = add nsw i32 %951, 1
  store i32 %952, ptr %4, align 4, !tbaa !5
  br label %766, !llvm.loop !51

953:                                              ; preds = %766
  br label %954

954:                                              ; preds = %953, %764
  %955 = load i32, ptr %7, align 4, !tbaa !5
  store i32 %955, ptr %8, align 4, !tbaa !5
  %956 = load i32, ptr %7, align 4, !tbaa !5
  %957 = icmp eq i32 %956, -1
  br i1 %957, label %958, label %960

958:                                              ; preds = %954
  %959 = call i32 (ptr, ...) @printf(ptr noundef @.str.58)
  call void @exit(i32 noundef 1) #5
  unreachable

960:                                              ; preds = %954
  %961 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %962 = load i32, ptr %8, align 4, !tbaa !5
  %963 = sext i32 %962 to i64
  %964 = getelementptr inbounds %struct._EfConn, ptr %961, i64 %963
  %965 = getelementptr inbounds %struct._EfConn, ptr %964, i32 0, i32 32
  %966 = load i32, ptr %965, align 4, !tbaa !29
  %967 = load i32, ptr %2, align 4, !tbaa !5
  %968 = sub nsw i32 %967, 1
  %969 = icmp eq i32 %966, %968
  br i1 %969, label %970, label %971

970:                                              ; preds = %960
  br label %1006

971:                                              ; preds = %960
  %972 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %973 = load i32, ptr %8, align 4, !tbaa !5
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds %struct._EfConn, ptr %972, i64 %974
  %976 = getelementptr inbounds %struct._EfConn, ptr %975, i32 0, i32 32
  %977 = load i32, ptr %976, align 4, !tbaa !29
  %978 = icmp eq i32 %977, -1
  br i1 %978, label %979, label %986

979:                                              ; preds = %971
  %980 = load i32, ptr %8, align 4, !tbaa !5
  %981 = load ptr, ptr @lin_plan_E, align 8, !tbaa !12
  %982 = load i32, ptr @lnum_in_plan_E, align 4, !tbaa !5
  %983 = add nsw i32 %982, 1
  store i32 %983, ptr @lnum_in_plan_E, align 4, !tbaa !5
  %984 = sext i32 %982 to i64
  %985 = getelementptr inbounds i32, ptr %981, i64 %984
  store i32 %980, ptr %985, align 4, !tbaa !5
  br label %986

986:                                              ; preds = %979, %971
  %987 = load i32, ptr %2, align 4, !tbaa !5
  %988 = sub nsw i32 %987, 1
  %989 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %990 = load i32, ptr %8, align 4, !tbaa !5
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds %struct._EfConn, ptr %989, i64 %991
  %993 = getelementptr inbounds %struct._EfConn, ptr %992, i32 0, i32 32
  store i32 %988, ptr %993, align 4, !tbaa !29
  br label %994

994:                                              ; preds = %986
  %995 = load i32, ptr %2, align 4, !tbaa !5
  %996 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %997 = load i32, ptr %8, align 4, !tbaa !5
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds %struct._EfConn, ptr %996, i64 %998
  %1000 = getelementptr inbounds %struct._EfConn, ptr %999, i32 0, i32 0
  %1001 = load i32, ptr %1000, align 8, !tbaa !30
  call void @select_op(i32 noundef %995, i32 noundef %1001)
  %1002 = load i32, ptr %2, align 4, !tbaa !5
  %1003 = load i32, ptr %8, align 4, !tbaa !5
  call void @introduce_benefits_and_enforcements(i32 noundef %1002, i32 noundef %1003)
  %1004 = load i32, ptr %2, align 4, !tbaa !5
  %1005 = load i32, ptr %8, align 4, !tbaa !5
  call void @introduce_pc_goals(i32 noundef %1004, i32 noundef %1005)
  br label %1006

1006:                                             ; preds = %994, %970, %702
  %1007 = load i32, ptr %3, align 4, !tbaa !5
  %1008 = add nsw i32 %1007, 1
  store i32 %1008, ptr %3, align 4, !tbaa !5
  br label %676, !llvm.loop !52

1009:                                             ; preds = %676
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #4
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @enforce_artificial_goal(i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @update_f_goal(i32 noundef, i32 noundef, i32 noundef, float noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @select_op(i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @introduce_benefits_and_enforcements(i32 noundef, i32 noundef) #0

; Function Attrs: nounwind uwtable
declare dso_local void @introduce_pc_goals(i32 noundef, i32 noundef) #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 768}
!10 = !{!"_command_line", !7, i64 0, !7, i64 256, !7, i64 512, !6, i64 768, !6, i64 772, !6, i64 776, !7, i64 780, !6, i64 784, !11, i64 788}
!11 = !{!"float", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!11, !11, i64 0}
!17 = distinct !{!17, !15}
!18 = !{!19, !13, i64 112}
!19 = !{!"_FlConn", !13, i64 0, !6, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !6, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !6, i64 72, !7, i64 76, !13, i64 80, !13, i64 88, !6, i64 96, !7, i64 100, !11, i64 104, !7, i64 108, !13, i64 112, !13, i64 120, !7, i64 128, !11, i64 132, !6, i64 136}
!20 = !{!7, !7, i64 0}
!21 = !{!19, !13, i64 120}
!22 = !{!19, !6, i64 72}
!23 = !{!19, !13, i64 48}
!24 = !{!25, !6, i64 188}
!25 = !{!"_EfConn", !6, i64 0, !7, i64 4, !7, i64 5, !11, i64 8, !13, i64 16, !6, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !6, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !6, i64 88, !13, i64 96, !6, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !6, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !6, i64 168, !13, i64 176, !6, i64 184, !6, i64 188, !11, i64 192, !7, i64 196, !6, i64 200, !7, i64 204, !6, i64 208, !6, i64 212}
!26 = !{!19, !13, i64 56}
!27 = !{!19, !13, i64 64}
!28 = distinct !{!28, !15}
!29 = !{!25, !6, i64 212}
!30 = !{!25, !6, i64 0}
!31 = !{!19, !6, i64 40}
!32 = !{!19, !13, i64 16}
!33 = !{!19, !13, i64 24}
!34 = !{!19, !13, i64 32}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = !{!38, !6, i64 76}
!38 = !{!"_FtConn", !13, i64 0, !6, i64 8, !13, i64 16, !6, i64 24, !13, i64 32, !6, i64 40, !13, i64 48, !6, i64 56, !6, i64 60, !11, i64 64, !7, i64 68, !6, i64 72, !6, i64 76, !7, i64 80, !6, i64 84, !7, i64 88}
!39 = !{!10, !6, i64 772}
!40 = !{!38, !6, i64 24}
!41 = !{!38, !13, i64 16}
!42 = !{!25, !11, i64 192}
!43 = distinct !{!43, !15}
!44 = !{!45, !11, i64 40}
!45 = !{!"_OpConn", !13, i64 0, !7, i64 8, !13, i64 16, !6, i64 24, !7, i64 28, !7, i64 29, !6, i64 32, !7, i64 36, !11, i64 40}
!46 = !{!25, !6, i64 24}
!47 = !{!25, !13, i64 16}
!48 = !{!38, !11, i64 64}
!49 = !{!38, !6, i64 60}
!50 = distinct !{!50, !15}
!51 = distinct !{!51, !15}
!52 = distinct !{!52, !15}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct._command_line = type { [256 x i8], [256 x i8], [256 x i8], i32, i32, i32, i8, i32, float }
%struct._FlConn = type { ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, i8, ptr, ptr, i32, i8, float, i8, ptr, ptr, i8, float, i32 }
%struct._EfConn = type { i32, i8, i8, float, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, ptr, i32, i32, float, i8, i32, i8, i32, i32 }
%struct._FtConn = type { ptr, i32, ptr, i32, ptr, i32, ptr, i32, i32, float, i8, i32, i32, i8, i32, i8 }
%struct._OpConn = type { ptr, i8, ptr, i32, i8, i8, i32, i8, float }

@gcmd_line = external local_unnamed_addr global %struct._command_line, align 4
@gop_conn = external local_unnamed_addr global ptr, align 8
@gef_conn = external local_unnamed_addr global ptr, align 8
@gnum_fl_conn = external local_unnamed_addr global i32, align 4
@gfl_conn = external local_unnamed_addr global ptr, align 8
@gcost_rplans = external local_unnamed_addr global i8, align 1
@gft_conn = external local_unnamed_addr global ptr, align 8
@gnum_real_fl_conn = external local_unnamed_addr global i32, align 4
@lin_plan_E = external dso_local local_unnamed_addr global ptr, align 8
@lnum_in_plan_E = external dso_local local_unnamed_addr global i32, align 4
@lgoals_at = external dso_local local_unnamed_addr global ptr, align 8
@lnum_goals_at = external dso_local local_unnamed_addr global ptr, align 8
@lf_goals_c_at = external dso_local local_unnamed_addr global ptr, align 8
@lf_goals_comp_at = external dso_local local_unnamed_addr global ptr, align 8
@lHcomp = external dso_local local_unnamed_addr global ptr, align 8
@lHc = external dso_local local_unnamed_addr global ptr, align 8
@.str.49 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [61 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [69 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [39 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @LESS(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

declare void @print_op_name(i32 noundef) local_unnamed_addr #2

declare void @print_ft_name(i32 noundef) local_unnamed_addr #2

; Function Attrs: noreturn nounwind
declare void @exit(i32 noundef) local_unnamed_addr #3

declare zeroext i8 @number_comparison_holds(i32 noundef, float noundef, float noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
define dso_local void @achieve_goals(i32 noundef %0) local_unnamed_addr #0 {
  %2 = load i32, ptr getelementptr inbounds (i8, ptr @gcmd_line, i64 768), align 4, !tbaa !5
  %3 = icmp eq i32 %2, 127
  br i1 %3, label %4, label %7

4:                                                ; preds = %1
  %5 = add nsw i32 %0, -1
  %6 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.49, i32 noundef %5)
  br label %7

7:                                                ; preds = %4, %1
  %8 = load i32, ptr @gnum_real_fl_conn, align 4
  %9 = load i32, ptr @gnum_fl_conn, align 4, !tbaa !11
  %10 = icmp slt i32 %8, %9
  br i1 %10, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %7
  %11 = sext i32 %0 to i64
  %12 = sext i32 %8 to i64
  %.pre363 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  br label %13

13:                                               ; preds = %.lr.ph, %23
  %14 = phi i32 [ %9, %.lr.ph ], [ %24, %23 ]
  %15 = phi ptr [ %.pre363, %.lr.ph ], [ %25, %23 ]
  %indvars.iv = phi i64 [ %12, %.lr.ph ], [ %indvars.iv.next, %23 ]
  %16 = getelementptr inbounds ptr, ptr %15, i64 %11
  %17 = load ptr, ptr %16, align 8, !tbaa !12
  %18 = getelementptr inbounds i32, ptr %17, i64 %indvars.iv
  %19 = load i32, ptr %18, align 4, !tbaa !11
  %20 = icmp eq i32 %19, 3000
  br i1 %20, label %23, label %21

21:                                               ; preds = %13
  %22 = trunc nsw i64 %indvars.iv to i32
  tail call void @enforce_artificial_goal(i32 noundef %22, i32 noundef %0)
  %.pre = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %.pre364 = load i32, ptr @gnum_fl_conn, align 4, !tbaa !11
  br label %23

23:                                               ; preds = %13, %21
  %24 = phi i32 [ %14, %13 ], [ %.pre364, %21 ]
  %25 = phi ptr [ %15, %13 ], [ %.pre, %21 ]
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %26 = sext i32 %24 to i64
  %27 = icmp slt i64 %indvars.iv.next, %26
  br i1 %27, label %13, label %._crit_edge.loopexit, !llvm.loop !14

._crit_edge.loopexit:                             ; preds = %23
  %.pre365 = load i32, ptr @gnum_real_fl_conn, align 4
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %7
  %28 = phi i32 [ %.pre365, %._crit_edge.loopexit ], [ %8, %7 ]
  %29 = icmp eq i32 %0, 1
  %30 = icmp sgt i32 %28, 0
  %or.cond325 = select i1 %29, i1 %30, i1 false
  br i1 %or.cond325, label %.lr.ph280, label %.loopexit277

.lr.ph280:                                        ; preds = %._crit_edge
  %31 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %32 = getelementptr inbounds i8, ptr %31, i64 8
  %33 = load ptr, ptr %32, align 8, !tbaa !12
  %34 = load ptr, ptr @lHcomp, align 8, !tbaa !12
  %35 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %36 = getelementptr inbounds i8, ptr %35, i64 8
  %37 = load ptr, ptr %36, align 8, !tbaa !12
  %38 = load ptr, ptr @lHc, align 8, !tbaa !12
  br label %39

39:                                               ; preds = %.lr.ph280, %39
  %indvars.iv331 = phi i64 [ 0, %.lr.ph280 ], [ %indvars.iv.next332, %39 ]
  %40 = getelementptr inbounds i32, ptr %33, i64 %indvars.iv331
  %41 = load i32, ptr %40, align 4, !tbaa !11
  %42 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv331
  store i32 %41, ptr %42, align 4, !tbaa !11
  %43 = getelementptr inbounds float, ptr %37, i64 %indvars.iv331
  %44 = load float, ptr %43, align 4, !tbaa !16
  %45 = getelementptr inbounds float, ptr %38, i64 %indvars.iv331
  store float %44, ptr %45, align 4, !tbaa !16
  %indvars.iv.next332 = add nuw nsw i64 %indvars.iv331, 1
  %46 = load i32, ptr @gnum_real_fl_conn, align 4, !tbaa !11
  %47 = sext i32 %46 to i64
  %48 = icmp slt i64 %indvars.iv.next332, %47
  br i1 %48, label %39, label %.loopexit277, !llvm.loop !17

.loopexit277:                                     ; preds = %39, %._crit_edge
  %49 = phi i32 [ %28, %._crit_edge ], [ %46, %39 ]
  %50 = icmp sgt i32 %49, 0
  %51 = sext i32 %0 to i64
  br i1 %50, label %.lr.ph298, label %.preheader274

.lr.ph298:                                        ; preds = %.loopexit277
  %52 = add nsw i32 %0, -1
  %53 = sext i32 %52 to i64
  br label %59

.preheader274:                                    ; preds = %302, %.loopexit277
  %54 = load ptr, ptr @lnum_goals_at, align 8, !tbaa !12
  %55 = getelementptr inbounds i32, ptr %54, i64 %51
  %56 = load i32, ptr %55, align 4, !tbaa !11
  %57 = icmp sgt i32 %56, 0
  br i1 %57, label %.lr.ph322, label %._crit_edge323

.lr.ph322:                                        ; preds = %.preheader274
  %58 = add nsw i32 %0, -1
  %.pre376 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  br label %306

59:                                               ; preds = %.lr.ph298, %302
  %indvars.iv341 = phi i64 [ 0, %.lr.ph298 ], [ %indvars.iv.next342, %302 ]
  %.0223295 = phi i32 [ undef, %.lr.ph298 ], [ %.5, %302 ]
  %60 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %61 = getelementptr inbounds ptr, ptr %60, i64 %51
  %62 = load ptr, ptr %61, align 8, !tbaa !12
  %63 = getelementptr inbounds i32, ptr %62, i64 %indvars.iv341
  %64 = load i32, ptr %63, align 4, !tbaa !11
  %65 = icmp eq i32 %64, 3000
  br i1 %65, label %302, label %66

66:                                               ; preds = %59
  %67 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %68 = getelementptr inbounds %struct._FlConn, ptr %67, i64 %indvars.iv341
  %69 = getelementptr inbounds i8, ptr %68, i64 112
  %70 = load ptr, ptr %69, align 8, !tbaa !18
  %71 = getelementptr inbounds i8, ptr %70, i64 %53
  %72 = load i8, ptr %71, align 1, !tbaa !20
  %.not255 = icmp eq i8 %72, 0
  br i1 %.not255, label %100, label %73

73:                                               ; preds = %66
  %74 = getelementptr inbounds i8, ptr %68, i64 120
  %75 = load ptr, ptr %74, align 8, !tbaa !21
  %76 = getelementptr inbounds float, ptr %75, i64 %53
  %77 = load float, ptr %76, align 4, !tbaa !16
  %78 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %79 = getelementptr inbounds ptr, ptr %78, i64 %51
  %80 = load ptr, ptr %79, align 8, !tbaa !12
  %81 = getelementptr inbounds float, ptr %80, i64 %indvars.iv341
  %82 = load float, ptr %81, align 4, !tbaa !16
  %83 = tail call zeroext i8 @number_comparison_holds(i32 noundef %64, float noundef %77, float noundef %82) #4
  %.not256 = icmp eq i8 %83, 0
  br i1 %.not256, label %._crit_edge366, label %84

._crit_edge366:                                   ; preds = %73
  %.pre367 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  br label %100

84:                                               ; preds = %73
  %85 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %86 = getelementptr inbounds ptr, ptr %85, i64 %51
  %87 = load ptr, ptr %86, align 8, !tbaa !12
  %88 = getelementptr inbounds i32, ptr %87, i64 %indvars.iv341
  %89 = load i32, ptr %88, align 4, !tbaa !11
  %90 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %91 = getelementptr inbounds ptr, ptr %90, i64 %51
  %92 = load ptr, ptr %91, align 8, !tbaa !12
  %93 = getelementptr inbounds float, ptr %92, i64 %indvars.iv341
  %94 = load float, ptr %93, align 4, !tbaa !16
  %95 = trunc nuw nsw i64 %indvars.iv341 to i32
  tail call void @update_f_goal(i32 noundef %95, i32 noundef %52, i32 noundef %89, float noundef %94)
  %96 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %97 = getelementptr inbounds ptr, ptr %96, i64 %51
  %98 = load ptr, ptr %97, align 8, !tbaa !12
  %99 = getelementptr inbounds i32, ptr %98, i64 %indvars.iv341
  store i32 3000, ptr %99, align 4, !tbaa !11
  br label %302

100:                                              ; preds = %._crit_edge366, %66
  %101 = phi ptr [ %.pre367, %._crit_edge366 ], [ %67, %66 ]
  %102 = getelementptr inbounds %struct._FlConn, ptr %101, i64 %indvars.iv341, i32 9
  %103 = load i32, ptr %102, align 8, !tbaa !22
  %104 = icmp sgt i32 %103, 0
  br i1 %104, label %.lr.ph283, label %._crit_edge284

.lr.ph283:                                        ; preds = %100, %._crit_edge368
  %indvars.iv334 = phi i64 [ %indvars.iv.next335, %._crit_edge368 ], [ 0, %100 ]
  %105 = phi ptr [ %154, %._crit_edge368 ], [ %101, %100 ]
  %106 = getelementptr inbounds %struct._FlConn, ptr %105, i64 %indvars.iv341, i32 6
  %107 = load ptr, ptr %106, align 8, !tbaa !23
  %108 = getelementptr inbounds i32, ptr %107, i64 %indvars.iv334
  %109 = load i32, ptr %108, align 4, !tbaa !11
  %110 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %111 = sext i32 %109 to i64
  %112 = getelementptr inbounds %struct._EfConn, ptr %110, i64 %111, i32 26
  %113 = load i32, ptr %112, align 4, !tbaa !24
  %114 = tail call zeroext i8 @LESS(i32 noundef %113, i32 noundef %0)
  %.not257 = icmp eq i8 %114, 0
  %.pre370 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  br i1 %.not257, label %._crit_edge368, label %115

115:                                              ; preds = %.lr.ph283
  %116 = getelementptr inbounds %struct._FlConn, ptr %.pre370, i64 %indvars.iv341, i32 7
  %117 = load ptr, ptr %116, align 8, !tbaa !26
  %118 = getelementptr inbounds i32, ptr %117, i64 %indvars.iv334
  %119 = load i32, ptr %118, align 4, !tbaa !11
  %.not258 = icmp eq i32 %119, -1
  br i1 %.not258, label %137, label %120

120:                                              ; preds = %115
  %121 = sext i32 %119 to i64
  %122 = getelementptr inbounds %struct._FlConn, ptr %.pre370, i64 %121, i32 17
  %123 = load ptr, ptr %122, align 8, !tbaa !18
  %124 = getelementptr inbounds i8, ptr %123, i64 %53
  %125 = load i8, ptr %124, align 1, !tbaa !20
  %.not259 = icmp eq i8 %125, 0
  br i1 %.not259, label %._crit_edge368, label %126

126:                                              ; preds = %120
  %127 = sext i32 %119 to i64
  %128 = getelementptr inbounds %struct._FlConn, ptr %.pre370, i64 %127, i32 18
  %129 = load ptr, ptr %128, align 8, !tbaa !21
  %130 = getelementptr inbounds float, ptr %129, i64 %53
  %131 = load float, ptr %130, align 4, !tbaa !16
  %132 = getelementptr inbounds %struct._FlConn, ptr %.pre370, i64 %indvars.iv341, i32 8
  %133 = load ptr, ptr %132, align 8, !tbaa !27
  %134 = getelementptr inbounds float, ptr %133, i64 %indvars.iv334
  %135 = load float, ptr %134, align 4, !tbaa !16
  %136 = fadd float %131, %135
  br label %142

137:                                              ; preds = %115
  %138 = getelementptr inbounds %struct._FlConn, ptr %.pre370, i64 %indvars.iv341, i32 8
  %139 = load ptr, ptr %138, align 8, !tbaa !27
  %140 = getelementptr inbounds float, ptr %139, i64 %indvars.iv334
  %141 = load float, ptr %140, align 4, !tbaa !16
  br label %142

142:                                              ; preds = %137, %126
  %.0213 = phi float [ %136, %126 ], [ %141, %137 ]
  %143 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %144 = getelementptr inbounds ptr, ptr %143, i64 %51
  %145 = load ptr, ptr %144, align 8, !tbaa !12
  %146 = getelementptr inbounds i32, ptr %145, i64 %indvars.iv341
  %147 = load i32, ptr %146, align 4, !tbaa !11
  %148 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %149 = getelementptr inbounds ptr, ptr %148, i64 %51
  %150 = load ptr, ptr %149, align 8, !tbaa !12
  %151 = getelementptr inbounds float, ptr %150, i64 %indvars.iv341
  %152 = load float, ptr %151, align 4, !tbaa !16
  %153 = tail call zeroext i8 @number_comparison_holds(i32 noundef %147, float noundef %.0213, float noundef %152) #4
  %.not261 = icmp eq i8 %153, 0
  %.pre371.pre = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  br i1 %.not261, label %._crit_edge368, label %._crit_edge284.loopexit

._crit_edge368:                                   ; preds = %142, %120, %.lr.ph283
  %154 = phi ptr [ %.pre370, %120 ], [ %.pre370, %.lr.ph283 ], [ %.pre371.pre, %142 ]
  %indvars.iv.next335 = add nuw nsw i64 %indvars.iv334, 1
  %155 = getelementptr inbounds %struct._FlConn, ptr %154, i64 %indvars.iv341, i32 9
  %156 = load i32, ptr %155, align 8, !tbaa !22
  %157 = sext i32 %156 to i64
  %158 = icmp slt i64 %indvars.iv.next335, %157
  br i1 %158, label %.lr.ph283, label %._crit_edge284.loopexit, !llvm.loop !28

._crit_edge284.loopexit:                          ; preds = %142, %._crit_edge368
  %.pre371 = phi ptr [ %154, %._crit_edge368 ], [ %.pre371.pre, %142 ]
  %.0219.lcssa.ph.in = phi i64 [ %indvars.iv.next335, %._crit_edge368 ], [ %indvars.iv334, %142 ]
  %.0219.lcssa.ph = trunc i64 %.0219.lcssa.ph.in to i32
  br label %._crit_edge284

._crit_edge284:                                   ; preds = %._crit_edge284.loopexit, %100
  %159 = phi ptr [ %101, %100 ], [ %.pre371, %._crit_edge284.loopexit ]
  %.0219.lcssa = phi i32 [ 0, %100 ], [ %.0219.lcssa.ph, %._crit_edge284.loopexit ]
  %.2225 = phi i32 [ %.0223295, %100 ], [ %109, %._crit_edge284.loopexit ]
  %160 = getelementptr inbounds %struct._FlConn, ptr %159, i64 %indvars.iv341
  %161 = getelementptr inbounds i8, ptr %160, i64 72
  %162 = load i32, ptr %161, align 8, !tbaa !22
  %163 = icmp slt i32 %.0219.lcssa, %162
  br i1 %163, label %164, label %183

164:                                              ; preds = %._crit_edge284
  %165 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %166 = sext i32 %.2225 to i64
  %167 = getelementptr inbounds %struct._EfConn, ptr %165, i64 %166, i32 32
  %168 = load i32, ptr %167, align 4, !tbaa !29
  %169 = icmp eq i32 %168, %52
  br i1 %169, label %170, label %172

170:                                              ; preds = %164
  %171 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.50)
  tail call void @exit(i32 noundef 1) #5
  unreachable

172:                                              ; preds = %164
  %173 = icmp eq i32 %168, -1
  br i1 %173, label %174, label %180

174:                                              ; preds = %172
  %175 = load ptr, ptr @lin_plan_E, align 8, !tbaa !12
  %176 = load i32, ptr @lnum_in_plan_E, align 4, !tbaa !11
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr @lnum_in_plan_E, align 4, !tbaa !11
  %178 = sext i32 %176 to i64
  %179 = getelementptr inbounds i32, ptr %175, i64 %178
  store i32 %.2225, ptr %179, align 4, !tbaa !11
  br label %180

180:                                              ; preds = %174, %172
  store i32 %52, ptr %167, align 4, !tbaa !29
  %181 = getelementptr inbounds %struct._EfConn, ptr %165, i64 %166
  %182 = load i32, ptr %181, align 8, !tbaa !30
  tail call void @select_op(i32 noundef %0, i32 noundef %182)
  tail call void @introduce_benefits_and_enforcements(i32 noundef %0, i32 noundef %.2225)
  tail call void @introduce_pc_goals(i32 noundef %0, i32 noundef %.2225)
  br label %302

183:                                              ; preds = %._crit_edge284
  %184 = getelementptr inbounds i8, ptr %160, i64 112
  %185 = load ptr, ptr %184, align 8, !tbaa !18
  %186 = getelementptr inbounds i8, ptr %185, i64 %53
  %187 = load i8, ptr %186, align 1, !tbaa !20
  %.not262 = icmp eq i8 %187, 0
  br i1 %.not262, label %191, label %.preheader275

.preheader275:                                    ; preds = %183
  %188 = getelementptr inbounds %struct._FlConn, ptr %159, i64 %indvars.iv341, i32 5
  %189 = load i32, ptr %188, align 8, !tbaa !31
  %190 = icmp sgt i32 %189, 0
  br i1 %190, label %.lr.ph290, label %._crit_edge291

191:                                              ; preds = %183
  %192 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.51)
  tail call void @exit(i32 noundef 1) #5
  unreachable

.lr.ph290:                                        ; preds = %.preheader275, %264
  %indvars.iv337 = phi i64 [ %indvars.iv.next338, %264 ], [ 0, %.preheader275 ]
  %193 = phi ptr [ %265, %264 ], [ %159, %.preheader275 ]
  %194 = getelementptr inbounds %struct._FlConn, ptr %193, i64 %indvars.iv341, i32 2
  %195 = load ptr, ptr %194, align 8, !tbaa !32
  %196 = getelementptr inbounds i32, ptr %195, i64 %indvars.iv337
  %197 = load i32, ptr %196, align 4, !tbaa !11
  %198 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %199 = sext i32 %197 to i64
  %200 = getelementptr inbounds %struct._EfConn, ptr %198, i64 %199, i32 26
  %201 = load i32, ptr %200, align 4, !tbaa !24
  %202 = tail call zeroext i8 @LESS(i32 noundef %201, i32 noundef %0)
  %.not263 = icmp eq i8 %202, 0
  %.pre374 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  br i1 %.not263, label %264, label %203

203:                                              ; preds = %.lr.ph290
  %204 = getelementptr inbounds %struct._FlConn, ptr %.pre374, i64 %indvars.iv341, i32 3
  %205 = load ptr, ptr %204, align 8, !tbaa !33
  %206 = getelementptr inbounds i32, ptr %205, i64 %indvars.iv337
  %207 = load i32, ptr %206, align 4, !tbaa !11
  %.not264 = icmp eq i32 %207, -1
  br i1 %.not264, label %225, label %208

208:                                              ; preds = %203
  %209 = sext i32 %207 to i64
  %210 = getelementptr inbounds %struct._FlConn, ptr %.pre374, i64 %209, i32 17
  %211 = load ptr, ptr %210, align 8, !tbaa !18
  %212 = getelementptr inbounds i8, ptr %211, i64 %53
  %213 = load i8, ptr %212, align 1, !tbaa !20
  %.not265 = icmp eq i8 %213, 0
  br i1 %.not265, label %264, label %214

214:                                              ; preds = %208
  %215 = sext i32 %207 to i64
  %216 = getelementptr inbounds %struct._FlConn, ptr %.pre374, i64 %215, i32 18
  %217 = load ptr, ptr %216, align 8, !tbaa !21
  %218 = getelementptr inbounds float, ptr %217, i64 %53
  %219 = load float, ptr %218, align 4, !tbaa !16
  %220 = getelementptr inbounds %struct._FlConn, ptr %.pre374, i64 %indvars.iv341, i32 4
  %221 = load ptr, ptr %220, align 8, !tbaa !34
  %222 = getelementptr inbounds float, ptr %221, i64 %indvars.iv337
  %223 = load float, ptr %222, align 4, !tbaa !16
  %224 = fadd float %219, %223
  br label %230

225:                                              ; preds = %203
  %226 = getelementptr inbounds %struct._FlConn, ptr %.pre374, i64 %indvars.iv341, i32 4
  %227 = load ptr, ptr %226, align 8, !tbaa !34
  %228 = getelementptr inbounds float, ptr %227, i64 %indvars.iv337
  %229 = load float, ptr %228, align 4, !tbaa !16
  br label %230

230:                                              ; preds = %225, %214
  %.1214 = phi float [ %224, %214 ], [ %229, %225 ]
  %231 = fcmp ugt float %.1214, 0.000000e+00
  br i1 %231, label %232, label %264

232:                                              ; preds = %230
  %233 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %234 = getelementptr inbounds %struct._EfConn, ptr %233, i64 %199, i32 32
  %235 = load i32, ptr %234, align 4, !tbaa !29
  %236 = icmp eq i32 %235, %52
  br i1 %236, label %264, label %237

237:                                              ; preds = %232
  %238 = icmp eq i32 %235, -1
  br i1 %238, label %239, label %245

239:                                              ; preds = %237
  %240 = load ptr, ptr @lin_plan_E, align 8, !tbaa !12
  %241 = load i32, ptr @lnum_in_plan_E, align 4, !tbaa !11
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr @lnum_in_plan_E, align 4, !tbaa !11
  %243 = sext i32 %241 to i64
  %244 = getelementptr inbounds i32, ptr %240, i64 %243
  store i32 %197, ptr %244, align 4, !tbaa !11
  br label %245

245:                                              ; preds = %239, %237
  store i32 %52, ptr %234, align 4, !tbaa !29
  %246 = getelementptr inbounds %struct._EfConn, ptr %233, i64 %199
  %247 = load i32, ptr %246, align 8, !tbaa !30
  tail call void @select_op(i32 noundef %0, i32 noundef %247)
  tail call void @introduce_benefits_and_enforcements(i32 noundef %0, i32 noundef %197)
  tail call void @introduce_pc_goals(i32 noundef %0, i32 noundef %197)
  %248 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %249 = getelementptr inbounds ptr, ptr %248, i64 %51
  %250 = load ptr, ptr %249, align 8, !tbaa !12
  %251 = getelementptr inbounds i32, ptr %250, i64 %indvars.iv341
  %252 = load i32, ptr %251, align 4, !tbaa !11
  %253 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %254 = getelementptr inbounds %struct._FlConn, ptr %253, i64 %indvars.iv341, i32 18
  %255 = load ptr, ptr %254, align 8, !tbaa !21
  %256 = getelementptr inbounds float, ptr %255, i64 %53
  %257 = load float, ptr %256, align 4, !tbaa !16
  %258 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %259 = getelementptr inbounds ptr, ptr %258, i64 %51
  %260 = load ptr, ptr %259, align 8, !tbaa !12
  %261 = getelementptr inbounds float, ptr %260, i64 %indvars.iv341
  %262 = load float, ptr %261, align 4, !tbaa !16
  %263 = tail call zeroext i8 @number_comparison_holds(i32 noundef %252, float noundef %257, float noundef %262) #4
  %.not267 = icmp eq i8 %263, 0
  br i1 %.not267, label %._crit_edge372, label %._crit_edge291

._crit_edge372:                                   ; preds = %245
  %.pre373 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  br label %264

264:                                              ; preds = %._crit_edge372, %232, %230, %208, %.lr.ph290
  %265 = phi ptr [ %.pre373, %._crit_edge372 ], [ %.pre374, %232 ], [ %.pre374, %230 ], [ %.pre374, %208 ], [ %.pre374, %.lr.ph290 ]
  %indvars.iv.next338 = add nuw nsw i64 %indvars.iv337, 1
  %266 = getelementptr inbounds %struct._FlConn, ptr %265, i64 %indvars.iv341, i32 5
  %267 = load i32, ptr %266, align 8, !tbaa !31
  %268 = sext i32 %267 to i64
  %269 = icmp slt i64 %indvars.iv.next338, %268
  br i1 %269, label %.lr.ph290, label %._crit_edge291, !llvm.loop !35

._crit_edge291:                                   ; preds = %264, %245, %.preheader275
  %.4227 = phi i32 [ %.2225, %.preheader275 ], [ %197, %245 ], [ %197, %264 ]
  %270 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %271 = getelementptr inbounds ptr, ptr %270, i64 %51
  %272 = load ptr, ptr %271, align 8, !tbaa !12
  %273 = getelementptr inbounds i32, ptr %272, i64 %indvars.iv341
  %274 = load i32, ptr %273, align 4, !tbaa !11
  %275 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %276 = getelementptr inbounds ptr, ptr %275, i64 %51
  %277 = load ptr, ptr %276, align 8, !tbaa !12
  %278 = getelementptr inbounds float, ptr %277, i64 %indvars.iv341
  %279 = load float, ptr %278, align 4, !tbaa !16
  %280 = trunc nuw nsw i64 %indvars.iv341 to i32
  tail call void @update_f_goal(i32 noundef %280, i32 noundef %52, i32 noundef %274, float noundef %279)
  %281 = load ptr, ptr @lf_goals_comp_at, align 8, !tbaa !12
  %282 = getelementptr inbounds ptr, ptr %281, i64 %51
  %283 = load ptr, ptr %282, align 8, !tbaa !12
  %284 = getelementptr inbounds i32, ptr %283, i64 %indvars.iv341
  store i32 3000, ptr %284, align 4, !tbaa !11
  %285 = getelementptr inbounds ptr, ptr %281, i64 %53
  %286 = load ptr, ptr %285, align 8, !tbaa !12
  %287 = getelementptr inbounds i32, ptr %286, i64 %indvars.iv341
  %288 = load i32, ptr %287, align 4, !tbaa !11
  %289 = load ptr, ptr @gfl_conn, align 8, !tbaa !12
  %290 = getelementptr inbounds %struct._FlConn, ptr %289, i64 %indvars.iv341, i32 18
  %291 = load ptr, ptr %290, align 8, !tbaa !21
  %292 = getelementptr inbounds float, ptr %291, i64 %53
  %293 = load float, ptr %292, align 4, !tbaa !16
  %294 = load ptr, ptr @lf_goals_c_at, align 8, !tbaa !12
  %295 = getelementptr inbounds ptr, ptr %294, i64 %53
  %296 = load ptr, ptr %295, align 8, !tbaa !12
  %297 = getelementptr inbounds float, ptr %296, i64 %indvars.iv341
  %298 = load float, ptr %297, align 4, !tbaa !16
  %299 = tail call zeroext i8 @number_comparison_holds(i32 noundef %288, float noundef %293, float noundef %298) #4
  %.not268 = icmp eq i8 %299, 0
  br i1 %.not268, label %300, label %302

300:                                              ; preds = %._crit_edge291
  %301 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.52)
  tail call void @exit(i32 noundef 1) #5
  unreachable

302:                                              ; preds = %._crit_edge291, %59, %180, %84
  %.5 = phi i32 [ %.0223295, %59 ], [ %.0223295, %84 ], [ %.2225, %180 ], [ %.4227, %._crit_edge291 ]
  %indvars.iv.next342 = add nuw nsw i64 %indvars.iv341, 1
  %303 = load i32, ptr @gnum_real_fl_conn, align 4, !tbaa !11
  %304 = sext i32 %303 to i64
  %305 = icmp slt i64 %indvars.iv.next342, %304
  br i1 %305, label %59, label %.preheader274, !llvm.loop !36

306:                                              ; preds = %.lr.ph322, %495
  %307 = phi ptr [ %.pre376, %.lr.ph322 ], [ %496, %495 ]
  %indvars.iv359 = phi i64 [ 0, %.lr.ph322 ], [ %indvars.iv.next360, %495 ]
  %.0321 = phi i32 [ undef, %.lr.ph322 ], [ %.4, %495 ]
  %308 = load ptr, ptr @lgoals_at, align 8, !tbaa !12
  %309 = getelementptr inbounds ptr, ptr %308, i64 %51
  %310 = load ptr, ptr %309, align 8, !tbaa !12
  %311 = getelementptr inbounds i32, ptr %310, i64 %indvars.iv359
  %312 = load i32, ptr %311, align 4, !tbaa !11
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds %struct._FtConn, ptr %307, i64 %313, i32 12
  %315 = load i32, ptr %314, align 4, !tbaa !37
  %316 = icmp eq i32 %315, %0
  br i1 %316, label %495, label %317

317:                                              ; preds = %306
  %318 = load i32, ptr getelementptr inbounds (i8, ptr @gcmd_line, i64 772), align 4, !tbaa !39
  %.not = icmp eq i32 %318, 0
  br i1 %.not, label %321, label %319

319:                                              ; preds = %317
  %320 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.53, i32 noundef %0)
  tail call void @print_ft_name(i32 noundef %312) #4
  br label %321

321:                                              ; preds = %319, %317
  %322 = load i8, ptr @gcost_rplans, align 1, !tbaa !20
  %.not249 = icmp eq i8 %322, 0
  %323 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  br i1 %.not249, label %.preheader, label %.preheader272

.preheader272:                                    ; preds = %321
  %324 = getelementptr inbounds %struct._FtConn, ptr %323, i64 %313, i32 3
  %325 = load i32, ptr %324, align 8, !tbaa !40
  %326 = icmp sgt i32 %325, 0
  br i1 %326, label %.lr.ph312, label %.loopexit.thread

.preheader:                                       ; preds = %321
  %327 = getelementptr inbounds %struct._FtConn, ptr %323, i64 %313
  %328 = getelementptr inbounds i8, ptr %327, i64 24
  %329 = load i32, ptr %328, align 8, !tbaa !40
  %330 = icmp sgt i32 %329, 0
  br i1 %330, label %.lr.ph318, label %.loopexit.thread

.lr.ph318:                                        ; preds = %.preheader
  %331 = getelementptr inbounds i8, ptr %327, i64 16
  %332 = load ptr, ptr %331, align 8, !tbaa !41
  %333 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %wide.trip.count357 = zext nneg i32 %329 to i64
  %xtraiter404 = and i64 %wide.trip.count357, 1
  %334 = icmp eq i32 %329, 1
  br i1 %334, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph318.new

.lr.ph318.new:                                    ; preds = %.lr.ph318
  %unroll_iter407 = and i64 %wide.trip.count357, 2147483646
  br label %335

335:                                              ; preds = %361, %.lr.ph318.new
  %indvars.iv353 = phi i64 [ 0, %.lr.ph318.new ], [ %indvars.iv.next354.1, %361 ]
  %.0208317 = phi float [ -1.000000e+00, %.lr.ph318.new ], [ %.1209.1, %361 ]
  %.0228315 = phi i32 [ -1, %.lr.ph318.new ], [ %.1229.1, %361 ]
  %niter408 = phi i64 [ 0, %.lr.ph318.new ], [ %niter408.next.1, %361 ]
  %336 = getelementptr inbounds i32, ptr %332, i64 %indvars.iv353
  %337 = load i32, ptr %336, align 4, !tbaa !11
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct._EfConn, ptr %333, i64 %338
  %340 = getelementptr inbounds i8, ptr %339, i64 188
  %341 = load i32, ptr %340, align 4, !tbaa !24
  %.not250 = icmp eq i32 %341, %58
  br i1 %.not250, label %342, label %348

342:                                              ; preds = %335
  %343 = getelementptr inbounds i8, ptr %339, i64 192
  %344 = load float, ptr %343, align 8, !tbaa !42
  %345 = fcmp oeq float %.0208317, -1.000000e+00
  %346 = fcmp olt float %344, %.0208317
  %or.cond = select i1 %345, i1 true, i1 %346
  br i1 %or.cond, label %347, label %348

347:                                              ; preds = %342
  br label %348

348:                                              ; preds = %342, %347, %335
  %.1229 = phi i32 [ %.0228315, %335 ], [ %337, %347 ], [ %.0228315, %342 ]
  %.1209 = phi float [ %.0208317, %335 ], [ %344, %347 ], [ %.0208317, %342 ]
  %indvars.iv.next354 = or disjoint i64 %indvars.iv353, 1
  %349 = getelementptr inbounds i32, ptr %332, i64 %indvars.iv.next354
  %350 = load i32, ptr %349, align 4, !tbaa !11
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds %struct._EfConn, ptr %333, i64 %351
  %353 = getelementptr inbounds i8, ptr %352, i64 188
  %354 = load i32, ptr %353, align 4, !tbaa !24
  %.not250.1 = icmp eq i32 %354, %58
  br i1 %.not250.1, label %355, label %361

355:                                              ; preds = %348
  %356 = getelementptr inbounds i8, ptr %352, i64 192
  %357 = load float, ptr %356, align 8, !tbaa !42
  %358 = fcmp oeq float %.1209, -1.000000e+00
  %359 = fcmp olt float %357, %.1209
  %or.cond.1 = select i1 %358, i1 true, i1 %359
  br i1 %or.cond.1, label %360, label %361

360:                                              ; preds = %355
  br label %361

361:                                              ; preds = %360, %355, %348
  %.1229.1 = phi i32 [ %.1229, %348 ], [ %350, %360 ], [ %.1229, %355 ]
  %.1209.1 = phi float [ %.1209, %348 ], [ %357, %360 ], [ %.1209, %355 ]
  %indvars.iv.next354.1 = add nuw nsw i64 %indvars.iv353, 2
  %niter408.next.1 = add i64 %niter408, 2
  %niter408.ncmp.1 = icmp eq i64 %niter408.next.1, %unroll_iter407
  br i1 %niter408.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %335, !llvm.loop !43

.lr.ph312:                                        ; preds = %.preheader272, %.thread271
  %indvars.iv349 = phi i64 [ %indvars.iv.next350, %.thread271 ], [ 0, %.preheader272 ]
  %362 = phi ptr [ %459, %.thread271 ], [ %323, %.preheader272 ]
  %.1311 = phi i32 [ %.2, %.thread271 ], [ %.0321, %.preheader272 ]
  %.0205310 = phi i32 [ %.1206, %.thread271 ], [ -1, %.preheader272 ]
  %.2210309 = phi float [ %.3211, %.thread271 ], [ -1.000000e+00, %.preheader272 ]
  %.2230307 = phi i32 [ %.3231, %.thread271 ], [ -1, %.preheader272 ]
  %363 = getelementptr inbounds %struct._FtConn, ptr %362, i64 %313, i32 2
  %364 = load ptr, ptr %363, align 8, !tbaa !41
  %365 = getelementptr inbounds i32, ptr %364, i64 %indvars.iv349
  %366 = load i32, ptr %365, align 4, !tbaa !11
  %367 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %368 = sext i32 %366 to i64
  %369 = getelementptr inbounds %struct._EfConn, ptr %367, i64 %368
  %370 = getelementptr inbounds i8, ptr %369, i64 188
  %371 = load i32, ptr %370, align 4, !tbaa !24
  %372 = icmp ne i32 %371, -1
  %.not251 = icmp slt i32 %371, %0
  %or.cond269 = and i1 %372, %.not251
  br i1 %or.cond269, label %373, label %.thread271

373:                                              ; preds = %.lr.ph312
  %374 = load ptr, ptr @gop_conn, align 8, !tbaa !12
  %375 = load i32, ptr %369, align 8, !tbaa !30
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %struct._OpConn, ptr %374, i64 %376, i32 8
  %378 = load float, ptr %377, align 8, !tbaa !44
  %379 = getelementptr inbounds i8, ptr %369, i64 24
  %380 = load i32, ptr %379, align 8, !tbaa !46
  %381 = icmp sgt i32 %380, 0
  br i1 %381, label %.lr.ph303, label %._crit_edge304

.lr.ph303:                                        ; preds = %373
  %382 = getelementptr inbounds i8, ptr %369, i64 16
  %383 = load ptr, ptr %382, align 8, !tbaa !47
  %wide.trip.count = zext nneg i32 %380 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %384 = icmp eq i32 %380, 1
  br i1 %384, label %._crit_edge304.loopexit.unr-lcssa, label %.lr.ph303.new

.lr.ph303.new:                                    ; preds = %.lr.ph303
  %unroll_iter = and i64 %wide.trip.count, 2147483646
  br label %385

385:                                              ; preds = %385, %.lr.ph303.new
  %indvars.iv345 = phi i64 [ 0, %.lr.ph303.new ], [ %indvars.iv.next346.1, %385 ]
  %.0207301 = phi i32 [ 0, %.lr.ph303.new ], [ %405, %385 ]
  %.0212300 = phi float [ %378, %.lr.ph303.new ], [ %402, %385 ]
  %niter = phi i64 [ 0, %.lr.ph303.new ], [ %niter.next.1, %385 ]
  %386 = getelementptr inbounds i32, ptr %383, i64 %indvars.iv345
  %387 = load i32, ptr %386, align 4, !tbaa !11
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct._FtConn, ptr %362, i64 %388
  %390 = getelementptr inbounds i8, ptr %389, i64 64
  %391 = load float, ptr %390, align 8, !tbaa !48
  %392 = fadd float %.0212300, %391
  %393 = getelementptr inbounds i8, ptr %389, i64 60
  %394 = load i32, ptr %393, align 4, !tbaa !49
  %395 = add nsw i32 %394, %.0207301
  %indvars.iv.next346 = or disjoint i64 %indvars.iv345, 1
  %396 = getelementptr inbounds i32, ptr %383, i64 %indvars.iv.next346
  %397 = load i32, ptr %396, align 4, !tbaa !11
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds %struct._FtConn, ptr %362, i64 %398
  %400 = getelementptr inbounds i8, ptr %399, i64 64
  %401 = load float, ptr %400, align 8, !tbaa !48
  %402 = fadd float %392, %401
  %403 = getelementptr inbounds i8, ptr %399, i64 60
  %404 = load i32, ptr %403, align 4, !tbaa !49
  %405 = add nsw i32 %404, %395
  %indvars.iv.next346.1 = add nuw nsw i64 %indvars.iv345, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge304.loopexit.unr-lcssa, label %385, !llvm.loop !50

._crit_edge304.loopexit.unr-lcssa:                ; preds = %385, %.lr.ph303
  %.lcssa396.ph = phi float [ poison, %.lr.ph303 ], [ %402, %385 ]
  %.lcssa.ph = phi i32 [ poison, %.lr.ph303 ], [ %405, %385 ]
  %indvars.iv345.unr = phi i64 [ 0, %.lr.ph303 ], [ %indvars.iv.next346.1, %385 ]
  %.0207301.unr = phi i32 [ 0, %.lr.ph303 ], [ %405, %385 ]
  %.0212300.unr = phi float [ %378, %.lr.ph303 ], [ %402, %385 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge304, label %._crit_edge304.loopexit.epilog-lcssa

._crit_edge304.loopexit.epilog-lcssa:             ; preds = %._crit_edge304.loopexit.unr-lcssa
  %406 = getelementptr inbounds i32, ptr %383, i64 %indvars.iv345.unr
  %407 = load i32, ptr %406, align 4, !tbaa !11
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds %struct._FtConn, ptr %362, i64 %408
  %410 = getelementptr inbounds i8, ptr %409, i64 64
  %411 = load float, ptr %410, align 8, !tbaa !48
  %412 = fadd float %.0212300.unr, %411
  %413 = getelementptr inbounds i8, ptr %409, i64 60
  %414 = load i32, ptr %413, align 4, !tbaa !49
  %415 = add nsw i32 %414, %.0207301.unr
  br label %._crit_edge304

._crit_edge304:                                   ; preds = %._crit_edge304.loopexit.epilog-lcssa, %._crit_edge304.loopexit.unr-lcssa, %373
  %.0212.lcssa = phi float [ %378, %373 ], [ %.lcssa396.ph, %._crit_edge304.loopexit.unr-lcssa ], [ %412, %._crit_edge304.loopexit.epilog-lcssa ]
  %.0207.lcssa = phi i32 [ 0, %373 ], [ %.lcssa.ph, %._crit_edge304.loopexit.unr-lcssa ], [ %415, %._crit_edge304.loopexit.epilog-lcssa ]
  %416 = load i32, ptr getelementptr inbounds (i8, ptr @gcmd_line, i64 772), align 4, !tbaa !39
  %.not252 = icmp eq i32 %416, 0
  br i1 %.not252, label %434, label %417

417:                                              ; preds = %._crit_edge304
  %418 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.54)
  %419 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %420 = getelementptr inbounds %struct._EfConn, ptr %419, i64 %368
  %421 = load i32, ptr %420, align 8, !tbaa !30
  tail call void @print_op_name(i32 noundef %421) #4
  %422 = fpext float %.0212.lcssa to double
  %423 = load ptr, ptr @gop_conn, align 8, !tbaa !12
  %424 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %425 = getelementptr inbounds %struct._EfConn, ptr %424, i64 %368
  %426 = load i32, ptr %425, align 8, !tbaa !30
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds %struct._OpConn, ptr %423, i64 %427, i32 8
  %429 = load float, ptr %428, align 8, !tbaa !44
  %430 = fpext float %429 to double
  %431 = getelementptr inbounds i8, ptr %425, i64 188
  %432 = load i32, ptr %431, align 4, !tbaa !24
  %433 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.55, double noundef %422, double noundef %430, i32 noundef %432, i32 noundef %.0207.lcssa)
  br label %434

434:                                              ; preds = %417, %._crit_edge304
  %435 = fcmp oeq float %.2210309, -1.000000e+00
  %436 = fcmp olt float %.0212.lcssa, %.2210309
  %or.cond270 = select i1 %435, i1 true, i1 %436
  br i1 %or.cond270, label %437, label %445

437:                                              ; preds = %434
  %438 = load i32, ptr getelementptr inbounds (i8, ptr @gcmd_line, i64 772), align 4, !tbaa !39
  %.not254 = icmp eq i32 %438, 0
  br i1 %.not254, label %441, label %439

439:                                              ; preds = %437
  %440 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.56)
  br label %441

441:                                              ; preds = %439, %437
  %442 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %443 = getelementptr inbounds %struct._EfConn, ptr %442, i64 %368, i32 26
  %444 = load i32, ptr %443, align 4, !tbaa !24
  br label %.thread271

445:                                              ; preds = %434
  %446 = fcmp une float %.2210309, 0.000000e+00
  br i1 %446, label %447, label %.thread271

447:                                              ; preds = %445
  %448 = icmp slt i32 %.0207.lcssa, %.0205310
  br i1 %448, label %.thread, label %449

449:                                              ; preds = %447
  %450 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %451 = getelementptr inbounds %struct._EfConn, ptr %450, i64 %368, i32 26
  %452 = load i32, ptr %451, align 4, !tbaa !24
  %453 = icmp sgt i32 %.1311, %452
  %454 = uitofp i1 %453 to float
  br i1 %453, label %.thread, label %.thread271

.thread:                                          ; preds = %447, %449
  %455 = phi float [ %454, %449 ], [ 1.000000e+00, %447 ]
  %456 = load i32, ptr getelementptr inbounds (i8, ptr @gcmd_line, i64 772), align 4, !tbaa !39
  %.not253 = icmp eq i32 %456, 0
  br i1 %.not253, label %.thread271, label %457

457:                                              ; preds = %.thread
  %458 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.57)
  br label %.thread271

.thread271:                                       ; preds = %445, %.thread, %457, %449, %.lr.ph312, %441
  %.3231 = phi i32 [ %.2230307, %.lr.ph312 ], [ %366, %441 ], [ %.2230307, %449 ], [ %366, %457 ], [ %366, %.thread ], [ %.2230307, %445 ]
  %.3211 = phi float [ %.2210309, %.lr.ph312 ], [ %.0212.lcssa, %441 ], [ %.2210309, %449 ], [ %455, %457 ], [ %455, %.thread ], [ %.2210309, %445 ]
  %.1206 = phi i32 [ %.0205310, %.lr.ph312 ], [ %.0207.lcssa, %441 ], [ %.0205310, %449 ], [ %.0207.lcssa, %457 ], [ %.0207.lcssa, %.thread ], [ %.0205310, %445 ]
  %.2 = phi i32 [ %.1311, %.lr.ph312 ], [ %444, %441 ], [ %.1311, %449 ], [ %.1311, %457 ], [ %.1311, %.thread ], [ %.1311, %445 ]
  %indvars.iv.next350 = add nuw nsw i64 %indvars.iv349, 1
  %459 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  %460 = getelementptr inbounds %struct._FtConn, ptr %459, i64 %313, i32 3
  %461 = load i32, ptr %460, align 8, !tbaa !40
  %462 = sext i32 %461 to i64
  %463 = icmp slt i64 %indvars.iv.next350, %462
  br i1 %463, label %.lr.ph312, label %.loopexit, !llvm.loop !51

.loopexit.loopexit.unr-lcssa:                     ; preds = %361, %.lr.ph318
  %.1229.lcssa.ph = phi i32 [ poison, %.lr.ph318 ], [ %.1229.1, %361 ]
  %indvars.iv353.unr = phi i64 [ 0, %.lr.ph318 ], [ %indvars.iv.next354.1, %361 ]
  %.0208317.unr = phi float [ -1.000000e+00, %.lr.ph318 ], [ %.1209.1, %361 ]
  %.0228315.unr = phi i32 [ -1, %.lr.ph318 ], [ %.1229.1, %361 ]
  %lcmp.mod405.not = icmp eq i64 %xtraiter404, 0
  br i1 %lcmp.mod405.not, label %.loopexit, label %.epil.preheader403

.epil.preheader403:                               ; preds = %.loopexit.loopexit.unr-lcssa
  %464 = getelementptr inbounds i32, ptr %332, i64 %indvars.iv353.unr
  %465 = load i32, ptr %464, align 4, !tbaa !11
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds %struct._EfConn, ptr %333, i64 %466
  %468 = getelementptr inbounds i8, ptr %467, i64 188
  %469 = load i32, ptr %468, align 4, !tbaa !24
  %.not250.epil = icmp eq i32 %469, %58
  br i1 %.not250.epil, label %470, label %.loopexit

470:                                              ; preds = %.epil.preheader403
  %471 = getelementptr inbounds i8, ptr %467, i64 192
  %472 = load float, ptr %471, align 8, !tbaa !42
  %473 = fcmp oeq float %.0208317.unr, -1.000000e+00
  %474 = fcmp olt float %472, %.0208317.unr
  %or.cond.epil = select i1 %473, i1 true, i1 %474
  %spec.select = select i1 %or.cond.epil, i32 %465, i32 %.0228315.unr
  br label %.loopexit

.loopexit:                                        ; preds = %470, %.thread271, %.loopexit.loopexit.unr-lcssa, %.epil.preheader403
  %475 = phi ptr [ %323, %.epil.preheader403 ], [ %323, %470 ], [ %323, %.loopexit.loopexit.unr-lcssa ], [ %459, %.thread271 ]
  %.4232 = phi i32 [ %.1229.lcssa.ph, %.loopexit.loopexit.unr-lcssa ], [ %.0228315.unr, %.epil.preheader403 ], [ %spec.select, %470 ], [ %.3231, %.thread271 ]
  %.3 = phi i32 [ %.0321, %.epil.preheader403 ], [ %.0321, %470 ], [ %.0321, %.loopexit.loopexit.unr-lcssa ], [ %.2, %.thread271 ]
  %476 = icmp eq i32 %.4232, -1
  br i1 %476, label %.loopexit.thread, label %478

.loopexit.thread:                                 ; preds = %.preheader272, %.preheader, %.loopexit
  %477 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.58)
  tail call void @exit(i32 noundef 1) #5
  unreachable

478:                                              ; preds = %.loopexit
  %479 = load ptr, ptr @gef_conn, align 8, !tbaa !12
  %480 = sext i32 %.4232 to i64
  %481 = getelementptr inbounds %struct._EfConn, ptr %479, i64 %480, i32 32
  %482 = load i32, ptr %481, align 4, !tbaa !29
  %483 = icmp eq i32 %482, %58
  br i1 %483, label %495, label %484

484:                                              ; preds = %478
  %485 = icmp eq i32 %482, -1
  br i1 %485, label %486, label %492

486:                                              ; preds = %484
  %487 = load ptr, ptr @lin_plan_E, align 8, !tbaa !12
  %488 = load i32, ptr @lnum_in_plan_E, align 4, !tbaa !11
  %489 = add nsw i32 %488, 1
  store i32 %489, ptr @lnum_in_plan_E, align 4, !tbaa !11
  %490 = sext i32 %488 to i64
  %491 = getelementptr inbounds i32, ptr %487, i64 %490
  store i32 %.4232, ptr %491, align 4, !tbaa !11
  br label %492

492:                                              ; preds = %486, %484
  store i32 %58, ptr %481, align 4, !tbaa !29
  %493 = getelementptr inbounds %struct._EfConn, ptr %479, i64 %480
  %494 = load i32, ptr %493, align 8, !tbaa !30
  tail call void @select_op(i32 noundef %0, i32 noundef %494)
  tail call void @introduce_benefits_and_enforcements(i32 noundef %0, i32 noundef %.4232)
  tail call void @introduce_pc_goals(i32 noundef %0, i32 noundef %.4232)
  %.pre375 = load ptr, ptr @gft_conn, align 8, !tbaa !12
  br label %495

495:                                              ; preds = %478, %306, %492
  %496 = phi ptr [ %307, %306 ], [ %475, %478 ], [ %.pre375, %492 ]
  %.4 = phi i32 [ %.0321, %306 ], [ %.3, %478 ], [ %.3, %492 ]
  %indvars.iv.next360 = add nuw nsw i64 %indvars.iv359, 1
  %497 = load ptr, ptr @lnum_goals_at, align 8, !tbaa !12
  %498 = getelementptr inbounds i32, ptr %497, i64 %51
  %499 = load i32, ptr %498, align 4, !tbaa !11
  %500 = sext i32 %499 to i64
  %501 = icmp slt i64 %indvars.iv.next360, %500
  br i1 %501, label %306, label %._crit_edge323, !llvm.loop !52

._crit_edge323:                                   ; preds = %495, %.preheader274
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @enforce_artificial_goal(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @update_f_goal(i32 noundef, i32 noundef, i32 noundef, float noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @select_op(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @introduce_benefits_and_enforcements(i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
declare dso_local void @introduce_pc_goals(i32 noundef, i32 noundef) local_unnamed_addr #0

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { noreturn nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !9, i64 768}
!6 = !{!"_command_line", !7, i64 0, !7, i64 256, !7, i64 512, !9, i64 768, !9, i64 772, !9, i64 776, !7, i64 780, !9, i64 784, !10, i64 788}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"int", !7, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!9, !9, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!10, !10, i64 0}
!17 = distinct !{!17, !15}
!18 = !{!19, !13, i64 112}
!19 = !{!"_FlConn", !13, i64 0, !9, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !9, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !9, i64 72, !7, i64 76, !13, i64 80, !13, i64 88, !9, i64 96, !7, i64 100, !10, i64 104, !7, i64 108, !13, i64 112, !13, i64 120, !7, i64 128, !10, i64 132, !9, i64 136}
!20 = !{!7, !7, i64 0}
!21 = !{!19, !13, i64 120}
!22 = !{!19, !9, i64 72}
!23 = !{!19, !13, i64 48}
!24 = !{!25, !9, i64 188}
!25 = !{!"_EfConn", !9, i64 0, !7, i64 4, !7, i64 5, !10, i64 8, !13, i64 16, !9, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !9, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !9, i64 88, !13, i64 96, !9, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !9, i64 136, !13, i64 144, !13, i64 152, !13, i64 160, !9, i64 168, !13, i64 176, !9, i64 184, !9, i64 188, !10, i64 192, !7, i64 196, !9, i64 200, !7, i64 204, !9, i64 208, !9, i64 212}
!26 = !{!19, !13, i64 56}
!27 = !{!19, !13, i64 64}
!28 = distinct !{!28, !15}
!29 = !{!25, !9, i64 212}
!30 = !{!25, !9, i64 0}
!31 = !{!19, !9, i64 40}
!32 = !{!19, !13, i64 16}
!33 = !{!19, !13, i64 24}
!34 = !{!19, !13, i64 32}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = !{!38, !9, i64 76}
!38 = !{!"_FtConn", !13, i64 0, !9, i64 8, !13, i64 16, !9, i64 24, !13, i64 32, !9, i64 40, !13, i64 48, !9, i64 56, !9, i64 60, !10, i64 64, !7, i64 68, !9, i64 72, !9, i64 76, !7, i64 80, !9, i64 84, !7, i64 88}
!39 = !{!6, !9, i64 772}
!40 = !{!38, !9, i64 24}
!41 = !{!38, !13, i64 16}
!42 = !{!25, !10, i64 192}
!43 = distinct !{!43, !15}
!44 = !{!45, !10, i64 40}
!45 = !{!"_OpConn", !13, i64 0, !7, i64 8, !13, i64 16, !9, i64 24, !7, i64 28, !7, i64 29, !9, i64 32, !7, i64 36, !10, i64 40}
!46 = !{!25, !9, i64 24}
!47 = !{!25, !13, i64 16}
!48 = !{!38, !10, i64 64}
!49 = !{!38, !9, i64 60}
!50 = distinct !{!50, !15}
!51 = distinct !{!51, !15}
!52 = distinct !{!52, !15}


; Effective O3 passes: BDCEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass