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

; 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._NormEffect = type { i32, [15 x i32], [15 x i32], ptr, i32, ptr, i32, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr, ptr, i32, ptr, ptr }
%struct._NormOperator = type { ptr, i32, [15 x i32], [15 x i32], [15 x i32], i32, [15 x i32], ptr, i32, ptr, ptr, ptr, i32, ptr, i8 }
%struct._ExpNode = type { i32, ptr, i32, float, float, ptr, ptr, ptr }
%struct._Fluent = type { i32, [5 x i32] }
%struct._Fact = type { i32, [5 x i32] }

@garity = external global [50 x i32], align 16
@gtype_size = external global [50 x i32], align 16
@gtype_consts = external global [50 x [2000 x i32]], align 16
@lo = external dso_local global ptr, align 8
@lres = external dso_local global ptr, align 8
@le = external dso_local global ptr, align 8
@gis_added = external global [50 x i8], align 16
@gis_deleted = external global [50 x i8], align 16
@lnum_multiply_parameters = external dso_local global i32, align 4
@lmultiply_parameters = external dso_local global [15 x i32], align 16
@gf_arity = external global [50 x i32], align 16

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

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

declare void @free_NormEffect(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @multiply_easy_non_constrained_effect_parameters(i32 noundef %0) #2 {
  %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 ptr, align 8
  %11 = alloca i8, align 1
  %12 = alloca i32, align 4
  store i32 %0, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #3
  %13 = load i32, ptr %2, align 4, !tbaa !5
  %14 = load i32, ptr @lnum_multiply_parameters, align 4, !tbaa !5
  %15 = icmp eq i32 %13, %14
  br i1 %15, label %16, label %673

16:                                               ; preds = %1
  %17 = load ptr, ptr @le, align 8, !tbaa !9
  %18 = call ptr @new_NormEffect2(ptr noundef %17)
  store ptr %18, ptr %10, align 8, !tbaa !9
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %19

19:                                               ; preds = %493, %16
  %20 = load i32, ptr %5, align 4, !tbaa !5
  %21 = load ptr, ptr @le, align 8, !tbaa !9
  %22 = getelementptr inbounds %struct._NormEffect, ptr %21, i32 0, i32 0
  %23 = load i32, ptr %22, align 8, !tbaa !11
  %24 = icmp slt i32 %20, %23
  br i1 %24, label %25, label %496

25:                                               ; preds = %19
  %26 = load ptr, ptr @lo, align 8, !tbaa !9
  %27 = getelementptr inbounds %struct._NormOperator, ptr %26, i32 0, i32 1
  %28 = load i32, ptr %27, align 8, !tbaa !13
  %29 = load i32, ptr %5, align 4, !tbaa !5
  %30 = add nsw i32 %28, %29
  store i32 %30, ptr %9, align 4, !tbaa !5
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %31

31:                                               ; preds = %51, %25
  %32 = load i32, ptr %6, align 4, !tbaa !5
  %33 = load ptr, ptr %10, align 8, !tbaa !9
  %34 = getelementptr inbounds %struct._NormEffect, ptr %33, i32 0, i32 12
  %35 = load i32, ptr %34, align 8, !tbaa !15
  %36 = icmp slt i32 %32, %35
  br i1 %36, label %37, label %54

37:                                               ; preds = %31
  %38 = load ptr, ptr %10, align 8, !tbaa !9
  %39 = getelementptr inbounds %struct._NormEffect, ptr %38, i32 0, i32 10
  %40 = load ptr, ptr %39, align 8, !tbaa !16
  %41 = load i32, ptr %6, align 4, !tbaa !5
  %42 = sext i32 %41 to i64
  %43 = getelementptr inbounds ptr, ptr %40, i64 %42
  %44 = load i32, ptr %9, align 4, !tbaa !5
  %45 = load ptr, ptr @le, align 8, !tbaa !9
  %46 = getelementptr inbounds %struct._NormEffect, ptr %45, i32 0, i32 2
  %47 = load i32, ptr %5, align 4, !tbaa !5
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds [15 x i32], ptr %46, i64 0, i64 %48
  %50 = load i32, ptr %49, align 4, !tbaa !5
  call void @replace_var_with_const_in_exp(ptr noundef %43, i32 noundef %44, i32 noundef %50)
  br label %51

51:                                               ; preds = %37
  %52 = load i32, ptr %6, align 4, !tbaa !5
  %53 = add nsw i32 %52, 1
  store i32 %53, ptr %6, align 4, !tbaa !5
  br label %31, !llvm.loop !17

54:                                               ; preds = %31
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %55

55:                                               ; preds = %75, %54
  %56 = load i32, ptr %6, align 4, !tbaa !5
  %57 = load ptr, ptr %10, align 8, !tbaa !9
  %58 = getelementptr inbounds %struct._NormEffect, ptr %57, i32 0, i32 12
  %59 = load i32, ptr %58, align 8, !tbaa !15
  %60 = icmp slt i32 %56, %59
  br i1 %60, label %61, label %78

61:                                               ; preds = %55
  %62 = load ptr, ptr %10, align 8, !tbaa !9
  %63 = getelementptr inbounds %struct._NormEffect, ptr %62, i32 0, i32 11
  %64 = load ptr, ptr %63, align 8, !tbaa !19
  %65 = load i32, ptr %6, align 4, !tbaa !5
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds ptr, ptr %64, i64 %66
  %68 = load i32, ptr %9, align 4, !tbaa !5
  %69 = load ptr, ptr @le, align 8, !tbaa !9
  %70 = getelementptr inbounds %struct._NormEffect, ptr %69, i32 0, i32 2
  %71 = load i32, ptr %5, align 4, !tbaa !5
  %72 = sext i32 %71 to i64
  %73 = getelementptr inbounds [15 x i32], ptr %70, i64 0, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !5
  call void @replace_var_with_const_in_exp(ptr noundef %67, i32 noundef %68, i32 noundef %74)
  br label %75

75:                                               ; preds = %61
  %76 = load i32, ptr %6, align 4, !tbaa !5
  %77 = add nsw i32 %76, 1
  store i32 %77, ptr %6, align 4, !tbaa !5
  br label %55, !llvm.loop !20

78:                                               ; preds = %55
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %79

79:                                               ; preds = %215, %78
  %80 = load i32, ptr %6, align 4, !tbaa !5
  %81 = load ptr, ptr %10, align 8, !tbaa !9
  %82 = getelementptr inbounds %struct._NormEffect, ptr %81, i32 0, i32 12
  %83 = load i32, ptr %82, align 8, !tbaa !15
  %84 = icmp slt i32 %80, %83
  br i1 %84, label %85, label %216

85:                                               ; preds = %79
  %86 = load ptr, ptr %10, align 8, !tbaa !9
  %87 = getelementptr inbounds %struct._NormEffect, ptr %86, i32 0, i32 10
  %88 = load ptr, ptr %87, align 8, !tbaa !16
  %89 = load i32, ptr %6, align 4, !tbaa !5
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds ptr, ptr %88, i64 %90
  %92 = load ptr, ptr %91, align 8, !tbaa !9
  %93 = getelementptr inbounds %struct._ExpNode, ptr %92, i32 0, i32 0
  %94 = load i32, ptr %93, align 8, !tbaa !21
  %95 = icmp eq i32 %94, 1001
  br i1 %95, label %96, label %212

96:                                               ; preds = %85
  %97 = load ptr, ptr %10, align 8, !tbaa !9
  %98 = getelementptr inbounds %struct._NormEffect, ptr %97, i32 0, i32 11
  %99 = load ptr, ptr %98, align 8, !tbaa !19
  %100 = load i32, ptr %6, align 4, !tbaa !5
  %101 = sext i32 %100 to i64
  %102 = getelementptr inbounds ptr, ptr %99, i64 %101
  %103 = load ptr, ptr %102, align 8, !tbaa !9
  %104 = getelementptr inbounds %struct._ExpNode, ptr %103, i32 0, i32 0
  %105 = load i32, ptr %104, align 8, !tbaa !21
  %106 = icmp eq i32 %105, 1001
  br i1 %106, label %107, label %212

107:                                              ; preds = %96
  %108 = load ptr, ptr %10, align 8, !tbaa !9
  %109 = getelementptr inbounds %struct._NormEffect, ptr %108, i32 0, i32 9
  %110 = load ptr, ptr %109, align 8, !tbaa !24
  %111 = load i32, ptr %6, align 4, !tbaa !5
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds i32, ptr %110, i64 %112
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = load ptr, ptr %10, align 8, !tbaa !9
  %116 = getelementptr inbounds %struct._NormEffect, ptr %115, i32 0, i32 10
  %117 = load ptr, ptr %116, align 8, !tbaa !16
  %118 = load i32, ptr %6, align 4, !tbaa !5
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds ptr, ptr %117, i64 %119
  %121 = load ptr, ptr %120, align 8, !tbaa !9
  %122 = getelementptr inbounds %struct._ExpNode, ptr %121, i32 0, i32 4
  %123 = load float, ptr %122, align 8, !tbaa !25
  %124 = load ptr, ptr %10, align 8, !tbaa !9
  %125 = getelementptr inbounds %struct._NormEffect, ptr %124, i32 0, i32 11
  %126 = load ptr, ptr %125, align 8, !tbaa !19
  %127 = load i32, ptr %6, align 4, !tbaa !5
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds ptr, ptr %126, i64 %128
  %130 = load ptr, ptr %129, align 8, !tbaa !9
  %131 = getelementptr inbounds %struct._ExpNode, ptr %130, i32 0, i32 4
  %132 = load float, ptr %131, align 8, !tbaa !25
  %133 = call zeroext i8 @number_comparison_holds(i32 noundef %114, float noundef %123, float noundef %132)
  %134 = icmp ne i8 %133, 0
  br i1 %134, label %135, label %209

135:                                              ; preds = %107
  %136 = load ptr, ptr %10, align 8, !tbaa !9
  %137 = getelementptr inbounds %struct._NormEffect, ptr %136, i32 0, i32 10
  %138 = load ptr, ptr %137, align 8, !tbaa !16
  %139 = load i32, ptr %6, 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 !9
  call void @free_ExpNode(ptr noundef %142)
  %143 = load ptr, ptr %10, align 8, !tbaa !9
  %144 = getelementptr inbounds %struct._NormEffect, ptr %143, i32 0, i32 11
  %145 = load ptr, ptr %144, align 8, !tbaa !19
  %146 = load i32, ptr %6, align 4, !tbaa !5
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds ptr, ptr %145, i64 %147
  %149 = load ptr, ptr %148, align 8, !tbaa !9
  call void @free_ExpNode(ptr noundef %149)
  %150 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %150, ptr %7, align 4, !tbaa !5
  br label %151

151:                                              ; preds = %201, %135
  %152 = load i32, ptr %7, align 4, !tbaa !5
  %153 = load ptr, ptr %10, align 8, !tbaa !9
  %154 = getelementptr inbounds %struct._NormEffect, ptr %153, i32 0, i32 12
  %155 = load i32, ptr %154, align 8, !tbaa !15
  %156 = sub nsw i32 %155, 1
  %157 = icmp slt i32 %152, %156
  br i1 %157, label %158, label %204

158:                                              ; preds = %151
  %159 = load ptr, ptr %10, align 8, !tbaa !9
  %160 = getelementptr inbounds %struct._NormEffect, ptr %159, i32 0, i32 9
  %161 = load ptr, ptr %160, align 8, !tbaa !24
  %162 = load i32, ptr %7, align 4, !tbaa !5
  %163 = add nsw i32 %162, 1
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %161, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = load ptr, ptr %10, align 8, !tbaa !9
  %168 = getelementptr inbounds %struct._NormEffect, ptr %167, i32 0, i32 9
  %169 = load ptr, ptr %168, align 8, !tbaa !24
  %170 = load i32, ptr %7, align 4, !tbaa !5
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds i32, ptr %169, i64 %171
  store i32 %166, ptr %172, align 4, !tbaa !5
  %173 = load ptr, ptr %10, align 8, !tbaa !9
  %174 = getelementptr inbounds %struct._NormEffect, ptr %173, i32 0, i32 10
  %175 = load ptr, ptr %174, align 8, !tbaa !16
  %176 = load i32, ptr %7, align 4, !tbaa !5
  %177 = add nsw i32 %176, 1
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds ptr, ptr %175, i64 %178
  %180 = load ptr, ptr %179, align 8, !tbaa !9
  %181 = load ptr, ptr %10, align 8, !tbaa !9
  %182 = getelementptr inbounds %struct._NormEffect, ptr %181, i32 0, i32 10
  %183 = load ptr, ptr %182, align 8, !tbaa !16
  %184 = load i32, ptr %7, align 4, !tbaa !5
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds ptr, ptr %183, i64 %185
  store ptr %180, ptr %186, align 8, !tbaa !9
  %187 = load ptr, ptr %10, align 8, !tbaa !9
  %188 = getelementptr inbounds %struct._NormEffect, ptr %187, i32 0, i32 11
  %189 = load ptr, ptr %188, align 8, !tbaa !19
  %190 = load i32, ptr %7, align 4, !tbaa !5
  %191 = add nsw i32 %190, 1
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds ptr, ptr %189, i64 %192
  %194 = load ptr, ptr %193, align 8, !tbaa !9
  %195 = load ptr, ptr %10, align 8, !tbaa !9
  %196 = getelementptr inbounds %struct._NormEffect, ptr %195, i32 0, i32 11
  %197 = load ptr, ptr %196, align 8, !tbaa !19
  %198 = load i32, ptr %7, align 4, !tbaa !5
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds ptr, ptr %197, i64 %199
  store ptr %194, ptr %200, align 8, !tbaa !9
  br label %201

201:                                              ; preds = %158
  %202 = load i32, ptr %7, align 4, !tbaa !5
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %7, align 4, !tbaa !5
  br label %151, !llvm.loop !26

204:                                              ; preds = %151
  %205 = load ptr, ptr %10, align 8, !tbaa !9
  %206 = getelementptr inbounds %struct._NormEffect, ptr %205, i32 0, i32 12
  %207 = load i32, ptr %206, align 8, !tbaa !15
  %208 = add nsw i32 %207, -1
  store i32 %208, ptr %206, align 8, !tbaa !15
  br label %211

209:                                              ; preds = %107
  %210 = load ptr, ptr %10, align 8, !tbaa !9
  call void @free_NormEffect(ptr noundef %210)
  store i32 1, ptr %12, align 4
  br label %721

211:                                              ; preds = %204
  br label %215

212:                                              ; preds = %96, %85
  %213 = load i32, ptr %6, align 4, !tbaa !5
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %6, align 4, !tbaa !5
  br label %215

215:                                              ; preds = %212, %211
  br label %79, !llvm.loop !27

216:                                              ; preds = %79
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %217

217:                                              ; preds = %276, %216
  %218 = load i32, ptr %6, align 4, !tbaa !5
  %219 = load ptr, ptr %10, align 8, !tbaa !9
  %220 = getelementptr inbounds %struct._NormEffect, ptr %219, i32 0, i32 16
  %221 = load i32, ptr %220, align 8, !tbaa !28
  %222 = icmp slt i32 %218, %221
  br i1 %222, label %223, label %279

223:                                              ; preds = %217
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %224

224:                                              ; preds = %272, %223
  %225 = load i32, ptr %7, align 4, !tbaa !5
  %226 = load ptr, ptr %10, align 8, !tbaa !9
  %227 = getelementptr inbounds %struct._NormEffect, ptr %226, i32 0, i32 14
  %228 = load ptr, ptr %227, align 8, !tbaa !29
  %229 = load i32, ptr %6, align 4, !tbaa !5
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds %struct._Fluent, ptr %228, i64 %230
  %232 = getelementptr inbounds %struct._Fluent, ptr %231, i32 0, i32 0
  %233 = load i32, ptr %232, align 4, !tbaa !30
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %234
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = icmp slt i32 %225, %236
  br i1 %237, label %238, label %275

238:                                              ; preds = %224
  %239 = load ptr, ptr %10, align 8, !tbaa !9
  %240 = getelementptr inbounds %struct._NormEffect, ptr %239, i32 0, i32 14
  %241 = load ptr, ptr %240, align 8, !tbaa !29
  %242 = load i32, ptr %6, align 4, !tbaa !5
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct._Fluent, ptr %241, i64 %243
  %245 = getelementptr inbounds %struct._Fluent, ptr %244, i32 0, i32 1
  %246 = load i32, ptr %7, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds [5 x i32], ptr %245, i64 0, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !5
  %250 = load i32, ptr %9, align 4, !tbaa !5
  %251 = mul nsw i32 %250, -1
  %252 = sub nsw i32 %251, 1
  %253 = icmp eq i32 %249, %252
  br i1 %253, label %254, label %271

254:                                              ; preds = %238
  %255 = load ptr, ptr @le, align 8, !tbaa !9
  %256 = getelementptr inbounds %struct._NormEffect, ptr %255, i32 0, i32 2
  %257 = load i32, ptr %5, align 4, !tbaa !5
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds [15 x i32], ptr %256, i64 0, i64 %258
  %260 = load i32, ptr %259, align 4, !tbaa !5
  %261 = load ptr, ptr %10, align 8, !tbaa !9
  %262 = getelementptr inbounds %struct._NormEffect, ptr %261, i32 0, i32 14
  %263 = load ptr, ptr %262, align 8, !tbaa !29
  %264 = load i32, ptr %6, align 4, !tbaa !5
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds %struct._Fluent, ptr %263, i64 %265
  %267 = getelementptr inbounds %struct._Fluent, ptr %266, i32 0, i32 1
  %268 = load i32, ptr %7, align 4, !tbaa !5
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds [5 x i32], ptr %267, i64 0, i64 %269
  store i32 %260, ptr %270, align 4, !tbaa !5
  br label %271

271:                                              ; preds = %254, %238
  br label %272

272:                                              ; preds = %271
  %273 = load i32, ptr %7, align 4, !tbaa !5
  %274 = add nsw i32 %273, 1
  store i32 %274, ptr %7, align 4, !tbaa !5
  br label %224, !llvm.loop !32

275:                                              ; preds = %224
  br label %276

276:                                              ; preds = %275
  %277 = load i32, ptr %6, align 4, !tbaa !5
  %278 = add nsw i32 %277, 1
  store i32 %278, ptr %6, align 4, !tbaa !5
  br label %217, !llvm.loop !33

279:                                              ; preds = %217
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %280

280:                                              ; preds = %300, %279
  %281 = load i32, ptr %6, align 4, !tbaa !5
  %282 = load ptr, ptr %10, align 8, !tbaa !9
  %283 = getelementptr inbounds %struct._NormEffect, ptr %282, i32 0, i32 16
  %284 = load i32, ptr %283, align 8, !tbaa !28
  %285 = icmp slt i32 %281, %284
  br i1 %285, label %286, label %303

286:                                              ; preds = %280
  %287 = load ptr, ptr %10, align 8, !tbaa !9
  %288 = getelementptr inbounds %struct._NormEffect, ptr %287, i32 0, i32 15
  %289 = load ptr, ptr %288, align 8, !tbaa !34
  %290 = load i32, ptr %6, align 4, !tbaa !5
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds ptr, ptr %289, i64 %291
  %293 = load i32, ptr %9, align 4, !tbaa !5
  %294 = load ptr, ptr @le, align 8, !tbaa !9
  %295 = getelementptr inbounds %struct._NormEffect, ptr %294, i32 0, i32 2
  %296 = load i32, ptr %5, align 4, !tbaa !5
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds [15 x i32], ptr %295, i64 0, i64 %297
  %299 = load i32, ptr %298, align 4, !tbaa !5
  call void @replace_var_with_const_in_exp(ptr noundef %292, i32 noundef %293, i32 noundef %299)
  br label %300

300:                                              ; preds = %286
  %301 = load i32, ptr %6, align 4, !tbaa !5
  %302 = add nsw i32 %301, 1
  store i32 %302, ptr %6, align 4, !tbaa !5
  br label %280, !llvm.loop !35

303:                                              ; preds = %280
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %304

304:                                              ; preds = %363, %303
  %305 = load i32, ptr %6, align 4, !tbaa !5
  %306 = load ptr, ptr %10, align 8, !tbaa !9
  %307 = getelementptr inbounds %struct._NormEffect, ptr %306, i32 0, i32 4
  %308 = load i32, ptr %307, align 8, !tbaa !36
  %309 = icmp slt i32 %305, %308
  br i1 %309, label %310, label %366

310:                                              ; preds = %304
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %311

311:                                              ; preds = %359, %310
  %312 = load i32, ptr %7, align 4, !tbaa !5
  %313 = load ptr, ptr %10, align 8, !tbaa !9
  %314 = getelementptr inbounds %struct._NormEffect, ptr %313, i32 0, i32 3
  %315 = load ptr, ptr %314, align 8, !tbaa !37
  %316 = load i32, ptr %6, align 4, !tbaa !5
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds %struct._Fact, ptr %315, i64 %317
  %319 = getelementptr inbounds %struct._Fact, ptr %318, i32 0, i32 0
  %320 = load i32, ptr %319, align 4, !tbaa !38
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %321
  %323 = load i32, ptr %322, align 4, !tbaa !5
  %324 = icmp slt i32 %312, %323
  br i1 %324, label %325, label %362

325:                                              ; preds = %311
  %326 = load ptr, ptr %10, align 8, !tbaa !9
  %327 = getelementptr inbounds %struct._NormEffect, ptr %326, i32 0, i32 3
  %328 = load ptr, ptr %327, align 8, !tbaa !37
  %329 = load i32, ptr %6, align 4, !tbaa !5
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds %struct._Fact, ptr %328, i64 %330
  %332 = getelementptr inbounds %struct._Fact, ptr %331, i32 0, i32 1
  %333 = load i32, ptr %7, align 4, !tbaa !5
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds [5 x i32], ptr %332, i64 0, i64 %334
  %336 = load i32, ptr %335, align 4, !tbaa !5
  %337 = load i32, ptr %9, align 4, !tbaa !5
  %338 = mul nsw i32 %337, -1
  %339 = sub nsw i32 %338, 1
  %340 = icmp eq i32 %336, %339
  br i1 %340, label %341, label %358

341:                                              ; preds = %325
  %342 = load ptr, ptr @le, align 8, !tbaa !9
  %343 = getelementptr inbounds %struct._NormEffect, ptr %342, i32 0, i32 2
  %344 = load i32, ptr %5, align 4, !tbaa !5
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds [15 x i32], ptr %343, i64 0, i64 %345
  %347 = load i32, ptr %346, align 4, !tbaa !5
  %348 = load ptr, ptr %10, align 8, !tbaa !9
  %349 = getelementptr inbounds %struct._NormEffect, ptr %348, i32 0, i32 3
  %350 = load ptr, ptr %349, align 8, !tbaa !37
  %351 = load i32, ptr %6, align 4, !tbaa !5
  %352 = sext i32 %351 to i64
  %353 = getelementptr inbounds %struct._Fact, ptr %350, i64 %352
  %354 = getelementptr inbounds %struct._Fact, ptr %353, i32 0, i32 1
  %355 = load i32, ptr %7, align 4, !tbaa !5
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds [5 x i32], ptr %354, i64 0, i64 %356
  store i32 %347, ptr %357, align 4, !tbaa !5
  br label %358

358:                                              ; preds = %341, %325
  br label %359

359:                                              ; preds = %358
  %360 = load i32, ptr %7, align 4, !tbaa !5
  %361 = add nsw i32 %360, 1
  store i32 %361, ptr %7, align 4, !tbaa !5
  br label %311, !llvm.loop !40

362:                                              ; preds = %311
  br label %363

363:                                              ; preds = %362
  %364 = load i32, ptr %6, align 4, !tbaa !5
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %6, align 4, !tbaa !5
  br label %304, !llvm.loop !41

366:                                              ; preds = %304
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %367

367:                                              ; preds = %426, %366
  %368 = load i32, ptr %6, align 4, !tbaa !5
  %369 = load ptr, ptr %10, align 8, !tbaa !9
  %370 = getelementptr inbounds %struct._NormEffect, ptr %369, i32 0, i32 6
  %371 = load i32, ptr %370, align 8, !tbaa !42
  %372 = icmp slt i32 %368, %371
  br i1 %372, label %373, label %429

373:                                              ; preds = %367
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %374

374:                                              ; preds = %422, %373
  %375 = load i32, ptr %7, align 4, !tbaa !5
  %376 = load ptr, ptr %10, align 8, !tbaa !9
  %377 = getelementptr inbounds %struct._NormEffect, ptr %376, i32 0, i32 5
  %378 = load ptr, ptr %377, align 8, !tbaa !43
  %379 = load i32, ptr %6, align 4, !tbaa !5
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct._Fact, ptr %378, i64 %380
  %382 = getelementptr inbounds %struct._Fact, ptr %381, i32 0, i32 0
  %383 = load i32, ptr %382, align 4, !tbaa !38
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !5
  %387 = icmp slt i32 %375, %386
  br i1 %387, label %388, label %425

388:                                              ; preds = %374
  %389 = load ptr, ptr %10, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct._NormEffect, ptr %389, i32 0, i32 5
  %391 = load ptr, ptr %390, align 8, !tbaa !43
  %392 = load i32, ptr %6, align 4, !tbaa !5
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct._Fact, ptr %391, i64 %393
  %395 = getelementptr inbounds %struct._Fact, ptr %394, i32 0, i32 1
  %396 = load i32, ptr %7, align 4, !tbaa !5
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds [5 x i32], ptr %395, i64 0, i64 %397
  %399 = load i32, ptr %398, align 4, !tbaa !5
  %400 = load i32, ptr %9, align 4, !tbaa !5
  %401 = mul nsw i32 %400, -1
  %402 = sub nsw i32 %401, 1
  %403 = icmp eq i32 %399, %402
  br i1 %403, label %404, label %421

404:                                              ; preds = %388
  %405 = load ptr, ptr @le, align 8, !tbaa !9
  %406 = getelementptr inbounds %struct._NormEffect, ptr %405, i32 0, i32 2
  %407 = load i32, ptr %5, align 4, !tbaa !5
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds [15 x i32], ptr %406, i64 0, i64 %408
  %410 = load i32, ptr %409, align 4, !tbaa !5
  %411 = load ptr, ptr %10, align 8, !tbaa !9
  %412 = getelementptr inbounds %struct._NormEffect, ptr %411, i32 0, i32 5
  %413 = load ptr, ptr %412, align 8, !tbaa !43
  %414 = load i32, ptr %6, align 4, !tbaa !5
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds %struct._Fact, ptr %413, i64 %415
  %417 = getelementptr inbounds %struct._Fact, ptr %416, i32 0, i32 1
  %418 = load i32, ptr %7, align 4, !tbaa !5
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [5 x i32], ptr %417, i64 0, i64 %419
  store i32 %410, ptr %420, align 4, !tbaa !5
  br label %421

421:                                              ; preds = %404, %388
  br label %422

422:                                              ; preds = %421
  %423 = load i32, ptr %7, align 4, !tbaa !5
  %424 = add nsw i32 %423, 1
  store i32 %424, ptr %7, align 4, !tbaa !5
  br label %374, !llvm.loop !44

425:                                              ; preds = %374
  br label %426

426:                                              ; preds = %425
  %427 = load i32, ptr %6, align 4, !tbaa !5
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr %6, align 4, !tbaa !5
  br label %367, !llvm.loop !45

429:                                              ; preds = %367
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %430

430:                                              ; preds = %489, %429
  %431 = load i32, ptr %6, align 4, !tbaa !5
  %432 = load ptr, ptr %10, align 8, !tbaa !9
  %433 = getelementptr inbounds %struct._NormEffect, ptr %432, i32 0, i32 8
  %434 = load i32, ptr %433, align 8, !tbaa !46
  %435 = icmp slt i32 %431, %434
  br i1 %435, label %436, label %492

436:                                              ; preds = %430
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %437

437:                                              ; preds = %485, %436
  %438 = load i32, ptr %7, align 4, !tbaa !5
  %439 = load ptr, ptr %10, align 8, !tbaa !9
  %440 = getelementptr inbounds %struct._NormEffect, ptr %439, i32 0, i32 7
  %441 = load ptr, ptr %440, align 8, !tbaa !47
  %442 = load i32, ptr %6, align 4, !tbaa !5
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds %struct._Fact, ptr %441, i64 %443
  %445 = getelementptr inbounds %struct._Fact, ptr %444, i32 0, i32 0
  %446 = load i32, ptr %445, align 4, !tbaa !38
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %447
  %449 = load i32, ptr %448, align 4, !tbaa !5
  %450 = icmp slt i32 %438, %449
  br i1 %450, label %451, label %488

451:                                              ; preds = %437
  %452 = load ptr, ptr %10, align 8, !tbaa !9
  %453 = getelementptr inbounds %struct._NormEffect, ptr %452, i32 0, i32 7
  %454 = load ptr, ptr %453, align 8, !tbaa !47
  %455 = load i32, ptr %6, align 4, !tbaa !5
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct._Fact, ptr %454, i64 %456
  %458 = getelementptr inbounds %struct._Fact, ptr %457, i32 0, i32 1
  %459 = load i32, ptr %7, align 4, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds [5 x i32], ptr %458, i64 0, i64 %460
  %462 = load i32, ptr %461, align 4, !tbaa !5
  %463 = load i32, ptr %9, align 4, !tbaa !5
  %464 = mul nsw i32 %463, -1
  %465 = sub nsw i32 %464, 1
  %466 = icmp eq i32 %462, %465
  br i1 %466, label %467, label %484

467:                                              ; preds = %451
  %468 = load ptr, ptr @le, align 8, !tbaa !9
  %469 = getelementptr inbounds %struct._NormEffect, ptr %468, i32 0, i32 2
  %470 = load i32, ptr %5, align 4, !tbaa !5
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds [15 x i32], ptr %469, i64 0, i64 %471
  %473 = load i32, ptr %472, align 4, !tbaa !5
  %474 = load ptr, ptr %10, align 8, !tbaa !9
  %475 = getelementptr inbounds %struct._NormEffect, ptr %474, i32 0, i32 7
  %476 = load ptr, ptr %475, align 8, !tbaa !47
  %477 = load i32, ptr %6, align 4, !tbaa !5
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct._Fact, ptr %476, i64 %478
  %480 = getelementptr inbounds %struct._Fact, ptr %479, i32 0, i32 1
  %481 = load i32, ptr %7, align 4, !tbaa !5
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds [5 x i32], ptr %480, i64 0, i64 %482
  store i32 %473, ptr %483, align 4, !tbaa !5
  br label %484

484:                                              ; preds = %467, %451
  br label %485

485:                                              ; preds = %484
  %486 = load i32, ptr %7, align 4, !tbaa !5
  %487 = add nsw i32 %486, 1
  store i32 %487, ptr %7, align 4, !tbaa !5
  br label %437, !llvm.loop !48

488:                                              ; preds = %437
  br label %489

489:                                              ; preds = %488
  %490 = load i32, ptr %6, align 4, !tbaa !5
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr %6, align 4, !tbaa !5
  br label %430, !llvm.loop !49

492:                                              ; preds = %430
  br label %493

493:                                              ; preds = %492
  %494 = load i32, ptr %5, align 4, !tbaa !5
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %5, align 4, !tbaa !5
  br label %19, !llvm.loop !50

496:                                              ; preds = %19
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %497

497:                                              ; preds = %660, %496
  %498 = load i32, ptr %5, align 4, !tbaa !5
  %499 = load ptr, ptr %10, align 8, !tbaa !9
  %500 = getelementptr inbounds %struct._NormEffect, ptr %499, i32 0, i32 4
  %501 = load i32, ptr %500, align 8, !tbaa !36
  %502 = icmp slt i32 %498, %501
  br i1 %502, label %503, label %661

503:                                              ; preds = %497
  store i8 0, ptr %11, align 1, !tbaa !51
  %504 = load ptr, ptr %10, align 8, !tbaa !9
  %505 = getelementptr inbounds %struct._NormEffect, ptr %504, i32 0, i32 3
  %506 = load ptr, ptr %505, align 8, !tbaa !37
  %507 = load i32, ptr %5, align 4, !tbaa !5
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds %struct._Fact, ptr %506, i64 %508
  %510 = getelementptr inbounds %struct._Fact, ptr %509, i32 0, i32 0
  %511 = load i32, ptr %510, align 4, !tbaa !38
  store i32 %511, ptr %8, align 4, !tbaa !5
  %512 = load i32, ptr %8, align 4, !tbaa !5
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds [50 x i8], ptr @gis_added, i64 0, i64 %513
  %515 = load i8, ptr %514, align 1, !tbaa !51
  %516 = icmp ne i8 %515, 0
  br i1 %516, label %578, label %517

517:                                              ; preds = %503
  %518 = load i32, ptr %8, align 4, !tbaa !5
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds [50 x i8], ptr @gis_deleted, i64 0, i64 %519
  %521 = load i8, ptr %520, align 1, !tbaa !51
  %522 = icmp ne i8 %521, 0
  br i1 %522, label %578, label %523

523:                                              ; preds = %517
  store i32 0, ptr %6, align 4, !tbaa !5
  br label %524

524:                                              ; preds = %566, %523
  %525 = load i32, ptr %6, align 4, !tbaa !5
  %526 = load i32, ptr %8, align 4, !tbaa !5
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %527
  %529 = load i32, ptr %528, align 4, !tbaa !5
  %530 = icmp slt i32 %525, %529
  br i1 %530, label %531, label %569

531:                                              ; preds = %524
  %532 = load ptr, ptr %10, align 8, !tbaa !9
  %533 = getelementptr inbounds %struct._NormEffect, ptr %532, i32 0, i32 3
  %534 = load ptr, ptr %533, align 8, !tbaa !37
  %535 = load i32, ptr %5, align 4, !tbaa !5
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds %struct._Fact, ptr %534, i64 %536
  %538 = getelementptr inbounds %struct._Fact, ptr %537, i32 0, i32 1
  %539 = load i32, ptr %6, align 4, !tbaa !5
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds [5 x i32], ptr %538, i64 0, i64 %540
  %542 = load i32, ptr %541, align 4, !tbaa !5
  %543 = icmp slt i32 %542, 0
  br i1 %543, label %544, label %565

544:                                              ; preds = %531
  %545 = load ptr, ptr %10, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct._NormEffect, ptr %545, i32 0, i32 3
  %547 = load ptr, ptr %546, align 8, !tbaa !37
  %548 = load i32, ptr %5, align 4, !tbaa !5
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds %struct._Fact, ptr %547, i64 %549
  %551 = getelementptr inbounds %struct._Fact, ptr %550, i32 0, i32 1
  %552 = load i32, ptr %6, align 4, !tbaa !5
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds [5 x i32], ptr %551, i64 0, i64 %553
  %555 = load i32, ptr %554, align 4, !tbaa !5
  %556 = load ptr, ptr @lo, align 8, !tbaa !9
  %557 = getelementptr inbounds %struct._NormOperator, ptr %556, i32 0, i32 1
  %558 = load i32, ptr %557, align 8, !tbaa !13
  %559 = add nsw i32 %558, 1
  %560 = icmp slt i32 %555, %559
  %561 = zext i1 %560 to i32
  %562 = mul nsw i32 %561, -1
  %563 = icmp ne i32 %562, 0
  br i1 %563, label %564, label %565

564:                                              ; preds = %544
  br label %569

565:                                              ; preds = %544, %531
  br label %566

566:                                              ; preds = %565
  %567 = load i32, ptr %6, align 4, !tbaa !5
  %568 = add nsw i32 %567, 1
  store i32 %568, ptr %6, align 4, !tbaa !5
  br label %524, !llvm.loop !52

569:                                              ; preds = %564, %524
  %570 = load i32, ptr %6, align 4, !tbaa !5
  %571 = load i32, ptr %8, align 4, !tbaa !5
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %572
  %574 = load i32, ptr %573, align 4, !tbaa !5
  %575 = icmp eq i32 %570, %574
  br i1 %575, label %576, label %577

576:                                              ; preds = %569
  store i8 1, ptr %11, align 1, !tbaa !51
  br label %577

577:                                              ; preds = %576, %569
  br label %578

578:                                              ; preds = %577, %517, %503
  %579 = load i8, ptr %11, align 1, !tbaa !51
  %580 = icmp ne i8 %579, 0
  br i1 %580, label %581, label %657

581:                                              ; preds = %578
  %582 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %582, ptr %6, align 4, !tbaa !5
  br label %583

583:                                              ; preds = %649, %581
  %584 = load i32, ptr %6, align 4, !tbaa !5
  %585 = load ptr, ptr %10, align 8, !tbaa !9
  %586 = getelementptr inbounds %struct._NormEffect, ptr %585, i32 0, i32 4
  %587 = load i32, ptr %586, align 8, !tbaa !36
  %588 = sub nsw i32 %587, 1
  %589 = icmp slt i32 %584, %588
  br i1 %589, label %590, label %652

590:                                              ; preds = %583
  %591 = load ptr, ptr %10, align 8, !tbaa !9
  %592 = getelementptr inbounds %struct._NormEffect, ptr %591, i32 0, i32 3
  %593 = load ptr, ptr %592, align 8, !tbaa !37
  %594 = load i32, ptr %6, align 4, !tbaa !5
  %595 = add nsw i32 %594, 1
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds %struct._Fact, ptr %593, i64 %596
  %598 = getelementptr inbounds %struct._Fact, ptr %597, i32 0, i32 0
  %599 = load i32, ptr %598, align 4, !tbaa !38
  %600 = load ptr, ptr %10, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct._NormEffect, ptr %600, i32 0, i32 3
  %602 = load ptr, ptr %601, align 8, !tbaa !37
  %603 = load i32, ptr %6, align 4, !tbaa !5
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds %struct._Fact, ptr %602, i64 %604
  %606 = getelementptr inbounds %struct._Fact, ptr %605, i32 0, i32 0
  store i32 %599, ptr %606, align 4, !tbaa !38
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %607

607:                                              ; preds = %645, %590
  %608 = load i32, ptr %7, align 4, !tbaa !5
  %609 = load ptr, ptr %10, align 8, !tbaa !9
  %610 = getelementptr inbounds %struct._NormEffect, ptr %609, i32 0, i32 3
  %611 = load ptr, ptr %610, align 8, !tbaa !37
  %612 = load i32, ptr %6, align 4, !tbaa !5
  %613 = add nsw i32 %612, 1
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds %struct._Fact, ptr %611, i64 %614
  %616 = getelementptr inbounds %struct._Fact, ptr %615, i32 0, i32 0
  %617 = load i32, ptr %616, align 4, !tbaa !38
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %618
  %620 = load i32, ptr %619, align 4, !tbaa !5
  %621 = icmp slt i32 %608, %620
  br i1 %621, label %622, label %648

622:                                              ; preds = %607
  %623 = load ptr, ptr %10, align 8, !tbaa !9
  %624 = getelementptr inbounds %struct._NormEffect, ptr %623, i32 0, i32 3
  %625 = load ptr, ptr %624, align 8, !tbaa !37
  %626 = load i32, ptr %6, align 4, !tbaa !5
  %627 = add nsw i32 %626, 1
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds %struct._Fact, ptr %625, i64 %628
  %630 = getelementptr inbounds %struct._Fact, ptr %629, i32 0, i32 1
  %631 = load i32, ptr %7, align 4, !tbaa !5
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds [5 x i32], ptr %630, i64 0, i64 %632
  %634 = load i32, ptr %633, align 4, !tbaa !5
  %635 = load ptr, ptr %10, align 8, !tbaa !9
  %636 = getelementptr inbounds %struct._NormEffect, ptr %635, i32 0, i32 3
  %637 = load ptr, ptr %636, align 8, !tbaa !37
  %638 = load i32, ptr %6, align 4, !tbaa !5
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct._Fact, ptr %637, i64 %639
  %641 = getelementptr inbounds %struct._Fact, ptr %640, i32 0, i32 1
  %642 = load i32, ptr %7, align 4, !tbaa !5
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds [5 x i32], ptr %641, i64 0, i64 %643
  store i32 %634, ptr %644, align 4, !tbaa !5
  br label %645

645:                                              ; preds = %622
  %646 = load i32, ptr %7, align 4, !tbaa !5
  %647 = add nsw i32 %646, 1
  store i32 %647, ptr %7, align 4, !tbaa !5
  br label %607, !llvm.loop !53

648:                                              ; preds = %607
  br label %649

649:                                              ; preds = %648
  %650 = load i32, ptr %6, align 4, !tbaa !5
  %651 = add nsw i32 %650, 1
  store i32 %651, ptr %6, align 4, !tbaa !5
  br label %583, !llvm.loop !54

652:                                              ; preds = %583
  %653 = load ptr, ptr %10, align 8, !tbaa !9
  %654 = getelementptr inbounds %struct._NormEffect, ptr %653, i32 0, i32 4
  %655 = load i32, ptr %654, align 8, !tbaa !36
  %656 = add nsw i32 %655, -1
  store i32 %656, ptr %654, align 8, !tbaa !36
  br label %660

657:                                              ; preds = %578
  %658 = load i32, ptr %5, align 4, !tbaa !5
  %659 = add nsw i32 %658, 1
  store i32 %659, ptr %5, align 4, !tbaa !5
  br label %660

660:                                              ; preds = %657, %652
  br label %497, !llvm.loop !55

661:                                              ; preds = %497
  %662 = load ptr, ptr @lres, align 8, !tbaa !9
  %663 = icmp ne ptr %662, null
  br i1 %663, label %664, label %668

664:                                              ; preds = %661
  %665 = load ptr, ptr %10, align 8, !tbaa !9
  %666 = load ptr, ptr @lres, align 8, !tbaa !9
  %667 = getelementptr inbounds %struct._NormEffect, ptr %666, i32 0, i32 17
  store ptr %665, ptr %667, align 8, !tbaa !56
  br label %668

668:                                              ; preds = %664, %661
  %669 = load ptr, ptr @lres, align 8, !tbaa !9
  %670 = load ptr, ptr %10, align 8, !tbaa !9
  %671 = getelementptr inbounds %struct._NormEffect, ptr %670, i32 0, i32 18
  store ptr %669, ptr %671, align 8, !tbaa !57
  %672 = load ptr, ptr %10, align 8, !tbaa !9
  store ptr %672, ptr @lres, align 8, !tbaa !9
  store i32 1, ptr %12, align 4
  br label %721

673:                                              ; preds = %1
  %674 = load ptr, ptr @le, align 8, !tbaa !9
  %675 = getelementptr inbounds %struct._NormEffect, ptr %674, i32 0, i32 1
  %676 = load i32, ptr %2, align 4, !tbaa !5
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds [15 x i32], ptr @lmultiply_parameters, i64 0, i64 %677
  %679 = load i32, ptr %678, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds [15 x i32], ptr %675, i64 0, i64 %680
  %682 = load i32, ptr %681, align 4, !tbaa !5
  store i32 %682, ptr %3, align 4, !tbaa !5
  %683 = load i32, ptr %3, align 4, !tbaa !5
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds [50 x i32], ptr @gtype_size, i64 0, i64 %684
  %686 = load i32, ptr %685, align 4, !tbaa !5
  store i32 %686, ptr %4, align 4, !tbaa !5
  store i32 0, ptr %5, align 4, !tbaa !5
  br label %687

687:                                              ; preds = %709, %673
  %688 = load i32, ptr %5, align 4, !tbaa !5
  %689 = load i32, ptr %4, align 4, !tbaa !5
  %690 = icmp slt i32 %688, %689
  br i1 %690, label %691, label %712

691:                                              ; preds = %687
  %692 = load i32, ptr %3, align 4, !tbaa !5
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds [50 x [2000 x i32]], ptr @gtype_consts, i64 0, i64 %693
  %695 = load i32, ptr %5, align 4, !tbaa !5
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds [2000 x i32], ptr %694, i64 0, i64 %696
  %698 = load i32, ptr %697, align 4, !tbaa !5
  %699 = load ptr, ptr @le, align 8, !tbaa !9
  %700 = getelementptr inbounds %struct._NormEffect, ptr %699, i32 0, i32 2
  %701 = load i32, ptr %2, align 4, !tbaa !5
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds [15 x i32], ptr @lmultiply_parameters, i64 0, i64 %702
  %704 = load i32, ptr %703, align 4, !tbaa !5
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds [15 x i32], ptr %700, i64 0, i64 %705
  store i32 %698, ptr %706, align 4, !tbaa !5
  %707 = load i32, ptr %2, align 4, !tbaa !5
  %708 = add nsw i32 %707, 1
  call void @multiply_easy_non_constrained_effect_parameters(i32 noundef %708)
  br label %709

709:                                              ; preds = %691
  %710 = load i32, ptr %5, align 4, !tbaa !5
  %711 = add nsw i32 %710, 1
  store i32 %711, ptr %5, align 4, !tbaa !5
  br label %687, !llvm.loop !58

712:                                              ; preds = %687
  %713 = load ptr, ptr @le, align 8, !tbaa !9
  %714 = getelementptr inbounds %struct._NormEffect, ptr %713, i32 0, i32 2
  %715 = load i32, ptr %2, align 4, !tbaa !5
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds [15 x i32], ptr @lmultiply_parameters, i64 0, i64 %716
  %718 = load i32, ptr %717, align 4, !tbaa !5
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds [15 x i32], ptr %714, i64 0, i64 %719
  store i32 -1, ptr %720, align 4, !tbaa !5
  store i32 0, ptr %12, align 4
  br label %721

721:                                              ; preds = %712, %668, %209
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #3
  %722 = load i32, ptr %12, align 4
  switch i32 %722, label %724 [
    i32 0, label %723
    i32 1, label %723
  ]

723:                                              ; preds = %721, %721
  ret void

724:                                              ; preds = %721
  unreachable
}

declare ptr @new_NormEffect2(ptr noundef) #1

declare void @replace_var_with_const_in_exp(ptr noundef, i32 noundef, i32 noundef) #1

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

declare void @free_ExpNode(ptr noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { 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 #3 = { 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, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_NormEffect", !6, i64 0, !7, i64 4, !7, i64 64, !10, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !10, i64 160, !6, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !6, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !6, i64 232, !10, i64 240, !10, i64 248}
!13 = !{!14, !6, i64 8}
!14 = !{!"_NormOperator", !10, i64 0, !6, i64 8, !7, i64 12, !7, i64 72, !7, i64 132, !6, i64 192, !7, i64 196, !10, i64 256, !6, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !6, i64 296, !10, i64 304, !7, i64 312}
!15 = !{!12, !6, i64 200}
!16 = !{!12, !10, i64 184}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!12, !10, i64 192}
!20 = distinct !{!20, !18}
!21 = !{!22, !6, i64 0}
!22 = !{!"_ExpNode", !6, i64 0, !10, i64 8, !6, i64 16, !23, i64 20, !23, i64 24, !10, i64 32, !10, i64 40, !10, i64 48}
!23 = !{!"float", !7, i64 0}
!24 = !{!12, !10, i64 176}
!25 = !{!22, !23, i64 24}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = !{!12, !6, i64 232}
!29 = !{!12, !10, i64 216}
!30 = !{!31, !6, i64 0}
!31 = !{!"_Fluent", !6, i64 0, !7, i64 4}
!32 = distinct !{!32, !18}
!33 = distinct !{!33, !18}
!34 = !{!12, !10, i64 224}
!35 = distinct !{!35, !18}
!36 = !{!12, !6, i64 136}
!37 = !{!12, !10, i64 128}
!38 = !{!39, !6, i64 0}
!39 = !{!"_Fact", !6, i64 0, !7, i64 4}
!40 = distinct !{!40, !18}
!41 = distinct !{!41, !18}
!42 = !{!12, !6, i64 152}
!43 = !{!12, !10, i64 144}
!44 = distinct !{!44, !18}
!45 = distinct !{!45, !18}
!46 = !{!12, !6, i64 168}
!47 = !{!12, !10, i64 160}
!48 = distinct !{!48, !18}
!49 = distinct !{!49, !18}
!50 = distinct !{!50, !18}
!51 = !{!7, !7, i64 0}
!52 = distinct !{!52, !18}
!53 = distinct !{!53, !18}
!54 = distinct !{!54, !18}
!55 = distinct !{!55, !18}
!56 = !{!12, !10, i64 240}
!57 = !{!12, !10, i64 248}
!58 = distinct !{!58, !18}


; 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._Fluent = type { i32, [5 x i32] }
%struct._Fact = type { i32, [5 x i32] }

@garity = external local_unnamed_addr global [50 x i32], align 16
@gtype_size = external local_unnamed_addr global [50 x i32], align 16
@gtype_consts = external local_unnamed_addr global [50 x [2000 x i32]], align 16
@lo = external dso_local local_unnamed_addr global ptr, align 8
@lres = external dso_local local_unnamed_addr global ptr, align 8
@le = external dso_local local_unnamed_addr global ptr, align 8
@gis_added = external local_unnamed_addr global [50 x i8], align 16
@gis_deleted = external local_unnamed_addr global [50 x i8], align 16
@lnum_multiply_parameters = external dso_local local_unnamed_addr global i32, align 4
@lmultiply_parameters = external dso_local local_unnamed_addr global [15 x i32], align 16
@gf_arity = external local_unnamed_addr global [50 x i32], align 16

declare void @free_NormEffect(ptr noundef) local_unnamed_addr #0

; Function Attrs: nounwind uwtable
define dso_local void @multiply_easy_non_constrained_effect_parameters(i32 noundef %0) local_unnamed_addr #1 {
  %2 = load i32, ptr @lnum_multiply_parameters, align 4, !tbaa !5
  %3 = icmp eq i32 %2, %0
  %4 = load ptr, ptr @le, align 8, !tbaa !9
  br i1 %3, label %5, label %298

5:                                                ; preds = %1
  %6 = tail call ptr @new_NormEffect2(ptr noundef %4) #2
  %7 = load ptr, ptr @le, align 8, !tbaa !9
  %8 = load i32, ptr %7, align 8, !tbaa !11
  %9 = icmp sgt i32 %8, 0
  br i1 %9, label %.lr.ph240, label %.preheader191

.lr.ph240:                                        ; preds = %5
  %10 = getelementptr inbounds i8, ptr %6, i64 200
  %11 = getelementptr inbounds i8, ptr %6, i64 184
  %12 = getelementptr inbounds i8, ptr %6, i64 192
  %13 = getelementptr inbounds i8, ptr %6, i64 176
  %14 = getelementptr inbounds i8, ptr %6, i64 232
  %15 = getelementptr inbounds i8, ptr %6, i64 216
  %16 = getelementptr inbounds i8, ptr %6, i64 224
  %17 = getelementptr inbounds i8, ptr %6, i64 136
  %18 = getelementptr inbounds i8, ptr %6, i64 128
  %19 = getelementptr inbounds i8, ptr %6, i64 152
  %20 = getelementptr inbounds i8, ptr %6, i64 144
  %21 = getelementptr inbounds i8, ptr %6, i64 168
  %22 = getelementptr inbounds i8, ptr %6, i64 160
  br label %28

.preheader191:                                    ; preds = %._crit_edge237, %5
  %23 = getelementptr inbounds i8, ptr %6, i64 136
  %24 = load i32, ptr %23, align 8, !tbaa !13
  %25 = icmp sgt i32 %24, 0
  br i1 %25, label %.lr.ph257, label %._crit_edge258

.lr.ph257:                                        ; preds = %.preheader191
  %26 = getelementptr inbounds i8, ptr %6, i64 128
  %27 = load ptr, ptr %26, align 8, !tbaa !14
  br label %240

28:                                               ; preds = %.lr.ph240, %._crit_edge237
  %indvars.iv297 = phi i64 [ 0, %.lr.ph240 ], [ %indvars.iv.next298, %._crit_edge237 ]
  %29 = load ptr, ptr @lo, align 8, !tbaa !9
  %30 = getelementptr inbounds i8, ptr %29, i64 8
  %31 = load i32, ptr %30, align 8, !tbaa !15
  %32 = trunc nuw nsw i64 %indvars.iv297 to i32
  %33 = add nsw i32 %31, %32
  %34 = load i32, ptr %10, align 8, !tbaa !17
  %35 = icmp sgt i32 %34, 0
  br i1 %35, label %.lr.ph210, label %.preheader200

.preheader202:                                    ; preds = %.lr.ph210
  %36 = icmp sgt i32 %43, 0
  br i1 %36, label %.lr.ph212, label %.preheader200

.lr.ph210:                                        ; preds = %28, %.lr.ph210
  %indvars.iv261 = phi i64 [ %indvars.iv.next262, %.lr.ph210 ], [ 0, %28 ]
  %37 = load ptr, ptr %11, align 8, !tbaa !18
  %38 = getelementptr inbounds ptr, ptr %37, i64 %indvars.iv261
  %39 = load ptr, ptr @le, align 8, !tbaa !9
  %40 = getelementptr inbounds i8, ptr %39, i64 64
  %41 = getelementptr inbounds [15 x i32], ptr %40, i64 0, i64 %indvars.iv297
  %42 = load i32, ptr %41, align 4, !tbaa !5
  tail call void @replace_var_with_const_in_exp(ptr noundef %38, i32 noundef %33, i32 noundef %42) #2
  %indvars.iv.next262 = add nuw nsw i64 %indvars.iv261, 1
  %43 = load i32, ptr %10, align 8, !tbaa !17
  %44 = sext i32 %43 to i64
  %45 = icmp slt i64 %indvars.iv.next262, %44
  br i1 %45, label %.lr.ph210, label %.preheader202, !llvm.loop !19

.preheader201:                                    ; preds = %.lr.ph212
  %46 = icmp sgt i32 %53, 0
  br i1 %46, label %.lr.ph218, label %.preheader200

.lr.ph212:                                        ; preds = %.preheader202, %.lr.ph212
  %indvars.iv264 = phi i64 [ %indvars.iv.next265, %.lr.ph212 ], [ 0, %.preheader202 ]
  %47 = load ptr, ptr %12, align 8, !tbaa !21
  %48 = getelementptr inbounds ptr, ptr %47, i64 %indvars.iv264
  %49 = load ptr, ptr @le, align 8, !tbaa !9
  %50 = getelementptr inbounds i8, ptr %49, i64 64
  %51 = getelementptr inbounds [15 x i32], ptr %50, i64 0, i64 %indvars.iv297
  %52 = load i32, ptr %51, align 4, !tbaa !5
  tail call void @replace_var_with_const_in_exp(ptr noundef %48, i32 noundef %33, i32 noundef %52) #2
  %indvars.iv.next265 = add nuw nsw i64 %indvars.iv264, 1
  %53 = load i32, ptr %10, align 8, !tbaa !17
  %54 = sext i32 %53 to i64
  %55 = icmp slt i64 %indvars.iv.next265, %54
  br i1 %55, label %.lr.ph212, label %.preheader201, !llvm.loop !22

.preheader200:                                    ; preds = %110, %28, %.preheader202, %.preheader201
  %56 = load i32, ptr %14, align 8, !tbaa !23
  %57 = icmp sgt i32 %56, 0
  br i1 %57, label %.preheader195.lr.ph, label %.preheader198

.preheader195.lr.ph:                              ; preds = %.preheader200
  %58 = load ptr, ptr %15, align 8, !tbaa !24
  br label %.preheader195

.lr.ph218:                                        ; preds = %.preheader201, %110
  %59 = phi i32 [ %111, %110 ], [ %53, %.preheader201 ]
  %.2173217 = phi i32 [ %.3174, %110 ], [ 0, %.preheader201 ]
  %60 = load ptr, ptr %11, align 8, !tbaa !18
  %61 = sext i32 %.2173217 to i64
  %62 = getelementptr inbounds ptr, ptr %60, i64 %61
  %63 = load ptr, ptr %62, align 8, !tbaa !9
  %64 = load i32, ptr %63, align 8, !tbaa !25
  %65 = icmp eq i32 %64, 1001
  br i1 %65, label %66, label %108

66:                                               ; preds = %.lr.ph218
  %67 = load ptr, ptr %12, align 8, !tbaa !21
  %68 = getelementptr inbounds ptr, ptr %67, i64 %61
  %69 = load ptr, ptr %68, align 8, !tbaa !9
  %70 = load i32, ptr %69, align 8, !tbaa !25
  %71 = icmp eq i32 %70, 1001
  br i1 %71, label %72, label %108

72:                                               ; preds = %66
  %73 = load ptr, ptr %13, align 8, !tbaa !28
  %74 = getelementptr inbounds i32, ptr %73, i64 %61
  %75 = load i32, ptr %74, align 4, !tbaa !5
  %76 = getelementptr inbounds i8, ptr %63, i64 24
  %77 = load float, ptr %76, align 8, !tbaa !29
  %78 = getelementptr inbounds i8, ptr %69, i64 24
  %79 = load float, ptr %78, align 8, !tbaa !29
  %80 = tail call zeroext i8 @number_comparison_holds(i32 noundef %75, float noundef %77, float noundef %79) #2
  %.not188 = icmp eq i8 %80, 0
  br i1 %.not188, label %107, label %81

81:                                               ; preds = %72
  %82 = load ptr, ptr %11, align 8, !tbaa !18
  %83 = getelementptr inbounds ptr, ptr %82, i64 %61
  %84 = load ptr, ptr %83, align 8, !tbaa !9
  tail call void @free_ExpNode(ptr noundef %84) #2
  %85 = load ptr, ptr %12, align 8, !tbaa !21
  %86 = getelementptr inbounds ptr, ptr %85, i64 %61
  %87 = load ptr, ptr %86, align 8, !tbaa !9
  tail call void @free_ExpNode(ptr noundef %87) #2
  %88 = load i32, ptr %10, align 8, !tbaa !17
  %89 = add nsw i32 %88, -1
  %90 = icmp slt i32 %.2173217, %89
  br i1 %90, label %.lr.ph215, label %._crit_edge216

.lr.ph215:                                        ; preds = %81, %.lr.ph215
  %indvars.iv267 = phi i64 [ %indvars.iv.next268, %.lr.ph215 ], [ %61, %81 ]
  %91 = load ptr, ptr %13, align 8, !tbaa !28
  %indvars.iv.next268 = add nsw i64 %indvars.iv267, 1
  %92 = getelementptr inbounds i32, ptr %91, i64 %indvars.iv.next268
  %93 = load i32, ptr %92, align 4, !tbaa !5
  %94 = getelementptr inbounds i32, ptr %91, i64 %indvars.iv267
  store i32 %93, ptr %94, align 4, !tbaa !5
  %95 = load ptr, ptr %11, align 8, !tbaa !18
  %96 = getelementptr inbounds ptr, ptr %95, i64 %indvars.iv.next268
  %97 = load ptr, ptr %96, align 8, !tbaa !9
  %98 = getelementptr inbounds ptr, ptr %95, i64 %indvars.iv267
  store ptr %97, ptr %98, align 8, !tbaa !9
  %99 = load ptr, ptr %12, align 8, !tbaa !21
  %100 = getelementptr inbounds ptr, ptr %99, i64 %indvars.iv.next268
  %101 = load ptr, ptr %100, align 8, !tbaa !9
  %102 = getelementptr inbounds ptr, ptr %99, i64 %indvars.iv267
  store ptr %101, ptr %102, align 8, !tbaa !9
  %103 = load i32, ptr %10, align 8, !tbaa !17
  %104 = add nsw i32 %103, -1
  %105 = sext i32 %104 to i64
  %106 = icmp slt i64 %indvars.iv.next268, %105
  br i1 %106, label %.lr.ph215, label %._crit_edge216, !llvm.loop !30

._crit_edge216:                                   ; preds = %.lr.ph215, %81
  %.lcssa205 = phi i32 [ %89, %81 ], [ %104, %.lr.ph215 ]
  store i32 %.lcssa205, ptr %10, align 8, !tbaa !17
  br label %110

107:                                              ; preds = %72
  tail call void @free_NormEffect(ptr noundef nonnull %6) #2
  br label %322

108:                                              ; preds = %66, %.lr.ph218
  %109 = add nsw i32 %.2173217, 1
  br label %110

110:                                              ; preds = %108, %._crit_edge216
  %111 = phi i32 [ %.lcssa205, %._crit_edge216 ], [ %59, %108 ]
  %.3174 = phi i32 [ %.2173217, %._crit_edge216 ], [ %109, %108 ]
  %112 = icmp slt i32 %.3174, %111
  br i1 %112, label %.lr.ph218, label %.preheader200, !llvm.loop !31

.preheader199:                                    ; preds = %._crit_edge221
  %113 = icmp sgt i32 %137, 0
  br i1 %113, label %.lr.ph224, label %.preheader198

.preheader195:                                    ; preds = %.preheader195.lr.ph, %._crit_edge221
  %114 = phi i32 [ %56, %.preheader195.lr.ph ], [ %137, %._crit_edge221 ]
  %indvars.iv273 = phi i64 [ 0, %.preheader195.lr.ph ], [ %indvars.iv.next274, %._crit_edge221 ]
  %115 = getelementptr inbounds %struct._Fluent, ptr %58, i64 %indvars.iv273
  %116 = load i32, ptr %115, align 4, !tbaa !32
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %117
  %119 = load i32, ptr %118, align 4, !tbaa !5
  %120 = icmp sgt i32 %119, 0
  br i1 %120, label %.lr.ph220, label %._crit_edge221

.lr.ph220:                                        ; preds = %.preheader195
  %121 = getelementptr inbounds i8, ptr %115, i64 4
  %122 = load ptr, ptr @le, align 8
  %123 = getelementptr inbounds i8, ptr %122, i64 64
  %124 = getelementptr inbounds [15 x i32], ptr %123, i64 0, i64 %indvars.iv297
  br label %125

125:                                              ; preds = %.lr.ph220, %133
  %126 = phi i32 [ %119, %.lr.ph220 ], [ %134, %133 ]
  %indvars.iv270 = phi i64 [ 0, %.lr.ph220 ], [ %indvars.iv.next271, %133 ]
  %127 = getelementptr inbounds [5 x i32], ptr %121, i64 0, i64 %indvars.iv270
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = xor i32 %128, %33
  %130 = icmp eq i32 %129, -1
  br i1 %130, label %131, label %133

131:                                              ; preds = %125
  %132 = load i32, ptr %124, align 4, !tbaa !5
  store i32 %132, ptr %127, align 4, !tbaa !5
  %.pre312 = load i32, ptr %118, align 4, !tbaa !5
  br label %133

133:                                              ; preds = %125, %131
  %134 = phi i32 [ %126, %125 ], [ %.pre312, %131 ]
  %indvars.iv.next271 = add nuw nsw i64 %indvars.iv270, 1
  %135 = sext i32 %134 to i64
  %136 = icmp slt i64 %indvars.iv.next271, %135
  br i1 %136, label %125, label %._crit_edge221.loopexit, !llvm.loop !34

._crit_edge221.loopexit:                          ; preds = %133
  %.pre313 = load i32, ptr %14, align 8, !tbaa !23
  br label %._crit_edge221

._crit_edge221:                                   ; preds = %._crit_edge221.loopexit, %.preheader195
  %137 = phi i32 [ %.pre313, %._crit_edge221.loopexit ], [ %114, %.preheader195 ]
  %indvars.iv.next274 = add nuw nsw i64 %indvars.iv273, 1
  %138 = sext i32 %137 to i64
  %139 = icmp slt i64 %indvars.iv.next274, %138
  br i1 %139, label %.preheader195, label %.preheader199, !llvm.loop !35

.preheader198:                                    ; preds = %.lr.ph224, %.preheader200, %.preheader199
  %140 = load i32, ptr %17, align 8, !tbaa !13
  %141 = icmp sgt i32 %140, 0
  br i1 %141, label %.preheader194.lr.ph, label %.preheader197

.preheader194.lr.ph:                              ; preds = %.preheader198
  %142 = load ptr, ptr %18, align 8, !tbaa !14
  br label %.preheader194

.lr.ph224:                                        ; preds = %.preheader199, %.lr.ph224
  %indvars.iv276 = phi i64 [ %indvars.iv.next277, %.lr.ph224 ], [ 0, %.preheader199 ]
  %143 = load ptr, ptr %16, align 8, !tbaa !36
  %144 = getelementptr inbounds ptr, ptr %143, i64 %indvars.iv276
  %145 = load ptr, ptr @le, align 8, !tbaa !9
  %146 = getelementptr inbounds i8, ptr %145, i64 64
  %147 = getelementptr inbounds [15 x i32], ptr %146, i64 0, i64 %indvars.iv297
  %148 = load i32, ptr %147, align 4, !tbaa !5
  tail call void @replace_var_with_const_in_exp(ptr noundef %144, i32 noundef %33, i32 noundef %148) #2
  %indvars.iv.next277 = add nuw nsw i64 %indvars.iv276, 1
  %149 = load i32, ptr %14, align 8, !tbaa !23
  %150 = sext i32 %149 to i64
  %151 = icmp slt i64 %indvars.iv.next277, %150
  br i1 %151, label %.lr.ph224, label %.preheader198, !llvm.loop !37

.preheader197:                                    ; preds = %._crit_edge227, %.preheader198
  %152 = load i32, ptr %19, align 8, !tbaa !38
  %153 = icmp sgt i32 %152, 0
  br i1 %153, label %.preheader193.lr.ph, label %.preheader196

.preheader193.lr.ph:                              ; preds = %.preheader197
  %154 = load ptr, ptr %20, align 8, !tbaa !39
  br label %.preheader193

.preheader194:                                    ; preds = %.preheader194.lr.ph, %._crit_edge227
  %155 = phi i32 [ %140, %.preheader194.lr.ph ], [ %178, %._crit_edge227 ]
  %indvars.iv282 = phi i64 [ 0, %.preheader194.lr.ph ], [ %indvars.iv.next283, %._crit_edge227 ]
  %156 = getelementptr inbounds %struct._Fact, ptr %142, i64 %indvars.iv282
  %157 = load i32, ptr %156, align 4, !tbaa !40
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %158
  %160 = load i32, ptr %159, align 4, !tbaa !5
  %161 = icmp sgt i32 %160, 0
  br i1 %161, label %.lr.ph226, label %._crit_edge227

.lr.ph226:                                        ; preds = %.preheader194
  %162 = getelementptr inbounds i8, ptr %156, i64 4
  %163 = load ptr, ptr @le, align 8
  %164 = getelementptr inbounds i8, ptr %163, i64 64
  %165 = getelementptr inbounds [15 x i32], ptr %164, i64 0, i64 %indvars.iv297
  br label %166

166:                                              ; preds = %.lr.ph226, %174
  %167 = phi i32 [ %160, %.lr.ph226 ], [ %175, %174 ]
  %indvars.iv279 = phi i64 [ 0, %.lr.ph226 ], [ %indvars.iv.next280, %174 ]
  %168 = getelementptr inbounds [5 x i32], ptr %162, i64 0, i64 %indvars.iv279
  %169 = load i32, ptr %168, align 4, !tbaa !5
  %170 = xor i32 %169, %33
  %171 = icmp eq i32 %170, -1
  br i1 %171, label %172, label %174

172:                                              ; preds = %166
  %173 = load i32, ptr %165, align 4, !tbaa !5
  store i32 %173, ptr %168, align 4, !tbaa !5
  %.pre314 = load i32, ptr %159, align 4, !tbaa !5
  br label %174

174:                                              ; preds = %166, %172
  %175 = phi i32 [ %167, %166 ], [ %.pre314, %172 ]
  %indvars.iv.next280 = add nuw nsw i64 %indvars.iv279, 1
  %176 = sext i32 %175 to i64
  %177 = icmp slt i64 %indvars.iv.next280, %176
  br i1 %177, label %166, label %._crit_edge227.loopexit, !llvm.loop !42

._crit_edge227.loopexit:                          ; preds = %174
  %.pre315 = load i32, ptr %17, align 8, !tbaa !13
  br label %._crit_edge227

._crit_edge227:                                   ; preds = %._crit_edge227.loopexit, %.preheader194
  %178 = phi i32 [ %.pre315, %._crit_edge227.loopexit ], [ %155, %.preheader194 ]
  %indvars.iv.next283 = add nuw nsw i64 %indvars.iv282, 1
  %179 = sext i32 %178 to i64
  %180 = icmp slt i64 %indvars.iv.next283, %179
  br i1 %180, label %.preheader194, label %.preheader197, !llvm.loop !43

.preheader196:                                    ; preds = %._crit_edge231, %.preheader197
  %181 = load i32, ptr %21, align 8, !tbaa !44
  %182 = icmp sgt i32 %181, 0
  br i1 %182, label %.preheader192.lr.ph, label %._crit_edge237

.preheader192.lr.ph:                              ; preds = %.preheader196
  %183 = load ptr, ptr %22, align 8, !tbaa !45
  br label %.preheader192

.preheader193:                                    ; preds = %.preheader193.lr.ph, %._crit_edge231
  %184 = phi i32 [ %152, %.preheader193.lr.ph ], [ %207, %._crit_edge231 ]
  %indvars.iv288 = phi i64 [ 0, %.preheader193.lr.ph ], [ %indvars.iv.next289, %._crit_edge231 ]
  %185 = getelementptr inbounds %struct._Fact, ptr %154, i64 %indvars.iv288
  %186 = load i32, ptr %185, align 4, !tbaa !40
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !5
  %190 = icmp sgt i32 %189, 0
  br i1 %190, label %.lr.ph230, label %._crit_edge231

.lr.ph230:                                        ; preds = %.preheader193
  %191 = getelementptr inbounds i8, ptr %185, i64 4
  %192 = load ptr, ptr @le, align 8
  %193 = getelementptr inbounds i8, ptr %192, i64 64
  %194 = getelementptr inbounds [15 x i32], ptr %193, i64 0, i64 %indvars.iv297
  br label %195

195:                                              ; preds = %.lr.ph230, %203
  %196 = phi i32 [ %189, %.lr.ph230 ], [ %204, %203 ]
  %indvars.iv285 = phi i64 [ 0, %.lr.ph230 ], [ %indvars.iv.next286, %203 ]
  %197 = getelementptr inbounds [5 x i32], ptr %191, i64 0, i64 %indvars.iv285
  %198 = load i32, ptr %197, align 4, !tbaa !5
  %199 = xor i32 %198, %33
  %200 = icmp eq i32 %199, -1
  br i1 %200, label %201, label %203

201:                                              ; preds = %195
  %202 = load i32, ptr %194, align 4, !tbaa !5
  store i32 %202, ptr %197, align 4, !tbaa !5
  %.pre316 = load i32, ptr %188, align 4, !tbaa !5
  br label %203

203:                                              ; preds = %195, %201
  %204 = phi i32 [ %196, %195 ], [ %.pre316, %201 ]
  %indvars.iv.next286 = add nuw nsw i64 %indvars.iv285, 1
  %205 = sext i32 %204 to i64
  %206 = icmp slt i64 %indvars.iv.next286, %205
  br i1 %206, label %195, label %._crit_edge231.loopexit, !llvm.loop !46

._crit_edge231.loopexit:                          ; preds = %203
  %.pre317 = load i32, ptr %19, align 8, !tbaa !38
  br label %._crit_edge231

._crit_edge231:                                   ; preds = %._crit_edge231.loopexit, %.preheader193
  %207 = phi i32 [ %.pre317, %._crit_edge231.loopexit ], [ %184, %.preheader193 ]
  %indvars.iv.next289 = add nuw nsw i64 %indvars.iv288, 1
  %208 = sext i32 %207 to i64
  %209 = icmp slt i64 %indvars.iv.next289, %208
  br i1 %209, label %.preheader193, label %.preheader196, !llvm.loop !47

.preheader192:                                    ; preds = %.preheader192.lr.ph, %._crit_edge235
  %210 = phi i32 [ %181, %.preheader192.lr.ph ], [ %233, %._crit_edge235 ]
  %indvars.iv294 = phi i64 [ 0, %.preheader192.lr.ph ], [ %indvars.iv.next295, %._crit_edge235 ]
  %211 = getelementptr inbounds %struct._Fact, ptr %183, i64 %indvars.iv294
  %212 = load i32, ptr %211, align 4, !tbaa !40
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %216 = icmp sgt i32 %215, 0
  br i1 %216, label %.lr.ph234, label %._crit_edge235

.lr.ph234:                                        ; preds = %.preheader192
  %217 = getelementptr inbounds i8, ptr %211, i64 4
  %218 = load ptr, ptr @le, align 8
  %219 = getelementptr inbounds i8, ptr %218, i64 64
  %220 = getelementptr inbounds [15 x i32], ptr %219, i64 0, i64 %indvars.iv297
  br label %221

221:                                              ; preds = %.lr.ph234, %229
  %222 = phi i32 [ %215, %.lr.ph234 ], [ %230, %229 ]
  %indvars.iv291 = phi i64 [ 0, %.lr.ph234 ], [ %indvars.iv.next292, %229 ]
  %223 = getelementptr inbounds [5 x i32], ptr %217, i64 0, i64 %indvars.iv291
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = xor i32 %224, %33
  %226 = icmp eq i32 %225, -1
  br i1 %226, label %227, label %229

227:                                              ; preds = %221
  %228 = load i32, ptr %220, align 4, !tbaa !5
  store i32 %228, ptr %223, align 4, !tbaa !5
  %.pre318 = load i32, ptr %214, align 4, !tbaa !5
  br label %229

229:                                              ; preds = %221, %227
  %230 = phi i32 [ %222, %221 ], [ %.pre318, %227 ]
  %indvars.iv.next292 = add nuw nsw i64 %indvars.iv291, 1
  %231 = sext i32 %230 to i64
  %232 = icmp slt i64 %indvars.iv.next292, %231
  br i1 %232, label %221, label %._crit_edge235.loopexit, !llvm.loop !48

._crit_edge235.loopexit:                          ; preds = %229
  %.pre319 = load i32, ptr %21, align 8, !tbaa !44
  br label %._crit_edge235

._crit_edge235:                                   ; preds = %._crit_edge235.loopexit, %.preheader192
  %233 = phi i32 [ %.pre319, %._crit_edge235.loopexit ], [ %210, %.preheader192 ]
  %indvars.iv.next295 = add nuw nsw i64 %indvars.iv294, 1
  %234 = sext i32 %233 to i64
  %235 = icmp slt i64 %indvars.iv.next295, %234
  br i1 %235, label %.preheader192, label %._crit_edge237, !llvm.loop !49

._crit_edge237:                                   ; preds = %._crit_edge235, %.preheader196
  %indvars.iv.next298 = add nuw nsw i64 %indvars.iv297, 1
  %236 = load ptr, ptr @le, align 8, !tbaa !9
  %237 = load i32, ptr %236, align 8, !tbaa !11
  %238 = sext i32 %237 to i64
  %239 = icmp slt i64 %indvars.iv.next298, %238
  br i1 %239, label %28, label %.preheader191, !llvm.loop !50

240:                                              ; preds = %.lr.ph257, %290
  %241 = phi i32 [ %24, %.lr.ph257 ], [ %291, %290 ]
  %.1256 = phi i32 [ 0, %.lr.ph257 ], [ %.2, %290 ]
  %242 = sext i32 %.1256 to i64
  %243 = getelementptr inbounds %struct._Fact, ptr %27, i64 %242
  %244 = load i32, ptr %243, align 4, !tbaa !40
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [50 x i8], ptr @gis_added, i64 0, i64 %245
  %247 = load i8, ptr %246, align 1, !tbaa !51
  %.not184 = icmp eq i8 %247, 0
  br i1 %.not184, label %248, label %.critedge

248:                                              ; preds = %240
  %249 = getelementptr inbounds [50 x i8], ptr @gis_deleted, i64 0, i64 %245
  %250 = load i8, ptr %249, align 1, !tbaa !51
  %.not185 = icmp eq i8 %250, 0
  br i1 %.not185, label %.preheader190, label %.critedge

.preheader190:                                    ; preds = %248
  %251 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %245
  %252 = load i32, ptr %251, align 4, !tbaa !5
  %253 = icmp sgt i32 %252, 0
  br i1 %253, label %.lr.ph242, label %._crit_edge243

.lr.ph242:                                        ; preds = %.preheader190
  %254 = load ptr, ptr @lo, align 8
  %255 = getelementptr inbounds i8, ptr %254, i64 8
  %wide.trip.count303 = zext nneg i32 %252 to i64
  br label %256

256:                                              ; preds = %.lr.ph242, %262
  %indvars.iv300 = phi i64 [ 0, %.lr.ph242 ], [ %indvars.iv.next301, %262 ]
  %257 = getelementptr inbounds %struct._Fact, ptr %27, i64 %242, i32 1, i64 %indvars.iv300
  %258 = load i32, ptr %257, align 4, !tbaa !5
  %259 = icmp slt i32 %258, 0
  br i1 %259, label %260, label %262

260:                                              ; preds = %256
  %261 = load i32, ptr %255, align 8, !tbaa !15
  %.not186 = icmp sgt i32 %258, %261
  br i1 %.not186, label %262, label %._crit_edge243.loopexit

262:                                              ; preds = %256, %260
  %indvars.iv.next301 = add nuw nsw i64 %indvars.iv300, 1
  %exitcond304.not = icmp eq i64 %indvars.iv.next301, %wide.trip.count303
  br i1 %exitcond304.not, label %.preheader, label %256, !llvm.loop !52

._crit_edge243.loopexit:                          ; preds = %260
  %263 = trunc nuw nsw i64 %indvars.iv300 to i32
  br label %._crit_edge243

._crit_edge243:                                   ; preds = %._crit_edge243.loopexit, %.preheader190
  %.9.lcssa = phi i32 [ 0, %.preheader190 ], [ %263, %._crit_edge243.loopexit ]
  %.not189 = icmp eq i32 %.9.lcssa, %252
  br i1 %.not189, label %.preheader, label %.critedge

.preheader:                                       ; preds = %262, %._crit_edge243
  %264 = add nsw i32 %241, -1
  %265 = icmp slt i32 %.1256, %264
  br i1 %265, label %.lr.ph253, label %._crit_edge254

.loopexit.loopexit:                               ; preds = %279
  %.pre320 = load i32, ptr %23, align 8, !tbaa !13
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.lr.ph253
  %266 = phi i32 [ %.pre320, %.loopexit.loopexit ], [ %270, %.lr.ph253 ]
  %267 = add nsw i32 %266, -1
  %268 = sext i32 %267 to i64
  %269 = icmp slt i64 %indvars.iv.next309, %268
  br i1 %269, label %.lr.ph253, label %._crit_edge254, !llvm.loop !53

.lr.ph253:                                        ; preds = %.preheader, %.loopexit
  %270 = phi i32 [ %266, %.loopexit ], [ %241, %.preheader ]
  %indvars.iv308 = phi i64 [ %indvars.iv.next309, %.loopexit ], [ %242, %.preheader ]
  %indvars.iv.next309 = add nsw i64 %indvars.iv308, 1
  %271 = getelementptr inbounds %struct._Fact, ptr %27, i64 %indvars.iv.next309
  %272 = load i32, ptr %271, align 4, !tbaa !40
  %273 = getelementptr inbounds %struct._Fact, ptr %27, i64 %indvars.iv308
  store i32 %272, ptr %273, align 4, !tbaa !40
  %274 = sext i32 %272 to i64
  %275 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %274
  %276 = load i32, ptr %275, align 4, !tbaa !5
  %277 = icmp sgt i32 %276, 0
  br i1 %277, label %.lr.ph251, label %.loopexit

.lr.ph251:                                        ; preds = %.lr.ph253
  %278 = getelementptr inbounds i8, ptr %271, i64 4
  br label %279

279:                                              ; preds = %.lr.ph251, %279
  %indvars.iv305 = phi i64 [ 0, %.lr.ph251 ], [ %indvars.iv.next306, %279 ]
  %280 = getelementptr inbounds [5 x i32], ptr %278, i64 0, i64 %indvars.iv305
  %281 = load i32, ptr %280, align 4, !tbaa !5
  %282 = getelementptr inbounds %struct._Fact, ptr %27, i64 %indvars.iv308, i32 1, i64 %indvars.iv305
  store i32 %281, ptr %282, align 4, !tbaa !5
  %indvars.iv.next306 = add nuw nsw i64 %indvars.iv305, 1
  %283 = load i32, ptr %271, align 4, !tbaa !40
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %284
  %286 = load i32, ptr %285, align 4, !tbaa !5
  %287 = sext i32 %286 to i64
  %288 = icmp slt i64 %indvars.iv.next306, %287
  br i1 %288, label %279, label %.loopexit.loopexit, !llvm.loop !54

._crit_edge254:                                   ; preds = %.loopexit, %.preheader
  %.lcssa203 = phi i32 [ %264, %.preheader ], [ %267, %.loopexit ]
  store i32 %.lcssa203, ptr %23, align 8, !tbaa !13
  br label %290

.critedge:                                        ; preds = %240, %248, %._crit_edge243
  %289 = add nsw i32 %.1256, 1
  br label %290

290:                                              ; preds = %.critedge, %._crit_edge254
  %291 = phi i32 [ %.lcssa203, %._crit_edge254 ], [ %241, %.critedge ]
  %.2 = phi i32 [ %.1256, %._crit_edge254 ], [ %289, %.critedge ]
  %292 = icmp slt i32 %.2, %291
  br i1 %292, label %240, label %._crit_edge258, !llvm.loop !55

._crit_edge258:                                   ; preds = %290, %.preheader191
  %293 = load ptr, ptr @lres, align 8, !tbaa !9
  %.not = icmp eq ptr %293, null
  br i1 %.not, label %296, label %294

294:                                              ; preds = %._crit_edge258
  %295 = getelementptr inbounds i8, ptr %293, i64 240
  store ptr %6, ptr %295, align 8, !tbaa !56
  br label %296

296:                                              ; preds = %294, %._crit_edge258
  %297 = getelementptr inbounds i8, ptr %6, i64 248
  store ptr %293, ptr %297, align 8, !tbaa !57
  store ptr %6, ptr @lres, align 8, !tbaa !9
  br label %322

298:                                              ; preds = %1
  %299 = getelementptr inbounds i8, ptr %4, i64 4
  %300 = sext i32 %0 to i64
  %301 = getelementptr inbounds [15 x i32], ptr @lmultiply_parameters, i64 0, i64 %300
  %302 = load i32, ptr %301, align 4, !tbaa !5
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds [15 x i32], ptr %299, i64 0, i64 %303
  %305 = load i32, ptr %304, align 4, !tbaa !5
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds [50 x i32], ptr @gtype_size, i64 0, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = icmp sgt i32 %308, 0
  br i1 %309, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %298
  %310 = add nsw i32 %0, 1
  %wide.trip.count = zext nneg i32 %308 to i64
  br label %311

311:                                              ; preds = %.lr.ph, %311
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %311 ]
  %312 = getelementptr inbounds [50 x [2000 x i32]], ptr @gtype_consts, i64 0, i64 %306, i64 %indvars.iv
  %313 = load i32, ptr %312, align 4, !tbaa !5
  %314 = load ptr, ptr @le, align 8, !tbaa !9
  %315 = getelementptr inbounds i8, ptr %314, i64 64
  %316 = load i32, ptr %301, align 4, !tbaa !5
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds [15 x i32], ptr %315, i64 0, i64 %317
  store i32 %313, ptr %318, align 4, !tbaa !5
  tail call void @multiply_easy_non_constrained_effect_parameters(i32 noundef %310)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %311, !llvm.loop !58

._crit_edge.loopexit:                             ; preds = %311
  %.pre = load ptr, ptr @le, align 8, !tbaa !9
  %.pre311 = load i32, ptr %301, align 4, !tbaa !5
  %.pre321 = sext i32 %.pre311 to i64
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %298
  %.pre-phi = phi i64 [ %.pre321, %._crit_edge.loopexit ], [ %303, %298 ]
  %319 = phi ptr [ %.pre, %._crit_edge.loopexit ], [ %4, %298 ]
  %320 = getelementptr inbounds i8, ptr %319, i64 64
  %321 = getelementptr inbounds [15 x i32], ptr %320, i64 0, i64 %.pre-phi
  store i32 -1, ptr %321, align 4, !tbaa !5
  br label %322

322:                                              ; preds = %._crit_edge, %296, %107
  ret void
}

declare ptr @new_NormEffect2(ptr noundef) local_unnamed_addr #0

declare void @replace_var_with_const_in_exp(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

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

declare void @free_ExpNode(ptr noundef) local_unnamed_addr #0

attributes #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 = { 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 #2 = { 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, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_NormEffect", !6, i64 0, !7, i64 4, !7, i64 64, !10, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !10, i64 160, !6, i64 168, !10, i64 176, !10, i64 184, !10, i64 192, !6, i64 200, !10, i64 208, !10, i64 216, !10, i64 224, !6, i64 232, !10, i64 240, !10, i64 248}
!13 = !{!12, !6, i64 136}
!14 = !{!12, !10, i64 128}
!15 = !{!16, !6, i64 8}
!16 = !{!"_NormOperator", !10, i64 0, !6, i64 8, !7, i64 12, !7, i64 72, !7, i64 132, !6, i64 192, !7, i64 196, !10, i64 256, !6, i64 264, !10, i64 272, !10, i64 280, !10, i64 288, !6, i64 296, !10, i64 304, !7, i64 312}
!17 = !{!12, !6, i64 200}
!18 = !{!12, !10, i64 184}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!12, !10, i64 192}
!22 = distinct !{!22, !20}
!23 = !{!12, !6, i64 232}
!24 = !{!12, !10, i64 216}
!25 = !{!26, !6, i64 0}
!26 = !{!"_ExpNode", !6, i64 0, !10, i64 8, !6, i64 16, !27, i64 20, !27, i64 24, !10, i64 32, !10, i64 40, !10, i64 48}
!27 = !{!"float", !7, i64 0}
!28 = !{!12, !10, i64 176}
!29 = !{!26, !27, i64 24}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = !{!33, !6, i64 0}
!33 = !{!"_Fluent", !6, i64 0, !7, i64 4}
!34 = distinct !{!34, !20}
!35 = distinct !{!35, !20}
!36 = !{!12, !10, i64 224}
!37 = distinct !{!37, !20}
!38 = !{!12, !6, i64 152}
!39 = !{!12, !10, i64 144}
!40 = !{!41, !6, i64 0}
!41 = !{!"_Fact", !6, i64 0, !7, i64 4}
!42 = distinct !{!42, !20}
!43 = distinct !{!43, !20}
!44 = !{!12, !6, i64 168}
!45 = !{!12, !10, i64 160}
!46 = distinct !{!46, !20}
!47 = distinct !{!47, !20}
!48 = distinct !{!48, !20}
!49 = distinct !{!49, !20}
!50 = distinct !{!50, !20}
!51 = !{!7, !7, i64 0}
!52 = distinct !{!52, !20}
!53 = distinct !{!53, !20}
!54 = distinct !{!54, !20}
!55 = distinct !{!55, !20}
!56 = !{!12, !10, i64 240}
!57 = !{!12, !10, i64 248}
!58 = distinct !{!58, !20}


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