; LLVM IR from alexzheng42/sDMD :: analysis (SystemInformation)

; 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.CGGovStr = type { [2 x [16 x i8]], i32, i32 }
%struct.FileListStr = type { i32, [128 x [64 x i8]] }
%struct.SectionStr = type { i64, double, double, double, double, [20 x i8], %struct.WallStr, %struct.DynamicWallStr, %struct.ObstructionStr, %struct.TunnelStr, %struct.FlowStr }
%struct.WallStr = type { [20 x i8], [20 x i8], %struct.AtomStr }
%struct.AtomStr = type { ptr, ptr }
%struct.DynamicWallStr = type { [16 x i8], i32, i32, double, double, double, double, [4 x double] }
%struct.ObstructionStr = type { i32, i32, ptr, ptr, ptr }
%struct.TunnelStr = type { i32, double, double, double, %struct.AtomStr }
%struct.FlowStr = type { i32, %struct.ConstVStr, %struct.ForceStr, %struct.ChargeStr }
%struct.ConstVStr = type { [4 x double] }
%struct.ForceStr = type { [4 x double], ptr, ptr }
%struct.ChargeStr = type { i32, i32, ptr, ptr, ptr, ptr }
%struct.DynamicStr = type { [4 x i32], [4 x double], [4 x double], %struct.HBStr, %struct.HBNeighborStr, %struct.InteractionEventStr }
%struct.HBStr = type { i32, i32, i8, i32 }
%struct.HBNeighborStr = type { [5 x i32], i32, i32 }
%struct.InteractionEventStr = type { i32, i64, i64, double, double, i32, i32 }

@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@path = external global [1024 x i8], align 16
@.str.3 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@numofprotein = external global i32, align 4
@fileList = external global ptr, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@sectInfo = external global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@cutoffr = external global double, align 8
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [10 x i8], align 1
@CG = external global %struct.CGGovStr, align 4
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@boxOrigDim = external global [4 x double], align 16
@.str.16 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1

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

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

; Function Attrs: nounwind
declare i32 @sprintf(ptr noundef, ptr noundef, ...) #2

declare noalias ptr @fopen(ptr noundef, ptr noundef) #1

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

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

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

declare i32 @fclose(ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @ReadLog(i32 noundef %0) #5 {
  %2 = alloca i32, align 4
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca [4 x i8], align 1
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca [1024 x i8], align 16
  %12 = alloca [1024 x i8], align 16
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  store i32 %0, ptr %2, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #8
  store i32 51200, ptr %3, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #8
  %19 = load i32, ptr %3, align 4, !tbaa !5
  %20 = sext i32 %19 to i64
  %21 = call noalias ptr @calloc(i64 noundef %20, i64 noundef 1) #9
  store ptr %21, ptr %4, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  store i32 0, ptr %7, align 4, !tbaa !5
  br label %22

22:                                               ; preds = %853, %1
  %23 = load i32, ptr %7, align 4, !tbaa !5
  %24 = load ptr, ptr @fileList, align 8, !tbaa !9
  %25 = load i32, ptr %2, align 4, !tbaa !5
  %26 = sext i32 %25 to i64
  %27 = getelementptr inbounds %struct.FileListStr, ptr %24, i64 %26
  %28 = getelementptr inbounds %struct.FileListStr, ptr %27, i32 0, i32 0
  %29 = load i32, ptr %28, align 4, !tbaa !11
  %30 = icmp slt i32 %23, %29
  br i1 %30, label %32, label %31

31:                                               ; preds = %22
  store i32 2, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  br label %856

32:                                               ; preds = %22
  %33 = load ptr, ptr %4, align 8, !tbaa !9
  %34 = load ptr, ptr @fileList, align 8, !tbaa !9
  %35 = load i32, ptr %2, align 4, !tbaa !5
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds %struct.FileListStr, ptr %34, i64 %36
  %38 = getelementptr inbounds %struct.FileListStr, ptr %37, i32 0, i32 1
  %39 = load i32, ptr %7, align 4, !tbaa !5
  %40 = add nsw i32 %39, 1
  %41 = sext i32 %40 to i64
  %42 = getelementptr inbounds [128 x [64 x i8]], ptr %38, i64 0, i64 %41
  %43 = getelementptr inbounds [64 x i8], ptr %42, i64 0, i64 0
  %44 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef %33, ptr noundef @.str.1, ptr noundef @path, ptr noundef %43) #8
  %45 = load ptr, ptr %4, align 8, !tbaa !9
  %46 = call noalias ptr @fopen(ptr noundef %45, ptr noundef @.str.7)
  store ptr %46, ptr %6, align 8, !tbaa !9
  %47 = load ptr, ptr %6, align 8, !tbaa !9
  %48 = icmp eq ptr %47, null
  br i1 %48, label %49, label %61

49:                                               ; preds = %32
  %50 = load ptr, ptr @fileList, align 8, !tbaa !9
  %51 = load i32, ptr %2, align 4, !tbaa !5
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds %struct.FileListStr, ptr %50, i64 %52
  %54 = getelementptr inbounds %struct.FileListStr, ptr %53, i32 0, i32 1
  %55 = load i32, ptr %7, align 4, !tbaa !5
  %56 = add nsw i32 %55, 1
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds [128 x [64 x i8]], ptr %54, i64 0, i64 %57
  %59 = getelementptr inbounds [64 x i8], ptr %58, i64 0, i64 0
  %60 = call i32 (ptr, ...) @printf(ptr noundef @.str.3, ptr noundef %59, ptr noundef @path, ptr noundef @.str.4, i32 noundef 166)
  call void @exit(i32 noundef 1) #10
  unreachable

61:                                               ; preds = %32
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %62 = load ptr, ptr @sectInfo, align 8, !tbaa !9
  %63 = load i32, ptr %7, align 4, !tbaa !5
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds %struct.SectionStr, ptr %62, i64 %64
  store ptr %65, ptr %9, align 8, !tbaa !9
  br label %66

66:                                               ; preds = %744, %61
  %67 = load ptr, ptr %4, align 8, !tbaa !9
  %68 = load i32, ptr %3, align 4, !tbaa !5
  %69 = load ptr, ptr %6, align 8, !tbaa !9
  %70 = call ptr @fgets(ptr noundef %67, i32 noundef %68, ptr noundef %69)
  %71 = icmp ne ptr %70, null
  br i1 %71, label %72, label %745

72:                                               ; preds = %66
  %73 = load ptr, ptr %4, align 8, !tbaa !9
  %74 = getelementptr inbounds i8, ptr %73, i64 0
  %75 = load i8, ptr %74, align 1, !tbaa !13
  %76 = sext i8 %75 to i32
  %77 = icmp eq i32 %76, 35
  br i1 %77, label %78, label %744

78:                                               ; preds = %72
  %79 = load ptr, ptr %4, align 8, !tbaa !9
  %80 = load i32, ptr %3, align 4, !tbaa !5
  %81 = load ptr, ptr %6, align 8, !tbaa !9
  %82 = call ptr @fgets(ptr noundef %79, i32 noundef %80, ptr noundef %81)
  %83 = load ptr, ptr %4, align 8, !tbaa !9
  %84 = load i32, ptr %3, align 4, !tbaa !5
  %85 = load ptr, ptr %6, align 8, !tbaa !9
  %86 = call ptr @fgets(ptr noundef %83, i32 noundef %84, ptr noundef %85)
  %87 = load ptr, ptr %4, align 8, !tbaa !9
  %88 = load i32, ptr %3, align 4, !tbaa !5
  %89 = load ptr, ptr %6, align 8, !tbaa !9
  %90 = call ptr @fgets(ptr noundef %87, i32 noundef %88, ptr noundef %89)
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  store i32 0, ptr %10, align 4, !tbaa !5
  br label %91

91:                                               ; preds = %101, %78
  %92 = load i32, ptr %10, align 4, !tbaa !5
  %93 = load i32, ptr @numofprotein, align 4, !tbaa !5
  %94 = icmp slt i32 %92, %93
  br i1 %94, label %96, label %95

95:                                               ; preds = %91
  store i32 7, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %104

96:                                               ; preds = %91
  %97 = load ptr, ptr %4, align 8, !tbaa !9
  %98 = load i32, ptr %3, align 4, !tbaa !5
  %99 = load ptr, ptr %6, align 8, !tbaa !9
  %100 = call ptr @fgets(ptr noundef %97, i32 noundef %98, ptr noundef %99)
  br label %101

101:                                              ; preds = %96
  %102 = load i32, ptr %10, align 4, !tbaa !5
  %103 = add nsw i32 %102, 1
  store i32 %103, ptr %10, align 4, !tbaa !5
  br label %91, !llvm.loop !14

104:                                              ; preds = %95
  %105 = load ptr, ptr %6, align 8, !tbaa !9
  %106 = load ptr, ptr %4, align 8, !tbaa !9
  %107 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %108 = load ptr, ptr %9, align 8, !tbaa !9
  %109 = getelementptr inbounds %struct.SectionStr, ptr %108, i32 0, i32 1
  %110 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %105, ptr noundef @.str.8, ptr noundef %106, ptr noundef %107, ptr noundef %109)
  %111 = load ptr, ptr %6, align 8, !tbaa !9
  %112 = load ptr, ptr %4, align 8, !tbaa !9
  %113 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %114 = load ptr, ptr %9, align 8, !tbaa !9
  %115 = getelementptr inbounds %struct.SectionStr, ptr %114, i32 0, i32 2
  %116 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %111, ptr noundef @.str.8, ptr noundef %112, ptr noundef %113, ptr noundef %115)
  %117 = load ptr, ptr %6, align 8, !tbaa !9
  %118 = load ptr, ptr %4, align 8, !tbaa !9
  %119 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %120 = load ptr, ptr %9, align 8, !tbaa !9
  %121 = getelementptr inbounds %struct.SectionStr, ptr %120, i32 0, i32 3
  %122 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %117, ptr noundef @.str.8, ptr noundef %118, ptr noundef %119, ptr noundef %121)
  %123 = load ptr, ptr %6, align 8, !tbaa !9
  %124 = load ptr, ptr %4, align 8, !tbaa !9
  %125 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %126 = load ptr, ptr %9, align 8, !tbaa !9
  %127 = getelementptr inbounds %struct.SectionStr, ptr %126, i32 0, i32 4
  %128 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %123, ptr noundef @.str.8, ptr noundef %124, ptr noundef %125, ptr noundef %127)
  %129 = load i32, ptr %7, align 4, !tbaa !5
  %130 = icmp eq i32 %129, 0
  br i1 %130, label %131, label %136

131:                                              ; preds = %104
  %132 = load ptr, ptr %6, align 8, !tbaa !9
  %133 = load ptr, ptr %4, align 8, !tbaa !9
  %134 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %135 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %132, ptr noundef @.str.8, ptr noundef %133, ptr noundef %134, ptr noundef @cutoffr)
  br label %141

136:                                              ; preds = %104
  %137 = load ptr, ptr %4, align 8, !tbaa !9
  %138 = load i32, ptr %3, align 4, !tbaa !5
  %139 = load ptr, ptr %6, align 8, !tbaa !9
  %140 = call ptr @fgets(ptr noundef %137, i32 noundef %138, ptr noundef %139)
  br label %141

141:                                              ; preds = %136, %131
  %142 = load ptr, ptr %6, align 8, !tbaa !9
  %143 = load ptr, ptr %4, align 8, !tbaa !9
  %144 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %145 = load ptr, ptr %9, align 8, !tbaa !9
  %146 = getelementptr inbounds %struct.SectionStr, ptr %145, i32 0, i32 5
  %147 = getelementptr inbounds [20 x i8], ptr %146, i64 0, i64 0
  %148 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %142, ptr noundef @.str.9, ptr noundef %143, ptr noundef %144, ptr noundef %147)
  %149 = load ptr, ptr %4, align 8, !tbaa !9
  %150 = load i32, ptr %3, align 4, !tbaa !5
  %151 = load ptr, ptr %6, align 8, !tbaa !9
  %152 = call ptr @fgets(ptr noundef %149, i32 noundef %150, ptr noundef %151)
  %153 = load ptr, ptr %4, align 8, !tbaa !9
  %154 = load i32, ptr %3, align 4, !tbaa !5
  %155 = load ptr, ptr %6, align 8, !tbaa !9
  %156 = call ptr @fgets(ptr noundef %153, i32 noundef %154, ptr noundef %155)
  %157 = load ptr, ptr %4, align 8, !tbaa !9
  %158 = load i32, ptr %3, align 4, !tbaa !5
  %159 = load ptr, ptr %6, align 8, !tbaa !9
  %160 = call ptr @fgets(ptr noundef %157, i32 noundef %158, ptr noundef %159)
  %161 = load ptr, ptr %4, align 8, !tbaa !9
  %162 = call i32 @strncmp(ptr noundef %161, ptr noundef @.str.10, i64 noundef 9) #11
  %163 = icmp eq i32 %162, 0
  br i1 %163, label %164, label %173

164:                                              ; preds = %141
  %165 = load ptr, ptr %4, align 8, !tbaa !9
  %166 = load i32, ptr %3, align 4, !tbaa !5
  %167 = load ptr, ptr %6, align 8, !tbaa !9
  %168 = call ptr @fgets(ptr noundef %165, i32 noundef %166, ptr noundef %167)
  %169 = load ptr, ptr %4, align 8, !tbaa !9
  %170 = load i32, ptr %3, align 4, !tbaa !5
  %171 = load ptr, ptr %6, align 8, !tbaa !9
  %172 = call ptr @fgets(ptr noundef %169, i32 noundef %170, ptr noundef %171)
  br label %173

173:                                              ; preds = %164, %141
  %174 = load ptr, ptr %4, align 8, !tbaa !9
  %175 = call i32 @strncmp(ptr noundef %174, ptr noundef @.str.11, i64 noundef 7) #11
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %177, label %190

177:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 1024, ptr %11) #8
  call void @llvm.memset.p0.i64(ptr align 16 %11, i8 0, i64 1024, i1 false)
  %178 = load ptr, ptr %4, align 8, !tbaa !9
  %179 = getelementptr inbounds [1024 x i8], ptr %11, i64 0, i64 0
  %180 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %181 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %178, ptr noundef @.str.12, ptr noundef %179, ptr noundef %180, ptr noundef @CG, ptr noundef getelementptr inbounds ([2 x [16 x i8]], ptr @CG, i64 0, i64 1)) #8
  %182 = call i32 @strncmp(ptr noundef @CG, ptr noundef @.str.13, i64 noundef 2) #11
  %183 = icmp ne i32 %182, 0
  br i1 %183, label %184, label %185

184:                                              ; preds = %177
  store i32 1, ptr getelementptr inbounds (%struct.CGGovStr, ptr @CG, i32 0, i32 1), align 4, !tbaa !16
  br label %185

185:                                              ; preds = %184, %177
  %186 = load ptr, ptr %4, align 8, !tbaa !9
  %187 = load i32, ptr %3, align 4, !tbaa !5
  %188 = load ptr, ptr %6, align 8, !tbaa !9
  %189 = call ptr @fgets(ptr noundef %186, i32 noundef %187, ptr noundef %188)
  call void @llvm.lifetime.end.p0(i64 1024, ptr %11) #8
  br label %190

190:                                              ; preds = %185, %173
  call void @llvm.lifetime.start.p0(i64 1024, ptr %12) #8
  call void @llvm.memset.p0.i64(ptr align 16 %12, i8 0, i64 1024, i1 false)
  %191 = load ptr, ptr %4, align 8, !tbaa !9
  %192 = getelementptr inbounds [1024 x i8], ptr %12, i64 0, i64 0
  %193 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %194 = load ptr, ptr %9, align 8, !tbaa !9
  %195 = getelementptr inbounds %struct.SectionStr, ptr %194, i32 0, i32 6
  %196 = getelementptr inbounds %struct.WallStr, ptr %195, i32 0, i32 0
  %197 = getelementptr inbounds [20 x i8], ptr %196, i64 0, i64 0
  %198 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %191, ptr noundef @.str.9, ptr noundef %192, ptr noundef %193, ptr noundef %197) #8
  %199 = load ptr, ptr %6, align 8, !tbaa !9
  %200 = load ptr, ptr %4, align 8, !tbaa !9
  %201 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %202 = load ptr, ptr %9, align 8, !tbaa !9
  %203 = getelementptr inbounds %struct.SectionStr, ptr %202, i32 0, i32 6
  %204 = getelementptr inbounds %struct.WallStr, ptr %203, i32 0, i32 1
  %205 = getelementptr inbounds [20 x i8], ptr %204, i64 0, i64 0
  %206 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %199, ptr noundef @.str.9, ptr noundef %200, ptr noundef %201, ptr noundef %205)
  %207 = load ptr, ptr %9, align 8, !tbaa !9
  %208 = getelementptr inbounds %struct.SectionStr, ptr %207, i32 0, i32 6
  %209 = getelementptr inbounds %struct.WallStr, ptr %208, i32 0, i32 0
  %210 = getelementptr inbounds [20 x i8], ptr %209, i64 0, i64 0
  %211 = call i32 @strcmp(ptr noundef %210, ptr noundef @.str.14) #11
  %212 = icmp eq i32 %211, 0
  br i1 %212, label %213, label %216

213:                                              ; preds = %190
  %214 = load i32, ptr %2, align 4, !tbaa !5
  %215 = load i32, ptr %7, align 4, !tbaa !5
  call void @ReadWall(i32 noundef %214, i32 noundef %215)
  br label %216

216:                                              ; preds = %213, %190
  %217 = load ptr, ptr %6, align 8, !tbaa !9
  %218 = load ptr, ptr %4, align 8, !tbaa !9
  %219 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %220 = load ptr, ptr %9, align 8, !tbaa !9
  %221 = getelementptr inbounds %struct.SectionStr, ptr %220, i32 0, i32 7
  %222 = getelementptr inbounds %struct.DynamicWallStr, ptr %221, i32 0, i32 0
  %223 = getelementptr inbounds [16 x i8], ptr %222, i64 0, i64 0
  %224 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %217, ptr noundef @.str.9, ptr noundef %218, ptr noundef %219, ptr noundef %223)
  %225 = load ptr, ptr %6, align 8, !tbaa !9
  %226 = load ptr, ptr %4, align 8, !tbaa !9
  %227 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %228 = load ptr, ptr %9, align 8, !tbaa !9
  %229 = getelementptr inbounds %struct.SectionStr, ptr %228, i32 0, i32 7
  %230 = getelementptr inbounds %struct.DynamicWallStr, ptr %229, i32 0, i32 3
  %231 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %225, ptr noundef @.str.8, ptr noundef %226, ptr noundef %227, ptr noundef %230)
  %232 = load ptr, ptr %6, align 8, !tbaa !9
  %233 = load ptr, ptr %4, align 8, !tbaa !9
  %234 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %235 = load ptr, ptr %9, align 8, !tbaa !9
  %236 = getelementptr inbounds %struct.SectionStr, ptr %235, i32 0, i32 7
  %237 = getelementptr inbounds %struct.DynamicWallStr, ptr %236, i32 0, i32 4
  %238 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %232, ptr noundef @.str.8, ptr noundef %233, ptr noundef %234, ptr noundef %237)
  %239 = load i32, ptr %7, align 4, !tbaa !5
  %240 = icmp eq i32 %239, 0
  br i1 %240, label %241, label %267

241:                                              ; preds = %216
  %242 = load ptr, ptr %9, align 8, !tbaa !9
  %243 = getelementptr inbounds %struct.SectionStr, ptr %242, i32 0, i32 7
  %244 = getelementptr inbounds %struct.DynamicWallStr, ptr %243, i32 0, i32 0
  %245 = getelementptr inbounds [16 x i8], ptr %244, i64 0, i64 0
  %246 = call i32 @strcmp(ptr noundef %245, ptr noundef @.str.13) #11
  %247 = icmp ne i32 %246, 0
  br i1 %247, label %248, label %257

248:                                              ; preds = %241
  %249 = load ptr, ptr %6, align 8, !tbaa !9
  %250 = load ptr, ptr %4, align 8, !tbaa !9
  %251 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %252 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %249, ptr noundef @.str.15, ptr noundef %250, ptr noundef %251, ptr noundef getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 1), ptr noundef getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 2), ptr noundef getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 3))
  %253 = load ptr, ptr %4, align 8, !tbaa !9
  %254 = load i32, ptr %3, align 4, !tbaa !5
  %255 = load ptr, ptr %6, align 8, !tbaa !9
  %256 = call ptr @fgets(ptr noundef %253, i32 noundef %254, ptr noundef %255)
  br label %266

257:                                              ; preds = %241
  %258 = load ptr, ptr %4, align 8, !tbaa !9
  %259 = load i32, ptr %3, align 4, !tbaa !5
  %260 = load ptr, ptr %6, align 8, !tbaa !9
  %261 = call ptr @fgets(ptr noundef %258, i32 noundef %259, ptr noundef %260)
  %262 = load ptr, ptr %6, align 8, !tbaa !9
  %263 = load ptr, ptr %4, align 8, !tbaa !9
  %264 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %265 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %262, ptr noundef @.str.15, ptr noundef %263, ptr noundef %264, ptr noundef getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 1), ptr noundef getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 2), ptr noundef getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 3))
  br label %266

266:                                              ; preds = %257, %248
  br label %276

267:                                              ; preds = %216
  %268 = load ptr, ptr %4, align 8, !tbaa !9
  %269 = load i32, ptr %3, align 4, !tbaa !5
  %270 = load ptr, ptr %6, align 8, !tbaa !9
  %271 = call ptr @fgets(ptr noundef %268, i32 noundef %269, ptr noundef %270)
  %272 = load ptr, ptr %4, align 8, !tbaa !9
  %273 = load i32, ptr %3, align 4, !tbaa !5
  %274 = load ptr, ptr %6, align 8, !tbaa !9
  %275 = call ptr @fgets(ptr noundef %272, i32 noundef %273, ptr noundef %274)
  br label %276

276:                                              ; preds = %267, %266
  %277 = load ptr, ptr %6, align 8, !tbaa !9
  %278 = load ptr, ptr %4, align 8, !tbaa !9
  %279 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %280 = load ptr, ptr %9, align 8, !tbaa !9
  %281 = getelementptr inbounds %struct.SectionStr, ptr %280, i32 0, i32 10
  %282 = getelementptr inbounds %struct.FlowStr, ptr %281, i32 0, i32 0
  %283 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %277, ptr noundef @.str.16, ptr noundef %278, ptr noundef %279, ptr noundef %282)
  %284 = load ptr, ptr %9, align 8, !tbaa !9
  %285 = getelementptr inbounds %struct.SectionStr, ptr %284, i32 0, i32 10
  %286 = getelementptr inbounds %struct.FlowStr, ptr %285, i32 0, i32 0
  %287 = load i32, ptr %286, align 8, !tbaa !18
  %288 = icmp eq i32 %287, 1
  br i1 %288, label %289, label %309

289:                                              ; preds = %276
  %290 = load ptr, ptr %6, align 8, !tbaa !9
  %291 = load ptr, ptr %4, align 8, !tbaa !9
  %292 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %293 = load ptr, ptr %9, align 8, !tbaa !9
  %294 = getelementptr inbounds %struct.SectionStr, ptr %293, i32 0, i32 10
  %295 = getelementptr inbounds %struct.FlowStr, ptr %294, i32 0, i32 1
  %296 = getelementptr inbounds %struct.ConstVStr, ptr %295, i32 0, i32 0
  %297 = getelementptr inbounds [4 x double], ptr %296, i64 0, i64 1
  %298 = load ptr, ptr %9, align 8, !tbaa !9
  %299 = getelementptr inbounds %struct.SectionStr, ptr %298, i32 0, i32 10
  %300 = getelementptr inbounds %struct.FlowStr, ptr %299, i32 0, i32 1
  %301 = getelementptr inbounds %struct.ConstVStr, ptr %300, i32 0, i32 0
  %302 = getelementptr inbounds [4 x double], ptr %301, i64 0, i64 2
  %303 = load ptr, ptr %9, align 8, !tbaa !9
  %304 = getelementptr inbounds %struct.SectionStr, ptr %303, i32 0, i32 10
  %305 = getelementptr inbounds %struct.FlowStr, ptr %304, i32 0, i32 1
  %306 = getelementptr inbounds %struct.ConstVStr, ptr %305, i32 0, i32 0
  %307 = getelementptr inbounds [4 x double], ptr %306, i64 0, i64 3
  %308 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %290, ptr noundef @.str.15, ptr noundef %291, ptr noundef %292, ptr noundef %297, ptr noundef %302, ptr noundef %307)
  br label %563

309:                                              ; preds = %276
  %310 = load ptr, ptr %9, align 8, !tbaa !9
  %311 = getelementptr inbounds %struct.SectionStr, ptr %310, i32 0, i32 10
  %312 = getelementptr inbounds %struct.FlowStr, ptr %311, i32 0, i32 0
  %313 = load i32, ptr %312, align 8, !tbaa !18
  %314 = icmp eq i32 %313, 2
  br i1 %314, label %315, label %335

315:                                              ; preds = %309
  %316 = load ptr, ptr %6, align 8, !tbaa !9
  %317 = load ptr, ptr %4, align 8, !tbaa !9
  %318 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %319 = load ptr, ptr %9, align 8, !tbaa !9
  %320 = getelementptr inbounds %struct.SectionStr, ptr %319, i32 0, i32 10
  %321 = getelementptr inbounds %struct.FlowStr, ptr %320, i32 0, i32 2
  %322 = getelementptr inbounds %struct.ForceStr, ptr %321, i32 0, i32 0
  %323 = getelementptr inbounds [4 x double], ptr %322, i64 0, i64 1
  %324 = load ptr, ptr %9, align 8, !tbaa !9
  %325 = getelementptr inbounds %struct.SectionStr, ptr %324, i32 0, i32 10
  %326 = getelementptr inbounds %struct.FlowStr, ptr %325, i32 0, i32 2
  %327 = getelementptr inbounds %struct.ForceStr, ptr %326, i32 0, i32 0
  %328 = getelementptr inbounds [4 x double], ptr %327, i64 0, i64 2
  %329 = load ptr, ptr %9, align 8, !tbaa !9
  %330 = getelementptr inbounds %struct.SectionStr, ptr %329, i32 0, i32 10
  %331 = getelementptr inbounds %struct.FlowStr, ptr %330, i32 0, i32 2
  %332 = getelementptr inbounds %struct.ForceStr, ptr %331, i32 0, i32 0
  %333 = getelementptr inbounds [4 x double], ptr %332, i64 0, i64 3
  %334 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %316, ptr noundef @.str.15, ptr noundef %317, ptr noundef %318, ptr noundef %323, ptr noundef %328, ptr noundef %333)
  br label %562

335:                                              ; preds = %309
  %336 = load ptr, ptr %9, align 8, !tbaa !9
  %337 = getelementptr inbounds %struct.SectionStr, ptr %336, i32 0, i32 10
  %338 = getelementptr inbounds %struct.FlowStr, ptr %337, i32 0, i32 0
  %339 = load i32, ptr %338, align 8, !tbaa !18
  %340 = icmp eq i32 %339, 3
  br i1 %340, label %341, label %556

341:                                              ; preds = %335
  %342 = load ptr, ptr %6, align 8, !tbaa !9
  %343 = load ptr, ptr %4, align 8, !tbaa !9
  %344 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %345 = load ptr, ptr %9, align 8, !tbaa !9
  %346 = getelementptr inbounds %struct.SectionStr, ptr %345, i32 0, i32 10
  %347 = getelementptr inbounds %struct.FlowStr, ptr %346, i32 0, i32 3
  %348 = getelementptr inbounds %struct.ChargeStr, ptr %347, i32 0, i32 0
  %349 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %342, ptr noundef @.str.17, ptr noundef %343, ptr noundef %344, ptr noundef %348)
  %350 = load ptr, ptr %9, align 8, !tbaa !9
  %351 = getelementptr inbounds %struct.SectionStr, ptr %350, i32 0, i32 10
  %352 = getelementptr inbounds %struct.FlowStr, ptr %351, i32 0, i32 3
  %353 = getelementptr inbounds %struct.ChargeStr, ptr %352, i32 0, i32 0
  %354 = load i32, ptr %353, align 8, !tbaa !31
  %355 = sext i32 %354 to i64
  %356 = call noalias ptr @calloc(i64 noundef %355, i64 noundef 8) #9
  %357 = load ptr, ptr %9, align 8, !tbaa !9
  %358 = getelementptr inbounds %struct.SectionStr, ptr %357, i32 0, i32 10
  %359 = getelementptr inbounds %struct.FlowStr, ptr %358, i32 0, i32 3
  %360 = getelementptr inbounds %struct.ChargeStr, ptr %359, i32 0, i32 2
  store ptr %356, ptr %360, align 8, !tbaa !32
  %361 = load ptr, ptr %9, align 8, !tbaa !9
  %362 = getelementptr inbounds %struct.SectionStr, ptr %361, i32 0, i32 10
  %363 = getelementptr inbounds %struct.FlowStr, ptr %362, i32 0, i32 3
  %364 = getelementptr inbounds %struct.ChargeStr, ptr %363, i32 0, i32 0
  %365 = load i32, ptr %364, align 8, !tbaa !31
  %366 = mul nsw i32 %365, 4
  %367 = sext i32 %366 to i64
  %368 = call noalias ptr @calloc(i64 noundef %367, i64 noundef 8) #9
  %369 = load ptr, ptr %9, align 8, !tbaa !9
  %370 = getelementptr inbounds %struct.SectionStr, ptr %369, i32 0, i32 10
  %371 = getelementptr inbounds %struct.FlowStr, ptr %370, i32 0, i32 3
  %372 = getelementptr inbounds %struct.ChargeStr, ptr %371, i32 0, i32 2
  %373 = load ptr, ptr %372, align 8, !tbaa !32
  %374 = getelementptr inbounds ptr, ptr %373, i64 0
  store ptr %368, ptr %374, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %375

375:                                              ; preds = %404, %341
  %376 = load i32, ptr %13, align 4, !tbaa !5
  %377 = load ptr, ptr %9, align 8, !tbaa !9
  %378 = getelementptr inbounds %struct.SectionStr, ptr %377, i32 0, i32 10
  %379 = getelementptr inbounds %struct.FlowStr, ptr %378, i32 0, i32 3
  %380 = getelementptr inbounds %struct.ChargeStr, ptr %379, i32 0, i32 0
  %381 = load i32, ptr %380, align 8, !tbaa !31
  %382 = icmp slt i32 %376, %381
  br i1 %382, label %384, label %383

383:                                              ; preds = %375
  store i32 10, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %407

384:                                              ; preds = %375
  %385 = load ptr, ptr %9, align 8, !tbaa !9
  %386 = getelementptr inbounds %struct.SectionStr, ptr %385, i32 0, i32 10
  %387 = getelementptr inbounds %struct.FlowStr, ptr %386, i32 0, i32 3
  %388 = getelementptr inbounds %struct.ChargeStr, ptr %387, i32 0, i32 2
  %389 = load ptr, ptr %388, align 8, !tbaa !32
  %390 = getelementptr inbounds ptr, ptr %389, i64 0
  %391 = load ptr, ptr %390, align 8, !tbaa !9
  %392 = load i32, ptr %13, align 4, !tbaa !5
  %393 = mul nsw i32 %392, 4
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds double, ptr %391, i64 %394
  %396 = load ptr, ptr %9, align 8, !tbaa !9
  %397 = getelementptr inbounds %struct.SectionStr, ptr %396, i32 0, i32 10
  %398 = getelementptr inbounds %struct.FlowStr, ptr %397, i32 0, i32 3
  %399 = getelementptr inbounds %struct.ChargeStr, ptr %398, i32 0, i32 2
  %400 = load ptr, ptr %399, align 8, !tbaa !32
  %401 = load i32, ptr %13, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds ptr, ptr %400, i64 %402
  store ptr %395, ptr %403, align 8, !tbaa !9
  br label %404

404:                                              ; preds = %384
  %405 = load i32, ptr %13, align 4, !tbaa !5
  %406 = add nsw i32 %405, 1
  store i32 %406, ptr %13, align 4, !tbaa !5
  br label %375, !llvm.loop !33

407:                                              ; preds = %383
  %408 = load ptr, ptr %9, align 8, !tbaa !9
  %409 = getelementptr inbounds %struct.SectionStr, ptr %408, i32 0, i32 10
  %410 = getelementptr inbounds %struct.FlowStr, ptr %409, i32 0, i32 3
  %411 = getelementptr inbounds %struct.ChargeStr, ptr %410, i32 0, i32 0
  %412 = load i32, ptr %411, align 8, !tbaa !31
  %413 = sext i32 %412 to i64
  %414 = call noalias ptr @calloc(i64 noundef %413, i64 noundef 8) #9
  %415 = load ptr, ptr %9, align 8, !tbaa !9
  %416 = getelementptr inbounds %struct.SectionStr, ptr %415, i32 0, i32 10
  %417 = getelementptr inbounds %struct.FlowStr, ptr %416, i32 0, i32 3
  %418 = getelementptr inbounds %struct.ChargeStr, ptr %417, i32 0, i32 3
  store ptr %414, ptr %418, align 8, !tbaa !34
  %419 = load ptr, ptr %9, align 8, !tbaa !9
  %420 = getelementptr inbounds %struct.SectionStr, ptr %419, i32 0, i32 10
  %421 = getelementptr inbounds %struct.FlowStr, ptr %420, i32 0, i32 3
  %422 = getelementptr inbounds %struct.ChargeStr, ptr %421, i32 0, i32 0
  %423 = load i32, ptr %422, align 8, !tbaa !31
  %424 = mul nsw i32 %423, 4
  %425 = sext i32 %424 to i64
  %426 = call noalias ptr @calloc(i64 noundef %425, i64 noundef 8) #9
  %427 = load ptr, ptr %9, align 8, !tbaa !9
  %428 = getelementptr inbounds %struct.SectionStr, ptr %427, i32 0, i32 10
  %429 = getelementptr inbounds %struct.FlowStr, ptr %428, i32 0, i32 3
  %430 = getelementptr inbounds %struct.ChargeStr, ptr %429, i32 0, i32 3
  %431 = load ptr, ptr %430, align 8, !tbaa !34
  %432 = getelementptr inbounds ptr, ptr %431, i64 0
  store ptr %426, ptr %432, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  store i32 1, ptr %14, align 4, !tbaa !5
  br label %433

433:                                              ; preds = %462, %407
  %434 = load i32, ptr %14, align 4, !tbaa !5
  %435 = load ptr, ptr %9, align 8, !tbaa !9
  %436 = getelementptr inbounds %struct.SectionStr, ptr %435, i32 0, i32 10
  %437 = getelementptr inbounds %struct.FlowStr, ptr %436, i32 0, i32 3
  %438 = getelementptr inbounds %struct.ChargeStr, ptr %437, i32 0, i32 0
  %439 = load i32, ptr %438, align 8, !tbaa !31
  %440 = icmp slt i32 %434, %439
  br i1 %440, label %442, label %441

441:                                              ; preds = %433
  store i32 13, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %465

442:                                              ; preds = %433
  %443 = load ptr, ptr %9, align 8, !tbaa !9
  %444 = getelementptr inbounds %struct.SectionStr, ptr %443, i32 0, i32 10
  %445 = getelementptr inbounds %struct.FlowStr, ptr %444, i32 0, i32 3
  %446 = getelementptr inbounds %struct.ChargeStr, ptr %445, i32 0, i32 3
  %447 = load ptr, ptr %446, align 8, !tbaa !34
  %448 = getelementptr inbounds ptr, ptr %447, i64 0
  %449 = load ptr, ptr %448, align 8, !tbaa !9
  %450 = load i32, ptr %14, align 4, !tbaa !5
  %451 = mul nsw i32 %450, 4
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %449, i64 %452
  %454 = load ptr, ptr %9, align 8, !tbaa !9
  %455 = getelementptr inbounds %struct.SectionStr, ptr %454, i32 0, i32 10
  %456 = getelementptr inbounds %struct.FlowStr, ptr %455, i32 0, i32 3
  %457 = getelementptr inbounds %struct.ChargeStr, ptr %456, i32 0, i32 3
  %458 = load ptr, ptr %457, align 8, !tbaa !34
  %459 = load i32, ptr %14, align 4, !tbaa !5
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds ptr, ptr %458, i64 %460
  store ptr %453, ptr %461, align 8, !tbaa !9
  br label %462

462:                                              ; preds = %442
  %463 = load i32, ptr %14, align 4, !tbaa !5
  %464 = add nsw i32 %463, 1
  store i32 %464, ptr %14, align 4, !tbaa !5
  br label %433, !llvm.loop !35

465:                                              ; preds = %441
  %466 = load ptr, ptr %9, align 8, !tbaa !9
  %467 = getelementptr inbounds %struct.SectionStr, ptr %466, i32 0, i32 10
  %468 = getelementptr inbounds %struct.FlowStr, ptr %467, i32 0, i32 3
  %469 = getelementptr inbounds %struct.ChargeStr, ptr %468, i32 0, i32 0
  %470 = load i32, ptr %469, align 8, !tbaa !31
  %471 = sext i32 %470 to i64
  %472 = call noalias ptr @calloc(i64 noundef %471, i64 noundef 8) #9
  %473 = load ptr, ptr %9, align 8, !tbaa !9
  %474 = getelementptr inbounds %struct.SectionStr, ptr %473, i32 0, i32 10
  %475 = getelementptr inbounds %struct.FlowStr, ptr %474, i32 0, i32 3
  %476 = getelementptr inbounds %struct.ChargeStr, ptr %475, i32 0, i32 4
  store ptr %472, ptr %476, align 8, !tbaa !36
  %477 = load ptr, ptr %9, align 8, !tbaa !9
  %478 = getelementptr inbounds %struct.SectionStr, ptr %477, i32 0, i32 10
  %479 = getelementptr inbounds %struct.FlowStr, ptr %478, i32 0, i32 3
  %480 = getelementptr inbounds %struct.ChargeStr, ptr %479, i32 0, i32 0
  %481 = load i32, ptr %480, align 8, !tbaa !31
  %482 = sext i32 %481 to i64
  %483 = call noalias ptr @calloc(i64 noundef %482, i64 noundef 8) #9
  %484 = load ptr, ptr %9, align 8, !tbaa !9
  %485 = getelementptr inbounds %struct.SectionStr, ptr %484, i32 0, i32 10
  %486 = getelementptr inbounds %struct.FlowStr, ptr %485, i32 0, i32 3
  %487 = getelementptr inbounds %struct.ChargeStr, ptr %486, i32 0, i32 5
  store ptr %483, ptr %487, align 8, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #8
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %488

488:                                              ; preds = %548, %465
  %489 = load i32, ptr %15, align 4, !tbaa !5
  %490 = load ptr, ptr %9, align 8, !tbaa !9
  %491 = getelementptr inbounds %struct.SectionStr, ptr %490, i32 0, i32 10
  %492 = getelementptr inbounds %struct.FlowStr, ptr %491, i32 0, i32 3
  %493 = getelementptr inbounds %struct.ChargeStr, ptr %492, i32 0, i32 0
  %494 = load i32, ptr %493, align 8, !tbaa !31
  %495 = icmp slt i32 %489, %494
  br i1 %495, label %497, label %496

496:                                              ; preds = %488
  store i32 16, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #8
  br label %551

497:                                              ; preds = %488
  %498 = load ptr, ptr %6, align 8, !tbaa !9
  %499 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %500 = load ptr, ptr %9, align 8, !tbaa !9
  %501 = getelementptr inbounds %struct.SectionStr, ptr %500, i32 0, i32 10
  %502 = getelementptr inbounds %struct.FlowStr, ptr %501, i32 0, i32 3
  %503 = getelementptr inbounds %struct.ChargeStr, ptr %502, i32 0, i32 2
  %504 = load ptr, ptr %503, align 8, !tbaa !32
  %505 = load i32, ptr %15, align 4, !tbaa !5
  %506 = sext i32 %505 to i64
  %507 = getelementptr inbounds ptr, ptr %504, i64 %506
  %508 = load ptr, ptr %507, align 8, !tbaa !9
  %509 = getelementptr inbounds double, ptr %508, i64 1
  %510 = load ptr, ptr %9, align 8, !tbaa !9
  %511 = getelementptr inbounds %struct.SectionStr, ptr %510, i32 0, i32 10
  %512 = getelementptr inbounds %struct.FlowStr, ptr %511, i32 0, i32 3
  %513 = getelementptr inbounds %struct.ChargeStr, ptr %512, i32 0, i32 2
  %514 = load ptr, ptr %513, align 8, !tbaa !32
  %515 = load i32, ptr %15, align 4, !tbaa !5
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds ptr, ptr %514, i64 %516
  %518 = load ptr, ptr %517, align 8, !tbaa !9
  %519 = getelementptr inbounds double, ptr %518, i64 2
  %520 = load ptr, ptr %9, align 8, !tbaa !9
  %521 = getelementptr inbounds %struct.SectionStr, ptr %520, i32 0, i32 10
  %522 = getelementptr inbounds %struct.FlowStr, ptr %521, i32 0, i32 3
  %523 = getelementptr inbounds %struct.ChargeStr, ptr %522, i32 0, i32 2
  %524 = load ptr, ptr %523, align 8, !tbaa !32
  %525 = load i32, ptr %15, align 4, !tbaa !5
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds ptr, ptr %524, i64 %526
  %528 = load ptr, ptr %527, align 8, !tbaa !9
  %529 = getelementptr inbounds double, ptr %528, i64 3
  %530 = load ptr, ptr %9, align 8, !tbaa !9
  %531 = getelementptr inbounds %struct.SectionStr, ptr %530, i32 0, i32 10
  %532 = getelementptr inbounds %struct.FlowStr, ptr %531, i32 0, i32 3
  %533 = getelementptr inbounds %struct.ChargeStr, ptr %532, i32 0, i32 4
  %534 = load ptr, ptr %533, align 8, !tbaa !36
  %535 = load i32, ptr %15, align 4, !tbaa !5
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds double, ptr %534, i64 %536
  %538 = load ptr, ptr %9, align 8, !tbaa !9
  %539 = getelementptr inbounds %struct.SectionStr, ptr %538, i32 0, i32 10
  %540 = getelementptr inbounds %struct.FlowStr, ptr %539, i32 0, i32 3
  %541 = getelementptr inbounds %struct.ChargeStr, ptr %540, i32 0, i32 5
  %542 = load ptr, ptr %541, align 8, !tbaa !37
  %543 = load i32, ptr %15, align 4, !tbaa !5
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %542, i64 %544
  %546 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %547 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %498, ptr noundef @.str.18, ptr noundef %499, ptr noundef %509, ptr noundef %519, ptr noundef %529, ptr noundef %537, ptr noundef %545, ptr noundef %546)
  br label %548

548:                                              ; preds = %497
  %549 = load i32, ptr %15, align 4, !tbaa !5
  %550 = add nsw i32 %549, 1
  store i32 %550, ptr %15, align 4, !tbaa !5
  br label %488, !llvm.loop !38

551:                                              ; preds = %496
  %552 = load ptr, ptr %4, align 8, !tbaa !9
  %553 = load i32, ptr %3, align 4, !tbaa !5
  %554 = load ptr, ptr %6, align 8, !tbaa !9
  %555 = call ptr @fgets(ptr noundef %552, i32 noundef %553, ptr noundef %554)
  br label %561

556:                                              ; preds = %335
  %557 = load ptr, ptr %4, align 8, !tbaa !9
  %558 = load i32, ptr %3, align 4, !tbaa !5
  %559 = load ptr, ptr %6, align 8, !tbaa !9
  %560 = call ptr @fgets(ptr noundef %557, i32 noundef %558, ptr noundef %559)
  br label %561

561:                                              ; preds = %556, %551
  br label %562

562:                                              ; preds = %561, %315
  br label %563

563:                                              ; preds = %562, %289
  %564 = load ptr, ptr %6, align 8, !tbaa !9
  %565 = load ptr, ptr %4, align 8, !tbaa !9
  %566 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %567 = load ptr, ptr %9, align 8, !tbaa !9
  %568 = getelementptr inbounds %struct.SectionStr, ptr %567, i32 0, i32 8
  %569 = getelementptr inbounds %struct.ObstructionStr, ptr %568, i32 0, i32 1
  %570 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %564, ptr noundef @.str.16, ptr noundef %565, ptr noundef %566, ptr noundef %569)
  %571 = load ptr, ptr %9, align 8, !tbaa !9
  %572 = getelementptr inbounds %struct.SectionStr, ptr %571, i32 0, i32 8
  %573 = getelementptr inbounds %struct.ObstructionStr, ptr %572, i32 0, i32 1
  %574 = load i32, ptr %573, align 4, !tbaa !39
  %575 = icmp ne i32 %574, 0
  br i1 %575, label %576, label %704

576:                                              ; preds = %563
  %577 = load ptr, ptr %9, align 8, !tbaa !9
  %578 = getelementptr inbounds %struct.SectionStr, ptr %577, i32 0, i32 8
  %579 = getelementptr inbounds %struct.ObstructionStr, ptr %578, i32 0, i32 0
  store i32 1, ptr %579, align 8, !tbaa !40
  %580 = load ptr, ptr %9, align 8, !tbaa !9
  %581 = getelementptr inbounds %struct.SectionStr, ptr %580, i32 0, i32 8
  %582 = getelementptr inbounds %struct.ObstructionStr, ptr %581, i32 0, i32 1
  %583 = load i32, ptr %582, align 4, !tbaa !39
  %584 = sext i32 %583 to i64
  %585 = call noalias ptr @calloc(i64 noundef %584, i64 noundef 8) #9
  %586 = load ptr, ptr %9, align 8, !tbaa !9
  %587 = getelementptr inbounds %struct.SectionStr, ptr %586, i32 0, i32 8
  %588 = getelementptr inbounds %struct.ObstructionStr, ptr %587, i32 0, i32 3
  store ptr %585, ptr %588, align 8, !tbaa !41
  %589 = load ptr, ptr %9, align 8, !tbaa !9
  %590 = getelementptr inbounds %struct.SectionStr, ptr %589, i32 0, i32 8
  %591 = getelementptr inbounds %struct.ObstructionStr, ptr %590, i32 0, i32 1
  %592 = load i32, ptr %591, align 4, !tbaa !39
  %593 = mul nsw i32 %592, 4
  %594 = sext i32 %593 to i64
  %595 = call noalias ptr @calloc(i64 noundef %594, i64 noundef 8) #9
  %596 = load ptr, ptr %9, align 8, !tbaa !9
  %597 = getelementptr inbounds %struct.SectionStr, ptr %596, i32 0, i32 8
  %598 = getelementptr inbounds %struct.ObstructionStr, ptr %597, i32 0, i32 3
  %599 = load ptr, ptr %598, align 8, !tbaa !41
  %600 = getelementptr inbounds ptr, ptr %599, i64 0
  store ptr %595, ptr %600, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  store i32 1, ptr %16, align 4, !tbaa !5
  br label %601

601:                                              ; preds = %627, %576
  %602 = load i32, ptr %16, align 4, !tbaa !5
  %603 = load ptr, ptr %9, align 8, !tbaa !9
  %604 = getelementptr inbounds %struct.SectionStr, ptr %603, i32 0, i32 8
  %605 = getelementptr inbounds %struct.ObstructionStr, ptr %604, i32 0, i32 1
  %606 = load i32, ptr %605, align 4, !tbaa !39
  %607 = icmp slt i32 %602, %606
  br i1 %607, label %609, label %608

608:                                              ; preds = %601
  store i32 19, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %630

609:                                              ; preds = %601
  %610 = load ptr, ptr %9, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.SectionStr, ptr %610, i32 0, i32 8
  %612 = getelementptr inbounds %struct.ObstructionStr, ptr %611, i32 0, i32 3
  %613 = load ptr, ptr %612, align 8, !tbaa !41
  %614 = getelementptr inbounds ptr, ptr %613, i64 0
  %615 = load ptr, ptr %614, align 8, !tbaa !9
  %616 = load i32, ptr %16, align 4, !tbaa !5
  %617 = mul nsw i32 %616, 4
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds double, ptr %615, i64 %618
  %620 = load ptr, ptr %9, align 8, !tbaa !9
  %621 = getelementptr inbounds %struct.SectionStr, ptr %620, i32 0, i32 8
  %622 = getelementptr inbounds %struct.ObstructionStr, ptr %621, i32 0, i32 3
  %623 = load ptr, ptr %622, align 8, !tbaa !41
  %624 = load i32, ptr %16, align 4, !tbaa !5
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds ptr, ptr %623, i64 %625
  store ptr %619, ptr %626, align 8, !tbaa !9
  br label %627

627:                                              ; preds = %609
  %628 = load i32, ptr %16, align 4, !tbaa !5
  %629 = add nsw i32 %628, 1
  store i32 %629, ptr %16, align 4, !tbaa !5
  br label %601, !llvm.loop !42

630:                                              ; preds = %608
  %631 = load ptr, ptr %9, align 8, !tbaa !9
  %632 = getelementptr inbounds %struct.SectionStr, ptr %631, i32 0, i32 8
  %633 = getelementptr inbounds %struct.ObstructionStr, ptr %632, i32 0, i32 1
  %634 = load i32, ptr %633, align 4, !tbaa !39
  %635 = sext i32 %634 to i64
  %636 = call noalias ptr @calloc(i64 noundef %635, i64 noundef 16) #9
  %637 = load ptr, ptr %9, align 8, !tbaa !9
  %638 = getelementptr inbounds %struct.SectionStr, ptr %637, i32 0, i32 8
  %639 = getelementptr inbounds %struct.ObstructionStr, ptr %638, i32 0, i32 4
  store ptr %636, ptr %639, align 8, !tbaa !43
  %640 = load ptr, ptr %6, align 8, !tbaa !9
  %641 = load ptr, ptr %4, align 8, !tbaa !9
  %642 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %643 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %640, ptr noundef @.str.1, ptr noundef %641, ptr noundef %642)
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #8
  store i32 0, ptr %17, align 4, !tbaa !5
  br label %644

644:                                              ; preds = %694, %630
  %645 = load i32, ptr %17, align 4, !tbaa !5
  %646 = load ptr, ptr %9, align 8, !tbaa !9
  %647 = getelementptr inbounds %struct.SectionStr, ptr %646, i32 0, i32 8
  %648 = getelementptr inbounds %struct.ObstructionStr, ptr %647, i32 0, i32 1
  %649 = load i32, ptr %648, align 4, !tbaa !39
  %650 = icmp slt i32 %645, %649
  br i1 %650, label %652, label %651

651:                                              ; preds = %644
  store i32 22, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #8
  br label %697

652:                                              ; preds = %644
  %653 = load ptr, ptr %6, align 8, !tbaa !9
  %654 = load ptr, ptr %9, align 8, !tbaa !9
  %655 = getelementptr inbounds %struct.SectionStr, ptr %654, i32 0, i32 8
  %656 = getelementptr inbounds %struct.ObstructionStr, ptr %655, i32 0, i32 3
  %657 = load ptr, ptr %656, align 8, !tbaa !41
  %658 = load i32, ptr %17, align 4, !tbaa !5
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds ptr, ptr %657, i64 %659
  %661 = load ptr, ptr %660, align 8, !tbaa !9
  %662 = getelementptr inbounds double, ptr %661, i64 1
  %663 = load ptr, ptr %9, align 8, !tbaa !9
  %664 = getelementptr inbounds %struct.SectionStr, ptr %663, i32 0, i32 8
  %665 = getelementptr inbounds %struct.ObstructionStr, ptr %664, i32 0, i32 3
  %666 = load ptr, ptr %665, align 8, !tbaa !41
  %667 = load i32, ptr %17, align 4, !tbaa !5
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds ptr, ptr %666, i64 %668
  %670 = load ptr, ptr %669, align 8, !tbaa !9
  %671 = getelementptr inbounds double, ptr %670, i64 2
  %672 = load ptr, ptr %9, align 8, !tbaa !9
  %673 = getelementptr inbounds %struct.SectionStr, ptr %672, i32 0, i32 8
  %674 = getelementptr inbounds %struct.ObstructionStr, ptr %673, i32 0, i32 3
  %675 = load ptr, ptr %674, align 8, !tbaa !41
  %676 = load i32, ptr %17, align 4, !tbaa !5
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds ptr, ptr %675, i64 %677
  %679 = load ptr, ptr %678, align 8, !tbaa !9
  %680 = getelementptr inbounds double, ptr %679, i64 3
  %681 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %653, ptr noundef @.str.19, ptr noundef %662, ptr noundef %671, ptr noundef %680)
  %682 = load i32, ptr %17, align 4, !tbaa !5
  %683 = load ptr, ptr %9, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.SectionStr, ptr %683, i32 0, i32 8
  %685 = getelementptr inbounds %struct.ObstructionStr, ptr %684, i32 0, i32 1
  %686 = load i32, ptr %685, align 4, !tbaa !39
  %687 = sub nsw i32 %686, 1
  %688 = icmp slt i32 %682, %687
  br i1 %688, label %689, label %693

689:                                              ; preds = %652
  %690 = load ptr, ptr %6, align 8, !tbaa !9
  %691 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %692 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %690, ptr noundef @.str.20, ptr noundef %691)
  br label %693

693:                                              ; preds = %689, %652
  br label %694

694:                                              ; preds = %693
  %695 = load i32, ptr %17, align 4, !tbaa !5
  %696 = add nsw i32 %695, 1
  store i32 %696, ptr %17, align 4, !tbaa !5
  br label %644, !llvm.loop !44

697:                                              ; preds = %651
  %698 = load ptr, ptr %4, align 8, !tbaa !9
  %699 = load i32, ptr %3, align 4, !tbaa !5
  %700 = load ptr, ptr %6, align 8, !tbaa !9
  %701 = call ptr @fgets(ptr noundef %698, i32 noundef %699, ptr noundef %700)
  %702 = load i32, ptr %2, align 4, !tbaa !5
  %703 = load i32, ptr %7, align 4, !tbaa !5
  call void @ReadObst(i32 noundef %702, i32 noundef %703)
  br label %709

704:                                              ; preds = %563
  %705 = load ptr, ptr %4, align 8, !tbaa !9
  %706 = load i32, ptr %3, align 4, !tbaa !5
  %707 = load ptr, ptr %6, align 8, !tbaa !9
  %708 = call ptr @fgets(ptr noundef %705, i32 noundef %706, ptr noundef %707)
  br label %709

709:                                              ; preds = %704, %697
  %710 = load ptr, ptr %6, align 8, !tbaa !9
  %711 = load ptr, ptr %4, align 8, !tbaa !9
  %712 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %713 = load ptr, ptr %9, align 8, !tbaa !9
  %714 = getelementptr inbounds %struct.SectionStr, ptr %713, i32 0, i32 9
  %715 = getelementptr inbounds %struct.TunnelStr, ptr %714, i32 0, i32 0
  %716 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %710, ptr noundef @.str.16, ptr noundef %711, ptr noundef %712, ptr noundef %715)
  %717 = load ptr, ptr %9, align 8, !tbaa !9
  %718 = getelementptr inbounds %struct.SectionStr, ptr %717, i32 0, i32 9
  %719 = getelementptr inbounds %struct.TunnelStr, ptr %718, i32 0, i32 0
  %720 = load i32, ptr %719, align 8, !tbaa !45
  %721 = icmp ne i32 %720, 0
  br i1 %721, label %722, label %738

722:                                              ; preds = %709
  %723 = load ptr, ptr %6, align 8, !tbaa !9
  %724 = load ptr, ptr %4, align 8, !tbaa !9
  %725 = getelementptr inbounds [4 x i8], ptr %5, i64 0, i64 0
  %726 = load ptr, ptr %9, align 8, !tbaa !9
  %727 = getelementptr inbounds %struct.SectionStr, ptr %726, i32 0, i32 9
  %728 = getelementptr inbounds %struct.TunnelStr, ptr %727, i32 0, i32 1
  %729 = load ptr, ptr %9, align 8, !tbaa !9
  %730 = getelementptr inbounds %struct.SectionStr, ptr %729, i32 0, i32 9
  %731 = getelementptr inbounds %struct.TunnelStr, ptr %730, i32 0, i32 2
  %732 = load ptr, ptr %9, align 8, !tbaa !9
  %733 = getelementptr inbounds %struct.SectionStr, ptr %732, i32 0, i32 9
  %734 = getelementptr inbounds %struct.TunnelStr, ptr %733, i32 0, i32 3
  %735 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %723, ptr noundef @.str.15, ptr noundef %724, ptr noundef %725, ptr noundef %728, ptr noundef %731, ptr noundef %734)
  %736 = load i32, ptr %2, align 4, !tbaa !5
  %737 = load i32, ptr %7, align 4, !tbaa !5
  call void @ReadWall(i32 noundef %736, i32 noundef %737)
  br label %743

738:                                              ; preds = %709
  %739 = load ptr, ptr %4, align 8, !tbaa !9
  %740 = load i32, ptr %3, align 4, !tbaa !5
  %741 = load ptr, ptr %6, align 8, !tbaa !9
  %742 = call ptr @fgets(ptr noundef %739, i32 noundef %740, ptr noundef %741)
  br label %743

743:                                              ; preds = %738, %722
  call void @llvm.lifetime.end.p0(i64 1024, ptr %12) #8
  br label %744

744:                                              ; preds = %743, %72
  br label %66, !llvm.loop !46

745:                                              ; preds = %66
  %746 = load ptr, ptr %9, align 8, !tbaa !9
  %747 = getelementptr inbounds %struct.SectionStr, ptr %746, i32 0, i32 6
  %748 = getelementptr inbounds %struct.WallStr, ptr %747, i32 0, i32 0
  %749 = getelementptr inbounds [20 x i8], ptr %748, i64 0, i64 0
  %750 = call i32 @strcmp(ptr noundef %749, ptr noundef @.str.14) #11
  %751 = icmp eq i32 %750, 0
  br i1 %751, label %752, label %818

752:                                              ; preds = %745
  %753 = load double, ptr getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 1), align 8, !tbaa !47
  %754 = fmul double 5.000000e-01, %753
  %755 = load ptr, ptr %9, align 8, !tbaa !9
  %756 = getelementptr inbounds %struct.SectionStr, ptr %755, i32 0, i32 6
  %757 = getelementptr inbounds %struct.WallStr, ptr %756, i32 0, i32 2
  %758 = getelementptr inbounds %struct.AtomStr, ptr %757, i32 0, i32 1
  %759 = load ptr, ptr %758, align 8, !tbaa !48
  %760 = getelementptr inbounds %struct.DynamicStr, ptr %759, i32 0, i32 1
  %761 = getelementptr inbounds [4 x double], ptr %760, i64 0, i64 1
  store double %754, ptr %761, align 8, !tbaa !47
  %762 = load double, ptr getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 2), align 16, !tbaa !47
  %763 = fmul double 5.000000e-01, %762
  %764 = load ptr, ptr %9, align 8, !tbaa !9
  %765 = getelementptr inbounds %struct.SectionStr, ptr %764, i32 0, i32 6
  %766 = getelementptr inbounds %struct.WallStr, ptr %765, i32 0, i32 2
  %767 = getelementptr inbounds %struct.AtomStr, ptr %766, i32 0, i32 1
  %768 = load ptr, ptr %767, align 8, !tbaa !48
  %769 = getelementptr inbounds %struct.DynamicStr, ptr %768, i32 0, i32 1
  %770 = getelementptr inbounds [4 x double], ptr %769, i64 0, i64 2
  store double %763, ptr %770, align 8, !tbaa !47
  %771 = load double, ptr getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 3), align 8, !tbaa !47
  %772 = fmul double 5.000000e-01, %771
  %773 = load ptr, ptr %9, align 8, !tbaa !9
  %774 = getelementptr inbounds %struct.SectionStr, ptr %773, i32 0, i32 6
  %775 = getelementptr inbounds %struct.WallStr, ptr %774, i32 0, i32 2
  %776 = getelementptr inbounds %struct.AtomStr, ptr %775, i32 0, i32 1
  %777 = load ptr, ptr %776, align 8, !tbaa !48
  %778 = getelementptr inbounds %struct.DynamicStr, ptr %777, i32 0, i32 1
  %779 = getelementptr inbounds [4 x double], ptr %778, i64 0, i64 3
  store double %772, ptr %779, align 8, !tbaa !47
  %780 = load ptr, ptr %9, align 8, !tbaa !9
  %781 = getelementptr inbounds %struct.SectionStr, ptr %780, i32 0, i32 6
  %782 = getelementptr inbounds %struct.WallStr, ptr %781, i32 0, i32 1
  %783 = getelementptr inbounds [20 x i8], ptr %782, i64 0, i64 0
  %784 = call i32 @strcmp(ptr noundef %783, ptr noundef @.str.21) #11
  %785 = icmp eq i32 %784, 0
  br i1 %785, label %786, label %801

786:                                              ; preds = %752
  %787 = load ptr, ptr %9, align 8, !tbaa !9
  %788 = getelementptr inbounds %struct.SectionStr, ptr %787, i32 0, i32 6
  %789 = getelementptr inbounds %struct.WallStr, ptr %788, i32 0, i32 2
  %790 = getelementptr inbounds %struct.AtomStr, ptr %789, i32 0, i32 1
  %791 = load ptr, ptr %790, align 8, !tbaa !48
  %792 = getelementptr inbounds %struct.DynamicStr, ptr %791, i32 0, i32 1
  %793 = getelementptr inbounds [4 x double], ptr %792, i64 0, i64 3
  store double 0.000000e+00, ptr %793, align 8, !tbaa !47
  %794 = load ptr, ptr %9, align 8, !tbaa !9
  %795 = getelementptr inbounds %struct.SectionStr, ptr %794, i32 0, i32 6
  %796 = getelementptr inbounds %struct.WallStr, ptr %795, i32 0, i32 2
  %797 = getelementptr inbounds %struct.AtomStr, ptr %796, i32 0, i32 1
  %798 = load ptr, ptr %797, align 8, !tbaa !48
  %799 = getelementptr inbounds %struct.DynamicStr, ptr %798, i32 0, i32 1
  %800 = getelementptr inbounds [4 x double], ptr %799, i64 0, i64 1
  store double 0.000000e+00, ptr %800, align 8, !tbaa !47
  br label %817

801:                                              ; preds = %752
  %802 = load ptr, ptr %9, align 8, !tbaa !9
  %803 = getelementptr inbounds %struct.SectionStr, ptr %802, i32 0, i32 6
  %804 = getelementptr inbounds %struct.WallStr, ptr %803, i32 0, i32 1
  %805 = getelementptr inbounds [20 x i8], ptr %804, i64 0, i64 0
  %806 = call i32 @strcmp(ptr noundef %805, ptr noundef @.str.22) #11
  %807 = icmp eq i32 %806, 0
  br i1 %807, label %808, label %816

808:                                              ; preds = %801
  %809 = load ptr, ptr %9, align 8, !tbaa !9
  %810 = getelementptr inbounds %struct.SectionStr, ptr %809, i32 0, i32 6
  %811 = getelementptr inbounds %struct.WallStr, ptr %810, i32 0, i32 2
  %812 = getelementptr inbounds %struct.AtomStr, ptr %811, i32 0, i32 1
  %813 = load ptr, ptr %812, align 8, !tbaa !48
  %814 = getelementptr inbounds %struct.DynamicStr, ptr %813, i32 0, i32 1
  %815 = getelementptr inbounds [4 x double], ptr %814, i64 0, i64 1
  store double 0.000000e+00, ptr %815, align 8, !tbaa !47
  br label %816

816:                                              ; preds = %808, %801
  br label %817

817:                                              ; preds = %816, %786
  br label %818

818:                                              ; preds = %817, %745
  %819 = load ptr, ptr %9, align 8, !tbaa !9
  %820 = getelementptr inbounds %struct.SectionStr, ptr %819, i32 0, i32 9
  %821 = getelementptr inbounds %struct.TunnelStr, ptr %820, i32 0, i32 0
  %822 = load i32, ptr %821, align 8, !tbaa !45
  %823 = icmp ne i32 %822, 0
  br i1 %823, label %824, label %850

824:                                              ; preds = %818
  %825 = load ptr, ptr %9, align 8, !tbaa !9
  %826 = getelementptr inbounds %struct.SectionStr, ptr %825, i32 0, i32 9
  %827 = getelementptr inbounds %struct.TunnelStr, ptr %826, i32 0, i32 4
  %828 = getelementptr inbounds %struct.AtomStr, ptr %827, i32 0, i32 1
  %829 = load ptr, ptr %828, align 8, !tbaa !49
  %830 = getelementptr inbounds %struct.DynamicStr, ptr %829, i32 0, i32 1
  %831 = getelementptr inbounds [4 x double], ptr %830, i64 0, i64 1
  store double 0.000000e+00, ptr %831, align 8, !tbaa !47
  %832 = load double, ptr getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 2), align 16, !tbaa !47
  %833 = fmul double 5.000000e-01, %832
  %834 = load ptr, ptr %9, align 8, !tbaa !9
  %835 = getelementptr inbounds %struct.SectionStr, ptr %834, i32 0, i32 9
  %836 = getelementptr inbounds %struct.TunnelStr, ptr %835, i32 0, i32 4
  %837 = getelementptr inbounds %struct.AtomStr, ptr %836, i32 0, i32 1
  %838 = load ptr, ptr %837, align 8, !tbaa !49
  %839 = getelementptr inbounds %struct.DynamicStr, ptr %838, i32 0, i32 1
  %840 = getelementptr inbounds [4 x double], ptr %839, i64 0, i64 2
  store double %833, ptr %840, align 8, !tbaa !47
  %841 = load double, ptr getelementptr inbounds ([4 x double], ptr @boxOrigDim, i64 0, i64 3), align 8, !tbaa !47
  %842 = fmul double 5.000000e-01, %841
  %843 = load ptr, ptr %9, align 8, !tbaa !9
  %844 = getelementptr inbounds %struct.SectionStr, ptr %843, i32 0, i32 9
  %845 = getelementptr inbounds %struct.TunnelStr, ptr %844, i32 0, i32 4
  %846 = getelementptr inbounds %struct.AtomStr, ptr %845, i32 0, i32 1
  %847 = load ptr, ptr %846, align 8, !tbaa !49
  %848 = getelementptr inbounds %struct.DynamicStr, ptr %847, i32 0, i32 1
  %849 = getelementptr inbounds [4 x double], ptr %848, i64 0, i64 3
  store double %842, ptr %849, align 8, !tbaa !47
  br label %850

850:                                              ; preds = %824, %818
  %851 = load ptr, ptr %6, align 8, !tbaa !9
  %852 = call i32 @fclose(ptr noundef %851)
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  br label %853

853:                                              ; preds = %850
  %854 = load i32, ptr %7, align 4, !tbaa !5
  %855 = add nsw i32 %854, 1
  store i32 %855, ptr %7, align 4, !tbaa !5
  br label %22, !llvm.loop !50

856:                                              ; preds = %31
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 0, ptr %18, align 4, !tbaa !5
  br label %857

857:                                              ; preds = %919, %856
  %858 = load i32, ptr %18, align 4, !tbaa !5
  %859 = load ptr, ptr @fileList, align 8, !tbaa !9
  %860 = load i32, ptr %2, align 4, !tbaa !5
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds %struct.FileListStr, ptr %859, i64 %861
  %863 = getelementptr inbounds %struct.FileListStr, ptr %862, i32 0, i32 0
  %864 = load i32, ptr %863, align 4, !tbaa !11
  %865 = icmp slt i32 %858, %864
  br i1 %865, label %867, label %866

866:                                              ; preds = %857
  store i32 25, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %922

867:                                              ; preds = %857
  %868 = load i32, ptr %18, align 4, !tbaa !5
  %869 = load ptr, ptr @fileList, align 8, !tbaa !9
  %870 = load i32, ptr %2, align 4, !tbaa !5
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.FileListStr, ptr %869, i64 %871
  %873 = getelementptr inbounds %struct.FileListStr, ptr %872, i32 0, i32 0
  %874 = load i32, ptr %873, align 4, !tbaa !11
  %875 = sub nsw i32 %874, 1
  %876 = icmp slt i32 %868, %875
  br i1 %876, label %877, label %898

877:                                              ; preds = %867
  %878 = load ptr, ptr @sectInfo, align 8, !tbaa !9
  %879 = load i32, ptr %18, align 4, !tbaa !5
  %880 = add nsw i32 %879, 1
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds %struct.SectionStr, ptr %878, i64 %881
  %883 = getelementptr inbounds %struct.SectionStr, ptr %882, i32 0, i32 1
  %884 = load double, ptr %883, align 8, !tbaa !51
  %885 = load ptr, ptr @sectInfo, align 8, !tbaa !9
  %886 = load i32, ptr %18, align 4, !tbaa !5
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds %struct.SectionStr, ptr %885, i64 %887
  %889 = getelementptr inbounds %struct.SectionStr, ptr %888, i32 0, i32 1
  %890 = load double, ptr %889, align 8, !tbaa !51
  %891 = fsub double %884, %890
  %892 = fptosi double %891 to i64
  %893 = load ptr, ptr @sectInfo, align 8, !tbaa !9
  %894 = load i32, ptr %18, align 4, !tbaa !5
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds %struct.SectionStr, ptr %893, i64 %895
  %897 = getelementptr inbounds %struct.SectionStr, ptr %896, i32 0, i32 0
  store i64 %892, ptr %897, align 8, !tbaa !52
  br label %918

898:                                              ; preds = %867
  %899 = load ptr, ptr @sectInfo, align 8, !tbaa !9
  %900 = load i32, ptr %18, align 4, !tbaa !5
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds %struct.SectionStr, ptr %899, i64 %901
  %903 = getelementptr inbounds %struct.SectionStr, ptr %902, i32 0, i32 2
  %904 = load double, ptr %903, align 8, !tbaa !53
  %905 = load ptr, ptr @sectInfo, align 8, !tbaa !9
  %906 = load i32, ptr %18, align 4, !tbaa !5
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds %struct.SectionStr, ptr %905, i64 %907
  %909 = getelementptr inbounds %struct.SectionStr, ptr %908, i32 0, i32 1
  %910 = load double, ptr %909, align 8, !tbaa !51
  %911 = fsub double %904, %910
  %912 = fptosi double %911 to i64
  %913 = load ptr, ptr @sectInfo, align 8, !tbaa !9
  %914 = load i32, ptr %18, align 4, !tbaa !5
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds %struct.SectionStr, ptr %913, i64 %915
  %917 = getelementptr inbounds %struct.SectionStr, ptr %916, i32 0, i32 0
  store i64 %912, ptr %917, align 8, !tbaa !52
  br label %918

918:                                              ; preds = %898, %877
  br label %919

919:                                              ; preds = %918
  %920 = load i32, ptr %18, align 4, !tbaa !5
  %921 = add nsw i32 %920, 1
  store i32 %921, ptr %18, align 4, !tbaa !5
  br label %857, !llvm.loop !54

922:                                              ; preds = %866
  %923 = load ptr, ptr %4, align 8, !tbaa !9
  call void @free(ptr noundef %923) #8
  store i32 1, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #8
  ret i32 1
}

declare ptr @fgets(ptr noundef, i32 noundef, ptr noundef) #1

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

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #6

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

; Function Attrs: nounwind
declare i32 @__isoc99_sscanf(ptr noundef, ptr noundef, ...) #2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #6

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind 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 #5 = { 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 #6 = { nounwind willreturn memory(read) "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 #7 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { nounwind }
attributes #9 = { nounwind allocsize(0,1) }
attributes #10 = { noreturn nounwind }
attributes #11 = { nounwind willreturn memory(read) }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"FileListStr", !6, i64 0, !7, i64 4}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !6, i64 32}
!17 = !{!"CGGovStr", !7, i64 0, !6, i64 32, !6, i64 36}
!18 = !{!19, !6, i64 288}
!19 = !{!"SectionStr", !20, i64 0, !21, i64 8, !21, i64 16, !21, i64 24, !21, i64 32, !7, i64 40, !22, i64 64, !24, i64 120, !25, i64 208, !26, i64 240, !27, i64 288}
!20 = !{!"long", !7, i64 0}
!21 = !{!"double", !7, i64 0}
!22 = !{!"WallStr", !7, i64 0, !7, i64 20, !23, i64 40}
!23 = !{!"AtomStr", !10, i64 0, !10, i64 8}
!24 = !{!"DynamicWallStr", !7, i64 0, !6, i64 16, !6, i64 20, !21, i64 24, !21, i64 32, !21, i64 40, !21, i64 48, !7, i64 56}
!25 = !{!"ObstructionStr", !6, i64 0, !6, i64 4, !10, i64 8, !10, i64 16, !10, i64 24}
!26 = !{!"TunnelStr", !6, i64 0, !21, i64 8, !21, i64 16, !21, i64 24, !23, i64 32}
!27 = !{!"FlowStr", !6, i64 0, !28, i64 8, !29, i64 40, !30, i64 88}
!28 = !{!"ConstVStr", !7, i64 0}
!29 = !{!"ForceStr", !7, i64 0, !10, i64 32, !10, i64 40}
!30 = !{!"ChargeStr", !6, i64 0, !6, i64 4, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32}
!31 = !{!19, !6, i64 376}
!32 = !{!19, !10, i64 384}
!33 = distinct !{!33, !15}
!34 = !{!19, !10, i64 392}
!35 = distinct !{!35, !15}
!36 = !{!19, !10, i64 400}
!37 = !{!19, !10, i64 408}
!38 = distinct !{!38, !15}
!39 = !{!19, !6, i64 212}
!40 = !{!19, !6, i64 208}
!41 = !{!19, !10, i64 224}
!42 = distinct !{!42, !15}
!43 = !{!19, !10, i64 232}
!44 = distinct !{!44, !15}
!45 = !{!19, !6, i64 240}
!46 = distinct !{!46, !15}
!47 = !{!21, !21, i64 0}
!48 = !{!19, !10, i64 112}
!49 = !{!19, !10, i64 280}
!50 = distinct !{!50, !15}
!51 = !{!19, !21, i64 8}
!52 = !{!19, !20, i64 0}
!53 = !{!19, !21, i64 16}
!54 = distinct !{!54, !15}


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

%struct.CGGovStr = type { [2 x [16 x i8]], i32, i32 }
%struct.FileListStr = type { i32, [128 x [64 x i8]] }
%struct.SectionStr = type { i64, double, double, double, double, [20 x i8], %struct.WallStr, %struct.DynamicWallStr, %struct.ObstructionStr, %struct.TunnelStr, %struct.FlowStr }
%struct.WallStr = type { [20 x i8], [20 x i8], %struct.AtomStr }
%struct.AtomStr = type { ptr, ptr }
%struct.DynamicWallStr = type { [16 x i8], i32, i32, double, double, double, double, [4 x double] }
%struct.ObstructionStr = type { i32, i32, ptr, ptr, ptr }
%struct.TunnelStr = type { i32, double, double, double, %struct.AtomStr }
%struct.FlowStr = type { i32, %struct.ConstVStr, %struct.ForceStr, %struct.ChargeStr }
%struct.ConstVStr = type { [4 x double] }
%struct.ForceStr = type { [4 x double], ptr, ptr }
%struct.ChargeStr = type { i32, i32, ptr, ptr, ptr, ptr }

@.str.1 = external hidden unnamed_addr constant [5 x i8], align 1
@path = external global [1024 x i8], align 16
@.str.3 = external hidden unnamed_addr constant [116 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [79 x i8], align 1
@numofprotein = external local_unnamed_addr global i32, align 4
@fileList = external local_unnamed_addr global ptr, align 8
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@sectInfo = external local_unnamed_addr global ptr, align 8
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@cutoffr = external global double, align 8
@.str.9 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [10 x i8], align 1
@CG = external global %struct.CGGovStr, align 4
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@boxOrigDim = external global [4 x double], align 16
@.str.16 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [9 x i8], align 1

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

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

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

; Function Attrs: nofree nounwind
declare noalias noundef ptr @fopen(ptr nocapture noundef readonly, ptr nocapture noundef readonly) local_unnamed_addr #1

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

; 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 #3

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

; Function Attrs: nofree nounwind
declare noundef i32 @fclose(ptr nocapture noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @ReadLog(i32 noundef %0) local_unnamed_addr #4 {
  %2 = alloca [4 x i8], align 1
  %3 = alloca [1024 x i8], align 16
  %4 = alloca [1024 x i8], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #9
  %5 = tail call noalias dereferenceable_or_null(51200) ptr @calloc(i64 noundef 51200, i64 noundef 1) #10
  %6 = sext i32 %0 to i64
  %7 = load ptr, ptr @fileList, align 8, !tbaa !5
  %8 = getelementptr inbounds %struct.FileListStr, ptr %7, i64 %6
  %9 = load i32, ptr %8, align 4, !tbaa !9
  %10 = icmp sgt i32 %9, 0
  br i1 %10, label %.lr.ph301, label %._crit_edge304

.preheader:                                       ; preds = %304
  %11 = icmp sgt i32 %308, 0
  br i1 %11, label %.lr.ph303, label %._crit_edge304

.lr.ph303:                                        ; preds = %.preheader
  %12 = add nsw i32 %308, -1
  %13 = load ptr, ptr @sectInfo, align 8
  %14 = zext nneg i32 %12 to i64
  %wide.trip.count331 = zext nneg i32 %308 to i64
  %xtraiter351 = and i64 %wide.trip.count331, 1
  %15 = icmp eq i32 %308, 1
  br i1 %15, label %._crit_edge304.loopexit.unr-lcssa, label %.lr.ph303.new

.lr.ph303.new:                                    ; preds = %.lr.ph303
  %unroll_iter354 = and i64 %wide.trip.count331, 2147483646
  br label %319

.lr.ph301:                                        ; preds = %1, %304
  %indvars.iv325 = phi i64 [ %indvars.iv.next326, %304 ], [ 0, %1 ]
  %16 = phi ptr [ %306, %304 ], [ %7, %1 ]
  %indvars.iv.next326 = add nuw nsw i64 %indvars.iv325, 1
  %17 = getelementptr inbounds %struct.FileListStr, ptr %16, i64 %6, i32 1, i64 %indvars.iv.next326
  %18 = call i32 (ptr, ptr, ...) @sprintf(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.1, ptr noundef nonnull @path, ptr noundef nonnull %17) #9
  %19 = call noalias ptr @fopen(ptr noundef %5, ptr noundef nonnull @.str.7)
  %20 = icmp eq ptr %19, null
  br i1 %20, label %21, label %25

21:                                               ; preds = %.lr.ph301
  %22 = load ptr, ptr @fileList, align 8, !tbaa !5
  %23 = getelementptr inbounds %struct.FileListStr, ptr %22, i64 %6, i32 1, i64 %indvars.iv.next326
  %24 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3, ptr noundef nonnull %23, ptr noundef nonnull @path, ptr noundef nonnull @.str.4, i32 noundef 166)
  call void @exit(i32 noundef 1) #11
  unreachable

25:                                               ; preds = %.lr.ph301
  %26 = load ptr, ptr @sectInfo, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.SectionStr, ptr %26, i64 %indvars.iv325
  %28 = call ptr @fgets(ptr noundef %5, i32 noundef 51200, ptr noundef nonnull %19)
  %.not295 = icmp eq ptr %28, null
  br i1 %.not295, label %._crit_edge298, label %.lr.ph297

.lr.ph297:                                        ; preds = %25
  %29 = getelementptr inbounds i8, ptr %27, i64 8
  %30 = getelementptr inbounds i8, ptr %27, i64 16
  %31 = getelementptr inbounds i8, ptr %27, i64 24
  %32 = getelementptr inbounds i8, ptr %27, i64 32
  %33 = icmp eq i64 %indvars.iv325, 0
  %34 = getelementptr inbounds i8, ptr %27, i64 40
  %35 = getelementptr inbounds i8, ptr %27, i64 64
  %36 = getelementptr inbounds i8, ptr %27, i64 84
  %37 = getelementptr inbounds i8, ptr %27, i64 120
  %38 = getelementptr inbounds i8, ptr %27, i64 144
  %39 = getelementptr inbounds i8, ptr %27, i64 152
  %40 = getelementptr inbounds i8, ptr %27, i64 288
  %41 = getelementptr inbounds i8, ptr %27, i64 376
  %42 = getelementptr inbounds i8, ptr %27, i64 384
  %43 = getelementptr inbounds i8, ptr %27, i64 392
  %44 = getelementptr inbounds i8, ptr %27, i64 400
  %45 = getelementptr inbounds i8, ptr %27, i64 408
  %46 = getelementptr inbounds i8, ptr %27, i64 336
  %47 = getelementptr inbounds i8, ptr %27, i64 344
  %48 = getelementptr inbounds i8, ptr %27, i64 352
  %49 = getelementptr inbounds i8, ptr %27, i64 304
  %50 = getelementptr inbounds i8, ptr %27, i64 312
  %51 = getelementptr inbounds i8, ptr %27, i64 320
  %52 = getelementptr inbounds i8, ptr %27, i64 212
  %53 = getelementptr inbounds i8, ptr %27, i64 208
  %54 = getelementptr inbounds i8, ptr %27, i64 224
  %55 = getelementptr inbounds i8, ptr %27, i64 232
  %56 = getelementptr inbounds i8, ptr %27, i64 240
  %57 = getelementptr inbounds i8, ptr %27, i64 248
  %58 = getelementptr inbounds i8, ptr %27, i64 256
  %59 = getelementptr inbounds i8, ptr %27, i64 264
  %60 = trunc nuw nsw i64 %indvars.iv325 to i32
  %61 = trunc nuw nsw i64 %indvars.iv325 to i32
  %62 = trunc nuw nsw i64 %indvars.iv325 to i32
  br label %63

63:                                               ; preds = %.lr.ph297, %273
  %64 = load i8, ptr %5, align 1, !tbaa !12
  %65 = icmp eq i8 %64, 35
  br i1 %65, label %66, label %273

66:                                               ; preds = %63
  %67 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %68 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %69 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %70 = load i32, ptr @numofprotein, align 4, !tbaa !13
  %71 = icmp sgt i32 %70, 0
  br i1 %71, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %66
  %72 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %29) #9
  %73 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %30) #9
  %74 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %31) #9
  %75 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %32) #9
  br i1 %33, label %80, label %82

.lr.ph:                                           ; preds = %66, %.lr.ph
  %.0257274 = phi i32 [ %77, %.lr.ph ], [ 0, %66 ]
  %76 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %77 = add nuw nsw i32 %.0257274, 1
  %78 = load i32, ptr @numofprotein, align 4, !tbaa !13
  %79 = icmp slt i32 %77, %78
  br i1 %79, label %.lr.ph, label %._crit_edge, !llvm.loop !14

80:                                               ; preds = %._crit_edge
  %81 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull @cutoffr) #9
  br label %84

82:                                               ; preds = %._crit_edge
  %83 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %84

84:                                               ; preds = %82, %80
  %85 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.9, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %34) #9
  %86 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %87 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %88 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %89 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.10, i64 noundef 9) #12
  %90 = icmp eq i32 %89, 0
  br i1 %90, label %91, label %94

91:                                               ; preds = %84
  %92 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %93 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %94

94:                                               ; preds = %91, %84
  %95 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %5, ptr noundef nonnull dereferenceable(1) @.str.11, i64 noundef 7) #12
  %96 = icmp eq i32 %95, 0
  br i1 %96, label %97, label %103

97:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %3) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %3, i8 0, i64 1024, i1 false)
  %98 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %5, ptr noundef nonnull @.str.12, ptr noundef nonnull %3, ptr noundef nonnull %2, ptr noundef nonnull @CG, ptr noundef nonnull getelementptr inbounds (i8, ptr @CG, i64 16)) #9
  %99 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) @CG, ptr noundef nonnull dereferenceable(1) @.str.13, i64 noundef 2) #12
  %.not266 = icmp eq i32 %99, 0
  br i1 %.not266, label %101, label %100

100:                                              ; preds = %97
  store i32 1, ptr getelementptr inbounds (i8, ptr @CG, i64 32), align 4, !tbaa !16
  br label %101

101:                                              ; preds = %100, %97
  %102 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %3) #9
  br label %103

103:                                              ; preds = %101, %94
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %4) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1024) %4, i8 0, i64 1024, i1 false)
  %104 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef nonnull %5, ptr noundef nonnull @.str.9, ptr noundef nonnull %4, ptr noundef nonnull %2, ptr noundef nonnull %35) #9
  %105 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.9, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %36) #9
  %106 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %35, ptr noundef nonnull dereferenceable(1) @.str.14) #12
  %107 = icmp eq i32 %106, 0
  br i1 %107, label %108, label %109

108:                                              ; preds = %103
  call void @ReadWall(i32 noundef %0, i32 noundef %60)
  br label %109

109:                                              ; preds = %108, %103
  %110 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.9, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %37) #9
  %111 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %38) #9
  %112 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.8, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %39) #9
  br i1 %33, label %113, label %121

113:                                              ; preds = %109
  %114 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %37, ptr noundef nonnull dereferenceable(1) @.str.13) #12
  %.not267 = icmp eq i32 %114, 0
  br i1 %.not267, label %118, label %115

115:                                              ; preds = %113
  %116 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull getelementptr inbounds (i8, ptr @boxOrigDim, i64 8), ptr noundef nonnull getelementptr inbounds (i8, ptr @boxOrigDim, i64 16), ptr noundef nonnull getelementptr inbounds (i8, ptr @boxOrigDim, i64 24)) #9
  %117 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %124

118:                                              ; preds = %113
  %119 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %120 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull getelementptr inbounds (i8, ptr @boxOrigDim, i64 8), ptr noundef nonnull getelementptr inbounds (i8, ptr @boxOrigDim, i64 16), ptr noundef nonnull getelementptr inbounds (i8, ptr @boxOrigDim, i64 24)) #9
  br label %124

121:                                              ; preds = %109
  %122 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %123 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %124

124:                                              ; preds = %115, %118, %121
  %125 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %40) #9
  %126 = load i32, ptr %40, align 8, !tbaa !18
  switch i32 %126, label %206 [
    i32 1, label %127
    i32 2, label %129
    i32 3, label %131
  ]

127:                                              ; preds = %124
  %128 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %49, ptr noundef nonnull %50, ptr noundef nonnull %51) #9
  br label %208

129:                                              ; preds = %124
  %130 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %46, ptr noundef nonnull %47, ptr noundef nonnull %48) #9
  br label %208

131:                                              ; preds = %124
  %132 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.17, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %41) #9
  %133 = load i32, ptr %41, align 8, !tbaa !31
  %134 = sext i32 %133 to i64
  %135 = call noalias ptr @calloc(i64 noundef %134, i64 noundef 8) #10
  store ptr %135, ptr %42, align 8, !tbaa !32
  %136 = shl nsw i32 %133, 2
  %137 = sext i32 %136 to i64
  %138 = call noalias ptr @calloc(i64 noundef %137, i64 noundef 8) #10
  store ptr %138, ptr %135, align 8, !tbaa !5
  %139 = icmp sgt i32 %133, 1
  br i1 %139, label %.lr.ph277.preheader, label %._crit_edge282.critedge

.lr.ph277.preheader:                              ; preds = %131
  %wide.trip.count = zext nneg i32 %133 to i64
  %140 = add nsw i64 %wide.trip.count, -1
  %141 = add nsw i64 %wide.trip.count, -2
  %xtraiter = and i64 %140, 3
  %142 = icmp ult i64 %141, 3
  br i1 %142, label %._crit_edge278.unr-lcssa, label %.lr.ph277.preheader.new

.lr.ph277.preheader.new:                          ; preds = %.lr.ph277.preheader
  %unroll_iter = and i64 %140, -4
  br label %.lr.ph277

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

.lr.ph277.epil:                                   ; preds = %._crit_edge278.unr-lcssa, %.lr.ph277.epil
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph277.epil ], [ %indvars.iv.unr, %._crit_edge278.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph277.epil ], [ 0, %._crit_edge278.unr-lcssa ]
  %143 = load ptr, ptr %42, align 8, !tbaa !32
  %144 = load ptr, ptr %143, align 8, !tbaa !5
  %.idx.epil = shl nsw i64 %indvars.iv.epil, 5
  %145 = getelementptr inbounds i8, ptr %144, i64 %.idx.epil
  %146 = getelementptr inbounds ptr, ptr %143, i64 %indvars.iv.epil
  store ptr %145, ptr %146, align 8, !tbaa !5
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge278, label %.lr.ph277.epil, !llvm.loop !33

._crit_edge278:                                   ; preds = %.lr.ph277.epil, %._crit_edge278.unr-lcssa
  %147 = call noalias ptr @calloc(i64 noundef %134, i64 noundef 8) #10
  store ptr %147, ptr %43, align 8, !tbaa !35
  %148 = call noalias ptr @calloc(i64 noundef %137, i64 noundef 8) #10
  store ptr %148, ptr %147, align 8, !tbaa !5
  br i1 %139, label %.lr.ph281.preheader, label %._crit_edge282

.lr.ph281.preheader:                              ; preds = %._crit_edge278
  %xtraiter341 = and i64 %140, 3
  %149 = icmp ult i64 %141, 3
  br i1 %149, label %._crit_edge282.loopexit.unr-lcssa, label %.lr.ph281.preheader.new

.lr.ph281.preheader.new:                          ; preds = %.lr.ph281.preheader
  %unroll_iter344 = and i64 %140, -4
  br label %.lr.ph281

.lr.ph277:                                        ; preds = %.lr.ph277, %.lr.ph277.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph277.preheader.new ], [ %indvars.iv.next.3, %.lr.ph277 ]
  %niter = phi i64 [ 0, %.lr.ph277.preheader.new ], [ %niter.next.3, %.lr.ph277 ]
  %150 = load ptr, ptr %42, align 8, !tbaa !32
  %151 = load ptr, ptr %150, align 8, !tbaa !5
  %.idx = shl nsw i64 %indvars.iv, 5
  %152 = getelementptr inbounds i8, ptr %151, i64 %.idx
  %153 = getelementptr inbounds ptr, ptr %150, i64 %indvars.iv
  store ptr %152, ptr %153, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %154 = load ptr, ptr %42, align 8, !tbaa !32
  %155 = load ptr, ptr %154, align 8, !tbaa !5
  %.idx.1 = shl nsw i64 %indvars.iv.next, 5
  %156 = getelementptr inbounds i8, ptr %155, i64 %.idx.1
  %157 = getelementptr inbounds ptr, ptr %154, i64 %indvars.iv.next
  store ptr %156, ptr %157, align 8, !tbaa !5
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %158 = load ptr, ptr %42, align 8, !tbaa !32
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  %.idx.2 = shl nsw i64 %indvars.iv.next.1, 5
  %160 = getelementptr inbounds i8, ptr %159, i64 %.idx.2
  %161 = getelementptr inbounds ptr, ptr %158, i64 %indvars.iv.next.1
  store ptr %160, ptr %161, align 8, !tbaa !5
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %162 = load ptr, ptr %42, align 8, !tbaa !32
  %163 = load ptr, ptr %162, align 8, !tbaa !5
  %.idx.3 = shl nsw i64 %indvars.iv.next.2, 5
  %164 = getelementptr inbounds i8, ptr %163, i64 %.idx.3
  %165 = getelementptr inbounds ptr, ptr %162, i64 %indvars.iv.next.2
  store ptr %164, ptr %165, align 8, !tbaa !5
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge278.unr-lcssa, label %.lr.ph277, !llvm.loop !36

._crit_edge282.critedge:                          ; preds = %131
  %166 = call noalias ptr @calloc(i64 noundef %134, i64 noundef 8) #10
  store ptr %166, ptr %43, align 8, !tbaa !35
  %167 = call noalias ptr @calloc(i64 noundef %137, i64 noundef 8) #10
  store ptr %167, ptr %166, align 8, !tbaa !5
  br label %._crit_edge282

._crit_edge282.loopexit.unr-lcssa:                ; preds = %.lr.ph281, %.lr.ph281.preheader
  %indvars.iv309.unr = phi i64 [ 1, %.lr.ph281.preheader ], [ %indvars.iv.next310.3, %.lr.ph281 ]
  %lcmp.mod343.not = icmp eq i64 %xtraiter341, 0
  br i1 %lcmp.mod343.not, label %._crit_edge282, label %.lr.ph281.epil

.lr.ph281.epil:                                   ; preds = %._crit_edge282.loopexit.unr-lcssa, %.lr.ph281.epil
  %indvars.iv309.epil = phi i64 [ %indvars.iv.next310.epil, %.lr.ph281.epil ], [ %indvars.iv309.unr, %._crit_edge282.loopexit.unr-lcssa ]
  %epil.iter342 = phi i64 [ %epil.iter342.next, %.lr.ph281.epil ], [ 0, %._crit_edge282.loopexit.unr-lcssa ]
  %168 = load ptr, ptr %43, align 8, !tbaa !35
  %169 = load ptr, ptr %168, align 8, !tbaa !5
  %.idx333.epil = shl nsw i64 %indvars.iv309.epil, 5
  %170 = getelementptr inbounds i8, ptr %169, i64 %.idx333.epil
  %171 = getelementptr inbounds ptr, ptr %168, i64 %indvars.iv309.epil
  store ptr %170, ptr %171, align 8, !tbaa !5
  %indvars.iv.next310.epil = add nuw nsw i64 %indvars.iv309.epil, 1
  %epil.iter342.next = add i64 %epil.iter342, 1
  %epil.iter342.cmp.not = icmp eq i64 %epil.iter342.next, %xtraiter341
  br i1 %epil.iter342.cmp.not, label %._crit_edge282, label %.lr.ph281.epil, !llvm.loop !37

._crit_edge282:                                   ; preds = %._crit_edge282.loopexit.unr-lcssa, %.lr.ph281.epil, %._crit_edge282.critedge, %._crit_edge278
  %172 = call noalias ptr @calloc(i64 noundef %134, i64 noundef 8) #10
  store ptr %172, ptr %44, align 8, !tbaa !38
  %173 = call noalias ptr @calloc(i64 noundef %134, i64 noundef 8) #10
  store ptr %173, ptr %45, align 8, !tbaa !39
  %174 = icmp sgt i32 %133, 0
  br i1 %174, label %.lr.ph285, label %._crit_edge286

.lr.ph281:                                        ; preds = %.lr.ph281, %.lr.ph281.preheader.new
  %indvars.iv309 = phi i64 [ 1, %.lr.ph281.preheader.new ], [ %indvars.iv.next310.3, %.lr.ph281 ]
  %niter345 = phi i64 [ 0, %.lr.ph281.preheader.new ], [ %niter345.next.3, %.lr.ph281 ]
  %175 = load ptr, ptr %43, align 8, !tbaa !35
  %176 = load ptr, ptr %175, align 8, !tbaa !5
  %.idx333 = shl nsw i64 %indvars.iv309, 5
  %177 = getelementptr inbounds i8, ptr %176, i64 %.idx333
  %178 = getelementptr inbounds ptr, ptr %175, i64 %indvars.iv309
  store ptr %177, ptr %178, align 8, !tbaa !5
  %indvars.iv.next310 = add nuw nsw i64 %indvars.iv309, 1
  %179 = load ptr, ptr %43, align 8, !tbaa !35
  %180 = load ptr, ptr %179, align 8, !tbaa !5
  %.idx333.1 = shl nsw i64 %indvars.iv.next310, 5
  %181 = getelementptr inbounds i8, ptr %180, i64 %.idx333.1
  %182 = getelementptr inbounds ptr, ptr %179, i64 %indvars.iv.next310
  store ptr %181, ptr %182, align 8, !tbaa !5
  %indvars.iv.next310.1 = add nuw nsw i64 %indvars.iv309, 2
  %183 = load ptr, ptr %43, align 8, !tbaa !35
  %184 = load ptr, ptr %183, align 8, !tbaa !5
  %.idx333.2 = shl nsw i64 %indvars.iv.next310.1, 5
  %185 = getelementptr inbounds i8, ptr %184, i64 %.idx333.2
  %186 = getelementptr inbounds ptr, ptr %183, i64 %indvars.iv.next310.1
  store ptr %185, ptr %186, align 8, !tbaa !5
  %indvars.iv.next310.2 = add nuw nsw i64 %indvars.iv309, 3
  %187 = load ptr, ptr %43, align 8, !tbaa !35
  %188 = load ptr, ptr %187, align 8, !tbaa !5
  %.idx333.3 = shl nsw i64 %indvars.iv.next310.2, 5
  %189 = getelementptr inbounds i8, ptr %188, i64 %.idx333.3
  %190 = getelementptr inbounds ptr, ptr %187, i64 %indvars.iv.next310.2
  store ptr %189, ptr %190, align 8, !tbaa !5
  %indvars.iv.next310.3 = add nuw nsw i64 %indvars.iv309, 4
  %niter345.next.3 = add i64 %niter345, 4
  %niter345.ncmp.3 = icmp eq i64 %niter345.next.3, %unroll_iter344
  br i1 %niter345.ncmp.3, label %._crit_edge282.loopexit.unr-lcssa, label %.lr.ph281, !llvm.loop !40

._crit_edge286:                                   ; preds = %.lr.ph285, %._crit_edge282
  %191 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %208

.lr.ph285:                                        ; preds = %._crit_edge282, %.lr.ph285
  %indvars.iv314 = phi i64 [ %indvars.iv.next315, %.lr.ph285 ], [ 0, %._crit_edge282 ]
  %192 = load ptr, ptr %42, align 8, !tbaa !32
  %193 = getelementptr inbounds ptr, ptr %192, i64 %indvars.iv314
  %194 = load ptr, ptr %193, align 8, !tbaa !5
  %195 = getelementptr inbounds i8, ptr %194, i64 8
  %196 = getelementptr inbounds i8, ptr %194, i64 16
  %197 = getelementptr inbounds i8, ptr %194, i64 24
  %198 = load ptr, ptr %44, align 8, !tbaa !38
  %199 = getelementptr inbounds double, ptr %198, i64 %indvars.iv314
  %200 = load ptr, ptr %45, align 8, !tbaa !39
  %201 = getelementptr inbounds double, ptr %200, i64 %indvars.iv314
  %202 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.18, ptr noundef nonnull %2, ptr noundef nonnull %195, ptr noundef nonnull %196, ptr noundef nonnull %197, ptr noundef %199, ptr noundef %201, ptr noundef nonnull %2) #9
  %indvars.iv.next315 = add nuw nsw i64 %indvars.iv314, 1
  %203 = load i32, ptr %41, align 8, !tbaa !31
  %204 = sext i32 %203 to i64
  %205 = icmp slt i64 %indvars.iv.next315, %204
  br i1 %205, label %.lr.ph285, label %._crit_edge286, !llvm.loop !41

206:                                              ; preds = %124
  %207 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %208

208:                                              ; preds = %129, %206, %._crit_edge286, %127
  %209 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %52) #9
  %210 = load i32, ptr %52, align 4, !tbaa !42
  %.not268 = icmp eq i32 %210, 0
  br i1 %.not268, label %263, label %211

211:                                              ; preds = %208
  store i32 1, ptr %53, align 8, !tbaa !43
  %212 = sext i32 %210 to i64
  %213 = call noalias ptr @calloc(i64 noundef %212, i64 noundef 8) #10
  store ptr %213, ptr %54, align 8, !tbaa !44
  %214 = shl nsw i32 %210, 2
  %215 = sext i32 %214 to i64
  %216 = call noalias ptr @calloc(i64 noundef %215, i64 noundef 8) #10
  store ptr %216, ptr %213, align 8, !tbaa !5
  %217 = icmp sgt i32 %210, 1
  br i1 %217, label %.lr.ph289.preheader, label %._crit_edge290

.lr.ph289.preheader:                              ; preds = %211
  %wide.trip.count320 = zext nneg i32 %210 to i64
  %218 = add nsw i64 %wide.trip.count320, -1
  %219 = add nsw i64 %wide.trip.count320, -2
  %xtraiter346 = and i64 %218, 3
  %220 = icmp ult i64 %219, 3
  br i1 %220, label %._crit_edge290.loopexit.unr-lcssa, label %.lr.ph289.preheader.new

.lr.ph289.preheader.new:                          ; preds = %.lr.ph289.preheader
  %unroll_iter349 = and i64 %218, -4
  br label %.lr.ph289

._crit_edge290.loopexit.unr-lcssa:                ; preds = %.lr.ph289, %.lr.ph289.preheader
  %indvars.iv317.unr = phi i64 [ 1, %.lr.ph289.preheader ], [ %indvars.iv.next318.3, %.lr.ph289 ]
  %lcmp.mod348.not = icmp eq i64 %xtraiter346, 0
  br i1 %lcmp.mod348.not, label %._crit_edge290, label %.lr.ph289.epil

.lr.ph289.epil:                                   ; preds = %._crit_edge290.loopexit.unr-lcssa, %.lr.ph289.epil
  %indvars.iv317.epil = phi i64 [ %indvars.iv.next318.epil, %.lr.ph289.epil ], [ %indvars.iv317.unr, %._crit_edge290.loopexit.unr-lcssa ]
  %epil.iter347 = phi i64 [ %epil.iter347.next, %.lr.ph289.epil ], [ 0, %._crit_edge290.loopexit.unr-lcssa ]
  %221 = load ptr, ptr %54, align 8, !tbaa !44
  %222 = load ptr, ptr %221, align 8, !tbaa !5
  %.idx334.epil = shl nsw i64 %indvars.iv317.epil, 5
  %223 = getelementptr inbounds i8, ptr %222, i64 %.idx334.epil
  %224 = getelementptr inbounds ptr, ptr %221, i64 %indvars.iv317.epil
  store ptr %223, ptr %224, align 8, !tbaa !5
  %indvars.iv.next318.epil = add nuw nsw i64 %indvars.iv317.epil, 1
  %epil.iter347.next = add i64 %epil.iter347, 1
  %epil.iter347.cmp.not = icmp eq i64 %epil.iter347.next, %xtraiter346
  br i1 %epil.iter347.cmp.not, label %._crit_edge290, label %.lr.ph289.epil, !llvm.loop !45

._crit_edge290:                                   ; preds = %._crit_edge290.loopexit.unr-lcssa, %.lr.ph289.epil, %211
  %225 = call noalias ptr @calloc(i64 noundef %212, i64 noundef 16) #10
  store ptr %225, ptr %55, align 8, !tbaa !46
  %226 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.1, ptr noundef nonnull %5, ptr noundef nonnull %2) #9
  %227 = load i32, ptr %52, align 4, !tbaa !42
  %228 = icmp sgt i32 %227, 0
  br i1 %228, label %.lr.ph293, label %._crit_edge294

.lr.ph289:                                        ; preds = %.lr.ph289, %.lr.ph289.preheader.new
  %indvars.iv317 = phi i64 [ 1, %.lr.ph289.preheader.new ], [ %indvars.iv.next318.3, %.lr.ph289 ]
  %niter350 = phi i64 [ 0, %.lr.ph289.preheader.new ], [ %niter350.next.3, %.lr.ph289 ]
  %229 = load ptr, ptr %54, align 8, !tbaa !44
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  %.idx334 = shl nsw i64 %indvars.iv317, 5
  %231 = getelementptr inbounds i8, ptr %230, i64 %.idx334
  %232 = getelementptr inbounds ptr, ptr %229, i64 %indvars.iv317
  store ptr %231, ptr %232, align 8, !tbaa !5
  %indvars.iv.next318 = add nuw nsw i64 %indvars.iv317, 1
  %233 = load ptr, ptr %54, align 8, !tbaa !44
  %234 = load ptr, ptr %233, align 8, !tbaa !5
  %.idx334.1 = shl nsw i64 %indvars.iv.next318, 5
  %235 = getelementptr inbounds i8, ptr %234, i64 %.idx334.1
  %236 = getelementptr inbounds ptr, ptr %233, i64 %indvars.iv.next318
  store ptr %235, ptr %236, align 8, !tbaa !5
  %indvars.iv.next318.1 = add nuw nsw i64 %indvars.iv317, 2
  %237 = load ptr, ptr %54, align 8, !tbaa !44
  %238 = load ptr, ptr %237, align 8, !tbaa !5
  %.idx334.2 = shl nsw i64 %indvars.iv.next318.1, 5
  %239 = getelementptr inbounds i8, ptr %238, i64 %.idx334.2
  %240 = getelementptr inbounds ptr, ptr %237, i64 %indvars.iv.next318.1
  store ptr %239, ptr %240, align 8, !tbaa !5
  %indvars.iv.next318.2 = add nuw nsw i64 %indvars.iv317, 3
  %241 = load ptr, ptr %54, align 8, !tbaa !44
  %242 = load ptr, ptr %241, align 8, !tbaa !5
  %.idx334.3 = shl nsw i64 %indvars.iv.next318.2, 5
  %243 = getelementptr inbounds i8, ptr %242, i64 %.idx334.3
  %244 = getelementptr inbounds ptr, ptr %241, i64 %indvars.iv.next318.2
  store ptr %243, ptr %244, align 8, !tbaa !5
  %indvars.iv.next318.3 = add nuw nsw i64 %indvars.iv317, 4
  %niter350.next.3 = add i64 %niter350, 4
  %niter350.ncmp.3 = icmp eq i64 %niter350.next.3, %unroll_iter349
  br i1 %niter350.ncmp.3, label %._crit_edge290.loopexit.unr-lcssa, label %.lr.ph289, !llvm.loop !47

._crit_edge294:                                   ; preds = %259, %._crit_edge290
  %245 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  call void @ReadObst(i32 noundef %0, i32 noundef %61)
  br label %265

.lr.ph293:                                        ; preds = %._crit_edge290, %259
  %indvars.iv322 = phi i64 [ %indvars.iv.next323, %259 ], [ 0, %._crit_edge290 ]
  %246 = load ptr, ptr %54, align 8, !tbaa !44
  %247 = getelementptr inbounds ptr, ptr %246, i64 %indvars.iv322
  %248 = load ptr, ptr %247, align 8, !tbaa !5
  %249 = getelementptr inbounds i8, ptr %248, i64 8
  %250 = getelementptr inbounds i8, ptr %248, i64 16
  %251 = getelementptr inbounds i8, ptr %248, i64 24
  %252 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.19, ptr noundef nonnull %249, ptr noundef nonnull %250, ptr noundef nonnull %251) #9
  %253 = load i32, ptr %52, align 4, !tbaa !42
  %254 = add nsw i32 %253, -1
  %255 = sext i32 %254 to i64
  %256 = icmp slt i64 %indvars.iv322, %255
  br i1 %256, label %257, label %259

257:                                              ; preds = %.lr.ph293
  %258 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.20, ptr noundef nonnull %2) #9
  %.pre = load i32, ptr %52, align 4, !tbaa !42
  br label %259

259:                                              ; preds = %.lr.ph293, %257
  %260 = phi i32 [ %253, %.lr.ph293 ], [ %.pre, %257 ]
  %indvars.iv.next323 = add nuw nsw i64 %indvars.iv322, 1
  %261 = sext i32 %260 to i64
  %262 = icmp slt i64 %indvars.iv.next323, %261
  br i1 %262, label %.lr.ph293, label %._crit_edge294, !llvm.loop !48

263:                                              ; preds = %208
  %264 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %265

265:                                              ; preds = %263, %._crit_edge294
  %266 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.16, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %56) #9
  %267 = load i32, ptr %56, align 8, !tbaa !49
  %.not269 = icmp eq i32 %267, 0
  br i1 %.not269, label %270, label %268

268:                                              ; preds = %265
  %269 = call i32 (ptr, ptr, ...) @__isoc99_fscanf(ptr noundef %19, ptr noundef nonnull @.str.15, ptr noundef nonnull %5, ptr noundef nonnull %2, ptr noundef nonnull %57, ptr noundef nonnull %58, ptr noundef nonnull %59) #9
  call void @ReadWall(i32 noundef %0, i32 noundef %62)
  br label %272

270:                                              ; preds = %265
  %271 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  br label %272

272:                                              ; preds = %270, %268
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %4) #9
  br label %273

273:                                              ; preds = %272, %63
  %274 = call ptr @fgets(ptr noundef nonnull %5, i32 noundef 51200, ptr noundef %19)
  %.not = icmp eq ptr %274, null
  br i1 %.not, label %._crit_edge298, label %63, !llvm.loop !50

._crit_edge298:                                   ; preds = %273, %25
  %275 = getelementptr inbounds i8, ptr %27, i64 64
  %276 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %275, ptr noundef nonnull dereferenceable(1) @.str.14) #12
  %277 = icmp eq i32 %276, 0
  br i1 %277, label %278, label %294

278:                                              ; preds = %._crit_edge298
  %279 = getelementptr inbounds i8, ptr %27, i64 112
  %280 = load ptr, ptr %279, align 8, !tbaa !51
  %281 = getelementptr inbounds i8, ptr %280, i64 24
  %282 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @boxOrigDim, i64 8), align 8, !tbaa !52
  %283 = fmul <2 x double> %282, <double 5.000000e-01, double 5.000000e-01>
  store <2 x double> %283, ptr %281, align 8, !tbaa !52
  %284 = load double, ptr getelementptr inbounds (i8, ptr @boxOrigDim, i64 24), align 8, !tbaa !52
  %285 = fmul double %284, 5.000000e-01
  %286 = getelementptr inbounds i8, ptr %280, i64 40
  store double %285, ptr %286, align 8, !tbaa !52
  %287 = getelementptr inbounds i8, ptr %27, i64 84
  %288 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %287, ptr noundef nonnull dereferenceable(1) @.str.21) #12
  %289 = icmp eq i32 %288, 0
  br i1 %289, label %290, label %291

290:                                              ; preds = %278
  store double 0.000000e+00, ptr %286, align 8, !tbaa !52
  br label %.sink.split

291:                                              ; preds = %278
  %292 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %287, ptr noundef nonnull dereferenceable(1) @.str.22) #12
  %293 = icmp eq i32 %292, 0
  br i1 %293, label %.sink.split, label %294

.sink.split:                                      ; preds = %291, %290
  store double 0.000000e+00, ptr %281, align 8, !tbaa !52
  br label %294

294:                                              ; preds = %.sink.split, %291, %._crit_edge298
  %295 = getelementptr inbounds i8, ptr %27, i64 240
  %296 = load i32, ptr %295, align 8, !tbaa !49
  %.not265 = icmp eq i32 %296, 0
  br i1 %.not265, label %304, label %297

297:                                              ; preds = %294
  %298 = getelementptr inbounds i8, ptr %27, i64 280
  %299 = load ptr, ptr %298, align 8, !tbaa !53
  %300 = getelementptr inbounds i8, ptr %299, i64 24
  store double 0.000000e+00, ptr %300, align 8, !tbaa !52
  %301 = getelementptr inbounds i8, ptr %299, i64 32
  %302 = load <2 x double>, ptr getelementptr inbounds (i8, ptr @boxOrigDim, i64 16), align 16, !tbaa !52
  %303 = fmul <2 x double> %302, <double 5.000000e-01, double 5.000000e-01>
  store <2 x double> %303, ptr %301, align 8, !tbaa !52
  br label %304

304:                                              ; preds = %297, %294
  %305 = call i32 @fclose(ptr noundef %19)
  %306 = load ptr, ptr @fileList, align 8, !tbaa !5
  %307 = getelementptr inbounds %struct.FileListStr, ptr %306, i64 %6
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = icmp slt i64 %indvars.iv.next326, %309
  br i1 %310, label %.lr.ph301, label %.preheader, !llvm.loop !54

._crit_edge304.loopexit.unr-lcssa:                ; preds = %319, %.lr.ph303
  %indvars.iv328.unr = phi i64 [ 0, %.lr.ph303 ], [ %indvars.iv.next329.1, %319 ]
  %lcmp.mod353.not = icmp eq i64 %xtraiter351, 0
  br i1 %lcmp.mod353.not, label %._crit_edge304, label %._crit_edge304.loopexit.epilog-lcssa

._crit_edge304.loopexit.epilog-lcssa:             ; preds = %._crit_edge304.loopexit.unr-lcssa
  %311 = icmp ult i64 %indvars.iv328.unr, %14
  %312 = getelementptr inbounds %struct.SectionStr, ptr %13, i64 %indvars.iv328.unr
  %313 = getelementptr inbounds i8, ptr %312, i64 8
  %314 = load double, ptr %313, align 8, !tbaa !55
  %..epil = select i1 %311, i64 424, i64 16
  %315 = getelementptr inbounds i8, ptr %312, i64 %..epil
  %316 = load double, ptr %315, align 8, !tbaa !52
  %317 = fsub double %316, %314
  %318 = fptosi double %317 to i64
  store i64 %318, ptr %312, align 8, !tbaa !56
  br label %._crit_edge304

._crit_edge304:                                   ; preds = %._crit_edge304.loopexit.epilog-lcssa, %._crit_edge304.loopexit.unr-lcssa, %1, %.preheader
  call void @free(ptr noundef %5) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #9
  ret i32 1

319:                                              ; preds = %319, %.lr.ph303.new
  %indvars.iv328 = phi i64 [ 0, %.lr.ph303.new ], [ %indvars.iv.next329.1, %319 ]
  %niter355 = phi i64 [ 0, %.lr.ph303.new ], [ %niter355.next.1, %319 ]
  %320 = icmp ult i64 %indvars.iv328, %14
  %321 = getelementptr inbounds %struct.SectionStr, ptr %13, i64 %indvars.iv328
  %322 = getelementptr inbounds i8, ptr %321, i64 8
  %323 = load double, ptr %322, align 8, !tbaa !55
  %. = select i1 %320, i64 424, i64 16
  %324 = getelementptr inbounds i8, ptr %321, i64 %.
  %325 = load double, ptr %324, align 8, !tbaa !52
  %326 = fsub double %325, %323
  %327 = fptosi double %326 to i64
  store i64 %327, ptr %321, align 8, !tbaa !56
  %indvars.iv.next329 = or disjoint i64 %indvars.iv328, 1
  %328 = icmp ult i64 %indvars.iv.next329, %14
  %329 = getelementptr inbounds %struct.SectionStr, ptr %13, i64 %indvars.iv.next329
  %330 = getelementptr inbounds i8, ptr %329, i64 8
  %331 = load double, ptr %330, align 8, !tbaa !55
  %..1 = select i1 %328, i64 424, i64 16
  %332 = getelementptr inbounds i8, ptr %329, i64 %..1
  %333 = load double, ptr %332, align 8, !tbaa !52
  %334 = fsub double %333, %331
  %335 = fptosi double %334 to i64
  store i64 %335, ptr %329, align 8, !tbaa !56
  %indvars.iv.next329.1 = add nuw nsw i64 %indvars.iv328, 2
  %niter355.next.1 = add i64 %niter355, 2
  %niter355.ncmp.1 = icmp eq i64 %niter355.next.1, %unroll_iter354
  br i1 %niter355.ncmp.1, label %._crit_edge304.loopexit.unr-lcssa, label %319, !llvm.loop !57
}

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

declare i32 @__isoc99_fscanf(ptr noundef, ptr noundef, ...) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #6

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "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 = { mustprogress nofree nounwind willreturn memory(argmem: read) "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 #7 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #8 = { 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 #9 = { nounwind }
attributes #10 = { nounwind allocsize(0,1) }
attributes #11 = { noreturn nounwind }
attributes #12 = { nounwind willreturn memory(read) }

!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, !11, i64 0}
!10 = !{!"FileListStr", !11, i64 0, !7, i64 4}
!11 = !{!"int", !7, i64 0}
!12 = !{!7, !7, i64 0}
!13 = !{!11, !11, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!17, !11, i64 32}
!17 = !{!"CGGovStr", !7, i64 0, !11, i64 32, !11, i64 36}
!18 = !{!19, !11, i64 288}
!19 = !{!"SectionStr", !20, i64 0, !21, i64 8, !21, i64 16, !21, i64 24, !21, i64 32, !7, i64 40, !22, i64 64, !24, i64 120, !25, i64 208, !26, i64 240, !27, i64 288}
!20 = !{!"long", !7, i64 0}
!21 = !{!"double", !7, i64 0}
!22 = !{!"WallStr", !7, i64 0, !7, i64 20, !23, i64 40}
!23 = !{!"AtomStr", !6, i64 0, !6, i64 8}
!24 = !{!"DynamicWallStr", !7, i64 0, !11, i64 16, !11, i64 20, !21, i64 24, !21, i64 32, !21, i64 40, !21, i64 48, !7, i64 56}
!25 = !{!"ObstructionStr", !11, i64 0, !11, i64 4, !6, i64 8, !6, i64 16, !6, i64 24}
!26 = !{!"TunnelStr", !11, i64 0, !21, i64 8, !21, i64 16, !21, i64 24, !23, i64 32}
!27 = !{!"FlowStr", !11, i64 0, !28, i64 8, !29, i64 40, !30, i64 88}
!28 = !{!"ConstVStr", !7, i64 0}
!29 = !{!"ForceStr", !7, i64 0, !6, i64 32, !6, i64 40}
!30 = !{!"ChargeStr", !11, i64 0, !11, i64 4, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!31 = !{!19, !11, i64 376}
!32 = !{!19, !6, i64 384}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.unroll.disable"}
!35 = !{!19, !6, i64 392}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !34}
!38 = !{!19, !6, i64 400}
!39 = !{!19, !6, i64 408}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15}
!42 = !{!19, !11, i64 212}
!43 = !{!19, !11, i64 208}
!44 = !{!19, !6, i64 224}
!45 = distinct !{!45, !34}
!46 = !{!19, !6, i64 232}
!47 = distinct !{!47, !15}
!48 = distinct !{!48, !15}
!49 = !{!19, !11, i64 240}
!50 = distinct !{!50, !15}
!51 = !{!19, !6, i64 112}
!52 = !{!21, !21, i64 0}
!53 = !{!19, !6, i64 280}
!54 = distinct !{!54, !15}
!55 = !{!19, !21, i64 8}
!56 = !{!19, !20, i64 0}
!57 = distinct !{!57, !15}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass