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

; 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._Operator = type { ptr, [15 x ptr], i32, i8, i32, [15 x i32], [15 x i8], ptr, ptr, i8 }
%struct._Effect = type { i32, [15 x i32], [15 x ptr], ptr, ptr, ptr, ptr, ptr }
%struct._WffNode = type { i32, i32, i32, ptr, ptr, ptr, ptr, ptr, i32, ptr, i32, ptr, ptr, i8 }
%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._Fact = type { i32, [5 x i32] }
%struct._Literal = type { i8, %struct._Fact, ptr, ptr }
%struct._NumericEffect = type { %struct._Fluent, i32, ptr, ptr, ptr }
%struct._Fluent = type { i32, [5 x i32] }
%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 }

@garity = external global [50 x i32], align 16
@gf_arity = external global [50 x i32], align 16
@.str.121 = external hidden unnamed_addr constant [67 x i8], align 1

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

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

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

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

; Function Attrs: nounwind allocsize(0,1)
declare noalias ptr @calloc(i64 noundef, i64 noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local ptr @copy_Exp(ptr noundef) #4

; Function Attrs: nounwind uwtable
define dso_local void @make_normal_effects(ptr noundef %0, ptr noundef %1) #4 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %19 = load ptr, ptr %4, align 8, !tbaa !5
  %20 = getelementptr inbounds %struct._Operator, ptr %19, i32 0, i32 8
  %21 = load ptr, ptr %20, align 8, !tbaa !9
  store ptr %21, ptr %5, align 8, !tbaa !5
  br label %22

22:                                               ; preds = %1714, %2
  %23 = load ptr, ptr %5, align 8, !tbaa !5
  %24 = icmp ne ptr %23, null
  br i1 %24, label %25, label %1718

25:                                               ; preds = %22
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct._Effect, ptr %26, i32 0, i32 3
  %28 = load ptr, ptr %27, align 8, !tbaa !12
  store ptr %28, ptr %7, align 8, !tbaa !5
  %29 = load ptr, ptr %7, align 8, !tbaa !5
  %30 = getelementptr inbounds %struct._WffNode, ptr %29, i32 0, i32 0
  %31 = load i32, ptr %30, align 8, !tbaa !14
  switch i32 %31, label %1711 [
    i32 2007, label %32
    i32 2006, label %533
    i32 2002, label %926
    i32 2003, label %1205
    i32 2000, label %1475
    i32 2001, label %1713
  ]

32:                                               ; preds = %25
  %33 = load ptr, ptr %7, align 8, !tbaa !5
  %34 = getelementptr inbounds %struct._WffNode, ptr %33, i32 0, i32 4
  %35 = load ptr, ptr %34, align 8, !tbaa !16
  store ptr %35, ptr %8, align 8, !tbaa !5
  br label %36

36:                                               ; preds = %528, %32
  %37 = load ptr, ptr %8, align 8, !tbaa !5
  %38 = icmp ne ptr %37, null
  br i1 %38, label %39, label %532

39:                                               ; preds = %36
  %40 = load ptr, ptr %5, align 8, !tbaa !5
  %41 = call ptr @new_NormEffect1(ptr noundef %40)
  store ptr %41, ptr %6, align 8, !tbaa !5
  %42 = load ptr, ptr %8, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct._WffNode, ptr %42, i32 0, i32 0
  %44 = load i32, ptr %43, align 8, !tbaa !14
  %45 = icmp eq i32 %44, 2006
  br i1 %45, label %46, label %204

46:                                               ; preds = %39
  store i32 0, ptr %11, align 4, !tbaa !17
  store i32 0, ptr %14, align 4, !tbaa !17
  %47 = load ptr, ptr %8, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct._WffNode, ptr %47, i32 0, i32 4
  %49 = load ptr, ptr %48, align 8, !tbaa !16
  store ptr %49, ptr %9, align 8, !tbaa !5
  br label %50

50:                                               ; preds = %70, %46
  %51 = load ptr, ptr %9, align 8, !tbaa !5
  %52 = icmp ne ptr %51, null
  br i1 %52, label %53, label %74

53:                                               ; preds = %50
  %54 = load ptr, ptr %9, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct._WffNode, ptr %54, i32 0, i32 0
  %56 = load i32, ptr %55, align 8, !tbaa !14
  %57 = icmp eq i32 %56, 2002
  br i1 %57, label %58, label %61

58:                                               ; preds = %53
  %59 = load i32, ptr %11, align 4, !tbaa !17
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr %11, align 4, !tbaa !17
  br label %61

61:                                               ; preds = %58, %53
  %62 = load ptr, ptr %9, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct._WffNode, ptr %62, i32 0, i32 0
  %64 = load i32, ptr %63, align 8, !tbaa !14
  %65 = icmp eq i32 %64, 2003
  br i1 %65, label %66, label %69

66:                                               ; preds = %61
  %67 = load i32, ptr %14, align 4, !tbaa !17
  %68 = add nsw i32 %67, 1
  store i32 %68, ptr %14, align 4, !tbaa !17
  br label %69

69:                                               ; preds = %66, %61
  br label %70

70:                                               ; preds = %69
  %71 = load ptr, ptr %9, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct._WffNode, ptr %71, i32 0, i32 5
  %73 = load ptr, ptr %72, align 8, !tbaa !18
  store ptr %73, ptr %9, align 8, !tbaa !5
  br label %50, !llvm.loop !19

74:                                               ; preds = %50
  %75 = load i32, ptr %11, align 4, !tbaa !17
  %76 = sext i32 %75 to i64
  %77 = call noalias ptr @calloc(i64 noundef %76, i64 noundef 24) #6
  %78 = load ptr, ptr %6, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct._NormEffect, ptr %78, i32 0, i32 3
  store ptr %77, ptr %79, align 8, !tbaa !21
  %80 = load i32, ptr %14, align 4, !tbaa !17
  %81 = sext i32 %80 to i64
  %82 = call noalias ptr @calloc(i64 noundef %81, i64 noundef 4) #6
  %83 = load ptr, ptr %6, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct._NormEffect, ptr %83, i32 0, i32 9
  store ptr %82, ptr %84, align 8, !tbaa !23
  %85 = load i32, ptr %14, align 4, !tbaa !17
  %86 = sext i32 %85 to i64
  %87 = call noalias ptr @calloc(i64 noundef %86, i64 noundef 8) #6
  %88 = load ptr, ptr %6, align 8, !tbaa !5
  %89 = getelementptr inbounds %struct._NormEffect, ptr %88, i32 0, i32 10
  store ptr %87, ptr %89, align 8, !tbaa !24
  %90 = load i32, ptr %14, align 4, !tbaa !17
  %91 = sext i32 %90 to i64
  %92 = call noalias ptr @calloc(i64 noundef %91, i64 noundef 8) #6
  %93 = load ptr, ptr %6, align 8, !tbaa !5
  %94 = getelementptr inbounds %struct._NormEffect, ptr %93, i32 0, i32 11
  store ptr %92, ptr %94, align 8, !tbaa !25
  %95 = load ptr, ptr %8, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct._WffNode, ptr %95, i32 0, i32 4
  %97 = load ptr, ptr %96, align 8, !tbaa !16
  store ptr %97, ptr %9, align 8, !tbaa !5
  br label %98

98:                                               ; preds = %199, %74
  %99 = load ptr, ptr %9, align 8, !tbaa !5
  %100 = icmp ne ptr %99, null
  br i1 %100, label %101, label %203

101:                                              ; preds = %98
  %102 = load ptr, ptr %9, align 8, !tbaa !5
  %103 = getelementptr inbounds %struct._WffNode, ptr %102, i32 0, i32 0
  %104 = load i32, ptr %103, align 8, !tbaa !14
  %105 = icmp eq i32 %104, 2002
  br i1 %105, label %106, label %153

106:                                              ; preds = %101
  %107 = load ptr, ptr %6, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct._NormEffect, ptr %107, i32 0, i32 3
  %109 = load ptr, ptr %108, align 8, !tbaa !21
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct._NormEffect, ptr %110, i32 0, i32 4
  %112 = load i32, ptr %111, align 8, !tbaa !26
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds %struct._Fact, ptr %109, i64 %113
  store ptr %114, ptr %17, align 8, !tbaa !5
  %115 = load ptr, ptr %9, align 8, !tbaa !5
  %116 = getelementptr inbounds %struct._WffNode, ptr %115, i32 0, i32 7
  %117 = load ptr, ptr %116, align 8, !tbaa !27
  %118 = getelementptr inbounds %struct._Fact, ptr %117, i32 0, i32 0
  %119 = load i32, ptr %118, align 4, !tbaa !28
  %120 = load ptr, ptr %17, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct._Fact, ptr %120, i32 0, i32 0
  store i32 %119, ptr %121, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %122

122:                                              ; preds = %145, %106
  %123 = load i32, ptr %10, align 4, !tbaa !17
  %124 = load ptr, ptr %17, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct._Fact, ptr %124, i32 0, i32 0
  %126 = load i32, ptr %125, align 4, !tbaa !28
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !17
  %130 = icmp slt i32 %123, %129
  br i1 %130, label %131, label %148

131:                                              ; preds = %122
  %132 = load ptr, ptr %9, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct._WffNode, ptr %132, i32 0, i32 7
  %134 = load ptr, ptr %133, align 8, !tbaa !27
  %135 = getelementptr inbounds %struct._Fact, ptr %134, i32 0, i32 1
  %136 = load i32, ptr %10, align 4, !tbaa !17
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds [5 x i32], ptr %135, i64 0, i64 %137
  %139 = load i32, ptr %138, align 4, !tbaa !17
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct._Fact, ptr %140, i32 0, i32 1
  %142 = load i32, ptr %10, align 4, !tbaa !17
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds [5 x i32], ptr %141, i64 0, i64 %143
  store i32 %139, ptr %144, align 4, !tbaa !17
  br label %145

145:                                              ; preds = %131
  %146 = load i32, ptr %10, align 4, !tbaa !17
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %10, align 4, !tbaa !17
  br label %122, !llvm.loop !30

148:                                              ; preds = %122
  %149 = load ptr, ptr %6, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct._NormEffect, ptr %149, i32 0, i32 4
  %151 = load i32, ptr %150, align 8, !tbaa !26
  %152 = add nsw i32 %151, 1
  store i32 %152, ptr %150, align 8, !tbaa !26
  br label %153

153:                                              ; preds = %148, %101
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct._WffNode, ptr %154, i32 0, i32 0
  %156 = load i32, ptr %155, align 8, !tbaa !14
  %157 = icmp eq i32 %156, 2003
  br i1 %157, label %158, label %198

158:                                              ; preds = %153
  %159 = load ptr, ptr %9, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct._WffNode, ptr %159, i32 0, i32 10
  %161 = load i32, ptr %160, align 8, !tbaa !31
  %162 = load ptr, ptr %6, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct._NormEffect, ptr %162, i32 0, i32 9
  %164 = load ptr, ptr %163, align 8, !tbaa !23
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct._NormEffect, ptr %165, i32 0, i32 12
  %167 = load i32, ptr %166, align 8, !tbaa !32
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %164, i64 %168
  store i32 %161, ptr %169, align 4, !tbaa !17
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = getelementptr inbounds %struct._WffNode, ptr %170, i32 0, i32 11
  %172 = load ptr, ptr %171, align 8, !tbaa !33
  %173 = call ptr @copy_Exp(ptr noundef %172)
  %174 = load ptr, ptr %6, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct._NormEffect, ptr %174, i32 0, i32 10
  %176 = load ptr, ptr %175, align 8, !tbaa !24
  %177 = load ptr, ptr %6, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct._NormEffect, ptr %177, i32 0, i32 12
  %179 = load i32, ptr %178, align 8, !tbaa !32
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds ptr, ptr %176, i64 %180
  store ptr %173, ptr %181, align 8, !tbaa !5
  %182 = load ptr, ptr %9, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct._WffNode, ptr %182, i32 0, i32 12
  %184 = load ptr, ptr %183, align 8, !tbaa !34
  %185 = call ptr @copy_Exp(ptr noundef %184)
  %186 = load ptr, ptr %6, align 8, !tbaa !5
  %187 = getelementptr inbounds %struct._NormEffect, ptr %186, i32 0, i32 11
  %188 = load ptr, ptr %187, align 8, !tbaa !25
  %189 = load ptr, ptr %6, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct._NormEffect, ptr %189, i32 0, i32 12
  %191 = load i32, ptr %190, align 8, !tbaa !32
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds ptr, ptr %188, i64 %192
  store ptr %185, ptr %193, align 8, !tbaa !5
  %194 = load ptr, ptr %6, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct._NormEffect, ptr %194, i32 0, i32 12
  %196 = load i32, ptr %195, align 8, !tbaa !32
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %195, align 8, !tbaa !32
  br label %198

198:                                              ; preds = %158, %153
  br label %199

199:                                              ; preds = %198
  %200 = load ptr, ptr %9, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct._WffNode, ptr %200, i32 0, i32 5
  %202 = load ptr, ptr %201, align 8, !tbaa !18
  store ptr %202, ptr %9, align 8, !tbaa !5
  br label %98, !llvm.loop !35

203:                                              ; preds = %98
  br label %294

204:                                              ; preds = %39
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct._WffNode, ptr %205, i32 0, i32 0
  %207 = load i32, ptr %206, align 8, !tbaa !14
  %208 = icmp eq i32 %207, 2002
  br i1 %208, label %209, label %253

209:                                              ; preds = %204
  %210 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 24) #6
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct._NormEffect, ptr %211, i32 0, i32 3
  store ptr %210, ptr %212, align 8, !tbaa !21
  %213 = load ptr, ptr %6, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct._NormEffect, ptr %213, i32 0, i32 3
  %215 = load ptr, ptr %214, align 8, !tbaa !21
  %216 = getelementptr inbounds %struct._Fact, ptr %215, i64 0
  store ptr %216, ptr %17, align 8, !tbaa !5
  %217 = load ptr, ptr %8, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct._WffNode, ptr %217, i32 0, i32 7
  %219 = load ptr, ptr %218, align 8, !tbaa !27
  %220 = getelementptr inbounds %struct._Fact, ptr %219, i32 0, i32 0
  %221 = load i32, ptr %220, align 4, !tbaa !28
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct._Fact, ptr %222, i32 0, i32 0
  store i32 %221, ptr %223, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %224

224:                                              ; preds = %247, %209
  %225 = load i32, ptr %10, align 4, !tbaa !17
  %226 = load ptr, ptr %17, align 8, !tbaa !5
  %227 = getelementptr inbounds %struct._Fact, ptr %226, i32 0, i32 0
  %228 = load i32, ptr %227, align 4, !tbaa !28
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !17
  %232 = icmp slt i32 %225, %231
  br i1 %232, label %233, label %250

233:                                              ; preds = %224
  %234 = load ptr, ptr %8, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct._WffNode, ptr %234, i32 0, i32 7
  %236 = load ptr, ptr %235, align 8, !tbaa !27
  %237 = getelementptr inbounds %struct._Fact, ptr %236, i32 0, i32 1
  %238 = load i32, ptr %10, align 4, !tbaa !17
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds [5 x i32], ptr %237, i64 0, i64 %239
  %241 = load i32, ptr %240, align 4, !tbaa !17
  %242 = load ptr, ptr %17, align 8, !tbaa !5
  %243 = getelementptr inbounds %struct._Fact, ptr %242, i32 0, i32 1
  %244 = load i32, ptr %10, align 4, !tbaa !17
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds [5 x i32], ptr %243, i64 0, i64 %245
  store i32 %241, ptr %246, align 4, !tbaa !17
  br label %247

247:                                              ; preds = %233
  %248 = load i32, ptr %10, align 4, !tbaa !17
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %10, align 4, !tbaa !17
  br label %224, !llvm.loop !36

250:                                              ; preds = %224
  %251 = load ptr, ptr %6, align 8, !tbaa !5
  %252 = getelementptr inbounds %struct._NormEffect, ptr %251, i32 0, i32 4
  store i32 1, ptr %252, align 8, !tbaa !26
  br label %253

253:                                              ; preds = %250, %204
  %254 = load ptr, ptr %8, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct._WffNode, ptr %254, i32 0, i32 0
  %256 = load i32, ptr %255, align 8, !tbaa !14
  %257 = icmp eq i32 %256, 2003
  br i1 %257, label %258, label %293

258:                                              ; preds = %253
  %259 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 4) #6
  %260 = load ptr, ptr %6, align 8, !tbaa !5
  %261 = getelementptr inbounds %struct._NormEffect, ptr %260, i32 0, i32 9
  store ptr %259, ptr %261, align 8, !tbaa !23
  %262 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %263 = load ptr, ptr %6, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct._NormEffect, ptr %263, i32 0, i32 10
  store ptr %262, ptr %264, align 8, !tbaa !24
  %265 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %266 = load ptr, ptr %6, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct._NormEffect, ptr %266, i32 0, i32 11
  store ptr %265, ptr %267, align 8, !tbaa !25
  %268 = load ptr, ptr %8, align 8, !tbaa !5
  %269 = getelementptr inbounds %struct._WffNode, ptr %268, i32 0, i32 10
  %270 = load i32, ptr %269, align 8, !tbaa !31
  %271 = load ptr, ptr %6, align 8, !tbaa !5
  %272 = getelementptr inbounds %struct._NormEffect, ptr %271, i32 0, i32 9
  %273 = load ptr, ptr %272, align 8, !tbaa !23
  %274 = getelementptr inbounds i32, ptr %273, i64 0
  store i32 %270, ptr %274, align 4, !tbaa !17
  %275 = load ptr, ptr %8, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct._WffNode, ptr %275, i32 0, i32 11
  %277 = load ptr, ptr %276, align 8, !tbaa !33
  %278 = call ptr @copy_Exp(ptr noundef %277)
  %279 = load ptr, ptr %6, align 8, !tbaa !5
  %280 = getelementptr inbounds %struct._NormEffect, ptr %279, i32 0, i32 10
  %281 = load ptr, ptr %280, align 8, !tbaa !24
  %282 = getelementptr inbounds ptr, ptr %281, i64 0
  store ptr %278, ptr %282, align 8, !tbaa !5
  %283 = load ptr, ptr %8, align 8, !tbaa !5
  %284 = getelementptr inbounds %struct._WffNode, ptr %283, i32 0, i32 12
  %285 = load ptr, ptr %284, align 8, !tbaa !34
  %286 = call ptr @copy_Exp(ptr noundef %285)
  %287 = load ptr, ptr %6, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct._NormEffect, ptr %287, i32 0, i32 11
  %289 = load ptr, ptr %288, align 8, !tbaa !25
  %290 = getelementptr inbounds ptr, ptr %289, i64 0
  store ptr %286, ptr %290, align 8, !tbaa !5
  %291 = load ptr, ptr %6, align 8, !tbaa !5
  %292 = getelementptr inbounds %struct._NormEffect, ptr %291, i32 0, i32 12
  store i32 1, ptr %292, align 8, !tbaa !32
  br label %293

293:                                              ; preds = %258, %253
  br label %294

294:                                              ; preds = %293, %203
  store i32 0, ptr %12, align 4, !tbaa !17
  store i32 0, ptr %13, align 4, !tbaa !17
  %295 = load ptr, ptr %5, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct._Effect, ptr %295, i32 0, i32 4
  %297 = load ptr, ptr %296, align 8, !tbaa !37
  store ptr %297, ptr %15, align 8, !tbaa !5
  br label %298

298:                                              ; preds = %313, %294
  %299 = load ptr, ptr %15, align 8, !tbaa !5
  %300 = icmp ne ptr %299, null
  br i1 %300, label %301, label %317

301:                                              ; preds = %298
  %302 = load ptr, ptr %15, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct._Literal, ptr %302, i32 0, i32 0
  %304 = load i8, ptr %303, align 8, !tbaa !38
  %305 = icmp ne i8 %304, 0
  br i1 %305, label %306, label %309

306:                                              ; preds = %301
  %307 = load i32, ptr %13, align 4, !tbaa !17
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %13, align 4, !tbaa !17
  br label %312

309:                                              ; preds = %301
  %310 = load i32, ptr %12, align 4, !tbaa !17
  %311 = add nsw i32 %310, 1
  store i32 %311, ptr %12, align 4, !tbaa !17
  br label %312

312:                                              ; preds = %309, %306
  br label %313

313:                                              ; preds = %312
  %314 = load ptr, ptr %15, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct._Literal, ptr %314, i32 0, i32 2
  %316 = load ptr, ptr %315, align 8, !tbaa !40
  store ptr %316, ptr %15, align 8, !tbaa !5
  br label %298, !llvm.loop !41

317:                                              ; preds = %298
  %318 = load i32, ptr %12, align 4, !tbaa !17
  %319 = sext i32 %318 to i64
  %320 = call noalias ptr @calloc(i64 noundef %319, i64 noundef 24) #6
  %321 = load ptr, ptr %6, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct._NormEffect, ptr %321, i32 0, i32 5
  store ptr %320, ptr %322, align 8, !tbaa !42
  %323 = load i32, ptr %13, align 4, !tbaa !17
  %324 = sext i32 %323 to i64
  %325 = call noalias ptr @calloc(i64 noundef %324, i64 noundef 24) #6
  %326 = load ptr, ptr %6, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct._NormEffect, ptr %326, i32 0, i32 7
  store ptr %325, ptr %327, align 8, !tbaa !43
  %328 = load ptr, ptr %5, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct._Effect, ptr %328, i32 0, i32 4
  %330 = load ptr, ptr %329, align 8, !tbaa !37
  store ptr %330, ptr %15, align 8, !tbaa !5
  br label %331

331:                                              ; preds = %392, %317
  %332 = load ptr, ptr %15, align 8, !tbaa !5
  %333 = icmp ne ptr %332, null
  br i1 %333, label %334, label %396

334:                                              ; preds = %331
  %335 = load ptr, ptr %15, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct._Literal, ptr %335, i32 0, i32 0
  %337 = load i8, ptr %336, align 8, !tbaa !38
  %338 = icmp ne i8 %337, 0
  br i1 %338, label %339, label %349

339:                                              ; preds = %334
  %340 = load ptr, ptr %6, align 8, !tbaa !5
  %341 = getelementptr inbounds %struct._NormEffect, ptr %340, i32 0, i32 7
  %342 = load ptr, ptr %341, align 8, !tbaa !43
  %343 = load ptr, ptr %6, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct._NormEffect, ptr %343, i32 0, i32 8
  %345 = load i32, ptr %344, align 8, !tbaa !44
  %346 = add nsw i32 %345, 1
  store i32 %346, ptr %344, align 8, !tbaa !44
  %347 = sext i32 %345 to i64
  %348 = getelementptr inbounds %struct._Fact, ptr %342, i64 %347
  store ptr %348, ptr %17, align 8, !tbaa !5
  br label %359

349:                                              ; preds = %334
  %350 = load ptr, ptr %6, align 8, !tbaa !5
  %351 = getelementptr inbounds %struct._NormEffect, ptr %350, i32 0, i32 5
  %352 = load ptr, ptr %351, align 8, !tbaa !42
  %353 = load ptr, ptr %6, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct._NormEffect, ptr %353, i32 0, i32 6
  %355 = load i32, ptr %354, align 8, !tbaa !45
  %356 = add nsw i32 %355, 1
  store i32 %356, ptr %354, align 8, !tbaa !45
  %357 = sext i32 %355 to i64
  %358 = getelementptr inbounds %struct._Fact, ptr %352, i64 %357
  store ptr %358, ptr %17, align 8, !tbaa !5
  br label %359

359:                                              ; preds = %349, %339
  %360 = load ptr, ptr %15, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct._Literal, ptr %360, i32 0, i32 1
  %362 = getelementptr inbounds %struct._Fact, ptr %361, i32 0, i32 0
  %363 = load i32, ptr %362, align 4, !tbaa !46
  %364 = load ptr, ptr %17, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct._Fact, ptr %364, i32 0, i32 0
  store i32 %363, ptr %365, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %366

366:                                              ; preds = %388, %359
  %367 = load i32, ptr %10, align 4, !tbaa !17
  %368 = load ptr, ptr %17, align 8, !tbaa !5
  %369 = getelementptr inbounds %struct._Fact, ptr %368, i32 0, i32 0
  %370 = load i32, ptr %369, align 4, !tbaa !28
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !17
  %374 = icmp slt i32 %367, %373
  br i1 %374, label %375, label %391

375:                                              ; preds = %366
  %376 = load ptr, ptr %15, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct._Literal, ptr %376, i32 0, i32 1
  %378 = getelementptr inbounds %struct._Fact, ptr %377, i32 0, i32 1
  %379 = load i32, ptr %10, align 4, !tbaa !17
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [5 x i32], ptr %378, i64 0, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !17
  %383 = load ptr, ptr %17, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct._Fact, ptr %383, i32 0, i32 1
  %385 = load i32, ptr %10, align 4, !tbaa !17
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds [5 x i32], ptr %384, i64 0, i64 %386
  store i32 %382, ptr %387, align 4, !tbaa !17
  br label %388

388:                                              ; preds = %375
  %389 = load i32, ptr %10, align 4, !tbaa !17
  %390 = add nsw i32 %389, 1
  store i32 %390, ptr %10, align 4, !tbaa !17
  br label %366, !llvm.loop !47

391:                                              ; preds = %366
  br label %392

392:                                              ; preds = %391
  %393 = load ptr, ptr %15, align 8, !tbaa !5
  %394 = getelementptr inbounds %struct._Literal, ptr %393, i32 0, i32 2
  %395 = load ptr, ptr %394, align 8, !tbaa !40
  store ptr %395, ptr %15, align 8, !tbaa !5
  br label %331, !llvm.loop !48

396:                                              ; preds = %331
  store i32 0, ptr %12, align 4, !tbaa !17
  %397 = load ptr, ptr %5, align 8, !tbaa !5
  %398 = getelementptr inbounds %struct._Effect, ptr %397, i32 0, i32 5
  %399 = load ptr, ptr %398, align 8, !tbaa !49
  store ptr %399, ptr %16, align 8, !tbaa !5
  br label %400

400:                                              ; preds = %406, %396
  %401 = load ptr, ptr %16, align 8, !tbaa !5
  %402 = icmp ne ptr %401, null
  br i1 %402, label %403, label %410

403:                                              ; preds = %400
  %404 = load i32, ptr %12, align 4, !tbaa !17
  %405 = add nsw i32 %404, 1
  store i32 %405, ptr %12, align 4, !tbaa !17
  br label %406

406:                                              ; preds = %403
  %407 = load ptr, ptr %16, align 8, !tbaa !5
  %408 = getelementptr inbounds %struct._NumericEffect, ptr %407, i32 0, i32 3
  %409 = load ptr, ptr %408, align 8, !tbaa !50
  store ptr %409, ptr %16, align 8, !tbaa !5
  br label %400, !llvm.loop !53

410:                                              ; preds = %400
  %411 = load i32, ptr %12, align 4, !tbaa !17
  %412 = sext i32 %411 to i64
  %413 = call noalias ptr @calloc(i64 noundef %412, i64 noundef 4) #6
  %414 = load ptr, ptr %6, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct._NormEffect, ptr %414, i32 0, i32 13
  store ptr %413, ptr %415, align 8, !tbaa !54
  %416 = load i32, ptr %12, align 4, !tbaa !17
  %417 = sext i32 %416 to i64
  %418 = call noalias ptr @calloc(i64 noundef %417, i64 noundef 24) #6
  %419 = load ptr, ptr %6, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct._NormEffect, ptr %419, i32 0, i32 14
  store ptr %418, ptr %420, align 8, !tbaa !55
  %421 = load i32, ptr %12, align 4, !tbaa !17
  %422 = sext i32 %421 to i64
  %423 = call noalias ptr @calloc(i64 noundef %422, i64 noundef 8) #6
  %424 = load ptr, ptr %6, align 8, !tbaa !5
  %425 = getelementptr inbounds %struct._NormEffect, ptr %424, i32 0, i32 15
  store ptr %423, ptr %425, align 8, !tbaa !56
  %426 = load ptr, ptr %5, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct._Effect, ptr %426, i32 0, i32 5
  %428 = load ptr, ptr %427, align 8, !tbaa !49
  store ptr %428, ptr %16, align 8, !tbaa !5
  br label %429

429:                                              ; preds = %500, %410
  %430 = load ptr, ptr %16, align 8, !tbaa !5
  %431 = icmp ne ptr %430, null
  br i1 %431, label %432, label %504

432:                                              ; preds = %429
  %433 = load ptr, ptr %16, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct._NumericEffect, ptr %433, i32 0, i32 1
  %435 = load i32, ptr %434, align 8, !tbaa !57
  %436 = load ptr, ptr %6, align 8, !tbaa !5
  %437 = getelementptr inbounds %struct._NormEffect, ptr %436, i32 0, i32 13
  %438 = load ptr, ptr %437, align 8, !tbaa !54
  %439 = load ptr, ptr %6, align 8, !tbaa !5
  %440 = getelementptr inbounds %struct._NormEffect, ptr %439, i32 0, i32 16
  %441 = load i32, ptr %440, align 8, !tbaa !58
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds i32, ptr %438, i64 %442
  store i32 %435, ptr %443, align 4, !tbaa !17
  %444 = load ptr, ptr %6, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct._NormEffect, ptr %444, i32 0, i32 14
  %446 = load ptr, ptr %445, align 8, !tbaa !55
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct._NormEffect, ptr %447, i32 0, i32 16
  %449 = load i32, ptr %448, align 8, !tbaa !58
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct._Fluent, ptr %446, i64 %450
  store ptr %451, ptr %18, align 8, !tbaa !5
  %452 = load ptr, ptr %16, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct._NumericEffect, ptr %452, i32 0, i32 0
  %454 = getelementptr inbounds %struct._Fluent, ptr %453, i32 0, i32 0
  %455 = load i32, ptr %454, align 8, !tbaa !59
  %456 = load ptr, ptr %18, align 8, !tbaa !5
  %457 = getelementptr inbounds %struct._Fluent, ptr %456, i32 0, i32 0
  store i32 %455, ptr %457, align 4, !tbaa !60
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %458

458:                                              ; preds = %480, %432
  %459 = load i32, ptr %10, align 4, !tbaa !17
  %460 = load ptr, ptr %18, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct._Fluent, ptr %460, i32 0, i32 0
  %462 = load i32, ptr %461, align 4, !tbaa !60
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %463
  %465 = load i32, ptr %464, align 4, !tbaa !17
  %466 = icmp slt i32 %459, %465
  br i1 %466, label %467, label %483

467:                                              ; preds = %458
  %468 = load ptr, ptr %16, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct._NumericEffect, ptr %468, i32 0, i32 0
  %470 = getelementptr inbounds %struct._Fluent, ptr %469, i32 0, i32 1
  %471 = load i32, ptr %10, align 4, !tbaa !17
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds [5 x i32], ptr %470, i64 0, i64 %472
  %474 = load i32, ptr %473, align 4, !tbaa !17
  %475 = load ptr, ptr %18, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct._Fluent, ptr %475, i32 0, i32 1
  %477 = load i32, ptr %10, align 4, !tbaa !17
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds [5 x i32], ptr %476, i64 0, i64 %478
  store i32 %474, ptr %479, align 4, !tbaa !17
  br label %480

480:                                              ; preds = %467
  %481 = load i32, ptr %10, align 4, !tbaa !17
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %10, align 4, !tbaa !17
  br label %458, !llvm.loop !61

483:                                              ; preds = %458
  %484 = load ptr, ptr %16, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct._NumericEffect, ptr %484, i32 0, i32 2
  %486 = load ptr, ptr %485, align 8, !tbaa !62
  %487 = call ptr @copy_Exp(ptr noundef %486)
  %488 = load ptr, ptr %6, align 8, !tbaa !5
  %489 = getelementptr inbounds %struct._NormEffect, ptr %488, i32 0, i32 15
  %490 = load ptr, ptr %489, align 8, !tbaa !56
  %491 = load ptr, ptr %6, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct._NormEffect, ptr %491, i32 0, i32 16
  %493 = load i32, ptr %492, align 8, !tbaa !58
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds ptr, ptr %490, i64 %494
  store ptr %487, ptr %495, align 8, !tbaa !5
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = getelementptr inbounds %struct._NormEffect, ptr %496, i32 0, i32 16
  %498 = load i32, ptr %497, align 8, !tbaa !58
  %499 = add nsw i32 %498, 1
  store i32 %499, ptr %497, align 8, !tbaa !58
  br label %500

500:                                              ; preds = %483
  %501 = load ptr, ptr %16, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct._NumericEffect, ptr %501, i32 0, i32 3
  %503 = load ptr, ptr %502, align 8, !tbaa !50
  store ptr %503, ptr %16, align 8, !tbaa !5
  br label %429, !llvm.loop !63

504:                                              ; preds = %429
  %505 = load ptr, ptr %3, align 8, !tbaa !5
  %506 = load ptr, ptr %505, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct._NormOperator, ptr %506, i32 0, i32 13
  %508 = load ptr, ptr %507, align 8, !tbaa !64
  %509 = load ptr, ptr %6, align 8, !tbaa !5
  %510 = getelementptr inbounds %struct._NormEffect, ptr %509, i32 0, i32 18
  store ptr %508, ptr %510, align 8, !tbaa !66
  %511 = load ptr, ptr %3, align 8, !tbaa !5
  %512 = load ptr, ptr %511, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct._NormOperator, ptr %512, i32 0, i32 13
  %514 = load ptr, ptr %513, align 8, !tbaa !64
  %515 = icmp ne ptr %514, null
  br i1 %515, label %516, label %523

516:                                              ; preds = %504
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = load ptr, ptr %3, align 8, !tbaa !5
  %519 = load ptr, ptr %518, align 8, !tbaa !5
  %520 = getelementptr inbounds %struct._NormOperator, ptr %519, i32 0, i32 13
  %521 = load ptr, ptr %520, align 8, !tbaa !64
  %522 = getelementptr inbounds %struct._NormEffect, ptr %521, i32 0, i32 17
  store ptr %517, ptr %522, align 8, !tbaa !67
  br label %523

523:                                              ; preds = %516, %504
  %524 = load ptr, ptr %6, align 8, !tbaa !5
  %525 = load ptr, ptr %3, align 8, !tbaa !5
  %526 = load ptr, ptr %525, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct._NormOperator, ptr %526, i32 0, i32 13
  store ptr %524, ptr %527, align 8, !tbaa !64
  br label %528

528:                                              ; preds = %523
  %529 = load ptr, ptr %8, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct._WffNode, ptr %529, i32 0, i32 5
  %531 = load ptr, ptr %530, align 8, !tbaa !18
  store ptr %531, ptr %8, align 8, !tbaa !5
  br label %36, !llvm.loop !68

532:                                              ; preds = %36
  br label %1713

533:                                              ; preds = %25
  %534 = load ptr, ptr %5, align 8, !tbaa !5
  %535 = call ptr @new_NormEffect1(ptr noundef %534)
  store ptr %535, ptr %6, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !17
  store i32 0, ptr %14, align 4, !tbaa !17
  %536 = load ptr, ptr %7, align 8, !tbaa !5
  %537 = getelementptr inbounds %struct._WffNode, ptr %536, i32 0, i32 4
  %538 = load ptr, ptr %537, align 8, !tbaa !16
  store ptr %538, ptr %8, align 8, !tbaa !5
  br label %539

539:                                              ; preds = %559, %533
  %540 = load ptr, ptr %8, align 8, !tbaa !5
  %541 = icmp ne ptr %540, null
  br i1 %541, label %542, label %563

542:                                              ; preds = %539
  %543 = load ptr, ptr %8, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct._WffNode, ptr %543, i32 0, i32 0
  %545 = load i32, ptr %544, align 8, !tbaa !14
  %546 = icmp eq i32 %545, 2002
  br i1 %546, label %547, label %550

547:                                              ; preds = %542
  %548 = load i32, ptr %11, align 4, !tbaa !17
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %11, align 4, !tbaa !17
  br label %550

550:                                              ; preds = %547, %542
  %551 = load ptr, ptr %8, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct._WffNode, ptr %551, i32 0, i32 0
  %553 = load i32, ptr %552, align 8, !tbaa !14
  %554 = icmp eq i32 %553, 2003
  br i1 %554, label %555, label %558

555:                                              ; preds = %550
  %556 = load i32, ptr %14, align 4, !tbaa !17
  %557 = add nsw i32 %556, 1
  store i32 %557, ptr %14, align 4, !tbaa !17
  br label %558

558:                                              ; preds = %555, %550
  br label %559

559:                                              ; preds = %558
  %560 = load ptr, ptr %8, align 8, !tbaa !5
  %561 = getelementptr inbounds %struct._WffNode, ptr %560, i32 0, i32 5
  %562 = load ptr, ptr %561, align 8, !tbaa !18
  store ptr %562, ptr %8, align 8, !tbaa !5
  br label %539, !llvm.loop !69

563:                                              ; preds = %539
  %564 = load i32, ptr %11, align 4, !tbaa !17
  %565 = sext i32 %564 to i64
  %566 = call noalias ptr @calloc(i64 noundef %565, i64 noundef 24) #6
  %567 = load ptr, ptr %6, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct._NormEffect, ptr %567, i32 0, i32 3
  store ptr %566, ptr %568, align 8, !tbaa !21
  %569 = load i32, ptr %14, align 4, !tbaa !17
  %570 = sext i32 %569 to i64
  %571 = call noalias ptr @calloc(i64 noundef %570, i64 noundef 4) #6
  %572 = load ptr, ptr %6, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct._NormEffect, ptr %572, i32 0, i32 9
  store ptr %571, ptr %573, align 8, !tbaa !23
  %574 = load i32, ptr %14, align 4, !tbaa !17
  %575 = sext i32 %574 to i64
  %576 = call noalias ptr @calloc(i64 noundef %575, i64 noundef 8) #6
  %577 = load ptr, ptr %6, align 8, !tbaa !5
  %578 = getelementptr inbounds %struct._NormEffect, ptr %577, i32 0, i32 10
  store ptr %576, ptr %578, align 8, !tbaa !24
  %579 = load i32, ptr %14, align 4, !tbaa !17
  %580 = sext i32 %579 to i64
  %581 = call noalias ptr @calloc(i64 noundef %580, i64 noundef 8) #6
  %582 = load ptr, ptr %6, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct._NormEffect, ptr %582, i32 0, i32 11
  store ptr %581, ptr %583, align 8, !tbaa !25
  %584 = load ptr, ptr %7, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct._WffNode, ptr %584, i32 0, i32 4
  %586 = load ptr, ptr %585, align 8, !tbaa !16
  store ptr %586, ptr %8, align 8, !tbaa !5
  br label %587

587:                                              ; preds = %688, %563
  %588 = load ptr, ptr %8, align 8, !tbaa !5
  %589 = icmp ne ptr %588, null
  br i1 %589, label %590, label %692

590:                                              ; preds = %587
  %591 = load ptr, ptr %8, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct._WffNode, ptr %591, i32 0, i32 0
  %593 = load i32, ptr %592, align 8, !tbaa !14
  %594 = icmp eq i32 %593, 2002
  br i1 %594, label %595, label %642

595:                                              ; preds = %590
  %596 = load ptr, ptr %6, align 8, !tbaa !5
  %597 = getelementptr inbounds %struct._NormEffect, ptr %596, i32 0, i32 3
  %598 = load ptr, ptr %597, align 8, !tbaa !21
  %599 = load ptr, ptr %6, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct._NormEffect, ptr %599, i32 0, i32 4
  %601 = load i32, ptr %600, align 8, !tbaa !26
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds %struct._Fact, ptr %598, i64 %602
  store ptr %603, ptr %17, align 8, !tbaa !5
  %604 = load ptr, ptr %8, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct._WffNode, ptr %604, i32 0, i32 7
  %606 = load ptr, ptr %605, align 8, !tbaa !27
  %607 = getelementptr inbounds %struct._Fact, ptr %606, i32 0, i32 0
  %608 = load i32, ptr %607, align 4, !tbaa !28
  %609 = load ptr, ptr %17, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct._Fact, ptr %609, i32 0, i32 0
  store i32 %608, ptr %610, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %611

611:                                              ; preds = %634, %595
  %612 = load i32, ptr %10, align 4, !tbaa !17
  %613 = load ptr, ptr %17, align 8, !tbaa !5
  %614 = getelementptr inbounds %struct._Fact, ptr %613, i32 0, i32 0
  %615 = load i32, ptr %614, align 4, !tbaa !28
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %616
  %618 = load i32, ptr %617, align 4, !tbaa !17
  %619 = icmp slt i32 %612, %618
  br i1 %619, label %620, label %637

620:                                              ; preds = %611
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct._WffNode, ptr %621, i32 0, i32 7
  %623 = load ptr, ptr %622, align 8, !tbaa !27
  %624 = getelementptr inbounds %struct._Fact, ptr %623, i32 0, i32 1
  %625 = load i32, ptr %10, align 4, !tbaa !17
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds [5 x i32], ptr %624, i64 0, i64 %626
  %628 = load i32, ptr %627, align 4, !tbaa !17
  %629 = load ptr, ptr %17, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct._Fact, ptr %629, i32 0, i32 1
  %631 = load i32, ptr %10, align 4, !tbaa !17
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds [5 x i32], ptr %630, i64 0, i64 %632
  store i32 %628, ptr %633, align 4, !tbaa !17
  br label %634

634:                                              ; preds = %620
  %635 = load i32, ptr %10, align 4, !tbaa !17
  %636 = add nsw i32 %635, 1
  store i32 %636, ptr %10, align 4, !tbaa !17
  br label %611, !llvm.loop !70

637:                                              ; preds = %611
  %638 = load ptr, ptr %6, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct._NormEffect, ptr %638, i32 0, i32 4
  %640 = load i32, ptr %639, align 8, !tbaa !26
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %639, align 8, !tbaa !26
  br label %642

642:                                              ; preds = %637, %590
  %643 = load ptr, ptr %8, align 8, !tbaa !5
  %644 = getelementptr inbounds %struct._WffNode, ptr %643, i32 0, i32 0
  %645 = load i32, ptr %644, align 8, !tbaa !14
  %646 = icmp eq i32 %645, 2003
  br i1 %646, label %647, label %687

647:                                              ; preds = %642
  %648 = load ptr, ptr %8, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct._WffNode, ptr %648, i32 0, i32 10
  %650 = load i32, ptr %649, align 8, !tbaa !31
  %651 = load ptr, ptr %6, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct._NormEffect, ptr %651, i32 0, i32 9
  %653 = load ptr, ptr %652, align 8, !tbaa !23
  %654 = load ptr, ptr %6, align 8, !tbaa !5
  %655 = getelementptr inbounds %struct._NormEffect, ptr %654, i32 0, i32 12
  %656 = load i32, ptr %655, align 8, !tbaa !32
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds i32, ptr %653, i64 %657
  store i32 %650, ptr %658, align 4, !tbaa !17
  %659 = load ptr, ptr %8, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct._WffNode, ptr %659, i32 0, i32 11
  %661 = load ptr, ptr %660, align 8, !tbaa !33
  %662 = call ptr @copy_Exp(ptr noundef %661)
  %663 = load ptr, ptr %6, align 8, !tbaa !5
  %664 = getelementptr inbounds %struct._NormEffect, ptr %663, i32 0, i32 10
  %665 = load ptr, ptr %664, align 8, !tbaa !24
  %666 = load ptr, ptr %6, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct._NormEffect, ptr %666, i32 0, i32 12
  %668 = load i32, ptr %667, align 8, !tbaa !32
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds ptr, ptr %665, i64 %669
  store ptr %662, ptr %670, align 8, !tbaa !5
  %671 = load ptr, ptr %8, align 8, !tbaa !5
  %672 = getelementptr inbounds %struct._WffNode, ptr %671, i32 0, i32 12
  %673 = load ptr, ptr %672, align 8, !tbaa !34
  %674 = call ptr @copy_Exp(ptr noundef %673)
  %675 = load ptr, ptr %6, align 8, !tbaa !5
  %676 = getelementptr inbounds %struct._NormEffect, ptr %675, i32 0, i32 11
  %677 = load ptr, ptr %676, align 8, !tbaa !25
  %678 = load ptr, ptr %6, align 8, !tbaa !5
  %679 = getelementptr inbounds %struct._NormEffect, ptr %678, i32 0, i32 12
  %680 = load i32, ptr %679, align 8, !tbaa !32
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds ptr, ptr %677, i64 %681
  store ptr %674, ptr %682, align 8, !tbaa !5
  %683 = load ptr, ptr %6, align 8, !tbaa !5
  %684 = getelementptr inbounds %struct._NormEffect, ptr %683, i32 0, i32 12
  %685 = load i32, ptr %684, align 8, !tbaa !32
  %686 = add nsw i32 %685, 1
  store i32 %686, ptr %684, align 8, !tbaa !32
  br label %687

687:                                              ; preds = %647, %642
  br label %688

688:                                              ; preds = %687
  %689 = load ptr, ptr %8, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct._WffNode, ptr %689, i32 0, i32 5
  %691 = load ptr, ptr %690, align 8, !tbaa !18
  store ptr %691, ptr %8, align 8, !tbaa !5
  br label %587, !llvm.loop !71

692:                                              ; preds = %587
  store i32 0, ptr %12, align 4, !tbaa !17
  store i32 0, ptr %13, align 4, !tbaa !17
  %693 = load ptr, ptr %5, align 8, !tbaa !5
  %694 = getelementptr inbounds %struct._Effect, ptr %693, i32 0, i32 4
  %695 = load ptr, ptr %694, align 8, !tbaa !37
  store ptr %695, ptr %15, align 8, !tbaa !5
  br label %696

696:                                              ; preds = %711, %692
  %697 = load ptr, ptr %15, align 8, !tbaa !5
  %698 = icmp ne ptr %697, null
  br i1 %698, label %699, label %715

699:                                              ; preds = %696
  %700 = load ptr, ptr %15, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct._Literal, ptr %700, i32 0, i32 0
  %702 = load i8, ptr %701, align 8, !tbaa !38
  %703 = icmp ne i8 %702, 0
  br i1 %703, label %704, label %707

704:                                              ; preds = %699
  %705 = load i32, ptr %13, align 4, !tbaa !17
  %706 = add nsw i32 %705, 1
  store i32 %706, ptr %13, align 4, !tbaa !17
  br label %710

707:                                              ; preds = %699
  %708 = load i32, ptr %12, align 4, !tbaa !17
  %709 = add nsw i32 %708, 1
  store i32 %709, ptr %12, align 4, !tbaa !17
  br label %710

710:                                              ; preds = %707, %704
  br label %711

711:                                              ; preds = %710
  %712 = load ptr, ptr %15, align 8, !tbaa !5
  %713 = getelementptr inbounds %struct._Literal, ptr %712, i32 0, i32 2
  %714 = load ptr, ptr %713, align 8, !tbaa !40
  store ptr %714, ptr %15, align 8, !tbaa !5
  br label %696, !llvm.loop !72

715:                                              ; preds = %696
  %716 = load i32, ptr %12, align 4, !tbaa !17
  %717 = sext i32 %716 to i64
  %718 = call noalias ptr @calloc(i64 noundef %717, i64 noundef 24) #6
  %719 = load ptr, ptr %6, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct._NormEffect, ptr %719, i32 0, i32 5
  store ptr %718, ptr %720, align 8, !tbaa !42
  %721 = load i32, ptr %13, align 4, !tbaa !17
  %722 = sext i32 %721 to i64
  %723 = call noalias ptr @calloc(i64 noundef %722, i64 noundef 24) #6
  %724 = load ptr, ptr %6, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct._NormEffect, ptr %724, i32 0, i32 7
  store ptr %723, ptr %725, align 8, !tbaa !43
  %726 = load ptr, ptr %5, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct._Effect, ptr %726, i32 0, i32 4
  %728 = load ptr, ptr %727, align 8, !tbaa !37
  store ptr %728, ptr %15, align 8, !tbaa !5
  br label %729

729:                                              ; preds = %790, %715
  %730 = load ptr, ptr %15, align 8, !tbaa !5
  %731 = icmp ne ptr %730, null
  br i1 %731, label %732, label %794

732:                                              ; preds = %729
  %733 = load ptr, ptr %15, align 8, !tbaa !5
  %734 = getelementptr inbounds %struct._Literal, ptr %733, i32 0, i32 0
  %735 = load i8, ptr %734, align 8, !tbaa !38
  %736 = icmp ne i8 %735, 0
  br i1 %736, label %737, label %747

737:                                              ; preds = %732
  %738 = load ptr, ptr %6, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct._NormEffect, ptr %738, i32 0, i32 7
  %740 = load ptr, ptr %739, align 8, !tbaa !43
  %741 = load ptr, ptr %6, align 8, !tbaa !5
  %742 = getelementptr inbounds %struct._NormEffect, ptr %741, i32 0, i32 8
  %743 = load i32, ptr %742, align 8, !tbaa !44
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %742, align 8, !tbaa !44
  %745 = sext i32 %743 to i64
  %746 = getelementptr inbounds %struct._Fact, ptr %740, i64 %745
  store ptr %746, ptr %17, align 8, !tbaa !5
  br label %757

747:                                              ; preds = %732
  %748 = load ptr, ptr %6, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct._NormEffect, ptr %748, i32 0, i32 5
  %750 = load ptr, ptr %749, align 8, !tbaa !42
  %751 = load ptr, ptr %6, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct._NormEffect, ptr %751, i32 0, i32 6
  %753 = load i32, ptr %752, align 8, !tbaa !45
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %752, align 8, !tbaa !45
  %755 = sext i32 %753 to i64
  %756 = getelementptr inbounds %struct._Fact, ptr %750, i64 %755
  store ptr %756, ptr %17, align 8, !tbaa !5
  br label %757

757:                                              ; preds = %747, %737
  %758 = load ptr, ptr %15, align 8, !tbaa !5
  %759 = getelementptr inbounds %struct._Literal, ptr %758, i32 0, i32 1
  %760 = getelementptr inbounds %struct._Fact, ptr %759, i32 0, i32 0
  %761 = load i32, ptr %760, align 4, !tbaa !46
  %762 = load ptr, ptr %17, align 8, !tbaa !5
  %763 = getelementptr inbounds %struct._Fact, ptr %762, i32 0, i32 0
  store i32 %761, ptr %763, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %764

764:                                              ; preds = %786, %757
  %765 = load i32, ptr %10, align 4, !tbaa !17
  %766 = load ptr, ptr %17, align 8, !tbaa !5
  %767 = getelementptr inbounds %struct._Fact, ptr %766, i32 0, i32 0
  %768 = load i32, ptr %767, align 4, !tbaa !28
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %769
  %771 = load i32, ptr %770, align 4, !tbaa !17
  %772 = icmp slt i32 %765, %771
  br i1 %772, label %773, label %789

773:                                              ; preds = %764
  %774 = load ptr, ptr %15, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct._Literal, ptr %774, i32 0, i32 1
  %776 = getelementptr inbounds %struct._Fact, ptr %775, i32 0, i32 1
  %777 = load i32, ptr %10, align 4, !tbaa !17
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds [5 x i32], ptr %776, i64 0, i64 %778
  %780 = load i32, ptr %779, align 4, !tbaa !17
  %781 = load ptr, ptr %17, align 8, !tbaa !5
  %782 = getelementptr inbounds %struct._Fact, ptr %781, i32 0, i32 1
  %783 = load i32, ptr %10, align 4, !tbaa !17
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds [5 x i32], ptr %782, i64 0, i64 %784
  store i32 %780, ptr %785, align 4, !tbaa !17
  br label %786

786:                                              ; preds = %773
  %787 = load i32, ptr %10, align 4, !tbaa !17
  %788 = add nsw i32 %787, 1
  store i32 %788, ptr %10, align 4, !tbaa !17
  br label %764, !llvm.loop !73

789:                                              ; preds = %764
  br label %790

790:                                              ; preds = %789
  %791 = load ptr, ptr %15, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct._Literal, ptr %791, i32 0, i32 2
  %793 = load ptr, ptr %792, align 8, !tbaa !40
  store ptr %793, ptr %15, align 8, !tbaa !5
  br label %729, !llvm.loop !74

794:                                              ; preds = %729
  store i32 0, ptr %12, align 4, !tbaa !17
  %795 = load ptr, ptr %5, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct._Effect, ptr %795, i32 0, i32 5
  %797 = load ptr, ptr %796, align 8, !tbaa !49
  store ptr %797, ptr %16, align 8, !tbaa !5
  br label %798

798:                                              ; preds = %804, %794
  %799 = load ptr, ptr %16, align 8, !tbaa !5
  %800 = icmp ne ptr %799, null
  br i1 %800, label %801, label %808

801:                                              ; preds = %798
  %802 = load i32, ptr %12, align 4, !tbaa !17
  %803 = add nsw i32 %802, 1
  store i32 %803, ptr %12, align 4, !tbaa !17
  br label %804

804:                                              ; preds = %801
  %805 = load ptr, ptr %16, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct._NumericEffect, ptr %805, i32 0, i32 3
  %807 = load ptr, ptr %806, align 8, !tbaa !50
  store ptr %807, ptr %16, align 8, !tbaa !5
  br label %798, !llvm.loop !75

808:                                              ; preds = %798
  %809 = load i32, ptr %12, align 4, !tbaa !17
  %810 = sext i32 %809 to i64
  %811 = call noalias ptr @calloc(i64 noundef %810, i64 noundef 4) #6
  %812 = load ptr, ptr %6, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct._NormEffect, ptr %812, i32 0, i32 13
  store ptr %811, ptr %813, align 8, !tbaa !54
  %814 = load i32, ptr %12, align 4, !tbaa !17
  %815 = sext i32 %814 to i64
  %816 = call noalias ptr @calloc(i64 noundef %815, i64 noundef 24) #6
  %817 = load ptr, ptr %6, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct._NormEffect, ptr %817, i32 0, i32 14
  store ptr %816, ptr %818, align 8, !tbaa !55
  %819 = load i32, ptr %12, align 4, !tbaa !17
  %820 = sext i32 %819 to i64
  %821 = call noalias ptr @calloc(i64 noundef %820, i64 noundef 8) #6
  %822 = load ptr, ptr %6, align 8, !tbaa !5
  %823 = getelementptr inbounds %struct._NormEffect, ptr %822, i32 0, i32 15
  store ptr %821, ptr %823, align 8, !tbaa !56
  %824 = load ptr, ptr %5, align 8, !tbaa !5
  %825 = getelementptr inbounds %struct._Effect, ptr %824, i32 0, i32 5
  %826 = load ptr, ptr %825, align 8, !tbaa !49
  store ptr %826, ptr %16, align 8, !tbaa !5
  br label %827

827:                                              ; preds = %898, %808
  %828 = load ptr, ptr %16, align 8, !tbaa !5
  %829 = icmp ne ptr %828, null
  br i1 %829, label %830, label %902

830:                                              ; preds = %827
  %831 = load ptr, ptr %16, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct._NumericEffect, ptr %831, i32 0, i32 1
  %833 = load i32, ptr %832, align 8, !tbaa !57
  %834 = load ptr, ptr %6, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct._NormEffect, ptr %834, i32 0, i32 13
  %836 = load ptr, ptr %835, align 8, !tbaa !54
  %837 = load ptr, ptr %6, align 8, !tbaa !5
  %838 = getelementptr inbounds %struct._NormEffect, ptr %837, i32 0, i32 16
  %839 = load i32, ptr %838, align 8, !tbaa !58
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds i32, ptr %836, i64 %840
  store i32 %833, ptr %841, align 4, !tbaa !17
  %842 = load ptr, ptr %6, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct._NormEffect, ptr %842, i32 0, i32 14
  %844 = load ptr, ptr %843, align 8, !tbaa !55
  %845 = load ptr, ptr %6, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct._NormEffect, ptr %845, i32 0, i32 16
  %847 = load i32, ptr %846, align 8, !tbaa !58
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds %struct._Fluent, ptr %844, i64 %848
  store ptr %849, ptr %18, align 8, !tbaa !5
  %850 = load ptr, ptr %16, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct._NumericEffect, ptr %850, i32 0, i32 0
  %852 = getelementptr inbounds %struct._Fluent, ptr %851, i32 0, i32 0
  %853 = load i32, ptr %852, align 8, !tbaa !59
  %854 = load ptr, ptr %18, align 8, !tbaa !5
  %855 = getelementptr inbounds %struct._Fluent, ptr %854, i32 0, i32 0
  store i32 %853, ptr %855, align 4, !tbaa !60
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %856

856:                                              ; preds = %878, %830
  %857 = load i32, ptr %10, align 4, !tbaa !17
  %858 = load ptr, ptr %18, align 8, !tbaa !5
  %859 = getelementptr inbounds %struct._Fluent, ptr %858, i32 0, i32 0
  %860 = load i32, ptr %859, align 4, !tbaa !60
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %861
  %863 = load i32, ptr %862, align 4, !tbaa !17
  %864 = icmp slt i32 %857, %863
  br i1 %864, label %865, label %881

865:                                              ; preds = %856
  %866 = load ptr, ptr %16, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct._NumericEffect, ptr %866, i32 0, i32 0
  %868 = getelementptr inbounds %struct._Fluent, ptr %867, i32 0, i32 1
  %869 = load i32, ptr %10, align 4, !tbaa !17
  %870 = sext i32 %869 to i64
  %871 = getelementptr inbounds [5 x i32], ptr %868, i64 0, i64 %870
  %872 = load i32, ptr %871, align 4, !tbaa !17
  %873 = load ptr, ptr %18, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct._Fluent, ptr %873, i32 0, i32 1
  %875 = load i32, ptr %10, align 4, !tbaa !17
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds [5 x i32], ptr %874, i64 0, i64 %876
  store i32 %872, ptr %877, align 4, !tbaa !17
  br label %878

878:                                              ; preds = %865
  %879 = load i32, ptr %10, align 4, !tbaa !17
  %880 = add nsw i32 %879, 1
  store i32 %880, ptr %10, align 4, !tbaa !17
  br label %856, !llvm.loop !76

881:                                              ; preds = %856
  %882 = load ptr, ptr %16, align 8, !tbaa !5
  %883 = getelementptr inbounds %struct._NumericEffect, ptr %882, i32 0, i32 2
  %884 = load ptr, ptr %883, align 8, !tbaa !62
  %885 = call ptr @copy_Exp(ptr noundef %884)
  %886 = load ptr, ptr %6, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct._NormEffect, ptr %886, i32 0, i32 15
  %888 = load ptr, ptr %887, align 8, !tbaa !56
  %889 = load ptr, ptr %6, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct._NormEffect, ptr %889, i32 0, i32 16
  %891 = load i32, ptr %890, align 8, !tbaa !58
  %892 = sext i32 %891 to i64
  %893 = getelementptr inbounds ptr, ptr %888, i64 %892
  store ptr %885, ptr %893, align 8, !tbaa !5
  %894 = load ptr, ptr %6, align 8, !tbaa !5
  %895 = getelementptr inbounds %struct._NormEffect, ptr %894, i32 0, i32 16
  %896 = load i32, ptr %895, align 8, !tbaa !58
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr %895, align 8, !tbaa !58
  br label %898

898:                                              ; preds = %881
  %899 = load ptr, ptr %16, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct._NumericEffect, ptr %899, i32 0, i32 3
  %901 = load ptr, ptr %900, align 8, !tbaa !50
  store ptr %901, ptr %16, align 8, !tbaa !5
  br label %827, !llvm.loop !77

902:                                              ; preds = %827
  %903 = load ptr, ptr %3, align 8, !tbaa !5
  %904 = load ptr, ptr %903, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct._NormOperator, ptr %904, i32 0, i32 13
  %906 = load ptr, ptr %905, align 8, !tbaa !64
  %907 = load ptr, ptr %6, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct._NormEffect, ptr %907, i32 0, i32 18
  store ptr %906, ptr %908, align 8, !tbaa !66
  %909 = load ptr, ptr %3, align 8, !tbaa !5
  %910 = load ptr, ptr %909, align 8, !tbaa !5
  %911 = getelementptr inbounds %struct._NormOperator, ptr %910, i32 0, i32 13
  %912 = load ptr, ptr %911, align 8, !tbaa !64
  %913 = icmp ne ptr %912, null
  br i1 %913, label %914, label %921

914:                                              ; preds = %902
  %915 = load ptr, ptr %6, align 8, !tbaa !5
  %916 = load ptr, ptr %3, align 8, !tbaa !5
  %917 = load ptr, ptr %916, align 8, !tbaa !5
  %918 = getelementptr inbounds %struct._NormOperator, ptr %917, i32 0, i32 13
  %919 = load ptr, ptr %918, align 8, !tbaa !64
  %920 = getelementptr inbounds %struct._NormEffect, ptr %919, i32 0, i32 17
  store ptr %915, ptr %920, align 8, !tbaa !67
  br label %921

921:                                              ; preds = %914, %902
  %922 = load ptr, ptr %6, align 8, !tbaa !5
  %923 = load ptr, ptr %3, align 8, !tbaa !5
  %924 = load ptr, ptr %923, align 8, !tbaa !5
  %925 = getelementptr inbounds %struct._NormOperator, ptr %924, i32 0, i32 13
  store ptr %922, ptr %925, align 8, !tbaa !64
  br label %1713

926:                                              ; preds = %25
  %927 = load ptr, ptr %5, align 8, !tbaa !5
  %928 = call ptr @new_NormEffect1(ptr noundef %927)
  store ptr %928, ptr %6, align 8, !tbaa !5
  %929 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 24) #6
  %930 = load ptr, ptr %6, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct._NormEffect, ptr %930, i32 0, i32 3
  store ptr %929, ptr %931, align 8, !tbaa !21
  %932 = load ptr, ptr %6, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct._NormEffect, ptr %932, i32 0, i32 3
  %934 = load ptr, ptr %933, align 8, !tbaa !21
  %935 = getelementptr inbounds %struct._Fact, ptr %934, i64 0
  store ptr %935, ptr %17, align 8, !tbaa !5
  %936 = load ptr, ptr %7, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct._WffNode, ptr %936, i32 0, i32 7
  %938 = load ptr, ptr %937, align 8, !tbaa !27
  %939 = getelementptr inbounds %struct._Fact, ptr %938, i32 0, i32 0
  %940 = load i32, ptr %939, align 4, !tbaa !28
  %941 = load ptr, ptr %17, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct._Fact, ptr %941, i32 0, i32 0
  store i32 %940, ptr %942, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %943

943:                                              ; preds = %966, %926
  %944 = load i32, ptr %10, align 4, !tbaa !17
  %945 = load ptr, ptr %17, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct._Fact, ptr %945, i32 0, i32 0
  %947 = load i32, ptr %946, align 4, !tbaa !28
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %948
  %950 = load i32, ptr %949, align 4, !tbaa !17
  %951 = icmp slt i32 %944, %950
  br i1 %951, label %952, label %969

952:                                              ; preds = %943
  %953 = load ptr, ptr %7, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct._WffNode, ptr %953, i32 0, i32 7
  %955 = load ptr, ptr %954, align 8, !tbaa !27
  %956 = getelementptr inbounds %struct._Fact, ptr %955, i32 0, i32 1
  %957 = load i32, ptr %10, align 4, !tbaa !17
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds [5 x i32], ptr %956, i64 0, i64 %958
  %960 = load i32, ptr %959, align 4, !tbaa !17
  %961 = load ptr, ptr %17, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct._Fact, ptr %961, i32 0, i32 1
  %963 = load i32, ptr %10, align 4, !tbaa !17
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds [5 x i32], ptr %962, i64 0, i64 %964
  store i32 %960, ptr %965, align 4, !tbaa !17
  br label %966

966:                                              ; preds = %952
  %967 = load i32, ptr %10, align 4, !tbaa !17
  %968 = add nsw i32 %967, 1
  store i32 %968, ptr %10, align 4, !tbaa !17
  br label %943, !llvm.loop !78

969:                                              ; preds = %943
  %970 = load ptr, ptr %6, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct._NormEffect, ptr %970, i32 0, i32 4
  store i32 1, ptr %971, align 8, !tbaa !26
  store i32 0, ptr %12, align 4, !tbaa !17
  store i32 0, ptr %13, align 4, !tbaa !17
  %972 = load ptr, ptr %5, align 8, !tbaa !5
  %973 = getelementptr inbounds %struct._Effect, ptr %972, i32 0, i32 4
  %974 = load ptr, ptr %973, align 8, !tbaa !37
  store ptr %974, ptr %15, align 8, !tbaa !5
  br label %975

975:                                              ; preds = %990, %969
  %976 = load ptr, ptr %15, align 8, !tbaa !5
  %977 = icmp ne ptr %976, null
  br i1 %977, label %978, label %994

978:                                              ; preds = %975
  %979 = load ptr, ptr %15, align 8, !tbaa !5
  %980 = getelementptr inbounds %struct._Literal, ptr %979, i32 0, i32 0
  %981 = load i8, ptr %980, align 8, !tbaa !38
  %982 = icmp ne i8 %981, 0
  br i1 %982, label %983, label %986

983:                                              ; preds = %978
  %984 = load i32, ptr %13, align 4, !tbaa !17
  %985 = add nsw i32 %984, 1
  store i32 %985, ptr %13, align 4, !tbaa !17
  br label %989

986:                                              ; preds = %978
  %987 = load i32, ptr %12, align 4, !tbaa !17
  %988 = add nsw i32 %987, 1
  store i32 %988, ptr %12, align 4, !tbaa !17
  br label %989

989:                                              ; preds = %986, %983
  br label %990

990:                                              ; preds = %989
  %991 = load ptr, ptr %15, align 8, !tbaa !5
  %992 = getelementptr inbounds %struct._Literal, ptr %991, i32 0, i32 2
  %993 = load ptr, ptr %992, align 8, !tbaa !40
  store ptr %993, ptr %15, align 8, !tbaa !5
  br label %975, !llvm.loop !79

994:                                              ; preds = %975
  %995 = load i32, ptr %12, align 4, !tbaa !17
  %996 = sext i32 %995 to i64
  %997 = call noalias ptr @calloc(i64 noundef %996, i64 noundef 24) #6
  %998 = load ptr, ptr %6, align 8, !tbaa !5
  %999 = getelementptr inbounds %struct._NormEffect, ptr %998, i32 0, i32 5
  store ptr %997, ptr %999, align 8, !tbaa !42
  %1000 = load i32, ptr %13, align 4, !tbaa !17
  %1001 = sext i32 %1000 to i64
  %1002 = call noalias ptr @calloc(i64 noundef %1001, i64 noundef 24) #6
  %1003 = load ptr, ptr %6, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct._NormEffect, ptr %1003, i32 0, i32 7
  store ptr %1002, ptr %1004, align 8, !tbaa !43
  %1005 = load ptr, ptr %5, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct._Effect, ptr %1005, i32 0, i32 4
  %1007 = load ptr, ptr %1006, align 8, !tbaa !37
  store ptr %1007, ptr %15, align 8, !tbaa !5
  br label %1008

1008:                                             ; preds = %1069, %994
  %1009 = load ptr, ptr %15, align 8, !tbaa !5
  %1010 = icmp ne ptr %1009, null
  br i1 %1010, label %1011, label %1073

1011:                                             ; preds = %1008
  %1012 = load ptr, ptr %15, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct._Literal, ptr %1012, i32 0, i32 0
  %1014 = load i8, ptr %1013, align 8, !tbaa !38
  %1015 = icmp ne i8 %1014, 0
  br i1 %1015, label %1016, label %1026

1016:                                             ; preds = %1011
  %1017 = load ptr, ptr %6, align 8, !tbaa !5
  %1018 = getelementptr inbounds %struct._NormEffect, ptr %1017, i32 0, i32 7
  %1019 = load ptr, ptr %1018, align 8, !tbaa !43
  %1020 = load ptr, ptr %6, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct._NormEffect, ptr %1020, i32 0, i32 8
  %1022 = load i32, ptr %1021, align 8, !tbaa !44
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %1021, align 8, !tbaa !44
  %1024 = sext i32 %1022 to i64
  %1025 = getelementptr inbounds %struct._Fact, ptr %1019, i64 %1024
  store ptr %1025, ptr %17, align 8, !tbaa !5
  br label %1036

1026:                                             ; preds = %1011
  %1027 = load ptr, ptr %6, align 8, !tbaa !5
  %1028 = getelementptr inbounds %struct._NormEffect, ptr %1027, i32 0, i32 5
  %1029 = load ptr, ptr %1028, align 8, !tbaa !42
  %1030 = load ptr, ptr %6, align 8, !tbaa !5
  %1031 = getelementptr inbounds %struct._NormEffect, ptr %1030, i32 0, i32 6
  %1032 = load i32, ptr %1031, align 8, !tbaa !45
  %1033 = add nsw i32 %1032, 1
  store i32 %1033, ptr %1031, align 8, !tbaa !45
  %1034 = sext i32 %1032 to i64
  %1035 = getelementptr inbounds %struct._Fact, ptr %1029, i64 %1034
  store ptr %1035, ptr %17, align 8, !tbaa !5
  br label %1036

1036:                                             ; preds = %1026, %1016
  %1037 = load ptr, ptr %15, align 8, !tbaa !5
  %1038 = getelementptr inbounds %struct._Literal, ptr %1037, i32 0, i32 1
  %1039 = getelementptr inbounds %struct._Fact, ptr %1038, i32 0, i32 0
  %1040 = load i32, ptr %1039, align 4, !tbaa !46
  %1041 = load ptr, ptr %17, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct._Fact, ptr %1041, i32 0, i32 0
  store i32 %1040, ptr %1042, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %1043

1043:                                             ; preds = %1065, %1036
  %1044 = load i32, ptr %10, align 4, !tbaa !17
  %1045 = load ptr, ptr %17, align 8, !tbaa !5
  %1046 = getelementptr inbounds %struct._Fact, ptr %1045, i32 0, i32 0
  %1047 = load i32, ptr %1046, align 4, !tbaa !28
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1048
  %1050 = load i32, ptr %1049, align 4, !tbaa !17
  %1051 = icmp slt i32 %1044, %1050
  br i1 %1051, label %1052, label %1068

1052:                                             ; preds = %1043
  %1053 = load ptr, ptr %15, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct._Literal, ptr %1053, i32 0, i32 1
  %1055 = getelementptr inbounds %struct._Fact, ptr %1054, i32 0, i32 1
  %1056 = load i32, ptr %10, align 4, !tbaa !17
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds [5 x i32], ptr %1055, i64 0, i64 %1057
  %1059 = load i32, ptr %1058, align 4, !tbaa !17
  %1060 = load ptr, ptr %17, align 8, !tbaa !5
  %1061 = getelementptr inbounds %struct._Fact, ptr %1060, i32 0, i32 1
  %1062 = load i32, ptr %10, align 4, !tbaa !17
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds [5 x i32], ptr %1061, i64 0, i64 %1063
  store i32 %1059, ptr %1064, align 4, !tbaa !17
  br label %1065

1065:                                             ; preds = %1052
  %1066 = load i32, ptr %10, align 4, !tbaa !17
  %1067 = add nsw i32 %1066, 1
  store i32 %1067, ptr %10, align 4, !tbaa !17
  br label %1043, !llvm.loop !80

1068:                                             ; preds = %1043
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load ptr, ptr %15, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct._Literal, ptr %1070, i32 0, i32 2
  %1072 = load ptr, ptr %1071, align 8, !tbaa !40
  store ptr %1072, ptr %15, align 8, !tbaa !5
  br label %1008, !llvm.loop !81

1073:                                             ; preds = %1008
  store i32 0, ptr %12, align 4, !tbaa !17
  %1074 = load ptr, ptr %5, align 8, !tbaa !5
  %1075 = getelementptr inbounds %struct._Effect, ptr %1074, i32 0, i32 5
  %1076 = load ptr, ptr %1075, align 8, !tbaa !49
  store ptr %1076, ptr %16, align 8, !tbaa !5
  br label %1077

1077:                                             ; preds = %1083, %1073
  %1078 = load ptr, ptr %16, align 8, !tbaa !5
  %1079 = icmp ne ptr %1078, null
  br i1 %1079, label %1080, label %1087

1080:                                             ; preds = %1077
  %1081 = load i32, ptr %12, align 4, !tbaa !17
  %1082 = add nsw i32 %1081, 1
  store i32 %1082, ptr %12, align 4, !tbaa !17
  br label %1083

1083:                                             ; preds = %1080
  %1084 = load ptr, ptr %16, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct._NumericEffect, ptr %1084, i32 0, i32 3
  %1086 = load ptr, ptr %1085, align 8, !tbaa !50
  store ptr %1086, ptr %16, align 8, !tbaa !5
  br label %1077, !llvm.loop !82

1087:                                             ; preds = %1077
  %1088 = load i32, ptr %12, align 4, !tbaa !17
  %1089 = sext i32 %1088 to i64
  %1090 = call noalias ptr @calloc(i64 noundef %1089, i64 noundef 4) #6
  %1091 = load ptr, ptr %6, align 8, !tbaa !5
  %1092 = getelementptr inbounds %struct._NormEffect, ptr %1091, i32 0, i32 13
  store ptr %1090, ptr %1092, align 8, !tbaa !54
  %1093 = load i32, ptr %12, align 4, !tbaa !17
  %1094 = sext i32 %1093 to i64
  %1095 = call noalias ptr @calloc(i64 noundef %1094, i64 noundef 24) #6
  %1096 = load ptr, ptr %6, align 8, !tbaa !5
  %1097 = getelementptr inbounds %struct._NormEffect, ptr %1096, i32 0, i32 14
  store ptr %1095, ptr %1097, align 8, !tbaa !55
  %1098 = load i32, ptr %12, align 4, !tbaa !17
  %1099 = sext i32 %1098 to i64
  %1100 = call noalias ptr @calloc(i64 noundef %1099, i64 noundef 8) #6
  %1101 = load ptr, ptr %6, align 8, !tbaa !5
  %1102 = getelementptr inbounds %struct._NormEffect, ptr %1101, i32 0, i32 15
  store ptr %1100, ptr %1102, align 8, !tbaa !56
  %1103 = load ptr, ptr %5, align 8, !tbaa !5
  %1104 = getelementptr inbounds %struct._Effect, ptr %1103, i32 0, i32 5
  %1105 = load ptr, ptr %1104, align 8, !tbaa !49
  store ptr %1105, ptr %16, align 8, !tbaa !5
  br label %1106

1106:                                             ; preds = %1177, %1087
  %1107 = load ptr, ptr %16, align 8, !tbaa !5
  %1108 = icmp ne ptr %1107, null
  br i1 %1108, label %1109, label %1181

1109:                                             ; preds = %1106
  %1110 = load ptr, ptr %16, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct._NumericEffect, ptr %1110, i32 0, i32 1
  %1112 = load i32, ptr %1111, align 8, !tbaa !57
  %1113 = load ptr, ptr %6, align 8, !tbaa !5
  %1114 = getelementptr inbounds %struct._NormEffect, ptr %1113, i32 0, i32 13
  %1115 = load ptr, ptr %1114, align 8, !tbaa !54
  %1116 = load ptr, ptr %6, align 8, !tbaa !5
  %1117 = getelementptr inbounds %struct._NormEffect, ptr %1116, i32 0, i32 16
  %1118 = load i32, ptr %1117, align 8, !tbaa !58
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds i32, ptr %1115, i64 %1119
  store i32 %1112, ptr %1120, align 4, !tbaa !17
  %1121 = load ptr, ptr %6, align 8, !tbaa !5
  %1122 = getelementptr inbounds %struct._NormEffect, ptr %1121, i32 0, i32 14
  %1123 = load ptr, ptr %1122, align 8, !tbaa !55
  %1124 = load ptr, ptr %6, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct._NormEffect, ptr %1124, i32 0, i32 16
  %1126 = load i32, ptr %1125, align 8, !tbaa !58
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds %struct._Fluent, ptr %1123, i64 %1127
  store ptr %1128, ptr %18, align 8, !tbaa !5
  %1129 = load ptr, ptr %16, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct._NumericEffect, ptr %1129, i32 0, i32 0
  %1131 = getelementptr inbounds %struct._Fluent, ptr %1130, i32 0, i32 0
  %1132 = load i32, ptr %1131, align 8, !tbaa !59
  %1133 = load ptr, ptr %18, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct._Fluent, ptr %1133, i32 0, i32 0
  store i32 %1132, ptr %1134, align 4, !tbaa !60
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %1135

1135:                                             ; preds = %1157, %1109
  %1136 = load i32, ptr %10, align 4, !tbaa !17
  %1137 = load ptr, ptr %18, align 8, !tbaa !5
  %1138 = getelementptr inbounds %struct._Fluent, ptr %1137, i32 0, i32 0
  %1139 = load i32, ptr %1138, align 4, !tbaa !60
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %1140
  %1142 = load i32, ptr %1141, align 4, !tbaa !17
  %1143 = icmp slt i32 %1136, %1142
  br i1 %1143, label %1144, label %1160

1144:                                             ; preds = %1135
  %1145 = load ptr, ptr %16, align 8, !tbaa !5
  %1146 = getelementptr inbounds %struct._NumericEffect, ptr %1145, i32 0, i32 0
  %1147 = getelementptr inbounds %struct._Fluent, ptr %1146, i32 0, i32 1
  %1148 = load i32, ptr %10, align 4, !tbaa !17
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds [5 x i32], ptr %1147, i64 0, i64 %1149
  %1151 = load i32, ptr %1150, align 4, !tbaa !17
  %1152 = load ptr, ptr %18, align 8, !tbaa !5
  %1153 = getelementptr inbounds %struct._Fluent, ptr %1152, i32 0, i32 1
  %1154 = load i32, ptr %10, align 4, !tbaa !17
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds [5 x i32], ptr %1153, i64 0, i64 %1155
  store i32 %1151, ptr %1156, align 4, !tbaa !17
  br label %1157

1157:                                             ; preds = %1144
  %1158 = load i32, ptr %10, align 4, !tbaa !17
  %1159 = add nsw i32 %1158, 1
  store i32 %1159, ptr %10, align 4, !tbaa !17
  br label %1135, !llvm.loop !83

1160:                                             ; preds = %1135
  %1161 = load ptr, ptr %16, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct._NumericEffect, ptr %1161, i32 0, i32 2
  %1163 = load ptr, ptr %1162, align 8, !tbaa !62
  %1164 = call ptr @copy_Exp(ptr noundef %1163)
  %1165 = load ptr, ptr %6, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct._NormEffect, ptr %1165, i32 0, i32 15
  %1167 = load ptr, ptr %1166, align 8, !tbaa !56
  %1168 = load ptr, ptr %6, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct._NormEffect, ptr %1168, i32 0, i32 16
  %1170 = load i32, ptr %1169, align 8, !tbaa !58
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds ptr, ptr %1167, i64 %1171
  store ptr %1164, ptr %1172, align 8, !tbaa !5
  %1173 = load ptr, ptr %6, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct._NormEffect, ptr %1173, i32 0, i32 16
  %1175 = load i32, ptr %1174, align 8, !tbaa !58
  %1176 = add nsw i32 %1175, 1
  store i32 %1176, ptr %1174, align 8, !tbaa !58
  br label %1177

1177:                                             ; preds = %1160
  %1178 = load ptr, ptr %16, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct._NumericEffect, ptr %1178, i32 0, i32 3
  %1180 = load ptr, ptr %1179, align 8, !tbaa !50
  store ptr %1180, ptr %16, align 8, !tbaa !5
  br label %1106, !llvm.loop !84

1181:                                             ; preds = %1106
  %1182 = load ptr, ptr %3, align 8, !tbaa !5
  %1183 = load ptr, ptr %1182, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct._NormOperator, ptr %1183, i32 0, i32 13
  %1185 = load ptr, ptr %1184, align 8, !tbaa !64
  %1186 = load ptr, ptr %6, align 8, !tbaa !5
  %1187 = getelementptr inbounds %struct._NormEffect, ptr %1186, i32 0, i32 18
  store ptr %1185, ptr %1187, align 8, !tbaa !66
  %1188 = load ptr, ptr %3, align 8, !tbaa !5
  %1189 = load ptr, ptr %1188, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct._NormOperator, ptr %1189, i32 0, i32 13
  %1191 = load ptr, ptr %1190, align 8, !tbaa !64
  %1192 = icmp ne ptr %1191, null
  br i1 %1192, label %1193, label %1200

1193:                                             ; preds = %1181
  %1194 = load ptr, ptr %6, align 8, !tbaa !5
  %1195 = load ptr, ptr %3, align 8, !tbaa !5
  %1196 = load ptr, ptr %1195, align 8, !tbaa !5
  %1197 = getelementptr inbounds %struct._NormOperator, ptr %1196, i32 0, i32 13
  %1198 = load ptr, ptr %1197, align 8, !tbaa !64
  %1199 = getelementptr inbounds %struct._NormEffect, ptr %1198, i32 0, i32 17
  store ptr %1194, ptr %1199, align 8, !tbaa !67
  br label %1200

1200:                                             ; preds = %1193, %1181
  %1201 = load ptr, ptr %6, align 8, !tbaa !5
  %1202 = load ptr, ptr %3, align 8, !tbaa !5
  %1203 = load ptr, ptr %1202, align 8, !tbaa !5
  %1204 = getelementptr inbounds %struct._NormOperator, ptr %1203, i32 0, i32 13
  store ptr %1201, ptr %1204, align 8, !tbaa !64
  br label %1713

1205:                                             ; preds = %25
  %1206 = load ptr, ptr %5, align 8, !tbaa !5
  %1207 = call ptr @new_NormEffect1(ptr noundef %1206)
  store ptr %1207, ptr %6, align 8, !tbaa !5
  %1208 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 4) #6
  %1209 = load ptr, ptr %6, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct._NormEffect, ptr %1209, i32 0, i32 9
  store ptr %1208, ptr %1210, align 8, !tbaa !23
  %1211 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %1212 = load ptr, ptr %6, align 8, !tbaa !5
  %1213 = getelementptr inbounds %struct._NormEffect, ptr %1212, i32 0, i32 10
  store ptr %1211, ptr %1213, align 8, !tbaa !24
  %1214 = call noalias ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %1215 = load ptr, ptr %6, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct._NormEffect, ptr %1215, i32 0, i32 11
  store ptr %1214, ptr %1216, align 8, !tbaa !25
  %1217 = load ptr, ptr %7, align 8, !tbaa !5
  %1218 = getelementptr inbounds %struct._WffNode, ptr %1217, i32 0, i32 10
  %1219 = load i32, ptr %1218, align 8, !tbaa !31
  %1220 = load ptr, ptr %6, align 8, !tbaa !5
  %1221 = getelementptr inbounds %struct._NormEffect, ptr %1220, i32 0, i32 9
  %1222 = load ptr, ptr %1221, align 8, !tbaa !23
  %1223 = getelementptr inbounds i32, ptr %1222, i64 0
  store i32 %1219, ptr %1223, align 4, !tbaa !17
  %1224 = load ptr, ptr %7, align 8, !tbaa !5
  %1225 = getelementptr inbounds %struct._WffNode, ptr %1224, i32 0, i32 11
  %1226 = load ptr, ptr %1225, align 8, !tbaa !33
  %1227 = call ptr @copy_Exp(ptr noundef %1226)
  %1228 = load ptr, ptr %6, align 8, !tbaa !5
  %1229 = getelementptr inbounds %struct._NormEffect, ptr %1228, i32 0, i32 10
  %1230 = load ptr, ptr %1229, align 8, !tbaa !24
  %1231 = getelementptr inbounds ptr, ptr %1230, i64 0
  store ptr %1227, ptr %1231, align 8, !tbaa !5
  %1232 = load ptr, ptr %7, align 8, !tbaa !5
  %1233 = getelementptr inbounds %struct._WffNode, ptr %1232, i32 0, i32 12
  %1234 = load ptr, ptr %1233, align 8, !tbaa !34
  %1235 = call ptr @copy_Exp(ptr noundef %1234)
  %1236 = load ptr, ptr %6, align 8, !tbaa !5
  %1237 = getelementptr inbounds %struct._NormEffect, ptr %1236, i32 0, i32 11
  %1238 = load ptr, ptr %1237, align 8, !tbaa !25
  %1239 = getelementptr inbounds ptr, ptr %1238, i64 0
  store ptr %1235, ptr %1239, align 8, !tbaa !5
  %1240 = load ptr, ptr %6, align 8, !tbaa !5
  %1241 = getelementptr inbounds %struct._NormEffect, ptr %1240, i32 0, i32 12
  store i32 1, ptr %1241, align 8, !tbaa !32
  store i32 0, ptr %12, align 4, !tbaa !17
  store i32 0, ptr %13, align 4, !tbaa !17
  %1242 = load ptr, ptr %5, align 8, !tbaa !5
  %1243 = getelementptr inbounds %struct._Effect, ptr %1242, i32 0, i32 4
  %1244 = load ptr, ptr %1243, align 8, !tbaa !37
  store ptr %1244, ptr %15, align 8, !tbaa !5
  br label %1245

1245:                                             ; preds = %1260, %1205
  %1246 = load ptr, ptr %15, align 8, !tbaa !5
  %1247 = icmp ne ptr %1246, null
  br i1 %1247, label %1248, label %1264

1248:                                             ; preds = %1245
  %1249 = load ptr, ptr %15, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct._Literal, ptr %1249, i32 0, i32 0
  %1251 = load i8, ptr %1250, align 8, !tbaa !38
  %1252 = icmp ne i8 %1251, 0
  br i1 %1252, label %1253, label %1256

1253:                                             ; preds = %1248
  %1254 = load i32, ptr %13, align 4, !tbaa !17
  %1255 = add nsw i32 %1254, 1
  store i32 %1255, ptr %13, align 4, !tbaa !17
  br label %1259

1256:                                             ; preds = %1248
  %1257 = load i32, ptr %12, align 4, !tbaa !17
  %1258 = add nsw i32 %1257, 1
  store i32 %1258, ptr %12, align 4, !tbaa !17
  br label %1259

1259:                                             ; preds = %1256, %1253
  br label %1260

1260:                                             ; preds = %1259
  %1261 = load ptr, ptr %15, align 8, !tbaa !5
  %1262 = getelementptr inbounds %struct._Literal, ptr %1261, i32 0, i32 2
  %1263 = load ptr, ptr %1262, align 8, !tbaa !40
  store ptr %1263, ptr %15, align 8, !tbaa !5
  br label %1245, !llvm.loop !85

1264:                                             ; preds = %1245
  %1265 = load i32, ptr %12, align 4, !tbaa !17
  %1266 = sext i32 %1265 to i64
  %1267 = call noalias ptr @calloc(i64 noundef %1266, i64 noundef 24) #6
  %1268 = load ptr, ptr %6, align 8, !tbaa !5
  %1269 = getelementptr inbounds %struct._NormEffect, ptr %1268, i32 0, i32 5
  store ptr %1267, ptr %1269, align 8, !tbaa !42
  %1270 = load i32, ptr %13, align 4, !tbaa !17
  %1271 = sext i32 %1270 to i64
  %1272 = call noalias ptr @calloc(i64 noundef %1271, i64 noundef 24) #6
  %1273 = load ptr, ptr %6, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct._NormEffect, ptr %1273, i32 0, i32 7
  store ptr %1272, ptr %1274, align 8, !tbaa !43
  %1275 = load ptr, ptr %5, align 8, !tbaa !5
  %1276 = getelementptr inbounds %struct._Effect, ptr %1275, i32 0, i32 4
  %1277 = load ptr, ptr %1276, align 8, !tbaa !37
  store ptr %1277, ptr %15, align 8, !tbaa !5
  br label %1278

1278:                                             ; preds = %1339, %1264
  %1279 = load ptr, ptr %15, align 8, !tbaa !5
  %1280 = icmp ne ptr %1279, null
  br i1 %1280, label %1281, label %1343

1281:                                             ; preds = %1278
  %1282 = load ptr, ptr %15, align 8, !tbaa !5
  %1283 = getelementptr inbounds %struct._Literal, ptr %1282, i32 0, i32 0
  %1284 = load i8, ptr %1283, align 8, !tbaa !38
  %1285 = icmp ne i8 %1284, 0
  br i1 %1285, label %1286, label %1296

1286:                                             ; preds = %1281
  %1287 = load ptr, ptr %6, align 8, !tbaa !5
  %1288 = getelementptr inbounds %struct._NormEffect, ptr %1287, i32 0, i32 7
  %1289 = load ptr, ptr %1288, align 8, !tbaa !43
  %1290 = load ptr, ptr %6, align 8, !tbaa !5
  %1291 = getelementptr inbounds %struct._NormEffect, ptr %1290, i32 0, i32 8
  %1292 = load i32, ptr %1291, align 8, !tbaa !44
  %1293 = add nsw i32 %1292, 1
  store i32 %1293, ptr %1291, align 8, !tbaa !44
  %1294 = sext i32 %1292 to i64
  %1295 = getelementptr inbounds %struct._Fact, ptr %1289, i64 %1294
  store ptr %1295, ptr %17, align 8, !tbaa !5
  br label %1306

1296:                                             ; preds = %1281
  %1297 = load ptr, ptr %6, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct._NormEffect, ptr %1297, i32 0, i32 5
  %1299 = load ptr, ptr %1298, align 8, !tbaa !42
  %1300 = load ptr, ptr %6, align 8, !tbaa !5
  %1301 = getelementptr inbounds %struct._NormEffect, ptr %1300, i32 0, i32 6
  %1302 = load i32, ptr %1301, align 8, !tbaa !45
  %1303 = add nsw i32 %1302, 1
  store i32 %1303, ptr %1301, align 8, !tbaa !45
  %1304 = sext i32 %1302 to i64
  %1305 = getelementptr inbounds %struct._Fact, ptr %1299, i64 %1304
  store ptr %1305, ptr %17, align 8, !tbaa !5
  br label %1306

1306:                                             ; preds = %1296, %1286
  %1307 = load ptr, ptr %15, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct._Literal, ptr %1307, i32 0, i32 1
  %1309 = getelementptr inbounds %struct._Fact, ptr %1308, i32 0, i32 0
  %1310 = load i32, ptr %1309, align 4, !tbaa !46
  %1311 = load ptr, ptr %17, align 8, !tbaa !5
  %1312 = getelementptr inbounds %struct._Fact, ptr %1311, i32 0, i32 0
  store i32 %1310, ptr %1312, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %1313

1313:                                             ; preds = %1335, %1306
  %1314 = load i32, ptr %10, align 4, !tbaa !17
  %1315 = load ptr, ptr %17, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct._Fact, ptr %1315, i32 0, i32 0
  %1317 = load i32, ptr %1316, align 4, !tbaa !28
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1318
  %1320 = load i32, ptr %1319, align 4, !tbaa !17
  %1321 = icmp slt i32 %1314, %1320
  br i1 %1321, label %1322, label %1338

1322:                                             ; preds = %1313
  %1323 = load ptr, ptr %15, align 8, !tbaa !5
  %1324 = getelementptr inbounds %struct._Literal, ptr %1323, i32 0, i32 1
  %1325 = getelementptr inbounds %struct._Fact, ptr %1324, i32 0, i32 1
  %1326 = load i32, ptr %10, align 4, !tbaa !17
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds [5 x i32], ptr %1325, i64 0, i64 %1327
  %1329 = load i32, ptr %1328, align 4, !tbaa !17
  %1330 = load ptr, ptr %17, align 8, !tbaa !5
  %1331 = getelementptr inbounds %struct._Fact, ptr %1330, i32 0, i32 1
  %1332 = load i32, ptr %10, align 4, !tbaa !17
  %1333 = sext i32 %1332 to i64
  %1334 = getelementptr inbounds [5 x i32], ptr %1331, i64 0, i64 %1333
  store i32 %1329, ptr %1334, align 4, !tbaa !17
  br label %1335

1335:                                             ; preds = %1322
  %1336 = load i32, ptr %10, align 4, !tbaa !17
  %1337 = add nsw i32 %1336, 1
  store i32 %1337, ptr %10, align 4, !tbaa !17
  br label %1313, !llvm.loop !86

1338:                                             ; preds = %1313
  br label %1339

1339:                                             ; preds = %1338
  %1340 = load ptr, ptr %15, align 8, !tbaa !5
  %1341 = getelementptr inbounds %struct._Literal, ptr %1340, i32 0, i32 2
  %1342 = load ptr, ptr %1341, align 8, !tbaa !40
  store ptr %1342, ptr %15, align 8, !tbaa !5
  br label %1278, !llvm.loop !87

1343:                                             ; preds = %1278
  store i32 0, ptr %12, align 4, !tbaa !17
  %1344 = load ptr, ptr %5, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct._Effect, ptr %1344, i32 0, i32 5
  %1346 = load ptr, ptr %1345, align 8, !tbaa !49
  store ptr %1346, ptr %16, align 8, !tbaa !5
  br label %1347

1347:                                             ; preds = %1353, %1343
  %1348 = load ptr, ptr %16, align 8, !tbaa !5
  %1349 = icmp ne ptr %1348, null
  br i1 %1349, label %1350, label %1357

1350:                                             ; preds = %1347
  %1351 = load i32, ptr %12, align 4, !tbaa !17
  %1352 = add nsw i32 %1351, 1
  store i32 %1352, ptr %12, align 4, !tbaa !17
  br label %1353

1353:                                             ; preds = %1350
  %1354 = load ptr, ptr %16, align 8, !tbaa !5
  %1355 = getelementptr inbounds %struct._NumericEffect, ptr %1354, i32 0, i32 3
  %1356 = load ptr, ptr %1355, align 8, !tbaa !50
  store ptr %1356, ptr %16, align 8, !tbaa !5
  br label %1347, !llvm.loop !88

1357:                                             ; preds = %1347
  %1358 = load i32, ptr %12, align 4, !tbaa !17
  %1359 = sext i32 %1358 to i64
  %1360 = call noalias ptr @calloc(i64 noundef %1359, i64 noundef 4) #6
  %1361 = load ptr, ptr %6, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct._NormEffect, ptr %1361, i32 0, i32 13
  store ptr %1360, ptr %1362, align 8, !tbaa !54
  %1363 = load i32, ptr %12, align 4, !tbaa !17
  %1364 = sext i32 %1363 to i64
  %1365 = call noalias ptr @calloc(i64 noundef %1364, i64 noundef 24) #6
  %1366 = load ptr, ptr %6, align 8, !tbaa !5
  %1367 = getelementptr inbounds %struct._NormEffect, ptr %1366, i32 0, i32 14
  store ptr %1365, ptr %1367, align 8, !tbaa !55
  %1368 = load i32, ptr %12, align 4, !tbaa !17
  %1369 = sext i32 %1368 to i64
  %1370 = call noalias ptr @calloc(i64 noundef %1369, i64 noundef 8) #6
  %1371 = load ptr, ptr %6, align 8, !tbaa !5
  %1372 = getelementptr inbounds %struct._NormEffect, ptr %1371, i32 0, i32 15
  store ptr %1370, ptr %1372, align 8, !tbaa !56
  %1373 = load ptr, ptr %5, align 8, !tbaa !5
  %1374 = getelementptr inbounds %struct._Effect, ptr %1373, i32 0, i32 5
  %1375 = load ptr, ptr %1374, align 8, !tbaa !49
  store ptr %1375, ptr %16, align 8, !tbaa !5
  br label %1376

1376:                                             ; preds = %1447, %1357
  %1377 = load ptr, ptr %16, align 8, !tbaa !5
  %1378 = icmp ne ptr %1377, null
  br i1 %1378, label %1379, label %1451

1379:                                             ; preds = %1376
  %1380 = load ptr, ptr %16, align 8, !tbaa !5
  %1381 = getelementptr inbounds %struct._NumericEffect, ptr %1380, i32 0, i32 1
  %1382 = load i32, ptr %1381, align 8, !tbaa !57
  %1383 = load ptr, ptr %6, align 8, !tbaa !5
  %1384 = getelementptr inbounds %struct._NormEffect, ptr %1383, i32 0, i32 13
  %1385 = load ptr, ptr %1384, align 8, !tbaa !54
  %1386 = load ptr, ptr %6, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct._NormEffect, ptr %1386, i32 0, i32 16
  %1388 = load i32, ptr %1387, align 8, !tbaa !58
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds i32, ptr %1385, i64 %1389
  store i32 %1382, ptr %1390, align 4, !tbaa !17
  %1391 = load ptr, ptr %6, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct._NormEffect, ptr %1391, i32 0, i32 14
  %1393 = load ptr, ptr %1392, align 8, !tbaa !55
  %1394 = load ptr, ptr %6, align 8, !tbaa !5
  %1395 = getelementptr inbounds %struct._NormEffect, ptr %1394, i32 0, i32 16
  %1396 = load i32, ptr %1395, align 8, !tbaa !58
  %1397 = sext i32 %1396 to i64
  %1398 = getelementptr inbounds %struct._Fluent, ptr %1393, i64 %1397
  store ptr %1398, ptr %18, align 8, !tbaa !5
  %1399 = load ptr, ptr %16, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct._NumericEffect, ptr %1399, i32 0, i32 0
  %1401 = getelementptr inbounds %struct._Fluent, ptr %1400, i32 0, i32 0
  %1402 = load i32, ptr %1401, align 8, !tbaa !59
  %1403 = load ptr, ptr %18, align 8, !tbaa !5
  %1404 = getelementptr inbounds %struct._Fluent, ptr %1403, i32 0, i32 0
  store i32 %1402, ptr %1404, align 4, !tbaa !60
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %1405

1405:                                             ; preds = %1427, %1379
  %1406 = load i32, ptr %10, align 4, !tbaa !17
  %1407 = load ptr, ptr %18, align 8, !tbaa !5
  %1408 = getelementptr inbounds %struct._Fluent, ptr %1407, i32 0, i32 0
  %1409 = load i32, ptr %1408, align 4, !tbaa !60
  %1410 = sext i32 %1409 to i64
  %1411 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %1410
  %1412 = load i32, ptr %1411, align 4, !tbaa !17
  %1413 = icmp slt i32 %1406, %1412
  br i1 %1413, label %1414, label %1430

1414:                                             ; preds = %1405
  %1415 = load ptr, ptr %16, align 8, !tbaa !5
  %1416 = getelementptr inbounds %struct._NumericEffect, ptr %1415, i32 0, i32 0
  %1417 = getelementptr inbounds %struct._Fluent, ptr %1416, i32 0, i32 1
  %1418 = load i32, ptr %10, align 4, !tbaa !17
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds [5 x i32], ptr %1417, i64 0, i64 %1419
  %1421 = load i32, ptr %1420, align 4, !tbaa !17
  %1422 = load ptr, ptr %18, align 8, !tbaa !5
  %1423 = getelementptr inbounds %struct._Fluent, ptr %1422, i32 0, i32 1
  %1424 = load i32, ptr %10, align 4, !tbaa !17
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds [5 x i32], ptr %1423, i64 0, i64 %1425
  store i32 %1421, ptr %1426, align 4, !tbaa !17
  br label %1427

1427:                                             ; preds = %1414
  %1428 = load i32, ptr %10, align 4, !tbaa !17
  %1429 = add nsw i32 %1428, 1
  store i32 %1429, ptr %10, align 4, !tbaa !17
  br label %1405, !llvm.loop !89

1430:                                             ; preds = %1405
  %1431 = load ptr, ptr %16, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct._NumericEffect, ptr %1431, i32 0, i32 2
  %1433 = load ptr, ptr %1432, align 8, !tbaa !62
  %1434 = call ptr @copy_Exp(ptr noundef %1433)
  %1435 = load ptr, ptr %6, align 8, !tbaa !5
  %1436 = getelementptr inbounds %struct._NormEffect, ptr %1435, i32 0, i32 15
  %1437 = load ptr, ptr %1436, align 8, !tbaa !56
  %1438 = load ptr, ptr %6, align 8, !tbaa !5
  %1439 = getelementptr inbounds %struct._NormEffect, ptr %1438, i32 0, i32 16
  %1440 = load i32, ptr %1439, align 8, !tbaa !58
  %1441 = sext i32 %1440 to i64
  %1442 = getelementptr inbounds ptr, ptr %1437, i64 %1441
  store ptr %1434, ptr %1442, align 8, !tbaa !5
  %1443 = load ptr, ptr %6, align 8, !tbaa !5
  %1444 = getelementptr inbounds %struct._NormEffect, ptr %1443, i32 0, i32 16
  %1445 = load i32, ptr %1444, align 8, !tbaa !58
  %1446 = add nsw i32 %1445, 1
  store i32 %1446, ptr %1444, align 8, !tbaa !58
  br label %1447

1447:                                             ; preds = %1430
  %1448 = load ptr, ptr %16, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct._NumericEffect, ptr %1448, i32 0, i32 3
  %1450 = load ptr, ptr %1449, align 8, !tbaa !50
  store ptr %1450, ptr %16, align 8, !tbaa !5
  br label %1376, !llvm.loop !90

1451:                                             ; preds = %1376
  %1452 = load ptr, ptr %3, align 8, !tbaa !5
  %1453 = load ptr, ptr %1452, align 8, !tbaa !5
  %1454 = getelementptr inbounds %struct._NormOperator, ptr %1453, i32 0, i32 13
  %1455 = load ptr, ptr %1454, align 8, !tbaa !64
  %1456 = load ptr, ptr %6, align 8, !tbaa !5
  %1457 = getelementptr inbounds %struct._NormEffect, ptr %1456, i32 0, i32 18
  store ptr %1455, ptr %1457, align 8, !tbaa !66
  %1458 = load ptr, ptr %3, align 8, !tbaa !5
  %1459 = load ptr, ptr %1458, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct._NormOperator, ptr %1459, i32 0, i32 13
  %1461 = load ptr, ptr %1460, align 8, !tbaa !64
  %1462 = icmp ne ptr %1461, null
  br i1 %1462, label %1463, label %1470

1463:                                             ; preds = %1451
  %1464 = load ptr, ptr %6, align 8, !tbaa !5
  %1465 = load ptr, ptr %3, align 8, !tbaa !5
  %1466 = load ptr, ptr %1465, align 8, !tbaa !5
  %1467 = getelementptr inbounds %struct._NormOperator, ptr %1466, i32 0, i32 13
  %1468 = load ptr, ptr %1467, align 8, !tbaa !64
  %1469 = getelementptr inbounds %struct._NormEffect, ptr %1468, i32 0, i32 17
  store ptr %1464, ptr %1469, align 8, !tbaa !67
  br label %1470

1470:                                             ; preds = %1463, %1451
  %1471 = load ptr, ptr %6, align 8, !tbaa !5
  %1472 = load ptr, ptr %3, align 8, !tbaa !5
  %1473 = load ptr, ptr %1472, align 8, !tbaa !5
  %1474 = getelementptr inbounds %struct._NormOperator, ptr %1473, i32 0, i32 13
  store ptr %1471, ptr %1474, align 8, !tbaa !64
  br label %1713

1475:                                             ; preds = %25
  %1476 = load ptr, ptr %5, align 8, !tbaa !5
  %1477 = call ptr @new_NormEffect1(ptr noundef %1476)
  store ptr %1477, ptr %6, align 8, !tbaa !5
  store i32 0, ptr %12, align 4, !tbaa !17
  store i32 0, ptr %13, align 4, !tbaa !17
  %1478 = load ptr, ptr %5, align 8, !tbaa !5
  %1479 = getelementptr inbounds %struct._Effect, ptr %1478, i32 0, i32 4
  %1480 = load ptr, ptr %1479, align 8, !tbaa !37
  store ptr %1480, ptr %15, align 8, !tbaa !5
  br label %1481

1481:                                             ; preds = %1496, %1475
  %1482 = load ptr, ptr %15, align 8, !tbaa !5
  %1483 = icmp ne ptr %1482, null
  br i1 %1483, label %1484, label %1500

1484:                                             ; preds = %1481
  %1485 = load ptr, ptr %15, align 8, !tbaa !5
  %1486 = getelementptr inbounds %struct._Literal, ptr %1485, i32 0, i32 0
  %1487 = load i8, ptr %1486, align 8, !tbaa !38
  %1488 = icmp ne i8 %1487, 0
  br i1 %1488, label %1489, label %1492

1489:                                             ; preds = %1484
  %1490 = load i32, ptr %13, align 4, !tbaa !17
  %1491 = add nsw i32 %1490, 1
  store i32 %1491, ptr %13, align 4, !tbaa !17
  br label %1495

1492:                                             ; preds = %1484
  %1493 = load i32, ptr %12, align 4, !tbaa !17
  %1494 = add nsw i32 %1493, 1
  store i32 %1494, ptr %12, align 4, !tbaa !17
  br label %1495

1495:                                             ; preds = %1492, %1489
  br label %1496

1496:                                             ; preds = %1495
  %1497 = load ptr, ptr %15, align 8, !tbaa !5
  %1498 = getelementptr inbounds %struct._Literal, ptr %1497, i32 0, i32 2
  %1499 = load ptr, ptr %1498, align 8, !tbaa !40
  store ptr %1499, ptr %15, align 8, !tbaa !5
  br label %1481, !llvm.loop !91

1500:                                             ; preds = %1481
  %1501 = load i32, ptr %12, align 4, !tbaa !17
  %1502 = sext i32 %1501 to i64
  %1503 = call noalias ptr @calloc(i64 noundef %1502, i64 noundef 24) #6
  %1504 = load ptr, ptr %6, align 8, !tbaa !5
  %1505 = getelementptr inbounds %struct._NormEffect, ptr %1504, i32 0, i32 5
  store ptr %1503, ptr %1505, align 8, !tbaa !42
  %1506 = load i32, ptr %13, align 4, !tbaa !17
  %1507 = sext i32 %1506 to i64
  %1508 = call noalias ptr @calloc(i64 noundef %1507, i64 noundef 24) #6
  %1509 = load ptr, ptr %6, align 8, !tbaa !5
  %1510 = getelementptr inbounds %struct._NormEffect, ptr %1509, i32 0, i32 7
  store ptr %1508, ptr %1510, align 8, !tbaa !43
  %1511 = load ptr, ptr %5, align 8, !tbaa !5
  %1512 = getelementptr inbounds %struct._Effect, ptr %1511, i32 0, i32 4
  %1513 = load ptr, ptr %1512, align 8, !tbaa !37
  store ptr %1513, ptr %15, align 8, !tbaa !5
  br label %1514

1514:                                             ; preds = %1575, %1500
  %1515 = load ptr, ptr %15, align 8, !tbaa !5
  %1516 = icmp ne ptr %1515, null
  br i1 %1516, label %1517, label %1579

1517:                                             ; preds = %1514
  %1518 = load ptr, ptr %15, align 8, !tbaa !5
  %1519 = getelementptr inbounds %struct._Literal, ptr %1518, i32 0, i32 0
  %1520 = load i8, ptr %1519, align 8, !tbaa !38
  %1521 = icmp ne i8 %1520, 0
  br i1 %1521, label %1522, label %1532

1522:                                             ; preds = %1517
  %1523 = load ptr, ptr %6, align 8, !tbaa !5
  %1524 = getelementptr inbounds %struct._NormEffect, ptr %1523, i32 0, i32 7
  %1525 = load ptr, ptr %1524, align 8, !tbaa !43
  %1526 = load ptr, ptr %6, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct._NormEffect, ptr %1526, i32 0, i32 8
  %1528 = load i32, ptr %1527, align 8, !tbaa !44
  %1529 = add nsw i32 %1528, 1
  store i32 %1529, ptr %1527, align 8, !tbaa !44
  %1530 = sext i32 %1528 to i64
  %1531 = getelementptr inbounds %struct._Fact, ptr %1525, i64 %1530
  store ptr %1531, ptr %17, align 8, !tbaa !5
  br label %1542

1532:                                             ; preds = %1517
  %1533 = load ptr, ptr %6, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct._NormEffect, ptr %1533, i32 0, i32 5
  %1535 = load ptr, ptr %1534, align 8, !tbaa !42
  %1536 = load ptr, ptr %6, align 8, !tbaa !5
  %1537 = getelementptr inbounds %struct._NormEffect, ptr %1536, i32 0, i32 6
  %1538 = load i32, ptr %1537, align 8, !tbaa !45
  %1539 = add nsw i32 %1538, 1
  store i32 %1539, ptr %1537, align 8, !tbaa !45
  %1540 = sext i32 %1538 to i64
  %1541 = getelementptr inbounds %struct._Fact, ptr %1535, i64 %1540
  store ptr %1541, ptr %17, align 8, !tbaa !5
  br label %1542

1542:                                             ; preds = %1532, %1522
  %1543 = load ptr, ptr %15, align 8, !tbaa !5
  %1544 = getelementptr inbounds %struct._Literal, ptr %1543, i32 0, i32 1
  %1545 = getelementptr inbounds %struct._Fact, ptr %1544, i32 0, i32 0
  %1546 = load i32, ptr %1545, align 4, !tbaa !46
  %1547 = load ptr, ptr %17, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct._Fact, ptr %1547, i32 0, i32 0
  store i32 %1546, ptr %1548, align 4, !tbaa !28
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %1549

1549:                                             ; preds = %1571, %1542
  %1550 = load i32, ptr %10, align 4, !tbaa !17
  %1551 = load ptr, ptr %17, align 8, !tbaa !5
  %1552 = getelementptr inbounds %struct._Fact, ptr %1551, i32 0, i32 0
  %1553 = load i32, ptr %1552, align 4, !tbaa !28
  %1554 = sext i32 %1553 to i64
  %1555 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1554
  %1556 = load i32, ptr %1555, align 4, !tbaa !17
  %1557 = icmp slt i32 %1550, %1556
  br i1 %1557, label %1558, label %1574

1558:                                             ; preds = %1549
  %1559 = load ptr, ptr %15, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct._Literal, ptr %1559, i32 0, i32 1
  %1561 = getelementptr inbounds %struct._Fact, ptr %1560, i32 0, i32 1
  %1562 = load i32, ptr %10, align 4, !tbaa !17
  %1563 = sext i32 %1562 to i64
  %1564 = getelementptr inbounds [5 x i32], ptr %1561, i64 0, i64 %1563
  %1565 = load i32, ptr %1564, align 4, !tbaa !17
  %1566 = load ptr, ptr %17, align 8, !tbaa !5
  %1567 = getelementptr inbounds %struct._Fact, ptr %1566, i32 0, i32 1
  %1568 = load i32, ptr %10, align 4, !tbaa !17
  %1569 = sext i32 %1568 to i64
  %1570 = getelementptr inbounds [5 x i32], ptr %1567, i64 0, i64 %1569
  store i32 %1565, ptr %1570, align 4, !tbaa !17
  br label %1571

1571:                                             ; preds = %1558
  %1572 = load i32, ptr %10, align 4, !tbaa !17
  %1573 = add nsw i32 %1572, 1
  store i32 %1573, ptr %10, align 4, !tbaa !17
  br label %1549, !llvm.loop !92

1574:                                             ; preds = %1549
  br label %1575

1575:                                             ; preds = %1574
  %1576 = load ptr, ptr %15, align 8, !tbaa !5
  %1577 = getelementptr inbounds %struct._Literal, ptr %1576, i32 0, i32 2
  %1578 = load ptr, ptr %1577, align 8, !tbaa !40
  store ptr %1578, ptr %15, align 8, !tbaa !5
  br label %1514, !llvm.loop !93

1579:                                             ; preds = %1514
  store i32 0, ptr %12, align 4, !tbaa !17
  %1580 = load ptr, ptr %5, align 8, !tbaa !5
  %1581 = getelementptr inbounds %struct._Effect, ptr %1580, i32 0, i32 5
  %1582 = load ptr, ptr %1581, align 8, !tbaa !49
  store ptr %1582, ptr %16, align 8, !tbaa !5
  br label %1583

1583:                                             ; preds = %1589, %1579
  %1584 = load ptr, ptr %16, align 8, !tbaa !5
  %1585 = icmp ne ptr %1584, null
  br i1 %1585, label %1586, label %1593

1586:                                             ; preds = %1583
  %1587 = load i32, ptr %12, align 4, !tbaa !17
  %1588 = add nsw i32 %1587, 1
  store i32 %1588, ptr %12, align 4, !tbaa !17
  br label %1589

1589:                                             ; preds = %1586
  %1590 = load ptr, ptr %16, align 8, !tbaa !5
  %1591 = getelementptr inbounds %struct._NumericEffect, ptr %1590, i32 0, i32 3
  %1592 = load ptr, ptr %1591, align 8, !tbaa !50
  store ptr %1592, ptr %16, align 8, !tbaa !5
  br label %1583, !llvm.loop !94

1593:                                             ; preds = %1583
  %1594 = load i32, ptr %12, align 4, !tbaa !17
  %1595 = sext i32 %1594 to i64
  %1596 = call noalias ptr @calloc(i64 noundef %1595, i64 noundef 4) #6
  %1597 = load ptr, ptr %6, align 8, !tbaa !5
  %1598 = getelementptr inbounds %struct._NormEffect, ptr %1597, i32 0, i32 13
  store ptr %1596, ptr %1598, align 8, !tbaa !54
  %1599 = load i32, ptr %12, align 4, !tbaa !17
  %1600 = sext i32 %1599 to i64
  %1601 = call noalias ptr @calloc(i64 noundef %1600, i64 noundef 24) #6
  %1602 = load ptr, ptr %6, align 8, !tbaa !5
  %1603 = getelementptr inbounds %struct._NormEffect, ptr %1602, i32 0, i32 14
  store ptr %1601, ptr %1603, align 8, !tbaa !55
  %1604 = load i32, ptr %12, align 4, !tbaa !17
  %1605 = sext i32 %1604 to i64
  %1606 = call noalias ptr @calloc(i64 noundef %1605, i64 noundef 8) #6
  %1607 = load ptr, ptr %6, align 8, !tbaa !5
  %1608 = getelementptr inbounds %struct._NormEffect, ptr %1607, i32 0, i32 15
  store ptr %1606, ptr %1608, align 8, !tbaa !56
  %1609 = load ptr, ptr %5, align 8, !tbaa !5
  %1610 = getelementptr inbounds %struct._Effect, ptr %1609, i32 0, i32 5
  %1611 = load ptr, ptr %1610, align 8, !tbaa !49
  store ptr %1611, ptr %16, align 8, !tbaa !5
  br label %1612

1612:                                             ; preds = %1683, %1593
  %1613 = load ptr, ptr %16, align 8, !tbaa !5
  %1614 = icmp ne ptr %1613, null
  br i1 %1614, label %1615, label %1687

1615:                                             ; preds = %1612
  %1616 = load ptr, ptr %16, align 8, !tbaa !5
  %1617 = getelementptr inbounds %struct._NumericEffect, ptr %1616, i32 0, i32 1
  %1618 = load i32, ptr %1617, align 8, !tbaa !57
  %1619 = load ptr, ptr %6, align 8, !tbaa !5
  %1620 = getelementptr inbounds %struct._NormEffect, ptr %1619, i32 0, i32 13
  %1621 = load ptr, ptr %1620, align 8, !tbaa !54
  %1622 = load ptr, ptr %6, align 8, !tbaa !5
  %1623 = getelementptr inbounds %struct._NormEffect, ptr %1622, i32 0, i32 16
  %1624 = load i32, ptr %1623, align 8, !tbaa !58
  %1625 = sext i32 %1624 to i64
  %1626 = getelementptr inbounds i32, ptr %1621, i64 %1625
  store i32 %1618, ptr %1626, align 4, !tbaa !17
  %1627 = load ptr, ptr %6, align 8, !tbaa !5
  %1628 = getelementptr inbounds %struct._NormEffect, ptr %1627, i32 0, i32 14
  %1629 = load ptr, ptr %1628, align 8, !tbaa !55
  %1630 = load ptr, ptr %6, align 8, !tbaa !5
  %1631 = getelementptr inbounds %struct._NormEffect, ptr %1630, i32 0, i32 16
  %1632 = load i32, ptr %1631, align 8, !tbaa !58
  %1633 = sext i32 %1632 to i64
  %1634 = getelementptr inbounds %struct._Fluent, ptr %1629, i64 %1633
  store ptr %1634, ptr %18, align 8, !tbaa !5
  %1635 = load ptr, ptr %16, align 8, !tbaa !5
  %1636 = getelementptr inbounds %struct._NumericEffect, ptr %1635, i32 0, i32 0
  %1637 = getelementptr inbounds %struct._Fluent, ptr %1636, i32 0, i32 0
  %1638 = load i32, ptr %1637, align 8, !tbaa !59
  %1639 = load ptr, ptr %18, align 8, !tbaa !5
  %1640 = getelementptr inbounds %struct._Fluent, ptr %1639, i32 0, i32 0
  store i32 %1638, ptr %1640, align 4, !tbaa !60
  store i32 0, ptr %10, align 4, !tbaa !17
  br label %1641

1641:                                             ; preds = %1663, %1615
  %1642 = load i32, ptr %10, align 4, !tbaa !17
  %1643 = load ptr, ptr %18, align 8, !tbaa !5
  %1644 = getelementptr inbounds %struct._Fluent, ptr %1643, i32 0, i32 0
  %1645 = load i32, ptr %1644, align 4, !tbaa !60
  %1646 = sext i32 %1645 to i64
  %1647 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %1646
  %1648 = load i32, ptr %1647, align 4, !tbaa !17
  %1649 = icmp slt i32 %1642, %1648
  br i1 %1649, label %1650, label %1666

1650:                                             ; preds = %1641
  %1651 = load ptr, ptr %16, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct._NumericEffect, ptr %1651, i32 0, i32 0
  %1653 = getelementptr inbounds %struct._Fluent, ptr %1652, i32 0, i32 1
  %1654 = load i32, ptr %10, align 4, !tbaa !17
  %1655 = sext i32 %1654 to i64
  %1656 = getelementptr inbounds [5 x i32], ptr %1653, i64 0, i64 %1655
  %1657 = load i32, ptr %1656, align 4, !tbaa !17
  %1658 = load ptr, ptr %18, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct._Fluent, ptr %1658, i32 0, i32 1
  %1660 = load i32, ptr %10, align 4, !tbaa !17
  %1661 = sext i32 %1660 to i64
  %1662 = getelementptr inbounds [5 x i32], ptr %1659, i64 0, i64 %1661
  store i32 %1657, ptr %1662, align 4, !tbaa !17
  br label %1663

1663:                                             ; preds = %1650
  %1664 = load i32, ptr %10, align 4, !tbaa !17
  %1665 = add nsw i32 %1664, 1
  store i32 %1665, ptr %10, align 4, !tbaa !17
  br label %1641, !llvm.loop !95

1666:                                             ; preds = %1641
  %1667 = load ptr, ptr %16, align 8, !tbaa !5
  %1668 = getelementptr inbounds %struct._NumericEffect, ptr %1667, i32 0, i32 2
  %1669 = load ptr, ptr %1668, align 8, !tbaa !62
  %1670 = call ptr @copy_Exp(ptr noundef %1669)
  %1671 = load ptr, ptr %6, align 8, !tbaa !5
  %1672 = getelementptr inbounds %struct._NormEffect, ptr %1671, i32 0, i32 15
  %1673 = load ptr, ptr %1672, align 8, !tbaa !56
  %1674 = load ptr, ptr %6, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct._NormEffect, ptr %1674, i32 0, i32 16
  %1676 = load i32, ptr %1675, align 8, !tbaa !58
  %1677 = sext i32 %1676 to i64
  %1678 = getelementptr inbounds ptr, ptr %1673, i64 %1677
  store ptr %1670, ptr %1678, align 8, !tbaa !5
  %1679 = load ptr, ptr %6, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct._NormEffect, ptr %1679, i32 0, i32 16
  %1681 = load i32, ptr %1680, align 8, !tbaa !58
  %1682 = add nsw i32 %1681, 1
  store i32 %1682, ptr %1680, align 8, !tbaa !58
  br label %1683

1683:                                             ; preds = %1666
  %1684 = load ptr, ptr %16, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct._NumericEffect, ptr %1684, i32 0, i32 3
  %1686 = load ptr, ptr %1685, align 8, !tbaa !50
  store ptr %1686, ptr %16, align 8, !tbaa !5
  br label %1612, !llvm.loop !96

1687:                                             ; preds = %1612
  %1688 = load ptr, ptr %3, align 8, !tbaa !5
  %1689 = load ptr, ptr %1688, align 8, !tbaa !5
  %1690 = getelementptr inbounds %struct._NormOperator, ptr %1689, i32 0, i32 13
  %1691 = load ptr, ptr %1690, align 8, !tbaa !64
  %1692 = load ptr, ptr %6, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct._NormEffect, ptr %1692, i32 0, i32 18
  store ptr %1691, ptr %1693, align 8, !tbaa !66
  %1694 = load ptr, ptr %3, align 8, !tbaa !5
  %1695 = load ptr, ptr %1694, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct._NormOperator, ptr %1695, i32 0, i32 13
  %1697 = load ptr, ptr %1696, align 8, !tbaa !64
  %1698 = icmp ne ptr %1697, null
  br i1 %1698, label %1699, label %1706

1699:                                             ; preds = %1687
  %1700 = load ptr, ptr %6, align 8, !tbaa !5
  %1701 = load ptr, ptr %3, align 8, !tbaa !5
  %1702 = load ptr, ptr %1701, align 8, !tbaa !5
  %1703 = getelementptr inbounds %struct._NormOperator, ptr %1702, i32 0, i32 13
  %1704 = load ptr, ptr %1703, align 8, !tbaa !64
  %1705 = getelementptr inbounds %struct._NormEffect, ptr %1704, i32 0, i32 17
  store ptr %1700, ptr %1705, align 8, !tbaa !67
  br label %1706

1706:                                             ; preds = %1699, %1687
  %1707 = load ptr, ptr %6, align 8, !tbaa !5
  %1708 = load ptr, ptr %3, align 8, !tbaa !5
  %1709 = load ptr, ptr %1708, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct._NormOperator, ptr %1709, i32 0, i32 13
  store ptr %1707, ptr %1710, align 8, !tbaa !64
  br label %1713

1711:                                             ; preds = %25
  %1712 = call i32 (ptr, ...) @printf(ptr noundef @.str.121)
  call void @exit(i32 noundef 1) #7
  unreachable

1713:                                             ; preds = %1706, %1470, %1200, %921, %532, %25
  br label %1714

1714:                                             ; preds = %1713
  %1715 = load ptr, ptr %5, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct._Effect, ptr %1715, i32 0, i32 6
  %1717 = load ptr, ptr %1716, align 8, !tbaa !97
  store ptr %1717, ptr %5, align 8, !tbaa !5
  br label %22, !llvm.loop !98

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

declare ptr @new_NormEffect1(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 = { 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 #3 = { nounwind allocsize(0,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 #4 = { 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 #5 = { nounwind }
attributes #6 = { nounwind allocsize(0,1) }
attributes #7 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 224}
!10 = !{!"_Operator", !6, i64 0, !7, i64 8, !11, i64 128, !7, i64 132, !11, i64 136, !7, i64 140, !7, i64 200, !6, i64 216, !6, i64 224, !7, i64 232}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !6, i64 184}
!13 = !{!"_Effect", !11, i64 0, !7, i64 4, !7, i64 64, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216}
!14 = !{!15, !11, i64 0}
!15 = !{!"_WffNode", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !11, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !7, i64 96}
!16 = !{!15, !6, i64 24}
!17 = !{!11, !11, i64 0}
!18 = !{!15, !6, i64 32}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = !{!22, !6, i64 128}
!22 = !{!"_NormEffect", !11, i64 0, !7, i64 4, !7, i64 64, !6, i64 128, !11, i64 136, !6, i64 144, !11, i64 152, !6, i64 160, !11, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !11, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !11, i64 232, !6, i64 240, !6, i64 248}
!23 = !{!22, !6, i64 176}
!24 = !{!22, !6, i64 184}
!25 = !{!22, !6, i64 192}
!26 = !{!22, !11, i64 136}
!27 = !{!15, !6, i64 48}
!28 = !{!29, !11, i64 0}
!29 = !{!"_Fact", !11, i64 0, !7, i64 4}
!30 = distinct !{!30, !20}
!31 = !{!15, !11, i64 72}
!32 = !{!22, !11, i64 200}
!33 = !{!15, !6, i64 80}
!34 = !{!15, !6, i64 88}
!35 = distinct !{!35, !20}
!36 = distinct !{!36, !20}
!37 = !{!13, !6, i64 192}
!38 = !{!39, !7, i64 0}
!39 = !{!"_Literal", !7, i64 0, !29, i64 4, !6, i64 32, !6, i64 40}
!40 = !{!39, !6, i64 32}
!41 = distinct !{!41, !20}
!42 = !{!22, !6, i64 144}
!43 = !{!22, !6, i64 160}
!44 = !{!22, !11, i64 168}
!45 = !{!22, !11, i64 152}
!46 = !{!39, !11, i64 4}
!47 = distinct !{!47, !20}
!48 = distinct !{!48, !20}
!49 = !{!13, !6, i64 200}
!50 = !{!51, !6, i64 40}
!51 = !{!"_NumericEffect", !52, i64 0, !11, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!52 = !{!"_Fluent", !11, i64 0, !7, i64 4}
!53 = distinct !{!53, !20}
!54 = !{!22, !6, i64 208}
!55 = !{!22, !6, i64 216}
!56 = !{!22, !6, i64 224}
!57 = !{!51, !11, i64 24}
!58 = !{!22, !11, i64 232}
!59 = !{!51, !11, i64 0}
!60 = !{!52, !11, i64 0}
!61 = distinct !{!61, !20}
!62 = !{!51, !6, i64 32}
!63 = distinct !{!63, !20}
!64 = !{!65, !6, i64 304}
!65 = !{!"_NormOperator", !6, i64 0, !11, i64 8, !7, i64 12, !7, i64 72, !7, i64 132, !11, i64 192, !7, i64 196, !6, i64 256, !11, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !11, i64 296, !6, i64 304, !7, i64 312}
!66 = !{!22, !6, i64 248}
!67 = !{!22, !6, i64 240}
!68 = distinct !{!68, !20}
!69 = distinct !{!69, !20}
!70 = distinct !{!70, !20}
!71 = distinct !{!71, !20}
!72 = distinct !{!72, !20}
!73 = distinct !{!73, !20}
!74 = distinct !{!74, !20}
!75 = distinct !{!75, !20}
!76 = distinct !{!76, !20}
!77 = distinct !{!77, !20}
!78 = distinct !{!78, !20}
!79 = distinct !{!79, !20}
!80 = distinct !{!80, !20}
!81 = distinct !{!81, !20}
!82 = distinct !{!82, !20}
!83 = distinct !{!83, !20}
!84 = distinct !{!84, !20}
!85 = distinct !{!85, !20}
!86 = distinct !{!86, !20}
!87 = distinct !{!87, !20}
!88 = distinct !{!88, !20}
!89 = distinct !{!89, !20}
!90 = distinct !{!90, !20}
!91 = distinct !{!91, !20}
!92 = distinct !{!92, !20}
!93 = distinct !{!93, !20}
!94 = distinct !{!94, !20}
!95 = distinct !{!95, !20}
!96 = distinct !{!96, !20}
!97 = !{!13, !6, i64 208}
!98 = distinct !{!98, !20}


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

@garity = external local_unnamed_addr global [50 x i32], align 16
@gf_arity = external local_unnamed_addr global [50 x i32], align 16
@.str.121 = external hidden unnamed_addr constant [67 x i8], align 1

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

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @calloc(i64 noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @copy_Exp(ptr noundef) local_unnamed_addr #3

; Function Attrs: nounwind uwtable
define dso_local void @make_normal_effects(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1) local_unnamed_addr #3 {
  %3 = getelementptr inbounds i8, ptr %1, i64 224
  %.0530820 = load ptr, ptr %3, align 8, !tbaa !5
  %.not821 = icmp eq ptr %.0530820, null
  br i1 %.not821, label %._crit_edge826, label %.lr.ph825

.lr.ph825:                                        ; preds = %2, %.loopexit580
  %.0530822 = phi ptr [ %.0530, %.loopexit580 ], [ %.0530820, %2 ]
  %4 = getelementptr inbounds i8, ptr %.0530822, i64 184
  %5 = load ptr, ptr %4, align 8, !tbaa !9
  %6 = load i32, ptr %5, align 8, !tbaa !12
  switch i32 %6, label %715 [
    i32 2007, label %7
    i32 2006, label %229
    i32 2002, label %394
    i32 2003, label %512
    i32 2000, label %622
    i32 2001, label %.loopexit580
  ]

7:                                                ; preds = %.lr.ph825
  %8 = getelementptr inbounds i8, ptr %5, i64 24
  %.0527814 = load ptr, ptr %8, align 8, !tbaa !5
  %.not567815 = icmp eq ptr %.0527814, null
  br i1 %.not567815, label %.loopexit580, label %.lr.ph819

.lr.ph819:                                        ; preds = %7
  %9 = getelementptr inbounds i8, ptr %.0530822, i64 192
  %10 = getelementptr inbounds i8, ptr %.0530822, i64 200
  br label %11

11:                                               ; preds = %.lr.ph819, %225
  %.0527816 = phi ptr [ %.0527814, %.lr.ph819 ], [ %.0527, %225 ]
  %12 = tail call ptr @new_NormEffect1(ptr noundef nonnull %.0530822) #5
  %13 = load i32, ptr %.0527816, align 8, !tbaa !12
  switch i32 %13, label %113 [
    i32 2006, label %14
    i32 2002, label %87
  ]

14:                                               ; preds = %11
  %15 = getelementptr inbounds i8, ptr %.0527816, i64 24
  %.0525757 = load ptr, ptr %15, align 8, !tbaa !5
  %.not568758 = icmp eq ptr %.0525757, null
  br i1 %.not568758, label %._crit_edge764, label %.lr.ph763

.lr.ph763:                                        ; preds = %14, %.lr.ph763
  %.0525761 = phi ptr [ %.0525, %.lr.ph763 ], [ %.0525757, %14 ]
  %.0483760 = phi i32 [ %.1484, %.lr.ph763 ], [ 0, %14 ]
  %.0507759 = phi i32 [ %spec.select, %.lr.ph763 ], [ 0, %14 ]
  %16 = load i32, ptr %.0525761, align 8, !tbaa !12
  %17 = icmp eq i32 %16, 2002
  %18 = zext i1 %17 to i32
  %spec.select = add nuw nsw i32 %.0507759, %18
  %19 = icmp eq i32 %16, 2003
  %20 = zext i1 %19 to i32
  %.1484 = add nuw nsw i32 %.0483760, %20
  %21 = getelementptr inbounds i8, ptr %.0525761, i64 32
  %.0525 = load ptr, ptr %21, align 8, !tbaa !5
  %.not568 = icmp eq ptr %.0525, null
  br i1 %.not568, label %._crit_edge764, label %.lr.ph763, !llvm.loop !14

._crit_edge764:                                   ; preds = %.lr.ph763, %14
  %.0507.lcssa = phi i32 [ 0, %14 ], [ %spec.select, %.lr.ph763 ]
  %.0483.lcssa = phi i32 [ 0, %14 ], [ %.1484, %.lr.ph763 ]
  %22 = zext nneg i32 %.0507.lcssa to i64
  %23 = tail call noalias ptr @calloc(i64 noundef %22, i64 noundef 24) #6
  %24 = getelementptr inbounds i8, ptr %12, i64 128
  store ptr %23, ptr %24, align 8, !tbaa !16
  %25 = zext nneg i32 %.0483.lcssa to i64
  %26 = tail call noalias ptr @calloc(i64 noundef %25, i64 noundef 4) #6
  %27 = getelementptr inbounds i8, ptr %12, i64 176
  store ptr %26, ptr %27, align 8, !tbaa !18
  %28 = tail call noalias ptr @calloc(i64 noundef %25, i64 noundef 8) #6
  %29 = getelementptr inbounds i8, ptr %12, i64 184
  store ptr %28, ptr %29, align 8, !tbaa !19
  %30 = tail call noalias ptr @calloc(i64 noundef %25, i64 noundef 8) #6
  %31 = getelementptr inbounds i8, ptr %12, i64 192
  store ptr %30, ptr %31, align 8, !tbaa !20
  %.1526771 = load ptr, ptr %15, align 8, !tbaa !5
  %.not569772 = icmp eq ptr %.1526771, null
  br i1 %.not569772, label %.loopexit, label %.lr.ph775

.lr.ph775:                                        ; preds = %._crit_edge764
  %32 = getelementptr inbounds i8, ptr %12, i64 136
  %33 = getelementptr inbounds i8, ptr %12, i64 200
  br label %34

34:                                               ; preds = %.lr.ph775, %85
  %.1526773 = phi ptr [ %.1526771, %.lr.ph775 ], [ %.1526, %85 ]
  %35 = load i32, ptr %.1526773, align 8, !tbaa !12
  %36 = icmp eq i32 %35, 2002
  br i1 %36, label %37, label %60

37:                                               ; preds = %34
  %38 = load ptr, ptr %24, align 8, !tbaa !16
  %39 = load i32, ptr %32, align 8, !tbaa !21
  %40 = sext i32 %39 to i64
  %41 = getelementptr inbounds %struct._Fact, ptr %38, i64 %40
  %42 = getelementptr inbounds i8, ptr %.1526773, i64 48
  %43 = load ptr, ptr %42, align 8, !tbaa !22
  %44 = load i32, ptr %43, align 4, !tbaa !23
  store i32 %44, ptr %41, align 4, !tbaa !23
  %45 = sext i32 %44 to i64
  %46 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %45
  %47 = load i32, ptr %46, align 4, !tbaa !25
  %48 = icmp sgt i32 %47, 0
  br i1 %48, label %.lr.ph769, label %._crit_edge770

.lr.ph769:                                        ; preds = %37
  %49 = getelementptr inbounds i8, ptr %43, i64 4
  %50 = getelementptr inbounds i8, ptr %41, i64 4
  br label %51

51:                                               ; preds = %.lr.ph769, %51
  %indvars.iv862 = phi i64 [ 0, %.lr.ph769 ], [ %indvars.iv.next863, %51 ]
  %52 = getelementptr inbounds [5 x i32], ptr %49, i64 0, i64 %indvars.iv862
  %53 = load i32, ptr %52, align 4, !tbaa !25
  %54 = getelementptr inbounds [5 x i32], ptr %50, i64 0, i64 %indvars.iv862
  store i32 %53, ptr %54, align 4, !tbaa !25
  %indvars.iv.next863 = add nuw nsw i64 %indvars.iv862, 1
  %55 = load i32, ptr %46, align 4, !tbaa !25
  %56 = sext i32 %55 to i64
  %57 = icmp slt i64 %indvars.iv.next863, %56
  br i1 %57, label %51, label %._crit_edge770.loopexit, !llvm.loop !26

._crit_edge770.loopexit:                          ; preds = %51
  %.pre881 = load i32, ptr %32, align 8, !tbaa !21
  %.pr.pre = load i32, ptr %.1526773, align 8, !tbaa !12
  br label %._crit_edge770

._crit_edge770:                                   ; preds = %._crit_edge770.loopexit, %37
  %.pr = phi i32 [ %.pr.pre, %._crit_edge770.loopexit ], [ 2002, %37 ]
  %58 = phi i32 [ %.pre881, %._crit_edge770.loopexit ], [ %39, %37 ]
  %59 = add nsw i32 %58, 1
  store i32 %59, ptr %32, align 8, !tbaa !21
  br label %60

60:                                               ; preds = %._crit_edge770, %34
  %61 = phi i32 [ %.pr, %._crit_edge770 ], [ %35, %34 ]
  %62 = icmp eq i32 %61, 2003
  br i1 %62, label %63, label %85

63:                                               ; preds = %60
  %64 = getelementptr inbounds i8, ptr %.1526773, i64 72
  %65 = load i32, ptr %64, align 8, !tbaa !27
  %66 = load ptr, ptr %27, align 8, !tbaa !18
  %67 = load i32, ptr %33, align 8, !tbaa !28
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds i32, ptr %66, i64 %68
  store i32 %65, ptr %69, align 4, !tbaa !25
  %70 = getelementptr inbounds i8, ptr %.1526773, i64 80
  %71 = load ptr, ptr %70, align 8, !tbaa !29
  %72 = tail call ptr @copy_Exp(ptr noundef %71)
  %73 = load ptr, ptr %29, align 8, !tbaa !19
  %74 = load i32, ptr %33, align 8, !tbaa !28
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds ptr, ptr %73, i64 %75
  store ptr %72, ptr %76, align 8, !tbaa !5
  %77 = getelementptr inbounds i8, ptr %.1526773, i64 88
  %78 = load ptr, ptr %77, align 8, !tbaa !30
  %79 = tail call ptr @copy_Exp(ptr noundef %78)
  %80 = load ptr, ptr %31, align 8, !tbaa !20
  %81 = load i32, ptr %33, align 8, !tbaa !28
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds ptr, ptr %80, i64 %82
  store ptr %79, ptr %83, align 8, !tbaa !5
  %84 = add nsw i32 %81, 1
  store i32 %84, ptr %33, align 8, !tbaa !28
  br label %85

85:                                               ; preds = %60, %63
  %86 = getelementptr inbounds i8, ptr %.1526773, i64 32
  %.1526 = load ptr, ptr %86, align 8, !tbaa !5
  %.not569 = icmp eq ptr %.1526, null
  br i1 %.not569, label %.loopexit, label %34, !llvm.loop !31

87:                                               ; preds = %11
  %88 = tail call noalias dereferenceable_or_null(24) ptr @calloc(i64 noundef 1, i64 noundef 24) #6
  %89 = getelementptr inbounds i8, ptr %12, i64 128
  store ptr %88, ptr %89, align 8, !tbaa !16
  %90 = getelementptr inbounds i8, ptr %.0527816, i64 48
  %91 = load ptr, ptr %90, align 8, !tbaa !22
  %92 = load i32, ptr %91, align 4, !tbaa !23
  store i32 %92, ptr %88, align 4, !tbaa !23
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %93
  %95 = load i32, ptr %94, align 4, !tbaa !25
  %96 = icmp sgt i32 %95, 0
  br i1 %96, label %.lr.ph755, label %._crit_edge756

.lr.ph755:                                        ; preds = %87
  %97 = ptrtoint ptr %91 to i64
  %98 = ptrtoint ptr %88 to i64
  %99 = getelementptr inbounds i8, ptr %91, i64 4
  %100 = getelementptr inbounds i8, ptr %88, i64 4
  %101 = zext nneg i32 %95 to i64
  %min.iters.check948 = icmp ult i32 %95, 8
  %102 = sub i64 %98, %97
  %diff.check945 = icmp ult i64 %102, 32
  %or.cond = or i1 %min.iters.check948, %diff.check945
  br i1 %or.cond, label %scalar.ph947.preheader, label %vector.ph949

vector.ph949:                                     ; preds = %.lr.ph755
  %n.vec951 = and i64 %101, 2147483640
  br label %vector.body953

vector.body953:                                   ; preds = %vector.body953, %vector.ph949
  %index954 = phi i64 [ 0, %vector.ph949 ], [ %index.next957, %vector.body953 ]
  %103 = getelementptr inbounds [5 x i32], ptr %99, i64 0, i64 %index954
  %104 = getelementptr inbounds i8, ptr %103, i64 16
  %wide.load955 = load <4 x i32>, ptr %103, align 4, !tbaa !25
  %wide.load956 = load <4 x i32>, ptr %104, align 4, !tbaa !25
  %105 = getelementptr inbounds [5 x i32], ptr %100, i64 0, i64 %index954
  %106 = getelementptr inbounds i8, ptr %105, i64 16
  store <4 x i32> %wide.load955, ptr %105, align 4, !tbaa !25
  store <4 x i32> %wide.load956, ptr %106, align 4, !tbaa !25
  %index.next957 = add nuw i64 %index954, 8
  %107 = icmp eq i64 %index.next957, %n.vec951
  br i1 %107, label %middle.block946, label %vector.body953, !llvm.loop !32

middle.block946:                                  ; preds = %vector.body953
  %cmp.n958 = icmp eq i64 %n.vec951, %101
  br i1 %cmp.n958, label %._crit_edge756.loopexit, label %scalar.ph947.preheader

scalar.ph947.preheader:                           ; preds = %middle.block946, %.lr.ph755
  %indvars.iv859.ph = phi i64 [ 0, %.lr.ph755 ], [ %n.vec951, %middle.block946 ]
  br label %scalar.ph947

scalar.ph947:                                     ; preds = %scalar.ph947.preheader, %scalar.ph947
  %indvars.iv859 = phi i64 [ %indvars.iv.next860, %scalar.ph947 ], [ %indvars.iv859.ph, %scalar.ph947.preheader ]
  %108 = getelementptr inbounds [5 x i32], ptr %99, i64 0, i64 %indvars.iv859
  %109 = load i32, ptr %108, align 4, !tbaa !25
  %110 = getelementptr inbounds [5 x i32], ptr %100, i64 0, i64 %indvars.iv859
  store i32 %109, ptr %110, align 4, !tbaa !25
  %indvars.iv.next860 = add nuw nsw i64 %indvars.iv859, 1
  %111 = icmp ult i64 %indvars.iv.next860, %101
  br i1 %111, label %scalar.ph947, label %._crit_edge756.loopexit, !llvm.loop !35

._crit_edge756.loopexit:                          ; preds = %scalar.ph947, %middle.block946
  %.pr578.pre = load i32, ptr %.0527816, align 8, !tbaa !12
  br label %._crit_edge756

._crit_edge756:                                   ; preds = %._crit_edge756.loopexit, %87
  %.pr578 = phi i32 [ %.pr578.pre, %._crit_edge756.loopexit ], [ 2002, %87 ]
  %112 = getelementptr inbounds i8, ptr %12, i64 136
  store i32 1, ptr %112, align 8, !tbaa !21
  br label %113

113:                                              ; preds = %11, %._crit_edge756
  %114 = phi i32 [ %13, %11 ], [ %.pr578, %._crit_edge756 ]
  %115 = icmp eq i32 %114, 2003
  br i1 %115, label %116, label %.loopexit

116:                                              ; preds = %113
  %117 = tail call noalias dereferenceable_or_null(4) ptr @calloc(i64 noundef 1, i64 noundef 4) #6
  %118 = getelementptr inbounds i8, ptr %12, i64 176
  store ptr %117, ptr %118, align 8, !tbaa !18
  %119 = tail call noalias dereferenceable_or_null(8) ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %120 = getelementptr inbounds i8, ptr %12, i64 184
  store ptr %119, ptr %120, align 8, !tbaa !19
  %121 = tail call noalias dereferenceable_or_null(8) ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %122 = getelementptr inbounds i8, ptr %12, i64 192
  store ptr %121, ptr %122, align 8, !tbaa !20
  %123 = getelementptr inbounds i8, ptr %.0527816, i64 72
  %124 = load i32, ptr %123, align 8, !tbaa !27
  store i32 %124, ptr %117, align 4, !tbaa !25
  %125 = getelementptr inbounds i8, ptr %.0527816, i64 80
  %126 = load ptr, ptr %125, align 8, !tbaa !29
  %127 = tail call ptr @copy_Exp(ptr noundef %126)
  %128 = load ptr, ptr %120, align 8, !tbaa !19
  store ptr %127, ptr %128, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %.0527816, i64 88
  %130 = load ptr, ptr %129, align 8, !tbaa !30
  %131 = tail call ptr @copy_Exp(ptr noundef %130)
  %132 = load ptr, ptr %122, align 8, !tbaa !20
  store ptr %131, ptr %132, align 8, !tbaa !5
  %133 = getelementptr inbounds i8, ptr %12, i64 200
  store i32 1, ptr %133, align 8, !tbaa !28
  br label %.loopexit

.loopexit:                                        ; preds = %85, %._crit_edge764, %113, %116
  %.0473776 = load ptr, ptr %9, align 8, !tbaa !5
  %.not570777 = icmp eq ptr %.0473776, null
  br i1 %.not570777, label %._crit_edge783, label %.lr.ph782

.lr.ph782:                                        ; preds = %.loopexit, %.lr.ph782
  %.0473780 = phi ptr [ %.0473, %.lr.ph782 ], [ %.0473776, %.loopexit ]
  %.0487779 = phi i32 [ %.1488, %.lr.ph782 ], [ 0, %.loopexit ]
  %.0497778 = phi i32 [ %.1498, %.lr.ph782 ], [ 0, %.loopexit ]
  %134 = load i8, ptr %.0473780, align 8, !tbaa !36
  %.not576 = icmp eq i8 %134, 0
  %135 = zext i1 %.not576 to i32
  %.1498 = add nuw nsw i32 %.0497778, %135
  %not..not576 = xor i1 %.not576, true
  %136 = zext i1 %not..not576 to i32
  %.1488 = add nuw nsw i32 %.0487779, %136
  %137 = getelementptr inbounds i8, ptr %.0473780, i64 32
  %.0473 = load ptr, ptr %137, align 8, !tbaa !5
  %.not570 = icmp eq ptr %.0473, null
  br i1 %.not570, label %._crit_edge783, label %.lr.ph782, !llvm.loop !38

._crit_edge783:                                   ; preds = %.lr.ph782, %.loopexit
  %.0497.lcssa = phi i32 [ 0, %.loopexit ], [ %.1498, %.lr.ph782 ]
  %.0487.lcssa = phi i32 [ 0, %.loopexit ], [ %.1488, %.lr.ph782 ]
  %138 = zext nneg i32 %.0497.lcssa to i64
  %139 = tail call noalias ptr @calloc(i64 noundef %138, i64 noundef 24) #6
  %140 = getelementptr inbounds i8, ptr %12, i64 144
  store ptr %139, ptr %140, align 8, !tbaa !39
  %141 = zext nneg i32 %.0487.lcssa to i64
  %142 = tail call noalias ptr @calloc(i64 noundef %141, i64 noundef 24) #6
  %143 = getelementptr inbounds i8, ptr %12, i64 160
  store ptr %142, ptr %143, align 8, !tbaa !40
  %.1474790 = load ptr, ptr %9, align 8, !tbaa !5
  %.not571791 = icmp eq ptr %.1474790, null
  br i1 %.not571791, label %._crit_edge795, label %.lr.ph794

.lr.ph794:                                        ; preds = %._crit_edge783, %._crit_edge789
  %.1474792 = phi ptr [ %.1474, %._crit_edge789 ], [ %.1474790, %._crit_edge783 ]
  %.1474792942 = ptrtoint ptr %.1474792 to i64
  %144 = load i8, ptr %.1474792, align 8, !tbaa !36
  %.not575 = icmp eq i8 %144, 0
  %..v = select i1 %.not575, i64 152, i64 168
  %. = getelementptr inbounds i8, ptr %12, i64 %..v
  %.926 = select i1 %.not575, ptr %139, ptr %142
  %.926941 = ptrtoint ptr %.926 to i64
  %145 = load i32, ptr %., align 8, !tbaa !25
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %., align 8, !tbaa !25
  %147 = sext i32 %145 to i64
  %148 = getelementptr inbounds %struct._Fact, ptr %.926, i64 %147
  %149 = getelementptr inbounds i8, ptr %.1474792, i64 4
  %150 = load i32, ptr %149, align 4, !tbaa !41
  store i32 %150, ptr %148, align 4, !tbaa !23
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %151
  %153 = load i32, ptr %152, align 4, !tbaa !25
  %154 = icmp sgt i32 %153, 0
  br i1 %154, label %.lr.ph788, label %._crit_edge789

.lr.ph788:                                        ; preds = %.lr.ph794
  %155 = getelementptr inbounds i8, ptr %.1474792, i64 8
  %156 = getelementptr inbounds i8, ptr %148, i64 4
  %157 = zext nneg i32 %153 to i64
  %min.iters.check = icmp ult i32 %153, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph788
  %158 = add i64 %.926941, -4
  %159 = mul nsw i64 %147, 24
  %160 = add i64 %158, %159
  %161 = sub i64 %160, %.1474792942
  %diff.check = icmp ult i64 %161, 32
  br i1 %diff.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %157, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %162 = getelementptr inbounds [5 x i32], ptr %155, i64 0, i64 %index
  %163 = getelementptr inbounds i8, ptr %162, i64 16
  %wide.load = load <4 x i32>, ptr %162, align 4, !tbaa !25
  %wide.load943 = load <4 x i32>, ptr %163, align 4, !tbaa !25
  %164 = getelementptr inbounds [5 x i32], ptr %156, i64 0, i64 %index
  %165 = getelementptr inbounds i8, ptr %164, i64 16
  store <4 x i32> %wide.load, ptr %164, align 4, !tbaa !25
  store <4 x i32> %wide.load943, ptr %165, align 4, !tbaa !25
  %index.next = add nuw i64 %index, 8
  %166 = icmp eq i64 %index.next, %n.vec
  br i1 %166, label %middle.block, label %vector.body, !llvm.loop !42

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %157
  br i1 %cmp.n, label %._crit_edge789, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph788
  %indvars.iv865.ph = phi i64 [ 0, %vector.memcheck ], [ 0, %.lr.ph788 ], [ %n.vec, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv865 = phi i64 [ %indvars.iv.next866, %scalar.ph ], [ %indvars.iv865.ph, %scalar.ph.preheader ]
  %167 = getelementptr inbounds [5 x i32], ptr %155, i64 0, i64 %indvars.iv865
  %168 = load i32, ptr %167, align 4, !tbaa !25
  %169 = getelementptr inbounds [5 x i32], ptr %156, i64 0, i64 %indvars.iv865
  store i32 %168, ptr %169, align 4, !tbaa !25
  %indvars.iv.next866 = add nuw nsw i64 %indvars.iv865, 1
  %170 = icmp ult i64 %indvars.iv.next866, %157
  br i1 %170, label %scalar.ph, label %._crit_edge789, !llvm.loop !43

._crit_edge789:                                   ; preds = %scalar.ph, %middle.block, %.lr.ph794
  %171 = getelementptr inbounds i8, ptr %.1474792, i64 32
  %.1474 = load ptr, ptr %171, align 8, !tbaa !5
  %.not571 = icmp eq ptr %.1474, null
  br i1 %.not571, label %._crit_edge795, label %.lr.ph794, !llvm.loop !44

._crit_edge795:                                   ; preds = %._crit_edge789, %._crit_edge783
  %.0468796 = load ptr, ptr %10, align 8, !tbaa !5
  %.not572797 = icmp eq ptr %.0468796, null
  br i1 %.not572797, label %._crit_edge802, label %.lr.ph801

.lr.ph801:                                        ; preds = %._crit_edge795, %.lr.ph801
  %.0468799 = phi ptr [ %.0468, %.lr.ph801 ], [ %.0468796, %._crit_edge795 ]
  %.2499798 = phi i32 [ %172, %.lr.ph801 ], [ 0, %._crit_edge795 ]
  %172 = add nuw nsw i32 %.2499798, 1
  %173 = getelementptr inbounds i8, ptr %.0468799, i64 40
  %.0468 = load ptr, ptr %173, align 8, !tbaa !5
  %.not572 = icmp eq ptr %.0468, null
  br i1 %.not572, label %._crit_edge802, label %.lr.ph801, !llvm.loop !45

._crit_edge802:                                   ; preds = %.lr.ph801, %._crit_edge795
  %.2499.lcssa = phi i32 [ 0, %._crit_edge795 ], [ %172, %.lr.ph801 ]
  %174 = zext nneg i32 %.2499.lcssa to i64
  %175 = tail call noalias ptr @calloc(i64 noundef %174, i64 noundef 4) #6
  %176 = getelementptr inbounds i8, ptr %12, i64 208
  store ptr %175, ptr %176, align 8, !tbaa !46
  %177 = tail call noalias ptr @calloc(i64 noundef %174, i64 noundef 24) #6
  %178 = getelementptr inbounds i8, ptr %12, i64 216
  store ptr %177, ptr %178, align 8, !tbaa !47
  %179 = tail call noalias ptr @calloc(i64 noundef %174, i64 noundef 8) #6
  %180 = getelementptr inbounds i8, ptr %12, i64 224
  store ptr %179, ptr %180, align 8, !tbaa !48
  %.1469808 = load ptr, ptr %10, align 8, !tbaa !5
  %.not573809 = icmp eq ptr %.1469808, null
  br i1 %.not573809, label %._crit_edge813, label %.lr.ph812

.lr.ph812:                                        ; preds = %._crit_edge802
  %181 = getelementptr inbounds i8, ptr %12, i64 232
  %.pre883 = load i32, ptr %181, align 8, !tbaa !49
  br label %182

182:                                              ; preds = %.lr.ph812, %._crit_edge807
  %183 = phi i32 [ %.pre883, %.lr.ph812 ], [ %214, %._crit_edge807 ]
  %.1469810 = phi ptr [ %.1469808, %.lr.ph812 ], [ %.1469, %._crit_edge807 ]
  %184 = getelementptr inbounds i8, ptr %.1469810, i64 24
  %185 = load i32, ptr %184, align 8, !tbaa !50
  %186 = load ptr, ptr %176, align 8, !tbaa !46
  %187 = sext i32 %183 to i64
  %188 = getelementptr inbounds i32, ptr %186, i64 %187
  store i32 %185, ptr %188, align 4, !tbaa !25
  %189 = load ptr, ptr %178, align 8, !tbaa !47
  %190 = load i32, ptr %181, align 8, !tbaa !49
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds %struct._Fluent, ptr %189, i64 %191
  %193 = load i32, ptr %.1469810, align 8, !tbaa !53
  store i32 %193, ptr %192, align 4, !tbaa !54
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %194
  %196 = load i32, ptr %195, align 4, !tbaa !25
  %197 = icmp sgt i32 %196, 0
  br i1 %197, label %.lr.ph806, label %._crit_edge807

.lr.ph806:                                        ; preds = %182
  %198 = getelementptr inbounds i8, ptr %.1469810, i64 4
  %199 = getelementptr inbounds i8, ptr %192, i64 4
  br label %200

200:                                              ; preds = %.lr.ph806, %200
  %indvars.iv868 = phi i64 [ 0, %.lr.ph806 ], [ %indvars.iv.next869, %200 ]
  %201 = getelementptr inbounds [5 x i32], ptr %198, i64 0, i64 %indvars.iv868
  %202 = load i32, ptr %201, align 4, !tbaa !25
  %203 = getelementptr inbounds [5 x i32], ptr %199, i64 0, i64 %indvars.iv868
  store i32 %202, ptr %203, align 4, !tbaa !25
  %indvars.iv.next869 = add nuw nsw i64 %indvars.iv868, 1
  %204 = load i32, ptr %195, align 4, !tbaa !25
  %205 = sext i32 %204 to i64
  %206 = icmp slt i64 %indvars.iv.next869, %205
  br i1 %206, label %200, label %._crit_edge807, !llvm.loop !55

._crit_edge807:                                   ; preds = %200, %182
  %207 = getelementptr inbounds i8, ptr %.1469810, i64 32
  %208 = load ptr, ptr %207, align 8, !tbaa !56
  %209 = tail call ptr @copy_Exp(ptr noundef %208)
  %210 = load ptr, ptr %180, align 8, !tbaa !48
  %211 = load i32, ptr %181, align 8, !tbaa !49
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds ptr, ptr %210, i64 %212
  store ptr %209, ptr %213, align 8, !tbaa !5
  %214 = add nsw i32 %211, 1
  store i32 %214, ptr %181, align 8, !tbaa !49
  %215 = getelementptr inbounds i8, ptr %.1469810, i64 40
  %.1469 = load ptr, ptr %215, align 8, !tbaa !5
  %.not573 = icmp eq ptr %.1469, null
  br i1 %.not573, label %._crit_edge813, label %182, !llvm.loop !57

._crit_edge813:                                   ; preds = %._crit_edge807, %._crit_edge802
  %216 = load ptr, ptr %0, align 8, !tbaa !5
  %217 = getelementptr inbounds i8, ptr %216, i64 304
  %218 = load ptr, ptr %217, align 8, !tbaa !58
  %219 = getelementptr inbounds i8, ptr %12, i64 248
  store ptr %218, ptr %219, align 8, !tbaa !60
  %220 = load ptr, ptr %0, align 8, !tbaa !5
  %221 = getelementptr inbounds i8, ptr %220, i64 304
  %222 = load ptr, ptr %221, align 8, !tbaa !58
  %.not574 = icmp eq ptr %222, null
  br i1 %.not574, label %225, label %223

223:                                              ; preds = %._crit_edge813
  %224 = getelementptr inbounds i8, ptr %222, i64 240
  store ptr %12, ptr %224, align 8, !tbaa !61
  %.pre884 = load ptr, ptr %0, align 8, !tbaa !5
  br label %225

225:                                              ; preds = %223, %._crit_edge813
  %226 = phi ptr [ %.pre884, %223 ], [ %220, %._crit_edge813 ]
  %227 = getelementptr inbounds i8, ptr %226, i64 304
  store ptr %12, ptr %227, align 8, !tbaa !58
  %228 = getelementptr inbounds i8, ptr %.0527816, i64 32
  %.0527 = load ptr, ptr %228, align 8, !tbaa !5
  %.not567 = icmp eq ptr %.0527, null
  br i1 %.not567, label %.loopexit580, label %11, !llvm.loop !62

229:                                              ; preds = %.lr.ph825
  %230 = tail call ptr @new_NormEffect1(ptr noundef nonnull %.0530822) #5
  %231 = getelementptr inbounds i8, ptr %5, i64 24
  %.1528695 = load ptr, ptr %231, align 8, !tbaa !5
  %.not558696 = icmp eq ptr %.1528695, null
  br i1 %.not558696, label %._crit_edge702, label %.lr.ph701

.lr.ph701:                                        ; preds = %229, %.lr.ph701
  %.1528699 = phi ptr [ %.1528, %.lr.ph701 ], [ %.1528695, %229 ]
  %.2485698 = phi i32 [ %.3486, %.lr.ph701 ], [ 0, %229 ]
  %.2509697 = phi i32 [ %spec.select577, %.lr.ph701 ], [ 0, %229 ]
  %232 = load i32, ptr %.1528699, align 8, !tbaa !12
  %233 = icmp eq i32 %232, 2002
  %234 = zext i1 %233 to i32
  %spec.select577 = add nuw nsw i32 %.2509697, %234
  %235 = icmp eq i32 %232, 2003
  %236 = zext i1 %235 to i32
  %.3486 = add nuw nsw i32 %.2485698, %236
  %237 = getelementptr inbounds i8, ptr %.1528699, i64 32
  %.1528 = load ptr, ptr %237, align 8, !tbaa !5
  %.not558 = icmp eq ptr %.1528, null
  br i1 %.not558, label %._crit_edge702, label %.lr.ph701, !llvm.loop !63

._crit_edge702:                                   ; preds = %.lr.ph701, %229
  %.2509.lcssa = phi i32 [ 0, %229 ], [ %spec.select577, %.lr.ph701 ]
  %.2485.lcssa = phi i32 [ 0, %229 ], [ %.3486, %.lr.ph701 ]
  %238 = zext nneg i32 %.2509.lcssa to i64
  %239 = tail call noalias ptr @calloc(i64 noundef %238, i64 noundef 24) #6
  %240 = getelementptr inbounds i8, ptr %230, i64 128
  store ptr %239, ptr %240, align 8, !tbaa !16
  %241 = zext nneg i32 %.2485.lcssa to i64
  %242 = tail call noalias ptr @calloc(i64 noundef %241, i64 noundef 4) #6
  %243 = getelementptr inbounds i8, ptr %230, i64 176
  store ptr %242, ptr %243, align 8, !tbaa !18
  %244 = tail call noalias ptr @calloc(i64 noundef %241, i64 noundef 8) #6
  %245 = getelementptr inbounds i8, ptr %230, i64 184
  store ptr %244, ptr %245, align 8, !tbaa !19
  %246 = tail call noalias ptr @calloc(i64 noundef %241, i64 noundef 8) #6
  %247 = getelementptr inbounds i8, ptr %230, i64 192
  store ptr %246, ptr %247, align 8, !tbaa !20
  %.2529709 = load ptr, ptr %231, align 8, !tbaa !5
  %.not559710 = icmp eq ptr %.2529709, null
  br i1 %.not559710, label %._crit_edge714, label %.lr.ph713

.lr.ph713:                                        ; preds = %._crit_edge702
  %248 = getelementptr inbounds i8, ptr %230, i64 136
  %249 = getelementptr inbounds i8, ptr %230, i64 200
  br label %250

250:                                              ; preds = %.lr.ph713, %301
  %.2529711 = phi ptr [ %.2529709, %.lr.ph713 ], [ %.2529, %301 ]
  %251 = load i32, ptr %.2529711, align 8, !tbaa !12
  %252 = icmp eq i32 %251, 2002
  br i1 %252, label %253, label %276

253:                                              ; preds = %250
  %254 = load ptr, ptr %240, align 8, !tbaa !16
  %255 = load i32, ptr %248, align 8, !tbaa !21
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds %struct._Fact, ptr %254, i64 %256
  %258 = getelementptr inbounds i8, ptr %.2529711, i64 48
  %259 = load ptr, ptr %258, align 8, !tbaa !22
  %260 = load i32, ptr %259, align 4, !tbaa !23
  store i32 %260, ptr %257, align 4, !tbaa !23
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %261
  %263 = load i32, ptr %262, align 4, !tbaa !25
  %264 = icmp sgt i32 %263, 0
  br i1 %264, label %.lr.ph707, label %._crit_edge708

.lr.ph707:                                        ; preds = %253
  %265 = getelementptr inbounds i8, ptr %259, i64 4
  %266 = getelementptr inbounds i8, ptr %257, i64 4
  br label %267

267:                                              ; preds = %.lr.ph707, %267
  %indvars.iv850 = phi i64 [ 0, %.lr.ph707 ], [ %indvars.iv.next851, %267 ]
  %268 = getelementptr inbounds [5 x i32], ptr %265, i64 0, i64 %indvars.iv850
  %269 = load i32, ptr %268, align 4, !tbaa !25
  %270 = getelementptr inbounds [5 x i32], ptr %266, i64 0, i64 %indvars.iv850
  store i32 %269, ptr %270, align 4, !tbaa !25
  %indvars.iv.next851 = add nuw nsw i64 %indvars.iv850, 1
  %271 = load i32, ptr %262, align 4, !tbaa !25
  %272 = sext i32 %271 to i64
  %273 = icmp slt i64 %indvars.iv.next851, %272
  br i1 %273, label %267, label %._crit_edge708.loopexit, !llvm.loop !64

._crit_edge708.loopexit:                          ; preds = %267
  %.pre876 = load i32, ptr %248, align 8, !tbaa !21
  %.pr579.pre = load i32, ptr %.2529711, align 8, !tbaa !12
  br label %._crit_edge708

._crit_edge708:                                   ; preds = %._crit_edge708.loopexit, %253
  %.pr579 = phi i32 [ %.pr579.pre, %._crit_edge708.loopexit ], [ 2002, %253 ]
  %274 = phi i32 [ %.pre876, %._crit_edge708.loopexit ], [ %255, %253 ]
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %248, align 8, !tbaa !21
  br label %276

276:                                              ; preds = %._crit_edge708, %250
  %277 = phi i32 [ %.pr579, %._crit_edge708 ], [ %251, %250 ]
  %278 = icmp eq i32 %277, 2003
  br i1 %278, label %279, label %301

279:                                              ; preds = %276
  %280 = getelementptr inbounds i8, ptr %.2529711, i64 72
  %281 = load i32, ptr %280, align 8, !tbaa !27
  %282 = load ptr, ptr %243, align 8, !tbaa !18
  %283 = load i32, ptr %249, align 8, !tbaa !28
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds i32, ptr %282, i64 %284
  store i32 %281, ptr %285, align 4, !tbaa !25
  %286 = getelementptr inbounds i8, ptr %.2529711, i64 80
  %287 = load ptr, ptr %286, align 8, !tbaa !29
  %288 = tail call ptr @copy_Exp(ptr noundef %287)
  %289 = load ptr, ptr %245, align 8, !tbaa !19
  %290 = load i32, ptr %249, align 8, !tbaa !28
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds ptr, ptr %289, i64 %291
  store ptr %288, ptr %292, align 8, !tbaa !5
  %293 = getelementptr inbounds i8, ptr %.2529711, i64 88
  %294 = load ptr, ptr %293, align 8, !tbaa !30
  %295 = tail call ptr @copy_Exp(ptr noundef %294)
  %296 = load ptr, ptr %247, align 8, !tbaa !20
  %297 = load i32, ptr %249, align 8, !tbaa !28
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds ptr, ptr %296, i64 %298
  store ptr %295, ptr %299, align 8, !tbaa !5
  %300 = add nsw i32 %297, 1
  store i32 %300, ptr %249, align 8, !tbaa !28
  br label %301

301:                                              ; preds = %276, %279
  %302 = getelementptr inbounds i8, ptr %.2529711, i64 32
  %.2529 = load ptr, ptr %302, align 8, !tbaa !5
  %.not559 = icmp eq ptr %.2529, null
  br i1 %.not559, label %._crit_edge714, label %250, !llvm.loop !65

._crit_edge714:                                   ; preds = %301, %._crit_edge702
  %303 = getelementptr inbounds i8, ptr %.0530822, i64 192
  %.2475715 = load ptr, ptr %303, align 8, !tbaa !5
  %.not560716 = icmp eq ptr %.2475715, null
  br i1 %.not560716, label %._crit_edge722, label %.lr.ph721

.lr.ph721:                                        ; preds = %._crit_edge714, %.lr.ph721
  %.2475719 = phi ptr [ %.2475, %.lr.ph721 ], [ %.2475715, %._crit_edge714 ]
  %.2489718 = phi i32 [ %.3490, %.lr.ph721 ], [ 0, %._crit_edge714 ]
  %.3500717 = phi i32 [ %.4501, %.lr.ph721 ], [ 0, %._crit_edge714 ]
  %304 = load i8, ptr %.2475719, align 8, !tbaa !36
  %.not566 = icmp eq i8 %304, 0
  %305 = zext i1 %.not566 to i32
  %.4501 = add nuw nsw i32 %.3500717, %305
  %not..not566 = xor i1 %.not566, true
  %306 = zext i1 %not..not566 to i32
  %.3490 = add nuw nsw i32 %.2489718, %306
  %307 = getelementptr inbounds i8, ptr %.2475719, i64 32
  %.2475 = load ptr, ptr %307, align 8, !tbaa !5
  %.not560 = icmp eq ptr %.2475, null
  br i1 %.not560, label %._crit_edge722, label %.lr.ph721, !llvm.loop !66

._crit_edge722:                                   ; preds = %.lr.ph721, %._crit_edge714
  %.3500.lcssa = phi i32 [ 0, %._crit_edge714 ], [ %.4501, %.lr.ph721 ]
  %.2489.lcssa = phi i32 [ 0, %._crit_edge714 ], [ %.3490, %.lr.ph721 ]
  %308 = zext nneg i32 %.3500.lcssa to i64
  %309 = tail call noalias ptr @calloc(i64 noundef %308, i64 noundef 24) #6
  %310 = getelementptr inbounds i8, ptr %230, i64 144
  store ptr %309, ptr %310, align 8, !tbaa !39
  %311 = zext nneg i32 %.2489.lcssa to i64
  %312 = tail call noalias ptr @calloc(i64 noundef %311, i64 noundef 24) #6
  %313 = getelementptr inbounds i8, ptr %230, i64 160
  store ptr %312, ptr %313, align 8, !tbaa !40
  %.3476729 = load ptr, ptr %303, align 8, !tbaa !5
  %.not561730 = icmp eq ptr %.3476729, null
  br i1 %.not561730, label %._crit_edge734, label %.lr.ph733

.lr.ph733:                                        ; preds = %._crit_edge722, %._crit_edge728
  %.3476731 = phi ptr [ %.3476, %._crit_edge728 ], [ %.3476729, %._crit_edge722 ]
  %.3476731961 = ptrtoint ptr %.3476731 to i64
  %314 = load i8, ptr %.3476731, align 8, !tbaa !36
  %.not565 = icmp eq i8 %314, 0
  %.927.v = select i1 %.not565, i64 152, i64 168
  %.927 = getelementptr inbounds i8, ptr %230, i64 %.927.v
  %.928 = select i1 %.not565, ptr %309, ptr %312
  %.928960 = ptrtoint ptr %.928 to i64
  %315 = load i32, ptr %.927, align 8, !tbaa !25
  %316 = add nsw i32 %315, 1
  store i32 %316, ptr %.927, align 8, !tbaa !25
  %317 = sext i32 %315 to i64
  %318 = getelementptr inbounds %struct._Fact, ptr %.928, i64 %317
  %319 = getelementptr inbounds i8, ptr %.3476731, i64 4
  %320 = load i32, ptr %319, align 4, !tbaa !41
  store i32 %320, ptr %318, align 4, !tbaa !23
  %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 !25
  %324 = icmp sgt i32 %323, 0
  br i1 %324, label %.lr.ph727, label %._crit_edge728

.lr.ph727:                                        ; preds = %.lr.ph733
  %325 = getelementptr inbounds i8, ptr %.3476731, i64 8
  %326 = getelementptr inbounds i8, ptr %318, i64 4
  %327 = zext nneg i32 %323 to i64
  %min.iters.check965 = icmp ult i32 %323, 8
  br i1 %min.iters.check965, label %scalar.ph964.preheader, label %vector.memcheck959

vector.memcheck959:                               ; preds = %.lr.ph727
  %328 = add i64 %.928960, -4
  %329 = mul nsw i64 %317, 24
  %330 = add i64 %328, %329
  %331 = sub i64 %330, %.3476731961
  %diff.check962 = icmp ult i64 %331, 32
  br i1 %diff.check962, label %scalar.ph964.preheader, label %vector.ph966

vector.ph966:                                     ; preds = %vector.memcheck959
  %n.vec968 = and i64 %327, 2147483640
  br label %vector.body970

vector.body970:                                   ; preds = %vector.body970, %vector.ph966
  %index971 = phi i64 [ 0, %vector.ph966 ], [ %index.next974, %vector.body970 ]
  %332 = getelementptr inbounds [5 x i32], ptr %325, i64 0, i64 %index971
  %333 = getelementptr inbounds i8, ptr %332, i64 16
  %wide.load972 = load <4 x i32>, ptr %332, align 4, !tbaa !25
  %wide.load973 = load <4 x i32>, ptr %333, align 4, !tbaa !25
  %334 = getelementptr inbounds [5 x i32], ptr %326, i64 0, i64 %index971
  %335 = getelementptr inbounds i8, ptr %334, i64 16
  store <4 x i32> %wide.load972, ptr %334, align 4, !tbaa !25
  store <4 x i32> %wide.load973, ptr %335, align 4, !tbaa !25
  %index.next974 = add nuw i64 %index971, 8
  %336 = icmp eq i64 %index.next974, %n.vec968
  br i1 %336, label %middle.block963, label %vector.body970, !llvm.loop !67

middle.block963:                                  ; preds = %vector.body970
  %cmp.n975 = icmp eq i64 %n.vec968, %327
  br i1 %cmp.n975, label %._crit_edge728, label %scalar.ph964.preheader

scalar.ph964.preheader:                           ; preds = %middle.block963, %vector.memcheck959, %.lr.ph727
  %indvars.iv853.ph = phi i64 [ 0, %vector.memcheck959 ], [ 0, %.lr.ph727 ], [ %n.vec968, %middle.block963 ]
  br label %scalar.ph964

scalar.ph964:                                     ; preds = %scalar.ph964.preheader, %scalar.ph964
  %indvars.iv853 = phi i64 [ %indvars.iv.next854, %scalar.ph964 ], [ %indvars.iv853.ph, %scalar.ph964.preheader ]
  %337 = getelementptr inbounds [5 x i32], ptr %325, i64 0, i64 %indvars.iv853
  %338 = load i32, ptr %337, align 4, !tbaa !25
  %339 = getelementptr inbounds [5 x i32], ptr %326, i64 0, i64 %indvars.iv853
  store i32 %338, ptr %339, align 4, !tbaa !25
  %indvars.iv.next854 = add nuw nsw i64 %indvars.iv853, 1
  %340 = icmp ult i64 %indvars.iv.next854, %327
  br i1 %340, label %scalar.ph964, label %._crit_edge728, !llvm.loop !68

._crit_edge728:                                   ; preds = %scalar.ph964, %middle.block963, %.lr.ph733
  %341 = getelementptr inbounds i8, ptr %.3476731, i64 32
  %.3476 = load ptr, ptr %341, align 8, !tbaa !5
  %.not561 = icmp eq ptr %.3476, null
  br i1 %.not561, label %._crit_edge734, label %.lr.ph733, !llvm.loop !69

._crit_edge734:                                   ; preds = %._crit_edge728, %._crit_edge722
  %342 = getelementptr inbounds i8, ptr %.0530822, i64 200
  %.2470735 = load ptr, ptr %342, align 8, !tbaa !5
  %.not562736 = icmp eq ptr %.2470735, null
  br i1 %.not562736, label %._crit_edge741, label %.lr.ph740

.lr.ph740:                                        ; preds = %._crit_edge734, %.lr.ph740
  %.2470738 = phi ptr [ %.2470, %.lr.ph740 ], [ %.2470735, %._crit_edge734 ]
  %.5502737 = phi i32 [ %343, %.lr.ph740 ], [ 0, %._crit_edge734 ]
  %343 = add nuw nsw i32 %.5502737, 1
  %344 = getelementptr inbounds i8, ptr %.2470738, i64 40
  %.2470 = load ptr, ptr %344, align 8, !tbaa !5
  %.not562 = icmp eq ptr %.2470, null
  br i1 %.not562, label %._crit_edge741, label %.lr.ph740, !llvm.loop !70

._crit_edge741:                                   ; preds = %.lr.ph740, %._crit_edge734
  %.5502.lcssa = phi i32 [ 0, %._crit_edge734 ], [ %343, %.lr.ph740 ]
  %345 = zext nneg i32 %.5502.lcssa to i64
  %346 = tail call noalias ptr @calloc(i64 noundef %345, i64 noundef 4) #6
  %347 = getelementptr inbounds i8, ptr %230, i64 208
  store ptr %346, ptr %347, align 8, !tbaa !46
  %348 = tail call noalias ptr @calloc(i64 noundef %345, i64 noundef 24) #6
  %349 = getelementptr inbounds i8, ptr %230, i64 216
  store ptr %348, ptr %349, align 8, !tbaa !47
  %350 = tail call noalias ptr @calloc(i64 noundef %345, i64 noundef 8) #6
  %351 = getelementptr inbounds i8, ptr %230, i64 224
  store ptr %350, ptr %351, align 8, !tbaa !48
  %.3471747 = load ptr, ptr %342, align 8, !tbaa !5
  %.not563748 = icmp eq ptr %.3471747, null
  br i1 %.not563748, label %._crit_edge752, label %.lr.ph751

.lr.ph751:                                        ; preds = %._crit_edge741
  %352 = getelementptr inbounds i8, ptr %230, i64 232
  %.pre878 = load i32, ptr %352, align 8, !tbaa !49
  br label %353

353:                                              ; preds = %.lr.ph751, %._crit_edge746
  %354 = phi i32 [ %.pre878, %.lr.ph751 ], [ %385, %._crit_edge746 ]
  %.3471749 = phi ptr [ %.3471747, %.lr.ph751 ], [ %.3471, %._crit_edge746 ]
  %355 = getelementptr inbounds i8, ptr %.3471749, i64 24
  %356 = load i32, ptr %355, align 8, !tbaa !50
  %357 = load ptr, ptr %347, align 8, !tbaa !46
  %358 = sext i32 %354 to i64
  %359 = getelementptr inbounds i32, ptr %357, i64 %358
  store i32 %356, ptr %359, align 4, !tbaa !25
  %360 = load ptr, ptr %349, align 8, !tbaa !47
  %361 = load i32, ptr %352, align 8, !tbaa !49
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds %struct._Fluent, ptr %360, i64 %362
  %364 = load i32, ptr %.3471749, align 8, !tbaa !53
  store i32 %364, ptr %363, align 4, !tbaa !54
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %365
  %367 = load i32, ptr %366, align 4, !tbaa !25
  %368 = icmp sgt i32 %367, 0
  br i1 %368, label %.lr.ph745, label %._crit_edge746

.lr.ph745:                                        ; preds = %353
  %369 = getelementptr inbounds i8, ptr %.3471749, i64 4
  %370 = getelementptr inbounds i8, ptr %363, i64 4
  br label %371

371:                                              ; preds = %.lr.ph745, %371
  %indvars.iv856 = phi i64 [ 0, %.lr.ph745 ], [ %indvars.iv.next857, %371 ]
  %372 = getelementptr inbounds [5 x i32], ptr %369, i64 0, i64 %indvars.iv856
  %373 = load i32, ptr %372, align 4, !tbaa !25
  %374 = getelementptr inbounds [5 x i32], ptr %370, i64 0, i64 %indvars.iv856
  store i32 %373, ptr %374, align 4, !tbaa !25
  %indvars.iv.next857 = add nuw nsw i64 %indvars.iv856, 1
  %375 = load i32, ptr %366, align 4, !tbaa !25
  %376 = sext i32 %375 to i64
  %377 = icmp slt i64 %indvars.iv.next857, %376
  br i1 %377, label %371, label %._crit_edge746, !llvm.loop !71

._crit_edge746:                                   ; preds = %371, %353
  %378 = getelementptr inbounds i8, ptr %.3471749, i64 32
  %379 = load ptr, ptr %378, align 8, !tbaa !56
  %380 = tail call ptr @copy_Exp(ptr noundef %379)
  %381 = load ptr, ptr %351, align 8, !tbaa !48
  %382 = load i32, ptr %352, align 8, !tbaa !49
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds ptr, ptr %381, i64 %383
  store ptr %380, ptr %384, align 8, !tbaa !5
  %385 = add nsw i32 %382, 1
  store i32 %385, ptr %352, align 8, !tbaa !49
  %386 = getelementptr inbounds i8, ptr %.3471749, i64 40
  %.3471 = load ptr, ptr %386, align 8, !tbaa !5
  %.not563 = icmp eq ptr %.3471, null
  br i1 %.not563, label %._crit_edge752, label %353, !llvm.loop !72

._crit_edge752:                                   ; preds = %._crit_edge746, %._crit_edge741
  %387 = load ptr, ptr %0, align 8, !tbaa !5
  %388 = getelementptr inbounds i8, ptr %387, i64 304
  %389 = load ptr, ptr %388, align 8, !tbaa !58
  %390 = getelementptr inbounds i8, ptr %230, i64 248
  store ptr %389, ptr %390, align 8, !tbaa !60
  %391 = load ptr, ptr %0, align 8, !tbaa !5
  %392 = getelementptr inbounds i8, ptr %391, i64 304
  %393 = load ptr, ptr %392, align 8, !tbaa !58
  %.not564 = icmp eq ptr %393, null
  br i1 %.not564, label %.loopexit580.sink.split, label %.loopexit580.sink.split.sink.split

394:                                              ; preds = %.lr.ph825
  %395 = tail call ptr @new_NormEffect1(ptr noundef nonnull %.0530822) #5
  %396 = tail call noalias dereferenceable_or_null(24) ptr @calloc(i64 noundef 1, i64 noundef 24) #6
  %397 = getelementptr inbounds i8, ptr %395, i64 128
  store ptr %396, ptr %397, align 8, !tbaa !16
  %398 = getelementptr inbounds i8, ptr %5, i64 48
  %399 = load ptr, ptr %398, align 8, !tbaa !22
  %400 = load i32, ptr %399, align 4, !tbaa !23
  store i32 %400, ptr %396, align 4, !tbaa !23
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %401
  %403 = load i32, ptr %402, align 4, !tbaa !25
  %404 = icmp sgt i32 %403, 0
  br i1 %404, label %.lr.ph655, label %._crit_edge656

.lr.ph655:                                        ; preds = %394
  %405 = ptrtoint ptr %399 to i64
  %406 = ptrtoint ptr %396 to i64
  %407 = getelementptr inbounds i8, ptr %399, i64 4
  %408 = getelementptr inbounds i8, ptr %396, i64 4
  %409 = zext nneg i32 %403 to i64
  %min.iters.check997 = icmp ult i32 %403, 8
  %410 = sub i64 %406, %405
  %diff.check994 = icmp ult i64 %410, 32
  %or.cond1042 = or i1 %min.iters.check997, %diff.check994
  br i1 %or.cond1042, label %scalar.ph996.preheader, label %vector.ph998

vector.ph998:                                     ; preds = %.lr.ph655
  %n.vec1000 = and i64 %409, 2147483640
  br label %vector.body1002

vector.body1002:                                  ; preds = %vector.body1002, %vector.ph998
  %index1003 = phi i64 [ 0, %vector.ph998 ], [ %index.next1006, %vector.body1002 ]
  %411 = getelementptr inbounds [5 x i32], ptr %407, i64 0, i64 %index1003
  %412 = getelementptr inbounds i8, ptr %411, i64 16
  %wide.load1004 = load <4 x i32>, ptr %411, align 4, !tbaa !25
  %wide.load1005 = load <4 x i32>, ptr %412, align 4, !tbaa !25
  %413 = getelementptr inbounds [5 x i32], ptr %408, i64 0, i64 %index1003
  %414 = getelementptr inbounds i8, ptr %413, i64 16
  store <4 x i32> %wide.load1004, ptr %413, align 4, !tbaa !25
  store <4 x i32> %wide.load1005, ptr %414, align 4, !tbaa !25
  %index.next1006 = add nuw i64 %index1003, 8
  %415 = icmp eq i64 %index.next1006, %n.vec1000
  br i1 %415, label %middle.block995, label %vector.body1002, !llvm.loop !73

middle.block995:                                  ; preds = %vector.body1002
  %cmp.n1007 = icmp eq i64 %n.vec1000, %409
  br i1 %cmp.n1007, label %._crit_edge656, label %scalar.ph996.preheader

scalar.ph996.preheader:                           ; preds = %middle.block995, %.lr.ph655
  %indvars.iv841.ph = phi i64 [ 0, %.lr.ph655 ], [ %n.vec1000, %middle.block995 ]
  br label %scalar.ph996

scalar.ph996:                                     ; preds = %scalar.ph996.preheader, %scalar.ph996
  %indvars.iv841 = phi i64 [ %indvars.iv.next842, %scalar.ph996 ], [ %indvars.iv841.ph, %scalar.ph996.preheader ]
  %416 = getelementptr inbounds [5 x i32], ptr %407, i64 0, i64 %indvars.iv841
  %417 = load i32, ptr %416, align 4, !tbaa !25
  %418 = getelementptr inbounds [5 x i32], ptr %408, i64 0, i64 %indvars.iv841
  store i32 %417, ptr %418, align 4, !tbaa !25
  %indvars.iv.next842 = add nuw nsw i64 %indvars.iv841, 1
  %419 = icmp ult i64 %indvars.iv.next842, %409
  br i1 %419, label %scalar.ph996, label %._crit_edge656, !llvm.loop !74

._crit_edge656:                                   ; preds = %scalar.ph996, %middle.block995, %394
  %420 = getelementptr inbounds i8, ptr %395, i64 136
  store i32 1, ptr %420, align 8, !tbaa !21
  %421 = getelementptr inbounds i8, ptr %.0530822, i64 192
  %.4477657 = load ptr, ptr %421, align 8, !tbaa !5
  %.not551658 = icmp eq ptr %.4477657, null
  br i1 %.not551658, label %._crit_edge664, label %.lr.ph663

.lr.ph663:                                        ; preds = %._crit_edge656, %.lr.ph663
  %.4477661 = phi ptr [ %.4477, %.lr.ph663 ], [ %.4477657, %._crit_edge656 ]
  %.4491660 = phi i32 [ %.5492, %.lr.ph663 ], [ 0, %._crit_edge656 ]
  %.6503659 = phi i32 [ %.7504, %.lr.ph663 ], [ 0, %._crit_edge656 ]
  %422 = load i8, ptr %.4477661, align 8, !tbaa !36
  %.not557 = icmp eq i8 %422, 0
  %423 = zext i1 %.not557 to i32
  %.7504 = add nuw nsw i32 %.6503659, %423
  %not..not557 = xor i1 %.not557, true
  %424 = zext i1 %not..not557 to i32
  %.5492 = add nuw nsw i32 %.4491660, %424
  %425 = getelementptr inbounds i8, ptr %.4477661, i64 32
  %.4477 = load ptr, ptr %425, align 8, !tbaa !5
  %.not551 = icmp eq ptr %.4477, null
  br i1 %.not551, label %._crit_edge664, label %.lr.ph663, !llvm.loop !75

._crit_edge664:                                   ; preds = %.lr.ph663, %._crit_edge656
  %.6503.lcssa = phi i32 [ 0, %._crit_edge656 ], [ %.7504, %.lr.ph663 ]
  %.4491.lcssa = phi i32 [ 0, %._crit_edge656 ], [ %.5492, %.lr.ph663 ]
  %426 = zext nneg i32 %.6503.lcssa to i64
  %427 = tail call noalias ptr @calloc(i64 noundef %426, i64 noundef 24) #6
  %428 = getelementptr inbounds i8, ptr %395, i64 144
  store ptr %427, ptr %428, align 8, !tbaa !39
  %429 = zext nneg i32 %.4491.lcssa to i64
  %430 = tail call noalias ptr @calloc(i64 noundef %429, i64 noundef 24) #6
  %431 = getelementptr inbounds i8, ptr %395, i64 160
  store ptr %430, ptr %431, align 8, !tbaa !40
  %.5478671 = load ptr, ptr %421, align 8, !tbaa !5
  %.not552672 = icmp eq ptr %.5478671, null
  br i1 %.not552672, label %._crit_edge676, label %.lr.ph675

.lr.ph675:                                        ; preds = %._crit_edge664, %._crit_edge670
  %.5478673 = phi ptr [ %.5478, %._crit_edge670 ], [ %.5478671, %._crit_edge664 ]
  %.5478673978 = ptrtoint ptr %.5478673 to i64
  %432 = load i8, ptr %.5478673, align 8, !tbaa !36
  %.not556 = icmp eq i8 %432, 0
  %.929.v = select i1 %.not556, i64 152, i64 168
  %.929 = getelementptr inbounds i8, ptr %395, i64 %.929.v
  %.930 = select i1 %.not556, ptr %427, ptr %430
  %.930977 = ptrtoint ptr %.930 to i64
  %433 = load i32, ptr %.929, align 8, !tbaa !25
  %434 = add nsw i32 %433, 1
  store i32 %434, ptr %.929, align 8, !tbaa !25
  %435 = sext i32 %433 to i64
  %436 = getelementptr inbounds %struct._Fact, ptr %.930, i64 %435
  %437 = getelementptr inbounds i8, ptr %.5478673, i64 4
  %438 = load i32, ptr %437, align 4, !tbaa !41
  store i32 %438, ptr %436, align 4, !tbaa !23
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !25
  %442 = icmp sgt i32 %441, 0
  br i1 %442, label %.lr.ph669, label %._crit_edge670

.lr.ph669:                                        ; preds = %.lr.ph675
  %443 = getelementptr inbounds i8, ptr %.5478673, i64 8
  %444 = getelementptr inbounds i8, ptr %436, i64 4
  %445 = zext nneg i32 %441 to i64
  %min.iters.check982 = icmp ult i32 %441, 8
  br i1 %min.iters.check982, label %scalar.ph981.preheader, label %vector.memcheck976

vector.memcheck976:                               ; preds = %.lr.ph669
  %446 = add i64 %.930977, -4
  %447 = mul nsw i64 %435, 24
  %448 = add i64 %446, %447
  %449 = sub i64 %448, %.5478673978
  %diff.check979 = icmp ult i64 %449, 32
  br i1 %diff.check979, label %scalar.ph981.preheader, label %vector.ph983

vector.ph983:                                     ; preds = %vector.memcheck976
  %n.vec985 = and i64 %445, 2147483640
  br label %vector.body987

vector.body987:                                   ; preds = %vector.body987, %vector.ph983
  %index988 = phi i64 [ 0, %vector.ph983 ], [ %index.next991, %vector.body987 ]
  %450 = getelementptr inbounds [5 x i32], ptr %443, i64 0, i64 %index988
  %451 = getelementptr inbounds i8, ptr %450, i64 16
  %wide.load989 = load <4 x i32>, ptr %450, align 4, !tbaa !25
  %wide.load990 = load <4 x i32>, ptr %451, align 4, !tbaa !25
  %452 = getelementptr inbounds [5 x i32], ptr %444, i64 0, i64 %index988
  %453 = getelementptr inbounds i8, ptr %452, i64 16
  store <4 x i32> %wide.load989, ptr %452, align 4, !tbaa !25
  store <4 x i32> %wide.load990, ptr %453, align 4, !tbaa !25
  %index.next991 = add nuw i64 %index988, 8
  %454 = icmp eq i64 %index.next991, %n.vec985
  br i1 %454, label %middle.block980, label %vector.body987, !llvm.loop !76

middle.block980:                                  ; preds = %vector.body987
  %cmp.n992 = icmp eq i64 %n.vec985, %445
  br i1 %cmp.n992, label %._crit_edge670, label %scalar.ph981.preheader

scalar.ph981.preheader:                           ; preds = %middle.block980, %vector.memcheck976, %.lr.ph669
  %indvars.iv844.ph = phi i64 [ 0, %vector.memcheck976 ], [ 0, %.lr.ph669 ], [ %n.vec985, %middle.block980 ]
  br label %scalar.ph981

scalar.ph981:                                     ; preds = %scalar.ph981.preheader, %scalar.ph981
  %indvars.iv844 = phi i64 [ %indvars.iv.next845, %scalar.ph981 ], [ %indvars.iv844.ph, %scalar.ph981.preheader ]
  %455 = getelementptr inbounds [5 x i32], ptr %443, i64 0, i64 %indvars.iv844
  %456 = load i32, ptr %455, align 4, !tbaa !25
  %457 = getelementptr inbounds [5 x i32], ptr %444, i64 0, i64 %indvars.iv844
  store i32 %456, ptr %457, align 4, !tbaa !25
  %indvars.iv.next845 = add nuw nsw i64 %indvars.iv844, 1
  %458 = icmp ult i64 %indvars.iv.next845, %445
  br i1 %458, label %scalar.ph981, label %._crit_edge670, !llvm.loop !77

._crit_edge670:                                   ; preds = %scalar.ph981, %middle.block980, %.lr.ph675
  %459 = getelementptr inbounds i8, ptr %.5478673, i64 32
  %.5478 = load ptr, ptr %459, align 8, !tbaa !5
  %.not552 = icmp eq ptr %.5478, null
  br i1 %.not552, label %._crit_edge676, label %.lr.ph675, !llvm.loop !78

._crit_edge676:                                   ; preds = %._crit_edge670, %._crit_edge664
  %460 = getelementptr inbounds i8, ptr %.0530822, i64 200
  %.4472677 = load ptr, ptr %460, align 8, !tbaa !5
  %.not553678 = icmp eq ptr %.4472677, null
  br i1 %.not553678, label %._crit_edge683, label %.lr.ph682

.lr.ph682:                                        ; preds = %._crit_edge676, %.lr.ph682
  %.4472680 = phi ptr [ %.4472, %.lr.ph682 ], [ %.4472677, %._crit_edge676 ]
  %.8505679 = phi i32 [ %461, %.lr.ph682 ], [ 0, %._crit_edge676 ]
  %461 = add nuw nsw i32 %.8505679, 1
  %462 = getelementptr inbounds i8, ptr %.4472680, i64 40
  %.4472 = load ptr, ptr %462, align 8, !tbaa !5
  %.not553 = icmp eq ptr %.4472, null
  br i1 %.not553, label %._crit_edge683, label %.lr.ph682, !llvm.loop !79

._crit_edge683:                                   ; preds = %.lr.ph682, %._crit_edge676
  %.8505.lcssa = phi i32 [ 0, %._crit_edge676 ], [ %461, %.lr.ph682 ]
  %463 = zext nneg i32 %.8505.lcssa to i64
  %464 = tail call noalias ptr @calloc(i64 noundef %463, i64 noundef 4) #6
  %465 = getelementptr inbounds i8, ptr %395, i64 208
  store ptr %464, ptr %465, align 8, !tbaa !46
  %466 = tail call noalias ptr @calloc(i64 noundef %463, i64 noundef 24) #6
  %467 = getelementptr inbounds i8, ptr %395, i64 216
  store ptr %466, ptr %467, align 8, !tbaa !47
  %468 = tail call noalias ptr @calloc(i64 noundef %463, i64 noundef 8) #6
  %469 = getelementptr inbounds i8, ptr %395, i64 224
  store ptr %468, ptr %469, align 8, !tbaa !48
  %.5689 = load ptr, ptr %460, align 8, !tbaa !5
  %.not554690 = icmp eq ptr %.5689, null
  br i1 %.not554690, label %._crit_edge694, label %.lr.ph693

.lr.ph693:                                        ; preds = %._crit_edge683
  %470 = getelementptr inbounds i8, ptr %395, i64 232
  %.pre874 = load i32, ptr %470, align 8, !tbaa !49
  br label %471

471:                                              ; preds = %.lr.ph693, %._crit_edge688
  %472 = phi i32 [ %.pre874, %.lr.ph693 ], [ %503, %._crit_edge688 ]
  %.5691 = phi ptr [ %.5689, %.lr.ph693 ], [ %.5, %._crit_edge688 ]
  %473 = getelementptr inbounds i8, ptr %.5691, i64 24
  %474 = load i32, ptr %473, align 8, !tbaa !50
  %475 = load ptr, ptr %465, align 8, !tbaa !46
  %476 = sext i32 %472 to i64
  %477 = getelementptr inbounds i32, ptr %475, i64 %476
  store i32 %474, ptr %477, align 4, !tbaa !25
  %478 = load ptr, ptr %467, align 8, !tbaa !47
  %479 = load i32, ptr %470, align 8, !tbaa !49
  %480 = sext i32 %479 to i64
  %481 = getelementptr inbounds %struct._Fluent, ptr %478, i64 %480
  %482 = load i32, ptr %.5691, align 8, !tbaa !53
  store i32 %482, ptr %481, align 4, !tbaa !54
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %483
  %485 = load i32, ptr %484, align 4, !tbaa !25
  %486 = icmp sgt i32 %485, 0
  br i1 %486, label %.lr.ph687, label %._crit_edge688

.lr.ph687:                                        ; preds = %471
  %487 = getelementptr inbounds i8, ptr %.5691, i64 4
  %488 = getelementptr inbounds i8, ptr %481, i64 4
  br label %489

489:                                              ; preds = %.lr.ph687, %489
  %indvars.iv847 = phi i64 [ 0, %.lr.ph687 ], [ %indvars.iv.next848, %489 ]
  %490 = getelementptr inbounds [5 x i32], ptr %487, i64 0, i64 %indvars.iv847
  %491 = load i32, ptr %490, align 4, !tbaa !25
  %492 = getelementptr inbounds [5 x i32], ptr %488, i64 0, i64 %indvars.iv847
  store i32 %491, ptr %492, align 4, !tbaa !25
  %indvars.iv.next848 = add nuw nsw i64 %indvars.iv847, 1
  %493 = load i32, ptr %484, align 4, !tbaa !25
  %494 = sext i32 %493 to i64
  %495 = icmp slt i64 %indvars.iv.next848, %494
  br i1 %495, label %489, label %._crit_edge688, !llvm.loop !80

._crit_edge688:                                   ; preds = %489, %471
  %496 = getelementptr inbounds i8, ptr %.5691, i64 32
  %497 = load ptr, ptr %496, align 8, !tbaa !56
  %498 = tail call ptr @copy_Exp(ptr noundef %497)
  %499 = load ptr, ptr %469, align 8, !tbaa !48
  %500 = load i32, ptr %470, align 8, !tbaa !49
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds ptr, ptr %499, i64 %501
  store ptr %498, ptr %502, align 8, !tbaa !5
  %503 = add nsw i32 %500, 1
  store i32 %503, ptr %470, align 8, !tbaa !49
  %504 = getelementptr inbounds i8, ptr %.5691, i64 40
  %.5 = load ptr, ptr %504, align 8, !tbaa !5
  %.not554 = icmp eq ptr %.5, null
  br i1 %.not554, label %._crit_edge694, label %471, !llvm.loop !81

._crit_edge694:                                   ; preds = %._crit_edge688, %._crit_edge683
  %505 = load ptr, ptr %0, align 8, !tbaa !5
  %506 = getelementptr inbounds i8, ptr %505, i64 304
  %507 = load ptr, ptr %506, align 8, !tbaa !58
  %508 = getelementptr inbounds i8, ptr %395, i64 248
  store ptr %507, ptr %508, align 8, !tbaa !60
  %509 = load ptr, ptr %0, align 8, !tbaa !5
  %510 = getelementptr inbounds i8, ptr %509, i64 304
  %511 = load ptr, ptr %510, align 8, !tbaa !58
  %.not555 = icmp eq ptr %511, null
  br i1 %.not555, label %.loopexit580.sink.split, label %.loopexit580.sink.split.sink.split

512:                                              ; preds = %.lr.ph825
  %513 = tail call ptr @new_NormEffect1(ptr noundef nonnull %.0530822) #5
  %514 = tail call noalias dereferenceable_or_null(4) ptr @calloc(i64 noundef 1, i64 noundef 4) #6
  %515 = getelementptr inbounds i8, ptr %513, i64 176
  store ptr %514, ptr %515, align 8, !tbaa !18
  %516 = tail call noalias dereferenceable_or_null(8) ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %517 = getelementptr inbounds i8, ptr %513, i64 184
  store ptr %516, ptr %517, align 8, !tbaa !19
  %518 = tail call noalias dereferenceable_or_null(8) ptr @calloc(i64 noundef 1, i64 noundef 8) #6
  %519 = getelementptr inbounds i8, ptr %513, i64 192
  store ptr %518, ptr %519, align 8, !tbaa !20
  %520 = getelementptr inbounds i8, ptr %5, i64 72
  %521 = load i32, ptr %520, align 8, !tbaa !27
  store i32 %521, ptr %514, align 4, !tbaa !25
  %522 = getelementptr inbounds i8, ptr %5, i64 80
  %523 = load ptr, ptr %522, align 8, !tbaa !29
  %524 = tail call ptr @copy_Exp(ptr noundef %523)
  %525 = load ptr, ptr %517, align 8, !tbaa !19
  store ptr %524, ptr %525, align 8, !tbaa !5
  %526 = getelementptr inbounds i8, ptr %5, i64 88
  %527 = load ptr, ptr %526, align 8, !tbaa !30
  %528 = tail call ptr @copy_Exp(ptr noundef %527)
  %529 = load ptr, ptr %519, align 8, !tbaa !20
  store ptr %528, ptr %529, align 8, !tbaa !5
  %530 = getelementptr inbounds i8, ptr %513, i64 200
  store i32 1, ptr %530, align 8, !tbaa !28
  %531 = getelementptr inbounds i8, ptr %.0530822, i64 192
  %.6479615 = load ptr, ptr %531, align 8, !tbaa !5
  %.not544616 = icmp eq ptr %.6479615, null
  br i1 %.not544616, label %._crit_edge622, label %.lr.ph621

.lr.ph621:                                        ; preds = %512, %.lr.ph621
  %.6479619 = phi ptr [ %.6479, %.lr.ph621 ], [ %.6479615, %512 ]
  %.6493618 = phi i32 [ %.7494, %.lr.ph621 ], [ 0, %512 ]
  %.9506617 = phi i32 [ %.10, %.lr.ph621 ], [ 0, %512 ]
  %532 = load i8, ptr %.6479619, align 8, !tbaa !36
  %.not550 = icmp eq i8 %532, 0
  %533 = zext i1 %.not550 to i32
  %.10 = add nuw nsw i32 %.9506617, %533
  %not..not550 = xor i1 %.not550, true
  %534 = zext i1 %not..not550 to i32
  %.7494 = add nuw nsw i32 %.6493618, %534
  %535 = getelementptr inbounds i8, ptr %.6479619, i64 32
  %.6479 = load ptr, ptr %535, align 8, !tbaa !5
  %.not544 = icmp eq ptr %.6479, null
  br i1 %.not544, label %._crit_edge622, label %.lr.ph621, !llvm.loop !82

._crit_edge622:                                   ; preds = %.lr.ph621, %512
  %.9506.lcssa = phi i32 [ 0, %512 ], [ %.10, %.lr.ph621 ]
  %.6493.lcssa = phi i32 [ 0, %512 ], [ %.7494, %.lr.ph621 ]
  %536 = zext nneg i32 %.9506.lcssa to i64
  %537 = tail call noalias ptr @calloc(i64 noundef %536, i64 noundef 24) #6
  %538 = getelementptr inbounds i8, ptr %513, i64 144
  store ptr %537, ptr %538, align 8, !tbaa !39
  %539 = zext nneg i32 %.6493.lcssa to i64
  %540 = tail call noalias ptr @calloc(i64 noundef %539, i64 noundef 24) #6
  %541 = getelementptr inbounds i8, ptr %513, i64 160
  store ptr %540, ptr %541, align 8, !tbaa !40
  %.7480629 = load ptr, ptr %531, align 8, !tbaa !5
  %.not545630 = icmp eq ptr %.7480629, null
  br i1 %.not545630, label %._crit_edge634, label %.lr.ph633

.lr.ph633:                                        ; preds = %._crit_edge622, %._crit_edge628
  %.7480631 = phi ptr [ %.7480, %._crit_edge628 ], [ %.7480629, %._crit_edge622 ]
  %.74806311010 = ptrtoint ptr %.7480631 to i64
  %542 = load i8, ptr %.7480631, align 8, !tbaa !36
  %.not549 = icmp eq i8 %542, 0
  %.931.v = select i1 %.not549, i64 152, i64 168
  %.931 = getelementptr inbounds i8, ptr %513, i64 %.931.v
  %.932 = select i1 %.not549, ptr %537, ptr %540
  %.9321009 = ptrtoint ptr %.932 to i64
  %543 = load i32, ptr %.931, align 8, !tbaa !25
  %544 = add nsw i32 %543, 1
  store i32 %544, ptr %.931, align 8, !tbaa !25
  %545 = sext i32 %543 to i64
  %546 = getelementptr inbounds %struct._Fact, ptr %.932, i64 %545
  %547 = getelementptr inbounds i8, ptr %.7480631, i64 4
  %548 = load i32, ptr %547, align 4, !tbaa !41
  store i32 %548, ptr %546, align 4, !tbaa !23
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %549
  %551 = load i32, ptr %550, align 4, !tbaa !25
  %552 = icmp sgt i32 %551, 0
  br i1 %552, label %.lr.ph627, label %._crit_edge628

.lr.ph627:                                        ; preds = %.lr.ph633
  %553 = getelementptr inbounds i8, ptr %.7480631, i64 8
  %554 = getelementptr inbounds i8, ptr %546, i64 4
  %555 = zext nneg i32 %551 to i64
  %min.iters.check1014 = icmp ult i32 %551, 8
  br i1 %min.iters.check1014, label %scalar.ph1013.preheader, label %vector.memcheck1008

vector.memcheck1008:                              ; preds = %.lr.ph627
  %556 = add i64 %.9321009, -4
  %557 = mul nsw i64 %545, 24
  %558 = add i64 %556, %557
  %559 = sub i64 %558, %.74806311010
  %diff.check1011 = icmp ult i64 %559, 32
  br i1 %diff.check1011, label %scalar.ph1013.preheader, label %vector.ph1015

vector.ph1015:                                    ; preds = %vector.memcheck1008
  %n.vec1017 = and i64 %555, 2147483640
  br label %vector.body1019

vector.body1019:                                  ; preds = %vector.body1019, %vector.ph1015
  %index1020 = phi i64 [ 0, %vector.ph1015 ], [ %index.next1023, %vector.body1019 ]
  %560 = getelementptr inbounds [5 x i32], ptr %553, i64 0, i64 %index1020
  %561 = getelementptr inbounds i8, ptr %560, i64 16
  %wide.load1021 = load <4 x i32>, ptr %560, align 4, !tbaa !25
  %wide.load1022 = load <4 x i32>, ptr %561, align 4, !tbaa !25
  %562 = getelementptr inbounds [5 x i32], ptr %554, i64 0, i64 %index1020
  %563 = getelementptr inbounds i8, ptr %562, i64 16
  store <4 x i32> %wide.load1021, ptr %562, align 4, !tbaa !25
  store <4 x i32> %wide.load1022, ptr %563, align 4, !tbaa !25
  %index.next1023 = add nuw i64 %index1020, 8
  %564 = icmp eq i64 %index.next1023, %n.vec1017
  br i1 %564, label %middle.block1012, label %vector.body1019, !llvm.loop !83

middle.block1012:                                 ; preds = %vector.body1019
  %cmp.n1024 = icmp eq i64 %n.vec1017, %555
  br i1 %cmp.n1024, label %._crit_edge628, label %scalar.ph1013.preheader

scalar.ph1013.preheader:                          ; preds = %middle.block1012, %vector.memcheck1008, %.lr.ph627
  %indvars.iv835.ph = phi i64 [ 0, %vector.memcheck1008 ], [ 0, %.lr.ph627 ], [ %n.vec1017, %middle.block1012 ]
  br label %scalar.ph1013

scalar.ph1013:                                    ; preds = %scalar.ph1013.preheader, %scalar.ph1013
  %indvars.iv835 = phi i64 [ %indvars.iv.next836, %scalar.ph1013 ], [ %indvars.iv835.ph, %scalar.ph1013.preheader ]
  %565 = getelementptr inbounds [5 x i32], ptr %553, i64 0, i64 %indvars.iv835
  %566 = load i32, ptr %565, align 4, !tbaa !25
  %567 = getelementptr inbounds [5 x i32], ptr %554, i64 0, i64 %indvars.iv835
  store i32 %566, ptr %567, align 4, !tbaa !25
  %indvars.iv.next836 = add nuw nsw i64 %indvars.iv835, 1
  %568 = icmp ult i64 %indvars.iv.next836, %555
  br i1 %568, label %scalar.ph1013, label %._crit_edge628, !llvm.loop !84

._crit_edge628:                                   ; preds = %scalar.ph1013, %middle.block1012, %.lr.ph633
  %569 = getelementptr inbounds i8, ptr %.7480631, i64 32
  %.7480 = load ptr, ptr %569, align 8, !tbaa !5
  %.not545 = icmp eq ptr %.7480, null
  br i1 %.not545, label %._crit_edge634, label %.lr.ph633, !llvm.loop !85

._crit_edge634:                                   ; preds = %._crit_edge628, %._crit_edge622
  %570 = getelementptr inbounds i8, ptr %.0530822, i64 200
  %.6635 = load ptr, ptr %570, align 8, !tbaa !5
  %.not546636 = icmp eq ptr %.6635, null
  br i1 %.not546636, label %._crit_edge641, label %.lr.ph640

.lr.ph640:                                        ; preds = %._crit_edge634, %.lr.ph640
  %.6638 = phi ptr [ %.6, %.lr.ph640 ], [ %.6635, %._crit_edge634 ]
  %.11637 = phi i32 [ %571, %.lr.ph640 ], [ 0, %._crit_edge634 ]
  %571 = add nuw nsw i32 %.11637, 1
  %572 = getelementptr inbounds i8, ptr %.6638, i64 40
  %.6 = load ptr, ptr %572, align 8, !tbaa !5
  %.not546 = icmp eq ptr %.6, null
  br i1 %.not546, label %._crit_edge641, label %.lr.ph640, !llvm.loop !86

._crit_edge641:                                   ; preds = %.lr.ph640, %._crit_edge634
  %.11.lcssa = phi i32 [ 0, %._crit_edge634 ], [ %571, %.lr.ph640 ]
  %573 = zext nneg i32 %.11.lcssa to i64
  %574 = tail call noalias ptr @calloc(i64 noundef %573, i64 noundef 4) #6
  %575 = getelementptr inbounds i8, ptr %513, i64 208
  store ptr %574, ptr %575, align 8, !tbaa !46
  %576 = tail call noalias ptr @calloc(i64 noundef %573, i64 noundef 24) #6
  %577 = getelementptr inbounds i8, ptr %513, i64 216
  store ptr %576, ptr %577, align 8, !tbaa !47
  %578 = tail call noalias ptr @calloc(i64 noundef %573, i64 noundef 8) #6
  %579 = getelementptr inbounds i8, ptr %513, i64 224
  store ptr %578, ptr %579, align 8, !tbaa !48
  %.7647 = load ptr, ptr %570, align 8, !tbaa !5
  %.not547648 = icmp eq ptr %.7647, null
  br i1 %.not547648, label %._crit_edge652, label %.lr.ph651

.lr.ph651:                                        ; preds = %._crit_edge641
  %580 = getelementptr inbounds i8, ptr %513, i64 232
  %.pre872 = load i32, ptr %580, align 8, !tbaa !49
  br label %581

581:                                              ; preds = %.lr.ph651, %._crit_edge646
  %582 = phi i32 [ %.pre872, %.lr.ph651 ], [ %613, %._crit_edge646 ]
  %.7649 = phi ptr [ %.7647, %.lr.ph651 ], [ %.7, %._crit_edge646 ]
  %583 = getelementptr inbounds i8, ptr %.7649, i64 24
  %584 = load i32, ptr %583, align 8, !tbaa !50
  %585 = load ptr, ptr %575, align 8, !tbaa !46
  %586 = sext i32 %582 to i64
  %587 = getelementptr inbounds i32, ptr %585, i64 %586
  store i32 %584, ptr %587, align 4, !tbaa !25
  %588 = load ptr, ptr %577, align 8, !tbaa !47
  %589 = load i32, ptr %580, align 8, !tbaa !49
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds %struct._Fluent, ptr %588, i64 %590
  %592 = load i32, ptr %.7649, align 8, !tbaa !53
  store i32 %592, ptr %591, align 4, !tbaa !54
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %593
  %595 = load i32, ptr %594, align 4, !tbaa !25
  %596 = icmp sgt i32 %595, 0
  br i1 %596, label %.lr.ph645, label %._crit_edge646

.lr.ph645:                                        ; preds = %581
  %597 = getelementptr inbounds i8, ptr %.7649, i64 4
  %598 = getelementptr inbounds i8, ptr %591, i64 4
  br label %599

599:                                              ; preds = %.lr.ph645, %599
  %indvars.iv838 = phi i64 [ 0, %.lr.ph645 ], [ %indvars.iv.next839, %599 ]
  %600 = getelementptr inbounds [5 x i32], ptr %597, i64 0, i64 %indvars.iv838
  %601 = load i32, ptr %600, align 4, !tbaa !25
  %602 = getelementptr inbounds [5 x i32], ptr %598, i64 0, i64 %indvars.iv838
  store i32 %601, ptr %602, align 4, !tbaa !25
  %indvars.iv.next839 = add nuw nsw i64 %indvars.iv838, 1
  %603 = load i32, ptr %594, align 4, !tbaa !25
  %604 = sext i32 %603 to i64
  %605 = icmp slt i64 %indvars.iv.next839, %604
  br i1 %605, label %599, label %._crit_edge646, !llvm.loop !87

._crit_edge646:                                   ; preds = %599, %581
  %606 = getelementptr inbounds i8, ptr %.7649, i64 32
  %607 = load ptr, ptr %606, align 8, !tbaa !56
  %608 = tail call ptr @copy_Exp(ptr noundef %607)
  %609 = load ptr, ptr %579, align 8, !tbaa !48
  %610 = load i32, ptr %580, align 8, !tbaa !49
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds ptr, ptr %609, i64 %611
  store ptr %608, ptr %612, align 8, !tbaa !5
  %613 = add nsw i32 %610, 1
  store i32 %613, ptr %580, align 8, !tbaa !49
  %614 = getelementptr inbounds i8, ptr %.7649, i64 40
  %.7 = load ptr, ptr %614, align 8, !tbaa !5
  %.not547 = icmp eq ptr %.7, null
  br i1 %.not547, label %._crit_edge652, label %581, !llvm.loop !88

._crit_edge652:                                   ; preds = %._crit_edge646, %._crit_edge641
  %615 = load ptr, ptr %0, align 8, !tbaa !5
  %616 = getelementptr inbounds i8, ptr %615, i64 304
  %617 = load ptr, ptr %616, align 8, !tbaa !58
  %618 = getelementptr inbounds i8, ptr %513, i64 248
  store ptr %617, ptr %618, align 8, !tbaa !60
  %619 = load ptr, ptr %0, align 8, !tbaa !5
  %620 = getelementptr inbounds i8, ptr %619, i64 304
  %621 = load ptr, ptr %620, align 8, !tbaa !58
  %.not548 = icmp eq ptr %621, null
  br i1 %.not548, label %.loopexit580.sink.split, label %.loopexit580.sink.split.sink.split

622:                                              ; preds = %.lr.ph825
  %623 = tail call ptr @new_NormEffect1(ptr noundef nonnull %.0530822) #5
  %624 = getelementptr inbounds i8, ptr %.0530822, i64 192
  %.8481581 = load ptr, ptr %624, align 8, !tbaa !5
  %.not537582 = icmp eq ptr %.8481581, null
  br i1 %.not537582, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %622, %.lr.ph
  %.8481585 = phi ptr [ %.8481, %.lr.ph ], [ %.8481581, %622 ]
  %.8495584 = phi i32 [ %.9496, %.lr.ph ], [ 0, %622 ]
  %.12583 = phi i32 [ %.13, %.lr.ph ], [ 0, %622 ]
  %625 = load i8, ptr %.8481585, align 8, !tbaa !36
  %.not543 = icmp eq i8 %625, 0
  %626 = zext i1 %.not543 to i32
  %.13 = add nuw nsw i32 %.12583, %626
  %not..not543 = xor i1 %.not543, true
  %627 = zext i1 %not..not543 to i32
  %.9496 = add nuw nsw i32 %.8495584, %627
  %628 = getelementptr inbounds i8, ptr %.8481585, i64 32
  %.8481 = load ptr, ptr %628, align 8, !tbaa !5
  %.not537 = icmp eq ptr %.8481, null
  br i1 %.not537, label %._crit_edge, label %.lr.ph, !llvm.loop !89

._crit_edge:                                      ; preds = %.lr.ph, %622
  %.12.lcssa = phi i32 [ 0, %622 ], [ %.13, %.lr.ph ]
  %.8495.lcssa = phi i32 [ 0, %622 ], [ %.9496, %.lr.ph ]
  %629 = zext nneg i32 %.12.lcssa to i64
  %630 = tail call noalias ptr @calloc(i64 noundef %629, i64 noundef 24) #6
  %631 = getelementptr inbounds i8, ptr %623, i64 144
  store ptr %630, ptr %631, align 8, !tbaa !39
  %632 = zext nneg i32 %.8495.lcssa to i64
  %633 = tail call noalias ptr @calloc(i64 noundef %632, i64 noundef 24) #6
  %634 = getelementptr inbounds i8, ptr %623, i64 160
  store ptr %633, ptr %634, align 8, !tbaa !40
  %.9482591 = load ptr, ptr %624, align 8, !tbaa !5
  %.not538592 = icmp eq ptr %.9482591, null
  br i1 %.not538592, label %._crit_edge596, label %.lr.ph595

.lr.ph595:                                        ; preds = %._crit_edge, %._crit_edge590
  %.9482593 = phi ptr [ %.9482, %._crit_edge590 ], [ %.9482591, %._crit_edge ]
  %.94825931027 = ptrtoint ptr %.9482593 to i64
  %635 = load i8, ptr %.9482593, align 8, !tbaa !36
  %.not542 = icmp eq i8 %635, 0
  %.933.v = select i1 %.not542, i64 152, i64 168
  %.933 = getelementptr inbounds i8, ptr %623, i64 %.933.v
  %.934 = select i1 %.not542, ptr %630, ptr %633
  %.9341026 = ptrtoint ptr %.934 to i64
  %636 = load i32, ptr %.933, align 8, !tbaa !25
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr %.933, align 8, !tbaa !25
  %638 = sext i32 %636 to i64
  %639 = getelementptr inbounds %struct._Fact, ptr %.934, i64 %638
  %640 = getelementptr inbounds i8, ptr %.9482593, i64 4
  %641 = load i32, ptr %640, align 4, !tbaa !41
  store i32 %641, ptr %639, align 4, !tbaa !23
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %642
  %644 = load i32, ptr %643, align 4, !tbaa !25
  %645 = icmp sgt i32 %644, 0
  br i1 %645, label %.lr.ph589, label %._crit_edge590

.lr.ph589:                                        ; preds = %.lr.ph595
  %646 = getelementptr inbounds i8, ptr %.9482593, i64 8
  %647 = getelementptr inbounds i8, ptr %639, i64 4
  %648 = zext nneg i32 %644 to i64
  %min.iters.check1031 = icmp ult i32 %644, 8
  br i1 %min.iters.check1031, label %scalar.ph1030.preheader, label %vector.memcheck1025

vector.memcheck1025:                              ; preds = %.lr.ph589
  %649 = add i64 %.9341026, -4
  %650 = mul nsw i64 %638, 24
  %651 = add i64 %649, %650
  %652 = sub i64 %651, %.94825931027
  %diff.check1028 = icmp ult i64 %652, 32
  br i1 %diff.check1028, label %scalar.ph1030.preheader, label %vector.ph1032

vector.ph1032:                                    ; preds = %vector.memcheck1025
  %n.vec1034 = and i64 %648, 2147483640
  br label %vector.body1036

vector.body1036:                                  ; preds = %vector.body1036, %vector.ph1032
  %index1037 = phi i64 [ 0, %vector.ph1032 ], [ %index.next1040, %vector.body1036 ]
  %653 = getelementptr inbounds [5 x i32], ptr %646, i64 0, i64 %index1037
  %654 = getelementptr inbounds i8, ptr %653, i64 16
  %wide.load1038 = load <4 x i32>, ptr %653, align 4, !tbaa !25
  %wide.load1039 = load <4 x i32>, ptr %654, align 4, !tbaa !25
  %655 = getelementptr inbounds [5 x i32], ptr %647, i64 0, i64 %index1037
  %656 = getelementptr inbounds i8, ptr %655, i64 16
  store <4 x i32> %wide.load1038, ptr %655, align 4, !tbaa !25
  store <4 x i32> %wide.load1039, ptr %656, align 4, !tbaa !25
  %index.next1040 = add nuw i64 %index1037, 8
  %657 = icmp eq i64 %index.next1040, %n.vec1034
  br i1 %657, label %middle.block1029, label %vector.body1036, !llvm.loop !90

middle.block1029:                                 ; preds = %vector.body1036
  %cmp.n1041 = icmp eq i64 %n.vec1034, %648
  br i1 %cmp.n1041, label %._crit_edge590, label %scalar.ph1030.preheader

scalar.ph1030.preheader:                          ; preds = %middle.block1029, %vector.memcheck1025, %.lr.ph589
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck1025 ], [ 0, %.lr.ph589 ], [ %n.vec1034, %middle.block1029 ]
  br label %scalar.ph1030

scalar.ph1030:                                    ; preds = %scalar.ph1030.preheader, %scalar.ph1030
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph1030 ], [ %indvars.iv.ph, %scalar.ph1030.preheader ]
  %658 = getelementptr inbounds [5 x i32], ptr %646, i64 0, i64 %indvars.iv
  %659 = load i32, ptr %658, align 4, !tbaa !25
  %660 = getelementptr inbounds [5 x i32], ptr %647, i64 0, i64 %indvars.iv
  store i32 %659, ptr %660, align 4, !tbaa !25
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %661 = icmp ult i64 %indvars.iv.next, %648
  br i1 %661, label %scalar.ph1030, label %._crit_edge590, !llvm.loop !91

._crit_edge590:                                   ; preds = %scalar.ph1030, %middle.block1029, %.lr.ph595
  %662 = getelementptr inbounds i8, ptr %.9482593, i64 32
  %.9482 = load ptr, ptr %662, align 8, !tbaa !5
  %.not538 = icmp eq ptr %.9482, null
  br i1 %.not538, label %._crit_edge596, label %.lr.ph595, !llvm.loop !92

._crit_edge596:                                   ; preds = %._crit_edge590, %._crit_edge
  %663 = getelementptr inbounds i8, ptr %.0530822, i64 200
  %.8597 = load ptr, ptr %663, align 8, !tbaa !5
  %.not539598 = icmp eq ptr %.8597, null
  br i1 %.not539598, label %._crit_edge603, label %.lr.ph602

.lr.ph602:                                        ; preds = %._crit_edge596, %.lr.ph602
  %.8600 = phi ptr [ %.8, %.lr.ph602 ], [ %.8597, %._crit_edge596 ]
  %.14599 = phi i32 [ %664, %.lr.ph602 ], [ 0, %._crit_edge596 ]
  %664 = add nuw nsw i32 %.14599, 1
  %665 = getelementptr inbounds i8, ptr %.8600, i64 40
  %.8 = load ptr, ptr %665, align 8, !tbaa !5
  %.not539 = icmp eq ptr %.8, null
  br i1 %.not539, label %._crit_edge603, label %.lr.ph602, !llvm.loop !93

._crit_edge603:                                   ; preds = %.lr.ph602, %._crit_edge596
  %.14.lcssa = phi i32 [ 0, %._crit_edge596 ], [ %664, %.lr.ph602 ]
  %666 = zext nneg i32 %.14.lcssa to i64
  %667 = tail call noalias ptr @calloc(i64 noundef %666, i64 noundef 4) #6
  %668 = getelementptr inbounds i8, ptr %623, i64 208
  store ptr %667, ptr %668, align 8, !tbaa !46
  %669 = tail call noalias ptr @calloc(i64 noundef %666, i64 noundef 24) #6
  %670 = getelementptr inbounds i8, ptr %623, i64 216
  store ptr %669, ptr %670, align 8, !tbaa !47
  %671 = tail call noalias ptr @calloc(i64 noundef %666, i64 noundef 8) #6
  %672 = getelementptr inbounds i8, ptr %623, i64 224
  store ptr %671, ptr %672, align 8, !tbaa !48
  %.9609 = load ptr, ptr %663, align 8, !tbaa !5
  %.not540610 = icmp eq ptr %.9609, null
  br i1 %.not540610, label %._crit_edge614, label %.lr.ph613

.lr.ph613:                                        ; preds = %._crit_edge603
  %673 = getelementptr inbounds i8, ptr %623, i64 232
  %.pre = load i32, ptr %673, align 8, !tbaa !49
  br label %674

674:                                              ; preds = %.lr.ph613, %._crit_edge608
  %675 = phi i32 [ %.pre, %.lr.ph613 ], [ %706, %._crit_edge608 ]
  %.9611 = phi ptr [ %.9609, %.lr.ph613 ], [ %.9, %._crit_edge608 ]
  %676 = getelementptr inbounds i8, ptr %.9611, i64 24
  %677 = load i32, ptr %676, align 8, !tbaa !50
  %678 = load ptr, ptr %668, align 8, !tbaa !46
  %679 = sext i32 %675 to i64
  %680 = getelementptr inbounds i32, ptr %678, i64 %679
  store i32 %677, ptr %680, align 4, !tbaa !25
  %681 = load ptr, ptr %670, align 8, !tbaa !47
  %682 = load i32, ptr %673, align 8, !tbaa !49
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds %struct._Fluent, ptr %681, i64 %683
  %685 = load i32, ptr %.9611, align 8, !tbaa !53
  store i32 %685, ptr %684, align 4, !tbaa !54
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %686
  %688 = load i32, ptr %687, align 4, !tbaa !25
  %689 = icmp sgt i32 %688, 0
  br i1 %689, label %.lr.ph607, label %._crit_edge608

.lr.ph607:                                        ; preds = %674
  %690 = getelementptr inbounds i8, ptr %.9611, i64 4
  %691 = getelementptr inbounds i8, ptr %684, i64 4
  br label %692

692:                                              ; preds = %.lr.ph607, %692
  %indvars.iv832 = phi i64 [ 0, %.lr.ph607 ], [ %indvars.iv.next833, %692 ]
  %693 = getelementptr inbounds [5 x i32], ptr %690, i64 0, i64 %indvars.iv832
  %694 = load i32, ptr %693, align 4, !tbaa !25
  %695 = getelementptr inbounds [5 x i32], ptr %691, i64 0, i64 %indvars.iv832
  store i32 %694, ptr %695, align 4, !tbaa !25
  %indvars.iv.next833 = add nuw nsw i64 %indvars.iv832, 1
  %696 = load i32, ptr %687, align 4, !tbaa !25
  %697 = sext i32 %696 to i64
  %698 = icmp slt i64 %indvars.iv.next833, %697
  br i1 %698, label %692, label %._crit_edge608, !llvm.loop !94

._crit_edge608:                                   ; preds = %692, %674
  %699 = getelementptr inbounds i8, ptr %.9611, i64 32
  %700 = load ptr, ptr %699, align 8, !tbaa !56
  %701 = tail call ptr @copy_Exp(ptr noundef %700)
  %702 = load ptr, ptr %672, align 8, !tbaa !48
  %703 = load i32, ptr %673, align 8, !tbaa !49
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds ptr, ptr %702, i64 %704
  store ptr %701, ptr %705, align 8, !tbaa !5
  %706 = add nsw i32 %703, 1
  store i32 %706, ptr %673, align 8, !tbaa !49
  %707 = getelementptr inbounds i8, ptr %.9611, i64 40
  %.9 = load ptr, ptr %707, align 8, !tbaa !5
  %.not540 = icmp eq ptr %.9, null
  br i1 %.not540, label %._crit_edge614, label %674, !llvm.loop !95

._crit_edge614:                                   ; preds = %._crit_edge608, %._crit_edge603
  %708 = load ptr, ptr %0, align 8, !tbaa !5
  %709 = getelementptr inbounds i8, ptr %708, i64 304
  %710 = load ptr, ptr %709, align 8, !tbaa !58
  %711 = getelementptr inbounds i8, ptr %623, i64 248
  store ptr %710, ptr %711, align 8, !tbaa !60
  %712 = load ptr, ptr %0, align 8, !tbaa !5
  %713 = getelementptr inbounds i8, ptr %712, i64 304
  %714 = load ptr, ptr %713, align 8, !tbaa !58
  %.not541 = icmp eq ptr %714, null
  br i1 %.not541, label %.loopexit580.sink.split, label %.loopexit580.sink.split.sink.split

715:                                              ; preds = %.lr.ph825
  %716 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.121)
  tail call void @exit(i32 noundef 1) #7
  unreachable

.loopexit580.sink.split.sink.split:               ; preds = %._crit_edge614, %._crit_edge652, %._crit_edge694, %._crit_edge752
  %.sink936 = phi ptr [ %393, %._crit_edge752 ], [ %511, %._crit_edge694 ], [ %621, %._crit_edge652 ], [ %714, %._crit_edge614 ]
  %.sink = phi ptr [ %230, %._crit_edge752 ], [ %395, %._crit_edge694 ], [ %513, %._crit_edge652 ], [ %623, %._crit_edge614 ]
  %717 = getelementptr inbounds i8, ptr %.sink936, i64 240
  store ptr %.sink, ptr %717, align 8, !tbaa !61
  %.pre871 = load ptr, ptr %0, align 8, !tbaa !5
  br label %.loopexit580.sink.split

.loopexit580.sink.split:                          ; preds = %.loopexit580.sink.split.sink.split, %._crit_edge614, %._crit_edge652, %._crit_edge694, %._crit_edge752
  %.sink925 = phi ptr [ %391, %._crit_edge752 ], [ %509, %._crit_edge694 ], [ %619, %._crit_edge652 ], [ %712, %._crit_edge614 ], [ %.pre871, %.loopexit580.sink.split.sink.split ]
  %.sink923 = phi ptr [ %230, %._crit_edge752 ], [ %395, %._crit_edge694 ], [ %513, %._crit_edge652 ], [ %623, %._crit_edge614 ], [ %.sink, %.loopexit580.sink.split.sink.split ]
  %718 = getelementptr inbounds i8, ptr %.sink925, i64 304
  store ptr %.sink923, ptr %718, align 8, !tbaa !58
  br label %.loopexit580

.loopexit580:                                     ; preds = %225, %.loopexit580.sink.split, %7, %.lr.ph825
  %719 = getelementptr inbounds i8, ptr %.0530822, i64 208
  %.0530 = load ptr, ptr %719, align 8, !tbaa !5
  %.not = icmp eq ptr %.0530, null
  br i1 %.not, label %._crit_edge826, label %.lr.ph825, !llvm.loop !96

._crit_edge826:                                   ; preds = %.loopexit580, %2
  ret void
}

declare ptr @new_NormEffect1(ptr noundef) local_unnamed_addr #4

attributes #0 = { 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 #1 = { 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 #2 = { mustprogress nofree nounwind willreturn allockind("alloc,zeroed") allocsize(0,1) memory(inaccessiblemem: readwrite) "alloc-family"="malloc" "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 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 #4 = { "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 #5 = { nounwind }
attributes #6 = { nounwind allocsize(0,1) }
attributes #7 = { 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 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !6, i64 184}
!10 = !{!"_Effect", !11, i64 0, !7, i64 4, !7, i64 64, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208, !6, i64 216}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !11, i64 0}
!13 = !{!"_WffNode", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !11, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !7, i64 96}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !6, i64 128}
!17 = !{!"_NormEffect", !11, i64 0, !7, i64 4, !7, i64 64, !6, i64 128, !11, i64 136, !6, i64 144, !11, i64 152, !6, i64 160, !11, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !11, i64 200, !6, i64 208, !6, i64 216, !6, i64 224, !11, i64 232, !6, i64 240, !6, i64 248}
!18 = !{!17, !6, i64 176}
!19 = !{!17, !6, i64 184}
!20 = !{!17, !6, i64 192}
!21 = !{!17, !11, i64 136}
!22 = !{!13, !6, i64 48}
!23 = !{!24, !11, i64 0}
!24 = !{!"_Fact", !11, i64 0, !7, i64 4}
!25 = !{!11, !11, i64 0}
!26 = distinct !{!26, !15}
!27 = !{!13, !11, i64 72}
!28 = !{!17, !11, i64 200}
!29 = !{!13, !6, i64 80}
!30 = !{!13, !6, i64 88}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15, !33, !34}
!33 = !{!"llvm.loop.isvectorized", i32 1}
!34 = !{!"llvm.loop.unroll.runtime.disable"}
!35 = distinct !{!35, !15, !33}
!36 = !{!37, !7, i64 0}
!37 = !{!"_Literal", !7, i64 0, !24, i64 4, !6, i64 32, !6, i64 40}
!38 = distinct !{!38, !15}
!39 = !{!17, !6, i64 144}
!40 = !{!17, !6, i64 160}
!41 = !{!37, !11, i64 4}
!42 = distinct !{!42, !15, !33, !34}
!43 = distinct !{!43, !15, !33}
!44 = distinct !{!44, !15}
!45 = distinct !{!45, !15}
!46 = !{!17, !6, i64 208}
!47 = !{!17, !6, i64 216}
!48 = !{!17, !6, i64 224}
!49 = !{!17, !11, i64 232}
!50 = !{!51, !11, i64 24}
!51 = !{!"_NumericEffect", !52, i64 0, !11, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!52 = !{!"_Fluent", !11, i64 0, !7, i64 4}
!53 = !{!51, !11, i64 0}
!54 = !{!52, !11, i64 0}
!55 = distinct !{!55, !15}
!56 = !{!51, !6, i64 32}
!57 = distinct !{!57, !15}
!58 = !{!59, !6, i64 304}
!59 = !{!"_NormOperator", !6, i64 0, !11, i64 8, !7, i64 12, !7, i64 72, !7, i64 132, !11, i64 192, !7, i64 196, !6, i64 256, !11, i64 264, !6, i64 272, !6, i64 280, !6, i64 288, !11, i64 296, !6, i64 304, !7, i64 312}
!60 = !{!17, !6, i64 248}
!61 = !{!17, !6, i64 240}
!62 = distinct !{!62, !15}
!63 = distinct !{!63, !15}
!64 = distinct !{!64, !15}
!65 = distinct !{!65, !15}
!66 = distinct !{!66, !15}
!67 = distinct !{!67, !15, !33, !34}
!68 = distinct !{!68, !15, !33}
!69 = distinct !{!69, !15}
!70 = distinct !{!70, !15}
!71 = distinct !{!71, !15}
!72 = distinct !{!72, !15}
!73 = distinct !{!73, !15, !33, !34}
!74 = distinct !{!74, !15, !33}
!75 = distinct !{!75, !15}
!76 = distinct !{!76, !15, !33, !34}
!77 = distinct !{!77, !15, !33}
!78 = distinct !{!78, !15}
!79 = distinct !{!79, !15}
!80 = distinct !{!80, !15}
!81 = distinct !{!81, !15}
!82 = distinct !{!82, !15}
!83 = distinct !{!83, !15, !33, !34}
!84 = distinct !{!84, !15, !33}
!85 = distinct !{!85, !15}
!86 = distinct !{!86, !15}
!87 = distinct !{!87, !15}
!88 = distinct !{!88, !15}
!89 = distinct !{!89, !15}
!90 = distinct !{!90, !15, !33, !34}
!91 = distinct !{!91, !15, !33}
!92 = distinct !{!92, !15}
!93 = distinct !{!93, !15}
!94 = distinct !{!94, !15}
!95 = distinct !{!95, !15}
!96 = distinct !{!96, !15}


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