; LLVM IR from EntityFX/anybench :: src/benchmarks/generic/memspeed (memspeed)

; 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"

@runSecs = external dso_local global double, align 8
@secs = external global double, align 8
@n1 = external dso_local global i32, align 4
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [45 x i8], align 1
@xd = external dso_local global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [18 x i8], align 1
@yd = external dso_local global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@timeday = external global [30 x i8], align 16
@.str.8 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [33 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @checkTime() #0

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #1

; Function Attrs: nounwind uwtable
define dso_local i32 @main(i32 noundef %0, ptr noundef %1) #0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca [25 x i32], align 16
  %7 = alloca [25 x i32], align 16
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca float, align 4
  %11 = alloca float, align 4
  %12 = alloca float, align 4
  %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
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca [1024 x i8], align 16
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 100, ptr %6) #7
  call void @llvm.lifetime.start.p0(i64 100, ptr %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #7
  store double 0.000000e+00, ptr %8, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  store float 1.000000e+00, ptr %11, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store float 0.000000e+00, ptr %12, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 1, ptr %24, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  store double 1.000000e+00, ptr %30, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  store double 0.000000e+00, ptr %31, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  store i32 12, ptr %33, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %40 = load i32, ptr %4, align 4, !tbaa !5
  %41 = icmp sge i32 %40, 2
  br i1 %41, label %42, label %57

42:                                               ; preds = %2
  %43 = load ptr, ptr %5, align 8, !tbaa !9
  %44 = getelementptr inbounds ptr, ptr %43, i64 1
  %45 = load ptr, ptr %44, align 8, !tbaa !9
  %46 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %45, ptr noundef @.str, ptr noundef %33) #7
  %47 = load i32, ptr %33, align 4, !tbaa !5
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %52, label %49

49:                                               ; preds = %42
  %50 = load i32, ptr %33, align 4, !tbaa !5
  %51 = icmp sgt i32 %50, 23
  br i1 %51, label %52, label %56

52:                                               ; preds = %49, %42
  %53 = call i32 (ptr, ...) @printf(ptr noundef @.str.1)
  %54 = call i32 (ptr, ...) @printf(ptr noundef @.str.2)
  %55 = call i32 (ptr, ...) @printf(ptr noundef @.str.3)
  call void @exit(i32 noundef 1) #8
  unreachable

56:                                               ; preds = %49
  br label %57

57:                                               ; preds = %56, %2
  %58 = load i32, ptr %4, align 4, !tbaa !5
  %59 = icmp sge i32 %58, 3
  br i1 %59, label %60, label %85

60:                                               ; preds = %57
  %61 = load ptr, ptr %5, align 8, !tbaa !9
  %62 = getelementptr inbounds ptr, ptr %61, i64 2
  %63 = load ptr, ptr %62, align 8, !tbaa !9
  %64 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %63, ptr noundef @.str, ptr noundef %34) #7
  %65 = load i32, ptr %34, align 4, !tbaa !5
  %66 = icmp sgt i32 %65, 0
  br i1 %66, label %67, label %84

67:                                               ; preds = %60
  %68 = load i32, ptr %34, align 4, !tbaa !5
  %69 = icmp sgt i32 %68, 120
  br i1 %69, label %70, label %71

70:                                               ; preds = %67
  store i32 16, ptr %33, align 4, !tbaa !5
  br label %71

71:                                               ; preds = %70, %67
  %72 = load i32, ptr %34, align 4, !tbaa !5
  %73 = icmp sgt i32 %72, 250
  br i1 %73, label %74, label %75

74:                                               ; preds = %71
  store i32 17, ptr %33, align 4, !tbaa !5
  br label %75

75:                                               ; preds = %74, %71
  %76 = load i32, ptr %34, align 4, !tbaa !5
  %77 = icmp sgt i32 %76, 500
  br i1 %77, label %78, label %79

78:                                               ; preds = %75
  store i32 18, ptr %33, align 4, !tbaa !5
  br label %79

79:                                               ; preds = %78, %75
  %80 = load i32, ptr %34, align 4, !tbaa !5
  %81 = icmp sgt i32 %80, 1000
  br i1 %81, label %82, label %83

82:                                               ; preds = %79
  store i32 19, ptr %33, align 4, !tbaa !5
  br label %83

83:                                               ; preds = %82, %79
  br label %84

84:                                               ; preds = %83, %60
  br label %85

85:                                               ; preds = %84, %57
  %86 = call i32 (ptr, ...) @printf(ptr noundef @.str.4)
  %87 = getelementptr inbounds [25 x i32], ptr %7, i64 0, i64 0
  store i32 2, ptr %87, align 16, !tbaa !5
  store i32 1, ptr %14, align 4, !tbaa !5
  br label %88

88:                                               ; preds = %101, %85
  %89 = load i32, ptr %14, align 4, !tbaa !5
  %90 = icmp slt i32 %89, 23
  br i1 %90, label %91, label %104

91:                                               ; preds = %88
  %92 = load i32, ptr %14, align 4, !tbaa !5
  %93 = sub nsw i32 %92, 1
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds [25 x i32], ptr %7, i64 0, i64 %94
  %96 = load i32, ptr %95, align 4, !tbaa !5
  %97 = mul nsw i32 %96, 2
  %98 = load i32, ptr %14, align 4, !tbaa !5
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds [25 x i32], ptr %7, i64 0, i64 %99
  store i32 %97, ptr %100, align 4, !tbaa !5
  br label %101

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

104:                                              ; preds = %88
  %105 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 0
  store i32 250, ptr %105, align 16, !tbaa !5
  %106 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 1
  store i32 500, ptr %106, align 4, !tbaa !5
  %107 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 2
  store i32 1000, ptr %107, align 8, !tbaa !5
  %108 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 3
  store i32 2000, ptr %108, align 4, !tbaa !5
  %109 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 4
  store i32 4000, ptr %109, align 16, !tbaa !5
  %110 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 5
  store i32 8000, ptr %110, align 4, !tbaa !5
  %111 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 6
  store i32 16000, ptr %111, align 8, !tbaa !5
  %112 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 7
  store i32 32000, ptr %112, align 4, !tbaa !5
  %113 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 8
  store i32 64000, ptr %113, align 16, !tbaa !5
  %114 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 9
  store i32 128000, ptr %114, align 4, !tbaa !5
  %115 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 10
  store i32 256000, ptr %115, align 8, !tbaa !5
  %116 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 11
  store i32 512000, ptr %116, align 4, !tbaa !5
  %117 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 12
  store i32 1024000, ptr %117, align 16, !tbaa !5
  %118 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 13
  store i32 2048000, ptr %118, align 4, !tbaa !5
  %119 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 14
  store i32 4096000, ptr %119, align 8, !tbaa !5
  %120 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 15
  store i32 8192000, ptr %120, align 4, !tbaa !5
  %121 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 16
  store i32 16384000, ptr %121, align 16, !tbaa !5
  %122 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 17
  store i32 32768000, ptr %122, align 4, !tbaa !5
  %123 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 18
  store i32 65536000, ptr %123, align 8, !tbaa !5
  %124 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 19
  store i32 131072000, ptr %124, align 4, !tbaa !5
  %125 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 20
  store i32 262144000, ptr %125, align 16, !tbaa !5
  %126 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 21
  store i32 524288000, ptr %126, align 4, !tbaa !5
  %127 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 22
  store i32 1048576000, ptr %127, align 8, !tbaa !5
  %128 = load double, ptr %8, align 8, !tbaa !11
  %129 = fcmp ogt double %128, 1.400000e+04
  br i1 %129, label %130, label %131

130:                                              ; preds = %104
  store i32 11, ptr %33, align 4, !tbaa !5
  br label %131

131:                                              ; preds = %130, %104
  %132 = load double, ptr %8, align 8, !tbaa !11
  %133 = fcmp ogt double %132, 3.000000e+04
  br i1 %133, label %134, label %135

134:                                              ; preds = %131
  store i32 12, ptr %33, align 4, !tbaa !5
  br label %135

135:                                              ; preds = %134, %131
  %136 = load double, ptr %8, align 8, !tbaa !11
  %137 = fcmp ogt double %136, 6.000000e+04
  br i1 %137, label %138, label %139

138:                                              ; preds = %135
  store i32 13, ptr %33, align 4, !tbaa !5
  br label %139

139:                                              ; preds = %138, %135
  %140 = load double, ptr %8, align 8, !tbaa !11
  %141 = fcmp ogt double %140, 1.200000e+05
  br i1 %141, label %142, label %143

142:                                              ; preds = %139
  store i32 14, ptr %33, align 4, !tbaa !5
  br label %143

143:                                              ; preds = %142, %139
  %144 = load double, ptr %8, align 8, !tbaa !11
  %145 = fcmp ogt double %144, 2.500000e+05
  br i1 %145, label %146, label %147

146:                                              ; preds = %143
  store i32 15, ptr %33, align 4, !tbaa !5
  br label %147

147:                                              ; preds = %146, %143
  %148 = load double, ptr %8, align 8, !tbaa !11
  %149 = fcmp ogt double %148, 5.000000e+05
  br i1 %149, label %150, label %151

150:                                              ; preds = %147
  store i32 16, ptr %33, align 4, !tbaa !5
  br label %151

151:                                              ; preds = %150, %147
  %152 = load double, ptr %8, align 8, !tbaa !11
  %153 = fcmp ogt double %152, 1.000000e+06
  br i1 %153, label %154, label %155

154:                                              ; preds = %151
  store i32 17, ptr %33, align 4, !tbaa !5
  br label %155

155:                                              ; preds = %154, %151
  %156 = load double, ptr %8, align 8, !tbaa !11
  %157 = fcmp ogt double %156, 1.500000e+06
  br i1 %157, label %158, label %159

158:                                              ; preds = %155
  store i32 18, ptr %33, align 4, !tbaa !5
  br label %159

159:                                              ; preds = %158, %155
  %160 = load double, ptr %8, align 8, !tbaa !11
  %161 = fcmp ogt double %160, 3.500000e+06
  br i1 %161, label %162, label %163

162:                                              ; preds = %159
  store i32 19, ptr %33, align 4, !tbaa !5
  br label %163

163:                                              ; preds = %162, %159
  %164 = load double, ptr %8, align 8, !tbaa !11
  %165 = fcmp ogt double %164, 7.500000e+06
  br i1 %165, label %166, label %167

166:                                              ; preds = %163
  store i32 20, ptr %33, align 4, !tbaa !5
  br label %167

167:                                              ; preds = %166, %163
  %168 = load double, ptr %8, align 8, !tbaa !11
  %169 = fcmp ogt double %168, 1.550000e+07
  br i1 %169, label %170, label %171

170:                                              ; preds = %167
  store i32 21, ptr %33, align 4, !tbaa !5
  br label %171

171:                                              ; preds = %170, %167
  %172 = load double, ptr %8, align 8, !tbaa !11
  %173 = fcmp ogt double %172, 3.150000e+07
  br i1 %173, label %174, label %175

174:                                              ; preds = %171
  store i32 22, ptr %33, align 4, !tbaa !5
  br label %175

175:                                              ; preds = %174, %171
  %176 = load double, ptr %8, align 8, !tbaa !11
  %177 = fcmp ogt double %176, 6.350000e+07
  br i1 %177, label %178, label %179

178:                                              ; preds = %175
  store i32 23, ptr %33, align 4, !tbaa !5
  br label %179

179:                                              ; preds = %178, %175
  %180 = load i32, ptr %33, align 4, !tbaa !5
  %181 = sub nsw i32 %180, 1
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds [25 x i32], ptr %7, i64 0, i64 %182
  %184 = load i32, ptr %183, align 4, !tbaa !5
  store i32 %184, ptr %9, align 4, !tbaa !5
  %185 = load i32, ptr %9, align 4, !tbaa !5
  %186 = mul nsw i32 %185, 1024
  %187 = sext i32 %186 to i64
  %188 = call noalias ptr @malloc(i64 noundef %187) #9
  store ptr %188, ptr @xd, align 8, !tbaa !9
  %189 = load ptr, ptr @xd, align 8, !tbaa !9
  %190 = icmp eq ptr %189, null
  br i1 %190, label %191, label %193

191:                                              ; preds = %179
  %192 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  call void @exit(i32 noundef 1) #8
  unreachable

193:                                              ; preds = %179
  %194 = load i32, ptr %9, align 4, !tbaa !5
  %195 = mul nsw i32 %194, 1024
  %196 = sext i32 %195 to i64
  %197 = call noalias ptr @malloc(i64 noundef %196) #9
  store ptr %197, ptr @yd, align 8, !tbaa !9
  %198 = load ptr, ptr @yd, align 8, !tbaa !9
  %199 = icmp eq ptr %198, null
  br i1 %199, label %200, label %203

200:                                              ; preds = %193
  %201 = call i32 (ptr, ...) @printf(ptr noundef @.str.5)
  %202 = load ptr, ptr @xd, align 8, !tbaa !9
  call void @free(ptr noundef %202) #7
  call void @exit(i32 noundef 1) #8
  unreachable

203:                                              ; preds = %193
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %204 = load ptr, ptr @xd, align 8, !tbaa !9
  store ptr %204, ptr %35, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %205 = load ptr, ptr @yd, align 8, !tbaa !9
  store ptr %205, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %206 = load ptr, ptr @xd, align 8, !tbaa !9
  store ptr %206, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %207 = load ptr, ptr @yd, align 8, !tbaa !9
  store ptr %207, ptr %38, align 8, !tbaa !9
  call void (...) @local_time()
  %208 = call i32 (ptr, ...) @printf(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef @timeday)
  %209 = call i32 (ptr, ...) @printf(ptr noundef @.str.8)
  %210 = call i32 (ptr, ...) @printf(ptr noundef @.str.9)
  %211 = call i32 (ptr, ...) @printf(ptr noundef @.str.10)
  %212 = call i32 (ptr, ...) @printf(ptr noundef @.str.11)
  store i32 1, ptr %16, align 4, !tbaa !5
  br label %213

213:                                              ; preds = %1335, %203
  %214 = load i32, ptr %16, align 4, !tbaa !5
  %215 = load i32, ptr %33, align 4, !tbaa !5
  %216 = icmp slt i32 %214, %215
  br i1 %216, label %217, label %1338

217:                                              ; preds = %213
  %218 = load i32, ptr %16, align 4, !tbaa !5
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds [25 x i32], ptr %6, i64 0, i64 %219
  %221 = load i32, ptr %220, align 4, !tbaa !5
  store i32 %221, ptr %18, align 4, !tbaa !5
  %222 = load i32, ptr %18, align 4, !tbaa !5
  %223 = sdiv i32 6400000, %222
  store i32 %223, ptr %17, align 4, !tbaa !5
  %224 = load i32, ptr %17, align 4, !tbaa !5
  %225 = icmp slt i32 %224, 1
  br i1 %225, label %226, label %227

226:                                              ; preds = %217
  store i32 1, ptr %17, align 4, !tbaa !5
  br label %227

227:                                              ; preds = %226, %217
  %228 = load i32, ptr %18, align 4, !tbaa !5
  %229 = mul nsw i32 %228, 2
  store i32 %229, ptr %19, align 4, !tbaa !5
  %230 = load i32, ptr %18, align 4, !tbaa !5
  %231 = mul nsw i32 %230, 2
  store i32 %231, ptr %20, align 4, !tbaa !5
  %232 = load i32, ptr %18, align 4, !tbaa !5
  %233 = sitofp i32 %232 to double
  %234 = fmul double %233, 1.600000e+01
  %235 = fdiv double %234, 1.000000e+06
  store double %235, ptr %32, align 8, !tbaa !11
  %236 = load i32, ptr %18, align 4, !tbaa !5
  %237 = sitofp i32 %236 to double
  %238 = fmul double %237, 1.600000e+01
  %239 = fdiv double %238, 1.000000e+03
  %240 = fptosi double %239 to i32
  store i32 %240, ptr %21, align 4, !tbaa !5
  store i32 4, ptr %25, align 4, !tbaa !5
  %241 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %241, ptr @n1, align 4, !tbaa !5
  br label %242

242:                                              ; preds = %354, %227
  store double 1.000010e+00, ptr %26, align 8, !tbaa !11
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %243

243:                                              ; preds = %258, %242
  %244 = load i32, ptr %15, align 4, !tbaa !5
  %245 = load i32, ptr %18, align 4, !tbaa !5
  %246 = icmp slt i32 %244, %245
  br i1 %246, label %247, label %261

247:                                              ; preds = %243
  %248 = load double, ptr %30, align 8, !tbaa !11
  %249 = load ptr, ptr @xd, align 8, !tbaa !9
  %250 = load i32, ptr %15, align 4, !tbaa !5
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %249, i64 %251
  store double %248, ptr %252, align 8, !tbaa !11
  %253 = load double, ptr %30, align 8, !tbaa !11
  %254 = load ptr, ptr @yd, align 8, !tbaa !9
  %255 = load i32, ptr %15, align 4, !tbaa !5
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds double, ptr %254, i64 %256
  store double %253, ptr %257, align 8, !tbaa !11
  br label %258

258:                                              ; preds = %247
  %259 = load i32, ptr %15, align 4, !tbaa !5
  %260 = add nsw i32 %259, 1
  store i32 %260, ptr %15, align 4, !tbaa !5
  br label %243, !llvm.loop !17

261:                                              ; preds = %243
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %262

262:                                              ; preds = %350, %261
  %263 = load i32, ptr %14, align 4, !tbaa !5
  %264 = load i32, ptr @n1, align 4, !tbaa !5
  %265 = icmp slt i32 %263, %264
  br i1 %265, label %266, label %353

266:                                              ; preds = %262
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %267

267:                                              ; preds = %345, %266
  %268 = load i32, ptr %15, align 4, !tbaa !5
  %269 = load i32, ptr %18, align 4, !tbaa !5
  %270 = icmp slt i32 %268, %269
  br i1 %270, label %271, label %349

271:                                              ; preds = %267
  %272 = load ptr, ptr @xd, align 8, !tbaa !9
  %273 = load i32, ptr %15, align 4, !tbaa !5
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds double, ptr %272, i64 %274
  %276 = load double, ptr %275, align 8, !tbaa !11
  %277 = load double, ptr %26, align 8, !tbaa !11
  %278 = load ptr, ptr @yd, align 8, !tbaa !9
  %279 = load i32, ptr %15, align 4, !tbaa !5
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds double, ptr %278, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !11
  %283 = call double @llvm.fmuladd.f64(double %277, double %282, double %276)
  %284 = load ptr, ptr @xd, align 8, !tbaa !9
  %285 = load i32, ptr %15, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds double, ptr %284, i64 %286
  store double %283, ptr %287, align 8, !tbaa !11
  %288 = load ptr, ptr @xd, align 8, !tbaa !9
  %289 = load i32, ptr %15, align 4, !tbaa !5
  %290 = add nsw i32 %289, 1
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds double, ptr %288, i64 %291
  %293 = load double, ptr %292, align 8, !tbaa !11
  %294 = load double, ptr %26, align 8, !tbaa !11
  %295 = load ptr, ptr @yd, align 8, !tbaa !9
  %296 = load i32, ptr %15, align 4, !tbaa !5
  %297 = add nsw i32 %296, 1
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %295, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !11
  %301 = call double @llvm.fmuladd.f64(double %294, double %300, double %293)
  %302 = load ptr, ptr @xd, align 8, !tbaa !9
  %303 = load i32, ptr %15, align 4, !tbaa !5
  %304 = add nsw i32 %303, 1
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %302, i64 %305
  store double %301, ptr %306, align 8, !tbaa !11
  %307 = load ptr, ptr @xd, align 8, !tbaa !9
  %308 = load i32, ptr %15, align 4, !tbaa !5
  %309 = add nsw i32 %308, 2
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds double, ptr %307, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !11
  %313 = load double, ptr %26, align 8, !tbaa !11
  %314 = load ptr, ptr @yd, align 8, !tbaa !9
  %315 = load i32, ptr %15, align 4, !tbaa !5
  %316 = add nsw i32 %315, 2
  %317 = sext i32 %316 to i64
  %318 = getelementptr inbounds double, ptr %314, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !11
  %320 = call double @llvm.fmuladd.f64(double %313, double %319, double %312)
  %321 = load ptr, ptr @xd, align 8, !tbaa !9
  %322 = load i32, ptr %15, align 4, !tbaa !5
  %323 = add nsw i32 %322, 2
  %324 = sext i32 %323 to i64
  %325 = getelementptr inbounds double, ptr %321, i64 %324
  store double %320, ptr %325, align 8, !tbaa !11
  %326 = load ptr, ptr @xd, align 8, !tbaa !9
  %327 = load i32, ptr %15, align 4, !tbaa !5
  %328 = add nsw i32 %327, 3
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds double, ptr %326, i64 %329
  %331 = load double, ptr %330, align 8, !tbaa !11
  %332 = load double, ptr %26, align 8, !tbaa !11
  %333 = load ptr, ptr @yd, align 8, !tbaa !9
  %334 = load i32, ptr %15, align 4, !tbaa !5
  %335 = add nsw i32 %334, 3
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %333, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !11
  %339 = call double @llvm.fmuladd.f64(double %332, double %338, double %331)
  %340 = load ptr, ptr @xd, align 8, !tbaa !9
  %341 = load i32, ptr %15, align 4, !tbaa !5
  %342 = add nsw i32 %341, 3
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %340, i64 %343
  store double %339, ptr %344, align 8, !tbaa !11
  br label %345

345:                                              ; preds = %271
  %346 = load i32, ptr %15, align 4, !tbaa !5
  %347 = load i32, ptr %25, align 4, !tbaa !5
  %348 = add nsw i32 %346, %347
  store i32 %348, ptr %15, align 4, !tbaa !5
  br label %267, !llvm.loop !18

349:                                              ; preds = %267
  br label %350

350:                                              ; preds = %349
  %351 = load i32, ptr %14, align 4, !tbaa !5
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %14, align 4, !tbaa !5
  br label %262, !llvm.loop !19

353:                                              ; preds = %262
  call void (...) @end_time()
  call void @checkTime()
  br label %354

354:                                              ; preds = %353
  %355 = load double, ptr @secs, align 8, !tbaa !11
  %356 = load double, ptr @runSecs, align 8, !tbaa !11
  %357 = fcmp olt double %355, %356
  br i1 %357, label %242, label %358, !llvm.loop !20

358:                                              ; preds = %354
  %359 = load i32, ptr @n1, align 4, !tbaa !5
  %360 = sitofp i32 %359 to double
  %361 = load double, ptr %32, align 8, !tbaa !11
  %362 = fmul double %360, %361
  %363 = load double, ptr @secs, align 8, !tbaa !11
  %364 = fdiv double %362, %363
  store double %364, ptr %27, align 8, !tbaa !11
  %365 = load i32, ptr %21, align 4, !tbaa !5
  %366 = load double, ptr %27, align 8, !tbaa !11
  %367 = fptosi double %366 to i32
  %368 = call i32 (ptr, ...) @printf(ptr noundef @.str.12, i32 noundef %365, i32 noundef %367)
  %369 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %369, ptr @n1, align 4, !tbaa !5
  br label %370

370:                                              ; preds = %482, %358
  store float 0x3FF00068E0000000, ptr %10, align 4, !tbaa !13
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %371

371:                                              ; preds = %386, %370
  %372 = load i32, ptr %15, align 4, !tbaa !5
  %373 = load i32, ptr %19, align 4, !tbaa !5
  %374 = icmp slt i32 %372, %373
  br i1 %374, label %375, label %389

375:                                              ; preds = %371
  %376 = load float, ptr %11, align 4, !tbaa !13
  %377 = load ptr, ptr %35, align 8, !tbaa !9
  %378 = load i32, ptr %15, align 4, !tbaa !5
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds float, ptr %377, i64 %379
  store float %376, ptr %380, align 4, !tbaa !13
  %381 = load float, ptr %11, align 4, !tbaa !13
  %382 = load ptr, ptr %36, align 8, !tbaa !9
  %383 = load i32, ptr %15, align 4, !tbaa !5
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds float, ptr %382, i64 %384
  store float %381, ptr %385, align 4, !tbaa !13
  br label %386

386:                                              ; preds = %375
  %387 = load i32, ptr %15, align 4, !tbaa !5
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr %15, align 4, !tbaa !5
  br label %371, !llvm.loop !21

389:                                              ; preds = %371
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %390

390:                                              ; preds = %478, %389
  %391 = load i32, ptr %14, align 4, !tbaa !5
  %392 = load i32, ptr @n1, align 4, !tbaa !5
  %393 = icmp slt i32 %391, %392
  br i1 %393, label %394, label %481

394:                                              ; preds = %390
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %395

395:                                              ; preds = %473, %394
  %396 = load i32, ptr %15, align 4, !tbaa !5
  %397 = load i32, ptr %19, align 4, !tbaa !5
  %398 = icmp slt i32 %396, %397
  br i1 %398, label %399, label %477

399:                                              ; preds = %395
  %400 = load ptr, ptr %35, align 8, !tbaa !9
  %401 = load i32, ptr %15, align 4, !tbaa !5
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds float, ptr %400, i64 %402
  %404 = load float, ptr %403, align 4, !tbaa !13
  %405 = load float, ptr %10, align 4, !tbaa !13
  %406 = load ptr, ptr %36, align 8, !tbaa !9
  %407 = load i32, ptr %15, align 4, !tbaa !5
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds float, ptr %406, i64 %408
  %410 = load float, ptr %409, align 4, !tbaa !13
  %411 = call float @llvm.fmuladd.f32(float %405, float %410, float %404)
  %412 = load ptr, ptr %35, align 8, !tbaa !9
  %413 = load i32, ptr %15, align 4, !tbaa !5
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds float, ptr %412, i64 %414
  store float %411, ptr %415, align 4, !tbaa !13
  %416 = load ptr, ptr %35, align 8, !tbaa !9
  %417 = load i32, ptr %15, align 4, !tbaa !5
  %418 = add nsw i32 %417, 1
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds float, ptr %416, i64 %419
  %421 = load float, ptr %420, align 4, !tbaa !13
  %422 = load float, ptr %10, align 4, !tbaa !13
  %423 = load ptr, ptr %36, align 8, !tbaa !9
  %424 = load i32, ptr %15, align 4, !tbaa !5
  %425 = add nsw i32 %424, 1
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds float, ptr %423, i64 %426
  %428 = load float, ptr %427, align 4, !tbaa !13
  %429 = call float @llvm.fmuladd.f32(float %422, float %428, float %421)
  %430 = load ptr, ptr %35, align 8, !tbaa !9
  %431 = load i32, ptr %15, align 4, !tbaa !5
  %432 = add nsw i32 %431, 1
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds float, ptr %430, i64 %433
  store float %429, ptr %434, align 4, !tbaa !13
  %435 = load ptr, ptr %35, align 8, !tbaa !9
  %436 = load i32, ptr %15, align 4, !tbaa !5
  %437 = add nsw i32 %436, 2
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds float, ptr %435, i64 %438
  %440 = load float, ptr %439, align 4, !tbaa !13
  %441 = load float, ptr %10, align 4, !tbaa !13
  %442 = load ptr, ptr %36, align 8, !tbaa !9
  %443 = load i32, ptr %15, align 4, !tbaa !5
  %444 = add nsw i32 %443, 2
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds float, ptr %442, i64 %445
  %447 = load float, ptr %446, align 4, !tbaa !13
  %448 = call float @llvm.fmuladd.f32(float %441, float %447, float %440)
  %449 = load ptr, ptr %35, align 8, !tbaa !9
  %450 = load i32, ptr %15, align 4, !tbaa !5
  %451 = add nsw i32 %450, 2
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds float, ptr %449, i64 %452
  store float %448, ptr %453, align 4, !tbaa !13
  %454 = load ptr, ptr %35, align 8, !tbaa !9
  %455 = load i32, ptr %15, align 4, !tbaa !5
  %456 = add nsw i32 %455, 3
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds float, ptr %454, i64 %457
  %459 = load float, ptr %458, align 4, !tbaa !13
  %460 = load float, ptr %10, align 4, !tbaa !13
  %461 = load ptr, ptr %36, align 8, !tbaa !9
  %462 = load i32, ptr %15, align 4, !tbaa !5
  %463 = add nsw i32 %462, 3
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds float, ptr %461, i64 %464
  %466 = load float, ptr %465, align 4, !tbaa !13
  %467 = call float @llvm.fmuladd.f32(float %460, float %466, float %459)
  %468 = load ptr, ptr %35, align 8, !tbaa !9
  %469 = load i32, ptr %15, align 4, !tbaa !5
  %470 = add nsw i32 %469, 3
  %471 = sext i32 %470 to i64
  %472 = getelementptr inbounds float, ptr %468, i64 %471
  store float %467, ptr %472, align 4, !tbaa !13
  br label %473

473:                                              ; preds = %399
  %474 = load i32, ptr %15, align 4, !tbaa !5
  %475 = load i32, ptr %25, align 4, !tbaa !5
  %476 = add nsw i32 %474, %475
  store i32 %476, ptr %15, align 4, !tbaa !5
  br label %395, !llvm.loop !22

477:                                              ; preds = %395
  br label %478

478:                                              ; preds = %477
  %479 = load i32, ptr %14, align 4, !tbaa !5
  %480 = add nsw i32 %479, 1
  store i32 %480, ptr %14, align 4, !tbaa !5
  br label %390, !llvm.loop !23

481:                                              ; preds = %390
  call void (...) @end_time()
  call void @checkTime()
  br label %482

482:                                              ; preds = %481
  %483 = load double, ptr @secs, align 8, !tbaa !11
  %484 = load double, ptr @runSecs, align 8, !tbaa !11
  %485 = fcmp olt double %483, %484
  br i1 %485, label %370, label %486, !llvm.loop !24

486:                                              ; preds = %482
  %487 = load i32, ptr @n1, align 4, !tbaa !5
  %488 = sitofp i32 %487 to double
  %489 = load double, ptr %32, align 8, !tbaa !11
  %490 = fmul double %488, %489
  %491 = load double, ptr @secs, align 8, !tbaa !11
  %492 = fdiv double %490, %491
  store double %492, ptr %28, align 8, !tbaa !11
  %493 = load double, ptr %28, align 8, !tbaa !11
  %494 = fptosi double %493 to i32
  %495 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %494)
  %496 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %496, ptr @n1, align 4, !tbaa !5
  br label %497

497:                                              ; preds = %622, %486
  %498 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %498, ptr %22, align 4, !tbaa !5
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %499

499:                                              ; preds = %514, %497
  %500 = load i32, ptr %15, align 4, !tbaa !5
  %501 = load i32, ptr %20, align 4, !tbaa !5
  %502 = icmp slt i32 %500, %501
  br i1 %502, label %503, label %517

503:                                              ; preds = %499
  %504 = load i32, ptr %23, align 4, !tbaa !5
  %505 = load ptr, ptr %37, align 8, !tbaa !9
  %506 = load i32, ptr %15, align 4, !tbaa !5
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds i32, ptr %505, i64 %507
  store i32 %504, ptr %508, align 4, !tbaa !5
  %509 = load i32, ptr %23, align 4, !tbaa !5
  %510 = load ptr, ptr %38, align 8, !tbaa !9
  %511 = load i32, ptr %15, align 4, !tbaa !5
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds i32, ptr %510, i64 %512
  store i32 %509, ptr %513, align 4, !tbaa !5
  br label %514

514:                                              ; preds = %503
  %515 = load i32, ptr %15, align 4, !tbaa !5
  %516 = add nsw i32 %515, 1
  store i32 %516, ptr %15, align 4, !tbaa !5
  br label %499, !llvm.loop !25

517:                                              ; preds = %499
  %518 = load i32, ptr %24, align 4, !tbaa !5
  %519 = load ptr, ptr %38, align 8, !tbaa !9
  %520 = load i32, ptr %20, align 4, !tbaa !5
  %521 = sub nsw i32 %520, 1
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %519, i64 %522
  store i32 %518, ptr %523, align 4, !tbaa !5
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %524

524:                                              ; preds = %618, %517
  %525 = load i32, ptr %14, align 4, !tbaa !5
  %526 = load i32, ptr @n1, align 4, !tbaa !5
  %527 = icmp slt i32 %525, %526
  br i1 %527, label %528, label %621

528:                                              ; preds = %524
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %529

529:                                              ; preds = %611, %528
  %530 = load i32, ptr %15, align 4, !tbaa !5
  %531 = load i32, ptr %20, align 4, !tbaa !5
  %532 = icmp slt i32 %530, %531
  br i1 %532, label %533, label %615

533:                                              ; preds = %529
  %534 = load ptr, ptr %37, align 8, !tbaa !9
  %535 = load i32, ptr %15, align 4, !tbaa !5
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds i32, ptr %534, i64 %536
  %538 = load i32, ptr %537, align 4, !tbaa !5
  %539 = load i32, ptr %22, align 4, !tbaa !5
  %540 = add nsw i32 %538, %539
  %541 = load ptr, ptr %38, align 8, !tbaa !9
  %542 = load i32, ptr %15, align 4, !tbaa !5
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds i32, ptr %541, i64 %543
  %545 = load i32, ptr %544, align 4, !tbaa !5
  %546 = add nsw i32 %540, %545
  %547 = load ptr, ptr %37, align 8, !tbaa !9
  %548 = load i32, ptr %15, align 4, !tbaa !5
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds i32, ptr %547, i64 %549
  store i32 %546, ptr %550, align 4, !tbaa !5
  %551 = load ptr, ptr %37, align 8, !tbaa !9
  %552 = load i32, ptr %15, align 4, !tbaa !5
  %553 = add nsw i32 %552, 1
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds i32, ptr %551, i64 %554
  %556 = load i32, ptr %555, align 4, !tbaa !5
  %557 = load i32, ptr %22, align 4, !tbaa !5
  %558 = add nsw i32 %556, %557
  %559 = load ptr, ptr %38, align 8, !tbaa !9
  %560 = load i32, ptr %15, align 4, !tbaa !5
  %561 = add nsw i32 %560, 1
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds i32, ptr %559, i64 %562
  %564 = load i32, ptr %563, align 4, !tbaa !5
  %565 = add nsw i32 %558, %564
  %566 = load ptr, ptr %37, align 8, !tbaa !9
  %567 = load i32, ptr %15, align 4, !tbaa !5
  %568 = add nsw i32 %567, 1
  %569 = sext i32 %568 to i64
  %570 = getelementptr inbounds i32, ptr %566, i64 %569
  store i32 %565, ptr %570, align 4, !tbaa !5
  %571 = load ptr, ptr %37, align 8, !tbaa !9
  %572 = load i32, ptr %15, align 4, !tbaa !5
  %573 = add nsw i32 %572, 2
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds i32, ptr %571, i64 %574
  %576 = load i32, ptr %575, align 4, !tbaa !5
  %577 = load i32, ptr %22, align 4, !tbaa !5
  %578 = add nsw i32 %576, %577
  %579 = load ptr, ptr %38, align 8, !tbaa !9
  %580 = load i32, ptr %15, align 4, !tbaa !5
  %581 = add nsw i32 %580, 2
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds i32, ptr %579, i64 %582
  %584 = load i32, ptr %583, align 4, !tbaa !5
  %585 = add nsw i32 %578, %584
  %586 = load ptr, ptr %37, align 8, !tbaa !9
  %587 = load i32, ptr %15, align 4, !tbaa !5
  %588 = add nsw i32 %587, 2
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds i32, ptr %586, i64 %589
  store i32 %585, ptr %590, align 4, !tbaa !5
  %591 = load ptr, ptr %37, align 8, !tbaa !9
  %592 = load i32, ptr %15, align 4, !tbaa !5
  %593 = add nsw i32 %592, 3
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds i32, ptr %591, i64 %594
  %596 = load i32, ptr %595, align 4, !tbaa !5
  %597 = load i32, ptr %22, align 4, !tbaa !5
  %598 = add nsw i32 %596, %597
  %599 = load ptr, ptr %38, align 8, !tbaa !9
  %600 = load i32, ptr %15, align 4, !tbaa !5
  %601 = add nsw i32 %600, 3
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds i32, ptr %599, i64 %602
  %604 = load i32, ptr %603, align 4, !tbaa !5
  %605 = add nsw i32 %598, %604
  %606 = load ptr, ptr %37, align 8, !tbaa !9
  %607 = load i32, ptr %15, align 4, !tbaa !5
  %608 = add nsw i32 %607, 3
  %609 = sext i32 %608 to i64
  %610 = getelementptr inbounds i32, ptr %606, i64 %609
  store i32 %605, ptr %610, align 4, !tbaa !5
  br label %611

611:                                              ; preds = %533
  %612 = load i32, ptr %15, align 4, !tbaa !5
  %613 = load i32, ptr %25, align 4, !tbaa !5
  %614 = add nsw i32 %612, %613
  store i32 %614, ptr %15, align 4, !tbaa !5
  br label %529, !llvm.loop !26

615:                                              ; preds = %529
  %616 = load i32, ptr %22, align 4, !tbaa !5
  %617 = sub nsw i32 0, %616
  store i32 %617, ptr %22, align 4, !tbaa !5
  br label %618

618:                                              ; preds = %615
  %619 = load i32, ptr %14, align 4, !tbaa !5
  %620 = add nsw i32 %619, 1
  store i32 %620, ptr %14, align 4, !tbaa !5
  br label %524, !llvm.loop !27

621:                                              ; preds = %524
  call void (...) @end_time()
  call void @checkTime()
  br label %622

622:                                              ; preds = %621
  %623 = load double, ptr @secs, align 8, !tbaa !11
  %624 = load double, ptr @runSecs, align 8, !tbaa !11
  %625 = fcmp olt double %623, %624
  br i1 %625, label %497, label %626, !llvm.loop !28

626:                                              ; preds = %622
  %627 = load i32, ptr @n1, align 4, !tbaa !5
  %628 = sitofp i32 %627 to double
  %629 = load double, ptr %32, align 8, !tbaa !11
  %630 = fmul double %628, %629
  %631 = load double, ptr @secs, align 8, !tbaa !11
  %632 = fdiv double %630, %631
  store double %632, ptr %29, align 8, !tbaa !11
  %633 = load double, ptr %29, align 8, !tbaa !11
  %634 = fptosi double %633 to i32
  %635 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %634)
  %636 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %636, ptr @n1, align 4, !tbaa !5
  br label %637

637:                                              ; preds = %745, %626
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %638

638:                                              ; preds = %653, %637
  %639 = load i32, ptr %15, align 4, !tbaa !5
  %640 = load i32, ptr %18, align 4, !tbaa !5
  %641 = icmp slt i32 %639, %640
  br i1 %641, label %642, label %656

642:                                              ; preds = %638
  %643 = load double, ptr %31, align 8, !tbaa !11
  %644 = load ptr, ptr @xd, align 8, !tbaa !9
  %645 = load i32, ptr %15, align 4, !tbaa !5
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %644, i64 %646
  store double %643, ptr %647, align 8, !tbaa !11
  %648 = load double, ptr %30, align 8, !tbaa !11
  %649 = load ptr, ptr @yd, align 8, !tbaa !9
  %650 = load i32, ptr %15, align 4, !tbaa !5
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %649, i64 %651
  store double %648, ptr %652, align 8, !tbaa !11
  br label %653

653:                                              ; preds = %642
  %654 = load i32, ptr %15, align 4, !tbaa !5
  %655 = add nsw i32 %654, 1
  store i32 %655, ptr %15, align 4, !tbaa !5
  br label %638, !llvm.loop !29

656:                                              ; preds = %638
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %657

657:                                              ; preds = %741, %656
  %658 = load i32, ptr %14, align 4, !tbaa !5
  %659 = load i32, ptr @n1, align 4, !tbaa !5
  %660 = icmp slt i32 %658, %659
  br i1 %660, label %661, label %744

661:                                              ; preds = %657
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %662

662:                                              ; preds = %736, %661
  %663 = load i32, ptr %15, align 4, !tbaa !5
  %664 = load i32, ptr %18, align 4, !tbaa !5
  %665 = icmp slt i32 %663, %664
  br i1 %665, label %666, label %740

666:                                              ; preds = %662
  %667 = load ptr, ptr @xd, align 8, !tbaa !9
  %668 = load i32, ptr %15, align 4, !tbaa !5
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds double, ptr %667, i64 %669
  %671 = load double, ptr %670, align 8, !tbaa !11
  %672 = load ptr, ptr @yd, align 8, !tbaa !9
  %673 = load i32, ptr %15, align 4, !tbaa !5
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  %677 = fadd double %671, %676
  %678 = load ptr, ptr @xd, align 8, !tbaa !9
  %679 = load i32, ptr %15, align 4, !tbaa !5
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %678, i64 %680
  store double %677, ptr %681, align 8, !tbaa !11
  %682 = load ptr, ptr @xd, align 8, !tbaa !9
  %683 = load i32, ptr %15, align 4, !tbaa !5
  %684 = add nsw i32 %683, 1
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds double, ptr %682, i64 %685
  %687 = load double, ptr %686, align 8, !tbaa !11
  %688 = load ptr, ptr @yd, align 8, !tbaa !9
  %689 = load i32, ptr %15, align 4, !tbaa !5
  %690 = add nsw i32 %689, 1
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %688, i64 %691
  %693 = load double, ptr %692, align 8, !tbaa !11
  %694 = fadd double %687, %693
  %695 = load ptr, ptr @xd, align 8, !tbaa !9
  %696 = load i32, ptr %15, align 4, !tbaa !5
  %697 = add nsw i32 %696, 1
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %695, i64 %698
  store double %694, ptr %699, align 8, !tbaa !11
  %700 = load ptr, ptr @xd, align 8, !tbaa !9
  %701 = load i32, ptr %15, align 4, !tbaa !5
  %702 = add nsw i32 %701, 2
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds double, ptr %700, i64 %703
  %705 = load double, ptr %704, align 8, !tbaa !11
  %706 = load ptr, ptr @yd, align 8, !tbaa !9
  %707 = load i32, ptr %15, align 4, !tbaa !5
  %708 = add nsw i32 %707, 2
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %706, i64 %709
  %711 = load double, ptr %710, align 8, !tbaa !11
  %712 = fadd double %705, %711
  %713 = load ptr, ptr @xd, align 8, !tbaa !9
  %714 = load i32, ptr %15, align 4, !tbaa !5
  %715 = add nsw i32 %714, 2
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %713, i64 %716
  store double %712, ptr %717, align 8, !tbaa !11
  %718 = load ptr, ptr @xd, align 8, !tbaa !9
  %719 = load i32, ptr %15, align 4, !tbaa !5
  %720 = add nsw i32 %719, 3
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %718, i64 %721
  %723 = load double, ptr %722, align 8, !tbaa !11
  %724 = load ptr, ptr @yd, align 8, !tbaa !9
  %725 = load i32, ptr %15, align 4, !tbaa !5
  %726 = add nsw i32 %725, 3
  %727 = sext i32 %726 to i64
  %728 = getelementptr inbounds double, ptr %724, i64 %727
  %729 = load double, ptr %728, align 8, !tbaa !11
  %730 = fadd double %723, %729
  %731 = load ptr, ptr @xd, align 8, !tbaa !9
  %732 = load i32, ptr %15, align 4, !tbaa !5
  %733 = add nsw i32 %732, 3
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds double, ptr %731, i64 %734
  store double %730, ptr %735, align 8, !tbaa !11
  br label %736

736:                                              ; preds = %666
  %737 = load i32, ptr %15, align 4, !tbaa !5
  %738 = load i32, ptr %25, align 4, !tbaa !5
  %739 = add nsw i32 %737, %738
  store i32 %739, ptr %15, align 4, !tbaa !5
  br label %662, !llvm.loop !30

740:                                              ; preds = %662
  br label %741

741:                                              ; preds = %740
  %742 = load i32, ptr %14, align 4, !tbaa !5
  %743 = add nsw i32 %742, 1
  store i32 %743, ptr %14, align 4, !tbaa !5
  br label %657, !llvm.loop !31

744:                                              ; preds = %657
  call void (...) @end_time()
  call void @checkTime()
  br label %745

745:                                              ; preds = %744
  %746 = load double, ptr @secs, align 8, !tbaa !11
  %747 = load double, ptr @runSecs, align 8, !tbaa !11
  %748 = fcmp olt double %746, %747
  br i1 %748, label %637, label %749, !llvm.loop !32

749:                                              ; preds = %745
  %750 = load ptr, ptr @xd, align 8, !tbaa !9
  %751 = getelementptr inbounds double, ptr %750, i64 1
  %752 = load double, ptr %751, align 8, !tbaa !11
  store double %752, ptr %26, align 8, !tbaa !11
  %753 = load i32, ptr @n1, align 4, !tbaa !5
  %754 = sitofp i32 %753 to double
  %755 = load double, ptr %32, align 8, !tbaa !11
  %756 = fmul double %754, %755
  %757 = load double, ptr @secs, align 8, !tbaa !11
  %758 = fdiv double %756, %757
  store double %758, ptr %27, align 8, !tbaa !11
  %759 = load double, ptr %27, align 8, !tbaa !11
  %760 = fptosi double %759 to i32
  %761 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %760)
  %762 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %762, ptr @n1, align 4, !tbaa !5
  br label %763

763:                                              ; preds = %871, %749
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %764

764:                                              ; preds = %779, %763
  %765 = load i32, ptr %15, align 4, !tbaa !5
  %766 = load i32, ptr %19, align 4, !tbaa !5
  %767 = icmp slt i32 %765, %766
  br i1 %767, label %768, label %782

768:                                              ; preds = %764
  %769 = load float, ptr %12, align 4, !tbaa !13
  %770 = load ptr, ptr %35, align 8, !tbaa !9
  %771 = load i32, ptr %15, align 4, !tbaa !5
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds float, ptr %770, i64 %772
  store float %769, ptr %773, align 4, !tbaa !13
  %774 = load float, ptr %11, align 4, !tbaa !13
  %775 = load ptr, ptr %36, align 8, !tbaa !9
  %776 = load i32, ptr %15, align 4, !tbaa !5
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds float, ptr %775, i64 %777
  store float %774, ptr %778, align 4, !tbaa !13
  br label %779

779:                                              ; preds = %768
  %780 = load i32, ptr %15, align 4, !tbaa !5
  %781 = add nsw i32 %780, 1
  store i32 %781, ptr %15, align 4, !tbaa !5
  br label %764, !llvm.loop !33

782:                                              ; preds = %764
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %783

783:                                              ; preds = %867, %782
  %784 = load i32, ptr %14, align 4, !tbaa !5
  %785 = load i32, ptr @n1, align 4, !tbaa !5
  %786 = icmp slt i32 %784, %785
  br i1 %786, label %787, label %870

787:                                              ; preds = %783
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %788

788:                                              ; preds = %862, %787
  %789 = load i32, ptr %15, align 4, !tbaa !5
  %790 = load i32, ptr %19, align 4, !tbaa !5
  %791 = icmp slt i32 %789, %790
  br i1 %791, label %792, label %866

792:                                              ; preds = %788
  %793 = load ptr, ptr %35, align 8, !tbaa !9
  %794 = load i32, ptr %15, align 4, !tbaa !5
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds float, ptr %793, i64 %795
  %797 = load float, ptr %796, align 4, !tbaa !13
  %798 = load ptr, ptr %36, align 8, !tbaa !9
  %799 = load i32, ptr %15, align 4, !tbaa !5
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds float, ptr %798, i64 %800
  %802 = load float, ptr %801, align 4, !tbaa !13
  %803 = fadd float %797, %802
  %804 = load ptr, ptr %35, align 8, !tbaa !9
  %805 = load i32, ptr %15, align 4, !tbaa !5
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds float, ptr %804, i64 %806
  store float %803, ptr %807, align 4, !tbaa !13
  %808 = load ptr, ptr %35, align 8, !tbaa !9
  %809 = load i32, ptr %15, align 4, !tbaa !5
  %810 = add nsw i32 %809, 1
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds float, ptr %808, i64 %811
  %813 = load float, ptr %812, align 4, !tbaa !13
  %814 = load ptr, ptr %36, align 8, !tbaa !9
  %815 = load i32, ptr %15, align 4, !tbaa !5
  %816 = add nsw i32 %815, 1
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds float, ptr %814, i64 %817
  %819 = load float, ptr %818, align 4, !tbaa !13
  %820 = fadd float %813, %819
  %821 = load ptr, ptr %35, align 8, !tbaa !9
  %822 = load i32, ptr %15, align 4, !tbaa !5
  %823 = add nsw i32 %822, 1
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds float, ptr %821, i64 %824
  store float %820, ptr %825, align 4, !tbaa !13
  %826 = load ptr, ptr %35, align 8, !tbaa !9
  %827 = load i32, ptr %15, align 4, !tbaa !5
  %828 = add nsw i32 %827, 2
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds float, ptr %826, i64 %829
  %831 = load float, ptr %830, align 4, !tbaa !13
  %832 = load ptr, ptr %36, align 8, !tbaa !9
  %833 = load i32, ptr %15, align 4, !tbaa !5
  %834 = add nsw i32 %833, 2
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds float, ptr %832, i64 %835
  %837 = load float, ptr %836, align 4, !tbaa !13
  %838 = fadd float %831, %837
  %839 = load ptr, ptr %35, align 8, !tbaa !9
  %840 = load i32, ptr %15, align 4, !tbaa !5
  %841 = add nsw i32 %840, 2
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds float, ptr %839, i64 %842
  store float %838, ptr %843, align 4, !tbaa !13
  %844 = load ptr, ptr %35, align 8, !tbaa !9
  %845 = load i32, ptr %15, align 4, !tbaa !5
  %846 = add nsw i32 %845, 3
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds float, ptr %844, i64 %847
  %849 = load float, ptr %848, align 4, !tbaa !13
  %850 = load ptr, ptr %36, align 8, !tbaa !9
  %851 = load i32, ptr %15, align 4, !tbaa !5
  %852 = add nsw i32 %851, 3
  %853 = sext i32 %852 to i64
  %854 = getelementptr inbounds float, ptr %850, i64 %853
  %855 = load float, ptr %854, align 4, !tbaa !13
  %856 = fadd float %849, %855
  %857 = load ptr, ptr %35, align 8, !tbaa !9
  %858 = load i32, ptr %15, align 4, !tbaa !5
  %859 = add nsw i32 %858, 3
  %860 = sext i32 %859 to i64
  %861 = getelementptr inbounds float, ptr %857, i64 %860
  store float %856, ptr %861, align 4, !tbaa !13
  br label %862

862:                                              ; preds = %792
  %863 = load i32, ptr %15, align 4, !tbaa !5
  %864 = load i32, ptr %25, align 4, !tbaa !5
  %865 = add nsw i32 %863, %864
  store i32 %865, ptr %15, align 4, !tbaa !5
  br label %788, !llvm.loop !34

866:                                              ; preds = %788
  br label %867

867:                                              ; preds = %866
  %868 = load i32, ptr %14, align 4, !tbaa !5
  %869 = add nsw i32 %868, 1
  store i32 %869, ptr %14, align 4, !tbaa !5
  br label %783, !llvm.loop !35

870:                                              ; preds = %783
  call void (...) @end_time()
  call void @checkTime()
  br label %871

871:                                              ; preds = %870
  %872 = load double, ptr @secs, align 8, !tbaa !11
  %873 = load double, ptr @runSecs, align 8, !tbaa !11
  %874 = fcmp olt double %872, %873
  br i1 %874, label %763, label %875, !llvm.loop !36

875:                                              ; preds = %871
  %876 = load ptr, ptr %35, align 8, !tbaa !9
  %877 = getelementptr inbounds float, ptr %876, i64 1
  %878 = load float, ptr %877, align 4, !tbaa !13
  store float %878, ptr %10, align 4, !tbaa !13
  %879 = load i32, ptr @n1, align 4, !tbaa !5
  %880 = sitofp i32 %879 to double
  %881 = load double, ptr %32, align 8, !tbaa !11
  %882 = fmul double %880, %881
  %883 = load double, ptr @secs, align 8, !tbaa !11
  %884 = fdiv double %882, %883
  store double %884, ptr %28, align 8, !tbaa !11
  %885 = load double, ptr %28, align 8, !tbaa !11
  %886 = fptosi double %885 to i32
  %887 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %886)
  %888 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %888, ptr @n1, align 4, !tbaa !5
  br label %889

889:                                              ; preds = %997, %875
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %890

890:                                              ; preds = %905, %889
  %891 = load i32, ptr %15, align 4, !tbaa !5
  %892 = load i32, ptr %20, align 4, !tbaa !5
  %893 = icmp slt i32 %891, %892
  br i1 %893, label %894, label %908

894:                                              ; preds = %890
  %895 = load i32, ptr %23, align 4, !tbaa !5
  %896 = load ptr, ptr %37, align 8, !tbaa !9
  %897 = load i32, ptr %15, align 4, !tbaa !5
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds i32, ptr %896, i64 %898
  store i32 %895, ptr %899, align 4, !tbaa !5
  %900 = load i32, ptr %24, align 4, !tbaa !5
  %901 = load ptr, ptr %38, align 8, !tbaa !9
  %902 = load i32, ptr %15, align 4, !tbaa !5
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds i32, ptr %901, i64 %903
  store i32 %900, ptr %904, align 4, !tbaa !5
  br label %905

905:                                              ; preds = %894
  %906 = load i32, ptr %15, align 4, !tbaa !5
  %907 = add nsw i32 %906, 1
  store i32 %907, ptr %15, align 4, !tbaa !5
  br label %890, !llvm.loop !37

908:                                              ; preds = %890
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %909

909:                                              ; preds = %993, %908
  %910 = load i32, ptr %14, align 4, !tbaa !5
  %911 = load i32, ptr @n1, align 4, !tbaa !5
  %912 = icmp slt i32 %910, %911
  br i1 %912, label %913, label %996

913:                                              ; preds = %909
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %914

914:                                              ; preds = %988, %913
  %915 = load i32, ptr %15, align 4, !tbaa !5
  %916 = load i32, ptr %20, align 4, !tbaa !5
  %917 = icmp slt i32 %915, %916
  br i1 %917, label %918, label %992

918:                                              ; preds = %914
  %919 = load ptr, ptr %37, align 8, !tbaa !9
  %920 = load i32, ptr %15, align 4, !tbaa !5
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds i32, ptr %919, i64 %921
  %923 = load i32, ptr %922, align 4, !tbaa !5
  %924 = load ptr, ptr %38, align 8, !tbaa !9
  %925 = load i32, ptr %15, align 4, !tbaa !5
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds i32, ptr %924, i64 %926
  %928 = load i32, ptr %927, align 4, !tbaa !5
  %929 = add nsw i32 %923, %928
  %930 = load ptr, ptr %37, align 8, !tbaa !9
  %931 = load i32, ptr %15, align 4, !tbaa !5
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds i32, ptr %930, i64 %932
  store i32 %929, ptr %933, align 4, !tbaa !5
  %934 = load ptr, ptr %37, align 8, !tbaa !9
  %935 = load i32, ptr %15, align 4, !tbaa !5
  %936 = add nsw i32 %935, 1
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds i32, ptr %934, i64 %937
  %939 = load i32, ptr %938, align 4, !tbaa !5
  %940 = load ptr, ptr %38, align 8, !tbaa !9
  %941 = load i32, ptr %15, align 4, !tbaa !5
  %942 = add nsw i32 %941, 1
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds i32, ptr %940, i64 %943
  %945 = load i32, ptr %944, align 4, !tbaa !5
  %946 = add nsw i32 %939, %945
  %947 = load ptr, ptr %37, align 8, !tbaa !9
  %948 = load i32, ptr %15, align 4, !tbaa !5
  %949 = add nsw i32 %948, 1
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds i32, ptr %947, i64 %950
  store i32 %946, ptr %951, align 4, !tbaa !5
  %952 = load ptr, ptr %37, align 8, !tbaa !9
  %953 = load i32, ptr %15, align 4, !tbaa !5
  %954 = add nsw i32 %953, 2
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds i32, ptr %952, i64 %955
  %957 = load i32, ptr %956, align 4, !tbaa !5
  %958 = load ptr, ptr %38, align 8, !tbaa !9
  %959 = load i32, ptr %15, align 4, !tbaa !5
  %960 = add nsw i32 %959, 2
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %958, i64 %961
  %963 = load i32, ptr %962, align 4, !tbaa !5
  %964 = add nsw i32 %957, %963
  %965 = load ptr, ptr %37, align 8, !tbaa !9
  %966 = load i32, ptr %15, align 4, !tbaa !5
  %967 = add nsw i32 %966, 2
  %968 = sext i32 %967 to i64
  %969 = getelementptr inbounds i32, ptr %965, i64 %968
  store i32 %964, ptr %969, align 4, !tbaa !5
  %970 = load ptr, ptr %37, align 8, !tbaa !9
  %971 = load i32, ptr %15, align 4, !tbaa !5
  %972 = add nsw i32 %971, 3
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds i32, ptr %970, i64 %973
  %975 = load i32, ptr %974, align 4, !tbaa !5
  %976 = load ptr, ptr %38, align 8, !tbaa !9
  %977 = load i32, ptr %15, align 4, !tbaa !5
  %978 = add nsw i32 %977, 3
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds i32, ptr %976, i64 %979
  %981 = load i32, ptr %980, align 4, !tbaa !5
  %982 = add nsw i32 %975, %981
  %983 = load ptr, ptr %37, align 8, !tbaa !9
  %984 = load i32, ptr %15, align 4, !tbaa !5
  %985 = add nsw i32 %984, 3
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds i32, ptr %983, i64 %986
  store i32 %982, ptr %987, align 4, !tbaa !5
  br label %988

988:                                              ; preds = %918
  %989 = load i32, ptr %15, align 4, !tbaa !5
  %990 = load i32, ptr %25, align 4, !tbaa !5
  %991 = add nsw i32 %989, %990
  store i32 %991, ptr %15, align 4, !tbaa !5
  br label %914, !llvm.loop !38

992:                                              ; preds = %914
  br label %993

993:                                              ; preds = %992
  %994 = load i32, ptr %14, align 4, !tbaa !5
  %995 = add nsw i32 %994, 1
  store i32 %995, ptr %14, align 4, !tbaa !5
  br label %909, !llvm.loop !39

996:                                              ; preds = %909
  call void (...) @end_time()
  call void @checkTime()
  br label %997

997:                                              ; preds = %996
  %998 = load double, ptr @secs, align 8, !tbaa !11
  %999 = load double, ptr @runSecs, align 8, !tbaa !11
  %1000 = fcmp olt double %998, %999
  br i1 %1000, label %889, label %1001, !llvm.loop !40

1001:                                             ; preds = %997
  %1002 = load ptr, ptr %37, align 8, !tbaa !9
  %1003 = getelementptr inbounds i32, ptr %1002, i64 1
  %1004 = load i32, ptr %1003, align 4, !tbaa !5
  store i32 %1004, ptr %22, align 4, !tbaa !5
  %1005 = load i32, ptr @n1, align 4, !tbaa !5
  %1006 = sitofp i32 %1005 to double
  %1007 = load double, ptr %32, align 8, !tbaa !11
  %1008 = fmul double %1006, %1007
  %1009 = load double, ptr @secs, align 8, !tbaa !11
  %1010 = fdiv double %1008, %1009
  store double %1010, ptr %29, align 8, !tbaa !11
  %1011 = load double, ptr %29, align 8, !tbaa !11
  %1012 = fptosi double %1011 to i32
  %1013 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %1012)
  %1014 = load i32, ptr %18, align 4, !tbaa !5
  %1015 = sitofp i32 %1014 to double
  %1016 = fmul double %1015, 8.000000e+00
  %1017 = fdiv double %1016, 1.000000e+06
  store double %1017, ptr %32, align 8, !tbaa !11
  %1018 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %1018, ptr @n1, align 4, !tbaa !5
  br label %1019

1019:                                             ; preds = %1103, %1001
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %1020

1020:                                             ; preds = %1038, %1019
  %1021 = load i32, ptr %15, align 4, !tbaa !5
  %1022 = load i32, ptr %18, align 4, !tbaa !5
  %1023 = load i32, ptr %25, align 4, !tbaa !5
  %1024 = add nsw i32 %1022, %1023
  %1025 = icmp slt i32 %1021, %1024
  br i1 %1025, label %1026, label %1041

1026:                                             ; preds = %1020
  %1027 = load double, ptr %31, align 8, !tbaa !11
  %1028 = load ptr, ptr @xd, align 8, !tbaa !9
  %1029 = load i32, ptr %15, align 4, !tbaa !5
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1028, i64 %1030
  store double %1027, ptr %1031, align 8, !tbaa !11
  %1032 = load i32, ptr %15, align 4, !tbaa !5
  %1033 = sitofp i32 %1032 to double
  %1034 = load ptr, ptr @yd, align 8, !tbaa !9
  %1035 = load i32, ptr %15, align 4, !tbaa !5
  %1036 = sext i32 %1035 to i64
  %1037 = getelementptr inbounds double, ptr %1034, i64 %1036
  store double %1033, ptr %1037, align 8, !tbaa !11
  br label %1038

1038:                                             ; preds = %1026
  %1039 = load i32, ptr %15, align 4, !tbaa !5
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr %15, align 4, !tbaa !5
  br label %1020, !llvm.loop !41

1041:                                             ; preds = %1020
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %1042

1042:                                             ; preds = %1099, %1041
  %1043 = load i32, ptr %14, align 4, !tbaa !5
  %1044 = load i32, ptr @n1, align 4, !tbaa !5
  %1045 = icmp slt i32 %1043, %1044
  br i1 %1045, label %1046, label %1102

1046:                                             ; preds = %1042
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %1047

1047:                                             ; preds = %1094, %1046
  %1048 = load i32, ptr %15, align 4, !tbaa !5
  %1049 = load i32, ptr %18, align 4, !tbaa !5
  %1050 = icmp slt i32 %1048, %1049
  br i1 %1050, label %1051, label %1098

1051:                                             ; preds = %1047
  %1052 = load ptr, ptr @yd, align 8, !tbaa !9
  %1053 = load i32, ptr %15, align 4, !tbaa !5
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1052, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !11
  %1057 = load ptr, ptr @xd, align 8, !tbaa !9
  %1058 = load i32, ptr %15, align 4, !tbaa !5
  %1059 = sext i32 %1058 to i64
  %1060 = getelementptr inbounds double, ptr %1057, i64 %1059
  store double %1056, ptr %1060, align 8, !tbaa !11
  %1061 = load ptr, ptr @yd, align 8, !tbaa !9
  %1062 = load i32, ptr %15, align 4, !tbaa !5
  %1063 = add nsw i32 %1062, 1
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds double, ptr %1061, i64 %1064
  %1066 = load double, ptr %1065, align 8, !tbaa !11
  %1067 = load ptr, ptr @xd, align 8, !tbaa !9
  %1068 = load i32, ptr %15, align 4, !tbaa !5
  %1069 = add nsw i32 %1068, 1
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds double, ptr %1067, i64 %1070
  store double %1066, ptr %1071, align 8, !tbaa !11
  %1072 = load ptr, ptr @yd, align 8, !tbaa !9
  %1073 = load i32, ptr %15, align 4, !tbaa !5
  %1074 = add nsw i32 %1073, 2
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds double, ptr %1072, i64 %1075
  %1077 = load double, ptr %1076, align 8, !tbaa !11
  %1078 = load ptr, ptr @xd, align 8, !tbaa !9
  %1079 = load i32, ptr %15, align 4, !tbaa !5
  %1080 = add nsw i32 %1079, 2
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds double, ptr %1078, i64 %1081
  store double %1077, ptr %1082, align 8, !tbaa !11
  %1083 = load ptr, ptr @yd, align 8, !tbaa !9
  %1084 = load i32, ptr %15, align 4, !tbaa !5
  %1085 = add nsw i32 %1084, 3
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds double, ptr %1083, i64 %1086
  %1088 = load double, ptr %1087, align 8, !tbaa !11
  %1089 = load ptr, ptr @xd, align 8, !tbaa !9
  %1090 = load i32, ptr %15, align 4, !tbaa !5
  %1091 = add nsw i32 %1090, 3
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds double, ptr %1089, i64 %1092
  store double %1088, ptr %1093, align 8, !tbaa !11
  br label %1094

1094:                                             ; preds = %1051
  %1095 = load i32, ptr %15, align 4, !tbaa !5
  %1096 = load i32, ptr %25, align 4, !tbaa !5
  %1097 = add nsw i32 %1095, %1096
  store i32 %1097, ptr %15, align 4, !tbaa !5
  br label %1047, !llvm.loop !42

1098:                                             ; preds = %1047
  br label %1099

1099:                                             ; preds = %1098
  %1100 = load i32, ptr %14, align 4, !tbaa !5
  %1101 = add nsw i32 %1100, 1
  store i32 %1101, ptr %14, align 4, !tbaa !5
  br label %1042, !llvm.loop !43

1102:                                             ; preds = %1042
  call void (...) @end_time()
  call void @checkTime()
  br label %1103

1103:                                             ; preds = %1102
  %1104 = load double, ptr @secs, align 8, !tbaa !11
  %1105 = load double, ptr @runSecs, align 8, !tbaa !11
  %1106 = fcmp olt double %1104, %1105
  br i1 %1106, label %1019, label %1107, !llvm.loop !44

1107:                                             ; preds = %1103
  %1108 = load ptr, ptr @xd, align 8, !tbaa !9
  %1109 = load i32, ptr %18, align 4, !tbaa !5
  %1110 = sub nsw i32 %1109, 1
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds double, ptr %1108, i64 %1111
  %1113 = load double, ptr %1112, align 8, !tbaa !11
  %1114 = fadd double %1113, 1.000000e+00
  store double %1114, ptr %26, align 8, !tbaa !11
  %1115 = load i32, ptr @n1, align 4, !tbaa !5
  %1116 = sitofp i32 %1115 to double
  %1117 = load double, ptr %32, align 8, !tbaa !11
  %1118 = fmul double %1116, %1117
  %1119 = load double, ptr @secs, align 8, !tbaa !11
  %1120 = fdiv double %1118, %1119
  store double %1120, ptr %27, align 8, !tbaa !11
  %1121 = load double, ptr %27, align 8, !tbaa !11
  %1122 = fptosi double %1121 to i32
  %1123 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %1122)
  %1124 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %1124, ptr @n1, align 4, !tbaa !5
  br label %1125

1125:                                             ; preds = %1209, %1107
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %1126

1126:                                             ; preds = %1144, %1125
  %1127 = load i32, ptr %15, align 4, !tbaa !5
  %1128 = load i32, ptr %19, align 4, !tbaa !5
  %1129 = load i32, ptr %25, align 4, !tbaa !5
  %1130 = add nsw i32 %1128, %1129
  %1131 = icmp slt i32 %1127, %1130
  br i1 %1131, label %1132, label %1147

1132:                                             ; preds = %1126
  %1133 = load float, ptr %12, align 4, !tbaa !13
  %1134 = load ptr, ptr %35, align 8, !tbaa !9
  %1135 = load i32, ptr %15, align 4, !tbaa !5
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds float, ptr %1134, i64 %1136
  store float %1133, ptr %1137, align 4, !tbaa !13
  %1138 = load i32, ptr %15, align 4, !tbaa !5
  %1139 = sitofp i32 %1138 to float
  %1140 = load ptr, ptr %36, align 8, !tbaa !9
  %1141 = load i32, ptr %15, align 4, !tbaa !5
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds float, ptr %1140, i64 %1142
  store float %1139, ptr %1143, align 4, !tbaa !13
  br label %1144

1144:                                             ; preds = %1132
  %1145 = load i32, ptr %15, align 4, !tbaa !5
  %1146 = add nsw i32 %1145, 1
  store i32 %1146, ptr %15, align 4, !tbaa !5
  br label %1126, !llvm.loop !45

1147:                                             ; preds = %1126
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %1148

1148:                                             ; preds = %1205, %1147
  %1149 = load i32, ptr %14, align 4, !tbaa !5
  %1150 = load i32, ptr @n1, align 4, !tbaa !5
  %1151 = icmp slt i32 %1149, %1150
  br i1 %1151, label %1152, label %1208

1152:                                             ; preds = %1148
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %1153

1153:                                             ; preds = %1200, %1152
  %1154 = load i32, ptr %15, align 4, !tbaa !5
  %1155 = load i32, ptr %19, align 4, !tbaa !5
  %1156 = icmp slt i32 %1154, %1155
  br i1 %1156, label %1157, label %1204

1157:                                             ; preds = %1153
  %1158 = load ptr, ptr %36, align 8, !tbaa !9
  %1159 = load i32, ptr %15, align 4, !tbaa !5
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds float, ptr %1158, i64 %1160
  %1162 = load float, ptr %1161, align 4, !tbaa !13
  %1163 = load ptr, ptr %35, align 8, !tbaa !9
  %1164 = load i32, ptr %15, align 4, !tbaa !5
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds float, ptr %1163, i64 %1165
  store float %1162, ptr %1166, align 4, !tbaa !13
  %1167 = load ptr, ptr %36, align 8, !tbaa !9
  %1168 = load i32, ptr %15, align 4, !tbaa !5
  %1169 = add nsw i32 %1168, 1
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds float, ptr %1167, i64 %1170
  %1172 = load float, ptr %1171, align 4, !tbaa !13
  %1173 = load ptr, ptr %35, align 8, !tbaa !9
  %1174 = load i32, ptr %15, align 4, !tbaa !5
  %1175 = add nsw i32 %1174, 1
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds float, ptr %1173, i64 %1176
  store float %1172, ptr %1177, align 4, !tbaa !13
  %1178 = load ptr, ptr %36, align 8, !tbaa !9
  %1179 = load i32, ptr %15, align 4, !tbaa !5
  %1180 = add nsw i32 %1179, 2
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds float, ptr %1178, i64 %1181
  %1183 = load float, ptr %1182, align 4, !tbaa !13
  %1184 = load ptr, ptr %35, align 8, !tbaa !9
  %1185 = load i32, ptr %15, align 4, !tbaa !5
  %1186 = add nsw i32 %1185, 2
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds float, ptr %1184, i64 %1187
  store float %1183, ptr %1188, align 4, !tbaa !13
  %1189 = load ptr, ptr %36, align 8, !tbaa !9
  %1190 = load i32, ptr %15, align 4, !tbaa !5
  %1191 = add nsw i32 %1190, 3
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds float, ptr %1189, i64 %1192
  %1194 = load float, ptr %1193, align 4, !tbaa !13
  %1195 = load ptr, ptr %35, align 8, !tbaa !9
  %1196 = load i32, ptr %15, align 4, !tbaa !5
  %1197 = add nsw i32 %1196, 3
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds float, ptr %1195, i64 %1198
  store float %1194, ptr %1199, align 4, !tbaa !13
  br label %1200

1200:                                             ; preds = %1157
  %1201 = load i32, ptr %15, align 4, !tbaa !5
  %1202 = load i32, ptr %25, align 4, !tbaa !5
  %1203 = add nsw i32 %1201, %1202
  store i32 %1203, ptr %15, align 4, !tbaa !5
  br label %1153, !llvm.loop !46

1204:                                             ; preds = %1153
  br label %1205

1205:                                             ; preds = %1204
  %1206 = load i32, ptr %14, align 4, !tbaa !5
  %1207 = add nsw i32 %1206, 1
  store i32 %1207, ptr %14, align 4, !tbaa !5
  br label %1148, !llvm.loop !47

1208:                                             ; preds = %1148
  call void (...) @end_time()
  call void @checkTime()
  br label %1209

1209:                                             ; preds = %1208
  %1210 = load double, ptr @secs, align 8, !tbaa !11
  %1211 = load double, ptr @runSecs, align 8, !tbaa !11
  %1212 = fcmp olt double %1210, %1211
  br i1 %1212, label %1125, label %1213, !llvm.loop !48

1213:                                             ; preds = %1209
  %1214 = load ptr, ptr %35, align 8, !tbaa !9
  %1215 = load i32, ptr %19, align 4, !tbaa !5
  %1216 = sub nsw i32 %1215, 1
  %1217 = sext i32 %1216 to i64
  %1218 = getelementptr inbounds float, ptr %1214, i64 %1217
  %1219 = load float, ptr %1218, align 4, !tbaa !13
  %1220 = fadd float %1219, 1.000000e+00
  store float %1220, ptr %10, align 4, !tbaa !13
  %1221 = load i32, ptr @n1, align 4, !tbaa !5
  %1222 = sitofp i32 %1221 to double
  %1223 = load double, ptr %32, align 8, !tbaa !11
  %1224 = fmul double %1222, %1223
  %1225 = load double, ptr @secs, align 8, !tbaa !11
  %1226 = fdiv double %1224, %1225
  store double %1226, ptr %28, align 8, !tbaa !11
  %1227 = load double, ptr %28, align 8, !tbaa !11
  %1228 = fptosi double %1227 to i32
  %1229 = call i32 (ptr, ...) @printf(ptr noundef @.str.13, i32 noundef %1228)
  %1230 = load i32, ptr %17, align 4, !tbaa !5
  store i32 %1230, ptr @n1, align 4, !tbaa !5
  br label %1231

1231:                                             ; preds = %1314, %1213
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %1232

1232:                                             ; preds = %1249, %1231
  %1233 = load i32, ptr %15, align 4, !tbaa !5
  %1234 = load i32, ptr %20, align 4, !tbaa !5
  %1235 = load i32, ptr %25, align 4, !tbaa !5
  %1236 = add nsw i32 %1234, %1235
  %1237 = icmp slt i32 %1233, %1236
  br i1 %1237, label %1238, label %1252

1238:                                             ; preds = %1232
  %1239 = load i32, ptr %23, align 4, !tbaa !5
  %1240 = load ptr, ptr %37, align 8, !tbaa !9
  %1241 = load i32, ptr %15, align 4, !tbaa !5
  %1242 = sext i32 %1241 to i64
  %1243 = getelementptr inbounds i32, ptr %1240, i64 %1242
  store i32 %1239, ptr %1243, align 4, !tbaa !5
  %1244 = load i32, ptr %15, align 4, !tbaa !5
  %1245 = load ptr, ptr %38, align 8, !tbaa !9
  %1246 = load i32, ptr %15, align 4, !tbaa !5
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds i32, ptr %1245, i64 %1247
  store i32 %1244, ptr %1248, align 4, !tbaa !5
  br label %1249

1249:                                             ; preds = %1238
  %1250 = load i32, ptr %15, align 4, !tbaa !5
  %1251 = add nsw i32 %1250, 1
  store i32 %1251, ptr %15, align 4, !tbaa !5
  br label %1232, !llvm.loop !49

1252:                                             ; preds = %1232
  call void (...) @start_time()
  store i32 0, ptr %14, align 4, !tbaa !5
  br label %1253

1253:                                             ; preds = %1310, %1252
  %1254 = load i32, ptr %14, align 4, !tbaa !5
  %1255 = load i32, ptr @n1, align 4, !tbaa !5
  %1256 = icmp slt i32 %1254, %1255
  br i1 %1256, label %1257, label %1313

1257:                                             ; preds = %1253
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %1258

1258:                                             ; preds = %1305, %1257
  %1259 = load i32, ptr %15, align 4, !tbaa !5
  %1260 = load i32, ptr %20, align 4, !tbaa !5
  %1261 = icmp slt i32 %1259, %1260
  br i1 %1261, label %1262, label %1309

1262:                                             ; preds = %1258
  %1263 = load ptr, ptr %38, align 8, !tbaa !9
  %1264 = load i32, ptr %15, align 4, !tbaa !5
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds i32, ptr %1263, i64 %1265
  %1267 = load i32, ptr %1266, align 4, !tbaa !5
  %1268 = load ptr, ptr %37, align 8, !tbaa !9
  %1269 = load i32, ptr %15, align 4, !tbaa !5
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds i32, ptr %1268, i64 %1270
  store i32 %1267, ptr %1271, align 4, !tbaa !5
  %1272 = load ptr, ptr %38, align 8, !tbaa !9
  %1273 = load i32, ptr %15, align 4, !tbaa !5
  %1274 = add nsw i32 %1273, 1
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds i32, ptr %1272, i64 %1275
  %1277 = load i32, ptr %1276, align 4, !tbaa !5
  %1278 = load ptr, ptr %37, align 8, !tbaa !9
  %1279 = load i32, ptr %15, align 4, !tbaa !5
  %1280 = add nsw i32 %1279, 1
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds i32, ptr %1278, i64 %1281
  store i32 %1277, ptr %1282, align 4, !tbaa !5
  %1283 = load ptr, ptr %38, align 8, !tbaa !9
  %1284 = load i32, ptr %15, align 4, !tbaa !5
  %1285 = add nsw i32 %1284, 2
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds i32, ptr %1283, i64 %1286
  %1288 = load i32, ptr %1287, align 4, !tbaa !5
  %1289 = load ptr, ptr %37, align 8, !tbaa !9
  %1290 = load i32, ptr %15, align 4, !tbaa !5
  %1291 = add nsw i32 %1290, 2
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds i32, ptr %1289, i64 %1292
  store i32 %1288, ptr %1293, align 4, !tbaa !5
  %1294 = load ptr, ptr %38, align 8, !tbaa !9
  %1295 = load i32, ptr %15, align 4, !tbaa !5
  %1296 = add nsw i32 %1295, 3
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds i32, ptr %1294, i64 %1297
  %1299 = load i32, ptr %1298, align 4, !tbaa !5
  %1300 = load ptr, ptr %37, align 8, !tbaa !9
  %1301 = load i32, ptr %15, align 4, !tbaa !5
  %1302 = add nsw i32 %1301, 3
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds i32, ptr %1300, i64 %1303
  store i32 %1299, ptr %1304, align 4, !tbaa !5
  br label %1305

1305:                                             ; preds = %1262
  %1306 = load i32, ptr %15, align 4, !tbaa !5
  %1307 = load i32, ptr %25, align 4, !tbaa !5
  %1308 = add nsw i32 %1306, %1307
  store i32 %1308, ptr %15, align 4, !tbaa !5
  br label %1258, !llvm.loop !50

1309:                                             ; preds = %1258
  br label %1310

1310:                                             ; preds = %1309
  %1311 = load i32, ptr %14, align 4, !tbaa !5
  %1312 = add nsw i32 %1311, 1
  store i32 %1312, ptr %14, align 4, !tbaa !5
  br label %1253, !llvm.loop !51

1313:                                             ; preds = %1253
  call void (...) @end_time()
  call void @checkTime()
  br label %1314

1314:                                             ; preds = %1313
  %1315 = load double, ptr @secs, align 8, !tbaa !11
  %1316 = load double, ptr @runSecs, align 8, !tbaa !11
  %1317 = fcmp olt double %1315, %1316
  br i1 %1317, label %1231, label %1318, !llvm.loop !52

1318:                                             ; preds = %1314
  %1319 = load ptr, ptr %37, align 8, !tbaa !9
  %1320 = load i32, ptr %20, align 4, !tbaa !5
  %1321 = sub nsw i32 %1320, 1
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds i32, ptr %1319, i64 %1322
  %1324 = load i32, ptr %1323, align 4, !tbaa !5
  %1325 = add nsw i32 %1324, 1
  store i32 %1325, ptr %22, align 4, !tbaa !5
  %1326 = load i32, ptr @n1, align 4, !tbaa !5
  %1327 = sitofp i32 %1326 to double
  %1328 = load double, ptr %32, align 8, !tbaa !11
  %1329 = fmul double %1327, %1328
  %1330 = load double, ptr @secs, align 8, !tbaa !11
  %1331 = fdiv double %1329, %1330
  store double %1331, ptr %29, align 8, !tbaa !11
  %1332 = load double, ptr %29, align 8, !tbaa !11
  %1333 = fptosi double %1332 to i32
  %1334 = call i32 (ptr, ...) @printf(ptr noundef @.str.14, i32 noundef %1333)
  br label %1335

1335:                                             ; preds = %1318
  %1336 = load i32, ptr %16, align 4, !tbaa !5
  %1337 = add nsw i32 %1336, 1
  store i32 %1337, ptr %16, align 4, !tbaa !5
  br label %213, !llvm.loop !53

1338:                                             ; preds = %213
  call void (...) @local_time()
  %1339 = call i32 (ptr, ...) @printf(ptr noundef @.str.15, ptr noundef @timeday)
  %1340 = load ptr, ptr @yd, align 8, !tbaa !9
  call void @free(ptr noundef %1340) #7
  %1341 = load ptr, ptr @xd, align 8, !tbaa !9
  call void @free(ptr noundef %1341) #7
  call void @llvm.lifetime.start.p0(i64 1024, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 1024, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 100, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 100, ptr %6) #7
  ret i32 0
}

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

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

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

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

; Function Attrs: nounwind allocsize(0)
declare noalias ptr @malloc(i64 noundef) #6

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

declare void @local_time(...) #4

declare void @start_time(...) #4

declare void @end_time(...) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #1

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

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

!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, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"float", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}
!37 = distinct !{!37, !16}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !16}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !16}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !16}
!47 = distinct !{!47, !16}
!48 = distinct !{!48, !16}
!49 = distinct !{!49, !16}
!50 = distinct !{!50, !16}
!51 = distinct !{!51, !16}
!52 = distinct !{!52, !16}
!53 = distinct !{!53, !16}


; 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"

@runSecs = external dso_local local_unnamed_addr global double, align 8
@secs = external local_unnamed_addr global double, align 8
@n1 = external dso_local local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [3 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [62 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [45 x i8], align 1
@xd = external dso_local local_unnamed_addr global ptr, align 8
@.str.5 = external hidden unnamed_addr constant [18 x i8], align 1
@yd = external dso_local local_unnamed_addr global ptr, align 8
@.str.6 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [23 x i8], align 1
@timeday = external global [30 x i8], align 16
@.str.8 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [67 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [74 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [75 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [33 x i8], align 1

; Function Attrs: nounwind uwtable
declare dso_local void @checkTime() local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #0 {
  %3 = alloca [25 x i32], align 16
  %4 = alloca [25 x i32], align 16
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 100, ptr nonnull %3) #10
  call void @llvm.lifetime.start.p0(i64 100, ptr nonnull %4) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #10
  store i32 12, ptr %5, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #10
  %7 = icmp sgt i32 %0, 1
  br i1 %7, label %8, label %.thread

8:                                                ; preds = %2
  %9 = getelementptr inbounds i8, ptr %1, i64 8
  %10 = load ptr, ptr %9, align 8, !tbaa !9
  %11 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %10, ptr noundef nonnull @.str, ptr noundef nonnull %5) #10
  %12 = load i32, ptr %5, align 4
  %13 = icmp eq i32 %12, 0
  %14 = icmp sgt i32 %12, 23
  %or.cond = or i1 %13, %14
  br i1 %or.cond, label %15, label %19

15:                                               ; preds = %8
  %16 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.1)
  %17 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.2)
  %18 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.3)
  call void @exit(i32 noundef 1) #11
  unreachable

19:                                               ; preds = %8
  %.not = icmp eq i32 %0, 2
  br i1 %.not, label %.thread, label %20

20:                                               ; preds = %19
  %21 = getelementptr inbounds i8, ptr %1, i64 16
  %22 = load ptr, ptr %21, align 8, !tbaa !9
  %23 = call i32 (ptr, ptr, ...) @__isoc99_sscanf(ptr noundef %22, ptr noundef nonnull @.str, ptr noundef nonnull %6) #10
  %24 = load i32, ptr %6, align 4, !tbaa !5
  %or.cond407 = icmp sgt i32 %24, 120
  br i1 %or.cond407, label %25, label %.thread

25:                                               ; preds = %20
  store i32 16, ptr %5, align 4, !tbaa !5
  %26 = icmp ugt i32 %24, 250
  br i1 %26, label %27, label %.thread

27:                                               ; preds = %25
  store i32 17, ptr %5, align 4, !tbaa !5
  %28 = icmp ugt i32 %24, 500
  br i1 %28, label %29, label %.thread

29:                                               ; preds = %27
  %30 = icmp ugt i32 %24, 1000
  %spec.store.select408 = select i1 %30, i32 19, i32 18
  store i32 %spec.store.select408, ptr %5, align 4
  br label %.thread

.thread:                                          ; preds = %29, %25, %27, %2, %20, %19
  %31 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.4)
  store <4 x i32> <i32 2, i32 4, i32 8, i32 16>, ptr %4, align 16, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %4, i64 16
  store <4 x i32> <i32 32, i32 64, i32 128, i32 256>, ptr %32, align 16, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %4, i64 32
  store <4 x i32> <i32 512, i32 1024, i32 2048, i32 4096>, ptr %33, align 16, !tbaa !5
  %34 = getelementptr inbounds i8, ptr %4, i64 48
  store <4 x i32> <i32 8192, i32 16384, i32 32768, i32 65536>, ptr %34, align 16, !tbaa !5
  %35 = getelementptr inbounds i8, ptr %4, i64 64
  store <4 x i32> <i32 131072, i32 262144, i32 524288, i32 1048576>, ptr %35, align 16, !tbaa !5
  %36 = getelementptr inbounds i8, ptr %4, i64 80
  store i32 2097152, ptr %36, align 16, !tbaa !5
  %37 = getelementptr inbounds i8, ptr %4, i64 84
  store i32 4194304, ptr %37, align 4, !tbaa !5
  %38 = getelementptr inbounds i8, ptr %4, i64 88
  store i32 8388608, ptr %38, align 8, !tbaa !5
  store <4 x i32> <i32 250, i32 500, i32 1000, i32 2000>, ptr %3, align 16, !tbaa !5
  %39 = getelementptr inbounds i8, ptr %3, i64 16
  store <4 x i32> <i32 4000, i32 8000, i32 16000, i32 32000>, ptr %39, align 16, !tbaa !5
  %40 = getelementptr inbounds i8, ptr %3, i64 32
  store <4 x i32> <i32 64000, i32 128000, i32 256000, i32 512000>, ptr %40, align 16, !tbaa !5
  %41 = getelementptr inbounds i8, ptr %3, i64 48
  store <4 x i32> <i32 1024000, i32 2048000, i32 4096000, i32 8192000>, ptr %41, align 16, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %3, i64 64
  store <4 x i32> <i32 16384000, i32 32768000, i32 65536000, i32 131072000>, ptr %42, align 16, !tbaa !5
  %43 = getelementptr inbounds i8, ptr %3, i64 80
  store i32 262144000, ptr %43, align 16, !tbaa !5
  %44 = getelementptr inbounds i8, ptr %3, i64 84
  store i32 524288000, ptr %44, align 4, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %3, i64 88
  store i32 1048576000, ptr %45, align 8, !tbaa !5
  %46 = load i32, ptr %5, align 4, !tbaa !5
  %47 = add nsw i32 %46, -1
  %48 = sext i32 %47 to i64
  %49 = getelementptr inbounds [25 x i32], ptr %4, i64 0, i64 %48
  %50 = load i32, ptr %49, align 4, !tbaa !5
  %51 = shl nsw i32 %50, 10
  %52 = sext i32 %51 to i64
  %53 = call noalias ptr @malloc(i64 noundef %52) #12
  store ptr %53, ptr @xd, align 8, !tbaa !9
  %54 = icmp eq ptr %53, null
  br i1 %54, label %55, label %57

55:                                               ; preds = %.thread
  %56 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  call void @exit(i32 noundef 1) #11
  unreachable

57:                                               ; preds = %.thread
  %58 = call noalias ptr @malloc(i64 noundef %52) #12
  store ptr %58, ptr @yd, align 8, !tbaa !9
  %59 = icmp eq ptr %58, null
  br i1 %59, label %60, label %63

60:                                               ; preds = %57
  %61 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.5)
  %62 = load ptr, ptr @xd, align 8, !tbaa !9
  call void @free(ptr noundef %62) #10
  call void @exit(i32 noundef 1) #11
  unreachable

63:                                               ; preds = %57
  call void (...) @local_time() #10
  %64 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull @timeday)
  %65 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8)
  %66 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9)
  %67 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.10)
  %68 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.11)
  %invariant.gep = getelementptr i8, ptr %58, i64 -4
  %69 = load i32, ptr %5, align 4, !tbaa !5
  %70 = icmp sgt i32 %69, 1
  br i1 %70, label %.lr.ph508, label %._crit_edge509

.lr.ph508:                                        ; preds = %63, %805
  %indvars.iv614 = phi i64 [ %indvars.iv.next615, %805 ], [ 1, %63 ]
  %71 = getelementptr inbounds [25 x i32], ptr %3, i64 0, i64 %indvars.iv614
  %72 = load i32, ptr %71, align 4, !tbaa !5
  %73 = sdiv i32 6400000, %72
  %spec.store.select = call i32 @llvm.smax.i32(i32 %73, i32 1)
  %74 = sitofp i32 %72 to double
  %75 = fmul double %74, 1.600000e+01
  %76 = fdiv double %75, 1.000000e+03
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %77 = icmp slt i32 %72, 1
  %78 = sext i32 %72 to i64
  %wide.trip.count = zext i32 %72 to i64
  %79 = shl nsw i64 %78, 3
  %80 = add nsw i64 %79, -8
  %81 = and i64 %80, -32
  %82 = add nsw i64 %78, -1
  %83 = lshr i64 %82, 2
  %84 = add nuw nsw i64 %83, 1
  %min.iters.check798 = icmp ult i32 %72, 4
  %n.vec801 = and i64 %wide.trip.count, 2147483644
  %cmp.n806 = icmp eq i64 %n.vec801, %wide.trip.count
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  %min.iters.check782 = icmp ult i32 %72, 5
  %n.vec785 = and i64 %84, 9223372036854775806
  %ind.end786 = shl i64 %n.vec785, 2
  %cmp.n793 = icmp eq i64 %84, %n.vec785
  br label %85

85:                                               ; preds = %._crit_edge432, %.lr.ph508
  br i1 %77, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %85
  %86 = load ptr, ptr @xd, align 8, !tbaa !9
  %87 = load ptr, ptr @yd, align 8, !tbaa !9
  %88 = ptrtoint ptr %87 to i64
  %89 = ptrtoint ptr %86 to i64
  %90 = sub i64 %88, %89
  %diff.check795 = icmp ult i64 %90, 32
  %or.cond809 = select i1 %min.iters.check798, i1 true, i1 %diff.check795
  br i1 %or.cond809, label %scalar.ph797.preheader, label %vector.body803

vector.body803:                                   ; preds = %.lr.ph, %vector.body803
  %index804 = phi i64 [ %index.next805, %vector.body803 ], [ 0, %.lr.ph ]
  %91 = getelementptr inbounds double, ptr %86, i64 %index804
  %92 = getelementptr inbounds i8, ptr %91, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %91, align 8, !tbaa !11
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %92, align 8, !tbaa !11
  %93 = getelementptr inbounds double, ptr %87, i64 %index804
  %94 = getelementptr inbounds i8, ptr %93, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %93, align 8, !tbaa !11
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %94, align 8, !tbaa !11
  %index.next805 = add nuw i64 %index804, 4
  %95 = icmp eq i64 %index.next805, %n.vec801
  br i1 %95, label %middle.block796, label %vector.body803, !llvm.loop !13

middle.block796:                                  ; preds = %vector.body803
  br i1 %cmp.n806, label %._crit_edge, label %scalar.ph797.preheader

scalar.ph797.preheader:                           ; preds = %middle.block796, %.lr.ph
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph ], [ %n.vec801, %middle.block796 ]
  br i1 %lcmp.mod.not, label %scalar.ph797.prol.loopexit, label %scalar.ph797.prol

scalar.ph797.prol:                                ; preds = %scalar.ph797.preheader, %scalar.ph797.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %scalar.ph797.prol ], [ %indvars.iv.ph, %scalar.ph797.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph797.prol ], [ 0, %scalar.ph797.preheader ]
  %96 = getelementptr inbounds double, ptr %86, i64 %indvars.iv.prol
  store double 1.000000e+00, ptr %96, align 8, !tbaa !11
  %97 = getelementptr inbounds double, ptr %87, i64 %indvars.iv.prol
  store double 1.000000e+00, ptr %97, align 8, !tbaa !11
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %scalar.ph797.prol.loopexit, label %scalar.ph797.prol, !llvm.loop !17

scalar.ph797.prol.loopexit:                       ; preds = %scalar.ph797.prol, %scalar.ph797.preheader
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %scalar.ph797.preheader ], [ %indvars.iv.next.prol, %scalar.ph797.prol ]
  %98 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %99 = icmp ugt i64 %98, -4
  br i1 %99, label %._crit_edge, label %scalar.ph797

scalar.ph797:                                     ; preds = %scalar.ph797.prol.loopexit, %scalar.ph797
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %scalar.ph797 ], [ %indvars.iv.unr, %scalar.ph797.prol.loopexit ]
  %100 = getelementptr inbounds double, ptr %86, i64 %indvars.iv
  store double 1.000000e+00, ptr %100, align 8, !tbaa !11
  %101 = getelementptr inbounds double, ptr %87, i64 %indvars.iv
  store double 1.000000e+00, ptr %101, align 8, !tbaa !11
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %102 = getelementptr inbounds double, ptr %86, i64 %indvars.iv.next
  store double 1.000000e+00, ptr %102, align 8, !tbaa !11
  %103 = getelementptr inbounds double, ptr %87, i64 %indvars.iv.next
  store double 1.000000e+00, ptr %103, align 8, !tbaa !11
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %104 = getelementptr inbounds double, ptr %86, i64 %indvars.iv.next.1
  store double 1.000000e+00, ptr %104, align 8, !tbaa !11
  %105 = getelementptr inbounds double, ptr %87, i64 %indvars.iv.next.1
  store double 1.000000e+00, ptr %105, align 8, !tbaa !11
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %106 = getelementptr inbounds double, ptr %86, i64 %indvars.iv.next.2
  store double 1.000000e+00, ptr %106, align 8, !tbaa !11
  %107 = getelementptr inbounds double, ptr %87, i64 %indvars.iv.next.2
  store double 1.000000e+00, ptr %107, align 8, !tbaa !11
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge, label %scalar.ph797, !llvm.loop !19

._crit_edge:                                      ; preds = %scalar.ph797.prol.loopexit, %scalar.ph797, %middle.block796, %85
  call void (...) @start_time() #10
  %108 = load i32, ptr @n1, align 4, !tbaa !5
  %109 = icmp sgt i32 %108, 0
  br i1 %109, label %.preheader416.lr.ph, label %._crit_edge432

.preheader416.lr.ph:                              ; preds = %._crit_edge
  %110 = load ptr, ptr @xd, align 8
  %111 = load ptr, ptr @yd, align 8
  br i1 %77, label %._crit_edge432, label %.preheader416.us.preheader

.preheader416.us.preheader:                       ; preds = %.preheader416.lr.ph
  %scevgep773 = getelementptr i8, ptr %110, i64 32
  %scevgep774 = getelementptr i8, ptr %scevgep773, i64 %81
  %scevgep775 = getelementptr i8, ptr %111, i64 32
  %scevgep776 = getelementptr i8, ptr %scevgep775, i64 %81
  %bound0777 = icmp ult ptr %110, %scevgep776
  %bound1778 = icmp ult ptr %111, %scevgep774
  %found.conflict779 = and i1 %bound0777, %bound1778
  br label %.preheader416.us

.preheader416.us:                                 ; preds = %.preheader416.us.preheader, %._crit_edge430.us
  %.1431.us = phi i32 [ %199, %._crit_edge430.us ], [ 0, %.preheader416.us.preheader ]
  %brmerge860 = select i1 %min.iters.check782, i1 true, i1 %found.conflict779
  br i1 %brmerge860, label %scalar.ph781.preheader, label %vector.body788

vector.body788:                                   ; preds = %.preheader416.us, %vector.body788
  %index789 = phi i64 [ %index.next792, %vector.body788 ], [ 0, %.preheader416.us ]
  %offset.idx790 = shl i64 %index789, 2
  %112 = or disjoint i64 %offset.idx790, 4
  %113 = getelementptr inbounds double, ptr %110, i64 %offset.idx790
  %114 = getelementptr inbounds double, ptr %110, i64 %112
  %115 = load double, ptr %113, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %116 = load double, ptr %114, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %117 = insertelement <2 x double> poison, double %115, i64 0
  %118 = insertelement <2 x double> %117, double %116, i64 1
  %119 = getelementptr inbounds double, ptr %111, i64 %offset.idx790
  %120 = getelementptr inbounds double, ptr %111, i64 %112
  %121 = load double, ptr %119, align 8, !tbaa !11, !alias.scope !23
  %122 = load double, ptr %120, align 8, !tbaa !11, !alias.scope !23
  %123 = insertelement <2 x double> poison, double %121, i64 0
  %124 = insertelement <2 x double> %123, double %122, i64 1
  %125 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %124, <2 x double> <double 1.000010e+00, double 1.000010e+00>, <2 x double> %118)
  %126 = or disjoint i64 %offset.idx790, 1
  %127 = or disjoint i64 %offset.idx790, 5
  %128 = getelementptr inbounds double, ptr %110, i64 %126
  %129 = getelementptr inbounds double, ptr %110, i64 %127
  %130 = load double, ptr %128, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %131 = load double, ptr %129, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %132 = insertelement <2 x double> poison, double %130, i64 0
  %133 = insertelement <2 x double> %132, double %131, i64 1
  %134 = getelementptr inbounds double, ptr %111, i64 %126
  %135 = getelementptr inbounds double, ptr %111, i64 %127
  %136 = load double, ptr %134, align 8, !tbaa !11, !alias.scope !23
  %137 = load double, ptr %135, align 8, !tbaa !11, !alias.scope !23
  %138 = insertelement <2 x double> poison, double %136, i64 0
  %139 = insertelement <2 x double> %138, double %137, i64 1
  %140 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %139, <2 x double> <double 1.000010e+00, double 1.000010e+00>, <2 x double> %133)
  %141 = or disjoint i64 %offset.idx790, 2
  %142 = or disjoint i64 %offset.idx790, 6
  %143 = getelementptr inbounds double, ptr %110, i64 %141
  %144 = getelementptr inbounds double, ptr %110, i64 %142
  %145 = load double, ptr %143, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %146 = load double, ptr %144, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %147 = insertelement <2 x double> poison, double %145, i64 0
  %148 = insertelement <2 x double> %147, double %146, i64 1
  %149 = getelementptr inbounds double, ptr %111, i64 %141
  %150 = getelementptr inbounds double, ptr %111, i64 %142
  %151 = load double, ptr %149, align 8, !tbaa !11, !alias.scope !23
  %152 = load double, ptr %150, align 8, !tbaa !11, !alias.scope !23
  %153 = insertelement <2 x double> poison, double %151, i64 0
  %154 = insertelement <2 x double> %153, double %152, i64 1
  %155 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %154, <2 x double> <double 1.000010e+00, double 1.000010e+00>, <2 x double> %148)
  %156 = or disjoint i64 %offset.idx790, 3
  %157 = or disjoint i64 %offset.idx790, 7
  %158 = getelementptr inbounds double, ptr %110, i64 %156
  %159 = getelementptr inbounds double, ptr %110, i64 %157
  %160 = load double, ptr %158, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %161 = load double, ptr %159, align 8, !tbaa !11, !alias.scope !20, !noalias !23
  %162 = insertelement <2 x double> poison, double %160, i64 0
  %163 = insertelement <2 x double> %162, double %161, i64 1
  %164 = getelementptr inbounds double, ptr %111, i64 %156
  %165 = getelementptr inbounds double, ptr %111, i64 %157
  %166 = load double, ptr %164, align 8, !tbaa !11, !alias.scope !23
  %167 = load double, ptr %165, align 8, !tbaa !11, !alias.scope !23
  %168 = insertelement <2 x double> poison, double %166, i64 0
  %169 = insertelement <2 x double> %168, double %167, i64 1
  %170 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %169, <2 x double> <double 1.000010e+00, double 1.000010e+00>, <2 x double> %163)
  %171 = getelementptr inbounds i8, ptr %158, i64 -24
  %172 = shufflevector <2 x double> %125, <2 x double> %140, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %173 = shufflevector <2 x double> %155, <2 x double> %170, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %interleaved.vec791 = shufflevector <4 x double> %172, <4 x double> %173, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 1, i32 3, i32 5, i32 7>
  store <8 x double> %interleaved.vec791, ptr %171, align 8, !tbaa !11
  %index.next792 = add nuw i64 %index789, 2
  %174 = icmp eq i64 %index.next792, %n.vec785
  br i1 %174, label %middle.block780, label %vector.body788, !llvm.loop !25

middle.block780:                                  ; preds = %vector.body788
  br i1 %cmp.n793, label %._crit_edge430.us, label %scalar.ph781.preheader

scalar.ph781.preheader:                           ; preds = %.preheader416.us, %middle.block780
  %indvars.iv529.ph = phi i64 [ 0, %.preheader416.us ], [ %ind.end786, %middle.block780 ]
  br label %scalar.ph781

scalar.ph781:                                     ; preds = %scalar.ph781.preheader, %scalar.ph781
  %indvars.iv529 = phi i64 [ %indvars.iv.next530, %scalar.ph781 ], [ %indvars.iv529.ph, %scalar.ph781.preheader ]
  %175 = getelementptr inbounds double, ptr %110, i64 %indvars.iv529
  %176 = load double, ptr %175, align 8, !tbaa !11
  %177 = getelementptr inbounds double, ptr %111, i64 %indvars.iv529
  %178 = load double, ptr %177, align 8, !tbaa !11
  %179 = call double @llvm.fmuladd.f64(double %178, double 1.000010e+00, double %176)
  store double %179, ptr %175, align 8, !tbaa !11
  %180 = or disjoint i64 %indvars.iv529, 1
  %181 = getelementptr inbounds double, ptr %110, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !11
  %183 = getelementptr inbounds double, ptr %111, i64 %180
  %184 = load double, ptr %183, align 8, !tbaa !11
  %185 = call double @llvm.fmuladd.f64(double %184, double 1.000010e+00, double %182)
  store double %185, ptr %181, align 8, !tbaa !11
  %186 = or disjoint i64 %indvars.iv529, 2
  %187 = getelementptr inbounds double, ptr %110, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !11
  %189 = getelementptr inbounds double, ptr %111, i64 %186
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = call double @llvm.fmuladd.f64(double %190, double 1.000010e+00, double %188)
  store double %191, ptr %187, align 8, !tbaa !11
  %192 = or disjoint i64 %indvars.iv529, 3
  %193 = getelementptr inbounds double, ptr %110, i64 %192
  %194 = load double, ptr %193, align 8, !tbaa !11
  %195 = getelementptr inbounds double, ptr %111, i64 %192
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = call double @llvm.fmuladd.f64(double %196, double 1.000010e+00, double %194)
  store double %197, ptr %193, align 8, !tbaa !11
  %indvars.iv.next530 = add nuw nsw i64 %indvars.iv529, 4
  %198 = icmp slt i64 %indvars.iv.next530, %78
  br i1 %198, label %scalar.ph781, label %._crit_edge430.us, !llvm.loop !26

._crit_edge430.us:                                ; preds = %scalar.ph781, %middle.block780
  %199 = add nuw nsw i32 %.1431.us, 1
  %exitcond532.not = icmp eq i32 %199, %108
  br i1 %exitcond532.not, label %._crit_edge432, label %.preheader416.us, !llvm.loop !27

._crit_edge432:                                   ; preds = %._crit_edge430.us, %.preheader416.lr.ph, %._crit_edge
  call void (...) @end_time() #10
  call void @checkTime()
  %200 = load double, ptr @secs, align 8, !tbaa !11
  %201 = load double, ptr @runSecs, align 8, !tbaa !11
  %202 = fcmp olt double %200, %201
  br i1 %202, label %85, label %203, !llvm.loop !28

203:                                              ; preds = %._crit_edge432
  %204 = shl i32 %72, 1
  %205 = fdiv double %75, 1.000000e+06
  %206 = fptosi double %76 to i32
  %207 = load i32, ptr @n1, align 4, !tbaa !5
  %208 = sitofp i32 %207 to double
  %209 = fmul double %205, %208
  %210 = fdiv double %209, %200
  %211 = fptosi double %210 to i32
  %212 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.12, i32 noundef %206, i32 noundef %211)
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %smax = call i32 @llvm.smax.i32(i32 %204, i32 1)
  %213 = sext i32 %204 to i64
  %wide.trip.count536 = zext nneg i32 %smax to i64
  %smax746 = call i64 @llvm.smax.i64(i64 %213, i64 4)
  %214 = add nsw i64 %smax746, -1
  %215 = lshr i64 %214, 2
  %216 = add nuw nsw i64 %215, 1
  %min.iters.check763 = icmp slt i32 %204, 8
  %n.vec766 = and i64 %wide.trip.count536, 2147483640
  %cmp.n771 = icmp eq i64 %n.vec766, %wide.trip.count536
  %min.iters.check749 = icmp slt i32 %204, 13
  %n.vec752 = and i64 %216, 9223372036854775804
  %ind.end753 = shl i64 %n.vec752, 2
  %cmp.n760 = icmp eq i64 %216, %n.vec752
  br label %217

217:                                              ; preds = %._crit_edge441, %203
  br i1 %77, label %._crit_edge436.thread, label %.lr.ph435.preheader

.lr.ph435.preheader:                              ; preds = %217
  br i1 %min.iters.check763, label %.lr.ph435.preheader820, label %vector.body768

vector.body768:                                   ; preds = %.lr.ph435.preheader, %vector.body768
  %index769 = phi i64 [ %index.next770, %vector.body768 ], [ 0, %.lr.ph435.preheader ]
  %218 = getelementptr inbounds float, ptr %53, i64 %index769
  %219 = getelementptr inbounds i8, ptr %218, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %218, align 4, !tbaa !29
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %219, align 4, !tbaa !29
  %220 = getelementptr inbounds float, ptr %58, i64 %index769
  %221 = getelementptr inbounds i8, ptr %220, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %220, align 4, !tbaa !29
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %221, align 4, !tbaa !29
  %index.next770 = add nuw i64 %index769, 8
  %222 = icmp eq i64 %index.next770, %n.vec766
  br i1 %222, label %middle.block761, label %vector.body768, !llvm.loop !31

middle.block761:                                  ; preds = %vector.body768
  br i1 %cmp.n771, label %._crit_edge436, label %.lr.ph435.preheader820

.lr.ph435.preheader820:                           ; preds = %middle.block761, %.lr.ph435.preheader
  %indvars.iv533.ph = phi i64 [ 0, %.lr.ph435.preheader ], [ %n.vec766, %middle.block761 ]
  br label %.lr.ph435

.lr.ph435:                                        ; preds = %.lr.ph435.preheader820, %.lr.ph435
  %indvars.iv533 = phi i64 [ %indvars.iv.next534, %.lr.ph435 ], [ %indvars.iv533.ph, %.lr.ph435.preheader820 ]
  %223 = getelementptr inbounds float, ptr %53, i64 %indvars.iv533
  store float 1.000000e+00, ptr %223, align 4, !tbaa !29
  %224 = getelementptr inbounds float, ptr %58, i64 %indvars.iv533
  store float 1.000000e+00, ptr %224, align 4, !tbaa !29
  %indvars.iv.next534 = add nuw nsw i64 %indvars.iv533, 1
  %exitcond537.not = icmp eq i64 %indvars.iv.next534, %wide.trip.count536
  br i1 %exitcond537.not, label %._crit_edge436, label %.lr.ph435, !llvm.loop !32

._crit_edge436:                                   ; preds = %.lr.ph435, %middle.block761
  call void (...) @start_time() #10
  %225 = load i32, ptr @n1, align 4, !tbaa !5
  %226 = icmp slt i32 %225, 1
  %brmerge = or i1 %226, %77
  br i1 %brmerge, label %._crit_edge441, label %.preheader415.us

._crit_edge436.thread:                            ; preds = %217
  call void (...) @start_time() #10
  br label %._crit_edge441

.preheader415.us:                                 ; preds = %._crit_edge436, %._crit_edge439.us
  %.2440.us = phi i32 [ %352, %._crit_edge439.us ], [ 0, %._crit_edge436 ]
  br i1 %min.iters.check749, label %scalar.ph748.preheader, label %vector.body755

vector.body755:                                   ; preds = %.preheader415.us, %vector.body755
  %index756 = phi i64 [ %index.next759, %vector.body755 ], [ 0, %.preheader415.us ]
  %offset.idx757 = shl i64 %index756, 2
  %227 = or disjoint i64 %offset.idx757, 4
  %228 = or disjoint i64 %offset.idx757, 8
  %229 = or disjoint i64 %offset.idx757, 12
  %230 = getelementptr inbounds float, ptr %53, i64 %offset.idx757
  %231 = getelementptr inbounds float, ptr %53, i64 %227
  %232 = getelementptr inbounds float, ptr %53, i64 %228
  %233 = getelementptr inbounds float, ptr %53, i64 %229
  %234 = load float, ptr %230, align 4, !tbaa !29
  %235 = load float, ptr %231, align 4, !tbaa !29
  %236 = load float, ptr %232, align 4, !tbaa !29
  %237 = load float, ptr %233, align 4, !tbaa !29
  %238 = insertelement <4 x float> poison, float %234, i64 0
  %239 = insertelement <4 x float> %238, float %235, i64 1
  %240 = insertelement <4 x float> %239, float %236, i64 2
  %241 = insertelement <4 x float> %240, float %237, i64 3
  %242 = getelementptr inbounds float, ptr %58, i64 %offset.idx757
  %243 = getelementptr inbounds float, ptr %58, i64 %227
  %244 = getelementptr inbounds float, ptr %58, i64 %228
  %245 = getelementptr inbounds float, ptr %58, i64 %229
  %246 = load float, ptr %242, align 4, !tbaa !29
  %247 = load float, ptr %243, align 4, !tbaa !29
  %248 = load float, ptr %244, align 4, !tbaa !29
  %249 = load float, ptr %245, align 4, !tbaa !29
  %250 = insertelement <4 x float> poison, float %246, i64 0
  %251 = insertelement <4 x float> %250, float %247, i64 1
  %252 = insertelement <4 x float> %251, float %248, i64 2
  %253 = insertelement <4 x float> %252, float %249, i64 3
  %254 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %253, <4 x float> <float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000>, <4 x float> %241)
  %255 = or disjoint i64 %offset.idx757, 1
  %256 = or disjoint i64 %offset.idx757, 5
  %257 = or disjoint i64 %offset.idx757, 9
  %258 = or disjoint i64 %offset.idx757, 13
  %259 = getelementptr inbounds float, ptr %53, i64 %255
  %260 = getelementptr inbounds float, ptr %53, i64 %256
  %261 = getelementptr inbounds float, ptr %53, i64 %257
  %262 = getelementptr inbounds float, ptr %53, i64 %258
  %263 = load float, ptr %259, align 4, !tbaa !29
  %264 = load float, ptr %260, align 4, !tbaa !29
  %265 = load float, ptr %261, align 4, !tbaa !29
  %266 = load float, ptr %262, align 4, !tbaa !29
  %267 = insertelement <4 x float> poison, float %263, i64 0
  %268 = insertelement <4 x float> %267, float %264, i64 1
  %269 = insertelement <4 x float> %268, float %265, i64 2
  %270 = insertelement <4 x float> %269, float %266, i64 3
  %271 = getelementptr inbounds float, ptr %58, i64 %255
  %272 = getelementptr inbounds float, ptr %58, i64 %256
  %273 = getelementptr inbounds float, ptr %58, i64 %257
  %274 = getelementptr inbounds float, ptr %58, i64 %258
  %275 = load float, ptr %271, align 4, !tbaa !29
  %276 = load float, ptr %272, align 4, !tbaa !29
  %277 = load float, ptr %273, align 4, !tbaa !29
  %278 = load float, ptr %274, align 4, !tbaa !29
  %279 = insertelement <4 x float> poison, float %275, i64 0
  %280 = insertelement <4 x float> %279, float %276, i64 1
  %281 = insertelement <4 x float> %280, float %277, i64 2
  %282 = insertelement <4 x float> %281, float %278, i64 3
  %283 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %282, <4 x float> <float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000>, <4 x float> %270)
  %284 = or disjoint i64 %offset.idx757, 2
  %285 = or disjoint i64 %offset.idx757, 6
  %286 = or disjoint i64 %offset.idx757, 10
  %287 = or disjoint i64 %offset.idx757, 14
  %288 = getelementptr inbounds float, ptr %53, i64 %284
  %289 = getelementptr inbounds float, ptr %53, i64 %285
  %290 = getelementptr inbounds float, ptr %53, i64 %286
  %291 = getelementptr inbounds float, ptr %53, i64 %287
  %292 = load float, ptr %288, align 4, !tbaa !29
  %293 = load float, ptr %289, align 4, !tbaa !29
  %294 = load float, ptr %290, align 4, !tbaa !29
  %295 = load float, ptr %291, align 4, !tbaa !29
  %296 = insertelement <4 x float> poison, float %292, i64 0
  %297 = insertelement <4 x float> %296, float %293, i64 1
  %298 = insertelement <4 x float> %297, float %294, i64 2
  %299 = insertelement <4 x float> %298, float %295, i64 3
  %300 = getelementptr inbounds float, ptr %58, i64 %284
  %301 = getelementptr inbounds float, ptr %58, i64 %285
  %302 = getelementptr inbounds float, ptr %58, i64 %286
  %303 = getelementptr inbounds float, ptr %58, i64 %287
  %304 = load float, ptr %300, align 4, !tbaa !29
  %305 = load float, ptr %301, align 4, !tbaa !29
  %306 = load float, ptr %302, align 4, !tbaa !29
  %307 = load float, ptr %303, align 4, !tbaa !29
  %308 = insertelement <4 x float> poison, float %304, i64 0
  %309 = insertelement <4 x float> %308, float %305, i64 1
  %310 = insertelement <4 x float> %309, float %306, i64 2
  %311 = insertelement <4 x float> %310, float %307, i64 3
  %312 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %311, <4 x float> <float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000>, <4 x float> %299)
  %313 = or disjoint i64 %offset.idx757, 3
  %314 = or disjoint i64 %offset.idx757, 7
  %315 = or disjoint i64 %offset.idx757, 11
  %316 = or disjoint i64 %offset.idx757, 15
  %317 = getelementptr inbounds float, ptr %53, i64 %313
  %318 = getelementptr inbounds float, ptr %53, i64 %314
  %319 = getelementptr inbounds float, ptr %53, i64 %315
  %320 = getelementptr inbounds float, ptr %53, i64 %316
  %321 = load float, ptr %317, align 4, !tbaa !29
  %322 = load float, ptr %318, align 4, !tbaa !29
  %323 = load float, ptr %319, align 4, !tbaa !29
  %324 = load float, ptr %320, align 4, !tbaa !29
  %325 = insertelement <4 x float> poison, float %321, i64 0
  %326 = insertelement <4 x float> %325, float %322, i64 1
  %327 = insertelement <4 x float> %326, float %323, i64 2
  %328 = insertelement <4 x float> %327, float %324, i64 3
  %329 = getelementptr inbounds float, ptr %58, i64 %313
  %330 = getelementptr inbounds float, ptr %58, i64 %314
  %331 = getelementptr inbounds float, ptr %58, i64 %315
  %332 = getelementptr inbounds float, ptr %58, i64 %316
  %333 = load float, ptr %329, align 4, !tbaa !29
  %334 = load float, ptr %330, align 4, !tbaa !29
  %335 = load float, ptr %331, align 4, !tbaa !29
  %336 = load float, ptr %332, align 4, !tbaa !29
  %337 = insertelement <4 x float> poison, float %333, i64 0
  %338 = insertelement <4 x float> %337, float %334, i64 1
  %339 = insertelement <4 x float> %338, float %335, i64 2
  %340 = insertelement <4 x float> %339, float %336, i64 3
  %341 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %340, <4 x float> <float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000>, <4 x float> %328)
  %342 = getelementptr inbounds i8, ptr %317, i64 -12
  %343 = shufflevector <4 x float> %254, <4 x float> %283, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
  %344 = shufflevector <4 x float> %312, <4 x float> %341, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
  %interleaved.vec758 = shufflevector <8 x float> %343, <8 x float> %344, <16 x i32> <i32 0, i32 4, i32 8, i32 12, i32 1, i32 5, i32 9, i32 13, i32 2, i32 6, i32 10, i32 14, i32 3, i32 7, i32 11, i32 15>
  store <16 x float> %interleaved.vec758, ptr %342, align 4, !tbaa !29
  %index.next759 = add nuw i64 %index756, 4
  %345 = icmp eq i64 %index.next759, %n.vec752
  br i1 %345, label %middle.block747, label %vector.body755, !llvm.loop !33

middle.block747:                                  ; preds = %vector.body755
  br i1 %cmp.n760, label %._crit_edge439.us, label %scalar.ph748.preheader

scalar.ph748.preheader:                           ; preds = %middle.block747, %.preheader415.us
  %indvars.iv538.ph = phi i64 [ 0, %.preheader415.us ], [ %ind.end753, %middle.block747 ]
  br label %scalar.ph748

scalar.ph748:                                     ; preds = %scalar.ph748.preheader, %scalar.ph748
  %indvars.iv538 = phi i64 [ %indvars.iv.next539, %scalar.ph748 ], [ %indvars.iv538.ph, %scalar.ph748.preheader ]
  %346 = getelementptr inbounds float, ptr %53, i64 %indvars.iv538
  %347 = getelementptr inbounds float, ptr %58, i64 %indvars.iv538
  %348 = load <4 x float>, ptr %346, align 4, !tbaa !29
  %349 = load <4 x float>, ptr %347, align 4, !tbaa !29
  %350 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %349, <4 x float> <float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000, float 0x3FF00068E0000000>, <4 x float> %348)
  store <4 x float> %350, ptr %346, align 4, !tbaa !29
  %indvars.iv.next539 = add nuw nsw i64 %indvars.iv538, 4
  %351 = icmp slt i64 %indvars.iv.next539, %213
  br i1 %351, label %scalar.ph748, label %._crit_edge439.us, !llvm.loop !34

._crit_edge439.us:                                ; preds = %scalar.ph748, %middle.block747
  %352 = add nuw nsw i32 %.2440.us, 1
  %exitcond541.not = icmp eq i32 %352, %225
  br i1 %exitcond541.not, label %._crit_edge441, label %.preheader415.us, !llvm.loop !35

._crit_edge441:                                   ; preds = %._crit_edge439.us, %._crit_edge436, %._crit_edge436.thread
  call void (...) @end_time() #10
  call void @checkTime()
  %353 = load double, ptr @secs, align 8, !tbaa !11
  %354 = load double, ptr @runSecs, align 8, !tbaa !11
  %355 = fcmp olt double %353, %354
  br i1 %355, label %217, label %356, !llvm.loop !36

356:                                              ; preds = %._crit_edge441
  %357 = load i32, ptr @n1, align 4, !tbaa !5
  %358 = sitofp i32 %357 to double
  %359 = fmul double %205, %358
  %360 = fdiv double %359, %353
  %361 = fptosi double %360 to i32
  %362 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %361)
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %gep = getelementptr i32, ptr %invariant.gep, i64 %213
  %363 = zext nneg i32 %smax to i64
  %364 = shl nuw nsw i64 %363, 2
  %365 = icmp slt i32 %204, 5
  %unroll_iter = and i64 %216, 9223372036854775806
  %366 = and i64 %214, 4
  %lcmp.mod830.not.not = icmp eq i64 %366, 0
  br label %367

367:                                              ; preds = %._crit_edge451, %356
  br i1 %77, label %._crit_edge445, label %.lr.ph444.preheader

.lr.ph444.preheader:                              ; preds = %367
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %53, i8 0, i64 %364, i1 false), !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %58, i8 0, i64 %364, i1 false), !tbaa !5
  br label %._crit_edge445

._crit_edge445:                                   ; preds = %.lr.ph444.preheader, %367
  store i32 1, ptr %gep, align 4, !tbaa !5
  call void (...) @start_time() #10
  %368 = load i32, ptr @n1, align 4, !tbaa !5
  %369 = icmp slt i32 %368, 1
  %brmerge629 = or i1 %369, %77
  br i1 %brmerge629, label %._crit_edge451, label %.preheader414.us

.preheader414.us:                                 ; preds = %._crit_edge445, %._crit_edge448.us
  %.3450.us = phi i32 [ %391, %._crit_edge448.us ], [ 0, %._crit_edge445 ]
  %.0388449.us = phi i32 [ %390, %._crit_edge448.us ], [ %spec.store.select, %._crit_edge445 ]
  %370 = insertelement <4 x i32> poison, i32 %.0388449.us, i64 0
  %371 = shufflevector <4 x i32> %370, <4 x i32> poison, <4 x i32> zeroinitializer
  br i1 %365, label %._crit_edge448.us.unr-lcssa, label %.preheader414.us.new

.preheader414.us.new:                             ; preds = %.preheader414.us, %.preheader414.us.new
  %indvars.iv547 = phi i64 [ %indvars.iv.next548.1, %.preheader414.us.new ], [ 0, %.preheader414.us ]
  %niter = phi i64 [ %niter.next.1, %.preheader414.us.new ], [ 0, %.preheader414.us ]
  %372 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv547
  %373 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv547
  %374 = load <4 x i32>, ptr %372, align 4, !tbaa !5
  %375 = add nsw <4 x i32> %374, %371
  %376 = load <4 x i32>, ptr %373, align 4, !tbaa !5
  %377 = add nsw <4 x i32> %375, %376
  store <4 x i32> %377, ptr %372, align 4, !tbaa !5
  %indvars.iv.next548 = or disjoint i64 %indvars.iv547, 4
  %378 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv.next548
  %379 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next548
  %380 = load <4 x i32>, ptr %378, align 4, !tbaa !5
  %381 = add nsw <4 x i32> %380, %371
  %382 = load <4 x i32>, ptr %379, align 4, !tbaa !5
  %383 = add nsw <4 x i32> %381, %382
  store <4 x i32> %383, ptr %378, align 4, !tbaa !5
  %indvars.iv.next548.1 = add nuw nsw i64 %indvars.iv547, 8
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1.not = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1.not, label %._crit_edge448.us.unr-lcssa, label %.preheader414.us.new, !llvm.loop !37

._crit_edge448.us.unr-lcssa:                      ; preds = %.preheader414.us.new, %.preheader414.us
  %indvars.iv547.unr = phi i64 [ 0, %.preheader414.us ], [ %indvars.iv.next548.1, %.preheader414.us.new ]
  br i1 %lcmp.mod830.not.not, label %._crit_edge448.us.epilog-lcssa, label %._crit_edge448.us

._crit_edge448.us.epilog-lcssa:                   ; preds = %._crit_edge448.us.unr-lcssa
  %384 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv547.unr
  %385 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv547.unr
  %386 = load <4 x i32>, ptr %384, align 4, !tbaa !5
  %387 = add nsw <4 x i32> %386, %371
  %388 = load <4 x i32>, ptr %385, align 4, !tbaa !5
  %389 = add nsw <4 x i32> %387, %388
  store <4 x i32> %389, ptr %384, align 4, !tbaa !5
  br label %._crit_edge448.us

._crit_edge448.us:                                ; preds = %._crit_edge448.us.unr-lcssa, %._crit_edge448.us.epilog-lcssa
  %390 = sub nsw i32 0, %.0388449.us
  %391 = add nuw nsw i32 %.3450.us, 1
  %exitcond550.not = icmp eq i32 %391, %368
  br i1 %exitcond550.not, label %._crit_edge451, label %.preheader414.us, !llvm.loop !38

._crit_edge451:                                   ; preds = %._crit_edge448.us, %._crit_edge445
  call void (...) @end_time() #10
  call void @checkTime()
  %392 = load double, ptr @secs, align 8, !tbaa !11
  %393 = load double, ptr @runSecs, align 8, !tbaa !11
  %394 = fcmp olt double %392, %393
  br i1 %394, label %367, label %395, !llvm.loop !39

395:                                              ; preds = %._crit_edge451
  %396 = load i32, ptr @n1, align 4, !tbaa !5
  %397 = sitofp i32 %396 to double
  %398 = fmul double %205, %397
  %399 = fdiv double %398, %392
  %400 = fptosi double %399 to i32
  %401 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %400)
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %wide.trip.count554 = zext nneg i32 %72 to i64
  %402 = shl nsw i64 %78, 3
  %403 = add nsw i64 %402, -8
  %404 = and i64 %403, -32
  %405 = add nsw i64 %78, -1
  %406 = lshr i64 %405, 2
  %407 = add nuw nsw i64 %406, 1
  %min.iters.check737 = icmp ult i32 %72, 4
  %n.vec740 = and i64 %wide.trip.count, 2147483644
  %cmp.n745 = icmp eq i64 %n.vec740, %wide.trip.count
  %xtraiter831 = and i64 %wide.trip.count, 3
  %lcmp.mod832.not = icmp eq i64 %xtraiter831, 0
  %min.iters.check721 = icmp ult i32 %72, 5
  %n.vec724 = and i64 %407, 9223372036854775806
  %ind.end725 = shl i64 %n.vec724, 2
  %cmp.n732 = icmp eq i64 %407, %n.vec724
  br label %408

408:                                              ; preds = %._crit_edge460, %395
  br i1 %77, label %._crit_edge455, label %.lr.ph454

.lr.ph454:                                        ; preds = %408
  %409 = load ptr, ptr @xd, align 8, !tbaa !9
  %410 = load ptr, ptr @yd, align 8, !tbaa !9
  %411 = ptrtoint ptr %410 to i64
  %412 = ptrtoint ptr %409 to i64
  %413 = sub i64 %411, %412
  %diff.check734 = icmp ult i64 %413, 32
  %or.cond812 = select i1 %min.iters.check737, i1 true, i1 %diff.check734
  br i1 %or.cond812, label %scalar.ph736.preheader, label %vector.body742

vector.body742:                                   ; preds = %.lr.ph454, %vector.body742
  %index743 = phi i64 [ %index.next744, %vector.body742 ], [ 0, %.lr.ph454 ]
  %414 = getelementptr inbounds double, ptr %409, i64 %index743
  %415 = getelementptr inbounds i8, ptr %414, i64 16
  store <2 x double> zeroinitializer, ptr %414, align 8, !tbaa !11
  store <2 x double> zeroinitializer, ptr %415, align 8, !tbaa !11
  %416 = getelementptr inbounds double, ptr %410, i64 %index743
  %417 = getelementptr inbounds i8, ptr %416, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %416, align 8, !tbaa !11
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %417, align 8, !tbaa !11
  %index.next744 = add nuw i64 %index743, 4
  %418 = icmp eq i64 %index.next744, %n.vec740
  br i1 %418, label %middle.block735, label %vector.body742, !llvm.loop !40

middle.block735:                                  ; preds = %vector.body742
  br i1 %cmp.n745, label %._crit_edge455, label %scalar.ph736.preheader

scalar.ph736.preheader:                           ; preds = %middle.block735, %.lr.ph454
  %indvars.iv551.ph = phi i64 [ 0, %.lr.ph454 ], [ %n.vec740, %middle.block735 ]
  br i1 %lcmp.mod832.not, label %scalar.ph736.prol.loopexit, label %scalar.ph736.prol

scalar.ph736.prol:                                ; preds = %scalar.ph736.preheader, %scalar.ph736.prol
  %indvars.iv551.prol = phi i64 [ %indvars.iv.next552.prol, %scalar.ph736.prol ], [ %indvars.iv551.ph, %scalar.ph736.preheader ]
  %prol.iter833 = phi i64 [ %prol.iter833.next, %scalar.ph736.prol ], [ 0, %scalar.ph736.preheader ]
  %419 = getelementptr inbounds double, ptr %409, i64 %indvars.iv551.prol
  store double 0.000000e+00, ptr %419, align 8, !tbaa !11
  %420 = getelementptr inbounds double, ptr %410, i64 %indvars.iv551.prol
  store double 1.000000e+00, ptr %420, align 8, !tbaa !11
  %indvars.iv.next552.prol = add nuw nsw i64 %indvars.iv551.prol, 1
  %prol.iter833.next = add i64 %prol.iter833, 1
  %prol.iter833.cmp.not = icmp eq i64 %prol.iter833.next, %xtraiter831
  br i1 %prol.iter833.cmp.not, label %scalar.ph736.prol.loopexit, label %scalar.ph736.prol, !llvm.loop !41

scalar.ph736.prol.loopexit:                       ; preds = %scalar.ph736.prol, %scalar.ph736.preheader
  %indvars.iv551.unr = phi i64 [ %indvars.iv551.ph, %scalar.ph736.preheader ], [ %indvars.iv.next552.prol, %scalar.ph736.prol ]
  %421 = sub nsw i64 %indvars.iv551.ph, %wide.trip.count
  %422 = icmp ugt i64 %421, -4
  br i1 %422, label %._crit_edge455, label %scalar.ph736

scalar.ph736:                                     ; preds = %scalar.ph736.prol.loopexit, %scalar.ph736
  %indvars.iv551 = phi i64 [ %indvars.iv.next552.3, %scalar.ph736 ], [ %indvars.iv551.unr, %scalar.ph736.prol.loopexit ]
  %423 = getelementptr inbounds double, ptr %409, i64 %indvars.iv551
  store double 0.000000e+00, ptr %423, align 8, !tbaa !11
  %424 = getelementptr inbounds double, ptr %410, i64 %indvars.iv551
  store double 1.000000e+00, ptr %424, align 8, !tbaa !11
  %indvars.iv.next552 = add nuw nsw i64 %indvars.iv551, 1
  %425 = getelementptr inbounds double, ptr %409, i64 %indvars.iv.next552
  store double 0.000000e+00, ptr %425, align 8, !tbaa !11
  %426 = getelementptr inbounds double, ptr %410, i64 %indvars.iv.next552
  store double 1.000000e+00, ptr %426, align 8, !tbaa !11
  %indvars.iv.next552.1 = add nuw nsw i64 %indvars.iv551, 2
  %427 = getelementptr inbounds double, ptr %409, i64 %indvars.iv.next552.1
  store double 0.000000e+00, ptr %427, align 8, !tbaa !11
  %428 = getelementptr inbounds double, ptr %410, i64 %indvars.iv.next552.1
  store double 1.000000e+00, ptr %428, align 8, !tbaa !11
  %indvars.iv.next552.2 = add nuw nsw i64 %indvars.iv551, 3
  %429 = getelementptr inbounds double, ptr %409, i64 %indvars.iv.next552.2
  store double 0.000000e+00, ptr %429, align 8, !tbaa !11
  %430 = getelementptr inbounds double, ptr %410, i64 %indvars.iv.next552.2
  store double 1.000000e+00, ptr %430, align 8, !tbaa !11
  %indvars.iv.next552.3 = add nuw nsw i64 %indvars.iv551, 4
  %exitcond555.not.3 = icmp eq i64 %indvars.iv.next552.3, %wide.trip.count554
  br i1 %exitcond555.not.3, label %._crit_edge455, label %scalar.ph736, !llvm.loop !42

._crit_edge455:                                   ; preds = %scalar.ph736.prol.loopexit, %scalar.ph736, %middle.block735, %408
  call void (...) @start_time() #10
  %431 = load i32, ptr @n1, align 4, !tbaa !5
  %432 = icmp sgt i32 %431, 0
  br i1 %432, label %.preheader413.lr.ph, label %._crit_edge460

.preheader413.lr.ph:                              ; preds = %._crit_edge455
  %433 = load ptr, ptr @xd, align 8
  %434 = load ptr, ptr @yd, align 8
  br i1 %77, label %._crit_edge460, label %.preheader413.us.preheader

.preheader413.us.preheader:                       ; preds = %.preheader413.lr.ph
  %scevgep = getelementptr i8, ptr %433, i64 32
  %scevgep716 = getelementptr i8, ptr %scevgep, i64 %404
  %scevgep717 = getelementptr i8, ptr %434, i64 32
  %scevgep718 = getelementptr i8, ptr %scevgep717, i64 %404
  %bound0 = icmp ult ptr %433, %scevgep718
  %bound1 = icmp ult ptr %434, %scevgep716
  %found.conflict = and i1 %bound0, %bound1
  br label %.preheader413.us

.preheader413.us:                                 ; preds = %.preheader413.us.preheader, %._crit_edge458.us
  %.4459.us = phi i32 [ %522, %._crit_edge458.us ], [ 0, %.preheader413.us.preheader ]
  %brmerge861 = select i1 %min.iters.check721, i1 true, i1 %found.conflict
  br i1 %brmerge861, label %scalar.ph720.preheader, label %vector.body727

vector.body727:                                   ; preds = %.preheader413.us, %vector.body727
  %index728 = phi i64 [ %index.next731, %vector.body727 ], [ 0, %.preheader413.us ]
  %offset.idx729 = shl i64 %index728, 2
  %435 = or disjoint i64 %offset.idx729, 4
  %436 = getelementptr inbounds double, ptr %433, i64 %offset.idx729
  %437 = getelementptr inbounds double, ptr %433, i64 %435
  %438 = load double, ptr %436, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %439 = load double, ptr %437, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %440 = insertelement <2 x double> poison, double %438, i64 0
  %441 = insertelement <2 x double> %440, double %439, i64 1
  %442 = getelementptr inbounds double, ptr %434, i64 %offset.idx729
  %443 = getelementptr inbounds double, ptr %434, i64 %435
  %444 = load double, ptr %442, align 8, !tbaa !11, !alias.scope !46
  %445 = load double, ptr %443, align 8, !tbaa !11, !alias.scope !46
  %446 = insertelement <2 x double> poison, double %444, i64 0
  %447 = insertelement <2 x double> %446, double %445, i64 1
  %448 = fadd <2 x double> %441, %447
  %449 = or disjoint i64 %offset.idx729, 1
  %450 = or disjoint i64 %offset.idx729, 5
  %451 = getelementptr inbounds double, ptr %433, i64 %449
  %452 = getelementptr inbounds double, ptr %433, i64 %450
  %453 = load double, ptr %451, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %454 = load double, ptr %452, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %455 = insertelement <2 x double> poison, double %453, i64 0
  %456 = insertelement <2 x double> %455, double %454, i64 1
  %457 = getelementptr inbounds double, ptr %434, i64 %449
  %458 = getelementptr inbounds double, ptr %434, i64 %450
  %459 = load double, ptr %457, align 8, !tbaa !11, !alias.scope !46
  %460 = load double, ptr %458, align 8, !tbaa !11, !alias.scope !46
  %461 = insertelement <2 x double> poison, double %459, i64 0
  %462 = insertelement <2 x double> %461, double %460, i64 1
  %463 = fadd <2 x double> %456, %462
  %464 = or disjoint i64 %offset.idx729, 2
  %465 = or disjoint i64 %offset.idx729, 6
  %466 = getelementptr inbounds double, ptr %433, i64 %464
  %467 = getelementptr inbounds double, ptr %433, i64 %465
  %468 = load double, ptr %466, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %469 = load double, ptr %467, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %470 = insertelement <2 x double> poison, double %468, i64 0
  %471 = insertelement <2 x double> %470, double %469, i64 1
  %472 = getelementptr inbounds double, ptr %434, i64 %464
  %473 = getelementptr inbounds double, ptr %434, i64 %465
  %474 = load double, ptr %472, align 8, !tbaa !11, !alias.scope !46
  %475 = load double, ptr %473, align 8, !tbaa !11, !alias.scope !46
  %476 = insertelement <2 x double> poison, double %474, i64 0
  %477 = insertelement <2 x double> %476, double %475, i64 1
  %478 = fadd <2 x double> %471, %477
  %479 = or disjoint i64 %offset.idx729, 3
  %480 = or disjoint i64 %offset.idx729, 7
  %481 = getelementptr inbounds double, ptr %433, i64 %479
  %482 = getelementptr inbounds double, ptr %433, i64 %480
  %483 = load double, ptr %481, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %484 = load double, ptr %482, align 8, !tbaa !11, !alias.scope !43, !noalias !46
  %485 = insertelement <2 x double> poison, double %483, i64 0
  %486 = insertelement <2 x double> %485, double %484, i64 1
  %487 = getelementptr inbounds double, ptr %434, i64 %479
  %488 = getelementptr inbounds double, ptr %434, i64 %480
  %489 = load double, ptr %487, align 8, !tbaa !11, !alias.scope !46
  %490 = load double, ptr %488, align 8, !tbaa !11, !alias.scope !46
  %491 = insertelement <2 x double> poison, double %489, i64 0
  %492 = insertelement <2 x double> %491, double %490, i64 1
  %493 = fadd <2 x double> %486, %492
  %494 = getelementptr inbounds i8, ptr %481, i64 -24
  %495 = shufflevector <2 x double> %448, <2 x double> %463, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %496 = shufflevector <2 x double> %478, <2 x double> %493, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %interleaved.vec730 = shufflevector <4 x double> %495, <4 x double> %496, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 1, i32 3, i32 5, i32 7>
  store <8 x double> %interleaved.vec730, ptr %494, align 8, !tbaa !11
  %index.next731 = add nuw i64 %index728, 2
  %497 = icmp eq i64 %index.next731, %n.vec724
  br i1 %497, label %middle.block719, label %vector.body727, !llvm.loop !48

middle.block719:                                  ; preds = %vector.body727
  br i1 %cmp.n732, label %._crit_edge458.us, label %scalar.ph720.preheader

scalar.ph720.preheader:                           ; preds = %.preheader413.us, %middle.block719
  %indvars.iv556.ph = phi i64 [ 0, %.preheader413.us ], [ %ind.end725, %middle.block719 ]
  br label %scalar.ph720

scalar.ph720:                                     ; preds = %scalar.ph720.preheader, %scalar.ph720
  %indvars.iv556 = phi i64 [ %indvars.iv.next557, %scalar.ph720 ], [ %indvars.iv556.ph, %scalar.ph720.preheader ]
  %498 = getelementptr inbounds double, ptr %433, i64 %indvars.iv556
  %499 = load double, ptr %498, align 8, !tbaa !11
  %500 = getelementptr inbounds double, ptr %434, i64 %indvars.iv556
  %501 = load double, ptr %500, align 8, !tbaa !11
  %502 = fadd double %499, %501
  store double %502, ptr %498, align 8, !tbaa !11
  %503 = or disjoint i64 %indvars.iv556, 1
  %504 = getelementptr inbounds double, ptr %433, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = getelementptr inbounds double, ptr %434, i64 %503
  %507 = load double, ptr %506, align 8, !tbaa !11
  %508 = fadd double %505, %507
  store double %508, ptr %504, align 8, !tbaa !11
  %509 = or disjoint i64 %indvars.iv556, 2
  %510 = getelementptr inbounds double, ptr %433, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = getelementptr inbounds double, ptr %434, i64 %509
  %513 = load double, ptr %512, align 8, !tbaa !11
  %514 = fadd double %511, %513
  store double %514, ptr %510, align 8, !tbaa !11
  %515 = or disjoint i64 %indvars.iv556, 3
  %516 = getelementptr inbounds double, ptr %433, i64 %515
  %517 = load double, ptr %516, align 8, !tbaa !11
  %518 = getelementptr inbounds double, ptr %434, i64 %515
  %519 = load double, ptr %518, align 8, !tbaa !11
  %520 = fadd double %517, %519
  store double %520, ptr %516, align 8, !tbaa !11
  %indvars.iv.next557 = add nuw nsw i64 %indvars.iv556, 4
  %521 = icmp slt i64 %indvars.iv.next557, %78
  br i1 %521, label %scalar.ph720, label %._crit_edge458.us, !llvm.loop !49

._crit_edge458.us:                                ; preds = %scalar.ph720, %middle.block719
  %522 = add nuw nsw i32 %.4459.us, 1
  %exitcond559.not = icmp eq i32 %522, %431
  br i1 %exitcond559.not, label %._crit_edge460, label %.preheader413.us, !llvm.loop !50

._crit_edge460:                                   ; preds = %._crit_edge458.us, %.preheader413.lr.ph, %._crit_edge455
  call void (...) @end_time() #10
  call void @checkTime()
  %523 = load double, ptr @secs, align 8, !tbaa !11
  %524 = load double, ptr @runSecs, align 8, !tbaa !11
  %525 = fcmp olt double %523, %524
  br i1 %525, label %408, label %526, !llvm.loop !51

526:                                              ; preds = %._crit_edge460
  %527 = load i32, ptr @n1, align 4, !tbaa !5
  %528 = sitofp i32 %527 to double
  %529 = fmul double %205, %528
  %530 = fdiv double %529, %523
  %531 = fptosi double %530 to i32
  %532 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %531)
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %smax692 = call i64 @llvm.smax.i64(i64 %213, i64 4)
  %533 = add nsw i64 %smax692, -1
  %534 = lshr i64 %533, 2
  %535 = add nuw nsw i64 %534, 1
  %min.iters.check706 = icmp slt i32 %204, 8
  %n.vec709 = and i64 %wide.trip.count536, 2147483640
  %cmp.n714 = icmp eq i64 %n.vec709, %wide.trip.count536
  %min.iters.check695 = icmp slt i32 %204, 5
  %n.vec698 = and i64 %535, 9223372036854775806
  %ind.end = shl i64 %n.vec698, 2
  %cmp.n703 = icmp eq i64 %535, %n.vec698
  br label %536

536:                                              ; preds = %._crit_edge469, %526
  br i1 %77, label %._crit_edge464.thread, label %.lr.ph463.preheader

.lr.ph463.preheader:                              ; preds = %536
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %53, i8 0, i64 %364, i1 false), !tbaa !29
  br i1 %min.iters.check706, label %.lr.ph463.preheader819, label %vector.body711

vector.body711:                                   ; preds = %.lr.ph463.preheader, %vector.body711
  %index712 = phi i64 [ %index.next713, %vector.body711 ], [ 0, %.lr.ph463.preheader ]
  %537 = getelementptr inbounds float, ptr %58, i64 %index712
  %538 = getelementptr inbounds i8, ptr %537, i64 16
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %537, align 4, !tbaa !29
  store <4 x float> <float 1.000000e+00, float 1.000000e+00, float 1.000000e+00, float 1.000000e+00>, ptr %538, align 4, !tbaa !29
  %index.next713 = add nuw i64 %index712, 8
  %539 = icmp eq i64 %index.next713, %n.vec709
  br i1 %539, label %middle.block704, label %vector.body711, !llvm.loop !52

middle.block704:                                  ; preds = %vector.body711
  br i1 %cmp.n714, label %._crit_edge464, label %.lr.ph463.preheader819

.lr.ph463.preheader819:                           ; preds = %middle.block704, %.lr.ph463.preheader
  %indvars.iv561.ph = phi i64 [ 0, %.lr.ph463.preheader ], [ %n.vec709, %middle.block704 ]
  br label %.lr.ph463

.lr.ph463:                                        ; preds = %.lr.ph463.preheader819, %.lr.ph463
  %indvars.iv561 = phi i64 [ %indvars.iv.next562, %.lr.ph463 ], [ %indvars.iv561.ph, %.lr.ph463.preheader819 ]
  %540 = getelementptr inbounds float, ptr %58, i64 %indvars.iv561
  store float 1.000000e+00, ptr %540, align 4, !tbaa !29
  %indvars.iv.next562 = add nuw nsw i64 %indvars.iv561, 1
  %exitcond566.not = icmp eq i64 %indvars.iv.next562, %363
  br i1 %exitcond566.not, label %._crit_edge464, label %.lr.ph463, !llvm.loop !53

._crit_edge464:                                   ; preds = %.lr.ph463, %middle.block704
  call void (...) @start_time() #10
  %541 = load i32, ptr @n1, align 4, !tbaa !5
  %542 = icmp slt i32 %541, 1
  %brmerge632 = or i1 %542, %77
  br i1 %brmerge632, label %._crit_edge469, label %.preheader412.us

._crit_edge464.thread:                            ; preds = %536
  call void (...) @start_time() #10
  br label %._crit_edge469

.preheader412.us:                                 ; preds = %._crit_edge464, %._crit_edge467.us
  %.5468.us = phi i32 [ %612, %._crit_edge467.us ], [ 0, %._crit_edge464 ]
  br i1 %min.iters.check695, label %scalar.ph694.preheader, label %vector.body700

vector.body700:                                   ; preds = %.preheader412.us, %vector.body700
  %index701 = phi i64 [ %index.next702, %vector.body700 ], [ 0, %.preheader412.us ]
  %offset.idx = shl i64 %index701, 2
  %543 = or disjoint i64 %offset.idx, 4
  %544 = getelementptr inbounds float, ptr %53, i64 %offset.idx
  %545 = getelementptr inbounds float, ptr %53, i64 %543
  %546 = load float, ptr %544, align 4, !tbaa !29
  %547 = load float, ptr %545, align 4, !tbaa !29
  %548 = insertelement <2 x float> poison, float %546, i64 0
  %549 = insertelement <2 x float> %548, float %547, i64 1
  %550 = getelementptr inbounds float, ptr %58, i64 %offset.idx
  %551 = getelementptr inbounds float, ptr %58, i64 %543
  %552 = load float, ptr %550, align 4, !tbaa !29
  %553 = load float, ptr %551, align 4, !tbaa !29
  %554 = insertelement <2 x float> poison, float %552, i64 0
  %555 = insertelement <2 x float> %554, float %553, i64 1
  %556 = fadd <2 x float> %549, %555
  %557 = or disjoint i64 %offset.idx, 1
  %558 = or disjoint i64 %offset.idx, 5
  %559 = getelementptr inbounds float, ptr %53, i64 %557
  %560 = getelementptr inbounds float, ptr %53, i64 %558
  %561 = load float, ptr %559, align 4, !tbaa !29
  %562 = load float, ptr %560, align 4, !tbaa !29
  %563 = insertelement <2 x float> poison, float %561, i64 0
  %564 = insertelement <2 x float> %563, float %562, i64 1
  %565 = getelementptr inbounds float, ptr %58, i64 %557
  %566 = getelementptr inbounds float, ptr %58, i64 %558
  %567 = load float, ptr %565, align 4, !tbaa !29
  %568 = load float, ptr %566, align 4, !tbaa !29
  %569 = insertelement <2 x float> poison, float %567, i64 0
  %570 = insertelement <2 x float> %569, float %568, i64 1
  %571 = fadd <2 x float> %564, %570
  %572 = or disjoint i64 %offset.idx, 2
  %573 = or disjoint i64 %offset.idx, 6
  %574 = getelementptr inbounds float, ptr %53, i64 %572
  %575 = getelementptr inbounds float, ptr %53, i64 %573
  %576 = load float, ptr %574, align 4, !tbaa !29
  %577 = load float, ptr %575, align 4, !tbaa !29
  %578 = insertelement <2 x float> poison, float %576, i64 0
  %579 = insertelement <2 x float> %578, float %577, i64 1
  %580 = getelementptr inbounds float, ptr %58, i64 %572
  %581 = getelementptr inbounds float, ptr %58, i64 %573
  %582 = load float, ptr %580, align 4, !tbaa !29
  %583 = load float, ptr %581, align 4, !tbaa !29
  %584 = insertelement <2 x float> poison, float %582, i64 0
  %585 = insertelement <2 x float> %584, float %583, i64 1
  %586 = fadd <2 x float> %579, %585
  %587 = or disjoint i64 %offset.idx, 3
  %588 = or disjoint i64 %offset.idx, 7
  %589 = getelementptr inbounds float, ptr %53, i64 %587
  %590 = getelementptr inbounds float, ptr %53, i64 %588
  %591 = load float, ptr %589, align 4, !tbaa !29
  %592 = load float, ptr %590, align 4, !tbaa !29
  %593 = insertelement <2 x float> poison, float %591, i64 0
  %594 = insertelement <2 x float> %593, float %592, i64 1
  %595 = getelementptr inbounds float, ptr %58, i64 %587
  %596 = getelementptr inbounds float, ptr %58, i64 %588
  %597 = load float, ptr %595, align 4, !tbaa !29
  %598 = load float, ptr %596, align 4, !tbaa !29
  %599 = insertelement <2 x float> poison, float %597, i64 0
  %600 = insertelement <2 x float> %599, float %598, i64 1
  %601 = fadd <2 x float> %594, %600
  %602 = getelementptr inbounds i8, ptr %589, i64 -12
  %603 = shufflevector <2 x float> %556, <2 x float> %571, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %604 = shufflevector <2 x float> %586, <2 x float> %601, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %interleaved.vec = shufflevector <4 x float> %603, <4 x float> %604, <8 x i32> <i32 0, i32 2, i32 4, i32 6, i32 1, i32 3, i32 5, i32 7>
  store <8 x float> %interleaved.vec, ptr %602, align 4, !tbaa !29
  %index.next702 = add nuw i64 %index701, 2
  %605 = icmp eq i64 %index.next702, %n.vec698
  br i1 %605, label %middle.block693, label %vector.body700, !llvm.loop !54

middle.block693:                                  ; preds = %vector.body700
  br i1 %cmp.n703, label %._crit_edge467.us, label %scalar.ph694.preheader

scalar.ph694.preheader:                           ; preds = %middle.block693, %.preheader412.us
  %indvars.iv567.ph = phi i64 [ 0, %.preheader412.us ], [ %ind.end, %middle.block693 ]
  br label %scalar.ph694

scalar.ph694:                                     ; preds = %scalar.ph694.preheader, %scalar.ph694
  %indvars.iv567 = phi i64 [ %indvars.iv.next568, %scalar.ph694 ], [ %indvars.iv567.ph, %scalar.ph694.preheader ]
  %606 = getelementptr inbounds float, ptr %53, i64 %indvars.iv567
  %607 = getelementptr inbounds float, ptr %58, i64 %indvars.iv567
  %608 = load <4 x float>, ptr %606, align 4, !tbaa !29
  %609 = load <4 x float>, ptr %607, align 4, !tbaa !29
  %610 = fadd <4 x float> %608, %609
  store <4 x float> %610, ptr %606, align 4, !tbaa !29
  %indvars.iv.next568 = add nuw nsw i64 %indvars.iv567, 4
  %611 = icmp slt i64 %indvars.iv.next568, %213
  br i1 %611, label %scalar.ph694, label %._crit_edge467.us, !llvm.loop !55

._crit_edge467.us:                                ; preds = %scalar.ph694, %middle.block693
  %612 = add nuw nsw i32 %.5468.us, 1
  %exitcond570.not = icmp eq i32 %612, %541
  br i1 %exitcond570.not, label %._crit_edge469, label %.preheader412.us, !llvm.loop !56

._crit_edge469:                                   ; preds = %._crit_edge467.us, %._crit_edge464, %._crit_edge464.thread
  call void (...) @end_time() #10
  call void @checkTime()
  %613 = load double, ptr @secs, align 8, !tbaa !11
  %614 = load double, ptr @runSecs, align 8, !tbaa !11
  %615 = fcmp olt double %613, %614
  br i1 %615, label %536, label %616, !llvm.loop !57

616:                                              ; preds = %._crit_edge469
  %617 = load i32, ptr @n1, align 4, !tbaa !5
  %618 = sitofp i32 %617 to double
  %619 = fmul double %205, %618
  %620 = fdiv double %619, %613
  %621 = fptosi double %620 to i32
  %622 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %621)
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %min.iters.check683 = icmp slt i32 %204, 8
  %n.vec686 = and i64 %wide.trip.count536, 2147483640
  %cmp.n691 = icmp eq i64 %n.vec686, %wide.trip.count536
  %xtraiter835 = and i64 %535, 3
  %623 = icmp slt i32 %204, 13
  %unroll_iter837 = and i64 %535, 9223372036854775804
  %lcmp.mod836.not = icmp eq i64 %xtraiter835, 0
  br label %624

624:                                              ; preds = %._crit_edge478, %616
  br i1 %77, label %._crit_edge473.thread, label %.lr.ph472.preheader

.lr.ph472.preheader:                              ; preds = %624
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %53, i8 0, i64 %364, i1 false), !tbaa !5
  br i1 %min.iters.check683, label %.lr.ph472.preheader818, label %vector.body688

vector.body688:                                   ; preds = %.lr.ph472.preheader, %vector.body688
  %index689 = phi i64 [ %index.next690, %vector.body688 ], [ 0, %.lr.ph472.preheader ]
  %625 = getelementptr inbounds i32, ptr %58, i64 %index689
  %626 = getelementptr inbounds i8, ptr %625, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %625, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %626, align 4, !tbaa !5
  %index.next690 = add nuw i64 %index689, 8
  %627 = icmp eq i64 %index.next690, %n.vec686
  br i1 %627, label %middle.block681, label %vector.body688, !llvm.loop !58

middle.block681:                                  ; preds = %vector.body688
  br i1 %cmp.n691, label %._crit_edge473, label %.lr.ph472.preheader818

.lr.ph472.preheader818:                           ; preds = %middle.block681, %.lr.ph472.preheader
  %indvars.iv572.ph = phi i64 [ 0, %.lr.ph472.preheader ], [ %n.vec686, %middle.block681 ]
  br label %.lr.ph472

.lr.ph472:                                        ; preds = %.lr.ph472.preheader818, %.lr.ph472
  %indvars.iv572 = phi i64 [ %indvars.iv.next573, %.lr.ph472 ], [ %indvars.iv572.ph, %.lr.ph472.preheader818 ]
  %628 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv572
  store i32 1, ptr %628, align 4, !tbaa !5
  %indvars.iv.next573 = add nuw nsw i64 %indvars.iv572, 1
  %exitcond577.not = icmp eq i64 %indvars.iv.next573, %363
  br i1 %exitcond577.not, label %._crit_edge473, label %.lr.ph472, !llvm.loop !59

._crit_edge473:                                   ; preds = %.lr.ph472, %middle.block681
  call void (...) @start_time() #10
  %629 = load i32, ptr @n1, align 4, !tbaa !5
  %630 = icmp slt i32 %629, 1
  %brmerge635 = or i1 %630, %77
  br i1 %brmerge635, label %._crit_edge478, label %.preheader411.us

._crit_edge473.thread:                            ; preds = %624
  call void (...) @start_time() #10
  br label %._crit_edge478

.preheader411.us:                                 ; preds = %._crit_edge473, %._crit_edge476.us
  %.6477.us = phi i32 [ %656, %._crit_edge476.us ], [ 0, %._crit_edge473 ]
  br i1 %623, label %._crit_edge476.us.unr-lcssa, label %.preheader411.us.new

.preheader411.us.new:                             ; preds = %.preheader411.us, %.preheader411.us.new
  %indvars.iv578 = phi i64 [ %indvars.iv.next579.3, %.preheader411.us.new ], [ 0, %.preheader411.us ]
  %niter838 = phi i64 [ %niter838.next.3, %.preheader411.us.new ], [ 0, %.preheader411.us ]
  %631 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv578
  %632 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv578
  %633 = load <4 x i32>, ptr %631, align 4, !tbaa !5
  %634 = load <4 x i32>, ptr %632, align 4, !tbaa !5
  %635 = add nsw <4 x i32> %634, %633
  store <4 x i32> %635, ptr %631, align 4, !tbaa !5
  %indvars.iv.next579 = or disjoint i64 %indvars.iv578, 4
  %636 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv.next579
  %637 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next579
  %638 = load <4 x i32>, ptr %636, align 4, !tbaa !5
  %639 = load <4 x i32>, ptr %637, align 4, !tbaa !5
  %640 = add nsw <4 x i32> %639, %638
  store <4 x i32> %640, ptr %636, align 4, !tbaa !5
  %indvars.iv.next579.1 = or disjoint i64 %indvars.iv578, 8
  %641 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv.next579.1
  %642 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next579.1
  %643 = load <4 x i32>, ptr %641, align 4, !tbaa !5
  %644 = load <4 x i32>, ptr %642, align 4, !tbaa !5
  %645 = add nsw <4 x i32> %644, %643
  store <4 x i32> %645, ptr %641, align 4, !tbaa !5
  %indvars.iv.next579.2 = or disjoint i64 %indvars.iv578, 12
  %646 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv.next579.2
  %647 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv.next579.2
  %648 = load <4 x i32>, ptr %646, align 4, !tbaa !5
  %649 = load <4 x i32>, ptr %647, align 4, !tbaa !5
  %650 = add nsw <4 x i32> %649, %648
  store <4 x i32> %650, ptr %646, align 4, !tbaa !5
  %indvars.iv.next579.3 = add nuw nsw i64 %indvars.iv578, 16
  %niter838.next.3 = add nuw nsw i64 %niter838, 4
  %niter838.ncmp.3.not = icmp eq i64 %niter838.next.3, %unroll_iter837
  br i1 %niter838.ncmp.3.not, label %._crit_edge476.us.unr-lcssa, label %.preheader411.us.new, !llvm.loop !60

._crit_edge476.us.unr-lcssa:                      ; preds = %.preheader411.us.new, %.preheader411.us
  %indvars.iv578.unr = phi i64 [ 0, %.preheader411.us ], [ %indvars.iv.next579.3, %.preheader411.us.new ]
  br i1 %lcmp.mod836.not, label %._crit_edge476.us, label %.epil.preheader834

.epil.preheader834:                               ; preds = %._crit_edge476.us.unr-lcssa, %.epil.preheader834
  %indvars.iv578.epil = phi i64 [ %indvars.iv.next579.epil, %.epil.preheader834 ], [ %indvars.iv578.unr, %._crit_edge476.us.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader834 ], [ 0, %._crit_edge476.us.unr-lcssa ]
  %651 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv578.epil
  %652 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv578.epil
  %653 = load <4 x i32>, ptr %651, align 4, !tbaa !5
  %654 = load <4 x i32>, ptr %652, align 4, !tbaa !5
  %655 = add nsw <4 x i32> %654, %653
  store <4 x i32> %655, ptr %651, align 4, !tbaa !5
  %indvars.iv.next579.epil = add nuw nsw i64 %indvars.iv578.epil, 4
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter835
  br i1 %epil.iter.cmp.not, label %._crit_edge476.us, label %.epil.preheader834, !llvm.loop !61

._crit_edge476.us:                                ; preds = %.epil.preheader834, %._crit_edge476.us.unr-lcssa
  %656 = add nuw nsw i32 %.6477.us, 1
  %exitcond581.not = icmp eq i32 %656, %629
  br i1 %exitcond581.not, label %._crit_edge478, label %.preheader411.us, !llvm.loop !62

._crit_edge478:                                   ; preds = %._crit_edge476.us, %._crit_edge473, %._crit_edge473.thread
  call void (...) @end_time() #10
  call void @checkTime()
  %657 = load double, ptr @secs, align 8, !tbaa !11
  %658 = load double, ptr @runSecs, align 8, !tbaa !11
  %659 = fcmp olt double %657, %658
  br i1 %659, label %624, label %660, !llvm.loop !63

660:                                              ; preds = %._crit_edge478
  %661 = load i32, ptr @n1, align 4, !tbaa !5
  %662 = sitofp i32 %661 to double
  %663 = fmul double %205, %662
  %664 = fdiv double %663, %657
  %665 = fptosi double %664 to i32
  %666 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %665)
  %667 = fmul double %74, 8.000000e+00
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %668 = icmp sgt i32 %72, -4
  %669 = add i32 %72, 3
  %smax585 = call i32 @llvm.smax.i32(i32 %669, i32 0)
  %670 = add nuw i32 %smax585, 1
  %wide.trip.count586 = zext i32 %670 to i64
  %671 = zext nneg i32 %smax585 to i64
  %672 = add nuw nsw i64 %671, 1
  %min.iters.check668 = icmp ugt i32 %72, 2147483644
  %n.vec671 = and i64 %wide.trip.count586, 4294967292
  %cmp.n680 = icmp eq i64 %n.vec671, %wide.trip.count586
  %xtraiter839 = and i64 %672, 3
  %lcmp.mod840.not = icmp eq i64 %xtraiter839, 0
  br label %673

673:                                              ; preds = %._crit_edge487, %660
  br i1 %668, label %.lr.ph481, label %._crit_edge482

.lr.ph481:                                        ; preds = %673
  %674 = load ptr, ptr @xd, align 8, !tbaa !9
  %675 = load ptr, ptr @yd, align 8, !tbaa !9
  %676 = ptrtoint ptr %675 to i64
  %677 = ptrtoint ptr %674 to i64
  %678 = sub i64 %676, %677
  %diff.check = icmp ult i64 %678, 32
  %or.cond815 = select i1 %min.iters.check668, i1 true, i1 %diff.check
  br i1 %or.cond815, label %scalar.ph667.preheader, label %vector.body673

vector.body673:                                   ; preds = %.lr.ph481, %vector.body673
  %index674 = phi i64 [ %index.next679, %vector.body673 ], [ 0, %.lr.ph481 ]
  %vec.ind675 = phi <2 x i32> [ %vec.ind.next678, %vector.body673 ], [ <i32 0, i32 1>, %.lr.ph481 ]
  %step.add676 = add <2 x i32> %vec.ind675, <i32 2, i32 2>
  %679 = getelementptr inbounds double, ptr %674, i64 %index674
  %680 = getelementptr inbounds i8, ptr %679, i64 16
  store <2 x double> zeroinitializer, ptr %679, align 8, !tbaa !11
  store <2 x double> zeroinitializer, ptr %680, align 8, !tbaa !11
  %681 = uitofp <2 x i32> %vec.ind675 to <2 x double>
  %682 = uitofp <2 x i32> %step.add676 to <2 x double>
  %683 = getelementptr inbounds double, ptr %675, i64 %index674
  %684 = getelementptr inbounds i8, ptr %683, i64 16
  store <2 x double> %681, ptr %683, align 8, !tbaa !11
  store <2 x double> %682, ptr %684, align 8, !tbaa !11
  %index.next679 = add nuw i64 %index674, 4
  %vec.ind.next678 = add <2 x i32> %vec.ind675, <i32 4, i32 4>
  %685 = icmp eq i64 %index.next679, %n.vec671
  br i1 %685, label %middle.block666, label %vector.body673, !llvm.loop !64

middle.block666:                                  ; preds = %vector.body673
  br i1 %cmp.n680, label %._crit_edge482, label %scalar.ph667.preheader

scalar.ph667.preheader:                           ; preds = %middle.block666, %.lr.ph481
  %indvars.iv582.ph = phi i64 [ 0, %.lr.ph481 ], [ %n.vec671, %middle.block666 ]
  %686 = sub nsw i64 %671, %indvars.iv582.ph
  br i1 %lcmp.mod840.not, label %scalar.ph667.prol.loopexit, label %scalar.ph667.prol

scalar.ph667.prol:                                ; preds = %scalar.ph667.preheader, %scalar.ph667.prol
  %indvars.iv582.prol = phi i64 [ %indvars.iv.next583.prol, %scalar.ph667.prol ], [ %indvars.iv582.ph, %scalar.ph667.preheader ]
  %prol.iter841 = phi i64 [ %prol.iter841.next, %scalar.ph667.prol ], [ 0, %scalar.ph667.preheader ]
  %687 = getelementptr inbounds double, ptr %674, i64 %indvars.iv582.prol
  store double 0.000000e+00, ptr %687, align 8, !tbaa !11
  %688 = trunc nuw nsw i64 %indvars.iv582.prol to i32
  %689 = uitofp nneg i32 %688 to double
  %690 = getelementptr inbounds double, ptr %675, i64 %indvars.iv582.prol
  store double %689, ptr %690, align 8, !tbaa !11
  %indvars.iv.next583.prol = add nuw nsw i64 %indvars.iv582.prol, 1
  %prol.iter841.next = add i64 %prol.iter841, 1
  %prol.iter841.cmp.not = icmp eq i64 %prol.iter841.next, %xtraiter839
  br i1 %prol.iter841.cmp.not, label %scalar.ph667.prol.loopexit, label %scalar.ph667.prol, !llvm.loop !65

scalar.ph667.prol.loopexit:                       ; preds = %scalar.ph667.prol, %scalar.ph667.preheader
  %indvars.iv582.unr = phi i64 [ %indvars.iv582.ph, %scalar.ph667.preheader ], [ %indvars.iv.next583.prol, %scalar.ph667.prol ]
  %691 = icmp ult i64 %686, 3
  br i1 %691, label %._crit_edge482, label %scalar.ph667

scalar.ph667:                                     ; preds = %scalar.ph667.prol.loopexit, %scalar.ph667
  %indvars.iv582 = phi i64 [ %indvars.iv.next583.3, %scalar.ph667 ], [ %indvars.iv582.unr, %scalar.ph667.prol.loopexit ]
  %692 = getelementptr inbounds double, ptr %674, i64 %indvars.iv582
  store double 0.000000e+00, ptr %692, align 8, !tbaa !11
  %693 = trunc nuw nsw i64 %indvars.iv582 to i32
  %694 = uitofp nneg i32 %693 to double
  %695 = getelementptr inbounds double, ptr %675, i64 %indvars.iv582
  store double %694, ptr %695, align 8, !tbaa !11
  %indvars.iv.next583 = add nuw nsw i64 %indvars.iv582, 1
  %696 = getelementptr inbounds double, ptr %674, i64 %indvars.iv.next583
  store double 0.000000e+00, ptr %696, align 8, !tbaa !11
  %697 = trunc nuw nsw i64 %indvars.iv.next583 to i32
  %698 = uitofp nneg i32 %697 to double
  %699 = getelementptr inbounds double, ptr %675, i64 %indvars.iv.next583
  store double %698, ptr %699, align 8, !tbaa !11
  %indvars.iv.next583.1 = add nuw nsw i64 %indvars.iv582, 2
  %700 = getelementptr inbounds double, ptr %674, i64 %indvars.iv.next583.1
  store double 0.000000e+00, ptr %700, align 8, !tbaa !11
  %701 = trunc nuw nsw i64 %indvars.iv.next583.1 to i32
  %702 = uitofp nneg i32 %701 to double
  %703 = getelementptr inbounds double, ptr %675, i64 %indvars.iv.next583.1
  store double %702, ptr %703, align 8, !tbaa !11
  %indvars.iv.next583.2 = add nuw nsw i64 %indvars.iv582, 3
  %704 = getelementptr inbounds double, ptr %674, i64 %indvars.iv.next583.2
  store double 0.000000e+00, ptr %704, align 8, !tbaa !11
  %705 = trunc nuw nsw i64 %indvars.iv.next583.2 to i32
  %706 = uitofp nneg i32 %705 to double
  %707 = getelementptr inbounds double, ptr %675, i64 %indvars.iv.next583.2
  store double %706, ptr %707, align 8, !tbaa !11
  %indvars.iv.next583.3 = add nuw nsw i64 %indvars.iv582, 4
  %exitcond587.not.3 = icmp eq i64 %indvars.iv.next583.3, %wide.trip.count586
  br i1 %exitcond587.not.3, label %._crit_edge482, label %scalar.ph667, !llvm.loop !66

._crit_edge482:                                   ; preds = %scalar.ph667.prol.loopexit, %scalar.ph667, %middle.block666, %673
  call void (...) @start_time() #10
  %708 = load i32, ptr @n1, align 4, !tbaa !5
  %709 = icmp sgt i32 %708, 0
  br i1 %709, label %.preheader410.lr.ph, label %._crit_edge487

.preheader410.lr.ph:                              ; preds = %._crit_edge482
  %710 = load ptr, ptr @yd, align 8
  %711 = load ptr, ptr @xd, align 8
  br i1 %77, label %._crit_edge487, label %.preheader410.us

.preheader410.us:                                 ; preds = %.preheader410.lr.ph, %._crit_edge485.us
  %.7486.us = phi i32 [ %729, %._crit_edge485.us ], [ 0, %.preheader410.lr.ph ]
  br label %712

712:                                              ; preds = %.preheader410.us, %712
  %indvars.iv588 = phi i64 [ 0, %.preheader410.us ], [ %indvars.iv.next589, %712 ]
  %713 = getelementptr inbounds double, ptr %710, i64 %indvars.iv588
  %714 = load double, ptr %713, align 8, !tbaa !11
  %715 = getelementptr inbounds double, ptr %711, i64 %indvars.iv588
  store double %714, ptr %715, align 8, !tbaa !11
  %716 = or disjoint i64 %indvars.iv588, 1
  %717 = getelementptr inbounds double, ptr %710, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !11
  %719 = getelementptr inbounds double, ptr %711, i64 %716
  store double %718, ptr %719, align 8, !tbaa !11
  %720 = or disjoint i64 %indvars.iv588, 2
  %721 = getelementptr inbounds double, ptr %710, i64 %720
  %722 = load double, ptr %721, align 8, !tbaa !11
  %723 = getelementptr inbounds double, ptr %711, i64 %720
  store double %722, ptr %723, align 8, !tbaa !11
  %724 = or disjoint i64 %indvars.iv588, 3
  %725 = getelementptr inbounds double, ptr %710, i64 %724
  %726 = load double, ptr %725, align 8, !tbaa !11
  %727 = getelementptr inbounds double, ptr %711, i64 %724
  store double %726, ptr %727, align 8, !tbaa !11
  %indvars.iv.next589 = add nuw nsw i64 %indvars.iv588, 4
  %728 = icmp slt i64 %indvars.iv.next589, %78
  br i1 %728, label %712, label %._crit_edge485.us, !llvm.loop !67

._crit_edge485.us:                                ; preds = %712
  %729 = add nuw nsw i32 %.7486.us, 1
  %exitcond591.not = icmp eq i32 %729, %708
  br i1 %exitcond591.not, label %._crit_edge487, label %.preheader410.us, !llvm.loop !68

._crit_edge487:                                   ; preds = %._crit_edge485.us, %.preheader410.lr.ph, %._crit_edge482
  call void (...) @end_time() #10
  call void @checkTime()
  %730 = load double, ptr @secs, align 8, !tbaa !11
  %731 = load double, ptr @runSecs, align 8, !tbaa !11
  %732 = fcmp olt double %730, %731
  br i1 %732, label %673, label %733, !llvm.loop !69

733:                                              ; preds = %._crit_edge487
  %734 = fdiv double %667, 1.000000e+06
  %735 = load i32, ptr @n1, align 4, !tbaa !5
  %736 = sitofp i32 %735 to double
  %737 = fmul double %734, %736
  %738 = fdiv double %737, %730
  %739 = fptosi double %738 to i32
  %740 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %739)
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %741 = add i32 %204, 4
  %742 = icmp sgt i32 %72, -2
  %smax592 = call i32 @llvm.smax.i32(i32 %741, i32 1)
  %743 = zext nneg i32 %smax592 to i64
  %744 = shl nuw nsw i64 %743, 2
  %min.iters.check653 = icmp slt i32 %741, 8
  %n.vec656 = and i64 %743, 2147483640
  %cmp.n665 = icmp eq i64 %n.vec656, %743
  br label %745

745:                                              ; preds = %._crit_edge496, %733
  br i1 %742, label %.lr.ph490.preheader, label %._crit_edge491

.lr.ph490.preheader:                              ; preds = %745
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %53, i8 0, i64 %744, i1 false), !tbaa !29
  br i1 %min.iters.check653, label %.lr.ph490.preheader817, label %vector.body658

vector.body658:                                   ; preds = %.lr.ph490.preheader, %vector.body658
  %index659 = phi i64 [ %index.next664, %vector.body658 ], [ 0, %.lr.ph490.preheader ]
  %vec.ind660 = phi <4 x i32> [ %vec.ind.next663, %vector.body658 ], [ <i32 0, i32 1, i32 2, i32 3>, %.lr.ph490.preheader ]
  %step.add661 = add <4 x i32> %vec.ind660, <i32 4, i32 4, i32 4, i32 4>
  %746 = uitofp <4 x i32> %vec.ind660 to <4 x float>
  %747 = uitofp <4 x i32> %step.add661 to <4 x float>
  %748 = getelementptr inbounds float, ptr %58, i64 %index659
  %749 = getelementptr inbounds i8, ptr %748, i64 16
  store <4 x float> %746, ptr %748, align 4, !tbaa !29
  store <4 x float> %747, ptr %749, align 4, !tbaa !29
  %index.next664 = add nuw i64 %index659, 8
  %vec.ind.next663 = add <4 x i32> %vec.ind660, <i32 8, i32 8, i32 8, i32 8>
  %750 = icmp eq i64 %index.next664, %n.vec656
  br i1 %750, label %middle.block651, label %vector.body658, !llvm.loop !70

middle.block651:                                  ; preds = %vector.body658
  br i1 %cmp.n665, label %._crit_edge491, label %.lr.ph490.preheader817

.lr.ph490.preheader817:                           ; preds = %middle.block651, %.lr.ph490.preheader
  %indvars.iv593.ph = phi i64 [ 0, %.lr.ph490.preheader ], [ %n.vec656, %middle.block651 ]
  br label %.lr.ph490

.lr.ph490:                                        ; preds = %.lr.ph490.preheader817, %.lr.ph490
  %indvars.iv593 = phi i64 [ %indvars.iv.next594, %.lr.ph490 ], [ %indvars.iv593.ph, %.lr.ph490.preheader817 ]
  %751 = trunc nuw nsw i64 %indvars.iv593 to i32
  %752 = uitofp nneg i32 %751 to float
  %753 = getelementptr inbounds float, ptr %58, i64 %indvars.iv593
  store float %752, ptr %753, align 4, !tbaa !29
  %indvars.iv.next594 = add nuw nsw i64 %indvars.iv593, 1
  %exitcond598.not = icmp eq i64 %indvars.iv.next594, %743
  br i1 %exitcond598.not, label %._crit_edge491, label %.lr.ph490, !llvm.loop !71

._crit_edge491:                                   ; preds = %.lr.ph490, %middle.block651, %745
  call void (...) @start_time() #10
  %754 = load i32, ptr @n1, align 4, !tbaa !5
  %755 = icmp slt i32 %754, 1
  %brmerge638 = or i1 %755, %77
  br i1 %brmerge638, label %._crit_edge496, label %.preheader409.us.preheader

.preheader409.us.preheader:                       ; preds = %._crit_edge491
  %xtraiter842 = and i32 %754, 1
  %756 = icmp eq i32 %754, 1
  br i1 %756, label %._crit_edge496.loopexit.unr-lcssa, label %.preheader409.us.preheader.new

.preheader409.us.preheader.new:                   ; preds = %.preheader409.us.preheader
  %unroll_iter845 = and i32 %754, 2147483646
  br label %.preheader409.us

.preheader409.us:                                 ; preds = %._crit_edge494.us.1, %.preheader409.us.preheader.new
  %niter846 = phi i32 [ 0, %.preheader409.us.preheader.new ], [ %niter846.next.1, %._crit_edge494.us.1 ]
  br label %757

757:                                              ; preds = %.preheader409.us, %757
  %indvars.iv599 = phi i64 [ 0, %.preheader409.us ], [ %indvars.iv.next600, %757 ]
  %758 = getelementptr inbounds float, ptr %58, i64 %indvars.iv599
  %759 = getelementptr inbounds float, ptr %53, i64 %indvars.iv599
  %760 = load <4 x float>, ptr %758, align 4, !tbaa !29
  store <4 x float> %760, ptr %759, align 4, !tbaa !29
  %indvars.iv.next600 = add nuw nsw i64 %indvars.iv599, 4
  %761 = icmp slt i64 %indvars.iv.next600, %213
  br i1 %761, label %757, label %._crit_edge494.us, !llvm.loop !72

._crit_edge494.us:                                ; preds = %757, %._crit_edge494.us
  %indvars.iv599.1 = phi i64 [ %indvars.iv.next600.1, %._crit_edge494.us ], [ 0, %757 ]
  %762 = getelementptr inbounds float, ptr %58, i64 %indvars.iv599.1
  %763 = getelementptr inbounds float, ptr %53, i64 %indvars.iv599.1
  %764 = load <4 x float>, ptr %762, align 4, !tbaa !29
  store <4 x float> %764, ptr %763, align 4, !tbaa !29
  %indvars.iv.next600.1 = add nuw nsw i64 %indvars.iv599.1, 4
  %765 = icmp slt i64 %indvars.iv.next600.1, %213
  br i1 %765, label %._crit_edge494.us, label %._crit_edge494.us.1, !llvm.loop !72

._crit_edge494.us.1:                              ; preds = %._crit_edge494.us
  %niter846.next.1 = add i32 %niter846, 2
  %niter846.ncmp.1 = icmp eq i32 %niter846.next.1, %unroll_iter845
  br i1 %niter846.ncmp.1, label %._crit_edge496.loopexit.unr-lcssa, label %.preheader409.us, !llvm.loop !73

._crit_edge496.loopexit.unr-lcssa:                ; preds = %._crit_edge494.us.1, %.preheader409.us.preheader
  %lcmp.mod844.not = icmp eq i32 %xtraiter842, 0
  br i1 %lcmp.mod844.not, label %._crit_edge496, label %.preheader409.us.epil

.preheader409.us.epil:                            ; preds = %._crit_edge496.loopexit.unr-lcssa, %.preheader409.us.epil
  %indvars.iv599.epil = phi i64 [ %indvars.iv.next600.epil, %.preheader409.us.epil ], [ 0, %._crit_edge496.loopexit.unr-lcssa ]
  %766 = getelementptr inbounds float, ptr %58, i64 %indvars.iv599.epil
  %767 = getelementptr inbounds float, ptr %53, i64 %indvars.iv599.epil
  %768 = load <4 x float>, ptr %766, align 4, !tbaa !29
  store <4 x float> %768, ptr %767, align 4, !tbaa !29
  %indvars.iv.next600.epil = add nuw nsw i64 %indvars.iv599.epil, 4
  %769 = icmp slt i64 %indvars.iv.next600.epil, %213
  br i1 %769, label %.preheader409.us.epil, label %._crit_edge496, !llvm.loop !72

._crit_edge496:                                   ; preds = %._crit_edge496.loopexit.unr-lcssa, %.preheader409.us.epil, %._crit_edge491
  call void (...) @end_time() #10
  call void @checkTime()
  %770 = load double, ptr @secs, align 8, !tbaa !11
  %771 = load double, ptr @runSecs, align 8, !tbaa !11
  %772 = fcmp olt double %770, %771
  br i1 %772, label %745, label %773, !llvm.loop !74

773:                                              ; preds = %._crit_edge496
  %774 = load i32, ptr @n1, align 4, !tbaa !5
  %775 = sitofp i32 %774 to double
  %776 = fmul double %734, %775
  %777 = fdiv double %776, %770
  %778 = fptosi double %777 to i32
  %779 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.13, i32 noundef %778)
  store i32 %spec.store.select, ptr @n1, align 4, !tbaa !5
  %min.iters.check = icmp slt i32 %741, 8
  %n.vec = and i64 %743, 2147483640
  %cmp.n = icmp eq i64 %n.vec, %743
  br label %780

780:                                              ; preds = %._crit_edge505, %773
  br i1 %742, label %.lr.ph499.preheader, label %._crit_edge500

.lr.ph499.preheader:                              ; preds = %780
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %53, i8 0, i64 %744, i1 false), !tbaa !5
  br i1 %min.iters.check, label %.lr.ph499.preheader816, label %vector.body

vector.body:                                      ; preds = %.lr.ph499.preheader, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph499.preheader ]
  %vec.ind = phi <4 x i32> [ %vec.ind.next, %vector.body ], [ <i32 0, i32 1, i32 2, i32 3>, %.lr.ph499.preheader ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %781 = getelementptr inbounds i32, ptr %58, i64 %index
  %782 = getelementptr inbounds i8, ptr %781, i64 16
  store <4 x i32> %vec.ind, ptr %781, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %782, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %783 = icmp eq i64 %index.next, %n.vec
  br i1 %783, label %middle.block, label %vector.body, !llvm.loop !75

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge500, label %.lr.ph499.preheader816

.lr.ph499.preheader816:                           ; preds = %middle.block, %.lr.ph499.preheader
  %indvars.iv604.ph = phi i64 [ 0, %.lr.ph499.preheader ], [ %n.vec, %middle.block ]
  br label %.lr.ph499

.lr.ph499:                                        ; preds = %.lr.ph499.preheader816, %.lr.ph499
  %indvars.iv604 = phi i64 [ %indvars.iv.next605, %.lr.ph499 ], [ %indvars.iv604.ph, %.lr.ph499.preheader816 ]
  %784 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv604
  %785 = trunc nuw nsw i64 %indvars.iv604 to i32
  store i32 %785, ptr %784, align 4, !tbaa !5
  %indvars.iv.next605 = add nuw nsw i64 %indvars.iv604, 1
  %exitcond609.not = icmp eq i64 %indvars.iv.next605, %743
  br i1 %exitcond609.not, label %._crit_edge500, label %.lr.ph499, !llvm.loop !76

._crit_edge500:                                   ; preds = %.lr.ph499, %middle.block, %780
  call void (...) @start_time() #10
  %786 = load i32, ptr @n1, align 4, !tbaa !5
  %787 = icmp slt i32 %786, 1
  %brmerge641 = or i1 %787, %77
  br i1 %brmerge641, label %._crit_edge505, label %.preheader.us.preheader

.preheader.us.preheader:                          ; preds = %._crit_edge500
  %xtraiter847 = and i32 %786, 1
  %788 = icmp eq i32 %786, 1
  br i1 %788, label %._crit_edge505.loopexit.unr-lcssa, label %.preheader.us.preheader.new

.preheader.us.preheader.new:                      ; preds = %.preheader.us.preheader
  %unroll_iter850 = and i32 %786, 2147483646
  br label %.preheader.us

.preheader.us:                                    ; preds = %._crit_edge503.us.1, %.preheader.us.preheader.new
  %niter851 = phi i32 [ 0, %.preheader.us.preheader.new ], [ %niter851.next.1, %._crit_edge503.us.1 ]
  br label %789

789:                                              ; preds = %.preheader.us, %789
  %indvars.iv610 = phi i64 [ 0, %.preheader.us ], [ %indvars.iv.next611, %789 ]
  %790 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv610
  %791 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv610
  %792 = load <4 x i32>, ptr %790, align 4, !tbaa !5
  store <4 x i32> %792, ptr %791, align 4, !tbaa !5
  %indvars.iv.next611 = add nuw nsw i64 %indvars.iv610, 4
  %793 = icmp slt i64 %indvars.iv.next611, %213
  br i1 %793, label %789, label %._crit_edge503.us, !llvm.loop !77

._crit_edge503.us:                                ; preds = %789, %._crit_edge503.us
  %indvars.iv610.1 = phi i64 [ %indvars.iv.next611.1, %._crit_edge503.us ], [ 0, %789 ]
  %794 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv610.1
  %795 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv610.1
  %796 = load <4 x i32>, ptr %794, align 4, !tbaa !5
  store <4 x i32> %796, ptr %795, align 4, !tbaa !5
  %indvars.iv.next611.1 = add nuw nsw i64 %indvars.iv610.1, 4
  %797 = icmp slt i64 %indvars.iv.next611.1, %213
  br i1 %797, label %._crit_edge503.us, label %._crit_edge503.us.1, !llvm.loop !77

._crit_edge503.us.1:                              ; preds = %._crit_edge503.us
  %niter851.next.1 = add i32 %niter851, 2
  %niter851.ncmp.1 = icmp eq i32 %niter851.next.1, %unroll_iter850
  br i1 %niter851.ncmp.1, label %._crit_edge505.loopexit.unr-lcssa, label %.preheader.us, !llvm.loop !78

._crit_edge505.loopexit.unr-lcssa:                ; preds = %._crit_edge503.us.1, %.preheader.us.preheader
  %lcmp.mod849.not = icmp eq i32 %xtraiter847, 0
  br i1 %lcmp.mod849.not, label %._crit_edge505, label %.preheader.us.epil

.preheader.us.epil:                               ; preds = %._crit_edge505.loopexit.unr-lcssa, %.preheader.us.epil
  %indvars.iv610.epil = phi i64 [ %indvars.iv.next611.epil, %.preheader.us.epil ], [ 0, %._crit_edge505.loopexit.unr-lcssa ]
  %798 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv610.epil
  %799 = getelementptr inbounds i32, ptr %53, i64 %indvars.iv610.epil
  %800 = load <4 x i32>, ptr %798, align 4, !tbaa !5
  store <4 x i32> %800, ptr %799, align 4, !tbaa !5
  %indvars.iv.next611.epil = add nuw nsw i64 %indvars.iv610.epil, 4
  %801 = icmp slt i64 %indvars.iv.next611.epil, %213
  br i1 %801, label %.preheader.us.epil, label %._crit_edge505, !llvm.loop !77

._crit_edge505:                                   ; preds = %._crit_edge505.loopexit.unr-lcssa, %.preheader.us.epil, %._crit_edge500
  call void (...) @end_time() #10
  call void @checkTime()
  %802 = load double, ptr @secs, align 8, !tbaa !11
  %803 = load double, ptr @runSecs, align 8, !tbaa !11
  %804 = fcmp olt double %802, %803
  br i1 %804, label %780, label %805, !llvm.loop !79

805:                                              ; preds = %._crit_edge505
  %806 = load i32, ptr @n1, align 4, !tbaa !5
  %807 = sitofp i32 %806 to double
  %808 = fmul double %734, %807
  %809 = fdiv double %808, %802
  %810 = fptosi double %809 to i32
  %811 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.14, i32 noundef %810)
  %indvars.iv.next615 = add nuw nsw i64 %indvars.iv614, 1
  %812 = load i32, ptr %5, align 4, !tbaa !5
  %813 = sext i32 %812 to i64
  %814 = icmp slt i64 %indvars.iv.next615, %813
  br i1 %814, label %.lr.ph508, label %._crit_edge509, !llvm.loop !80

._crit_edge509:                                   ; preds = %805, %63
  call void (...) @local_time() #10
  %815 = call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.15, ptr noundef nonnull @timeday)
  %816 = load ptr, ptr @yd, align 8, !tbaa !9
  call void @free(ptr noundef %816) #10
  %817 = load ptr, ptr @xd, align 8, !tbaa !9
  call void @free(ptr noundef %817) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #10
  call void @llvm.lifetime.end.p0(i64 100, ptr nonnull %4) #10
  call void @llvm.lifetime.end.p0(i64 100, ptr nonnull %3) #10
  ret i32 0
}

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn allockind("alloc,uninitialized") allocsize(0) memory(inaccessiblemem: readwrite)
declare noalias noundef ptr @malloc(i64 noundef) local_unnamed_addr #5

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

declare void @local_time(...) local_unnamed_addr #7

declare void @start_time(...) local_unnamed_addr #7

declare void @end_time(...) local_unnamed_addr #7

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #8

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #8

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #8

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #8

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

!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, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14, !15, !16}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!"llvm.loop.isvectorized", i32 1}
!16 = !{!"llvm.loop.unroll.runtime.disable"}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.unroll.disable"}
!19 = distinct !{!19, !14, !15}
!20 = !{!21}
!21 = distinct !{!21, !22}
!22 = distinct !{!22, !"LVerDomain"}
!23 = !{!24}
!24 = distinct !{!24, !22}
!25 = distinct !{!25, !14, !15, !16}
!26 = distinct !{!26, !14, !15}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = !{!30, !30, i64 0}
!30 = !{!"float", !7, i64 0}
!31 = distinct !{!31, !14, !15, !16}
!32 = distinct !{!32, !14, !16, !15}
!33 = distinct !{!33, !14, !15, !16}
!34 = distinct !{!34, !14, !16, !15}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14, !15, !16}
!41 = distinct !{!41, !18}
!42 = distinct !{!42, !14, !15}
!43 = !{!44}
!44 = distinct !{!44, !45}
!45 = distinct !{!45, !"LVerDomain"}
!46 = !{!47}
!47 = distinct !{!47, !45}
!48 = distinct !{!48, !14, !15, !16}
!49 = distinct !{!49, !14, !15}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14, !15, !16}
!53 = distinct !{!53, !14, !16, !15}
!54 = distinct !{!54, !14, !15, !16}
!55 = distinct !{!55, !14, !16, !15}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14, !15, !16}
!59 = distinct !{!59, !14, !16, !15}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !18}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !14}
!64 = distinct !{!64, !14, !15, !16}
!65 = distinct !{!65, !18}
!66 = distinct !{!66, !14, !15}
!67 = distinct !{!67, !14}
!68 = distinct !{!68, !14}
!69 = distinct !{!69, !14}
!70 = distinct !{!70, !14, !15, !16}
!71 = distinct !{!71, !14, !16, !15}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14, !15, !16}
!76 = distinct !{!76, !14, !16, !15}
!77 = distinct !{!77, !14}
!78 = distinct !{!78, !14}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}


; Effective O3 passes: ADCEPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalDCEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass