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

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

@gactions = external global ptr, align 8
@gnum_actions = external global i32, align 4
@garity = external global [50 x i32], align 16
@lpos = external dso_local global [50 x ptr], align 16
@lneg = external dso_local global [50 x ptr], align 16
@lindex = external dso_local global [50 x ptr], align 16
@lp = external dso_local global i32, align 4
@largs = external dso_local global [15 x i32], align 16
@gf_arity = external global [50 x i32], align 16
@lf = external dso_local global i32, align 4
@lf_args = external dso_local global [15 x i32], align 16
@lf_index = external dso_local global [50 x ptr], align 16
@lnum_effects = external dso_local global i32, align 4
@gtrash_actions = external global ptr, align 8
@.str.41 = external hidden unnamed_addr constant [63 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

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @fact_adress() #2

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

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

; Function Attrs: nounwind
declare void @free(ptr noundef) #5

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

; Function Attrs: nounwind uwtable
declare dso_local i32 @fluent_adress() #2

; Function Attrs: nounwind uwtable
define dso_local void @create_final_actions() #2 {
  %1 = alloca ptr, align 8
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i8, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %1) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %2) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #6
  %13 = load ptr, ptr @gactions, align 8, !tbaa !5
  store ptr %13, ptr %1, align 8, !tbaa !5
  store ptr null, ptr %2, align 8, !tbaa !5
  br label %14

14:                                               ; preds = %2398, %2397, %1667, %1417, %398, %0
  %15 = load ptr, ptr %1, align 8, !tbaa !5
  %16 = icmp ne ptr %15, null
  br i1 %16, label %17, label %2403

17:                                               ; preds = %14
  %18 = load ptr, ptr %1, align 8, !tbaa !5
  %19 = getelementptr inbounds %struct._Action, ptr %18, i32 0, i32 0
  %20 = load ptr, ptr %19, align 8, !tbaa !9
  %21 = icmp ne ptr %20, null
  br i1 %21, label %22, label %1418

22:                                               ; preds = %17
  %23 = load ptr, ptr %1, align 8, !tbaa !5
  %24 = getelementptr inbounds %struct._Action, ptr %23, i32 0, i32 0
  %25 = load ptr, ptr %24, align 8, !tbaa !9
  store ptr %25, ptr %4, align 8, !tbaa !5
  %26 = load ptr, ptr %4, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct._NormOperator, ptr %26, i32 0, i32 8
  %28 = load i32, ptr %27, align 8, !tbaa !12
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %30, label %38

30:                                               ; preds = %22
  %31 = load ptr, ptr %4, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct._NormOperator, ptr %31, i32 0, i32 8
  %33 = load i32, ptr %32, align 8, !tbaa !12
  %34 = sext i32 %33 to i64
  %35 = call noalias ptr @calloc(i64 noundef %34, i64 noundef 4) #7
  %36 = load ptr, ptr %1, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct._Action, ptr %36, i32 0, i32 7
  store ptr %35, ptr %37, align 8, !tbaa !14
  br label %38

38:                                               ; preds = %30, %22
  %39 = load ptr, ptr %1, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct._Action, ptr %39, i32 0, i32 8
  store i32 0, ptr %40, align 8, !tbaa !15
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %41

41:                                               ; preds = %145, %38
  %42 = load i32, ptr %6, align 4, !tbaa !16
  %43 = load ptr, ptr %4, align 8, !tbaa !5
  %44 = getelementptr inbounds %struct._NormOperator, ptr %43, i32 0, i32 8
  %45 = load i32, ptr %44, align 8, !tbaa !12
  %46 = icmp slt i32 %42, %45
  br i1 %46, label %47, label %148

47:                                               ; preds = %41
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct._NormOperator, ptr %48, i32 0, i32 7
  %50 = load ptr, ptr %49, align 8, !tbaa !17
  %51 = load i32, ptr %6, align 4, !tbaa !16
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds %struct._Fact, ptr %50, i64 %52
  %54 = getelementptr inbounds %struct._Fact, ptr %53, i32 0, i32 0
  %55 = load i32, ptr %54, align 4, !tbaa !18
  store i32 %55, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %56

56:                                               ; preds = %112, %47
  %57 = load i32, ptr %7, align 4, !tbaa !16
  %58 = load i32, ptr @lp, align 4, !tbaa !16
  %59 = sext i32 %58 to i64
  %60 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %59
  %61 = load i32, ptr %60, align 4, !tbaa !16
  %62 = icmp slt i32 %57, %61
  br i1 %62, label %63, label %115

63:                                               ; preds = %56
  %64 = load ptr, ptr %4, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct._NormOperator, ptr %64, i32 0, i32 7
  %66 = load ptr, ptr %65, align 8, !tbaa !17
  %67 = load i32, ptr %6, align 4, !tbaa !16
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds %struct._Fact, ptr %66, i64 %68
  %70 = getelementptr inbounds %struct._Fact, ptr %69, i32 0, i32 1
  %71 = load i32, ptr %7, align 4, !tbaa !16
  %72 = sext i32 %71 to i64
  %73 = getelementptr inbounds [5 x i32], ptr %70, i64 0, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !16
  %75 = icmp sge i32 %74, 0
  br i1 %75, label %76, label %88

76:                                               ; preds = %63
  %77 = load ptr, ptr %4, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct._NormOperator, ptr %77, i32 0, i32 7
  %79 = load ptr, ptr %78, align 8, !tbaa !17
  %80 = load i32, ptr %6, align 4, !tbaa !16
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds %struct._Fact, ptr %79, i64 %81
  %83 = getelementptr inbounds %struct._Fact, ptr %82, i32 0, i32 1
  %84 = load i32, ptr %7, align 4, !tbaa !16
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds [5 x i32], ptr %83, i64 0, i64 %85
  %87 = load i32, ptr %86, align 4, !tbaa !16
  br label %107

88:                                               ; preds = %63
  %89 = load ptr, ptr %1, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct._Action, ptr %89, i32 0, i32 6
  %91 = load ptr, ptr %4, align 8, !tbaa !5
  %92 = getelementptr inbounds %struct._NormOperator, ptr %91, i32 0, i32 7
  %93 = load ptr, ptr %92, align 8, !tbaa !17
  %94 = load i32, ptr %6, align 4, !tbaa !16
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds %struct._Fact, ptr %93, i64 %95
  %97 = getelementptr inbounds %struct._Fact, ptr %96, i32 0, i32 1
  %98 = load i32, ptr %7, align 4, !tbaa !16
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds [5 x i32], ptr %97, i64 0, i64 %99
  %101 = load i32, ptr %100, align 4, !tbaa !16
  %102 = add nsw i32 %101, 1
  %103 = mul nsw i32 %102, -1
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds [15 x i32], ptr %90, i64 0, i64 %104
  %106 = load i32, ptr %105, align 4, !tbaa !16
  br label %107

107:                                              ; preds = %88, %76
  %108 = phi i32 [ %87, %76 ], [ %106, %88 ]
  %109 = load i32, ptr %7, align 4, !tbaa !16
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %110
  store i32 %108, ptr %111, align 4, !tbaa !16
  br label %112

112:                                              ; preds = %107
  %113 = load i32, ptr %7, align 4, !tbaa !16
  %114 = add nsw i32 %113, 1
  store i32 %114, ptr %7, align 4, !tbaa !16
  br label %56, !llvm.loop !20

115:                                              ; preds = %56
  %116 = call i32 @fact_adress()
  store i32 %116, ptr %8, align 4, !tbaa !16
  %117 = load i32, ptr @lp, align 4, !tbaa !16
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %118
  %120 = load ptr, ptr %119, align 8, !tbaa !5
  %121 = load i32, ptr %8, align 4, !tbaa !16
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds i32, ptr %120, i64 %122
  %124 = load i32, ptr %123, align 4, !tbaa !16
  %125 = icmp ne i32 %124, 0
  br i1 %125, label %127, label %126

126:                                              ; preds = %115
  br label %145

127:                                              ; preds = %115
  %128 = load i32, ptr @lp, align 4, !tbaa !16
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %129
  %131 = load ptr, ptr %130, align 8, !tbaa !5
  %132 = load i32, ptr %8, align 4, !tbaa !16
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds i32, ptr %131, i64 %133
  %135 = load i32, ptr %134, align 4, !tbaa !16
  %136 = load ptr, ptr %1, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct._Action, ptr %136, i32 0, i32 7
  %138 = load ptr, ptr %137, align 8, !tbaa !14
  %139 = load ptr, ptr %1, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct._Action, ptr %139, i32 0, i32 8
  %141 = load i32, ptr %140, align 8, !tbaa !15
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %140, align 8, !tbaa !15
  %143 = sext i32 %141 to i64
  %144 = getelementptr inbounds i32, ptr %138, i64 %143
  store i32 %135, ptr %144, align 4, !tbaa !16
  br label %145

145:                                              ; preds = %127, %126
  %146 = load i32, ptr %6, align 4, !tbaa !16
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %6, align 4, !tbaa !16
  br label %41, !llvm.loop !22

148:                                              ; preds = %41
  %149 = load ptr, ptr %4, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct._NormOperator, ptr %149, i32 0, i32 12
  %151 = load i32, ptr %150, align 8, !tbaa !23
  %152 = icmp sgt i32 %151, 0
  br i1 %152, label %153, label %177

153:                                              ; preds = %148
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = getelementptr inbounds %struct._NormOperator, ptr %154, i32 0, i32 12
  %156 = load i32, ptr %155, align 8, !tbaa !23
  %157 = sext i32 %156 to i64
  %158 = call noalias ptr @calloc(i64 noundef %157, i64 noundef 4) #7
  %159 = load ptr, ptr %1, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct._Action, ptr %159, i32 0, i32 9
  store ptr %158, ptr %160, align 8, !tbaa !24
  %161 = load ptr, ptr %4, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct._NormOperator, ptr %161, i32 0, i32 12
  %163 = load i32, ptr %162, align 8, !tbaa !23
  %164 = sext i32 %163 to i64
  %165 = call noalias ptr @calloc(i64 noundef %164, i64 noundef 8) #7
  %166 = load ptr, ptr %1, align 8, !tbaa !5
  %167 = getelementptr inbounds %struct._Action, ptr %166, i32 0, i32 10
  store ptr %165, ptr %167, align 8, !tbaa !25
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct._NormOperator, ptr %168, i32 0, i32 12
  %170 = load i32, ptr %169, align 8, !tbaa !23
  %171 = sext i32 %170 to i64
  %172 = call noalias ptr @calloc(i64 noundef %171, i64 noundef 8) #7
  %173 = load ptr, ptr %1, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct._Action, ptr %173, i32 0, i32 11
  store ptr %172, ptr %174, align 8, !tbaa !26
  %175 = load ptr, ptr %1, align 8, !tbaa !5
  %176 = getelementptr inbounds %struct._Action, ptr %175, i32 0, i32 12
  store i32 0, ptr %176, align 8, !tbaa !27
  br label %177

177:                                              ; preds = %153, %148
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %178

178:                                              ; preds = %358, %177
  %179 = load i32, ptr %6, align 4, !tbaa !16
  %180 = load ptr, ptr %4, align 8, !tbaa !5
  %181 = getelementptr inbounds %struct._NormOperator, ptr %180, i32 0, i32 12
  %182 = load i32, ptr %181, align 8, !tbaa !23
  %183 = icmp slt i32 %179, %182
  br i1 %183, label %184, label %361

184:                                              ; preds = %178
  %185 = load ptr, ptr %4, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct._NormOperator, ptr %185, i32 0, i32 9
  %187 = load ptr, ptr %186, align 8, !tbaa !28
  %188 = load i32, ptr %6, align 4, !tbaa !16
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds i32, ptr %187, i64 %189
  %191 = load i32, ptr %190, align 4, !tbaa !16
  %192 = load ptr, ptr %1, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct._Action, ptr %192, i32 0, i32 9
  %194 = load ptr, ptr %193, align 8, !tbaa !24
  %195 = load ptr, ptr %1, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct._Action, ptr %195, i32 0, i32 12
  %197 = load i32, ptr %196, align 8, !tbaa !27
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds i32, ptr %194, i64 %198
  store i32 %191, ptr %199, align 4, !tbaa !16
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %struct._NormOperator, ptr %200, i32 0, i32 10
  %202 = load ptr, ptr %201, align 8, !tbaa !29
  %203 = load i32, ptr %6, align 4, !tbaa !16
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds ptr, ptr %202, i64 %204
  %206 = load ptr, ptr %205, align 8, !tbaa !5
  %207 = call ptr @copy_Exp(ptr noundef %206)
  %208 = load ptr, ptr %1, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct._Action, ptr %208, i32 0, i32 10
  %210 = load ptr, ptr %209, align 8, !tbaa !25
  %211 = load ptr, ptr %1, align 8, !tbaa !5
  %212 = getelementptr inbounds %struct._Action, ptr %211, i32 0, i32 12
  %213 = load i32, ptr %212, align 8, !tbaa !27
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds ptr, ptr %210, i64 %214
  store ptr %207, ptr %215, align 8, !tbaa !5
  %216 = load ptr, ptr %1, align 8, !tbaa !5
  %217 = getelementptr inbounds %struct._Action, ptr %216, i32 0, i32 10
  %218 = load ptr, ptr %217, align 8, !tbaa !25
  %219 = load ptr, ptr %1, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct._Action, ptr %219, i32 0, i32 12
  %221 = load i32, ptr %220, align 8, !tbaa !27
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds ptr, ptr %218, i64 %222
  %224 = load ptr, ptr %1, align 8, !tbaa !5
  call void @instantiate_exp_by_action(ptr noundef %223, ptr noundef %224)
  %225 = load ptr, ptr %1, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct._Action, ptr %225, i32 0, i32 10
  %227 = load ptr, ptr %226, align 8, !tbaa !25
  %228 = load ptr, ptr %1, align 8, !tbaa !5
  %229 = getelementptr inbounds %struct._Action, ptr %228, i32 0, i32 12
  %230 = load i32, ptr %229, align 8, !tbaa !27
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds ptr, ptr %227, i64 %231
  %233 = call zeroext i8 @set_relevants_in_exp(ptr noundef %232)
  %234 = icmp ne i8 %233, 0
  br i1 %234, label %236, label %235

235:                                              ; preds = %184
  br label %361

236:                                              ; preds = %184
  %237 = load ptr, ptr %4, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct._NormOperator, ptr %237, i32 0, i32 11
  %239 = load ptr, ptr %238, align 8, !tbaa !30
  %240 = load i32, ptr %6, align 4, !tbaa !16
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds ptr, ptr %239, i64 %241
  %243 = load ptr, ptr %242, align 8, !tbaa !5
  %244 = call ptr @copy_Exp(ptr noundef %243)
  %245 = load ptr, ptr %1, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct._Action, ptr %245, i32 0, i32 11
  %247 = load ptr, ptr %246, align 8, !tbaa !26
  %248 = load ptr, ptr %1, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct._Action, ptr %248, i32 0, i32 12
  %250 = load i32, ptr %249, align 8, !tbaa !27
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds ptr, ptr %247, i64 %251
  store ptr %244, ptr %252, align 8, !tbaa !5
  %253 = load ptr, ptr %1, align 8, !tbaa !5
  %254 = getelementptr inbounds %struct._Action, ptr %253, i32 0, i32 11
  %255 = load ptr, ptr %254, align 8, !tbaa !26
  %256 = load ptr, ptr %1, align 8, !tbaa !5
  %257 = getelementptr inbounds %struct._Action, ptr %256, i32 0, i32 12
  %258 = load i32, ptr %257, align 8, !tbaa !27
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds ptr, ptr %255, i64 %259
  %261 = load ptr, ptr %1, align 8, !tbaa !5
  call void @instantiate_exp_by_action(ptr noundef %260, ptr noundef %261)
  %262 = load ptr, ptr %1, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct._Action, ptr %262, i32 0, i32 11
  %264 = load ptr, ptr %263, align 8, !tbaa !26
  %265 = load ptr, ptr %1, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct._Action, ptr %265, i32 0, i32 12
  %267 = load i32, ptr %266, align 8, !tbaa !27
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds ptr, ptr %264, i64 %268
  %270 = call zeroext i8 @set_relevants_in_exp(ptr noundef %269)
  %271 = icmp ne i8 %270, 0
  br i1 %271, label %273, label %272

272:                                              ; preds = %236
  br label %361

273:                                              ; preds = %236
  %274 = load ptr, ptr %1, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct._Action, ptr %274, i32 0, i32 10
  %276 = load ptr, ptr %275, align 8, !tbaa !25
  %277 = load ptr, ptr %1, align 8, !tbaa !5
  %278 = getelementptr inbounds %struct._Action, ptr %277, i32 0, i32 12
  %279 = load i32, ptr %278, align 8, !tbaa !27
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds ptr, ptr %276, i64 %280
  %282 = load ptr, ptr %281, align 8, !tbaa !5
  %283 = getelementptr inbounds %struct._ExpNode, ptr %282, i32 0, i32 0
  %284 = load i32, ptr %283, align 8, !tbaa !31
  %285 = icmp eq i32 %284, 1001
  br i1 %285, label %286, label %353

286:                                              ; preds = %273
  %287 = load ptr, ptr %1, align 8, !tbaa !5
  %288 = getelementptr inbounds %struct._Action, ptr %287, i32 0, i32 11
  %289 = load ptr, ptr %288, align 8, !tbaa !26
  %290 = load ptr, ptr %1, align 8, !tbaa !5
  %291 = getelementptr inbounds %struct._Action, ptr %290, i32 0, i32 12
  %292 = load i32, ptr %291, align 8, !tbaa !27
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds ptr, ptr %289, i64 %293
  %295 = load ptr, ptr %294, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct._ExpNode, ptr %295, i32 0, i32 0
  %297 = load i32, ptr %296, align 8, !tbaa !31
  %298 = icmp eq i32 %297, 1001
  br i1 %298, label %299, label %353

299:                                              ; preds = %286
  %300 = load ptr, ptr %1, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct._Action, ptr %300, i32 0, i32 9
  %302 = load ptr, ptr %301, align 8, !tbaa !24
  %303 = load ptr, ptr %1, align 8, !tbaa !5
  %304 = getelementptr inbounds %struct._Action, ptr %303, i32 0, i32 12
  %305 = load i32, ptr %304, align 8, !tbaa !27
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %302, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !16
  %309 = load ptr, ptr %1, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct._Action, ptr %309, i32 0, i32 10
  %311 = load ptr, ptr %310, align 8, !tbaa !25
  %312 = load ptr, ptr %1, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct._Action, ptr %312, i32 0, i32 12
  %314 = load i32, ptr %313, align 8, !tbaa !27
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds ptr, ptr %311, i64 %315
  %317 = load ptr, ptr %316, align 8, !tbaa !5
  %318 = getelementptr inbounds %struct._ExpNode, ptr %317, i32 0, i32 4
  %319 = load float, ptr %318, align 8, !tbaa !34
  %320 = load ptr, ptr %1, align 8, !tbaa !5
  %321 = getelementptr inbounds %struct._Action, ptr %320, i32 0, i32 11
  %322 = load ptr, ptr %321, align 8, !tbaa !26
  %323 = load ptr, ptr %1, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct._Action, ptr %323, i32 0, i32 12
  %325 = load i32, ptr %324, align 8, !tbaa !27
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds ptr, ptr %322, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct._ExpNode, ptr %328, i32 0, i32 4
  %330 = load float, ptr %329, align 8, !tbaa !34
  %331 = call zeroext i8 @number_comparison_holds(i32 noundef %308, float noundef %319, float noundef %330)
  %332 = icmp ne i8 %331, 0
  br i1 %332, label %333, label %352

333:                                              ; preds = %299
  %334 = load ptr, ptr %1, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct._Action, ptr %334, i32 0, i32 10
  %336 = load ptr, ptr %335, align 8, !tbaa !25
  %337 = load ptr, ptr %1, align 8, !tbaa !5
  %338 = getelementptr inbounds %struct._Action, ptr %337, i32 0, i32 12
  %339 = load i32, ptr %338, align 8, !tbaa !27
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds ptr, ptr %336, i64 %340
  %342 = load ptr, ptr %341, align 8, !tbaa !5
  call void @free_ExpNode(ptr noundef %342)
  %343 = load ptr, ptr %1, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct._Action, ptr %343, i32 0, i32 11
  %345 = load ptr, ptr %344, align 8, !tbaa !26
  %346 = load ptr, ptr %1, align 8, !tbaa !5
  %347 = getelementptr inbounds %struct._Action, ptr %346, i32 0, i32 12
  %348 = load i32, ptr %347, align 8, !tbaa !27
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds ptr, ptr %345, i64 %349
  %351 = load ptr, ptr %350, align 8, !tbaa !5
  call void @free_ExpNode(ptr noundef %351)
  br label %358

352:                                              ; preds = %299
  br label %361

353:                                              ; preds = %286, %273
  %354 = load ptr, ptr %1, align 8, !tbaa !5
  %355 = getelementptr inbounds %struct._Action, ptr %354, i32 0, i32 12
  %356 = load i32, ptr %355, align 8, !tbaa !27
  %357 = add nsw i32 %356, 1
  store i32 %357, ptr %355, align 8, !tbaa !27
  br label %358

358:                                              ; preds = %353, %333
  %359 = load i32, ptr %6, align 4, !tbaa !16
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr %6, align 4, !tbaa !16
  br label %178, !llvm.loop !35

361:                                              ; preds = %352, %272, %235, %178
  %362 = load i32, ptr %6, align 4, !tbaa !16
  %363 = load ptr, ptr %4, align 8, !tbaa !5
  %364 = getelementptr inbounds %struct._NormOperator, ptr %363, i32 0, i32 12
  %365 = load i32, ptr %364, align 8, !tbaa !23
  %366 = icmp slt i32 %362, %365
  br i1 %366, label %367, label %399

367:                                              ; preds = %361
  %368 = load i32, ptr @gnum_actions, align 4, !tbaa !16
  %369 = add nsw i32 %368, -1
  store i32 %369, ptr @gnum_actions, align 4, !tbaa !16
  %370 = load ptr, ptr %2, align 8, !tbaa !5
  %371 = icmp ne ptr %370, null
  br i1 %371, label %372, label %386

372:                                              ; preds = %367
  %373 = load ptr, ptr %1, align 8, !tbaa !5
  %374 = getelementptr inbounds %struct._Action, ptr %373, i32 0, i32 19
  %375 = load ptr, ptr %374, align 8, !tbaa !36
  %376 = load ptr, ptr %2, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct._Action, ptr %376, i32 0, i32 19
  store ptr %375, ptr %377, align 8, !tbaa !36
  %378 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %378, ptr %3, align 8, !tbaa !5
  %379 = load ptr, ptr %1, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct._Action, ptr %379, i32 0, i32 19
  %381 = load ptr, ptr %380, align 8, !tbaa !36
  store ptr %381, ptr %1, align 8, !tbaa !5
  %382 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %383 = load ptr, ptr %3, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct._Action, ptr %383, i32 0, i32 19
  store ptr %382, ptr %384, align 8, !tbaa !36
  %385 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %385, ptr @gtrash_actions, align 8, !tbaa !5
  br label %398

386:                                              ; preds = %367
  %387 = load ptr, ptr %1, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct._Action, ptr %387, i32 0, i32 19
  %389 = load ptr, ptr %388, align 8, !tbaa !36
  store ptr %389, ptr @gactions, align 8, !tbaa !5
  %390 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %390, ptr %3, align 8, !tbaa !5
  %391 = load ptr, ptr %1, align 8, !tbaa !5
  %392 = getelementptr inbounds %struct._Action, ptr %391, i32 0, i32 19
  %393 = load ptr, ptr %392, align 8, !tbaa !36
  store ptr %393, ptr %1, align 8, !tbaa !5
  %394 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %395 = load ptr, ptr %3, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct._Action, ptr %395, i32 0, i32 19
  store ptr %394, ptr %396, align 8, !tbaa !36
  %397 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %397, ptr @gtrash_actions, align 8, !tbaa !5
  br label %398

398:                                              ; preds = %386, %372
  br label %14, !llvm.loop !37

399:                                              ; preds = %361
  %400 = load ptr, ptr %1, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct._Action, ptr %400, i32 0, i32 18
  %402 = load i32, ptr %401, align 8, !tbaa !38
  %403 = icmp sgt i32 %402, 0
  br i1 %403, label %404, label %437

404:                                              ; preds = %399
  %405 = load ptr, ptr %1, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct._Action, ptr %405, i32 0, i32 18
  %407 = load i32, ptr %406, align 8, !tbaa !38
  %408 = sext i32 %407 to i64
  %409 = call noalias ptr @calloc(i64 noundef %408, i64 noundef 184) #7
  %410 = load ptr, ptr %1, align 8, !tbaa !5
  %411 = getelementptr inbounds %struct._Action, ptr %410, i32 0, i32 17
  store ptr %409, ptr %411, align 8, !tbaa !39
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %412

412:                                              ; preds = %433, %404
  %413 = load i32, ptr %6, align 4, !tbaa !16
  %414 = load ptr, ptr %1, align 8, !tbaa !5
  %415 = getelementptr inbounds %struct._Action, ptr %414, i32 0, i32 18
  %416 = load i32, ptr %415, align 8, !tbaa !38
  %417 = icmp slt i32 %413, %416
  br i1 %417, label %418, label %436

418:                                              ; preds = %412
  %419 = load ptr, ptr %1, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct._Action, ptr %419, i32 0, i32 17
  %421 = load ptr, ptr %420, align 8, !tbaa !39
  %422 = load i32, ptr %6, align 4, !tbaa !16
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct._ActionEffect, ptr %421, i64 %423
  %425 = getelementptr inbounds %struct._ActionEffect, ptr %424, i32 0, i32 22
  store i8 0, ptr %425, align 4, !tbaa !40
  %426 = load ptr, ptr %1, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct._Action, ptr %426, i32 0, i32 17
  %428 = load ptr, ptr %427, align 8, !tbaa !39
  %429 = load i32, ptr %6, align 4, !tbaa !16
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds %struct._ActionEffect, ptr %428, i64 %430
  %432 = getelementptr inbounds %struct._ActionEffect, ptr %431, i32 0, i32 23
  store i8 0, ptr %432, align 1, !tbaa !42
  br label %433

433:                                              ; preds = %418
  %434 = load i32, ptr %6, align 4, !tbaa !16
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %6, align 4, !tbaa !16
  br label %412, !llvm.loop !43

436:                                              ; preds = %412
  br label %437

437:                                              ; preds = %436, %399
  %438 = load ptr, ptr %1, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct._Action, ptr %438, i32 0, i32 18
  store i32 0, ptr %439, align 8, !tbaa !38
  %440 = load ptr, ptr %4, align 8, !tbaa !5
  %441 = getelementptr inbounds %struct._NormOperator, ptr %440, i32 0, i32 13
  %442 = load ptr, ptr %441, align 8, !tbaa !44
  store ptr %442, ptr %5, align 8, !tbaa !5
  br label %443

443:                                              ; preds = %1373, %437
  %444 = load ptr, ptr %5, align 8, !tbaa !5
  %445 = icmp ne ptr %444, null
  br i1 %445, label %446, label %1377

446:                                              ; preds = %443
  %447 = load ptr, ptr %1, align 8, !tbaa !5
  %448 = getelementptr inbounds %struct._Action, ptr %447, i32 0, i32 17
  %449 = load ptr, ptr %448, align 8, !tbaa !39
  %450 = load ptr, ptr %1, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct._Action, ptr %450, i32 0, i32 18
  %452 = load i32, ptr %451, align 8, !tbaa !38
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds %struct._ActionEffect, ptr %449, i64 %453
  store ptr %454, ptr %11, align 8, !tbaa !5
  %455 = load ptr, ptr %5, align 8, !tbaa !5
  %456 = getelementptr inbounds %struct._NormEffect, ptr %455, i32 0, i32 4
  %457 = load i32, ptr %456, align 8, !tbaa !45
  %458 = icmp sgt i32 %457, 0
  br i1 %458, label %459, label %467

459:                                              ; preds = %446
  %460 = load ptr, ptr %5, align 8, !tbaa !5
  %461 = getelementptr inbounds %struct._NormEffect, ptr %460, i32 0, i32 4
  %462 = load i32, ptr %461, align 8, !tbaa !45
  %463 = sext i32 %462 to i64
  %464 = call noalias ptr @calloc(i64 noundef %463, i64 noundef 4) #7
  %465 = load ptr, ptr %11, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct._ActionEffect, ptr %465, i32 0, i32 0
  store ptr %464, ptr %466, align 8, !tbaa !47
  br label %467

467:                                              ; preds = %459, %446
  %468 = load ptr, ptr %11, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct._ActionEffect, ptr %468, i32 0, i32 1
  store i32 0, ptr %469, align 8, !tbaa !48
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %470

470:                                              ; preds = %585, %467
  %471 = load i32, ptr %6, align 4, !tbaa !16
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct._NormEffect, ptr %472, i32 0, i32 4
  %474 = load i32, ptr %473, align 8, !tbaa !45
  %475 = icmp slt i32 %471, %474
  br i1 %475, label %476, label %588

476:                                              ; preds = %470
  %477 = load ptr, ptr %5, align 8, !tbaa !5
  %478 = getelementptr inbounds %struct._NormEffect, ptr %477, i32 0, i32 3
  %479 = load ptr, ptr %478, align 8, !tbaa !49
  %480 = load i32, ptr %6, align 4, !tbaa !16
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds %struct._Fact, ptr %479, i64 %481
  %483 = getelementptr inbounds %struct._Fact, ptr %482, i32 0, i32 0
  %484 = load i32, ptr %483, align 4, !tbaa !18
  store i32 %484, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %485

485:                                              ; preds = %541, %476
  %486 = load i32, ptr %7, align 4, !tbaa !16
  %487 = load i32, ptr @lp, align 4, !tbaa !16
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %488
  %490 = load i32, ptr %489, align 4, !tbaa !16
  %491 = icmp slt i32 %486, %490
  br i1 %491, label %492, label %544

492:                                              ; preds = %485
  %493 = load ptr, ptr %5, align 8, !tbaa !5
  %494 = getelementptr inbounds %struct._NormEffect, ptr %493, i32 0, i32 3
  %495 = load ptr, ptr %494, align 8, !tbaa !49
  %496 = load i32, ptr %6, align 4, !tbaa !16
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct._Fact, ptr %495, i64 %497
  %499 = getelementptr inbounds %struct._Fact, ptr %498, i32 0, i32 1
  %500 = load i32, ptr %7, align 4, !tbaa !16
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds [5 x i32], ptr %499, i64 0, i64 %501
  %503 = load i32, ptr %502, align 4, !tbaa !16
  %504 = icmp sge i32 %503, 0
  br i1 %504, label %505, label %517

505:                                              ; preds = %492
  %506 = load ptr, ptr %5, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct._NormEffect, ptr %506, i32 0, i32 3
  %508 = load ptr, ptr %507, align 8, !tbaa !49
  %509 = load i32, ptr %6, align 4, !tbaa !16
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds %struct._Fact, ptr %508, i64 %510
  %512 = getelementptr inbounds %struct._Fact, ptr %511, i32 0, i32 1
  %513 = load i32, ptr %7, align 4, !tbaa !16
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds [5 x i32], ptr %512, i64 0, i64 %514
  %516 = load i32, ptr %515, align 4, !tbaa !16
  br label %536

517:                                              ; preds = %492
  %518 = load ptr, ptr %1, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct._Action, ptr %518, i32 0, i32 6
  %520 = load ptr, ptr %5, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct._NormEffect, ptr %520, i32 0, i32 3
  %522 = load ptr, ptr %521, align 8, !tbaa !49
  %523 = load i32, ptr %6, align 4, !tbaa !16
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds %struct._Fact, ptr %522, i64 %524
  %526 = getelementptr inbounds %struct._Fact, ptr %525, i32 0, i32 1
  %527 = load i32, ptr %7, align 4, !tbaa !16
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [5 x i32], ptr %526, i64 0, i64 %528
  %530 = load i32, ptr %529, align 4, !tbaa !16
  %531 = add nsw i32 %530, 1
  %532 = mul nsw i32 %531, -1
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds [15 x i32], ptr %519, i64 0, i64 %533
  %535 = load i32, ptr %534, align 4, !tbaa !16
  br label %536

536:                                              ; preds = %517, %505
  %537 = phi i32 [ %516, %505 ], [ %535, %517 ]
  %538 = load i32, ptr %7, align 4, !tbaa !16
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %539
  store i32 %537, ptr %540, align 4, !tbaa !16
  br label %541

541:                                              ; preds = %536
  %542 = load i32, ptr %7, align 4, !tbaa !16
  %543 = add nsw i32 %542, 1
  store i32 %543, ptr %7, align 4, !tbaa !16
  br label %485, !llvm.loop !50

544:                                              ; preds = %485
  %545 = call i32 @fact_adress()
  store i32 %545, ptr %8, align 4, !tbaa !16
  %546 = load i32, ptr @lp, align 4, !tbaa !16
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %547
  %549 = load ptr, ptr %548, align 8, !tbaa !5
  %550 = load i32, ptr %8, align 4, !tbaa !16
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds i32, ptr %549, i64 %551
  %553 = load i32, ptr %552, align 4, !tbaa !16
  %554 = icmp ne i32 %553, 0
  br i1 %554, label %556, label %555

555:                                              ; preds = %544
  br label %588

556:                                              ; preds = %544
  %557 = load i32, ptr @lp, align 4, !tbaa !16
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %558
  %560 = load ptr, ptr %559, align 8, !tbaa !5
  %561 = load i32, ptr %8, align 4, !tbaa !16
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %560, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !16
  %565 = icmp ne i32 %564, 0
  br i1 %565, label %567, label %566

566:                                              ; preds = %556
  br label %585

567:                                              ; preds = %556
  %568 = load i32, ptr @lp, align 4, !tbaa !16
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !5
  %572 = load i32, ptr %8, align 4, !tbaa !16
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds i32, ptr %571, i64 %573
  %575 = load i32, ptr %574, align 4, !tbaa !16
  %576 = load ptr, ptr %11, align 8, !tbaa !5
  %577 = getelementptr inbounds %struct._ActionEffect, ptr %576, i32 0, i32 0
  %578 = load ptr, ptr %577, align 8, !tbaa !47
  %579 = load ptr, ptr %11, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct._ActionEffect, ptr %579, i32 0, i32 1
  %581 = load i32, ptr %580, align 8, !tbaa !48
  %582 = add nsw i32 %581, 1
  store i32 %582, ptr %580, align 8, !tbaa !48
  %583 = sext i32 %581 to i64
  %584 = getelementptr inbounds i32, ptr %578, i64 %583
  store i32 %575, ptr %584, align 4, !tbaa !16
  br label %585

585:                                              ; preds = %567, %566
  %586 = load i32, ptr %6, align 4, !tbaa !16
  %587 = add nsw i32 %586, 1
  store i32 %587, ptr %6, align 4, !tbaa !16
  br label %470, !llvm.loop !51

588:                                              ; preds = %555, %470
  %589 = load i32, ptr %6, align 4, !tbaa !16
  %590 = load ptr, ptr %5, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct._NormEffect, ptr %590, i32 0, i32 4
  %592 = load i32, ptr %591, align 8, !tbaa !45
  %593 = icmp slt i32 %589, %592
  br i1 %593, label %594, label %598

594:                                              ; preds = %588
  %595 = load ptr, ptr %11, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct._ActionEffect, ptr %595, i32 0, i32 0
  %597 = load ptr, ptr %596, align 8, !tbaa !47
  call void @free(ptr noundef %597) #6
  br label %1373

598:                                              ; preds = %588
  %599 = load ptr, ptr %5, align 8, !tbaa !5
  %600 = getelementptr inbounds %struct._NormEffect, ptr %599, i32 0, i32 12
  %601 = load i32, ptr %600, align 8, !tbaa !52
  %602 = icmp sgt i32 %601, 0
  br i1 %602, label %603, label %650

603:                                              ; preds = %598
  %604 = load ptr, ptr %5, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct._NormEffect, ptr %604, i32 0, i32 12
  %606 = load i32, ptr %605, align 8, !tbaa !52
  %607 = sext i32 %606 to i64
  %608 = call noalias ptr @calloc(i64 noundef %607, i64 noundef 4) #7
  %609 = load ptr, ptr %11, align 8, !tbaa !5
  %610 = getelementptr inbounds %struct._ActionEffect, ptr %609, i32 0, i32 6
  store ptr %608, ptr %610, align 8, !tbaa !53
  %611 = load ptr, ptr %5, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct._NormEffect, ptr %611, i32 0, i32 12
  %613 = load i32, ptr %612, align 8, !tbaa !52
  %614 = sext i32 %613 to i64
  %615 = call noalias ptr @calloc(i64 noundef %614, i64 noundef 8) #7
  %616 = load ptr, ptr %11, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct._ActionEffect, ptr %616, i32 0, i32 7
  store ptr %615, ptr %617, align 8, !tbaa !54
  %618 = load ptr, ptr %5, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct._NormEffect, ptr %618, i32 0, i32 12
  %620 = load i32, ptr %619, align 8, !tbaa !52
  %621 = sext i32 %620 to i64
  %622 = call noalias ptr @calloc(i64 noundef %621, i64 noundef 8) #7
  %623 = load ptr, ptr %11, align 8, !tbaa !5
  %624 = getelementptr inbounds %struct._ActionEffect, ptr %623, i32 0, i32 8
  store ptr %622, ptr %624, align 8, !tbaa !55
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %625

625:                                              ; preds = %644, %603
  %626 = load i32, ptr %6, align 4, !tbaa !16
  %627 = load ptr, ptr %5, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct._NormEffect, ptr %627, i32 0, i32 12
  %629 = load i32, ptr %628, align 8, !tbaa !52
  %630 = icmp slt i32 %626, %629
  br i1 %630, label %631, label %647

631:                                              ; preds = %625
  %632 = load ptr, ptr %11, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct._ActionEffect, ptr %632, i32 0, i32 7
  %634 = load ptr, ptr %633, align 8, !tbaa !54
  %635 = load i32, ptr %6, align 4, !tbaa !16
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds ptr, ptr %634, i64 %636
  store ptr null, ptr %637, align 8, !tbaa !5
  %638 = load ptr, ptr %11, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct._ActionEffect, ptr %638, i32 0, i32 8
  %640 = load ptr, ptr %639, align 8, !tbaa !55
  %641 = load i32, ptr %6, align 4, !tbaa !16
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds ptr, ptr %640, i64 %642
  store ptr null, ptr %643, align 8, !tbaa !5
  br label %644

644:                                              ; preds = %631
  %645 = load i32, ptr %6, align 4, !tbaa !16
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr %6, align 4, !tbaa !16
  br label %625, !llvm.loop !56

647:                                              ; preds = %625
  %648 = load ptr, ptr %11, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct._ActionEffect, ptr %648, i32 0, i32 9
  store i32 0, ptr %649, align 8, !tbaa !57
  br label %650

650:                                              ; preds = %647, %598
  store i8 0, ptr %12, align 1, !tbaa !58
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %651

651:                                              ; preds = %847, %650
  %652 = load i32, ptr %6, align 4, !tbaa !16
  %653 = load ptr, ptr %5, align 8, !tbaa !5
  %654 = getelementptr inbounds %struct._NormEffect, ptr %653, i32 0, i32 12
  %655 = load i32, ptr %654, align 8, !tbaa !52
  %656 = icmp slt i32 %652, %655
  br i1 %656, label %657, label %850

657:                                              ; preds = %651
  %658 = load ptr, ptr %5, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct._NormEffect, ptr %658, i32 0, i32 9
  %660 = load ptr, ptr %659, align 8, !tbaa !59
  %661 = load i32, ptr %6, align 4, !tbaa !16
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds i32, ptr %660, i64 %662
  %664 = load i32, ptr %663, align 4, !tbaa !16
  %665 = load ptr, ptr %11, align 8, !tbaa !5
  %666 = getelementptr inbounds %struct._ActionEffect, ptr %665, i32 0, i32 6
  %667 = load ptr, ptr %666, align 8, !tbaa !53
  %668 = load ptr, ptr %11, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct._ActionEffect, ptr %668, i32 0, i32 9
  %670 = load i32, ptr %669, align 8, !tbaa !57
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds i32, ptr %667, i64 %671
  store i32 %664, ptr %672, align 4, !tbaa !16
  %673 = load ptr, ptr %5, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct._NormEffect, ptr %673, i32 0, i32 10
  %675 = load ptr, ptr %674, align 8, !tbaa !60
  %676 = load i32, ptr %6, align 4, !tbaa !16
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds ptr, ptr %675, i64 %677
  %679 = load ptr, ptr %678, align 8, !tbaa !5
  %680 = call ptr @copy_Exp(ptr noundef %679)
  %681 = load ptr, ptr %11, align 8, !tbaa !5
  %682 = getelementptr inbounds %struct._ActionEffect, ptr %681, i32 0, i32 7
  %683 = load ptr, ptr %682, align 8, !tbaa !54
  %684 = load ptr, ptr %11, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct._ActionEffect, ptr %684, i32 0, i32 9
  %686 = load i32, ptr %685, align 8, !tbaa !57
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds ptr, ptr %683, i64 %687
  store ptr %680, ptr %688, align 8, !tbaa !5
  %689 = load ptr, ptr %11, align 8, !tbaa !5
  %690 = getelementptr inbounds %struct._ActionEffect, ptr %689, i32 0, i32 7
  %691 = load ptr, ptr %690, align 8, !tbaa !54
  %692 = load ptr, ptr %11, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct._ActionEffect, ptr %692, i32 0, i32 9
  %694 = load i32, ptr %693, align 8, !tbaa !57
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds ptr, ptr %691, i64 %695
  %697 = load ptr, ptr %1, align 8, !tbaa !5
  call void @instantiate_exp_by_action(ptr noundef %696, ptr noundef %697)
  %698 = load ptr, ptr %11, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct._ActionEffect, ptr %698, i32 0, i32 7
  %700 = load ptr, ptr %699, align 8, !tbaa !54
  %701 = load ptr, ptr %11, align 8, !tbaa !5
  %702 = getelementptr inbounds %struct._ActionEffect, ptr %701, i32 0, i32 9
  %703 = load i32, ptr %702, align 8, !tbaa !57
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds ptr, ptr %700, i64 %704
  %706 = call zeroext i8 @set_relevants_in_exp(ptr noundef %705)
  %707 = icmp ne i8 %706, 0
  br i1 %707, label %709, label %708

708:                                              ; preds = %657
  br label %850

709:                                              ; preds = %657
  %710 = load ptr, ptr %5, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct._NormEffect, ptr %710, i32 0, i32 11
  %712 = load ptr, ptr %711, align 8, !tbaa !61
  %713 = load i32, ptr %6, align 4, !tbaa !16
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds ptr, ptr %712, i64 %714
  %716 = load ptr, ptr %715, align 8, !tbaa !5
  %717 = call ptr @copy_Exp(ptr noundef %716)
  %718 = load ptr, ptr %11, align 8, !tbaa !5
  %719 = getelementptr inbounds %struct._ActionEffect, ptr %718, i32 0, i32 8
  %720 = load ptr, ptr %719, align 8, !tbaa !55
  %721 = load ptr, ptr %11, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct._ActionEffect, ptr %721, i32 0, i32 9
  %723 = load i32, ptr %722, align 8, !tbaa !57
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds ptr, ptr %720, i64 %724
  store ptr %717, ptr %725, align 8, !tbaa !5
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = getelementptr inbounds %struct._ActionEffect, ptr %726, i32 0, i32 8
  %728 = load ptr, ptr %727, align 8, !tbaa !55
  %729 = load ptr, ptr %11, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct._ActionEffect, ptr %729, i32 0, i32 9
  %731 = load i32, ptr %730, align 8, !tbaa !57
  %732 = sext i32 %731 to i64
  %733 = getelementptr inbounds ptr, ptr %728, i64 %732
  %734 = load ptr, ptr %1, align 8, !tbaa !5
  call void @instantiate_exp_by_action(ptr noundef %733, ptr noundef %734)
  %735 = load ptr, ptr %11, align 8, !tbaa !5
  %736 = getelementptr inbounds %struct._ActionEffect, ptr %735, i32 0, i32 8
  %737 = load ptr, ptr %736, align 8, !tbaa !55
  %738 = load ptr, ptr %11, align 8, !tbaa !5
  %739 = getelementptr inbounds %struct._ActionEffect, ptr %738, i32 0, i32 9
  %740 = load i32, ptr %739, align 8, !tbaa !57
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds ptr, ptr %737, i64 %741
  %743 = call zeroext i8 @set_relevants_in_exp(ptr noundef %742)
  %744 = icmp ne i8 %743, 0
  br i1 %744, label %746, label %745

745:                                              ; preds = %709
  br label %850

746:                                              ; preds = %709
  %747 = load ptr, ptr %11, align 8, !tbaa !5
  %748 = getelementptr inbounds %struct._ActionEffect, ptr %747, i32 0, i32 7
  %749 = load ptr, ptr %748, align 8, !tbaa !54
  %750 = load ptr, ptr %11, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct._ActionEffect, ptr %750, i32 0, i32 9
  %752 = load i32, ptr %751, align 8, !tbaa !57
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds ptr, ptr %749, i64 %753
  %755 = load ptr, ptr %754, align 8, !tbaa !5
  %756 = getelementptr inbounds %struct._ExpNode, ptr %755, i32 0, i32 0
  %757 = load i32, ptr %756, align 8, !tbaa !31
  %758 = icmp eq i32 %757, 1001
  br i1 %758, label %759, label %842

759:                                              ; preds = %746
  %760 = load ptr, ptr %11, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct._ActionEffect, ptr %760, i32 0, i32 8
  %762 = load ptr, ptr %761, align 8, !tbaa !55
  %763 = load ptr, ptr %11, align 8, !tbaa !5
  %764 = getelementptr inbounds %struct._ActionEffect, ptr %763, i32 0, i32 9
  %765 = load i32, ptr %764, align 8, !tbaa !57
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds ptr, ptr %762, i64 %766
  %768 = load ptr, ptr %767, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct._ExpNode, ptr %768, i32 0, i32 0
  %770 = load i32, ptr %769, align 8, !tbaa !31
  %771 = icmp eq i32 %770, 1001
  br i1 %771, label %772, label %842

772:                                              ; preds = %759
  %773 = load ptr, ptr %11, align 8, !tbaa !5
  %774 = getelementptr inbounds %struct._ActionEffect, ptr %773, i32 0, i32 6
  %775 = load ptr, ptr %774, align 8, !tbaa !53
  %776 = load ptr, ptr %11, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct._ActionEffect, ptr %776, i32 0, i32 9
  %778 = load i32, ptr %777, align 8, !tbaa !57
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds i32, ptr %775, i64 %779
  %781 = load i32, ptr %780, align 4, !tbaa !16
  %782 = load ptr, ptr %11, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct._ActionEffect, ptr %782, i32 0, i32 7
  %784 = load ptr, ptr %783, align 8, !tbaa !54
  %785 = load ptr, ptr %11, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct._ActionEffect, ptr %785, i32 0, i32 9
  %787 = load i32, ptr %786, align 8, !tbaa !57
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds ptr, ptr %784, i64 %788
  %790 = load ptr, ptr %789, align 8, !tbaa !5
  %791 = getelementptr inbounds %struct._ExpNode, ptr %790, i32 0, i32 4
  %792 = load float, ptr %791, align 8, !tbaa !34
  %793 = load ptr, ptr %11, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct._ActionEffect, ptr %793, i32 0, i32 8
  %795 = load ptr, ptr %794, align 8, !tbaa !55
  %796 = load ptr, ptr %11, align 8, !tbaa !5
  %797 = getelementptr inbounds %struct._ActionEffect, ptr %796, i32 0, i32 9
  %798 = load i32, ptr %797, align 8, !tbaa !57
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds ptr, ptr %795, i64 %799
  %801 = load ptr, ptr %800, align 8, !tbaa !5
  %802 = getelementptr inbounds %struct._ExpNode, ptr %801, i32 0, i32 4
  %803 = load float, ptr %802, align 8, !tbaa !34
  %804 = call zeroext i8 @number_comparison_holds(i32 noundef %781, float noundef %792, float noundef %803)
  %805 = icmp ne i8 %804, 0
  br i1 %805, label %806, label %841

806:                                              ; preds = %772
  %807 = load ptr, ptr %11, align 8, !tbaa !5
  %808 = getelementptr inbounds %struct._ActionEffect, ptr %807, i32 0, i32 7
  %809 = load ptr, ptr %808, align 8, !tbaa !54
  %810 = load ptr, ptr %11, align 8, !tbaa !5
  %811 = getelementptr inbounds %struct._ActionEffect, ptr %810, i32 0, i32 9
  %812 = load i32, ptr %811, align 8, !tbaa !57
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds ptr, ptr %809, i64 %813
  %815 = load ptr, ptr %814, align 8, !tbaa !5
  call void @free_ExpNode(ptr noundef %815)
  %816 = load ptr, ptr %11, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct._ActionEffect, ptr %816, i32 0, i32 8
  %818 = load ptr, ptr %817, align 8, !tbaa !55
  %819 = load ptr, ptr %11, align 8, !tbaa !5
  %820 = getelementptr inbounds %struct._ActionEffect, ptr %819, i32 0, i32 9
  %821 = load i32, ptr %820, align 8, !tbaa !57
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds ptr, ptr %818, i64 %822
  %824 = load ptr, ptr %823, align 8, !tbaa !5
  call void @free_ExpNode(ptr noundef %824)
  %825 = load ptr, ptr %11, align 8, !tbaa !5
  %826 = getelementptr inbounds %struct._ActionEffect, ptr %825, i32 0, i32 7
  %827 = load ptr, ptr %826, align 8, !tbaa !54
  %828 = load ptr, ptr %11, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct._ActionEffect, ptr %828, i32 0, i32 9
  %830 = load i32, ptr %829, align 8, !tbaa !57
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds ptr, ptr %827, i64 %831
  store ptr null, ptr %832, align 8, !tbaa !5
  %833 = load ptr, ptr %11, align 8, !tbaa !5
  %834 = getelementptr inbounds %struct._ActionEffect, ptr %833, i32 0, i32 8
  %835 = load ptr, ptr %834, align 8, !tbaa !55
  %836 = load ptr, ptr %11, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct._ActionEffect, ptr %836, i32 0, i32 9
  %838 = load i32, ptr %837, align 8, !tbaa !57
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds ptr, ptr %835, i64 %839
  store ptr null, ptr %840, align 8, !tbaa !5
  br label %847

841:                                              ; preds = %772
  store i8 1, ptr %12, align 1, !tbaa !58
  br label %850

842:                                              ; preds = %759, %746
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct._ActionEffect, ptr %843, i32 0, i32 9
  %845 = load i32, ptr %844, align 8, !tbaa !57
  %846 = add nsw i32 %845, 1
  store i32 %846, ptr %844, align 8, !tbaa !57
  br label %847

847:                                              ; preds = %842, %806
  %848 = load i32, ptr %6, align 4, !tbaa !16
  %849 = add nsw i32 %848, 1
  store i32 %849, ptr %6, align 4, !tbaa !16
  br label %651, !llvm.loop !62

850:                                              ; preds = %841, %745, %708, %651
  %851 = load i32, ptr %6, align 4, !tbaa !16
  %852 = load ptr, ptr %5, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct._NormEffect, ptr %852, i32 0, i32 12
  %854 = load i32, ptr %853, align 8, !tbaa !52
  %855 = icmp slt i32 %851, %854
  br i1 %855, label %856, label %895

856:                                              ; preds = %850
  %857 = load i8, ptr %12, align 1, !tbaa !58
  %858 = icmp ne i8 %857, 0
  br i1 %858, label %859, label %894

859:                                              ; preds = %856
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %860

860:                                              ; preds = %881, %859
  %861 = load i32, ptr %6, align 4, !tbaa !16
  %862 = load ptr, ptr %11, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct._ActionEffect, ptr %862, i32 0, i32 9
  %864 = load i32, ptr %863, align 8, !tbaa !57
  %865 = icmp sle i32 %861, %864
  br i1 %865, label %866, label %884

866:                                              ; preds = %860
  %867 = load ptr, ptr %11, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct._ActionEffect, ptr %867, i32 0, i32 7
  %869 = load ptr, ptr %868, align 8, !tbaa !54
  %870 = load i32, ptr %6, align 4, !tbaa !16
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds ptr, ptr %869, i64 %871
  %873 = load ptr, ptr %872, align 8, !tbaa !5
  call void @free_ExpNode(ptr noundef %873)
  %874 = load ptr, ptr %11, align 8, !tbaa !5
  %875 = getelementptr inbounds %struct._ActionEffect, ptr %874, i32 0, i32 8
  %876 = load ptr, ptr %875, align 8, !tbaa !55
  %877 = load i32, ptr %6, align 4, !tbaa !16
  %878 = sext i32 %877 to i64
  %879 = getelementptr inbounds ptr, ptr %876, i64 %878
  %880 = load ptr, ptr %879, align 8, !tbaa !5
  call void @free_ExpNode(ptr noundef %880)
  br label %881

881:                                              ; preds = %866
  %882 = load i32, ptr %6, align 4, !tbaa !16
  %883 = add nsw i32 %882, 1
  store i32 %883, ptr %6, align 4, !tbaa !16
  br label %860, !llvm.loop !63

884:                                              ; preds = %860
  %885 = load ptr, ptr %11, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct._ActionEffect, ptr %885, i32 0, i32 6
  %887 = load ptr, ptr %886, align 8, !tbaa !53
  call void @free(ptr noundef %887) #6
  %888 = load ptr, ptr %11, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct._ActionEffect, ptr %888, i32 0, i32 7
  %890 = load ptr, ptr %889, align 8, !tbaa !54
  call void @free(ptr noundef %890) #6
  %891 = load ptr, ptr %11, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct._ActionEffect, ptr %891, i32 0, i32 8
  %893 = load ptr, ptr %892, align 8, !tbaa !55
  call void @free(ptr noundef %893) #6
  br label %1373

894:                                              ; preds = %856
  br label %1377

895:                                              ; preds = %850
  %896 = load ptr, ptr %5, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct._NormEffect, ptr %896, i32 0, i32 6
  %898 = load i32, ptr %897, align 8, !tbaa !64
  %899 = icmp sgt i32 %898, 0
  br i1 %899, label %900, label %908

900:                                              ; preds = %895
  %901 = load ptr, ptr %5, align 8, !tbaa !5
  %902 = getelementptr inbounds %struct._NormEffect, ptr %901, i32 0, i32 6
  %903 = load i32, ptr %902, align 8, !tbaa !64
  %904 = sext i32 %903 to i64
  %905 = call noalias ptr @calloc(i64 noundef %904, i64 noundef 4) #7
  %906 = load ptr, ptr %11, align 8, !tbaa !5
  %907 = getelementptr inbounds %struct._ActionEffect, ptr %906, i32 0, i32 2
  store ptr %905, ptr %907, align 8, !tbaa !65
  br label %908

908:                                              ; preds = %900, %895
  %909 = load ptr, ptr %11, align 8, !tbaa !5
  %910 = getelementptr inbounds %struct._ActionEffect, ptr %909, i32 0, i32 3
  store i32 0, ptr %910, align 8, !tbaa !66
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %911

911:                                              ; preds = %1015, %908
  %912 = load i32, ptr %6, align 4, !tbaa !16
  %913 = load ptr, ptr %5, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct._NormEffect, ptr %913, i32 0, i32 6
  %915 = load i32, ptr %914, align 8, !tbaa !64
  %916 = icmp slt i32 %912, %915
  br i1 %916, label %917, label %1018

917:                                              ; preds = %911
  %918 = load ptr, ptr %5, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct._NormEffect, ptr %918, i32 0, i32 5
  %920 = load ptr, ptr %919, align 8, !tbaa !67
  %921 = load i32, ptr %6, align 4, !tbaa !16
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds %struct._Fact, ptr %920, i64 %922
  %924 = getelementptr inbounds %struct._Fact, ptr %923, i32 0, i32 0
  %925 = load i32, ptr %924, align 4, !tbaa !18
  store i32 %925, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %926

926:                                              ; preds = %982, %917
  %927 = load i32, ptr %7, align 4, !tbaa !16
  %928 = load i32, ptr @lp, align 4, !tbaa !16
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %929
  %931 = load i32, ptr %930, align 4, !tbaa !16
  %932 = icmp slt i32 %927, %931
  br i1 %932, label %933, label %985

933:                                              ; preds = %926
  %934 = load ptr, ptr %5, align 8, !tbaa !5
  %935 = getelementptr inbounds %struct._NormEffect, ptr %934, i32 0, i32 5
  %936 = load ptr, ptr %935, align 8, !tbaa !67
  %937 = load i32, ptr %6, align 4, !tbaa !16
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds %struct._Fact, ptr %936, i64 %938
  %940 = getelementptr inbounds %struct._Fact, ptr %939, i32 0, i32 1
  %941 = load i32, ptr %7, align 4, !tbaa !16
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds [5 x i32], ptr %940, i64 0, i64 %942
  %944 = load i32, ptr %943, align 4, !tbaa !16
  %945 = icmp sge i32 %944, 0
  br i1 %945, label %946, label %958

946:                                              ; preds = %933
  %947 = load ptr, ptr %5, align 8, !tbaa !5
  %948 = getelementptr inbounds %struct._NormEffect, ptr %947, i32 0, i32 5
  %949 = load ptr, ptr %948, align 8, !tbaa !67
  %950 = load i32, ptr %6, align 4, !tbaa !16
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds %struct._Fact, ptr %949, i64 %951
  %953 = getelementptr inbounds %struct._Fact, ptr %952, i32 0, i32 1
  %954 = load i32, ptr %7, align 4, !tbaa !16
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds [5 x i32], ptr %953, i64 0, i64 %955
  %957 = load i32, ptr %956, align 4, !tbaa !16
  br label %977

958:                                              ; preds = %933
  %959 = load ptr, ptr %1, align 8, !tbaa !5
  %960 = getelementptr inbounds %struct._Action, ptr %959, i32 0, i32 6
  %961 = load ptr, ptr %5, align 8, !tbaa !5
  %962 = getelementptr inbounds %struct._NormEffect, ptr %961, i32 0, i32 5
  %963 = load ptr, ptr %962, align 8, !tbaa !67
  %964 = load i32, ptr %6, align 4, !tbaa !16
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds %struct._Fact, ptr %963, i64 %965
  %967 = getelementptr inbounds %struct._Fact, ptr %966, i32 0, i32 1
  %968 = load i32, ptr %7, align 4, !tbaa !16
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds [5 x i32], ptr %967, i64 0, i64 %969
  %971 = load i32, ptr %970, align 4, !tbaa !16
  %972 = add nsw i32 %971, 1
  %973 = mul nsw i32 %972, -1
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds [15 x i32], ptr %960, i64 0, i64 %974
  %976 = load i32, ptr %975, align 4, !tbaa !16
  br label %977

977:                                              ; preds = %958, %946
  %978 = phi i32 [ %957, %946 ], [ %976, %958 ]
  %979 = load i32, ptr %7, align 4, !tbaa !16
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %980
  store i32 %978, ptr %981, align 4, !tbaa !16
  br label %982

982:                                              ; preds = %977
  %983 = load i32, ptr %7, align 4, !tbaa !16
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr %7, align 4, !tbaa !16
  br label %926, !llvm.loop !68

985:                                              ; preds = %926
  %986 = call i32 @fact_adress()
  store i32 %986, ptr %8, align 4, !tbaa !16
  %987 = load i32, ptr @lp, align 4, !tbaa !16
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %988
  %990 = load ptr, ptr %989, align 8, !tbaa !5
  %991 = load i32, ptr %8, align 4, !tbaa !16
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds i32, ptr %990, i64 %992
  %994 = load i32, ptr %993, align 4, !tbaa !16
  %995 = icmp ne i32 %994, 0
  br i1 %995, label %997, label %996

996:                                              ; preds = %985
  br label %1015

997:                                              ; preds = %985
  %998 = load i32, ptr @lp, align 4, !tbaa !16
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %999
  %1001 = load ptr, ptr %1000, align 8, !tbaa !5
  %1002 = load i32, ptr %8, align 4, !tbaa !16
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds i32, ptr %1001, i64 %1003
  %1005 = load i32, ptr %1004, align 4, !tbaa !16
  %1006 = load ptr, ptr %11, align 8, !tbaa !5
  %1007 = getelementptr inbounds %struct._ActionEffect, ptr %1006, i32 0, i32 2
  %1008 = load ptr, ptr %1007, align 8, !tbaa !65
  %1009 = load ptr, ptr %11, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct._ActionEffect, ptr %1009, i32 0, i32 3
  %1011 = load i32, ptr %1010, align 8, !tbaa !66
  %1012 = add nsw i32 %1011, 1
  store i32 %1012, ptr %1010, align 8, !tbaa !66
  %1013 = sext i32 %1011 to i64
  %1014 = getelementptr inbounds i32, ptr %1008, i64 %1013
  store i32 %1005, ptr %1014, align 4, !tbaa !16
  br label %1015

1015:                                             ; preds = %997, %996
  %1016 = load i32, ptr %6, align 4, !tbaa !16
  %1017 = add nsw i32 %1016, 1
  store i32 %1017, ptr %6, align 4, !tbaa !16
  br label %911, !llvm.loop !69

1018:                                             ; preds = %911
  %1019 = load ptr, ptr %5, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct._NormEffect, ptr %1019, i32 0, i32 8
  %1021 = load i32, ptr %1020, align 8, !tbaa !70
  %1022 = icmp sgt i32 %1021, 0
  br i1 %1022, label %1023, label %1031

1023:                                             ; preds = %1018
  %1024 = load ptr, ptr %5, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct._NormEffect, ptr %1024, i32 0, i32 8
  %1026 = load i32, ptr %1025, align 8, !tbaa !70
  %1027 = sext i32 %1026 to i64
  %1028 = call noalias ptr @calloc(i64 noundef %1027, i64 noundef 4) #7
  %1029 = load ptr, ptr %11, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct._ActionEffect, ptr %1029, i32 0, i32 4
  store ptr %1028, ptr %1030, align 8, !tbaa !71
  br label %1031

1031:                                             ; preds = %1023, %1018
  %1032 = load ptr, ptr %11, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct._ActionEffect, ptr %1032, i32 0, i32 5
  store i32 0, ptr %1033, align 8, !tbaa !72
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1034

1034:                                             ; preds = %1138, %1031
  %1035 = load i32, ptr %6, align 4, !tbaa !16
  %1036 = load ptr, ptr %5, align 8, !tbaa !5
  %1037 = getelementptr inbounds %struct._NormEffect, ptr %1036, i32 0, i32 8
  %1038 = load i32, ptr %1037, align 8, !tbaa !70
  %1039 = icmp slt i32 %1035, %1038
  br i1 %1039, label %1040, label %1141

1040:                                             ; preds = %1034
  %1041 = load ptr, ptr %5, align 8, !tbaa !5
  %1042 = getelementptr inbounds %struct._NormEffect, ptr %1041, i32 0, i32 7
  %1043 = load ptr, ptr %1042, align 8, !tbaa !73
  %1044 = load i32, ptr %6, align 4, !tbaa !16
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds %struct._Fact, ptr %1043, i64 %1045
  %1047 = getelementptr inbounds %struct._Fact, ptr %1046, i32 0, i32 0
  %1048 = load i32, ptr %1047, align 4, !tbaa !18
  store i32 %1048, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %1049

1049:                                             ; preds = %1105, %1040
  %1050 = load i32, ptr %7, align 4, !tbaa !16
  %1051 = load i32, ptr @lp, align 4, !tbaa !16
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1052
  %1054 = load i32, ptr %1053, align 4, !tbaa !16
  %1055 = icmp slt i32 %1050, %1054
  br i1 %1055, label %1056, label %1108

1056:                                             ; preds = %1049
  %1057 = load ptr, ptr %5, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct._NormEffect, ptr %1057, i32 0, i32 7
  %1059 = load ptr, ptr %1058, align 8, !tbaa !73
  %1060 = load i32, ptr %6, align 4, !tbaa !16
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds %struct._Fact, ptr %1059, i64 %1061
  %1063 = getelementptr inbounds %struct._Fact, ptr %1062, i32 0, i32 1
  %1064 = load i32, ptr %7, align 4, !tbaa !16
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds [5 x i32], ptr %1063, i64 0, i64 %1065
  %1067 = load i32, ptr %1066, align 4, !tbaa !16
  %1068 = icmp sge i32 %1067, 0
  br i1 %1068, label %1069, label %1081

1069:                                             ; preds = %1056
  %1070 = load ptr, ptr %5, align 8, !tbaa !5
  %1071 = getelementptr inbounds %struct._NormEffect, ptr %1070, i32 0, i32 7
  %1072 = load ptr, ptr %1071, align 8, !tbaa !73
  %1073 = load i32, ptr %6, align 4, !tbaa !16
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds %struct._Fact, ptr %1072, i64 %1074
  %1076 = getelementptr inbounds %struct._Fact, ptr %1075, i32 0, i32 1
  %1077 = load i32, ptr %7, align 4, !tbaa !16
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds [5 x i32], ptr %1076, i64 0, i64 %1078
  %1080 = load i32, ptr %1079, align 4, !tbaa !16
  br label %1100

1081:                                             ; preds = %1056
  %1082 = load ptr, ptr %1, align 8, !tbaa !5
  %1083 = getelementptr inbounds %struct._Action, ptr %1082, i32 0, i32 6
  %1084 = load ptr, ptr %5, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct._NormEffect, ptr %1084, i32 0, i32 7
  %1086 = load ptr, ptr %1085, align 8, !tbaa !73
  %1087 = load i32, ptr %6, align 4, !tbaa !16
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds %struct._Fact, ptr %1086, i64 %1088
  %1090 = getelementptr inbounds %struct._Fact, ptr %1089, i32 0, i32 1
  %1091 = load i32, ptr %7, align 4, !tbaa !16
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds [5 x i32], ptr %1090, i64 0, i64 %1092
  %1094 = load i32, ptr %1093, align 4, !tbaa !16
  %1095 = add nsw i32 %1094, 1
  %1096 = mul nsw i32 %1095, -1
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds [15 x i32], ptr %1083, i64 0, i64 %1097
  %1099 = load i32, ptr %1098, align 4, !tbaa !16
  br label %1100

1100:                                             ; preds = %1081, %1069
  %1101 = phi i32 [ %1080, %1069 ], [ %1099, %1081 ]
  %1102 = load i32, ptr %7, align 4, !tbaa !16
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %1103
  store i32 %1101, ptr %1104, align 4, !tbaa !16
  br label %1105

1105:                                             ; preds = %1100
  %1106 = load i32, ptr %7, align 4, !tbaa !16
  %1107 = add nsw i32 %1106, 1
  store i32 %1107, ptr %7, align 4, !tbaa !16
  br label %1049, !llvm.loop !74

1108:                                             ; preds = %1049
  %1109 = call i32 @fact_adress()
  store i32 %1109, ptr %8, align 4, !tbaa !16
  %1110 = load i32, ptr @lp, align 4, !tbaa !16
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %1111
  %1113 = load ptr, ptr %1112, align 8, !tbaa !5
  %1114 = load i32, ptr %8, align 4, !tbaa !16
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds i32, ptr %1113, i64 %1115
  %1117 = load i32, ptr %1116, align 4, !tbaa !16
  %1118 = icmp ne i32 %1117, 0
  br i1 %1118, label %1120, label %1119

1119:                                             ; preds = %1108
  br label %1138

1120:                                             ; preds = %1108
  %1121 = load i32, ptr @lp, align 4, !tbaa !16
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %1122
  %1124 = load ptr, ptr %1123, align 8, !tbaa !5
  %1125 = load i32, ptr %8, align 4, !tbaa !16
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds i32, ptr %1124, i64 %1126
  %1128 = load i32, ptr %1127, align 4, !tbaa !16
  %1129 = load ptr, ptr %11, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct._ActionEffect, ptr %1129, i32 0, i32 4
  %1131 = load ptr, ptr %1130, align 8, !tbaa !71
  %1132 = load ptr, ptr %11, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct._ActionEffect, ptr %1132, i32 0, i32 5
  %1134 = load i32, ptr %1133, align 8, !tbaa !72
  %1135 = add nsw i32 %1134, 1
  store i32 %1135, ptr %1133, align 8, !tbaa !72
  %1136 = sext i32 %1134 to i64
  %1137 = getelementptr inbounds i32, ptr %1131, i64 %1136
  store i32 %1128, ptr %1137, align 4, !tbaa !16
  br label %1138

1138:                                             ; preds = %1120, %1119
  %1139 = load i32, ptr %6, align 4, !tbaa !16
  %1140 = add nsw i32 %1139, 1
  store i32 %1140, ptr %6, align 4, !tbaa !16
  br label %1034, !llvm.loop !75

1141:                                             ; preds = %1034
  %1142 = load i32, ptr %6, align 4, !tbaa !16
  %1143 = load ptr, ptr %5, align 8, !tbaa !5
  %1144 = getelementptr inbounds %struct._NormEffect, ptr %1143, i32 0, i32 8
  %1145 = load i32, ptr %1144, align 8, !tbaa !70
  %1146 = icmp slt i32 %1142, %1145
  br i1 %1146, label %1147, label %1148

1147:                                             ; preds = %1141
  br label %1377

1148:                                             ; preds = %1141
  %1149 = load ptr, ptr %5, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct._NormEffect, ptr %1149, i32 0, i32 16
  %1151 = load i32, ptr %1150, align 8, !tbaa !76
  %1152 = icmp sgt i32 %1151, 0
  br i1 %1152, label %1153, label %1177

1153:                                             ; preds = %1148
  %1154 = load ptr, ptr %5, align 8, !tbaa !5
  %1155 = getelementptr inbounds %struct._NormEffect, ptr %1154, i32 0, i32 16
  %1156 = load i32, ptr %1155, align 8, !tbaa !76
  %1157 = sext i32 %1156 to i64
  %1158 = call noalias ptr @calloc(i64 noundef %1157, i64 noundef 4) #7
  %1159 = load ptr, ptr %11, align 8, !tbaa !5
  %1160 = getelementptr inbounds %struct._ActionEffect, ptr %1159, i32 0, i32 10
  store ptr %1158, ptr %1160, align 8, !tbaa !77
  %1161 = load ptr, ptr %5, align 8, !tbaa !5
  %1162 = getelementptr inbounds %struct._NormEffect, ptr %1161, i32 0, i32 16
  %1163 = load i32, ptr %1162, align 8, !tbaa !76
  %1164 = sext i32 %1163 to i64
  %1165 = call noalias ptr @calloc(i64 noundef %1164, i64 noundef 4) #7
  %1166 = load ptr, ptr %11, align 8, !tbaa !5
  %1167 = getelementptr inbounds %struct._ActionEffect, ptr %1166, i32 0, i32 11
  store ptr %1165, ptr %1167, align 8, !tbaa !78
  %1168 = load ptr, ptr %5, align 8, !tbaa !5
  %1169 = getelementptr inbounds %struct._NormEffect, ptr %1168, i32 0, i32 16
  %1170 = load i32, ptr %1169, align 8, !tbaa !76
  %1171 = sext i32 %1170 to i64
  %1172 = call noalias ptr @calloc(i64 noundef %1171, i64 noundef 8) #7
  %1173 = load ptr, ptr %11, align 8, !tbaa !5
  %1174 = getelementptr inbounds %struct._ActionEffect, ptr %1173, i32 0, i32 12
  store ptr %1172, ptr %1174, align 8, !tbaa !79
  %1175 = load ptr, ptr %11, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct._ActionEffect, ptr %1175, i32 0, i32 13
  store i32 0, ptr %1176, align 8, !tbaa !80
  br label %1177

1177:                                             ; preds = %1153, %1148
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1178

1178:                                             ; preds = %1356, %1177
  %1179 = load i32, ptr %6, align 4, !tbaa !16
  %1180 = load ptr, ptr %5, align 8, !tbaa !5
  %1181 = getelementptr inbounds %struct._NormEffect, ptr %1180, i32 0, i32 16
  %1182 = load i32, ptr %1181, align 8, !tbaa !76
  %1183 = icmp slt i32 %1179, %1182
  br i1 %1183, label %1184, label %1359

1184:                                             ; preds = %1178
  %1185 = load ptr, ptr %5, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct._NormEffect, ptr %1185, i32 0, i32 13
  %1187 = load ptr, ptr %1186, align 8, !tbaa !81
  %1188 = load i32, ptr %6, align 4, !tbaa !16
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds i32, ptr %1187, i64 %1189
  %1191 = load i32, ptr %1190, align 4, !tbaa !16
  %1192 = load ptr, ptr %11, align 8, !tbaa !5
  %1193 = getelementptr inbounds %struct._ActionEffect, ptr %1192, i32 0, i32 10
  %1194 = load ptr, ptr %1193, align 8, !tbaa !77
  %1195 = load ptr, ptr %11, align 8, !tbaa !5
  %1196 = getelementptr inbounds %struct._ActionEffect, ptr %1195, i32 0, i32 13
  %1197 = load i32, ptr %1196, align 8, !tbaa !80
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds i32, ptr %1194, i64 %1198
  store i32 %1191, ptr %1199, align 4, !tbaa !16
  %1200 = load ptr, ptr %5, align 8, !tbaa !5
  %1201 = getelementptr inbounds %struct._NormEffect, ptr %1200, i32 0, i32 14
  %1202 = load ptr, ptr %1201, align 8, !tbaa !82
  %1203 = load i32, ptr %6, align 4, !tbaa !16
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds %struct._Fluent, ptr %1202, i64 %1204
  %1206 = getelementptr inbounds %struct._Fluent, ptr %1205, i32 0, i32 0
  %1207 = load i32, ptr %1206, align 4, !tbaa !83
  store i32 %1207, ptr @lf, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %1208

1208:                                             ; preds = %1264, %1184
  %1209 = load i32, ptr %7, align 4, !tbaa !16
  %1210 = load i32, ptr @lf, align 4, !tbaa !16
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %1211
  %1213 = load i32, ptr %1212, align 4, !tbaa !16
  %1214 = icmp slt i32 %1209, %1213
  br i1 %1214, label %1215, label %1267

1215:                                             ; preds = %1208
  %1216 = load ptr, ptr %5, align 8, !tbaa !5
  %1217 = getelementptr inbounds %struct._NormEffect, ptr %1216, i32 0, i32 14
  %1218 = load ptr, ptr %1217, align 8, !tbaa !82
  %1219 = load i32, ptr %6, align 4, !tbaa !16
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds %struct._Fluent, ptr %1218, i64 %1220
  %1222 = getelementptr inbounds %struct._Fluent, ptr %1221, i32 0, i32 1
  %1223 = load i32, ptr %7, align 4, !tbaa !16
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds [5 x i32], ptr %1222, i64 0, i64 %1224
  %1226 = load i32, ptr %1225, align 4, !tbaa !16
  %1227 = icmp sge i32 %1226, 0
  br i1 %1227, label %1228, label %1240

1228:                                             ; preds = %1215
  %1229 = load ptr, ptr %5, align 8, !tbaa !5
  %1230 = getelementptr inbounds %struct._NormEffect, ptr %1229, i32 0, i32 14
  %1231 = load ptr, ptr %1230, align 8, !tbaa !82
  %1232 = load i32, ptr %6, align 4, !tbaa !16
  %1233 = sext i32 %1232 to i64
  %1234 = getelementptr inbounds %struct._Fluent, ptr %1231, i64 %1233
  %1235 = getelementptr inbounds %struct._Fluent, ptr %1234, i32 0, i32 1
  %1236 = load i32, ptr %7, align 4, !tbaa !16
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds [5 x i32], ptr %1235, i64 0, i64 %1237
  %1239 = load i32, ptr %1238, align 4, !tbaa !16
  br label %1259

1240:                                             ; preds = %1215
  %1241 = load ptr, ptr %1, align 8, !tbaa !5
  %1242 = getelementptr inbounds %struct._Action, ptr %1241, i32 0, i32 6
  %1243 = load ptr, ptr %5, align 8, !tbaa !5
  %1244 = getelementptr inbounds %struct._NormEffect, ptr %1243, i32 0, i32 14
  %1245 = load ptr, ptr %1244, align 8, !tbaa !82
  %1246 = load i32, ptr %6, align 4, !tbaa !16
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds %struct._Fluent, ptr %1245, i64 %1247
  %1249 = getelementptr inbounds %struct._Fluent, ptr %1248, i32 0, i32 1
  %1250 = load i32, ptr %7, align 4, !tbaa !16
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds [5 x i32], ptr %1249, i64 0, i64 %1251
  %1253 = load i32, ptr %1252, align 4, !tbaa !16
  %1254 = add nsw i32 %1253, 1
  %1255 = mul nsw i32 %1254, -1
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds [15 x i32], ptr %1242, i64 0, i64 %1256
  %1258 = load i32, ptr %1257, align 4, !tbaa !16
  br label %1259

1259:                                             ; preds = %1240, %1228
  %1260 = phi i32 [ %1239, %1228 ], [ %1258, %1240 ]
  %1261 = load i32, ptr %7, align 4, !tbaa !16
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds [15 x i32], ptr @lf_args, i64 0, i64 %1262
  store i32 %1260, ptr %1263, align 4, !tbaa !16
  br label %1264

1264:                                             ; preds = %1259
  %1265 = load i32, ptr %7, align 4, !tbaa !16
  %1266 = add nsw i32 %1265, 1
  store i32 %1266, ptr %7, align 4, !tbaa !16
  br label %1208, !llvm.loop !85

1267:                                             ; preds = %1208
  %1268 = call i32 @fluent_adress()
  store i32 %1268, ptr %8, align 4, !tbaa !16
  %1269 = load i32, ptr @lf, align 4, !tbaa !16
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %1270
  %1272 = load ptr, ptr %1271, align 8, !tbaa !5
  %1273 = load i32, ptr %8, align 4, !tbaa !16
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds i32, ptr %1272, i64 %1274
  %1276 = load i32, ptr %1275, align 4, !tbaa !16
  %1277 = load ptr, ptr %11, align 8, !tbaa !5
  %1278 = getelementptr inbounds %struct._ActionEffect, ptr %1277, i32 0, i32 11
  %1279 = load ptr, ptr %1278, align 8, !tbaa !78
  %1280 = load i32, ptr %6, align 4, !tbaa !16
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i32, ptr %1279, i64 %1281
  store i32 %1276, ptr %1282, align 4, !tbaa !16
  %1283 = load i32, ptr @lf, align 4, !tbaa !16
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %1284
  %1286 = load ptr, ptr %1285, align 8, !tbaa !5
  %1287 = load i32, ptr %8, align 4, !tbaa !16
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds i32, ptr %1286, i64 %1288
  %1290 = load i32, ptr %1289, align 4, !tbaa !16
  %1291 = icmp eq i32 %1290, -1
  br i1 %1291, label %1292, label %1295

1292:                                             ; preds = %1267
  %1293 = load ptr, ptr %11, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct._ActionEffect, ptr %1293, i32 0, i32 22
  store i8 1, ptr %1294, align 4, !tbaa !40
  br label %1295

1295:                                             ; preds = %1292, %1267
  %1296 = load ptr, ptr %5, align 8, !tbaa !5
  %1297 = getelementptr inbounds %struct._NormEffect, ptr %1296, i32 0, i32 15
  %1298 = load ptr, ptr %1297, align 8, !tbaa !86
  %1299 = load i32, ptr %6, align 4, !tbaa !16
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds ptr, ptr %1298, i64 %1300
  %1302 = load ptr, ptr %1301, align 8, !tbaa !5
  %1303 = call ptr @copy_Exp(ptr noundef %1302)
  %1304 = load ptr, ptr %11, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct._ActionEffect, ptr %1304, i32 0, i32 12
  %1306 = load ptr, ptr %1305, align 8, !tbaa !79
  %1307 = load ptr, ptr %11, align 8, !tbaa !5
  %1308 = getelementptr inbounds %struct._ActionEffect, ptr %1307, i32 0, i32 13
  %1309 = load i32, ptr %1308, align 8, !tbaa !80
  %1310 = sext i32 %1309 to i64
  %1311 = getelementptr inbounds ptr, ptr %1306, i64 %1310
  store ptr %1303, ptr %1311, align 8, !tbaa !5
  %1312 = load ptr, ptr %11, align 8, !tbaa !5
  %1313 = getelementptr inbounds %struct._ActionEffect, ptr %1312, i32 0, i32 12
  %1314 = load ptr, ptr %1313, align 8, !tbaa !79
  %1315 = load ptr, ptr %11, align 8, !tbaa !5
  %1316 = getelementptr inbounds %struct._ActionEffect, ptr %1315, i32 0, i32 13
  %1317 = load i32, ptr %1316, align 8, !tbaa !80
  %1318 = sext i32 %1317 to i64
  %1319 = getelementptr inbounds ptr, ptr %1314, i64 %1318
  %1320 = load ptr, ptr %1, align 8, !tbaa !5
  call void @instantiate_exp_by_action(ptr noundef %1319, ptr noundef %1320)
  %1321 = load ptr, ptr %11, align 8, !tbaa !5
  %1322 = getelementptr inbounds %struct._ActionEffect, ptr %1321, i32 0, i32 12
  %1323 = load ptr, ptr %1322, align 8, !tbaa !79
  %1324 = load ptr, ptr %11, align 8, !tbaa !5
  %1325 = getelementptr inbounds %struct._ActionEffect, ptr %1324, i32 0, i32 13
  %1326 = load i32, ptr %1325, align 8, !tbaa !80
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds ptr, ptr %1323, i64 %1327
  %1329 = call zeroext i8 @set_relevants_in_exp(ptr noundef %1328)
  %1330 = icmp ne i8 %1329, 0
  br i1 %1330, label %1334, label %1331

1331:                                             ; preds = %1295
  %1332 = load ptr, ptr %11, align 8, !tbaa !5
  %1333 = getelementptr inbounds %struct._ActionEffect, ptr %1332, i32 0, i32 22
  store i8 1, ptr %1333, align 4, !tbaa !40
  br label %1334

1334:                                             ; preds = %1331, %1295
  %1335 = load ptr, ptr %11, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct._ActionEffect, ptr %1335, i32 0, i32 22
  %1337 = load i8, ptr %1336, align 4, !tbaa !40
  %1338 = zext i8 %1337 to i32
  %1339 = icmp ne i32 %1338, 0
  br i1 %1339, label %1340, label %1351

1340:                                             ; preds = %1334
  %1341 = load ptr, ptr %11, align 8, !tbaa !5
  %1342 = getelementptr inbounds %struct._ActionEffect, ptr %1341, i32 0, i32 1
  %1343 = load i32, ptr %1342, align 8, !tbaa !48
  %1344 = icmp eq i32 %1343, 0
  br i1 %1344, label %1345, label %1351

1345:                                             ; preds = %1340
  %1346 = load ptr, ptr %11, align 8, !tbaa !5
  %1347 = getelementptr inbounds %struct._ActionEffect, ptr %1346, i32 0, i32 9
  %1348 = load i32, ptr %1347, align 8, !tbaa !57
  %1349 = icmp eq i32 %1348, 0
  br i1 %1349, label %1350, label %1351

1350:                                             ; preds = %1345
  br label %1359

1351:                                             ; preds = %1345, %1340, %1334
  %1352 = load ptr, ptr %11, align 8, !tbaa !5
  %1353 = getelementptr inbounds %struct._ActionEffect, ptr %1352, i32 0, i32 13
  %1354 = load i32, ptr %1353, align 8, !tbaa !80
  %1355 = add nsw i32 %1354, 1
  store i32 %1355, ptr %1353, align 8, !tbaa !80
  br label %1356

1356:                                             ; preds = %1351
  %1357 = load i32, ptr %6, align 4, !tbaa !16
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %6, align 4, !tbaa !16
  br label %1178, !llvm.loop !87

1359:                                             ; preds = %1350, %1178
  %1360 = load i32, ptr %6, align 4, !tbaa !16
  %1361 = load ptr, ptr %5, align 8, !tbaa !5
  %1362 = getelementptr inbounds %struct._NormEffect, ptr %1361, i32 0, i32 16
  %1363 = load i32, ptr %1362, align 8, !tbaa !76
  %1364 = icmp slt i32 %1360, %1363
  br i1 %1364, label %1365, label %1366

1365:                                             ; preds = %1359
  br label %1377

1366:                                             ; preds = %1359
  %1367 = load ptr, ptr %1, align 8, !tbaa !5
  %1368 = getelementptr inbounds %struct._Action, ptr %1367, i32 0, i32 18
  %1369 = load i32, ptr %1368, align 8, !tbaa !38
  %1370 = add nsw i32 %1369, 1
  store i32 %1370, ptr %1368, align 8, !tbaa !38
  %1371 = load i32, ptr @lnum_effects, align 4, !tbaa !16
  %1372 = add nsw i32 %1371, 1
  store i32 %1372, ptr @lnum_effects, align 4, !tbaa !16
  br label %1373

1373:                                             ; preds = %1366, %884, %594
  %1374 = load ptr, ptr %5, align 8, !tbaa !5
  %1375 = getelementptr inbounds %struct._NormEffect, ptr %1374, i32 0, i32 18
  %1376 = load ptr, ptr %1375, align 8, !tbaa !88
  store ptr %1376, ptr %5, align 8, !tbaa !5
  br label %443, !llvm.loop !89

1377:                                             ; preds = %1365, %1147, %894, %443
  %1378 = load ptr, ptr %5, align 8, !tbaa !5
  %1379 = icmp ne ptr %1378, null
  br i1 %1379, label %1380, label %1412

1380:                                             ; preds = %1377
  %1381 = load i32, ptr @gnum_actions, align 4, !tbaa !16
  %1382 = add nsw i32 %1381, -1
  store i32 %1382, ptr @gnum_actions, align 4, !tbaa !16
  %1383 = load ptr, ptr %2, align 8, !tbaa !5
  %1384 = icmp ne ptr %1383, null
  br i1 %1384, label %1385, label %1399

1385:                                             ; preds = %1380
  %1386 = load ptr, ptr %1, align 8, !tbaa !5
  %1387 = getelementptr inbounds %struct._Action, ptr %1386, i32 0, i32 19
  %1388 = load ptr, ptr %1387, align 8, !tbaa !36
  %1389 = load ptr, ptr %2, align 8, !tbaa !5
  %1390 = getelementptr inbounds %struct._Action, ptr %1389, i32 0, i32 19
  store ptr %1388, ptr %1390, align 8, !tbaa !36
  %1391 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %1391, ptr %3, align 8, !tbaa !5
  %1392 = load ptr, ptr %1, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct._Action, ptr %1392, i32 0, i32 19
  %1394 = load ptr, ptr %1393, align 8, !tbaa !36
  store ptr %1394, ptr %1, align 8, !tbaa !5
  %1395 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %1396 = load ptr, ptr %3, align 8, !tbaa !5
  %1397 = getelementptr inbounds %struct._Action, ptr %1396, i32 0, i32 19
  store ptr %1395, ptr %1397, align 8, !tbaa !36
  %1398 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %1398, ptr @gtrash_actions, align 8, !tbaa !5
  br label %1411

1399:                                             ; preds = %1380
  %1400 = load ptr, ptr %1, align 8, !tbaa !5
  %1401 = getelementptr inbounds %struct._Action, ptr %1400, i32 0, i32 19
  %1402 = load ptr, ptr %1401, align 8, !tbaa !36
  store ptr %1402, ptr @gactions, align 8, !tbaa !5
  %1403 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %1403, ptr %3, align 8, !tbaa !5
  %1404 = load ptr, ptr %1, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct._Action, ptr %1404, i32 0, i32 19
  %1406 = load ptr, ptr %1405, align 8, !tbaa !36
  store ptr %1406, ptr %1, align 8, !tbaa !5
  %1407 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %1408 = load ptr, ptr %3, align 8, !tbaa !5
  %1409 = getelementptr inbounds %struct._Action, ptr %1408, i32 0, i32 19
  store ptr %1407, ptr %1409, align 8, !tbaa !36
  %1410 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %1410, ptr @gtrash_actions, align 8, !tbaa !5
  br label %1411

1411:                                             ; preds = %1399, %1385
  br label %1417

1412:                                             ; preds = %1377
  %1413 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %1413, ptr %2, align 8, !tbaa !5
  %1414 = load ptr, ptr %1, align 8, !tbaa !5
  %1415 = getelementptr inbounds %struct._Action, ptr %1414, i32 0, i32 19
  %1416 = load ptr, ptr %1415, align 8, !tbaa !36
  store ptr %1416, ptr %1, align 8, !tbaa !5
  br label %1417

1417:                                             ; preds = %1412, %1411
  br label %14, !llvm.loop !37

1418:                                             ; preds = %17
  %1419 = load ptr, ptr %1, align 8, !tbaa !5
  %1420 = getelementptr inbounds %struct._Action, ptr %1419, i32 0, i32 1
  %1421 = load ptr, ptr %1420, align 8, !tbaa !90
  %1422 = icmp ne ptr %1421, null
  br i1 %1422, label %1423, label %2398

1423:                                             ; preds = %1418
  %1424 = load ptr, ptr %1, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct._Action, ptr %1424, i32 0, i32 1
  %1426 = load ptr, ptr %1425, align 8, !tbaa !90
  store ptr %1426, ptr %9, align 8, !tbaa !5
  %1427 = load ptr, ptr %9, align 8, !tbaa !5
  %1428 = getelementptr inbounds %struct._PseudoAction, ptr %1427, i32 0, i32 3
  %1429 = load i32, ptr %1428, align 8, !tbaa !91
  %1430 = icmp sgt i32 %1429, 0
  br i1 %1430, label %1431, label %1439

1431:                                             ; preds = %1423
  %1432 = load ptr, ptr %9, align 8, !tbaa !5
  %1433 = getelementptr inbounds %struct._PseudoAction, ptr %1432, i32 0, i32 3
  %1434 = load i32, ptr %1433, align 8, !tbaa !91
  %1435 = sext i32 %1434 to i64
  %1436 = call noalias ptr @calloc(i64 noundef %1435, i64 noundef 4) #7
  %1437 = load ptr, ptr %1, align 8, !tbaa !5
  %1438 = getelementptr inbounds %struct._Action, ptr %1437, i32 0, i32 7
  store ptr %1436, ptr %1438, align 8, !tbaa !14
  br label %1439

1439:                                             ; preds = %1431, %1423
  %1440 = load ptr, ptr %1, align 8, !tbaa !5
  %1441 = getelementptr inbounds %struct._Action, ptr %1440, i32 0, i32 8
  store i32 0, ptr %1441, align 8, !tbaa !15
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1442

1442:                                             ; preds = %1512, %1439
  %1443 = load i32, ptr %6, align 4, !tbaa !16
  %1444 = load ptr, ptr %9, align 8, !tbaa !5
  %1445 = getelementptr inbounds %struct._PseudoAction, ptr %1444, i32 0, i32 3
  %1446 = load i32, ptr %1445, align 8, !tbaa !91
  %1447 = icmp slt i32 %1443, %1446
  br i1 %1447, label %1448, label %1515

1448:                                             ; preds = %1442
  %1449 = load ptr, ptr %9, align 8, !tbaa !5
  %1450 = getelementptr inbounds %struct._PseudoAction, ptr %1449, i32 0, i32 2
  %1451 = load ptr, ptr %1450, align 8, !tbaa !93
  %1452 = load i32, ptr %6, align 4, !tbaa !16
  %1453 = sext i32 %1452 to i64
  %1454 = getelementptr inbounds %struct._Fact, ptr %1451, i64 %1453
  %1455 = getelementptr inbounds %struct._Fact, ptr %1454, i32 0, i32 0
  %1456 = load i32, ptr %1455, align 4, !tbaa !18
  store i32 %1456, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %1457

1457:                                             ; preds = %1479, %1448
  %1458 = load i32, ptr %7, align 4, !tbaa !16
  %1459 = load i32, ptr @lp, align 4, !tbaa !16
  %1460 = sext i32 %1459 to i64
  %1461 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1460
  %1462 = load i32, ptr %1461, align 4, !tbaa !16
  %1463 = icmp slt i32 %1458, %1462
  br i1 %1463, label %1464, label %1482

1464:                                             ; preds = %1457
  %1465 = load ptr, ptr %9, align 8, !tbaa !5
  %1466 = getelementptr inbounds %struct._PseudoAction, ptr %1465, i32 0, i32 2
  %1467 = load ptr, ptr %1466, align 8, !tbaa !93
  %1468 = load i32, ptr %6, align 4, !tbaa !16
  %1469 = sext i32 %1468 to i64
  %1470 = getelementptr inbounds %struct._Fact, ptr %1467, i64 %1469
  %1471 = getelementptr inbounds %struct._Fact, ptr %1470, i32 0, i32 1
  %1472 = load i32, ptr %7, align 4, !tbaa !16
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds [5 x i32], ptr %1471, i64 0, i64 %1473
  %1475 = load i32, ptr %1474, align 4, !tbaa !16
  %1476 = load i32, ptr %7, align 4, !tbaa !16
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %1477
  store i32 %1475, ptr %1478, align 4, !tbaa !16
  br label %1479

1479:                                             ; preds = %1464
  %1480 = load i32, ptr %7, align 4, !tbaa !16
  %1481 = add nsw i32 %1480, 1
  store i32 %1481, ptr %7, align 4, !tbaa !16
  br label %1457, !llvm.loop !94

1482:                                             ; preds = %1457
  %1483 = call i32 @fact_adress()
  store i32 %1483, ptr %8, align 4, !tbaa !16
  %1484 = load i32, ptr @lp, align 4, !tbaa !16
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %1485
  %1487 = load ptr, ptr %1486, align 8, !tbaa !5
  %1488 = load i32, ptr %8, align 4, !tbaa !16
  %1489 = sext i32 %1488 to i64
  %1490 = getelementptr inbounds i32, ptr %1487, i64 %1489
  %1491 = load i32, ptr %1490, align 4, !tbaa !16
  %1492 = icmp ne i32 %1491, 0
  br i1 %1492, label %1494, label %1493

1493:                                             ; preds = %1482
  br label %1512

1494:                                             ; preds = %1482
  %1495 = load i32, ptr @lp, align 4, !tbaa !16
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %1496
  %1498 = load ptr, ptr %1497, align 8, !tbaa !5
  %1499 = load i32, ptr %8, align 4, !tbaa !16
  %1500 = sext i32 %1499 to i64
  %1501 = getelementptr inbounds i32, ptr %1498, i64 %1500
  %1502 = load i32, ptr %1501, align 4, !tbaa !16
  %1503 = load ptr, ptr %1, align 8, !tbaa !5
  %1504 = getelementptr inbounds %struct._Action, ptr %1503, i32 0, i32 7
  %1505 = load ptr, ptr %1504, align 8, !tbaa !14
  %1506 = load ptr, ptr %1, align 8, !tbaa !5
  %1507 = getelementptr inbounds %struct._Action, ptr %1506, i32 0, i32 8
  %1508 = load i32, ptr %1507, align 8, !tbaa !15
  %1509 = add nsw i32 %1508, 1
  store i32 %1509, ptr %1507, align 8, !tbaa !15
  %1510 = sext i32 %1508 to i64
  %1511 = getelementptr inbounds i32, ptr %1505, i64 %1510
  store i32 %1502, ptr %1511, align 4, !tbaa !16
  br label %1512

1512:                                             ; preds = %1494, %1493
  %1513 = load i32, ptr %6, align 4, !tbaa !16
  %1514 = add nsw i32 %1513, 1
  store i32 %1514, ptr %6, align 4, !tbaa !16
  br label %1442, !llvm.loop !95

1515:                                             ; preds = %1442
  %1516 = load ptr, ptr %9, align 8, !tbaa !5
  %1517 = getelementptr inbounds %struct._PseudoAction, ptr %1516, i32 0, i32 7
  %1518 = load i32, ptr %1517, align 8, !tbaa !96
  %1519 = icmp sgt i32 %1518, 0
  br i1 %1519, label %1520, label %1544

1520:                                             ; preds = %1515
  %1521 = load ptr, ptr %9, align 8, !tbaa !5
  %1522 = getelementptr inbounds %struct._PseudoAction, ptr %1521, i32 0, i32 7
  %1523 = load i32, ptr %1522, align 8, !tbaa !96
  %1524 = sext i32 %1523 to i64
  %1525 = call noalias ptr @calloc(i64 noundef %1524, i64 noundef 4) #7
  %1526 = load ptr, ptr %1, align 8, !tbaa !5
  %1527 = getelementptr inbounds %struct._Action, ptr %1526, i32 0, i32 9
  store ptr %1525, ptr %1527, align 8, !tbaa !24
  %1528 = load ptr, ptr %9, align 8, !tbaa !5
  %1529 = getelementptr inbounds %struct._PseudoAction, ptr %1528, i32 0, i32 7
  %1530 = load i32, ptr %1529, align 8, !tbaa !96
  %1531 = sext i32 %1530 to i64
  %1532 = call noalias ptr @calloc(i64 noundef %1531, i64 noundef 8) #7
  %1533 = load ptr, ptr %1, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct._Action, ptr %1533, i32 0, i32 10
  store ptr %1532, ptr %1534, align 8, !tbaa !25
  %1535 = load ptr, ptr %9, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct._PseudoAction, ptr %1535, i32 0, i32 7
  %1537 = load i32, ptr %1536, align 8, !tbaa !96
  %1538 = sext i32 %1537 to i64
  %1539 = call noalias ptr @calloc(i64 noundef %1538, i64 noundef 8) #7
  %1540 = load ptr, ptr %1, align 8, !tbaa !5
  %1541 = getelementptr inbounds %struct._Action, ptr %1540, i32 0, i32 11
  store ptr %1539, ptr %1541, align 8, !tbaa !26
  %1542 = load ptr, ptr %1, align 8, !tbaa !5
  %1543 = getelementptr inbounds %struct._Action, ptr %1542, i32 0, i32 12
  store i32 0, ptr %1543, align 8, !tbaa !27
  br label %1544

1544:                                             ; preds = %1520, %1515
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1545

1545:                                             ; preds = %1627, %1544
  %1546 = load i32, ptr %6, align 4, !tbaa !16
  %1547 = load ptr, ptr %9, align 8, !tbaa !5
  %1548 = getelementptr inbounds %struct._PseudoAction, ptr %1547, i32 0, i32 7
  %1549 = load i32, ptr %1548, align 8, !tbaa !96
  %1550 = icmp slt i32 %1546, %1549
  br i1 %1550, label %1551, label %1630

1551:                                             ; preds = %1545
  %1552 = load ptr, ptr %9, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct._PseudoAction, ptr %1552, i32 0, i32 4
  %1554 = load ptr, ptr %1553, align 8, !tbaa !97
  %1555 = load i32, ptr %6, align 4, !tbaa !16
  %1556 = sext i32 %1555 to i64
  %1557 = getelementptr inbounds i32, ptr %1554, i64 %1556
  %1558 = load i32, ptr %1557, align 4, !tbaa !16
  %1559 = load ptr, ptr %1, align 8, !tbaa !5
  %1560 = getelementptr inbounds %struct._Action, ptr %1559, i32 0, i32 9
  %1561 = load ptr, ptr %1560, align 8, !tbaa !24
  %1562 = load ptr, ptr %1, align 8, !tbaa !5
  %1563 = getelementptr inbounds %struct._Action, ptr %1562, i32 0, i32 12
  %1564 = load i32, ptr %1563, align 8, !tbaa !27
  %1565 = sext i32 %1564 to i64
  %1566 = getelementptr inbounds i32, ptr %1561, i64 %1565
  store i32 %1558, ptr %1566, align 4, !tbaa !16
  %1567 = load ptr, ptr %9, align 8, !tbaa !5
  %1568 = getelementptr inbounds %struct._PseudoAction, ptr %1567, i32 0, i32 5
  %1569 = load ptr, ptr %1568, align 8, !tbaa !98
  %1570 = load i32, ptr %6, align 4, !tbaa !16
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr inbounds ptr, ptr %1569, i64 %1571
  %1573 = load ptr, ptr %1572, align 8, !tbaa !5
  %1574 = call ptr @copy_Exp(ptr noundef %1573)
  %1575 = load ptr, ptr %1, align 8, !tbaa !5
  %1576 = getelementptr inbounds %struct._Action, ptr %1575, i32 0, i32 10
  %1577 = load ptr, ptr %1576, align 8, !tbaa !25
  %1578 = load ptr, ptr %1, align 8, !tbaa !5
  %1579 = getelementptr inbounds %struct._Action, ptr %1578, i32 0, i32 12
  %1580 = load i32, ptr %1579, align 8, !tbaa !27
  %1581 = sext i32 %1580 to i64
  %1582 = getelementptr inbounds ptr, ptr %1577, i64 %1581
  store ptr %1574, ptr %1582, align 8, !tbaa !5
  %1583 = load ptr, ptr %1, align 8, !tbaa !5
  %1584 = getelementptr inbounds %struct._Action, ptr %1583, i32 0, i32 10
  %1585 = load ptr, ptr %1584, align 8, !tbaa !25
  %1586 = load ptr, ptr %1, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct._Action, ptr %1586, i32 0, i32 12
  %1588 = load i32, ptr %1587, align 8, !tbaa !27
  %1589 = sext i32 %1588 to i64
  %1590 = getelementptr inbounds ptr, ptr %1585, i64 %1589
  %1591 = call zeroext i8 @set_relevants_in_exp(ptr noundef %1590)
  %1592 = icmp ne i8 %1591, 0
  br i1 %1592, label %1594, label %1593

1593:                                             ; preds = %1551
  br label %1630

1594:                                             ; preds = %1551
  %1595 = load ptr, ptr %9, align 8, !tbaa !5
  %1596 = getelementptr inbounds %struct._PseudoAction, ptr %1595, i32 0, i32 6
  %1597 = load ptr, ptr %1596, align 8, !tbaa !99
  %1598 = load i32, ptr %6, align 4, !tbaa !16
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds ptr, ptr %1597, i64 %1599
  %1601 = load ptr, ptr %1600, align 8, !tbaa !5
  %1602 = call ptr @copy_Exp(ptr noundef %1601)
  %1603 = load ptr, ptr %1, align 8, !tbaa !5
  %1604 = getelementptr inbounds %struct._Action, ptr %1603, i32 0, i32 11
  %1605 = load ptr, ptr %1604, align 8, !tbaa !26
  %1606 = load ptr, ptr %1, align 8, !tbaa !5
  %1607 = getelementptr inbounds %struct._Action, ptr %1606, i32 0, i32 12
  %1608 = load i32, ptr %1607, align 8, !tbaa !27
  %1609 = sext i32 %1608 to i64
  %1610 = getelementptr inbounds ptr, ptr %1605, i64 %1609
  store ptr %1602, ptr %1610, align 8, !tbaa !5
  %1611 = load ptr, ptr %1, align 8, !tbaa !5
  %1612 = getelementptr inbounds %struct._Action, ptr %1611, i32 0, i32 11
  %1613 = load ptr, ptr %1612, align 8, !tbaa !26
  %1614 = load ptr, ptr %1, align 8, !tbaa !5
  %1615 = getelementptr inbounds %struct._Action, ptr %1614, i32 0, i32 12
  %1616 = load i32, ptr %1615, align 8, !tbaa !27
  %1617 = sext i32 %1616 to i64
  %1618 = getelementptr inbounds ptr, ptr %1613, i64 %1617
  %1619 = call zeroext i8 @set_relevants_in_exp(ptr noundef %1618)
  %1620 = icmp ne i8 %1619, 0
  br i1 %1620, label %1622, label %1621

1621:                                             ; preds = %1594
  br label %1630

1622:                                             ; preds = %1594
  %1623 = load ptr, ptr %1, align 8, !tbaa !5
  %1624 = getelementptr inbounds %struct._Action, ptr %1623, i32 0, i32 12
  %1625 = load i32, ptr %1624, align 8, !tbaa !27
  %1626 = add nsw i32 %1625, 1
  store i32 %1626, ptr %1624, align 8, !tbaa !27
  br label %1627

1627:                                             ; preds = %1622
  %1628 = load i32, ptr %6, align 4, !tbaa !16
  %1629 = add nsw i32 %1628, 1
  store i32 %1629, ptr %6, align 4, !tbaa !16
  br label %1545, !llvm.loop !100

1630:                                             ; preds = %1621, %1593, %1545
  %1631 = load i32, ptr %6, align 4, !tbaa !16
  %1632 = load ptr, ptr %9, align 8, !tbaa !5
  %1633 = getelementptr inbounds %struct._PseudoAction, ptr %1632, i32 0, i32 7
  %1634 = load i32, ptr %1633, align 8, !tbaa !96
  %1635 = icmp slt i32 %1631, %1634
  br i1 %1635, label %1636, label %1668

1636:                                             ; preds = %1630
  %1637 = load i32, ptr @gnum_actions, align 4, !tbaa !16
  %1638 = add nsw i32 %1637, -1
  store i32 %1638, ptr @gnum_actions, align 4, !tbaa !16
  %1639 = load ptr, ptr %2, align 8, !tbaa !5
  %1640 = icmp ne ptr %1639, null
  br i1 %1640, label %1641, label %1655

1641:                                             ; preds = %1636
  %1642 = load ptr, ptr %1, align 8, !tbaa !5
  %1643 = getelementptr inbounds %struct._Action, ptr %1642, i32 0, i32 19
  %1644 = load ptr, ptr %1643, align 8, !tbaa !36
  %1645 = load ptr, ptr %2, align 8, !tbaa !5
  %1646 = getelementptr inbounds %struct._Action, ptr %1645, i32 0, i32 19
  store ptr %1644, ptr %1646, align 8, !tbaa !36
  %1647 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %1647, ptr %3, align 8, !tbaa !5
  %1648 = load ptr, ptr %1, align 8, !tbaa !5
  %1649 = getelementptr inbounds %struct._Action, ptr %1648, i32 0, i32 19
  %1650 = load ptr, ptr %1649, align 8, !tbaa !36
  store ptr %1650, ptr %1, align 8, !tbaa !5
  %1651 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %1652 = load ptr, ptr %3, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct._Action, ptr %1652, i32 0, i32 19
  store ptr %1651, ptr %1653, align 8, !tbaa !36
  %1654 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %1654, ptr @gtrash_actions, align 8, !tbaa !5
  br label %1667

1655:                                             ; preds = %1636
  %1656 = load ptr, ptr %1, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct._Action, ptr %1656, i32 0, i32 19
  %1658 = load ptr, ptr %1657, align 8, !tbaa !36
  store ptr %1658, ptr @gactions, align 8, !tbaa !5
  %1659 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %1659, ptr %3, align 8, !tbaa !5
  %1660 = load ptr, ptr %1, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct._Action, ptr %1660, i32 0, i32 19
  %1662 = load ptr, ptr %1661, align 8, !tbaa !36
  store ptr %1662, ptr %1, align 8, !tbaa !5
  %1663 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %1664 = load ptr, ptr %3, align 8, !tbaa !5
  %1665 = getelementptr inbounds %struct._Action, ptr %1664, i32 0, i32 19
  store ptr %1663, ptr %1665, align 8, !tbaa !36
  %1666 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %1666, ptr @gtrash_actions, align 8, !tbaa !5
  br label %1667

1667:                                             ; preds = %1655, %1641
  br label %14, !llvm.loop !37

1668:                                             ; preds = %1630
  %1669 = load ptr, ptr %1, align 8, !tbaa !5
  %1670 = getelementptr inbounds %struct._Action, ptr %1669, i32 0, i32 18
  %1671 = load i32, ptr %1670, align 8, !tbaa !38
  %1672 = icmp sgt i32 %1671, 0
  br i1 %1672, label %1673, label %1706

1673:                                             ; preds = %1668
  %1674 = load ptr, ptr %1, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct._Action, ptr %1674, i32 0, i32 18
  %1676 = load i32, ptr %1675, align 8, !tbaa !38
  %1677 = sext i32 %1676 to i64
  %1678 = call noalias ptr @calloc(i64 noundef %1677, i64 noundef 184) #7
  %1679 = load ptr, ptr %1, align 8, !tbaa !5
  %1680 = getelementptr inbounds %struct._Action, ptr %1679, i32 0, i32 17
  store ptr %1678, ptr %1680, align 8, !tbaa !39
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1681

1681:                                             ; preds = %1702, %1673
  %1682 = load i32, ptr %6, align 4, !tbaa !16
  %1683 = load ptr, ptr %1, align 8, !tbaa !5
  %1684 = getelementptr inbounds %struct._Action, ptr %1683, i32 0, i32 18
  %1685 = load i32, ptr %1684, align 8, !tbaa !38
  %1686 = icmp slt i32 %1682, %1685
  br i1 %1686, label %1687, label %1705

1687:                                             ; preds = %1681
  %1688 = load ptr, ptr %1, align 8, !tbaa !5
  %1689 = getelementptr inbounds %struct._Action, ptr %1688, i32 0, i32 17
  %1690 = load ptr, ptr %1689, align 8, !tbaa !39
  %1691 = load i32, ptr %6, align 4, !tbaa !16
  %1692 = sext i32 %1691 to i64
  %1693 = getelementptr inbounds %struct._ActionEffect, ptr %1690, i64 %1692
  %1694 = getelementptr inbounds %struct._ActionEffect, ptr %1693, i32 0, i32 22
  store i8 0, ptr %1694, align 4, !tbaa !40
  %1695 = load ptr, ptr %1, align 8, !tbaa !5
  %1696 = getelementptr inbounds %struct._Action, ptr %1695, i32 0, i32 17
  %1697 = load ptr, ptr %1696, align 8, !tbaa !39
  %1698 = load i32, ptr %6, align 4, !tbaa !16
  %1699 = sext i32 %1698 to i64
  %1700 = getelementptr inbounds %struct._ActionEffect, ptr %1697, i64 %1699
  %1701 = getelementptr inbounds %struct._ActionEffect, ptr %1700, i32 0, i32 23
  store i8 0, ptr %1701, align 1, !tbaa !42
  br label %1702

1702:                                             ; preds = %1687
  %1703 = load i32, ptr %6, align 4, !tbaa !16
  %1704 = add nsw i32 %1703, 1
  store i32 %1704, ptr %6, align 4, !tbaa !16
  br label %1681, !llvm.loop !101

1705:                                             ; preds = %1681
  br label %1706

1706:                                             ; preds = %1705, %1668
  %1707 = load ptr, ptr %1, align 8, !tbaa !5
  %1708 = getelementptr inbounds %struct._Action, ptr %1707, i32 0, i32 18
  store i32 0, ptr %1708, align 8, !tbaa !38
  %1709 = load ptr, ptr %9, align 8, !tbaa !5
  %1710 = getelementptr inbounds %struct._PseudoAction, ptr %1709, i32 0, i32 8
  %1711 = load ptr, ptr %1710, align 8, !tbaa !102
  store ptr %1711, ptr %10, align 8, !tbaa !5
  br label %1712

1712:                                             ; preds = %2353, %1706
  %1713 = load ptr, ptr %10, align 8, !tbaa !5
  %1714 = icmp ne ptr %1713, null
  br i1 %1714, label %1715, label %2357

1715:                                             ; preds = %1712
  %1716 = load ptr, ptr %1, align 8, !tbaa !5
  %1717 = getelementptr inbounds %struct._Action, ptr %1716, i32 0, i32 17
  %1718 = load ptr, ptr %1717, align 8, !tbaa !39
  %1719 = load ptr, ptr %1, align 8, !tbaa !5
  %1720 = getelementptr inbounds %struct._Action, ptr %1719, i32 0, i32 18
  %1721 = load i32, ptr %1720, align 8, !tbaa !38
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds %struct._ActionEffect, ptr %1718, i64 %1722
  store ptr %1723, ptr %11, align 8, !tbaa !5
  %1724 = load ptr, ptr %10, align 8, !tbaa !5
  %1725 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1724, i32 0, i32 1
  %1726 = load i32, ptr %1725, align 8, !tbaa !103
  %1727 = icmp sgt i32 %1726, 0
  br i1 %1727, label %1728, label %1736

1728:                                             ; preds = %1715
  %1729 = load ptr, ptr %10, align 8, !tbaa !5
  %1730 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1729, i32 0, i32 1
  %1731 = load i32, ptr %1730, align 8, !tbaa !103
  %1732 = sext i32 %1731 to i64
  %1733 = call noalias ptr @calloc(i64 noundef %1732, i64 noundef 4) #7
  %1734 = load ptr, ptr %11, align 8, !tbaa !5
  %1735 = getelementptr inbounds %struct._ActionEffect, ptr %1734, i32 0, i32 0
  store ptr %1733, ptr %1735, align 8, !tbaa !47
  br label %1736

1736:                                             ; preds = %1728, %1715
  %1737 = load ptr, ptr %11, align 8, !tbaa !5
  %1738 = getelementptr inbounds %struct._ActionEffect, ptr %1737, i32 0, i32 1
  store i32 0, ptr %1738, align 8, !tbaa !48
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1739

1739:                                             ; preds = %1820, %1736
  %1740 = load i32, ptr %6, align 4, !tbaa !16
  %1741 = load ptr, ptr %10, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1741, i32 0, i32 1
  %1743 = load i32, ptr %1742, align 8, !tbaa !103
  %1744 = icmp slt i32 %1740, %1743
  br i1 %1744, label %1745, label %1823

1745:                                             ; preds = %1739
  %1746 = load ptr, ptr %10, align 8, !tbaa !5
  %1747 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1746, i32 0, i32 0
  %1748 = load ptr, ptr %1747, align 8, !tbaa !105
  %1749 = load i32, ptr %6, align 4, !tbaa !16
  %1750 = sext i32 %1749 to i64
  %1751 = getelementptr inbounds %struct._Fact, ptr %1748, i64 %1750
  %1752 = getelementptr inbounds %struct._Fact, ptr %1751, i32 0, i32 0
  %1753 = load i32, ptr %1752, align 4, !tbaa !18
  store i32 %1753, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %1754

1754:                                             ; preds = %1776, %1745
  %1755 = load i32, ptr %7, align 4, !tbaa !16
  %1756 = load i32, ptr @lp, align 4, !tbaa !16
  %1757 = sext i32 %1756 to i64
  %1758 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1757
  %1759 = load i32, ptr %1758, align 4, !tbaa !16
  %1760 = icmp slt i32 %1755, %1759
  br i1 %1760, label %1761, label %1779

1761:                                             ; preds = %1754
  %1762 = load ptr, ptr %10, align 8, !tbaa !5
  %1763 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1762, i32 0, i32 0
  %1764 = load ptr, ptr %1763, align 8, !tbaa !105
  %1765 = load i32, ptr %6, align 4, !tbaa !16
  %1766 = sext i32 %1765 to i64
  %1767 = getelementptr inbounds %struct._Fact, ptr %1764, i64 %1766
  %1768 = getelementptr inbounds %struct._Fact, ptr %1767, i32 0, i32 1
  %1769 = load i32, ptr %7, align 4, !tbaa !16
  %1770 = sext i32 %1769 to i64
  %1771 = getelementptr inbounds [5 x i32], ptr %1768, i64 0, i64 %1770
  %1772 = load i32, ptr %1771, align 4, !tbaa !16
  %1773 = load i32, ptr %7, align 4, !tbaa !16
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %1774
  store i32 %1772, ptr %1775, align 4, !tbaa !16
  br label %1776

1776:                                             ; preds = %1761
  %1777 = load i32, ptr %7, align 4, !tbaa !16
  %1778 = add nsw i32 %1777, 1
  store i32 %1778, ptr %7, align 4, !tbaa !16
  br label %1754, !llvm.loop !106

1779:                                             ; preds = %1754
  %1780 = call i32 @fact_adress()
  store i32 %1780, ptr %8, align 4, !tbaa !16
  %1781 = load i32, ptr @lp, align 4, !tbaa !16
  %1782 = sext i32 %1781 to i64
  %1783 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %1782
  %1784 = load ptr, ptr %1783, align 8, !tbaa !5
  %1785 = load i32, ptr %8, align 4, !tbaa !16
  %1786 = sext i32 %1785 to i64
  %1787 = getelementptr inbounds i32, ptr %1784, i64 %1786
  %1788 = load i32, ptr %1787, align 4, !tbaa !16
  %1789 = icmp ne i32 %1788, 0
  br i1 %1789, label %1791, label %1790

1790:                                             ; preds = %1779
  br label %1823

1791:                                             ; preds = %1779
  %1792 = load i32, ptr @lp, align 4, !tbaa !16
  %1793 = sext i32 %1792 to i64
  %1794 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %1793
  %1795 = load ptr, ptr %1794, align 8, !tbaa !5
  %1796 = load i32, ptr %8, align 4, !tbaa !16
  %1797 = sext i32 %1796 to i64
  %1798 = getelementptr inbounds i32, ptr %1795, i64 %1797
  %1799 = load i32, ptr %1798, align 4, !tbaa !16
  %1800 = icmp ne i32 %1799, 0
  br i1 %1800, label %1802, label %1801

1801:                                             ; preds = %1791
  br label %1820

1802:                                             ; preds = %1791
  %1803 = load i32, ptr @lp, align 4, !tbaa !16
  %1804 = sext i32 %1803 to i64
  %1805 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %1804
  %1806 = load ptr, ptr %1805, align 8, !tbaa !5
  %1807 = load i32, ptr %8, align 4, !tbaa !16
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds i32, ptr %1806, i64 %1808
  %1810 = load i32, ptr %1809, align 4, !tbaa !16
  %1811 = load ptr, ptr %11, align 8, !tbaa !5
  %1812 = getelementptr inbounds %struct._ActionEffect, ptr %1811, i32 0, i32 0
  %1813 = load ptr, ptr %1812, align 8, !tbaa !47
  %1814 = load ptr, ptr %11, align 8, !tbaa !5
  %1815 = getelementptr inbounds %struct._ActionEffect, ptr %1814, i32 0, i32 1
  %1816 = load i32, ptr %1815, align 8, !tbaa !48
  %1817 = add nsw i32 %1816, 1
  store i32 %1817, ptr %1815, align 8, !tbaa !48
  %1818 = sext i32 %1816 to i64
  %1819 = getelementptr inbounds i32, ptr %1813, i64 %1818
  store i32 %1810, ptr %1819, align 4, !tbaa !16
  br label %1820

1820:                                             ; preds = %1802, %1801
  %1821 = load i32, ptr %6, align 4, !tbaa !16
  %1822 = add nsw i32 %1821, 1
  store i32 %1822, ptr %6, align 4, !tbaa !16
  br label %1739, !llvm.loop !107

1823:                                             ; preds = %1790, %1739
  %1824 = load i32, ptr %6, align 4, !tbaa !16
  %1825 = load ptr, ptr %10, align 8, !tbaa !5
  %1826 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1825, i32 0, i32 1
  %1827 = load i32, ptr %1826, align 8, !tbaa !103
  %1828 = icmp slt i32 %1824, %1827
  br i1 %1828, label %1829, label %1833

1829:                                             ; preds = %1823
  %1830 = load ptr, ptr %11, align 8, !tbaa !5
  %1831 = getelementptr inbounds %struct._ActionEffect, ptr %1830, i32 0, i32 0
  %1832 = load ptr, ptr %1831, align 8, !tbaa !47
  call void @free(ptr noundef %1832) #6
  br label %2353

1833:                                             ; preds = %1823
  %1834 = load ptr, ptr %10, align 8, !tbaa !5
  %1835 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1834, i32 0, i32 9
  %1836 = load i32, ptr %1835, align 8, !tbaa !108
  %1837 = icmp sgt i32 %1836, 0
  br i1 %1837, label %1838, label %1885

1838:                                             ; preds = %1833
  %1839 = load ptr, ptr %10, align 8, !tbaa !5
  %1840 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1839, i32 0, i32 9
  %1841 = load i32, ptr %1840, align 8, !tbaa !108
  %1842 = sext i32 %1841 to i64
  %1843 = call noalias ptr @calloc(i64 noundef %1842, i64 noundef 4) #7
  %1844 = load ptr, ptr %11, align 8, !tbaa !5
  %1845 = getelementptr inbounds %struct._ActionEffect, ptr %1844, i32 0, i32 6
  store ptr %1843, ptr %1845, align 8, !tbaa !53
  %1846 = load ptr, ptr %10, align 8, !tbaa !5
  %1847 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1846, i32 0, i32 9
  %1848 = load i32, ptr %1847, align 8, !tbaa !108
  %1849 = sext i32 %1848 to i64
  %1850 = call noalias ptr @calloc(i64 noundef %1849, i64 noundef 8) #7
  %1851 = load ptr, ptr %11, align 8, !tbaa !5
  %1852 = getelementptr inbounds %struct._ActionEffect, ptr %1851, i32 0, i32 7
  store ptr %1850, ptr %1852, align 8, !tbaa !54
  %1853 = load ptr, ptr %10, align 8, !tbaa !5
  %1854 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1853, i32 0, i32 9
  %1855 = load i32, ptr %1854, align 8, !tbaa !108
  %1856 = sext i32 %1855 to i64
  %1857 = call noalias ptr @calloc(i64 noundef %1856, i64 noundef 8) #7
  %1858 = load ptr, ptr %11, align 8, !tbaa !5
  %1859 = getelementptr inbounds %struct._ActionEffect, ptr %1858, i32 0, i32 8
  store ptr %1857, ptr %1859, align 8, !tbaa !55
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1860

1860:                                             ; preds = %1879, %1838
  %1861 = load i32, ptr %6, align 4, !tbaa !16
  %1862 = load ptr, ptr %10, align 8, !tbaa !5
  %1863 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1862, i32 0, i32 9
  %1864 = load i32, ptr %1863, align 8, !tbaa !108
  %1865 = icmp slt i32 %1861, %1864
  br i1 %1865, label %1866, label %1882

1866:                                             ; preds = %1860
  %1867 = load ptr, ptr %11, align 8, !tbaa !5
  %1868 = getelementptr inbounds %struct._ActionEffect, ptr %1867, i32 0, i32 7
  %1869 = load ptr, ptr %1868, align 8, !tbaa !54
  %1870 = load i32, ptr %6, align 4, !tbaa !16
  %1871 = sext i32 %1870 to i64
  %1872 = getelementptr inbounds ptr, ptr %1869, i64 %1871
  store ptr null, ptr %1872, align 8, !tbaa !5
  %1873 = load ptr, ptr %11, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct._ActionEffect, ptr %1873, i32 0, i32 8
  %1875 = load ptr, ptr %1874, align 8, !tbaa !55
  %1876 = load i32, ptr %6, align 4, !tbaa !16
  %1877 = sext i32 %1876 to i64
  %1878 = getelementptr inbounds ptr, ptr %1875, i64 %1877
  store ptr null, ptr %1878, align 8, !tbaa !5
  br label %1879

1879:                                             ; preds = %1866
  %1880 = load i32, ptr %6, align 4, !tbaa !16
  %1881 = add nsw i32 %1880, 1
  store i32 %1881, ptr %6, align 4, !tbaa !16
  br label %1860, !llvm.loop !109

1882:                                             ; preds = %1860
  %1883 = load ptr, ptr %11, align 8, !tbaa !5
  %1884 = getelementptr inbounds %struct._ActionEffect, ptr %1883, i32 0, i32 9
  store i32 0, ptr %1884, align 8, !tbaa !57
  br label %1885

1885:                                             ; preds = %1882, %1833
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1886

1886:                                             ; preds = %1968, %1885
  %1887 = load i32, ptr %6, align 4, !tbaa !16
  %1888 = load ptr, ptr %10, align 8, !tbaa !5
  %1889 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1888, i32 0, i32 9
  %1890 = load i32, ptr %1889, align 8, !tbaa !108
  %1891 = icmp slt i32 %1887, %1890
  br i1 %1891, label %1892, label %1971

1892:                                             ; preds = %1886
  %1893 = load ptr, ptr %10, align 8, !tbaa !5
  %1894 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1893, i32 0, i32 6
  %1895 = load ptr, ptr %1894, align 8, !tbaa !110
  %1896 = load i32, ptr %6, align 4, !tbaa !16
  %1897 = sext i32 %1896 to i64
  %1898 = getelementptr inbounds i32, ptr %1895, i64 %1897
  %1899 = load i32, ptr %1898, align 4, !tbaa !16
  %1900 = load ptr, ptr %11, align 8, !tbaa !5
  %1901 = getelementptr inbounds %struct._ActionEffect, ptr %1900, i32 0, i32 6
  %1902 = load ptr, ptr %1901, align 8, !tbaa !53
  %1903 = load ptr, ptr %11, align 8, !tbaa !5
  %1904 = getelementptr inbounds %struct._ActionEffect, ptr %1903, i32 0, i32 9
  %1905 = load i32, ptr %1904, align 8, !tbaa !57
  %1906 = sext i32 %1905 to i64
  %1907 = getelementptr inbounds i32, ptr %1902, i64 %1906
  store i32 %1899, ptr %1907, align 4, !tbaa !16
  %1908 = load ptr, ptr %10, align 8, !tbaa !5
  %1909 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1908, i32 0, i32 7
  %1910 = load ptr, ptr %1909, align 8, !tbaa !111
  %1911 = load i32, ptr %6, align 4, !tbaa !16
  %1912 = sext i32 %1911 to i64
  %1913 = getelementptr inbounds ptr, ptr %1910, i64 %1912
  %1914 = load ptr, ptr %1913, align 8, !tbaa !5
  %1915 = call ptr @copy_Exp(ptr noundef %1914)
  %1916 = load ptr, ptr %11, align 8, !tbaa !5
  %1917 = getelementptr inbounds %struct._ActionEffect, ptr %1916, i32 0, i32 7
  %1918 = load ptr, ptr %1917, align 8, !tbaa !54
  %1919 = load ptr, ptr %11, align 8, !tbaa !5
  %1920 = getelementptr inbounds %struct._ActionEffect, ptr %1919, i32 0, i32 9
  %1921 = load i32, ptr %1920, align 8, !tbaa !57
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds ptr, ptr %1918, i64 %1922
  store ptr %1915, ptr %1923, align 8, !tbaa !5
  %1924 = load ptr, ptr %11, align 8, !tbaa !5
  %1925 = getelementptr inbounds %struct._ActionEffect, ptr %1924, i32 0, i32 7
  %1926 = load ptr, ptr %1925, align 8, !tbaa !54
  %1927 = load ptr, ptr %11, align 8, !tbaa !5
  %1928 = getelementptr inbounds %struct._ActionEffect, ptr %1927, i32 0, i32 9
  %1929 = load i32, ptr %1928, align 8, !tbaa !57
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds ptr, ptr %1926, i64 %1930
  %1932 = call zeroext i8 @set_relevants_in_exp(ptr noundef %1931)
  %1933 = icmp ne i8 %1932, 0
  br i1 %1933, label %1935, label %1934

1934:                                             ; preds = %1892
  br label %1971

1935:                                             ; preds = %1892
  %1936 = load ptr, ptr %10, align 8, !tbaa !5
  %1937 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1936, i32 0, i32 8
  %1938 = load ptr, ptr %1937, align 8, !tbaa !112
  %1939 = load i32, ptr %6, align 4, !tbaa !16
  %1940 = sext i32 %1939 to i64
  %1941 = getelementptr inbounds ptr, ptr %1938, i64 %1940
  %1942 = load ptr, ptr %1941, align 8, !tbaa !5
  %1943 = call ptr @copy_Exp(ptr noundef %1942)
  %1944 = load ptr, ptr %11, align 8, !tbaa !5
  %1945 = getelementptr inbounds %struct._ActionEffect, ptr %1944, i32 0, i32 8
  %1946 = load ptr, ptr %1945, align 8, !tbaa !55
  %1947 = load ptr, ptr %11, align 8, !tbaa !5
  %1948 = getelementptr inbounds %struct._ActionEffect, ptr %1947, i32 0, i32 9
  %1949 = load i32, ptr %1948, align 8, !tbaa !57
  %1950 = sext i32 %1949 to i64
  %1951 = getelementptr inbounds ptr, ptr %1946, i64 %1950
  store ptr %1943, ptr %1951, align 8, !tbaa !5
  %1952 = load ptr, ptr %11, align 8, !tbaa !5
  %1953 = getelementptr inbounds %struct._ActionEffect, ptr %1952, i32 0, i32 8
  %1954 = load ptr, ptr %1953, align 8, !tbaa !55
  %1955 = load ptr, ptr %11, align 8, !tbaa !5
  %1956 = getelementptr inbounds %struct._ActionEffect, ptr %1955, i32 0, i32 9
  %1957 = load i32, ptr %1956, align 8, !tbaa !57
  %1958 = sext i32 %1957 to i64
  %1959 = getelementptr inbounds ptr, ptr %1954, i64 %1958
  %1960 = call zeroext i8 @set_relevants_in_exp(ptr noundef %1959)
  %1961 = icmp ne i8 %1960, 0
  br i1 %1961, label %1963, label %1962

1962:                                             ; preds = %1935
  br label %1971

1963:                                             ; preds = %1935
  %1964 = load ptr, ptr %11, align 8, !tbaa !5
  %1965 = getelementptr inbounds %struct._ActionEffect, ptr %1964, i32 0, i32 9
  %1966 = load i32, ptr %1965, align 8, !tbaa !57
  %1967 = add nsw i32 %1966, 1
  store i32 %1967, ptr %1965, align 8, !tbaa !57
  br label %1968

1968:                                             ; preds = %1963
  %1969 = load i32, ptr %6, align 4, !tbaa !16
  %1970 = add nsw i32 %1969, 1
  store i32 %1970, ptr %6, align 4, !tbaa !16
  br label %1886, !llvm.loop !113

1971:                                             ; preds = %1962, %1934, %1886
  %1972 = load i32, ptr %6, align 4, !tbaa !16
  %1973 = load ptr, ptr %10, align 8, !tbaa !5
  %1974 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1973, i32 0, i32 9
  %1975 = load i32, ptr %1974, align 8, !tbaa !108
  %1976 = icmp slt i32 %1972, %1975
  br i1 %1976, label %1977, label %1978

1977:                                             ; preds = %1971
  br label %2357

1978:                                             ; preds = %1971
  %1979 = load ptr, ptr %10, align 8, !tbaa !5
  %1980 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1979, i32 0, i32 3
  %1981 = load i32, ptr %1980, align 8, !tbaa !114
  %1982 = icmp sgt i32 %1981, 0
  br i1 %1982, label %1983, label %1991

1983:                                             ; preds = %1978
  %1984 = load ptr, ptr %10, align 8, !tbaa !5
  %1985 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1984, i32 0, i32 3
  %1986 = load i32, ptr %1985, align 8, !tbaa !114
  %1987 = sext i32 %1986 to i64
  %1988 = call noalias ptr @calloc(i64 noundef %1987, i64 noundef 4) #7
  %1989 = load ptr, ptr %11, align 8, !tbaa !5
  %1990 = getelementptr inbounds %struct._ActionEffect, ptr %1989, i32 0, i32 2
  store ptr %1988, ptr %1990, align 8, !tbaa !65
  br label %1991

1991:                                             ; preds = %1983, %1978
  %1992 = load ptr, ptr %11, align 8, !tbaa !5
  %1993 = getelementptr inbounds %struct._ActionEffect, ptr %1992, i32 0, i32 3
  store i32 0, ptr %1993, align 8, !tbaa !66
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %1994

1994:                                             ; preds = %2064, %1991
  %1995 = load i32, ptr %6, align 4, !tbaa !16
  %1996 = load ptr, ptr %10, align 8, !tbaa !5
  %1997 = getelementptr inbounds %struct._PseudoActionEffect, ptr %1996, i32 0, i32 3
  %1998 = load i32, ptr %1997, align 8, !tbaa !114
  %1999 = icmp slt i32 %1995, %1998
  br i1 %1999, label %2000, label %2067

2000:                                             ; preds = %1994
  %2001 = load ptr, ptr %10, align 8, !tbaa !5
  %2002 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2001, i32 0, i32 2
  %2003 = load ptr, ptr %2002, align 8, !tbaa !115
  %2004 = load i32, ptr %6, align 4, !tbaa !16
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds %struct._Fact, ptr %2003, i64 %2005
  %2007 = getelementptr inbounds %struct._Fact, ptr %2006, i32 0, i32 0
  %2008 = load i32, ptr %2007, align 4, !tbaa !18
  store i32 %2008, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %2009

2009:                                             ; preds = %2031, %2000
  %2010 = load i32, ptr %7, align 4, !tbaa !16
  %2011 = load i32, ptr @lp, align 4, !tbaa !16
  %2012 = sext i32 %2011 to i64
  %2013 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %2012
  %2014 = load i32, ptr %2013, align 4, !tbaa !16
  %2015 = icmp slt i32 %2010, %2014
  br i1 %2015, label %2016, label %2034

2016:                                             ; preds = %2009
  %2017 = load ptr, ptr %10, align 8, !tbaa !5
  %2018 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2017, i32 0, i32 2
  %2019 = load ptr, ptr %2018, align 8, !tbaa !115
  %2020 = load i32, ptr %6, align 4, !tbaa !16
  %2021 = sext i32 %2020 to i64
  %2022 = getelementptr inbounds %struct._Fact, ptr %2019, i64 %2021
  %2023 = getelementptr inbounds %struct._Fact, ptr %2022, i32 0, i32 1
  %2024 = load i32, ptr %7, align 4, !tbaa !16
  %2025 = sext i32 %2024 to i64
  %2026 = getelementptr inbounds [5 x i32], ptr %2023, i64 0, i64 %2025
  %2027 = load i32, ptr %2026, align 4, !tbaa !16
  %2028 = load i32, ptr %7, align 4, !tbaa !16
  %2029 = sext i32 %2028 to i64
  %2030 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %2029
  store i32 %2027, ptr %2030, align 4, !tbaa !16
  br label %2031

2031:                                             ; preds = %2016
  %2032 = load i32, ptr %7, align 4, !tbaa !16
  %2033 = add nsw i32 %2032, 1
  store i32 %2033, ptr %7, align 4, !tbaa !16
  br label %2009, !llvm.loop !116

2034:                                             ; preds = %2009
  %2035 = call i32 @fact_adress()
  store i32 %2035, ptr %8, align 4, !tbaa !16
  %2036 = load i32, ptr @lp, align 4, !tbaa !16
  %2037 = sext i32 %2036 to i64
  %2038 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %2037
  %2039 = load ptr, ptr %2038, align 8, !tbaa !5
  %2040 = load i32, ptr %8, align 4, !tbaa !16
  %2041 = sext i32 %2040 to i64
  %2042 = getelementptr inbounds i32, ptr %2039, i64 %2041
  %2043 = load i32, ptr %2042, align 4, !tbaa !16
  %2044 = icmp ne i32 %2043, 0
  br i1 %2044, label %2046, label %2045

2045:                                             ; preds = %2034
  br label %2064

2046:                                             ; preds = %2034
  %2047 = load i32, ptr @lp, align 4, !tbaa !16
  %2048 = sext i32 %2047 to i64
  %2049 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %2048
  %2050 = load ptr, ptr %2049, align 8, !tbaa !5
  %2051 = load i32, ptr %8, align 4, !tbaa !16
  %2052 = sext i32 %2051 to i64
  %2053 = getelementptr inbounds i32, ptr %2050, i64 %2052
  %2054 = load i32, ptr %2053, align 4, !tbaa !16
  %2055 = load ptr, ptr %11, align 8, !tbaa !5
  %2056 = getelementptr inbounds %struct._ActionEffect, ptr %2055, i32 0, i32 2
  %2057 = load ptr, ptr %2056, align 8, !tbaa !65
  %2058 = load ptr, ptr %11, align 8, !tbaa !5
  %2059 = getelementptr inbounds %struct._ActionEffect, ptr %2058, i32 0, i32 3
  %2060 = load i32, ptr %2059, align 8, !tbaa !66
  %2061 = add nsw i32 %2060, 1
  store i32 %2061, ptr %2059, align 8, !tbaa !66
  %2062 = sext i32 %2060 to i64
  %2063 = getelementptr inbounds i32, ptr %2057, i64 %2062
  store i32 %2054, ptr %2063, align 4, !tbaa !16
  br label %2064

2064:                                             ; preds = %2046, %2045
  %2065 = load i32, ptr %6, align 4, !tbaa !16
  %2066 = add nsw i32 %2065, 1
  store i32 %2066, ptr %6, align 4, !tbaa !16
  br label %1994, !llvm.loop !117

2067:                                             ; preds = %1994
  %2068 = load ptr, ptr %10, align 8, !tbaa !5
  %2069 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2068, i32 0, i32 5
  %2070 = load i32, ptr %2069, align 8, !tbaa !118
  %2071 = icmp sgt i32 %2070, 0
  br i1 %2071, label %2072, label %2080

2072:                                             ; preds = %2067
  %2073 = load ptr, ptr %10, align 8, !tbaa !5
  %2074 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2073, i32 0, i32 5
  %2075 = load i32, ptr %2074, align 8, !tbaa !118
  %2076 = sext i32 %2075 to i64
  %2077 = call noalias ptr @calloc(i64 noundef %2076, i64 noundef 4) #7
  %2078 = load ptr, ptr %11, align 8, !tbaa !5
  %2079 = getelementptr inbounds %struct._ActionEffect, ptr %2078, i32 0, i32 4
  store ptr %2077, ptr %2079, align 8, !tbaa !71
  br label %2080

2080:                                             ; preds = %2072, %2067
  %2081 = load ptr, ptr %11, align 8, !tbaa !5
  %2082 = getelementptr inbounds %struct._ActionEffect, ptr %2081, i32 0, i32 5
  store i32 0, ptr %2082, align 8, !tbaa !72
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %2083

2083:                                             ; preds = %2153, %2080
  %2084 = load i32, ptr %6, align 4, !tbaa !16
  %2085 = load ptr, ptr %10, align 8, !tbaa !5
  %2086 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2085, i32 0, i32 5
  %2087 = load i32, ptr %2086, align 8, !tbaa !118
  %2088 = icmp slt i32 %2084, %2087
  br i1 %2088, label %2089, label %2156

2089:                                             ; preds = %2083
  %2090 = load ptr, ptr %10, align 8, !tbaa !5
  %2091 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2090, i32 0, i32 4
  %2092 = load ptr, ptr %2091, align 8, !tbaa !119
  %2093 = load i32, ptr %6, align 4, !tbaa !16
  %2094 = sext i32 %2093 to i64
  %2095 = getelementptr inbounds %struct._Fact, ptr %2092, i64 %2094
  %2096 = getelementptr inbounds %struct._Fact, ptr %2095, i32 0, i32 0
  %2097 = load i32, ptr %2096, align 4, !tbaa !18
  store i32 %2097, ptr @lp, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %2098

2098:                                             ; preds = %2120, %2089
  %2099 = load i32, ptr %7, align 4, !tbaa !16
  %2100 = load i32, ptr @lp, align 4, !tbaa !16
  %2101 = sext i32 %2100 to i64
  %2102 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %2101
  %2103 = load i32, ptr %2102, align 4, !tbaa !16
  %2104 = icmp slt i32 %2099, %2103
  br i1 %2104, label %2105, label %2123

2105:                                             ; preds = %2098
  %2106 = load ptr, ptr %10, align 8, !tbaa !5
  %2107 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2106, i32 0, i32 4
  %2108 = load ptr, ptr %2107, align 8, !tbaa !119
  %2109 = load i32, ptr %6, align 4, !tbaa !16
  %2110 = sext i32 %2109 to i64
  %2111 = getelementptr inbounds %struct._Fact, ptr %2108, i64 %2110
  %2112 = getelementptr inbounds %struct._Fact, ptr %2111, i32 0, i32 1
  %2113 = load i32, ptr %7, align 4, !tbaa !16
  %2114 = sext i32 %2113 to i64
  %2115 = getelementptr inbounds [5 x i32], ptr %2112, i64 0, i64 %2114
  %2116 = load i32, ptr %2115, align 4, !tbaa !16
  %2117 = load i32, ptr %7, align 4, !tbaa !16
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %2118
  store i32 %2116, ptr %2119, align 4, !tbaa !16
  br label %2120

2120:                                             ; preds = %2105
  %2121 = load i32, ptr %7, align 4, !tbaa !16
  %2122 = add nsw i32 %2121, 1
  store i32 %2122, ptr %7, align 4, !tbaa !16
  br label %2098, !llvm.loop !120

2123:                                             ; preds = %2098
  %2124 = call i32 @fact_adress()
  store i32 %2124, ptr %8, align 4, !tbaa !16
  %2125 = load i32, ptr @lp, align 4, !tbaa !16
  %2126 = sext i32 %2125 to i64
  %2127 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %2126
  %2128 = load ptr, ptr %2127, align 8, !tbaa !5
  %2129 = load i32, ptr %8, align 4, !tbaa !16
  %2130 = sext i32 %2129 to i64
  %2131 = getelementptr inbounds i32, ptr %2128, i64 %2130
  %2132 = load i32, ptr %2131, align 4, !tbaa !16
  %2133 = icmp ne i32 %2132, 0
  br i1 %2133, label %2135, label %2134

2134:                                             ; preds = %2123
  br label %2153

2135:                                             ; preds = %2123
  %2136 = load i32, ptr @lp, align 4, !tbaa !16
  %2137 = sext i32 %2136 to i64
  %2138 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %2137
  %2139 = load ptr, ptr %2138, align 8, !tbaa !5
  %2140 = load i32, ptr %8, align 4, !tbaa !16
  %2141 = sext i32 %2140 to i64
  %2142 = getelementptr inbounds i32, ptr %2139, i64 %2141
  %2143 = load i32, ptr %2142, align 4, !tbaa !16
  %2144 = load ptr, ptr %11, align 8, !tbaa !5
  %2145 = getelementptr inbounds %struct._ActionEffect, ptr %2144, i32 0, i32 4
  %2146 = load ptr, ptr %2145, align 8, !tbaa !71
  %2147 = load ptr, ptr %11, align 8, !tbaa !5
  %2148 = getelementptr inbounds %struct._ActionEffect, ptr %2147, i32 0, i32 5
  %2149 = load i32, ptr %2148, align 8, !tbaa !72
  %2150 = add nsw i32 %2149, 1
  store i32 %2150, ptr %2148, align 8, !tbaa !72
  %2151 = sext i32 %2149 to i64
  %2152 = getelementptr inbounds i32, ptr %2146, i64 %2151
  store i32 %2143, ptr %2152, align 4, !tbaa !16
  br label %2153

2153:                                             ; preds = %2135, %2134
  %2154 = load i32, ptr %6, align 4, !tbaa !16
  %2155 = add nsw i32 %2154, 1
  store i32 %2155, ptr %6, align 4, !tbaa !16
  br label %2083, !llvm.loop !121

2156:                                             ; preds = %2083
  %2157 = load i32, ptr %6, align 4, !tbaa !16
  %2158 = load ptr, ptr %10, align 8, !tbaa !5
  %2159 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2158, i32 0, i32 5
  %2160 = load i32, ptr %2159, align 8, !tbaa !118
  %2161 = icmp slt i32 %2157, %2160
  br i1 %2161, label %2162, label %2163

2162:                                             ; preds = %2156
  br label %2357

2163:                                             ; preds = %2156
  %2164 = load ptr, ptr %10, align 8, !tbaa !5
  %2165 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2164, i32 0, i32 13
  %2166 = load i32, ptr %2165, align 8, !tbaa !122
  %2167 = icmp sgt i32 %2166, 0
  br i1 %2167, label %2168, label %2192

2168:                                             ; preds = %2163
  %2169 = load ptr, ptr %10, align 8, !tbaa !5
  %2170 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2169, i32 0, i32 13
  %2171 = load i32, ptr %2170, align 8, !tbaa !122
  %2172 = sext i32 %2171 to i64
  %2173 = call noalias ptr @calloc(i64 noundef %2172, i64 noundef 4) #7
  %2174 = load ptr, ptr %11, align 8, !tbaa !5
  %2175 = getelementptr inbounds %struct._ActionEffect, ptr %2174, i32 0, i32 10
  store ptr %2173, ptr %2175, align 8, !tbaa !77
  %2176 = load ptr, ptr %10, align 8, !tbaa !5
  %2177 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2176, i32 0, i32 13
  %2178 = load i32, ptr %2177, align 8, !tbaa !122
  %2179 = sext i32 %2178 to i64
  %2180 = call noalias ptr @calloc(i64 noundef %2179, i64 noundef 4) #7
  %2181 = load ptr, ptr %11, align 8, !tbaa !5
  %2182 = getelementptr inbounds %struct._ActionEffect, ptr %2181, i32 0, i32 11
  store ptr %2180, ptr %2182, align 8, !tbaa !78
  %2183 = load ptr, ptr %10, align 8, !tbaa !5
  %2184 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2183, i32 0, i32 13
  %2185 = load i32, ptr %2184, align 8, !tbaa !122
  %2186 = sext i32 %2185 to i64
  %2187 = call noalias ptr @calloc(i64 noundef %2186, i64 noundef 8) #7
  %2188 = load ptr, ptr %11, align 8, !tbaa !5
  %2189 = getelementptr inbounds %struct._ActionEffect, ptr %2188, i32 0, i32 12
  store ptr %2187, ptr %2189, align 8, !tbaa !79
  %2190 = load ptr, ptr %11, align 8, !tbaa !5
  %2191 = getelementptr inbounds %struct._ActionEffect, ptr %2190, i32 0, i32 13
  store i32 0, ptr %2191, align 8, !tbaa !80
  br label %2192

2192:                                             ; preds = %2168, %2163
  store i32 0, ptr %6, align 4, !tbaa !16
  br label %2193

2193:                                             ; preds = %2336, %2192
  %2194 = load i32, ptr %6, align 4, !tbaa !16
  %2195 = load ptr, ptr %10, align 8, !tbaa !5
  %2196 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2195, i32 0, i32 13
  %2197 = load i32, ptr %2196, align 8, !tbaa !122
  %2198 = icmp slt i32 %2194, %2197
  br i1 %2198, label %2199, label %2339

2199:                                             ; preds = %2193
  %2200 = load ptr, ptr %10, align 8, !tbaa !5
  %2201 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2200, i32 0, i32 10
  %2202 = load ptr, ptr %2201, align 8, !tbaa !123
  %2203 = load i32, ptr %6, align 4, !tbaa !16
  %2204 = sext i32 %2203 to i64
  %2205 = getelementptr inbounds i32, ptr %2202, i64 %2204
  %2206 = load i32, ptr %2205, align 4, !tbaa !16
  %2207 = load ptr, ptr %11, align 8, !tbaa !5
  %2208 = getelementptr inbounds %struct._ActionEffect, ptr %2207, i32 0, i32 10
  %2209 = load ptr, ptr %2208, align 8, !tbaa !77
  %2210 = load ptr, ptr %11, align 8, !tbaa !5
  %2211 = getelementptr inbounds %struct._ActionEffect, ptr %2210, i32 0, i32 13
  %2212 = load i32, ptr %2211, align 8, !tbaa !80
  %2213 = sext i32 %2212 to i64
  %2214 = getelementptr inbounds i32, ptr %2209, i64 %2213
  store i32 %2206, ptr %2214, align 4, !tbaa !16
  %2215 = load ptr, ptr %10, align 8, !tbaa !5
  %2216 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2215, i32 0, i32 11
  %2217 = load ptr, ptr %2216, align 8, !tbaa !124
  %2218 = load i32, ptr %6, align 4, !tbaa !16
  %2219 = sext i32 %2218 to i64
  %2220 = getelementptr inbounds %struct._Fluent, ptr %2217, i64 %2219
  %2221 = getelementptr inbounds %struct._Fluent, ptr %2220, i32 0, i32 0
  %2222 = load i32, ptr %2221, align 4, !tbaa !83
  store i32 %2222, ptr @lf, align 4, !tbaa !16
  store i32 0, ptr %7, align 4, !tbaa !16
  br label %2223

2223:                                             ; preds = %2253, %2199
  %2224 = load i32, ptr %7, align 4, !tbaa !16
  %2225 = load i32, ptr @lf, align 4, !tbaa !16
  %2226 = sext i32 %2225 to i64
  %2227 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %2226
  %2228 = load i32, ptr %2227, align 4, !tbaa !16
  %2229 = icmp slt i32 %2224, %2228
  br i1 %2229, label %2230, label %2256

2230:                                             ; preds = %2223
  %2231 = load ptr, ptr %10, align 8, !tbaa !5
  %2232 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2231, i32 0, i32 11
  %2233 = load ptr, ptr %2232, align 8, !tbaa !124
  %2234 = load i32, ptr %6, align 4, !tbaa !16
  %2235 = sext i32 %2234 to i64
  %2236 = getelementptr inbounds %struct._Fluent, ptr %2233, i64 %2235
  %2237 = getelementptr inbounds %struct._Fluent, ptr %2236, i32 0, i32 1
  %2238 = load i32, ptr %7, align 4, !tbaa !16
  %2239 = sext i32 %2238 to i64
  %2240 = getelementptr inbounds [5 x i32], ptr %2237, i64 0, i64 %2239
  %2241 = load i32, ptr %2240, align 4, !tbaa !16
  %2242 = load i32, ptr %7, align 4, !tbaa !16
  %2243 = sext i32 %2242 to i64
  %2244 = getelementptr inbounds [15 x i32], ptr @lf_args, i64 0, i64 %2243
  store i32 %2241, ptr %2244, align 4, !tbaa !16
  %2245 = load i32, ptr %7, align 4, !tbaa !16
  %2246 = sext i32 %2245 to i64
  %2247 = getelementptr inbounds [15 x i32], ptr @lf_args, i64 0, i64 %2246
  %2248 = load i32, ptr %2247, align 4, !tbaa !16
  %2249 = icmp slt i32 %2248, 0
  br i1 %2249, label %2250, label %2252

2250:                                             ; preds = %2230
  %2251 = call i32 (ptr, ...) @printf(ptr noundef @.str.41)
  call void @exit(i32 noundef 1) #8
  unreachable

2252:                                             ; preds = %2230
  br label %2253

2253:                                             ; preds = %2252
  %2254 = load i32, ptr %7, align 4, !tbaa !16
  %2255 = add nsw i32 %2254, 1
  store i32 %2255, ptr %7, align 4, !tbaa !16
  br label %2223, !llvm.loop !125

2256:                                             ; preds = %2223
  %2257 = call i32 @fluent_adress()
  store i32 %2257, ptr %8, align 4, !tbaa !16
  %2258 = load i32, ptr @lf, align 4, !tbaa !16
  %2259 = sext i32 %2258 to i64
  %2260 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %2259
  %2261 = load ptr, ptr %2260, align 8, !tbaa !5
  %2262 = load i32, ptr %8, align 4, !tbaa !16
  %2263 = sext i32 %2262 to i64
  %2264 = getelementptr inbounds i32, ptr %2261, i64 %2263
  %2265 = load i32, ptr %2264, align 4, !tbaa !16
  %2266 = load ptr, ptr %11, align 8, !tbaa !5
  %2267 = getelementptr inbounds %struct._ActionEffect, ptr %2266, i32 0, i32 11
  %2268 = load ptr, ptr %2267, align 8, !tbaa !78
  %2269 = load i32, ptr %6, align 4, !tbaa !16
  %2270 = sext i32 %2269 to i64
  %2271 = getelementptr inbounds i32, ptr %2268, i64 %2270
  store i32 %2265, ptr %2271, align 4, !tbaa !16
  %2272 = load i32, ptr @lf, align 4, !tbaa !16
  %2273 = sext i32 %2272 to i64
  %2274 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %2273
  %2275 = load ptr, ptr %2274, align 8, !tbaa !5
  %2276 = load i32, ptr %8, align 4, !tbaa !16
  %2277 = sext i32 %2276 to i64
  %2278 = getelementptr inbounds i32, ptr %2275, i64 %2277
  %2279 = load i32, ptr %2278, align 4, !tbaa !16
  %2280 = icmp eq i32 %2279, -1
  br i1 %2280, label %2281, label %2284

2281:                                             ; preds = %2256
  %2282 = load ptr, ptr %11, align 8, !tbaa !5
  %2283 = getelementptr inbounds %struct._ActionEffect, ptr %2282, i32 0, i32 22
  store i8 1, ptr %2283, align 4, !tbaa !40
  br label %2284

2284:                                             ; preds = %2281, %2256
  %2285 = load ptr, ptr %10, align 8, !tbaa !5
  %2286 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2285, i32 0, i32 12
  %2287 = load ptr, ptr %2286, align 8, !tbaa !126
  %2288 = load i32, ptr %6, align 4, !tbaa !16
  %2289 = sext i32 %2288 to i64
  %2290 = getelementptr inbounds ptr, ptr %2287, i64 %2289
  %2291 = load ptr, ptr %2290, align 8, !tbaa !5
  %2292 = call ptr @copy_Exp(ptr noundef %2291)
  %2293 = load ptr, ptr %11, align 8, !tbaa !5
  %2294 = getelementptr inbounds %struct._ActionEffect, ptr %2293, i32 0, i32 12
  %2295 = load ptr, ptr %2294, align 8, !tbaa !79
  %2296 = load ptr, ptr %11, align 8, !tbaa !5
  %2297 = getelementptr inbounds %struct._ActionEffect, ptr %2296, i32 0, i32 13
  %2298 = load i32, ptr %2297, align 8, !tbaa !80
  %2299 = sext i32 %2298 to i64
  %2300 = getelementptr inbounds ptr, ptr %2295, i64 %2299
  store ptr %2292, ptr %2300, align 8, !tbaa !5
  %2301 = load ptr, ptr %11, align 8, !tbaa !5
  %2302 = getelementptr inbounds %struct._ActionEffect, ptr %2301, i32 0, i32 12
  %2303 = load ptr, ptr %2302, align 8, !tbaa !79
  %2304 = load ptr, ptr %11, align 8, !tbaa !5
  %2305 = getelementptr inbounds %struct._ActionEffect, ptr %2304, i32 0, i32 13
  %2306 = load i32, ptr %2305, align 8, !tbaa !80
  %2307 = sext i32 %2306 to i64
  %2308 = getelementptr inbounds ptr, ptr %2303, i64 %2307
  %2309 = call zeroext i8 @set_relevants_in_exp(ptr noundef %2308)
  %2310 = icmp ne i8 %2309, 0
  br i1 %2310, label %2314, label %2311

2311:                                             ; preds = %2284
  %2312 = load ptr, ptr %11, align 8, !tbaa !5
  %2313 = getelementptr inbounds %struct._ActionEffect, ptr %2312, i32 0, i32 22
  store i8 1, ptr %2313, align 4, !tbaa !40
  br label %2314

2314:                                             ; preds = %2311, %2284
  %2315 = load ptr, ptr %11, align 8, !tbaa !5
  %2316 = getelementptr inbounds %struct._ActionEffect, ptr %2315, i32 0, i32 22
  %2317 = load i8, ptr %2316, align 4, !tbaa !40
  %2318 = zext i8 %2317 to i32
  %2319 = icmp ne i32 %2318, 0
  br i1 %2319, label %2320, label %2331

2320:                                             ; preds = %2314
  %2321 = load ptr, ptr %11, align 8, !tbaa !5
  %2322 = getelementptr inbounds %struct._ActionEffect, ptr %2321, i32 0, i32 1
  %2323 = load i32, ptr %2322, align 8, !tbaa !48
  %2324 = icmp eq i32 %2323, 0
  br i1 %2324, label %2325, label %2331

2325:                                             ; preds = %2320
  %2326 = load ptr, ptr %11, align 8, !tbaa !5
  %2327 = getelementptr inbounds %struct._ActionEffect, ptr %2326, i32 0, i32 9
  %2328 = load i32, ptr %2327, align 8, !tbaa !57
  %2329 = icmp eq i32 %2328, 0
  br i1 %2329, label %2330, label %2331

2330:                                             ; preds = %2325
  br label %2339

2331:                                             ; preds = %2325, %2320, %2314
  %2332 = load ptr, ptr %11, align 8, !tbaa !5
  %2333 = getelementptr inbounds %struct._ActionEffect, ptr %2332, i32 0, i32 13
  %2334 = load i32, ptr %2333, align 8, !tbaa !80
  %2335 = add nsw i32 %2334, 1
  store i32 %2335, ptr %2333, align 8, !tbaa !80
  br label %2336

2336:                                             ; preds = %2331
  %2337 = load i32, ptr %6, align 4, !tbaa !16
  %2338 = add nsw i32 %2337, 1
  store i32 %2338, ptr %6, align 4, !tbaa !16
  br label %2193, !llvm.loop !127

2339:                                             ; preds = %2330, %2193
  %2340 = load i32, ptr %6, align 4, !tbaa !16
  %2341 = load ptr, ptr %10, align 8, !tbaa !5
  %2342 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2341, i32 0, i32 13
  %2343 = load i32, ptr %2342, align 8, !tbaa !122
  %2344 = icmp slt i32 %2340, %2343
  br i1 %2344, label %2345, label %2346

2345:                                             ; preds = %2339
  br label %2357

2346:                                             ; preds = %2339
  %2347 = load ptr, ptr %1, align 8, !tbaa !5
  %2348 = getelementptr inbounds %struct._Action, ptr %2347, i32 0, i32 18
  %2349 = load i32, ptr %2348, align 8, !tbaa !38
  %2350 = add nsw i32 %2349, 1
  store i32 %2350, ptr %2348, align 8, !tbaa !38
  %2351 = load i32, ptr @lnum_effects, align 4, !tbaa !16
  %2352 = add nsw i32 %2351, 1
  store i32 %2352, ptr @lnum_effects, align 4, !tbaa !16
  br label %2353

2353:                                             ; preds = %2346, %1829
  %2354 = load ptr, ptr %10, align 8, !tbaa !5
  %2355 = getelementptr inbounds %struct._PseudoActionEffect, ptr %2354, i32 0, i32 14
  %2356 = load ptr, ptr %2355, align 8, !tbaa !128
  store ptr %2356, ptr %10, align 8, !tbaa !5
  br label %1712, !llvm.loop !129

2357:                                             ; preds = %2345, %2162, %1977, %1712
  %2358 = load ptr, ptr %10, align 8, !tbaa !5
  %2359 = icmp ne ptr %2358, null
  br i1 %2359, label %2360, label %2392

2360:                                             ; preds = %2357
  %2361 = load i32, ptr @gnum_actions, align 4, !tbaa !16
  %2362 = add nsw i32 %2361, -1
  store i32 %2362, ptr @gnum_actions, align 4, !tbaa !16
  %2363 = load ptr, ptr %2, align 8, !tbaa !5
  %2364 = icmp ne ptr %2363, null
  br i1 %2364, label %2365, label %2379

2365:                                             ; preds = %2360
  %2366 = load ptr, ptr %1, align 8, !tbaa !5
  %2367 = getelementptr inbounds %struct._Action, ptr %2366, i32 0, i32 19
  %2368 = load ptr, ptr %2367, align 8, !tbaa !36
  %2369 = load ptr, ptr %2, align 8, !tbaa !5
  %2370 = getelementptr inbounds %struct._Action, ptr %2369, i32 0, i32 19
  store ptr %2368, ptr %2370, align 8, !tbaa !36
  %2371 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %2371, ptr %3, align 8, !tbaa !5
  %2372 = load ptr, ptr %1, align 8, !tbaa !5
  %2373 = getelementptr inbounds %struct._Action, ptr %2372, i32 0, i32 19
  %2374 = load ptr, ptr %2373, align 8, !tbaa !36
  store ptr %2374, ptr %1, align 8, !tbaa !5
  %2375 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %2376 = load ptr, ptr %3, align 8, !tbaa !5
  %2377 = getelementptr inbounds %struct._Action, ptr %2376, i32 0, i32 19
  store ptr %2375, ptr %2377, align 8, !tbaa !36
  %2378 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %2378, ptr @gtrash_actions, align 8, !tbaa !5
  br label %2391

2379:                                             ; preds = %2360
  %2380 = load ptr, ptr %1, align 8, !tbaa !5
  %2381 = getelementptr inbounds %struct._Action, ptr %2380, i32 0, i32 19
  %2382 = load ptr, ptr %2381, align 8, !tbaa !36
  store ptr %2382, ptr @gactions, align 8, !tbaa !5
  %2383 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %2383, ptr %3, align 8, !tbaa !5
  %2384 = load ptr, ptr %1, align 8, !tbaa !5
  %2385 = getelementptr inbounds %struct._Action, ptr %2384, i32 0, i32 19
  %2386 = load ptr, ptr %2385, align 8, !tbaa !36
  store ptr %2386, ptr %1, align 8, !tbaa !5
  %2387 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  %2388 = load ptr, ptr %3, align 8, !tbaa !5
  %2389 = getelementptr inbounds %struct._Action, ptr %2388, i32 0, i32 19
  store ptr %2387, ptr %2389, align 8, !tbaa !36
  %2390 = load ptr, ptr %3, align 8, !tbaa !5
  store ptr %2390, ptr @gtrash_actions, align 8, !tbaa !5
  br label %2391

2391:                                             ; preds = %2379, %2365
  br label %2397

2392:                                             ; preds = %2357
  %2393 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %2393, ptr %2, align 8, !tbaa !5
  %2394 = load ptr, ptr %1, align 8, !tbaa !5
  %2395 = getelementptr inbounds %struct._Action, ptr %2394, i32 0, i32 19
  %2396 = load ptr, ptr %2395, align 8, !tbaa !36
  store ptr %2396, ptr %1, align 8, !tbaa !5
  br label %2397

2397:                                             ; preds = %2392, %2391
  br label %14, !llvm.loop !37

2398:                                             ; preds = %1418
  %2399 = load ptr, ptr %1, align 8, !tbaa !5
  store ptr %2399, ptr %2, align 8, !tbaa !5
  %2400 = load ptr, ptr %1, align 8, !tbaa !5
  %2401 = getelementptr inbounds %struct._Action, ptr %2400, i32 0, i32 19
  %2402 = load ptr, ptr %2401, align 8, !tbaa !36
  store ptr %2402, ptr %1, align 8, !tbaa !5
  br label %14, !llvm.loop !37

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

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @set_relevants_in_exp(ptr noundef) #2

declare void @free_ExpNode(ptr noundef) #3

declare ptr @copy_Exp(ptr noundef) #3

; Function Attrs: nounwind uwtable
declare dso_local void @instantiate_exp_by_action(ptr noundef, ptr noundef) #2

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { 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 #5 = { 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 #6 = { nounwind }
attributes #7 = { nounwind allocsize(0,1) }
attributes #8 = { 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 0}
!10 = !{!"_Action", !6, i64 0, !6, i64 8, !7, i64 16, !6, i64 24, !11, i64 32, !7, i64 36, !7, i64 96, !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, !11, i64 248, !6, i64 256}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !11, i64 264}
!13 = !{!"_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}
!14 = !{!10, !6, i64 160}
!15 = !{!10, !11, i64 168}
!16 = !{!11, !11, i64 0}
!17 = !{!13, !6, i64 256}
!18 = !{!19, !11, i64 0}
!19 = !{!"_Fact", !11, i64 0, !7, i64 4}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = distinct !{!22, !21}
!23 = !{!13, !11, i64 296}
!24 = !{!10, !6, i64 176}
!25 = !{!10, !6, i64 184}
!26 = !{!10, !6, i64 192}
!27 = !{!10, !11, i64 200}
!28 = !{!13, !6, i64 272}
!29 = !{!13, !6, i64 280}
!30 = !{!13, !6, i64 288}
!31 = !{!32, !11, i64 0}
!32 = !{!"_ExpNode", !11, i64 0, !6, i64 8, !11, i64 16, !33, i64 20, !33, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!33 = !{!"float", !7, i64 0}
!34 = !{!32, !33, i64 24}
!35 = distinct !{!35, !21}
!36 = !{!10, !6, i64 256}
!37 = distinct !{!37, !21}
!38 = !{!10, !11, i64 248}
!39 = !{!10, !6, i64 240}
!40 = !{!41, !7, i64 172}
!41 = !{!"_ActionEffect", !6, i64 0, !11, i64 8, !6, i64 16, !11, i64 24, !6, i64 32, !11, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !11, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !11, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !11, i64 168, !7, i64 172, !7, i64 173, !33, i64 176}
!42 = !{!41, !7, i64 173}
!43 = distinct !{!43, !21}
!44 = !{!13, !6, i64 304}
!45 = !{!46, !11, i64 136}
!46 = !{!"_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}
!47 = !{!41, !6, i64 0}
!48 = !{!41, !11, i64 8}
!49 = !{!46, !6, i64 128}
!50 = distinct !{!50, !21}
!51 = distinct !{!51, !21}
!52 = !{!46, !11, i64 200}
!53 = !{!41, !6, i64 48}
!54 = !{!41, !6, i64 56}
!55 = !{!41, !6, i64 64}
!56 = distinct !{!56, !21}
!57 = !{!41, !11, i64 72}
!58 = !{!7, !7, i64 0}
!59 = !{!46, !6, i64 176}
!60 = !{!46, !6, i64 184}
!61 = !{!46, !6, i64 192}
!62 = distinct !{!62, !21}
!63 = distinct !{!63, !21}
!64 = !{!46, !11, i64 152}
!65 = !{!41, !6, i64 16}
!66 = !{!41, !11, i64 24}
!67 = !{!46, !6, i64 144}
!68 = distinct !{!68, !21}
!69 = distinct !{!69, !21}
!70 = !{!46, !11, i64 168}
!71 = !{!41, !6, i64 32}
!72 = !{!41, !11, i64 40}
!73 = !{!46, !6, i64 160}
!74 = distinct !{!74, !21}
!75 = distinct !{!75, !21}
!76 = !{!46, !11, i64 232}
!77 = !{!41, !6, i64 80}
!78 = !{!41, !6, i64 88}
!79 = !{!41, !6, i64 96}
!80 = !{!41, !11, i64 104}
!81 = !{!46, !6, i64 208}
!82 = !{!46, !6, i64 216}
!83 = !{!84, !11, i64 0}
!84 = !{!"_Fluent", !11, i64 0, !7, i64 4}
!85 = distinct !{!85, !21}
!86 = !{!46, !6, i64 224}
!87 = distinct !{!87, !21}
!88 = !{!46, !6, i64 248}
!89 = distinct !{!89, !21}
!90 = !{!10, !6, i64 8}
!91 = !{!92, !11, i64 80}
!92 = !{!"_PseudoAction", !6, i64 0, !7, i64 8, !6, i64 72, !11, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !11, i64 112, !6, i64 120, !11, i64 128}
!93 = !{!92, !6, i64 72}
!94 = distinct !{!94, !21}
!95 = distinct !{!95, !21}
!96 = !{!92, !11, i64 112}
!97 = !{!92, !6, i64 88}
!98 = !{!92, !6, i64 96}
!99 = !{!92, !6, i64 104}
!100 = distinct !{!100, !21}
!101 = distinct !{!101, !21}
!102 = !{!92, !6, i64 120}
!103 = !{!104, !11, i64 8}
!104 = !{!"_PseudoActionEffect", !6, i64 0, !11, i64 8, !6, i64 16, !11, i64 24, !6, i64 32, !11, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !11, i64 104, !6, i64 112}
!105 = !{!104, !6, i64 0}
!106 = distinct !{!106, !21}
!107 = distinct !{!107, !21}
!108 = !{!104, !11, i64 72}
!109 = distinct !{!109, !21}
!110 = !{!104, !6, i64 48}
!111 = !{!104, !6, i64 56}
!112 = !{!104, !6, i64 64}
!113 = distinct !{!113, !21}
!114 = !{!104, !11, i64 24}
!115 = !{!104, !6, i64 16}
!116 = distinct !{!116, !21}
!117 = distinct !{!117, !21}
!118 = !{!104, !11, i64 40}
!119 = !{!104, !6, i64 32}
!120 = distinct !{!120, !21}
!121 = distinct !{!121, !21}
!122 = !{!104, !11, i64 104}
!123 = !{!104, !6, i64 80}
!124 = !{!104, !6, i64 88}
!125 = distinct !{!125, !21}
!126 = !{!104, !6, i64 96}
!127 = distinct !{!127, !21}
!128 = !{!104, !6, i64 112}
!129 = distinct !{!129, !21}


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

@gactions = external local_unnamed_addr global ptr, align 8
@gnum_actions = external local_unnamed_addr global i32, align 4
@garity = external local_unnamed_addr global [50 x i32], align 16
@lpos = external dso_local local_unnamed_addr global [50 x ptr], align 16
@lneg = external dso_local local_unnamed_addr global [50 x ptr], align 16
@lindex = external dso_local local_unnamed_addr global [50 x ptr], align 16
@lp = external dso_local local_unnamed_addr global i32, align 4
@largs = external dso_local local_unnamed_addr global [15 x i32], align 16
@gf_arity = external local_unnamed_addr global [50 x i32], align 16
@lf = external dso_local local_unnamed_addr global i32, align 4
@lf_args = external dso_local local_unnamed_addr global [15 x i32], align 16
@lf_index = external dso_local local_unnamed_addr global [50 x ptr], align 16
@lnum_effects = external dso_local local_unnamed_addr global i32, align 4
@gtrash_actions = external local_unnamed_addr global ptr, align 8
@.str.41 = external hidden unnamed_addr constant [63 x i8], align 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 #0

; Function Attrs: nounwind uwtable
declare dso_local i32 @fact_adress() local_unnamed_addr #1

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

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

; Function Attrs: mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite)
declare void @free(ptr allocptr nocapture noundef) local_unnamed_addr #4

; Function Attrs: nounwind uwtable
declare dso_local i32 @fluent_adress() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local void @create_final_actions() local_unnamed_addr #1 {
  %1 = load ptr, ptr @gactions, align 8, !tbaa !5
  %.not695818 = icmp eq ptr %1, null
  br i1 %.not695818, label %.outer._crit_edge, label %.lr.ph697

.lr.ph697:                                        ; preds = %0, %.outer.backedge
  %.0569.ph820 = phi ptr [ %.0569.ph.be, %.outer.backedge ], [ %1, %0 ]
  %.0586.ph819 = phi ptr [ %.0586.ph.be, %.outer.backedge ], [ null, %0 ]
  %.not649 = icmp eq ptr %.0586.ph819, null
  %2 = getelementptr inbounds i8, ptr %.0586.ph819, i64 256
  br label %3

3:                                                ; preds = %.lr.ph697, %.backedge
  %.0569696 = phi ptr [ %.0569.ph820, %.lr.ph697 ], [ %.0569.be, %.backedge ]
  %4 = load ptr, ptr %.0569696, align 8, !tbaa !9
  %.not617 = icmp eq ptr %4, null
  br i1 %.not617, label %716, label %5

5:                                                ; preds = %3
  %6 = getelementptr inbounds i8, ptr %4, i64 264
  %7 = load i32, ptr %6, align 8, !tbaa !12
  %8 = icmp sgt i32 %7, 0
  br i1 %8, label %.lr.ph665, label %9

9:                                                ; preds = %5
  %10 = getelementptr inbounds i8, ptr %.0569696, i64 168
  store i32 0, ptr %10, align 8, !tbaa !14
  br label %._crit_edge666

.lr.ph665:                                        ; preds = %5
  %11 = zext nneg i32 %7 to i64
  %12 = tail call noalias ptr @calloc(i64 noundef %11, i64 noundef 4) #6
  %13 = getelementptr inbounds i8, ptr %.0569696, i64 160
  store ptr %12, ptr %13, align 8, !tbaa !15
  %14 = getelementptr inbounds i8, ptr %.0569696, i64 168
  store i32 0, ptr %14, align 8, !tbaa !14
  %15 = getelementptr inbounds i8, ptr %4, i64 256
  %16 = getelementptr inbounds i8, ptr %.0569696, i64 96
  %17 = getelementptr inbounds i8, ptr %.0569696, i64 160
  br label %18

18:                                               ; preds = %.lr.ph665, %76
  %indvars.iv831 = phi i64 [ 0, %.lr.ph665 ], [ %indvars.iv.next832, %76 ]
  %19 = load ptr, ptr %15, align 8, !tbaa !16
  %20 = getelementptr inbounds %struct._Fact, ptr %19, i64 %indvars.iv831
  %21 = load i32, ptr %20, align 4, !tbaa !17
  store i32 %21, ptr @lp, align 4, !tbaa !19
  %22 = sext i32 %21 to i64
  %23 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %22
  %24 = load i32, ptr %23, align 4, !tbaa !19
  %25 = icmp sgt i32 %24, 0
  br i1 %25, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %18
  %wide.trip.count = zext nneg i32 %24 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %26 = icmp eq i32 %24, 1
  br i1 %26, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %45, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %45 ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %45 ]
  %27 = getelementptr inbounds %struct._Fact, ptr %19, i64 %indvars.iv831, i32 1, i64 %indvars.iv
  %28 = load i32, ptr %27, align 4, !tbaa !19
  %29 = icmp sgt i32 %28, -1
  br i1 %29, label %.lr.ph.1, label %30

30:                                               ; preds = %.lr.ph
  %31 = xor i32 %28, -1
  %32 = zext nneg i32 %31 to i64
  %33 = getelementptr inbounds [15 x i32], ptr %16, i64 0, i64 %32
  %34 = load i32, ptr %33, align 4, !tbaa !19
  br label %.lr.ph.1

.lr.ph.1:                                         ; preds = %.lr.ph, %30
  %35 = phi i32 [ %34, %30 ], [ %28, %.lr.ph ]
  %36 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv
  store i32 %35, ptr %36, align 8, !tbaa !19
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %37 = getelementptr inbounds %struct._Fact, ptr %19, i64 %indvars.iv831, i32 1, i64 %indvars.iv.next
  %38 = load i32, ptr %37, align 4, !tbaa !19
  %39 = icmp sgt i32 %38, -1
  br i1 %39, label %45, label %40

40:                                               ; preds = %.lr.ph.1
  %41 = xor i32 %38, -1
  %42 = zext nneg i32 %41 to i64
  %43 = getelementptr inbounds [15 x i32], ptr %16, i64 0, i64 %42
  %44 = load i32, ptr %43, align 4, !tbaa !19
  br label %45

45:                                               ; preds = %40, %.lr.ph.1
  %46 = phi i32 [ %44, %40 ], [ %38, %.lr.ph.1 ]
  %47 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next
  store i32 %46, ptr %47, align 4, !tbaa !19
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !20

._crit_edge.loopexit.unr-lcssa:                   ; preds = %45, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next.1, %45 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %48 = getelementptr inbounds %struct._Fact, ptr %19, i64 %indvars.iv831, i32 1, i64 %indvars.iv.unr
  %49 = load i32, ptr %48, align 4, !tbaa !19
  %50 = icmp sgt i32 %49, -1
  br i1 %50, label %._crit_edge.loopexit.epilog-lcssa, label %51

51:                                               ; preds = %.lr.ph.epil
  %52 = xor i32 %49, -1
  %53 = zext nneg i32 %52 to i64
  %54 = getelementptr inbounds [15 x i32], ptr %16, i64 0, i64 %53
  %55 = load i32, ptr %54, align 4, !tbaa !19
  br label %._crit_edge.loopexit.epilog-lcssa

._crit_edge.loopexit.epilog-lcssa:                ; preds = %51, %.lr.ph.epil
  %56 = phi i32 [ %55, %51 ], [ %49, %.lr.ph.epil ]
  %57 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.unr
  store i32 %56, ptr %57, align 4, !tbaa !19
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit.epilog-lcssa, %._crit_edge.loopexit.unr-lcssa, %18
  %58 = tail call i32 @fact_adress()
  %59 = load i32, ptr @lp, align 4, !tbaa !19
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %60
  %62 = load ptr, ptr %61, align 8, !tbaa !5
  %63 = sext i32 %58 to i64
  %64 = getelementptr inbounds i32, ptr %62, i64 %63
  %65 = load i32, ptr %64, align 4, !tbaa !19
  %.not650 = icmp eq i32 %65, 0
  br i1 %.not650, label %76, label %66

66:                                               ; preds = %._crit_edge
  %67 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %60
  %68 = load ptr, ptr %67, align 8, !tbaa !5
  %69 = getelementptr inbounds i32, ptr %68, i64 %63
  %70 = load i32, ptr %69, align 4, !tbaa !19
  %71 = load ptr, ptr %17, align 8, !tbaa !15
  %72 = load i32, ptr %14, align 8, !tbaa !14
  %73 = add nsw i32 %72, 1
  store i32 %73, ptr %14, align 8, !tbaa !14
  %74 = sext i32 %72 to i64
  %75 = getelementptr inbounds i32, ptr %71, i64 %74
  store i32 %70, ptr %75, align 4, !tbaa !19
  br label %76

76:                                               ; preds = %._crit_edge, %66
  %indvars.iv.next832 = add nuw nsw i64 %indvars.iv831, 1
  %77 = load i32, ptr %6, align 8, !tbaa !12
  %78 = sext i32 %77 to i64
  %79 = icmp slt i64 %indvars.iv.next832, %78
  br i1 %79, label %18, label %._crit_edge666, !llvm.loop !22

._crit_edge666:                                   ; preds = %76, %9
  %80 = getelementptr inbounds i8, ptr %4, i64 296
  %81 = load i32, ptr %80, align 8, !tbaa !23
  %82 = icmp sgt i32 %81, 0
  br i1 %82, label %.lr.ph670, label %._crit_edge671

.lr.ph670:                                        ; preds = %._crit_edge666
  %83 = zext nneg i32 %81 to i64
  %84 = tail call noalias ptr @calloc(i64 noundef %83, i64 noundef 4) #6
  %85 = getelementptr inbounds i8, ptr %.0569696, i64 176
  store ptr %84, ptr %85, align 8, !tbaa !24
  %86 = tail call noalias ptr @calloc(i64 noundef %83, i64 noundef 8) #6
  %87 = getelementptr inbounds i8, ptr %.0569696, i64 184
  store ptr %86, ptr %87, align 8, !tbaa !25
  %88 = tail call noalias ptr @calloc(i64 noundef %83, i64 noundef 8) #6
  %89 = getelementptr inbounds i8, ptr %.0569696, i64 192
  store ptr %88, ptr %89, align 8, !tbaa !26
  %90 = getelementptr inbounds i8, ptr %.0569696, i64 200
  store i32 0, ptr %90, align 8, !tbaa !27
  %91 = getelementptr inbounds i8, ptr %4, i64 272
  %92 = getelementptr inbounds i8, ptr %4, i64 288
  %93 = getelementptr inbounds i8, ptr %.0569696, i64 176
  %94 = getelementptr inbounds i8, ptr %.0569696, i64 200
  %95 = getelementptr inbounds i8, ptr %4, i64 280
  %96 = getelementptr inbounds i8, ptr %.0569696, i64 184
  %97 = getelementptr inbounds i8, ptr %.0569696, i64 192
  br label %98

98:                                               ; preds = %.lr.ph670, %173
  %indvars.iv834 = phi i64 [ 0, %.lr.ph670 ], [ %indvars.iv.next835, %173 ]
  %99 = load ptr, ptr %91, align 8, !tbaa !28
  %100 = getelementptr inbounds i32, ptr %99, i64 %indvars.iv834
  %101 = load i32, ptr %100, align 4, !tbaa !19
  %102 = load ptr, ptr %93, align 8, !tbaa !24
  %103 = load i32, ptr %94, align 8, !tbaa !27
  %104 = sext i32 %103 to i64
  %105 = getelementptr inbounds i32, ptr %102, i64 %104
  store i32 %101, ptr %105, align 4, !tbaa !19
  %106 = load ptr, ptr %95, align 8, !tbaa !29
  %107 = getelementptr inbounds ptr, ptr %106, i64 %indvars.iv834
  %108 = load ptr, ptr %107, align 8, !tbaa !5
  %109 = tail call ptr @copy_Exp(ptr noundef %108) #7
  %110 = load ptr, ptr %96, align 8, !tbaa !25
  %111 = load i32, ptr %94, align 8, !tbaa !27
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds ptr, ptr %110, i64 %112
  store ptr %109, ptr %113, align 8, !tbaa !5
  %114 = load ptr, ptr %96, align 8, !tbaa !25
  %115 = getelementptr inbounds ptr, ptr %114, i64 %112
  tail call void @instantiate_exp_by_action(ptr noundef %115, ptr noundef nonnull %.0569696)
  %116 = load ptr, ptr %96, align 8, !tbaa !25
  %117 = load i32, ptr %94, align 8, !tbaa !27
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds ptr, ptr %116, i64 %118
  %120 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %119)
  %.not633 = icmp eq i8 %120, 0
  br i1 %.not633, label %._crit_edge671.loopexit, label %121

121:                                              ; preds = %98
  %122 = load ptr, ptr %92, align 8, !tbaa !30
  %123 = getelementptr inbounds ptr, ptr %122, i64 %indvars.iv834
  %124 = load ptr, ptr %123, align 8, !tbaa !5
  %125 = tail call ptr @copy_Exp(ptr noundef %124) #7
  %126 = load ptr, ptr %97, align 8, !tbaa !26
  %127 = load i32, ptr %94, align 8, !tbaa !27
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds ptr, ptr %126, i64 %128
  store ptr %125, ptr %129, align 8, !tbaa !5
  %130 = load ptr, ptr %97, align 8, !tbaa !26
  %131 = getelementptr inbounds ptr, ptr %130, i64 %128
  tail call void @instantiate_exp_by_action(ptr noundef %131, ptr noundef nonnull %.0569696)
  %132 = load ptr, ptr %97, align 8, !tbaa !26
  %133 = load i32, ptr %94, align 8, !tbaa !27
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds ptr, ptr %132, i64 %134
  %136 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %135)
  %.not634 = icmp eq i8 %136, 0
  br i1 %.not634, label %._crit_edge671.loopexit, label %137

137:                                              ; preds = %121
  %138 = load ptr, ptr %96, align 8, !tbaa !25
  %139 = load i32, ptr %94, align 8, !tbaa !27
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds ptr, ptr %138, i64 %140
  %142 = load ptr, ptr %141, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 8, !tbaa !31
  %144 = icmp eq i32 %143, 1001
  br i1 %144, label %145, label %171

145:                                              ; preds = %137
  %146 = load ptr, ptr %97, align 8, !tbaa !26
  %147 = getelementptr inbounds ptr, ptr %146, i64 %140
  %148 = load ptr, ptr %147, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 8, !tbaa !31
  %150 = icmp eq i32 %149, 1001
  br i1 %150, label %151, label %171

151:                                              ; preds = %145
  %152 = load ptr, ptr %93, align 8, !tbaa !24
  %153 = getelementptr inbounds i32, ptr %152, i64 %140
  %154 = load i32, ptr %153, align 4, !tbaa !19
  %155 = getelementptr inbounds i8, ptr %142, i64 24
  %156 = load float, ptr %155, align 8, !tbaa !34
  %157 = getelementptr inbounds i8, ptr %148, i64 24
  %158 = load float, ptr %157, align 8, !tbaa !34
  %159 = tail call zeroext i8 @number_comparison_holds(i32 noundef %154, float noundef %156, float noundef %158) #7
  %.not635 = icmp eq i8 %159, 0
  br i1 %.not635, label %._crit_edge671.loopexit, label %160

160:                                              ; preds = %151
  %161 = load ptr, ptr %96, align 8, !tbaa !25
  %162 = load i32, ptr %94, align 8, !tbaa !27
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds ptr, ptr %161, i64 %163
  %165 = load ptr, ptr %164, align 8, !tbaa !5
  tail call void @free_ExpNode(ptr noundef %165) #7
  %166 = load ptr, ptr %97, align 8, !tbaa !26
  %167 = load i32, ptr %94, align 8, !tbaa !27
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds ptr, ptr %166, i64 %168
  %170 = load ptr, ptr %169, align 8, !tbaa !5
  tail call void @free_ExpNode(ptr noundef %170) #7
  br label %173

171:                                              ; preds = %145, %137
  %172 = add nsw i32 %139, 1
  store i32 %172, ptr %94, align 8, !tbaa !27
  br label %173

173:                                              ; preds = %171, %160
  %indvars.iv.next835 = add nuw nsw i64 %indvars.iv834, 1
  %174 = load i32, ptr %80, align 8, !tbaa !23
  %175 = sext i32 %174 to i64
  %176 = icmp slt i64 %indvars.iv.next835, %175
  br i1 %176, label %98, label %._crit_edge671.loopexit, !llvm.loop !35

._crit_edge671.loopexit:                          ; preds = %151, %121, %98, %173
  %.1576.lcssa.ph.in = phi i64 [ %indvars.iv.next835, %173 ], [ %indvars.iv834, %98 ], [ %indvars.iv834, %121 ], [ %indvars.iv834, %151 ]
  %.1576.lcssa.ph = trunc i64 %.1576.lcssa.ph.in to i32
  %.pre = load i32, ptr %80, align 8, !tbaa !23
  br label %._crit_edge671

._crit_edge671:                                   ; preds = %._crit_edge666, %._crit_edge671.loopexit
  %177 = phi i32 [ %.pre, %._crit_edge671.loopexit ], [ %81, %._crit_edge666 ]
  %.1576.lcssa = phi i32 [ %.1576.lcssa.ph, %._crit_edge671.loopexit ], [ 0, %._crit_edge666 ]
  %178 = icmp slt i32 %.1576.lcssa, %177
  br i1 %178, label %179, label %187

179:                                              ; preds = %._crit_edge671
  %180 = load i32, ptr @gnum_actions, align 4, !tbaa !19
  %181 = add nsw i32 %180, -1
  store i32 %181, ptr @gnum_actions, align 4, !tbaa !19
  %182 = getelementptr inbounds i8, ptr %.0569696, i64 256
  %183 = load ptr, ptr %182, align 8, !tbaa !36
  br i1 %.not649, label %185, label %184

184:                                              ; preds = %179
  store ptr %183, ptr %2, align 8, !tbaa !36
  br label %.backedge

185:                                              ; preds = %179
  store ptr %183, ptr @gactions, align 8, !tbaa !5
  br label %.backedge

.backedge:                                        ; preds = %849, %850, %184, %185
  %.sink1038 = phi ptr [ %847, %849 ], [ %847, %850 ], [ %182, %184 ], [ %182, %185 ]
  %.0569.be = phi ptr [ %848, %849 ], [ %848, %850 ], [ %183, %184 ], [ %183, %185 ]
  %186 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  store ptr %186, ptr %.sink1038, align 8, !tbaa !36
  store ptr %.0569696, ptr @gtrash_actions, align 8, !tbaa !5
  %.not = icmp eq ptr %.0569.be, null
  br i1 %.not, label %.outer._crit_edge, label %3, !llvm.loop !37

187:                                              ; preds = %._crit_edge671
  %188 = getelementptr inbounds i8, ptr %.0569696, i64 248
  %189 = load i32, ptr %188, align 8, !tbaa !38
  %190 = icmp sgt i32 %189, 0
  br i1 %190, label %191, label %.loopexit653

191:                                              ; preds = %187
  %192 = zext nneg i32 %189 to i64
  %193 = tail call noalias ptr @calloc(i64 noundef %192, i64 noundef 184) #6
  %194 = getelementptr inbounds i8, ptr %.0569696, i64 240
  store ptr %193, ptr %194, align 8, !tbaa !39
  %xtraiter1132 = and i64 %192, 1
  %195 = icmp eq i32 %189, 1
  br i1 %195, label %.loopexit653.loopexit.unr-lcssa, label %.new

.new:                                             ; preds = %191
  %unroll_iter1134 = and i64 %192, 2147483646
  br label %196

196:                                              ; preds = %196, %.new
  %indvars.iv851 = phi i64 [ 0, %.new ], [ %indvars.iv.next852.1, %196 ]
  %niter1135 = phi i64 [ 0, %.new ], [ %niter1135.next.1, %196 ]
  %197 = getelementptr inbounds %struct._ActionEffect, ptr %193, i64 %indvars.iv851, i32 22
  store i8 0, ptr %197, align 4, !tbaa !40
  %198 = getelementptr inbounds %struct._ActionEffect, ptr %193, i64 %indvars.iv851, i32 23
  store i8 0, ptr %198, align 1, !tbaa !42
  %indvars.iv.next852 = or disjoint i64 %indvars.iv851, 1
  %199 = getelementptr inbounds %struct._ActionEffect, ptr %193, i64 %indvars.iv.next852, i32 22
  store i8 0, ptr %199, align 4, !tbaa !40
  %200 = getelementptr inbounds %struct._ActionEffect, ptr %193, i64 %indvars.iv.next852, i32 23
  store i8 0, ptr %200, align 1, !tbaa !42
  %indvars.iv.next852.1 = add nuw nsw i64 %indvars.iv851, 2
  %niter1135.next.1 = add i64 %niter1135, 2
  %niter1135.ncmp.1 = icmp eq i64 %niter1135.next.1, %unroll_iter1134
  br i1 %niter1135.ncmp.1, label %.loopexit653.loopexit.unr-lcssa, label %196, !llvm.loop !43

.loopexit653.loopexit.unr-lcssa:                  ; preds = %196, %191
  %indvars.iv851.unr = phi i64 [ 0, %191 ], [ %indvars.iv.next852.1, %196 ]
  %lcmp.mod1133.not = icmp eq i64 %xtraiter1132, 0
  br i1 %lcmp.mod1133.not, label %.loopexit653, label %.loopexit653.loopexit.epilog-lcssa

.loopexit653.loopexit.epilog-lcssa:               ; preds = %.loopexit653.loopexit.unr-lcssa
  %201 = getelementptr inbounds %struct._ActionEffect, ptr %193, i64 %indvars.iv851.unr, i32 22
  store i8 0, ptr %201, align 4, !tbaa !40
  %202 = getelementptr inbounds %struct._ActionEffect, ptr %193, i64 %indvars.iv851.unr, i32 23
  store i8 0, ptr %202, align 1, !tbaa !42
  br label %.loopexit653

.loopexit653:                                     ; preds = %.loopexit653.loopexit.epilog-lcssa, %.loopexit653.loopexit.unr-lcssa, %187
  store i32 0, ptr %188, align 8, !tbaa !38
  %203 = getelementptr inbounds i8, ptr %4, i64 304
  %.0585759 = load ptr, ptr %203, align 8, !tbaa !5
  %.not636760 = icmp eq ptr %.0585759, null
  br i1 %.not636760, label %.critedge, label %.lr.ph763

.lr.ph763:                                        ; preds = %.loopexit653
  %204 = getelementptr inbounds i8, ptr %.0569696, i64 240
  %205 = getelementptr inbounds i8, ptr %.0569696, i64 96
  br label %206

206:                                              ; preds = %.lr.ph763, %703
  %.0585761 = phi ptr [ %.0585759, %.lr.ph763 ], [ %.0585, %703 ]
  %207 = load ptr, ptr %204, align 8, !tbaa !39
  %208 = load i32, ptr %188, align 8, !tbaa !38
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds %struct._ActionEffect, ptr %207, i64 %209
  %211 = getelementptr inbounds i8, ptr %.0585761, i64 136
  %212 = load i32, ptr %211, align 8, !tbaa !44
  %213 = icmp sgt i32 %212, 0
  br i1 %213, label %.lr.ph706, label %214

214:                                              ; preds = %206
  %215 = getelementptr inbounds i8, ptr %210, i64 8
  store i32 0, ptr %215, align 8, !tbaa !46
  br label %._crit_edge707

.lr.ph706:                                        ; preds = %206
  %216 = zext nneg i32 %212 to i64
  %217 = tail call noalias ptr @calloc(i64 noundef %216, i64 noundef 4) #6
  store ptr %217, ptr %210, align 8, !tbaa !47
  %218 = getelementptr inbounds i8, ptr %210, i64 8
  store i32 0, ptr %218, align 8, !tbaa !46
  %219 = getelementptr inbounds i8, ptr %.0585761, i64 128
  br label %220

220:                                              ; preds = %.lr.ph706, %283
  %indvars.iv863 = phi i64 [ 0, %.lr.ph706 ], [ %indvars.iv.next864, %283 ]
  %221 = load ptr, ptr %219, align 8, !tbaa !48
  %222 = getelementptr inbounds %struct._Fact, ptr %221, i64 %indvars.iv863
  %223 = load i32, ptr %222, align 4, !tbaa !17
  store i32 %223, ptr @lp, align 4, !tbaa !19
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %224
  %226 = load i32, ptr %225, align 4, !tbaa !19
  %227 = icmp sgt i32 %226, 0
  br i1 %227, label %.lr.ph702.preheader, label %._crit_edge703

.lr.ph702.preheader:                              ; preds = %220
  %wide.trip.count861 = zext nneg i32 %226 to i64
  %xtraiter1136 = and i64 %wide.trip.count861, 1
  %228 = icmp eq i32 %226, 1
  br i1 %228, label %._crit_edge703.loopexit.unr-lcssa, label %.lr.ph702.preheader.new

.lr.ph702.preheader.new:                          ; preds = %.lr.ph702.preheader
  %unroll_iter1138 = and i64 %wide.trip.count861, 2147483646
  br label %.lr.ph702

.lr.ph702:                                        ; preds = %247, %.lr.ph702.preheader.new
  %indvars.iv857 = phi i64 [ 0, %.lr.ph702.preheader.new ], [ %indvars.iv.next858.1, %247 ]
  %niter1139 = phi i64 [ 0, %.lr.ph702.preheader.new ], [ %niter1139.next.1, %247 ]
  %229 = getelementptr inbounds %struct._Fact, ptr %221, i64 %indvars.iv863, i32 1, i64 %indvars.iv857
  %230 = load i32, ptr %229, align 4, !tbaa !19
  %231 = icmp sgt i32 %230, -1
  br i1 %231, label %.lr.ph702.1, label %232

232:                                              ; preds = %.lr.ph702
  %233 = xor i32 %230, -1
  %234 = zext nneg i32 %233 to i64
  %235 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %234
  %236 = load i32, ptr %235, align 4, !tbaa !19
  br label %.lr.ph702.1

.lr.ph702.1:                                      ; preds = %.lr.ph702, %232
  %237 = phi i32 [ %236, %232 ], [ %230, %.lr.ph702 ]
  %238 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv857
  store i32 %237, ptr %238, align 8, !tbaa !19
  %indvars.iv.next858 = or disjoint i64 %indvars.iv857, 1
  %239 = getelementptr inbounds %struct._Fact, ptr %221, i64 %indvars.iv863, i32 1, i64 %indvars.iv.next858
  %240 = load i32, ptr %239, align 4, !tbaa !19
  %241 = icmp sgt i32 %240, -1
  br i1 %241, label %247, label %242

242:                                              ; preds = %.lr.ph702.1
  %243 = xor i32 %240, -1
  %244 = zext nneg i32 %243 to i64
  %245 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %244
  %246 = load i32, ptr %245, align 4, !tbaa !19
  br label %247

247:                                              ; preds = %242, %.lr.ph702.1
  %248 = phi i32 [ %246, %242 ], [ %240, %.lr.ph702.1 ]
  %249 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next858
  store i32 %248, ptr %249, align 4, !tbaa !19
  %indvars.iv.next858.1 = add nuw nsw i64 %indvars.iv857, 2
  %niter1139.next.1 = add i64 %niter1139, 2
  %niter1139.ncmp.1 = icmp eq i64 %niter1139.next.1, %unroll_iter1138
  br i1 %niter1139.ncmp.1, label %._crit_edge703.loopexit.unr-lcssa, label %.lr.ph702, !llvm.loop !49

._crit_edge703.loopexit.unr-lcssa:                ; preds = %247, %.lr.ph702.preheader
  %indvars.iv857.unr = phi i64 [ 0, %.lr.ph702.preheader ], [ %indvars.iv.next858.1, %247 ]
  %lcmp.mod1137.not = icmp eq i64 %xtraiter1136, 0
  br i1 %lcmp.mod1137.not, label %._crit_edge703, label %.lr.ph702.epil

.lr.ph702.epil:                                   ; preds = %._crit_edge703.loopexit.unr-lcssa
  %250 = getelementptr inbounds %struct._Fact, ptr %221, i64 %indvars.iv863, i32 1, i64 %indvars.iv857.unr
  %251 = load i32, ptr %250, align 4, !tbaa !19
  %252 = icmp sgt i32 %251, -1
  br i1 %252, label %._crit_edge703.loopexit.epilog-lcssa, label %253

253:                                              ; preds = %.lr.ph702.epil
  %254 = xor i32 %251, -1
  %255 = zext nneg i32 %254 to i64
  %256 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !19
  br label %._crit_edge703.loopexit.epilog-lcssa

._crit_edge703.loopexit.epilog-lcssa:             ; preds = %253, %.lr.ph702.epil
  %258 = phi i32 [ %257, %253 ], [ %251, %.lr.ph702.epil ]
  %259 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv857.unr
  store i32 %258, ptr %259, align 4, !tbaa !19
  br label %._crit_edge703

._crit_edge703:                                   ; preds = %._crit_edge703.loopexit.epilog-lcssa, %._crit_edge703.loopexit.unr-lcssa, %220
  %260 = tail call i32 @fact_adress()
  %261 = load i32, ptr @lp, align 4, !tbaa !19
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %262
  %264 = load ptr, ptr %263, align 8, !tbaa !5
  %265 = sext i32 %260 to i64
  %266 = getelementptr inbounds i32, ptr %264, i64 %265
  %267 = load i32, ptr %266, align 4, !tbaa !19
  %.not637 = icmp eq i32 %267, 0
  br i1 %.not637, label %._crit_edge703.._crit_edge707.loopexit_crit_edge, label %268

._crit_edge703.._crit_edge707.loopexit_crit_edge: ; preds = %._crit_edge703
  %.pre967.pre = load i32, ptr %211, align 8, !tbaa !44
  br label %._crit_edge707.loopexit

268:                                              ; preds = %._crit_edge703
  %269 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %262
  %270 = load ptr, ptr %269, align 8, !tbaa !5
  %271 = getelementptr inbounds i32, ptr %270, i64 %265
  %272 = load i32, ptr %271, align 4, !tbaa !19
  %.not648 = icmp eq i32 %272, 0
  br i1 %.not648, label %283, label %273

273:                                              ; preds = %268
  %274 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %262
  %275 = load ptr, ptr %274, align 8, !tbaa !5
  %276 = getelementptr inbounds i32, ptr %275, i64 %265
  %277 = load i32, ptr %276, align 4, !tbaa !19
  %278 = load ptr, ptr %210, align 8, !tbaa !47
  %279 = load i32, ptr %218, align 8, !tbaa !46
  %280 = add nsw i32 %279, 1
  store i32 %280, ptr %218, align 8, !tbaa !46
  %281 = sext i32 %279 to i64
  %282 = getelementptr inbounds i32, ptr %278, i64 %281
  store i32 %277, ptr %282, align 4, !tbaa !19
  br label %283

283:                                              ; preds = %268, %273
  %indvars.iv.next864 = add nuw nsw i64 %indvars.iv863, 1
  %284 = load i32, ptr %211, align 8, !tbaa !44
  %285 = sext i32 %284 to i64
  %286 = icmp slt i64 %indvars.iv.next864, %285
  br i1 %286, label %220, label %._crit_edge707.loopexit, !llvm.loop !50

._crit_edge707.loopexit:                          ; preds = %283, %._crit_edge703.._crit_edge707.loopexit_crit_edge
  %.pre967 = phi i32 [ %.pre967.pre, %._crit_edge703.._crit_edge707.loopexit_crit_edge ], [ %284, %283 ]
  %.3578.lcssa.ph.in = phi i64 [ %indvars.iv863, %._crit_edge703.._crit_edge707.loopexit_crit_edge ], [ %indvars.iv.next864, %283 ]
  %.3578.lcssa.ph = trunc i64 %.3578.lcssa.ph.in to i32
  br label %._crit_edge707

._crit_edge707:                                   ; preds = %214, %._crit_edge707.loopexit
  %287 = phi ptr [ %215, %214 ], [ %218, %._crit_edge707.loopexit ]
  %288 = phi i32 [ %212, %214 ], [ %.pre967, %._crit_edge707.loopexit ]
  %.3578.lcssa = phi i32 [ 0, %214 ], [ %.3578.lcssa.ph, %._crit_edge707.loopexit ]
  %289 = icmp slt i32 %.3578.lcssa, %288
  br i1 %289, label %290, label %292

290:                                              ; preds = %._crit_edge707
  %291 = load ptr, ptr %210, align 8, !tbaa !47
  tail call void @free(ptr noundef %291) #7
  br label %703

292:                                              ; preds = %._crit_edge707
  %293 = getelementptr inbounds i8, ptr %.0585761, i64 200
  %294 = load i32, ptr %293, align 8, !tbaa !51
  %295 = icmp sgt i32 %294, 0
  br i1 %295, label %296, label %._crit_edge716

296:                                              ; preds = %292
  %297 = zext nneg i32 %294 to i64
  %298 = tail call noalias ptr @calloc(i64 noundef %297, i64 noundef 4) #6
  %299 = getelementptr inbounds i8, ptr %210, i64 48
  store ptr %298, ptr %299, align 8, !tbaa !52
  %300 = tail call noalias ptr @calloc(i64 noundef %297, i64 noundef 8) #6
  %301 = getelementptr inbounds i8, ptr %210, i64 56
  store ptr %300, ptr %301, align 8, !tbaa !53
  %302 = tail call noalias ptr @calloc(i64 noundef %297, i64 noundef 8) #6
  %303 = getelementptr inbounds i8, ptr %210, i64 64
  store ptr %302, ptr %303, align 8, !tbaa !54
  %xtraiter1142 = and i64 %297, 1
  %304 = icmp eq i32 %294, 1
  br i1 %304, label %.unr-lcssa, label %.new1140

.new1140:                                         ; preds = %296
  %unroll_iter1144 = and i64 %297, 2147483646
  br label %305

305:                                              ; preds = %305, %.new1140
  %indvars.iv867 = phi i64 [ 0, %.new1140 ], [ %indvars.iv.next868.1, %305 ]
  %niter1145 = phi i64 [ 0, %.new1140 ], [ %niter1145.next.1, %305 ]
  %306 = load ptr, ptr %301, align 8, !tbaa !53
  %307 = getelementptr inbounds ptr, ptr %306, i64 %indvars.iv867
  store ptr null, ptr %307, align 8, !tbaa !5
  %308 = load ptr, ptr %303, align 8, !tbaa !54
  %309 = getelementptr inbounds ptr, ptr %308, i64 %indvars.iv867
  store ptr null, ptr %309, align 8, !tbaa !5
  %indvars.iv.next868 = or disjoint i64 %indvars.iv867, 1
  %310 = load ptr, ptr %301, align 8, !tbaa !53
  %311 = getelementptr inbounds ptr, ptr %310, i64 %indvars.iv.next868
  store ptr null, ptr %311, align 8, !tbaa !5
  %312 = load ptr, ptr %303, align 8, !tbaa !54
  %313 = getelementptr inbounds ptr, ptr %312, i64 %indvars.iv.next868
  store ptr null, ptr %313, align 8, !tbaa !5
  %indvars.iv.next868.1 = add nuw nsw i64 %indvars.iv867, 2
  %niter1145.next.1 = add i64 %niter1145, 2
  %niter1145.ncmp.1 = icmp eq i64 %niter1145.next.1, %unroll_iter1144
  br i1 %niter1145.ncmp.1, label %.unr-lcssa, label %305, !llvm.loop !55

.unr-lcssa:                                       ; preds = %305, %296
  %indvars.iv867.unr = phi i64 [ 0, %296 ], [ %indvars.iv.next868.1, %305 ]
  %lcmp.mod1143.not = icmp eq i64 %xtraiter1142, 0
  br i1 %lcmp.mod1143.not, label %318, label %.epilog-lcssa

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %314 = load ptr, ptr %301, align 8, !tbaa !53
  %315 = getelementptr inbounds ptr, ptr %314, i64 %indvars.iv867.unr
  store ptr null, ptr %315, align 8, !tbaa !5
  %316 = load ptr, ptr %303, align 8, !tbaa !54
  %317 = getelementptr inbounds ptr, ptr %316, i64 %indvars.iv867.unr
  store ptr null, ptr %317, align 8, !tbaa !5
  br label %318

318:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %319 = getelementptr inbounds i8, ptr %210, i64 72
  store i32 0, ptr %319, align 8, !tbaa !56
  %320 = getelementptr inbounds i8, ptr %.0585761, i64 176
  %321 = getelementptr inbounds i8, ptr %.0585761, i64 192
  br i1 %295, label %.lr.ph715, label %._crit_edge716

.lr.ph715:                                        ; preds = %318
  %322 = getelementptr inbounds i8, ptr %210, i64 48
  %323 = getelementptr inbounds i8, ptr %210, i64 72
  %324 = getelementptr inbounds i8, ptr %.0585761, i64 184
  %325 = getelementptr inbounds i8, ptr %210, i64 56
  %326 = getelementptr inbounds i8, ptr %210, i64 64
  %.pre968 = load i32, ptr %323, align 8, !tbaa !56
  br label %327

327:                                              ; preds = %.lr.ph715, %408
  %328 = phi i32 [ %.pre968, %.lr.ph715 ], [ %409, %408 ]
  %indvars.iv873 = phi i64 [ 0, %.lr.ph715 ], [ %indvars.iv.next874, %408 ]
  %329 = load ptr, ptr %320, align 8, !tbaa !57
  %330 = getelementptr inbounds i32, ptr %329, i64 %indvars.iv873
  %331 = load i32, ptr %330, align 4, !tbaa !19
  %332 = load ptr, ptr %322, align 8, !tbaa !52
  %333 = sext i32 %328 to i64
  %334 = getelementptr inbounds i32, ptr %332, i64 %333
  store i32 %331, ptr %334, align 4, !tbaa !19
  %335 = load ptr, ptr %324, align 8, !tbaa !58
  %336 = getelementptr inbounds ptr, ptr %335, i64 %indvars.iv873
  %337 = load ptr, ptr %336, align 8, !tbaa !5
  %338 = tail call ptr @copy_Exp(ptr noundef %337) #7
  %339 = load ptr, ptr %325, align 8, !tbaa !53
  %340 = load i32, ptr %323, align 8, !tbaa !56
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds ptr, ptr %339, i64 %341
  store ptr %338, ptr %342, align 8, !tbaa !5
  %343 = load ptr, ptr %325, align 8, !tbaa !53
  %344 = getelementptr inbounds ptr, ptr %343, i64 %341
  tail call void @instantiate_exp_by_action(ptr noundef %344, ptr noundef nonnull %.0569696)
  %345 = load ptr, ptr %325, align 8, !tbaa !53
  %346 = load i32, ptr %323, align 8, !tbaa !56
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds ptr, ptr %345, i64 %347
  %349 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %348)
  %.not638 = icmp eq i8 %349, 0
  br i1 %.not638, label %._crit_edge716.loopexit, label %350

350:                                              ; preds = %327
  %351 = load ptr, ptr %321, align 8, !tbaa !59
  %352 = getelementptr inbounds ptr, ptr %351, i64 %indvars.iv873
  %353 = load ptr, ptr %352, align 8, !tbaa !5
  %354 = tail call ptr @copy_Exp(ptr noundef %353) #7
  %355 = load ptr, ptr %326, align 8, !tbaa !54
  %356 = load i32, ptr %323, align 8, !tbaa !56
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds ptr, ptr %355, i64 %357
  store ptr %354, ptr %358, align 8, !tbaa !5
  %359 = load ptr, ptr %326, align 8, !tbaa !54
  %360 = getelementptr inbounds ptr, ptr %359, i64 %357
  tail call void @instantiate_exp_by_action(ptr noundef %360, ptr noundef nonnull %.0569696)
  %361 = load ptr, ptr %326, align 8, !tbaa !54
  %362 = load i32, ptr %323, align 8, !tbaa !56
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds ptr, ptr %361, i64 %363
  %365 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %364)
  %.not639 = icmp eq i8 %365, 0
  br i1 %.not639, label %._crit_edge716.loopexit, label %366

366:                                              ; preds = %350
  %367 = load ptr, ptr %325, align 8, !tbaa !53
  %368 = load i32, ptr %323, align 8, !tbaa !56
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds ptr, ptr %367, i64 %369
  %371 = load ptr, ptr %370, align 8, !tbaa !5
  %372 = load i32, ptr %371, align 8, !tbaa !31
  %373 = icmp eq i32 %372, 1001
  br i1 %373, label %374, label %406

374:                                              ; preds = %366
  %375 = load ptr, ptr %326, align 8, !tbaa !54
  %376 = getelementptr inbounds ptr, ptr %375, i64 %369
  %377 = load ptr, ptr %376, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 8, !tbaa !31
  %379 = icmp eq i32 %378, 1001
  br i1 %379, label %380, label %406

380:                                              ; preds = %374
  %381 = load ptr, ptr %322, align 8, !tbaa !52
  %382 = getelementptr inbounds i32, ptr %381, i64 %369
  %383 = load i32, ptr %382, align 4, !tbaa !19
  %384 = getelementptr inbounds i8, ptr %371, i64 24
  %385 = load float, ptr %384, align 8, !tbaa !34
  %386 = getelementptr inbounds i8, ptr %377, i64 24
  %387 = load float, ptr %386, align 8, !tbaa !34
  %388 = tail call zeroext i8 @number_comparison_holds(i32 noundef %383, float noundef %385, float noundef %387) #7
  %.not640 = icmp eq i8 %388, 0
  br i1 %.not640, label %._crit_edge716.loopexit, label %389

389:                                              ; preds = %380
  %390 = load ptr, ptr %325, align 8, !tbaa !53
  %391 = load i32, ptr %323, align 8, !tbaa !56
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds ptr, ptr %390, i64 %392
  %394 = load ptr, ptr %393, align 8, !tbaa !5
  tail call void @free_ExpNode(ptr noundef %394) #7
  %395 = load ptr, ptr %326, align 8, !tbaa !54
  %396 = load i32, ptr %323, align 8, !tbaa !56
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds ptr, ptr %395, i64 %397
  %399 = load ptr, ptr %398, align 8, !tbaa !5
  tail call void @free_ExpNode(ptr noundef %399) #7
  %400 = load ptr, ptr %325, align 8, !tbaa !53
  %401 = load i32, ptr %323, align 8, !tbaa !56
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds ptr, ptr %400, i64 %402
  store ptr null, ptr %403, align 8, !tbaa !5
  %404 = load ptr, ptr %326, align 8, !tbaa !54
  %405 = getelementptr inbounds ptr, ptr %404, i64 %402
  store ptr null, ptr %405, align 8, !tbaa !5
  br label %408

406:                                              ; preds = %374, %366
  %407 = add nsw i32 %368, 1
  store i32 %407, ptr %323, align 8, !tbaa !56
  br label %408

408:                                              ; preds = %406, %389
  %409 = phi i32 [ %407, %406 ], [ %401, %389 ]
  %indvars.iv.next874 = add nuw nsw i64 %indvars.iv873, 1
  %410 = load i32, ptr %293, align 8, !tbaa !51
  %411 = sext i32 %410 to i64
  %412 = icmp slt i64 %indvars.iv.next874, %411
  br i1 %412, label %327, label %._crit_edge716.loopexit, !llvm.loop !60

._crit_edge716.loopexit:                          ; preds = %380, %350, %327, %408
  %.5580.lcssa.ph.in = phi i64 [ %indvars.iv.next874, %408 ], [ %indvars.iv873, %327 ], [ %indvars.iv873, %350 ], [ %indvars.iv873, %380 ]
  %.not645.ph = phi i1 [ true, %408 ], [ true, %327 ], [ true, %350 ], [ false, %380 ]
  %.5580.lcssa.ph = trunc i64 %.5580.lcssa.ph.in to i32
  %.pre969 = load i32, ptr %293, align 8, !tbaa !51
  br label %._crit_edge716

._crit_edge716:                                   ; preds = %292, %._crit_edge716.loopexit, %318
  %413 = phi i32 [ %294, %318 ], [ %.pre969, %._crit_edge716.loopexit ], [ %294, %292 ]
  %.5580.lcssa = phi i32 [ 0, %318 ], [ %.5580.lcssa.ph, %._crit_edge716.loopexit ], [ 0, %292 ]
  %.not645 = phi i1 [ true, %318 ], [ %.not645.ph, %._crit_edge716.loopexit ], [ true, %292 ]
  %414 = icmp slt i32 %.5580.lcssa, %413
  br i1 %414, label %415, label %435

415:                                              ; preds = %._crit_edge716
  br i1 %.not645, label %705, label %.preheader

.preheader:                                       ; preds = %415
  %416 = getelementptr inbounds i8, ptr %210, i64 72
  %417 = load i32, ptr %416, align 8, !tbaa !56
  %.not647755 = icmp slt i32 %417, 0
  br i1 %.not647755, label %._crit_edge758, label %.lr.ph757

.lr.ph757:                                        ; preds = %.preheader
  %418 = getelementptr inbounds i8, ptr %210, i64 56
  %419 = getelementptr inbounds i8, ptr %210, i64 64
  br label %420

420:                                              ; preds = %.lr.ph757, %420
  %indvars.iv907 = phi i64 [ 0, %.lr.ph757 ], [ %indvars.iv.next908, %420 ]
  %421 = load ptr, ptr %418, align 8, !tbaa !53
  %422 = getelementptr inbounds ptr, ptr %421, i64 %indvars.iv907
  %423 = load ptr, ptr %422, align 8, !tbaa !5
  tail call void @free_ExpNode(ptr noundef %423) #7
  %424 = load ptr, ptr %419, align 8, !tbaa !54
  %425 = getelementptr inbounds ptr, ptr %424, i64 %indvars.iv907
  %426 = load ptr, ptr %425, align 8, !tbaa !5
  tail call void @free_ExpNode(ptr noundef %426) #7
  %indvars.iv.next908 = add nuw nsw i64 %indvars.iv907, 1
  %427 = load i32, ptr %416, align 8, !tbaa !56
  %428 = sext i32 %427 to i64
  %.not647.not = icmp slt i64 %indvars.iv907, %428
  br i1 %.not647.not, label %420, label %._crit_edge758, !llvm.loop !61

._crit_edge758:                                   ; preds = %420, %.preheader
  %429 = getelementptr inbounds i8, ptr %210, i64 48
  %430 = load ptr, ptr %429, align 8, !tbaa !52
  tail call void @free(ptr noundef %430) #7
  %431 = getelementptr inbounds i8, ptr %210, i64 56
  %432 = load ptr, ptr %431, align 8, !tbaa !53
  tail call void @free(ptr noundef %432) #7
  %433 = getelementptr inbounds i8, ptr %210, i64 64
  %434 = load ptr, ptr %433, align 8, !tbaa !54
  tail call void @free(ptr noundef %434) #7
  br label %703

435:                                              ; preds = %._crit_edge716
  %436 = getelementptr inbounds i8, ptr %.0585761, i64 152
  %437 = load i32, ptr %436, align 8, !tbaa !62
  %438 = icmp sgt i32 %437, 0
  br i1 %438, label %.lr.ph734, label %439

439:                                              ; preds = %435
  %440 = getelementptr inbounds i8, ptr %210, i64 24
  store i32 0, ptr %440, align 8, !tbaa !63
  br label %._crit_edge735

.lr.ph734:                                        ; preds = %435
  %441 = zext nneg i32 %437 to i64
  %442 = tail call noalias ptr @calloc(i64 noundef %441, i64 noundef 4) #6
  %443 = getelementptr inbounds i8, ptr %210, i64 16
  store ptr %442, ptr %443, align 8, !tbaa !64
  %444 = getelementptr inbounds i8, ptr %210, i64 24
  store i32 0, ptr %444, align 8, !tbaa !63
  %445 = getelementptr inbounds i8, ptr %.0585761, i64 144
  %446 = getelementptr inbounds i8, ptr %210, i64 16
  br label %447

447:                                              ; preds = %.lr.ph734, %505
  %indvars.iv883 = phi i64 [ 0, %.lr.ph734 ], [ %indvars.iv.next884, %505 ]
  %448 = load ptr, ptr %445, align 8, !tbaa !65
  %449 = getelementptr inbounds %struct._Fact, ptr %448, i64 %indvars.iv883
  %450 = load i32, ptr %449, align 4, !tbaa !17
  store i32 %450, ptr @lp, align 4, !tbaa !19
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %451
  %453 = load i32, ptr %452, align 4, !tbaa !19
  %454 = icmp sgt i32 %453, 0
  br i1 %454, label %.lr.ph730.preheader, label %._crit_edge731

.lr.ph730.preheader:                              ; preds = %447
  %wide.trip.count881 = zext nneg i32 %453 to i64
  %xtraiter1146 = and i64 %wide.trip.count881, 1
  %455 = icmp eq i32 %453, 1
  br i1 %455, label %._crit_edge731.loopexit.unr-lcssa, label %.lr.ph730.preheader.new

.lr.ph730.preheader.new:                          ; preds = %.lr.ph730.preheader
  %unroll_iter1148 = and i64 %wide.trip.count881, 2147483646
  br label %.lr.ph730

.lr.ph730:                                        ; preds = %474, %.lr.ph730.preheader.new
  %indvars.iv877 = phi i64 [ 0, %.lr.ph730.preheader.new ], [ %indvars.iv.next878.1, %474 ]
  %niter1149 = phi i64 [ 0, %.lr.ph730.preheader.new ], [ %niter1149.next.1, %474 ]
  %456 = getelementptr inbounds %struct._Fact, ptr %448, i64 %indvars.iv883, i32 1, i64 %indvars.iv877
  %457 = load i32, ptr %456, align 4, !tbaa !19
  %458 = icmp sgt i32 %457, -1
  br i1 %458, label %.lr.ph730.1, label %459

459:                                              ; preds = %.lr.ph730
  %460 = xor i32 %457, -1
  %461 = zext nneg i32 %460 to i64
  %462 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %461
  %463 = load i32, ptr %462, align 4, !tbaa !19
  br label %.lr.ph730.1

.lr.ph730.1:                                      ; preds = %.lr.ph730, %459
  %464 = phi i32 [ %463, %459 ], [ %457, %.lr.ph730 ]
  %465 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv877
  store i32 %464, ptr %465, align 8, !tbaa !19
  %indvars.iv.next878 = or disjoint i64 %indvars.iv877, 1
  %466 = getelementptr inbounds %struct._Fact, ptr %448, i64 %indvars.iv883, i32 1, i64 %indvars.iv.next878
  %467 = load i32, ptr %466, align 4, !tbaa !19
  %468 = icmp sgt i32 %467, -1
  br i1 %468, label %474, label %469

469:                                              ; preds = %.lr.ph730.1
  %470 = xor i32 %467, -1
  %471 = zext nneg i32 %470 to i64
  %472 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %471
  %473 = load i32, ptr %472, align 4, !tbaa !19
  br label %474

474:                                              ; preds = %469, %.lr.ph730.1
  %475 = phi i32 [ %473, %469 ], [ %467, %.lr.ph730.1 ]
  %476 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next878
  store i32 %475, ptr %476, align 4, !tbaa !19
  %indvars.iv.next878.1 = add nuw nsw i64 %indvars.iv877, 2
  %niter1149.next.1 = add i64 %niter1149, 2
  %niter1149.ncmp.1 = icmp eq i64 %niter1149.next.1, %unroll_iter1148
  br i1 %niter1149.ncmp.1, label %._crit_edge731.loopexit.unr-lcssa, label %.lr.ph730, !llvm.loop !66

._crit_edge731.loopexit.unr-lcssa:                ; preds = %474, %.lr.ph730.preheader
  %indvars.iv877.unr = phi i64 [ 0, %.lr.ph730.preheader ], [ %indvars.iv.next878.1, %474 ]
  %lcmp.mod1147.not = icmp eq i64 %xtraiter1146, 0
  br i1 %lcmp.mod1147.not, label %._crit_edge731, label %.lr.ph730.epil

.lr.ph730.epil:                                   ; preds = %._crit_edge731.loopexit.unr-lcssa
  %477 = getelementptr inbounds %struct._Fact, ptr %448, i64 %indvars.iv883, i32 1, i64 %indvars.iv877.unr
  %478 = load i32, ptr %477, align 4, !tbaa !19
  %479 = icmp sgt i32 %478, -1
  br i1 %479, label %._crit_edge731.loopexit.epilog-lcssa, label %480

480:                                              ; preds = %.lr.ph730.epil
  %481 = xor i32 %478, -1
  %482 = zext nneg i32 %481 to i64
  %483 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %482
  %484 = load i32, ptr %483, align 4, !tbaa !19
  br label %._crit_edge731.loopexit.epilog-lcssa

._crit_edge731.loopexit.epilog-lcssa:             ; preds = %480, %.lr.ph730.epil
  %485 = phi i32 [ %484, %480 ], [ %478, %.lr.ph730.epil ]
  %486 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv877.unr
  store i32 %485, ptr %486, align 4, !tbaa !19
  br label %._crit_edge731

._crit_edge731:                                   ; preds = %._crit_edge731.loopexit.epilog-lcssa, %._crit_edge731.loopexit.unr-lcssa, %447
  %487 = tail call i32 @fact_adress()
  %488 = load i32, ptr @lp, align 4, !tbaa !19
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %489
  %491 = load ptr, ptr %490, align 8, !tbaa !5
  %492 = sext i32 %487 to i64
  %493 = getelementptr inbounds i32, ptr %491, i64 %492
  %494 = load i32, ptr %493, align 4, !tbaa !19
  %.not644 = icmp eq i32 %494, 0
  br i1 %.not644, label %505, label %495

495:                                              ; preds = %._crit_edge731
  %496 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %489
  %497 = load ptr, ptr %496, align 8, !tbaa !5
  %498 = getelementptr inbounds i32, ptr %497, i64 %492
  %499 = load i32, ptr %498, align 4, !tbaa !19
  %500 = load ptr, ptr %446, align 8, !tbaa !64
  %501 = load i32, ptr %444, align 8, !tbaa !63
  %502 = add nsw i32 %501, 1
  store i32 %502, ptr %444, align 8, !tbaa !63
  %503 = sext i32 %501 to i64
  %504 = getelementptr inbounds i32, ptr %500, i64 %503
  store i32 %499, ptr %504, align 4, !tbaa !19
  br label %505

505:                                              ; preds = %._crit_edge731, %495
  %indvars.iv.next884 = add nuw nsw i64 %indvars.iv883, 1
  %506 = load i32, ptr %436, align 8, !tbaa !62
  %507 = sext i32 %506 to i64
  %508 = icmp slt i64 %indvars.iv.next884, %507
  br i1 %508, label %447, label %._crit_edge735, !llvm.loop !67

._crit_edge735:                                   ; preds = %505, %439
  %509 = getelementptr inbounds i8, ptr %.0585761, i64 168
  %510 = load i32, ptr %509, align 8, !tbaa !68
  %511 = icmp sgt i32 %510, 0
  br i1 %511, label %.lr.ph742, label %512

512:                                              ; preds = %._crit_edge735
  %513 = getelementptr inbounds i8, ptr %210, i64 40
  store i32 0, ptr %513, align 8, !tbaa !69
  br label %._crit_edge743

.lr.ph742:                                        ; preds = %._crit_edge735
  %514 = zext nneg i32 %510 to i64
  %515 = tail call noalias ptr @calloc(i64 noundef %514, i64 noundef 4) #6
  %516 = getelementptr inbounds i8, ptr %210, i64 32
  store ptr %515, ptr %516, align 8, !tbaa !70
  %517 = getelementptr inbounds i8, ptr %210, i64 40
  store i32 0, ptr %517, align 8, !tbaa !69
  %518 = getelementptr inbounds i8, ptr %.0585761, i64 160
  %519 = getelementptr inbounds i8, ptr %210, i64 32
  br label %520

520:                                              ; preds = %.lr.ph742, %578
  %indvars.iv893 = phi i64 [ 0, %.lr.ph742 ], [ %indvars.iv.next894, %578 ]
  %521 = load ptr, ptr %518, align 8, !tbaa !71
  %522 = getelementptr inbounds %struct._Fact, ptr %521, i64 %indvars.iv893
  %523 = load i32, ptr %522, align 4, !tbaa !17
  store i32 %523, ptr @lp, align 4, !tbaa !19
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %524
  %526 = load i32, ptr %525, align 4, !tbaa !19
  %527 = icmp sgt i32 %526, 0
  br i1 %527, label %.lr.ph738.preheader, label %._crit_edge739

.lr.ph738.preheader:                              ; preds = %520
  %wide.trip.count891 = zext nneg i32 %526 to i64
  %xtraiter1150 = and i64 %wide.trip.count891, 1
  %528 = icmp eq i32 %526, 1
  br i1 %528, label %._crit_edge739.loopexit.unr-lcssa, label %.lr.ph738.preheader.new

.lr.ph738.preheader.new:                          ; preds = %.lr.ph738.preheader
  %unroll_iter1152 = and i64 %wide.trip.count891, 2147483646
  br label %.lr.ph738

.lr.ph738:                                        ; preds = %547, %.lr.ph738.preheader.new
  %indvars.iv887 = phi i64 [ 0, %.lr.ph738.preheader.new ], [ %indvars.iv.next888.1, %547 ]
  %niter1153 = phi i64 [ 0, %.lr.ph738.preheader.new ], [ %niter1153.next.1, %547 ]
  %529 = getelementptr inbounds %struct._Fact, ptr %521, i64 %indvars.iv893, i32 1, i64 %indvars.iv887
  %530 = load i32, ptr %529, align 4, !tbaa !19
  %531 = icmp sgt i32 %530, -1
  br i1 %531, label %.lr.ph738.1, label %532

532:                                              ; preds = %.lr.ph738
  %533 = xor i32 %530, -1
  %534 = zext nneg i32 %533 to i64
  %535 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %534
  %536 = load i32, ptr %535, align 4, !tbaa !19
  br label %.lr.ph738.1

.lr.ph738.1:                                      ; preds = %.lr.ph738, %532
  %537 = phi i32 [ %536, %532 ], [ %530, %.lr.ph738 ]
  %538 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv887
  store i32 %537, ptr %538, align 8, !tbaa !19
  %indvars.iv.next888 = or disjoint i64 %indvars.iv887, 1
  %539 = getelementptr inbounds %struct._Fact, ptr %521, i64 %indvars.iv893, i32 1, i64 %indvars.iv.next888
  %540 = load i32, ptr %539, align 4, !tbaa !19
  %541 = icmp sgt i32 %540, -1
  br i1 %541, label %547, label %542

542:                                              ; preds = %.lr.ph738.1
  %543 = xor i32 %540, -1
  %544 = zext nneg i32 %543 to i64
  %545 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %544
  %546 = load i32, ptr %545, align 4, !tbaa !19
  br label %547

547:                                              ; preds = %542, %.lr.ph738.1
  %548 = phi i32 [ %546, %542 ], [ %540, %.lr.ph738.1 ]
  %549 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next888
  store i32 %548, ptr %549, align 4, !tbaa !19
  %indvars.iv.next888.1 = add nuw nsw i64 %indvars.iv887, 2
  %niter1153.next.1 = add i64 %niter1153, 2
  %niter1153.ncmp.1 = icmp eq i64 %niter1153.next.1, %unroll_iter1152
  br i1 %niter1153.ncmp.1, label %._crit_edge739.loopexit.unr-lcssa, label %.lr.ph738, !llvm.loop !72

._crit_edge739.loopexit.unr-lcssa:                ; preds = %547, %.lr.ph738.preheader
  %indvars.iv887.unr = phi i64 [ 0, %.lr.ph738.preheader ], [ %indvars.iv.next888.1, %547 ]
  %lcmp.mod1151.not = icmp eq i64 %xtraiter1150, 0
  br i1 %lcmp.mod1151.not, label %._crit_edge739, label %.lr.ph738.epil

.lr.ph738.epil:                                   ; preds = %._crit_edge739.loopexit.unr-lcssa
  %550 = getelementptr inbounds %struct._Fact, ptr %521, i64 %indvars.iv893, i32 1, i64 %indvars.iv887.unr
  %551 = load i32, ptr %550, align 4, !tbaa !19
  %552 = icmp sgt i32 %551, -1
  br i1 %552, label %._crit_edge739.loopexit.epilog-lcssa, label %553

553:                                              ; preds = %.lr.ph738.epil
  %554 = xor i32 %551, -1
  %555 = zext nneg i32 %554 to i64
  %556 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %555
  %557 = load i32, ptr %556, align 4, !tbaa !19
  br label %._crit_edge739.loopexit.epilog-lcssa

._crit_edge739.loopexit.epilog-lcssa:             ; preds = %553, %.lr.ph738.epil
  %558 = phi i32 [ %557, %553 ], [ %551, %.lr.ph738.epil ]
  %559 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv887.unr
  store i32 %558, ptr %559, align 4, !tbaa !19
  br label %._crit_edge739

._crit_edge739:                                   ; preds = %._crit_edge739.loopexit.epilog-lcssa, %._crit_edge739.loopexit.unr-lcssa, %520
  %560 = tail call i32 @fact_adress()
  %561 = load i32, ptr @lp, align 4, !tbaa !19
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %562
  %564 = load ptr, ptr %563, align 8, !tbaa !5
  %565 = sext i32 %560 to i64
  %566 = getelementptr inbounds i32, ptr %564, i64 %565
  %567 = load i32, ptr %566, align 4, !tbaa !19
  %.not643 = icmp eq i32 %567, 0
  br i1 %.not643, label %578, label %568

568:                                              ; preds = %._crit_edge739
  %569 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %562
  %570 = load ptr, ptr %569, align 8, !tbaa !5
  %571 = getelementptr inbounds i32, ptr %570, i64 %565
  %572 = load i32, ptr %571, align 4, !tbaa !19
  %573 = load ptr, ptr %519, align 8, !tbaa !70
  %574 = load i32, ptr %517, align 8, !tbaa !69
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %517, align 8, !tbaa !69
  %576 = sext i32 %574 to i64
  %577 = getelementptr inbounds i32, ptr %573, i64 %576
  store i32 %572, ptr %577, align 4, !tbaa !19
  br label %578

578:                                              ; preds = %._crit_edge739, %568
  %indvars.iv.next894 = add nuw nsw i64 %indvars.iv893, 1
  %579 = load i32, ptr %509, align 8, !tbaa !68
  %580 = sext i32 %579 to i64
  %581 = icmp slt i64 %indvars.iv.next894, %580
  br i1 %581, label %520, label %._crit_edge743, !llvm.loop !73

._crit_edge743:                                   ; preds = %578, %512
  %582 = getelementptr inbounds i8, ptr %.0585761, i64 232
  %583 = load i32, ptr %582, align 8, !tbaa !74
  %584 = icmp sgt i32 %583, 0
  br i1 %584, label %.lr.ph750, label %._crit_edge751

.lr.ph750:                                        ; preds = %._crit_edge743
  %585 = zext nneg i32 %583 to i64
  %586 = tail call noalias ptr @calloc(i64 noundef %585, i64 noundef 4) #6
  %587 = getelementptr inbounds i8, ptr %210, i64 80
  store ptr %586, ptr %587, align 8, !tbaa !75
  %588 = tail call noalias ptr @calloc(i64 noundef %585, i64 noundef 4) #6
  %589 = getelementptr inbounds i8, ptr %210, i64 88
  store ptr %588, ptr %589, align 8, !tbaa !76
  %590 = tail call noalias ptr @calloc(i64 noundef %585, i64 noundef 8) #6
  %591 = getelementptr inbounds i8, ptr %210, i64 96
  store ptr %590, ptr %591, align 8, !tbaa !77
  %592 = getelementptr inbounds i8, ptr %210, i64 104
  store i32 0, ptr %592, align 8, !tbaa !78
  %593 = getelementptr inbounds i8, ptr %210, i64 72
  %594 = getelementptr inbounds i8, ptr %.0585761, i64 208
  %595 = getelementptr inbounds i8, ptr %210, i64 80
  %596 = getelementptr inbounds i8, ptr %210, i64 104
  %597 = getelementptr inbounds i8, ptr %.0585761, i64 216
  %598 = getelementptr inbounds i8, ptr %210, i64 88
  %599 = getelementptr inbounds i8, ptr %210, i64 172
  %600 = getelementptr inbounds i8, ptr %.0585761, i64 224
  %601 = getelementptr inbounds i8, ptr %210, i64 96
  %.pre970 = load i32, ptr %596, align 8, !tbaa !78
  br label %602

602:                                              ; preds = %.lr.ph750, %690
  %603 = phi i32 [ %.pre970, %.lr.ph750 ], [ %692, %690 ]
  %indvars.iv903 = phi i64 [ 0, %.lr.ph750 ], [ %indvars.iv.next904, %690 ]
  %604 = load ptr, ptr %594, align 8, !tbaa !79
  %605 = getelementptr inbounds i32, ptr %604, i64 %indvars.iv903
  %606 = load i32, ptr %605, align 4, !tbaa !19
  %607 = load ptr, ptr %595, align 8, !tbaa !75
  %608 = sext i32 %603 to i64
  %609 = getelementptr inbounds i32, ptr %607, i64 %608
  store i32 %606, ptr %609, align 4, !tbaa !19
  %610 = load ptr, ptr %597, align 8, !tbaa !80
  %611 = getelementptr inbounds %struct._Fluent, ptr %610, i64 %indvars.iv903
  %612 = load i32, ptr %611, align 4, !tbaa !81
  store i32 %612, ptr @lf, align 4, !tbaa !19
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %613
  %615 = load i32, ptr %614, align 4, !tbaa !19
  %616 = icmp sgt i32 %615, 0
  br i1 %616, label %.lr.ph746.preheader, label %._crit_edge747

.lr.ph746.preheader:                              ; preds = %602
  %wide.trip.count901 = zext nneg i32 %615 to i64
  %xtraiter1154 = and i64 %wide.trip.count901, 1
  %617 = icmp eq i32 %615, 1
  br i1 %617, label %._crit_edge747.loopexit.unr-lcssa, label %.lr.ph746.preheader.new

.lr.ph746.preheader.new:                          ; preds = %.lr.ph746.preheader
  %unroll_iter1156 = and i64 %wide.trip.count901, 2147483646
  br label %.lr.ph746

.lr.ph746:                                        ; preds = %636, %.lr.ph746.preheader.new
  %indvars.iv897 = phi i64 [ 0, %.lr.ph746.preheader.new ], [ %indvars.iv.next898.1, %636 ]
  %niter1157 = phi i64 [ 0, %.lr.ph746.preheader.new ], [ %niter1157.next.1, %636 ]
  %618 = getelementptr inbounds %struct._Fluent, ptr %610, i64 %indvars.iv903, i32 1, i64 %indvars.iv897
  %619 = load i32, ptr %618, align 4, !tbaa !19
  %620 = icmp sgt i32 %619, -1
  br i1 %620, label %.lr.ph746.1, label %621

621:                                              ; preds = %.lr.ph746
  %622 = xor i32 %619, -1
  %623 = zext nneg i32 %622 to i64
  %624 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %623
  %625 = load i32, ptr %624, align 4, !tbaa !19
  br label %.lr.ph746.1

.lr.ph746.1:                                      ; preds = %.lr.ph746, %621
  %626 = phi i32 [ %625, %621 ], [ %619, %.lr.ph746 ]
  %627 = getelementptr inbounds [15 x i32], ptr @lf_args, i64 0, i64 %indvars.iv897
  store i32 %626, ptr %627, align 8, !tbaa !19
  %indvars.iv.next898 = or disjoint i64 %indvars.iv897, 1
  %628 = getelementptr inbounds %struct._Fluent, ptr %610, i64 %indvars.iv903, i32 1, i64 %indvars.iv.next898
  %629 = load i32, ptr %628, align 4, !tbaa !19
  %630 = icmp sgt i32 %629, -1
  br i1 %630, label %636, label %631

631:                                              ; preds = %.lr.ph746.1
  %632 = xor i32 %629, -1
  %633 = zext nneg i32 %632 to i64
  %634 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %633
  %635 = load i32, ptr %634, align 4, !tbaa !19
  br label %636

636:                                              ; preds = %631, %.lr.ph746.1
  %637 = phi i32 [ %635, %631 ], [ %629, %.lr.ph746.1 ]
  %638 = getelementptr inbounds [15 x i32], ptr @lf_args, i64 0, i64 %indvars.iv.next898
  store i32 %637, ptr %638, align 4, !tbaa !19
  %indvars.iv.next898.1 = add nuw nsw i64 %indvars.iv897, 2
  %niter1157.next.1 = add i64 %niter1157, 2
  %niter1157.ncmp.1 = icmp eq i64 %niter1157.next.1, %unroll_iter1156
  br i1 %niter1157.ncmp.1, label %._crit_edge747.loopexit.unr-lcssa, label %.lr.ph746, !llvm.loop !83

._crit_edge747.loopexit.unr-lcssa:                ; preds = %636, %.lr.ph746.preheader
  %indvars.iv897.unr = phi i64 [ 0, %.lr.ph746.preheader ], [ %indvars.iv.next898.1, %636 ]
  %lcmp.mod1155.not = icmp eq i64 %xtraiter1154, 0
  br i1 %lcmp.mod1155.not, label %._crit_edge747, label %.lr.ph746.epil

.lr.ph746.epil:                                   ; preds = %._crit_edge747.loopexit.unr-lcssa
  %639 = getelementptr inbounds %struct._Fluent, ptr %610, i64 %indvars.iv903, i32 1, i64 %indvars.iv897.unr
  %640 = load i32, ptr %639, align 4, !tbaa !19
  %641 = icmp sgt i32 %640, -1
  br i1 %641, label %._crit_edge747.loopexit.epilog-lcssa, label %642

642:                                              ; preds = %.lr.ph746.epil
  %643 = xor i32 %640, -1
  %644 = zext nneg i32 %643 to i64
  %645 = getelementptr inbounds [15 x i32], ptr %205, i64 0, i64 %644
  %646 = load i32, ptr %645, align 4, !tbaa !19
  br label %._crit_edge747.loopexit.epilog-lcssa

._crit_edge747.loopexit.epilog-lcssa:             ; preds = %642, %.lr.ph746.epil
  %647 = phi i32 [ %646, %642 ], [ %640, %.lr.ph746.epil ]
  %648 = getelementptr inbounds [15 x i32], ptr @lf_args, i64 0, i64 %indvars.iv897.unr
  store i32 %647, ptr %648, align 4, !tbaa !19
  br label %._crit_edge747

._crit_edge747:                                   ; preds = %._crit_edge747.loopexit.epilog-lcssa, %._crit_edge747.loopexit.unr-lcssa, %602
  %649 = tail call i32 @fluent_adress()
  %650 = load i32, ptr @lf, align 4, !tbaa !19
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %651
  %653 = load ptr, ptr %652, align 8, !tbaa !5
  %654 = sext i32 %649 to i64
  %655 = getelementptr inbounds i32, ptr %653, i64 %654
  %656 = load i32, ptr %655, align 4, !tbaa !19
  %657 = load ptr, ptr %598, align 8, !tbaa !76
  %658 = getelementptr inbounds i32, ptr %657, i64 %indvars.iv903
  store i32 %656, ptr %658, align 4, !tbaa !19
  %659 = load i32, ptr @lf, align 4, !tbaa !19
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %660
  %662 = load ptr, ptr %661, align 8, !tbaa !5
  %663 = getelementptr inbounds i32, ptr %662, i64 %654
  %664 = load i32, ptr %663, align 4, !tbaa !19
  %665 = icmp eq i32 %664, -1
  br i1 %665, label %666, label %667

666:                                              ; preds = %._crit_edge747
  store i8 1, ptr %599, align 4, !tbaa !40
  br label %667

667:                                              ; preds = %666, %._crit_edge747
  %668 = load ptr, ptr %600, align 8, !tbaa !84
  %669 = getelementptr inbounds ptr, ptr %668, i64 %indvars.iv903
  %670 = load ptr, ptr %669, align 8, !tbaa !5
  %671 = tail call ptr @copy_Exp(ptr noundef %670) #7
  %672 = load ptr, ptr %601, align 8, !tbaa !77
  %673 = load i32, ptr %596, align 8, !tbaa !78
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds ptr, ptr %672, i64 %674
  store ptr %671, ptr %675, align 8, !tbaa !5
  %676 = load ptr, ptr %601, align 8, !tbaa !77
  %677 = getelementptr inbounds ptr, ptr %676, i64 %674
  tail call void @instantiate_exp_by_action(ptr noundef %677, ptr noundef nonnull %.0569696)
  %678 = load ptr, ptr %601, align 8, !tbaa !77
  %679 = load i32, ptr %596, align 8, !tbaa !78
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds ptr, ptr %678, i64 %680
  %682 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %681)
  %.not641 = icmp eq i8 %682, 0
  br i1 %.not641, label %.thread997, label %683

.thread997:                                       ; preds = %667
  store i8 1, ptr %599, align 4, !tbaa !40
  br label %684

683:                                              ; preds = %667
  %.pre972 = load i8, ptr %599, align 4, !tbaa !40
  %.not642 = icmp eq i8 %.pre972, 0
  br i1 %.not642, label %690, label %684

684:                                              ; preds = %.thread997, %683
  %685 = load i32, ptr %287, align 8, !tbaa !46
  %686 = icmp eq i32 %685, 0
  br i1 %686, label %687, label %690

687:                                              ; preds = %684
  %688 = load i32, ptr %593, align 8, !tbaa !56
  %689 = icmp eq i32 %688, 0
  br i1 %689, label %.._crit_edge751.loopexit_crit_edge, label %690

.._crit_edge751.loopexit_crit_edge:               ; preds = %687
  %.pre973.pre = load i32, ptr %582, align 8, !tbaa !74
  br label %._crit_edge751.loopexit

690:                                              ; preds = %687, %684, %683
  %691 = load i32, ptr %596, align 8, !tbaa !78
  %692 = add nsw i32 %691, 1
  store i32 %692, ptr %596, align 8, !tbaa !78
  %indvars.iv.next904 = add nuw nsw i64 %indvars.iv903, 1
  %693 = load i32, ptr %582, align 8, !tbaa !74
  %694 = sext i32 %693 to i64
  %695 = icmp slt i64 %indvars.iv.next904, %694
  br i1 %695, label %602, label %._crit_edge751.loopexit, !llvm.loop !85

._crit_edge751.loopexit:                          ; preds = %690, %.._crit_edge751.loopexit_crit_edge
  %.pre973 = phi i32 [ %.pre973.pre, %.._crit_edge751.loopexit_crit_edge ], [ %693, %690 ]
  %.9584.lcssa.ph.in = phi i64 [ %indvars.iv903, %.._crit_edge751.loopexit_crit_edge ], [ %indvars.iv.next904, %690 ]
  %.9584.lcssa.ph = trunc i64 %.9584.lcssa.ph.in to i32
  br label %._crit_edge751

._crit_edge751:                                   ; preds = %._crit_edge743, %._crit_edge751.loopexit
  %696 = phi i32 [ %.pre973, %._crit_edge751.loopexit ], [ %583, %._crit_edge743 ]
  %.9584.lcssa = phi i32 [ %.9584.lcssa.ph, %._crit_edge751.loopexit ], [ 0, %._crit_edge743 ]
  %697 = icmp slt i32 %.9584.lcssa, %696
  br i1 %697, label %705, label %698

698:                                              ; preds = %._crit_edge751
  %699 = load i32, ptr %188, align 8, !tbaa !38
  %700 = add nsw i32 %699, 1
  store i32 %700, ptr %188, align 8, !tbaa !38
  %701 = load i32, ptr @lnum_effects, align 4, !tbaa !19
  %702 = add nsw i32 %701, 1
  store i32 %702, ptr @lnum_effects, align 4, !tbaa !19
  br label %703

703:                                              ; preds = %698, %._crit_edge758, %290
  %704 = getelementptr inbounds i8, ptr %.0585761, i64 248
  %.0585 = load ptr, ptr %704, align 8, !tbaa !5
  %.not636 = icmp eq ptr %.0585, null
  br i1 %.not636, label %.critedge, label %206, !llvm.loop !86

705:                                              ; preds = %415, %._crit_edge751
  %706 = load i32, ptr @gnum_actions, align 4, !tbaa !19
  %707 = add nsw i32 %706, -1
  store i32 %707, ptr @gnum_actions, align 4, !tbaa !19
  %708 = getelementptr inbounds i8, ptr %.0569696, i64 256
  %709 = load ptr, ptr %708, align 8, !tbaa !36
  br i1 %.not649, label %712, label %710

710:                                              ; preds = %705
  store ptr %709, ptr %2, align 8, !tbaa !36
  %711 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  store ptr %711, ptr %708, align 8, !tbaa !36
  store ptr %.0569696, ptr @gtrash_actions, align 8, !tbaa !5
  br label %.outer.backedge

712:                                              ; preds = %705
  store ptr %709, ptr @gactions, align 8, !tbaa !5
  %713 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  store ptr %713, ptr %708, align 8, !tbaa !36
  store ptr %.0569696, ptr @gtrash_actions, align 8, !tbaa !5
  br label %.outer.backedge

.critedge:                                        ; preds = %703, %.loopexit653
  %714 = getelementptr inbounds i8, ptr %.0569696, i64 256
  %715 = load ptr, ptr %714, align 8, !tbaa !36
  br label %.outer.backedge

.outer.backedge:                                  ; preds = %.critedge652, %1257, %1255, %.critedge, %712, %710, %1261
  %.0586.ph.be = phi ptr [ %.0569696, %1261 ], [ %.0586.ph819, %710 ], [ null, %712 ], [ %.0569696, %.critedge ], [ %.0586.ph819, %1255 ], [ null, %1257 ], [ %.0569696, %.critedge652 ]
  %.0569.ph.be = phi ptr [ %1263, %1261 ], [ %709, %710 ], [ %709, %712 ], [ %715, %.critedge ], [ %1254, %1255 ], [ %1254, %1257 ], [ %1260, %.critedge652 ]
  %.not695 = icmp eq ptr %.0569.ph.be, null
  br i1 %.not695, label %.outer._crit_edge, label %.lr.ph697, !llvm.loop !37

716:                                              ; preds = %3
  %717 = getelementptr inbounds i8, ptr %.0569696, i64 8
  %718 = load ptr, ptr %717, align 8, !tbaa !87
  %.not618 = icmp eq ptr %718, null
  br i1 %.not618, label %1261, label %719

719:                                              ; preds = %716
  %720 = getelementptr inbounds i8, ptr %718, i64 80
  %721 = load i32, ptr %720, align 8, !tbaa !88
  %722 = icmp sgt i32 %721, 0
  br i1 %722, label %.lr.ph684, label %723

723:                                              ; preds = %719
  %724 = getelementptr inbounds i8, ptr %.0569696, i64 168
  store i32 0, ptr %724, align 8, !tbaa !14
  br label %._crit_edge685

.lr.ph684:                                        ; preds = %719
  %725 = zext nneg i32 %721 to i64
  %726 = tail call noalias ptr @calloc(i64 noundef %725, i64 noundef 4) #6
  %727 = getelementptr inbounds i8, ptr %.0569696, i64 160
  store ptr %726, ptr %727, align 8, !tbaa !15
  %728 = getelementptr inbounds i8, ptr %.0569696, i64 168
  store i32 0, ptr %728, align 8, !tbaa !14
  %729 = getelementptr inbounds i8, ptr %718, i64 72
  %730 = getelementptr inbounds i8, ptr %.0569696, i64 160
  br label %731

731:                                              ; preds = %.lr.ph684, %783
  %indvars.iv843 = phi i64 [ 0, %.lr.ph684 ], [ %indvars.iv.next844, %783 ]
  %732 = load ptr, ptr %729, align 8, !tbaa !90
  %733 = getelementptr inbounds %struct._Fact, ptr %732, i64 %indvars.iv843
  %734 = load i32, ptr %733, align 4, !tbaa !17
  store i32 %734, ptr @lp, align 4, !tbaa !19
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %735
  %737 = load i32, ptr %736, align 4, !tbaa !19
  %738 = icmp sgt i32 %737, 0
  br i1 %738, label %.lr.ph680.preheader, label %._crit_edge681

.lr.ph680.preheader:                              ; preds = %731
  %739 = ptrtoint ptr %732 to i64
  %740 = mul nsw i64 %indvars.iv843, -24
  %741 = add i64 %740, add (i64 ptrtoint (ptr @largs to i64), i64 -4)
  %wide.trip.count841 = zext nneg i32 %737 to i64
  %min.iters.check1093 = icmp ult i32 %737, 8
  %742 = sub i64 %741, %739
  %diff.check1090 = icmp ult i64 %742, 32
  %or.cond = select i1 %min.iters.check1093, i1 true, i1 %diff.check1090
  br i1 %or.cond, label %.lr.ph680.preheader1110, label %vector.ph1094

vector.ph1094:                                    ; preds = %.lr.ph680.preheader
  %n.vec1096 = and i64 %wide.trip.count841, 2147483640
  br label %vector.body1098

vector.body1098:                                  ; preds = %vector.body1098, %vector.ph1094
  %index1099 = phi i64 [ 0, %vector.ph1094 ], [ %index.next1102, %vector.body1098 ]
  %743 = getelementptr inbounds %struct._Fact, ptr %732, i64 %indvars.iv843, i32 1, i64 %index1099
  %744 = getelementptr inbounds i8, ptr %743, i64 16
  %wide.load1100 = load <4 x i32>, ptr %743, align 4, !tbaa !19
  %wide.load1101 = load <4 x i32>, ptr %744, align 4, !tbaa !19
  %745 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %index1099
  %746 = getelementptr inbounds i8, ptr %745, i64 16
  store <4 x i32> %wide.load1100, ptr %745, align 16, !tbaa !19
  store <4 x i32> %wide.load1101, ptr %746, align 16, !tbaa !19
  %index.next1102 = add nuw i64 %index1099, 8
  %747 = icmp eq i64 %index.next1102, %n.vec1096
  br i1 %747, label %middle.block1091, label %vector.body1098, !llvm.loop !91

middle.block1091:                                 ; preds = %vector.body1098
  %cmp.n1103 = icmp eq i64 %n.vec1096, %wide.trip.count841
  br i1 %cmp.n1103, label %._crit_edge681, label %.lr.ph680.preheader1110

.lr.ph680.preheader1110:                          ; preds = %middle.block1091, %.lr.ph680.preheader
  %indvars.iv837.ph = phi i64 [ 0, %.lr.ph680.preheader ], [ %n.vec1096, %middle.block1091 ]
  %xtraiter1130 = and i64 %wide.trip.count841, 3
  %lcmp.mod1131.not = icmp eq i64 %xtraiter1130, 0
  br i1 %lcmp.mod1131.not, label %.lr.ph680.prol.loopexit, label %.lr.ph680.prol

.lr.ph680.prol:                                   ; preds = %.lr.ph680.preheader1110, %.lr.ph680.prol
  %indvars.iv837.prol = phi i64 [ %indvars.iv.next838.prol, %.lr.ph680.prol ], [ %indvars.iv837.ph, %.lr.ph680.preheader1110 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph680.prol ], [ 0, %.lr.ph680.preheader1110 ]
  %748 = getelementptr inbounds %struct._Fact, ptr %732, i64 %indvars.iv843, i32 1, i64 %indvars.iv837.prol
  %749 = load i32, ptr %748, align 4, !tbaa !19
  %750 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv837.prol
  store i32 %749, ptr %750, align 4, !tbaa !19
  %indvars.iv.next838.prol = add nuw nsw i64 %indvars.iv837.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1130
  br i1 %prol.iter.cmp.not, label %.lr.ph680.prol.loopexit, label %.lr.ph680.prol, !llvm.loop !94

.lr.ph680.prol.loopexit:                          ; preds = %.lr.ph680.prol, %.lr.ph680.preheader1110
  %indvars.iv837.unr = phi i64 [ %indvars.iv837.ph, %.lr.ph680.preheader1110 ], [ %indvars.iv.next838.prol, %.lr.ph680.prol ]
  %751 = sub nsw i64 %indvars.iv837.ph, %wide.trip.count841
  %752 = icmp ugt i64 %751, -4
  br i1 %752, label %._crit_edge681, label %.lr.ph680

.lr.ph680:                                        ; preds = %.lr.ph680.prol.loopexit, %.lr.ph680
  %indvars.iv837 = phi i64 [ %indvars.iv.next838.3, %.lr.ph680 ], [ %indvars.iv837.unr, %.lr.ph680.prol.loopexit ]
  %753 = getelementptr inbounds %struct._Fact, ptr %732, i64 %indvars.iv843, i32 1, i64 %indvars.iv837
  %754 = load i32, ptr %753, align 4, !tbaa !19
  %755 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv837
  store i32 %754, ptr %755, align 4, !tbaa !19
  %indvars.iv.next838 = add nuw nsw i64 %indvars.iv837, 1
  %756 = getelementptr inbounds %struct._Fact, ptr %732, i64 %indvars.iv843, i32 1, i64 %indvars.iv.next838
  %757 = load i32, ptr %756, align 4, !tbaa !19
  %758 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next838
  store i32 %757, ptr %758, align 4, !tbaa !19
  %indvars.iv.next838.1 = add nuw nsw i64 %indvars.iv837, 2
  %759 = getelementptr inbounds %struct._Fact, ptr %732, i64 %indvars.iv843, i32 1, i64 %indvars.iv.next838.1
  %760 = load i32, ptr %759, align 4, !tbaa !19
  %761 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next838.1
  store i32 %760, ptr %761, align 4, !tbaa !19
  %indvars.iv.next838.2 = add nuw nsw i64 %indvars.iv837, 3
  %762 = getelementptr inbounds %struct._Fact, ptr %732, i64 %indvars.iv843, i32 1, i64 %indvars.iv.next838.2
  %763 = load i32, ptr %762, align 4, !tbaa !19
  %764 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next838.2
  store i32 %763, ptr %764, align 4, !tbaa !19
  %indvars.iv.next838.3 = add nuw nsw i64 %indvars.iv837, 4
  %exitcond842.not.3 = icmp eq i64 %indvars.iv.next838.3, %wide.trip.count841
  br i1 %exitcond842.not.3, label %._crit_edge681, label %.lr.ph680, !llvm.loop !96

._crit_edge681:                                   ; preds = %.lr.ph680.prol.loopexit, %.lr.ph680, %middle.block1091, %731
  %765 = tail call i32 @fact_adress()
  %766 = load i32, ptr @lp, align 4, !tbaa !19
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %767
  %769 = load ptr, ptr %768, align 8, !tbaa !5
  %770 = sext i32 %765 to i64
  %771 = getelementptr inbounds i32, ptr %769, i64 %770
  %772 = load i32, ptr %771, align 4, !tbaa !19
  %.not632 = icmp eq i32 %772, 0
  br i1 %.not632, label %783, label %773

773:                                              ; preds = %._crit_edge681
  %774 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %767
  %775 = load ptr, ptr %774, align 8, !tbaa !5
  %776 = getelementptr inbounds i32, ptr %775, i64 %770
  %777 = load i32, ptr %776, align 4, !tbaa !19
  %778 = load ptr, ptr %730, align 8, !tbaa !15
  %779 = load i32, ptr %728, align 8, !tbaa !14
  %780 = add nsw i32 %779, 1
  store i32 %780, ptr %728, align 8, !tbaa !14
  %781 = sext i32 %779 to i64
  %782 = getelementptr inbounds i32, ptr %778, i64 %781
  store i32 %777, ptr %782, align 4, !tbaa !19
  br label %783

783:                                              ; preds = %._crit_edge681, %773
  %indvars.iv.next844 = add nuw nsw i64 %indvars.iv843, 1
  %784 = load i32, ptr %720, align 8, !tbaa !88
  %785 = sext i32 %784 to i64
  %786 = icmp slt i64 %indvars.iv.next844, %785
  br i1 %786, label %731, label %._crit_edge685, !llvm.loop !97

._crit_edge685:                                   ; preds = %783, %723
  %787 = getelementptr inbounds i8, ptr %718, i64 112
  %788 = load i32, ptr %787, align 8, !tbaa !98
  %789 = icmp sgt i32 %788, 0
  br i1 %789, label %.lr.ph688, label %._crit_edge689

.lr.ph688:                                        ; preds = %._crit_edge685
  %790 = zext nneg i32 %788 to i64
  %791 = tail call noalias ptr @calloc(i64 noundef %790, i64 noundef 4) #6
  %792 = getelementptr inbounds i8, ptr %.0569696, i64 176
  store ptr %791, ptr %792, align 8, !tbaa !24
  %793 = tail call noalias ptr @calloc(i64 noundef %790, i64 noundef 8) #6
  %794 = getelementptr inbounds i8, ptr %.0569696, i64 184
  store ptr %793, ptr %794, align 8, !tbaa !25
  %795 = tail call noalias ptr @calloc(i64 noundef %790, i64 noundef 8) #6
  %796 = getelementptr inbounds i8, ptr %.0569696, i64 192
  store ptr %795, ptr %796, align 8, !tbaa !26
  %797 = getelementptr inbounds i8, ptr %.0569696, i64 200
  store i32 0, ptr %797, align 8, !tbaa !27
  %798 = getelementptr inbounds i8, ptr %718, i64 88
  %799 = getelementptr inbounds i8, ptr %718, i64 104
  %800 = getelementptr inbounds i8, ptr %.0569696, i64 176
  %801 = getelementptr inbounds i8, ptr %.0569696, i64 200
  %802 = getelementptr inbounds i8, ptr %718, i64 96
  %803 = getelementptr inbounds i8, ptr %.0569696, i64 184
  %804 = getelementptr inbounds i8, ptr %.0569696, i64 192
  %.pre974 = load i32, ptr %801, align 8, !tbaa !27
  br label %805

805:                                              ; preds = %.lr.ph688, %837
  %806 = phi i32 [ %.pre974, %.lr.ph688 ], [ %839, %837 ]
  %indvars.iv847 = phi i64 [ 0, %.lr.ph688 ], [ %indvars.iv.next848, %837 ]
  %807 = load ptr, ptr %798, align 8, !tbaa !99
  %808 = getelementptr inbounds i32, ptr %807, i64 %indvars.iv847
  %809 = load i32, ptr %808, align 4, !tbaa !19
  %810 = load ptr, ptr %800, align 8, !tbaa !24
  %811 = sext i32 %806 to i64
  %812 = getelementptr inbounds i32, ptr %810, i64 %811
  store i32 %809, ptr %812, align 4, !tbaa !19
  %813 = load ptr, ptr %802, align 8, !tbaa !100
  %814 = getelementptr inbounds ptr, ptr %813, i64 %indvars.iv847
  %815 = load ptr, ptr %814, align 8, !tbaa !5
  %816 = tail call ptr @copy_Exp(ptr noundef %815) #7
  %817 = load ptr, ptr %803, align 8, !tbaa !25
  %818 = load i32, ptr %801, align 8, !tbaa !27
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds ptr, ptr %817, i64 %819
  store ptr %816, ptr %820, align 8, !tbaa !5
  %821 = load ptr, ptr %803, align 8, !tbaa !25
  %822 = getelementptr inbounds ptr, ptr %821, i64 %819
  %823 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %822)
  %.not619 = icmp eq i8 %823, 0
  br i1 %.not619, label %.._crit_edge689.loopexit_crit_edge, label %825

.._crit_edge689.loopexit_crit_edge:               ; preds = %805
  %824 = trunc nuw nsw i64 %indvars.iv847 to i32
  %.pre975.pre = load i32, ptr %787, align 8, !tbaa !98
  br label %._crit_edge689

825:                                              ; preds = %805
  %826 = load ptr, ptr %799, align 8, !tbaa !101
  %827 = getelementptr inbounds ptr, ptr %826, i64 %indvars.iv847
  %828 = load ptr, ptr %827, align 8, !tbaa !5
  %829 = tail call ptr @copy_Exp(ptr noundef %828) #7
  %830 = load ptr, ptr %804, align 8, !tbaa !26
  %831 = load i32, ptr %801, align 8, !tbaa !27
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds ptr, ptr %830, i64 %832
  store ptr %829, ptr %833, align 8, !tbaa !5
  %834 = load ptr, ptr %804, align 8, !tbaa !26
  %835 = getelementptr inbounds ptr, ptr %834, i64 %832
  %836 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %835)
  %.not620 = icmp eq i8 %836, 0
  %.pre975.pre985 = load i32, ptr %787, align 8, !tbaa !98
  br i1 %.not620, label %._crit_edge689.loopexit, label %837

837:                                              ; preds = %825
  %838 = load i32, ptr %801, align 8, !tbaa !27
  %839 = add nsw i32 %838, 1
  store i32 %839, ptr %801, align 8, !tbaa !27
  %indvars.iv.next848 = add nuw nsw i64 %indvars.iv847, 1
  %840 = sext i32 %.pre975.pre985 to i64
  %841 = icmp slt i64 %indvars.iv.next848, %840
  br i1 %841, label %805, label %._crit_edge689.loopexit, !llvm.loop !102

._crit_edge689.loopexit:                          ; preds = %837, %825
  %indvars.iv.next848.lcssa.sink = phi i64 [ %indvars.iv847, %825 ], [ %indvars.iv.next848, %837 ]
  %indvars849.le = trunc i64 %indvars.iv.next848.lcssa.sink to i32
  br label %._crit_edge689

._crit_edge689:                                   ; preds = %._crit_edge685, %._crit_edge689.loopexit, %.._crit_edge689.loopexit_crit_edge
  %842 = phi i32 [ %.pre975.pre, %.._crit_edge689.loopexit_crit_edge ], [ %.pre975.pre985, %._crit_edge689.loopexit ], [ %788, %._crit_edge685 ]
  %.11.lcssa = phi i32 [ %824, %.._crit_edge689.loopexit_crit_edge ], [ %indvars849.le, %._crit_edge689.loopexit ], [ 0, %._crit_edge685 ]
  %843 = icmp slt i32 %.11.lcssa, %842
  br i1 %843, label %844, label %851

844:                                              ; preds = %._crit_edge689
  %845 = load i32, ptr @gnum_actions, align 4, !tbaa !19
  %846 = add nsw i32 %845, -1
  store i32 %846, ptr @gnum_actions, align 4, !tbaa !19
  %847 = getelementptr inbounds i8, ptr %.0569696, i64 256
  %848 = load ptr, ptr %847, align 8, !tbaa !36
  br i1 %.not649, label %850, label %849

849:                                              ; preds = %844
  store ptr %848, ptr %2, align 8, !tbaa !36
  br label %.backedge

850:                                              ; preds = %844
  store ptr %848, ptr @gactions, align 8, !tbaa !5
  br label %.backedge

851:                                              ; preds = %._crit_edge689
  %852 = getelementptr inbounds i8, ptr %.0569696, i64 248
  %853 = load i32, ptr %852, align 8, !tbaa !38
  %854 = icmp sgt i32 %853, 0
  br i1 %854, label %855, label %.loopexit

855:                                              ; preds = %851
  %856 = zext nneg i32 %853 to i64
  %857 = tail call noalias ptr @calloc(i64 noundef %856, i64 noundef 184) #6
  %858 = getelementptr inbounds i8, ptr %.0569696, i64 240
  store ptr %857, ptr %858, align 8, !tbaa !39
  %xtraiter1160 = and i64 %856, 1
  %859 = icmp eq i32 %853, 1
  br i1 %859, label %.loopexit.loopexit.unr-lcssa, label %.new1158

.new1158:                                         ; preds = %855
  %unroll_iter1162 = and i64 %856, 2147483646
  br label %860

860:                                              ; preds = %860, %.new1158
  %indvars.iv911 = phi i64 [ 0, %.new1158 ], [ %indvars.iv.next912.1, %860 ]
  %niter1163 = phi i64 [ 0, %.new1158 ], [ %niter1163.next.1, %860 ]
  %861 = getelementptr inbounds %struct._ActionEffect, ptr %857, i64 %indvars.iv911, i32 22
  store i8 0, ptr %861, align 4, !tbaa !40
  %862 = getelementptr inbounds %struct._ActionEffect, ptr %857, i64 %indvars.iv911, i32 23
  store i8 0, ptr %862, align 1, !tbaa !42
  %indvars.iv.next912 = or disjoint i64 %indvars.iv911, 1
  %863 = getelementptr inbounds %struct._ActionEffect, ptr %857, i64 %indvars.iv.next912, i32 22
  store i8 0, ptr %863, align 4, !tbaa !40
  %864 = getelementptr inbounds %struct._ActionEffect, ptr %857, i64 %indvars.iv.next912, i32 23
  store i8 0, ptr %864, align 1, !tbaa !42
  %indvars.iv.next912.1 = add nuw nsw i64 %indvars.iv911, 2
  %niter1163.next.1 = add i64 %niter1163, 2
  %niter1163.ncmp.1 = icmp eq i64 %niter1163.next.1, %unroll_iter1162
  br i1 %niter1163.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %860, !llvm.loop !103

.loopexit.loopexit.unr-lcssa:                     ; preds = %860, %855
  %indvars.iv911.unr = phi i64 [ 0, %855 ], [ %indvars.iv.next912.1, %860 ]
  %lcmp.mod1161.not = icmp eq i64 %xtraiter1160, 0
  br i1 %lcmp.mod1161.not, label %.loopexit, label %.loopexit.loopexit.epilog-lcssa

.loopexit.loopexit.epilog-lcssa:                  ; preds = %.loopexit.loopexit.unr-lcssa
  %865 = getelementptr inbounds %struct._ActionEffect, ptr %857, i64 %indvars.iv911.unr, i32 22
  store i8 0, ptr %865, align 4, !tbaa !40
  %866 = getelementptr inbounds %struct._ActionEffect, ptr %857, i64 %indvars.iv911.unr, i32 23
  store i8 0, ptr %866, align 1, !tbaa !42
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.epilog-lcssa, %.loopexit.loopexit.unr-lcssa, %851
  store i32 0, ptr %852, align 8, !tbaa !38
  %867 = getelementptr inbounds i8, ptr %718, i64 120
  %.0568813 = load ptr, ptr %867, align 8, !tbaa !5
  %.not621814 = icmp eq ptr %.0568813, null
  br i1 %.not621814, label %.critedge652, label %.lr.ph817

.lr.ph817:                                        ; preds = %.loopexit
  %868 = getelementptr inbounds i8, ptr %.0569696, i64 240
  br label %869

869:                                              ; preds = %.lr.ph817, %1248
  %.0568815 = phi ptr [ %.0568813, %.lr.ph817 ], [ %.0568, %1248 ]
  %870 = load ptr, ptr %868, align 8, !tbaa !39
  %871 = load i32, ptr %852, align 8, !tbaa !38
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds %struct._ActionEffect, ptr %870, i64 %872
  %874 = getelementptr inbounds i8, ptr %.0568815, i64 8
  %875 = load i32, ptr %874, align 8, !tbaa !104
  %876 = icmp sgt i32 %875, 0
  br i1 %876, label %.lr.ph771.preheader, label %877

877:                                              ; preds = %869
  %878 = getelementptr inbounds i8, ptr %873, i64 8
  store i32 0, ptr %878, align 8, !tbaa !46
  br label %._crit_edge772

.lr.ph771.preheader:                              ; preds = %869
  %879 = zext nneg i32 %875 to i64
  %880 = tail call noalias ptr @calloc(i64 noundef %879, i64 noundef 4) #6
  store ptr %880, ptr %873, align 8, !tbaa !47
  %881 = getelementptr inbounds i8, ptr %873, i64 8
  store i32 0, ptr %881, align 8, !tbaa !46
  br label %.lr.ph771

.lr.ph771:                                        ; preds = %.lr.ph771.preheader, %938
  %indvars.iv923 = phi i64 [ 0, %.lr.ph771.preheader ], [ %indvars.iv.next924, %938 ]
  %882 = load ptr, ptr %.0568815, align 8, !tbaa !106
  %883 = getelementptr inbounds %struct._Fact, ptr %882, i64 %indvars.iv923
  %884 = load i32, ptr %883, align 4, !tbaa !17
  store i32 %884, ptr @lp, align 4, !tbaa !19
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %885
  %887 = load i32, ptr %886, align 4, !tbaa !19
  %888 = icmp sgt i32 %887, 0
  br i1 %888, label %.lr.ph767.preheader, label %._crit_edge768

.lr.ph767.preheader:                              ; preds = %.lr.ph771
  %889 = ptrtoint ptr %882 to i64
  %890 = mul nsw i64 %indvars.iv923, -24
  %891 = add i64 %890, add (i64 ptrtoint (ptr @largs to i64), i64 -4)
  %wide.trip.count921 = zext nneg i32 %887 to i64
  %min.iters.check1078 = icmp ult i32 %887, 8
  %892 = sub i64 %891, %889
  %diff.check1075 = icmp ult i64 %892, 32
  %or.cond1104 = select i1 %min.iters.check1078, i1 true, i1 %diff.check1075
  br i1 %or.cond1104, label %.lr.ph767.preheader1109, label %vector.ph1079

vector.ph1079:                                    ; preds = %.lr.ph767.preheader
  %n.vec1081 = and i64 %wide.trip.count921, 2147483640
  br label %vector.body1083

vector.body1083:                                  ; preds = %vector.body1083, %vector.ph1079
  %index1084 = phi i64 [ 0, %vector.ph1079 ], [ %index.next1087, %vector.body1083 ]
  %893 = getelementptr inbounds %struct._Fact, ptr %882, i64 %indvars.iv923, i32 1, i64 %index1084
  %894 = getelementptr inbounds i8, ptr %893, i64 16
  %wide.load1085 = load <4 x i32>, ptr %893, align 4, !tbaa !19
  %wide.load1086 = load <4 x i32>, ptr %894, align 4, !tbaa !19
  %895 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %index1084
  %896 = getelementptr inbounds i8, ptr %895, i64 16
  store <4 x i32> %wide.load1085, ptr %895, align 16, !tbaa !19
  store <4 x i32> %wide.load1086, ptr %896, align 16, !tbaa !19
  %index.next1087 = add nuw i64 %index1084, 8
  %897 = icmp eq i64 %index.next1087, %n.vec1081
  br i1 %897, label %middle.block1076, label %vector.body1083, !llvm.loop !107

middle.block1076:                                 ; preds = %vector.body1083
  %cmp.n1088 = icmp eq i64 %n.vec1081, %wide.trip.count921
  br i1 %cmp.n1088, label %._crit_edge768, label %.lr.ph767.preheader1109

.lr.ph767.preheader1109:                          ; preds = %middle.block1076, %.lr.ph767.preheader
  %indvars.iv917.ph = phi i64 [ 0, %.lr.ph767.preheader ], [ %n.vec1081, %middle.block1076 ]
  %xtraiter1164 = and i64 %wide.trip.count921, 3
  %lcmp.mod1165.not = icmp eq i64 %xtraiter1164, 0
  br i1 %lcmp.mod1165.not, label %.lr.ph767.prol.loopexit, label %.lr.ph767.prol

.lr.ph767.prol:                                   ; preds = %.lr.ph767.preheader1109, %.lr.ph767.prol
  %indvars.iv917.prol = phi i64 [ %indvars.iv.next918.prol, %.lr.ph767.prol ], [ %indvars.iv917.ph, %.lr.ph767.preheader1109 ]
  %prol.iter1166 = phi i64 [ %prol.iter1166.next, %.lr.ph767.prol ], [ 0, %.lr.ph767.preheader1109 ]
  %898 = getelementptr inbounds %struct._Fact, ptr %882, i64 %indvars.iv923, i32 1, i64 %indvars.iv917.prol
  %899 = load i32, ptr %898, align 4, !tbaa !19
  %900 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv917.prol
  store i32 %899, ptr %900, align 4, !tbaa !19
  %indvars.iv.next918.prol = add nuw nsw i64 %indvars.iv917.prol, 1
  %prol.iter1166.next = add i64 %prol.iter1166, 1
  %prol.iter1166.cmp.not = icmp eq i64 %prol.iter1166.next, %xtraiter1164
  br i1 %prol.iter1166.cmp.not, label %.lr.ph767.prol.loopexit, label %.lr.ph767.prol, !llvm.loop !108

.lr.ph767.prol.loopexit:                          ; preds = %.lr.ph767.prol, %.lr.ph767.preheader1109
  %indvars.iv917.unr = phi i64 [ %indvars.iv917.ph, %.lr.ph767.preheader1109 ], [ %indvars.iv.next918.prol, %.lr.ph767.prol ]
  %901 = sub nsw i64 %indvars.iv917.ph, %wide.trip.count921
  %902 = icmp ugt i64 %901, -4
  br i1 %902, label %._crit_edge768, label %.lr.ph767

.lr.ph767:                                        ; preds = %.lr.ph767.prol.loopexit, %.lr.ph767
  %indvars.iv917 = phi i64 [ %indvars.iv.next918.3, %.lr.ph767 ], [ %indvars.iv917.unr, %.lr.ph767.prol.loopexit ]
  %903 = getelementptr inbounds %struct._Fact, ptr %882, i64 %indvars.iv923, i32 1, i64 %indvars.iv917
  %904 = load i32, ptr %903, align 4, !tbaa !19
  %905 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv917
  store i32 %904, ptr %905, align 4, !tbaa !19
  %indvars.iv.next918 = add nuw nsw i64 %indvars.iv917, 1
  %906 = getelementptr inbounds %struct._Fact, ptr %882, i64 %indvars.iv923, i32 1, i64 %indvars.iv.next918
  %907 = load i32, ptr %906, align 4, !tbaa !19
  %908 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next918
  store i32 %907, ptr %908, align 4, !tbaa !19
  %indvars.iv.next918.1 = add nuw nsw i64 %indvars.iv917, 2
  %909 = getelementptr inbounds %struct._Fact, ptr %882, i64 %indvars.iv923, i32 1, i64 %indvars.iv.next918.1
  %910 = load i32, ptr %909, align 4, !tbaa !19
  %911 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next918.1
  store i32 %910, ptr %911, align 4, !tbaa !19
  %indvars.iv.next918.2 = add nuw nsw i64 %indvars.iv917, 3
  %912 = getelementptr inbounds %struct._Fact, ptr %882, i64 %indvars.iv923, i32 1, i64 %indvars.iv.next918.2
  %913 = load i32, ptr %912, align 4, !tbaa !19
  %914 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next918.2
  store i32 %913, ptr %914, align 4, !tbaa !19
  %indvars.iv.next918.3 = add nuw nsw i64 %indvars.iv917, 4
  %exitcond922.not.3 = icmp eq i64 %indvars.iv.next918.3, %wide.trip.count921
  br i1 %exitcond922.not.3, label %._crit_edge768, label %.lr.ph767, !llvm.loop !109

._crit_edge768:                                   ; preds = %.lr.ph767.prol.loopexit, %.lr.ph767, %middle.block1076, %.lr.ph771
  %915 = tail call i32 @fact_adress()
  %916 = load i32, ptr @lp, align 4, !tbaa !19
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %917
  %919 = load ptr, ptr %918, align 8, !tbaa !5
  %920 = sext i32 %915 to i64
  %921 = getelementptr inbounds i32, ptr %919, i64 %920
  %922 = load i32, ptr %921, align 4, !tbaa !19
  %.not622 = icmp eq i32 %922, 0
  br i1 %.not622, label %._crit_edge768.._crit_edge772.loopexit_crit_edge, label %923

._crit_edge768.._crit_edge772.loopexit_crit_edge: ; preds = %._crit_edge768
  %.pre976.pre = load i32, ptr %874, align 8, !tbaa !104
  br label %._crit_edge772.loopexit

923:                                              ; preds = %._crit_edge768
  %924 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %917
  %925 = load ptr, ptr %924, align 8, !tbaa !5
  %926 = getelementptr inbounds i32, ptr %925, i64 %920
  %927 = load i32, ptr %926, align 4, !tbaa !19
  %.not630 = icmp eq i32 %927, 0
  br i1 %.not630, label %938, label %928

928:                                              ; preds = %923
  %929 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %917
  %930 = load ptr, ptr %929, align 8, !tbaa !5
  %931 = getelementptr inbounds i32, ptr %930, i64 %920
  %932 = load i32, ptr %931, align 4, !tbaa !19
  %933 = load ptr, ptr %873, align 8, !tbaa !47
  %934 = load i32, ptr %881, align 8, !tbaa !46
  %935 = add nsw i32 %934, 1
  store i32 %935, ptr %881, align 8, !tbaa !46
  %936 = sext i32 %934 to i64
  %937 = getelementptr inbounds i32, ptr %933, i64 %936
  store i32 %932, ptr %937, align 4, !tbaa !19
  br label %938

938:                                              ; preds = %923, %928
  %indvars.iv.next924 = add nuw nsw i64 %indvars.iv923, 1
  %939 = load i32, ptr %874, align 8, !tbaa !104
  %940 = sext i32 %939 to i64
  %941 = icmp slt i64 %indvars.iv.next924, %940
  br i1 %941, label %.lr.ph771, label %._crit_edge772.loopexit, !llvm.loop !110

._crit_edge772.loopexit:                          ; preds = %938, %._crit_edge768.._crit_edge772.loopexit_crit_edge
  %.pre976 = phi i32 [ %.pre976.pre, %._crit_edge768.._crit_edge772.loopexit_crit_edge ], [ %939, %938 ]
  %.13.lcssa.ph.in = phi i64 [ %indvars.iv923, %._crit_edge768.._crit_edge772.loopexit_crit_edge ], [ %indvars.iv.next924, %938 ]
  %.13.lcssa.ph = trunc i64 %.13.lcssa.ph.in to i32
  br label %._crit_edge772

._crit_edge772:                                   ; preds = %877, %._crit_edge772.loopexit
  %942 = phi ptr [ %878, %877 ], [ %881, %._crit_edge772.loopexit ]
  %943 = phi i32 [ %875, %877 ], [ %.pre976, %._crit_edge772.loopexit ]
  %.13.lcssa = phi i32 [ 0, %877 ], [ %.13.lcssa.ph, %._crit_edge772.loopexit ]
  %944 = icmp slt i32 %.13.lcssa, %943
  br i1 %944, label %945, label %947

945:                                              ; preds = %._crit_edge772
  %946 = load ptr, ptr %873, align 8, !tbaa !47
  tail call void @free(ptr noundef %946) #7
  br label %1248

947:                                              ; preds = %._crit_edge772
  %948 = getelementptr inbounds i8, ptr %.0568815, i64 72
  %949 = load i32, ptr %948, align 8, !tbaa !111
  %950 = icmp sgt i32 %949, 0
  br i1 %950, label %951, label %._crit_edge780

951:                                              ; preds = %947
  %952 = zext nneg i32 %949 to i64
  %953 = tail call noalias ptr @calloc(i64 noundef %952, i64 noundef 4) #6
  %954 = getelementptr inbounds i8, ptr %873, i64 48
  store ptr %953, ptr %954, align 8, !tbaa !52
  %955 = tail call noalias ptr @calloc(i64 noundef %952, i64 noundef 8) #6
  %956 = getelementptr inbounds i8, ptr %873, i64 56
  store ptr %955, ptr %956, align 8, !tbaa !53
  %957 = tail call noalias ptr @calloc(i64 noundef %952, i64 noundef 8) #6
  %958 = getelementptr inbounds i8, ptr %873, i64 64
  store ptr %957, ptr %958, align 8, !tbaa !54
  %xtraiter1170 = and i64 %952, 1
  %959 = icmp eq i32 %949, 1
  br i1 %959, label %.unr-lcssa1168, label %.new1167

.new1167:                                         ; preds = %951
  %unroll_iter1173 = and i64 %952, 2147483646
  br label %960

960:                                              ; preds = %960, %.new1167
  %indvars.iv927 = phi i64 [ 0, %.new1167 ], [ %indvars.iv.next928.1, %960 ]
  %niter1174 = phi i64 [ 0, %.new1167 ], [ %niter1174.next.1, %960 ]
  %961 = load ptr, ptr %956, align 8, !tbaa !53
  %962 = getelementptr inbounds ptr, ptr %961, i64 %indvars.iv927
  store ptr null, ptr %962, align 8, !tbaa !5
  %963 = load ptr, ptr %958, align 8, !tbaa !54
  %964 = getelementptr inbounds ptr, ptr %963, i64 %indvars.iv927
  store ptr null, ptr %964, align 8, !tbaa !5
  %indvars.iv.next928 = or disjoint i64 %indvars.iv927, 1
  %965 = load ptr, ptr %956, align 8, !tbaa !53
  %966 = getelementptr inbounds ptr, ptr %965, i64 %indvars.iv.next928
  store ptr null, ptr %966, align 8, !tbaa !5
  %967 = load ptr, ptr %958, align 8, !tbaa !54
  %968 = getelementptr inbounds ptr, ptr %967, i64 %indvars.iv.next928
  store ptr null, ptr %968, align 8, !tbaa !5
  %indvars.iv.next928.1 = add nuw nsw i64 %indvars.iv927, 2
  %niter1174.next.1 = add i64 %niter1174, 2
  %niter1174.ncmp.1 = icmp eq i64 %niter1174.next.1, %unroll_iter1173
  br i1 %niter1174.ncmp.1, label %.unr-lcssa1168, label %960, !llvm.loop !112

.unr-lcssa1168:                                   ; preds = %960, %951
  %indvars.iv927.unr = phi i64 [ 0, %951 ], [ %indvars.iv.next928.1, %960 ]
  %lcmp.mod1171.not = icmp eq i64 %xtraiter1170, 0
  br i1 %lcmp.mod1171.not, label %973, label %.epilog-lcssa1172

.epilog-lcssa1172:                                ; preds = %.unr-lcssa1168
  %969 = load ptr, ptr %956, align 8, !tbaa !53
  %970 = getelementptr inbounds ptr, ptr %969, i64 %indvars.iv927.unr
  store ptr null, ptr %970, align 8, !tbaa !5
  %971 = load ptr, ptr %958, align 8, !tbaa !54
  %972 = getelementptr inbounds ptr, ptr %971, i64 %indvars.iv927.unr
  store ptr null, ptr %972, align 8, !tbaa !5
  br label %973

973:                                              ; preds = %.unr-lcssa1168, %.epilog-lcssa1172
  %974 = getelementptr inbounds i8, ptr %873, i64 72
  store i32 0, ptr %974, align 8, !tbaa !56
  %975 = getelementptr inbounds i8, ptr %.0568815, i64 48
  %976 = getelementptr inbounds i8, ptr %.0568815, i64 64
  br i1 %950, label %.lr.ph779, label %._crit_edge780

.lr.ph779:                                        ; preds = %973
  %977 = getelementptr inbounds i8, ptr %873, i64 48
  %978 = getelementptr inbounds i8, ptr %873, i64 72
  %979 = getelementptr inbounds i8, ptr %.0568815, i64 56
  %980 = getelementptr inbounds i8, ptr %873, i64 56
  %981 = getelementptr inbounds i8, ptr %873, i64 64
  %.pre977 = load i32, ptr %978, align 8, !tbaa !56
  br label %982

982:                                              ; preds = %.lr.ph779, %1014
  %983 = phi i32 [ %.pre977, %.lr.ph779 ], [ %1016, %1014 ]
  %indvars.iv933 = phi i64 [ 0, %.lr.ph779 ], [ %indvars.iv.next934, %1014 ]
  %984 = load ptr, ptr %975, align 8, !tbaa !113
  %985 = getelementptr inbounds i32, ptr %984, i64 %indvars.iv933
  %986 = load i32, ptr %985, align 4, !tbaa !19
  %987 = load ptr, ptr %977, align 8, !tbaa !52
  %988 = sext i32 %983 to i64
  %989 = getelementptr inbounds i32, ptr %987, i64 %988
  store i32 %986, ptr %989, align 4, !tbaa !19
  %990 = load ptr, ptr %979, align 8, !tbaa !114
  %991 = getelementptr inbounds ptr, ptr %990, i64 %indvars.iv933
  %992 = load ptr, ptr %991, align 8, !tbaa !5
  %993 = tail call ptr @copy_Exp(ptr noundef %992) #7
  %994 = load ptr, ptr %980, align 8, !tbaa !53
  %995 = load i32, ptr %978, align 8, !tbaa !56
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds ptr, ptr %994, i64 %996
  store ptr %993, ptr %997, align 8, !tbaa !5
  %998 = load ptr, ptr %980, align 8, !tbaa !53
  %999 = getelementptr inbounds ptr, ptr %998, i64 %996
  %1000 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %999)
  %.not623 = icmp eq i8 %1000, 0
  br i1 %.not623, label %.._crit_edge780.loopexit_crit_edge, label %1002

.._crit_edge780.loopexit_crit_edge:               ; preds = %982
  %1001 = trunc nuw nsw i64 %indvars.iv933 to i32
  %.pre978.pre = load i32, ptr %948, align 8, !tbaa !111
  br label %._crit_edge780

1002:                                             ; preds = %982
  %1003 = load ptr, ptr %976, align 8, !tbaa !115
  %1004 = getelementptr inbounds ptr, ptr %1003, i64 %indvars.iv933
  %1005 = load ptr, ptr %1004, align 8, !tbaa !5
  %1006 = tail call ptr @copy_Exp(ptr noundef %1005) #7
  %1007 = load ptr, ptr %981, align 8, !tbaa !54
  %1008 = load i32, ptr %978, align 8, !tbaa !56
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds ptr, ptr %1007, i64 %1009
  store ptr %1006, ptr %1010, align 8, !tbaa !5
  %1011 = load ptr, ptr %981, align 8, !tbaa !54
  %1012 = getelementptr inbounds ptr, ptr %1011, i64 %1009
  %1013 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %1012)
  %.not624 = icmp eq i8 %1013, 0
  %.pre978.pre988 = load i32, ptr %948, align 8, !tbaa !111
  br i1 %.not624, label %._crit_edge780.loopexit, label %1014

1014:                                             ; preds = %1002
  %1015 = load i32, ptr %978, align 8, !tbaa !56
  %1016 = add nsw i32 %1015, 1
  store i32 %1016, ptr %978, align 8, !tbaa !56
  %indvars.iv.next934 = add nuw nsw i64 %indvars.iv933, 1
  %1017 = sext i32 %.pre978.pre988 to i64
  %1018 = icmp slt i64 %indvars.iv.next934, %1017
  br i1 %1018, label %982, label %._crit_edge780.loopexit, !llvm.loop !116

._crit_edge780.loopexit:                          ; preds = %1014, %1002
  %indvars.iv.next934.lcssa.sink = phi i64 [ %indvars.iv933, %1002 ], [ %indvars.iv.next934, %1014 ]
  %indvars935.le = trunc i64 %indvars.iv.next934.lcssa.sink to i32
  br label %._crit_edge780

._crit_edge780:                                   ; preds = %._crit_edge780.loopexit, %947, %.._crit_edge780.loopexit_crit_edge, %973
  %1019 = phi i32 [ %949, %973 ], [ %.pre978.pre, %.._crit_edge780.loopexit_crit_edge ], [ %949, %947 ], [ %.pre978.pre988, %._crit_edge780.loopexit ]
  %.15.lcssa = phi i32 [ 0, %973 ], [ %1001, %.._crit_edge780.loopexit_crit_edge ], [ 0, %947 ], [ %indvars935.le, %._crit_edge780.loopexit ]
  %1020 = icmp slt i32 %.15.lcssa, %1019
  br i1 %1020, label %1250, label %1021

1021:                                             ; preds = %._crit_edge780
  %1022 = getelementptr inbounds i8, ptr %.0568815, i64 24
  %1023 = load i32, ptr %1022, align 8, !tbaa !117
  %1024 = icmp sgt i32 %1023, 0
  br i1 %1024, label %.lr.ph792, label %1025

1025:                                             ; preds = %1021
  %1026 = getelementptr inbounds i8, ptr %873, i64 24
  store i32 0, ptr %1026, align 8, !tbaa !63
  br label %._crit_edge793

.lr.ph792:                                        ; preds = %1021
  %1027 = zext nneg i32 %1023 to i64
  %1028 = tail call noalias ptr @calloc(i64 noundef %1027, i64 noundef 4) #6
  %1029 = getelementptr inbounds i8, ptr %873, i64 16
  store ptr %1028, ptr %1029, align 8, !tbaa !64
  %1030 = getelementptr inbounds i8, ptr %873, i64 24
  store i32 0, ptr %1030, align 8, !tbaa !63
  %1031 = getelementptr inbounds i8, ptr %.0568815, i64 16
  %1032 = getelementptr inbounds i8, ptr %873, i64 16
  br label %1033

1033:                                             ; preds = %.lr.ph792, %1085
  %indvars.iv943 = phi i64 [ 0, %.lr.ph792 ], [ %indvars.iv.next944, %1085 ]
  %1034 = load ptr, ptr %1031, align 8, !tbaa !118
  %1035 = getelementptr inbounds %struct._Fact, ptr %1034, i64 %indvars.iv943
  %1036 = load i32, ptr %1035, align 4, !tbaa !17
  store i32 %1036, ptr @lp, align 4, !tbaa !19
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1037
  %1039 = load i32, ptr %1038, align 4, !tbaa !19
  %1040 = icmp sgt i32 %1039, 0
  br i1 %1040, label %.lr.ph788.preheader, label %._crit_edge789

.lr.ph788.preheader:                              ; preds = %1033
  %1041 = ptrtoint ptr %1034 to i64
  %1042 = mul nsw i64 %indvars.iv943, -24
  %1043 = add i64 %1042, add (i64 ptrtoint (ptr @largs to i64), i64 -4)
  %wide.trip.count941 = zext nneg i32 %1039 to i64
  %min.iters.check1063 = icmp ult i32 %1039, 8
  %1044 = sub i64 %1043, %1041
  %diff.check1060 = icmp ult i64 %1044, 32
  %or.cond1105 = select i1 %min.iters.check1063, i1 true, i1 %diff.check1060
  br i1 %or.cond1105, label %.lr.ph788.preheader1108, label %vector.ph1064

vector.ph1064:                                    ; preds = %.lr.ph788.preheader
  %n.vec1066 = and i64 %wide.trip.count941, 2147483640
  br label %vector.body1068

vector.body1068:                                  ; preds = %vector.body1068, %vector.ph1064
  %index1069 = phi i64 [ 0, %vector.ph1064 ], [ %index.next1072, %vector.body1068 ]
  %1045 = getelementptr inbounds %struct._Fact, ptr %1034, i64 %indvars.iv943, i32 1, i64 %index1069
  %1046 = getelementptr inbounds i8, ptr %1045, i64 16
  %wide.load1070 = load <4 x i32>, ptr %1045, align 4, !tbaa !19
  %wide.load1071 = load <4 x i32>, ptr %1046, align 4, !tbaa !19
  %1047 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %index1069
  %1048 = getelementptr inbounds i8, ptr %1047, i64 16
  store <4 x i32> %wide.load1070, ptr %1047, align 16, !tbaa !19
  store <4 x i32> %wide.load1071, ptr %1048, align 16, !tbaa !19
  %index.next1072 = add nuw i64 %index1069, 8
  %1049 = icmp eq i64 %index.next1072, %n.vec1066
  br i1 %1049, label %middle.block1061, label %vector.body1068, !llvm.loop !119

middle.block1061:                                 ; preds = %vector.body1068
  %cmp.n1073 = icmp eq i64 %n.vec1066, %wide.trip.count941
  br i1 %cmp.n1073, label %._crit_edge789, label %.lr.ph788.preheader1108

.lr.ph788.preheader1108:                          ; preds = %middle.block1061, %.lr.ph788.preheader
  %indvars.iv937.ph = phi i64 [ 0, %.lr.ph788.preheader ], [ %n.vec1066, %middle.block1061 ]
  %xtraiter1175 = and i64 %wide.trip.count941, 3
  %lcmp.mod1176.not = icmp eq i64 %xtraiter1175, 0
  br i1 %lcmp.mod1176.not, label %.lr.ph788.prol.loopexit, label %.lr.ph788.prol

.lr.ph788.prol:                                   ; preds = %.lr.ph788.preheader1108, %.lr.ph788.prol
  %indvars.iv937.prol = phi i64 [ %indvars.iv.next938.prol, %.lr.ph788.prol ], [ %indvars.iv937.ph, %.lr.ph788.preheader1108 ]
  %prol.iter1177 = phi i64 [ %prol.iter1177.next, %.lr.ph788.prol ], [ 0, %.lr.ph788.preheader1108 ]
  %1050 = getelementptr inbounds %struct._Fact, ptr %1034, i64 %indvars.iv943, i32 1, i64 %indvars.iv937.prol
  %1051 = load i32, ptr %1050, align 4, !tbaa !19
  %1052 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv937.prol
  store i32 %1051, ptr %1052, align 4, !tbaa !19
  %indvars.iv.next938.prol = add nuw nsw i64 %indvars.iv937.prol, 1
  %prol.iter1177.next = add i64 %prol.iter1177, 1
  %prol.iter1177.cmp.not = icmp eq i64 %prol.iter1177.next, %xtraiter1175
  br i1 %prol.iter1177.cmp.not, label %.lr.ph788.prol.loopexit, label %.lr.ph788.prol, !llvm.loop !120

.lr.ph788.prol.loopexit:                          ; preds = %.lr.ph788.prol, %.lr.ph788.preheader1108
  %indvars.iv937.unr = phi i64 [ %indvars.iv937.ph, %.lr.ph788.preheader1108 ], [ %indvars.iv.next938.prol, %.lr.ph788.prol ]
  %1053 = sub nsw i64 %indvars.iv937.ph, %wide.trip.count941
  %1054 = icmp ugt i64 %1053, -4
  br i1 %1054, label %._crit_edge789, label %.lr.ph788

.lr.ph788:                                        ; preds = %.lr.ph788.prol.loopexit, %.lr.ph788
  %indvars.iv937 = phi i64 [ %indvars.iv.next938.3, %.lr.ph788 ], [ %indvars.iv937.unr, %.lr.ph788.prol.loopexit ]
  %1055 = getelementptr inbounds %struct._Fact, ptr %1034, i64 %indvars.iv943, i32 1, i64 %indvars.iv937
  %1056 = load i32, ptr %1055, align 4, !tbaa !19
  %1057 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv937
  store i32 %1056, ptr %1057, align 4, !tbaa !19
  %indvars.iv.next938 = add nuw nsw i64 %indvars.iv937, 1
  %1058 = getelementptr inbounds %struct._Fact, ptr %1034, i64 %indvars.iv943, i32 1, i64 %indvars.iv.next938
  %1059 = load i32, ptr %1058, align 4, !tbaa !19
  %1060 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next938
  store i32 %1059, ptr %1060, align 4, !tbaa !19
  %indvars.iv.next938.1 = add nuw nsw i64 %indvars.iv937, 2
  %1061 = getelementptr inbounds %struct._Fact, ptr %1034, i64 %indvars.iv943, i32 1, i64 %indvars.iv.next938.1
  %1062 = load i32, ptr %1061, align 4, !tbaa !19
  %1063 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next938.1
  store i32 %1062, ptr %1063, align 4, !tbaa !19
  %indvars.iv.next938.2 = add nuw nsw i64 %indvars.iv937, 3
  %1064 = getelementptr inbounds %struct._Fact, ptr %1034, i64 %indvars.iv943, i32 1, i64 %indvars.iv.next938.2
  %1065 = load i32, ptr %1064, align 4, !tbaa !19
  %1066 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next938.2
  store i32 %1065, ptr %1066, align 4, !tbaa !19
  %indvars.iv.next938.3 = add nuw nsw i64 %indvars.iv937, 4
  %exitcond942.not.3 = icmp eq i64 %indvars.iv.next938.3, %wide.trip.count941
  br i1 %exitcond942.not.3, label %._crit_edge789, label %.lr.ph788, !llvm.loop !121

._crit_edge789:                                   ; preds = %.lr.ph788.prol.loopexit, %.lr.ph788, %middle.block1061, %1033
  %1067 = tail call i32 @fact_adress()
  %1068 = load i32, ptr @lp, align 4, !tbaa !19
  %1069 = sext i32 %1068 to i64
  %1070 = getelementptr inbounds [50 x ptr], ptr @lneg, i64 0, i64 %1069
  %1071 = load ptr, ptr %1070, align 8, !tbaa !5
  %1072 = sext i32 %1067 to i64
  %1073 = getelementptr inbounds i32, ptr %1071, i64 %1072
  %1074 = load i32, ptr %1073, align 4, !tbaa !19
  %.not628 = icmp eq i32 %1074, 0
  br i1 %.not628, label %1085, label %1075

1075:                                             ; preds = %._crit_edge789
  %1076 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %1069
  %1077 = load ptr, ptr %1076, align 8, !tbaa !5
  %1078 = getelementptr inbounds i32, ptr %1077, i64 %1072
  %1079 = load i32, ptr %1078, align 4, !tbaa !19
  %1080 = load ptr, ptr %1032, align 8, !tbaa !64
  %1081 = load i32, ptr %1030, align 8, !tbaa !63
  %1082 = add nsw i32 %1081, 1
  store i32 %1082, ptr %1030, align 8, !tbaa !63
  %1083 = sext i32 %1081 to i64
  %1084 = getelementptr inbounds i32, ptr %1080, i64 %1083
  store i32 %1079, ptr %1084, align 4, !tbaa !19
  br label %1085

1085:                                             ; preds = %._crit_edge789, %1075
  %indvars.iv.next944 = add nuw nsw i64 %indvars.iv943, 1
  %1086 = load i32, ptr %1022, align 8, !tbaa !117
  %1087 = sext i32 %1086 to i64
  %1088 = icmp slt i64 %indvars.iv.next944, %1087
  br i1 %1088, label %1033, label %._crit_edge793, !llvm.loop !122

._crit_edge793:                                   ; preds = %1085, %1025
  %1089 = getelementptr inbounds i8, ptr %.0568815, i64 40
  %1090 = load i32, ptr %1089, align 8, !tbaa !123
  %1091 = icmp sgt i32 %1090, 0
  br i1 %1091, label %.lr.ph800, label %1092

1092:                                             ; preds = %._crit_edge793
  %1093 = getelementptr inbounds i8, ptr %873, i64 40
  store i32 0, ptr %1093, align 8, !tbaa !69
  br label %._crit_edge801

.lr.ph800:                                        ; preds = %._crit_edge793
  %1094 = zext nneg i32 %1090 to i64
  %1095 = tail call noalias ptr @calloc(i64 noundef %1094, i64 noundef 4) #6
  %1096 = getelementptr inbounds i8, ptr %873, i64 32
  store ptr %1095, ptr %1096, align 8, !tbaa !70
  %1097 = getelementptr inbounds i8, ptr %873, i64 40
  store i32 0, ptr %1097, align 8, !tbaa !69
  %1098 = getelementptr inbounds i8, ptr %.0568815, i64 32
  %1099 = getelementptr inbounds i8, ptr %873, i64 32
  br label %1100

1100:                                             ; preds = %.lr.ph800, %1152
  %indvars.iv953 = phi i64 [ 0, %.lr.ph800 ], [ %indvars.iv.next954, %1152 ]
  %1101 = load ptr, ptr %1098, align 8, !tbaa !124
  %1102 = getelementptr inbounds %struct._Fact, ptr %1101, i64 %indvars.iv953
  %1103 = load i32, ptr %1102, align 4, !tbaa !17
  store i32 %1103, ptr @lp, align 4, !tbaa !19
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds [50 x i32], ptr @garity, i64 0, i64 %1104
  %1106 = load i32, ptr %1105, align 4, !tbaa !19
  %1107 = icmp sgt i32 %1106, 0
  br i1 %1107, label %.lr.ph796.preheader, label %._crit_edge797

.lr.ph796.preheader:                              ; preds = %1100
  %1108 = ptrtoint ptr %1101 to i64
  %1109 = mul nsw i64 %indvars.iv953, -24
  %1110 = add i64 %1109, add (i64 ptrtoint (ptr @largs to i64), i64 -4)
  %wide.trip.count951 = zext nneg i32 %1106 to i64
  %min.iters.check = icmp ult i32 %1106, 8
  %1111 = sub i64 %1110, %1108
  %diff.check = icmp ult i64 %1111, 32
  %or.cond1106 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond1106, label %.lr.ph796.preheader1107, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph796.preheader
  %n.vec = and i64 %wide.trip.count951, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %1112 = getelementptr inbounds %struct._Fact, ptr %1101, i64 %indvars.iv953, i32 1, i64 %index
  %1113 = getelementptr inbounds i8, ptr %1112, i64 16
  %wide.load = load <4 x i32>, ptr %1112, align 4, !tbaa !19
  %wide.load1058 = load <4 x i32>, ptr %1113, align 4, !tbaa !19
  %1114 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %index
  %1115 = getelementptr inbounds i8, ptr %1114, i64 16
  store <4 x i32> %wide.load, ptr %1114, align 16, !tbaa !19
  store <4 x i32> %wide.load1058, ptr %1115, align 16, !tbaa !19
  %index.next = add nuw i64 %index, 8
  %1116 = icmp eq i64 %index.next, %n.vec
  br i1 %1116, label %middle.block, label %vector.body, !llvm.loop !125

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count951
  br i1 %cmp.n, label %._crit_edge797, label %.lr.ph796.preheader1107

.lr.ph796.preheader1107:                          ; preds = %middle.block, %.lr.ph796.preheader
  %indvars.iv947.ph = phi i64 [ 0, %.lr.ph796.preheader ], [ %n.vec, %middle.block ]
  %xtraiter1178 = and i64 %wide.trip.count951, 3
  %lcmp.mod1179.not = icmp eq i64 %xtraiter1178, 0
  br i1 %lcmp.mod1179.not, label %.lr.ph796.prol.loopexit, label %.lr.ph796.prol

.lr.ph796.prol:                                   ; preds = %.lr.ph796.preheader1107, %.lr.ph796.prol
  %indvars.iv947.prol = phi i64 [ %indvars.iv.next948.prol, %.lr.ph796.prol ], [ %indvars.iv947.ph, %.lr.ph796.preheader1107 ]
  %prol.iter1180 = phi i64 [ %prol.iter1180.next, %.lr.ph796.prol ], [ 0, %.lr.ph796.preheader1107 ]
  %1117 = getelementptr inbounds %struct._Fact, ptr %1101, i64 %indvars.iv953, i32 1, i64 %indvars.iv947.prol
  %1118 = load i32, ptr %1117, align 4, !tbaa !19
  %1119 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv947.prol
  store i32 %1118, ptr %1119, align 4, !tbaa !19
  %indvars.iv.next948.prol = add nuw nsw i64 %indvars.iv947.prol, 1
  %prol.iter1180.next = add i64 %prol.iter1180, 1
  %prol.iter1180.cmp.not = icmp eq i64 %prol.iter1180.next, %xtraiter1178
  br i1 %prol.iter1180.cmp.not, label %.lr.ph796.prol.loopexit, label %.lr.ph796.prol, !llvm.loop !126

.lr.ph796.prol.loopexit:                          ; preds = %.lr.ph796.prol, %.lr.ph796.preheader1107
  %indvars.iv947.unr = phi i64 [ %indvars.iv947.ph, %.lr.ph796.preheader1107 ], [ %indvars.iv.next948.prol, %.lr.ph796.prol ]
  %1120 = sub nsw i64 %indvars.iv947.ph, %wide.trip.count951
  %1121 = icmp ugt i64 %1120, -4
  br i1 %1121, label %._crit_edge797, label %.lr.ph796

.lr.ph796:                                        ; preds = %.lr.ph796.prol.loopexit, %.lr.ph796
  %indvars.iv947 = phi i64 [ %indvars.iv.next948.3, %.lr.ph796 ], [ %indvars.iv947.unr, %.lr.ph796.prol.loopexit ]
  %1122 = getelementptr inbounds %struct._Fact, ptr %1101, i64 %indvars.iv953, i32 1, i64 %indvars.iv947
  %1123 = load i32, ptr %1122, align 4, !tbaa !19
  %1124 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv947
  store i32 %1123, ptr %1124, align 4, !tbaa !19
  %indvars.iv.next948 = add nuw nsw i64 %indvars.iv947, 1
  %1125 = getelementptr inbounds %struct._Fact, ptr %1101, i64 %indvars.iv953, i32 1, i64 %indvars.iv.next948
  %1126 = load i32, ptr %1125, align 4, !tbaa !19
  %1127 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next948
  store i32 %1126, ptr %1127, align 4, !tbaa !19
  %indvars.iv.next948.1 = add nuw nsw i64 %indvars.iv947, 2
  %1128 = getelementptr inbounds %struct._Fact, ptr %1101, i64 %indvars.iv953, i32 1, i64 %indvars.iv.next948.1
  %1129 = load i32, ptr %1128, align 4, !tbaa !19
  %1130 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next948.1
  store i32 %1129, ptr %1130, align 4, !tbaa !19
  %indvars.iv.next948.2 = add nuw nsw i64 %indvars.iv947, 3
  %1131 = getelementptr inbounds %struct._Fact, ptr %1101, i64 %indvars.iv953, i32 1, i64 %indvars.iv.next948.2
  %1132 = load i32, ptr %1131, align 4, !tbaa !19
  %1133 = getelementptr inbounds [15 x i32], ptr @largs, i64 0, i64 %indvars.iv.next948.2
  store i32 %1132, ptr %1133, align 4, !tbaa !19
  %indvars.iv.next948.3 = add nuw nsw i64 %indvars.iv947, 4
  %exitcond952.not.3 = icmp eq i64 %indvars.iv.next948.3, %wide.trip.count951
  br i1 %exitcond952.not.3, label %._crit_edge797, label %.lr.ph796, !llvm.loop !127

._crit_edge797:                                   ; preds = %.lr.ph796.prol.loopexit, %.lr.ph796, %middle.block, %1100
  %1134 = tail call i32 @fact_adress()
  %1135 = load i32, ptr @lp, align 4, !tbaa !19
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds [50 x ptr], ptr @lpos, i64 0, i64 %1136
  %1138 = load ptr, ptr %1137, align 8, !tbaa !5
  %1139 = sext i32 %1134 to i64
  %1140 = getelementptr inbounds i32, ptr %1138, i64 %1139
  %1141 = load i32, ptr %1140, align 4, !tbaa !19
  %.not627 = icmp eq i32 %1141, 0
  br i1 %.not627, label %1152, label %1142

1142:                                             ; preds = %._crit_edge797
  %1143 = getelementptr inbounds [50 x ptr], ptr @lindex, i64 0, i64 %1136
  %1144 = load ptr, ptr %1143, align 8, !tbaa !5
  %1145 = getelementptr inbounds i32, ptr %1144, i64 %1139
  %1146 = load i32, ptr %1145, align 4, !tbaa !19
  %1147 = load ptr, ptr %1099, align 8, !tbaa !70
  %1148 = load i32, ptr %1097, align 8, !tbaa !69
  %1149 = add nsw i32 %1148, 1
  store i32 %1149, ptr %1097, align 8, !tbaa !69
  %1150 = sext i32 %1148 to i64
  %1151 = getelementptr inbounds i32, ptr %1147, i64 %1150
  store i32 %1146, ptr %1151, align 4, !tbaa !19
  br label %1152

1152:                                             ; preds = %._crit_edge797, %1142
  %indvars.iv.next954 = add nuw nsw i64 %indvars.iv953, 1
  %1153 = load i32, ptr %1089, align 8, !tbaa !123
  %1154 = sext i32 %1153 to i64
  %1155 = icmp slt i64 %indvars.iv.next954, %1154
  br i1 %1155, label %1100, label %._crit_edge801, !llvm.loop !128

._crit_edge801:                                   ; preds = %1152, %1092
  %1156 = getelementptr inbounds i8, ptr %.0568815, i64 104
  %1157 = load i32, ptr %1156, align 8, !tbaa !129
  %1158 = icmp sgt i32 %1157, 0
  br i1 %1158, label %.lr.ph808, label %._crit_edge809

.lr.ph808:                                        ; preds = %._crit_edge801
  %1159 = zext nneg i32 %1157 to i64
  %1160 = tail call noalias ptr @calloc(i64 noundef %1159, i64 noundef 4) #6
  %1161 = getelementptr inbounds i8, ptr %873, i64 80
  store ptr %1160, ptr %1161, align 8, !tbaa !75
  %1162 = tail call noalias ptr @calloc(i64 noundef %1159, i64 noundef 4) #6
  %1163 = getelementptr inbounds i8, ptr %873, i64 88
  store ptr %1162, ptr %1163, align 8, !tbaa !76
  %1164 = tail call noalias ptr @calloc(i64 noundef %1159, i64 noundef 8) #6
  %1165 = getelementptr inbounds i8, ptr %873, i64 96
  store ptr %1164, ptr %1165, align 8, !tbaa !77
  %1166 = getelementptr inbounds i8, ptr %873, i64 104
  store i32 0, ptr %1166, align 8, !tbaa !78
  %1167 = getelementptr inbounds i8, ptr %.0568815, i64 80
  %1168 = getelementptr inbounds i8, ptr %873, i64 80
  %1169 = getelementptr inbounds i8, ptr %873, i64 104
  %1170 = getelementptr inbounds i8, ptr %.0568815, i64 88
  %1171 = getelementptr inbounds i8, ptr %873, i64 88
  %1172 = getelementptr inbounds i8, ptr %873, i64 172
  %1173 = getelementptr inbounds i8, ptr %.0568815, i64 96
  %1174 = getelementptr inbounds i8, ptr %873, i64 96
  %1175 = getelementptr inbounds i8, ptr %873, i64 72
  %.pre979 = load i32, ptr %1169, align 8, !tbaa !78
  br label %1176

1176:                                             ; preds = %.lr.ph808, %1235
  %1177 = phi i32 [ %.pre979, %.lr.ph808 ], [ %1237, %1235 ]
  %indvars.iv963 = phi i64 [ 0, %.lr.ph808 ], [ %indvars.iv.next964, %1235 ]
  %1178 = load ptr, ptr %1167, align 8, !tbaa !130
  %1179 = getelementptr inbounds i32, ptr %1178, i64 %indvars.iv963
  %1180 = load i32, ptr %1179, align 4, !tbaa !19
  %1181 = load ptr, ptr %1168, align 8, !tbaa !75
  %1182 = sext i32 %1177 to i64
  %1183 = getelementptr inbounds i32, ptr %1181, i64 %1182
  store i32 %1180, ptr %1183, align 4, !tbaa !19
  %1184 = load ptr, ptr %1170, align 8, !tbaa !131
  %1185 = getelementptr inbounds %struct._Fluent, ptr %1184, i64 %indvars.iv963
  %1186 = load i32, ptr %1185, align 4, !tbaa !81
  store i32 %1186, ptr @lf, align 4, !tbaa !19
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds [50 x i32], ptr @gf_arity, i64 0, i64 %1187
  %1189 = load i32, ptr %1188, align 4, !tbaa !19
  %1190 = icmp sgt i32 %1189, 0
  br i1 %1190, label %.lr.ph804.preheader, label %._crit_edge805

.lr.ph804.preheader:                              ; preds = %1176
  %wide.trip.count961 = zext nneg i32 %1189 to i64
  br label %.lr.ph804

1191:                                             ; preds = %.lr.ph804
  %indvars.iv.next958 = add nuw nsw i64 %indvars.iv957, 1
  %exitcond962.not = icmp eq i64 %indvars.iv.next958, %wide.trip.count961
  br i1 %exitcond962.not, label %._crit_edge805, label %.lr.ph804, !llvm.loop !132

.lr.ph804:                                        ; preds = %.lr.ph804.preheader, %1191
  %indvars.iv957 = phi i64 [ 0, %.lr.ph804.preheader ], [ %indvars.iv.next958, %1191 ]
  %1192 = getelementptr inbounds %struct._Fluent, ptr %1184, i64 %indvars.iv963, i32 1, i64 %indvars.iv957
  %1193 = load i32, ptr %1192, align 4, !tbaa !19
  %1194 = getelementptr inbounds [15 x i32], ptr @lf_args, i64 0, i64 %indvars.iv957
  store i32 %1193, ptr %1194, align 4, !tbaa !19
  %1195 = icmp slt i32 %1193, 0
  br i1 %1195, label %1196, label %1191

1196:                                             ; preds = %.lr.ph804
  %1197 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.41)
  tail call void @exit(i32 noundef 1) #8
  unreachable

._crit_edge805:                                   ; preds = %1191, %1176
  %1198 = tail call i32 @fluent_adress()
  %1199 = load i32, ptr @lf, align 4, !tbaa !19
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %1200
  %1202 = load ptr, ptr %1201, align 8, !tbaa !5
  %1203 = sext i32 %1198 to i64
  %1204 = getelementptr inbounds i32, ptr %1202, i64 %1203
  %1205 = load i32, ptr %1204, align 4, !tbaa !19
  %1206 = load ptr, ptr %1171, align 8, !tbaa !76
  %1207 = getelementptr inbounds i32, ptr %1206, i64 %indvars.iv963
  store i32 %1205, ptr %1207, align 4, !tbaa !19
  %1208 = load i32, ptr @lf, align 4, !tbaa !19
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds [50 x ptr], ptr @lf_index, i64 0, i64 %1209
  %1211 = load ptr, ptr %1210, align 8, !tbaa !5
  %1212 = getelementptr inbounds i32, ptr %1211, i64 %1203
  %1213 = load i32, ptr %1212, align 4, !tbaa !19
  %1214 = icmp eq i32 %1213, -1
  br i1 %1214, label %1215, label %1216

1215:                                             ; preds = %._crit_edge805
  store i8 1, ptr %1172, align 4, !tbaa !40
  br label %1216

1216:                                             ; preds = %1215, %._crit_edge805
  %1217 = load ptr, ptr %1173, align 8, !tbaa !133
  %1218 = getelementptr inbounds ptr, ptr %1217, i64 %indvars.iv963
  %1219 = load ptr, ptr %1218, align 8, !tbaa !5
  %1220 = tail call ptr @copy_Exp(ptr noundef %1219) #7
  %1221 = load ptr, ptr %1174, align 8, !tbaa !77
  %1222 = load i32, ptr %1169, align 8, !tbaa !78
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds ptr, ptr %1221, i64 %1223
  store ptr %1220, ptr %1224, align 8, !tbaa !5
  %1225 = load ptr, ptr %1174, align 8, !tbaa !77
  %1226 = getelementptr inbounds ptr, ptr %1225, i64 %1223
  %1227 = tail call zeroext i8 @set_relevants_in_exp(ptr noundef %1226)
  %.not625 = icmp eq i8 %1227, 0
  br i1 %.not625, label %.thread1006, label %1228

.thread1006:                                      ; preds = %1216
  store i8 1, ptr %1172, align 4, !tbaa !40
  br label %1229

1228:                                             ; preds = %1216
  %.pre981 = load i8, ptr %1172, align 4, !tbaa !40
  %.not626 = icmp eq i8 %.pre981, 0
  br i1 %.not626, label %1235, label %1229

1229:                                             ; preds = %.thread1006, %1228
  %1230 = load i32, ptr %942, align 8, !tbaa !46
  %1231 = icmp eq i32 %1230, 0
  br i1 %1231, label %1232, label %1235

1232:                                             ; preds = %1229
  %1233 = load i32, ptr %1175, align 8, !tbaa !56
  %1234 = icmp eq i32 %1233, 0
  br i1 %1234, label %.._crit_edge809.loopexit_crit_edge, label %1235

.._crit_edge809.loopexit_crit_edge:               ; preds = %1232
  %.pre982.pre = load i32, ptr %1156, align 8, !tbaa !129
  br label %._crit_edge809.loopexit

1235:                                             ; preds = %1232, %1229, %1228
  %1236 = load i32, ptr %1169, align 8, !tbaa !78
  %1237 = add nsw i32 %1236, 1
  store i32 %1237, ptr %1169, align 8, !tbaa !78
  %indvars.iv.next964 = add nuw nsw i64 %indvars.iv963, 1
  %1238 = load i32, ptr %1156, align 8, !tbaa !129
  %1239 = sext i32 %1238 to i64
  %1240 = icmp slt i64 %indvars.iv.next964, %1239
  br i1 %1240, label %1176, label %._crit_edge809.loopexit, !llvm.loop !134

._crit_edge809.loopexit:                          ; preds = %1235, %.._crit_edge809.loopexit_crit_edge
  %.pre982 = phi i32 [ %.pre982.pre, %.._crit_edge809.loopexit_crit_edge ], [ %1238, %1235 ]
  %.18.lcssa.ph.in = phi i64 [ %indvars.iv963, %.._crit_edge809.loopexit_crit_edge ], [ %indvars.iv.next964, %1235 ]
  %.18.lcssa.ph = trunc i64 %.18.lcssa.ph.in to i32
  br label %._crit_edge809

._crit_edge809:                                   ; preds = %._crit_edge801, %._crit_edge809.loopexit
  %1241 = phi i32 [ %.pre982, %._crit_edge809.loopexit ], [ %1157, %._crit_edge801 ]
  %.18.lcssa = phi i32 [ %.18.lcssa.ph, %._crit_edge809.loopexit ], [ 0, %._crit_edge801 ]
  %1242 = icmp slt i32 %.18.lcssa, %1241
  br i1 %1242, label %1250, label %1243

1243:                                             ; preds = %._crit_edge809
  %1244 = load i32, ptr %852, align 8, !tbaa !38
  %1245 = add nsw i32 %1244, 1
  store i32 %1245, ptr %852, align 8, !tbaa !38
  %1246 = load i32, ptr @lnum_effects, align 4, !tbaa !19
  %1247 = add nsw i32 %1246, 1
  store i32 %1247, ptr @lnum_effects, align 4, !tbaa !19
  br label %1248

1248:                                             ; preds = %1243, %945
  %1249 = getelementptr inbounds i8, ptr %.0568815, i64 112
  %.0568 = load ptr, ptr %1249, align 8, !tbaa !5
  %.not621 = icmp eq ptr %.0568, null
  br i1 %.not621, label %.critedge652, label %869, !llvm.loop !135

1250:                                             ; preds = %._crit_edge780, %._crit_edge809
  %1251 = load i32, ptr @gnum_actions, align 4, !tbaa !19
  %1252 = add nsw i32 %1251, -1
  store i32 %1252, ptr @gnum_actions, align 4, !tbaa !19
  %1253 = getelementptr inbounds i8, ptr %.0569696, i64 256
  %1254 = load ptr, ptr %1253, align 8, !tbaa !36
  br i1 %.not649, label %1257, label %1255

1255:                                             ; preds = %1250
  store ptr %1254, ptr %2, align 8, !tbaa !36
  %1256 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  store ptr %1256, ptr %1253, align 8, !tbaa !36
  store ptr %.0569696, ptr @gtrash_actions, align 8, !tbaa !5
  br label %.outer.backedge

1257:                                             ; preds = %1250
  store ptr %1254, ptr @gactions, align 8, !tbaa !5
  %1258 = load ptr, ptr @gtrash_actions, align 8, !tbaa !5
  store ptr %1258, ptr %1253, align 8, !tbaa !36
  store ptr %.0569696, ptr @gtrash_actions, align 8, !tbaa !5
  br label %.outer.backedge

.critedge652:                                     ; preds = %1248, %.loopexit
  %1259 = getelementptr inbounds i8, ptr %.0569696, i64 256
  %1260 = load ptr, ptr %1259, align 8, !tbaa !36
  br label %.outer.backedge

1261:                                             ; preds = %716
  %1262 = getelementptr inbounds i8, ptr %.0569696, i64 256
  %1263 = load ptr, ptr %1262, align 8, !tbaa !36
  br label %.outer.backedge

.outer._crit_edge:                                ; preds = %.outer.backedge, %.backedge, %0
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local zeroext i8 @set_relevants_in_exp(ptr noundef) local_unnamed_addr #1

declare void @free_ExpNode(ptr noundef) local_unnamed_addr #5

declare ptr @copy_Exp(ptr noundef) local_unnamed_addr #5

; Function Attrs: nounwind uwtable
declare dso_local void @instantiate_exp_by_action(ptr noundef, ptr noundef) local_unnamed_addr #1

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

attributes #0 = { 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 #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, 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 #5 = { "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 #6 = { nounwind allocsize(0,1) }
attributes #7 = { nounwind }
attributes #8 = { 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 0}
!10 = !{!"_Action", !6, i64 0, !6, i64 8, !7, i64 16, !6, i64 24, !11, i64 32, !7, i64 36, !7, i64 96, !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, !11, i64 248, !6, i64 256}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !11, i64 264}
!13 = !{!"_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}
!14 = !{!10, !11, i64 168}
!15 = !{!10, !6, i64 160}
!16 = !{!13, !6, i64 256}
!17 = !{!18, !11, i64 0}
!18 = !{!"_Fact", !11, i64 0, !7, i64 4}
!19 = !{!11, !11, i64 0}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.mustprogress"}
!22 = distinct !{!22, !21}
!23 = !{!13, !11, i64 296}
!24 = !{!10, !6, i64 176}
!25 = !{!10, !6, i64 184}
!26 = !{!10, !6, i64 192}
!27 = !{!10, !11, i64 200}
!28 = !{!13, !6, i64 272}
!29 = !{!13, !6, i64 280}
!30 = !{!13, !6, i64 288}
!31 = !{!32, !11, i64 0}
!32 = !{!"_ExpNode", !11, i64 0, !6, i64 8, !11, i64 16, !33, i64 20, !33, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!33 = !{!"float", !7, i64 0}
!34 = !{!32, !33, i64 24}
!35 = distinct !{!35, !21}
!36 = !{!10, !6, i64 256}
!37 = distinct !{!37, !21}
!38 = !{!10, !11, i64 248}
!39 = !{!10, !6, i64 240}
!40 = !{!41, !7, i64 172}
!41 = !{!"_ActionEffect", !6, i64 0, !11, i64 8, !6, i64 16, !11, i64 24, !6, i64 32, !11, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !11, i64 104, !6, i64 112, !6, i64 120, !6, i64 128, !11, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !11, i64 168, !7, i64 172, !7, i64 173, !33, i64 176}
!42 = !{!41, !7, i64 173}
!43 = distinct !{!43, !21}
!44 = !{!45, !11, i64 136}
!45 = !{!"_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}
!46 = !{!41, !11, i64 8}
!47 = !{!41, !6, i64 0}
!48 = !{!45, !6, i64 128}
!49 = distinct !{!49, !21}
!50 = distinct !{!50, !21}
!51 = !{!45, !11, i64 200}
!52 = !{!41, !6, i64 48}
!53 = !{!41, !6, i64 56}
!54 = !{!41, !6, i64 64}
!55 = distinct !{!55, !21}
!56 = !{!41, !11, i64 72}
!57 = !{!45, !6, i64 176}
!58 = !{!45, !6, i64 184}
!59 = !{!45, !6, i64 192}
!60 = distinct !{!60, !21}
!61 = distinct !{!61, !21}
!62 = !{!45, !11, i64 152}
!63 = !{!41, !11, i64 24}
!64 = !{!41, !6, i64 16}
!65 = !{!45, !6, i64 144}
!66 = distinct !{!66, !21}
!67 = distinct !{!67, !21}
!68 = !{!45, !11, i64 168}
!69 = !{!41, !11, i64 40}
!70 = !{!41, !6, i64 32}
!71 = !{!45, !6, i64 160}
!72 = distinct !{!72, !21}
!73 = distinct !{!73, !21}
!74 = !{!45, !11, i64 232}
!75 = !{!41, !6, i64 80}
!76 = !{!41, !6, i64 88}
!77 = !{!41, !6, i64 96}
!78 = !{!41, !11, i64 104}
!79 = !{!45, !6, i64 208}
!80 = !{!45, !6, i64 216}
!81 = !{!82, !11, i64 0}
!82 = !{!"_Fluent", !11, i64 0, !7, i64 4}
!83 = distinct !{!83, !21}
!84 = !{!45, !6, i64 224}
!85 = distinct !{!85, !21}
!86 = distinct !{!86, !21}
!87 = !{!10, !6, i64 8}
!88 = !{!89, !11, i64 80}
!89 = !{!"_PseudoAction", !6, i64 0, !7, i64 8, !6, i64 72, !11, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !11, i64 112, !6, i64 120, !11, i64 128}
!90 = !{!89, !6, i64 72}
!91 = distinct !{!91, !21, !92, !93}
!92 = !{!"llvm.loop.isvectorized", i32 1}
!93 = !{!"llvm.loop.unroll.runtime.disable"}
!94 = distinct !{!94, !95}
!95 = !{!"llvm.loop.unroll.disable"}
!96 = distinct !{!96, !21, !92}
!97 = distinct !{!97, !21}
!98 = !{!89, !11, i64 112}
!99 = !{!89, !6, i64 88}
!100 = !{!89, !6, i64 96}
!101 = !{!89, !6, i64 104}
!102 = distinct !{!102, !21}
!103 = distinct !{!103, !21}
!104 = !{!105, !11, i64 8}
!105 = !{!"_PseudoActionEffect", !6, i64 0, !11, i64 8, !6, i64 16, !11, i64 24, !6, i64 32, !11, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !11, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !11, i64 104, !6, i64 112}
!106 = !{!105, !6, i64 0}
!107 = distinct !{!107, !21, !92, !93}
!108 = distinct !{!108, !95}
!109 = distinct !{!109, !21, !92}
!110 = distinct !{!110, !21}
!111 = !{!105, !11, i64 72}
!112 = distinct !{!112, !21}
!113 = !{!105, !6, i64 48}
!114 = !{!105, !6, i64 56}
!115 = !{!105, !6, i64 64}
!116 = distinct !{!116, !21}
!117 = !{!105, !11, i64 24}
!118 = !{!105, !6, i64 16}
!119 = distinct !{!119, !21, !92, !93}
!120 = distinct !{!120, !95}
!121 = distinct !{!121, !21, !92}
!122 = distinct !{!122, !21}
!123 = !{!105, !11, i64 40}
!124 = !{!105, !6, i64 32}
!125 = distinct !{!125, !21, !92, !93}
!126 = distinct !{!126, !95}
!127 = distinct !{!127, !21, !92}
!128 = distinct !{!128, !21}
!129 = !{!105, !11, i64 104}
!130 = !{!105, !6, i64 80}
!131 = !{!105, !6, i64 88}
!132 = distinct !{!132, !21}
!133 = !{!105, !6, i64 96}
!134 = distinct !{!134, !21}
!135 = distinct !{!135, !21}


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